Master Canary Forging: æ°ããã¹ã¿ãã¯ã«ããªã¢åé¿ææ³ã®ææ¡ by å°æ± æ ç - CODE BLUE 2015
Master Canary Forging: æ°ããã¹ã¿ãã¯ã«ããªã¢åé¿ææ³ã®ææ¡ by å°æ± æ ç - CODE BLUE 2015
ã©ãã®ä¼ç¤¾ãããã§ããããã¯ã¼ãã¤ã³ãã®è³æä½ãã®ã徿ãªã¨ã³ã¸ãã¢ã¯ããããããã®ã§ãããå®éã«ããã°ã©ã ã§ã³ã¼ããä½ãã®ã徿ãªã¨ã³ã¸ãã¢ã¯ãã¾ãããªãã¦ãæ¬å½ã«å°ãã¾ãã
Couchbaseã®ä½è Damien Katzæ°ã¯ï¼Cè¨èªã¯ããã¯ã¨ã³ãããã°ã©ãã³ã°ã«ããã¦ç¾å¨ã§ãåªããè¨èªã§ããï¼ã¨ããæè¦ãæã£ã¦ããããããä»ã®éçºè ã¯ï¼Cè¨èªã¯ãã¾ãã«ãæ¬ é¥ãå¤ãã¨ãã¦C++ãJavaãæ¯æãããã®ï¼ãããã¯ãããã好ã¾ãªãã¨ãããã®ãªã©ãã¾ãã¾ã ã CouchDB ã®éçºè ã§ããDamien Katzæ°ã¯ï¼The Unreasonable Effectiveness of C ã¨é¡ããå æ¥ã®ããã°è¨äºã«ããã¦ï¼Cè¨èªãããã¯ã¨ã³ãã®ããã®åªããè¨èªã§ããã¨æè¨ãããæ°ã¯C++ãJavaï¼ããã«ã¯ErlangãRubyã®ãããªããç¾ä»£çãªè¨èªãããï¼ä»å¾ãCè¨èªãæ¯æãã¦ããã¤ããã ã¨ããããã ãåç´ã«ï¼Cè¨èªãä»ã®ã©ããããåªããè¨èªã ã¨è¨ã£ã¦ãã訳ã§ã¯ãªãã"è¨èªèªä½ã®ããã©ã¼ãã³ã¹ã¨ä¿¡é ¼æ§ãéè¦ãããå ´é¢ã«ããã¦ã¯ï¼Cè¨èªã«æ¯é¡ããè¨èªã¯çç¡ã§ãã"ï¼å¥
ãã§ãã¯1. ãªãã§ãããã§ããããã¼ãã¡ã¤ã«ã§importãã¦ãã¾ãããï¼ ä¾ãã°ããããªã³ã¼ããæ¸ãã¦ãã¾ãããï¼ #import "OtherLibrary1.h" #import "OtherLibrary2.h" @interface Library @property (strong) OtherLibrary1* otherLibrary1; @property (strong) OtherLibrary2* otherLibrary2; @property (assign) BOOL flag; @end Libraryã¨ããã¯ã©ã¹ãä½ããããã§OtherLibrary1ã¨OtherLibrary2ãpublicãªpropertyã¨ããå ´åãå½ç¶ã®ãã¨ãOtherLibrary1ã¨OtherLibrary2ã®importãå¿ è¦ãªããã§ããããªã«ãèããã«ãããã¼ãã¡ã¤ã«ã§O
æ¥æ¬èªçã³ã¼ãã£ã³ã°ã¹ã¿ã³ãã¼ãã®ç¿»è¨³ã«ã¤ã㦠00. ã¯ããã« 01. ããªããã»ããµ (PRE) 02. 宣è¨ã¨åæå (DCL) 03. å¼ (EXP) 04. æ´æ° (INT) 05. æµ®åå°æ°ç¹ (FLP) 06. é å (ARR) 07. æåã¨æåå (STR) 08. ã¡ã¢ãªç®¡ç (MEM) 09. å ¥åºå (FIO) 10. ç°å¢ (ENV) 11. ã·ã°ãã« (SIG) 12. ã¨ã©ã¼å¦ç (ERR) 13. Application Programming Interface (API) 14. ä¸¦è¡æ§ (CON) 49. éå (MSC) 50. POSIX (POS) AA. åèæ å ± BB. Definitions CC. æªå®ç¾©ã®åä½ DD. æªè¦å®ã®åä½ XX. ãåãåãã Top 㸠00ã¯ããã« ãã®ãã¼ã¸ã§ã¯ãJPCERTã³ã¼ãã£ãã¼ã·ã§ã³ã»ã³ã¿ã¼ãç¿»
Ù¾Ø§Ø³ÙØ± اÙÙØ§ÛÙ Ù¾Ø§Ø³ÙØ± اÙÙØ§ÛÙ Ù¾Ø§Ø³ÙØ± اÙÙØ§ÛÙ,Ù¾Ø§Ø³ÙØ± اÙÙØ§Û٠شرطÛ,Ø¨Ø§Ø²Û Ø§ÙÙØ§ÛÙ Ù¾Ø§Ø³ÙØ± ØÚ©Ù ,Ø³Ø§ÛØª Ù¾Ø§Ø³ÙØ± ØÚ©Ù Ø¢ÙÙØ§ÛÙ,Ù¾Ø§Ø³ÙØ± Ø¢ÙÙØ§ÛÙ Ø¨Ø±Ø§Û Ú©Ø§Ù Ù¾ÛÙØªØ±,Ù¾Ø§Ø³ÙØ± ØÚ©Ù Ø¢ÙÙØ§Û٠شرطÛ,Ø³Ø§ÛØª Ø¨Ø§Ø²Û Ù¾Ø§Ø³ÙØ± Ø¢ÙÙØ§ÛÙ,Ø¨Ø§Ø²Û Ø¢ÙÙØ§ÛÙ Ù¾Ø§Ø³ÙØ± 4 برگ,داÙÙÙØ¯ ٠ستÙÛÙ Ù¾Ø§Ø³ÙØ± اÙÙØ§ÛÙâ¦
Windowsç°å¢ã§ã³ã¼ããæ¸ãã¦ããããªããã¨ãã夿°ã®å¤ã4277075694ã¨ãããè¬ã®å¤ã«ãªã£ã¦ããã®ãçºè¦ããªãã ããããã¯ï¼ã¨èª¿ã¹ã¦ã¿ãããã16é²è¡¨è¨ããã¨0xFEEEFEEEã§ãHeapFree()ãå¼ã°ãããã¨ã®é åãããã§åãããããã ãããªã 0xBAADF00D : 3131961357 : HeapAllocããé å 0xFDFDFDFD : 4261281277 : mallocããé åã®åå¾2ãã¤ã 0xCDCDCDCD : 3452816845 : mallocããé å 0xDDDDDDDD : 3722304989 : freeããé å 0xFEEEFEEE : 4277075694 : HeapFreeããé å詳ãããã¨ã¯ããã«ãããããã表ããã£ãã®ã§ãããè¦ãã¨ããã¨æã: Win32 Debug CRT Heap Internals
UnixéçºãVCã§ãããã½ã¼ã¹ã«ã¯VCã®è·¡ãæ®ããªãã£ã¦ç¡è¶ãªè¦æ±ã ãã©ãããããªãã Unixã¡ã¤ã³ã®ã½ã¼ã¹ãVCã§ã³ã³ãã¤ã«ããéã«åé¡ã«ãªããã¨ã®ä¸ã¤ãunistd.hã gethostnameã¨ãgetpidã使ãããå ´åã«å¿ è¦ã«ãªã£ã¦ããã ã¨ããããåãããã«é©å½ã«ããããä½ã£ã¦ã¿ãã //<unistd.h>ãWindowsã§ä½¿ç¨ããããã®å®ç¾© #ifndef _UNISTD_H_ #define _UNISTD_H_ #ifdef _WIN32 #pragma once #include <io.h> /* access chmod chsize close creat dup dup2 eof filelength isatty locking lseek mktemp open read setmode sopen tell umask unlink write */
ãã¼ã¿æ§é ã¨ã¢ã«ã´ãªãºã åå ¥é ã¯ããã« ã»ä¸¦{è¡|å} & {Lock|Wait}Free ã»ABA & ABA' ã»volatile ï¼ ã¡ã¢ãªããªã¢ ã»ããªããã£ã ã»CAS ã»MCAS ã»STM ã»ã¡ã¢ãªç®¡ç:free & GC ã»Toots List & Skiplist [åæ¹åList] ã»ãªã¹ã ã»ç´°ç²åº¦ãªã¹ã ã»Lazyãªã¹ã ã»Lock-Freeãªã¹ã ã»Lock-Freeãªã¹ã2 [SkipList] ã»ã¹ããããªã¹ã ã»Lazyã¹ããããªã¹ã ã»Lock-freeã¹ããããªã¹ã [åæ¹åList] Queue & PriorityQueue [UnBounded Queue] ã»Queue ã»CAS based Lock-Free Queue ã»LL/SC based Lock-Free Queue [Unbounded Priority Queue] ã»Heap
ã¢ãªã¨ã«ã§ã¯ãããã°ã©ãã¨ãã¦å¿åãã¦ãã人ã«åºãããã®è¨åãç¨æãã¦ãã¾ããç¾å¨ãCçã¨Javaçãããã¾ãã Cçã®ä½æã¯å¤ãã¦ãæ£ç´ããã廿£ãã¦ãããããªã¨æããªãã®ã§ããªãã§ãããJavaã¯æªçµé¨ã§C/C++ã®çµé¨ã¯ããã¾ããã¨ãã人ã¯ãã¾ããããããã人ã¯ãããããªãã¡ãã£ã¦Javaããã°ã©ãããã¯ç¸å¯¾çã«è½åãé«ãå¾åã«ããã®ã§Cçãæ®ãã¦ãã¾ãã æè¿ãç«ã¦ç¶ãã«ãä»ã¯å®ç§ãªåçãªã®ã«ãã¤ã³ã¿ã®ãã¤ã³ã¿ã絡ãè¨åã ãã¯ééããã¨ããåçãåãåãã¾ãããçµæå¼æ°(弿°ã§å¤ãè¿ã颿°ãCã§ã¯å¿ è¦æª)ã§ãè¿ãå¤ããã¤ã³ã¿å¤ãªã®ã§ã弿°ã®åããã¤ã³ã¿ã®ãã¤ã³ã¿ã«ããå¿ è¦ãããè¨åã§ããä»ã®è¨åã§ããã¤ã³ã¿ãçè§£ãã¦ããããã«è¦ãã¾ããããããããã¤ã³ã¿ã®ãã¤ã³ã¿ãåãããªãã¨ãããã¨ã¯ããã¤ã³ã¿ããã¡ãã¨åãã£ã¦ããªãã¨å¤æãããããã¾ããã æãªãä¸çºã§ãã¡åºããã¦ããã®ã§ãã
State of the art C compiler optimization tricks, Felix von Leitner, Linux Kongress 2009. æè¿ã®ï¼£ã³ã³ãã¤ã©ã¼ã®æé©åè½åã«ã¤ãã¦ã¾ã¨ãããã¬ã¼ã³ãã¼ã·ã§ã³ã宿°ã®æ±ããã¤ã³ã©ã¤ã³å±éãªã©ã®åºæ¬çãªé ç®ããå§ã¾ã£ã¦ï¼åå²ã®åé¤ããã¯ãã«åï¼ SIMD åãªã©ï¼ææ°ã®ã³ã³ãã¤ã©ã¼ã«æè¼ããã¦ããæ§ã ãªæ©è½ã«ã¤ãã¦èª¿ã¹ã¦ããã ãã®æã®åå²ã®åé¤ã¯ã»ã¨ãã©ã®ã³ã³ãã¤ã©ã¼ã§æå¹ãããã ãã¯ãã«åã«ã¤ãã¦ã¯ gcc ãã ãã¶é å¼µã£ã¦ããå°è±¡ã ãgcc ã¯å ¨ãã©ãããã©ã¼ã ã«ããã¦ãããªã³ã¼ããã¯ããã°ã©ãã¼ããè³¢ãã ãããã®æé©åãå®éã®ã³ã¼ãã§ã©ã®ããã«æ©è½ãããæ°ã«ãªã£ã¦éã¢ã»ã³ããªã³ã¼ããè¦ãã¦ã¿ã人ãå°ãªããªãã¨æãããã©ï¼ããã代ããã«ãã£ã¦ãããæãã ããã®æã®è©±é¡ã«èå³ããã人ãªãã°ï¼ç®ãé
ååº: C MAGAZINE 1996å¹´8æå· Updated: 1996-09-21 [â1ã¤å] [â1ã¤å¾] [â質åä¸è¦§] [âè¨äºä¸è¦§] [ãã¼ã ãã¼ã¸] ä»åã¯ãããç¥ããã¦ãããã©ã¡ãã£ã¨åããã«ããã¢ã«ã´ãªãºã ããããã¯ã ä»ã¾ã§ã®é£è¼ã§åºã¦ããããªããã¼ãªã³ã¼ãã«ã¤ãã¦ãã©ã®ãããªåçã§åä½ã ãã®ããç´¹ä»ãã¦ã¿ããã¨æãã¾ãããã ããä¸è¬è«ã¨ãã¦ãåã£ãã³ã¼ããã ãåãããããã³ã¼ãã®æ¹ã価å¤ãããå ´åãå¤ãã¨ãããã¨ãé ã«å ¥ãã¦ãã ã¦ãã ããã åã£ãã¢ã«ã´ãªãºã ï¼±ããææ¥ã®æ±ãæ¹ã Comp.lang.c FAQ listãè¦ãã¨ãææ¥ãæ±ãã颿°ã¨ãã¦æ¬¡ã®ãã®ãç´¹ä»ãã ã¦ããã dayofweek(y, m, d) /* 0 = Sunday */ int y, m, d; /* 1 <= m <= 12, y > 1752 or so */ { stat
ãããCé¢ä¿ãªãã®ã§ã¯ - ããã°ã©ãã³ã°è¨èªãä½ãæ¥è¨ ããCé¢ä¿ãªããããã¨ããã®ã¯ããã(K)ããããid:minekoaããã«ãè¨ããããã¨ã§ããã å®è¡æã®ãã§ãã¯ããªãããã£ã¦ãé åã®ãªã¼ãã¼ã©ã³ã䏿£ãªãã£ã¹ããéæ¾ãããã¡ã¢ãªãåç §ãããã¨ãã£ãçç±ã§ã®ãã°ãçºçããåå 追åãé常ã«å°é£ã GCããªãã ãããCé¢ä¿ãªãã®ã§ã¯ - ããã°ã©ãã³ã°è¨èªãä½ãæ¥è¨ ãã¼ããããã¯å°ã観ç¹ãéãããªã¨æãã¾ãã C++ã§ããé åã¯ãªã¼ãã¼ã©ã³ããããCã¹ã¿ã¤ã«ãã£ã¹ãã§è¦ãããã è§£æ¾ãããã¡ã¢ãªãåç §ãããªãã¦ãã¨ã¯æ¥å¸¸è¶é£¯äºã«èµ·ããããã§ã ãããã解決ããææ®µã¨ãã¦ãC++ã§ã¯ã å¯å¤é·é åã¨ãã¦std::vectorãå©ç¨ãã åºå®é·é åã¨ãã¦boost::arrayãå©ç¨ãã ãã£ã¹ãã¯static_castã ãã使ãï¼reinterpret_castã¯Cã®æ§é ä½ãèªã¿
ubuntu% uname -a Linux ubuntu 2.6.12-10-386 #1 Sat Mar 11 16:13:17 UTC 2006 i686 GNU/Linux ubuntu% valgrind --version valgrind-3.0.1 (0) ç®æ¬¡ Valgrindã«å«ã¾ãããã¼ã« Memcheck: ã¡ã¢ãªã¨ã©ã¼ãæ¤åºãã(default) Cachegrind: ãã£ãã·ã¥ãã¹ãæ¤åºãã Massif: ãã¼ããããã¡ã¤ã©ã使ã ã¾ã¨ã valgrindã®ä½¿ãæ¹ã¨ã¨ã©ã¼ã¡ãã»ã¼ã¸ãæ´çãã¦ã¿ãããvalgrind --leak-check=full commandãã¨ããã³ãã³ãã©ã¤ã³ãããç¨ãããããã«ããã¡ã¢ãªå¨ãã®ãã°ãæ¤åºåºæ¥ãã --tool=cachegrindã§ã¯ããã°ã©ã å®è¡æã®ãã£ãã·ã¥ãã¹çãæ¸¬å®ããäºãåºæ¥ããcg_annotateã
ãã®ã¸ãã§æ¸ãããã©ããªã£ã¦ããèªä¿¡ãç¡ããã¨ããã£ããã¨ãããã objdump ãã¡ããã¨ãã話â¦ã¨ãè¨ãã¨ãã¢ã»ã³ããªã¯â¦ãã¿ãããªé°å²æ°ã«ãªããã¨ãå¤ãæ°ããããã§ãããæ£ç´ã¢ã»ã³ããªãªããèªããªãã¦ãã³ã¼ããã©ããªã£ã¦ãããããã¯ããããããã¨ããå½ããåã®è©±ã #include <stdio.h> struct S { explicit S(int x) : x_(x) {} int x() const { return x_; } int x_; }; int main() { S s(3); printf("%d\n", s.x()); } ã¨ãããããããªã³ã¼ããã¤ã³ã©ã¤ã³åããããç¥ãããã¨ãããã¨ãããã -g ã¤ãã§ã³ã³ãã¤ã«ã㦠objdump ã % g++ -g inline.cc -o inline % objdump -S -C inline | lvã³ã
以åãã®ãµã¤ãã¨ããã°ã«ï¼ä½åº¦ãã¢ã©ã¤ã³ã¡ã³ãã«é¢ããè¨äºãæ¸ãã¾ãã (ãµã¤ãå é¢é£ãã¼ã¸åç §)ï¼ ãã®ããããã¢ã©ã¤ã³ã¡ã³ããã§æ¤ç´¢ãã¦æ¥ã¦ããã人ãå¤ãã®ã§ï¼ éå»ã®è¨äºã«å çä¿®æ£ãã¦ãã®ãã¼ã¸ãæ°ãã«ä½æãã¾ããï¼ å çããç¹ã¯æ¬¡ã®ã¨ããã§ãï¼ ã¢ã©ã¤ã³ã¡ã³ãã¨ã¡ã¢ãªã¢ã¯ã»ã¹åæ°ã®é¢ä¿ãããããããããããï¼ (ã»ãã®å°ã) å³ãå°å ¥ãã¾ããï¼ ããã¼ã¿ãã¢ã©ã¤ã³ããã¦ããªãã¨ã¡ã¢ãªã¢ã¯ã»ã¹åæ°ãå¢ããã ã¨è¨èã§èª¬æãã¦ãããµã¤ãã¯å¤ãã®ã§ããï¼ å³ã§ç¤ºãã¦ããã¨ããã¯ã¾ã è¦ããã¨ããã¾ããï¼ ã¢ã©ã¤ã³ããã¦ããªãã¢ãã¬ã¹ã«ãã¼ã¿ãæ¸ãè¾¼ãå ´åï¼ èªã¿åºãã®å ´å以ä¸ã«ã¡ã¢ãªã¢ã¯ã»ã¹åæ°ããããå¯è½æ§ããããã¨ã追è¨ãã¾ããï¼ ä»¥åã¯ãè¤åãã¼ã¿å (é åï¼æ§é ä½ï¼å ±ç¨ä½) ã®ã¢ã©ã¤ã³ã¡ã³ããã¯ã»ã¨ãã©èªæã®ãã¨ã ã¨æã£ã¦ããã®ã§è»½ãæµãã¦ãã¾ãããï¼ æå¤ãªãã¨ã«ããã解説ãã¦ã
Cã»C++ã»Javaã»Perl ãªã©ã®ããã°ã©ãã³ã°è¨èªã§ã¯ãæ¡ä»¶æ¼ç®åã¨ãã¦ä¸é æ¼ç®å?:ãç¨æããã¦ãããæ¡ä»¶æ¼ç®åã®æ¸ãæ¹ã¨ãã¦ã以ä¸ã®ãããªèª¬æãããããã¨ãå¤ãã condition ? true-expression : false-expression ãã®èª¬æã¯ã以ä¸ã®ããã°ã©ã ã¨åãç¨åº¦ãééã£ã¦ããã #include <stdio.h> main( ){printf ("hel" "lo, world\n" );} æ¡ä»¶æ¼ç®åã¯ãæ£ããã¯ä»¥ä¸ã®ããã«æ¸ãã condition ? true-expression : false-expression ä½¿ãæ¹ã®ä¾ã示ãã compare = obj1 == null ? obj2 == null ? 0 : -1 : obj2 == null ? 1 : obj1.toString().compareTo(obj2.to
ãWhy I hate Cãã¨ããè¨äºãããã¾ããã ç§ã¯å人çã«ã¯Cè¨èªã好ãã§ãããCè¨èªãå«ã ã¨ããè¦ç¹ãé¢ç½ãã®ã§è¦ç´ãã¦ã¿ã¾ããã ããªãåã£ã¦ããã®ã§è©³ç´°ã¯åæãã覧ä¸ããã Cè¨èªã¯çµã¿è¾¼ã¿ã«ä½¿ãã«ã¯è¯ãè¨èªã§ããããã®ä»ã®99.9ï¼ ã®ã¢ããªã±ã¼ã·ã§ã³ãä½ãã«ã¯æé©ã¨ã¯è¨ãã¾ããã ç¾å¨ãã¢ã»ã³ãã©ãä¸è¬çãªã¢ããªã±ã¼ã·ã§ã³ãæ¸ãããã®è¯ãè§£ã§ã¯ç¡ããã¨ã¯èªæã§ãã ããã§ã¯ããã¯ãCè¨èªãããã§ã¯ç¡ãçç±ãè¿°ã¹ããã¨æãã¾ãã Cè¨èªã®æã大ããªåé¡ã¯ããã°ã©ããééããç¯ããããäºã§ãã ç§ãè¯ãééãã¾ãã ã©ããªããã°ã©ãã§ãã£ã¦ãæ°åè¡ã®ã³ã¼ããæ¸ãã¦ãã°ãä¸ã¤ãç¡ãã¨ãããã¨ã¯ããã¾ããã ã³ã¼ãéãå°ãªãã¨ãããã¨ã¯ééãã®æ°ãå°ãªãã¨ãããã¨ã«ãªãã¾ãã Cè¨èªã¯ãè¨èªã®ãã¶ã¤ã³ä¸ãããå¤ãã®ã³ã¼ããæ¸ãäºãè¦æ±ãã¾ãã ã¾ããæ°ããéçºãããããã°ã©ãã³ã°è¨
æ®éã®ãã¤ãã®ä¸ãè¡ã: C ã§ããã¯ãã¬ã¼ã¹è¡¨ç¤º æ®éã®ãã¤ãã®ä¸ãè¡ãã®ç¬¬2åã¨ãã¦ãä»å㯠glibc ã®é¢æ°ã使ã£ã¦ C ã§ããã¯ãã¬ã¼ã¹ (ã¹ã¿ãã¯ãã¬ã¼ã¹) ã®è¡¨ç¤ºãè¡ã£ã¦ã¿ã¾ãã ããã¯ãã¬ã¼ã¹ã¨ã¯ ããã¯ãã¬ã¼ã¹ã¨ã¯ã大ãã£ã±ã«è¨ãã¨ãç¾å¨ã®é¢æ°ã«è³ãã¾ã§ã®éçã§ãããã¨ãã°ã次㮠Ruby ããã°ã©ã ãå®è¡ããã¨ã 1 / 0 ã®è¡ã§ä¾å¤ãçºçãã¦ãããã¯ãã¬ã¼ã¹ã®è¡¨ç¤ºã¨ã¨ãã«ããã°ã©ã ã¯ç°å¸¸çµäºãã¾ãã def foo 1 / 0 end def main foo end main ãã®ä¾ã§ã¯ main ãã foo ãå¼ã³ foo ã®ä¸ã® 1 / 0 ã®é¨åã§ä¾å¤ãçºçãã¦ãã¾ãã % ruby divide-by-zero.rb divide-by-zero.rb:2:in `/': divided by 0 (ZeroDivisionError) from div
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}