Nikep's blog
http://www.nikep.net/srdpty/
Interests about Software, Developement, Technologies and Hobbies...jahttp://www.nikep.net/srdpty/templates/default/img/s9y_banner_small.pngRSS: Nikep's blog - Interests about Software, Developement, Technologies and Hobbies...
http://www.nikep.net/srdpty/
10021testtheta
http://www.nikep.net/srdpty/index.php?/archives/92-testtheta.html
<p>video tag</p> <br />
<p> <video src="/tmp/vid_bigbuckbunny.mp4">VIDEO1<br /></video></p> <br />
<p>video tag2</p> <br />
<p> <video><source type="video/mp4" src="/tmp/vid_bigbuckbunny.mp4">VIDEO2<br /></video></p> <br />
<p><br /> <a href="com.theta.thetaplus://?imageid=00000000-0000-0000-0000-000000000972">testtheta<br />
</a></p> <br />
<div style="width: 110px;" class="serendipity_imageComment_left"> <br />
<div class="serendipity_imageComment_img"><a href="http://www.nikep.net/srdpty/uploads/R0010241-1.JPG" class="serendipity_image_link"><!-- s9ymdb:71 --><img width="110" height="55" src="http://www.nikep.net/srdpty/uploads/R0010241-1.serendipityThumb.JPG" class="serendipity_image_left" /></a></div> <br />
<div class="serendipity_imageComment_txt">2号機(1)</div> <br />
</div> <br />
<div style="width: 110px;" class="serendipity_imageComment_left"> <br />
<div class="serendipity_imageComment_img"><a href="http://www.nikep.net/srdpty/uploads/R0010241-2.JPG" class="serendipity_image_link"><!-- s9ymdb:71 --><img width="110" height="55" src="http://www.nikep.net/srdpty/uploads/R0010241-2.serendipityThumb.JPG" class="serendipity_image_left" /></a></div> <br />
<div class="serendipity_imageComment_txt">2号機(2)</div> <br />
</div> <br />
<div style="width: 110px;" class="serendipity_imageComment_left"> <br />
<div class="serendipity_imageComment_img"><a href="http://www.nikep.net/srdpty/uploads/R0010241-3.JPG" class="serendipity_image_link"><!-- s9ymdb:71 --><img width="110" height="55" src="http://www.nikep.net/srdpty/uploads/R0010241-3.serendipityThumb.JPG" class="serendipity_image_left" /></a></div> <br />
<div class="serendipity_imageComment_txt">2号機(3)</div> <br />
</div> <br />
<div style="width: 110px;" class="serendipity_imageComment_left"> <br />
<div class="serendipity_imageComment_img"><a href="http://www.nikep.net/srdpty/uploads/R0010241-4.JPG" class="serendipity_image_link"><!-- s9ymdb:71 --><img width="110" height="55" src="http://www.nikep.net/srdpty/uploads/R0010241-4.serendipityThumb.JPG" class="serendipity_image_left" /></a></div> <br />
<div class="serendipity_imageComment_txt">2号機(4)</div> <br />
</div> <br />
<div style="width: 110px;" class="serendipity_imageComment_left"> <br />
<div class="serendipity_imageComment_img"><a href="http://www.nikep.net/srdpty/uploads/R0010241-5.JPG" class="serendipity_image_link"><!-- s9ymdb:71 --><img width="110" height="55" src="http://www.nikep.net/srdpty/uploads/R0010241-5.serendipityThumb.JPG" class="serendipity_image_left" /></a></div> <br />
<div class="serendipity_imageComment_txt">2号機(5)</div> <br />
</div> <br />
<div style="width: 110px;" class="serendipity_imageComment_left"> <br />
<div class="serendipity_imageComment_img"><a href="http://www.nikep.net/srdpty/uploads/R0010241.JPG" class="serendipity_image_link"><!-- s9ymdb:71 --><img width="110" height="55" src="http://www.nikep.net/srdpty/uploads/R0010241.serendipityThumb.JPG" class="serendipity_image_left" /></a></div> <br />
<div class="serendipity_imageComment_txt">2号機</div> <br />
</div> <br />
<div style="width: 110px;" class="serendipity_imageComment_left"> <br />
<div class="serendipity_imageComment_img"><a href="http://www.nikep.net/srdpty/uploads/dervish_sph.jpg" class="serendipity_image_link"><!-- s9ymdb:72 --><img width="110" height="55" src="http://www.nikep.net/srdpty/uploads/dervish_sph.serendipityThumb.jpg" class="serendipity_image_left" /></a></div> <br />
<div class="serendipity_imageComment_txt">セマー</div> <br />
</div> <br />
<p> </p>
Nikep's blognospam@example.com (金子 恵季)2015-07-22T01:20:40Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=920http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=92日経Linuxの記事の補遺
http://www.nikep.net/srdpty/index.php?/archives/90-Linux.html
<div align="justify"> <br />
<h1>日経Linuxに書いた記事に対する補足</h1> <br />
</div> <br />
<div align="justify"> <br />
<p>日経Linux 7月号の「5分で作れるLinuxサーバー」に5件の記事を書きました。基本的に1ページ/件にまとめることになっていたため、舌足らずになってしまっていたり、圧縮された際に前後関係が合わなくなってしまった部分があります。解り難いところもあるかと思いましたので、ここで補足しておきたいと思います。</p> <br />
<h2>音楽・動画: 簡易な音声エフェクトを入れる</h2> <br />
<p>ecasoundをサーバで動かして、ストリームを変換する構成です。(2)クライアントの導入のところで、「Ecasoundはなくても動くべきですが、ちょっと問題があります(後述)」と書いてありますが、(後述)部分が切られてしまっており存在しません。 抜けてしまった部分は以下の通りです。</p> <br />
<blockquote> <br />
<h3>解説など</h3> <br />
<p>スクリプトでは、(ssh $ServerHost ...)のところが、サーバー上で実行されます。従って、基本的な構成としては、ecasoundが動かないマシンやWindowsからでもサーバーの機能を呼びだして使うことができます。しかし、今回の実験では、サーバからの返りストリームをecasoundでないと上手く読むことができませんでした。この部分は以下のような処理で十分と思うのですが、どこがいけないのでしょうか。<br />  ecasound -i:-<br />代わりの処理<br />  play -<br />もしくは、<br />  sox -e signed-integer -c 2 -r 44100 -b 16 - -e signed-integer -c 2 -r 44100 -b 16 -t wav - | play -</p> <br />
</blockquote> <br />
<p>どういうことかと言いますと、ecasoundは、PCM(符号付きリトルエンディアン16bit、ステレオチャネル、サンプリング周波数44.1KHz)のストリームを返してきます。これをクライアント側では、そのままplay、もしくは最悪でも sox でヘッダを付けてplayすることで再生できるはずなのですがうまく行かず、ecasoundで読まないと再生できません。(ノイズになります)。このストリームを返す代わりにWAV形式のファイル(実質、ヘッダ付きのPCMデータ)にすれば、クライアントでもplayで再生できることから間違っていないと思うのですが、結局解決に至りませんでした。</p> <br />
<h2>ファイル共有: 設定なしで自動マウントが可能</h2> <br />
<p>これは、<a href="http://www.nikep.net/srdpty/index.php?/archives/87-Ubuntu-Tips-Fix-auto.smb-for-automount-Windows-shares..html">こちら</a>の記事に書きました。(日本語を追加しました)</p> <br />
<p> </p> <br />
<h2 align="justify">Webサーバー: 暗号化と認証で安全な情報共有</h2> <br />
<p>ここではStartSSLという認証局を使いましたが、 他にも幾つかあります。大手の認証局でも、有効期間はまちまちですが、テスト用のサーバ証明書を出してくれるところがあります。「ssl certificate free」でググれば出てきます。(国内には少ない)</p> <br />
<p align="justify">「5分でできる」、ということから、最初「オレオレ認証」にも言及しようと思ったのですが、削られました。オレオレ証明書は詐欺に使われる可能性から非常に評判が悪い(最新のブラウザでは、原則として繋げない)のですが、HTTPの平文で通信するのよりはましで、カジュアルな盗聴行為から守ることができます。</p> <br />
<p align="justify">日本の大手の認証局で証明書を取るためには、最低でも年間10万円程度支払わなくてはならず、個人では負担が大き過ぎます。何でもダダ漏れ状態と、完全セキュアの中間ソルーションがないのは残念なことです。なお、自己署名認証した場合に、署名した公開鍵相当のものを相手にセキュアに渡すことができれば、原理的にはセキュアなはずです。<br /></p> <br />
<p align="justify"><br /></p> <br />
<p> <br /></p> <br />
</div> <br />
<div align="justify"></div> <br />
<h1> </h1>
Nikep's blognospam@example.com (金子 恵季)
テクノロジ, 2013-06-30T15:37:00Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=900http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=90NTT Flet's 光メンバーズクラブに繋げない
http://www.nikep.net/srdpty/index.php?/archives/89-NTT-Flets.html
<br />
<h1>Flet's光メンバーズクラブに繋げないときの対処</h1><p>Flet'sの契約内容を確認しようとしたら、「繋げません」と出てしまい、見ることができません。サポートに電話しても中々要領を得なかったりして、時間を無駄にしていまいました。何が起ったのか、どうすれば解決するのか分ったので、まとめておきます。</p><p>結論から言いますと、これは、セキュリティ強化のために、NTTがシステムをこっそり変更したことに起因しています。契約や料金関係の情報をインタネットから切り離してイントラネットに移しており、このイントラネットには、光回線のセカンドpppセッションからしかアクセスできなくしています。</p><h2>詳しい内容</h2><p>Flet's 光回線には2セッションあり、追加契約すると、2ndセッションを使うことができます。通常は、2つのISPを使い、別のグローバルアドレスでインタネットに繋ぐ使い方になるかと思いますが、追加料金が必要なので、普通は使われていないと思います。この辺のサービスとの整合性は不明なのですが、この通常使っていない2ndセッションをNTTのイントラネットに繋ぐようになりました。インタネットからの不正アクセスを遮断するのが目的と推測され、これによって、実際に光回線の中からしかアクセスすることができません。(契約者でも、インタネットからは見れない)</p><p align="justify">それで、終端装置がルータータイプのものは、勝手にソフトを更新して、2ndセッションのDNSやルーティングを変更してしまったとのことですが、ブリッジタイプのもの(もしくはブリッジとして使っているもの)は自分でセッティングしないとなりません。基礎情報は以下の通りです。(因みに、機器と繋いでいるというハードウェアセキュリティで、ソフトウェア的な秘密情報はありません)</p><p>2nd pppセッション</p><ul><li>ネットワーク: 220.210.0.0/16 (多分。他の220.210.194ではない繋がないとならないホストがあるようです)</li><li>ドメイン: flets</li><li>DNS: 220.210.194.67</li><li>直接繋がなくてはならないホスト: www.flets (220.210.194.4)</li><li><div align="justify">ppp認証: ユーザ: guest@flets, パスワード: guest</div></li></ul><p>Linuxからこれに繋ぐためには、以下を実行します。</p><blockquote><pre>pppoe-start /etc/ppp/pppoe-1.conf (pppoe-1.confは上記情報を入れて作成する)</pre><pre>route add -net 220.210.0.0 netmask 255.255.0.0 ppp1</pre><pre /></blockquote><p>なお、理由は不明ですが、1stセッションを繋いだ直後に実施すると、繋げなくてエラーします。60秒ほど待てば大丈夫なようです。</p><p>なお、DNSはうまく共存できなかったので、仕方なく /etc/hosts に直書きしています。(今のところ2つ)。</p><blockquote><pre>220.210.194.4 www.flets</pre><pre>123.107.190.162 speed.flets</pre></blockquote><p>これらは、イントラなfletsドメインではなくて、flets.ntt.co.jpのような登録されたドメインにして通常のDNSレコードに載せていただけると都合が良いのですけれど。(グローバルアドレスですので)</p><p /><p /><p /><p /><p /><p /><p /><p /><p /><h1><br />
<br />
</h1><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Nikep's blognospam@example.com (金子 恵季)
テクノロジ, 2013-06-19T20:32:00Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=890http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=89iOS: add parameters on file URL in NSURL for UIWebView
http://www.nikep.net/srdpty/index.php?/archives/88-iOS-add-parameters-on-file-URL-in-NSURL-for-UIWebView.html
<br />
<h2>NSURL refuses to add parameters</h2><p>When 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&param2=val2", there should be a special way to make NSURL. I'd like to explain how it is.</p><p>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.</p><p>The final code of getting NSURL from file URL with parameters.</p><blockquote><pre>NSString path = [[NSBundle mainBundle] pathForResources:fileBase ofType:@"html"];<br />NSString prms = [NSString stringWithFormat:@"?%@=%@&%@=%@",key1,val1,key2,val2];<br />path = [path stringByAppendingString:prms];<br />NSString urlstr = [[NSString stringWithFormat:@"file://localhost/%@",path] <br /> stringByAddingPercentEscapesUsingEncoding:NSUTF8String];<br />NSURL url = [NSURL URLWithString urlstr];<br />[webView loadRequest:[NSURLRequest requestWithURL:url];</pre></blockquote><p><br />
<br />
</p><br />
Nikep's blognospam@example.com (金子 恵季)
開発, 2013-06-15T16:45:43Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=880http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=88Ubuntu Tips: Fix auto.smb for automount Windows shares.
http://www.nikep.net/srdpty/index.php?/archives/87-Ubuntu-Tips-Fix-auto.smb-for-automount-Windows-shares..html
<br />
<p>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.</p><blockquote><pre>minitrue -fstype=cifs,rw,username=myUser,passwd=myPasswd,iocharset=utf8 ://minitrue/tmp</pre></blockquote><p /><p>But I feel very inconvenient with it, and try to fix it. <br />I found a solution for the issue in <a href="http://ubuntuforums.org/showthread.php?t=885713">the site</a>, but it does not work correctly as is.</p><p /><p>The problems are as follows:</p><ul><li>auto.smb uses smbclient for listing services and it executes with "-N" (=no-pass). It is OK for servers providing the listing function for anonymous account, but causes an error with those require an authentication. Therefore we should remove "-N" from options and add authentication parameters like "-credentials".</li><li>mount seems to be done with mount.cifs and it does not allow to use credential file but direct parameters like username, password or domain.</li></ul><p>Then the fixed script is as follows.</p><blockquote><pre>#!/bin/bash<br /># This file must be executable to work! chmod 755<br />key="$1"<br />opts="-fstype=cifs,rw,iocharset=utf8"<br />creddir="/etc/auto.credentials"<br />credfile=""</pre><pre>host=`echo $key | sed 's!^//!!;s!/.*$!!'`<br />if [[ "$key" =~ '/' ]]; then<br /> path=${key#*/}<br />fi</pre><pre>if [ -z "$credfile" ]; then<br /> # Search for credentials file<br /> if [ -n "$path" ]; then<br /> if [[ "$path" =~ '/' ]]; then<br /> share=${path%%/*}<br /> else<br /> share=$path<br /> fi<br /> fi</pre><pre> # First look for $creddir/$host.$share then for $creddir/$host<br /> if [ -n "$share" ]; then<br /> if [ -e "$creddir/$host.$share" ]; then<br /> credfile="$creddir/$host.$share"<br /> elif [ -e "$creddir/$host" ]; then<br /> credfile="$creddir/$host"<br /> fi<br /> elif [ -e "$creddir/$host" ]; then<br /> credfile="$creddir/$host"<br /> else<br /> credfile="$creddir/defaults"<br /> fi<br />fi</pre><pre>smclopts=""<br />if [ "z$credfile" != "z" ]; then<br /> smclopts="$smclopts --authentication-file=$credfile -gL"<br /> credopts=""</pre><pre> username=`egrep '^username' $credfile | sed 's!^.*= <strong>!!;s! </strong>$!!'`<br /> password=`egrep '^password' $credfile | sed 's!^.*= <strong>!!;s! </strong>$!!'`<br /> domain=``egrep '^domain' $credfile | sed 's!^.*= <strong>!!;s! </strong>$!!'`</pre><pre> if [ "z$username" != "z" ]; then<br /> [ "z$credopts" = "z" ] \<br /> && credopts="username=\"$username\"" \<br /> || credopts="$credopts,username=\"$username\""<br /> fi</pre><pre> if [ "z$password" != "z" ]; then<br /> [ "z$credopts" = "z" ] \<br /> && credopts="password=\"$password\"" \<br /> || credopts="$credopts,password=\"$password\""<br /> fi</pre><pre> if [ "z$domain" != "z" ]; then<br /> [ "z$credopts" = "z" ] \<br /> && credopts="domain=\"$domain\"" \<br /> || credopts="$credopts,domain=\"$domain\""<br /> fi<br /> opts="$opts,$credopts"<br />else<br /> smclopts="$smclopts -gNL"<br />fi</pre><pre><br />for P in /bin /sbin /usr/bin /usr/sbin<br />do<br /> if [ -x $P/smbclient ]<br /> then<br /> SMBCLIENT=$P/smbclient<br /> break<br /> fi<br />done</pre><pre><br />[ -x $SMBCLIENT ] || exit 1</pre><pre>$SMBCLIENT $smclopts $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '<br /> BEGIN { ORS=""; first=1 }<br /> /Disk/ {<br /> if (first)<br /> print opts; first=0</pre><pre> dir = $2<br /> loc = $2</pre><pre> # Enclose mount dir and location in quotes<br /> # Double quote "$" in location as it is special<br /> gsub(/\$$/, "\\$", loc);<br /> gsub(/\&/,"\\\\&",loc)<br /> print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""<br /> }<br /> END { if (!first) print "\n"; else exit 1 }<br /> '</pre></blockquote><p>After<br />
this fix, we should prepare credential file with name line "minitrue", <br />
"minitrue.tmp" and "defaults" in the directory "/etc/auto.credentials/".<br />
The format of the files can be refered by "man smbclient".</p><p>The file defaults should be like as follows,</p><blockquote><pre>username = myUser<br />password = myPassword<br />domain = myDomain</pre></blockquote><p>The file must be create for the shared path, if username or password is different from the defaults.</p><h2>日本語で追加</h2><p align="justify">automountのsmbマウントがauto.smbでできない場合の修正方法を説明します。(できていれば、/smb/host/shareでアクセスすると、自動でマウントされます)</p><p>まとめ</p><ul><li>オリジナルのauto.smbは、サービスのリストを得るために、smbclientを無名アクセスで行っています。このため、通常のWindows共有で蹴られます。認証情報のオプション(-credentials)を付けて実行する必要があります。</li><li>マウント自体は、mount.cifsを使用しています。こちらにも同じ認証情報を渡さないとなりませんが、ドメイン、ユーザ、パスワードで分けて渡します。</li><li>認証情報は、相手サーバによって違うのが普通なので、複数の認証ファイルを使い分けるようにしないとなりません。</li></ul>結局のところ、<a href="http://ubuntuforums.org/showthread.php?t=885713">このサイト</a> のを参考にして、上記スクリプトにしました。利用には、以下のようにします。<p /><ul><li>/etc/auto.credentials/に認証ファイルを置きます。<br />共有名が、\\host\share であれば、host.shareのファイル、<br />share間で共通であれば、hostのファイル、<br />デフォルトはdefaultsのファイルです。</li><li>マッチングの優先度は、細かく指定されているほう(host.share > host > defaults)になります。</li><li>書式は、<br />username = 認証ユーザ名<br />password = このユーザのパスワード<br />domain = この共有のドメイン</li></ul><br /><p /><p /><p /><p /><p /><p /><p /><p /><p /><p><br />
<br />
</p><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /><a href="http://www.nikep.net/srdpty/index.php?/archives/87-Ubuntu-Tips-Fix-auto.smb-for-automount-Windows-shares..html#extended">"Ubuntu Tips: Fix auto.smb for automount Windows shares." の続きを読む...</a>
Nikep's blognospam@example.com (金子 恵季)
インストール, 2013-05-14T16:04:21Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=870http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=87iOS/iPhone開発小技
http://www.nikep.net/srdpty/index.php?/archives/86-iOSiPhone.html
<br />
<p align="justify">ここ暫く、常駐でiPhoneアプリの開発をしてきました。他人のアプリ開発をすると、想定外の機能や仕様を実装することになることがしばしばです。そうすると、知らなかったやり方を調べたり考案したりしなくてはならず、勉強になることも多いです。この過程で分った、iOS開発のtipsを紹介して行きます。</p><h1 align="justify">iOSアプリのスレッドの扱い</h1><p align="justify">iOSの開発では、通常はスレッドを意識する必要はありません。基本的には、システムから呼ばれる(例えばViewController Class等の)メソッドを実装するわけですが、これらは、殆どMainThreadで動きます。また、非同期APIなどでは、システムが適宜スレッドを分けて実行してくれるからです。しかし、UIActionIndicaterを使うときなどで、例えばUIWebViewのデリゲートが別スレッドから呼ばれるのに気づいたります。</p><h2>新たに別スレッドを上げて、非同期に実行する</h2><div align="justify"><p>iOSでは、コールバックとして呼ばれたメインスレッドを止めてしまうことはできませんので、重い処理や、待ちを入れないとならない処理は、別スレッドで実行する必要があります。これは、以下のように、doInTheOtherThreadメソッドを作成して呼出します。このとき、別スレッドのメソッドは、メモリプールを別に取らないとならないようで</p></div><blockquote><p><code class="prettyprint"><span class="pln"></span><font face="arial,helvetica,sans-serif"><i><span class="pun">[</span><span class="kwd">self</span><span class="pln"> performSelectorInBackground</span><span class="pun">:</span><span class="lit">@selector</span><span class="pun">(</span><span class="pln">doInTheOtherThread</span><span class="pun">)</span><span class="pln"> withObject</span><span class="pun">:</span><span class="kwd">paramObj];</span></i><span class="pun"></span></font></code><font face="arial,helvetica,sans-serif"><code class="prettyprint"></code></font></p></blockquote><div align="justify"><pre><font face="arial,helvetica,sans-serif"><code class="prettyprint"><span class="pln"></span></code></font></pre><div align="left"><blockquote><pre><font face="arial,helvetica,sans-serif"><i>......;</i></font></pre><pre><font face="arial,helvetica,sans-serif"><i><code class="prettyprint"><span class="pun"></span><span class="pln"> </span><span class="pun">(</span><span class="kwd">void</span><span class="pun">)</span><span class="pln"></span></code><code class="prettyprint"><span class="pln"></span></code><code class="prettyprint"><span class="pln">doInTheOtherThread:(id)paramObj </span><span class="pun">{</span><span class="pln"></span><span class="com"></span><span class="pln"><br /> </span><span class="typ">NSAutoreleasePool</span><span class="pln"> </span><span class="pun">*</span><span class="pln">pool</span><span class="pun"></span><span class="pln"></span><span class="pun">=</span><span class="pln"> </span><span class="pun">[[</span><span class="typ">NSAutoreleasePool</span><span class="pln"> alloc</span><span class="pun">]</span><span class="pln"> init</span><span class="pun">];<br /> if (pool == nil) return;<br /> .....;</span></code></i><i><code class="prettyprint"><span class="pun"></span><span class="pln"><br /> </span><span class="pun">[</span><span class="pln">pool drain</span><span class="pun">];</span><span class="pln"></span><span class="pun"><br />}</span></code></i></font></pre></blockquote></div></div><h2>別スレッドから、メインスレッドとして実行する</h2><p align="justify">処理は別スレッドで行った場合で、一部の処理をメインスレッドで実行したい場合です。特に、UIメッセージはメインスレッドから発行しないとなりませんので、この目的で頻繁に使います。この場合は、当該処理をメソッドに分けて、メインスレッドのコンテキストで実行します。</p><blockquote><pre><i><font face="times new roman,times,serif">[NSObject performSelectorOnMainThread:doInTheMainThread withObject:paramObj waitUntilDone:YES]; </font></i></pre></blockquote><p align="justify" /><h2>メインスレッドで一時的に待ちを入れる</h2><p align="justify">メインスレッドはメソッド内部で待ちに入ることはできない(再開できなくなります)のですが、RunLoopに戻って実行を遅延させることはできます。これは、例えばUIActionIndicatorの表示をする際に使うことができます。(これを使わない限り、startAnimationとstopAnimationを一つの関数の中で実行しても、表示されません)</p><blockquote><pre><i><font face="times new roman,times,serif">[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];</font></i></pre></blockquote><p align="left" /><p align="justify" /><h2>非メインスレッドで同期する</h2><p align="justify">メインスレッドでなければ、mutexで待合わせることは可能です。例えば、以下のようなコードになります。この場合は、2回目のlockでウェイトします。</p><blockquote><pre><i><font face="times new roman,times,serif">MethodRunOnThread1 {<br /> pthread_mutex_init(&mutex, &attr);<br /> pthread_mutex_lock(&mutex);<br /><font size="2" face="times new roman,times,serif"> <code class="prettyprint"><font><span class="pun">[</span><span class="kwd">self</span><span class="pln"> performSelectorInBackground</span><span class="pun">:</span><span class="lit">@selector</span><span class="pun">(</span><span class="pln"></span></font></code>MethodRunOnThread2<code class="prettyprint"><font><span class="pln"></span><span class="pun">)</span><span class="pln"> withObject</span><span class="pun">:</span><span class="kwd">nil];</span></font></code></font><br /> pthread_mutex_lock(&mutex);<br /> phtread_mutex_unlock(&mutex);<br /> do_next_things...;<br />}</font></i></pre><i><font face="times new roman,times,serif">MethodRunOnThread2 {<br /> do something;<br /> phread_mutex_unlock(&mutex);<br />}</font></i></blockquote><pre> </pre><pre><p align="justify" /><p align="justify" /><p /><p align="justify" /><p align="justify"><br />
</p></pre>
Nikep's blognospam@example.com (金子 恵季)
開発, 2012-01-12T16:01:57Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=860http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=86YouTube仕様変更2011/8/4に対応
http://www.nikep.net/srdpty/index.php?/archives/85-YouTube201184.html
<br />
<h1>YouTubeダウンローダを最新仕様に更新</h1><p align="justify"><a title="YouTubeダウンローダー&変換サービス" href="/ytdownloader.var">YouTubeダウンロードサービス</a>と<a title="YouTube Downloader Script" href="/software.var#_youtube">ダウンロードスクリプト</a>がエラーしていたのを修正しました。</p><div align="justify"><p>Apacheのログを見る限りでは、8/4にYouTubeの仕様が変更されており、ダウンロードが一切できなくなっていました。別の仕事の納期が迫っていたために放置していたのですが、今週頭になんとか上がり、2〜3日前から見ていました。昨日、ようやく最新仕様に合わせて動かすことができるようになりました。</p></div><div align="justify">変更点は、以下のようなものでした。</div><ol><li>fmt_url_mapがなくなって、url_encoded_fmt_stream_mapになった。</li><li>この記述があるタグも変わり、<embed type="application/x-shockwave-flash"とyt.setConfig({ 'PLAYER_CONFIG':の二箇所になった。後者は初顔。</li><li><div align="justify">webmコーデックのファイル(43,44,45)が新登場。</div></li></ol><div align="justify"><p>url_encoded_fmt_stream_mapは以前と書式が異なります。今回は、itagでフォーマットタイプを知り、url=http://....でURLを得ます。楽勝と思い実装してみたのですが、なぜか上手く行きません。やみくもにやっていては駄目と思われましたので、少し分析してみました。</p><p>はまってしまっていた罠は、以下の2点のようでした。</p><ol><li><embed ...のほうは、urlエンコードが2回掛かっています。また、PLAYER_CONFIGのほうは、urlエンコードが1回と、Unicode Escape(一部文字に)が1回掛かっています。</li><li>webmフォーマットのファイルはurlパラメタそのままで取得できますが、他のフォーマット(mp4/flv)は、quality=以下を切ってやらないと"403 Forbidden"になってしまいます。</li></ol><p align="justify">(1)はプレイヤへの引数渡しの際の禁止文字の都合なのだろうと推測できますが、元々のパラメタが呪文文字列(数字)なので、結構悩みました。(2)に関しては全く見当が付きません。処置が的確なのかどうかすら分らない状態です。</p><h2>結論</h2><p align="justify">このコードで動いています。(embed, PLAYER_CONFIGのどちらでも動きます)</p><pre><i><font face="times new roman,times,serif"> if (m|\'PLAYER_CONFIG\': {(.*)}$|) {<br /> my $rt = GetFmtUrlMapFromPlayerConfig($1);<br /> %vphash = %$rt;<br /> if (length($title) <= 0) {<br /> $title = GetTitleFromPlayerConfig($1);<br /> }<br /> } elsif (m|<embed type=\"application/x-shockwave-flash\" +([^>]*)>|) {<br /> my $rt = GetFmtUrlMapFromEmbed($1);<br /> %vphash = %$rt;<br /> if (length($title) <= 0) {<br /> $title = GetTitleFromEmbed($1);<br /> }<br /> }</font></i></pre><pre><i><font face="times new roman,times,serif">sub GetFmtUrlMapFromEmbed<br />{<br /> my ($argstr) = @_;<br /> if ($argstr =~ m|;fmt_url_map=([^;\"]+)[;\"]|) {<br /> my $ar = urldecode($1);<br /> my @vpbacks = split(/,/, $ar);<br /> foreach my $vpback (@vpbacks) {<br /> $vpback =~ m/^[\s]*([0-9]*)|(.*)[\s]*$/;<br /> $vphsh{$1} = $2;<br /> }<br /> } elsif ($argstr =~ m|url_encoded_fmt_stream_map=([^\;]+)\;|) {<br /> my $ar = urldecode($1);<br /> my @prms = split(/,/, $ar);<br /> foreach my $prm (@prms) {<br /> if ($prm =~ m!itag=([0-9]+)[^0-9]*!) {<br /> my $fmt = $1;<br /> my $ar = urldecode($prm);<br /> if ($ar =~ m!url=([^\;]+)!) {<br /> $ar = $1;<br /> if ($fmt < 40) {<br /> #-- not webm<br /> $ar =~ s!&quality=.*!!;<br /> }<br /> $vphsh{$fmt} = $ar;<br /> }<br /> }<br /> }<br /> }<br /> return %vphsh;<br />}</font></i></pre><pre><i><font face="times new roman,times,serif">sub GetFmtUrlMapFromPlayerConfig<br />{<br /> my ($argstr) = @_;<br /> if ($argstr =~ m|\"url_encoded_fmt_stream_map\": \"([^\"]+)\"|) {<br /> my @prms = split(/,/, $1);<br /> foreach my $prm (@prms) {<br /> if ($prm =~ m!itag=([0-9]+)[^0-9]*!) {<br /> my $fmt = $1;<br /> my $ar = UnicodeUnescape(urldecode($prm));<br /> if ($ar =~ m!url=([^\;]+)!) {<br /> $ar = $1;<br /> if ($fmt < 40) {<br /> #-- not webm<br /> $ar =~ s!&quality=.*!!;<br /> }<br /> $vphsh{$fmt} = $ar;<br /> }<br /> }<br /> }<br /> }<br /> return %vphsh;<br />}</font></i></pre><p>れで動くようになりましたが、webm対応ができていません。今後、主力のコーデックになるようなので、将来的には対応は必須なのでしょう。しかし、現在はバックワードコンパチビリティのためのmp4はおろか、flvまで用意されているようですので、後回しにします。というのも、コーデックが新しいので、サーバで使っているシステムに導入するのは骨なのです。それに、性能の上では圧倒的に優れている、という訳でもなさそうなことも一因です。</p><p align="justify">しかし、政治的な観点では、ライセンスフリーのwebmは大歓迎ですので、なんとかしたいものです。GIFやMP3で繰り返された混乱は、サービスを提供する側からすると大きな障害になってしまいますので。</p><p /><p /></div><div align="justify"></div>
Nikep's blognospam@example.com (金子 恵季)
開発, 2011-08-18T19:05:08Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=850http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=85LinuxでMTPを使う
http://www.nikep.net/srdpty/index.php?/archives/84-LinuxMTP.html
<br />
<h1>FOMAにメディアファイルを入れる方法</h1><p>メディアファイルのフォーマット変換サービスが、最近のFOMA端末では動かないとのことなので、情報を集めていました。どうやら、AAC on MP4とWMAしか再生できなくなっているということが分りましたので、実機で試してみることにしました。その仮定で、MTPやらデータベース化やら、技術的な問題が出ましたので、(全部のFOMAに当て嵌るかは不明ですが)整理します。特に、Linuxで携帯を利用するMTPのやり方について詳しく解説します。</p><p>実機はテスト用の昨年入手していたDoCoMo F-08Bです。さっそく作成した音声ファイルを読み込ませようとすると上手く行かないのでした。</p><ol><li>USBマスストレージ: ファイルはコピーできるのですが、データフォルダからは見えません。<br /> どこにコピーしても、ネットで調べた命名規則(mol060みたいな)にしても駄目。</li><li>SDカードにコピー: これも1と同様。こんなんでは、マスストレージやSDカードに対応してると言えないのでは…。</li><li>メール添付: ミュージックに入らずに、iモーションの「データ交換」に入る。<br /> 再生可も、ミュージックプレイヤーからはアクセスできないためプレイリストに入れられない。</li><li>FOMAシリーズSDユーティリティ: それで仕方なく、富士通製転送プログラムをインストールする。<br /> 勿論 Windows でしか動かない。音声ファイルはコピーできるものの、依然としてミュージックプレイヤからはアクセスできない。<br /> メディアファイルに関しては、「FOMA90Xiでしか使えないよ」、という警告が出る。</li><li>Window Media Player: それで、Windows Media Player 11のファイルの同期を行うことでコピーできました。</li></ol><p>なんと言いますか、無理やり機能制限を加えて行く内に、ぐちゃぐちゃな仕様になってしまいましたという感じの、典型的なガラケーでイライラさせられてしまいました。皆さん、これで使うことができているのでしょうか?</p><p>ちょっと理由を考えてみました。<br />多分、1と2は、メディアファイルをデータベース化したからと思われます。怪しいファイルができていたり、太ったりするので、これに入っていると思われますが、中身が読めません。iPodやWalkmanと同じで、プロプラな制御しかさせないよ、というがっかりな仕組みです。<br />4はいかにもなガラケー的な解決方法で、追加で(タイトルが半角カナ文字な)アプリをインストールしないとなりません。しかも、これで完結できないのが、信じられないところです。<br />5は、これまた嫌われ者のMedia Player 11を使わないとならないということと、いちいち、端末設定をMTPモードに切り替えないとならないというゴミっぷりです。WMP11は、iTunesと同じく、ただ音楽を再生したいだけなのに、不要な音楽を新しく買え買え、言われてうんざりです。</p><p>整理すると、音声ファイルはデータベース管理になっていて、ファイルシステムのファイルとしては見えません。従って、SDカードにファイルとして書き込むことはできますが、携帯電話から音声ファイルとしては認識されなくなります。代わりに、本体はMTPモードを持っています(マスストレージ上のアプリプロトコルではなく)。MTPはケータイの中でデータベースに接続されているため、データフォルダやミュージックプレイヤ等から見える状態で書き込まれます。</p><h2>MTP</h2><p align="justify">Microsoft発案のメディア転送プロトコルですが、ファイル単位でマニピュレートするだけのもののようです。本当にこんなもの新しくいるの?って感じです。しかし、幸いなことに、Linuxでも使えることが分りました。</p><ul><li>最低限必要なのは、libmtp。libusbがなれば要インストールですが、最新のものではlibmtpがコンパイル不可なので、0.1.12版が良いようです。これにはユーティリティが付いており、リスティング、コピー、削除等ができます。</li><li>これでは不便なので、mtpfsを追加します。これによって、ファイルシステムにマウントすることができるようになります。</li></ul><p align="justify">libmtpには、以下のようなユーティリティが付いていて、大体のマニピュレートを網羅しています。</p><blockquote><pre><font face="arial,helvetica,sans-serif"><font face="times new roman,times,serif"><i>mtp-albumart mtp-files mtp-newfolder mtp-thumb<br />mtp-albums mtp-folders mtp-newplaylist mtp-tracks<br />mtp-connect mtp-format mtp-playlists mtp-trexist<br />mtp-delfile mtp-getfile mtp-reset <br />mtp-detect mtp-getplaylist mtp-sendfile <br />mtp-emptyfolders mtp-hotplug mtp-sendtr </i></font></font></pre></blockquote><p align="justify"><br />デバイスは、mtp-detectで表示されていれば認識されていることになります。(継いだだけの段階では、ドライバがないよ、と言われます)。しかし、mtp-filesしてもフラットにファイルがリストされてしまい、かなり使い難いです。</p><p align="justify">マウントするためには、mtpfsを使います。fuseがなければ、事前インストールが必要になります。これも理由は不明なのですが、デバイスファイル経由のアクセスにはされていないみたいで、マウントはいきなり、以下のようにします。</p><div align="justify"><blockquote><pre><font face="times new roman,times,serif"><i>mtpfs -o allow_other /mnt/mtp</i></font></pre></blockquote></div><p align="justify"><br />デバイスファイルがないので、mount -vt mtp ...のようにはできなくて、恰好悪いです。</p><p align="justify">しかしながら、これによって、Linuxでも扱えるようになりました。ケータイXXX転送みたいなプロプラなアプリを購入しないとならないよりはマシとも言えるかもしれません。</p><br />
Nikep's blognospam@example.com (金子 恵季)
インストール, 2011-05-23T18:23:20Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=840http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=84YouTubeダウンローダーでタイトルが取れないのを修正
http://www.nikep.net/srdpty/index.php?/archives/83-YouTube.html
<h1 align="justify">YouTubeビデオのタイトルの仕様変更対応</h1><p align="justify">YouTube ダウンローダスクリプトでタイトルが取れなくなっているのに気が付きました。このため、"タイトル名.mp4"というファイル名になりません。どうやら、YouTubeに変更があったようです。しばらく放置していたのですが、修正することにしました。</p><p>手元で問題のページをwgetで取得してみると、今迄取得に使っていた<meta title="">のタグはあるようなのですが、スクリプトにすると取得てきていないようです。少し謎です。YouTubeはクライアントの違いによって色々なHTMLを返してくるようになっていますので、素直にデバッグは諦めて、他の部分に記載されたタイトルから拾うことにしました。</p><p>それで、修正したものがこちらです。</p><ul><li><a href="http://www.nikep.net/software.php#_youtube">YouTubeダウンロードスクリプト</a></li><li><a href="http://www.nikep.net/ytdownloader.var">YouTubeダウンロードサービス</a></li></ul><p>何か不具合があれば、お知らせ下さいませ。</p><p>なお、スクリプトのほうは、<a href="http://www.nikep.net/srdpty/index.php?/archives/27-YouTube.html#comments">バグ報告いただいていた件</a>(wgetで動作しない)も修正してあります。</p><br />
Nikep's blognospam@example.com (金子 恵季)
開発, 2011-05-05T16:28:15Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=830http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=83Decreasing number of the wallpaper distributing system
http://www.nikep.net/srdpty/index.php?/archives/82-Decreasing-number-of-the-wallpaper-distributing-system.html
<br />
<h1>Wallpapers for photostand application.</h1><p>I provide <a href="http://www.nikep.net/wallpaperservice.var">the wallpaper distributing system</a> for <a href="http://www.nikep.net/wphotostand.var">Linux </a>and <a href="http://www.nikep.net/photostand.var">Windows</a>. And I'm sorry to have a trouble to display a uncool picture on users screen.<b></b><br /> </p><p>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. </p><p>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.</p><p>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. <br /> </p><p>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.</p><br />
Nikep's blognospam@example.com (金子 恵季)
開発, 2011-05-01T21:33:44Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=820http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=82Utility Scripts for FireGestures II
http://www.nikep.net/srdpty/index.php?/archives/81-Utility-Scripts-for-FireGestures-II.html
<br />
<h1>Script To Copy Link URL to clipboard.</h1><p>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.</p><p>I like to use FireGestures on firefox browser, and <a href="http://www.nikep.net/srdpty/index.php?/archives/78-Scripts-for-FireGesture-on-Firefox.html">made some user scripts</a> 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 <a href="http://www.nikep.net/software.var#_incwget">incwget</a>, and download videos from YouTube with <a href="http://www.nikep.net/software.var#_youtube">ytdownloader.pl</a>. Mozilla supports the function with right button menu, but I often feel irritated to copy many URLs.</p><p>The code is here;</p><blockquote><pre><i><font face="times new roman,times,serif">var linkURL = FireGestures.getLinkURL();<br />if (!linkURL)<br /> throw FireGestures.getLocaleString("ERROR_NOT_ON_LINK");<br />var clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelp<br />er);<br />clipboard.copyString(linkURL);</font></i></pre></blockquote><p /><p><br />
</p>
Nikep's blognospam@example.com (金子 恵季)
開発, 2011-04-25T18:49:38Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=810http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=81MAC OS Xの小ネタ: ファイルのロック
http://www.nikep.net/srdpty/index.php?/archives/80-MAC-OS-X.html
<br />
<h1>ファイルの属性とchflags</h1><p align="justify">MAC OS Xでは、Samba経由でコピーしたファイルなどで、通常のファイル操作できなくなってしまうことがあります。Finderでゴミ箱に入れようとすると、「ロックされています」と表示され、chmodしようとすると"Operation not permitted"表示されてしまい、実行することができません。少しの間、悩んでしまいました。</p><p align="justify">結論としては、これはBSDのファイル属性拡張です。これを変更するには、chflagsのコマンドを使います。</p><blockquote><pre><font face="times new roman,times,serif"><i>chflags nouchg files</i></font></pre></blockquote><p align="justify">また、ロック解除に関しては、Finder → 情報を見る でチェックボタンを外すことでも可能です。</p><p align="justify">このようなものがあるのを初めて知りました。なんだか、DOSのattrみたいです。昔、SunOS使いだったのになぁ、と思い調べてみたら、BSD4.4からの導入(SunOSは4.3まで)だったようです。設定可能な属性は他にも沢山ありますが、opaqueとhidden以外は現在は使われてなさそうなものです。</p><p align="justify">UNIXはOKだぜと思いがちな、Linux使いの人が嵌り易そうな罠ですね。それにしても、属性拡張の仕方としてエレガントさに欠けているように感じるのは私だけでしょうか。chmodか、ACLのどちらかと統合して欲しい気がします。</p><p align="justify" />
Nikep's blognospam@example.com (金子 恵季)
テクノロジ, 2011-04-08T22:43:09Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=800http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=80iPadアプリケーション
http://www.nikep.net/srdpty/index.php?/archives/79-iPad.html
<br />
<h1>iPadアプリ「幸福の王子」公開</h1><p align="justify"><a href="http://eitokusya.com/main/" title="eitokusya">合同会社英徳社</a>からiPadアプリ「幸福の王子」がAppStoreに出ました。私がソフトウェア部分の開発を請け負っていたものです。</p><p align="justify"><a href="http://www.nikep.net/srdpty/uploads/talkbook-info.jpg" class="serendipity_image_link"><!-- s9ymdb:70 --><img width="110" height="85" src="http://www.nikep.net/srdpty/uploads/talkbook-info.serendipityThumb.jpg" style="border: 0px none ; float: right; padding-left: 5px; padding-right: 5px;" class="serendipity_image_right" /></a>絵本アプリで、テキストと挿絵を見ながら、日本語、英語のバイリンガルで朗読してくれます。お話はオスカー・ワイルドの原作で、王子様の黄金像と心優しい燕の悲しい、良く知られた物語です。朗読は、役者さんに入れていただいた、とのことで、大変聞き易いものになっています。物語全部ですので、日本語のほうだけで30分くらいあり、長い通勤などでも充分楽しめるボリュームがあります。</p><p align="justify">ソフト的には、英語学習者、日本語学習者に使っていただくことも想定して、お話途中で音声とテキスト画面をワンボタンで切り替えが可能にしています。また、どこを読んでいるか、カーソルで追えるようになっており、再生箇所をタッチで指定することもできます。</p><p align="justify">画面的に定型のiPad/iPhoneアプリではなかったりすることも含めて、お客様からどういった声をいただけるのか、とても楽しみです。</p><br />
Nikep's blognospam@example.com (金子 恵季)
開発, 2011-03-24T18:41:24Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=790http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=79Scripts for FireGesture on Firefox
http://www.nikep.net/srdpty/index.php?/archives/78-Scripts-for-FireGesture-on-Firefox.html
<br />
<h1>Utility Scripts for FireGestures</h1><p>I wrote some scripts of internet search of words in clipboard for FireGestures.</p><p>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.</p><p /><ol><li>Web Search</li><li>Wikipedia search</li><li>Image Search</li><li>Map Search</li><li>Video Search</li><li>Dictionary Search</li></ol><h2>Base script</h2><p /><p>Base 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.)</p><blockquote><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i>const IN_NEW_TAB = true;</i></font><br /><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i>const IN_BACKGROUND = true;</i></font><br /><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i>var str = readFromClipboard();</i></font><br /><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i>if (!str)</i></font><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i> return;</i></font><br /><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i> str = encodeURIComponent(str);</i></font><br /><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i><font color="#ff3300" class="Apple-style-span"><font color="#000000">str = </font>"http://www.google.co.jp/search?hl=ja&source=hp&q=" + str + "&aq=f&aqi=g10&aql=&oq=&gs_rfai=";</font><br />if (IN_NEW_TAB)<br />
<br /> gBrowser.loadOneTab(str, null, null, null, IN_BACKGROUND, false);<br />else<br /> gBrowser.loadURI(str);</i></font></blockquote><p><font size="3" face="arial,helvetica,sans-serif" class="Apple-style-span">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.</font></p><ol><li>Web Search: Gesture: letter "G" (ULDRUL), URL (<font size="2"><i>"http://www.google.co.jp/search?hl=ja&source=hp&q=" + str + "&aq=f&aqi=g10&aql=&oq=&gs_rfai="</i></font>)</li><li>Wikipedia search: Gesture: letter "W" (DUDU), URL(<i><font size="2">"http://ja.wikipedia.org/w/index.php?search=" + str</font></i>)</li><li>Image Search: letter "GI" (ILDRULD), URL(<font size="2"><i>"http://images.google.co.jp/images?hl=ja&source=imghp&q=" + str + "&gbv=2&aq=f&aqi=g4&aql=&oq=&gs_rfai="</i></font>)</li><li>Map Search: letter "M" (UDUD), URL(<font size="2"><i>"http://maps.google.co.jp/maps?f=q&source=s_q&hl=ja&geocode=&q=" + str + "&ie=UTF8"</i></font>)</li><li>Video Search: letter "Y"(DRUDLUR), URL<i>(<font size="2">"http://www.youtube.com/results?search_query=" + str</font></i>)</li><li>Dictionary: letter "D"(DRUL), URL(<font size="2"><i>"http://www.weblio.jp/content/" + str</i></font>)</li></ol><p><font size="3" face="arial,helvetica,sans-serif" class="Apple-style-span"></font></p><p><font size="3" face="arial,helvetica,sans-serif" class="Apple-style-span"></font></p><p><font size="3" face="arial,helvetica,sans-serif" class="Apple-style-span"></font></p><p><font size="2" face="verdana, arial, helvetica, sans-serif" class="Apple-style-span"></font></p><p><font size="2" face="verdana, arial, helvetica, sans-serif" class="Apple-style-span"></font></p><pre><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i></i></font></pre><pre><font size="2" face="'times new roman', times, serif" class="Apple-style-span"><i></i></font></pre><p /><p /><p /><p><br />
<br />
<br />
</p>
Nikep's blognospam@example.com (金子 恵季)
開発, 2011-03-08T20:39:46Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=780http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=78YouTubeダウンローダーの更新
http://www.nikep.net/srdpty/index.php?/archives/77-YouTube.html
<br />
<h1 align="justify">YouTubeの最新仕様に対応</h1><p>昨日、<a href="http://www.nikep.net/ytdownloader.var" title="ytdownloader">YouTubeダウンローダー&変換サービス</a>でYouTubeのファイルを変換して見ようとして、うまく行かないのがあるのに気付きました。普段あまり見ない映画系のビデオでした。分野に依るのかもしれませんが、ビデオのURLがうまく取れてないらしいのです。</p><p>ファイルを調べてみたところ、確かに今迄に実装したビデオURL形式が一つもなく、以下の3種類の組み合わせだけになっているものでした。</p><ul><li><embed type=\"application/x-shockwave-flash\" で始まるもの</li><li>var swfConfig = で始まるもの</li><li>PLAYER_CONFIG で始まるもの</li></ul><p>これらの内容自体は皆同じビデオURLを指定しているようです。そこで、この3つに対応するため、<a href="http://www.nikep.net/srdpty/index.php?/archives/51-YouTube.html">これ</a>以来久し振りにコードを変更し、とりあえず動くようにはできました。ただ、あいかわらず、複数の形式が1つのページに入っているのですが、規則性も、どれを優先すれば良いのかも分かりません。</p><p>これで、都合7種類("fullscreenurl"は既に使われていないかも)の指定形式があることになります。登場してすぐになくなった呪文パラメタを要するものを加えると9種類です。</p><p align="justify">YouTubeに関して残っているものとしては、ログインしないと見られないアダルト系のビデオがあります。やるとすると、ダミーユーザを作ってログインをシミュレートした後にCookieを送れば良いのだと思います。しかしながら、あまり需要がなさそうです。YouTubeは基本的に健全なサイトですから。</p><p /><p /><br />
<br />
Nikep's blognospam@example.com (金子 恵季)
開発, 2011-03-04T18:37:44Zhttp://www.nikep.net/srdpty/wfwcomment.php?cid=770http://www.nikep.net/srdpty/rss.php?version=1.0&type=comments&cid=77