本を読む

読書やコンピュータなどに関するメモ

cowsayのマルチバイト対応パッチがDebian・Ubutuに採用された

 cowsayというのは、端末上でアスキーアートの牛さん(またはほかのキャラクター)にフキダシでしゃべらせるコマンドです。

$ cowsay Hello
 _______
< Hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

 ただ、マルチバイト文字をしゃべらせると、文字のサイズとフキダシのサイズが合わなくなるという問題がありました。よくある、文字列のバイト数=端末のカラム幅と仮定していることが原因なわけですが。

 Google Plusでその話が出ていたので簡単なパッチを書いたところ、Kenichiro MATOHARAさんがDeibanのBTS(bug tracking system)に報告してくれて、採用されました。

 Debianの次期バージョンDebian stretchのcowsayと、Ubuntuの次期バージョンUbuntu 16.04 LTSのcowsayにはすでに入っているようです。

$ cowsay めでたしめでたし
 __________________
< めでたしめでたし >
 ------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

 ちなみにそのパッチはこれ(↓)。基本的にlength()をText::CharWidthのmbswidth()に置きかえているだけです。Text::CharWidth(Debianパッケージではlibtext-charwidth-perl)は、debconf-i18nも利用しているパッケージなので、入っていることが多いと思います。

「日経Linux」2015年1月号

 もうすぐ次号が出るけど、なんとか年内に通読。

 特集1「Raspberry Pi遊び方 全部入り」の執筆に参加しました。私が担当したのはPart 3「すぐに遊べるフリーソフト20選」で、PCManFMのようなデフォルトツールの使い方や、Epiphanyでの検索サイトの変更、MPDやVolumioなどの定番ソフト、GoTTYやstop-serverなどのちょっと変わったソフトなどを紹介しました。

 この特集では、Part 1が「みんなのラズパイコンテスト」グランプリの赤道儀オートガイダー。望遠鏡にサブの望遠鏡を付けて、Webカメラ+Raspberry Pi+OpenCVでずれを検出して補正するというものだ。Part 2がRaspbianのインストールと初期設定。Part 4が温度センサーとLCDモジュールによる温度計を作りながら、「LEDが明るく光らない」「スイッチの入力が安定しない」「I2C対応温度センサーの挙動が変」といった主に初歩のトラブルを解決していく。Part 5が、サーボモーターによるスマートロック。

 自分関連はそのぐらいにして、以下、通読メモ。

 特集2が「Windows 10と徹底対決 Ubuntu 15.10」。Part 1でUbuntuをWindows(10)と比べた後、見開きでUbuntu 15.10の新機能を紹介している。そして、PArt 2で15.10の各種フレーバーを紹介し、Part 3でアップグレードと新規インストールを説明している。

 特集3は「裏口から学ぶLinuxコマンド」。GUIでする操作を説明したあと、その裏口として、端末から同じことをCLIでやってみせるという形式をとっている。

 「実例で学ぶ! LibreOfficeの書類作成術」が特別編で、CalcとWriterを使った年賀状の差し込み印刷を図解で解説している。

 リニューアル新連載が2本。「Raspberry Piで作ろう お手軽ロボット教室」は、シェルスクリプトからPythonに言語を変えて、第1回は著者が作ったPythonのラズパイマウス操作用フレームワークを、サンプルで紹介している。

 また「Linuxステップアップ講座」は、初級編からステップアップ編になって、第1回がディスク。GPTの解説や、BIOS互換モードでシステムディスクにGPTパーティションを使う方法、LVMを解説している。

 中井悦司氏の「KVMサーバー仮想化の実践活用」連載が、virt-installによる仮想マシン作成と、KickstartによるOSインストール自動化、仮想マシンの複製、virt-copy-outとvirt-copy-inによるネットワーク設定の変更について。

 まつもとゆきひろ氏の「作りながら学ぶプログラミング言語」は、データ自身に型情報を持たせる方法と、その1つとしてのNaN Boxing、さらにNan BoxingをJavaScript軽量処理系の「V7」がどう使っているかの解説。

 「楽しく学ぶラズパイプログラミング」連載が、virtualenvを使ってUbuntuとRaspberry Piとで同じライブラリを揃える方法や、Pythonでの迷路のデータ構造、スイッチとLEDなど。

 PCリフォーム連載が、2010年のCeleron U3400モデルへのManjaro Linuxをインストール。「Raspberry Piで始めるモノ作り超入門 シーズン3」が、ビット演算とその用例。LPIC連載が、ネットワークトラブルを調べる関連のコマンドについて。Linuxカーネル連載が、mdドライバによるRAIDのレイヤーでジャーナリングを使うJournaled RAIDについて。

 巻頭レポートは、軽量Linux「Puppy」新版、シャープのRaspberry Pi用の1920×1200ピクセルの7インチディスプレイ、Chromium OSを簡単にインストールする「CloudReady」、KNOPPIX 7.6.0。フリーソフト連載が、RSSリーダーのLiferea。美女Linux連載が、findやlocateによるファイル探し。世界のディストロ連載が、ファイルサーバー用の「Rockstor」。

 みんな大好き「#!シス管理系女子」がSeason 4になった。今回はサーバーのIPアドレス設定の変更。ちなみに、サーバーの設定を待っている開発部の人が、YAPCのTシャツを着てるw

「ペルシア王は「天ぷら」がお好き?」

ペルシア王は「天ぷら」がお好き? 味と語源でたどる食の人類史
ダン・ジュラフスキー
早川書房
売り上げランキング: 77,662

 欧米ではクリスマスに七面鳥を食べるそうだけど、このアメリカ大陸発祥の鳥はなぜか英語で「turkey」(トルコ)と呼ばれる。これは、大航海時代に七面鳥をヨーロッパで売っていたポルトガル人が出所を隠していた結果、同じくポルトガル人が売っていたホロホロ鳥と混同されたことによるという。

 というような料理や食材の語源や由来などについて、言語学者(専門はコンピュータにより用法を統計的に調べる分野だとか)である筆者が解説する本だ。

 たとえばケチャップ。この言葉は、中国の福建地方で魚醤を意味する「ケ・チャップ」が語源だという。それが、大航海時代にヨーロッパに伝わり、トマトを使って真似たものが「ケチャップ」として定着した。

 大航海時代に広まった料理はほかにも。書名にもなっている天ぷらの原型は、6世紀ペルシア王の好物「シクバージ」だという。ただし、これは酢を使った牛肉の煮込み料理だた。これをイスラムの船乗りが魚のシクバージにし、やがてその魚が揚げられるようになった。これが大航海時代に、フランスのアスピックや、スペインのエスカベーチェ、イギリスのフィッシュ・アンド・チップス、ポルトガルのペスカド・フリートにそれぞれ発展したのだと著者は主張する。ちなみに、最後のペスカド・フリートを参考に独自に発展したのが天ぷらだ。

 本業である言葉の用法の分析ネタも。著者は、アイスクリームなど濃厚な食べ物の商品名には後舌母音が多く、クラッカーのような軽い食べ物の商品名には前舌母音が多いという理論を立てる。また、音の滑らかさと料理の滑らかさには関連があるとも言う。

 著者はまた、Yelpでのレストランのレビューをもとに、肯定的なレビューより否定的なレビューのほうがより細かい言葉を使われると分析する(否定の分化)。否定的なレビューはまた、料理よりできごとの話が目立ち、「私たち」という言葉がよく使われるという。一方、肯定的なレビューでは、肉感的・官能的な言葉がよく使われるとか。

 そのほか、マカルーンとマカロンのマカロニの関係や、ポテトチップスのグレードとキャッチフレーズの相関関係、英語で乾杯のときに「トースト」と言う理由、レストランのグレードと料理名の傾向など、料理やその名前の由来について、歴史や分化についていろいろ読めた。

bashは環境変数をどう管理しているか

 質問自体は識者の方々が答えているので略として、bashが環境変数をどう管理しているかについて私がコメントした内容を改めてまとめておきます。

  • bashは起動時に、環境変数の内容から、グローバル変数shell_variablesで指すハッシュ表を作る
  • 以後はシ‌​ェル変数(環境変数を含む)はそのハッシュ表で管理する
  • exportを実行すると、そのハッシュ表のエントリーにatt_exported属性が付く
  • それと並行して、グローバル変数export_e‌​nvが管理されている
  • 外部コマンドの実行時などに、export_envの内容が、shell_variablesをもとに更新される
  • execveシステムコールには、このexport_envが渡さ‌れる

試す

 「Big Sky :: 別のプロセスの動的な環境変数を盗み取る」のスクリプトを、bashに特化してちょっと変更して、試してみます。基本的には対象をexport_envに変えただけです(あとヒアドキュメントのクォートと、/bin/sh対応)。

#!/bin/sh
if [ "x$2" = "x" ]; then
  GREP=cat
else
  GREP="grep ^$2="
fi

gdb -q --silent -p $1 <<'EOF' | grep XXXXXXX | cut -c9- | $GREP
set $i=0
while (1)
  set $r=*((char**)export_env+$i)
  if ($r == 0)
    loop_break
  end
  printf "\nXXXXXXX %s\n", $r
  set $i++
end
EOF

 まずexportを実行しただけの状態でスクリプトを実行しても、何も表示されません。

bashは環境変数をどう管理しているか:実験1

 なにか外部コマンドを実行した後でスクリプトを実行すると、環境変数が表示されます。

bashは環境変数をどう管理しているか:実験2

「日経Linux」2015年12月号

 あと数日でこの次の2016年1月号が発売されるけど、ようやく通読したので、メモ。

 特集2「ラズパイをとことん楽しむ」の執筆に参加しました。Part 1で、Raspbianの新版「Raspbian Jessie」の入門を書きました。Debian Jessieベースになっているほか、最初からGUIが起動するなど、いろいろ変わりましたね。

 自分以外のパートは、Part 2がRaspberry Pi Foundation謹製の7インチタッチデイスプレイの紹介と、タッチ操作フレームワーク「Kivy」の解説。Part 3が、においセンサーで口臭をチェックしてフリスクを出す装置。

 もう1つ、巻頭レポートで「Fedora 23」について1ページ書きました。Spin(公式派生版)としてCinnamon Spinが新しく出ています。

 自分関連はさておき、以下、通読メモ。

 特集1が「Linuxなんでもランキング」。さまざまなLinuxディストリビューションを、消費メモリーや消費電力、起動時間、パッケージ数などそれぞれのポイントから比較している。

 特集3が「使えるカスタムLinux」。同誌が定期的に作っているカスタムLinuxディストリビューションとその紹介で、今回はクラウドサービスを利用するためのカスタマイズが多い。

 Raspberry Piでサッカーボードゲームのゴールを再生するマシンの短期連載後編は、センサー関連や、映像制御のあたり。10秒ぶんだけ録画を保持するために、1秒ごとに動画ファイルを作ってローテートするとのこと。

 Raspberry Pi関連では、そのほか「Raspberry Piで始めるモノ作り超入門」シーズン3が開始。学習テーマのために題材を選ぶのはなく、題材からテーマを選ぶとのこと。今回は、サンプルプログラムからデバイスの使い方を知るこのとの大切さと、ビット演算について。

 「楽しく学ぶラズパイプログラミング」は、Minecraftで使うための物理スイッチの工作とPythonからのその利用について。

 特別企画で、「Anrdoid 6.0で変わるアプリ開発」。Marshmallowで大きく変わったパーミッションと、OSで正式にサポートされた指紋認証の機能を、プログラミング側から解説している。

 まつもとゆきひろ氏の「作りながら学ぶプログラミング言語」は、前回を受けて、連載で作っているStreem言語のオブジェクト指向モデルについて。なんと、Common Lispのような総称関数ベースで、オブジェクトはLua・Perl・JSのようにハッシュテーブルベースとのこと。

 中井悦司氏の「KVMサーバー仮想化の実践活用」は、仮想ディスクの管理と、VirtIOドライバーについて。Linuxカーネル新機能連載が、ページフォルトの例外ハンドラーをユーザー空間で制御するuserfaultfd()で、ライブマイグレーションで使えるという。

「もっと使えるLinux超入門」連載が最終回で、デスクトップのカスタマイズとして、Nautilusの各種プラグインや、デスクトップのランチャー、Conkey、マルチディスプレイなどを紹介している。「LibreOfficeの書類作成術」連載は、LibreOffice Impressによるスライド作成の入門。LPIC連載は、TCP/IPの基礎と、ネットワーク設定について。PCリフォーム連載は、32ビットUEFIマシンにUbuntuをインストールする方法。

 巻頭レポートで、openSUSE新版「Leap 42.1」、Android-x86 5.1-rc1、Raspberry Piの拡張ボード「Sense Heat」とそのISSでの実験予定、OpenStack Summit Tokyo 2015。フリーソフト連載が、Raw現像ソフト「RawTHerapee」について、ノウハウレベルまで解説。美女Linux連載が、ユーザーの作成や削除。世界のディストロ連載が、キー操作でアプリケーションを起動する「Vera Desktop」を採用した「Semplice Linux」。

 そうそう、特別付録として「#!シス管系女子 Season 3」の第1〜6話がまとめ読み冊子として付いてくる。表紙は、みんとちゃんのグラビアっぽいポーズ。

「日経Linux」2015年11月号

 もうすぐ2016年1月号が発売されるけど、これはその2つ前の号。ようやく通読したので、メモ。

 特集1「一気にわかるLinuxカーネル」の執筆に参加しました。比較的、概要的な項目をいくつか書きました。

 この特集には、富士通の亀澤さんをはじめとする、富士通のカーネルハッカーさんたちが参加していて、最新の機能について短くとも濃い解説が読めます。

 自分関連はさておき、以下、通読メモ。

 特集2が、「ラズパイで作る面白ロボット」。Part 1が、Raspberry Piのomxplayerで音楽を再生するようにして、GPIOにつないだスイッチや、PythonのWeb UIで設定した時刻からコントロールする。Part 2が、1000円以下のLCDでセンサーの温湿度や天気予報を表示する。Part 3が、床面に描かれたマークシートを走りながら読み取り、それによって車を踊らせる。

 Raspbery Pi関連では、巻頭レポートで「みんなのラズパイコンテスト」結果を発表。その優秀章に入った、サッカーボードゲームのプレイを常に録画してゴールしたときに再生するマシンの短期連載も始まった。今回は、システム全体の構成と、Bluetooth LE部分の作成。

 また、「Raspberry Piで始めるかんたんロボット制作」が最終回で、迷路を抜ける制御と、その経路から地図を作る例。いっぽう、新連載「楽しく学ぶラズパイプログラミング」が始まり、今回はMinecraftをPythonで制御するところ。

 特集3が、「徹底解明! 動画音楽の謎」。音声や動画の基礎知識や、DVDの作成、ハイレゾオーディオ、Ubuntu Studioの作成など。

 まつもとゆきひろ氏の「作りながら学ぶプログラミング言語」が、さまざまな言語のオブジェクト指向モデルの解説。原点であるSimula、SmalltalkやRubyのオブジェクト指向、ActorやErlangのアクターモデル、Common LispのCLOS、C++やJavaのオブジェクト指向など、それぞれ異なるモデルを解説している。

 中井悦司氏の「KVMサーバー仮想化の実践活用」連載が、libvirtdの解説とvirshからの操作について。PCリフォーム連載が、2010年製のオフィス向けPCを2万円で買い、NICを追加し、IPFireでUTMを作る。カーネル新機能連載が、cgroupsでプロセス数を制限するpidsコントローラー。

 「Linux超入門」連載がテキストエディタ回で、geditの各種機能や、nanoとvimのクイックイントロ。「LibreOfficeの書類作成術」連載が、2段組の会報誌を作る例。LPIC連載が、ユーザーやグループの作成や変更のコマンド。

 巻頭レポートが、Ubuntu 15.10ベータ版、IntelのスティックPCであるCompute Stick、Raspberry Pi Foundation謹製の7インチタッチディスプレイ。フリーソフト連載がUnity 5。美女Linux連載が、mountまわり。世界のディストロ連載が、脆弱性発見用のKali Linux。

 毎度おなじみマンガ「#!シス管系女子」が、標準エラー出力を標準出力といっしょにリダイレクトする方法。

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad