Computer-Science

A collection of 7 posts
Swift Concurrency 이전의 동시성 프로그래밍
Swift

Swift Concurrency 이전의 동시성 프로그래밍

들어가며 안녕하세요! 오늘은 Swift Concurrency가 등장하기 이전에는 동시성 프로그래밍을 구현하기 위해 어떠한 도구들을 사용했는지, 어떠한 맥락으로 동시성 프로그래밍을 도와주는 도구들이 등장하게 되었는지 더 나아가 Swift Concurrency는 어떠한 문제를 해결하기 위해 등장하게 되었는지 살펴보도록 하겠습니다. Thread 동시성 프로그래밍을 할 때 '스레드'라는 단어가 많이 언급되는데요, 스레드를 많이 쓰면 쓸수록 더 많은 작업을
17 min read
동시성과 병렬성의 차이
Computer-Science

동시성과 병렬성의 차이

들어가며 이번 주제에서는 Swift Concurrency에 대해 자세히 알아보기에 앞서 동시성과 병렬성에 대한 개념을 잡아보려고 해요 코드를 다른 코드와 동시에 실행한다는 것은 무엇을 의미하는 걸까요? Computer Science에서 ‘동시’라는 단어의 의미는 2개 이상의 사건이 정확히 같은 시간에 진행되는 것을 의미하는 “same-time”을 의미하는걸까요? 그럼 시작해보시죠! 우리가 작성하는 대부분의 코드는 동시성이 없는,
4 min read
Git의 commit id는 어떻게 생성될까?
Computer-Science

Git의 commit id는 어떻게 생성될까?

여러분 안녕하세요! Noah입니다. 혹시 Git을 사용하면서 commit id를 보신 적이 있나요? 우리는 commit id로 특정 버전을 가리켜 commit을 되돌리기도 하고, 특정 commit의 변경사항을 되돌리기도 합니다. 그렇다면 이 commit id는 어떻게 해서 만들어지는 걸까요? Q. 서버에서 고유한 id를 부여해주나요..?🧐 A. Git은 로컬에서 관리되는 버전 관리시스템이기 때문에 별도의 인터넷이 연결되지 않은 환경에서도
6 min read
TCP와 UDP에 관하여
Computer-Science

TCP와 UDP에 관하여

OSI7 Layer Model 안녕하세요 :) Noah입니다. 오늘은 TCP와 UDP의 통신방식에 관한 얘기를 나눠볼까 합니다. 인간사회에 여러 가지 규칙이나 규약이 있듯, 컴퓨터 네트워크 분야에도 여러 가지 규약이 있습니다. 이러한 규약을 정하는 기관 중 국제표준화기구(ISO)에서 통신이 일어나는 과정을 단계별로 쉽게 파악하고, 다른 시스템 간의 원활한 통신을 위해 제안한 통신규약인 OSI 7
9 min read
Swift 성능 이해하기 struct-class
Swift

Swift 성능 이해하기 struct-class

안녕하세요 Noah입니다 :) 좋은 개발자는 좋은 코드를 짜야 할 것입니다. 제가 생각하는 좋은 코드란, 팀원들이 보기에 좋은 코드를 작성하고, 안정적이고 속도가 빠른 코드를 작성해 결과적으로 앱을 사용하는 사용자에게 좋은 경험을 안겨주는 것이 좋은 코드라고 생각합니다. 이번 시간에는 좋은 코드를 작성하기 위한 초석으로 Swift 성능 이해하기라는 제목으로 알아봅시다!! 이번 편에서는 struct와 class에
39 min read
해시 알고리즘(Hash algorithm)
Computer-Science

해시 알고리즘(Hash algorithm)

안녕하세요 Noah입니다 :) 오늘은 Hash algorithm의 개념에 대해 간략하게 알아보려 합니다. Hash는 Key-value를 쌍으로 데이터를 저장하는 자료구조입니다. 리소스를 포기하고 속도를 취한 자료구조이며, Space-Time trade off의 대표적인 알고리즘에 속합니다. Hash algorithm은 O(1)의 시간 복잡도를 지향합니다. Hash Data를 Hash function을 거쳐 테이블에 넣어야 합니다. 이때 똑같은 데이터가 올 때마다 똑같이 분류되어야
6 min read
애자일 개발 프로세스 톺아보기
Computer-Science

애자일 개발 프로세스 톺아보기

안녕하세요 Noah입니다 :) 애자일을 검색해보면 여러 용어가 나옵니다. 애자일, 애자일 방법론, 익스트림 프로그래밍, 스크럼, 스프린트 등등 이러한 용어들을 살펴보며, 애자일 개발 프로세스에 대해 알아보도록 하겠습니다. 애자일(agile)은 우리말로 ‘날렵한’, ‘민첩한’, ‘기민한’ 이라는 의미를 지닙니다. 애자일 프로세스는 고객의 요구에 민첩하게 대응하고, 그때그때 주어진 문제를 풀어나가는 것을 중요하게 생각합니다. 등장 배경 애자일은
16 min read