Perl・Javascriptメモ
(useWill.com)![]() |
2012/02/19 ■レンタルサーバーで動くPerlでも使える暗号化モジュール「RC4.pm」 個人的メモ
暗号化するとバイナリになるので ■暗号化 my $RC4 = Crypt::RC4->new('password'); 暗号化されたテキスト([0-9a-f]) = unpack("H*",$RC4->RC4( 元のテキスト )); ■符号化(元に戻す) my $RC4 = Crypt::RC4->new('password'); 元のテキスト = $RC4->RC4( pack("H*",暗号化されたテキスト)); って使ってます。使い方はこのへんも参考に。 2012/02/07 ■UTF8で保存出来て、Perlのサブルーチン一覧、変数一覧がサイドバーに表示出来るフリーのエディター「ez-HTML」 5年ぐらい探していた機能を持つソフトを発見。 Perl Editorから卒業する時がついに来たか!? 2012/01/21 ■Webサイトの表示を「パソコン、iPhone、Android、iPadなど」で切り替える方法 うちのサイトをiPhoneやスマホなどの画面の小さな端末で見た場合に少しでも見やすいように、右側のメニューが下に回り込むようにしてみました。どうでしょうか? 以下、方法に関する個人的メモ。 切り替えの判断は「ブラウザの横幅で判定」することにしました。 JavaScriptで取得出来るブラウザの横幅の数値には以下の4種類がある。
もうカオスorz。しかも(3)はheadに書いても取得出来ずbodyに記述した時のみ取得可能 そこで試行錯誤の結果、うちのサイトではbody部分に ------------------------------- var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var width2= window.outerWidth; if (width>width2 && width2>0){width=width2}; if (width>800){ 画面が広い場合に行う処理 } ------------------------------- というスクリプトで表示を切り替えています。 iPhoneが端末によって仕様が異なるしiPhone4ではwindow.outerWidthに使えそうな数字を返す&その他に980という謎仕様のため、少しややこしくなっています。 アドバイスあったらよろしくお願いします。 2011/07/24 ■Perlを使ってFacebookの自分のウォールに写真付きで投稿する方法 やっと成功した。個人的メモ。 基本は以前に紹介したTwitterの場合のOath認証と同じですが、専用のAPIも必要なく、もっと簡単に扱えます。Open Graph Protocolって思想ってか? (1)開発者ページにアクセス。アプリを登録する。サイトURL、ドメインは下記の認証作業で使用する必要があるため、2つとも同じにして自分でPerlスクリプトをおける場所にする(下記で使うredirect_uriとドメインが違うとエラーになる。)。 (2)登録すると、AppIDと AppSecretが発行されるのでメモ (3)アプリを使ってaccess_tokenを取得するためのスクリプトを作成、設置。http://usewill.com/facebook.cgiでやりとりするとして話を進める。以下の2回のFacebook graph APIのアクセスで投稿に必要なユーザーごとのaccess_tokenが取得出来る。 <<概要>> step.1:AppIDと取得したいアクセス権限のリストを添えてFacebook graph APIに送る(アクセス1回目) step.2:Facebook graph APIは申請を行ったユーザーに(パソコンに保存されているcookie内容を元に)アプリからのアクセスを許可するかユーザーに聞く step.3:許可された場合、Facebookのgraph APIがredirect_uriに認証コードを返してくる。 step.4:AppID、AppSecret、取得した認証コードを添えてユーザーごとのaccess_tokenを要求(アクセス2回目) step.5:承認されればFacebook graph APIからユーザーごとのaccess_tokenが帰ってくる。 <<具体例>> ★step.1の部分 https://graph.facebook.com/oauth/authorize?client_id= AppID&redirect_uri= http://usewill.com/facebook.cgi(URLエンコードしておく)&scope=publish_stream,offline_access 上記の例ではscopeはウォールへの書き込みに必要な「publish_stream」と、ログオンしてなくてもアクセス可能にするための「offline_access」を要求している。この2つでウォールへの書き込み可能。 ★step.4の部分 作成したfacebook.cgiではFacebook graph APIがstep3でGETで渡してくる認証コード(code)を含めて https://graph.facebook.com/oauth/access_token?client_id= AppID&redirect_uri= http://usewill.com/facebook.cgi(URLエンコードしておく)&client_secret= AppSecret&code= step3で渡された認証コード(code) という内容で再度Facebook graph APIにアクセスすると access_token=xxxxxxxxxxxxxxxx という内容がページ内容として帰ってきて、かつredirect_uriに転送される。 ※step3→step4は同じスクリプト内などでシームレスにやる必要があるようだ。たとえばいったん認証コードを保存し、手作業でstep4を実行するとエラーとなる。制限時間がある?よく分からない。 ※step1とstep4のredirect_uriは同じじゃないとエラーが出る。 ※Facebook graph APIはhttpsでアクセスしないとダメ、Crypt::SSLeayがインストールされてなくてLWPでhttpsアクセス出来ない糞レンタルサーバーじゃダメっす。 (4)実際の投稿プロセス いったんaccess_tokenが取得出来れば <form action="https://graph.facebook.com/me/feed" method="post">でOK <input type="hidden" name="access_token" value=" 取得したaccess_token"> <input type="hidden" name="picture" value=" 投稿した画像のURL(無くてもOK)"> <input type="text" name="message" value=" メッセージ"> <input type=submit name="submit" value="submit"> </form> 的な内容をPOSTすれば投稿し放題。画像をURLで渡せるのは便利だね。直接データとして渡せる方法があるかどうかは不明。 ご参考。 さぁ、何作ろうかな♪ 参考にしたページ 2011/05/29 ■Windowsパソコン+タスクマネージャーでPerlスクリプトを繰り返し実行する時の管理方法 個人的メモも兼ねて。 (1)
(2)
(1)(2)を組み合わせて以前のプロセスが残っている場合に実行を中止したり、一定期間経過しても終了しないプロセスを終了したり出来る。 2011/02/05 ■PerlでWindowsのプロセス一覧を取得し、特定のプロセスを終了させる方法 取得(ライブラリーはActivePerl 5.10には入っていなかったので自分でインストール) use Win32::Process::List; my $P=Win32::Process::List->new(); my %list =$P->GetProcesses(); while (($key,$value)=each(%list)){ print $value.' '.$key."\n"; } 終了(ライブラリーはActivePerl 5.10に最初から入っていた) use Win32::Process; Win32::Process::KillProcess(1536,$dammy); ※$dammyは何かよく分からない。適当な変数を書いておけばOK 2010/10/10 ■PerlでWebアクセスし、ヘッダー情報やリダイレクト先を知る方法メモ 1: use LWP::UserAgent; 2: my $ua=LWP::UserAgent->new; 3: my $req=HTTP::Request->new("GET",'http://yahoo.co.jp/'); 4: my $res=$ua->request($req); 5: my $html=$res->content; でWebサイトのHTMLデータを取得出来ることはどこにでも書いてある。以下メモ ★(3)の前に$ua->proxy(['http','ftp'] => 'http://xxxx.xxx:8080/');などとproxy刺せる ★(4)の前に$req->proxy_authorization_basic("userid","password");で認証が必要なproxyも使える ★(4)の後 my @headers=$res->header_field_names; foreach my $Line (@headers){ print $Line.':'.$res->header($Line)."\n"; } とかでheader情報が取れる。TwitterのRSSにアクセスした時はここに残りアクセス可能回数とかも書いてある ★gzipで圧縮されているサイトは(5)の代わりに $res->decoded_content; でHTMLを取得出来る、圧縮されていないサイトも同じコードでOK ★ちまたにあふれている短縮アドレスや、転送サイトなどは上記でアクセスするといきなり転送先の情報が表示される。(4)の代わりに my $res=$ua->simple_request($req); とすれば、転送される前の情報が出てきて、headerに転送先URL書いてある。 2010/04/17 ■Perl 5は生き返った! 新たな前進を再開したPerl 4月13日にPerl5.12.0が公開されているようです。 2010/03/28 ■Javascriptでshiftjisやeuc-jpエンコードなども可能なescape、unescape関数ライブラリ「ecl.js」 使い方。 掲示板の名前欄に2バイト文字を使った時の文字化けが直った(よね?)。5年以上放置していたごめんなさい。 decodeURI()がshiftjis文字列を復元出来ないとか、どんな嫌がらせだよ。うちのページはshiftjisなんだよー。 2009/11/09 ■SQLiteとPerlで学ぶデータベースの基礎 個人的メモ。 最近はPerlのインストールパッケージにSQLiteが付いているらしい。実は恥ずかしながらSQL使ったこと無いです。このサイトなど5年ぐらい前に自分で作ったデータベースライブラリですべてやっている。特に困ってないけどそろそろSQLを勉強したい。 2009/11/03 ■PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法2 前回書いた内容が間違っているわけじゃないですが、Oauth認証という概念について大きな勘違いをしていたのでメモ。
■PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法
GPSMANはPerlのNet::Twitterというモジュールでつぶやきに位置情報を載せてTwitterに投稿しますが、そのままでは「from Net::TWitter」と表示されてしまいました。 最初は投稿時にクライアント名を指示してやれば良いかと思っていたら、そんな簡単にはいかなくてTwitterサーバー側のリストに登録されないといけないと知りました。方法はここを見ると、「開発者にメールしてお願いする」とか書いてあり、なんてローテクな!と思いつつも Subject: Please list up my Twitter client Dear Mr. Akex Payne Thank you for developing interesting and enjoyful tool,Twitter. Please adding my Twitter client to your client source list. My client is source='GPSMAN' client's URL='http://gpstown.net' I'm sorry that above client is for Japanese user and URL is written in Japanese. The main feature of my client is updating our situation with place name using geo-information function of cellular phone. I heard Twitter is getting ready to adding geo-information function. I'm looking forward to Twitter world with geo-information. Thank you. とか英語力微妙なくせにイランことまで書いたところで、Twitterの公式APIを見て登録の方式が変わったことに気が付く。何でもOAuthとか言う俺みたいなヘタレプログラマには理解しがたい仕組みで認証させないといけないらしい。でもどうにか後述する参考ページを真似して解決出来たので実際に使用したプログラムを公開。要は秘密コードを元に取得した秘密コードでアクセス?ん〜なんでそんな面倒な事をする必要があるのか有用性がよく分からないけど。 ★STEP1:開発者としてアプリをTwitterに登録してcunsumer codeを取得 ここにアクセスして作ったアプリ情報を登録、CONSUMER CODEを得る。 ★STEP2:ACCESS TOKEN CODEを得る。 ------------------------------------- #!/usr/bin/perl #Twitter のaccess tokenを取得 use Net::Twitter; my $twit = Net::Twitter->new(traits=>['API::REST','OAuth'],consumer_key=>'取得したコード',consumer_secret=>'取得したコード'); print 'access this url:'.$twit->get_authorization_url."\n"; print 'input verifier PIN : '; my $verifier = chomp $verifier; my $token = $twit->request_token; my $token_secret = $twit->request_token_secret; $twit->request_token($token); $twit->request_token_secret($token_secret); my($at, $ats) = $twit->request_access_token(verifier => $verifier); print "Access token : ".$at."\n"; print "Access token secret : ".$ats."\n"; exit; ---------------------------------------- で取得したconsumer codeを使って、認証URLにアクセスし、アクセス許可ボタンを押して表示させたPINコードを入力してACCESS TOKEN CODEを得る。これは最初に1回でいいらしい。 ★STEP3:得たコードを使って「つぶやき」を投稿 ----------------------------------- #!/usr/bin/perl #twitterに書き込み use Net::Twitter; use Encode; my $twit = Net::Twitter->new(traits=>['API::REST','OAuth'],username=>'書き込むtwitterID', password=>'書き込むIDのpassword',consumer_key=>'取得したconsumer code',consumer_secret=>'取得したconsumer code'); $twit->access_token('取得したaccess token code'); $twit->access_token_secret('取得したaccess token secret code'); my $text = 'てすと'; $text = decode( 'shiftjis', $text); my $result = $twit->update($text); exit; --------------------------------------- 参考ページ:
■Perlでよく使用する関数・標準モジュール(サンプル付き) 個人的メモ 2005/06/04 ■リナザウにApacheとPerlをインストールした すごいよリナザウ このへんのページ見て、Apacheとperlインストールしたら普通に動くし(^^; ハマりまくりです。ただいま午前4時w 中身は普通にLinuxだね。素晴らしすぎ!!!! さて、午前中に京ポンと接続するケーブルが届くはずなので早く寝なければ〜 以下、個人的メモ perlのパスはhome/QtPalmtop/bin/perl rootパスはシークレットパスと一緒になっている localhost/がhome/www/htdocs/
ターミナルで入って ・suでrootログイン(パスワードは本体のシークレット機能で入力したものと同じ) ・chmodでhome/QtPalmtop/とhome/QtPalmtop/binの2つのディレクトリの属性を755へ ・cgiスクリプトファイルのperlプログラムは/usr/local/bin/perlではダメで、/home/QtPalmtop/bin/perl
■Perl for Windows Mobileに関する情報
■Perl で匿名クラスをつくる 役に立つ日は来なさそうな気がするけど個人的メモ Javaとか、ちょっとオブジェクト未定義だとヌルポヌルポとうるさいねw。 俺には厳しいっす、Perlのぐだぐだが好きw 2008/09/01 ■Perl FAQ in JPAN 個人的メモ、あまりレベル高く無さそうですが・・・・ Perlと言えばActivePerl 5.10がいつの間にか出ていますね。ずいぶん前に出ていたのかもしれませんが気がつきませんでした。なんと、あんなにインストールに苦労したGDが標準ライブラリとして入っていますよ。またImageMagickも現在、掲載されているWindows用実行バイナリは5.10専用のようです。ActivePerl 5.8ではインストールに失敗します。あとjcodeが動かなくなった?追記:ここに情報あり 2008/09/04 ■Perlの悩み 誰か、偉い人がアドバイスしてくれたらいいな&誰かの参考になればいいなと願ってメモを記します。 最近、サイト運営や本業などにおける様々な画像処理をActivePerl 5.8 + GD 2.35で行っているのですが色調の補正などGDには出来ない事も多くてImageMagickの使用を考えました。しかしImageMagickのサイトに行ってみるとWindows用のコンパイル不要バイナリはActivePerl 5.10用しか無くて(ActivePerl 5.8でインストールしても使えなかった)、そこでActivePerl 5.8をアンインストールしてActivePerl 5.10をインストールしました。その結果、ImageMagickは使えるようになりました。 それは良かったのですが、ActivePerl 5.8→ActivePerl 5.10の変更に伴ってGDモジュールが動かなくなってしまいました。原因はActivePerl 5.10にはGD 2.39が標準付属しているため、GDモジュールが二つインストールされているためだったのでGD 2.35をアンインストールしたところGDのほとんどの機能は使えるようになったのですが、唯一画像に文字を書くstringFTコマンドが動きません。なぜだかさっぱり分からん。あと、ActivePerl 5.8ではWindows自体の環境変数にproxyサーバー設定を書くことでppmをproxyごしに使用出来ていたのですがなぜかActivePerl 5.10に移行してからはppmがproxy経由で外部ネットにアクセスしてくれなくなりました。なんでだろー。 色々やったけど解決出来ないので腹を決めて、現在かたっぱしからGDを使用しているプログラムをImageMagickを使ったコードに変更しているのですが、複雑なプログラムを動かして分かったことに、ImageMagickが凄まじく重い。どの動作が重たいのか分かりませんが全体として10倍ぐらい時間がかかっています。確かに文字の出力とか綺麗にアンチエイリアスがかかってメリットもあるのですが重すぎっす。困った困った。 追記:2008/09/12 GDをver.2.41に上げたらstringFTが使えるようになりました! ここに書いてある
■Perl 5.10で使えるUnicode 規格で定義されている文字種の名前 例: 平仮名に一致する正規表現 $str =~ m/(\p{Hiragana}+)/; 片仮名に一致する正規表現 $str =~ m/(\p{Katakana}+)/; 句読点に一致する正規表現 $str =~ m/(\p{Punctuation}+)/; 漢字に一致する正規表現 $str =~ m/(\p{Han}+)/; ここにあるワードが使えるらしい。 ほかに
■形態素解析 個人的メモ、ここにPerlからの利用例が 単語感情極性対応表とか使えそう。絵日記に組み込んだら感じ悪いだろうなw 情報元:Twitter上の発言からユーザの躁鬱状態を推定する 2009/08/03 ■ActivePerlのPPMを認証付きproxyの内側で動かす 以前のPPM3では 「マイコンピューターのプロパティ」→「詳細設定」→「環境変数」 でHTTP_proxy、HTTP_proxy_user、HTTP_proxy_passを設定すれば良かったですが 現在のActivePerl 5.10付属のPPM4では HTTP_proxyに「http://UserID:UserPass@ProxyURL:Port」と設定する方式になったようです。 個人的メモ。(情報元)
■ActivePerl付属のGDが相変わらず2バイトコード対応でコンパイルされていない 検索で引っかかって誰かの役に立つことを願ってメモ 2009/7/25現在のWindows用ActivePerlはファイル名で言うと ActivePerl-5.10.0.1005-MSWin32-x86-290470.msi これに付属のGD(ver 2.41)は2バイトコード対応でコンパイルされていないのでstringFTで2バイトフォント指定して表示出来ない。 レポジトリに http://cpan.uwinnipeg.ca/PPMPackages/10xx/ を追加して出てくるGD2.43をインストールすると2バイト文字が表示出来る。 Perl 5.8の途中からずっとです。困ったもんだ。
|
トップ(ログ)
全カテゴリーリスト 遙か昔のログ置き場(2004年以前) ■キーワード(キーワード一覧) 【Perl(9)】 【リナザウ(11)】 【Linux(22)】
このカテゴリーの最近のコメント |
fetuin-news4.01(120114)