はてなキーワード: Perlとは
そりゃあ、やろうと思えば様々な手法があるだろうけど…
いかに余計な作業を減らして「やりたいことを実現」するための作業に専念するか、を考えている。
いろんな言語への興味はあるが、むしろそのせいで今まで時間食いまくってるので、そろそろ「手早く作る方法」を知りたい。
あんまり色々な手法を試してもいられない。
「これ!」ってやり方を決めたい。
プログラミング言語は、C C++ Java Python Perl VB C# HSP PHP JavaScriptなど、どれも基礎を触ったりしてばかりで何年も過ごしてきた。
FLASHは持ってない。(PalaFlaは触ったことあるけど、いまいちイメージしにくかった)
なんだかんだで一番慣れてるのがHTML+CSSで、次点でPHPかJavaScript。
ただ、PHPだのjavaScriptだのSQLだの、複数言語を同時に扱ってると非常に面倒。
そこでサーバーサイドJavaScriptに目をつけたものの、『Jaxer』は2008年に書かれた記事がちょっとあるばかりだし…
Node.jsってどうなんだろう…?
うーん、あまり纏まってないが、とりあえず現状をダンプしておく。
なんか参考になるものがあればなー。
こういうこと色々聞ける相手も周りにいないし…
他は知らんが、Perlだと中括弧は要る気が。
完全に一致を作るための勉強法
コメントもたくさん頂いてまして、それにお答えするのに「ブログでもつくろうかいな」とのぼせましたが、そんなテーマで続くわけもないので、やはりアノニマスダイアリーにしました。
【製作期間について】
まず、皆さん仕事しながらたった4ヶ月で!と褒めて頂いてますが、たったじゃないですよ。4ヶ月って。
仕事が終わって、毎日2~3時間。土日関係無くやると、多分300時間くらいになります。
専門学校の2年間の授業時間がこのくらいだったりするんじゃないですかね。結構長いです。
【モチベーションの維持について】
モチベーションを保つのがすごいというのも褒めてもらいましたが、私は一回やり始めると、意外に長く続きます。
コツがあるんです。
毎年、日々の単純作業が続かない新入社員が入ってきますが、そんな新人に言います。
「息をするように続けるんだよ。」
毎日やるんです。土日関係無く。毎日。
前回の日記で「勉強した」と何度も使ってしまった為、誤解をされている方が多くいらっしゃいます。
正確には、「調べ」ました。
職業柄「調べる」という事が多い為、WEBサービスを作るという事に関してはそれが訳に立ちました。
追記でも書いているのですが今回のシステムはほとんどが、先人達が作った既存のシステムがベースになっています。
ぱくりと言われてしまえばそれまでなんですけど、丸ごとはやってないですよ。というか、丸ごと合うモノがなくて、いろんな所からソースコードを拝借させてもらいました。
なので、中身はぐちゃぐちゃです。けど、検索システムはそれでも200行くらいしかありません。クローラーは80行くらいでしょうか。
【HTMLについて】
というか、それすら途中で挫折してAdobe社のDreamWeaverというソフトを使いました。
適当に書けばソースは綺麗にしてくれるし、CSSの体裁はプロパティを設定しながら見た目のまま調整すれば良いし、一番助かったのはテンプレート機能でした。
最初は全部のHTMLファイルをコピーしながら作っていたのですが、ヘルプを見るとテンプレートとライブラリという機能があるのをしってライブラリがいまいち分らなかったのでテンプレートを使いました。
■Dreamweaver便利
■テンプレート便利
【Javascriptとの出会い】
最初に本やで立ち読みした本に、「プログラムをやってみよう」ということでJavascriptの事が書いてありました。
なので、自然とプログラムの最初のさわりがコレになっただけなんですね。
でも、アラートを出したりとかばっかりで、面白くありませんでした。
インターネット黎明期からのネットユーザーなのですが、「最近よく見るページが移動しないのにページの中身が切り替わるやつかっこいいよな」と思って「ページ遷移しない 読み込み」で検索をすると、Ajaxという文字を見つけ、「ajax 入門」で検索してトップに出たサイトでAjaxの概要だけ調べて、「ajax 簡単」でprototype.jsとjQueryの文字を見つけて「ああ、jQueryってよく見るな」というのがjQueryとの出会いでした。
「最近よく見るページが移動しないのにページの中身が切り替わるやつ」は、非同期通信という名前でした。
jQueryを使うと、下記のように1行コピペするだけで外部のHTMLを読み込む事ができました。
--------------------------------------------------------------------------
var http = $.get("abc.html",null, function(data) {$("#main").html(data);});
--------------------------------------------------------------------------
すごい簡単。最初は意味は分りませんでしたが、目的の事ができればそれで良いので次に進みました。
■jQueryすごい
■非同期通信かっこいい
【Perlとの出会い】
jQueryがちょこっと書くとダイナミックに色々変わってくれるので、日々いろんなプラグインを探して遊んでいました。
でも、作りたかったのは検索システムだったのを思い出し、また近くの大きな本屋に。
検索するパソコンで”プログラム 検索”で探しだした棚に行くと、「CGI/Perl」の本棚でした。
大量にありすぎてどれをかって良いか分らなかったので、いくつか立ち読みして家に帰り、「CGI/Perl 入門」で検索すると
このページにたどり着きました。
Windowsだった為、ActivePerlを入れていくつかプログラムをやりましたが、これがまた面白くないんですね。
すごい地味で。このPerlをさわった最初の1日は正直かなり苦痛でした。
その後、”AV女優の検索システムって不動産の検索システムに似てるな”って思って「CGI/Perl 不動産検索 無料」で検索したら、http://www.yumemaboroshi.net/ってサイトが引っかかって、ここのおかげでかなり進みました。
先人が作った大量のプログラムがダウンロード出来るサイトなんですね。
【PHPとの出会い】
いくつもダウンロードしては、サンプルと中身を見てを繰り返してたら、Perl/CGI以外にPHPがたくさんありました。
どう違うのかと思い検索したら、PHPはすごい叩かれてて、Perlがえらいみたいに書いてあったのですが、叩かれてる理由がいまいち理解できませんでした。
結果PHPを使う事になったのですが、その大きな理由は、DreamweaverでPHPが開ける。なおかつHTMLファイルをそのまま使うテンプレート機能のプラグインがあったという事でした。
PHPでテンプレートを使うには、Smartyというプラグインを使えば良いということが分って、「Smarty 入門」で調べて、いくつかのタグを覚えました。
実際にSmartyで使ったタグは、{$変数}と{if}{/if}と{foreach}{/foreach}の3つだけだと思います。
色々高機能らしいのですが、まあ目的は達成できたのでいいか。と。
PHPの検索プログラムは、HTMLファイルでボタンを押すと、テキストファイルに書いてある内容を、表示してくれる簡単なものを作って、そこに肉付けしました。
(最終的にテキストファイルがSQLサーバーになりましたが。)
■PHPはDreamweaverと相性がいい
■Smartyでやると見た目が壊れない
【Rubyとの出会い】
簡単にPHPで動くプログラムが出来たので、実際に女優のデータを登録しようと思い、DMMに行きました。
DMMのサイトを見ていると、いったい何人いるんだってくらいAV女優が登録されています。
数人集めてみて「こりゃぁ。無理だな。」と途方にくれて1日を過ごしました(笑)
次の日、「ホームページ 自動 巡回 プログラム」とかで検索して、ボットとクローラーという存在を知りました。
自動巡回で拾ってくるのは、どちらかというとクローラーと呼ばれるそうで、「クローラー 作り方」で調べたホームページに、Perl+LWPモジュールで似たことができるということで、とりあえずペタペタとソースを貼ってうごかしてみたら、まあなんと簡単に取れました。
しかし、取ってきた後に気がついたのが、HTMLファイルをそのまま取ってきても結局手動でコピペの必要があり、あんまり意味がない。と。
で、もう少し調べると、「WWW::Mechanize」を使うといいよって書いてあって、Mechanizeで調べたサイトをみるとrubyを使ったサイトが出てきました。
rubyのサンプルがすっごい短くてわかりやすかったので、Perlは苦痛だったのでRubyにしようと、このときRubyを始めました。
■Rubyきれい
■Mechanize簡単
【デザインは・・・】
はてなブックマークのコメントで、DoCoMoのサイトが元ネタと書いてありましたが、ハズレです。
デザイナーの友人が居て世間話でどうやって作るの?って聞いたら、「まあ、パk、じゃない。参考にするよ。他社のを。」っていうもんでどうやって見つけるか聞いたら、あるんですね、綺麗なデザイン集めたサイトが。http://www.ikesai.com/ここでたくさん見ました。
それから、スライダーのインターフェースは、「selectToUISlider」jQueryのプラグインそのまま使ってます。
■世の中のデザイン全てぱk(略
■selectToUISliderかっこいい
という感じで、ほんとにちょっとずつ進みました。
楽しかったですね。Perl以外は。なんであんなに読みづらいんでしょう。
と、またもや長くなりすぎたのでこの辺で。
DMMのクリックが10万クリックほどあり、その結果、購入された金額が、なんと!
報酬額が245円。
----------------------
今回のサーバーダウンは結構深刻でなかなか復旧が出来ていません。。。
申し訳ないです。
----------------------
http://twitter.com/#!/kanzen21_com
----------------------
ショックだね。超高速道路というか、そういう以前の問題だよこれは。
やろうとすることを普通の人が身につけるのに3年は掛かるだろうに、しかも、ここまでのクオリティはでない。
唸ってしまう。
回避できるのであれば使うHTMLやCSSは限られる。覚えるのは最小限。
Dreamweaverつこーてるのかな?
ツールが解決してくれるのならコードを書く必要すらない。
jQueryでやられていることを自前実装するには技術力が必要。
中で何をやっているかなんて詳しく知る必要などない。
世界中のもっと詳しい人がチェックをいれてくれている。jQueryを利用したライブラリやサンプルコードも転がっている。jQueryでできないことがでてきたらどうするか? prototype.jsでも使えばいいじゃない。
扱いがかわいそう。
自分に必要がないもの、目的に合致するのに遠回りなものを切り捨てる能力がないと何時まで経っても勉強だけして終わる。
PHPで何かしようとしたのではなく、単なるテンプレートエンジンとして割りきって利用したようだ。
表示したいところに表示させたいものを埋め込むだけなら、それはHTMLとほぼ同等の何かでしかなくなる。
どの言語でやっても一緒なら、できるだけ自分がつくる部分が少ないほうがよい。
phpではクローラーをつくるのにいいライブラリがあるというのを聞いたことがない。
RubyならPerlみたいな正規表現に悩まされることもない。なるほど。
素人がRuby環境を例えばLinux上に構築しようとしたらかなり躓くところがあると思う。Railsを使わずにRubyで済ませたというところか。ここらへんから何か恐ろしい。
逆算するとクローラーをつくるまで学習を初めてから2ヶ月も掛かっていないことになる。
クローラーをつくってからApacheを知ったというのがリアルで笑えるのだけど、恐ろしい。
Ruby環境とPHP環境をどうやって同居させたのかとかそういう苦労が見えない。ということ苦労しなかったのかもしれない。やはりRailsではなくてRubyなのか。
技術者を名乗る人でもRubyの環境構築ができない人も多いのにこの人は素直にすごい。
何もないところからLinux環境にPHPやらmySQLやらRubyやらの環境構築は熟練した人でも半日かかるめんどくさい作業なのでそれをやれてしまうというところで、3年生ぐらいのエンジニアスキルがあると俺は認める。
それは言い直すと普通に仕事として身につけたとしても一般的には3年はかかるということだ。
はてさて、SQLまでかけるようになったというのだろうか。
DB設計は? 確かにこの内容であれば設計を要するほどの複雑さはない。1テーブルで十分。
インデックスとか貼ってないだろうなとは思わせるが、5GBのデータでもこれだけのレスポンスが出てしまう時代だ。
チューニングするぐらならいいハードにのっけなよということか。
デザイナーとしても食っていけるだけのスキルがあるんじゃなかろうかとおもってしまう。
もう、なんていうか調査能力もすごい。
というか調査能力がすごいんだろうな。
35歳。
去年までプログラマの知識ゼロ君だったけど、HTMLとかAjaxとか
勉強して4ヶ月でWEBサービスを公開した。一度やってみなよ。
ベータ版だけど、カゴヤで900円を払えば50GBのVPS鯖貰える。
借りるだけ借りてサービス開始せずにやめることもできるし、
もう、いいおっさんの年齢なんですが、先日、とあるWEBサービスを公開しました。
5年ほど前からぼーっと考えていたんですが、如何せん、事務職の自分には”創る技術”が無かった。
優れた若い技術者(id:amachangとかうらやましい)や、チャレンジ精神あふれる経営者(id:hiroyukiegamiとか)が出てくる中うつうつとしている自分に嫌気がさし、4か月前の7月頃からHTMLやプログラムの勉強を始めた。
本屋で立ち読みしたら、まずはHTMLを勉強する必要があると、書いてあった。同時にCSSを学んだ。
プログラムを作りたかったので、次にJavascriptをやった。
jQueryがすごい。「プログラムって誰でもできるんだ。」この時そう思った。
検索システムを作りたかったので、本屋に行ったらCGI/Perlの本がいっぱいあったので、Perlを勉強した。
しかし、HTMLテンプレートが使いたかったのでPHP+Smartyを勉強した。
作りたかったWEBサービスは大手サイトのデータの検索サイトだったので、自動でデータを集める必要があった。
PerlのLWPを勉強したが、データを集めた後に加工する必要があった。簡単そうだったRubyとMechanizeを勉強した。
Rubyはものすごくきれいにプログラムがかけることを知った。話し言葉に近い気がする。
プログラムを作っている時、最初は自分のパソコンの中でやっていて気付かなかったが、実際に公開するときはレンタルサーバーを使うというのを知って調べると、Linuxのサーバーが多いということを知った。
だから、今度は自宅のあいているパソコンにLinuxを入れた。
Linuxを入れたはいいものの、全く使い方が分からず四苦八苦してRubyのインストールをした。
世界中でメインで動いているWEBサーバーがApacheということも3か月前に知った。
Apacheの設定がテキストファイルなのも驚いた。cd,ls,vi,mv,cp,chmod等、基本的なUNIXコマンドを覚えた。
例の図書館の事件があったので、クローラーを動かすのをためらったが定期的にちょっとずつなら怒られないんじゃないかと、Crontabを勉強した。
自宅のサーバーが壊れてしまい、構築が大変だったので今度はVPSサーバーを借りた。
同じように構築はしたがかなり苦労した。このとき、始めてmakeというコマンドを使った。コンパイルというらしい。
クローラーが自動的にデータを集めていたが、動かし始めて2カ月目でデータファイルが1GBを超えていることに気がついた。
このとき、テキストファイルでデータを扱おうと思っていたが大きすぎて動かない。
最終的にデータ量は5GBを超えた。
11月も後半、本稼働用のサーバーを探していたら、丁度カゴヤがVPSサーバーのベータ版を募集していた。
すごく、快適です。まだベータ版ですが、本番稼動でも、50GBで900円という激安プランです。
http://www.kagoya.jp/cloud/vps/
ベータ版では、3つまでOSのインストールができます。もちろんそれぞれにIPアドレスが振られます。
このVPSにサーバー管理システムをインストールし、もろもろの環境も作って、11月末についに、公開。
AV女優をスリーサイズから検索できるシステム、「完全に一致」です。
類似検索機能付きで、2次元と3次元をつなげる夢のシステムです。はい。
真剣に作ったんだ。仕事をしながらよく頑張ったと自分をほめてあげたい。
----------------------------------------------
インターフェース:jQuery+selectToUISlider
-----------------------------------------------
サーバー上にある静的なHTMLは1ページもなく、mod_rewriteですべてPHPが処理しています。
一番大変だった事は、、、
このサイトのデータはDMM社のデータを使わせてもらったのですが、AV女優の顔写真をそのまま使うのは、肖像権的にNGらしく、AV女優の作品の中からその女優の顔が一番大きく写っているパッケージを使うことにしました。
しかし、女優データは約5万件。作品データは12万件。とても手作業でやるわけにもいきませんでした。
結局どうしたかというと、Face.com(http://face.com/)という、画像の顔認識ができるAPIを無料で提供しているサービスを利用しました。
同様のことができる、OpenCVというソフトがあるのですが、最初から付いているパターンデータでは人の正面の写真しか顔として認識しませんでした。
それに比べて、Face.comの認識精度は驚くほど高く、横だろうが斜めだろうがかなりの精度で顔を認識してくれました。
データをJSON形式で返してくれる(JSONもこのとき初めて知った)為、取得したデータを後で加工しやすかったです。
1.このAPIを使い12万件の作品データをすべてスキャンするプログラムを書く※1
2.顔の縦の長さと横の長さを取得
3.縦×横で顔の面積を計算
6.その女優の作品の中で顔面積が一番大きなパッケージ写真をその女優の顔写真として代用しました。※2
※1 APIの制限が1時間1000リクエスト迄だったので、これまたCronで・・・
※2 実際には女優テーブルと作品テーブルを繋ぐ中間テーブルのフラグをONにした。若干の間違いはあるものの、かなり正確に出ました。
長々と書きましたが、ズブの素人から約4ヵ月でここまで出来ました。
勉強する前、SEをやっている友人に話したら、「3年はかかるんじゃないか?」と言われましたが、できたものを見せたら褒めてくれました。
WEBサービスを作りたいと思っていて、技術がないからとあきらめている人は、とりあえずやってみてください。意外に簡単にできますよ。
あと、クローラーが動いていると、全能感を味わえるので楽しいです。
-----------------------------------------
19:30追記
サーバーソフトからアラートが上がって、見てみてたらなんかすごいアクセス貰ってまして。
>カゴヤの中の人乙wwww VPSといったらさくらかServersManくらいしか選択肢が無いのは現状当然の認識であるはずなのに!
カゴヤの人間じゃないですよー。広告してるつもりもないんですが、ベータ版だからかもしれませんけど、すごい快適ですよ。今は。
何よりタダなので。
本当に月額900円のまま本公開になったら、環境構築もめんどくさいのでそのまま契約しちゃうかもです。
>カゴヤはOpenVZだからなあ。俺としてはより自由度の高いさくらのVPSをお薦めしたい。
そうなんですか。2週間のお試し期間はつかったのですが、正直どっちがいいとかわかりません。
どんな風に自由度が高いんですかね?あと、アダルトOKなんですっけ?
>組み立てるプログラミングは本当に簡単だよ。 みんなで入り口を隠しているだけだよ。 #組み立てるだけじゃなくて、アルゴリズムを練ることが真のプログラミングかもしれない
サンプルプログラムの組み合わせで作ったようなサービスですので、プログラムのソースとかぐっちゃぐちゃです。
もともと、作ろうと思ったきっかけなんですけど、
椎名舞さんがですね、すでに引退しちゃってるんですよ。ずいぶん前に。
それで、検索エンジンで検索したんです。でも、なかなか出ないんですね。
欲望のままにやってたら、次から次に壁にぶち当たって、そしたらいつの間にかできました。
結果、このシステム使って椎名舞さんのプロポーションに似たAV女優を探すと、
雛乃つばめさんとか、果梨さんとか、佐伯さきさんとか既にDVD持っている女優さんばっかりヒットしちゃうんですね。確かに似てるんです。スタイル。
とくに最近の細い子は。
あ。デザインは、某企業をパk、じゃないリスペクトさせてもらいました。
-------------------------------------
23:55追記
寝てたらサーバーからアラートメールが携帯に飛んできておこされました!
こんな瞬発的なアクセスを考えていなかったので、とりあえず再起動しました。
-------------------------------------
12/4 01:45追記
何度再起動してもサーバーが反応しなくなるので、うぎゃーってなってたのですが、
親切な方が「MySQLサーバーが原因じゃね?デフォルトだろ?query_cache_sizeを設定したらいいよ。」とわざわざお問い合わせからアドバイスくれました。
設定してみたら驚くほどつながりやすくなりました!
同じSQLクエリーを保持してくれるらしく、実際にデータ検索を行わないので高速になるそうです。こんなの知らなかった。ありがとうございました!
プログラムはサンプルがあるからどうにかなるんですが、サーバー周りの事が全然わかりません。。。。ぐうぅぅ。。。。
おやすみなさい。
-------------------------------------
ブックマークコメントもらっていた事を別の日記で説明しました。
http://anond.hatelabo.jp/20101206224349
-------------------------------------
今更だが、はてブで http://www.atmarkit.co.jp/fjava/column/andoh/andoh53.html が人気だったのでまとめてみた。(末尾Eは英語)
まずはその記事にあった、16あるけど購読するべき15の開発者ブログ一覧(一部追加あり)
で、偏ってるんじゃないのとか、あれないよね、みたいなのとか、その時の http://reader.livedoor.com/ranking/hot.html とかから集めた、14しかないけど購読するべき15の開発者ブログ
あと、企業ブログじゃないけど、 http://reader.livedoor.com/ranking/subscribers.html から、これも購読するべき15の開発者ブログ
さらに、 http://gihyo.jp/dev/serial/01/alpha-geek にある、もっと購読するべき15の開発者ブログ
まだまだ、 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の開発者ブログ
あとは個人色強め、社会派、学者派、ビジネス派もある、これは好きにすべき15の非開発者ブログ
これ無いとかこれ違うとかあったらよろしく
RubyでうどんげQuine(とAA型Quineの作り方講座)
perl - Quine.pm で(ほぼ)あらゆるPerl Scriptをquineに
Ruby、Perlと来たら、次はもうPHPしかないでしょう。
そもそもQuineとは何か?Wikipedia先生にご登場願いましょう。
コンピュータプログラムにおけるメタプログラミングの一形態であり、自身の完全なソースコードだけを出力するプログラムである。
なるほど。
くくく。実はこの分野であればRubyやPerlなんぞ足元にも及ばない。
PHPはまさしく最強なのだ
a
なんと一文字!
$ php quine.php > q.php $ diff quine.php q.php
自身の完全なソースコードだけを出力するプログラム、ここに極まり!!!!!さすが天下のPHPだ!
汚い言語仕様や、高度なテクニックなど、必要ない!過程や方法なぞどうでも良いのだ!
・・・・・・・・・・・・さて、そろそろ本題に入ろう。
上記のPHPの出力機能を使わずにQuineプログラミングするにはどうするか?
Rubyは文字列の変数展開をしないし、Perlには文字列クォート記号を別の文字に指定することができるのでなんら問題なくQuineを実現できるが、PHPにはそのような機能がないので思ったよりも苦戦した。
<?php function a(){return'print"<?php function a(){return".var_export(a(),1).";}eval(a());";';}eval(a());
仕方なく関数の戻り値とすることで文字列変数展開を避けた。これ以外良い方法が思い浮かばない。ヒアドキュメントでなんとか出来ないかと思ったのだが、変数を展開しないNowdocという機能が、PHP5.3だったのでとりあえずパスした。それにそもそも関数を使うよりもコード量が減るのか甚だ疑問であり、結局この形に落ち着いたわけなのだ!
おわり。
そんなことは言っていない
『最近のWebシステムって、遅いことがあるよねperlにしろRubyにしろ・・・ という話題をすると・・・mod_perlは遅くないとか、lightyとかmemcachedとか いう返答が帰ってくるのにうんざりした。... 』
Webシステムが 根源的に遅いのか、速いのか そんなことは ではなく。
perlが遅いとか、Rubyが遅いとか、PHPでもJavaでもなんでもいいよ。 それが遅いだ、速いだ。あげくはHTTPがApacheだlightyだ memcached だmysqlだ。
他社が作ってる 又は 他人が作ってるOSSが作ってる ソフトの話をされることにうんざりした。
という話だ。
そりゃ、それぞれ、その会社がやることであって、貴方のところじゃないでしょと。 貴方のところのパートを速くするお話がしたいんだよと。
最近のWebシステムって、遅いことがあるよねperlにしろRubyにしろ・・・
という話題をすると・・・mod_perlは遅くないとか、lightyとかmemcachedとか いう返答が帰ってくるのにうんざりした。
その手のチューニングは、別に他のシステムでも出来るだろうと、比較する必要性がない。
外部パーツとして単純導入できるCPUの高速化なり、HTTPDの変更なり、memcachedなり、そんなもの提案してもらう必要性を余り感じない。
純粋に、お前のところのWebシステムは そういう外部要素なしに速いのか?って話だよ。単純に金で解決する感じの話をベンダーに聞く意味を感じない。他の会社にやらせたっていいんだから。
mod_perlが速いのはわかった。じゃぁ、mod_perlで3行ぐらいで書いたHello worldと比べて、御社のそのなんとかシステムで表示するHello worldは遅くなったりしてないんだよね?
でも、認証とか通してHello worldだすから遅くなるよね?
その、ベーシックな認証とか通す時間は 純粋にプログラマの腕に依存してくる。そこが速いのか?って事だよ。memcachedいれれば?そら、誰でも同じだ。御社だけじゃない。
某社の弊社が悪いんじゃないんです。memcachedが悪いんですにも、笑ったけど。
色々教えてください偉い人。
自分で考えろってのはご尤もですが、色々な方の意見が聞いてみたいのです。
・Struts(ver2じゃないほう)上でのJava(max2000行程度)
・perl(max7000行程度)
・c/c++(ちょっと)
・Haskell(ほんの少し)
・VisualBasic(.NETじゃないほう)(ほとんど忘れた)
・HTML/CSS(セマンティック厨)(HTML5は勉強中)(バイトでWEBデザイン経験有)
・javascript(簡単なものなら)
・MovableType(CMSとして利用。ちょっとした企業サイトレベルくらいのものの構築。簡単なプラグインの作成とかも)
・Apache(セットアップと最低限の設定くらい)
・Tomcat(同上)
・Linux(CentOSとUbuntu。セットアップとちょっとした設定程度)
・AdobeのDTP系製品(CS2)(雑誌編集経験有、ただし学生レベル)
・Oracle(10g)(Bronzeレベルの知識とちょっと触ったことがある程度の経験)
・postgreSQL(ちょっと触ったことがある程度)
・会計関連の知識(日商簿記2級)(大学で管理会計をかじった)
・数学系の知識(論理とか集合やらの基礎。大学で計算機科学をかじった)
・印刷物/WEBサイトのデザイン(独学だけどそれなりに。一般人よりはそれっぽいデザインが作れるかと)
5年以上ぐらい前にPerlのレガシーコードで書かれたcgiって駄目なプログラムのお手本だな。
1ファイル何千行もあるcgiで、一生懸命条件分岐や関数呼び出ししながらprintしてHTML作っていくやつ。
後から他人がレイアウト変更とか不可能に近い。
同じような処理(例えば掲示板だと新規書き込み、書き込み確認、書き込み修正など)があちこちに分散してて、全部探し出さないと変更できないとか。
俺が今作ってるWebアプリではSmartyなどのテンプレ使ってロジックとデザインの分離が当たり前なのに(ちなみにSmartyは分離がイマイチ、最近は他のを使ってる)、この時代にはそんな考え毛頭なかったんだね。
拡張子もcgiだったりplだったり。*.cgiでgrepしても出てこない処理のせいで半日つぶした。
が巡ってくるとは、その時は夢にも思わなかった。
俺はたまたまその事件現場に遭遇してしまったのだ。
「やめてください、お願いですから・・・」
哀願する派遣社員を取り囲むように
「さっさと社にもどれ!お前がバックレた時に消していったデータ復活させるんだよ!!」
と、3人のプログラマー。
「・・・やめないか、土方。」
思わず、口をついで出てしまった挑発の文句。もう後には引けない。
ならば・・・と、俺は左手で、懐からPHP逆引き大全を取り出す。
俺はすかさず、正面のKENT似の男の鳩尾に蹴りを叩き込む。
悶絶し、倒れるPerl Monger。
pythonistaの鼻の骨が砕け、昏倒する。
「10日でおぼえるPHP5入門エルボー!」 もう一人のサスペンダーの頭蓋骨を砕く。
一撃必殺。 一瞬にして、
俺を取り囲むように倒れ悶絶する壊れたプログラマーが4つできあがった。
「次からは、相手を見て喧嘩を売ることだな・・・。」
返り血で真っ赤に染まったPHPによるWebアプリケーションスーパーサンプルを拭き取りながらそっと、
「持っててよかった、基礎からのMySQL。」
誇張や事実と異なる表現がございます。ネタとしてお読みください。
特に関数型言語は全く触ったことが無いため誤っている可能性があることをご了承下さい。
while(i<10000)++i;
COBOL | バブル時代に銀行のCMにも出演したことがあるが現在はほぼ引退している。 |
BASIC | 一時期は誰もが知っている国民的アイドルだったが、現在はほぼ引退している。しかし昔からの根強いファンによって現在も一部で活躍中。 |
FORTRAN | インテリ層に大人気のアイドルグループ。 |
Brainfuck | アイドルの定義を逆手に取った誰も得をしない名ばかりアイドル。 |
PERL | もともとは活字メディアでの活動を主軸にと結成されたが、現在はネットで活動することが多い。 |
RUBY | PERLを真似た純国産のアイドルグループ。こちらも最近はネットでの活動が多い。 |
C | 今も現役で活躍する言わずと知れた国民的アイドル。しかし最近はJAVAなど後進のアイドルたちに仕事を奪われつつある。 |
C++ | Cのメンバーに加え、あらゆる属性の女の子を集めた超大型アイドルグループ。しかしあまりにマニアックなため、一部のファン以外はついて行けていない。 |
JAVA | C++の失敗を反省し一部のマニアックな属性を削った正統派アイドルグループ、初心者はJAVAから入ることを進められる。 |
C# | まっくろ社がJAVAのパクリユニットとして一度デビューさせたが太陽社に訴えられたため名称を変えた。しかし後進だけあり、女の子の質は高いと好評。 |
GO | 新進気鋭のぐぐるからデビューした新人アイドル、デビュー時は大きな注目を集めたがその後は期待ほど売れていない。 |
D | 他のアイドル達のいいとこ取りをした最強ユニットのはずが、未だメジャーになりきれないマイナーアイドル。 |
Objective-C | Cに新たなメンバーを加えたユニット。しかしC++ほどメジャーになれずそのまま消えるかと思われたが、出演した林檎の映画が大ヒットし延命した。 |
JAVA SCRIPT | 身近がモットーのネットアイドル。あなたも気付いていないだけで、いろいろなところでお世話になっています。 |
PHP | ネットアイドルとしてデビュー、物珍しさも手伝って人気になったが、女の子が明らかに寄せ集めと批判も多い。 |
LISP | 81が新人声優を売り込むために作ったスフィアのパクリユニット。おっぱいが大きい。 |
http://anond.hatelabo.jp/20100725025127
"どうすればいいか"を教わって、プログラミングが身につく人は多くありません。"なにをやりたいのか"を自分で生み出せないと、詰まってしまうし、なにより楽しくありません。
やりたいことがあれば手段は後からついてきます。これは物作り全般に言えることです。特に学び始めにおいてモチベーションを維持し勢いをつけるのに大事なのは"やりたいことがあるか"、もっと具体的に言うなら"作りたいものは何か"です。これがないと始まりません。それがどうしてもないなら、そういう状況に自分を追い込むのも有効です。仕事でどうしてもやり遂げなければならない状況に追い込まれれば人間 0 からでも身につきます。実際自分がそうでした。
とかく、プログラミングというのは手段さえ知れば、あとはだれがやっても同じ結果が出る生産業だと誤解されがちです。そういう認識で学ぼうとしても楽しくありませんし、本質を掴みにくいので応用が利かなく上達しにくいです。
本質は絵や音楽と同じです。言語を覚えるということは道具の使い方を覚えることでしかありません。音楽の理論や絵筆の使い方を知っているだけで、すぐに素晴らしい音楽や絵ができるでしょうか。殆どの人がそうは思わないはずです。プログラミングもそれと同じです。作りたいものがある人が圧倒的に強いのです。
んー、ここまで読んでも「やりたいことはないけどとりあえず勉強したい」というなら、すぐに動くものをつくりやすい言語がお勧めかなあ。
Google App Engine で Python をやるとか。 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 で刺激的な知り合いをつくるとかしていて、そういうところでめっちゃ差がつきます。
学校に行くなとまでは言いませんが、学校いかないで身に付ける人は本当に多いし、学校いって身につかない人も本当に多いということは考えて下さい。
元増田さんがどの言語をやれば・・という方だったので仕方なくこのような書き方になってしまいましたが、作りたいものが既にある人はあまり”どの言語をやるか”には拘らなくてよいと思います。
そんなことよりも、今必用で/気軽に/すぐ結果がわかることをやるのが、始めてのプログラミングには大事。だから本当は、どの言語をやるかよりも何を作りたいのかを先に見つけてほしい。
目の前の意外なところにプログラミングは生かせます。できるだけ身近な、すぐ効果がわかるところからとりかかった方がプログラミングの楽しさにはやく気付けるはず。
みたいな導入口でもいいんだ。
例えば C++ でのプログラミングを初心者が 0 からやるのは難しいだろうけど、既存のアプリケーションのプラグインなら開発のためのテンプレートや目的に近い作例があってコードも短いからそれを改造するところから始められる。需要があるから楽しいよ。
募集要項
・運営ツールの開発
求める経験
【必須経験】
・C/C++、perl、Ruby、Python、PHPなどを用いたプログラム開発経験
【歓迎経験】
C/C++, Perl, Ruby, Python, PHP全部使ったことあるよ!
PythonとPHPは仕事では使ったことないから微妙だけど。あとC++の言語仕様は完璧には把握できてないけど。
でもC/C++は商用のコンパイラを作るプロジェクトに参加してたこともあるしバッチリだよ。
Rubyは1.6の頃にインタプリタのソース全部読んだりしたけど最近の進化にはついていけてないかも。
【歓迎スキル】
・MySQL、PostgreSQL等のRDBMSに関する知識
このへんも全部あるよバッチリ。
そんなものは求められてないだろうけど、
RDBMSも3Dも仮に一から自分で全部作れと言われても簡単なものなら作れるレベルだよ。
しかし…
大企業から、中小企業まで、どんだけ、なんちゃってSIerがいると思ってんだと。
某ユニクロ様ですら、twitter事件でOAuth使えなかったんだぜ?
日本のITがどんだけかって話だよなぁ・・・orz すまん、泣きたいよ。
全角半角な・・・某有名Perlの人の全角半角変換が他の文字の中で文字化けする文字があって使えなかったんで
1から書いたことがあるんだが、文字通り50音テーブル書くだけなんで、チャラいよなぁ。なんで、やんねーんだろうな。
日本のSIerってそういう、やっても大して稼働食わないところは、断るくせに。
文章で書いたら1行でもテスト工数が莫大でものすごい大変みたいなところをあっさり受けて、デスマってたりするよなぁ。
ほんと、客もSIerもまともに見積もれない人が多すぎるよ。この国・・・こういうと、客が・・・見積りってツッコミがよくあるけど、
やっぱり、客にも客レベルってあるよ。
C言語を最初に覚えると、楽は楽だよ。変なクセがつかないから。
全てのC++はCに展開できるし、展開の原理を知っていると、C++でオブジェクト的に組みながら、アセンブラの展開とかを見ながら書いているらチューニングが楽。
メモリの事とかCPUリソースのことを考えずに書かれたプログラムって、チューニングに限界があるから、あとあと苦労する。
そういう意味では、Cから入ると、とっつきにくいが、あとあとまで、ちゃんと生きてくるよ。
今のところの言語のオススメはJavascriptだね。理由は簡単で
1 ブラウザがあれば誰でも試せる
2 ブラウザとの連携で絵や音を使ったサンプルを作れるのでつくっていて楽しい
という点。
さすがに、今時PerlでもRubyでもいいけど、絵や文字ばかりのサンプル作ってもCと同じで楽しくないから初心者向きじゃない
とりあえず、そのへんで楽しんでもらえたら、
プログラムの職人的なチューニングのところが気に入ったのならC/C++に転向すればいいし 机の上で理論や設計を楽しみたいならRubyやJavaをやればいいし
Web系のところが気に入ったのならPHPでもPerlでもいいかもしれない。
大切な事は、プログラムを楽しむこと。プログラムにもいろいろな側面があるので、自分がどういう側面を気に入るのか?というのを早めに掴むこと。
あとは、長く続けられるものを選ぶこと。
まぁ、言語は所詮道具だ。道具の良し悪しを言っても、釣りにバットを持っていくわけにもいかないから、釣りがしたければ釣竿を、野球がしたければバットを選ぶしかないわけで
目的にあった言語を選ぶための最初の言語は、気軽に選べばいいよ。