[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

전체 글 491

[Git 입문] 커밋 내역 수정하기

[git log] 명령어로 찾은 수정내역에서 해시값을 찾아, [git reset --hard 해시값]을 하면 그 이후의 커밋들은 모두 없던것으로 만들어버릴 수 있다. 참고로 --soft 옵션을 사용하면 이 후의 내용도 저장한다. 이렇게 github의 로컬저장소의 내용이 모두 변경된 상태에서 push를 하면 오류가 뜨지만, -f 옵션으로 강제 push가 가능하긴 하다. git --amend 옵션을 통해 지금까지 사용된 commit 메세지를 수정할 수 있다.

[자료구조] 해시 테이블

key-value 데이터를 어떻게 효율적으로 관리할 수 있을까? Direct Access Table을 활용해 각 주소를 key로 활용하여 각각의 주소에 value값을 저장한다면, O(1)으로 저장하고 O(1)으로 불러올 수도 있다. 하지만 이는 데이터공간의 낭비가 일어날 수 있다. (key를 숫자로 생각하면 1, 3, 20000의 key가 있다고 생각했을때, 19997의 낭비공간이 발생) 그에 따라 제시된 것이 Hash Table이다. 이는 '해시함수'를 활용하여 값을 저장한다. 해시함수 : 특정값을 원하는 범위의 자연수로 변경해주는 함수. 원하는 범위를 정하면, 해시함수를 활용하여 적절한 위치에 key값과 value값을 모두 저장한다. 해시함수의 조건 결정론적이어야 된다. 원하는 범위의 자연수 하나하나..

[Git 입문] Git의 기본 동작원리

https://ndb796.tistory.com/187?category=1029186 Git의 동작 원리 [Git으로 시작하는 협업과 오픈소스 프로젝트 4강] 기본적으로 깃(Git) 프로젝트에 담겨 있는 데이터들은 파일 시스템 상에서의 스냅샷(Snapshot)이라고 볼 수 있습니다. 실제로 프로젝트를 커밋(Commit)하여 적용할 때의 순간을 중요시한다는 특징이 있습니다. 파.. ndb796.tistory.com [git add 파일명]을 통해 해당 파일을 Staging Area로 이동할 수 있고, (.으로 전체파일 반영가능) [git status]로 현재 Staging Area에 존재하는 파일들을 확인할 수 있다. [git reset 파일명]을 하면 다시 Staging Area의 파일이 다시 돌아온다...

[자료구조] 링크드 리스트

링크드 리스트 링크드 리스트는 데이터를 순서대로 저장해준다. 계속해서 새로운 요소를 추가할 수 있다. 배열과는 다르게 각 요소는 사실상 독립적인 레퍼런스에 위치해있다. 각 요소를 노드라고 하고, data 속성과 next 속성을 보유한다. next에는 다음 노드에 대한 레퍼런스가 들어있다. 따라서 실제 메모리에 각 노드들이 여기저기에 흩어져있어도 next속성을 통해 이어진 것처럼 활용할 수 있다. 링크드 리스트의 구성 따로 linked list클래스를 만들어서 활용한다. 그렇지만 이 linked list 클래스는 모든 노드를 멤버로 보유하지 않는다. 첫 노드 혹은 마지막 노드만을 보유하고 있다면 그에 연결된 나머지 노드들은 그를 통해 접근이 가능하기 때문이다. 따라서 linked list 클래스는 주로 첫..

[자료구조] 배열

리스트 in 파이썬 파이썬 리스트는 C 배열을 기반으로 만들어졌다. c 배열 - 선언 시 타입과 크기를 선언하여 배열 크기가 고정되어 있고, - 같은 타입의 데이터만 담기 가능하다. - 배열이 사용할 공간을 미리 할당한다. - 각 메모리 공간에 데이터가 그 자체가 연속적으로 바로 할당되는 형식이다 파이썬 리스트 - 데이터 자체는 연속적인 공간에 할당되어 있지 않지만, - 각 연속적 공간에 각 레퍼런스가 할당되어있어, 그 레퍼런스가 데이터를 가리킨다. - 따라서 그에 따라 리스트 자체로도 다양한 타입의 값을 저장할 수 있다. - (물론 그 크기의 제한도 없다. 레퍼런스가 가리키는 타입에 상관없이 레퍼런스의 크기는 일정하므로, 추가 시 레퍼런스의 크기만큼 추가를 해주면 되기 때문이다. 이에 더해 파이썬 자체..

[자료구조] 컴퓨터가 데이터를 저장하는 방법

컴퓨터가 자료를 저장하는 방식은 2가지 스토리지 : 영구적 저장소 저장속도가 느리고 받아오는 것도 느리다. 정확히 언제 사용할지 모르는 데이터 저장한다. 메모리 : 임시 저장소 저장속도가 빠르고 받아오는 것도 빠르다. 지금 당장 사용할 데이터 저장한다. 두개로 나눠 사용하는 이유는 효율적인 작업을 위해서이다. 자료구조 공부시엔, 이 중 메모리에서 데이터를 잘 활용하는 방법을 익힌다. 메모리 메모리는 각 주소가 담긴 일종의 긴 띠라고 생각하면 편하다. 긴 띠가 구역별로 나누어져 각각의 구역에 데이터가 저장되는 것이다. - 우리가 사용할 메모리는 RAM(Random Access Meomory, 임의접근메모리)이기때문에 어떤 주소에 있던 데이터접근에는 일정한 시간이 소요된다. (O(1)) - 바이트란 컴퓨터 ..

[자료구조] 자료구조란?

자료구조란? 데이터를 저장하고 관리하기 위한 구조이다. 예를 들어, 도서관에서 로미오와 줄리엣이라는 책을 찾으려고 할 때? [문학 도서 구역] -> [영문 고전 구역] -> [제목순 혹은 연도순로 꽂혀있는 책들]에서 로미오와 줄리엣을 찾는다. 이렇게 책을 찾을 수 있었던 것도 도서관 책들이 꽂혀있는 위치가 일정 구조를 가지고 있기 때문이다. 이렇듯 데이터를 정리하는 방법을 자료구조라고 한다. 더 정확히 정의하자면 자료구조는 데이터의 효율적인 접근 및 조작을 가능하게 해주는 데이터의 저장 및 관리 방식 이다. 도서관에서 로미오와 줄리엣을 찾을 수 있었듯이, 특정 데이터를 쉽게 찾고 활용하기 위해서는 특정 구조를 만들어야 한다. 자료구조를 사용하는 이유 set나 list를 예로 들어보자. 1~100000까지..

[시스템프로그래밍] POSIX Threads

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Why threads? - asynchronous events 효율적으로 처리 할 수 있음. - 공유 메모리 멀티 프로세서에서 parallel performance(병렬적 성능)을 얻을 수 있습니다. What are threads? - 하나의 실행단위, 실행흐름 - multiple processes와는 다르게 서로 공유하는 메모리 공간이 있어, pipe나 sockets등을 사용할 필요가 없다. - thread 각각이 자체 CPU에서 돌아가고, 서로 메모리를 공유하는 것처럼 보인다. - 멀티 프로세스에 비해 훨씬 빠르다. (fork() vs pthread_create() 시, pthrea..

[시스템프로그래밍] Times and Timers

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. POSIX Times - 시스템의 시간은 Epoch(컴퓨터의 시간이 시작되는 시점) 이후로 초 단위로 유지됩니다. - Epoch는 1970 년 1 월 1 일 00:00 (자정)으로서, UTC 시간을 기준으로 합니다. - POSIX는 시스템 시간이 실제 시간 및 날짜와 일치되는 방법을 지정하지 않았습니다. Time in seconds #include time_t time(time_t *tloc); - epoch time으로부터 얼마나 시간이 지났는지 - tloc : output파라미터, NULL이 아니라면, tloc에 저장 (return값과 동일, long타입의 일종) - 성공시 epoc..

[시스템프로그래밍] Signals

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Basic signal concept - 시그널은 소프트웨어적 통지수단. - 어떤 일이 일어났을때 그를 알려주는 방법 중 하나. - 생성되었지만 아직 전달되지 않은 신호는 pending 되었다라고 한다. - signal이 signal handler를 실행시키면서 프로세스가 해당 signal을 포착한다. - sigaction을 조정하여 signal handler를 호출하거나 SIG_DFL로 기본기능수행, SIG_IGN로 신호를 무시할 수있다. - signalmask를 통하여 해당 시그널을 차단할 수 있다. 모든 시그널은 SIG로 시작하는 symbolic name이 있다. - signal...