Programmer's Note

コード読み書きの備忘録。

Joel on Software読み始める

最近 Joel on Software を読み始めた。 以前、書店でぱらぱら見たときは面白そうに見えなかったが、Kindleで原書のお試し版を読んでみると、楽しいではないか。とても平易な英語で読みやすい。 ということで、原書のペーパーバック古本をAmazonで購入。すこ…

awk / yacc / lex

いかん、忙しさにかまけて更新が滞っている・・・。 さて、コンスタントに読んでいる「The UNIX Programming Environment」は、第6、7章が終わり。8章に入っている。 yaccで簡易計算言語の作成だぜ。さすがはKernighanさんとPikeさん、yaccがこんな風に楽…

The UNX Programming Environment 5章、6章

The UNIX Programming Environmentも、第5章を過ぎて、第6章の「PROGRAMMING WITH STANDARD IO」の終わりに差しかかってきた。 UNIX精神というはつまり、過去の資産を最大限に活用すること、多様性を賞賛すること、なのだなと改めて読んでいて思った。この…

簡単なcalculatorコマンドを作ってみる(Ruby)

たまーにさくっと計算機欲しいときがあるけど、UNIX標準のbcってクセがありすぎて辛い。 探してもシンプルなcalculatorコマンドってないもんだなと、、、。 やりたいことは、単純で $ calc 1024*24-54 24522 0x5fca 057712 結果を、10進、16進、8進て表…

エスケープシーケンスでカーソル移動を使ってみる(Ruby)

ちょい前にエスケープシーケンスで文字装飾を試した。(エスケープシーケンスの文字装飾を試す - Programmer's Dialy) さて、今回はカーソル移動を試してみたい。 (ちょっと文字列処理が入るのでRubyで) Kernighan先生の「Software Tools」の中で、フィル…

Rubyのevalと正規表現で簡単にデータを取り込んでみる

Rubyのeval()を使ってみる。これを使えば、 ファイルから読み込んだ文字列データを、そのままRuby処理系に渡して解釈できる。 今回は、例えば適当に定義したデータ形式のファイルから、 hashテーブルとして読み込むところをやってみたい。 データは例えば下…

vimで単語の置換を一発でやる関数を作ってみる

vim

vimを使い始めて2ヶ月ちょっとか。感覚的には半年くらい使ってる気がするな。 もはや日々の仕事に欠かせないツールになっている。 プラグインの方もも欲しいと思ってたものをいくつか入れて、IDE相当なリッチな環境になってきた。 プラグインも各々使いこな…

shプログラミング覚え書き

shって使いこなせばかなり便利だな。プログラミング言語としても面白い。(※注:Bourne Shell系のshell) 「The UNIX Programming Environment」の第5章の"SHELL PROGRAMMING"を読んでいる途中だが、 いろいろおさらいしときたいTIPSがある。 とありえず手元…

Software Constructとベナー看護論

The Pragmatic Bookshelfのサイトを歩いてたら… 「達人プログラマー」のAndy HuntとDave Tomasが、IEEEに連載してたコラムの一覧が出てきた。IEEEにコラムを書いていたのか、知らんかった。 参照:The Pragmatic Bookshelf | IEEE Articles IEEEて名前だけ知…

とりあえず、目に付いた読みたい記事、本のリスト。

なんとなく面白そうなサイト: Bob Morris 書評とか載ってるっぽい Web記事: http://thinkfaster.co/2015/02/so-you-want-to-be-a-developer-rockstar The Programmer’s Price - The New Yorker 本: The Pragmatic Bookshelf | The Healthy Programmer The…

Dwarf Fortressちょっとやってみる&フォントを変えてみる

ちと電子回路系の英語本が読みたいと思って、ネットで推薦されてたGetting Start in Electronicsを探してたら、 (参照:Getting Start in Electronics) たまたまドット絵の表紙が目についた。→ Getting Started With Dwarf Fortress ぐぐると、なんだこれ…

Zork Iをプレイしてみる

なんとなく英語のテキストアドベンチャーをプレイしたくなった。 文字だけのゲームは読書の延長線上で、なんとなく面白そうだ。 テキストアドベンチャーって、いままでまったくプレイしたことはない。 コンソール機とかにも出ているが、なんか単にいくか示さ…

エスケープシーケンスの文字装飾を試す

エスケープシーケンスを試してみる。 カーソル移動も可能だが、とりあえず文字表示の装飾機能を試す。 文字装飾エスケープシーケンスは、C言語だとprintfで\x1b[制御コードmを出力すればいい。 制御コードは1〜107まであるらしい。0はリセット。 (参照:ANS…

bundleプログラム改

'The Unix Programming Environment'の第3章の「USING THE SHELL」で bundle というツールが紹介されている。 これは以下のような小さなshellスクリプトのプログラムだ。 (作ったのはAlan Hewett, James Gosling.) #bundle: group files into distributio…

Rubyでバッファリングなしのキー入力を試す

Rubyでバッファリングなしのキー入力読み込みを試す。 普通の標準入力の getc を使った場合は、 入力された文字はターミナルに出力されつつ、バッファリングされて、 Enterが押されて初めて文字列がプログラムに送られる。 例: ソース: t_getc.rb while c =…

Rubyでクロージャのテスト

以前、Swiftでもjavascriptでも試したクロージャを、Rubyでもやってみた。 つい今日覚えたlambdaを使って。 以下コード: def func_generator() a = 0; return lambda { a += 1 } end f_add = func_generator puts f_add.call puts f_add.call 出力: 1 2 参…

Rubyのlambda使用メモ:ハッシュテーブルに関数を入れて別の関数に渡す

Rubyでjavascriptっぽく、ハッシュテーブルに関数の定義を入れて、 別の関数に渡すてのをやってみた話。 javascripは便利で、関数=オブジェクトというところが分かってしまえば、 かなり何でもできてしまう(記述の自由度が高い)。 なにかしら構造体的なも…

echoについて

KernighanさんとRob Pikeさんの著書、 'The Unix Programming Environment'の第3章の「USING THE SHELL」にechoコマンドの話が出てくる。 echoコマンドはおそらくコマンドの中で一番シンプルな部類に入る。 このコマンドの仕事は「引数を標準出力に出力する…

読書メモ:Software Tools

"Software Tools"(邦題:ソフトウェア作法)はやはり素晴らしくて、以前に記事で書いたが、英語の原書を改めて読むと、もっとぜんぜんメモっておかねばと思う。 Kernighan先生とPlaugerさんの本書はUNIXについて語った本ではないが、UNIX精神が宿った名著で…

BeagleBoneBlackのブートシーケンス

ひさびさBBBをまた触ろうかと。以前別のブログに書いていたメモを復習がてらにはてなに移す。 BBBに採用されているSoCはTIのAM3359 以下に技術マニュアルがある。 AM335x Sitara™ Processors Technical Reference Manual BBBのブートシーケンス リセット時に…

Papilio Proボード上のLEDをちかちかさせる

手順は前記事と同じ。 VerilogでPapilio ProのLEDを光らせる - Programmer's Dialy ソースを以下に修正: `timescale 1ns / 1ps module led_control ( CLK, LED1); input CLK; //clk 40MHz output LED1; //led control 0:on 1:off reg LED1; reg [25:0] led_…

VerilogでPapilio ProのLEDを光らせる

PapilioはVHDLをベースに語られてるが、個人的にはVerilog文法の方が分かりやすい。 世の中に転がってるサンプルは、そんなにシンプルでもないので、 一番シンプルにボードについているLEDを光らせるまでをやった。 あまりまとまった情報がなかったため、な…

Papilio の環境導入 (Ubuntu/VirtualBox/Mac OS X)

ちょっと前に買ったPapilioをふたたび触ってみようと。 Ubuntu on VertualBox on Mac OS X の環境で、以前パッケージのインストールまで行った。 (1) Xilinx ISE Design Suite 14.7をUbuntu 14.04にインストールする http://cellspe.matrix.jp/parallella/in…

UNIX関連資料一覧

すでに読んだものも含めて、とりあえず興味あるものだけ整理。 year title 1974 Dennis M.Ritchie and Ken Thompson, 'The UNIX Time-sharing System', ACM, 1974. 1976 Brian W.Kernighan and P.J.Plauger, 'Software Tools',1976. (UNIX本ではないがKernig…

PDP-7時代のUNIXファイルシステム

D.M.Ritchieさんの1979年の講演をもとにした論文 "The Evolution of Unix Time-sharing System"を読了。 前に読んだACMの論文*1 はUNIXの主な機能と考え方の紹介だったが、 こちらの方は歴史的な経緯も含めて、UNIX OSがどう機能的に発展したかが分かる。非…

viの本質を語った良記事

vim

vimを使い始めて間もないが、いろいろ記事や本を読んでいる。 Learning Vim in 2014というサイトでは、vimの使い方を基本となる考え方から紹介していて、なおかつ1ステップが短くて読んでいてなかなか楽しい。(個人的にはフォントが好きだ、結構大事) 上…

inodeファイルシステムに感動!

「The Unix Programming Environment」 を読んで、感動しちまった。 ファイルシステムを語っている第2章で、 なんとディレクトリ自身に対して od して中身を確認して解説している! 環境はUNIX V7。(本の冒頭では、System V、4.1BSDの環境も試しているとあ…

PDP-11: RK11のデータアクセスのアドレスの計算メモ

前回はPDP11の磁気ディスクについての概要だったが。今回はアクセス方法について。 ディスクに対してデータを読み書きするためには、RK11の制御レジスタにアクセスして行う。 PDP-11はMemory-mapped I/O なので、ペリフェラルのレジスタは特定のメモリ番地の…

PDP-11の磁気ディスク装置RK11の勉強メモ

PDP-11の磁気ディスク装置RK11の勉強メモ。 構成物は3つで下記の通り: ディスクコントローラ: RK11 ディスクドライブ: RK05 ディスクカードリッジ: RK03-KA RK11ディスクコントローラには最大8台のドライブを接続できる。 また、RK11-DとRK11-Eと2種類ある…

UNIX V6 ファイルシステム周りの勉強メモ

UNIX V6はPDP-11という古いDECのミニコンピュータ上で動く。このPDP-11のディスク装置(いわゆる磁気ディスク)は、アクセスの単位がブロックで区切られている。1ブロックは512バイト。 UNIXのファイルは単にバイトの並びでしかなく、ファイル自体に管理用の…