Emacsのcompilation-modeでANSIカラーが表示できないのを直す
EmacsのCompile Commandでjadeを使ったときに、*compilation*バッファに文字化けみたいなものが表示されてた。
^[[90mrendered ^[[36mindex.html ^[[0m
どうやらANSIカラーのカラーコードだったので、カラー表示できるようにした。
(require 'ansi-color) (add-hook 'compilation-filter-hook '(lambda () (ansi-color-apply-on-region (point-min) (point-max))))
参考ページ
http://stackoverflow.com/questions/3072648/cucumbers-ansi-colors-messing-up-emacs-compilation-buffer
関連パッケージを一気にapt-get removeする
例えば、Ubuntu One関連のパッケージをremoveしたいときは次のようにする。
$ dpkg -l | grep "ubuntuone" | awk '{print $2}' | xargs sudo apt-get remove -y
最近読んだ本、あるいは途中まで読んだ本
フリーソフトウェアと自由な社会 ―Richard M. Stallmanエッセイ集
- 作者: リチャード・M・ストールマン,Richard M. Stallman,長尾高弘
- 出版社/メーカー: アスキー
- 発売日: 2003/05/06
- メディア: 単行本
- 購入: 4人 クリック: 60回
- この商品を含むブログ (35件) を見る
これを読んで、晴れてフリーソフトウェア主義者になった。少し前まで、OS Xに心惹かれてたこともあったけど、これからもGnu/Linuxを使っていきたい。そしてフリーソフトウェア運動に貢献したい。
Inside Linux Software オープンソースソフトウェアのからくりとしくみ
- 作者: 佐藤竜一
- 出版社/メーカー: 翔泳社
- 発売日: 2007/03/14
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 99回
- この商品を含むブログ (17件) を見る
オープンソースソフトウェア開発の各種ツールについて詳しく書かれている。プログラミングうんぬんの話は少なく、1章のgccの仕組みくらい。後半は斜め読みした。
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/07/27
- メディア: 単行本
- 購入: 35人 クリック: 450回
- この商品を含むブログ (145件) を見る
C言語でUnixのコマンドやプログラムを実装する本。パイプやリダイレクトがまだよくわかってない。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (98件) を見る
話題になってそうだったから読んでみた。何度か読み返して実践できるようにしたい。
- 作者: 藤原博文
- 出版社/メーカー: 技術評論社
- 発売日: 2003/07/12
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 219回
- この商品を含むブログ (54件) を見る
上のついでに読んでみた。サンプルがANSI C以前の規格で書かれていて、しかも長かったので、詳しくは読んでない。
プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~
- 作者: 五十嵐淳
- 出版社/メーカー: 技術評論社
- 発売日: 2007/11/29
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 169回
- この商品を含むブログ (50件) を見る
- 作者: OCaml-Nagoya
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2007/05/22
- メディア: 単行本(ソフトカバー)
- クリック: 59回
- この商品を含むブログ (31件) を見る
プログラミングの基礎 (Computer Science Library)
- 作者: 浅井健一
- 出版社/メーカー: サイエンス社
- 発売日: 2007/03
- メディア: 単行本
- 購入: 17人 クリック: 409回
- この商品を含むブログ (102件) を見る
OCaml本3冊。
関数型言語を勉強しようと思って少し調べて、言語の候補をML系のHaskell, OCamlとLisp系のCommon Lispに絞った。その中でも、副作用や手続き的な記述をある程度は許容するOCamlが入門には向いているのかなと思って、OCamlを勉強してみた。
『プログラミング in OCaml』は、OCamlの言語仕様とサンプルが詳しくてわかりやすい。ファンクターとか多相ヴァリアントとかの章はまだ読んでないけど。
『プログラミングの基礎』は、OCamlの入門書ではなく、プログラミングをどのように行なっていくかをOCamlを題材として書かれている。OCamlの言語仕様は他2冊に比べて少ないが、プログラミング一般の本としてためになった。
- 作者: 須崎亮太郎,内村創,荻野友隆
- 出版社/メーカー: 秀和システム
- 発売日: 2004/12
- メディア: 単行本
- 購入: 2人 クリック: 201回
- この商品を含むブログ (84件) を見る
画像処理ライブラリの車輪の再発明をする本。Windows上での動作環境というのが少し残念だった。Ubuntu Gnu/Linux上で、自分でビットマップファイルを読み書きしてなんとか進めてた。
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/06/01
- メディア: ペーパーバック
- 購入: 8人 クリック: 310回
- この商品を含むブログ (48件) を見る
数学ガールシリーズはこれ以前のも読んでたけど、今作が体感的に一番難しかった気がする。途中で読むの放棄してしまった。
ニートの歩き方 ――お金がなくても楽しく暮らすためのインターネット活用法
- 作者: pha
- 出版社/メーカー: 技術評論社
- 発売日: 2012/08/03
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 1,642回
- この商品を含むブログ (79件) を見る
コンピュータを働かせれば人間は働かなくてもいいような未来になると結構真剣に思ってるんだけど、どうなんだろう。
libjpegを使ってjpegファイルを出力する
libjpegというjpegを扱うライブラリを使ってjpegファイルを出力します。
使い方
インクルード
インストールすると、/usr/include/jpeglib.h ができているのでそれをインクルードします。ファイルの入出力やエラーの出力のために、stdio.h もインクルードする必要があります。
#include <stdio.h> #include <jpeglib.h>
jpegオブジェクトの初期設定
jpegファイルの出力にはjpeg_compress_structというjpegオブジェクトを使います。またエラー処理のための構造体jpeg_error_mgrも確保します。
struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr;
エラーの処理はデフォルトで構わないので、jpeg_std_error()でデフォルト値を設定します。その後、jpeg_create_compress()でjpegオブジェクトを初期化します。
cinfo.err = jpeg_std_error(&jerr); jpeg_create_compress(&cinfo);
出力ファイルの設定
バイナリ、書き込みモードでfopen()し、jpeg_stdio_dest()で出力先に設定します。
FILE *fp = fopen(filename, "wb"); jpeg_stdio_dest(&cinfo, fp);
画像のパラメータの設定
画像の幅、高さ、色の種類、画質などを設定します。幅はimage_widthプロパティ、高さはimage_heightプロパティで設定します。
色の種類は、RGBカラーならin_color_spaceにJCS_RGBを、input_componentsに3を設定します。グレースケールならin_color_spaceにJCS_GRAYSCALEを、input_componentsに1を設定します。
画質はjpeg_set_quality()で設定します。第2引数には0から100の値を指定し、値が大きいほど画質が良くなります。jpeg_set_quality()を使わないときのデフォルト値は75です。
cinfo.image_width = 256; cinfo.image_height = 256; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; jpeg_set_defaults(&cinfo); jpeg_set_quality(&cinfo, 75, TRUE);
書き込み
jpeg_start_compress()で圧縮を開始します。ピクセルごとの色を設定していき、jpeg_write_scanlines()でファイルに書き込みます。
色の設定は、JSAMPLE型を使って行います。RGBカラーならJSAMPLE型3つで1ピクセルを表します。JSAMPROW型はJSAMPLEの配列で、横1列分(1行)を表します。JSAMPARRAY型はJSAMPROWの配列で、画像全体を表します。
jpeg_start_compress(&cinfo, TRUE); JSAMPARRAY img = (JSAMPARRAY) malloc(sizeof(JSAMPROW) * height); for (int i = 0; i < height; i++) { img[i] = (JSAMPROW) malloc(sizeof(JSAMPLE) * 3 * width); for (int j = 0; j < width; j++) { img[i][j*3 + 0] = i; img[i][j*3 + 1] = j; img[i][j*3 + 2] = 127; } } jpeg_write_scanlines(&cinfo, img, height);
終了
jpeg_finish_compress()で圧縮を終了し、jpeg_destroy_compress()で圧縮に使ったjpegオブジェクトを破棄します。
jpeg_finish_compress(&cinfo); jpeg_destroy_compress(&cinfo);
Ubuntu12.04で/dev/dspを使えるようにする
Ubuntu12.04で/dev/dspを使えるようにします。/dev/dspはUbuntu10.10以降のカーネルでデフォルトだと無効になっているので、カーネルをビルドし直します。
手順
ビルドに必要なものをインストール
$ sudo apt-get install build-essential $ sudo apt-get install kernel-package $ sudo apt-get install libncurses5-dev
linuxのソースをダウンロード
$ apt-cache search linux-source linux-source - Linux kernel source with Ubuntu patches linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches $ sudo apt-get install linux-source-3.2.0
/usr/src/linux-source-3.2.0.tar.bz2 にダウンロードされます。
ソースコードを展開する
$ sudo su - # cd /usr/src/ # tar xf linux-source-3.2.0.tar.bz2 # ls linux-headers-3.2.0-23 linux-headers-3.2.0-23-generic linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic linux-source-3.2.0 linux-source-3.2.0.tar.bz2 # cd linux-source-3.2.0/
現在のビルドの設定を反映させる
# cp /boot/config-3.2.0-24-generic .config # make oldconfig
/dev/dspを使えるように設定を変更する
# make menuconfig
configのメニューが開くので、「Device Drivers」->「Sound card support」->「Advanced Linux Sound Architecture」と進み、
・OSS PCM (digital audio) API - Include plugin system
・OSS Sequencer API
にチェックを入れます。
Makefileを編集してカーネルのバージョンに名前をつける
# vim Makefile // 4行目を変更 EXTRAVERSION = -24-generic.devdsp
カーネルのバージョンは3.2.xx{EXTRAVERSION}になります。僕の環境だと3.2.16-24-generic.devdspになりました。
カーネルをビルドする
# CONCURRENCY_LEVEL=2 make-kpkg --revision=1 --initrd kernel-image
CONCURRENCY_LEVELは並列でビルドするときのコア数です。ビルドが完了すると/usr/srcにパッケージファイルが作成されます。
カーネルのインストール
# cd ../ # ls linux-headers-3.2.0-23 linux-headers-3.2.0-24 linux-image-3.2.16-24-generic.devdsp_1_amd64.deb linux-source-3.2.0.tar.bz2 linux-headers-3.2.0-23-generic linux-headers-3.2.0-24-generic linux-source-3.2.0 # dpkg -i linux-image-3.2.16-24-generic.devdsp_1_amd64.deb
インストール後に再起動します。
これで/dev/dspはデバイスとして有効になっているはずですが、デバイスドライバがないためか、使おうとするとbusy状態で使えませんとエラーが出ます。
デバイスドライバのインストール
$ sudo apt-get install alsa-oss
試しに使ってみる
$ echo 1 > /dev/dsp
ChromeでGoogleの検索結果から+1(プラスワン)ボタンを消す
Googleにログインした状態で検索すると、検索結果の横に+1(プラスワン)ボタンが表示されますが、ほとんど使ってない機能だし、誤って押してしまうのも恥ずかしいので、押さないように消してしまいます。
やり方
- Chrome ExtensionsのStylishをインストール
Chrome Web Store - Stylish - Stylishのオプションを開き、左下にある[Write new style]をクリック
- [Code]のテキストボックスに以下を入力
button.gbil.esw.eswd {
display: none !important;
}
- [Applies to]の一番右にある[Specify]をクリック
- セレクトボックスから[URLs matching the regexp]を選択し、横のボックスに以下を入力
https?://www\.google\.(co\.jp|com)/.*
- [Name]にわかりやすい名前を入力し、[Enabled]にチェックを入れる
- 左下の[save]をクリック
VMwarePlayer上のゲストOSからFTPS接続ができない
VMware上のUbuntuから外部のwebサーバーにFTPSで接続しようとしても接続できなかったのですが、対処法が見つかりました。
環境
ホストOS | Windows 7 64bit |
仮想環境 | VMware Player 4.0.2 |
ゲストOS | Ubuntu 11.10 |
FTPクライアント | FileZilla 3.5.0 |
外部webサーバー | heteml |
エラー症状
FileZillaを使って外部のwebサーバーに、明示的なFTPS(explicit FTP over TLS)で接続したときにエラーが生じる。
エラー内容は以下のようなもの。
状態: ssl***.heteml.jp のアドレスを解決しています 状態: ***.***.***.***:21 に接続しています... 状態: 接続が確立されました, ウェルカム メッセージを待っています... 応答: 220 ***.***.***.*** FTP server ready コマンド: AUTH TLS 応答: 234 AUTH TLS successful 状態: TLS を初期化しています... エラー: 接続タイムアウト エラー: サーバーに接続することができませんでした
ホストOS上から外部のwebサーバーへのFTPS接続はエラーになっていません。