일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- r
- mongodb
- github
- socket
- spring
- Static
- mybatis
- cache
- network
- git
- Heap
- libuv
- Lombok
- NoSQL
- Elk
- redis
- Java
- effective
- AWS
- ajax
- VCS
- reactive
- 데이터통신
- nodejs
- Linux
- HTTP
- html
- reactor
- 네트워크
- javascript
- Today
- Total
목록C (10)
빨간색코딩
GNU MAKE참조문서: http://wiki.kldp.org/KoreanDoc/html/GNU-Make/GNU-Make.htmlmake는 파일 간의 종속관계를 파악하여 Makefile(기술파일)에 적힌 대로 컴파일러에 명령하여 SHELL명령이 순차적으로 실행1. make의 장점단순 반복 작업을 자동화 해준다(일일이 gcc명령어를 안쳐도 됨)프로그램의 종속 구조를 빠르게 파악2. makefile 구성목적파일(Target) : 명령어가 수행되어 나온 결과를 저장할 파일의존성(Dependency) : 목적파일을 만들기 위해 필요한 재료명령어(Command) : 실행 되어야 할 명령어들매크로(macro) : 중복되는 이름들을 특정 단어로 치환(C의 #define)으로 코드를 단순화3. makefile 작성주로..
1. 소켓의 옵션아래는 프로토콜 레벨과 옵션 이름들이다.1-1. SOL_SOCKET : 일반적인 옵션SO_SNDBUF : 송신버퍼 크기 설정SO_RCVBUF : 수신버퍼 크기 설정SO_REUSEADDR : 지역 주소(IP,Port) 재사용여부SO_KEEPALIVE : 주기적으로 연결 여부 확인SO_BROADCAST : 브로드캐스팅 허용여부SO_DONTROUTE : 라우팅 테이블 참조과정 생략여부SO_OOBINLINESO_ERRORSO_TYPE : 소켓의 타입(변경 불가)1-2. IPPROTO_IP : IP 패킷 관련IP_TOS : Type of Service 변경IP_TTL : Time-To-Live 변경IP_MULTICAST_TTL : 멀티캐스트 패킷의 TTL 변경IP_MULTICAST_LOOP : 멀..
1. hostent 구조체struct hostent { char *h_name; //공식 도메인 이름 char **h_aliases; //공식 이외 도메인 이름들 int h_addrtype; //주소정보 체계(IPv4: AF_INET, IPv6: AF_INET6) int h_length; //IP주소의 크기를 담는다. (IPv4는 4) char **h_addr_list; //도메인 이름에 대한 IP주소가 정수 형태로 반환될 때 이 멤버 변수를 이용 } * 예제2. 도메인 관련 API#include 아래 함수들을 호출하면 소켓 라이브러리가 DNS서버에 조회하여 IP주소나 도메인명을 찾는 기능을 제공한다. 이와같은 정보를 hostent 구조체에 담아서 반환해주는 것이다. 개발자가 IP주소를 알아내기위해 별도..
아두이노 Uno보드와 블루투스 모듈(HC-05)를 이용한 코드이다. app inventor를 이용해서 간단한 어플을 만들고 아두이노와 스마트폰 어플과 통신할 수 있는 환경을 구축하고 실습해보면 재밌을거다. 아두이노 bluetooth from JungHoon Lee 위 슬라이드의 목차이다. 들어가기. 블루투스 세탕하기① 개요② 회로도③ 스케치④ 결과화면 Case1. smartphone application으로 부터 숫자(R,G,B)를 입력시켜서 RGB LED을 이용하여 색상을 디자인하기① 개요② 동작원리③ 스케치④ 결과화면⑤ 결론 Case2. R:0-49, G:50-99, B:100-149을 만족하도록 App Inventor을 이 용하여 3개의 slide을 만들어서 색상을 디자인하기① 개요 ② App 디자..
아두이노 디지털 입출력과 아날로그 입출력은 기본이자 아두이노갖고놀기의 시작이다. 아두이노 소스와 결과화면, 사진화면으로 보기쉽게 ppt를 제작하였다. 순서도도 있으니 이해하기 쉬울거다~ 아두이노 Digital/Analog IO from JungHoon Lee 위 슬라이드의 목차이다. Case1. digital input→digital output : button으로 난수생성 -> LED on/off① 개요② 회로도와 동작원리③ 스케치④ 결과화면⑤ 결론 Case2. digital input→analog output : 3 color button으로 RGB LED 밝기조절① 개요② 회로도와 동작원리③ 스케치④ 결과화면⑤ 결론 Case3. analog input→digital output : 가변저항 값의 범..
1. Half-close란?1-1. 일방적인 close()의 문제점A호스트와 B호스트가 서로 TCP통신하고 있다. 그러나 A호스트가 일방적으로 close()로 연결을 종료하면 B호스트는 A호스트로 데이터를 보낼게 있어도 보낼 수 없다. 따라서 일방적으로 송수신 스트림을 끊어버리는 건 문제가 있으므로, 하나의 스트림(주로 송신을 닫고, 수신을 열어둠)만 닫는 것을 Half-close 기법이라고 한다.1-2. Half-close가 필요한 이유서버는 단순히 데이터를 연속해서 전송하면 되지만, 클라이언트는 언제까지 데이터를 수신해야 하는지 알 수 없다. 주기적으로 read()함수를 호출하다가는 블로킹(호출된함수가 반환되지 않음) 상태에 빠질 수도 있다. 그러므로, 데이터전송이 끝났음을 알리는 EOF를 날리면 된..
TCP소켓에 이어서 쓴다1. UDP소켓이란?UDP소켓은 비연결지향형 소켓이다. TCP에 있는 흐름제어가 없다. 특징으로는 전송순서에 상관없이 가장 빠른 전송,경로를 지향한다. 데이터 손실의 우려가 있고 한번에 전송할 수 있는 데이터의 크기가 제한된다. 데이터의 경계가 존재한다. TCP소켓과 반대라고 생각하면 쉽다. 데이터의 경계가 존재한다는 건, 3번 write()했으면 3번 read()를 해서 수신해야한다는 것이다. 이러한 특징때문에 UDP는 주로 고속의 데이터 전송이나 데이터가 조금 손실되도 상관없는 곳에 쓰인다. 대표적인 예가 동영상 스트리밍을 들 수 있겠다.중학교 때 스타좀 (많이)해봤는데.. 스타크1을 한사람이면 특히 UDP란 글자가 익숙할거다. 게임플레이어간에 고속통신을 위하여 UDP로 주고받..
입력과 출력은 프로그램의 흐름이다. 입력을 키보드뿐만아니라 파일로도 할 수 있으며, 출력에도 모니터뿐만 아니라 파일역시 출력의 대상이다.1. 표준 스트림특정한 프로그래밍 언어 인터페이스뿐 아니라 유닉스 및 리눅스,윈도 등에서 컴퓨터 프로그램과 그 환경 사이에 미리 연결된 입출력 통로이다. 스트림은 단방향이다.데이터 스트림은 순차적인 데이터 바이트들을 파일의 끝(EOF)까지 읽는다. 이런 방식으로, 프로그램은 쓸 데이터가 얼만큼 남았는지, 혹은 어떤 식으로 묶여있는지 알 필요 없이 필요한 데이터를 쓸 수 있었다.c언어에서 함수앞에 f가 붙은 함수들은 보통 인자로 FILE *stream을 받는다.2. 표준입력입력을 위한 스트림(Standard input, STDIN, 0) 변수는 FILE* stdin;3. ..
구조체의 메모리 저장방식을 알면 멤버변수들을 선언할때 좀 더 메모리를 효율적, 최적화되게 쓸 수 있다.1. 구조체의 바이트 패딩바이트패딩이란 멤버 변수를 메모리에서 CPU로 읽을 때 한번에 읽을 수 있도록, 컴파일러가 레지스터의 블록에 맞춰 바이트를 패딩해주는 최적화 작업이다. 만약 컴파일러가 패딩을 하지 않는다면(=최적화를 해주지 않는다면) CPU가 메모리에 다시 접근하면서 성능이 떨어질 것이다.struct x { char a; int b; char c; }; struct x data; 위 구조체를 sizeof(data) 로 찍어보면 6이 나올 것같지만 12가 나온다. 컴파일러는 구조체를 구성하는 멤버들을 가장 크기가 큰 멤버 자료형의 배수가 되도록 정렬한다. 이 정렬을 위해 의미없는 바이트(패딩)들을..
TCP소켓 프로그래밍의 기초 0. 다루는 소켓에 대하여일반적으로 사용되는 INET(TCP/IP 를 이용한 인터넷 주소 패밀리)와 TCP(데이터 연결지향형, 신뢰성이 높은 Stream) 에 대해서 다룬다. 리눅스(centos7) 환경을 기준으로 다룬다. 이번에도 느낀건데 이런식으로 넘버링하면서 공부하면 뇌에 효율적으로 저장되는거같다..1. 소켓이란?직관적인 예로 전구는 소켓을 이용하여 전기를 공급받는다. 이처럼 컴퓨터도 네트워크에서 데이터를 얻기위해 소켓을 사용할 수 있다. 소켓 프로그램은 서버-클라이언트의 2개의 프로그램으로 쌍을 이룬다. 서버는 서비스를 제공하는 프로그램이고, 클라이언트는 서버에 서비스를 요청하는 프로그램이다.TCP 소켓이란?TCP소켓은 연결지향형이다. 중간에 데이터가 소멸되지 않고 목..