カレンダー
クイック サーチカテゴリ管理最近のエントリ
|
2013年 6月 16(日曜日)iOS: add parameters on file URL in NSURL for UIWebViewNSURL refuses to add parametersWhen using UIWebView, we prepare the URL of the contents as NSURL. In case of which the contents are local files and we want to add parameter like "info.html?param1=val1¶m2=val2", there should be a special way to make NSURL. I'd like to explain how it is. In case of local files, the normal way is using NSURL::fileURLWithPath. But loading is failed with NSURL which is made by fileURLWithPath from local file path combined with parameters. So we should use URLWithString method. But it fails again and it may be caused by malform of the path. After some trials I found that the path string should be escaped before URLWithString although we can use a plain text path string with fileURLWithPath. The final code of getting NSURL from file URL with parameters. NSString path = [[NSBundle mainBundle] pathForResources:fileBase ofType:@"html"];
2013年 5月 15(水曜日)Ubuntu Tips: Fix auto.smb for automount Windows shares.Ubuntu's autofs, or automounter, have the script auto.smb to mount Windows shares with share names by accessing for example "/smb/minitrue/tmp". It works OK with samba shares, but NG with Windows shares according to some errors in the script. Until Today, I wrote direct settings in auto.xxx as follows for all shares instead of using the script. minitrue -fstype=cifs,rw,username=myUser,passwd=myPasswd,iocharset=utf8 ://minitrue/tmp But I feel very inconvenient with it, and try to fix it. The problems are as follows:
Then the fixed script is as follows. #!/bin/bash After The file defaults should be like as follows, username = myUser The file must be create for the shared path, if username or password is different from the defaults. 日本語で追加automountのsmbマウントがauto.smbでできない場合の修正方法を説明します。(できていれば、/smb/host/shareでアクセスすると、自動でマウントされます) まとめ
"Ubuntu Tips: Fix auto.smb for automount Windows shares." の続きを読む... 2012年 1月 13(金曜日)iOS/iPhone開発小技ここ暫く、常駐でiPhoneアプリの開発をしてきました。他人のアプリ開発をすると、想定外の機能や仕様を実装することになることがしばしばです。そうすると、知らなかったやり方を調べたり考案したりしなくてはならず、勉強になることも多いです。この過程で分った、iOS開発のtipsを紹介して行きます。 iOSアプリのスレッドの扱いiOSの開発では、通常はスレッドを意識する必要はありません。基本的には、システムから呼ばれる(例えばViewController Class等の)メソッドを実装するわけですが、これらは、殆どMainThreadで動きます。また、非同期APIなどでは、システムが適宜スレッドを分けて実行してくれるからです。しかし、UIActionIndicaterを使うときなどで、例えばUIWebViewのデリゲートが別スレッドから呼ばれるのに気づいたります。 新たに別スレッドを上げて、非同期に実行するiOSでは、コールバックとして呼ばれたメインスレッドを止めてしまうことはできませんので、重い処理や、待ちを入れないとならない処理は、別スレッドで実行する必要があります。これは、以下のように、doInTheOtherThreadメソッドを作成して呼出します。このとき、別スレッドのメソッドは、メモリプールを別に取らないとならないようで
......; 別スレッドから、メインスレッドとして実行する処理は別スレッドで行った場合で、一部の処理をメインスレッドで実行したい場合です。特に、UIメッセージはメインスレッドから発行しないとなりませんので、この目的で頻繁に使います。この場合は、当該処理をメソッドに分けて、メインスレッドのコンテキストで実行します。 [NSObject performSelectorOnMainThread:doInTheMainThread withObject:paramObj waitUntilDone:YES]; メインスレッドで一時的に待ちを入れるメインスレッドはメソッド内部で待ちに入ることはできない(再開できなくなります)のですが、RunLoopに戻って実行を遅延させることはできます。これは、例えばUIActionIndicatorの表示をする際に使うことができます。(これを使わない限り、startAnimationとstopAnimationを一つの関数の中で実行しても、表示されません) [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]]; 非メインスレッドで同期するメインスレッドでなければ、mutexで待合わせることは可能です。例えば、以下のようなコードになります。この場合は、2回目のlockでウェイトします。 MethodRunOnThread1 {MethodRunOnThread2 { 2011年 8月 19(金曜日)YouTube仕様変更2011/8/4に対応YouTubeダウンローダを最新仕様に更新YouTubeダウンロードサービスとダウンロードスクリプトがエラーしていたのを修正しました。 Apacheのログを見る限りでは、8/4にYouTubeの仕様が変更されており、ダウンロードが一切できなくなっていました。別の仕事の納期が迫っていたために放置していたのですが、今週頭になんとか上がり、2〜3日前から見ていました。昨日、ようやく最新仕様に合わせて動かすことができるようになりました。 変更点は、以下のようなものでした。
url_encoded_fmt_stream_mapは以前と書式が異なります。今回は、itagでフォーマットタイプを知り、url=http://....でURLを得ます。楽勝と思い実装してみたのですが、なぜか上手く行きません。やみくもにやっていては駄目と思われましたので、少し分析してみました。 はまってしまっていた罠は、以下の2点のようでした。
(1)はプレイヤへの引数渡しの際の禁止文字の都合なのだろうと推測できますが、元々のパラメタが呪文文字列(数字)なので、結構悩みました。(2)に関しては全く見当が付きません。処置が的確なのかどうかすら分らない状態です。 結論このコードで動いています。(embed, PLAYER_CONFIGのどちらでも動きます) if (m|\'PLAYER_CONFIG\': {(.*)}$|) { sub GetFmtUrlMapFromEmbed sub GetFmtUrlMapFromPlayerConfig れで動くようになりましたが、webm対応ができていません。今後、主力のコーデックになるようなので、将来的には対応は必須なのでしょう。しかし、現在はバックワードコンパチビリティのためのmp4はおろか、flvまで用意されているようですので、後回しにします。というのも、コーデックが新しいので、サーバで使っているシステムに導入するのは骨なのです。それに、性能の上では圧倒的に優れている、という訳でもなさそうなことも一因です。 しかし、政治的な観点では、ライセンスフリーのwebmは大歓迎ですので、なんとかしたいものです。GIFやMP3で繰り返された混乱は、サービスを提供する側からすると大きな障害になってしまいますので。 2011年 5月 24(火曜日)LinuxでMTPを使うFOMAにメディアファイルを入れる方法メディアファイルのフォーマット変換サービスが、最近のFOMA端末では動かないとのことなので、情報を集めていました。どうやら、AAC on MP4とWMAしか再生できなくなっているということが分りましたので、実機で試してみることにしました。その仮定で、MTPやらデータベース化やら、技術的な問題が出ましたので、(全部のFOMAに当て嵌るかは不明ですが)整理します。特に、Linuxで携帯を利用するMTPのやり方について詳しく解説します。 実機はテスト用の昨年入手していたDoCoMo F-08Bです。さっそく作成した音声ファイルを読み込ませようとすると上手く行かないのでした。
なんと言いますか、無理やり機能制限を加えて行く内に、ぐちゃぐちゃな仕様になってしまいましたという感じの、典型的なガラケーでイライラさせられてしまいました。皆さん、これで使うことができているのでしょうか? ちょっと理由を考えてみました。 整理すると、音声ファイルはデータベース管理になっていて、ファイルシステムのファイルとしては見えません。従って、SDカードにファイルとして書き込むことはできますが、携帯電話から音声ファイルとしては認識されなくなります。代わりに、本体はMTPモードを持っています(マスストレージ上のアプリプロトコルではなく)。MTPはケータイの中でデータベースに接続されているため、データフォルダやミュージックプレイヤ等から見える状態で書き込まれます。 MTPMicrosoft発案のメディア転送プロトコルですが、ファイル単位でマニピュレートするだけのもののようです。本当にこんなもの新しくいるの?って感じです。しかし、幸いなことに、Linuxでも使えることが分りました。
libmtpには、以下のようなユーティリティが付いていて、大体のマニピュレートを網羅しています。 mtp-albumart mtp-files mtp-newfolder mtp-thumb
マウントするためには、mtpfsを使います。fuseがなければ、事前インストールが必要になります。これも理由は不明なのですが、デバイスファイル経由のアクセスにはされていないみたいで、マウントはいきなり、以下のようにします。 mtpfs -o allow_other /mnt/mtp
しかしながら、これによって、Linuxでも扱えるようになりました。ケータイXXX転送みたいなプロプラなアプリを購入しないとならないよりはマシとも言えるかもしれません。 2011年 5月 6(金曜日)YouTubeダウンローダーでタイトルが取れないのを修正YouTubeビデオのタイトルの仕様変更対応YouTube ダウンローダスクリプトでタイトルが取れなくなっているのに気が付きました。このため、"タイトル名.mp4"というファイル名になりません。どうやら、YouTubeに変更があったようです。しばらく放置していたのですが、修正することにしました。 手元で問題のページをwgetで取得してみると、今迄取得に使っていた<meta title="">のタグはあるようなのですが、スクリプトにすると取得てきていないようです。少し謎です。YouTubeはクライアントの違いによって色々なHTMLを返してくるようになっていますので、素直にデバッグは諦めて、他の部分に記載されたタイトルから拾うことにしました。 それで、修正したものがこちらです。 何か不具合があれば、お知らせ下さいませ。 なお、スクリプトのほうは、バグ報告いただいていた件(wgetで動作しない)も修正してあります。 2011年 5月 2(月曜日)Decreasing number of the wallpaper distributing systemWallpapers for photostand application.I provide the wallpaper distributing system for Linux and Windows. And I'm sorry to have a trouble to display a uncool picture on users screen. Two days ago I found some wallpapers are replaced to "Oops" image instead of original ones. To my understanding, it is made by a site to avoid their pictures from downloading without showing their advertisement banners. The site is included in my directory, from which a recommended pictures are selected by matching user keywords. Basically I don't have any pictures becase of copy right reason, and the service has a directory of pictures with thumbnails, so that it acts as a kind of search engine of images. (Only exclusion is nasaimage, and we provide under its rule of copyright). And I think that it is fair for each sites to decide how to distribute their contents, so I should respect their desision and give up checking the site technically. Then I remove the site URL from the directory and rebuild a database of picture pool. And I feel disappointed to find that the number of pictures in the pool is decreased to be a half of the day before. I think to be a risk that my service depends much on a few other's site. So I add three small wallpaper sites in the directory Yesterday. It does not increase the number dramatically, but I'd like to add many other site to be the number of pictures up to 10 thousand again. 2011年 4月 26(火曜日)Utility Scripts for FireGestures IIScript To Copy Link URL to clipboard.I create an another javascript for FireGestures. The function is to copy URL of the link to system clipboard/cut buffer. Basically it should work on any systems such as Linux, Windows or Mac OS X. I like to use FireGestures on firefox browser, and made some user scripts to extend the funtion. This script is useful when you download media files by using download scripts instead of viewing on the browser. I made it to use when I want to get sequencial images or video files with incwget, and download videos from YouTube with ytdownloader.pl. Mozilla supports the function with right button menu, but I often feel irritated to copy many URLs. The code is here; var linkURL = FireGestures.getLinkURL();
2011年 3月 25(金曜日)iPadアプリケーションiPadアプリ「幸福の王子」公開合同会社英徳社からiPadアプリ「幸福の王子」がAppStoreに出ました。私がソフトウェア部分の開発を請け負っていたものです。 絵本アプリで、テキストと挿絵を見ながら、日本語、英語のバイリンガルで朗読してくれます。お話はオスカー・ワイルドの原作で、王子様の黄金像と心優しい燕の悲しい、良く知られた物語です。朗読は、役者さんに入れていただいた、とのことで、大変聞き易いものになっています。物語全部ですので、日本語のほうだけで30分くらいあり、長い通勤などでも充分楽しめるボリュームがあります。 ソフト的には、英語学習者、日本語学習者に使っていただくことも想定して、お話途中で音声とテキスト画面をワンボタンで切り替えが可能にしています。また、どこを読んでいるか、カーソルで追えるようになっており、再生箇所をタッチで指定することもできます。 画面的に定型のiPad/iPhoneアプリではなかったりすることも含めて、お客様からどういった声をいただけるのか、とても楽しみです。 2011年 3月 9(水曜日)Scripts for FireGesture on FirefoxUtility Scripts for FireGesturesI wrote some scripts of internet search of words in clipboard for FireGestures. FireGesture is a very useful addon to enable flexible mouse gestures on Firefox. It has a extension scheme with that user defined gestures and functions can be added. User functions should be written by Javascipt. A little before I downloaded a script named "open URL in clipboard", and I wrote some scripts from it.
Base scriptBase scripts of those are identical as follows. The default behavier is open new tab to show the page. (It can be changed with some flags in the script.) const IN_NEW_TAB = true; And then replace the red line to other URL of search engine sites for each media. The followings are my setting living in Japan, so that URLs are Japanse sites. Please change them to fit your country environment.
2011年 3月 5(土曜日)YouTubeダウンローダーの更新YouTubeの最新仕様に対応昨日、YouTubeダウンローダー&変換サービスでYouTubeのファイルを変換して見ようとして、うまく行かないのがあるのに気付きました。普段あまり見ない映画系のビデオでした。分野に依るのかもしれませんが、ビデオのURLがうまく取れてないらしいのです。 ファイルを調べてみたところ、確かに今迄に実装したビデオURL形式が一つもなく、以下の3種類の組み合わせだけになっているものでした。
これらの内容自体は皆同じビデオURLを指定しているようです。そこで、この3つに対応するため、これ以来久し振りにコードを変更し、とりあえず動くようにはできました。ただ、あいかわらず、複数の形式が1つのページに入っているのですが、規則性も、どれを優先すれば良いのかも分かりません。 これで、都合7種類("fullscreenurl"は既に使われていないかも)の指定形式があることになります。登場してすぐになくなった呪文パラメタを要するものを加えると9種類です。 YouTubeに関して残っているものとしては、ログインしないと見られないアダルト系のビデオがあります。やるとすると、ダミーユーザを作ってログインをシミュレートした後にCookieを送れば良いのだと思います。しかしながら、あまり需要がなさそうです。YouTubeは基本的に健全なサイトですから。 2011年 2月 14(月曜日)Slashdot用GreaseMonkeyスクリプトスラドの公告ページを回避するスクリプトスラッシュドットに貼られた外部リンクをクリックすると、公告付きベージが表示され、そこから改めてクリックして外に出るようになっています。運営のために仕方ないのかもしれませんが、何ともウザイ仕様です。これを回避するGreaseMonkey user scriptです。 使い方何もありません。インストールすれば即、効きます。 アンインストールGreaseMonkeyの管理画面から「アンインストール」します。 2011年 2月 13(日曜日)TフォントのインストールGTフォントのLinuxでの利用方法 |
ブログ管理 |