サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
perltips.twinkle.cc
Perl で、Google の PageRank を表示するには以下のモジュールを使う。 ここではクライアント/サーバ間の通信、画面表示に AJAX を使っている。 ブラウザに URL を入力し、「チェック」ボタンを押す。 ブラウザからサーバに URL が送られる。 サーバ側で PageRank を計算し、ブラウザに XML として返す ブラウザで XML を受け取り、表示 ここで、ブラウザ側 (JavaScript) で XML を受け取るには、以下の部分が重要である。 var xml = xmlHttp.responseXML; var pagerank = xml.documentElement .getElementsByTagName('PageRank')[0] .childNodes[0] .nodeValue; 以下はサーバ側コード、XML のフォーマット、クライアント側
Amazon EC2 を使うには、ツールが使えるように環境変数を設定したり、鍵や証明書を作成したりと、なかなか面倒な手続きがいるのでまとめてみた。 SSH クライアントを用意 Amazon Web Services (AWS) のアカウントを取得 JRE (Java Runtime Environment) – JAVA_HOME 環境変数を設定 S3 にサインアップ (EC2 では、ディスクイメージの保管に S3 を使うため) AWS にログイン後、AWS Access Identifiers (Your Web Services Account )から X.509 証明書ファイルと秘密鍵のペアを作成 X.509 証明書 例: cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem 秘密鍵 例: pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55
もしあなたの会社がウィンドウズベース、すなわち Active Directory ベースのユーザー管理をしているなら、Drupal の LDAP Integration というモジュールに含まれる ldapauth モジュールを使うことによって、 認証、グループ、ユーザーの属性情報 と連携することができる。このモジュールは地味な機能を提供するが、実際に使用してみるとものすごい効果であった。グループの追加、ユーザーの属性情報などはすべて自動で Active Directory から情報を引っ張って Drupal で扱えるため、既存のユーザー管理はそのままにイントラネットを Drupal に置き換える場合などは、非常に強力な機能だと思う。 以下にその設定のポイントを挙げておこう。 Active Directory を使っている場合は、LDAP オプションを有効にする。 もしあなたの Activ
Drupal とは何だろう? Drupal のコミュニティでコンセンサスが得られているものとしては、 コンテンツ管理システム(CMS) ウェブアプリケーションフレームワーク コミュニティ である。 最初の CMS については、疑いない。Drupal の入り口としては、私も Movable Type の再構築に辟易し、ブログの置き換えを狙っていた。要は簡単にサイトが作れるというものである。 ところが、私自身も最近まで気づいていなかったのだが、Drupal は CMS というよりも2番目のウェブアプリケーションフレームワークと考えた方がよいと思うになった。上に挙げたリストのうち、最初の CMS とは、2番目のウェブアプリケーションフレームワークを使って作られたものに過ぎないのだ。私はDrupal のモジュールを初めて作ってみたのがちょうど1年前であるが、そのときすら Drupal の強力なフレ
以下のサンプルファイルを image.cgi と名前を付けて保存、アクセス権を chmod +x image.cgi とかして ブラウザから https://yourname.com/image.cgi とかにアクセスすればよい。 注意点としては、このスクリプトは画像しか表示できないことである。これと一緒に HTML ファイルを表示しようと思っても、 HTTP プロトコルの仕様上不可能 である。なぜかというと HTTP プロトコルを通して画像を表示する場合は、すでにこのスクリプトが HTTP ヘッダとして Content-type: image/jpeg を最初に出力してブラウザが受け取っているからで、このスクリプトの中で同時に(画像を表示した後に) HTML 文書を表示させようとて Content-type: text/html を出力(print "Content-type: text
オープンソースのプロキシーサーバとしては Squid が有名だろう。Ubuntu で動かすには、まずはパッケージ squid を入れた後、設定ファイル /etc/squid/squid.conf で設定する。システム管理→ サービスの管理 で プロキシ・キャッシュ・サービス にチェックが入っていても確かに動作はしているのだが、 Squid のデフォルトの設定ではどのマシンからのアクセスも受け付けないようになっている ため、設定ファイルの編集は必須である。必要最低限の設定は以下の項目をコメント(# で始まる行)をはずしたりして追加・修正すればよいだろう。 http_port 8080 Proxy 用のポートして 8080 を使う。 cache_dir /usr/local/squid/cache 100 16 255 squid のキャッシュエリアの場所とその最大サイズを定義。数字は、左から
PHP の場合は、fopen 関数の引数に URL を指定すればその URL にある HTML をオープンすることができる。後は while でファイルポインタの最後 (EOF: End of File) まで読み出してあげればよい。 <?php // アクセスする URL を指定 $URL = 'https://perltips.twinkle.cc/'; // URL をオープン $fp = fopen($URL, 'r'); // HTML を読み出す while (! feof($fp)) { print fread($fp, 1024) or die("READ"); } // HTML のクローズ fclose($fp) or die("CLOSE"); ?>
RSS 1.0 (index.rdf など) の場合は、以下の行を RSS のテンプレートに追加すればよい。 <image:favicon rdf:about="Favicon までのパス/favicon.ico" image:size="small"> <dc:title>HP のタイトル</dc:title> </image:favicon> または、Movable Type 3.2 以上であれば、Atom (atom.xml) や RSS 2.0 (index.xml) のテンプレートの最初の方に、 <link rel="icon" href="<$MTBlogHost$><$MTBlogRelativeURL$>favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="<$MTBlogHost$><$MT
Perl で、new しようとするクラスがなんでも OK の Factory クラスを考える。new しようとするクラスはパラメータ(なんと 文字列 )で与えられるという、かなり何でもアリの Factory クラスである。 まず、 Factory クラス を作ってみる。パッケージ名を Twinkle として、この Factory クラスを Twinkle::PluginFactory としよう。名前は任意なので、Plugin という言葉が嫌ならば AddonFactory でも ModuleFactory でも ExtensionFactory でもいい。意味はすべて同じ。 モジュール名を Twinkle::PluginFacotry としたから、Perl の仕様によってこのコードのファイル名とディレクトリパスも決まる。Twinkle というディレクトリを新たに作って PluginFact
みなさんは、日ごろプログラミングにおいてデバッグはどのようにされているだろうか。Eclipse などの開発環境を使っている場合は、それを利用すればいいと思う。 しかし、私の長年の公私におけるプログラミングの経験では、開発環境はやはり栄枯盛衰がある。これまでで最も一貫性のある開発環境といえばマイクロソフトの Visual Studio となるだろう。また、Eclipse もこれから先の長いサポートが期待できそうであるが、プロたるもの、道具(Eclipse)は選ばないで仕事ができるようにしておくと何かと都合がよい。 それでは、最も基本的なデバッグ方法とは?かつ地味なデバッグ方法はプログラム中に print 文をはさんで変数の中身を出力していくこと だ。 ここで、それぞれの print 文を デバッグコード と呼ぶことにするが、それぞれのデバックコードは インデントしないで常に行頭から書き始める
Procmail を利用すればサーバに送られてきたメールが標準入力から Perl スクリプトに渡すことができる。ここでは Procmail の詳細は割愛するが、以下は標準入力に入っているメールを処理する関数。 使用するクラス use MIME::Parser; use MIME::Base64; use Mail::Address; use MIME::Parser; use MIME::Base64; use Mail::Address; use Unicode::Japanese; my ($mail) = &parse; print "From: " . $mail->{sender} . "\n"; print "To: " . $mail->{recipient} . "\n"; print "Subject: " . $mail->{subject} . "\n"; sub p
シリコンバレー在住エンジニアの、Perl、PHP、AJAX、Drupal、Java の小枝集です。( 7,830,462 since 2005.02.20 ) user warning: Table 'twinkle_perltips.perltips_cache' doesn't exist query: DELETE FROM perltips_cache WHERE cid = 'variables' in /var/www/drupal-5.23/includes/database.mysql.inc on line 174. user warning: Table 'twinkle_perltips.perltips_cache' doesn't exist query: DELETE FROM perltips_cache WHERE cid = 'variables' in
PHP で、yyyy/mm/dd hh:nn 形式の日付から UNIX タイムを調べたり、逆に UNIX タイムから yyyy/mm/dd hh:nn の日付を調べる簡単なスクリプトを作ったので、参考にしてみて欲しい。以下のスクリプトを date.php とかのファイル名で保存して、https://yourdomain.com/date.php にアクセスする。 基本は、 UNIX タイムスタンプから日時を得る→ date('Y/m/d H:i', $unix_timestamp); 日時から UNIX タイムスタンプを得る→ mktime($hour, $min, $sec, $month, $day, $year); <html> <p> <?php if($_POST['timestamp']) { print date('Y/m/d H:i', $_POST['timestamp'
バックアップのためにリモートのサーバにファイルをコピー(アップロード)したい。 そんな欲求が私の中に生まれた。Linux ではファイルを ssh でコピーするのに scp というコマンドがあるので、早速試してみたのは Net::SCP という Perl のモジュールなのだが、なぜかこのモジュールのメソッドにはパスワードを指定するものがない。ホスト名とユーザー名しか指定しないのだ。ではパスワードはどこにいった? Net::SCP に書いてあるように、どうやら ssh の手動コマンドのようにユーザー名とパスワードを指定するのではなく、パスワードは ssh-keygen -t rsa または dsa として、 できた公開鍵をリモートサーバの ~/.ssh/authorized_key というところに置く ことによって、セキュリティを高めるとともにパスワードが要らない、ということらしいのだ。うーん
最近の Ubuntu がなかなか良くできてきている。昨年(2006年)はこのブログでも Knoppix を紹介したが、これからは Ubuntu だと確信する。2007年4月バージョン(Ubuntu のバージョン命名規則では 07.04)の Ubuntu は、USB メモリにインストールすると設定が保存されないという致命的なバグがあった。しかし 2007年10月バージョン(07.10)では、この不具合は改善されている。きちんとデスクトップその他設定は保存される(ただしまだ完璧ではないが)。Google OS なるものがリリースされるとしたら間違いなく Ubuntu ベースであり、Ubuntu = Google OS 入りのUSB メモリが店頭に並ぶ日も近いかも知れない。 さて、必要なものとしては以下の通り。 Ubuntu を焼いた CD-R(このエントリー執筆段階ではバージョン 7.10)
Python で、例えば settings.ini などの設定ファイルからパラメータを読み込んで処理したいときには、ConfigParser というクラスを使う。その settings.ini の内容は以下のようになる。ご覧の通り、[credential]や [options] など、任意のセクションが必要になる(セクション名は自身で勝手に名づけてよい)。 [credential] username=admin password=password [options] port=9999 interval=10 ここでは settings.ini に username、password、port、interval と、4つのパラメータを用意している。このように settings.ini を用意しておき、これを Python スクリプト中から読み込むには以下のようにする。 import Con
以下のコマンドを実行。 perl -MCPAN -e "CPAN::Shell->install(CPAN::Shell->r)"
オープンソースで迷惑メールの処理するソフトといえば SpamAssassin (直訳すると スパム暗殺者 )が有名だ。何しろ spamassassin.apache.org というサイト名からも分かるとおり、Apache Foundation 謹製なのだ。 その SpamAssassin、Perl で書かれている。なので当然 Perl のライブラリが用意されており、Perl 使いの人は簡単に自身のプログラム中から呼び出すことができる。SpamAssassin 自体はメールサーバのフロントエンドで、Procmail なんかと一緒に使うことが多いだろうから、あまり自身のプログラム中から呼び出すようなことはないとは思うのだが、何かのときに役に立つかもしれないから、とりあえず以下にサンプルを載せておこう(というかこのサイトのすべての内容自体、自分のためのメモなのでご了承を)。 #!/usr/bin
いわゆるログイン処理において、ユーザーがウェブページのフォームから入力してきたユーザー名とパスワードをデータベースに保存されているものと照合し、認証するという仕組みはメンバー制サイトにはもはや欠かせないものとなっている。ここで、ユーザー名とパスワードは SSL で暗号化された通信路(チャネル)を通じてサーバに送るのは当然として、データベースにユーザー名とパスワードを生のまま入れていた場合は、もしデータベースが何者かにハッキングされたらパスワードがそのまま漏洩してしまうことになる。パスワードというものはある個人であればどのサイトでも共通にしていることも多いのではないだろうか? あなたはまさにこのエントリを読んでいるくらいなのだからそんなことはないかも知れないが、一般ユーザーのセキュリティに対するリテラシーはどうだろう?そのようなことを前提にすると、仮に(あってはならないことだが)自サイトから
このサイトで実際に Google AdSense を試してきて、 AdSense が稼げることは間違いない ことがわかってきた。 ここにそのノウハウを一挙公開してしまおう。 まず最初に、最も参考になったのは Google AdSense: Facts, FAQs and Tools で、以下にポイントを訳してみた。 クリック率 (CTR) が最も高い広告ユニットをHTMLソースの中の先頭に置く。この際、レイアウトは CSS で。 広告をコンテンツの上に置いたときにクリック率 (CTR)が最も高くなる。コンテンツの真ん中のどこかに広告を置けばクリック率 (CTR)は改善する。 広告はコンテンツの近くかメニューなどのナビゲーションの近くに置く。当然のことながら、ユーザーはそこに目が行くから。(ブログなどの)文章を読み終えた後に広告があると、クリックされやすい。 最後のポストのすぐ後にビッグバナ
たとえば、あるウェブサイトのコンテンツ (ウェブページ) が変更されたかどうかをチェックする処理を考えてみる。Perl で、文字列比較を行う場合には if($a eq $b) {...} などとすればいいだろう。ただしこれは $a と $b が比較的「小さな」文字列であった場合である。それでは HTML などのデータで、以前アクセスしたときと今回アクセスしたときで内容が変更されているかどうかを効率的にチェックするにはどうしたらいいのだろう。1つの解法としては、ハッシュ関数を使うことが考えられる。Perl の変数で「ハッシュ」というものが出てくるが、こちらは「ハッシュ関数」である。ハッシュ関数としては、以前は MD5 というものが多く使われていたが、コンピュータの処理速度の向上によって相対的にセキュリティが低下したので、より安全な SHA1 を利用する。 使用するクラス use Digest
Outlook 2003 で、自動的に bcc を送るには、以下のコードをメニュー|ツール|マクロ|Visual Basic Editor (ALT+F11)のプロジェクトエクスプローラの中で、Project → Microsoft Office Outlook Objects → ThisOutlookSession のウィンドウに貼り付ける。 青字 の部分は、bcc に送るメールアドレスを記入する。Outlook の マクロ実行のセキュリティは、ツール→マクロ→セキュリティのところを、「中」にしておかけねばならない 。こうすると Outlook を起動するごとにマクロを有効にするかどうかのダイアログボックスが出るが、仕方がない。 以下のコードは、「 in Microsoft Outlook 2000 or later versions">To automatically add an
最初のアカウントを作る。たとえば admin という名前で UNIX でいうところの root 権限を持つユーザーを作る。 左サイドバーのメニューから Administer をクリック、以降、システムの管理メニューから設定を行う。 作業をしやすくするためにブロックでナビゲーションブロックを右サイドバーへ。 クリーンURLを有効にする モジュール Locale、Path、Profile、Statistics を有効にする ロールに administrators を追加 アクセスコントロールを設定。特に、administrators ロールに権限をすべて与える。 設定作業をしやすくするため、メニューの管理セクション、コンテンツの管理、サイトの構築、サイトの環境設定、ユーザーの管理、ログで、展開にチェックをいれて有効にする。 日本語翻訳ファイルを設定 サイト情報を設定 日付と時刻でタイムゾーンと
Drupal モジュールリスト には Leech という、超強力なモジュールがアップされているのをご存知だろうか? Leech の説明に入る前に辞書で Leech の意味を調べてみよう。 英辞郎 あたりには技術者でもわかる訳がちゃんと載っている。 このモジュールでは RSS フィードの URL をコンテンツとして登録すると、cron のタイミングにあわせて RSS フィード先のコンテンツを取得する。それでは単なる RSS リーダーだ。Drupal ではすでにアグリゲータというオンライン RSS リーダーがコアシステムの中にデフォルトで入っている。しかし単なる RSS リーダーと違うのは、このモジュールで 取得した RSS フィード先のコンテンツを、自身のコンテンツとして Drupal のノードに蓄えてしまう ところにある。これが何を意味するかおわかりだろうか? 単なる RSS リーダーだと
私は、優秀な技術者たるもの、ウェブ 2.0 のパラダイムの流れの中で、技術の追究だけではなくてウェブ 2.0 流の SEO やマーケティングも知識として知っていなければならないと思うのだ。その急先鋒の1つが AdSense であり、これとどう付き合っていくかも技術者の課題だと思う(たとえば、自分の担当業務に関係なくても、お客様と話しているときに何か提案できることもあるかもしれない)。そしてその AdSense を自身のサイトのデザインの中にどう組み込むかが課題となるが、そのことについてはズバリ、Google の AdSense ヘルプ センター「 Google 広告はページのどの位置に掲載すればいいでしょうか。 」に詳しい。引用すると、 色は濃いオレンジ (高パフォーマンス部) から薄い黄色 (低パフォーマンス部) 他のすべての部分は均一 重なっている部分の上側は下側よりも高パフォーマンス
Druapl は2007年に入り 5.1 にバージョンアップし、製品も顔負けのものとなった。そしてブログ製品の雄、Movable Type は 4 でオープンソース化し、バージョンアップ(ベータテスト)中。そんな中で Drupal はもうバージョン 6 がリリース予定。このエントリーを書いている時点でコードフリーズ、2~3週間後に本リリースされるだろう。そろそろ Movable Type から Drupal の移行のタイミングじゃないだろうか、というかこのエントリーを書いている 今 が絶好の移行のタイミングだと思うのだ(Perl Tips はなぜ移行しないのかって?そのうち必ず移行します!200エントリー超えでカテゴリ再構築がもはやこのサイトのホスティング環境ではできなくなってきていることがわかった)。 さて、それにはどうしたらいいかというと、実はブラウザとマウスだけで・・・と、残念ながら
MySQL 4.0 と 4.1 では、文字コードの扱いの仕様が変わったらしい。特に 4.0 で日本語を扱っていて、4.1 にアップグレードしたいときには文字化けという非常にややこしい状況が生まれているようだ。 さて、レンタルサーバなどのホスティングプロバイダが勝手に MySQL 4.0 から 4.1 にアップグレードしたりすると、特に海外のレンタルサーバでは日本語のことなんかこれっぽっちも考えてくれてはいないため、私のケースではなぜか文字コードがすべて latin1_swedish_ci となっていた。同じ latin1 の中でも latin1_swedish_ci となるらしいのだ。 ゆえにこれを utf8 に変換したい。1レコードずつ変換するのだろうか?などと恐ろしい考えが一瞬頭をよぎったのだが、調べていくうちに以下の手順を踏めばよいことがわかった。 その答えはズバリ MySQL 4.
PHP で、HTTP クライアントを作る方法をまとめてみた。以下の2通りがある。 fopen を使う方法 PHP で、サイトにアクセスして HTML を取得する方法 CURL を使う方法 ダイジェスト認証(RFC2617)付きのサイトにアクセスする PHP では fopen でサイトにアクセスできてしまうから、前者の方法が一番シンプルだといえるだろう。ユーザー名とパスワード付きの基本認証が施してあるサイトやさらに凝ったことをしたければ、 CURL を使うのがよい。 CURL では HTTP だと、GET、POST、PUT、FTP アップロード、フォームからのアップロード、Proxy、cookie、ユーザ名とパスワードによる基本認証/ダイジェスト認証、HTTP(または HTTPS)の認証…と、フルサポートするようだ。 以下は、CURL のシンプルな例。 <?php // アクセスする URL
自サイトでもエントリー間でリンクを貼りあうことは SEO 対策として有効である。各ページが相互に関連し合ったサイトとみなされるからである。 さて、上の方針を元に自サイト内のエントリーにトラックバックを Movable Type で送り合っていると、途中で https://…/mt-tb.cgi/xxx」へのトラックバックは失敗しました: HTTP error: 403 Throttled なるエラーがログに記録されていて、トラックバックができなくなってしまうことがある。この場合は、 <MT のディレクトリ>mt-config.cgi を開いて、最後に OneHourMaxPings 50 の 1行を追加してあげればよい。 OneHourMaxPings とは、その名の通り、 1時間に受け付けるトラックバックの数 だそうで、デフォルトは 10 になっているとのこと(うーん余計なおせっかいだ・
次のページ
このページを最初にブックマークしてみませんか?
『Perl Tips | ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く