목록42서울 (11)
Love Every Moment
0. 계기 42서울의 c++ 과제를 풀고나서 동료 평가를 받았는데, 되도록이면 모든 함수의 반환값을 const & 로 해주면 좋겠다는 조언을 받았다. 이유는 프로그램의 크기가 커질수록 참조자로 반환할 때와 아닐 때에 변수를 복사하는 데에 드는 비용이 높아지기 때문이라고 하셨다. 그 의견에 동의하면서도 모든 경우에 그렇게 처리하면 안 되는 이유를 분명히 C++ Primer Plus 원서에서 읽었던 기억이 나서, 이참에 어떤 케이스에서 const & 로 반환하고 어떤 케이스에선 일반 변수로 반환하는게 좋은지 정리하고자 한다. 그전에 const 키워드가 함수의 어디에 위치하는지에 따른 의미도 정리해보았다. 1. const 위치에 따른 의미 (1) 메서드 뒤의 const class Foo{ int num = 1..
man minilibx_mms_20200219/man/man3/파일이름 1. MiniLibX 란? Simple Window Interface Library for students 42 학생들을 위해 만들어진 작은 그래픽 라이브러리로 OpenGL 을 사용하여 화면에 무언가를 렌더링해준다. X-window 나 AppKit 에 대한 지식이 없어도 창을 띄우고 그림을 그릴 수 있게 해준다. MiniLibX API 를 사용하기 위해서는 mlx.h 헤더 파일을 포함시켜야 한다. 이 헤더 파일에 들어 있는 각각의 함수가 해주는 역할은 다음과 같다. 2. 링크 gcc -L[miniLibX가 있는 상대 경로] -lmlx -framework OpenGL -framework Appkit -lz main.c 컴파일 시에 -L..
동료 카뎃이랑 코드를 가지고 이것저것 실험해보다가 요상한 것을 발견했다. printf("%d", 10) 대신에 printf("%d", '10') 을 입력하니 결과가 10이 아닌 12592 가 나오는 것이었다. 구글링도 하고 스택 오버플로우도 뒤지면서 도출한 결론은 이렇다. 따옴표 ' ' 안에 들어간 10 의 타입은 char 형식으로 인식된다. 1 과 0 은 ascii 코드로 각각 49 와 48 이다. char 의 크기는 1바이트(8비트)이고 int 의 크기는 4바이트(32비트)이다. 따라서 (int)'10' 은 (49 * 8 * 32) + 48 = 12592 가 된다. 물론 애초에 char 형식의 ' ' 안에 한 자리 문자를 넣지 않은 것부터 이상하기 때문에 컴파일을 하면 다음과 같은 경고가 뜬다. ..
팀명: 'Python Hitchhiker' 출품작: 'Backend.AI 를 활용한 파이썬 라이브 코딩 쿡북 소프트웨어' 사용 오픈소스: 래블업 사의 인공지능 개발 플랫폼 'Backend.AI' 이번 해커톤에 참여하면서 '처음'으로 경험한 것이 참으로 많았다. 첫 해커톤 참여, 첫 팀 프로젝트, 첫 프론트엔드 개발 담당, 그리고 첫 팀장. 모든 것이 처음이었기에 너무나도 힘들었지만 그만큼 부딪히고 깨져가면서 나는 성장했다. 1. 개발 과정 크게는 다섯 단계로 진행하였다. 1단계: 목업, 2단계: 협업 툴 결정, 3단계: 이슈 트래킹, 4단계: 라이센스 결정, 5단계: 배포. 처음에는 팀원들의 기술 스택을 파악하여 프론트엔드와 백엔드 팀에 배치하였다. 그리고 우리 팀이 구체적으로 어떤 것을 만들고 싶은지 ..
1. 가상머신(Virtual Machine) - 실재하는 컴퓨터 상에 소프트웨어로 논리적으로 만들어낸 컴퓨터 - 하나의 물리 자원(컴퓨터) 위에 하나의 환경(OS)만 있는 것을 효율화하고자 가상화층을 만들고 그 위에 OS를 새로 설치하는 기법 가상머신(Virtual Machine)의 이해 가상머신에 대한 기초적인 개념을 잡고 넘어갑니다. 이후 다루게 되는 가상머신에 대한 이야기는 시스템 가상 머신중에 vmware, virtualbox에 대하여 알아보게 됩니다. 가상머신 정의 가상 머신(Virtua webdir.tistory.com 2. 데비안(Debian) (1) 데비안이란? - 열정적인 자원봉사자들이 만든 리눅스 배포판(무료!) - 안정성을 중시하며 가볍다 - 우분투를 비롯한 여러 리눅스 배보판의 조상..
1. 프로세스(Process) (1) 프로세스란? 현재 실행 중인 프로그램 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당 받아 실행중인 것 운영체제의 제어 아래 실행(Running), 대기(Waiting), 중단(Stopped), 좀비(Zombie) 중 하나의 상태에 있게 된다. 각각의 프로세스가 가지는 고유의 번호를 PID(Process Idendification Number)라고 한다. 예를 들어 데비안 리눅스가 부팅될 때에는 최상위 프로세스인 systemd(PID: 1)이 생성되며 모든 프로세스들은 이 1번 프로세스의 자식 프로세스가 된다. 부모 프로세스의 PID 를 줄여서 PPID 라고 한다. ps 명령어를 통해 현재 실행중인 프로세스 목록을 확인할 수 있다. (2) 쓰레드(..
0. 개요 유닉스 이전의 운영 체제에서는 프로그래머가 직접 입·출력장치를 설정하고 연결했어야 했다. 하지만 유닉스에서는 데이터 스트림(Data Stream) 이라는 개념을 이용하여 장치를 추상화함으로써 open, read, write 하면 자동으로 입·출력 장치가 연결되도록 하였다. 스트림(Stream)은 컴퓨터에 연결되는 여러 장치들을 통일된 방식으로 다루기 위한 가상적인 개념이다. 이를 통해 프로그래머는 데이터가 어디서 나와 어디로 가는지 신경쓰지 않고 자유롭게 이용할 수 있다. 표준 스트림(Standard Stream) 은 프로세스가 생성되면 기본적으로 생기는 입·출력을 위한 채널이다. 여기에는 표준 입력(Stdin), 표준 출력(Stdout), 표준 에러(Stderr) 가 있으며 터미널을 열면 쉘..
1. 서브넷(Subnet) (1) 서브넷팅(Subnetting) 네트워크 관리자가 네트워크 성능을 향상시키기 위해 자원을 효율적으로 분배하는 것 서브넷 마스크를 이용하면 하나의 네트워크를 여러 개의 서브넷 네트워크로 분할 가능하다 (2) 기본 서브넷마스크 네트워크 ID 부분의 비트를 1로 치환한 것 IP 주소와 넷마스크를 AND 연산하면 네트워크 주소를 얻을 수 있다. A 클래스: 255.0.0.0 B 클래스: 255.255.0.0 C 클래스: 255.255.255.0 ★ 서브넷팅 예시 IP주소가 192.168.0.1 이라면 C 클래스라는 것을 알 수 있다. 해당 IP주소를 2진수로 표현하면 11000000.10101000.00000000.00000001 이다. 넷마스크는 앞에서부터 세번째 블록까지의 비..