ペペロン頭脳

ソフトウェアエンジニアのメモ的なアレ。

読書感想文は、とてもおもしろかったです。


嘘です。嫌で仕方ありませんでした。

上記のエントリを読んで色々思い出してしまったので。
読書メモ、いいなぁ。これ読書感想文以外にも使えるよね。こういう進め方があるんだって小学生の時に知ってたらもう少し作文好きになれたかも・・

僕は読書が嫌いでもなかったのに語彙力が貧弱で、「おもしろかったです」以上にどうやっても言語化された思念を引っ張り出せない子供だった。
そして何より親を含む大人に対して感想やら心情やらをオープンにするのが恥ずかしくて耐えられないボーイだった。
そんな子供に対して「もっと自由に書いてみな。感想がないわけないだろ?」ってのはこの上ない絶望を与えるに等しい行為でしたね。

とにかく苦痛で仕方がない催し物でしたよ。

毎回あらすじと数行感想でごまかすだけの無意味なプロダクトが生まれていた。両親から「こんなのは感想文じゃない!」と怒鳴られても何を直したらいいのかわからず、相手が怒り疲れるのを待つだけの苦行。
ああセミ取りに逃げたい。

感想文じゃない作文は幾分気持ちが楽だった。
夏休み中の旅行なんかで起こったことを時系列で並べて、最後に「とても楽しかったです。」「また行きたいです。」で締めればいいだけだからだ。そんな工程表みたいな文は書くだけ無駄なのだが、当時はそのテンプレ以外に文章の型を知らなかったのだ。マジで。高学年になっても。
これまた両親に「何が面白かったのか、何を感じたのかを書けよ!(どんっ!)」と指摘されるが、書けない。そしていろいろアドバイスを受けるも原稿用紙に反映できない。そもそも自分が書いたクソ文が白日の下に晒されていて恥ずかしいことこの上ない。
ああザリガニ捕まえに行きたい。


たいていのことはある程度時間をかければ上達するもんだと思っていたのに、作文だけはどうアプローチすればいいのかわからなかった。市で最優秀賞とった作品読んで衝撃を受けるも、「すごい。俺のと全然違う・・」以上の感想なし。何が違うのかうまく言語化出来ない。小さな挫折。
でも夏が終われば忘れる。友達とミニ四駆を作ってバラして、ガリガリ君食って、BB弾を収集する。好きな子に嫌がらせをする。やがて思春期に、少年から、大人に変わる。

そんな感じで作文スキルについてはなんとなく、なんとなくで30歳近くまで生きてきた。
未だに書くの遅いし(研修アンケートとか最後まで残って書いてる)、長文まとめるのも苦手だし、なによりこのようなふざけた駄文に2時間以上掛けている。それでもなんだかんだで社会生活は送れている・・・

自分に子供ができたら

ひとまずは上の読書メモなりを活用して、順番に組み立てていこうぜ!ということになるのかな。学校側で何か教えてくれてるならそのやり方を尊重するが。でもシャイボーイ/ガールは宿題に両親が介入してくるのも苦痛で、ずっと見られてると硬直化してしまうから深追いはしないようにしたい。
それで様子見てみて、「作文わからん」「作文嫌い」ってなってもまあいいか、ってのもありなのではと思う。その辺の能力って思春期あたりに急に伸びたりすることあるじゃん。方法論は論理的思考力がしっかりしてきてからでもいいのではないか。
ということで自分語りに体力を奪われて若干めんどくさくなってきたので、ゆるゆる楽観論で締めに致します。

ハウツーみたいなのは安易に与えたくないって思っちゃうけど、自信喪失よりはいいのかなぁ。

なにはともあれ子供ほしいです。

WindowsPCセットアップメモ

再セットアップ用のメモ書き

この前会社のPCが起動しなくなってしまい、結果としてOSインストール以降のセットアップをやり直す羽目になってしまった。
(先日騒ぎになったWindows Updateのバグとは関係ない)
半日くらいかけて必要なソフトを入れ直していたんだが、いざやってみるとぱっと思い出せないものもあったりしたのでこの際に絞って整理してメモ化。

ジュタクでキャクサキジョーチューを続けるのであれば、今後もドザーであり続ける以外の選択肢はないのだから。

Google先生
Editor/Viewer
Git

Github上の個人ツールだったり、ローカルのリポジトリで育てているコードの管理に細々とGitのお世話になっている。
ちなみに職場はVSS一択という環境。

UNIX環境
  • Cygwin - Cygwin前提で組まれたバッチがあるので。
アーカイバ
ユーティリティ系
  • Orchis - シンプルなポップアップ&階層型ランチャー
  • QTTabBar - エクスプローラー拡張。タブ化をはじめ痒いところに手が届く機能盛りだくさん
  • MacType - Windowsでもきれいなフォントレンダリングを望む人向け。中華製。
  • RapidEnvironmentEditor - 環境変数の編集に。これがOS標準搭載されるべき。
  • Unlocker - 「別のプログラムがこのフォルダーまたはファイルを開いてい」てもロック解除できるます。32bitと64bitで別バイナリなので注意。
  • Macrium Reflect Free - ディスクをまるごと圧縮イメージ化できるバックアップツール。対象パーティション選択可。イメージファイルのマウントも可。しかも高速。リストアも簡単かつ完全復元だし無料でここまで出来るので重宝してる。日単位でスケジュールバックアップしておけば、ディスクに物理障害が発生しても新品ディスクにイメージ書き戻すだけで復旧完了。
  • SpaceSniffer - ディスク内のディレクトリとサイズをグラフィカルに表示してくれる。無駄に容量食ってるフォルダを探すときなどに。
  • Everything - 超高速ファイル検索エンジン。リアルタイムにレスポンスが返る。正規表現使用可。
  • AkabeiMonitor - mono bar 2 っていうスキンがシンプルで好きなんだけどもう公開されてない。
  • StickyPaper - 付箋。なんだかんだデスクトップにあると便利。
  • マウスふるふる - 電源オプションの変更権限がない場合、バッチ処理中にスタンバイ移行させないための苦肉の策。

ほか、定番のVisual StudioEclipseJDKAndroid SDK/NDKなど。

NDKなSQLiteで"unable to open database file"

最近はお仕事でAndroidさんとお付き合いしているんですけど、これがまたコア機能をNDKゴリッゴリで書いてあるプロジェクトをフォークしてゴニョる感じでして。
もともとAndroidなんてHello WorldレベルだったのにいきなりNDKかよ先達も周りにいねーよ、という状況で泥沼の一月半ほどを過ごしてまいりました。
ネイティブビルドをCygwinなバッチで走らせていたのを全部Eclipseでできるようにしたり、よっしゃーと思ってndk-debugしてみたらエラーエラーで調べたところ外部のAndroid.mkインクルードさせてるとndk-gdbが辿れないと知って愕然としたり。

そういうのと並行して、AndroidSDK標準のJavaSQLiteラッパーでなくてNDKなCライブラリを使うコードのテストでハマっていたのが解決したのでここに記す。

現象

sqlite3.c/h をラップしているお客様謹製ライブラリをAndroid実機テストしていたのだが、一部”unable to open database file”のエラーメッセージが返ってくるクエリがあった。

  • CREATE DATABASE/TABLE, INSERT, JOINしないSELECT: 正常に実行される
  • JOINありのSELECT: エラー!
  • VACUUM: エラー!

構成と設定

DBファイルは「内部ストレージ」にディレクトリを切って置いている。ディレクトリもファイルも読み取り/書き込みOKな権限設定。
さらにAndroidManifest.xmlにもpermission.WRITE_EXTERNAL_STORAGEを指定済み。

解決法

どうやらjournal等の一時ファイルを作れなくてエラー吐いてるようだ・・。パーミッションの設定は適切なはずなのに。
ということでググりまくったところ、StackOverflow大先生が教えてくれました。
java - Why fopen gets fail in native method due to permission issue from Android-NDK application? - Stack Overflow

#include <unistd.h>

// ファイル作成する処理の前にこの一行を追加するだけ。1回でよい。
// リンク先では"/sdcard/"指定してるけど、機種によって違うかも?
chdir("/path/to/内部ストレージのルート");

詳しく調べてないんだけど、どうやらネイティブプロセス起動時は"/"がカレントになっている。
そこから”/sdcard/”下にファイルをつくろうとすると、permission.WRITE_EXTERNAL_STORAGEを設定していても不正な操作になってしまうようだ。
そこでカレントを”/sdcard/”に移してやることで解決・・・ということらしい。


こういうマイナーな問題について調べるのほんと辛い。必要だし仕方ないんだけど、原因のあたりを付けるまで時間かかるし、解決しても達成感がまるでない。場当たり的な知識ばかり増えていく気がするけど、これも蓄えていくしかないのかな・・
これ以外にもADTバージョンアップしたらぶっ壊れたり、うっかりJDK1.7使ってたらEclipseプラグインうまく入らなかったり、Android.mkの書き換えやら構成変更でつまずいたり。
コード書く以外の調査やら試行錯誤に大幅に時間と体力を奪われてて、ここのところ陰鬱な気分で仕事してたけど明日からはゴリゴリ実装していけそう。

Android NDK ネイティブプログラミング

Android NDK ネイティブプログラミング