목록전체 글 (76)
속도 < 방향
edwith CS50강의를 보며 정리했습니다. 선형탐색 우리가 원하는 자료를 탐색할 때 사용되는 알고리즘 중 선형 탐색(linear search)은 자료를 찾을 때까지 모든 자료를 탐색해야 하는 방법이다. 선형(linear)이라는 단어의 뜻 그대로, 선의 모양처럼 일직선을 그대로 따라 탐색하는 방법이다. 만약 리스트의 길이가 n이라면, 가장 최악의 경우에는 가장 마지막에 찾고자 하는 숫자가 있을 때, n-1번만큼 자료를 탐색해야한다. 보통 어떠한 정보도 없거나 자료가 정렬되어 있지 않을 때 사용하는 방법이다. 보통 가장 왼쪽부터 오른쪽으로 하나씩 이동하며 탐색을 한다. 이런식의 무작위 탐색은 굉장히 비효율적이기 때문에, 탐색을 하기 전에 정렬이 필수적인 이유를 알 수 있다. 버블정렬 어릴 때 했던 게임 ..
reference : [도서] 쉽게 배우는 운영체제 https://velog.io/@mquat/OS-%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0%EC%84%B1%EB%8A%A5 1.1 하드웨어의 구성 이전 포스팅에서도 언급했듯이, 컴퓨터는 중앙처리장치, 메모리, 입력장치, 출력장치, 저장장치로 구성된다. 메인메모리를 제2저장장치, 하드디스크나 USB를 제2저장장치(보조기억장치) 라고 부른다. 중앙처리장치는 CPU라고 한다. 1.1 CPU와 메모리 CPU는 인간의 두뇌와 같은 역할을 하는데, 명령어를 해석하여 실행하는 장치이다. 메모리는 프로그램과 데이터를 저장하는 곳으로, 바이트 단위로 분할되어 있다. 1.2 입출력장치 입력장치는 키보드, 마우스, 터치스크린 등이 ..
reference : [도서] 쉽게 배우는 운영체제 4.1 유닉스와 리눅스 4.1.1 유닉스의 개발과 확산 유닉스가 만들어진 1960년대에만 하더라도 컴퓨터의 기능은 계산기에 불과했다. 이에, 효율적으로 운영체제를 사용할 수 있도록 다양하게 시도하였고 다중 사용자, 다중 프로세서, 다중 프로세스 기반의 시스템으로 만들어진 것이 '유닉스'였다. AT&T에서 만든 유닉스의 철학은 '일관성과 단순함을 지향하는 운영체제'이다. 1970년대에 고안된 C언어는 어셈블리어로 번역하기 쉽고, 유닉스는 C언어로 다시 소스코드를 만들어 큰 인기를 끌었다. 이후 대부분의 컴퓨터 전공자들은 유닉스와 C언어를 배우게 되었다. 4.1.2 BSD 유닉스의 개발 캘리포니아대학교에서 유닉스 소스코드를 구입하여 수정했는데, 이 버전이 ..
reference : [도서] 쉽게 배우는 운영체제 3.1 커널과 인터페이스 커널(kernel)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 기능을 모아놓은 것으로 자동차에 비유하자면 엔진에 해당한다. 자동차의 성능을 엔진이 좌우하듯, 운영체제의 성능은 커널이 좌우한다. 스마트폰의 운영체제에도 커널이 있는데, 구글의 안드로이드는 커널이 공개되어 있지만 애플의 iOS는 안드로이드와 달리 커널을 공개하지 않고 자사 제품에만 탑재한다. 둘 다 유닉스 커널을 기반으로 한다. 자동차 계기판이 엔진의 상태를 알려주듯, 운영체제에도 상태를 알려주는 인터페이스가 있다. 위의 그림처럼, 사용자와 응용프로그램에 인접하여 커널에 명령을 전달하고, 실행 결과를 사용자와 응용프로그램에 돌려주는 인터페이..
reference : [도서] 쉽게 배우는 운영체제 2.1 개요 구분 시기 주요 기술 특징 0기 1940년대 없음 진공관(0,1) 사용 1기 1950년대 카드 리더, 라인 프린터 일괄 작업 시스템 운영체제의 등장 2기 1960년대 초반 키보드, 모니터 대화형 시스템 3기 1970년대 후반 C 언어 다중 프로그래밍 기술 개발 시분할 시스템 4기 1980년대 PC 개인용 컴퓨터의 등장 분산 시스템 5기 1990년대 웹 클라이언트/서버 시스템 6기 2000년대 스마트폰 P2P 시스템 (메신저, 파일 공유) 그리드 컴퓨팅 클라우드 컴퓨팅 사물 인터넷 2.2 초창기 컴퓨터 (0기, 1940년대) 최초의 컴퓨터인 에니악은 펜실베니아대학의 두 학생이 만들었다. 전선을 회로에 연결하여 제작되었고, 사람이 7시간동안 계..
reference : [도서] 쉽게 배우는 운영체제 1.1 일상생활 속의 운영체제 운영체제(Operating System, OS)는 PC를 켜면 가장 먼저 만나게 되는 소프트웨어로, 소프트웨어에 익숙하지 않은 사람도 한 번쯤 들어봤을 단어이다. PC에는 Windows, Mac, Linux 등의 운영체제가 있고, 스마트폰에도 운영체제가 쓰이는데 대표적으로 구글의 안드로이드와 애플의 iOS가 대표적이다. 조금 더 기술적으로 이야기하자면, 하드웨어와 소프트웨어를 모두 관리하며 사용자가 장비를 편리하게 사용하고 장비의 자원을 효율적으로 관리할 수 있도록 환경을 제공하는 소프트웨어이다. 엄밀하게 말하면 PC 뿐만 아니라 게임기에서 전원을 켜고 게임을 골라서 동작하도록 관리하는 시스템도 운영체제이다. 컴퓨터와 스마..
edwith CS50강의를 보며 정리했습니다. ● 알고리즘 컴퓨터는 우리가 컴퓨터에 입력한 자료를 컴퓨터의 처리과정을 통해 출력 형태로 만든다. 즉 명령어들의 순서상 처리가 필요한데 이를 알고리즘이라고 한다. 마치 우리가 아침에 일어나서 양치하고, 밥을 먹고 옷을 입고 외출하는 과정처럼 순서대로 행동이 이루어지는 것과 비슷하다. 어떤 문제를 단계적으로 풀어가는 명령어의 집합이다. 하지만 순서를 잘못 놓는다든가, 비효율적으로 한다면 준비하는 데 시간이 오래 걸릴 것이다. 그래서 효율적으로 움직이기 위해 외출 경로를 바꾼다든가 하는 선택을 하는데, 알고리즘도 마찬가지이다. 알고리즘이 효율적으로 작동하도록 배열한다면 시간과 공간적으로 훨씬 여유있게 명령어가 작동될 수 있을 것이다. 좋은 알고리즘은 효율성이 좋..
edwith CS50강의를 보며 정리했습니다. ● 인공지능 (자연어처리) 우리는 소프트웨어를 작동하거나 컴퓨터 언어(프로그래밍 언어) 를 통해 컴퓨터와 상호작용을 하지만, 인간은 일상에서 컴퓨터 언어가 아닌 언어를 사용한다. 이것을 자연어 라고 부르는데, 컴퓨터가 이를 이해하도록 만들려면 자연어를 이해할 수 있도록 처리해야 한다. 가장 최초의 자연어 처리 프로그램은 1966년 조셉이 만든 ELIZA 라는 소프트웨어이다. ELIZA에서 사용하는 시스템을 패턴 매칭 (pattern matching) 이라고 하는데, 입력 받은 문자의 일부를 활용해 다시 사용자에게 반환해주는 시스템을 의미한다. 요즘은 이러한 시스템을 활용하여 구현된 챗봇을 쉽게 만날 수 있다. 사람의 언어를 기계적으로 분석하여 컴퓨터가 이해할..
내가 상장사라면 분기보고서를 공시하느라 고생했을텐데 기업이 아니라 사람이라 다행인 것 같다. 내가 뭘했나 싶은 현타감을 느끼며 공개처형 당할 생각만 해도 끔찍하다. 그래서 나는 1분기동안 뭘했을까? 정량적으로 체크할 수 있는 것부터 보려고 하니 노션밖에 생각이 나지 않는다. 중간중간 구멍이 뚫렸지만 10주 가까이 되는 주간회고를 작성했고, 그 사이 취업을 했다. 배움의 기록도 꾸준히 남기고 있다. 특히 기록하는 습관이 가장 크게 달라졌다. 기록을 하니 이룬 게 없는 것 같으면서도 뭐라도 남은 기분이 든다. 작년말보다 접한 텍스트와 읽은 책, 경험이 많아졌으니 어찌됐든 훨씬 풍부한 인생을 살고 있는 건 맞는 것 같다. 또, 물욕이 많이 줄었다. 소비지향과 충동구매를 일삼던 내가 왜 이럴까 고찰해보니 지식욕..
건강 아침운동을 하면 퇴근하고 공부할 시간이 더 많아져서 좋다. 아직 잠들어있는 뇌를 근력운동과 유산소로 깨우는 것이 짜릿하다. 미라클 모닝은 잘 모르겠지만 내게 있어 아침운동은 미라클은 맞는 것 같다. 업무 정확히 어느 시점부터인지 모르겠지만, 언젠가부터 이해 안 되던 부분이 확실하게 이해가 되기 시작했다. 물론 여전히 부족한 부분이 많지만 암기가 아니라 이해를 하니 훨씬 내 것으로 만들기 쉬워졌다. 분야의 특성 상 하나를 배우면 수채화 물감이 번지듯 주변으로 확장되어가는 속도가 빠른 듯하다. 덕분에 OCR 구현도 해보고 pose estimation, word embedding, 거리추정 알고리즘, GAN, auto encoder, swin transformer, 이상치 탐지, 시계열 데이터 등 다양한..