月別アーカイブ: 2016年10月

Xcode/Cocoaで始めるモダンOpenGL

モダンなOpenGLを勉強したいと思い立ったので、「OpenGL 4.0 シェーディング言語 実例で覚えるGLSLプログラミング」(原著は OpenGL 4 Shading Language Cookbook)という本で少しずつ勉強している。

OpenGL自体はグラフィックスに関するAPIなので、アプリケーションやウインドウの初期化、画像の読み込み等は各プラットフォームで使えるGUIツールキットの力を借りることになる。この本のサンプルコードではQt(キュート)を使っているが、GitHubにあるサンプルコードではGLFWを使っている。

筆者としては、Cocoaで書いているMac向けのアプリケーションでOpenGLを使いたいという目標があるため、サンプルコードもCocoaアプリケーションに組み込む形で試すことにした。 続きを読む

macOS向けのwxMaximaを自分でビルドする

wxMaxima とは、数式処理システム Maxima をGUIで使えるようにしたソフト(フロントエンド)である。Windows, macOS, Linux の各プラットフォームに対応する。Maxima のGUIフロントエンドの中では最もポピュラーかと思われる。

しかし、macOS 向けにリリースされているバイナリのバージョンは 15.04.0 (記事執筆時点)と、少々古い。そこで、最新版 (16.04.2) を自分でビルドしてみよう。

この記事は、ターミナルの操作に慣れていてソフトウエアのビルドもできる人向けとなる。wxMaxima や wxWidgets 特有の事情については記事の中でなるべく説明しているので知らなくても問題ない。

続きを読む

TypeScript における let/const と control flow based type analysis

前にこのブログの記事に書いたように、TypeScript 1.4以降(ターゲットがES5の場合は1.5以降)では let/const による変数宣言ができるようになった。let は書き換え可能な変数で、const は書き換え不可能な変数だ。let 宣言と const 宣言の登場によって、var 宣言は用済みになったと言っていいだろう。

let も const もスコープに関する規則は同じなので、書き換えない変数に対して let と const のどちらを使っても違いはないはず。そう思って、個人的に書いているコードでは文字数を重視して常に let の方を使っていた。

しかし、 TypeScript 2.0 で導入された control flow based type analysis により、「書き換えない変数に対して let と const のどちらを使っても違いはない」とは言ってられなくなった。 続きを読む

Haskell (GHC) の型レベル自然数とリフレクションを試してみる

最近のGHCでは、自然数をパラメーターとするデータ型を定義できる。固定長リストの長さを型に持たせるとか、行列の大きさを型に持たせるとか、そういうことができる。あるいは、自然数 m に対して Z/mZ を表す型を作ることもできる。m を素数とすればこれは有限体となる。

実際に、型レベル自然数を使って Z/mZ に相当する型を作ってみよう。(名前は FiniteField とした) 続きを読む

駅名に「地下鉄」をつけると地下鉄の駅になる

※なりません

評価のポイント

当てはまる数が多いほどポイントが高い。

  • 本物の地下鉄が近くにないこと。
  • 同じ地名を冠する地上駅が近くにあること。
  • 当該地下駅と「同じ地名を冠する地上駅」とは、それほど一体的ではないこと。
  • 地上の鉄道路線と地下の鉄道路線がある程度並走していること。

続きを読む