「CPAN」を含む日記 RSS

はてなキーワード: CPANとは

2017-07-10

Webアプリを作るときにどの言語/WAFで書くべきか

使ったことあるモノもないモノもごちゃまぜにして経験雰囲気で書いてる。

PHP

Laravelは結構好き。DSL過ぎず、それなりにフルスタック生産性もいい。

何よりLaravel本体ソースコードが読みやすいのがいい。

まともな日本語情報が少ないのは弱点だけど、気になったところは本体コードを読めばすぐに分かる。

最大の欠点PHPってことだ。他のLL言語に比べてPHP自体生産性は低い。セキュリティ面の不安も大きい。それに安心して後を任せられるようなPHPerは一握りしかいない。

Perl

Mojolicious結構好き。これもDSL過ぎず分かりやすい。CPAN豊富ライブラリ群もある。

Perlは可読性が悪いなんて言うけど、ちゃんとしたライブラリ普通に読みやすいよ。

最大の欠点Perlってことだ。長期的に開発者を集めることを考えたら茨の道だろ?

Python

今でこそ機械学習Pythonが人気になっているけど、Web系はまだまだマイナーだ。

Djangoプロジェクト/アプリケーションという構成単位の考え方が好きじゃない。理論的な利点は分かるけど、現実問題それが必要になるケースが浮かばん。

Django以外でフルスタックのWAFが出てくればいいんだけど。Tornadoはフルスタックじゃないのでちょっと違う。

Python3で安心して開発できるならアリだと思うけど今はどうなの?使いたいライブラリが3系に対応していないとかで躓きたくないよ。

あと単純に速度が遅いよね。いや書き方を気をつければマシにはなるんだけど、書き方を気をつけなければいけない時点でつらい。

Ruby

Railsは便利だ。周辺ライブラリの充実度もすごい。情報玉石混交だけどまともな情報もたくさんある。

ただあまりにもDSL過ぎる。Railsプログラミングではなく、一つの巨大なDSLだ。

Railsプログラマの何割が、少しでもいいかRails本体ソースコードを読んだことがあるのか。めっちゃ読みにくいんだけど。Rubyは可読性が高いなんて嘘だろう。Perlと一緒でちゃんとしたコードは読みやすいけどそれはプログラマ依存する話で、言語自体に可読性の高さはない。言語思想の通り書くのは楽しいよ。でも読むのがつらい。

Rails自体DSLみたいなもんなのに、RSpecやらRakeやら周辺ツールDSL意識高すぎる。

問題があった時にググらずにコード読んで解決できるRailsエンジニアはどれだけいるのか。情報量が多いからググれば解決すると答えるやつは、底辺PHPerと大差ないからな。

あとバージョンアップ追従するのが面倒過ぎる。でも放置したら負債になるし。意識高くRailsで開発したやつの大半はバージョンアップやらの保守に入る頃にはもうそプロジェクトはいないんだろ?だからそのつらさを知らないんだろ?

散々罵ったけど、このDSLを覚えれば生産性が高いのは事実だ。だから結局ついていく確率が高い。モテ男なんだよ結局こいつは。

Java

SIerさんに敬礼

Scala

Playが王道だけど最新バージョンになるほど情報が少ない。このあたりがRailsと違う。公式(英語)とか本体コードを読める人じゃないとつらい。

そもそもJava、というかJVM周りの知識がないと本番運用はつらいだろう。LL言語運用経験しかない人は特につらい。LL言語でいうhot deployみたいなことがしたい時のやりかた分かってる?

コンパイルの遅さに耐えて開発し、運用時のGC問題を乗り越え、黒魔術を味方につけてライブラリコードリーディングが出来るならいいんじゃないか

動作は早いし、言語のものは強力だ。

Scalaを好むプログラマ関数型やらDDDやら意識高い人が多い。別にScala自体にそれらは必須ではないけど、そこら辺を意識しないならJava8でいいんじゃないかとも思う。

Node.js

非同期処理で開発することの難しさに耐えられるの?

ベストプラクティスがなく、移り変わり激しいJS界隈に流されてオレオレで書いたコード保守する自信があるならいいんじゃない。俺はない。

Go

API単体ならともかく、画面も担う普通Webアプリを書くような言語じゃない。少なくとも今は。

正確に言うと書けないことはないけど、Webアプリに関する周辺ライブラリの不足を乗り越えてまで書くメリットほとんどない。

ClojureとかElixirとか

運用実績ノウハウが少ない中で、自分で乗り越えていく気概があればいいんじゃない

結論

完璧選択などない。

2014-09-04

http://anond.hatelabo.jp/20140902151456

Perlでの業務経験5年超を経て数年前Rubyに転身した俺が通りますよ。

自分がそうだったのでよくわかるけど、PerlRubyは良く似ているからこそ、Perlに慣れた人が不慣れなRubyを使い始めると「PerlでいうアレはRubyでどうやるのか」の勝手がわからなくてイライラすると思う。 while(<>){ } とか。

自分場合転職を機に仕事で使うプログラミング言語が変わったので、Rubyに慣れるしかなかった。最初は何をするにも「定番」っぽいやり方がわからなくて不便だったけど、初心者向けの参考書を買ってきてサンプルコードをひたすら写経した。読むだけだとわかった気になるけど、実際自分で何か書いてみようとおもうと書けないので、手に覚えさせる訓練だと思って無心になってirbコンソールに打ち込んだ。

けどもし自分転職せず、仕事Perlを使い続けていたとしたら、たぶん未だにRubyを使えるようになってなかったと思う。だってPerlでできることをわざわざ必要もないのにRubyでやることないじゃん。言語機能や使えるライブラリにも大きな差があるわけじゃないし、両方中途半端に覚えるよりは片方を深く習得したほうがいい。今はもうRubyに慣れてしまってPerl全然使わなくなっちゃったけど。

が、どうしてもPerlより良いと思える言語がない。

そう思えるんなら君にとってはPerlが一番良い、合ってる言語なんだから世間流行とかあんまり気にせずPerlを使えばいいと思う。

それでもなお「新しい言語を覚えたいんだ!」と思うなら。

文句言いながらでもいいからRubyプログラムを書き続けろ。 while(<>){ } 相当なのは ARGF.each{ } だ、とかこれ読んだだけですぐ身に付いたら苦労しない。お前の仕事Rubyで片付けられるプログラマゴマンといる。情報だってそこらじゅうにあふれてる。Rubyに対するアンテナが低すぎて見つけられてないだけ。Perl習いたての頃「CPANperldocに情報豊富にあるぞ」と言われて活用できたと思うか?

Rubyが使えないんじゃない、お前がRubyを使えないだけ。

2014-09-03

http://anond.hatelabo.jp/20140902163444

理由くらい書けよ糞が

Windowsだけでしか動かなくてもいいからスタンドアロンプログラムが作りたい → (簡単なことだけでいいなら)C#、(メモリ効率が求められるなら)C++

他のWindowsプログラムがやっていて、多くの方が「できて当然」だと思っていることは、7割くらいであれば.NET(フレームワーク名)を叩けばできます

.NET対応言語C#VB.NET、J#、F#JScript.NETC++/CLIなどがあり、実際の開発においてはこれらの中から自分に合った言語を選ぶことになります

個人的感想ですが、この中で最もゆとり仕様なのはC#です。StackOverflowなどのノウハウが一番蓄積されているのもC#だと思います

「頻繁なアップデートを追跡しないといけない」「Visual Studio必要」という問題はありますが、がんばってください

なお、.NETメモリを食うので、数値計算みたいなことをしたいのであればC++が現状一番まともだと思います。がんばってください

Macプログラムが作りたい → Objective-C

昔のMacプログラムGUICarbonというライブラリで作っていました。今はCocoaというライブラリで作っています

残念なことに、どちらも言語Objective-Cです。がんばってください

ブラウザアプリが作りたい → クライアントJavaScriptサーバは後述

ブラウザアプリは、ユーザWebブラウザ(ChromeFirefoxOperaSafariなど)上で動作するシステムと、遠隔のサーバ上で動作するシステム連携して成立します。

従って、ブラウザアプリを作る言語は、サーバ用言語とクライアント用言語の2種類を考えなければなりません。めんどくさいですね。

ひとたびそのめんどくささを突破してしまえば、Webブラウザさえあればどこでも動くようになります。素晴らしいですね。

クライアント用の言語は、まぁ、JavaScriptしかないと思います。がんばってください

JavaScriptも(正直なところ)あまり褒められた言語ではないので、近頃ではもうちょっとまともな言語を作って、それをJavaScriptに変換する方法が取られたりします。CoffeeScriptTypeScriptHaxeとかですかね。がんばってください

JScriptかいう、名前が紛らわしい上にゴミブラウザ上でしか動かないゴミ未満言語もありますけど、そんなもんで作っても私の環境では動かせませんので悪く思わないでください。

iOSネイティブアプリが作りたい → Objective-CSwift

そもそも選択肢が全くありませんので仕方がないです。がんばってください

Xamarinがあるじゃないかって?まぁそういうのもあるかもしれませんね。がんばってください

Androidネイティブアプリが作りたい → Java

私の勉強不足で、Java以外の選択肢は知らないです。Java以外にあるんですかね?

*NIX用の補助スクリプトを作りたい → PerlPython2、Ruby

Perl使い捨てスクリプトを作るのに適していますCPANクライアントは昔から安定して動きません。だいぶオワコン化してます。がんばってください 私は鞍替えしました

PythonPerlより見た目がすっきりしたPerlです。easy_install・pipはすごく安定していてびっくりします(Windows除く)。3系とかいう邪念は捨てて2系教の悟りを開きましょう。がんばってください

RubyPerl(の処理系ソースコード)より(処理系ソースコードが)綺麗なPerlです。私の手元のUbuntuで「ruby」と入力すると「Command not found.」と返ってくることからも解るとおり、多くの*NIXではOS標準でインストールされておりません。昔のgemは何故あんなにすごい時間をかけてrdocを作っていたのでしょうか。日本人が作ったのでムラ意識の強い日本人の仲間が大勢ます。他の国は知りません。がんばってください

*NIX系のOSでミドルウエア的なものを作りたい → なんだそれ?何を作りたいの?

ゲームを作りたい → どんなゲームだよ…

言語処理系を作りたい → BNF、C

これ以上言語を増やすのはやめましょう。バベルの塔大勢人間が不幸になったのに、それを人間が自ら引き起こしてどうするんですか。

言語処理系を作るのであれば、BNFという言語で文法を定義して、yacc・bisonというツールに食わせればひな形ができます。ぶら下がりelseとの格闘が待ってますが、がんばってください

OSを作りたい → C

1からOSを作った方もいますが、デバイスドライバの流用などを考えると、だいたいはLinuxBSDソースコードを改変するお仕事だと思います

残念なことにLinuxBSDもCです。がんばってください

ブラウザアプリ用のサーバが作りたい → PHPJavaC#Go

昔はCGIと言っていました。所詮は80番ポートでlistenするだけのプログラムであり、BSDソケットをlistenできるライブラリを有する言語であれば何でもいいのですが、いくつかの宗教があります

PHPバンドネオンと同じくらい習得が困難な言語なのに、宣伝の仕方を間違えたために「自分はできる」と勘違いしたプログラマが暴徒と化し、イスラム教と同じくらい不当に低く評価されている言語です。きちんと勉強して使う分には、悪くない選択肢だと思います。がんばってください

Javaは、EclipseNetbeansといった超重量級IDEを起動して、Java EESpringといった超重量級ライブラリ依存したwarを、JbossWebSphereなどの超重量級アプリケーションサーバ上で動作させるため、メモリが貧弱な環境ではIDEサーバを同時に起動すらできません。サーバメモリが潤沢であれば悪くない選択肢だと思います。がんばってください

C#は、選択肢が全くないことを除けば、状況はJavaとあまり変わりません。Microsoftがお好きな方、何かの間違いでWindowsサーバを使わざるを得ない方であれば、悪くない選択肢だと思います。がんばってください

Goはよくわからないですがきっといい言語です。がんばってください

ちなみに増田はcpoll_cppspの勉強中です。がんばります

2014-09-02

初心者が学ぶプログラミング言語について

意見を聞かせて欲しい。

今更Perlを始める理由なんてないと言われて久しい。

なるほど確かに教養としてPerlは知っておいた方が良いが、より優れた言語がある。

そして、推される筆頭はRubyだろうか。

そう思ってきた。

が、どうしてもPerlより良いと思える言語がない。

ブラウザで使うなら選択の余地はないので、あの言語は除外しよう。

で、未経験者でも聞いたことの有りそうなこのあたりはこの辺り。

C, C++, C#JavaPerlPHPRubyPython

Hello, World!を見比べたら

「publicてなに?staticってなに?voidってなに? mainはメインなんだろうけど []ってなに?argsってなに?なんでint mainstr mainとかあかんの?たまに*印ついてるのなに?全部意味分からんし解説もなしにおまじないって言って飛ばしてるケースも多いしなんか詳しく言ってるっぽいのもあるけどその分かる人だけが分かるような言い方やめて私のライフはもう0よ!なんで一言「やぁ!」っていうのにどれだけのことを理解せなあかんのよ!」

となるのでスクリプト言語が残るだろう。

Webしか使わない言語関数名もキモイから除外しておくと、PerlRubyPythonの三択となる。

私がPerlを選んだ当時は、Ruby信者が先鋭的で他人攻撃しないと気が済まないという風評を目にしたので外した。

そしてPythonはまだ日本では弱いらしい一方、PerlはてなmixiAmazonでまで使われていて、

恰幅のいいヒゲおっさん他、情報を発信する人の量・質ともに非常に高い様子だったから、Perlを選んだ。

ここから本題。

あれから数年。

新たなものを学ぼうと思い、Pythonは昔バージョンの違いでなかなか動かせず、またPython2と3で随分変わってしまうようなので、

Rubyを始めてみようと思ったんだ。

Next Perlというだけあって馴染みやすい書き方も多く、洗練されてるなってすごく関心した。

マ・クベでなくてもキリシア様に届けたくなる言語だ。

ところで、学ぶには目的必要である

学ぶこと自体目的なので、何をしたいって、何もないので、とりあえずPerlでやってることを全て移植してみることから始めた。

Net::FTPSSL

 うごかない。

 まぁそんなこともあるよね。

Net::LDAP

 うごかない。

 まぁPerlでもActive Directoryに繋ぐのは随分苦労したしな・・・

WWW::Mechanize:

 うごかない。

 CentOS 6に入ってるRubyではバージョンが違って動かないって・・・

結論Rubyでは俺の仕事は何もできない。

上手くいかないのは仕方ないよ。でもmechanize、昔動いてたのに今動かないって何なの?

それにgemsのサイト、もうちょっと何とかならんの?

モジュールクリックしたら作者のサイトに飛ぶし、マニュアルの書き方も作者次第でバラバラ…読みづらい…

CPANみたいにちゃんとやってよ。

ネット上の情報バージョンが違って動かないことも多々あるようだ。Perlなら5.8で書いたものが5.20になっても当たり前に動くよ?

CentOS 6とFedora 20のそれぞれで出てくるエラーも違うし、Perl下地があっても正直キツイ

洗練されていいな!って思った分余計に残念だ。

こんなバージョン違えば動かなくて当たり前で、Rail抜いたら情報も半減するような言語、本当に初心者向けでいいの?

使える人が使える用途で使えるバージョンを選んで使うとステキ。そんなん初心者向けじゃねぇぇぇっぇ。

いや、言語の学びやすさとこれとは別問題なんだろうけど、Perlの安定度と情報の量・質・多彩さで比較になってない。

言語のものRubyの方が上でも、使えない道具は劣る道具じゃんよ。

身の回りの雑多な仕事を片付ける」って用途の方が特殊なんだろうか。

Rubyは良い言語だって思ってた。しかし、分からなくなってしまった。

教えてくれ。

キリシア様に届けていい言語はなんなんだ?

  • 追記

s/キリシア/キシリア/

すまない、ちょっと距離と速度を確認して全門斉射してくる。

  • 追記2

一晩経ってたくさんブクマ、見てくれてありがとう

でもたいした議論もないということは、概ね合ってるのだろうか。

あと、perldocの情報量もすごいと思う。ある程度Perlが使えるようになってからじゃないと読むのはキツイけど、

言語書籍じゃなしにあれだけ詳しく書かれたものってあるかな

kiyo_hiko型が動的なのが耐えられなくて結局Java

冗長になったので削除したけど → 「Perlで学ぶ欠点は型の意識が非常に希薄なままになること」

これホントに身につかなかった。静的型付け言語に行こうとして盛大に躓く。

2012-09-14

perlHTML::TreeBuilderを使うとき

http://anond.hatelabo.jp/20120902231521

の続き

perlHTML::TreeBuilderで嵌ったので、メモ

ページの分析perlでやっていて、以下のように書いたんだけど

while(条件){
    my $html = ファイル;

    my $tree = HTML::TreeBuilder->new;
    $tree->parse($html);

    # 処理

    undef $tree;
}

これだと、大量データを処理する場合は、メモリを食いつぶす。

こうしないとダメ

while(条件){
    my $html = ファイル;

    my $tree = HTML::TreeBuilder->new;
    $tree->parse($html);

    # 処理

    $tree->delete;


参照ページ

http://search.cpan.org/~cjm/HTML-Tree-5.02/lib/HTML/TreeBuilder.pm#DESCRIPTION

http://d.hatena.ne.jp/tetsuarossa/20070827/p1

ちゃんと、CPANドキュメントを見ないとダメだね。

っていうか、こんなのは常識なのかな?

風俗口コミ横断SEARCH

http://fko-s.info/index.html

2012-02-20

http://anond.hatelabo.jp/20120220152942

おう、オッサンだぜ。

Perl古いとかいうが、CPANモジュール使えばまだまだ使えると思うぜ?

自社サーバー持ってるクライアントだとPHP入ってないことあるしな。

PurePerlのSHAとかBlowfishとかお世話になってます

2011-10-28

IPv6だけでFreeBSDセットアップ

IPoEでIPv6が手軽に手に入るようになった

サーバIPv6アドレスだけつけてIPv6だけでどこまで出来るかやってみる

  • FreeBSD8.2-RELEASE
  • Address/Router
    • RAで入手
  • resolv.conf
    • DHCPv6か手動でNTTのを指定

SSHで入ってsquidgoogle,youtubeなどipv6対応サイトならこれで全く問題ない

2011-10-17

http://anond.hatelabo.jp/20111017173201

Action Script は 3 からかなりしっかりしたクラスベースの OO だよ。

JS馬鹿みたいな使い方しないでちゃんとしたスタイルで使えば OO だし、全てがハッシュというオブジェクトだし、関数オブジェクトだしその辺わからないと JS をつかっててもコピペプログラミングに終始して面白くないから結局 OO 理解しないといけない。prototype.jsjQuery やの中身とか読んで理解できるくらいになるには。

Perl だって悪しき過去の遺産が残ってるから OO じゃないイメージが一部にあるけど、モダンPerl は OO だよ。CPAN にあがってるまともなモジュール殆ど OO スタイルだし、もっとモダンスタイル環境でもいける。モダン PerlMoose あたりで検索してみるといい。今からやるなら OO しかないけど、初心者は昔のうんこを踏みがちだよね。JS も同じ事が言えるけど。

JSPerl というゆるい LL は OO を理解していなくても一応使えるってだけで、それじゃマスターには程遠い。あと言語仕様でやっちゃいけないことを縛っていないから、しっかりした開発をやるには 規約もしっかりしないといけない。 初心者最初からいい出会いをするわけじゃないから、誤解が多いのかもしれない。

JSPerlレガシースタイルが残ってる例としてあげたけど、LL でも PythonRuby はもともと OO スタイルしかない。だから自分でやってることを理解してないと過去うんこを踏む可能性のあるゆるい LL よりは、どうやっても綺麗にしかかけない Python初心者向けだと思う。知り合いが何でも良いかプログラミングやってみたいと言い出したら GAEPython 弄らせる。

ぶっちゃけ LL でもいまどき OO を避けて通るなんて無理。

プログラミングスキルは、本質的には言語依存しない。 (よほど糞な言語を使うのでなければだが) OO への理解やアルゴリズムの理解ってのは LL か巨大な言語かに依存しない。絵を描くのに道具によって慣れの差はあっても画力は道具を変えても持ち越せる共通した力だというのに似ている。一つの言語をちゃんとある程度マスターすれば、他の言語の習得はとても早い。たとえ最初にやる言語LL でもね。別の言語をやるときに壁になるのは関数型かそうでないかくらいのパラダイムの差がある場合だけど、JSPerl でさえ 関数型で使うようなテクニック を実装できるし使いどころがあるから、やっぱり共通点はあって、~だから~を学ばなくていい、なんてのは上達したいなら殆どない気がする。

2011-02-10

LL言語が後退局面に差し掛かっている件

LLやばくねー 2年ぐらい前からやばくねー

2003年から2009年にかけてPerlを筆頭にPHP,Ruby,Javascript,PythonなどのLL言語はこの世を謳歌していたが、どうやら去年頃からその成長に陰りが見え始めたように感じている。

webアプリケーションを構成する要素の一つとしてLLを見れば、まあ、よくやっている方だし、そちらの分野では今後も相当長く現役を続けるだろう。

しかし今はまさに超大規模データをほぼリアルタイムで解析して加工しなおされたデータにこそ富を生み出すポテンシャルを秘める時代だ。Hadoopが何かさっぱりわかっていないエンジニア連中はKENT時代のPerler程度の価値しかない。

テラが当たり前のように乱れ飛ぶ現場でLLが出来る事など無いに等しい

IDE進化がLLの優位性をかき消した

eclipsenetbeansなどIDEは地味なのであまり報道されないけれど凄まじい進化を遂げている。現在進行形進化中。

出来損ないのLL野郎がよく吐く台詞JAVA本質的じゃない記述が多過ぎて生産性低い」

そんなバナナ。今のIDE舐めてないすか?まじ誇張でも何でもなくて、ほとんどタイプしないでもIEDが補間してコードを作ってくれる。正確に必要なときだけ。

からオレらJavaエンジニアは実際にアルファベットキーを打つ事は非常に少ない。よく訓練されたIDE使いはコード量の3%しか書かない。それ以上書こうとしてもIDE仕事してくれるんで書けない。ジレンマ

webサーバー進化でLLが実用的な速度で動くようになって一気にLLが主導権を握ったように、今はIDEの恐ろしく速い進化がLLを駆逐しようとしている。面白いパラダイムシフトだ。

node.js

まったくLLにも希望の光が射してきたな。その名もクライアントサイドスクリプト言語の雄javascript様がいよいよサーバーサイド分野に殴り込みだ。実際一番影響を受けるのはPHPだろうな。盤石とすら思われていたのが嘘の用で、そうとう焦っている様子がコミュニティからも伺える。それもそのはずクライアント王者がそのままサーバーサイドも担当しようってんだから人気は出るだろうし、理にもかなってる。

PHPは大きくシェアを下げ、Perlはもう存在価値を問われだす感じ、RubyRailsのPaasなんかで重要だし、Pythonしかりだ。

つまりLLの中でもJavascriptだけは別格の扱いをせねばならない。ゆいつ将来性豊かで、イノベーションを起こせる立場にいる。node.jsは2年かけて本物になればいいと思うよ。

とにかくJavaすげー

Javaライブラリ質量ともに凄いよ 本格的なプロジェクトが山盛り

Cpangemたいに小物ツールの集まりじゃない

プロジェクト一つで相当なインパクトを与えうる大型プロジェクトがうようよいる

LLなんぞが勝てる感じしない

 

以上

ちょっと酔って書いたペニーakiyanでした

2010-12-12

http://anond.hatelabo.jp/20101211160604

Perlで動いているのは置いといても確かにURLダサいわな。

コミュニティトピックなんかも、アドレスに「comment_count=**」とか「comm_id=**」みたいに余計なのがくっつくんだよね。

あれでアクセス統計とか取ってるんだとしたらかなりバタ臭い印象を覚える。

http://anond.hatelabo.jp/20101211154652

Perlは今でもメジャー言語の一つだが

はいえ、PHPと双璧をなすとは言い難い位にかつての勢いなくなっちゃってるよね…。

CPANとか見ても、もう何年も更新止まってるようなのが大量にあるし。

オブジェクト指向も後付のせいか何となく記述が不格好だし。

2010-10-30

購読するとかしないとか105のブログ

今更だが、はてブhttp://www.atmarkit.co.jp/fjava/column/andoh/andoh53.html が人気だったのでまとめてみた。(末尾Eは英語

まずはその記事にあった、16あるけど購読するべき15の開発者ブログ一覧(一部追加あり)

  1. http://alpha.mixi.co.jp/blog/
  2. http://engineer.dena.jp/
  3. http://labs.gree.jp/blog/
  4. http://developer.cybozu.co.jp/
  5. http://mtl.recruit.co.jp/
  6. http://blog.spicebox.jp/labs/
  7. http://labs.unoh.net/
  8. http://tech.kayac.com/
  9. http://techlife.cookpad.com/
  10. http://lab.cirius.co.jp/blog/
  11. http://searchblog.yahoo.co.jp/
  12. http://blogs.oracle.com/otnjp/
  13. http://yuiblog.com/ E
  14. http://blogs.msdn.com/b/ie/ E
  15. http://www.google.com/newproducts/ E
  16. http://ameblo.jp/cyberx-engineer/

で、偏ってるんじゃないのとか、あれないよね、みたいなのとか、その時の http://reader.livedoor.com/ranking/hot.html とかから集めた、14しかないけど購読するべき15の開発者ブログ

  1. http://tech.ecnavi.co.jp/
  2. http://staffblog.baidu.jp/
  3. http://lab.klab.org/young/
  4. http://ameblo.jp/principia-ca/
  5. http://kray.jp/blog/
  6. http://blog.livedoor.jp/techblog/
  7. http://twitterjp.blogspot.com/
  8. http://info.dwango.co.jp/rd/
  9. http://openlab.dino.co.jp/
    • ディノ
  10. http://d.hatena.ne.jp/hatenatech/
  11. http://blog.pixiv.net/
  12. http://ryus.co.jp/modules/d3blog/
    • RYUS
  13. http://www.tejimaya.com/blog
    • 手嶋屋
  14. http://www.sixapart.com/ E
  15. http://www.google.co.jp/search?q=開発者ブログ

あと、企業ブログじゃないけど、 http://reader.livedoor.com/ranking/subscribers.html から、これも購読するべき15の開発者ブログ

  1. http://d.hatena.ne.jp/naoya/
  2. http://satoshi.blogs.com/
  3. http://d.hatena.ne.jp/mala/
  4. http://takagi-hiromitsu.jp/diary/
  5. http://bulknews.typepad.com/ E
  6. http://d.hatena.ne.jp/amachang/
  7. http://neta.ywcafe.net/
  8. http://d.hatena.ne.jp/essa/
  9. http://www.rubyist.net/~matz/
  10. http://chalow.net/
  11. http://furukawablog.spaces.live.com/
  12. http://www.geekpage.jp/
  13. http://blog.livedoor.jp/lalha/
  14. http://0xcc.net/blog/
  15. http://www.goodpic.com/mt/

さらに、 http://gihyo.jp/dev/serial/01/alpha-geek にある、もっと購読するべき15の開発者ブログ

  1. http://d.hatena.ne.jp/higayasuo/
    • ひがやすを、Seasarの人
  2. http://blog.livedoor.jp/nipotan/
  3. http://d.hatena.ne.jp/Hamachiya2/
  4. http://developer.cybozu.co.jp/kazuho/
  5. http://d.hatena.ne.jp/koyhoge/
  6. http://d.hatena.ne.jp/i_ogi/
  7. http://www.aoky.net/
  8. http://steps.dodgson.org/
  9. http://kzk9.net/blog/
    • 太田一樹、分散並列の人、PFIの人
  10. http://hillbig.cocolog-nifty.com/
  11. http://d.hatena.ne.jp/tanakh/
  12. http://yusukebe.com/
    • 和田裕介、すけべー、YourAVHostの人、perlの人
  13. http://twitter.com/jch2355
    • 濱野純、Junio、gitの人
  14. http://blog.yappo.jp/
    • 大沢和宏、やっぽ、iYappoの人、perlの人
  15. http://d.hatena.ne.jp/tokuhirom/

まだまだ、 http://geekdb.jp/ とか、 http://jibun.atmarkit.co.jp/lcom01/rensai/comrade01/comrade01.html とか、 http://bizmakoto.jp/bizid/kw/newgenchronicle.html とか、 http://web-engineer.buyuden.net/buyuden/ とか、これでも購読するべき30の開発者ブログ

  1. http://d.hatena.ne.jp/pha/
  2. http://d.hatena.ne.jp/koizuka/
  3. http://d.hatena.ne.jp/higepon/
  4. http://d.hatena.ne.jp/nyaxt/
  5. http://d.hatena.ne.jp/authorNari/
  6. http://d.hatena.ne.jp/HolyGrail/
  7. http://coreblog.org/ats/
  8. http://d.hatena.ne.jp/satoru_net/
  9. http://d.hatena.ne.jp/wadap/
  10. http://www.milkstand.net/fsgarage/
  11. http://d.hatena.ne.jp/hirose31/
  12. http://trac.mizzy.org/public/blog
  13. http://www.otsune.com/diary/
  14. http://d.hatena.ne.jp/tasukuchan/
  15. http://www.be-interactive.org/
  16. http://d.hatena.ne.jp/sato-shi/
  17. http://d.hatena.ne.jp/Yoshiori/
  18. http://d.hatena.ne.jp/t-wada/
  19. http://www.hirax.net/
  20. http://d.aoikujira.com/blog/
  21. http://d.hatena.ne.jp/ZIGOROu/
  22. http://d.hatena.ne.jp/uta46/
  23. http://blog.masuidrive.jp/
  24. http://d.hatena.ne.jp/takahashim/
  25. http://d.hatena.ne.jp/kazu-yamamoto/
  26. http://networkautonomy.blogspot.com/
  27. http://ko.meadowy.net/~koichiro/diary/
  28. http://ko.meadowy.net/~nay/diary/
  29. http://d.hatena.ne.jp/gallu/
  30. http://d.hatena.ne.jp/mizuno_takaaki/

あとは個人色強め、社会派学者派、ビジネス派もある、これは好きにすべき15の非開発者ブログ

  1. http://blog.livedoor.jp/dankogai/
  2. http://d.hatena.ne.jp/umedamochio/
  3. http://ameblo.jp/takapon-jp/
  4. http://ikedanobuo.livedoor.biz/
  5. http://d.hatena.ne.jp/jkondo/
  6. http://www.ringolab.com/note/daiya/
  7. http://phpspot.org/blog/
  8. http://zen.seesaa.net/
  9. http://twitter.com/fromdusktildawn
  10. http://www.tez.com/blog/
  11. http://hiro.asks.jp/
  12. http://www.chikawatanabe.com/blog/
  13. http://mediologic.com/weblog/
    • 高広伯彦、広告派、スケダチの人
  14. http://japan.cnet.com/blog/kenn/
  15. http://www.kitajirushi.jp/

これ無いとかこれ違うとかあったらよろしく

2010-07-25

プログラミングを身に付けるには

http://anond.hatelabo.jp/20100725025127

"どうすればいいか"を教わって、プログラミングが身につく人は多くありません。"なにをやりたいのか"を自分で生み出せないと、詰まってしまうし、なにより楽しくありません。

やりたいことがあれば手段は後からついてきます。これは物作り全般に言えることです特に学び始めにおいてモチベーションを維持し勢いをつけるのに大事なのは"やりたいことがあるか"、もっと具体的に言うなら"作りたいものは何か"です。これがないと始まりません。それがどうしてもないなら、そういう状況に自分を追い込むのも有効です仕事でどうしてもやり遂げなければならない状況に追い込まれれば人間 0 からでも身につきます。実際自分がそうでした。

とかく、プログラミングというのは手段さえ知れば、あとはだれがやっても同じ結果が出る生産業だと誤解されがちです。そういう認識で学ぼうとしても楽しくありませんし、本質を掴みにくいので応用が利かなく上達しにくいです

本質は絵や音楽と同じです言語を覚えるということは道具の使い方を覚えることでしかありません。音楽理論や絵筆の使い方を知っているだけで、すぐに素晴らしい音楽や絵ができるでしょうか。殆どの人がそうは思わないはずですプログラミングもそれと同じです。作りたいものがある人が圧倒的に強いのです

また、やりたい分野によって向いている言語は違います

んー、ここまで読んでも「やりたいことはないけどとりあえず勉強したい」というなら、すぐに動くものをつくりやすい言語お勧めかなあ。

Google App EnginePython をやるとか。 Python のいいところは、明快で作法にあまり迷わなくていいところです自分がまったく言語やったことない知り合いにすすめるとしたらこれ。

レガシーではないちゃんとした JavaScript (http://www.crockford.com/javascript/ この辺にあるような) もいいですブラウザですぐ動きますし、 Firefox 環境なら本格的なデバッガまでありますJavaScript は非常に誤解の多い言語ですが、悪いものではありません。 お手軽にグラフィカルなものを扱える、結果がわかりやすいので初心者向けです。それでいて、拡張性が高く、プログラミングに必要な概念ロジック殆ど再現できる底力も秘めています

Perlレガシー作法がいまだに見受けられる (Perl って CGI のことでしょ的な解説が未だにある) のですが、初めから strict に慣れて、 CPAN にあるようなスタイルを参考にして、初めから OOP に突っ走るなら今からやってもいい言語ですCPAN 等のリソース豊富さとコミュニティの広さが強いです。ただ、懐の広さ、できることの多さゆえに初心者向きではないところもあります

PHPお勧めしません。理由は適当検索してください。 PHP5 でかなり良くなりましたが、逆に言えば 4 と 5 では別言語と言っても良いほどです。古い考え方と新しいスタイルがごったになりすぎていて、かつて同じような状況にあった Perl に比べても、洗練されたスタイルを学びにくいと思います。また、ロジック面白さに感動するような部分が PHP にはちょっと足りないです

MMORPG やそのエミュレーターの中には、 Lua を使って AIマクロイベントスクリプトなどを組めるものがあります。すぐに結果が出て自分の役に立つものが作れるので、既にその手のゲーム趣味ならお勧めです。こうした用途では、自分の望む世界を構築するために嫌でも物事をモデル化して考えるので、自然OOP 的な考え方やデザインパターンが身につきます

VB は簡単に GUI アプリケーションが作れるのでやる人が多いですが、癖が強いし応用がききにくいのでお勧めしません。また、公開されているソースコードが少ないことも学ぶには不便です

Ruby はそれほどやりこんでないのでコメントはしないでおきますが、悪くはないと思います

C++ は何をすればいいのか?を聞いてる人にはすすめにくいです。作りたいものが明確にあり、ロジックを見つけることで応用が利く人ならほっといても覚えるでしょう。自分は、必要に迫られて身につきましたが・・・

個人的には、作りたいものがあってそれにマッチしてるなら、関数型言語最初にやったっていいと思います。一度ロジックを掴み取る能力がついてしまえば、第二第三の言語は猛スピードで身につくので。

人に見せて使わせてレスポンスをもらうことが大事

作ったものを公開して、人に見せたり使わせたりして、レスポンスを得るというのはモチベーションの維持や上達に非常に有効です。むしろ、早く上達したいなら必須と言ってもよいですプログラミング場合はこれがおざなりにされがちです

絵を上達したいなら、 pixiv を薦められますよね。今下手かどうかは関係ない。上手くなりたい人が沢山投稿してる。歌が上手くなりたいなら、人前で歌う事は避けられない。ニコニコ動画などで公開してる人がいるよね。人の作品をみると刺激をうける。これはすごいパワーだってのはわかると思う。

プログラミングだって全く同じです。なのに、プログラミングは引きこもって一人で勉強する人が多すぎる。絵や歌は公開しても人に害を与えないけど、プログラミングバグセキュリティホールがあったら人に害をあたえるかもしれない、といった印象が強いのかもしれません。

それでも、もっとコミュニティに参加したり、作ったものを公開することが学び始めのうちから重視されていいのは事実。そういった面から考えると、バグセキュリティホールが出来にくく、安全で、危険な動作がしようもない実行環境があり、加えて Web に公開しやすい言語が学びはじめに向いています

こちらも参考にしてみて下さい

http://d.hatena.ne.jp/Hamachiya2/20090721

http://d.hatena.ne.jp/Hamachiya2/20080131

学校に行く必用があるのか

学校に行けば一人で学ぶよりは後押しや出会いがあるかもしれませんが、”やりたいこと””必用なこと””作りたいもの”が無い限り、殆どの人は身につきません。

また、残念なことに講師にも大変当たり外れが多いです自分専門学校にいったことはありませんが、講師の知り合いがいるのでよく学生さんの話を聞きます。結局の所、しっかり身につく人は、家に帰っても色々作りたいものを作って公開したり、著名なプログラマ達のブログを読みまくったり、フォーラムに出入りしたり、ML に入ってたり、 twitter で刺激的な知り合いをつくるとかしていて、そういうところでめっちゃ差がつきます

学校に行くなとまでは言いませんが、学校いかないで身に付ける人は本当に多いし、学校いって身につかない人も本当に多いということは考えて下さい。

26日追記

ブクマ増えてた!ありがとう

元増田さんがどの言語をやれば・・という方だったので仕方なくこのような書き方になってしまいましたが、作りたいものが既にある人はあまり”どの言語をやるか”には拘らなくてよいと思います

そんなことよりも、今必用で/気軽に/すぐ結果がわかることをやるのが、始めてのプログラミングには大事。だから本当は、どの言語をやるかよりも何を作りたいのかを先に見つけてほしい。

目の前の意外なところにプログラミングは生かせます。できるだけ身近な、すぐ効果がわかるところからとりかかった方がプログラミングの楽しさにはやく気付けるはず。

みたいな導入口でもいいんだ。

例えば C++ でのプログラミング初心者が 0 からやるのは難しいだろうけど、既存アプリケーションプラグインなら開発のためのテンプレート目的に近い作例があってコードも短いからそれを改造するところから始められる。需要があるから楽しいよ。

目の前に実用的な目標があるってのが大事

2010-02-13

R基礎文法最速マスター

基礎

外部スクリプトの読み込み

Rコンソールに一行ずつコマンド入力してもいいけど、実際に使うにはテキストファイルコマンドを書いて(ソースコード)一気に実行させる方が楽。

source('hogehoge.R')

hogehoge.Rというのがソースコードを書いたファイルソースファイル)の名前

ライブラリの追加

CRANという、CPANパクリがある。膨大な数のライブラリがあるので、好きなものをインストールするには、

install.packages('hoge',dependencies=TRUE)

とするのが楽。

変数宣言

不要。変数に使える文字も結構多い。日本語でもOK。

> あ<-1
> あ
[1] 1
代入
a<-1
b=2
1->a

どれでもいい。但し推奨されてるのは一番上。Rの人は「束縛」という言葉を使いたがる傾向があるけど、どっちでもいいと思う。

余談だけど、関数引数の中で代入できる、しかもその値をそのあとの引数で使える。これ実は便利。

> sum(a<-1,a)
[1] 2
変数の内容を確認

基本は変数名を入力すれば表示される。

> a
[1] 1
> str(a)
 num 1
> summary(a)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 

最後のsummaryはRっぽい。strっていうのはstringではなくstructの略(だと思ってる)。Rの変数はいくらでも複雑な構造になり得るけど、そのときにぱっと見がわかるように構造を出力してくれる。

ベクトル

Rの基本はベクトル

ベクトルを作る

ベクトルの作り方はいくらでもあるけど、例示するのが早いでしょう。

> x<-1:3
> y<-c(TRUE, FALSE, TRUE)
> z<-c("a","b","c")
> x
[1] 1 2 3
> y
[1]  TRUE FALSE  TRUE
> z
[1] "a" "b" "c"

他にもいっぱいあるし、関数返値ベクトルってこともよくある。

> runif(3)
[1] 0.2200965 0.6391403 0.1089252

一様乱数を三個作った。

ベクトルの要素にアクセス
> x<-letters[1:5]
> x
[1] "a" "b" "c" "d" "e"
> x[2]
[1] "b"
> x[4:5]
[1] "d" "e"
> x[c(1,3,5)]
[1] "a" "c" "e"

こんな感じで、[]の中に添え字でアクセス。1-indexなので注意。2,3番目の例では添え字にもベクトルを使って、複数の要素に一気にアクセスしてる。

ベクトルの要素に代入
> x[3]<-"z"
> x
[1] "a" "b" "z" "d" "e"

でOK。

終わりに

要望があれば続くかも。

2009-04-08

Re: Perl配列Aから配列Bにある要素を取り除くには?

http://anond.hatelabo.jp/20090408034449

リスト内の有無を複数回調べるときの定石は、事前にハッシュに突っ込んでおく方法です。

元のコードgrep内でリニアサーチをやっているわけですから、ここにハッシュテーブルを使うわけです。

my %key = map { $_ =&gt; 1 } @key;
my @update = grep { not exists $key{$_} } @items;

ベンチは取っていないですが、多分早いです。

ただ、その分メモリを食いますし、@itemsに対し@keyの方が長大だと、あまり効率が良くないかも知れません。

その場合、ソート済みならバイナリサーチでやってみるとか、そもそもkeyハッシュ管理するとか、GDBMやsqlite等を使って永続化するとか、keyの入手段階から検討したほうが良いかもしれません。

また、cpanを探せば色々な配列操作を行うモジュールがあるかもしれません。

2009-02-19

モダンPerl入門』を第1章だけ読んだ

巷のPerl Mongerな人たちの間で話題の『モダンPerl入門』を読み始めた。

第1章はオブジェクト指向トレンドの話で、とても興味深く読んだのだが、同時に「なんでこれPerlで実装せなあかんの?」と疑問に思った。ていうかオブジェクト指向やりたいならJavaC#でいいじゃん。

Perl5には本格的なOOPの仕組みが実装されていない。

継承という基本的な概念もないし、コンストラクタなんかも用意されていない。ゆえに、MooseとかのCPANモジュールを使って実装しなければいけないのだけれど、その分敷居が高くなって初心者には判りづらい。初心者でも現場に投入できるような、強力なオブジェクト指向機構が用意されているJavaC#といった言語StrutsASP.NETといったフレームワークなんかとは全然違う。

私はメインPHPASP.NET(C#)という人間で、Perlバッチプログラムとかクローラの実装とか雑用処理なんかに使っている。PHPは小規模プロジェクトアジャイルな開発がしたい時、ASP.NETは大規模プロジェクトに呼ばれた時用の懐刀という感じで使い分けている。PerlWebサービスを作ることももちろん出来るけれども、どちらかというとスピードが優先される開発に用いるものだと思うし、OOPを用いた大規模なプロジェクトPerlを使おうとする理由がよく判らない。無駄に難しいし、そもそも本書を読めるレベルPerlを理解している人の頭数がかなり少ないだろうから、実装しても保守コストがやたらかかる。Livedoormixiはてなのような大規模サイトPerlで動いているようだが。。。

モダンPerl入門』は内容も書き方も素晴らしい良書だけれど、その辺りが引っかかった。「PerlOOPを使う理由(APS.NETStruts+Java採用しない理由)」は何なのだろうか? 私のプログラマーとしてのスキルが低いだけだと思うが、よく判らないので誰か教えてくだしあ。教えてダンコーガイ

2008-11-01

mobircいれるじゅんばんのメモ

svn から mobirc

ここみる http://d.hatena.ne.jp/h_kenan/20080717

apt-get から install Encode

svn から Encode

cd [Encode Dir] してから sudo perl Makefile.PL

モジュール一括インストール? sudo -H cpan App::Mobirc

やっぱり HTML::DoCoMoCSS でコケたので

make && make test して出てきた not installed を f**k

=> install Test::Spelling

=> install Test::Perl::Critic

=> install Test::Pod

sudo gnome-terminal

cd /home/pc/.cpan/build/HTML-DoCoMoCSS-0.01

make && make install

・・・いけたか?

・・・

・・・

・・・

はいむりー

2008-08-31

pythonダメな1つの理由

perl でいう CPAN のようなモジュールアーカイブの名前が pypi.

パイパイってwwwぷげらwwww

pypi がいっぱい♪

2008-06-06

パールコードが 開かれた

添削するぞ タグを打つ

パールの力 たくわえて

ひらいたサイト 404(ヨンマルヨン)

おそれるな おれの態度

かなしむな おれのタイポ

のびるブクマが ホッテントリになれと

いかずちはねて コォドがはしる

ドアとライブを つらぬいたとき

パールモンガー ダンコガイ

パール 5.10  ダンコガイ

CPAN CPAN CPAN 俺はギーク

2008-04-16

http://anond.hatelabo.jp/20080415182703

実行してみたら出力に変化がなかった。アルェー?

おっと、バグが。ちゃんとテストしてなかった。すんまそん。

# tree -pugs | perl -e '@line=<>; $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0]; map {s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e} @line; print @line'

毎回正規表現考えるのも面倒かなーとかとか。

理想を語ると出力形式指定できれば最強だなーとか妄想してた。

この辺は、ファイルにして ~/bin に放りこんで、自分好みに育て上げる、ってのがエロゲ^H^H^Hギーク楽しみ方かと。

雛型的には↓かなぁ。どうだろ。弾・monger・コーガイ氏が登場したら……滅多切りさるかもw

#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Std;
use vars qw($opt_t);

# オプション処理
getopts('t');
# $opt_tがセットされていたらタブ処理、ということにする。

# コマンド起動
# 引数処理とかシグナルとか面倒なところは……
open TREE, "tree -pugs ".join(" ",@ARGV,"|") or die;
my @line = <TREE>; # 富豪的にいく
close TREE; # ここで子プロセスの処理だっけ?
# それともwaitするんだっけ?

# ツリー表示部分の最大長を求める。
my $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0];
# 色々やる時はユーザ名とかグループ名とかファイル名とかの最大長がいるかも

foreach (@line) {
        if ($opt_t) {
                # タブ(\t)で位置をそろえるとか……
        } else {
                s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e;
        }
        print;
}

treeへのオプションの与え方とか、それによる出力の変化とか考えると、結構面倒だけど、自分用に決め打ちしとけば何とかなるでしょう。

あと、「[%p<>%u<>%g<>%s]」みたいなのはCPANに転がってたりしそうな気もするので、それを使うとか。

そんなところでなかろうか。

[追記]

http://search.cpan.org/~darren/String-Format-1.14/Format.pm というのがあった。

2007-10-20

Perlめ!

なんだよ! CPANの読み方って「くぱぁ」じゃないのかよ!

だまされた! めっちゃだまされた! ものすごく恥かいた!><

2007-09-02

[][][Web::Scraper][API][JSON][JavaScript]Web::Scraperを使ってみたくてニフティクリップJSONを作ってみた

最近perl勉強してて、naoyaのはてなダイアリー - Web::ScraperWeb::Scraperを知り、試しにはてブのAPIを真似してニフティクリップコメントを吐くJSONを作った。

#!/usr/local/bin/perl -T
#
#
use strict;
use warnings;

use URI;
use Web::Scraper;
use JSON::XS;
use CGI;
use Encode;

my $q = new CGI;
print $q->header( -type=>'text/plain', -charset=>'UTF-8');

my $path_info = $q->path_info;
my $path = $path_info =~ m{^/?(nobracket/)?(http\w?)://?(.*)$}xms ? $2.'://'.$3
         :                                                          undef
         ;
exit if ! $path;
my $is_nobracket = 'true' if $1;

if ($q->query_string) {
    my $query_string = $q->query_string;
    $query_string =~ s/;/&amp;/g;
    $path = $path.'?'.$query_string
}

$path =~ s/%23/#/;

$path =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$path =~ tr/ /+/;

my $entry_url = "http://clip.nifty.com/entry/?url=" . $path;

my $bookmarks = scraper {
    process 'h4>a', 'user' => 'TEXT';
    process 'li.dateAndTime', 'timestamp' => 'TEXT';
    process 'a.tagtag', 'tags[]' => sub {
        my $text = $_->as_text or return;
        my $left = decode_utf8('??~P');
        my $right = decode_utf8('??~Q');
        return $text =~ /$left (.*?) $right/xms;
    };
    process 'p.comment', 'comment' => 'TEXT';
    result 'user', 'timestamp', 'tags', 'comment';
};

my $niftyclip_entry_info = scraper {
    process 'div.clipTitle>h3>a', 'title' => 'TEXT';
    process 'div.clipTitle>p.url>a', 'url' => '@href';
    process 'div.comments>div.commentsDetails',
        'bookmarks[]' => $bookmarks;
    result 'title','url','bookmarks';
};

my $niftyclip = scraper {
    process 'div#content',
        'niftyclip_entry' => $niftyclip_entry_info;
    result 'niftyclip_entry';
}->scrape(URI->new($entry_url));

exit if ! ($niftyclip->{'url'});

$niftyclip->{'entry_url'} = $entry_url;
$niftyclip->{'count'} = @{$niftyclip->{'bookmarks'}};

my $json = JSON::XS->new->utf8->encode($niftyclip);

$json = '('. $json. ')' if ! $is_nobracket;
print $json;

取得方法は

http://monm.on.coocan.jp/niftyclip/json/entry/<取得したいURL

ってすればいい。「#」は「%23」にエスケープしないとダメ

ニフティクリップのトップならこんな感じ

作りながら「取得したいURLURLエンコードするのは面倒だな」って思い、はてブAPIみたいにpath_infoでアクセスできるようにしたわけだけど、その取得したいURLquery_stringが付いてた場合にどうやってやって良いかわからず結構悩んだ。

結局、path_info+'&'+query_stringってやることで無理やり作ったけど、普通どうやるもんなんだろ?cpanに何か良いモジュールがあったりするのかな。

それと、はてブに合わせて出力の際に()を付けるようにしたけど、これだとYahoo!Pipesで使えなかったから、

http://monm.on.coocan.jp/niftyclip/json/entry/nobracket/<取得したいURL

みたいに「nobracket」付きでアクセスした場合には()を付けないようにした。

コレ使うとニフティクリップとlivedoor クリプのコメント取ってくるAPIみたいなのが作れる。

RSSで取得する場合は

http://pipes.yahoo.com/pipes/pipe.run?_id=zECBJ_VY3BGtBw6B8ivLAg&_render=rss&URL=URLエンコードしたURL

で取得できるし、jsonで取得する場合は

http://pipes.yahoo.com/pipes/pipe.run?_id=zECBJ_VY3BGtBw6B8ivLAg&_render=json&URL=URLエンコードしたURL

ってなる。

こんな感じ

とりあえずサクッと作ってみたけど、わざわざページからJSON作ってるからちょっと重い。

デザインリニューアルされたら使えなくなるし。

その頃にはJSON吐いてくれるようになるんじゃないかなと期待はしてるけど。

参考URL:

http://d.hatena.ne.jp/naoya/20070509/1178686816

http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AF%A5%A8%A5%F3%A5%C8%A5%EA%A1%BC%BE%F0%CA%F3%BC%E8%C6%C0API?kid=184075

2007-08-21

X-REPROXY-CACHE-CLEAR もあわせて使いたい人向けショート BK

■X-Reproxy-Cache-Clear できる Perlbal プラグインCommentsAdd Star

■[Perl][CPAN][Perlbal] X-REPROXY-CACHE-FORを使いたい人向けショートBK

X-REPROXY-CACHE-FOR ヘッダが Perlbal に(というか Perlbal::Cache に)どのように解釈されるかというと、

Perlbal::Service.pm

1467 sub add_to_reproxy_url_cache {

1468 my Perlbal::Service $self;

1469 my ($reqhd, $reshd);

1470

1471 ($self, $reqhd, $reshd) = @_;

1472

(snip)

1484 my $hostname = $reqhd->header("Host") || '';

1485 my $requri = $reqhd->request_uri || '';

1486 my $key = "$hostname|$requri";

1487

(snip)

1496 $cache->set($key, [$timeout, \@headers, $urls]);

1497 }

こうなってる。ここで、

Perlbal -> mod_perl -> MogileFS

こんな風に、フロントPerlbal, バックエンドに mod_perl ハンドラでも置いて、その裏の MogileFSやりとり(をあんまさせたくないので Perlbal に直にキャッシュさせたい)という構成を考える。

この場合、

つまり、

X-REPROXY-CACHE-CLEAR: /artwork/12345

というヘッダを mod_perl から Perlbal に返す必要がある(host は補われる)

この /artwork/12345 というリクエスト URL は、 mod_perl 側から直に参照できない。

mod_perl ハンドラを例えば以下のような conf であてていたとすると、

<Location /example/artwork>

SetHandler perl-script

PerlHandler Example::Artwork

</Location>

RewriteEngine On

RewriteRule ^/artwork/(.*) http://127.0.0.1:8080/example/artwork/$1 [P,L]

ここで $r->uri をとると /example/artwork/12345 となり、これをそのまま X-REPROXY-CACHE-CLEAR で返しても Perlbal::Cacheキャッシュした key とは違うものなのでキャッシュを破棄できない。自前で $r->uri を split なりして、 /artwork/12345 を、 Rewrite される前の URL を知る必要がある。当然、どんな RewriteRule かに依存するので一般的な実装はあげられない。 Rewrite しなければもう少し話が簡単になる。

要は、

と、それぞれ意味の違った URL (key になるもの)がいくつか存在して、どれがどれやらわからなくなってしまうので、ハマりどころが多い。ありがちな(というか俺がやった)ミスとしては、 CACHE-FOR でキャッシュした状態で MogileFS からファイル実体を消してしまうと (mogile に突っ込むときkey はまた別に digest とかで作ってあったりすると余計に混乱することうけあい) Mogile にはもう存在せず、したがって mod_perl にはどうしたって知りようがない URLPerlbalキャッシュしていて 503 を返しつづける、という状態になってしまう。それから、キャッシュを自発的に消したいときというのはもともとキャッシュしてた URL (Mogile 上でのファイルのありか)が指し示すファイル実体を消したいときなので(実体がないものをいつまでもキャッシュしているのは困る、という理由)当然実体そのものも消すわけだが、

こういう手順でつくらないといけない。この URLACL を厳重にしておかないと、全ての artwork に対応するキャッシュ破棄用(つまりファイル削除用) URL を GET されまくってファイルを消されまくってしまうので非常にまずい。

我ながら乱雑で要領を得ない文章だと思うけど、こんなものでもないよりはあったほうがこれから同じことをやろうとする人にとっては多少の助けになると思うので走り書きのままで公開する。こういう、どっかに一言書いてあれば5秒でぐぐって済むことを何時間もかけてやり直すのは人類にとっての時間的損失でばからしいので、適当に間違ってるところとかを修正しつついろんなブログとかに転載しまくって世に広めてください。

2007-05-03

LL編プログラミング言語ヒエラルキーにおける罵倒

perlRuby
CPANみたいなのはないの?
Rubyperl
それってオブジェクトって言えるの?
perlPHP
もう少しセキュアに書けないの?
PHPperl
単体でDBが扱えないの?
RubyPHP
もう少しわかりやすく書いてくれないかな?
PHPRuby
もう少しパフォーマンス良くならない?
Java → 他LL言語
結局どれも大規模開発には向かないよね。
LISP → 他言語
なんでそんなにごちゃごちゃしてるの?
Smalltalkオブジェクト指向言語
結局劣化コピーじゃないの?

Pythonはよく知らない((いや、他もよく知らないけど))のでパス。最後の方はおまけ。採点お願いします。

2007-05-02

プログラミング言語ヒエラルキーにおける罵倒

http://www.geekpage.jp/blog/?id=2006/12/13

プログラミング言語ヒエラルキーにおいて、上位が下位に対してどう見下してるのかを書いてみた。詳しくない言語も無理して調べながら書いてある。あと、言語に理解の無い人みたいで生々しいかと思って、刺激的かつあまり真っ当でない内容ばっかにしてみたよ!((FORTRAN から Java に「GO TO も実装されてないんですか?」とかそういう、馬鹿にすることを目的とした偏狭で的外れな発言ってことだよ!))((ここにある中では、C# に多重継承が無いことを馬鹿にする C++ プログラマーが真っ当でない指摘のわかりやすい例かな))

みんなが普段どういう不当な見下しをしてるかも教えてね!

Lisp → C

「いつまで経っても言語仕様が貧弱で大変ですね」

アセンブラ → C

「結局アセンブラ翻訳してるだけじゃん」

C → C++

C++ の難解な仕様と戦うぐらいなら C で関数ポインタを使ったオブジェクト指向の方がスマートだね」

STL は糞」

C++C#

中途半端ポインタを隠蔽して何がしたいの?」

「多重継承したくなったらどうするの?」

C → Perl

CPAN 見たって C でコア部分を書いてるライブラリばっかじゃん」

「なんでわざわざ use strict なんて書かなきゃいけないの」

PerlPython

Python って明示的に object継承した場合としなかった場合で挙動が違うって本当なの?」

「インデントブロック(笑)

Python → OO PHP

ライブラリ環境が全然整備されてなくて最悪じゃん。C や C++ で書かれたライブラリをラップしてるだけのはずなのに機能が減りまくってるのも多いし」

OO PHPPHP

ベタ書きしてて楽しい?」

PHPAjax

ウェブブラウザでしか動かないプログラム書いてて楽しい?」

AjaxJavaScript

「簡単な処理をコピペで実装してるだけだね」

JavaScriptVisual Basic

As とか書いてて混乱しない?」

C# があるのにまだ使ってるんだ」

FORTRANCOBOL

「冗長でわかりやすいですね(笑)

「DIVISION の概念って本気で言ってるんですか?」

COBOLAda

「航空宇宙産業専用言語でしょ」

「記述がわかりづらいね」

JavaScriptAda

ペンタゴンで使われてるだけじゃん」

「ガベージコレクタが無い……?」(あるらしいです><

AdaPascal

「昔 Apple で使われてただけじゃん」

「Del…phi…?」

PascalJava

コンパイルも実行も遅いらしいけど何に使うんですか?」

JavaHTMLプログラミング言語であると主張する人々

「処理も記述できないのに何言ってるの」

おまけ

マイクロソフト・ジョークス/プログラミング言語が女性なら

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん