defaults.日本語で追加automountのsmbマウントがauto.smbでできない場合の修正方法を説明します。(できていれば、/smb/host/shareでアクセスすると、自動でマウントされます)まとめオリジナルのauto.smbは、サービスのリストを得るために、smbclientを無名アクセスで行っています。このため、通常のWindows共有で蹴られます。認証情報のオプション(-credentials)を付けて実行する必要があります。マウント自体は、mount.cifsを使用しています。こちらにも同じ認証情報を渡さないとなりませんが、ドメイン、ユーザ、パスワードで分けて渡します。認証情報は、相手サーバによって違うのが普通なので、複数の認証ファイルを使い分けるようにしないとなりません。のを参考にして、上記スクリプトにしました。利用には、以下のようにします。/etc/auto.credentials/に認証ファイルを置きます。あれば、host.shareのファイル、share間で共通であれば、hostのファイル、デフォルトはdefaultsのファイルです。defaults)になります。(0)iOS/iPhone開発小技ここ暫く、常駐でiPhoneアプリの開発をしてきました。他人のアプリ開発をすると、想定外の機能や仕様を実装することになることがしばしばです。すると、知らなかったやり方を調べたり考案したりしなくてはならず、勉強になることも多いです。この過程で分った、iOS開発のtipsを紹介して行きます。iOSアプリのスレッドの扱いiOSの開発では、通常はスレッドを意識する必要はありません。Class等の)メソッドを実装するわけですが、これらは、殆どMainThreadで動きます。非同期APIなどでは、システムが適宜スレッドを分けて実行してくれるからです。UIActionIndicaterを使うときなどで、例えばUIWebViewのデリゲートが別スレッドから呼ばれるのに気づいたります。新たに別スレッドを上げて、非同期に実行するiOSでは、コールバックとして呼ばれたメインスレッドを止めてしまうことはできませんので、重い処理や、待ちを入れないとならない処理は、別スレッドで実行する必要があります。これは、以下のように、doInTheOtherThreadメソッドを作成して呼出します。drain];}別スレッドから、メインスレッドとして実行する処理は別スレッドで行った場合で、一部の処理をメインスレッドで実行したい場合です。UIメッセージはメインスレッドから発行しないとなりませんので、この目的で頻繁に使います。この場合は、当該処理をメソッドに分けて、メインスレッドのコンテキストで実行します。waitUntilDone:YES];メインスレッドで一時的に待ちを入れるメインスレッドはメソッド内部で待ちに入ることはできない(再開できなくなります)のですが、RunLoopに戻って実行を遅延させることはできます。これは、例えばUIActionIndicatorの表示をする際に使うことができます。dateWithTimeIntervalSinceNow:0.0f]];非メインスレッドで同期するメインスレッドでなければ、mutexで待合わせることは可能です。以下のようなコードになります。この場合は、2回目のlockでウェイトします。(0)YouTube仕様変更2011/8/4に対応YouTubeダウンローダを最新仕様に更新YouTubeダウンロードサービスとダウンロードスクリプトがエラーしていたのを修正しました。Apacheのログを見る限りでは、8/4にYouTubeの仕様が変更されており、ダウンロードが一切できなくなっていました。別の仕事の納期が迫っていたために放置していたのですが、今週頭になんとか上がり、2〜3日前から見ていました。昨日、ようやく最新仕様に合わせて動かすことができるようになりました。変更点は、以下のようなものでした。fmt_url_mapがなくなって、url_encoded_fmt_stream_mapになった。'PLAYER_CONFIG':の二箇所になった。webmコーデックのファイル(43,44,45)が新登場。url_encoded_fmt_stream_mapは以前と書式が異なります。今回は、itagでフォーマットタイプを知り、url=http://....でURLを得ます。楽勝と思い実装してみたのですが、なぜか上手く行きません。やみくもにやっていては駄目と思われましたので、少し分析してみました。はまってしまっていた罠は、以下の2点のようでした。...のほうは、urlエンコードが2回掛かっています。Escape(一部文字に)が1回掛かっています。Forbidden"になってしまいます。(1)はプレイヤへの引数渡しの際の禁止文字の都合なのだろうと推測できますが、元々のパラメタが呪文文字列(数字)なので、結構悩みました。(2)に関しては全く見当が付きません。処置が的確なのかどうかすら分らない状態です。結論このコードで動いています。%vphsh;}れで動くようになりましたが、webm対応ができていません。今後、主力のコーデックになるようなので、将来的には対応は必須なのでしょう。現在はバックワードコンパチビリティのためのmp4はおろか、flvまで用意されているようですので、後回しにします。いうのも、コーデックが新しいので、サーバで使っているシステムに導入するのは骨なのです。それに、性能の上では圧倒的に優れている、という訳でもなさそうなことも一因です。政治的な観点では、ライセンスフリーのwebmは大歓迎ですので、なんとかしたいものです。GIFやMP3で繰り返された混乱は、サービスを提供する側からすると大きな障害になってしまいますので。(0)LinuxでMTPを使うFOMAにメディアファイルを入れる方法メディアファイルのフォーマット変換サービスが、最近のFOMA端末では動かないとのことなので、情報を集めていました。MP4とWMAしか再生できなくなっているということが分りましたので、実機で試してみることにしました。その仮定で、MTPやらデータベース化やら、技術的な問題が出ましたので、(全部のFOMAに当て嵌るかは不明ですが)整理します。Linuxで携帯を利用するMTPのやり方について詳しく解説します。作成した音声ファイルを読み込ませようとすると上手く行かないのでした。ファイルはコピーできるのですが、データフォルダからは見えません。どこにコピーしても、ネットで調べた命名規則(mol060みたいな)にしても駄目。こんなんでは、マスストレージやSDカードに対応してると言えないのでは...。ミュージックに入らずに、iモーションの「データ交換」に入る。再生可も、ミュージックプレイヤーからはアクセスできないためプレイリストに入れられない。それで仕方なく、富士通製転送プログラムをインストールする。音声ファイルはコピーできるものの、依然としてミュージックプレイヤからはアクセスできない。メディアファイルに関しては、「FOMA90Xiでしか使えないよ」、という警告が出る。11のファイルの同期を行うことでコピーできました。なんと言いますか、無理やり機能制限を加えて行く内に、ぐちゃぐちゃな仕様になってしまいましたという感じの、典型的なガラケーでイライラさせられてしまいました。皆さん、これで使うことができているのでしょうか?ちょっと理由を考えてみました。1と2は、メディアファイルをデータベース化したからと思われます。怪しいファイルができていたり、太ったりするので、これに入っていると思われますが、中身が読めません。iPodやWalkmanと同じで、プロプラな制御しかさせないよ、というがっかりな仕組みです。4はいかにもなガラケー的な解決方法で、追加で(タイトルが半角カナ文字な)アプリをインストールしないとなりません。これで完結できないのが、信じられないところです。11を使わないとならないということと、いちいち、端末設定をMTPモードに切り替えないとならないというゴミっぷりです。WMP11は、iTunesと同じく、ただ音楽を再生したいだけなのに、不要な音楽を新しく買え買え、言われてうんざりです。整理すると、音声ファイルはデータベース管理になっていて、ファイルシステムのファイルとしては見えません。従って、SDカードにファイルとして書き込むことはできますが、携帯電話から音声ファイルとしては認識されなくなります。代わりに、本体はMTPモードを持っています(マスストレージ上のアプリプロトコルではなく)。MTPはケータイの中でデータベースに接続されているため、データフォルダやミュージックプレイヤ等から見える状態で書き込まれます。MTPMicrosoft発案のメディア転送プロトコルですが、ファイル単位でマニピュレートするだけのもののようです。本当にこんなもの新しくいるの?って感じです。幸いなことに、Linuxでも使えることが分りました。最低限必要なのは、libmtp。libusbがなれば要インストールですが、最新のものではlibmtpがコンパイル不可なので、0.1.12版が良いようです。これにはユーティリティが付いており、リスティング、コピー、削除等ができます。これでは不便なので、mtpfsを追加します。これによって、ファイルシステムにマウントすることができるようになります。libmtpには、以下のようなユーティリティが付いていて、大体のマニピュレートを網羅しています。mtp-sendtrデバイスは、mtp-detectで表示されていれば認識されていることになります。(継いだだけの段階では、ドライバがないよ、と言われます)。mtp-filesしてもフラットにファイルがリストされてしまい、かなり使い難いです。マウントするためには、mtpfsを使います。fuseがなければ、事前インストールが必要になります。これも理由は不明なのですが、デバイスファイル経由のアクセスにはされていないみたいで、マウントはいきなり、以下のようにします。...のようにはできなくて、恰好悪いです。これによって、Linuxでも扱えるようになりました。ケータイXXX転送みたいなプロプラなアプリを購入しないとならないよりはマシとも言えるかもしれません。ダウンローダスクリプトでタイトルが取れなくなっているのに気が付きました。このため、"タイトル名.mp4"というファイル名になりません。YouTubeに変更があったようです。放置していたのですが、修正することにしました。title="">のタグはあるようなのですが、スクリプトにすると取得てきていないようです。YouTubeはクライアントの違いによって色々なHTMLを返してくるようになっていますので、素直にデバッグは諦めて、他の部分に記載されたタイトルから拾うことにしました。それで、修正したものがこちらです。YouTubeダウンロードスクリプトYouTubeダウンロードサービス何か不具合があれば、お知らせ下さいませ。スクリプトのほうは、バグ報告いただいていた件(wgetで動作しない)も修正してあります。iPadアプリ「幸福の王子」がAppStoreに出ました。私がソフトウェア部分の開発を請け負っていたものです。絵本アプリで、テキストと挿絵を見ながら、日本語、英語のバイリンガルで朗読してくれます。お話はオスカー・ワイルドの原作で、王子様の黄金像と心優しい燕の悲しい、良く知られた物語です。朗読は、役者さんに入れていただいた、とのことで、大変聞き易いものになっています。物語全部ですので、日本語のほうだけで30分くらいあり、長い通勤などでも充分楽しめるボリュームがあります。使っていただくことも想定して、お話途中で音声とテキスト画面をワンボタンで切り替えが可能にしています。どこを読んでいるか、カーソルで追えるようになっており、再生箇所をタッチで指定することもできます。画面的に定型のiPad/iPhoneアプリではなかったりすることも含めて、お客様からどういった声をいただけるのか、とても楽しみです。昨日、YouTubeダウンローダー&変換サービスでYouTubeのファイルを変換して見ようとして、うまく行かないのがあるのに気付きました。普段あまり見ない映画系のビデオでした。分野に依るのかもしれませんが、ビデオのURLがうまく取れてないらしいのです。ファイルを調べてみたところ、確かに今迄に実装したビデオURL形式が一つもなく、以下の3種類の組み合わせだけになっているものでした。始まるものこれらの内容自体は皆同じビデオURLを指定しているようです。そこで、この3つに対応するため、これ以来久し振りにコードを変更し、とりあえず動くようにはできました。あいかわらず、複数の形式が1つのページに入っているのですが、規則性も、どれを優先すれば良いのかも分かりません。これで、都合7種類("fullscreenurl"は既に使われていないかも)の指定形式があることになります。登場してすぐになくなった呪文パラメタを要するものを加えると9種類です。YouTubeに関して残っているものとしては、ログインしないと見られないアダルト系のビデオがあります。やるとすると、ダミーユーザを作ってログインをシミュレートした後にCookieを送れば良いのだと思います。YouTubeは基本的に健全なサイトですから。(0)Slashdot用GreaseMonkeyスクリプトスラドの公告ページを回避するスクリプトスラッシュドットに貼られた外部リンクをクリックすると、公告付きベージが表示され、そこから改めてクリックして外に出るようになっています。運営のために仕方ないのかもしれませんが、何ともウザイ仕様です。これ→(slashdots.user.js)です。インストールすれば即、効きます。アンインストールGreaseMonkeyの管理画面から「アンインストール」します。(0)TフォントのインストールGTフォントのLinuxでの利用方法スラドの記事によれば、Tフォントがリリースされたようなので、インストールしてみました。昔、GTフォントとして公開されていたもののようです。以前は不具合が多くて使っていませんでしたが、フィックスされているとのことです。字体は、明朝、ゴシック、楷書の3書体。分らないグリフのファイルが沢山入っていたり、等幅フォントのときにアルファベットも全角になるなど、独自の主張があるようです。ブラウザで使っている限りでは、中々きれいですが、ゴシックには少し癖があるでしょうか。個人的な意見としては、IPAより少し落ちますが、通常使うフォントとしては申し分ありませんし、マイクロソフトのウィンドウズに付属するフォントよりも遥かにきれいです。これだけのフォントが無償で公開されるということは本当にありがたいことです。freetype用のfonts.scaleと、xtt用のfonts.dirを置きます。(ttfont_dir.zip)xtt用は、太字、イタリック、反イタリックの生成も行っています。唯一、不具合というか、原因は良く分らないのですが、ブラウザ(Firefox)で下線がやたら太くなることがあります。フォントのせいではないかもしれません。openlaboを見てみましたら、辞書が沢山更新されていましたので、入れ替えてみました。使う人が居ないのか、unannotatedな辞書(註釈が入っていない)は配布されていません。註釈を抜くツールunannotate.awkも配布が打ち切られているようですし、捜し出してきたものを現在の辞書に適用してもうまく行きませんでした。そこで、超簡単なスクリプト(skk-unannotate.pl.zip)を作成して、カレントの辞書の註釈抜きバージョン(unannotate.zip)を作成しました。註釈のフォーマット仕様を調べず、眺めただけで書いていますので、もしかすると不具合があるかもしれません。それにしても、現在のリリース物には、ゴミエントリ(行頭が">"のものなど)があるようなのですが、未チェックなのでしょうかねぇ。前から安売りされていています。HP複合機の調子悪くなってきたため物色していたのですが、Linuxでも使えるらしいことが分り、購入しました。前から動かしていたのですが、今回年賀状印刷で設定を見直しました。4をサポートしていますが、Postscriptは未サポートです。Linuxで動かすことに関しては、リコーのドライバ配布もあるために楽観視していたのですが、色々と問題がありました。RPDLの未サポートです。古いシステム(FedoraCore1)のため新しいGhostscriptも動きませんので、リコーからドライバを取ってきます。これは、Debian向けということで、Ghostscript-ESP(gs-esp)というもので、通常?のGhostscriptとは互換性がありません。そのため/その上、同梱されているバイナリは動作しませんでした。そこで、幾つか道が考えられます。4のドライバを追加する。gs-espを追加する。素性の良い(1)をやってみました。拾ってきてコンパイルします。RPSL4対応ができたように見えるのですが、少なくともこのプリンターでは印字できません。なにやらエラーが表示されるだけです。それで気を取り直して(2)でやってみます。リコーの配布物はgs-esp_7.07.1-rpdl4.tar.gzで、ソースパッチとバイナリ(不動)、PPDファイルが入っています。そこで、gs-eps-7.07を取ってきて、リコーのパッチを当ててビルドすることに。コンパイルすると日本語関係のパッチが足りなくて?色々エラーが出ます。この辺りは強引に直して、とりあえず進めます。関連のエラーは、古いlibpng.so.3をリンクさせれば出なくなります。設定(PPDファイルをコピーしてcupsconfigを起動します)すれば動くようになりました。PPDはリコーのものでOKです。して作成したgs-espは、SP4000の印刷はできるものの、Ghostscriptとしては駄目駄目になってしまいました。article9.psなどを表示できません。仕方ないので、/usr/bin/gsは元々のGhostscriptに戻します。新しいgs-espは違う名前(gs-esp-rpdl)でインストールしました。この場合、PPDファイルのパスを合わせて変更しておきます。結論レーザープリンタを買うなら、Postscript対応のものに限ります。昔、CanonやXeroxのLIPSやらESC/P対応プリンタで苦労したことを思い出しました。これはLinuxだけの話ではなく、Windowsでも、OSが新しくなったときにドライバーが提供されなければ同様の苦労が待っています。それにしても、Postscriptのライセンス料金はそんなに高いのかなぁ。