Hatena::ブログ(Diary)

iWA’s 雑記@はてな出張所 RSSフィード

2015-02-19

備忘録: 第6回 コンテナ型仮想化の情報交換会@東京

ぅぉぅ、何年ぶりの日記だこれ(^^;

Dockerとか齧りはじめたところに案内を見掛けたので参加してみたら、知らんキーワードがぽこぽこ湧いて出たので備忘録としてリンクとか貼っておく。

その他。

2011-11-02

[][][] SubversionとRedmineのアカウント共通化(プロジェクト毎にグループ化可能)

※2011-12-26 Redmine-1.3.0 に合わせて改訂。

Redmine-1.2からユーザテーブルにsaltが追加されたが、mod_auth_mysqlがRedmineのsaltの掛け方に対応していないので、パッチを当てる必要があった。変更点は以下の通り:

  • mod_auth_mysqlにパッチを当てる指示を追加。
  • 「AuthMySQLSaltField salt」を追加。
  • 「AuthMySQLPwEncryption sha1」を「AuthMySQLPwEncryption sha1-rm」に変更。

SubversionとRedmineのアカウントを共通化する事例はいくつかあったが、グループ認証を加えようとしたら、AuthMySQLGroup* の設定方法の詳細も設定例もほとんど無くてえらく試行錯誤したのでメモ。

用意するもの

設定

Apacheの設定に以下の設定を加える。

<VirtualHost ......>
  ......

  ### Subversionの設定
  ###
  ### Redmineのユーザテーブルを用いて認証を行う
  <Location 【Subversionリポジトリパスの基点】>
    DAV svn
    SVNParentPath 【Subversionリポジトリ群を格納するディレクトリ】

    AuthName 【Realmの指定】
    AuthType Basic
    Require valid-user

    AuthMySQLEnable On

    # my.cnfの設定に合わせて変更
    AuthMySQLSocket /var/lib/mysql/mysql.sock

    # Redmineのdatabase.ymlの設定に合わせて変更
    AuthMySQLHost 【MySQLサーバホスト名】
    AuthMySQLUser 【MySQLユーザ名】
    AuthMySQLPassword 【MySQLパスワード】
    AuthMySQLDB 【MySQLデータベース名】

    ### Redmineのテーブルとの紐付け
    # Redmineのユーザテーブル
    AuthMySQLNoPasswd Off
    AuthMySQLUserTable users
    AuthMySQLNameField login
    AuthMySQLPasswordField hashed_password
    AuthMySQLSaltField salt
    AuthMySQLPwEncryption sha1-rm
    # グループの設定。プロジェクト識別子をグループとして扱う
    AuthMySQLGroupTable "users, members, projects"
    AuthMySQLGroupCondition "users.id = members.user_id and projects.id = members.project_id"
    AuthMySQLGroupField "projects.identifier"

  ......
  </Location>

  # リポジトリ毎にアクセスできるアカウントを制限したい場合は以下を追加
  <Location 【個々のSubversionリポジトリパス】>
    # 下記のどちらかを設定
    Require user 【RedmineログインID】
    Require group 【Redimeプロジェクト識別子】
  </Location>

  ......
</VirtualHost>

参考資料

2011-10-25

[][] git clone https://ID@HOST/... できない場合の暫定対策

Cygwinにて、ID付きのURLでgit cloneしようとすると、Password:プロンプトが出てもパスワードが入力できない。(入力元がptyを向いていないせい?)

パスワードをファイルに書くので、対策としてどーよと思わないではないが、以下の方法で対処できる。

  • ~/.netrc に、ホスト/ID/パスワードを書く (以下githubの例)
    machine github.com
    login githubID
    password githubパスワード
    
    ※一応上記に加えて「chmod 600 ~/.netrc」しておく。
  • git cloneを実行するとき、URLには『IDを含めない』。(含めるとパスワードを聞かれるので意味なし)

2011-07-05

[][] (Windows|Microsoft)UpdateでのMS-IMEの復活を阻止する

どっかに書いたかもしれないけど忘れたので、ここに再度メモ。

MS-IME以外のIMEを使っていると、(Windows|Microsoft)Updateを実行する度にMS-IMEが復活する場合がありますが、この原因は実はOfficeに付属するMS-IMEにあります。

よって、MS-IMEの復活を阻止するためには、こいつをアンインストールしてやればOKです。以下はOffice 2003でのアンインストール手順です。

  1. 「コントロールパネル」を開く
  2. プログラムの追加と削除」を開く
  3. Microsoft Office 2003 の「変更」ボタンを押す
  4. Microsoft Offce 2003 セットアップのメンテナンスモードオプションで「機能の追加/削除」を選択して「次へ」を押す
  5. アプリケーションごとにオプションを指定してインストール」をチェックして「次へ」を押す
  6. Microsoft Office」→「Office 共有機能」→「入力システムの拡張」をクリックして「インストールしない」を選択
  7. 「更新」ボタンを押す

2010-10-05

[] Emacs23の日本語関連coding-system一覧

NTEmacs23でのskkの設定でハマったので、とりあえずメモ。

  • その他のISO-2022-*系 (わけわかんねー)
    • iso-2022-7bit
    • iso-2022-7bit-lock
    • iso-2022-7bit-lock-ss2
    • iso-2022-7bit-ss2
    • iso-2022-8bit-ss2
    • iso-2022-int-1
    • iso-2022-cjk
    • iso-2022-cn
    • iso-2022-cn-ext
    • iso-2022-kr

2010-10-03

[][] Google Developer Day 2010 Japan 参加メモ

周回遅れ気味だが、せっかくメモったのでさらしてみる。

[] 基調講演

HTML5

  • クラウドならベンダロックインしない」⇒ いや、GAEに依存すると思いっきりロックされるじゃん(^^;
  • HTML5対応ブラウザ一覧の順序が、何気にIE9がトップ。Google Chromeは、シェアよりもテクノロジドライバの役目の方が大きいのかも。
  • ブラウザのGPUサポートによるパフォーマンスアップが意外とインパクトが大きかった。
  • ブラウザで使えるデバイスAPIの範囲がどんどん広がってる ⇒ 将来的にブラウザだけで何でもカタが付く時代になるのかねぇ……。(それはそれでどーなんだ)
    • デバイスオリエンテーションAPI
    • 音声認識 (inputなどのHTMLタグに属性を付加することで、音声による入力が可能)
    • ローカルファイルへのアクセス/ブラウザへのドラッグ&ドロップ (セキュリティは大丈夫なの?)
    • Web SQLデータベース (規格化されていないはずだが、将来はどうなるの?)
  • Chrome Web Store
    • Google Chromeの画面から、Webアプリの発見や再発見、およびマネタイズができる。
    • 後で梯子外されたりしない? (Google Waveという「前科」があるので不安が拭えない)

Android関連

  • 日本のAndroidデバイス総スルー状態を何とかしてくれ……。
  • 7inch Galaxyは良さげ。
  • エラーレポートの機能は確かに欲しい。
  • アプリを「盗め」ないライセンシングサーバ
  • テザリング ⇒ 日本で使えるの?
  • モトヤフォントがcontributeされたのは素晴しい。
  • 日本androidの会1万人、ってそんなにいるのか(^^;
  • Android Appsの日本のシェア: アプリ数5位、購入数(or金額?)2位 ⇒ デバイス本体のリリース状況が今一つなのに、がんばるなぁ。

Google App Engine関連

Google日本語入力

DevQuiz

パックマン解かなくても参加できたっぽい。

[] Google App Engine についての最新情報

  • Pythonプリコンパイル機能 ⇒ CPU時間が半分以下。(実時間は半分になってないけど)
  • TaskQueue
    • キューのサイズを指定可能。単位がTBまであるのにはワロタw
  • BLOBにURLが付けられる。ただしパブリックURLなので注意が必要。
  • 1000件制限がなくなった。(30秒制限は依然有効)
  • バックグラウンドタスクは制限を延長する予定。
  • マルチテナンシ機能。namespaceを指定可能。ドメイン名をnamespaceに指定することも可能。
    • ○ datastore, memcache, taskqueue
    • × blobstore

後半はひたすらマルチテナンシ機能の説明だが、割とどーでもいー。(実際に何か作るなら使うだろうけど^^;)

[] Apps Marketplace で広がるクラウドビジネスチャンス

Google Apps for Business: Gmail, Google Docs等の企業向け有償提供。

提供機能

導入状況

    • 250万社
    • 2,500万アカウント (×6,000円=1,500億円/年。さすがワールドワイド……)
    • 3,000社/日新規サインアップ

Google Apps Marketplace

Google Appsには、業務管理ソフトウェア(顧客管理/販売管理、承認フロー/決算フロー、モバイル決済など)のたぐいが無い。

⇒ Google Apps Marketplace: サードパーティが、Google Appsを拡張したWebアプリケーションを販売できる。(余計にベンダーロックインが怖いんだが^^;)

全体の位置付け

  • Google Apps for Business (Google自身が提供)
  • Google App Engine for Business (有償/サポート/技術サポート付き) (導入企業による自社開発)
  • Google Apps Marketplace (サードパーティからの提供)

社内システムとの連携も可能。(いわゆる「ハイブリッドクラウド」?)

Marketplaceの利用について

  • 技術的にサポートしなければならない機能
    • OpenID (認証)
    • OAuth (認可)
    • (現在リリース未定) Billing API for Google Checkout + License API (20%レベニューシェア)
  • 費用
  • その他
    • Google規約準拠 (←意外と地雷?)
    • Googleのサービスと連携したものであること

[] Part1: Google App Engine for Businessの概要 / Part2: 新しいGoogle Cloudサービス

Googleのサービスの位置付け:

  • SaaS: Google Apps, Google Apps Marketplace
  • PaaS: Google App Engine
  • IaaS: Google Storage (……IaaS!?⇒ビルディングブロックなのでIaaSと考えた、とのこと)

Google App Engine for Business

現在の利用状況:

Google Storage for Devlopers

  • データフォーマット、データ量、データ保持期間は自由。
  • アクセスコントロールあり。
  • API連携あり。

機能概要:

価格:

  • $0.17/GB/月
  • アップロード: $0.10/GB
  • ダウンロード: $0.30/GB

Google Storageを利用するアプリケーション

Prediction(予測) API

テキストの言語を予測して返す?

例: カスタマーセンターでのメールの言語別ルーティング

  1. Google Storageにアップロード
  2. 学習
  3. predict
Google BigQuery
  • adhoc analysis
  • SQLライク問い合わせ言語
  • REST/JSON-RPC/Google App Scripts
  • 数秒程度で結果が返る
  • スケーラブル

例:

  1. Google Storageにアップロード (CSV?)
  2. BigQuery Tableにインポート
  3. SQLで問い合わせ: SELECT ... FROM ... WHERE .... GROUP BY ... ORDER BY ... LIMIT ...;

その他:

  • MySQLインスタンスで動いている?
  • 将来的に、パーティショニング/シャーディングに対応予定。

[] Google Chrome の Developer Tools

Firebugのようなものだが、Firebugのポートではない。Google Chrome の一部。(= WebkitのWebインスペクタ)

リリース間隔は、開発版が週に1回。

主な機能

  • Mastering DOM
    • DOMを自由に編集することができる。
    • イベントのモニタリングができる。(よくわからない。FirebugAPIらしい。要調査)
  • Analyzing Network Activity
    • リソースについて、リクエスト/レスポンス等各種情報が取得できる。
  • Debugging JavaScript
    • デバッガ上でJavaScriptの編集ができる。(ただし元ファイルには反映されない)
    • イベントの再発行も不要? (→ 挙動がよくわからなかった。どういう操作をすればいい?)
  • Identifying performance issues
    • プロファイルパネルを開いて(?)、画面を動かすと記録される。
    • JSレベルでは簡単に見えても、ブラウザ自体の処理に時間がかかるケースがある。
    • Timelineを開くと、JSだけでなく、ブラウザの処理(再レイアウト/再レンダリングなど)もわかる。
  • Understanding memory usage
    • メモリプロファイラがある。
    • 処理前後のスナップショットを取って比較することで、メモリリークを把握することができる。(スナップショットの取得が手動なのはちょっと残念)

その他のフィーチャー

Q&A

[] Chrome Extension/WebApps のご紹介とアップデート

GoogleI/Oの時点でアクティブユーザは7千万人。

Chrome Extension

  • Chrome Extensionも1つ1つプロセスが独立している。
  • 以下、Chrome Extensionの話が続くが、Extensionの技術的概要を聞いたことがある人には基本的な話なので省略。
  • ExperimentalにSidebarがある!!

Chrome WebApps

Chrome WebStore

[] ライトニングトーク

メモってるのだけ紹介。

  • 「平日のこんな時間に仕事もしないで」www
  • App Inventor: プレゼン自体を同ソフトを使ってAndorid端末上でやってるのがインパクト大。
  • GAE/JRuby: JRubyがGAE上で使いもんにならないことだけは理解したw
  • OAuthの話: メモが「後でプレゼン資料が見たい」だけ書いてある(^^;
  • ToriSat: 有料なのは正しい戦略だと思う。
  • 建築物の現場検証に3Dテクスチャ+ARなどなど: 所属もお名前もわからんけど、えらく実用的ですごかった。
  • HTML5デモ: そうか、HTML5でプレゼン資料を作成すると、iframe内でデモできるんだ……。あと、ajaxでiPhoneをリモコンにしているのが面白かった。
  • Google Wave本の話(番外編): (-人-)
  • WebSocketサーバ: 商用WebSocketサーバの紹介。コアのコード自体は「しらすプロジェクト」にてOSSとして公開。(でも作ってるのは中の人一人)
  • DevQuizの答え合わせ: しりとりは深さ優先探索で解ける。パックマンは最高得点18.2(補正後)。敵がいない状態の場合「中国人郵便配達問題」相当。敵については、適当にウエイト入れたり、進化的アルゴリズムを使ったり、だそう。

2010-09-20

[] BOM付きUTF-8ファイルはテキストファイルではない

では何か? 構造のあるデータ、すなわちバイナリである。C言語*風*に書けばこんな感じ。

struct {
  char signature[3];
  char body[n];
};
  • バイナリなので、shebang(“#!”)が動作しないのは当然である。
  • バイナリなので、catでつなぐとゴミが混じるのは当然である。
  • バイナリなので、grepで行頭からの前方一致に1行目が引っ掛からなくてもそれはgrepのせいではない。
  • バイナリなので、splitしたら1つ目のファイル以外にBOMが付かなくてもそれはsplitのせいではない。

BOMを付けるか付けないかの違いは好みの問題ではない。テキストデータを、テキストファイルとして保持するか、バイナリファイルとして保持するかの違いなのだ。

2010-08-12

[] 実行可能jarに外部jarを含めるためのライブラリ調査

実行可能jarを作ろうとして、jarに外部jarを含めようとしたら、NoClassDefFoundError を投げてコケる。調べてみると、以下のような問題があるらしい。

外部ライブラリを含む場合の問題 - JARファイルをダブルクリックで実行

で、さらに調べてみると、これを解決するライブラリがいくつか見付かった。(参考: JarClassLoader)

この種のライブラリは、ソースコードを自分のプログラムに含める必要があるため、ライセンスには特に注意を要すると思われる。そこで、JarClassLoaderのページで挙げられていた類似プロジェクトのライセンスを確認してみた。

プロジェクトライセンス最終リリース (バージョン)
Classworlds独自ライセンス? BSD似だが項目数が多い2003-12-04 (1.0)
Meta Jar UtilitiesGPL v2 & Apache ライセンス 2.02002-08-16 (1.7.1)
One-JAR修正BSDライセンス2010-07-15 (0.97)
Embedded jar classloader
in under 100 lines
不明2008-10-30
jar in jar loader
(Eclipse内蔵用)
EPL v1.02009-11-05 (1.3)
JCL - Jar Class LoaderLGPL v3 or later2010-05-03 (2.2)
JarClassLoaderGPL v2 & 商用ライセンス2010/02/18 (1.24)

とりあえず、ライセンス的に無難&リリースが新しいのはOne-JARだろうか。

2010-08-05

[] NTEmacs 23 に乗り換える(途中)

前々から気になりつつも、面倒&特に利点無しだったので放置していたのですが、flymakeを使ったらMeadowが頻繁に落ちるので、ついにNTEmacs23への乗り換えを決意しました。

ということで、とりあえずメモ。なお、インストール等は Cygwin 1.7 の bash 上で作業しています。

NTEmacs 23 バイナリの入手

http://gnupack.sourceforge.jp/docs/current/UsersGuide.html

NTEmacsを C:\opt\emacs 以下に展開。

hiwin-mode

gnupackから直接抽出 → site-lisp/hiwin-mode

tabbar

gnupackから直接抽出 → site-lisp/tabbar

APEL

http://www.jpl.org/elips/apel/

make EMACS=/opt/emacs/bin/emacs install

LIMIT (FLIM)

http://www.jpl.org/ftp/pub/m17n/

make EMACS=/opt/emacs/bin/emacs install

SEMI

http://www.jpl.org/ftp/pub/m17n/

make EMACS=/opt/emacs/bin/emacs install

SKK

http://openlab.ring.gr.jp/skk/index-j.html

SHELL=`cygpath -am $SHELL` make EMACS=/opt/emacs/bin/emacs install

Wanderlust

http://www.jpl.org/elips/wl/snapshots/

make EMACS=/opt/emacs/bin/emacs install

WindowsISO-2022-JP対応

http://nijino.homelinux.net/emacs/cp5022x.el

cd /opt/emacs/site-lisp
wget http://nijino.homelinux.net/emacs/cp5022x.el

フォント設定

http://www11.plala.or.jp/metameta/takuayu_papa/emacs2.html

⇒ えせBDF Fontにしよう!(new)

文字コード設定

http://nijino.homelinux.net/emacs/emacs23-ja.html

上記だけではまだ問題が出たので、若干改変

@@ -1,5 +1,15 @@
--- orig.el	2010-08-06 00:08:30.312500000 +0900
+++ new.el	2010-08-06 00:10:14.531250000 +0900
@@ -1,5 +1,15 @@
 (cond
  ((not (string< mule-version "6.0"))
+  ;; 機種依存文字
+  (require 'cp5022x)
+  (define-coding-system-alias 'euc-jp 'cp51932)
+  ;; decode-translation-table の設定
+  (coding-system-put 'euc-jp :decode-translation-table
+		     (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
+  (coding-system-put 'iso-2022-jp :decode-translation-table
+		     (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
+  (coding-system-put 'utf-8 :decode-translation-table
+		     (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
   ;; encode-translation-table の設定
   (coding-system-put 'euc-jp :encode-translation-table
 		     (get 'japanese-ucs-cp932-to-jis-map 'translation-table))
@@ -7,6 +17,8 @@
 		     (get 'japanese-ucs-cp932-to-jis-map 'translation-table))
   (coding-system-put 'cp932 :encode-translation-table
 		     (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
+  (coding-system-put 'utf-8 :encode-translation-table
+		     (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
   ;; charset と coding-system の優先度設定
   (set-charset-priority 'ascii 'japanese-jisx0208 'latin-jisx0201
 			'katakana-jisx0201 'iso-8859-1 'cp1252 'unicode)
@@ -18,8 +30,6 @@
 	 (get 'japanese-ucs-jis-to-cp932-map 'translation-table)
 	 (coding-system-plist 'utf-8))
   (set-terminal-coding-system 'utf-8-for-putty)
-  ;; 機種依存文字
-  (require 'cp5022x)
   ;; East Asian Ambiguous
   (defun set-east-asian-ambiguous-width (width)
     (while (char-table-parent char-width-table)

その他の参考ページ一覧

2010-05-31

[] iPhoneで撮った動画に手を加えようとしたら心が挫けた

当方、コンテナとCODECの区別が付く程度の動画初心者なのだが、うっかり動画処理に手を出したら、この世界の深淵を垣間見た気がした(^^;

先日、四季の森公園にお出かけしたとき、写真だけじゃなくてムービーも撮ってみた。が、家に帰って再生してみると、手ぶれが激し過ぎて見れたもんじゃない(-_-; まぁ、画面も見ずに胸元にささげながら歩き回っていたせいなんだけど。

しかしこの手の問題をかかえているのは私だけであるはずがない、ということで適当にぐぐってみる。ツール自体はすぐに見付かった。

早速ダウンロード、インストール、実行でファイルを開こうとしてみる。……MOVは食ってくれないらしい。

そこで、MOVをAVIに変換するツールを探してみる。……多過ぎて、どれを選んでいいかわからねぇ。とりあえず、

を入れてみたけど、2010年現在だと何を入れるのが適当なんだろーか?

で、適当に1個変換してみるかー、と思って起動してみる。……なんかCODECがいっぱいあって、またしてもどれを選んでいいかわかんねーよ!! まぁ、コンテナの載せ替えができればいいんじゃないかと思って、ビデオをx264、オーディオをaacにしてみる。

……なんか一所懸命変換してるっぽいんですけど。*1

……VirtualDubで開こうとすると、そんなCODEC知らんと言われるんですけど。

よくわからんので、デフォルトになってた xvid + mp3 で変換してみると、ようやく VirtualDub が食ってくれた。(何が最適なのか未だにわからん)

ややうんざりしつつ、Deshakerの設定画面を開いてみる。……意味がさっぱりわからねぇ。(この時点で既に挫けつつある) 全くわからんので、参考元のブログ記事そのまんまの値を突っ込んで変換してみる。……CPU(Core2Duo 3GHz)のパフォーマンスメーターが振り切れているにもかかわらず、遅々として進まない。生まれて初めてGPGPUの必要性を体感した瞬間であった。

この辺で心が挫けたので、目的は全く果たされていなかったりする。リベンジするにしても、どこから手を付けるべきかねぇ……。

*1:後から「Original」という選択肢があったことに気付く。が、どっちにしろVirtualDubは食ってくれなさそう

2010-05-11

[] 簡単ログイン(ケータイID認証)問題を3行で説明してみる(α版)

普通の人が変更するのは難しいが、悪人がなりすますのは簡単なID/パスワードを、全てのサイトで使い回すのと同じ。

  1. IDの変更は、普通の利用者にとっては難しい。
  2. しかし、悪意のある利用者がなりすますのは簡単。(なことが多い)
  3. しかも、簡単ログイン対応のどのサイトにも同じIDが送信される。

……という理解でOK?

2009-12-17

[][] Session Fixation対策

Wicketで、ログイン時にJSESSIONIDの再発行を行おうとしたんだけど、ぐぐってもぐぐってもなかなか情報に行き当たらない。なんとか見付かった「2008-07-27 - okkeyの日記」を参考にキーワードを工夫することで、ようやく「[WICKET-1767] Protection against Session Fixation - ASF JIRA」にたどりついた。

おもいっきりはしょると、Wicket-1.4以降なら「Session#replaceSession()」を呼ぶだけでいい。中身はokkey氏の日記のコードと同じだったりするが:-)

2009-09-30

[][][] WTP上のTomcat6でH2をデータソースにする

一回できたのに忘れてしまったのでメモ。なお、EclipseにはPleiadesが組み込まれてるものとする。

多分これでいいと思うんだけど、間違ってたら誰か突っ込んでくれ。

WTPで動かすTomcat6に外部のjarを登録する

「Servers」プロジェクトを選択して右クリックメニュー

⇒ 「実行」 ⇒ 「実行の構成」

⇒ 「クラスパス」タブを選択

⇒ 「ユーザー・エントリー」にH2jarを追加

⇒ 「適用」を押す。

H2JDBCドライバとして登録する

「Servers」プロジェクトのサーバ定義フォルダ(例えば「ローカル・ホスト の Tomcat v6.0 サーバー-config」)にある「context.xml」を編集する。

<Context>〜</Context>の内側に以下を追加。

<Resource name="TestDB"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive ="-1" -- テスト用なので適当 --
          maxIdle="-1" -- 〃 --
          maxWait="-1" -- 〃 --
          username="test_web"
          password="test_web"
          driverClassName="org.h2.Driver"
          url="jdbc:h2:~/workspace/TestDB" />

H2サーバとして起動している場合は「jdbc:h2:tcp://localhost/~/workspace/TestDB」のように指定する。

Connectionオブジェクトを取ってくる

public class ClassOfSingleton {
    @Resource(name = "TestDB")
    private DataSource ds;
    ...
    void method() {
        Connection conn = null;
        try {
            conn = ds.getConnection();
            ...
        } catch (SQLException e) {
            ...
        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                ...
            }
        }
        ...
    }
}

2009-08-31

2009-08-24

聴神経腫瘍が判明orz

  • 8月某日: 突然耳の聴こえが悪くなったので耳鼻科に行ったら、突発性難聴、と診断される。原因はほとんどの場合不明らしい。症状が出て2〜3週間だったら投薬で治ることが多いそうだが、よく考えると3月頃にもおかしかった記憶が……。4月頃の健康診断でも聴力が落ちてたんだよなぁ。
  • 8月某日: 1週間ほど薬を飲んでみたが、あまり効かず。低音部は多少改善。かかった町医者が夏休みに入るので、市立病院を紹介してもらう。
  • 8月某日: 診断とともにMRIを予約。突発性難聴はたいてい原因不明だが、MRIにて0.5〜1%程度の確率で原因がわかることもあるそうな。
  • 8月某日: 経口薬があまり効かなかったので、点滴を一週間程度実施。終了後の聴力検査では、やはり低音部が多少改善レベル。
  • 8月某日: MRI実施。
  • 本日: MRIにおもいっきり影が写ってますたorz 確率1%未満の外れクジを引くとは……。ぐぐってみると、思ったより怖い状況のよーな。ぅぅぅ……。

2009-08-18

[] MinTTYが進化してる

Andyさんから「試してみてー」と直メールが来たので、0.5(まだαだが)を動かしてみたら、SJISとeucJPが通るようになってる……。

実は、Cygwin-1.7自体、ja_JP.SJISとja_JP.eucJPも使用可能で、何もUTF-8にしないといけないわけではなかったりするのだが、需要あるのか? これ(^^;

あと、コードポイントがU+10000以上の文字も使えるようになったとのことで試してみたら、vimで普通に編集できたので驚いてたり。bashの挙動は怪しかったが……。

2009-07-27

[]「Cygwin-1.7はレジストリを使いません」

http://cygwin.com/ml/cygwin/2009-07/msg00924.html

HKLM/Software/Cywin/setup/rootdir

that rootdir is only used by setup.exe, not by Cygwin.

なん……だと……? じゃあどーやって / を検出してるんだ?

http://cygwin.com/ml/cygwin/2009-07/msg00928.html

- Check for Cygwin DLL path, for instance C:/cygwin/bin/cygwin1.dll.
- Strip DLL name and parent dir --> C:/cygwin
- Create default mount points from here:
    C:/cygwin / whatever binary,auto 0 0
    C:/cygwin/bin /usr/bin whatever binary,auto 0 0
    C:/cygwin/lib /usr/lib whatever binary,auto 0 0

UNIXでも$0からの相対パスを拾うのはよくやる手だったのに予想できなかった(^^;;;

2009-07-23

[] Cygwin勉強会中止しました

直前で申し訳ありません、参加者少数につき、Cygwin勉強会は中止させていただきます。m(_ _;m

2009-07-22

[] Cygwin勉強会(7/24)まだ空きあります

現在参加予定者2名orz

しかもfd0さんは出れるかどうかわからないとかー(^^;;;

さすがに1名だったら中止かなぁ。とりあえず明日決めよう。

ちなみに私は以下のネタを準備中。

  • れっつ とーく うぃず あっぷすとりーむ!!
  • 俺のCygwin環境 (Windows XP版)

2009-07-16

[] Cygwin勉強会(7/24)参加者募集中

参加者少数のため、中止しました。m(_ _)m

http://atnd.org/events/1096

少人数な上に募集期間1週間て、逆に人が集まらなかったりして……(^^;;;

# 7/21現在3名(^^;;;

2009-07-13

[] Cygwin-1.7.1 準備中らしい

作業漏れ項目の確認段階に入った模様。今月中には出るかなぁ?

正式リリースされると、setup-1.7.exe が新たな setup.exe になるそうな。

2009-07-01

ついったー(2)

なんか遠回しの圧力を受けたので、ちと使ってみる。

http://twitter.com/vmi_jp

# まぁ、出遅れまくりなので、そらvmiとか取れんわなー。

2009-06-17

key value store

オレンジニュース経由、http://twitter.com/understeer/status/2178888905 より:

DB学会の発表なのにRDBの話が無く、key value storeだけだった。もうRDBは終わったのか?永続化可能なKVSでもういいってことかな?

10年くらい前から「永続化と検索ができる、連想配列配列があればRDBいらないよ!!」と思い続けていて、OODBXMLDBには裏切られてきたのだが、ついにそういう時代が来たってことかなぁ。

2009-06-14

[] Cygwin ML

説明が下手なせいで、なんか話が通じてない(^^;

# NOZAKIさんごめん、URL出しちゃった(^^;;;

2009-06-09

Andr0id端末げとー!!

Google Developer Day行ってきた。メモの量が多いので、レポートは気が向いたときにでも(^^;

とりあえず、入手した端末で遊ぶか:-)

2009-06-08

ついったー

アカウントだけ取って放置してたら、一度もメッセージを投げてないのにフォローが付いた。何故に(゚◇゚;

2009-06-04

[] wcwidth for CJK

祝・commit完了!!

コマンドプロンプトのタイトルバーが文字化けするバグも直ったし、俺の知ってるバグはこれで全部かな。

2009-05-26

[] 続々・wcwidth と East Asian Ambiguous Character Width 問題

[NetBSD][Cygwin] wcwidth(3)その2くらいより:

しかし世の中には -c- で -ISO10646-1なフォント、ちゅう頭の痛いモノも存在しますが。常にwcwidth=1って…

そんな邪悪なシロモノに付き合う必要性は認めません(^^;

# 何考えてンなフォント作ったんだ……何も考えてなかったんだろうなぁ。

NetBSDでは近い将来(※ただしNetBSD時間)対応しようと思ってます。

了解です。何か突っ込まれたときのネタにさせていただきます。

# ≒光画部時間?:-)

あと2なのはCJKだけで、V(=vietnam)の場合は1の方がよさげ。

参考になります。Vについてはあとで修正依頼を出しておこう。

以下余談。

規格原理主義からすると、JISやGB、KSそしてUnicodeでは文字幅は規定してないちゅう建前

アプリケーションと表示機能が切り離されている、固定ピッチフォントベースの環境(要はCUI)に特化した標準規格*1が必要なんだと思います。

……どーすればそんなの確立できるのだろう。

*1アプリと端末がお話する仕組みとか、アプリが端末とは無関係に動く(テキストフォーマッタとか)ときの振舞いとか。

2009-05-24

[] 続・wcwidth と East Asian Ambiguous Character Width 問題

[NetBSD][Cygwin] wcwidth(3)より:

そもそもL prefixはC localeつまりPortable Character Set以外ダメで、multibyteは扱えないでっせ

動けばいいやーレベルのテストコードなんで大目に見てつかーさい(^^;

# 文字コードも表示してるのは、期待通りにコンパイルされなかったときに検出するためだったり。

対応するのは定義ファイル書けばすぐなんですが、/usr/share/localeの

容量問題というのがあるので、誰か文句言ってくるまでは放置しようかと思ってたとこ。

なるほど。単に容量の問題であって、積極的に「1でなければならない」と判断してそうなってるわけでないんですね。

ちなみに、直すとしたら「LC_CTYPE=ja, ko, vi, zhなら2を返す」になると思っていいですか?

I'm not happy with the idea of a cygwin-specific solution (or workaround).

なんて言われて、このやろー、と思ったりしてたので、ある程度反論できるネタが欲しいな、と。

そもそもUnicodeとwcwidth(3)って結合文字とかとも食い合わせ悪いですしねぇ、困ったもんだ。

まったくで。┐('〜`;)┌ その割には意外といろんなとこで使われてるんだよな……。

もうwcwidth(3)はobsoleteにすべきですが、替わりになるlayout engineの標準が無いという。

どこに向かって叫べば改善されるんでしょーねぇ……。

個別パッチに付き合うのはもう嫌だポ……。

2009-05-23

[] wcwidth と East Asian Ambiguous Character Width 問題

ことの発端@Cygwin-ML

こりーな「CJK Ambiguous Width は無視するぜ!!」

おれ「冗談ぢゃねぇ、LC_CTYPE=ja, ko, vi, zhなら2を返せ*1

こりーな「おk」

とますかくかくしかじかという問題があるし、そもそもそんなworkaroundは許せん」

おれ「そういう実装もあるらしい(*1のこと)ぞ。それに、おまいの言ってることは実用上問題にはならん」←いまココ

次の反論説得対策にakrさんの言ってるような実装を探してみる

が、見付からない……。

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <wchar.h>
int main(void) {
  wchar_t w[] = L"α■";
  wchar_t *wp;
  int i;
  setlocale(LC_ALL, "ja_JP.UTF-8");
  for (wp = w; *wp; wp++)
    printf("%06X[%lc]: %d\n", *wp, *wp, wcwidth(*wp));
  return 0;
}
Debian lenny (glibc)0003B1[α]: 1 / 0025A0[■]: 1
CentOS-5.3 (glibc)0003B1[α]: 1 / 0025A0[■]: 1
FreeBSD-7.20003B1[α]: 1 / 0025A0[■]: 1
NetBSD-5.00003B1[α]: 1 / 0025A0[■]: 1
Solaris 100003B1[α]: 1 / 0025A0[■]: 2

うーん。特にSolaris 10はわけわからん……。どなたか、上のコードのどちらも2になる処理系をご存知でしたら教えてください。

East Asian Ambiguous Character Width に対する wcwidth はどうあるべきか

俺はCJK(Vも?)の場合は2になるべきだと思うんだけど、glibcにも*BSDにも入ってないのは何で? kubotaさん(debianとこのホームが消えてる……)とか、Citrusな人とかが活動してたはずなんだけど、そこらへんの状況が今一つわからん。

調べてみると個別パッチだらけなので、いい加減なんとかならんもんか……。

*1:[mule-ja-2009:09582]より、akrさん曰く「wcwidth と wcswidth がそうなんじゃないでしょうか。LC_CTYPE に依存して決まります」とのこと。なんかMLアーカイブ変換が止まってるようでリンク張れない。