2009年12月26日土曜日

Remove tweets by hashtag from your time line in Twitter.

指定したハッシュタグをつけてるツイートは自分のTLには流れないように設定できたらいいと思わない?
というTwitterでの発言を受けて、思わずUserScript作ってみた。

removeTweetsByHashTag
http://userscripts.org/scripts/show/64964

消去する発言が一瞬見えてしまうのが玉に瑕。
Greasemonkeyはページの読み込みが完了した時点で実行されるので、これはどうしようもない……

Greasemonkeyの独自関数(GM関数)を使っているので、Firefox+Greasemonkeyな環境の他は動作想定外。
まぁ、SafariのGreasekitとか、かなり互換性が高いらしいのでいけるのかな?

How to use:
ユーザスクリプトのインストール後、Twitterにログインしている状態(もちろんTLのページにいる状態)で、Firefoxウィンドウ右下のGreasemonkeyのアイコンを右クリック。
「ユーザスクリプトコマンド」のところに
・Add hashtag[delTweetsByHashTag]
・Remove hashtag[delTweetsByHashTag]
・Reset hashtags[delTweetsByHashTag]
の三つのメニューがあるので、あとは何となく分かってください。

あと、unsafeWIndowを使っているのでセキュリティ的にアレですので、お気をつけてお使いください。

<追記>
入力したハッシュタグの扱いの処理バグがあったので修正。
あと、ページをリロードしなくても新しい設定を反映させるように改良。
出来れば、Reset hashtagsしてから上記ページでスクリプトをインストールしてください。

作るときも、特定の発言の要素を削除する処理はすぐ出来たけど、パラメータをユーザが設定出来るようにするところのが時間かかったわww。グリモンのGM_setValue関数とかすっかり忘れてましたよ

2009年12月20日日曜日

[memo]My envilonment of HT03-A(Android)

件の一件で環境を作り直羽目になったので、ちょこっとインストールするアプリの一覧などを覚書として残しておく。

無線LAN設定
 自宅のプラネックソWLANルータに接続出来るように
ロック解除パターン設定
データの同期設定(俺はカレンダーだけで充分)
目覚まし用にアラーム設定
電源管理ウィジェット
FlickWnn
 トグル入力無効
 かなQWERTYキーボード自動切換無効
 英字QWERTYキーボード自動切換常に有効
 数字QWERTYキーボード自動切換無効
 大きめキーサイズ(縦画面)
 Flick判定基準 Level5
 自分の名前を辞書登録
QRコードスキャナー
モバイルGoogleマップ(アップデート)
芋煮
 docomoのアカウント設定
MyQR:アドレス帳へ簡単登録
TaskManager(WingTsengさんの物・同名のアプリが複数ある)
ASTRO File Manager
Droid Comic Viewer
 Scale mode FitHeight
 Reading direction Rigth-to-left
 Load last comic無効
 CBR/RAR support有効
BatteryLife
tCalendarWidget
Sticky Note
自作笑い男ウィジェット

A bug in Android screen lock

日本Androidの会東北支部懇親会での出来事。
戯れにスクリーンロックを弄っていたらロックが解除できなくなりました……

Android機HT03-Aのスクリーンロックは、予め登録しておいたパターンで画面をなぞって解除するのですが、それを連続して何度も間違えると「30秒後にやり直してください」というメッセージが現れて一時的に入力が出来なくなります。その時画面に新たに「パターンを忘れた場合」ボタンが現れるのですが、これが曲者。
このボタンを押すと、GoogleアカウントのIDとパスワードの入力画面に遷移します。


ですが、この画面でいくら正しいアカウントを入力してもロックは解除できないというバグがあります。しかも一度この画面に来ると、再起動してもどうやっても通常のパターン入力画面に戻れない仕様です。
Twitterで嘆いていたら、米Googleのフォーラムで同じ現象に出くわした方の投稿があるのを教えていただきました。
http://www.google.com/support/forum/p/Google+Mobile/thread?tid=627eed11de37ecba&hl=en

ただし、全ての機でこのバグが出るわけではないようです。上のフォーラムの投稿へのレスでも、問題なかった、というものがあります。私のHT03-Aは標準ROMのver1.6だったのですが、標準ROMのver1.5では問題なくアカウント入力でロック解除できたという話も聞きました。

いずれにしろ、ロックされたままになってしまった私のHT03-Aにはリセットという手段しかありません。。。
ファクトリリセット(工場出荷状態にリセット)の手順は
・Homeキーを押しながら電源ON(Homeキー+終話キー)
・リカバリユーティリティの画面(HT03-Aと!マークの絵の画面)が現れる
・再度 Homeキー+終話キーで、リカバリメニューが表示
・「wipe data/factory reset」を選択
 リセット処理は10秒ちょっとくらいで完了します。
・完了したら「reboot system」を選んで再起動

参考:Taosoftware: Android 工場出荷状態に戻す(Factory Reset)方法:(http://www.taosoftware.co.jp/blog/2009/07/android_factory_reset.html

Tohoku Android group 2nd session

第2回 日本Androidの会 東北支部 発信会&懇親会に行ってきました。

今回は日本Androidの会幹事の渡辺知男さんのお話を聞きました。
私に東北支部の発足を教えてくださった方です^^

Androidで組み込みっぽいことをやってみよう、というお話。
Android機とGainer(http://gainer.cc/)を繋いでゴニョゴニョと……。
まぁ、モノホンの組み込みをやるとなるとこんなのとかこんなのとか、こんなのを使う訳で、実際素人が手出し出来るレベルじゃないよ。ちょっと触ってみる程度ならGainerでよくね?などなど
それと、その時使われた資料は日本Androidの会の技術資料ページにあるそうなので、興味がある方はどうぞー。

話の初めの方はメモしながら聞いてたんですが、いつの間にやら手が止まって聞き入ってしまってました。

発信会の後は懇親会/忘年会
会場が、私が学生時代に酔っ払ってご迷惑をお掛けしたお店だったことに妙な因縁を感じたり……
実際、今回も酔っ払って唾飛ばしまくりながら喋ってた気がします orz

加えて、懇親会の最中に愛機HT03-Aにアクシデント。
帰り道ツイッター出来ずにウズウズする自分に気付いて、すっかり依存症だと再認識。

2009年12月9日水曜日

TwitterUserProfileExtension


なんとなく作ったかんたんGreasemonkeyスクリプトを公開。

http://userscripts.org/scripts/show/63833

Twitterのユーザのプロフィールページに、関連サービスへのリンクを付加します。
・付加するサービス
Favotter
TwitPic
vidly
携帯百景(movapic) ※Twitterと同じユーザ名の場合だけ有効

気が向いたら追加していきます。

Special Thanks to Pasta-K

<追記>
勘違いしてましたが、携帯百景ってTwitterのアカウント使う訳じゃないんですね。。。そりゃユーザ名が違ったりする筈だわ。。。

<追記2>
Twitgoo追加
それとふぁぼったーのアイコンをデータスキームで埋め込みに変更。これ以上あそこが落ちる要因増やしちゃあかんわな。

書き忘れてたけど、Googleマップへのリンクも付加します。
「iPhone〜ジオタグ〜」みたいなのも対応してます。

2009年12月5日土曜日

Same shortcut key...



これはひどい。

Ubuntu 9.04 Gnome Terminal

<追記>
ディスクブートしたUbuntu 9.10ではこんな感じだった。


つーわけで、未訳の「C_lose Terminal」を訳しておいた。
https://translations.launchpad.net/ubuntu/karmic/+source/gnome-terminal/+pots/gnome-terminal/ja/431/+translate

2009年12月4日金曜日

Skype updates failed?

まだUbuntu9.04な私です。
ついさっき、アップデートマネージャでSkypeをアップデートしようとしたらskype-commonパッケージでエラーが出てアップデート失敗。
とりあえず、再度アップデートをかけてみたら今度は問題なくインストール完了。
なんだったんだろ?

一応バージョンを書いておく
2.1.0.47-0medibuntu0.9.04.1 (jaunty)

2009年11月25日水曜日

Tohoku Android Group 1st Session.

第1回 日本Androidの会 東北支部 発信会に行ってきました。

今回のメインは、有限会社エボテックの畠山さんのセッション。
エボテックでは様々な組込み開発の実績があるそうですが、「Androidでなら何が出来るだろう」というところから始まってプロジェクトが立ち上がり、ET2009ではAndroidを使ったデジタルサイネージのデモを出展したそうです。(ET2009行きたかった…… orz)
ET2009のエボテックの紹介ページ
http://imyme.chicappa.jp/ET2009/exhibitor/exhibitor.cgi?no=199

内容は、畠山さんが実際にAndroidでの組み込み開発に携わってみての感想を元にした、3つの視点から見たときのAndroidのお話。

・技術者目線
Androidを技術面で大雑把に言ってしまえば、「携帯電話向けの顔を持ったLinux」。
なので、既存のLinux開発のノウハウを流用できる。オープンソースなので、開発の初期コストが節約できる。しかもGUIセットでお得!
実際の開発としては、階層分けして作業が出来る。アプリ屋・ミドルウェア屋・ドライバ屋という具合。

・事業者目線
先日のET2009ではAndroidで盛り上がっていて、エボテックの他にもAndroid関連の出展が多かったそうです。
実際にAndroidで組み込みの技術に関係したビジネスをやるとするなら、ポーティングとかミドルウェア/ドライバの高速化やカスタマイズなどがあるだろう(もちろんアプリなどコンテンツ提供も)。

・利用者目線
メモ忘れ

とりあえずこんな感じでした。

「携帯機器向けのAndroidを組み込みで扱うのは余計な手間がかかるしどうなの?」という意見も出ましたが、今のAndroidを取り巻く市場に足りないのはこういう事業者目線なのかなと思いました。正直なところ、今まではAndroidを見るのは技術者目線ばかりという印象があったんです。それが最近になって、Android搭載端末が続々と登場し、日本でもHT-03A(HTC Magic)が発売されて、やっとAndroidが「ビジネス」として認知されだしているのは喜ばしいことだよなぁ、と。

次回の東北支部の活動は12月19日土曜日で、早めに発信会を終わらせて忘年会行こうぜ! という具合。

それと、エボテックさんが1月19日に仙台のイベントに出展するそうです。(イベント名聞き漏らして、ググってもそれらしいのが見つからず。。。)

<追記>
ご本人からコメントで補足情報いただきました。
ありがとうございます!

「ものづくりの集い」
平成22年1月19日(火)
 12:00~17:25
プラザ仙台ホテル 松島(東西)

まぁ、平日なので行けそうもないのですが…… orz

2009年11月15日日曜日

Alice Carroll problem in Tohoku IT Security study session.


第2回東北情報セキュリティ勉強会に行ってきました。

講演したのは、HASHコンサルティング徳丸浩さんと、MS09-047脆弱性の謝辞犯人nig_luceさん。
あと、お菓子。
講演の後にディスカッションなんかも行ったり。
それとあと、お菓子とか。

徳丸さんの講演内容は、この記事を読んでもらう方が早かったり → 発注者のためのセキュリティ http://www.hash-c.co.jp/d/20090906.html

一応、記憶をつらつらと書き出してみる。

Webアプリケーションのセキュリティとかって、契約に十分に盛り込まれていなかったりする。発注側としてはもし問題が起きた場合に責任の所在が曖昧になるのは避けたい。
ただし、「脆弱性が全くないこと」なんて契約に盛り込めるわけが無い。抽象的な記述のくせに、不可能だと一発で分かる記述なんて、どうしようもない。そもそもそれは、バグの範疇だったりする。
対応策としては、具体的な実装・検収方法を指定するなどある。ただし、諸刃の剣。コストが高くなってしまう。発注側が実装まで指定してしまうのは、開発側のノウハウを潰すことになったりするので。

では、他にコストを下げられる箇所があるか。
仕様策定時に、情報資産を個々にいちいち洗い出したりするが、それって毎度毎度やる必要があること? セキュリティに関する脅威とか、いちいち再確認してもどうせ決まりきってる。
また、絶対問題が起きない製品を作るなんて不可能。ならば、逆にリスクの許容範囲はどこまでか、を考える。問題を起点にして考えるのではなく、ベストプラクティスなセキュリティ対策でどこまで対応出来るのか、から考える。そして、ベストプラクティスなセキュリティ対策なんてのも、決まりきっている。

開発側としては、安全対策を施したライブラリを使ったり等々、開発標準を決めておけば良い。(IPAなどが開発標準のモデルを公開している)

そして、セキュリティに関して発注側が直接負担しなければならないコストは大したことがなかったりする。
(面倒くさくなったので残り割愛)


nig_luceさんの講演は、所謂ID3v2タグのアリス・キャロル問題(全然所謂じゃない点に付いてはご愛嬌)。

フザケた呼び方してますが、実は結構深刻だったりする。
講演では実際に、タグ情報に細工をしたMP3ファイルを再生しようとするとどうなるか、というのも行ってくれた。結果、Windows Media Playerが死亡。
ExplorerでもファイルアイコンにマウスオーバーしただけでMP3ファイルのタグ情報を読みにいくし、詳細表示モードでもそう。そして、内部ではタグ情報を得るためにWindows Media Playerと同じ処理をしようとするので、Explorerも死亡。

ちなみに言うと、報告から対応パッチが出るまで、8ヶ月経過してたそうな。


ディスカッションは殆ど雑談。でも、一応内容はセキュリティのこと言ってたよ!

というわけで、とても有意義な勉強会でした。
主催したまっちゃだいふくさん、スタッフの方々、他の参加者の方々、ありがとうございました。

第3回が楽しみだなぁ!!

参考:アリス・キャロル(Alice Carroll)ARIAの登場人物 - Wikipedia

2009年10月31日土曜日

How to remove(uninstall) Adobe AIR application, and where is it's profile?

Ubuntu9.10がリリースされましたが、まだ様子見で9.04のままです。
まぁ、TwitterでJapaneseTeamの中の人が「鯖に負荷がぁ!」と戦々恐々としているのを見たのもあるんですが。

で、そのUbuntu 9.04ですが、先ほど始めてAdobe AIRアプリをインストールしてみたのです。

TwitterのクライアントアプリSpaz(http://getspaz.com/)です。
サイトのDOWNLOADページで、SpazだけでなくAdobe AIRランタイム本体のインストールも一息にやってくれました。

で、肝心のSpazをちょっと動かしてみたのですが、どうにももっさり。。。
4年使っているHP nx6125のスペックがアレな気がするのですが、いずれにしても「こんなんじゃとても使えない!」というわけでさっさとアンインストールを決め込みました。

で、どうやってアンインストールするんだ?

パネルのアプリケーションメニューには、Spaz・Adobe AIRアプリを追加するためのインストーラ・Adobe AIR自身のアンインストーラ のショートカットはありますが、アプリ単体をアンインストールする手段が見当たりません。

Adobeのヘルプページにも、窓と林檎の場合の手段しか書かれていません。
・AIR アプリケーションのアンインストール
http://help.adobe.com/ja_JP/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7e5f.html#WS5b3ccc516d4fbf351e63e3d118666ade46-7e4e

試しにAdobe AIR自身のアンインストーラを立ち上げてみると、ウィンドウが出て「ランタイムをアンインストールすると以下のアプリが動かなくなるよ!」見たいな感じでSpazがリストアップされてました。
そういえばインストール時も、Spazは自前のインストーラでなくAdobe AIRのインストーラによってゴニョゴニョされてる様でした。で、AIRランタイム側でインストールされているAIRアプリを把握してるんだろうな(この場合ランタイムという表現は違う気がするけど)と思い、AIR本体アンインストールすればSpazも一緒に消してくれるかも!で、即実行。

で、まぁ消えたのはAIR本体だけだったわけです orz

インストール時の確認ダイアログで、/opt以下にインストールするよ!となってたので、見てみたら見事にSpazディレクトリがあって、その中身も無事(?)でした。。。

Adobeのヘルプページの林檎の場合のアンインストール方法(インストール場所から app ファイルを削除します。)を見る限りでは、/opt/Spazを削除しちまえば問題ないだろう、ということで
$ sudo rm -rf Spaz/

あとはプロファイルだな、と思いホームディレクトリ直下のドットファイルを見てみます。
.adobeなんてのがありましたが、この中身はFlash Playerのキャッシュでした。
で、どこにあったのかと言うと、.appdata という個性の欠片もないディレクトリ名。
ls .appdata としてやるとAdobe、Spaz.AIR.〜16進文字列〜.1、cookie_file.txtの三つのファイル&ディレクトリがありました。

つーわけで、
$ rm -r .appdata
として終了。

<追記>
端末でapt-getでremove出来ました。
spaz.air..〜16進文字列〜.1 って感じのパッケージ名になってる様です。

コメントありがとうございました。

2009年10月29日木曜日

Japan Android Group Tohoku Hub KickOff Meeting!

日本Androidの会(http://android.siprop.org/)東北支部のキックオフミーティングに参加してきました。

「立ち上げたはいいものの。で、これから何しよう?」という感じなので、
今回は参加者が各々意見を出していく、ちょっとしたディスカッションだけでした。
これから東北支部をやっていく上で、どんな組織?、どんな事をするの? ってなもんで。

「東北でAndroidを発展させていこう」
「東北からAndroidでビジネスを広げていこう」
「教育の現場でもAndroidを活用しよう」
「東北って括りじゃ広すぎるから、各県のグループのハブ的役割でもいいなじゃないか」
(この記事タイトルもわざとaffiliateとかlimbにせずhubとしてみました)
などなど、、、細かいところはうろ覚えですが

とりあえず、月イチくらいで集まりを持とう、ということになりました。
次は11月の第4水曜日……になる…筈

2009年9月7日月曜日

Develop Android apps with HT-03A(HTC Magic) and Ubuntu 9.04

ついに買っちゃいました HT-03A

そんでもって、さっそくアプリ作りをちょろっとやってみようと思い、EclipseにAndroid Development Toolを導入。この辺は他のEclipseプラグインと変わりはしないので割愛して説明する。とりあえず、実機(HT-03A)でHello Worldを表示させるところまで。
(エミュレータもあるけど、ウチのマシンには荷が重かったようで、起動画面のANDROIDロゴから全然進みませんでした orz)

・参考
http://developer.android.com/intl/ja/sdk/1.5_r3/installing.html
http://developer.android.com/intl/ja/guide/tutorials/hello-world.html
http://developer.android.com/intl/ja/guide/developing/device.html
このブログを読まなくても、これらのオフィシャルの解説ページを読めば大丈夫だと思うけど、3つめの実機でのデバッグを解説しているページはまだ日本語版が無いようなので、このブログが参考になれば幸い。

・環境
HP nx6124
Ubuntu 9.04 Jaunty Jackalope

Android SDK
http://developer.android.com/intl/ja/sdk/1.5_r3/index.html
からLinux版をDLして適当なディレクトリに展開。

Eclipse IDE for Java Developersのver3.5(Galileo)でPleiades1.3.0を導入済み。
そこにAndroid Development Tool(以下、ADT)をインストール。udpate siteは
https://dl-ssl.google.com/android/eclipse/
<追記>
どうにもEclipse起動時に渡すPleiadesのjarファイルへのパスがうまく通らない場合がある様で、gnomeパネルのランチャからeclipseが起動できない問題にぶち当たりました。潔くPleiadesを諦めるのも手です。
<追記終わり>

・初期設定
EclipseにADTをインストール後、一度Eclipseを再起動。
Eclipseの設定画面で、Android の SDK ロケーション にAndroid SDKのディレクトリを指定してやって、「適用」。

実機をUSB接続してデバッグツールとして使用するが、設定ファイルを一つ書いてやる必要がある。
ファイルパス:/etc/udev/rules.d/51-android.rules
内容:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

そしてこのファイルに実行権限を付加するために、次のコマンドを実行
sudo chmod a+rx /etc/udev/rules.d/51-android.rules


・実機側の設定
 設定 -> アプリケーション -> 開発 -> USBデバッグ
のチェックを入れる。

・プロジェクト作成
Eclipseのプロジェクトの新規作成画面で「Androidプロジェクト」を選択。
「新規Androidプロジェクト」画面で、
プロジェクト名:Hello
アプリケーション名:Hello, Android
Create Activity:HelloAndroid
ビルドターゲット欄で、Android 1.5を選択(Min SDK Versionが自動で3になる)
「完了」ボタン押下。

プロジェクト作成直後、プロジェクトアイコンに×マークが付いてたりするが、選択してF5キーで表示内容の更新をかけてやればOK(Pleiades1導入済みのEclipse上ではリフレッシュと表記されている筈)

・実機でのデバッグ
一応、PC側の設定ファイル・実機側のUSBデバッグ設定、がちゃんと行われているかどうかを改めて確認しておこう。
実機をPCにUSB接続しマウントする。PC画面上では何も起きない(または、通常のUSBメモリなどのように認識される)が、先ほどの設定が活きていれば既にEclipseのデバッグ操作が可能になっている。
Eclipseで、プロジェクトが選択された状態で、「実行」または「デバッグ」を行う。方法の選択ウィンドウが表示されたら、「Androidアプリケーション」を選択しよう。
実機側の画面に「Hello Android」と表示されたら成功!

・後始末
「実行」を行う場合、アプリケーションを実際に実機にインストールしてしまうようです。
そうなった場合、通常のAndroidアプリケーションと同様に、
 設定 -> アプリケーション -> アプリケーションの管理
から「Hello, Android」を探してアンインストールします。

2009年9月5日土曜日

How to management my books...

読んだ・持っている 本を管理するWebサービスをつらつらメモしていく。

読書管理ツール Bookboard.jp
http://www.bookboard.jp/

読書メーター
http://book.akahoshitakuya.com/

みんなの本棚 by BOOK OFF
http://www.mindana.jp/

ブクログ
http://booklog.jp/

to be continued ..?

2009年9月4日金曜日

add Twitter public timeline link(Greasemonkey script)

Twitterのページにpublic_timelineへのリンクを付けるGreasemonkeyスクリプト。
javascriptすっかり忘れて、調べながらチマチマ書いたら、こんなもんに10分以上かかっちまった。
// ==UserScript==
// @name           Twitter public_timeline link
// @namespace      mstssk
// @include        http://twitter.com/*
// ==/UserScript==

var li = document.getElementById("header").getElementsByTagName("li").item(0);
var newli = document.createElement("li");
var a = document.createElement("a");
var txt = document.createTextNode(" Public Timeline ");
a.href = "http://twitter.com/public_timeline";
a.appendChild(txt);
newli.appendChild(a);
li.parentNode.insertBefore(newli, li);

2009年7月26日日曜日

WPA mixid

ただのメモ
http://supportwiki.cisco.com/ViewWiki/index.php/What_is_WPA_mixed_mode_operation,_and_how_do_I_configure_it_in_my_AP%3F

Remove pppoeconf

ひと月ぶりの更新。いつものとおり、一番の読者ターゲットは自分自身。

----------------

Ubuntuでフレッツ光のPPPoE接続をするためには、pppoeconfというコマンドを使うと自動でネットワークの設定ファイルを書き換えてくれます。
しかし、先日無線LANのブロードバンドルータを購入し、この設定が不要になりました。

さて、ここで面倒なことが。
pppoeconfは設定ファイルへの書き込みは行ってくれても、設定を差し戻すのはやってくれないみたい。

ネットワーク接続をUbuntuデフォルトのNetworkManagerに返えしてやるには、一部のファイルを直接弄ってやる必要があります。(他に手段があったらごめんなさい)

/etc/network/interfaces
pppoeconfを使った後は、次みたいな感じになってると思います。
auto lo
iface lo inet loopback


auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet manual
デフォルトの状態は最初の2行だけです。それ以降の行はざっくり削除します。
これで、あとは再起動。
通知パネルのNetworkManagerのアイコンを見て、元の状態に戻っているか確認しましょう。

とりあえずここまででもいいのですが、まだPPPoEの認証情報が設定ファイルに残っています。そこらへんも消してしまいたい、ということもあるでしょう。
私が気づいた限りでは、
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
に書かれていました。(他にもあるかも)

環境:Ubuntu9.04 Desktop

<追記>
「networking 書き換えただけじゃあ、init.dとかの初期処理でppp走っちゃってんじゃね?」と思ったけど、上の記事のを行う前に、ppp 関連のパッケージをごっそりpurgeしちゃったので検証しませんでした。

2009年6月26日金曜日

Run Emesene and Skype quietly.

私は、メッセンジャーとしてEmesene、加えてSkypeも使っていて、ログイン時に自動起動するようにしています。
自動起動させるには、パネルメニューの
システム > 設定 > 自動起動するアプリ
で、好きなアプリの起動コマンドを追加してやれば良い。

しばらくはそれで満足していたのだけれども、この設定のままだとログインの度にEmeseneとSkypeのウィンドウが現れる。。。
別にウィンドウはいらないのよ。パネルにアイコン出しておいてくれればいいだけなのよ。

というわけで、EmeseneとSkypeでウィンドウを表示させずに起動する方法

Skypeの場合はわざわざ記事にするほどでもない気がするほど単純。
Skypeの設定ウィンドウを見れば、もうそこには「システムトレイ内で最小化したSkypeを開始」のチェックボックスが待っています。

Emeseneでは、起動オプションに「-m」または「--minimized」を付けてやると、最小化した状態で起動してくれます。
(ver 1.0だと、GNOMEパネルの通知スペースにしまわれた状態・ver 1.5だと、ウィンドウが最小化した状態)


ちなみに、私 Pidgin使ってません。。。

Show update notification icon in GNOME Panel with Ubuntu 9.04

先日やっとUbuntu 9.04をクリーンインストール。
アップデートの通知方法が変わって、以前のようにパネルの通知領域にアイコンが出るのではなく、いきなりアップデートマネージャが開くようになりましたが、以前のように使いたい、という人は結構いるんではないかと

JauntyJackalope/ReleaseNotes/ja アップデートの通知方法が変更されました
https://wiki.ubuntu.com/JauntyJackalope/ReleaseNotes/ja#%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%AE%E9%80%9A%E7%9F%A5%E6%96%B9%E6%B3%95%E3%81%8C%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F

上記のように説明されてはいますが、「コマンド一発叩けばいいよ」でUbuntuがターゲットにしている筈のユーザ全員が満足できるわけが無い!そんなのUbuntuの信条じゃないやい!と勝手に考えて、コマンドを使わない別の方法を紹介します。

1. パネルメニューで
 アプリケーション > システムツール > 設定エディタ
を起動。(設定エディタが見当たらないなら、パネルメニュー上で右クリック「メニューの編集」で、設定エディタの「表示」にチェックを入れましょう)

2. 設定エディタで/apps/update-notifier/を見つけて、auto_launchのチェックを外す。(これと同じことをコマンドでやるのが、リリースノートで紹介されている方法なのです。)

3. 次回ログインからパネル右上の通知領域に、8.10以前のバージョンの様に通知アイコンが表示されます。


・おまけ

通知アイコンを右クリックした時に現れる「通知の表示」チェックボックスですが、このチェックを外すと、/apps/update-notifier/に勝手にno_show_notificationsとdefault_actionという値が増えます。どちらも、8.10以前では標準で使ってた値なんでしょうが、9.04からはスキーマすら無くなってます。

auto_launch:false
no_show_notifications:true
の状態にしておくと、アップデート通知が分からなくなってしまいますのでご注意を。(default_actionの値にもよるかな?)

2009年6月20日土曜日

Comix accepts directory as a command line argument

Ubuntuのリポジトリにも入ってる、Comixという漫画ビューアを使っています。
そして、つい先日やっと重い腰を上げてUbuntu9.04をクリーンインストールしたのです。
もちろん、Comixも再びインストールしたのですが、以前ならば端末で
$ comix ディレクトリ
とすれば、ディレクトリ内の画像を表示してくれたのに、何故か「ディレクトリは開けません」とエラーを吐かれてしまうようになっていました。

http://comix.sourceforge.net/changelog.html
Comixのchangelogを見ると、Ubuntu8.10で提供されていたver3系ではディレクトリを指定してやることが可能になっていたようです。
しかし、Ubuntu9.04で提供されているComixはver4.0.1です。changelogを見ると、ディレクトリ指定ができるのは、ver4系では4.0.3からだというのが分かります。

http://sourceforge.net/tracker/index.php?func=detail&aid=2604916&group_id=146377&atid=764987
このページを参考に、ディレクトリを弾いているコードを書き換えてやってもいいのですが、実はgetdebに最新版のdebファイルが上がってるのでそっちを使いましょう。
(それと、上記ページの書き換えるように指定しているソースコードはちょこっと間違ってます)

http://www.getdeb.net/
getdebは、アクセスしたユーザのUbuntuのバージョンを判別します。9.04なら9.04に対応しているとして登録されているパッケージしか出てきません。「comix」で検索しても、見つからない、と言われますが、その画面の下に検索対象のバージョンを変更する案内が出てますので、8.10(Ubuntu Intrepid)を選べば、comixが出てきてくれます。(8.10向けとして登録されていますが、9.04でも問題なく動きます。)

2009年6月15日月曜日

GNOME Panel config


パネルメニューまわりの設定の設定について調べてたら、なんだかちょこっと複雑っぽいので、まとめ。

デフォルトだと左上にある「アプリケーション」メニュー内の、各種ショートカットの実体は
/usr/share/applications/ 以下の.desktopファイルとしてシステムにインストールされている(/usr/local/share/applications/ にも入ってたりする)。
ただし、「アプリケーション」メニュー上で右クリックの「メニューの編集」から編集を行うと、
~/.local/share/applications/ にシステム側から.desktopファイルがコピーされて、それに編集内容が書き込まれる。さらに、メニューで削除をしても、.desktopファイル自体は残りつづけて、ファイル中のHidden値がtrueに設定するのでメニューに現れなくなるだけ。
(ちなみに、「メニューの編集」ウィンドウは実は alacarte というアプリケーション。参考:http://mstssk.blogspot.com/2008/11/gnome-panel-2alacarte.html

パネル上のランチャショートカットやアプレットは、GNOME Panelの設定として~/.gconf/apps/panel/以下に保存される。これらの設定にアクセスするには設定エディタ(gconf-editor)を使う。
ただし、パネルの設定のデフォルト値は /etc/gconf/schemas/panel-default-setup.entries に記述されている。

パネル上のランチャショートカットの設定内容は、起動するアプリケーションの実行ファイルを直接指定している訳ではなく。前述の.desktopファイルを指定している。設定は/apps/panel/objects/以下にアイコンごとにある。
パネル上のランチャショートカットを右クリックから編集すると、編集内容を反映した.desktopファイルは ~/.local/share/applications/ ではなく
~/.gnome2/panel2.d/default/launchers/
以下に保存される。
システムや~/.local/share/applications/以下の.desktopファイルを指定している時は、フルパスが/apps/panel/objects/以下の各アイコンごとの設定項目に書き込まれるが、編集した後の~/.gnome2/panel2.d/default/launchers/以下のファイルを指定している時は、ファイル名のみが書き込まれている(ただ、firefox.desktopとだけ書かれていたりする)。

2009年6月6日土曜日

List directories in current directory.

「echo *」を実行するとどうなる?
http://itpro.nikkeibp.co.jp/article/COLUMN/20090602/331173/

echo *
を実行すると、あんなことが出来るらしい。

じゃあ、
echo */
とすると……
実はlsだとこれ出来ないんだよね。まさか、echoで代替出来るとは。

参考(その他の方法)
linuxでディレクトリだけを表示させる方法 - 教えて!goo
http://oshiete1.goo.ne.jp/qa2760104.html

<追記>
「ls -d */」で出来るそうです。。。嘘付いてごめんなさい。
コメントくれた方ありがとうございました。

2009年6月1日月曜日

Configure shortcut key with Windows Key(Super Key).

Windowsで私がけっこう使っているWin+Mのショートカット。開いているウィンドウをすべて一発で最小化して、デスクトップを表示してくれます。
Ubuntuでも同じ機能がちゃんと付いていて、デフォルトでは下側パネルの左端にアイコンがあり、これをクリックするか、Ctrl+Alt+Dで出来ます。

ただ、Win+Mに慣れちゃってるので、Ctrl+Alt+Dはなんか押しづらい。。。

というわけで、Win+Mに変えてしまえばいいじゃん、と思い立ったが吉日。
パネルメニューの システム > 設定 > キーボード・ショートカット から設定だぁッ、、、あれ? 出来ない。。。

(WinキーはUbuntuではSuperキーという表示になっている。)

左Winキーを押しながらMを押そうとするんだけど、この設定ツールだとWinキーはCtrlやAltのような組み合わせ用のキーとしては認識してくれず、ほかのアルファベットキーなどのように扱われてしまう。

どうしたもんかと思ったら、launchpadで対処法が投稿されてた。
https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/194979/comments/16

ホーム・フォルダを開くショートカットの設定方法を説明してます。

方法 1:
========
1)システム->設定->キーボード->レイアウト->Other options
Alt/Win キーの挙動: "Meta を両側の Windows キーに割り当て" を選ぶ。

2)システム->設定->キーボード・ショートカット
"ホーム・フォルダを開く" を選び、好きなキーの組み合わせを押す。

例えば、Win+Eなら"Mod4+E"と表示されるでしょう。

方法 2:
========
1)"設定エディタ(gconf-editor)"を起動する。

2)"/apps/metacity/global_keybindings" で
"run_command_1" の値を "<Super>E" に変更。

3)"/apps/metacity/keybinding_commands" で
"command_1" の値を "nautilus" に変更。

(これは、Alt/Winキーの挙動が"デフォルト"か"Meta を両側の Windows キーに割り当て"(訳注)に設定されている場合のみ有効です。方法1を見て、適宜対応してください。)

方法 3 (コマンドラインでの操作):
====================================
gconftool-2 --type string --set /apps/metacity/global_keybindings/run_command_1 'E'
gconftool-2 --type string --set /apps/metacity/keybinding_commands/command_1 'nautilus'

P.S: "/apps/panel/global/menu_key" に関するコマンドラインでの操作を検索しているうちに、gconfに関する別の面白い情報も見つけました。
http://docsun.cites.uiuc.edu/sun_docs/C/solaris_9/SUNWgndoc/GNOMEADMIN/p5.html

とても面白い。(^_^)

訳注:私の環境だと、設定項目は英語のままで"Super is mapped to Win-keys"と表示されていましたが、一応ここも訳しました。

私は極力少ない設定で済ませたいので、方法2を選択。
上記の解説だと、"command_1"にnautilusコマンドを割り当ててますが、デスクトップを表示させる動作は"show_desktop"として既に値が存在しているので、そいつを編集して<Super>Mとしてやります。


ちなみに、"ホーム・フォルダを開く”の設定エディタ上の項目は "/apps/gnome_settings_daemon/keybindings" にあります。けど、そこに"<Super>E"としてやってもショートカットは動作してくれず、しかも勝手に画面テーマが切り替わるという現象が。。。

※ Ubuntu 8.10環境で確認しました。バージョンが違うと設定の位置が違ってたりするのはご愛嬌。

2009年5月22日金曜日

I wana just add VBR-header to mp3 files...

ffmpegを使って
ffmpeg -i smile.flv -acodec copy output.mp3
ってな感じでflv動画から音を抜いてるんですが、これをやったあとに付きまとう問題点。。。

元の音声がVBRだろうと何だろうと、-acodec copyでとにかく抜き出せるのは良いものの、抜き出して出来たファイルにはVBRヘッダが無いので、プレーヤによっては再生時間がとんでもないことになっちゃったりします。
例えば、実際の再生時間は4分程度の筈なのに、32分として扱われちゃったり。

なので、VBRヘッダをファイルに付加する方法を探してたんですが、linux環境向けのツールを見つけられませんでした。。。

なので、とりあえずWindows向けのVBR Header Makerをwineで使用。
うわぁ、、こんな簡単に出来るのになぁ。。。

2009年5月16日土曜日

'conffiles' in deb packgage.

リポジトリに入ってなかったり、GetDebなんかにもdebファイルが無かったりするソフトは、tar.gzなソースを落としてきて自分で適当な箇所に置いてやる必要がある。
PHPの開発にAptanaを使おうかと思ってるんだけど、そうですdebファイルが無いんです。
後々の管理のことを考えると、debでインストールしてやったほうが楽だと思うんだけどなぁ。。。

そんな訳で、「じゃあ自分でdebファイル作っちまえばいいじゃねぇか」と思って調べてたら、ちょうど以前のエントリにコメントを頂いた。
Skype error[Ubuntu8.10][pulseaudio]
http://mstssk.blogspot.com/2009/01/skype-errorubuntu810pulseaudio.html
akira さんのコメント...
    purgeなら設定も消去されました。


そういえばこの、removeでは設定ファイルが残って、purge指定してやると設定ファイルまで消えるってのはどうなってるんだろうと思い、そこらへんも調べてみた。

$ sudo apt-get -d install pulseaudio
-dオプションを付けてapt-getを実行し、インストールせずパッケージのダウンロードのみをさせる。debファイルは /var/cache/apt/archives に落ちてくる。このやり方だと依存関係が解決されて、他のパッケージもいろいろ落ちてくるけど、、、まぁいい。

debファイルの実態はただのアーカイブなので、file-rollerとかで開けちゃう。
中身は、
 debian-binary … ただのテキスト。debファイルのフォーマットverが書かれている。
 data.tar.gz … インストールされるファイルが収まっている。
 control.tar.gz … インストール時に必要な依存関係etc.etc.の情報が収まっている。
の三つ。

control.tar.gzの中身を見てみると、
 control … 依存関係やパッケージ概要などなど書かれている。
 md5sums … data.tar.gzの中身のハッシュ値が書かれている。
 postinst,postrm,preinst,prerm …… インストール/アンインストール時に実行されるスクリプトなど。
ここまでは知ってたんだけど、もう一つconffilesというファイルがあった。中を見てみると、件の記事で扱った/etc/X11/Xsession.d/70pulseaudioや、他にも設定ファイルっぽいパスが書かれている。
conffilesが何なのかと言うと、
http://www.debian.org/doc/manuals/maint-guide/ch-dother.ja.html#s-conffiles
conffilesにパスを書いておけば、設定ファイルとして扱われ、removeでは削除されず、purgeで初めて消えてくれるそうだ。

ところで、これらを調べていて思ったのは「purgeしなかったパッケージの設定ファイルは全部残っちゃってるんじゃね?」ということ。
removeして設定ファイルだけ残ってしまっているパッケージを簡単に調べる方法は無いもんかと思い、取り合えずSynapticを開いたら、、、あったあった。
Synapticの左ペインを「状態」別表示にして「未インストール(未設定)」を選択すればいい。。。うわ、結構ある。。。


<雑記>
「未インストール(未設定)」って誤訳だよねぇ。「未設定」だと「設定されていない」という意味になっちゃう。LANG=Cな状態での表示は「Not installed(residual config)」。residualの意味は「残っている(もの)」「余り」とかいう意味だから、やっぱり「未設定」ではない。「未インストール」もニュアンスが違うよなぁ。。
でも良い訳が思い浮かばないんだよなぁ。。。

2009年5月11日月曜日

How to create deb package simply.

http://www.aptana.com/dev/index.php/Creating_a_Debian_Aptana_IDE_package
Aptanaのサイトにあったdebファイル作成の解説がシンプルでいい感じだったのでメモ。
上記ページ中では説明が省かれてるけど、run-aptana scriptってのは、Aptanaのための環境変数を設定しながらaptanaを起動させるスクリプトのこと。詳細はAptanaのインストール解説ページとかに任せる。

追記……するかなぁ……

2009年5月9日土曜日

Seagate HDD strikes me!

Seagate 3.5インチ内蔵HDD 1.5TB 7200rpm S-ATA/300 32MB ST31500341ASSeagate 3.5インチ内蔵HDD 1.5TB 7200rpm S-ATA/300 32MB ST31500341AS

Seagate
売り上げランキング : 2547

Amazonで詳しく見る
by G-Tools


発症は稀とのフレコミでしたが、大当たりでした。
http://gigazine.net/index.php?/news/comments/20090118_seagate/
http://wikiwiki.jp/buyhdd/?7200.11%C9%D4%B6%F1%B9%E7
http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207931&NewLang=ja
http://pc11.2ch.net/test/read.cgi/jisaku/1240139074/l50

ファームウェアを更新すれば良いらしいですが、それは内臓SATA接続が前提なので、ノートPCしかない私にはどうすることも出来ない orz
大学行ってる友人に話したら、研究室のお遣いで4つ買ったら、全部当たりということがあったらしいです。

流れ
・1.5TBのHDDを買って大喜びで帰宅
・一緒に買った外付け用HDDケースにHDDを入れる
・Gparted起動
・パーティションテーブル作成。(この最初の1回だけ認識できた)
・おっとntfsでフォーマットするにはntfsprogsを入れる必要があるのか
・ntfsprogsをインストール
・さぁてGpartedを起動して今度こそフォーマット……
・HDD認識されねぇEEEEEEE ←いまここ
・買ったパーツショップに連絡予定「フォーマットもしてないのにロックされました orz」
to be continued...

<追記>
原因が判明。
HDDケース付属のUSBケーブルの接触不良でした。斜め上な肩透かし orz

2009年5月8日金曜日

Aptana PHP memo

Aptana Studio
http://www.aptana.com/

Aptana PHP
http://www.aptana.com/php

Aptana PHPの現行バージョンは1.0だが、Alpha版の1.1はSmartyテンプレートの作成などにも対応している。
Aptana PHP 1.1のインストール方法
http://www.aptana.com/docs/index.php/Aptana_PHP_Plug-In_1.1

php.iniのinclude_pathの内容を、Aptana PHPの設定のPHP Libraliesに指定してやる。これをしないと、デバッグ時にSmartyをrequireしようとするところでNot Foundエラーが出る。

http://aptana.com/docs/index.php/Installing_Aptana_on_Linux
http://andrewbleakley.com/blog/2008/11/01/installing-and-running-aptana-on-ubuntu-810/

2009年5月7日木曜日

PHP Smarty tips

最近PHPをちょこっとずつ勉強中。
Smartyのテンプレでよく使うであろうパターンの覚書。

escape修飾子と予約変数$smartyの組み合わせ

Smartyのテンプレでは、変数に修飾子というものを付加して表示結果を弄れる。escape修飾子は文字列中の記号などをエスケープしてくれる。
また、予約変数の$smartyを使うと、テンプレート内からPHPの定義済み変数にアクセスできる。
よくあるwebの入力フォームでは、入力エラーの場合に入力内容をそのまま表示仕返してやったりする。それを、Smartyを使えば次のようにテンプレートに記述することで済む。
<input type="text" name="hoge" value="{$smarty.post.hoge|escape}">

関数も修飾子として使える

escapeなどSmartyで用意されているものだけでなく、PHP側の普通の関数もテンプレート内から修飾子として呼び出せる。
例えば、入力内容をそのスクリプト自身にsubmitさせてやるようなフォームなら、basename関数を修飾子として使い、actionの指定もテンプレート内で動的に書き出せる。
<form action="./{$smarty.server.SCRIPT_NAME|basename}" >

2009年4月16日木曜日

What's "LANG=C" ?

コマンドを、日本語環境でなく英語環境で実行したいとき、LANG=Cと付けて実行してやったりする。
$ date$ LANG=C dateのそれぞれの実行結果を見比べると一目瞭然。

しかし、このCってのがよくわからん。英語環境を表すのにはenというのも用意されていて、実際に$ LANG=en dateとやると、やはり英語で表示してくれる。

じゃあ、Cって何なのよ。と思い調べてみた。
それで見つけたのが、次のページのこの記述
http://mailman.linuxchix.org/pipermail/techtalk/2002-November/013691.html
'LANG=C' sets the locale for gnumeric to the C locale. The 'C' locale is
defined as the "default" locale for applications, meaning that their
strings are displayed as written in the initial code (without passing
through a translation lookup).
それっぽい和訳
「'LANG=C'はgnumericのロケールをCに設定してくれる。この'C'ロケールというのは、アプリケーションにとっての"デフォルト"のロケールと定義されている。つまり、(翻訳をせずに)ソースコードに書かれているそのままの文字列を表示してくれるという訳だ」

注釈1)引用元ページでは、たまたまgnumericで実行した場合を例にあげているだけであって、上でやってるようにdateコマンドとか、もちろんその他のコマンドでもLANGの役割は同じ。
注釈2)Unix系OSでのアプリケーションの多言語対応は、素のままの表示メッセージの翻訳を各ロケールごとに作成し、アプリケーションの実行中に逐一対応するメッセージを翻訳ファイルから探してきて表示する。LANG=Cではそれをしない、ということ。

つまり、"英語で表示"というわけではなく、"翻訳しない"というだけの意味だそうだ。
もし、元々スワヒリ語のメッセージ表示を行うように作られたソフトがあったなら、LANG=Cを付けて実行した場合の表示はもちろん英語でなくスワヒリ語表示になるだろう。

結局、何故'C'という文字が当てられているのかはわかりませんでした。。。

<追記 20090430>
C言語のCみたいです。(コメントありがとうございました)
http://www.gnu.org/software/libc/manual/html_node/Standard-Locales.html
This is the standard C locale. The attributes and behavior it provides are specified in the ISO C standard.

2009年4月15日水曜日

eval command in bash shell script

シェルにevalコマンドっていうのがある、受け取った文字列を展開してそれを実行する、っていうイマイチよくわからない説明がよくされる。
それが、今回やっと理解出来たのでメモ

たとえば次の様な実行例
$ hoge="foo"; eval "echo $hoge"
foo
具体的にはどういう流れでこうなるのかというと、
evalは「echo $hoge」という文字列を受け取る。そして、文字列中の展開出来る箇所を展開する。
この場合は、シェル変数hogeにfooという文字列が入っているから、$hogeの部分はfooと展開される。
展開後にはその文字列が実行される。
$hogeはfooに展開されているから、実際に実行されるのは「echo foo」となる。
なので、表示結果は「foo」となったわけだ。

ところで、シェルスクリプトでは1次元配列しか扱えないのだけれど、
このevalを使うことで、2次元配列(多次元配列)を擬似的にだけれど、扱うことが出来る。

例として、3行3列の配列にランダムな値を入れていく。
#!/bin/sh

#declareコマンドでシェル変数iとjを整数値として生成。
#ただi=0とやると、0という文字を代入していることになってしまう。
declare -i i=0
declare -i j=0

#2重ループで、array_${i}_${j}の各要素にランダムな値を入れていく。
while [ $i -lt 3 ]
do
while [ $j -lt 3 ]
do
eval array_${i}_${j}=\$RANDOM
j=$j+1
done
j=0
i=$i+1
done

#各要素の内容を表示
i=0
j=0
while [ $i -lt 3 ]
do
while [ $j -lt 3 ]
do
eval echo array_${i}_${j}=\$array_${i}_${j}
j=$j+1
done
j=0
i=$i+1
done

結果
array_0_0=17314
array_0_1=30499
array_0_2=5518
array_1_0=19522
array_1_1=7919
array_1_2=2510
array_2_0=8634
array_2_1=31473
array_2_2=5638

「eval echo array_${i}_${j}=\$array_${i}_${j}」の行がわかりづらいので注釈。
 echo array_${i}_${j}=\$array_${i}_${j}
  ↓展開(i,jともに0の時点だとして)
 echo array_0_0=$array_0_0
表示結果は
array_0_0={要素[0][0]の数値}

それと、array_${i}_${j}のように、大括弧を入れて書くこと。
array_$i_$jでは、iの次のアンダーラインまで変数名の一部として展開しようとしてしまう。

2009年4月11日土曜日

IPA Font lisence changes!

IPAフォントが2009年4月中旬にもオープンソース・ライセンスへ,改変と再配布が自由に
http://itpro.nikkeibp.co.jp/article/NEWS/20090403/327784/

私なんかは、Ubuntu8.10で$ sudo apt-get install ipamonafontってやって使ってるクチなんですが、このライセンス変更のおかげで9.04からはまた標準でIPAモナーフォントが入ってくれないかしら? ……時期的に無理か。ぃゃ、でも9.10には入るんだろうなぁ。

モナーフォントは初期のIPAフォントのバグを抱えたまんまらしいって聞いたんですが、それでもMSゴシックと同じ文字幅ってのは"使える"と思うんですけどね。
Linux+OOoな法人/自治体もありますし、外部とやりとりするような文書作成なんかでは良いんじゃないかしら? 素人考え?

2009年4月3日金曜日

dot is separator

NTTドコモ、メールアドレスのルールを変更 〜 ピリオド連続などが使用不可に
http://www.rbbtoday.com/news/20090403/59059.html

メールアドレスを決める時、本来は次はアウト
・ドットから始まる
・ドットで終わる
・ドットの連続

だけど、docomoとauは今まで上記のルールから逸脱したアドレスでも登録出来るようになってた。世の中には、ルールから外れたメールアドレスが無効なものだとして、そういうメールを受け付けないメールサーバもあるので、docomo/からのメールを受信できない、またはdocomo/auへ送信できないっていう場合があったりする。

まぁそれは知ってたんだけど、でも何で?とふと思った。
で、ちょっと調べたら、当たり前な事実が出てきて、そんなことにも気づけなかった自分にorz

ドットって、メールに限らずアドレスでは基本的に区切りの文字として使うんですよね。
なので、区切り文字が先頭や最後尾にあったり、区切り文字が連続していたりするのはアウト、っていうわけ。

例えば、mixi.jpとか。mixi.jpというドメインの中で、ccTLD(国別コードトップレベルドメイン)のjpの部分を切り分けてる。

2009年3月18日水曜日

Install Chromium in Ubuntu 8.10

https://launchpad.net/~chromium-daily/+archive/ppa

LaunchpadにChromiumのリポジトリが追加されてたので試してみました。

とりあえず言いたいのは、
タブ表示が出来ないんですけど。。。 orz

まぁ、どうせテストバージョンだし

2009年3月15日日曜日

Shortcut key for Subscript and Superscript in OOo

論文の作成で、解説に記号類を多用するのは理系の性なのだけど、OpenOffice.orgでの上付き文字と下付き文字のショートカットに今更気がついたのでメモ

上付き(Superscript)
Ctrl+Shift+P

下付き(Subscript)
Ctrl+Shift+B

これで作業が楽になってくれます。

2009年2月26日木曜日

How to burn mp3 files to audioCD with K3b in Ubuntu 8.10

音楽CDを焼こうとしたら、Braseroが音楽プロジェクトの作成画面で焼きたいmp3ファイルを選択しようとすると固まってしまう。
そこで、他の適当なライティングソフトを使おうと思い、「アプリケーションの追加と削除」でK3bを見つけた。

さっそくインストールしていざmp3ファイルを焼こう。。。って、対応してない形式のデータって言われてしまい、書き込みリストに追加できない。

どうやら、ライセンスどうこうでmp3には標準では対応していないらしい。
探してみると、libk3b3-extracodecsというソレっぽい名のパッケージがあったので、さっそくインストール。

$ sudo apt-get install libk3b3-extracodecs

これでmp3ファイルがK3bで直接mp3ファイルが扱えるようになりました。

2009年2月17日火曜日

Unix Time:1234567890

Unix時間が12334567890になる瞬間を思いっきり逃してしまったので
$ sudo date -s '2009/2/14 08:31:30' && date '+%s'

とやってみた。

余計に虚しくなったよママン

2009年2月3日火曜日

Apache+mod_ssl failed to run when booting.

Apache+mod_sslがサーバー機の起動時にだけ起動がコケる、という問題に直面。
まぁ、凡ミスだったのだけれど。同じ轍を踏まないようにメモメモ。
環境:Ubuntu 8.10 Server

http://openssl.robata.org/
上記ページの通りに、証明局とサーバを作った。

サーバーの秘密鍵を作成する段で、パスワード入力を省略できるようにした秘密鍵(nopass_server.key)を作成している。
Apacheの設定でSSLCertificateKeyFile(サーバの秘密鍵)を指定する箇所にはこのnopass_server.keyを指定してやり、Apache起動時のパスワード入力を省略させることができる。
パスワード入力が必要な方の秘密鍵を指定してやると、サーバー(マシン)起動時にはパスワード入力なんか出来ないので、Apacheの起動がコケてしまう。

端末からsudo /etc/init.d/apache startとかやる分にはパスワード入力を促すメッセージが出るけど、起動時にはそんなん無理だ。

2009年2月2日月曜日

Ubuntu has HL-4050CDN(brother) driver.

大学の研究室でLinuxからでも容易に使えるようにと考えた結果、費用対効果などからbrotherのHL-4050CDNを購入。しかし、届いてからずっとほったらかしていた。
卒業研究の発表間近で参考にするためウェブページを印刷するところで、やっと重い腰を上げた。まぁ、研究で頭パンクしそうなので気分転換の意味もあったんですが。

以前使っていたプリンタを撤去して空いていたスペースに設置し、トナーをぶっこむ。
ネットワーク対応なのでおもむろにLANケーブルを繋いで、ちっさな設定画面でIPアドレスを固定してやる。

こっから先は、Ubuntuの賢さに涙が出そうになった。
メニューの「プリンタの設定」で、[新規]ボタンをクリックするとネットワーク上のプリンタを探してきて表示してくれる。HL-4050CDNもちゃんと見つけてくれているので、選択肢して次へ。
HL-4050CDNのプリンタドライバが標準で備わっているので、あとはダイアログを次へ次へと。(Ubuntu8.10)

「プリンタの設定」ウィンドウにHL-4050CDNが追加されたので、プロパティから「テストページの印刷」を選ぶと、、、印刷サレター!


簡単過ぎて、すぐ卒業研究という現実に戻されてしまったのはしょうがない。

2009年2月1日日曜日

What's "~/.wapi"?

HDD上のいらないものを整理してたらなんかホームディレクトリによくわからんドットディレクトリがあった。

~/.wapi

wapiでググってみても中国の独自無線LAN規格とか関係ないものが出てくるんだけど、キーワードにubuntuを追加してみたらUbuntuのフォーラムに同じ疑問を投稿してる人がいて、そのレスポンスのおかげで答えがわかった。

http://ubuntuforums.org/showthread.php?t=1000647

ようするにLinux上などで動作するMonoという.NET互換の環境を作るソフトがあり、そのソフトに関するデータを格納するディレクトリがDebian環境では.wapiとして作成されるそうだ。
WindowsAPIって意味かなぁ。

2009年1月29日木曜日

Matz's talk! in "World of OSS" symposium



1月27日にせんだいメディアテークで催された「オープンソースソフトウェアの世界」というイベントに行ってきました。内容は、IPAの三浦広志氏とRubyの作者であるまつもとゆきひろ氏(Matz)の講演。
買ったばかりの、というか出版されたばかりのオライリーのRuby本にサインしていただきました。

軽く緊張してて、帽子被ったままサインを貰いに行ったのは良い(?)思い出。

2009年1月24日土曜日

OSC 2009 Sendai

オープンソースカンファレンス2009仙台
http://www.ospn.jp/osc2009-sendai/

行ってきました。
LiveCDとかいろいろ貰ったり^^


Ubuntu9.04のコードネームはJaunty Jackalope。Jauntyは素早い(ササっとした動作)という意味で、Jackalopeは角ウサギという空想上の生物。ウサギには角のような突起物が頭に生える病気があるらしく、角ウサギ伝説はそこから来たんじゃないかということらしいです。
「病気のウサギ」というコードネームにJapanese Teamの方が不安を抱いてることを漏らしたり。。。セミナーで「ササっと死んじゃうって事ですか?」と言ったのは私です。失礼しました orz

2009年1月22日木曜日

Skype error[Ubuntu8.10][pulseaudio]

昨日、友人とSkypeしようとしたら通話が出来ないという状況に陥った。
「オーディオプレイヤーに問題があります」というエラーが出て、コールすることが出来ない。

ググったらUbuntuのフォーラムで既に解決策が
http://forums.ubuntulinux.jp/viewtopic.php?id=3413

Skypeとpulseaudioが相性悪いらしい。
なので、pulseaudio関係を一期に削除
$ sudo apt-get remove pulseaudio*
$ sudo rm /etc/X11/Xsession.d/70pulseaudio

Xの起動プロセスからもpulseaudioを削除する必要があるので、2つ目のrmもちゃんと行うこと。怠るとXが起動しなくなる。(その場合にはubuntu-desktopパッケージをインストールすれば良いらしいけど)

<追記>
apt-getはremoveじゃなく、purgeでも良さそう。後者の場合、/etc/X11/Xsession.d/70pulseaudioも勝手に削除してくれる……?(未検証です)

2009年1月15日木曜日

How to use GETOPT function in C

端末で使ういろいろなコマンドは大抵はオプションを付けていろいろな機能を使うことが出来る。そういったプログラムをCで書くのに必要なgetopt関数の覚書。
unistd.hをインクルードしておくこと。

引数を取るプログラムをCで書くとき、mainの宣言は
 int main(int argc,char *argv[])
こんな感じに書くのが普通。*argv[]が**argvとなってるコードも見たことがある。

で、getoptの使い方。
while ((ch = getopt(argc, argv, "ab:")) != -1){
switch (ch){
case 'a':
-aオプションの処理
break;
case 'b':
-bオプションの処理
この時、-bの次の引数へのポインタがoptargに収まっている
break;
}
}


初めてgetoptを使おうとしたときに見落としていてちょっと躓いたのが、getoptの引数"ab:"の部分。
これはaは引数を取らない、bは引数を取る、という具合になる。使うオプションを""で括ってずらずらっと書いてやり、引数を取るものの後ろにだけ:(コロン)を付けてやればいい。
引数を取るオプションを見つけたときにgetoptはgetargというcharポインタに引数を与えてくれる。例えばコマンドに「-b hogehoge」というオプションが与えられていたならば、getoptがbを見つけたときに、hogehogeという文字列がoptargに収まる。

2009年1月7日水曜日

Compile error of Rockbox's sendfirm.c with libmtp0.3[Ubuntu8.10][libmtp0.3]

作業環境はUbuntu8.10。検索で来たWindowsユーザはこの記事見ても無意味だと思います。悪しからず。

gigabeatSにRockboxをインストールするには、現時点(20090107)では全て手動でコンパイル〜ファームウェア書き込みを行わなければいけないみたい。同じgigabeatでも、FやXシリーズは解析/開発されきってインストールユーティリティのソフトが用意されているのだけど、まだSシリーズは開発途上。

まだ実際にgigabeatSにRockboxをインストールした訳ではないのだけれど、作業時に必要になるsendfirmプログラムをコンパイルする時点で躓いたのでちょっと書いておく。

sendfirmにはlibmtpが必要になるので、
$ sudo apt-get install libmtp-dev
こんな感じでlibmtpのdevelopmentパッケージをインストールしておく。

http://www.rockbox.org/twiki/bin/view/Main/GigabeatSInstallation#A_Compile_the_sendfirm_utility
Rockbox wikiのgigabeatSへのインストール指南に書かれている通りに、現行ビルド一覧ページ(http://build.rockbox.org/)からソースコードをDL。
アーカイブを展開し、端末でその中のutils/MTPディレクトリに入りmakeすると、sendfirmがコンパイルされる。
rockbox-3.1/utils/MTP$ make
gcc -Wall -lmtp -o sendfirm sendfirm.c
sendfirm.c: In function ‘sendfile_function’:
sendfirm.c:94: error: too many arguments to function ‘LIBMTP_Send_File_From_File’
make: *** [sendfirm] エラー 1
$

LIBMTP_Send_File_From_File関数への引数が多すぎるとエラーを吐かれてしまった。

これはどういうことだろうと思い、ソースを見てみる。
エラーが出ているsendfirm.cの94行め付近は
ret = LIBMTP_Send_File_From_File(device, from_path, genfile, progress,
NULL, parent_id);
となっていて、6つ引数が与えられているのが分かる。
で、Ubuntuのリポジトリから落ちてくるlibmtpのver0.3のソースを見てみる。
http://libmtp.sourcearchive.com/documentation/0.3.0/group__files_g552e760a429b0e47a593b8ade20bb763.html#g552e760a429b0e47a593b8ade20bb763
int LIBMTP_Send_File_From_File(
LIBMTP_mtpdevice_t * device,
char const *const path,
LIBMTP_file_t *const filedata,
LIBMTP_progressfunc_t const callback,
void const *const data
)
与えるべき引数の数は5つだ。そりゃエラーになる筈。

今度はver0.2系のソースを見てみる。
http://libmtp.sourcearchive.com/documentation/0.2.1/group__files_gfaf21159580eef716b24da3a257b3060.html#gfaf21159580eef716b24da3a257b3060
int LIBMTP_Send_File_From_File(
LIBMTP_mtpdevice_t * device,
char const *const path,
LIBMTP_file_t *const filedata,
LIBMTP_progressfunc_t const callback,
void const *const data,
uint32_t const parenthandle
)
こっちは6つになってる。
つまり、libmtpのver0.2系(0.1系も引数は6つだった)を考えて書かれたソースだったのね。

んでまぁ、libmtpの0.2系を持ってきてやるのが正当なんだろうけど、面倒なのでいらなそうな6つ目の引数を削除してみる。sendfirm.cの94行め付近「device, from_path, genfile, progress,NULL, parent_id」となってる箇所からparent_idを抜いて、「device, from_path, genfile, progress, NULL」としてから、改めてmake。
rockbox-3.1/utils/MTP$ make
gcc -Wall -lmtp -o sendfirm sendfirm.c
sendfirm.c: In function ‘sendfile_function’:
sendfirm.c:67: 警告: unused variable ‘parent_id’
$
警告出たけど、案の定parent_idが宣言されたけど一度も使われてないよ、ということなのでキニシナイ。

まぁ、肝心のこっから先をやってないんだけどね。

2009年1月5日月曜日

Happy New Year!/[memo]Rcokbox for gigabeat S/Leap second error of Zune&gigabeat

明けましておめでとうございます。
いきなりですが、暫くの間1日1更新できるか怪しくなります。だって、大学の方で卒論の締切りが迫ってきてますから。。。

というわけで、今日のところはちょっと覚書程度に愛機gigabeatSをRockbox化するために必要なページをbookmark。

Gigabeat S Port - Rockbox
http://www.rockbox.org/twiki/bin/view/Main/GigabeatSPort

Rockbox for Gigabeat S
http://audio-p.hp.infoseek.co.jp/

今までMTPデバイスとして扱う方法をいろいろ試してきましたが、Rhythmboxで楽曲を転送した時にVideoフォルダに入れられるという新たな不具合に出くわし、いよいよRockbox試してみるかという心境になったのです。


ところで、閏秒問題について

Zuneとgigabeatが閏年の処理の問題でフリーズ
http://slashdot.jp/it/article.pl?sid=09/01/01/1247219

記事中ではgigabeatのTとVのシリーズしか触れられてませんが、それらと同じPortable Media Centerをファームウェアとして使っているSシリーズも同じ症状で固まりました。もうサポート終わってるとはいえ、除け者にしなくたっていいじゃない(´・ω・`)
症状は起動画面から進まない、とかの筈らしいんですが、私のは故障メッセージが出てたのでこの問題とは関係なく故障したのだと思ってました。以前にも同じメッセージが出て修理に出したことがあったので、さっくり諦めたわけですハイ。
でも、閏秒後にバッテリを放電しきった後に再起動〜〜という対処法を行ったら何故か直っちゃいました。。。(実際にはバッテリが悪くなってるので勝手に放電しきってしまったのですが)