MacPortsでswftools@0.9.2を入れようとしたら失敗した
$ port search swftoolsswftools @0.9.2 (graphics) SWF manipulation and generation tools $ sudo port install swftools [snip] ---> Building swftools Error: org.macports.build for port swftools returned: command execution failed Please see the log file for port swftools for details: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_graphics_swftools/swftools/main.log To report a bug, follow the instructions in the guide: http://guide.macports.org/#project.tickets Error: Processing of port swftools failed
swftoolsを使いたくて、MacPortsにあったから入れようとしてみたら、エラーで失敗しました。
現状
たぶん、依存してるライブラリ、giflibのバージョンの問題っぽい。後述するメーリングリストのログを、流し読みしたところ*1swftools側で近いうちに、新しいgiflibに対応するということになってるっぽいです。
情報源
Changed 4 weeks ago by ryandesign@…
Replying to simon.groenewolt@…:
I've joined the swftools mailinglist and posted a message regarding this error.
Here are the messages in that thread:
#34553 (swftools: Undefined symbols _PrintGifError) – MacPorts
- http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00038.html
- http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00039.html
- http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00055.html
- http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00056.html
エラーメッセージで示されたMacPortsのログを見て、そこにあるキーワードを元に探してみると、MacPortsのTracに該当するチケットがありました。
> This is not a Mac-specific issue; it affects any user who has
> upgraded to giflib 4.2.0, which is the latest stable version of
> giflib is that has been released by its developers:
>
> http://sourceforge.net/projects/giflib/I was aware of the above, yes. My suggestion of a downgrade to
http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00056.html
4.1.6 was meant as a temporary solution, not a permanent fox.
MacPortのチケットにswftoolsのメーリングリストのURLが4つ貼ってあります。4個目のURLを見ると、giflib最新の4.2.0だと発生するという報告に対し、とりあえずの対応として4.1.6を使う解決策が出てました。
> The developers of swftools should update swftools to be compatible
> with the latest stable version of giflib by no longer attempting to
> use this function.Now the issue has been flagged, I agree. I am sure the issue will be
http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00056.html
rectified shortly.
同じメール内には、それなりに色々と書いてあるけど、とりあえず、最後のほうにswftools側で対応する的な事が書かれてました。このメールが2012/05/31の事だけど、今回エラーが出たって事は、まだMacPortsのリポジトリには少なくとも反映されてないみたい。
疑問
回避策として提示されている、giflib 4.1.6を使うという事だけど、この辺の知識が足りなくてやり方がわからない。
Linuxだとldconfig
とかLD_LIBRARY_PATH
とかを、どうにかするんだと思うんだけど、Macにはldconfig
と/etc/ld.so.conf
が無く、どうやら別の仕組みになっているみたい((そもそも一時的な対応なのに、/etc/ld.so.conf
を変えるのは良くないんだろうけど))。
Mac OS Xの標準のバイナリファイルフォーマット(Mach-O)は、Linuxでのバイナリファイルフォーマット(ELF)とは異なっており、共有ライブラリの扱い方も異なっていたと記憶しているので、Mac OS Xにはldconfigは存在しなかった(=必要ない)と思います。
Macでldコマンド、ldconfigコマンドは使用できますか 【OKWAVE】
この辺りいい加減ちゃんと理解しないといけないよなぁ。
MacPortsで入れる代わりに自前でビルドしたライブラリを使ってswftoolsをビルドしてみた - kanonjiの日記
ライブラリ検索パスに入っていない場所に置いてあるライブラリを使って、セルフビルドしてみました。
*1:読み間違ってなければ
Windows7でもiptablesのFORWARDみたいな事がしたくってやってみたら出来なくなってた
Windows7内のXPモードであるWindowsXPで、TCPでポートを待ち受けるサーバー的なものを動かしたくて、どうにかしてポートフォワード*1をしようとしてます。sshポートフォワードとか色々方法を考えているとき、Linuxならiptablesでフォワードがあったよなぁと思い出し、Windowsでも何かないかと調べてみたら、見つけました。
そして、Windows7だと出来ないことがわかったので、残念だけどそこまでをメモしておきます。
Windows7のXPモードにサーバーを立てて別PCからアクセスする - kanonjiの日記
ちなみにやりたかったのはこれです。結局iptables的なFORWARDは無理だったけど、学習も兼ねて、sshポートフォワード、stone、ルーティングテーブル書き換えの3つの方法でやってみました。
出来るはずだった方法
Remote Accsess and Routingサービス*2というものがあり、これを有効にするとWindowsでもiptablesっぽい事が出来るようになる。
Remote Accsess and Routingサービスを起動
>ipconfig /all Windows IP 構成 ホスト名 . . . . . . . . . . . . : mypc プライマリ DNS サフィックス . . . . . . . : ノード タイプ . . . . . . . . . . . . : ハイブリッド IP ルーティング有効 . . . . . . . . : はい WINS プロキシ有効 . . . . . . . . : いいえ イーサネット アダプター ローカル エリア接続: [snip]
Remote Accsess and Routingサービスが起動すると、このIP ルーティング有効
がはい
になります。
もしくはレジストリで有効化
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters の IPEnableRouter のdwordを1にすればルーティング自体は許可になります。 その後適当にルートを追加。
https://twitter.com/pankazuda/status/228117970163990528
Twitterで教えてもらった話ではレジストリを変更しても、IP ルーティング有効
がはい
になるとの事。結局ポートフォワードが出来なかったので、Remote Accsess and Routingサービスを使う場合と機能的な違いがあるのかどうか、わかりませんでした。
netshコマンドで設定
>netsh [コンテキスト((Linuxのサブコマンド?))] [サブコンテキスト]...
netsh
というコマンドで色々と設定できるようです。コンテキストと呼ぶサブコマンド的なものが沢山あります。正直ありすぎてよくわからない。
routing ip nat add/delete portmapping
IP routing commands | Microsoft Docs
検索したところ、ポートフォワードはrouting
コンテキストのip
サブコンテキストのnat
*3でadd
コマンドなどを書くという使い方になるらしい。
add portmapping name="Local Area Connection" tcp 0.0.0.0 80 10.0.0.1 80
http://technet.microsoft.com/ja-jp/library/cc754535(v=WS.10).aspx#BKMK_96
サブコンテキストまでが省略されてるけど、こんな使い方になるっぽい。
後述する理由によって、結局出来なかったからこれ以上はわからないけど、このコマンドで設定すれば普通にポートフォワードが出来そうな雰囲気ではあります。
出来ない理由
WindowsXPではRemote Accsess and Routingとnetsh natコマンドを使ってRouter化すればよかったけど、Windows7ではRRASを動かしただけでは、routingできている様子はないし、netshコマンドにNATの項目無いしなんでー?っておもってた。海外のフォーラムを漁ってみるとこんな情報が。
http://d.hatena.ne.jp/mad-capone/20110628/1309259276How to enable NAT on Windows 7...
I am not able to use netsh routing commands on WIndows 7. These commands work on Windows XP. Upon research I found that Windows 7 does not support routing commands. On Vista there was workaround by using "netsh add helper ipmontr.dll" and "netsh add helper ippromon.dll" but these commands does not work on Windows 7.
なんとWindowsXPでは出来たことがWindows7で出来なくなってるんだとか。引用元ではnetsh nat
と書いてるが、こっちの環境でもnetsh routing
が無いことを確認しました。routing
コンテキストが無くちゃ、ポートフォワードは設定できません。
マイクロソフトめ・・・
余談
>netsh ? 使用法: netsh [-a エイリアス ファイル名] [-c コンテキスト] [-r リモート コンピュ ーター名] [-u [ドメイン名\]ユーザー名] [-p パスワード | *] [コマンド | -f スクリプト ファイル名] 使用できるコマンドは次のとおりです: このコンテキストのコマンド: ? - コマンドの一覧を表示します。 add - エントリの一覧に構成エントリを追加します。 advfirewall - 'netsh advfirewall' コンテキストに変更します。 branchcache - 'netsh branchcache' コンテキストに変更します。 bridge - 'netsh bridge' コンテキストに変更します。 delete - エントリの一覧から構成エントリを削除します。 dhcpclient - 'netsh dhcpclient' コンテキストに変更します。 dnsclient - 'netsh dnsclient' コンテキストに変更します。 dump - 構成スクリプトを表示します。 exec - スクリプト ファイルを実行します。 firewall - 'netsh firewall' コンテキストに変更します。 help - コマンドの一覧を表示します。 http - 'netsh http' コンテキストに変更します。 interface - 'netsh interface' コンテキストに変更します。 ipsec - 'netsh ipsec' コンテキストに変更します。 lan - 'netsh lan' コンテキストに変更します。 mbn - 'netsh mbn' コンテキストに変更します。 namespace - 'netsh namespace' コンテキストに変更します。 nap - 'netsh nap' コンテキストに変更します。 netio - 'netsh netio' コンテキストに変更します。 p2p - 'netsh p2p' コンテキストに変更します。 ras - 'netsh ras' コンテキストに変更します。 rpc - 'netsh rpc' コンテキストに変更します。 set - 構成の設定を更新します。 show - 情報を表示します。 trace - 'netsh trace' コンテキストに変更します。 wcn - 'netsh wcn' コンテキストに変更します。 wfp - 'netsh wfp' コンテキストに変更します。 winhttp - 'netsh winhttp' コンテキストに変更します。 winsock - 'netsh winsock' コンテキストに変更します。 wlan - 'netsh wlan' コンテキストに変更します。 利用できるサブコンテキストは次のとおりです: advfirewall branchcache bridge dhcpclient dnsclient firewall http interface ips ec lan mbn namespace nap netio p2p ras rpc trace wcn wfp winhttp winsock wlan コマンドのヘルプを表示するには、コマンドの後にスペースを入れ、 ? と入力してください。
netsh
のコンテキストの一覧です。各コンテキストの説明が意味をなしてないのも苛立ちを覚える*4んですが、firewall
とadvfirewall
の似たコンテキスト、どうやら以前はfirewall
コンテキストで設定した事がadvfirewall
に移動してたりするらしいです。そういう変更を気軽に放り込んでくるのも、マイクロソフトのいやなところのひとつ。netsh
の情報源はあまり多くないので、ネットの情報が使えなくなってしまうよ・・・
routing
コンテキストが別名になってたり、別のコンテキストで出来そうなのないかなと思ったけど、説明が書いてないのでよくわからない。
参考
IP routing commands | Microsoft Docs
Netsh Routing IP NAT Context Commands | Microsoft Docs
http://d.hatena.ne.jp/mad-capone/20110628/1309259276
netsh routing ip nat add portmapping - Windows 2000/XP - コマンド
運用:常時接続時代のパーソナル・セキュリティ対策(第2回) 1.Routing and Remote Accessサービスとその使い方(1) - @IT
環境
OS | Windows7 Professional 64bit |
WordpressのレンタルブログサービスWordpress.comが全然Wordpressじゃない件
ちょっと思いつきでブログを作りたくて、前から気になってたWordPress.com: 無料のサイトやブログを作成を使ってみた。Wordpressの開発会社が運営する、Wordpressを使ったブログサービスで、Wordpressならカスタマイズにもそこそこ慣れてるし、今回は自分で構築するほどじゃないと思ったので使ってみたら、予想外に全然Wordpressじゃなかったのです。
以下、wordpressなんだから色々出来るだろうとずっと思ってた自分が、使ってみて気がついたWordpress.comのダメな所です。気がついた順に書いていきます。
※Wordpress.comはまだ登録して3日くらい、実際に触ったのは数時間なので、見落としとか勘違いももしかしたらあるかもしれません。
プラグインのインストールが出来ない
いきなり、メインの要素がなくなりました。Wordpressをインストールしたら必ず入れるプラグインもいくつかあるのに、そもそもインストールが出来ません。当然自分で作ったプラグインも使えません。
テーマの改造が出来ない
プラグインと違ってテーマのインストールは出来ました。ただ、そのテーマをベースにちょっと変えてとかは出来ません。ロゴ画像とか背景画像や色とかテーマが管理画面からの変更に対応している部分*1は変えられるけど、htmlを書いたり変えたりというのは出来ない。
Wordpressのthe_date()やthe_time()で日付を英語で表示出来なくなったのでget_post_time()を使った - kanonjiの日記
Wordpressの記事ループの中で、最初や最後の記事とかを判別する - kanonjiの日記
当然テンプレートタグも書けなければ、function.phpにちょっとした関数を書いて使うことも出来ないので、こんなのを使う余地がない。
パーマリンク設定が変更できない
パーマリンクは/2012/01/01/Slug/
に固定されているようです。インストールする方のWordpresで言う所の日付と投稿名/%year%/%monthnum%/%day%/%postname%/
です。
流石にこれはあるだろうと思っていて、メニューに項目が沢山あるので見逃してるのかなと思い/wp-admin/options-permalink.php
に直接アクセスしてみたらSorry, this is disabled
と言われてしまいました。
Google Analyticsが使えない
小規模サイトなら多くのサイトで導入してると思うAnalyticsも使えません。どっかの掲示板で見かけたほんとかどうか分からない話によると、Wordpress.com全体で使ってるから個別には無理なんだとか。理由は兎も角、使えない事にはかわりありません。そもそも、テーマの改造が出来ないので、自分の使いたいJavaScriptすら置けないという。
一応WordPress.com Stats | WordPress.orgというアクセス解析機能が提供されています。
ブログパーツや自作JavaScriptが使えない
書いてる途中に気がついて、既に書いてるけど、よく考えたらブログパーツや自作JavaScriptすら使えない。
どんだけガチガチなんだろう。
Tumblrの方がまだ自由度ある
多分Wordpress.comって結構前から運営されてるんだろうし、もしかしたらGoogle Analytics登場以前からかもしれない。だから、そういう新しいものについていけてないのかもしれない。Wordpressが持つ自由度の高いというイメージとは別に、やっぱり長くあるサービスだと、色々古くさくなるものなのかもしれない。
Tumblrはすごいシンプルだけど、少なくともテンプレートはhtml/cssレベルで改造できるし、たしかGoogle Analyticsも使えたはず。シンプルとはいえ新しめのサービスは対応してほしいところは対応してるって事なのかな。JavaScriptまで書けるかは分からないけど。
Wordpress.org > Tumblr |超えられない壁| Wordpress.com
柔軟性・自由度に関してはWordpress.comはかなり低いです。はてなダイアリーも出来ない事かなり多いけど、Wordpress.comも相当・・・。気軽にブログ作りたいなって思ったらTumblrがいいかな。Wordpress.comで作っちゃったのは、近いうちにTumblrで作り直してみたい。
*1:テーマが管理画面からの変更を想定して作られていれば、なのでテーマごとに変えられる部分は違うと思うし出来ないテーマもあると思う
/etc/init.d/mysql statusを一般ユーザーで使ったらおかしな挙動をした件
$ /etc/init.d/mysqld status
mysqld は停止していますがサブシテムがロックされています
確かstatusは一般ユーザーでも見れたよなぁと思ってやったら、なんかこんなエラーメッセージが出ました。全然記憶になかったんで、止まってるのかなと思って再起動とかしてから、もう一度status見てもやっぱり出ちゃう。ふとroot権限でstatus見たらちゃんと確認出来ました。
root権限じゃないとダメだったっけかなぁ?
2011-11-22
MySQLの拡張仕様、GROUP BYでカラム指定を省略してSELECTする場合について
GROUP BY節で、選択したすべてのカラムの名前を列挙する必要はありません。これにより、ごく一部ではありますが、きわめて一般的なクエリのパフォーマンスが向上します。項11.11. 「GROUP BY 句との関数および修飾子の使用」 を参照してください。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 1.7.1 標準 SQL に対する MySQL 拡張機能
SELECT foo_id, bar_id FROM examples GROUP BY foo_id;
MySQLでは、例えばこんな風に、GROUP BYにfoo_id
だけを指定して、foo_id, bar_id
を取得出来ます。上記の通り、実はこれはMySQLの拡張仕様らしいです。
SELECT foo_id, bar_id FROM examples GROUP BY foo_id, bar_id;
標準SQL規格では、この様にfoo_id, bar_id
を取得したい場合は、GROUP BY foo_id, bar_id
とする必要があります。
注意
GROUP BY 部から省略したカラムがグループ内で一定していない場合は、この機能を 使用しないで ください。サーバはいかなる値もグループから自由に戻すことができ、すべての値が同じでない限り、結果は不確定です。
http://dev.mysql.com/doc/refman/5.1/ja/group-by-hidden-fields.html
機械翻訳っぽくて分かりにくいですが、前述の例でGROUP BY foo_id
でグルーピングした際、bar_idに何が入るか分からないという、落とし穴があるみたいです。これを知らなかったんですが、GROUP BYをあまり使った事が無く不安だったので聞いてみたら、教えてもらえました。
例
foo_id | bar_id |
1 | 1 |
1 | 2 |
1 | 3 |
2 | 1 |
2 | 1 |
2 | 1 |
分かりにくいし、後で忘れるかもしれないので、例を書いておきます。
こんなテーブルから、GROUP BY
を使ってSELECTした場合の、SQL標準とMySQL拡張仕様の2パターンの想定動作*1を書いてみます。
書いた時期
2011-10-06
*1:実行してません。
CentOSの予約済みUID/GIDを確認する
ホワイトペーパー/アーキテクチャー/ユーザーとグループ/GIDとUID - Nature's Linux Tech PortalはNature's Linuxというディストリビュージョンのドキュメントみたいだけど、システムが使うUID/GIDをちゃんとまとめてあるのは良いなと思って、CentOSでも探してみました。
・/usr/share/doc/setup-2.5.58/uidgidの情報です
CentOS-uidgid情報
・実際のインストールと異るなる部分があります
・/etc/passwdを見て確認してください
色々探して/usr/share/doc/setup-2.5.58/uidgid
に書いてあるらしいという事がわかったのでメモしておきます。上のページによると、実際とは異なる部分があるらしいし、Nature's Linuxのより分かりやすくないけど、無いよりあるほうがいいよね。
web上にも書いてあるといいのにな。見つけれて無いだけであるのかもしれないけど。
出力してみた
$ cat /usr/share/doc/setup-2.5.58/uidgid NAME UID GID HOME SHELL PACKAGES root 0 0 /root /bin/bash setup bin 1 1 /bin /sbin/nologin setup daemon 2 2 /sbin /sbin/nologin setup sys - 3 - - setup adm 3 4 /var/adm /bin/bash setup tty - 5 - - setup disk - 6 - - setup lp 4 7 /var/spool/lpd /sbin/nologin setup mem - 8 - - setup kmem - 9 - - setup wheel - 10 - - setup sync 5 (0) /sbin /bin/sync setup shutdown 6 (0) /sbin /sbin/shutdown setup halt 7 (0) /sbin /sbin/halt setup mail 8 12 /var/spool/mail /sbin/nologin setup news 9 13 /var/spool/news /sbin/nologin setup uucp 10 14 /var/spool/uucp /sbin/nologin setup operator 11 (0) /root /sbin/nologin setup games 12 (100) /usr/games /sbin/nologin setup gopher 13 30 /usr/lib/gopher-data /sbin/nologin setup ftp 14 50 /var/ftp /sbin/nologin setup man - 15 - - setup oprofile 16 16 /home/oprofile /sbin/nologin oprofile pkiuser 17 17 /usr/share/pki /sbin/nologin pki-ca,rhpki-ca floppy - 19 - - dev,MAKEDEV games - 20 - - setup slocate - 21 - - slocate utmp - 22 - - initscripts,libutempter squid 23 23 /var/spool/squid /dev/null squid pvm 24 24 /usr/share/pvm3 /bin/bash pvm named 25 25 /var/named /bin/false bind postgres 26 26 /var/lib/pgsql /bin/bash postgresql-server mysql 27 27 /var/lib/mysql /bin/bash mysql nscd 28 28 / /bin/false nscd rpcuser 29 29 /var/lib/nfs /bin/false nfs-utils console - 31 - - dev rpc 32 32 / /bin/false portmap amanda 33 (6) /var/lib/amanda /bin/false amanda netdump 34 34 /var/crash /bin/bash netdump-client, netdump-server utempter - 35 - - libutempter vdsm 36 - / /bin/bash kvm, vdsm kvm - 36 - - kvm, vdsm rpm 37 37 /var/lib/rpm /bin/bash rpm ntp 38 38 /etc/ntp /sbin/nologin ntp dip - 40 - - setup mailman 41 41 /var/mailman /bin/false mailman gdm 42 42 /var/gdm /bin/bash gdm xfs 43 43 /etc/X11/fs /bin/false XFree86-xfs pppusers - 44 - - linuxconf popusers - 45 - - linuxconf slipusers - 46 - - linuxconf mailnull 47 47 /var/spool/mqueue /dev/null sendmail apache 48 48 /var/www /bin/false apache wnn 49 49 /home/wnn /bin/bash FreeWnn smmsp 51 51 /var/spool/mqueue /dev/null sendmail puppet 52 52 /var/lib/puppet /sbin/nologin puppet tomcat 53 53 /var/lib/tomcat /sbin/nologin tomcat lock - 54 - - lockdev ldap 55 55 /var/lib/ldap /bin/false openldap-servers frontpage 56 56 /var/www /bin/false mod_frontpage nut 57 57 /var/lib/ups /bin/false nut beagleindex 58 58 /var/cache/beagle /bin/false beagle tss 59 59 - /sbin/nologin trousers piranha 60 60 /etc/sysconfig/ha /dev/null piranha audio - 63 - - condor 64 64 /var/lib/condor /sbin/nologin condord pegasus 66 65 /var/lib/Pegasus /sbin/nologin tog-pegasus wine - 66 - - wine webalizer 67 67 /var/www/html/usage /sbin/nologin webalizer haldaemon 68 68 / /sbin/nologin hal vcsa 69 69 - /sbin/nologin dev,MAKEDEV avahi 70 70 / /sbin/nologin avahi realtime - 71 - - privoxy 73 73 /etc/privoxy /bin/bash privoxy sshd 74 74 /var/empty/sshd /sbin/nologin openssh-server radvd 75 75 / /bin/false radvd cyrus 76 (12) /var/imap /bin/bash cyrus-imapd shadow - 76 - - cyrus-imapd pcap 77 77 /var/arpwatch /sbin/nologin arpwatch fax 78 78 /var/spool/fax /sbin/nologin mgetty nocpulse 79 79 /etc/sysconfig/nocpulse /bin/bash nocpulse desktop 80 80 - /sbin/nologin desktop-file-utils dbus 81 81 / /sbin/nologin dbus jonas 82 82 /var/lib/jonas /sbin/nologin jonas clamav 83 83 /tmp /sbin/nologin clamav screen - 84 - - screen quaggavt - 85 - - quagga sabayon 86 86 - /sbin/nologin sabayon postfix 89 89 /var/spool/postfix /bin/true postfix postdrop - 90 - - postfix majordomo 91 91 /usr/lib/majordomo /bin/bash majordomo quagga 92 92 / /sbin/nologin quagga exim 93 93 /var/spool/exim /sbin/nologin exim distcache 94 94 / /sbin/nologin distcache radiusd 95 95 / /bin/false freeradius hsqldb 96 96 /var/lib/hsqldb /sbin/nologin hsqldb dovecot 97 97 /usr/libexec/dovecot /sbin/nologin dovecot ident 98 98 / /sbin/nologin ident nobody 99 99 / /sbin/nologin setup users - 100 - - setup gnats ? ? ? ? gnats, gnats-db listar ? ? ? ? listar nfsnobody 65534 65534 /var/lib/nfs /sbin/nologin nfs-utils # Note: nfsnobdy is 4294967294 on 64-bit platforms (-2)
書き始めた時期
2011-05-16
/usr/share/doc/setup-2.5.58/uidgid
にあるって事とリンクだけ、メモしてあった。
MySQLでidだけをSELECTして、カンマ区切りにして出力する
SELECT GROUP_CONCAT(id SEPARATOR ', ') FROM examples; +-------------------------------------------------------------------------------------+ | GROUP_CONCAT( id SEPARATOR ', ') | +-------------------------------------------------------------------------------------+ | 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146 | +-------------------------------------------------------------------------------------+
ちょっとデバッグ目的で、mysqlコンソールで直接SQL書いて、どんなデータが取れるか確認したかった。ただ、perlでは1回SELECTして、その結果をwhileで回して、それを元にSELECTをしてって感じなので、それをやるにはWHERE IN()を使う事になります。それで、WHERE IN()に渡す為の、カンマ区切りのidが欲しかったので、調べてやってみました。これならWHERE IN()のとこにコピペできます。
サブクエリーでやれよって話かもしれないけど、実際に書いてたスクリプトはJOINとかしてて複雑なSQLだったので。MySQLは、JOINありのサブクエリーって苦手なのか、かなり遅いのでクエリーを分けたかったので。
書いた時期
2011-09-29