「Perl」を含む日記 RSS

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

2013-03-03

http://anond.hatelabo.jp/20130302011638

今回の騒動はperlおじさんも静的モヒカンもどちらも反省してないんだからどっちもどっちだと思う。(と書くと、なんで反省する必要があるんだと両者からマサカリが飛ぶのでどっちもどっち)

2013-03-02

http://anond.hatelabo.jp/20130302011638

なるほど、だからPerlの人もRubyの人もJavaC++を批判するんですね!

からプログラマ馬鹿ばっかだとか空気読めないとか言われるんだよ

一部で話題になってるこれだけど、投稿件数100越えてる割には、他のネット論争と比べて比較コメントが読みやすい。これについては、投稿してくる人も d:id:perlcodesample も余計なノイズ一言を入れずに投稿してくれているからだと思う。見習いたい。

にもかかわらず、ここを読まないでトラバ突っ込みを入れてくる奴は馬鹿ばっかりだから話は全然収束しないし。トラバ投げる奴は、ただ自分が気持ち良いエントリを書きました、って話しかしてない。

d:id:perlcodesample は「perlだとスカラーも各種リファレンスも全部 my $var って書くだけで受けることができる! 楽!」って話しかしてない。(そこから派生する色んな"利点"については「お前がそう思うんならそうなんだろう、お前ん中ではな」レベル主観だらけなので"インデントをスペースにするかタブにするか論争"のように対話しても万人に納得のいく結論は出ない)

そう言う話に「そんなことをしてると(あらかじめコンパイル時にチェックが入らないから)後から大変なことになるぞ!」ってツッコミが入り、それに対して「後から大変ってどういうことですか? どうせ全部テストするんですから(コンパイルを行った時点である)最初から大変なのも、(プログラムテスト実行した)後から大変なのも、大変度合いの総和は大して変わらないでしょう?」というあたりで止まっている。

この d:id:perlcodesample の主張は、(本人にとっては)暗黙の以下の前提がある。

  1. (perlで言う)すべてのモジュールにある全サブルーチンに対して、全パターン自動ユニットテストが用意されている(されるべき)
  2. モジュール間の結合試験についても、全パターン自動ユニットテストが用意されている(されるべき)
  3. コンパイル時のエラー検出&修正コスト」と「(コンパイルエラーにならないため発生する)ユニットテスト実行時に検出されるエラー&修正コスト」はほとんど等しい。
  4. プログラム品質保証する根拠のほとんどすべてはテストである

この前提のどれかに無理があることを直感的に示さない限り、この対話は終わらない。

2013-02-28

http://anond.hatelabo.jp/20130228002211/

個人的にはPerlの後継がPythonRubyPHPに枝分かれしたことの方が100倍は苦痛なんですが…

あ、記事の内容については、最後の行を除いて同意です。PerlCOBOLみたいな生き残り方をするよ。

ついに顕在化しはじめた「Perlリスク

英語圏ではかなり前からPerlで開発し続けることのリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ日本でもそう遠くない未来だと思う。

若手エンジニアの不足

Objective-Cのように需要が逼迫しているのに人材供給が増えず需給ミスマッチが起っているわけでは無く、需要供給も減るという状況下でわずかだが需要が上回っているとう性質の悪い状況がPerlに起きている。特に深刻なのは安価な若手エンジニア採用絶望的に難しいという現実だ。Rubyが台頭して数年経ちPythonメインストリームの先頭を突っ走る2013年において新しくPerl勉強しようとする若者はよほどの物好きしかいない。30~40歳Perlエンジニアを雇うのはそれほど難しく無いだろうがコストがかかる。安価20代前半の若手エンジニアを雇いたいという企業の思いとは裏腹にPerlを新たに学ぶ若者絶滅寸前だ。

とても優秀な若者雇用できるチャンスが巡って来た。採用担当者はこう尋ねる。「Perlは習得していますか?」「もちろんC/C++/Pythonはお手の物です。Javaもある程度可能です」「もう一度伺いますPerlは習得していますか?」「申し訳ございません 未習得です」

悲劇だ。

イノベーションの枯渇

もう何年もPerl界隈で新しいモノが生まれたと言う話を聞かない。こんな事を言えばPerlハッカー激怒するかもしれないが、しか現実RubyPythonJavaに比べればこの10年の間にPerlから生まれたものは微々たるものだ。何かしらのライブラリにしてもwebフレームワークにしても、ハッカーが新しいモノを試す土俵はいつもPythonRubyJavaが選ばれて来た(もちろんC/C++もね)。

もはや彼らがPerlを選ぶ理由はただ一つ「今Perlで開発しているから仕方なく」

最低の理由ではないだろうか。

10年前にPerlで開発していた企業最先端を走っていた。迅速に自らのアイディアを具現化するツールとしてPerlは最適だった。それが今やどうだろう。自分たちの書いたコード保守し続けなければいけないという理由「のみ」でPerlを使い続けている。他に理由など無い。Perlで開発する理由は自分たちの過去仕事保守しなければならないという理由のみだ。

控えめに言っても、そういう企業未来は無いと思う。過去とは決別し、10年後の自分たちにとって最適な選択をすべきだ。今すぐにだ。本当に手遅れになる前に。

2013-02-20

天然だとしたら貴重な物件

http://d.hatena.ne.jp/RepsolFireBlade/20130220/1361332690

それだけ、PHPって流行っている言語で、この問題も注目されているってことなのね。まあ、言語としてPerlよりはマシだと思うね。ってか私Perlいかも?しかPHPにも型がないところが嫌いなんだけど。

 世が世ならこの破壊力は大きかった。

C系の構文を採用する言語の中でPHPけが左結合などという非常識仕様採用している。そもそもCを真似して作ったのに、ここだけ「間違えて」実装しちゃったとしか思えない。で、それを後から仕様だ!」って言い張っているんだろうなぁ。大人げないねぇ。素直にバグだって認めれば良いのに。実装のバグじゃなくて仕様バグね。言語仕様として「三項演算は左結合です。」って言ってしまえば、その実装は正しい。私が言っているのは、仕様バグ。つまり仕様です、そう決まってます、と言っていること自体が間違っている。どう考えたっておかしいでしょ?

 普通、色々書けば書くほど説得力は増すのだけど、書けば書くほど説得力が抜けていく。

あっちこっちで、ネタにされていた中に「今さら言語仕様変えるなんて、後方互換性はどうなる?」なんてのがあったけど、そんな非常識プログラミング存在しないだろうから問題ないと思う。その前に、後方互換性って今や死語じゃない?

 C++11先生まじぱねーっす

いずれにしても、昔のプログラムを救うことを考えるより、今後も続々と増えるであろう「C系の言語から入ってくる人」を救うことを考えるべきだね。

 それじゃ、とりあえず読みやすソースコードを残して頂けると大変助かります

 このおっさんがすべき事は、このおっさんがどんなネストを書いてしまったのか、そのPseudo Codeを晒すこと、ただそれだけ。

プログラマと名乗るな!

Perl好きだ、Ruby好きだ、でも一番長くはPHPかなー」とか言って自分は出来るエンジニア気取ってるのに、githubも知らないし、ラリー・ウォールもミヤガワもまつもとゆきひろもラスマス・ラードフの名前を言っても「誰それ?」って顔するならプログラマを名乗るな!

2013-02-15

オープンソースアプリ無料で利用できるホスティングサービス

始めました。

http://www.plagnet.com/

今のところmovabletypeが利用できます

評判良くなければ停止するかもしれませんが、MTブログ書きたいけど無料の所ないかなーとか、セットアップめんどくさいーって人にお勧めです。

なんでwordpressじゃなくてMT? perlが好き。

テンプレとかプラグインとかデフォルトのままです。

2013-02-11

http://blog.livedoor.jp/dankogai/archives/51115134.html

もっとも、私がshell scriptを新たに書き下ろすことは滅多にない。Perlで全部書いた方が簡潔だしポータブルから。それでも、shell scriptとつきあわない訳には行かない。書き下ろしではなく書き直しという需要があるからだ。/etcの下を覗きたかったら、shell、それも/bin/shの知識が必須になる。本書は「shクックブック」としても使えるように書かれていて、今までshell scriptの構文を忘れては(ex. 「あれ? if を閉じるのっって fi だったっけ endif だったっけ?」) FreeBSD の /etcの下をカンニング帳がわりに覗いていた私には実にうれしい一冊だ。

if..fiのためだけ?

これはほとんどけなしているように見えるんだがw

2013-02-07

黒歴史原体験

IT土方自分が初めてプログラムなるもの体感したのは、中学校の授業だった。

当時は5インチフロッピーが主流のパソコン上で、BASICを走らせたらそれが妙に面白くて、時間を忘れて夢中になってしまった。

原体験というのは恐ろしいもので、今振り返ってみればそのときの体験が、その後の人生に計り知れない影響をもたらしたわけだ。

例えるなら、あやとり拳銃早撃ちに目覚めたのび太感覚だろうか。

開発者社会的地位は「コード書けるだけで何が偉いの?何が凄いの?」という微妙ポジション(国家資格でもコード書き方面の高度区分は組み込みだけというのが現状をよく表している)で待遇微妙だが、それでもプロコード書きは自分にとって天職だと思うし、そうなってしまったことにあまり後悔はしていない。

山下清じゃないけど「まあ仕事だしな」で過ごしたり過ごさなかったり。コード書き以外は何をやっても全然ダメだけど。


とまあ、これだけで終われば満更でもない思い出話なのだが、正直、初めて触れた言語BASICだったことは、自分にとって黒歴史でもあったりする。

かつての自分と同じようにBASICプログラムに興味を持った人に「あんなのはダメ」と頭ごなしに言うつもりはないけど、もしBASICのBの字も知らない人であれば、今ならPythonRubyを、Linuxとセットで勧めると思う。

気がついたらCもJavaPerlもこなし、いつの間にかアプリシステムプログラミング経験していた自分からすると、それくらい、BASIC言語として拙いというのが実感なのだ

色々問題はあるんだけど、一番はプログラムに対するスタンスを誤解してしまう所。

あれを最初にやると高確率で「プログラミングなんて、その場で出来る範囲で適当に書いときゃいいんだ。なんつってもノリが大事なんだから、うるさいこと言って神経取られちゃダメだ」という恐ろしい考えが身についてしまう気がする。

だってかなりいい加減に書いても、それなりに動いちゃうから。人は大抵易きに流れるので「これでいいのだ」になるのが自然というか。

更にこれがVBだったりすると、MSの用意した機能だけしか使えない人になるだろう。もっとヤバい気がする。


ともかく自分はそうやって身についた悪習慣が祟って、折角大学で習った知識はまともに身につかず、就職後にOJTを通して自らを叩き直すハメになった。

勿論これは自力じゃなく、当時のメンターの驚異的な忍耐力を以てなされたことであり、今でも頭が上がらない。

全く遠回りをしたもんだと思う。

今でも周囲のVBしか業務経験ない人のコード品質は基本的に低い。某掲示板ではVB厨という言葉があるらしいけど、そういう蔑称も仕方ない気がする。

まあ自分場合、当時はBASIC以外の教育用言語といったらPascalくらいしか無かっただろうし、振り返ってどうにかなるもんでもないし。


それでも「自分最初に触れたのはBASIC」とは、恥ずかしくて中々言えなかったりする。

2013-02-06

もしプログラミング初心者新人に基礎教育を施すなら

オープン系のデスクトップアプリ開発、Webプログラミングシステムプログラミングを仕事にする人向けとして考えてみた。

学習環境Ubuntu Linuxで、デスクトップ上のターミナルか、WindowsからTeraTermsshログインして行うことを想定。

なので前提知識としてLinuxabcくらいは教えておくとして、もし来年度やるならこんなもんかな。

結構分量多めだけど、これでも基礎の基礎に絞った感じ。


  1. Pythonで学ぶ手続き型プログラミング
  2. Javaで学ぶオブジェクト指向
  3. C言語で学ぶメモリの仕組み(主に配列ポインタ構造体関連)
  4. Perlで学ぶ文字列処理(正規表現ハッシュCGIを含む)

おまけ:Pythonで学ぶ関数型プログラミング


なお、上述のカリキュラムでやらない言語(VBjavascriptC++Objective-CC#PHPRubyなど)やWebフレームワーク(DjangoRuby on Railsなど)は、全てこれらの応用で覚えられると思うので、基礎教育終了後に各現場にてOJTで習得してもらう。

IDEも使わないけど、はじめの一歩で軽量エディタ+コマンドラインをやり込んでいれば正直どうにでもなるので省略。

あと最後がおまけ扱いな上にLISPで学ばないのは、要するに「リストすげー!超すげー!!」という感動を胸に今後も頑張ってもらうのが狙いなので(だって現状使う機会殆ど無いし)、最初にやって一番手に馴染んでいるツールで、理解のコアになる部分にサクッと触れて欲しいということ。


ちなみに来年度、自分教育係になる可能性は今のところ無い。

2013-02-05

http://anond.hatelabo.jp/20130205110156

Perlのものダメというよりも、環境を選ぶからではないかな。

安いサーバだとPHPは動くけどPerlダメとかよくある(これはPerl流行らなくなったからかもしれないけど)。

mod_perlよりもmod_phpの方が簡単に動くとか。

CGI化しないことでセキュリティ的にもパフォーマンス的にも上とか。

言語的な点でいうと、PHPの方がDBアクセスが簡単って事とかかな。

http://q.hatena.ne.jp/1255873841

Perlそんなにダメかなあ

言語なんてツールの一つに過ぎないし、ツールなんて適材適所という前提で書いてみる。


PerlC言語Javaとともに、自分にとっては原点とも言うべき言語で、今は全く使ってないけど、昔はとてもお世話になった。

今更書くまでもなく文字列処理やハッシュが強力で、あんな便利なものはないという感じ。

少なくともPerlのないLinux/UNIX環境なんて死ぬほど使いにくいだろう。というか実質不可欠だろう。

書きやすいけど読みにくいのが玉に瑕で、間違っても最初に覚える言語ではないけど(書き散らかすクセがつくので)。


でもPerlは、C/C++バリバリ古参プログラマでは嫌っている人が結構多い。なんでかなあ。

最近ではPHPPythonなど、Perl以外のLLから微妙な感じで見られている。

確かにCでも文字列処理は可能だけど、Perlに比べたら機能的にとても貧弱だし面倒。だからちょっとした作業なら間違い無くPerlのが楽。

PHPWeb方面ではPerlより手軽だし、Pythonシンプルかつ見た目もスッキリ初心者には一押しなんだけど、それでもPerlの書きやすさにはまだまだ及ばないと感じる。


というわけでC同様、今でも決して色褪せないし、これからもあって欲しい言語なのだが。

2013-02-04

http://anond.hatelabo.jp/20130203154719

今時のパソコンをいきなり与えられた人(普通はそうだけど)は、そもそもポインタなんて機能が何故必要なのか理解できないと思う。

JavaとかPerlとかVBとかは、扱いたいデータを直接切り貼りするだけでプログラムとして成立するし、それで十分なわけで。

そのレベルコンピュータの仕組みや、メモリの使い方を理解する必要性は、普通は全く感じられないからね。


それにポインタ意識しながらプログラミングするというのは、前述の演算必要データ構造に加えて、メモリ管理上のデータ構造も扱うという、2重のデータ構造を考えないといけない。

これはプログラム初心者には全く想像できない領域だし、そうそう簡単な事じゃないと思うわ。

ましてやC言語の*pとp[]の交換性が、基本環境依存データ型のバイト長をいちいち把握しながらポインタ演算してアクセスなんて面倒でしょうがいか結構必須とか、そもそもポインタ演算を使いこなせればハードリソースビット単位で搾り取れて、それをアセンブラよりはシンプルかつ抽象的に実装できるC言語は非常に効率がいいとか、まず理解不能でしょ。

そんなことが必要な分野が世の中にはあるという現実すら知らないだろうし。


尤もマイコンキットから入って「メモリデータをロードして、そのデータメモリ上の格納場所CPUから分かるように(ry」というアプローチなら、ポインタを使う以外に方法が無いので嫌でも覚えるだろうけど。

2013-01-23

SI土方からWeb行ってみます

試験業務中心だった。

その中でもシステムテストとかやったりしてるのでネットワークサーバーアプリは商用の状態に近い環境試験をしている。

具体的にはサーバーはLB使って冗長化/スケールアウトされていたり、クラスタリングされていたり、データセンターにあるサーバーリモートログインして試験をしたりとか。

rebootコワイヨーとかHW障害うざいよーとか思いながら。

ソフトウェア受託開発の会社で、Javaの業務アプリ設計・開発・試験していた様な人達が集まっているので、ネットワークLinuxなどアプリよりは低レイヤなところに詳しい人が地味にいなかった。

システムテストの項目書をExcelで作るお仕事や、試験実施するお仕事は凄くやる気しなかったが、試験実施方法検討するお仕事や、試験をするための環境を構築したり、仕様書を読んでミドルウェアアプリコンフィグを投入する仕事は楽しかった。コンフィグを投入する作業をスクリプト怠惰自動化したりするのは、けっこー楽しかった。

リグレッションテストや、バージョンアップでの改修テストなどで環境を再構築する際に、作成した自動スクリプトは腐らさせずに誰かに展開することが出来たので、自動化した工数無駄にはならなかった(ちゃんと効率化に!)大量にデータを投入するとき、さすがにだるい。ツールも使えば使うほどバグなくなるし良い感じ。PerlBashを覚えるきっかけにもなるし。

今思うと出向も楽しかった!メーカーSI会社社員食堂とかあったので、うわすげぇドラマみたい!とか朝はエレベーターの前に人が並ぶのでうわすげぇ人多い!とか。(最初だけだけど)

後はサーバー室でサーバーとかLBとかを目の前で見れたのがテンション上がった。うわこれF5じゃね?うわこれJuniperやん…いくらすんだよ…HPブレードサーバーだ!いくらするのかググった。

まぁ、普通に誰も興味示さないw あの時は商用ネットワーク機器という物に憧れている少年だったw

作業で疲れたときはぶらぶらして眺めてた。

何かの見学の時は「おいふらつくな」とか誰かに怒られそうだけど、仕事で来てると誰も何も言わないので見たい放題。転んでケーブル抜いた日には大問題になりそうなので、さすがにそこは気をつけた。

あの1UサーバーRHELインストールするとか、少年には楽しすぎた。でも手順はMacVirtualBoxCentOS入れるのと変わりはなかった…。ただ、仕事として1UサーバーRHELインストールした、という経験を持つことが嬉しかった(少年から

でもいいさ。

F5なんか使わずLVSやUltraMonkey-L7で負荷分散すればいいし、商用のアプライアンス機器なんか使わずオープンソースで解決してしまおう。AWS使うならELB使えばいいし。そういう環境行ってみようぜー。

2013-01-20

http://anond.hatelabo.jp/20130120143950

パッケージ管理システムが無いのが不便すぎる

・まぁ同意、ただ逆にいうとパッケージ管理しなきゃ維持できないMacがクソとも言うw

環境がうまく入らないことがしばしばある。Perlか何かがどうしても入らなくて詰んだことがある

・それはお前の入れ方が悪いだけじゃね?Macの方がバージョンで動かねーことがザラ

解像度ディスプレイに対するフォント等の対応全然ダメ

・これは同意、まぁ最近のはマシだが

grapherみたいな便利ツールがない

texなんてすでに”通常使用”じゃない、フリーで入れてろw

tex周りの環境macの方が圧倒的に便利(MacTeXやLatexItとかが便利)

・同上

powershellとかナメすぎだろ

・覚えれば~?w

http://anond.hatelabo.jp/20130120125652

2013-01-04

素人が完全自作SNSを作ってみてわかったこと。

ひっそりと、Webサービスリリースしました

http://tag-chat.net

で、チャットがメインのSNSです。

自動マッチングしてチャット相手を見つけてくれるマッチングチャットや、すぐにチャット相手を見つけてくれるフリーチャットコミュニティチャット、フレンドチャットなど、とにかくチャットがメインのSNSです。





自分について

昨年の4月からプログラムを学び始めた素人。22歳。札幌在住。





■今更SNSを作ろうと思ったきっか

FaceBookがウザい。というか嫌い。

これがきっかけ。

顔本が良いSNSだと話題になっていたので、実名登録してみた。大学の知り合いが見つけてくれて、友達登録などが増える。(ほとんど話したことがない人から友達登録が来て、「おぉ!これで俺も友達が増えるんだ!」とワクワクしていた)。

が、流れてくるのは自慢ばっかり。

コミュ障彼女はおろか、女友達ほとんどいない自分にとって顔本で「飲み会行ってきたぜウェーイw」とか、「○○ちゃんの誕生日なう!」とか、「○○勉強会行ってきたました! みんな熱い人ばっかりで最高!」とか書いてあるのを見て「こんなSNSは嫌だ……」と思った。


ようするに嫉妬です。

で、自分の好きなようにSNS作ってみたいなぁ。と思いました。

自分趣味レトロゲーなので、自分と同じ趣味の人と話せたら素敵だな。ということでチャット式のSNSを思いつく。

が、Webサービスを独力でつくるのはこれがはじめて。というより、プログラム自体がはじめて。

案の定、前途多難だった。

やはりザッカバーグは天才だった。

そして私はアホだった。

■とにかく計画を立てる。

ざっくり、どんな機能が欲しいか考える。自分の力じゃ無理そうでもOK.とにかく妄想を爆発させる。

妄想した機能

・基本的なSNS機能

メッセージ機能コミュニティ機能あしあと機能日記機能コメント機能つぶやき機能など。

・核となるチャット機能

ミニティ専用のチャットルーム、アカウント専用のプライベートチャットルーム(鍵をかけられる)、自動チャットが開始されるフリーチャット自分の指定した条件にあう人を自動で見つけてきてくれて、チャットができちゃうマッチングチャット

などなど。






■そんなに簡単にSNSが作れるわけがない。

妄想するのは簡単だ。でも、全くわけがからない。何から手をつけていいのかわからない。

とりあえずグーグル先生相談

OpenPNEという簡単にSNSが作れるものがあると知る。

「うはwwww これで勝つるwww」と思ったけれど、どうやってチャット機能を追加して良いのかわからなかった。改変しようにも謎の記号がめちゃくちゃにならんでいてどうして良いかからない。

しかも、改変したら改変したでそれを全世界に公開しなくちゃならないらしい(オープンソースというらしい)。

無理だ。

と思ったので1から勉強することにした。

とにかくサーバーサイドの言語と、データベースについて勉強しろや! とのことだった。






■使う言語について。

サーバーサイドを扱える言語はたくさんあって、PerlとかPHPとかPythonとかRubyとか色々あるらしいのだが、色々悩んだ結果


PHPにした。WebサービスならPHPが良いらしい。レンタルサーバーなどでも簡単に扱えるらしい。

後でPHPがクソ言語という話も聞いたが、とにかく最初に選んだのがPHPだったので。

それになにがクソ言語かとか、未だによくわからない。






■入門の勉強で使ったもの

PHP 

よくわかるPHP教科書http://www.amazon.co.jp/dp/4839933146/

MySQLとかについて一通り書いてあるので良かった。二週間くらいでなんとか全部こなした。xamppなども触って、ローカルサーバーで色々試した。

これが終わったら、

パーフェクトPHP http://www.amazon.co.jp/dp/4774144371/

パーフェクトって書いてあるから、パーフェクトなはずだと勝手に思い込む。

実際かなりすごい内容で、胃もたれ起こした。一ヶ月くらいで三回くらい読んで、大体のところを理解した。

フレームワークCakePHPを使ったので、MVCについてのくわしい記述は大変参考になりました。



MySQL

基本的には、よくわかるPHP概要をつかんで、それから

基礎からMySQL勉強。 http://www.amazon.co.jp/dp/4797344385/

最期

ハイパフォーマンスMySQL http://www.amazon.co.jp/dp/4873114268/

インデックスの貼り方などについて勉強した。






チャットに向いている技術

とりあえず掲示板くらいはつくれるようになったので、チャットについてリサーチ

ajaxとかよくわからん技術nodejsを使った非同期処理などがあると知る。

nodejsはC10K問題という問題を解決するすごいものらしく、かっこいいらしいのでこれを勉強することに。

ついでにnodejsと相性の良い、mongoDB勉強することに。







javascript勉強

よくわかるjavascript  http://www.amazon.co.jp/dp/4839941874/

終わったら、

パーフェクトjavascript http://www.amazon.co.jp//dp/477414813X/

パーフェクトjavascriptnodejsについてものすごく詳しく書いてあったので、とても参考になった。このあたりで、LINUXというOSを扱わなくてはいけないと気付き、自宅PCウィンドウからLINUXubuntu)に変えた。


mongoDB勉強

これはとにかく触ってなんぼでした。MySQL感覚が違い、苦労しました。

CakePHPmongoDBを扱うのは

https://github.com/ichikaway/cakephp-mongodb

という素晴らしいものを利用させていただきました。




■このへんで一回限界がきた。

なんとなくnodejsを扱うこともできるようになり、それなりに楽しいと思ってはいものの、「SNS作ったる!」と思ってから六ヶ月以上が経過していた。

さらWebサービスを公開するにはデザインもそれなりにしなくてはいけないらしく、CSSなどについて勉強しなくてはいけないと知る。



勉強に終わりが見えなくて、「しんどいなぁ」と思った。

一人でWebサービス作ってる「ゆーすけべー」さんとかすごいなと思った。

勘違いサブカル野郎だと思っていた「家入一真」とかもやっぱりすごい人なんだと思った。

自分はなんもできないなぁ。と痛感した。



で、悩んでても仕方ないので、デザインはバッサリあきらめることにした。


もうなんでもかんでもやるのは無理なので、捨てるものは捨てることにした。

■それなりのデザイン他力本願で。

基本的に Initializr  http://www.initializr.com/  (テンプレートエンジン

TwitterBootStrap   http://twitter.github.com/bootstrap/  (Twitterっぽい今時な感じのデザインが簡単に使える)

を使うことに。

でも、これだとまさにTwitterそのまんまっぽかってので、

http://bootswatch.com/ (きれいなデザインテンプレートがあるサイト

も使うことに。デザインについてはこれだけ。

無理はしないことに。



■大体できたら、あとはセキュリティ

セキュリティ大事自分サイトでは一応、登録制なのでフリーメールアドレスなどを預かる。これは流出させたら困るし、なによりユーザー様が安心して使えないなんてだめなので。

これにはかなり注意したつもりです。

まず基本的なことは 『体系的に学ぶ 安全ウェブアプリケーションの作りかた』  http://www.amazon.co.jp/dp/4797361190/

勉強

本番環境に公開する前には グーグル先生が公開している skipfishというツールでチェックをしたり、

Dos攻撃対策に、

http://up-point-server.info/?p=54

などに書いてある

mod_dosdetector などを利用。

これははてなさんが公開しているものです。この場を借りて感謝します。ありがとうございます

あとはSSHへのブルートフォースを防ぐために、DenyHostというツールを利用するなどした。



それからバックアップ

クラウドサービスを利用しているので大丈夫だとは思うのですが、一応rsyncコマンドバックアップを定期的にとることに。

サーバー上の別の場所Gzipで保存し、それを自宅サーバーのCentOSで保存するという形式です。深夜にcronで自動的に実行しています

参考サイトは、

http://mukaer.com/archives/2012/03/14/vpscentos/

です。


パフォーマンス向上のために少しだけ

はじめはサーバーapacheだけだったのですが、今は画像ファイルなどはNginxというサーバーを使うのが良いそうなので、Nginxを使いました。

あとはPHPの中間キャッシュを利用するAPCなども利用することに。


このへんについては、

http://bren.jp/blog/%E3%81%95%E3%81%8F%E3%82%89vps%EF%BC%9Anginx-apache-%E6%A7%8B%E6%88%90%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95/

このような解説記事がたくさんあったので、参考にさせていただきました。

調子にのって、最期グーグルアドセンスも貼ってみました。




■ようやく完成。

で、なんとか完成しました。

いちおう妄想していた機能は実装できたかと思います

製作期間は勉強期間なども含めて、大体9ヶ月くらいです。

使ってみた感想や、ダメ出しなど頂ければ狂喜乱舞します。よろしくお願い致します。









モチベーションを維持するためにやったこと。

あっさりと書きましたが、実際は失敗の連続でやる気が萎えてばっかりでした。

疲れて帰ってきて、なにもやる気の起きない時もありました。


そういう時は、とにかくサポートページのQ&Aの1文でも良いから書いてみるとか、とにかくパソコンエディターだけ立ちあげてみるとか、していました。

ものすごーく覇気のない目でキーボード打ち続けていましたが、それでもなんとか完成することができました。惰性だろうとなんだろうと、少しずつは進むのだとわかりました。

SNS作ってみたわかったこと。

やはり1から完全自作をするのは無謀だった。でも、プログラムをやったことのない素人でも約一年頑張ればそれなりのSNSもどきを作ることができた。

これも先人たちの作ってくれたフレームワークや様々なツール、そして参考書などのおかげ。

私のようなアホでも頭の良い人の力を借りればなんとかなりました。ありがとうございます

そしてプログラムは一人でも出来るので、私のように非コミュでも楽しめる素晴らしい趣味である

現在

今はRubyに夢中です。くり返し処理がすごくきれいにかけるので素敵な言語だと思っています。あと、javascript面白いので毎日いじくって遊んでいますPHPももちろん触っています

非コミュあいかわらずですが、プログラム楽しいので前より幸せです。


仕様した技術など一覧

サーバー さくらVPS4Gプランを使用しています

Apache,Nginx,nodejsを利用しています

データベース mongoDBMySQLを使っています

フレームワーク CakePHP,socket.io

使用言語 PHP,Javascript

できたもの http://tag-chat.net

2013-01-01

全てのwebエンジニアPython勉強するべき2013年到来

 

あけおめ!今年は巳年。へび。へびと言えばPython。そう今年は全てのwebエンジニアPython勉強する最高の環境が整った年なのです。

 

既にPerlRubyを習得してるけど、それに加えてPython必要

必要です!必要だと思います。もはやPythonwebエンジニアにとって必修言語となりつつあると思いますLinuxの多くの箇所でシステム言語として用いられ、可読性の高さから多くの技術書籍のサンプルコードとして用いられ、科学技術系分野におけるエコシステムの充実っぷりはますます磨きがかかっており、様々なライブラリがどんどん出てくる現状を「Pythonからいか自分には関係無い」と遠巻きに眺めるのはもったいないです。

 

習得するのにどのくらい時間かかるの?

あなたが既に他の言語に慣れ親しんでいるなら、特にRubyなどに精通していれば「1週間」で基本的な読み書きは出来るようになるでしょう。そのくらいPythonは敷居の低い言語です。またweb上のチュートリアルドキュメントが大変に充実していますので(もちろん和訳済み!)費用0円で勉強開始できるお手軽言語でもあります

 

バージョン2系と3系のどちらをやればいい?

これは大変に悩ましい問題で、自信を持ってお薦めできるバージョンが無いのが残念な現状です。2系と3系は特に文字コード周りを中心に言語体系にそれなりの差があり、日本語を扱うエンジニアにとっては悩ましい問題です。結論としては「どちらも読み書きできる」ようにした上で「3系で書く」ですかね。2と3の違いを理解しておかないと必ずどこかで躓きます特にweb上の情報はまだほとんどが2系ですが、ぱっと見て2と3のどちらのバージョンで書かれた情報なのかを判断できないと多くのweb上の情報を利用できずにもったいないです。

 

お薦め和書は?

先述しましたが和訳済みのチュートリアルが充実しているのがPythonの特徴でもありますので、まずは目を通す事をお勧めします。

・2系ドキュメントTOP

http://docs.python.jp/2/

・3系ドキュメントTOP

http://docs.python.jp/3.3/

・公式ドキュメントでは無いがお薦め(少し進んだトピックが中心)

http://www.doughellmann.com/PyMOTW-ja/contents.html

ぜひ超充実したドキュメント群を覗いてみてください。「チュートリアル」を読めばだいたいの言語仕様がつかめるはずです。「ライブラリリファレンス」はあなたの最高の辞書となるでしょう。

その上で、やっぱり書籍勉強したいということでしたら以下の本がお薦めです。

プログラミング自体が初めての人向け

Pythonスタートブック(辻 真吾)

・他言語を既に知っている人向け

みんなのPython 第3版(柴田 淳) ・・・2版と3版で大きく内容が異なります 2版はPython2系、3版はPython3系を中心に解説

・進んだトピックを扱う中級者以上向け

エキスパートPythonプログラミング(Tarek Ziade/和書)

 

IDEで楽したい

pythonはインデント存在があるので無機能エディタで大規模なコードを書くのは案外骨が折れます。贅沢系IDEの代表格はPyCharm(有料$99)でMac,Windows,Linuxの3プラットフォーム対応しており、一つのアカウントでいくつものマシンインストールできます(同時に使う事はできない)。30日間の無料トライアルもありますトライアル期間が過ぎても一回あたり(たしか)5分ぐらいなら継続して使えます無料IDEだとEclipseプラグインNetbeansあたりでしょうか。Netbeansは公式開発は既に終了しておりあまり安定していません。

 

色んなライブラリなど

ここからは雑多に箇条書き風にお薦めしていきますね。

webフレームワーク

大規模な開発ならDjangoが第一候補。歴史が長いフルスタックフレームワークですがまだ正式版がpython3系に対応していない。最近勢いがあるPyramidは3系に対応済み。各webフレームワークについては各開発者同士が「筋が悪い」「Pythonとしておかしい」「トレンドから3年は遅れてる」などとガチンコで思いの丈をぶつけ合っている以下の記事も参考にしてください。http://www.atmarkit.co.jp/news/201209/24/pycon.html

とりあえず最低でもDjangoPyramidは両方使ってみてから自分にあった方を選択するといいと思います

・Numpy/Scipy

科学技術系の人が好んでpythonを使う理由の一つがNumpy。数値行列計算を内部でCを使って計算するために非常に高速。インターフェイスは書きやすpythonだけども実行速度はCネイティブ並みというとてもありがたいライブラリです。現在Pythonの盛り上がりに間違いなく大きく影響しているライブラリ

・nltk

言語処理で使われるライブラリ英語ベースとなってますが工夫すれば日本語でも全然使えます。参考文献 http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html

・multiprocessing

並列処理ライブラリCPUマルチコアを全て使い切って無駄無く高速に処理を行いたい時に重宝します。個人的に大好きなライブラリ。頑張ればちょっとした分散並列システムも作れます。このライブラリのお陰で自宅にある10台*(擬似)8コアでお手軽python並列処理クラスタを30分ぐらいで作る事ができました。

以上です

楽しいですよpythonもっと日本pythonエンジニアが増えることを祈ります

巳年元旦

2012-10-30

【深刻】小飼弾まどかマギカネタについて

 

まどかだかマギカだか知らないがアニメネタが毎回気持ち悪くて吐き気を催すのは俺だけじゃないだろ?

オッサンが暗い部屋でアニメ見ながら涎垂らしてデレデレしてるだけなら家族が気味悪がるだけで済んで世の中に迷惑もかからいかもだけど、それを外でやんなっつーんだよ

マジで醜悪だから 自分が思ってる以上に周囲の人間生理的嫌悪感を抱いてるんだよ

 

まあ百歩譲って自分ブログの中だけなら髭オッサンの勝手だよ 俺らが見なきゃ済む話だしな

しかしこともあろうかpythonカンファレンスでもやっちゃうその無神経さにショックを受けたpythonエンジニア達の気持ちが分かるか?

翌日から情緒不安定でインデントがずれまくりですよ

http://www.dan.co.jp/~dankogai/pyconjp2012/python.html

昔の名前で出てます状態な髭Perlサスペンダーがなんでpythonキーノートなんだよってみんな疑問に思ってる中、アニメネタを随所にちりばめた全く中身の無い話を60分

会場ドン引きですよ アホか 時間返せや 髭キーノートをセッティングした人にすら悪意が向かうレベル

 

一応pythonの代表的なカンファレンスなんすよ

そこで60分間キーノートと称して全員の時間を拘束して話をするんならそれなりの姿勢ってもんがあるんじゃねーの?

何も話せないなら引き受けるなよ しかも終始アニメネタ

pyconみたいなのは外人だって見るんだよ、そこ考えろや

日本pythonエンジニア迷惑すんだよ

「Oh、オフィシャルな場でアニメジャパニーズきもいデスねー」って思われんだよ

 

つーかアニメ画像って勝手に使っていいのかよ?なんでそんな当たり前のことがわかんねーの?

ちゃんと線引く所は線引けや 中と外で線引けってんだよ やりたいなら家の中でやってろってんだ

どうしても外に露出しなきゃ気が済まないってんなら自分ブログPerlの身内集まりでやってろってんだよ

2012-10-06

YAPC::Asia Tokyo 2012のエントリがうざい

単純に俺が嫉妬してるだけだけど、ひとつプログラミング言語でたくさんの人たちが慣れ合っているのを見るのが辛い。

職場で使ってるC#(いまだに2.0)もJava(いまだに1.4)も、そんな世界とは無縁なんだもん。

どんなにPerlがすごいことになったとしても、俺には全く関係ない。っていうか、仕事プログラミングする世界というのは楽しくないはずなのに。

そして、この「プログラミングが楽しくない」というのはきっとプログラミング言語のものとは関係ない。今の職場Perlが使われたとしても、それは今使っているC#/Javaと同じように、訳の分からないクラスメソッド命名ルール肥大化してメンテのされない"共通メソッドライブラリ"、前バージョンコードコメントアウトして保存、テストファーストでもなくリファクタリングも許可されない、のようなやり方になるわけで。

楽しそうなプログラミングコミュニティを見るたびに負の感情に包まれる。

2012-09-18

perl SQL::Makerはスゲー便利 その2

http://anond.hatelabo.jp/20120917013417 の続き。

前回は、使ってるモジュールしか書かなかったんで、具体的な使い方を、

my $condition = SQL::Maker::Condition->new;

$condition->add('colom1' => "$value1");                          # colum1 = $value1
$condition->add('colom2',{'like' => "%$value2%"});               # colum2 like '%$value1%'
$condition->add('colom3',{'between' => ["$value3","$value4"]});  # colom3 between $value3 and $value4

my $q = SQL::Maker::Select->new(driver => 'XXXXX');              # XXXXXは、MySQL等の指定をする

# where句に条件を設定
$q->set_where($condition);                                       

# where句を抽出select項目やテーブルの指定を全くしてないので、$sql_conditionには
# "FROM WHERE (colum1 = ?) and (colom2 like ?) and (colom3 between ? and ?)" という文字列がセット
my $sql_condition = $q->as_sql();                                

# "FROM" を消して、WHERE句だけにする 
$sql_condition =~ s/FROM//;                                      

# 設定した条件の配列
my @binds = $q->bind;                                            

# SQLの読み込み(条件部分をのぞくopen my $fh, "<", "./sql.txt";
my $sql = do{ local $/; <$fh>};
close $fh;

# 生成したWHERE句とソート順をSQLに追加
$sql = $sql.$sql_condition;

# コネクションを取得
my $conection = DBI->connect($datasource) or die ( 'could not connect' );
my $sth = $conection->prepare($sql);

# 条件に値を埋め込む
for(my $i = 0; $i<= $#binds; $i++){
    $sth->bind_param($i+1,$binds[$i]);
}

# SQLの実行
$sth->execute;


という形でやってます

増田だとpre記法でも「<」「>」が正しく変換されないんで、読み替えてください。

やろうと思えば、select項目や読み込むテーブルもPGの中で指定して組み立てることも

出来るんだけど、そこまでやると面倒くさいし、そこまで動的にコントロールする必要

サイトでは無かったんで、条件部分のみ動的に変更できるようにしてます

動的SQLperlで作ろうと思っている人の参考になれば幸いです。

参考

http://search.cpan.org/~chiba/SQL-Maker/lib/SQL/Maker/Select.pm

http://search.cpan.org/~chiba/SQL-Maker/lib/SQL/Maker/Condition.pm

風俗口コミ横断SEARCH

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

2012-09-17

perl SQL::Makerはスゲー便利。

またまた

http://anond.hatelabo.jp/20120902231521

の続き

データ検索を行う際のSQLの条件を動的に変更するために


を使ってる。

これはスゴク便利。

風俗口コミ横断SEARCH

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

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

ログイン ユーザー登録
ようこそ ゲスト さん