Tech/Development
-
Linux Programming - C언어 VScode 설정(for Mac)Tech/Development 2021. 5. 22. 13:23
C언어는 시스템 프로그래밍을 위한 언어로 개발되었으며, Linux OS를 만드는데 사용되었다. 따라서, Linux를 잘 이해하고 Linux Programming을 하기 위해서는 C언어가 필요하다. 따라서, VScode에 C언어 환경을 구축하는 방법을 살펴보려고 합니다. 1) gcc 설치 여부 확인(C++의 경우, g++) gcc는 GNU C Compiler의 줄임말입니다. Mac 환경에서 Xcode를 설치함에 따라 자동으로 gcc나 g++가 설치되기 때문에 설치가 되어있는지만 확인하도록 합니다. 참고로, 현재 gcc는 C++, 자바 등의 여러 언어도 컴파일 할 수 있게 되면서 GNU Compiler Collection의 줄임말로 불리기도 합니다. gcc -v 2) VScode C/C++ 익스텐션 설치 V..
-
Linux Programming - File Descriptor(2)Tech/Development 2021. 5. 22. 01:13
이전 포스팅에서는 파일 디스크립터(File Descriptor)에 대한 개념에 대해 알아봤습니다. 파일 디스크립터는, 프로세스에서 파일을 Open할 때 할당되는 index와 같은 역할을 수행한다고 하였습니다. 하지만, 파일 디스크립터가 할당되기 전 까지 추가적인 단계가 존재합니다. 프로세스에서 파일을 Open할 때, 디스크에서 해당하는 파일을 찾아 해당 파일의 i-node를 메모리에 올립니다. i-node는 index node의 약자로, 실제 데이터를 저장하고 있는 위치인 데이터 블록의 주소, 파일의 크기, 종류, 퍼미션 등의 정보를 가지고 있습니다. i-node의 정보 중, 데이터 블록은 실제 데이터가 저장되는 공간입니다. 디스크에 파일이 저장될 때 특별한 구분없이 데이터 블록으로 쌓이게 됩니다. 따라..
-
Linux Programming - File Descriptor(1)Tech/Development 2021. 5. 21. 00:49
Everything is a file 파일은 Linux에서 가장 기본적이면서도 중요한 개념입니다. Linux에서는 거의 모든 객체를 파일로 관리하기에 Linux는 모든 것이 파일이다 라고 말할 수도 있죠. 예를 들어, 키보드를 통해 데이터를 입력하는 행위도 키보다를 나타내는 특정 파일에서부터 데이터를 읽어오는 행위라고 볼 수 있습니다. 디스플레이에 데이터가 출력되는 것은, 디스플레이라는 파일에 데이터를 쓰는 행위로 볼 수 있겠죠. File Descriptor 시스템에서 파일을 사용할 때 파일명이 단순하면 상관 없겠지만, 파일의 이름이 길고 복잡하다면 사용할 때마다 복잡한 파일명을 계속 참조해야만 합니다. 불편함도 따르고 자원이 낭비되겠죠. 이에 나온 개념이, '파일디스크립터(File Descriptor..
-
Golang #3 - InterfaceTech/Development 2021. 3. 1. 18:56
Golang #3 - Interface What is interface? interface란 Duck Typing 방식으로 동작하는 Golang의 타입으로 객체의 Method를 따로 정의해둔 모음집이라고 할 수 있습니다. 여기서 말하는 Method는 우리가 흔히 말하는 함수와는 조금 다릅니다. Method는 객체의 '행동' 자체에 초점을 맞춘 개념이죠. Duck Typing이란 만약 어떤 새가 오리처럼 헤엄치고 꽥꽥 소리를 낸다면 그 새는 오리라는 결론에 도달하는 개념입니다. 간단히 말해 정말 객체의 행동 자체가 중요하다는 것이며, 오리처럼 행동하기만 하면 사람이든 뭐든 그 객체는 오리가 된다는 뜻입니다. 다시 설명하자면, 객체의 상태와 기능 중에서도 기능을 따로 디커플링하여 코드의 확장성과 다형성이라는..
-
Golang #2 - Method vs FunctionTech/Development 2021. 3. 1. 10:39
Golang #2 - Method vs Function interface는 간단히 말해서 Golang의 Type으로 객체의 Method를 따로 정의해둔 모음집이라 할 수 있습니다. interface에 대해서 설명하기 전에 우선 알아야하는 것이, Method와 Function의 개념입니다. 일단 차이를 알아보도록 합시다. Method vs Function interface 개념을 설명하기 전에 앞서, Method와 Function의 차이점을 먼저 소개해야겠다 싶었습니다. 두 개 모두 우리가 흔히 아는 함수로 불리우고 사용되지만, 구현 방식이나 사용 방법에 있어서 조금 다릅니다. Method의 경우 Object의 Behavior을 정의한 것이고, 함수는 무언가에 종속되지 않은 단순히 Behavior 자체만을..
-
Golang #1 - MapTech/Development 2021. 2. 14. 01:20
Golang #1 - Map Map map은 Golang의 Built-in 데이터 타입이며 Key/Value의 구조를 지닌 Hash table을 구현한 자료구조입니다. Hash table을 구현하는 많은 방법들이 있고, 이들마다 조금씩은 다르겠지만 Fast Lookups, Add, Delete라는 특징을 공통으로 가지고 있는 자료구조입니다. Hash Table Golang의 Hash Table인 'map'을 알아보기 전에, 우선 Hash Table이 어떤 것인지부터 알아보려고 합니다. Hash Table은 각각의 Key 값에 Hash Function이라는 간단한 함수를 적용하여 배열의 고유한 Index를 생성하고, 생성된 Index를 통해 Value를 저장하는 자료구조의 형태입니다. Hash Functi..
-
Headless Browser, PuppeteerTech/Development 2020. 7. 22. 23:24
Puppeteer! 그림과 이름만 봐도 대충 무엇인지 알 수 있을 것 같다. Puppeteer은 Chrome/Chromium 브라우저를 제어하도록 도와주는 Node.js 라이브러리이다. 구글에서 제공하는 공식 문서를 보면, 다음과 같은 목적으로 사용될 수 있음을 보여준다. 1. 웹 페이지 화면을 스크린샷이나 PDF로 생성할 수 있다. 2. SPA(Single Page Application & Client-Side Redering) / SSR(Server-Sied Rendering) 페이지를 크롤링할 수 있다. 3. 폼 입력, UI 테스트, 키보드 입력 등과 같은 기능을 자동화시킬 수 있다. 4. 더 나아가서, 웹 페이지(서비스)를 자동으로 테스트하는 도구를 만들 수 있다. 5. 웹 페이지의 Timelin..