전체 글

웹 프론트엔드 개발자를 꿈꾸고 있습니다 :)
Frontend/Typescript

[Typescript] 강의 듣고 Typescript 개념 간단하게 정리

이제 곧 프로젝트를 시작하는데 Typescript를 활용한다고 한다. 그래서 노마드코더님의 타입스크립트 무료 강의를 듣고 개념을 정리해보았다. 강의 링크 https://nomadcoders.co/typescript-for-beginners 타입스크립트로 블록체인 만들기 – 노마드 코더 Nomad Coders Typescript for Beginners nomadcoders.co (타입스크립트를 입문하는 분들에게 추천한다!) Typescript 특징 TypeScript는 JavaScript에 추가적인 구문을 통해 단단한 통합을 제공하며 초기 오류를 감지할 수 있다. TypeScript 코드는 JavaScript로 변환되어 브라우저, Node.js, 앱 등에서 실행될 수 있다. JavaScript를 이해하며..

Event

동아리에서 주최한 해커톤 참여 후기

12월 19일 오전 10시부터 다음날 오전 10시까지 동아리에서 주최한 해커톤에 참여했다. 1. 해커톤이 뭐야? 사실 해커톤에 참여하기 전까지 ‘해커톤’이 무슨 뜻인지 잘 몰랐다. 친한 친구가 해커톤을 하고 와서 피곤하다는 말을 들었을 때도 ‘엥 그게 뭐지’하고 넘겼었던 기억이 있다. 해커톤(hackathon)이란 해킹(hacking)과 마라톤(marathon)의 합성어로 기획자, 개발자, 디자이너 등의 직군이 팀을 이루어 제한 시간 내 주제에 맞는 서비스를 개발하는 공모전이다.(출처: 나무위키) 이번에 열린 해커톤은 24시간 동안 웹, 안드로이드, 서버 부원들이 한 팀이 되어 앱을 구현하는 방식이었다. 24시간 동안 진행된다는 사실은 알고 있었지만, '진짜 24시간 동안 잠도 안자고 코딩만 한다고?'라..

Frontend

[프론트엔드] 내가 보려고 쓰는 ESlint, Prettier 세팅

ESLint와 같은 Linter 는 소스 코드에 문제가 있는지 검사하여 문제가 있는 부분에 flag를 달아주는 소프트웨어 도구 Prettier와 같은 Formatter는 소스 코드를 일관된 스타일로 작성할 수 있게 코드를 변환해주는 소프트웨어 도구 ESLint 설치 ‘npm install -D eslint 명령어 입력 -D를 입력하는 이유는 devDependencies에 설치하기 위함 → 실제 프로덕션에는 필요없기 때문 ‘npx eslint —init’ 명령어 입력 각 프로젝트마다 eslint 설정 ctrl+shift+p 입력해서 settings.json(User settings)에 들어가서 밑의 코드 입력 "editor.fontFamily": "D2Coding ligature", "editor.line..

Study/시스템프로그래밍

[시스템프로그래밍] 임계구역과 세마포어에 관하여

Critical Sections(임계 구역) 상호 배타적으로 실행되어야 하는 코드 세그먼트 공유 장치(Shared devices)는 한 번에 한 프로세스에서 액세스해야 하므로 배타적 자원(exclusive resources)이라고 불림. 코드의 중요한 부분들 Entry Section(진입 구역) 공유 변수 또는 다른 자원을 수정할 권한을 요청하는 코드를 포함한다. Critical Section(임계 구역) 공유 자원에 액세스하거나 재진입할 수 없는 코드를 실행하는 코드를 포함한다. Exit Section(나가는 구역) Entry Section이 다음 실행 쓰레드가 임계 구역에 들어갈 수 있음을 알 수 있어야 해서 필요 Remainder Section(나머지 구역) 액세스를 해제한 후, 스레드는 실행할 다..

Study/시스템프로그래밍

[시스템프로그래밍] 조건 변수와 시그널, Reader-Writer problem에 관하여

Busy waiting while( x != y ); Non-busy waiting 해결책 Mutex를 잠그기 조건 x == y를 테스트 참이면 mutex를 잠금 해제하고 루프를 종료 거짓이면 스레드를 일시 중단하고 mutex를 잠금 해제 Mutex는 데이터에 대한 스레드 액세스를 제어하여 동기화를 구현하지만 조건 변수는 실제 데이터 값에 기반하여 스레드를 동기화할 수 있게 함. 만약 조건 변수가 없다면, 프로그래머는 계속해서 조건이 충족되었는지 확인하기 위해 스레드를 폴링(가능하면 임계 구역에서) 이는 스레드가 이 활동에 계속해서 바쁘게 차지되어 매우 자원 소모적일 수 있음. 조건 변수는 폴링 없이 동일한 목표를 달성하기 위한 방법 조건 변수는 항상 Mutex 락과 함께 사용 조건 변수 : 임의의 조건..

Study/시스템프로그래밍

[시스템프로그래밍] Mutex에 관하여

Mutex는 스레드 동기화를 구현하고 여러 쓰기가 발생할 때 공유 데이터를 보호하는 주요 수단 공유 데이터 리소스에 대한 액세스를 보호하는 잠금 역할 한 번에 하나의 스레드만 mutex 변수를 잠그거나 소유할 수 있다. 따라서 여러 스레드가 mutex를 잠그려고 해도 하나의 스레드만 성공 소유한 스레드가 해당 mutex를 잠금 해제할 때까지 다른 스레드는 해당 mutex 소유 불가능 스레드는 보호된 데이터에 번갈아가며 액세스해야 Mutex는 race condition을 방지하는 데 사용 Mutex 소유 → 전역 변수 업데이트 업데이트되는 변수 → critical section에 속함 Mutex를 사용하는 것은 프로그래머의 책임! Mutex 실행 순서 Mutex 변수 생성 후 초기화 여러 스레드가 mute..

Study/시스템프로그래밍

[시스템프로그래밍] 스레드

스레드의 장점 비동기 이벤트를 효율적으로 처리할 수 있다. 공유 메모리 다중프로세서에서 병렬 성능을 얻을 수 있다. 각 스레드는 스택과 CPU 상태(즉, 레지스터)로 구성된 실행 단위 Multiple 스레드는 Multiple 프로세스와 유사하지만, 작업 내의 여러 스레드는 동일한 코드, 전역 변수 및 힙을 사용. Unix에서 두 개의 프로세스는 운영 체제를 통해서만 통신 가능 (예: 파일, 파이프, 소켓) 그러나 작업 내의 두 스레드는 메모리를 통해 통신 가능 스레드를 사용하여 프로그램을 작성할 때, 이들이 동시에 실행된다고 가정한다. 각 스레드가 자체 CPU에서 실행되는 것처럼 보여야 하며, 모든 스레드가 동일한 메모리를 공유하는 것처럼 보여야 한다. 멀티태스킹 단일 프로세서에서 멀티스레딩은 일반적으로..

Study/시스템프로그래밍

[시스템프로그래밍] 시간과 타이머

POSIX Times 시스템은 Epoch 이후로 경과한 시간을 초 단위로 유지해야 Epoch은 세계 표준시 (Coordinated Universal Time, UTC, Greenwich Mean Time 또는 GMT로 불리기도 함) 기준으로 1970년 1월 1일 자정 00:00으로 정의됨 POSIX는 구현이 시스템 시간을 실제 시간과 날짜에 어떻게 정렬해야 하는지 명시 X #include time_t time(time_t *tloc); 시스템 시간에 접근한다 (Epoch 이후로 경과한 시간을 초 단위로 표현). tloc: NULL이 아닌 경우, 함수는 시간을 *tloc에 저장 time_t: long 형식 성공한 경우, Epoch 이후로 경과한 초의 수 반환 실패한 경우, (time_t)-1 반환 → 필수..

Study/시스템프로그래밍

[시스템프로그래밍] Signals

signal은 이벤트가 일어났을 때 발생했다는 사실을 프로세스에게 전달해주는 software notification다. 명령어 kill을 주면 목적지로 시그널을 준다. -l option은 available symbolic signal names의 list들을 준다. 프로세스는 도착한 시그널에 대해서 처리를 해줘야한다. → 시그널이 왔을 때 프로세스가 취해줘야 되는 default action이 있다. 터미널에서 ctrl+c → interrupt signal이 발생해서 지금 돌고 있는 프로세스에게 전달이 된다. 그러면 프로세스는 하던 작업을 멈추고 default action을 수행한다.(여기서는 강제 종료) Generating Signals #include int kill(pid_t pid, int sig)..

Study/선형대수학

[선형대수학] 그램-슈미트 과정, 행렬식, Cramer's rule

그램-슈미트 과정 임의의 벡터 집합으로부터 직교집합(Orthogonal set)을 구하는 과정 벡터를 다른 벡터에 사영시킨 것을 이용해 직교집합을 구할 수 있다. 집합이 직교집합인지 확인하는 것은 집합의 각 원소들에 대해 내적을 수행하는 것으로 확인할 수 있다. 예제를 풀어볼까? W = span{x1,x2,x3}의 직교기저를 구하여라 x1 = [1, -1, 2] x2= [2, 0, -1] x3 = [3, -1, -2] x1과 x2는 내적 결과 직교집합이다. x1 → v1, x2 → v2라 두자. v3 = x3 - ( ( x3와 v1의 내적 / v1과 v1의 내적) * v1 ) - ( ( x3와 v2의 내적 / v2와 v2의 내적) * v2 ) v3 = [3, -1 -2] - 0 - 8/5 * [2, 0,..

퀵차분
QC's Devlog