プログラミング

時代遅れひとりFizzBuzz祭り bc編

時代遅れひとりFizzBuzz祭り、前回のGDBに引き続き今回もライトなキワモノネタでいこうと思う――いやキワモノというほどでもないか。具体的にはbcとかbcとかbcだ。bcは任意精度の数値演算を行える対話型の計算ツールで、POSIX 1に含まれるので大抵のUnix系OS…

時代遅れひとりFizzBuzz祭り GDB(GNU Debugger)編

時代遅れひとりFizzBuzz祭り、ここ暫く少し重めのFizzBuzzが続いたので、今回は軽めのネタでいこうと思う。でも普通のネタでは面白くないので少しばかりキワモノをば。まあ私はライトなキワモノ層の人だと最近気づいたので「意外とメジャー、でもちょっとば…

WindowsでMongoose 3.2で色んな言語でCGIしてみた

クロスプラットフォームの軽量HTTPサーバというか・HTTPサーバライブラリというか、Mongooseをちょっと触っている。Apacheやlighttpdなどに比べると対応していない機能も色々とあるけど、小さいしインストールや使い方は単純だしCGIやSSLぐらいには対応して…

ヌルポインタ定数がヌルポインタと解釈されない時──CとC++のヌルポインタ定数をめぐるメモ

これを見て、 リリカル☆Lisp開発日記 » Blog Archive » 恐怖! 64bitと0と可変長引数の組み合わせ 最近は『CプログラミングFAQ』を読む人も少ないのだろうかと思ったのだけど、よく考えればあの本はまた絶版になってるんだよなあ。それに例えばC言語を経ずにC…

WebSocketが切り開くネイティブアプリとWebアプリの融合、ネイティブアプリのGUIツールキットとしてのHTML

……というネタを思いついたので、既に同じ事を考えている人は沢山いるだろうけど書いておく。WebSocketについては「Ajaxをより便利にするもの」という見解が多い。確かに通信のオーバーヘッドの削減やクロスドメイン通信が簡単なこと、サーバからのプッシュが…

結局、C言語のポインタはどこが難しいのか?

何やら最近C言語のポインタが熱いらしいので、自称Cプログラマとして書き残しておこうと思う。私はポインタについて余り苦労することなく使ってきた人で、というかむしろポインタが無いと困る。構造体を引数にとる関数の仮引数はポインタで、リストやツリー…

サピア=ウォーフの仮説とプログラマのメンタルモデルの関係(試論)

あるいはプログラマ(プログラミング言語の話者)にサピア=ウォーフの仮説的な症状がみられる原因の考察。 プログラマにとって高水準言語はコンピュータを覆う抽象化層であり、ユーザインタフェースである。 高水準言語によって抽象化されたコンピュータの…

あの頃君は若かった:『標準MS-DOSハンドブック』と「OJTで新人を育てる」方式の罠

図書館で『標準MS-DOSハンドブック』を発見したので勢いで借りてみた。標準MS-DOSハンドブック (ASCII ハンドブックス)作者: アスキー出版局出版社/メーカー: アスキー発売日: 1984/07メディア: 単行本購入: 1人 クリック: 4回この商品を含むブログを見る198…

Java Servletのサンプルコード、Java抜き。

JettyというJavaで書かれたWebサーバというかJava Servletコンテナを触っている。目的はWebSocketのサーバ側実装だ。候補としてNode.jsも考えたのだけど、全く未知の世界に足を踏み入れようと思ってJettyにした。どのあたりが未知の世界かというと――Javaのコ…

組込み系でクライアントサイドしたいJavaScript素人へのJavaScript開発入門の補講

世の中にはJavaScript入門の記事や本なんて山ほどあるし、ググればツールの情報も色々と出てくる。プログラマなら例えJavaScriptの素人であっても何とかなるぐらいのネタはある訳で、今さら同じようなことを書いても無駄だろう。なのでこのエントリでは、 組…

groovy.vim(ftplugin)はGROOVY_HOMEを設定しないと使えない。なので直してみた。

多分quickrun.vimを使っている人の方が多いと思うので、需要は無いだろうけど書いておく。vimでGroovyのコードを書く為のプラグインとしてGroovyの公式サイトでも触れられている「groovy.vim : Runs or compiles Groovy scripts.」というものがある*1。最近…

GNU Makeで集合演算

GNU Makeはテキストを「空白区切りの単語の集合」として扱うことが比較的容易だ。組み込み関数*1を使うと簡単な集合演算を簡単に実現できる。 集合を作る 単純に空白区切りで単語を並べれば、GNU Makeではそれが集合となる。ただ組み込み関数を使う都合上、…

Javaで動作する各種言語処理系の手動インストール方法メモ

個人的にここ最近Javaプラットフォームで動作する言語処理系に触れることが多い。といっても仕事じゃなくて個人的な勉強――という名の趣味の範疇なのだけど。で、ちょっと困ったのがインストール方法。インストーラ付きのパッケージもあるのだけど、趣味やら…

構造体の定義のネストで移植性の壁に衝突した話。extern "C" にも限界はあるのさ……。

C90相当のC言語で実装したライブラリがありまして、C++でアプリを作る際にこいつをちょろっと使っちまおうと考えたわけですな。ところがそのライブラリのヘッダファイルにこんな感じの構造体の定義が書かれていたのです。なんてことでしょう。 /* test.h */ …

時代遅れひとりFizzBuzz祭り CoffeeScript編

時代遅れひとりFizzBuzz祭り、今回はCoffeeScriptだ。前回までのJavaScript de 処理系ネタからの惰性で選択したことは秘密なのだ。ネットでCoffeeScriptについて情報を漁ると、肯定的な意見もあれば否定的な意見もある。否定的意見については「言語として全…

sng(PNGのマークアップ言語SNG用コンパイラ)をWindowsに仮移植し、MinGWでビルドする

id:eel3:20120615:1339768796 でzlibをビルドし、id:eel3:20120616:1339815893 ではlibpngをビルドした。全てはWindowsでsngを使う為に……ソ○モンよ! 私は帰って来た!SNG(Scriptable Network Graphics)というマークアップ言語というかミニ言語がある。PNG…

libpng-1.2.49、libpng-1.5.10をMinGWでビルドする

id:eel3:20120615:1339768796 にてMinGWでzlibをビルドした理由はlibpngを使う為だ。zlibと同様にlibpngのバイナリもLibPng for Windowsで入手できるものの、こちらも微妙に古い。しかもセキュリティホールが残っているバージョンだ。そこでlibpngも最新版を…

zlib-1.2.7をMinGWでビルドする

Windows上でzlibが必要になった。libpngを使おうとしたら依存関係の都合でzlibも欲しくなったのだ。zlibのバイナリは例えばZlib for Windowsなどで入手できるものの、微妙に古い。そこで最新版だと思われるzlib-1.2.7をMinGW*1でビルドすることにした。ソー…

今までどのくらいプログラミング言語を触ってきたか(3秒で挫折したものものも含む) Ver.4

2012/06/12現在のステータス。 id:eel3:20110611:1307768794 から1年経て、こうなっている。 よく使っている AWK (gawk) 単純なテキストレコードの処理にはAWKで十分。自作ツール実装での使用頻度は減りつつあるが、依然としてワンライナーでは重宝している…

時代遅れひとりFizzBuzz祭り JavaScript on PhantomJS編

時代遅れひとりFizzBuzz祭り*1、全3回*2のJavaScript de 処理系ネタもこれで最後。今回はヘッドレスブラウザのPhantomJSだ。こいつはクライアントサイドJavaScriptなのかそうでないのか微妙だ……どちらかというと「JavaScriptのコードでブラウザを操作する」…

時代遅れひとりFizzBuzz祭り JavaScript on Node.js編

時代遅れひとりFizzBuzz祭り、今回もJavaScript de 処理系ネタ。最近流行のNode.jsを触ってみた。サーバサイド! 前回のRhinoはその血筋的に微妙にクライアントサイドの流れを汲んでいるように思う*1けど、それとは対照的だ*2。個人的に、サーバサイドJavaSc…

時代遅れひとりFizzBuzz祭り JavaScript on Rhino編

時代遅れひとりFizzBuzz祭り、今回はJavaScriptなのだけれども、今までとはちょっと違うアプローチでいこうと思う。というのも id:eel3:20100717:1279364463 のJScript編でECMA-262 第3版ベースのJavaScript的FizzBuzzを書いているので、同じようなことを繰…

文字実体参照とブラウザの動作モデル、そしてHTMLエスケープ

つい最近CGIとクライアントサイドJavaScript絡みでHTMLエスケープの要不要で他人への説明に苦労した。それから少し経って別件でHTMLエスケープ絡みで話す機会があった。同じようなことを2度も説明する機会があったということはつまり「資料にまとめなさい」…

コマンドプロンプトから色々な処理系でワンライナー:2012年バージョン

id:eel3:20090321:1237633275 から3年。手元のPCに何故か入っている言語処理系の数が増えた結果、コマンドプロンプトからワンライナーできる処理系も増えた。これはもうワンライナーするしかないだろう。いやあ、頑張ればF#も(厳密にはワンライナーじゃない…

時代遅れひとりFizzBuzz祭り CASL II編

時代遅れひとりFizzBuzz祭り、今回は個人的に「偽アセンブラ」呼ばわりしているCASL IIだ。CASL IIは私が生まれて初めて本格的に触ったプログラミング言語の1つで*1、2012年の年頭にあたり初心を忘れがちなここ最近の自分の気を引き締めるべくFizzBuzzしてみ…

そろそろ剰余を使わないFizzBuzzについて一言(ry 時代遅れひとりFizzBuzz祭り 剰余無し編

FizzBuzzというニッチな市場*1において更にニッチな「剰余を使わない」分野ではあるものの、どうも需要があるようなので*2書いておく。ひとまず既存ネタから幾つか再録して解説する。それから新作を出そうと思う。 既存ネタ:「事前に答えを用意しておく」ア…

注解・正しい基本情報技術者試験の勉強法、あるいは基本情報が「役に立たない」といわれる理由の考察

id:eel3:20111127:1322361996 は7割ぐらいネタだったので、それを引っ剥がして残り3割の本音の部分を明らかにしてみようと思う。なので今回はネタ無し。 「基本情報技術者の資格は実務にも役に立つ」という主張は本音 最初に書いた以下の部分はネタではなく…

正しい基本情報技術者試験の勉強法

プログラマ(というか開発者)にとって基本情報技術者や応用情報技術者(ソフトウェア開発技術者)の試験は割合とネタになりやすい話題だと思う――主に役に立つ/役に立たないという観点で。コの業界では「この手の資格は役に立たない」と主張する人も多いよ…

シェルもどきな簡易コマンドパーサ……を改造して整理してモジュール化してみた

id:eel3:20111122:1321888361 で試作したパーサはコメントに対応していないし、実装が試作アプリ自体に密着しているので他のプログラムに組み込むのに少々手間がかかる。そこでソースを整理してCのモジュールとして切り出してみた。 cmd_parser - Unixシェル…

シェルもどきな簡易コマンドパーサを試作した

ちょっと事情があって、バッチファイルやシェルの簡易版みたいな構文のパーサが欲しくなった。作りたいツールの内容的に、簡単なコマンド(というかスクリプト)で操作するようにしたいのだ。多分調べ方が不十分だと思うのだが、この手のパーサのライブラリ…