๋ฐ˜์‘ํ˜•
๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.


๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 496

C์–ธ์–ด ์†๋„ ์ธก์ •์šฉ ํ…œํ”Œ๋ฆฟ

C์–ธ์–ด๋กœ ์ง  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์–ผ๋งˆ๋‚˜ ๋น ๋ฅผ๊นŒ ๊ถ๊ธˆํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. (์™œ ๊ถ๊ธˆํ•ด์•ผ ํ•˜๋ƒ๊ณ ?) ๊ทธ...๊ทธ๊ฑฐ์•ผ ๊ฒŒ์ž„ ๋งŒ๋“œ๋‹ˆ๊นŒ... ์•„ ์ด์   ํ•„์š”์—†์ง€? ์š”์ฆ˜์€ ์ปดํ“จํŒ… ํŒŒ์›Œ๊ฐ€ ๊ดด๋ฌผ์ด๋ผ์„œ (์‹œ๋ฌด๋ฃฉ) ์•”ํŠผ ๊ทธ๋ž˜๋„ ๋‚œ ๊ถ๊ธˆํ•˜๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•œ ๋‹ค์Œ์— (2)-(1)ํ•ด์„œ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ์ธก์ •ํ•œ๋‹ค. // ์ž‘์—… ์‹œ์ž‘ ์‹œ๊ฐ ์ €์žฅ(1) // ์ž‘์—… // ์ž‘์—… ์ข…๋ฃŒ ์‹œ๊ฐ ์ €์žฅ(2) ์˜ clock() ์ฝ”๋“œ๋กœ ๋ณด๋ฉด ์ด๋Ÿฐ ์‹์ด๋‹ค. #include #include main() { clock_t start,end; start = clock(); /* ๋ฃจํ”„ ์‹œ์ž‘ */ int j; for(int i=0; itm_hour, p_tm->tm_min, p_tm->tm_sec, timeEnded.tv_u..

2021 ์„คํŠน์ง‘ ๋ฐฐ๊ทธ ํ•œ์ค‘ ํŒŒํŠธ๋„ˆ ๋ฆฌ๊ทธ ์ด๋ฒคํŠธ ์•„์ดํ…œ!

2021 ์„คํŠน์ง‘ ๋ฐฐ๊ทธ ํ•œ์ค‘ ํŒŒํŠธ๋„ˆ ๋ฆฌ๊ทธ ๋ณด๊ณ  ์žˆ๋Š”๋ฐ ์ด๋ฒคํŠธ ์•„์ดํ…œ ์ง€๊ธ‰ํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ์žˆ๋‹ค! ์•„์ดํ…œ ๋ฐ›์œผ๋Ÿฌ ๊ฐ€์ฆˆ์•„!!! ์™œ ์•ˆ๋˜์ง€? ์•„์ดํ…œ ์–ด๋””์„œ ์ฃผ๋Š”๊ฑฐ์•ผ??? ์•„... 2์›” 10์ผ๋ถ€ํ„ฐ 2์›” 23์ผ์— ์ ‘์†ํ•ด์•ผ ๋˜๋Š”๊ฑฐ๊ตฌ๋‚˜ ใ…‹ใ…‹ใ…‹

UBUNTU for DESKTOP 14.04.1 LTS i386

๋žจ 2๊ธฐ๊ฐ€ ์ดํ•˜๋Š” 32๋น„ํŠธ ์„ค์น˜ํ•˜๋ผ๊ณ  ํ•ด์„œ ์šฐ๋ถ„ํˆฌ ์‹  ๋ฒ„์ „ ์„ค์น˜ํ•ด๋ดค๋‹ค. ํ•œ๊ธ€ ๋ฌธ์ œ๋„ ๊ฒ€์ƒ‰ํ•ด์„œ ํ„ฐ๋ฏธ๋„์—์„œ ํŒจํ‚ค์ง€ ์ธ์Šคํ†จ ๋‘ ๋ฒˆ ํ•˜๊ณ  ๋ฆฌ๋ถ€ํŒ…ํ•˜๋‹ˆ๊นŒ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ์ด์ œ ์˜›๋‚ ์— ๊ณต๋ถ€ํ•˜๋˜ ๊ฑฐ ๊บผ๋‚ด์„œ ๋‹ค์‹œ ๊ณต๋ถ€ํ•ด๋ด์•ผ์ง€. ๊ฒจ์šธ์ž ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ํ•จ๊ป˜ ใ…‹ใ…‹ใ…‹ ๊ทธ๋Ÿฐ๋ฐ ์ด์ œ ๊ฒจ์šธ์ž ์—์„œ ๊นฐ ๋•Œ๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

for๋ฌธ๋„ ๋ชจ๋ฅด๋Š” ๋ฐ”๋ณด

TCP/IP ์†Œ์ผ“ํ”„๋กœ๊ทธ๋ž˜๋ฐ C version์ด๋ผ๋Š” ์ฑ…์„ ๋ณด๊ณ ์žˆ๋Š”๋ฐ vํŽ˜์ด์ง€์˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€... ์–ด์ฐŒ๋œ๊ต...ใ… .ใ… ; TCP/IP ์†Œ์ผ“ํ”„๋กœ๊ทธ๋ž˜๋ฐ C version TCP/IP ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(The Pocket Guide to TCP/IP Sockets)์€ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ง€์‹๊ณผ ๊ธฐ๋ฒ•๋“ค์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋น ๋ฅด๊ณ  ์šฉ์ดํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ www.yes24.com ๊ทผ๋ฐ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์ด๋ฏธ ์งˆ๋ฌธ์ด ์žˆ์–ดใ…‹ http://m.k.daum.net/qna/mobile/view.html?nk_type=Q&qid=49jtC ์•Œ๊ณ ๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์ € ์†Œ์Šค์ฝ”๋“œ์˜ for ๋ฌธ์„ ์ž˜ ๋ชป ๋ณด๊ณ  ์žˆ์—ˆ๋˜ ๊ฑฐ์˜€๋‹ค. ์ž˜๋ณด๋ฉด for( ; ; )์—์„œ ๋งˆ์ง€๋ง‰ increment๊ฐ€ ์—†๋Š”๊ฑฐ.ใ…‹ใ…‹ใ…‹ ์ด..

gcc์—์„œ __gxx_personality_v0 ์—๋Ÿฌ๋‚  ๋•Œ

gcc ์•„๋ž˜์ฒ˜๋Ÿผ ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๋•Œ undefined reference to __gxx_personality_v0' warning: deprecated conversion from string constant to ‘char*’ ์ฒซ๋ฒˆ์งธ ์—๋Ÿฌ๋Š” gcc -g -o server *.cc ๋ฅผ g++ -g -o server *.cc ๋กœ ๋ฐ”๊พธ๋ฉด ํ•ด๊ฒฐ๋จ. ๋‘๋ฒˆ์งธ ์—๋Ÿฌ๋Š” ํ•จ์ˆ˜๋ž‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ต์ฒดํ•˜๋ฉด ๋จ. ์˜ˆ๋ฅผ ๋“ค์–ด, char* Str = "Hello"; ๋ผ๋ฉด, const char* Str = "Hello"; ๊ทธ๋ฆฌ๊ณ  void DisplayText(char* Text); ๋ผ๋ฉด, void DisplayText(const char* Text); ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ณ ์น˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

Segment Failed (or Fault)

์–ผ๋งˆ์ „ ์ฟผ๋“œํŠธ๋ฆฌ ๋Œ€์‹  ๋น„๋””์˜ค ์นด๋“œ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ 1์ฐจ์› ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฆฌ๋‹ˆ์–ด ์„œ์น˜ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค์–ด ํ…Œ์ŠคํŠธํ•˜๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ Segment Fault๋ž€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜์„œ ์•ฝ๊ฐ„ ๋‹นํ™ฉํ–ˆ์—ˆ๋Š”๋ฐ... ๋ฉ”๋ชจ๋ฆฌ์— ์ž˜๋ชป๋œ ์ ‘๊ทผ์„ ํ• ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ด๊ณ , ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋„ ์ƒ๋‹นํžˆ ๋งŽ์€ ์—๋Ÿฌ๋‹ค. ์•„๋ฌด๋ž˜๋„ ์ขŒํ‘œ๊ณ„์‚ฐํ›„ ์ž˜๋ผ๋‚ด๊ธฐ ํ•  ๋•Œ, X์ขŒํ‘œ 0๋ณด๋‹ค ์ž‘์€ ๊ณณ, ํ˜น์€ 1000๋ณด๋‹ค ํฐ ๊ณณ์— ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜, Y์ขŒํ‘œ์—์„œ ๋„˜์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์— ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์ฐพ์•„์„œ ์œ„ํ‚ค๋ฐฑ๊ณผ์—๋„ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค. ใ…‹ใ…‹ใ…‹ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์˜ค๋ฅ˜ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ (wikipedia.org) ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์˜ค๋ฅ˜ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ๊ฒฐํ•จ(Segmentation Fault)์€ ์ปดํ“จํ„ฐ ์†Œํ”„..

IPv4์—์„œ IPv6๋กœ ๋„˜์–ด๊ฐ€๊ธฐ

๋น„์ œ์ด์˜ ๋„คํŠธ์› ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€์ด๋“œ(Beej's Guide to Network Programming)์— 4๋ฒˆ์งธ์— IPv4์—์„œ IPv6๋กœ ๋„˜์–ด๊ฐ€๊ธฐ๊ฐ€ ์žˆ๋‹ค. 4. Jumping from IPv4 to IPv6 1. ๋จผ์ € getaddrinfo()๋ฅผ ์‚ฌ์šฉํ•ด์„œ struct sockaddr ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค, ์†์œผ๋กœ ๊ตฌ์กฐ์ฒด ์ฒด์›Œ๋„ฃ์ง€๋ง๊ณ . ์ด๊ฑด IP ๋ฒ„์ ผ-์•„๊ทธ๋…ธ์Šคํ‹ฑ(IP ๋ฒ„์ ผ์„ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ์ด๋ก ์ธ๊ฐ€?)์„ ์œ ์ง€์‹œ์ผœ์ฃผ๊ณ , ๊ทธ ๋‹ค์Œ ๋งŽ์€ ์ž‘์—…๋“ค์„ ์•ˆํ•ด๋„ ๋˜๊ฒŒ ํ•ด์ค˜. 2. IP๋ฒ„์ ผ์ด๋ž‘ ๊ด€๋ จ๋œ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ฑฐ ๊ฐ™์€ ์ „๋ถ€ ์ฐพ์•„์„œ ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๊ฐ€์ง€๊ณ  ๊ณ ์ณ. 3. AF_INET๋ฅผ AF_INET6๋กœ ๋ฐ”๊พผ๋‹ค. 4. PF_INET๋ฅผ PF_INET6๋กœ ๋ฐ”๊พผ๋‹ค. 5. INADDR_ANY assignments๋„ in6addr_any assignm..

๋”๋ธ”๋ฒ„ํผ๋“œ์›ํ˜•ํ VS ์›ํ˜•ํ

๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๋”๋ธ” ๋”ํผ๋“œ ์จํ˜๋Ÿฌ ํ์™€ ์ธํ„ฐ๋„ท์— ๋Œ์•„๋‹ค๋‹ˆ๋Š” ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผ ํ•ด์„œ ์†๋„ ๋น„๊ต. ํ…Œ์ŠคํŠธ ๋ฐฉ์‹ 1000๋ฐ”์ดํŠธ์˜ ํ๋ฅผ ์ƒ์„ฑํ•ด์„œ 1๋ฐ”์ดํŠธ์”ฉ ๋„ฃ๊ณ , (ํ์— ๋„ฃ์„ ๋ฐ”์ดํŠธ๋Š” i%256์œผ๋กœ ์–ธ์ œ๋‚˜ ํ…Œ์ŠคํŠธ ์†Œ์Šค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์—†๋„๋ก ์ฒ˜๋ฆฌ) 1๋ฐ”์ดํŠธ์”ฉ ๋บ€๋‹ค. ์ด๊ฑธ 1์–ต๋ฒˆ ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ -_ -; ๋˜‘๊ฐ™์•„. ๋”๋ธ” ๋ฒ„ํผ๋“œ ์„œํ˜๋ผ ํ - 11์ดˆ. ์ผ๋ฐ˜ ์„œํ˜๋ผ ํ - 11์ดˆ. ์™œ์ง€? ์›์ธ์„ ๋ถ„์„ํ•ด๋ณธ ๊ฒฐ๊ณผ... ๋”๋ธ” ๋ฒ„ํผ๋“œ ์„œํ˜๋ผ ํ๋Š” ํ๊ฐ€ ๋„˜์น  ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๋ฅผ ์•ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ๊ฑฐ์ž„.ใ…‹ ๋”ฐ๋ผ์„œ 1๋ฐ”์ดํŠธ์”ฉ ๋„ฃ๊ณ  ๋นผ์„œ๋Š” ๊ทธ๋ƒฅ ์›ํ˜•ํ์™€ ๋™์ผํ•œ ์†๋„๊ฐ€ ๋‚˜์˜ด. ใ…Žใ…Žใ…Ž... ์‚ฝ์งˆ ํ…Œ์ŠคํŠธ ์˜€๊ตฌ๋‚˜

Double Buffered Circular Queue๋กœ ํŒจํ‚ท ์ฃผ๊ณ  ๋ฐ›๊ธฐ 2

Double Buffered Circular Queue๋ฅผ ์ด์šฉํ•ด์„œ ํŒจํ‚ท ์ฃผ๊ณ  ๋ฐ›๊ธฐ๋ฅผ ๊ณต๋ถ€ํ–ˆ๋‹ค. ๊ณ ๋ฏผํ•˜๊ณ  ํ…ŒํŠธ๋ฆฌ์Šคํ•˜๊ณ , ๋†€๊ณ  ๋ฐฅ๋จน๊ณ  TV๋ณด๊ณ  ์ฑ…๋ณด๊ณ , ๋ฐ–์— ๋‚˜๊ฐ”๋‹ค๊ฐ€, ์Œ๋ฃŒ์ˆ˜ ํ•˜๋‚˜ ๋นจ๊ณ ... ๊ทธ๋ ‡๊ฒŒ 3์ผ์„ ๋†€๋‹ค๊ฐ€ ๋จธ๋ฆฌ์— ๋ฒˆ๊ฐœ ๋งž์•„์„œ 1์‹œ๊ฐ„ ๋™์•ˆ ๋ฌดํ•œ๋„์ „ ๋ณด๋ฉด์„œ ์ฝ”๋”ฉํ–ˆ๋‹ค. ์˜์™ธ๋กœ ๊ฐ„๋‹จํžˆ ๋ฌธ์ œํ•ด๊ฒฐ >_= Q.GetSize() ){ // ๊ฐ€์ ธ์˜ฌ ํŒจํ‚ท ํฌ๊ธฐ๊ฐ€ ํ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ํฌ๋ฉด Q.DeQ( (char*)&pkt, Q.GetDeqSize() ); // ๋””ํํ•˜๊ณ  } else { // ํํฌ๊ธฐ๊ฐ€ ๊ฐ€์ ธ์˜ฌ ํŒจํ‚ท ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์œผ๋ฉด recvMsgSize = recv( clntSocket, Q.GetEnqPos(), Q.GetDeqSize() - Q.GetSize(), 0); Q.Enq( recvMsgSize ); // ๋ถ€์กฑํ•œ ๋งŒํผ..

Double Buffered Circular Queue๋กœ ํŒจํ‚ท ์ฃผ๊ณ  ๋ฐ›๊ธฐ 1

์™€...๋‚˜... ๊ฑฐ์˜ 8์‹œ๊ฐ„ ๋ถ™์žก๊ณ  ๊ฒจ์šฐ ๊ฒจ์šฐ ๋Œ€์ถฉ ๋Œ์•„๊ฐ€๋Š” ์ •๋„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ๋งŽ๋‹ค. ์ผ๋‹จ, ์ฒซ ๋ฒˆ ์งธ ๋ฌธ์ œ ๋ถ€ํ„ฐ..ใ… .ใ…  ์„œํ˜๋ผ ํ์˜ ๋‚จ์€ ๊ณต๊ฐ„์ด ๋ฐ›์„ ํŒจํ‚ท์˜ ์ตœ๋Œ€ ํฌ๊ธฐ ๋ณด๋‹ค ์ž‘์„ ๋•Œ... ์ด๊ฑฐ ๋”๋ธ” ๋ฒ„ํผ๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๊ฐ€ 1๋ฒˆ๋งŒ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ๋ฐ˜๋ฉด ๋ฉ”๋ชฐ ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ€๋”... ์•ž/๋’ค๊ฐ€ ์งค๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ํ์˜ ๋‚จ์€ ๊ณต๊ฐ„์ด ํŒจํ‚ท์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ ์•ˆ๋  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฌธ์ œ ์ž์ฒด๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก cํ ์ตœ๋Œ€ํฌ๊ธฐ๋Š” 200. ํŒจํ‚ท ์ตœ๋Œ€ํฌ๊ธฐ๋Š” 128๋กœ ๋˜์–ด ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ ์•ž์ชฝ์œผ๋กœ ๋•ก๊ฒจ์ฃผ์–ด์•ผ ํ•˜์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด ์†๋„์˜ ์ด์ ์ด ์‚ฌ๋ผ์ง„๋‹ค. ๊ทธ๋ž˜์„œ ์ž„๊ธฐ์‘๋ณ€์œผ๋กœ ํ ํด๋ฆฌ์–ด ํ•ด์ค„๋•Œ ํ—ค๋“œ/ํ…Œ์ผ ์ธ๋ฑ์Šค๋ฅผ 0/0์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์—ˆ๋‹ค. ์–ด์ฐจํ”ผ ์•ž๋ถ€๋ถ„ ๋ชป ์“ฐ๋Š”๊ฑฐ๋‹ˆ๊นŒ. ์š”๊ฑด ์งˆ๋ฌธ ์‚ฌํ•ญ์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ณ  ํ์— ๋ฐ›์€ ..

๋ฐ˜์‘ํ˜•