個人で出来るWebサービスの作り方(YAPC::ASIA 2013) @koba04

以前から「誰か書いてくれませんかね」とか言っていた「本当の基礎からのWebアプリケーション入門――Webサーバを作ってみよう」ですが、誰も書いてくれないので自分で書きました。 本当の基礎からのWebアプリケーション入門――Webサーバを作ってみよう http://kmaebashi.com/programmer/webserver/index.html 現状、合計で140行くらいのJavaプログラムで、普通に画像やCSSを含むWebページが表示できています。こちらのページの下のほうにも画像を貼っていますが、こんな感じで、ローカルのファイルシステムに置いてある私のWebサイトのトップページが表示できていますし、もちろんリンクをクリックして遷移することもできます。 「えっ? Webサーバってこんなに簡単に書けるの?」と思う人も多いのではないでしょうか。 もちろんこんなのは「わかっている人」から
「%Y%m%d」をstrptimeで処理すると曖昧になることを今更ながらに知りました。 社内で「201312」を渡すとキモいという話が出て、 Pythonでdatetime.datetime.strptime('201312', '%Y%m%d')がエラーにならず1月2日として成立するの具合悪いと思うの — nekoya (@nekoya) June 7, 2013 ってPostしたら@hirataraさんが「2013129と2013130もキモいぞ」と教えてくれました。 普段は%Y-%-%dを使うんだけど、URLに日付を埋め込む場合はデリミタ無しの方が自然だなーと思ったらご覧の有様だよ。 Python2.7.1 >> datetime.strptime('201312', '%Y%m%d') datetime.datetime(2013, 1, 2, 0, 0) >> datetime.
ムフフなビデオも網羅的に扱うDVDや動画の提供サービス「DMM」のWeb APIがいつの間にか公開していたらしく、なにぶんノーマークだったもので昨日の夜知ってビックリした。というかDMMは一生API出さないだろうなんて決め込んでいたのが良くなかったですね。 ってことでとあるAV女優の商品一覧を出力するようなスクリプトを書いてみました。API固有の「癖」でいくつか実装する際の注意すべきポイントがあるのでそれをまず紹介します。Perlコードですが参考になるかもです。 リクエストパラメータにはタイムスタンプがいる リクエストのパラメータにはタイムスタンプが必須です。形式は 2013-05-14 08:03:16 というもの。僕はDateTime派なので、以下のコードで現在のタイムスタンプの文字列をつくっています(*ある方から指摘を受けてコードを修正させていただきました!)。 use DateTi
できるだけ正確な記述を目指していますが、誤りがありましたら、お知らせ願います。 (最終更新: 2013/3/29 11:22) 正規表現の種類 まず、PHP には以下の 3種類の正規表現があります。 Perl 互換の正規表現 (pcre) mbstring の正規表現 (mbregex) POSIX 拡張正規表現 (regex) このうち、regex は バイナリセーフでない 日本語は扱えない PHP 5.3 で非推奨 なので使わない方がいいでしょう。見つけたら、随時 pcre か mbregex で書き直しましょう。 Perl 互換の正規表現 (pcre) 正規表現エンジンは Perl の「PCRE」 日本語は UTF-8 のみ扱える UTF-8 を使う場合は、パターン修飾子に u を指定する 文字クラスはロケールの影響を受ける PHP: 文字クラス - Manual 処理の制限値 (p
var runtil = /Until$/, rparentsprev = /^(?:parents|prev(?:Until|All))/, isSimple = /^.[^:#\[\.,]*$/, POS = jQuery.expr.match.globalPOS, // methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.fn.extend({ find: function( selector ) { var i, l, length, n, r, ret, self = this; if ( typeof selec
こんにちは、おひさしぶりです。突然ですがゆーすけべーさんのブログにある「いかにして効率よく大量のおっぱい画像をダウンロードするか〜2012」をご存知でしょうか。これは題名の如くいかにして数多くのおっぱい画像を楽してダウンロードするかのスクリプトを紹介しています。僕もこのスクリプトを使ってウフフな生活を夢みたわけですが、ひとつ問題がありました。 それはこのスクリプトが・・・Perlで書かれていたのです! ご存知の通りperlは$,#,%,@こんな記号をたくさん使う言語(はじめはこのくらいの知識しかなかった)です。日本にも有名なperler達がたくさんいます。しかしながら、僕はいままでそのperl闇の集団を怖がるあまりperlを避けてきました。 ところが、僕の前に突如現れた素敵なスクリプトを前にもう我慢ができなくなりました。というわけで、Perlをはじめることを決意したわけです。ここでは僕同様
Smashing Magazine Blog Archive Cheat Sheet Round-Up: Ajax, CSS, LaTeX, Ruby… Ajax,Apache,CSS,CVS,HTML,JS,Perl,PHP等のチートシートまとめが紹介されてます。 チートシートって印刷して貼っておくとほんとに便利でお世話になってます。 Ajax関連 What’s Ajax? Cheat Sheet - PDF Prototype Dissected - Cheat Sheet PNG scriptaculous Combination Effects - Cheat Sheet - PDF Apache関連 Apache Cheat Sheet Apache 1.3 Quick Reference Card - free quick reference cards - PDF htacc
「Test::More - LazyLoadLife」について、角谷さんに「詳しく」と希望されたのだがうまく書けない。ので、まずいまま書く。ここらへんを突き詰め体系化すれば、プログラミングスタイルに小さい変革を起こすことができると思うのだが、私には荷が重い。まぁ、交響チラシの裏に書いておけばミームはいつか誰かが咲かせてくれるだろう。 Perl のテスティング・フレームワーク Test::More の機能・特に SKIP, TODO ブロックが、TDD(BDD) や 過去はまつもとさん、昨日は西本さんが漏らしていた「TDD でアイデアが失われていく」というハッカーの悩みの一助になるのではないか? と考えたのだ。 まずは、Test::More の リファレンスの SKIP, TODO の項を読んで欲しい。……読んだ? この機能が揮発性のアイデアを書き留めておくのに丁度良いのでは? ということだ
ソースコード検索の ack がよさげな件 #catalyst でちょっと話題になっていた ack をいれてみた。CPAN シェルから install App::Ack とするだけ。 基本的には grep -r | grep -v .svn | grep -v \~ に飽きてしまった人むけのソースコード検索ツールです。gonzui などとは違いインデックスはつくらないでそのままディレクトリをトラバースして検索するので、あまり大規模だと時間がかかるかもしれませんが、中規模なプロジェクトなら問題なくいけるのでは。 デフォルトで CVS, RCS, .svn, blib といったバージョン管理ディレクトリを無視、-i, -v といった grep 由来のコマンドラインや、 --perl で perl ソースコードだけ検索、となかなか気が利いています。デフォルトのカラーリングもイケテル。 grep -
アクセサ(2) AUTOLOAD でアクセサ - ぱるも日記 アクセサの作成方法はいろいろあるけど自作するならAUTOLOADとか使わずに、 package Hoge::Class; use strict; for my $method (qw/age name tel hoge/) { my $code = sub { my $self = shift; $self->{$method} = shift if @_; return $self->{$method}; }; no strict 'refs'; *{$method} = $code; } って感じでクロージャと型グロブで定義すればいいかと。 AUTOLOAD使うなら使うで、初回呼び出し時にメソッド定義してしまうのがセオリーなんで、 二度目以降はAUTOLOADが呼び出されなくなるから遅いという問題は解決するかと。 sub A
先日書いた記事新人教育 - Unknown::Programmingのトラバやはてブとか読んでてあーやっぱりオールドファッションなPerlも未だに廃れてはいないんだなぁと実感させられました。 あの一覧全てを仕事で使うか?と問われると、ま確かに頻繁には使わないけどいやでも場合によっては結構使うよと。 なのでPerlで仕事するなら必須項目であると言えますね。 知らないとまずCPANモジュールのソースが読めないし。 問題にブチ当たった時に困ったりする。 どこバグってんのかとかわかんないってことになるわけです。 COREパッケージ知らないと組み込み関数と同じメソッド定義した時にうがーってなるし、 UNIVERSALパッケージ知らないとisaとかcanメソッドがどっからやってきたのかわかんないし、 AUTOLOADメソッド知らないと謎のメソッドに悩まされるし、 tie変数知らないともの凄い不思議なハ
2006年04月11日01:26 カテゴリYAPC::AsiaArt ソース読みのソース知らず これ、Perlにも言えてるな(苦笑) The C Programmming Lanugage K&R 革命の日々!-誰も読まないOSのソース・コード 結局いいたかったのは Linuxはそんなにバグバグじゃないよ。コードの質たかいよ でもuglyな仕様は、すごいたくさんあるよ。そこはuglyさ加減を楽しもうよ C言語できなくても気にすることないよ。カーネル読んでいけばそのうち覚わるから 赤松ナントカはシッタカ・うそつき というより、ある程度以上の規模と歴史を持つソフトウェアなら、ほとんどこれが成立すると思う。 もう昨今のLinux KernelとかPerl5とかといったものは、もう原作者だって全貌を知らない。いや、そのモジュールの一つに過ぎないEncodeだってメンテナー全部知らない(爆笑)。だっ
本話で、昨日飲み中にも出たのだけど、nijimuさんからこんなご意見が。 本を買ったらその本のデータも付けて欲しいよな。 本で読みたくはあるのだけれど、いかんせん本は検索性がひどく悪い。 あの言葉、どこで出てきたっけ?というのをデータで検索してページ数を特定させたい、という欲求に駆られたことのある人は沢山いると思うんだけど。 貸し本業はありえるか? - Mint Julep(2006-01-31) それに関しては前々から思っていて、以前にRFID話とからめて「my Web本棚を始めよう。」という話を書いたことがある。この話の要点は、 出版社にデジタルデータの提供をして欲しい。 そのためには出版社がデジタル・データを渡してしまうことのリスクを下げる必要がありそう。 例えば、購入者が購入者証明をできる必要があるだろう。 ...ということ。もちろん、購入者証明ができれば、RFIDじゃなくても良い
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く