전체 글 65

시스템 호출 (system call, syscall)

1. 운영체제의 기능 '시스템콜(system call)'을 알기 전에 기본적인 운영체제의 기능에 대해 알고 있다면 이해가 참 쉽다. '운영체제(Operating System)'는 Operating(운영)이란 이름에 걸맞게 컴퓨터를 제대로 실행 및 사용하게 해주는 프로그램이다. 운영체제가 없으면 컴퓨터 사용이 어려울 정도로 중요한 프로그램이 바로 '운영체제'이기 때문에 컴퓨터 사용에 필수적이며, 운영체제의 가격이 비싼것도 사실 어느 정도 이해가 되는 부분이다. Q 이게 무슨 관련 ? A 시스템 콜(system call)이란 것이 바로 프로세스가 운영체제(system)에게 운영체제 기능을 요청하는(call) 것! 2. system call이란? 프로세스가 컴퓨터를 관리하는 시스템인 운영체제에게 어떤 기능(서..

항해99/TIL 2023.01.13

프로세스와 스레드의 차이점

면접에서 많이 나오는 이유는 운영체제에서 작업을 실행할 때 자원을 할당하는 단위를 알고 있느냐와 프로그램 멀티 스레드를 구현할 때 장. 단점을 알고 있느냐에 대한 질문이다. ☝🏻 먼저 프로그램이 무엇인지 알아야 한다. 프로그램 → 프로세스 → 스레드 Q : 프로그램이란? A : 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 1. 메모리가 올라가 있지 않은? 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않은 것으로, 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다. 2. 정적인 상태 : 정적이라는 단어 그대로, 움직이지 않는 상태로, 한 마디로 아직 실행되지 않고 가만히 있다는 뜻 한마디로 정의하자면 프로그램이라..

항해99/TIL 2023.01.13

[혼공] 오늘의 회고

우리는 모두 공평하게 각자의 고독을 이겨내고 있다. 항해 캠프가 끝나고 솔직히 늘어진 마음도 가지고 있다. 🥲 그동안 너무 정신없이 달려와서 쉬고 싶다는 마음도 있어서 쉬기도 했지만, 생각 외로 그동안 미뤄왔던 일들의 처리하고 집에 있을 시간도 없이 밖에서 면접도 보고 준비도 하고 등등 많은 일들을 병행하다 보니 조금 지쳐 있었다. 오늘은 드디어 이런 마음에 안정감을 찾고 마음을 다시 먹은 날이기도 해서 WIL회고를 작성해 본다. 🥳 💡 오늘의 학습 범위 - TCP와 UDP 👀 TCP는 연결지향적으로 데이터의 신뢰도가 중요하다고 판단될때 주로 사용하고, UDP는 비연결지향으로 최소한의 오류제어 기능만 수행하여 빠른 속도의 실시간 멀티미디어 정보를 처리하기 위해 주로 사용한다. - TCP 3 way han..

항해99/WIL 2023.01.06

항해 99 9기 수료후기

이곳은 제 블로그니까 제 생각을 솔직히 적어보도록 하겠습니다. 항해 99를 진행하며 실제로 체감한 항해의 장/단점 장점 : 계속 팀으로 진행되는 과정이라서 힘든 일이 있어도 의지가 되는 팀원들이 있다는 점이 좋았습니다. 또한, 이미 항해를 수료하신 매니저님들과 함께 하다 보니 전우애가 생겨서 매니저님들도 정말 열심히 가르쳐 주십니다. 단점 : 팀원으로 진행되는 과정에서 어쩔 수 없이 자신의 실력과 다른 사람의 실력이 비교되기 쉽습니다. 그때마다 좌절이 일어날 수는 있지만 그것은 자신이 어떻게 극복하느냐의 차이일 수도 있을 거 같습니다. 또한, 항해는 정말 자기주도 학습의 끝판왕이기 때문에 웬만하면 어느 정도 공부를 하고 가시는 게 좋을 거 같습니다. 항해99 선택한 이유 저는 비전공자이고 개발자로 취업을..

카테고리 없음 2022.12.29

빅오 표기법 (알고리즘 효율성)

빅오표기법 보통 알고리즘의 시간 복잡도와 공간 복잡도를 나타내는 용도로 주로 사용 시간과 공간 복잡도를 나타내는 방법으로는 점근 표기법이라고 해서 빅오(Big-O), 빅오메가(big-Ω), 빅세타(big-Θ) 표기법이 있다. 그런데 왜? 이 중에서 빅오표기법을 사용했을까? 알고리즘 효율성을 상한선 기준으로 표기해서이다. (상한선 : 알고리즘 효율성은 값이 클수록 즉, 그래프가 위로 향할수록 비효율적임을 의미한다.) 빅오메가는 하한선을 기준으로 하고, 빅세타는 상한선과 하한선의 사이를 기준으로 표기한다. 여기서 주의할 점은 빅오 표기법이 상한선만 지정했을 뿐 상한선이 꼭 알고리즘 효율성의 최악의 경우는 아니라는 것이다. 상수형을 무시한다. 빅오 표기법은 데이터 입력값(n)이 충분히 크다고 가정하고 있고, ..

Java script/개념 2022.12.23

[항해99] 실전프로젝트 정리

6주간의 실전 프로젝트 과정을 거치면서 참 많은 일을 거친거 같다. 1주차 일단 첫주는 기획에 시간을 의도치 않게 쏟아부었는데 그 이유는 처음에 좋은 아이디어라고 생각한 프로젝트가 우리 수준으로 맞추다 보니 기존 기수에서 많이 하는 그저그런 프로그램이 되었다... 이미 3일의 시간을 쏟아부었지만 엎었다 우리는 우리만의 프로젝트를 하고 싶었기 때문이다. 여러가지 아이디어를 내기도 했지만 우리 조원들이 가장 하고 싶었던건 화상채팅 기능이었기에 이에 걸맞는 프로그램을 진행하는게 좋다고 생각했고, 보드게임 카페에서 필수로 하는 게임인 스파이풀을 웹으로 구현하자는 아이디어로 프로젝트를 결정하게 되었다. + 깃허브 컨벤션 (https://bald-crop-238.notion.site/Convention-Git-Fl..

항해99/WIL 2022.12.19

로그인 토큰 저장

실전 프로젝트를 시작하면서 유저의 로그인에서 어떻게 하면 토큰을 관리할 수 있을까?라는 의문이 들었고, 내가 찾아보고 선택한 방법에 대해서 적어본다. 웹 클라이언트에서 무언가를 저장하기 위해 사용하는 공간은 크게 쿠키와 웹 스토리지로 나눌 수 있다. 그리고 웹 스토리지는 다시 세션 스토리지와 로컬 스토리지로 나뉜다. 이는 개발자 도구에서 쉽게 확인할 수 있다. 이중 로그인 성공시 토큰을 어디에 저장해야 적절한지 알아보기 위해 각각의 특성을 먼저 알아보도록 하자 쿠키 저장공간 (4KB) 백엔드에서 로그인이 성공되면 access token을 http header에 넣어 로그인에 대한 응답을 보내고, 브라우저에서는 이 응답 헤더에 존재하는 쿠키를 브라우저에 저장하여 사용 쿠키를 사용할 때에도 보안 이슈가 있다..

항해99/TIL 2022.11.28

배포 환경 설정 (.env)

"환경 변수(環境 變數, 영어: environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다." 쉽게 말해 "내가 정한 명령어"이다. 기본적으로 우리는 Nodejs위에서 개발을 한다. node.js는 production(배포)와 development(개발), test(테스트)로 구분하여 사용한다. 그리고 create-react-app의 실행 명령어에 따라 자동으로 NODE_ENV값이 정해진다. # production 배포 env실행 $ npm run build # development 개발 env실행 $ npm start # test 개발 env실행 $ npm run test 실행 OS에 따라 환경변수를 설정하는 방법이 다르기 때문에, 환경 변수 ..

React 2022.11.24

[REST API]를 이용한 카카오톡 소셜로그인

6일간 카톡 소셜로그인만 했다는 시간이 아까워서 정말 자세히 기록해 놓고 싶어서 작성한다 🧑🏻‍💻 간단 요약 REST-API를 활용한 카카오톡 로그인 방법 사용 프론트엔드와 - 백엔드 함께 작업 프론트엔드 : 카카오로부터 인가코드를 받고 인가코드를 백엔드에 넘겨주는 역할 (+ 마지막 리다이렉팅까지) 백엔드 : 프론트로부터 인가 코드를 넘겨받고 카카오로부터 토큰을 발급받는다. 그리고 해당 토큰에 담긴 유저 정보를 활용해 프로젝트 전용 토큰으로 새롭게 발급 후 프론트에게 돌려준다. 백엔드에서 카카오 토큰을 프로젝트 전용 토큰으로 새롭게 발급하는 이유는 카카오 토큰을 그대로 클라이언트에게 직접 넘겨주고 사용시키다가 해킹 당하면 고소 당하는 거임 1. 인가코드 받기 카톡 소셜로그인을 위해서는 우선 여기 사이트에..

React 2022.11.18

[항해99] 실전 프로젝트 2주차

계속 일주일씩 마감 기간을 지켜오다가 실전 프로젝트에서는 3주 후에 배포라고 하니까 여유로운가? 싶다가도 2주 차가 되면 헐레벌떡이다. 저번 주에 멘토님을 만났을 때 내가 대체 이 기능을 왜 쓰는지? 이게 효율적이어서 이걸 쓰는건지 이 기능에 대한 원리는 알고 있는지? 등 정말 기본적인 질문인데 아무것도 모르고 내가 쓰고 있던 게 아닌가?라는 의문에 빠지게 했다. 그래서 2주차가 되는 기간 동안 어떤 기능을 쓰던지 신중에 신중을 하면서 찾아보다 보니 참 시간이 빠르고 나에게 주어진 3주라는 시간도 사실 길지 않다는 것을 알 수 있었다. 생각이 많아져서 산책을 나가며 정말 이제는 가을이 왔다는 게 실감이 날만큼 낙엽이 쏟아지고 있는데 떨어지는 낙엽을 잡고 싶다는 생각이 갑자기 들어서 하나를 잡았다. 잡고 ..

항해99/WIL 2022.11.16