C言語 Advent Calendar 2016 16日目です。 clang 3.1, gcc 4.9以降にメモリ関連の不正な操作を検出するAddressSanitizerという仕組みが入りました。 二重freeやバッファオーバーフローなどCプログラミングにありがちなメモリ操作を検出できるので、ソフトウェアの品質向上だけでなく、セキュリティ対策としても有用です。 以下に思いつく限りのメモリの不正操作を実際に試してみました。 (1) スタックオーバーフロー(1.1) 正方向の書き込み [stack_overwrite.c] (https://github.com/hamano/santest/blob/master/tests/stack_overwrite.c)(1.2) 正方向の参照 [stack_overread.c] (https://github.com/hamano/santes
In 1966 I became a PhD student of A. van Wijngaarden at the Computational Department of the Mathematical Centre in Amsterdam. Whatever my topic was going to be, it was clear that my job would be to program. There used to be one computer, the Electrologica X1. Shortly before my arrival a much faster and bigger successor was added: the X8 from the same manufacturer. The language was Algol 60. Most o
セマフォ セマフォは、E.W. ダイクストラ (Dijkstra) が 1960 年代の終わりごろに考案したプログラミング手法です。ダイクストラのセマフォモデルは、鉄道線路の運行をモデル化したものです。一度に一本の列車しか走れない単線の鉄道線路を思い浮かべてください。 この鉄道線路を保護するのがセマフォです。列車は単線区間に入るとき、セマフォの状態が進行許可状態になるのを待たなければなりません。列車が単線区間に入るとセマフォの状態は、他の列車が単線区間に入るのを禁止する状態に変化します。単線区間から出る列車は、セマフォの状態を進行許可状態に戻して他の列車が単線区間に入ることができるようにしなければなりません。 コンピュータ内のセマフォは、単一の整数で表現されます。スレッドは進行が許可されるのを待ち、その後進行したことを知らせるためにセマフォに対して P 操作を実行します。 この操作をもう少
@nishio: あ、そうか、10年前からあったけど10年間の間に勢力を拡大したケースがあるからあんまり厳しく切らない方がいいのか(TypeScriptの登場が2012年、Rustの登場が2010年だった)
先日、次のような Tweet を見かけました TIL I discovered that TensorFlow.js uses an interesting trick to sniff your CPU architecture in WebAssembly. pic.twitter.com/LVyywIM48I — Robert Knight (@robknight_) January 4, 2023 面白かったので、なぜこうなるのかの解説と、ついでにこのテクニックを使った JIT 検知方法などについて紹介します。 JavaScript における低レイヤーの扱い JavaScript においては、挙動が比較的しっかりと仕様に定められているために、環境による振る舞いの違いはあまり発生しません。しかし、低レイヤーに降りるほど振る舞いは実装依存になり、環境差が発生する余地が出てきます。 一番
goto文+if文=while文、ただし、オブジェクトでgoto文は有害 用語について 以下、「オブジェクト (対象、object)」、「クラス (class)」、「サブクラス (部分クラス、subclass)」、「インスタンス (実例、instance)」、「this」、「new」は1972年版の構造化プログラミングの定義に従う。かっこ内の訳は75年の日本語版*1訳者の武市正人氏による。 準備:goto文とif文とwhile文 goto文について goto文はジャンプ文であり、指定した名前のラベル文にジャンプすることができる。例えば、以下のような擬似コードでは、Lのラベルが付いた行へ計算が移動する。...の部分はコードが実行されない。 goto L; ... L: a = x + 1; if文とwhile文について 詳しい説明を省いて、疑似コードだけを書いていく。if文は条件分岐であり、
LR(1)パーサジェネレータを自作して構文解析をする 第1回:かんたん構文解析入門 2016-12-22 03:03:09 Category: dev Tag: parsing parser generator parser lexer この記事はKobe University Advent Calendar 2016の21日の記事です。また遅刻か。 なお私は当該大学の学部2年(2016年12月現在)です。 構文解析ができるプログラマはちょっとかっこいいですよね。 「構文解析?ああ、できますよ」とか言って自分のスキルを自慢できそうな印象があります。 (ほぼ)フルスクラッチでTypeScriptによるLR(1)パーサジェネレータを実装した(ついでにLALR(1)パーサも作れる)ので、これを完成させるまでの流れを紹介していこうと思います。 今回は構文解析自体の入門編となります。 自作したパーサ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く