「SQL」を含む日記 RSS

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

2012-01-07

中国じゃSQLが書けるだけでクルマが買えるそうな

羨ましい

2011-12-05

初心者がたった5ヶ月でウェブサービスを作る方法

完全な初心者の状態から勉強を始めてから大体5ヶ月でウェブサービスが完成したので何を用意したり何をどうやって勉強したらいいのか色々書いてみました。

アイデアはあるんだけど、プログラムとか難しそうで自分にはウェブサービスなんて作れないと思ってる人がいたらその敷居を少しでも低くできたらいいなあなんてと思ってます


ちなみにボクはぼんやり1年くらいはてなブックマークにのってる記事を見ていてプログラムとかできたらいいよなあなんて思っていてようやく重い腰をあげた人です

さらに自分文系数学英語もロクにできない人なので、基本的に誰でもサイトは作れると思います

そもそも中学生でもプログラミングができるんだから大人に出来ないわけないですよね。


これからウェブサービスを作りたいっていう方の参考になればと思います

自分初心者なのでまちがってることがあったら教えてください。



●何を用意すればいいのか

自分Windowsなので何個かWindows向けのソフトを紹介しています

Macの方は申し訳ないですが、Mac向けのソフトをご自分で探してください。



(1)メモ帳

基本的にウェブサービスの開発はメモ帳でできます

アドビdreamweaverっていう便利なソフトがあるらしいですお金もかかるし別に必要もないと思います

ただのメモ帳だと使いづらいのでボクは「TeraPad」っていうフリーソフトを使っています

例えばプログラム言語ごとに表示を切り替えると、関数とかコメント部分の色が変わって見やすくなって便利です

TeraPadhttp://www5f.biglobe.ne.jp/t-susumu/library/tpad.html



(2)PCブラウザ各種

サイトを作っても各ブラウザごとに見え方が違うのでそれぞれ確認するために何種類かブラウザインストールしましょう。

ボクはIEFireFoxChromeの3つをそれぞれ表示して確認していました。

OperaとかSafariも本当は確認しないといけないと思うんですがこの3つで十分だと思います



(3)XAMPP

ザンプって読みます。ざっくり言うとローカル環境(自分パソコン)でプログラムを動かす環境を作るソフトです

いちいちサーバーアップロードしなくても、プログラムが動くかを確認できるので便利です

またレンタルサーバープログラム暴走してしまうと迷惑がかかるらしいのであらかじめ自分パソコンで確認するのがいいようです

XAMPPhttp://www.apachefriends.org/jp/xampp-windows.html



(4)ドメイン

何とかドットコムっていうやつですネット上の住所的なやつですexample.comとかexample.netとか。

ボクはお名前.comでドメインとりました。ドメイン個人情報を隠せる?サービスがあるのが理由です

まあどこで取っても大して変わらないと思うので目についたところで取るといいと思います

「.com」だったら年間1000円くらいです。長すぎるドメインはとらない方がいいかです



(5)サーバー

ネット上にファイルアップロードするところですドメインが住所だとすると土地みたいなイメージです

ボクはさくらインターネットさんのレンタルサーバー(スタンダードプラン)を借りています

理由はグリー社長さんがほめてたから。お金も月額500円なので安いです

同じ500円だとニコニコ動画プレミアム会員になれますね。ちなみにボクは一般会員です



(6)FTPソフト

さっきファイルアップロードとかさりげなく書きましたが、そのファイルアップロードするソフトFTPソフトです

ボクはFFFTPを使っています最初使い方がわからなくて戸惑いましたが慣れれば簡単です

FFFTPhttp://www2.biglobe.ne.jp/~sota/



(7)FireMobileSimulator(FireFoxアドオン)

携帯電話サイトを確認するには基本的に実機で確認するのが一番ですが、個人で全部そろえるのは難しいです

そこでFireFoxアドオンのFireMobileSimulatorという拡張機能を使って簡易的に確認するのがおすすめです

XAMPPのようなローカルサーバでも確認することができます

・FireMobileSimulator : http://firemobilesimulator.org/



(8)スマホまたはスマホを持ってる友達

FireMobileSimulatorで確認できるといってもやはり見え方は違います。念のため実機で確認しましょう。

ボクはiphone使っていてそれの確認はしてるんですが、android友達がおらんのでまだ確認してなくて実はまだ不安だったりしてます



(9)3キャリアガラケーまたはガラケーを持ってる友達

上と同じようにやはり実機で確認した方がいいです特にガラケーは見え方もそうですが、プログラムがうまく動かなかったりします。

例えば、AUだけフォームに「enctype="multipart/form-data"」を入れてると文字化けするという謎の現象が起きたり。

他にも色々あって制作時間がかかったのは正直このガラケーのせいです。色々3キャリアで統一とかしてくれないんですかねえこれ。。。

友達のY君とMさんとNさん本当にありがとうございました匿名ブログだけど感謝してます




●何を勉強すればいいのか。


さて具体的に何を勉強すればいいのかわからない人がいると思いますが、以下を勉強すればウェブサービスが作れます

ということでひとつずつ説明。



(1) html/css

マークアップ言語っていうらしいですプログラムじゃなくてhtmlファイルを作る言語です

とりあえずhtmlサイトの文書の論理構造を書いて、cssサイトの見た目をキレイにするものだと思ってください。


適当検索すれば勉強できるサイトがたくさん出てくるのでそこで勉強してください。

本も売ってますけど基本的なところは難しくないので買う必要はないと思います

かいところはその都度検索すれば大丈夫です



調べると、html5とかxhtmlとかあって戸惑うかもしれませんが、とりあえずPCスマホなら何でもいいと思います

(ガラケーについては各キャリアごとに対応させる必要があります。書くとすごい長くなるのでガラケー用にサイトが作りたいなら調べてみてください。)

ただhtml5が一番新しいので今後勉強される人はそれの方がいいかもしれないです

ちなみにボクはたまたま見たサイトxhtmlの説明だったので今回はxhtml作りました



実際やってみるとわかりますが、思ってるよりずっと簡単です

まだボクは90年代初頭のホームページみたいなデザインしかできないので偉そうなことは言えないんですが(笑)



(2) PHP/MySQL

プログラミング言語データベースです

最初htmlだけでサイトが作れると思っていたんですが、はてなのような動的なサイトを作るときは何かしらプログラミングする必要があります

んで、いろいろ調べるとperlやらRubyやらJAVAやら色々でてきて一体どのプログラム言語がいいのか悩むと思いますウェブサービスが作りたいならPHPがいいと思います

理由はウェブに特化した言語っていうのと他に比べると簡単で勉強時間が少なくて済むらしいので。



PHPなんかで本なんか買う必要はないらしいんですが、ネットサイトだとよく理解ができなかったので本を買いました。

以下の書籍がとてもわかりやすくていいですおすすめです。やっぱり本は体系的にまとまってるので勉強がしやすいです

「よくわかるPHP教科書(たにぐちまこと)」

http://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BPHP%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E3%81%9F%E3%81%AB%E3%81%90%E3%81%A1-%E3%81%BE%E3%81%93%E3%81%A8/dp/4839933146



この本の通りやっていけばとりあえずプログラムが動く感覚が得られます

あとすごい賢そうなことをやってる感覚になるので頭がよくなったような気がしますよ(笑)



MySQLもこの本で勉強ができますMySQLというのはデータベースで、そういうソフトです

他にもOracleとかPostgreSQLとかあるらしいですが、

とりあえずMySQLSQL文っていうのを勉強するとデータ検索だったり、データアップデートだったりが数行でできたりするのですごい楽になります



決して簡単ではないですけど、思ったより難しくはなかったっていう印象です

自分は大抵その時理解できなくてもだいたい一晩寝てから、もう一度頭からやり直すと理解できました。



(3)Apache

アパッチって読みますウェブサーバーです

ボクはさくらさんのレンタルサーバーを借りていて今回はあまりいじってないんですが例えば「.htaccess」という名前ファイルを作るとapacheの設定をいじることができます

例えばアクセスされたくないファイルがあったらそういう指定を「.htaccess」というファイルに書いておけばアクセスされないようになります



(4)スマートフォン向けサイトの作り方

基本的にパソコンと同じように作ればいいです。ボクは以下の本を見て勉強しました。

iPhone+Androidスマートフォンサイト制作入門(たにぐちまこと)」

http://www.amazon.co.jp/iPhone-Android-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%B3%E3%82%B5%E3%82%A4%E3%83%88%E5%88%B6%E4%BD%9C%E5%85%A5%E9%96%80-WEB-PROFESSIONAL/dp/4048702181



正直ネット情報でも十分だと思いますが一度体系的に勉強するのもいいと思います



(5)ガラケー向けサイトの作り方

ガラケー向けのサイト制作は特殊で一度頭真っ白の状態で勉強した方がいいです。それだけPCスマホとは全然違います

ネットにも情報はたくさんありますが、断片的なものなので以下の書籍で体系的に勉強してから補助的にネットで調べた方がいいです

PHP×携帯 実践アプリケーション集(平島浩一郎他)」

http://www.amazon.co.jp/PHP%C3%97%E6%90%BA%E5%B8%AF%E3%82%B5%E3%82%A4%E3%83%88-%E5%AE%9F%E8%B7%B5%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%9B%86-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%83%9E%E3%82%A4%E3%83%8D%E3%83%83%E3%83%88%E3%83%BB%E3%82%B8%E3%83%A3%E3%83%91%E3%83%B3/dp/4797354356



この本は実践アプリケーション集というだけあってそのまま使えるコードが収録されているのがとてもいいです

正直PHPプログラミング自体はそこまで難しいという印象はなかったんですが、この本に出会わなかったら多分ガラケー向けのサイトは作れなかったと思います

もしガラケー向けのサイトが作りたいならこの本を買うのが近道だと思いますよ。




自分はまだやってないけど勉強したほうがいいもの



(1)PHPフレームワーク

CakePHPとかSymfontとかいうのがあるらしいです

このフレームワークを使うとあらかじめある程度のところまでできてるんで、ボクみたいに全部TeraPadで手書きしなくてもいいみたいです。。。



(2)javascript

PHPサーバーで動作するプログラム言語ですjavascriptブラウザ上で動作するプログラム言語です

非同期通信なんていうよくわかんないけど何かすごいこともできたりするらしいですよ。



●もし調べまくってもわからなかったら


もし一日中検索してもよくわからなかったらそういう時はネットの頭のいい人たちに質問しましょう。

ボクは以下のサイトで質問していました。



(1)ヤフー知恵袋

巷ではヤフー知恵遅れなんて言われてますが、コンピュータ系の質問に関してはしっかり教えてくれる人がほとんどです

ポイントを100枚くらい使うとカテゴリマスターなんていう天才が回答してくれます



(2)2ちゃんねる

2ちゃんねるの該当する質問スレに書いてください。

どういうスレッドなのかよく読んで質問しないとボロクソに言われますが、2ちゃんねるなのに皆さんすごい優しく教えてくれます

たまにケンカしてたりすることもありますがそのときケンカが終わるまで待ちましょう。ケンカの流れで質問がスルーされたりします。



ヤフー知恵袋2ちゃんねるもそうですけど、質問するとき自分環境をしっかり書いて何がしたいのか、どんなエラーがでるのか明確に書きましょう。

回答する人もわからないですし、自分がほしい回答がまず来ないと思います

あと当たり前ですが回答してくれたらお礼をしっかりいいましょうね。



●こうして出来上がったウェブサービス


こうやって今回できあがったのが6人まで登録ができる招待制レンタル掲示板です

「ひそり-秘密共有ネットワーク」(http://hisori.com/)です



なんだ掲示板かよー!!とか言わないでください(笑)これでもけっこうがんばったんで。。。

そういえばサイトを作ろうと思った経緯を書いてなかったんでちょろっと書いておきます


ボクはミクシィツイッターをやってるんですが、一瞬その時だけ仲のよかった人の更新とか見たくなかったりするんですよね。

でもマイミクを外したりフォローを外したり小心者のボクにはできなかったりするわけです



そもそもあーいうソーシャルって自分キャラ一貫性をもたせないといけないから窮屈なんですよね。

例えば、会社の同僚には真面目を絵を書いたようなキャラだけど学生時代友達には下ネタ好きのどうしようもないキャラだったりすると

マイミクフォロワーにその会社の同僚がいたら、下ネタなんか書きたくても書けないという窮屈さがソーシャルにはあるわけです



だったらあらかじめ人数制限しておいて、例えば同じ学生時代の人しか見ることができないサイトがあれば

下ネタだって気にしないで何でも書けるよねっていう考えに至ったわけです



今回6人までという人数制限と招待制っていう形にしているのはそういう理由と本当に仲のいい何でも話せるグループに使ってもらいたかたかです

んで、ネットにそういうのがなさそうだったので勉強がてら自分で作っちゃえ!ってことで今回作りました



ちなみに何で秘密共有ネットワークなのかというと「招待制無料レンタル掲示板」だとどんなサイトイメージがつかないと思ったかです

じゃあ何て名前にしようかと考えた結果、秘密でも何を書いても大丈夫ですという意味を込めて「秘密共有ネットワーク」って名前しました。

(秘密って普通はどこに書いてもいけないものじゃないですか)



とまあ、そういうことで初心者でボクみたいな完全文系の人でもこれくらいのサイトなら作れるんで

もしプログラムとか難しそうとかそういう理由でウェブサービス制作を躊躇してる人はぜひチャレンジしてみてださい!!



※もしサイトが変な挙動がしてるとかあったら更新報告用にツイッターアカウントを作ったんでよかったら教えてください。

http://twitter.com/#!/hisori_com/


ではでは。。。

2011-10-12

EXCEL =MIN(BLANK,12) は 12になるのか!

要するに空白はSQLでいうNULL(⇒すなわち無視)なのね。

2011-09-11

悪いこと言わないか大企業行っとけ

新卒大企業ベンチャーどちらに行くべきか

といった話題がネットで飛び交っていたが、

その二択で悩むようなら大企業選ぶべきだ。



どこに転職しても使えるスキルを身につけるためにベンチャーは間違い

この手の議論で「大企業に行くデメリットとして、

古い技術や社内固有の技術しか身につかないが、

いっぽうベンチャーに行くと流行りの技術や、

メジャー技術を使って仕事ができる」

といった比較であるが、これはどちらが有利といった話ではない。



メジャー技術というのは代替が効くということなのだ。

もっと言うと、私が死んでも代わりはいもの状態だ。

ゆえにライバルだらけ。

A社とB社が同レベル品質提供している場合

A社が「ウチは半額で提供しますんで」と宣言した瞬間に、

B社は仕事がなくなるか、あるいは値下げせざるを得なくなる。



当然、大企業でも競合は存在するが、

大企業場合ライバル数社なのに対して、

ベンチャーの競合は、数百社が敵だったりする。

大企業はオトナなので、「これ以上値下げしたら儲からいから」

という線を必ず引くが、ベンチャー数百社の中には、

一発逆転を狙ったギャンブラーがどこかにいるかもしれない。



従って、その企業固有の技術ライブラリを持っていることが、

身を守ることになり、お金につながっているのだ。



ところが、一企業しか使えない技術を身につけても、

会社が潰れたらアウトじゃん、とデメリット考える人もいるだろう。

それは、大企業ならば余計な心配だ。

何故ならば多くの大企業では新入社員

「どこでも使える技術国語ロジカルシンキング」を教えるからだ。



国語ロジカルシンキングさえマスターしていれば、

たとえ会社が潰れても新たな就職先が見つかる。

(英語数学プラスアルファ要素として考えるべき)

メールでもミーティングでも、内容を理解し意図を汲み取って、

適切な返答をする。これさえあれば職に困ることはない。



ベンチャー企業流行りの技術を身につけても、

10年後にはその技術は使えなくなっている可能性が高い。

Ajaxが出始めたのは6年前、JQueryは5年、node.jsは2年だ。

数年前はSQL+memcachedが騒がれていたのに、今はNoSQL一色だ。

フレームワークAPIサーバコマンドオプションを覚えて

成長したと言えるのだろうか。

それならば大企業の独自技術を覚えようが、

流行りの技術を覚えようが大差ないのではないだろうか。



もしもあなたベンチャーに行きたいのなら、

その企業が他には負けない優れた技術も持っていて、

かつどこでも使える技術を獲得できる会社に行くべき。



あなたは体力がありますか?

ベンチャーは、余裕がない。

キャッシュ的にも、人のリソース的にも。

まり、もしあなたうつ病になったら、

会社あなたを首にするしかないのだ。

余裕がないので過渡期には終電帰り・泊まり込みが

連続になる日もある。



一方、大企業は他部署からの応援が可能である

残業過多な部署には暇にしてる部署から人を流れさせれば良い。

大企業は余裕があるので、例えば入社4年以上の従業員には

最大2年間の休職を許したりする。これならば、

病気になっても戻ってこれる可能性が高くなる。



ベンチャー楽しいですか?

大企業はつまらない仕事だらけで、ベンチャー楽しい仕事だらけ、

というイメージで話している場合があるが、本当にそうだろうか。



ベンチャー仕事内容だが、

自社サービス楽しいことをやっている会社はほんのわずである

ということを忘れてはいけない。

多くはベンチャーに見せかけたただの大企業の下請けだったり、

受託開発もこっそりやっていたりする。



数年前、スーファミプレステソフトを作っていた会社が、

現在パチスロCGを作っているのをあなたは知っているだろうか。

それと同じように、今SNSゲームで成長している会社も、

数年後、多くは潰れているか

形を変えてひっそりと仕事をしているかもしれない。



なお、ここで書いたベンチャーにはGreemobage級の会社は含まれない。

彼らは時価総額5~6千億の立派な大企業からだ。

2011-09-10

本当のソーシャルゲームイノベーション人間ボットの区別がつかない環境

ソーシャルゲームイノベーション。だがイノベーションは、すべてのユーザー接続された単一のサーバーを使う、マルチプラットフォームマイクロトランザクション、コレクション中心のゲーム性ゲームマネーリアルマネーの最小限の垣根、スマート課金システム、ゆるやかなコミュニケーションではない。ソーシャルゲームのコア技術。だがゲーム伝統的なオンラインゲームウェブサービスなどが実現済み。だが人類史ソーシャルゲームけが実現した特徴。人間ボットが混在してもボット存在が気がつかれない革新的な環境ボット人間擬態して人間ゲームプレイしてゲームを盛り上げるSF近似の環境が実現。ソーシャルゲームではユーザー同士の人間的なコミュニケーションを極限まで減少することでこれを可能に。革新的なことにもかかわらず不思議に語られない。すごく残念に思う。私が語ろう。

#

ボットは、パソコン MMO では周知の事実違法がはびこっている。これから話すことは少し違う。ソーシャルゲームボットは、ゲームメーカー自身によって開発された。ボットは、普通ユーザーには区別がつかない。仲間やあなた競争相手のいくつかはボットと考えるのは簡単。多くの人が疑問に思う。人間ボットの区別がつかないはずがない。セカンドライフパソコンMMOのような環境ボット人間のフリをするのは大変困難。MMOはすべてのプレーヤーの動きをリアルタイムに見ることができる。すべてのプレイヤーがどのように動作するかを誰もが見ることができる環境では、特異な行動パターンは際立って目立つ。ほぼ同じアクションが繰り返されるならすぐにボットとわかる。ありえない動作もすぐにわかる(超高速移動、不可能なタイミングの攻撃を続ける、など)。MMOボットのためのチートツールは不自然ではない動きの再現に苦労。NPCキャラの移動は不自然。同じ場所しか歩かない。不自然に遠回り。隙間に入って抜け出れなくなるなど。人間操作する自然な移動は非常に困難な技術ボット人間パーティを組んで行動するのは不可能。ボットは会話できない。MMOキーボードと共にある。ゲームチャット機能も充実。チャットをするのは当たり前。完全な無言のユーザーは不自然存在協調行動は全く取れない。すぐにボットが露見するであろう。

#

対照的にソーシャルゲームでは人間ボットを区別する機能が軽視。あるいは未実装。他のプレイヤーの行動は目立たない。気がつかない。他のプレイヤーにあまり興味を持たないことでボットことに気がつかない環境。他のユーザーが何をしているのか分からない。ユーザーの仲間は行動記録を閲覧できる。ユーザーと対戦したユーザーとの試合結果は見ることができる。それは非常に断片的。ボスを倒した、ダンジョンクリアした、などの結果しかからない。他のユーザープレイの状態を把握することはできない。ソーシャルゲームでは装備の着替えを繰り返しているユーザーがいても誰も気がつかない。MMOで装備の着替えを繰り返しているユーザーがいたらすごく目立つ。ソーシャルゲームでは異常な行動パターンをとっていても問題にならない。目立たない。ボットにとても都合が良い。ソーシャルゲームでは移動に必要もない。移動はリンククリックだけ。人間らしい移動アルゴリズム不要ソーシャルゲームでは会話がとても軽視。他ユーザーへのコメント掲示板がある。しかしあまり活用されない。ゲームに協力する戦略性が必要が薄いため。またキーボードが使えない。ずっと無言のユーザーも珍しくない。会話がとても少ない。ボット理想環境ソーシャルゲームは最低限のコミュニケーションで成り立つことに最適化。それは同時にボット人間擬態することにも最適化。結果的にボット人間擬態できる環境が生まれている。結論。リンクランダムクリックするだけでもボットが完成。それは不自然ゲームプレイが予想される。だが他ユーザーは気がつかないであろう。

#

ボットを活用しているのは違法ユーザーではない。ゲームの開発会社が用意している。運営している。言い換えればハック不要。無制限にデータベースへのアクセスが可能。実際にゲーム操作する必要ない。データベースに記録を行えば良い。SQLだけでボットを作ることが出来る。例えば、"ナンバーワンのユーザーの敗北を増やす"SQLの次の2行で実現することができます。余談。MySQLのサブクエリ限界は非常に気に入らない。「SELECT userid FROM usertable ORDER BY gold DESC LIMIT 1;UPDATE usertable SET lose=lose+1 WHERE userid=xxxxxx;」これは不十分。たかだか敗北数を増やすだけ。正しくは対戦相手と対戦ログゲームルールに合わせた形で記録。データベース勝敗結果を記録するプログラムが必要。これはゲームプログラムに元々存在している。流用するだけで良い。PerlPHPで実装されているだろう。対戦結果の偽装は簡単。

#

ソーシャルゲームSNSプロフィールページと連動。ユーザーの顔画像クリックプロフィールページに遷移。プロフィールページの偽装が必要。プラットフォーマーは己のSNSデータベースへのアクセスが可能。ランダム名前自動大量生成することは容易。ボットプロフィールページを用意することは容易。ボットユーザーは、日記を書くことなく、まったくの無言で、熱心にゲームプレイ。そのような特徴は正規ユーザーにも珍しくなく違和感はない。参入メーカーSNSプロフィールページを大量に作成できない。正規プロフィールページを使い回す。その場合には、ゲーム上のH氏とG氏ののSNSプロフィールが互いにV氏で同じ人に。これは異常。しかユーザーは他ユーザープロフィール対応を全てチェックしたりしない。発見される確率はとても低い。

#

閲覧者はボット開発の容易さには納得したと信じる。まだボットの必要性と活用には納得していない。これからの話しで納得できる。

伝統ゲーム開発者感覚を基準にゲームバランスを決定(マーケティングの無視を意味しない)。ソーシャルゲームユーザーアクティビティに基づいて、科学的な分析ゲームバランスへのアプローチを決定。これはユーザーアクティビティのサーバーログが蓄積されるために可能。ユーザーアクティビティの分析結果がゲームバランスに反映。例。チュートリアルの進行状況50%で停止しているユーザーが多数いるという分析結果。その箇所のチュートリアルは高い障害ことが想定される。対策。その箇所を平易に修正。その箇所を短縮。その箇所を除去、など。結果、チュートリアルの進行状況50%で停止するユーザーは激減。課金でも分析重要課金アイテムバナー画像を表示する例。ランダム分割したグループAユーザグループBユーザに別々のバナー画像を見せる。しばらく続け、結果的により課金が多いグループバナー画像がより最適。繰り返すことでより効率的なバナー画像が完成。

#

ゲームパラメータは簡単にデータを調整できる。しかしこれは不十分。人間同士のプレイ分析適応できない。例。「開始直後に他のユーザーと対戦し3連敗したユーザーの70%はそれ以上プレイを続けない」という分析結果があると仮定。これはゲームパラメータでは解決できない問題。開始直後のユーザーは誰もが同じ強さ。ゲーム内で最弱。パラメータの調整とは別問題。解決策はボットの利用。開始直後のユーザーより弱いボットを用意。開始直後のユーザーボットに優先的にマッチングボットの内部パラメータは開始直後ユーザー以下だかユーザーにはユーザーと同程度のパラメータに見せる。ユーザーは確実に勝利できるので3連敗してゲームを辞めてしまう可能性は激減。またユーザー自分と同程度のパラメータの相手に勝利したと信じている。プレイ継続するモチベーションに繋がる。ソーシャルゲームプレイ中の人は確認推奨。理論ユーザー全体の対戦での勝利数と敗北数は一致。上位のユーザーは勝利数のほうが多く下位のユーザーは敗北数が多い。コアユーザーでないのなら敗北数が多いのが正しい。もしもあなたが下位ユーザーにもかかわらず勝利数のほうが多いのであればあなたボット感謝する必要がある。逆の例:ロンチ直後のランキング上位にはボットを置く。それがないと初期ユーザーはすぐ上位到達。同ボットゲーム人口が大幅に増加したら不要になることがおおい。

#

課金でも分析結果にボット適用するのは重要。例。「課金経験でしばらく連勝を続け宝物のコンプリートまであとわずかのユーザーに突然強力な一人のユーザーが連日攻撃し続け宝物を奪いにきたときユーザー課金アイテムを購入して防衛する可能性が高い」という分析結果があると仮定。ユーザー心理は、今をしのげば他ユーザーには連勝を続けられると考える。今だけでもと課金を行う。これを再現するボットの開発は容易。データベース検索して課金経験でしばらく連勝を続け宝物のコンプリートまであとわずかのユーザー発見。そのユーザーと対戦可能で勝利できるパラメータボット検索ボットは前もって様々なパラメータで大量に用意しておくのは当たり前。発見したボットユーザーと対戦し対戦結果をボットの勝利でデータベースに書きこむ。これでユーザー課金する確率が飛躍的に高まる。課金経験ユーザー課金経験させることは実に重要。一度同様のボットプログラムを開発したら後は全自動継続的に動作するのは当たり前。分析ボットの組み合わせアプローチ日本ソーシャルゲームの驚異的課金率の施策の1つ。

#

このようなパターンユーザーアクティビティを分析することで無限発見することが可能。ゲームの盛り上げと収益の最大化に大きく貢献。あと1つ例を。課金経験ゆったりプレイユーザーボットが仲間申請。ボットゲーム情熱的にプレイ課金も積極活用。仲間ゆったりユーザーボットプレイ結果がどんどん伝わる。多くのソーシャルゲームでは仲間のプレイ状況は断片的にユーザーに知らされる。中のプレイ状況は大きな刺激。仲間に影響されてよりプレイが活発に。「ユーザープレイ頻度は一番プレイが頻繁な仲間のプレイに近づいていく」分析結果への対応。地味であり効果は直接でないが確実にある。ボット数の効率化の観点から、1つのボット100人以上のユーザーと仲間になるのが望ましい。ゲーム内の仲間人数制限をボットに限り解除。ユーザーボットプロフィールを見たときボットことが露見すると冷めてしまう。表向きは仲間人数制限を解除していることが露見しないように。

#

伝統的なRPGゲームではユーザーの進捗状況に応じて十分な強度の仲間と敵を提供します。これとソーシャルゲームボットは近似している。ユーザーモチベーションを上げるのが目的のは同じ。RPGモンスターと敵はユーザーコンピュータAI操作ことを知っている。それでも十分楽しいが。しかしそれが人間ならもっと楽しい。そこでMMOしか人間は己もプレイヤーユーザーに合わせて適度なパラメーターで楽しさを演出などしない。そこで人間擬態したボットユーザーに合わせてゲームを盛り上げる。ユーザー人間だと信じているのでモチベーションも最高に。あらゆるゲーム問題点完璧に解決されている。ボットの役目はユーザーの退屈に刺激を与えること。ゲームボットだらけ必要はない。賢いボット利用を。このようなボット効果ソーシャルゲームユーザー間のバランスを調整しモチベーションを維持するために非常に大きいですボットほとんど話題にされない。技術情報に積極的な企業ボット不思議と話題にしない。結果。ソーシャルゲーム開発会社も知らないところが多い。ボットを利用するソーシャルゲームはむしろ少数派。ゲームパラメータ調整だけでは限界がある。ユーザーアクティビティのログ解析はハイレベルだが本当に重要ですログ分析に基づいてボットが適切なアクションを残すことでユーザーを興奮させるのでゲームに活用してください。また歴史人間コンピュータ黎明期以来、初めてボット人間の見分けがつかない世界技術革新を達成したことに多くの技術ユーザーは興味を抱くであろう。ソーシャルゲーム会社技術者を積極採用中。その一端はより優れたボット開発。興味があるなら是非応募を。ソーシャルゲームの一層の発展を願う。

#

最後。謝罪。文章下手であり遺憾の意を表明。修正大歓迎。

2011-08-04

独学のプログラムエロ動画検索作ってみた

【お知らせ】2011/09/07

新しいエロWEBサービス作りました

http://d.hatena.ne.jp/uniqueweb/20110906/1315285545



プログラムは全く得意じゃないけれど最近よく見かけるようになったエロ動画検索自分でも作ってみたくて頑張ってみました。

近年、インターネットの普及によりエロ動画が自宅で簡単に見れるという素晴らしい時代になりました。

自分が若い頃はインターネットなんてものはなくエロビデオが主流でドキドキしながらレンタルビデオ屋に行き、可愛い女の子レジにいない隙を見計らってお兄さんにパッケージを伏せて空箱を渡しビデオを借りたものでした。

お兄さんにビデオ空箱を渡そうとした時に可愛い子がレジに戻ってきて焦って渡すのをやめてものすごく変な動きをしながらエロビコーナーに引き返していくなんてことも多々ありましたw

僕のお気に入りといえば「白石ひとみ」や「あいだもも」といった女優でよく借りてました。エロビを借りるということがものすごく恥ずかしい時代?年頃?でカモフラージュ普通ビデオと一緒に借りるということもしていました。それはそれは大変な思いでオナニーしてたんです

しかも、ビデオデッキ自体が貴重な時代でリビングに一台しかないのが当たり前でした。

深夜家族が寝静まってからヘッドフォンビデオを抱えリビングに行き暗がりの中でヘッドフォンテレビ差し込んでビデオ再生ボタンを期待に胸をふくらませながら押したものです。いいシーンを何回も見るためにビデオを巻き戻すんですが、ビデオを巻き戻すガチャガチャンという機械音で家族が起きてこないか?とかそれはそれはドキドキしながら見てました。一仕事終えたあとヘッドフォンを外したらジャックが外れていて大音量で喘ぎ声が響き渡っていたなんてこともありました。誰も起きてこなかったのは優しさなんでしょうか?w

さて、大分前置きが長くなりましたがエロというものものすごい技術発展させるものだと思いますエロのおかげで日本ビデオは普及しエロのおかげで日本インターネットものすごく普及したと言っていいと思います自分エロを通して技術の発展に貢献し自分自身のスキルアップになれば。という高い志を持ってこのサイト制作しました。決して自らのオナニーライフの充実と性癖を充たすため作ったわけではありません・・・

※2011.08.07 利用中のサーバーに障害が発生しているようで現在サーバー接続できない状態となっています・・・

※2011.08.07 23:53 復帰した模様です

サイト名:ヌキネーター

サイト名の由来は抜きネタからきています。抜きネーター、ヌキネーターという感じです

エロサイト制作工程日記にしてみたんで良かったら読んで下さい。そしてこのサイトを使って夜いろいろと励んでくれたら嬉しいです

では制作日記を書いていきたいと思います

サーバー選び

まず前提条件としてお金ほとんどかけたくない。アダルトサイトであるということから

サーバー選びからはいりました。

月の予算は5000円以内で考えていたのでけっこう探すのが大変でした。

日本アダルトサイトを許可している所はかなり限られていてさらにやりたいことができるのは

専用サーバーVPSしかないのでそうなると専用サーバー予算オーバーなので

VPSで探すことになり検索しまくってはじめに見つけたVPSはKAGOYAのVPSだったのですがβ版で募集を締め切っていて泣く泣く諦めました。

KAGOYAはかなり評判がいいみたいなので使ってみたかった。

次に見つけたのが○○○VPS海外サーバー日本語サポートがあり転送量の制限なしディスク容量100G

月1300円程度で借りれるということで初期設定費用に5000円程度かかりましたが借りてみました。

結果、ここは最悪でした。

  • 通信が頻繁に切れる
  • 激重
  • 借りて一ヶ月もしないうちにサービス継続が困難になりそうなのでIPが変わるとかメールがくる
  • まりに通信環境が悪すぎるとメールすると環境調査に協力してくれとメールがくる
  • 時間をかけて沢山の項目を調べて返信するも全く返答がない。

まりの酷さに1ヶ月で解約。

よく調べてみたら評判がものすごく悪い某VPS再販らしいです

お金時間をドブに捨てました・・・

もう失敗したくないと思い今度は比較的有名な海外サーバーLINODE

日本語サポートはないけれど抜群のサポートです

iptablesの設定でどうしてもうまくいかなくて拙い英語メールしてみたら

10分しないうちに返信がきました!

メールに書かれているとおりにコマンド入力したらあっさり解決。

素晴らしい!はじめからLINODEにすればよかった。

担当ブライアンはなぜか分からないけどとてもフレンドリーで親切に感じましたw

サーバー設定

LINODEは複数のディストリビューションから好きなものを選択できるので

とりあえず、64bit版を選択。

サーバー設定はほんとに面倒ですね。

一番面倒だけど重要だということで

SSH

Tripwire

chkrootkit

Clam AntiVirus

iptables

Apache

SSL

その他各種監視ツールの導入をしました。

ほんとに面倒でした。

データベース

はじめはmysqlストレージエンジンgroongaを使おうと思ったのです

初めに借りた最悪なVPSOSが32bit版だったのでgroongaがのソースが見つからずなぜかと思っていたら

どこかで見つけた記事で32bit版ではgroongaの性能を発揮しきれないということで32bit版の提供をやめてしまったらしいと書いてたので

じゃあ、sennaにするかということで最悪VPSsennaインストール

その後LINODEに変更したのでOSに64bit版を選択し念願のgroongaをインストール

しかし、調べてみると

などが理由で、結局sennaに戻して2度手間に・・・

プログラムもそれに合わせてその都度書き換えたので2度手間どころか3度手間4度手間でした・・・

senna導入はrpmでさくっといけるので簡単です

依存関係で少しはまりました。

まず

# rpm -qa | grep -i mysql

mysqlインストールされてたら削除

perl-DBIが必要なのでインストール

# yum install perl-DBI

そして下記の順番でインストール

rpm -ivh mecab-0.98-tritonn.1.0.12a.x86_64.rpm

rpm -ivh mecab-ipadic-2.7.0.20070801-tritonn.1.0.12a.x86_64.rpm

rpm -ivh senna-1.1.4-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-shared-5.0.87-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-client-5.0.87-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-server-5.0.87-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-devel-5.0.87-tritonn.1.0.12a.x86_64.rpm

my.cnfの設定をして終了

で肝心の全文検索ですデータ件数が5万件程度で少ないせいなのか、あいまい検索と比べてそれほど速さを実感できなかったです・・・

でもきっとすごく速くなったはず!

ちなみに「麻美ゆま おっぱい」で検索した場合、0.01 secで結果が返ってきました。


動画データ作成

さて、動画データ作成ですがいくつかのエロサイト制作記事でもあるようにスクレイピングということをします。

スクレイピングとはWEBサイトから特定の情報だけを取得することでネット上にあるサイトクロールして必要なデータだけを拾ってデータを作るといった感じでしょうか。

スクレイピングプログラム自体は以前にTidy関数を使って為替データ10分おきに取得するような物を作ったことがあったのでそれほど時間はかからいかなと思ったのですがけっこう時間かかりました。

スクレイピングにはTidyhtmlSQL、それにPHP Simple HTML DOM Parserを使いました。

下記のサイトを参考にしました。

phpによるスクレイピング処理入門

SQL みたいな文法で HTML を抽出する PHP のライブラリ

htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」

つの中で抜群に使えるのはPHP Simple HTML DOM Parserだったんです

ループ処理させるとメモリがすごいことになって今回のようなスクレイピングに向いてないみたいで

結局、htmlSQLTidyの両方を使ってスクレイピングしました。

両方ともPHP Simple HTML DOM Parserに比べるとうまくデータの取得ができないことが多く残念な感じなんですが他に選択肢がないので・・・

使える順に並べると

PHP Simple HTML DOM Parser

htmlSQL

Tidy

といった感じかもしれません。

おおまかにデータを取得して正規表現で特定データを抜き出しました。

広告との連携

広告にはDMMアフィリエイトを利用しています

http://affiliate.dmm.com/link.html

利用可能な物はパッケージ画像、サンプル画像(縮小)と書かれていたのでそれに従い画像を利用。

注記に※ユーザーレビュー引用いただけません。とだけ書かれているのでそれ以外は引用ありと判断して説明文とタイトルなどを利用

女優データジャンルデータDVDデータ、を紐付けたデータベース作成検索ワードに応じて検索結果に関連する商品を表示させるようにしました。

現状、売り上げ0で意味があるのか分かりませんけどw

負荷対策とか転送量とかDOS攻撃対策とか

エロサイトということで多少はチューニングとか設定とかしないとまずいかもと思い色々調べて設定しました。

やったこと

KeepAlive On

MaxKeepAliveRequests 60

KeepAliveTimeout 3

<IfModule prefork.c>
StartServers       7
MinSpareServers    5
MaxSpareServers   10
ServerLimit       30
MaxClients        30
MaxRequestsPerChild  4000
</IfModule>

様子見ということで2日間で設定してみました。

query_cache_limit=1M

query_cache_min_res_unit=4k

query_cache_size=16M

query_cache_type=1

とりあえずこんなところを設定してみましたが、爆発的なアクセスがあるわけでもないので有効なのか今のところ分かりません(-_-;)

Apache Benchでテストはしてみましたけど問題はない感じですが実際にチューニングができているか分かりません。


サイトデザイン

プログラマーとして有名なゆうすけさんのサイトgoogleを参考にしました。

シンプルで使いやすいようにしようと思いこのデザインしました。

3カラム中央可変となっています

クロスブラウザIE7、firefox3、chromeで行いました。

可変ものって作ったことなかったんですがけっこう面倒なんですね。

サイト機能

ブックマーク機能とメニューの折りたたみ機能検索結果の表示方法切替を作りました

まず、ブックマーク機能ですログインなしで気に入った動画ブックマークできるようにしました。

ブックマークに追加した動画ブックマークページで確認できるようにしました。

cookie機能を利用したらいけると思い色々調べてjquery.cookie.jsを利用。

保存したクッキー情報を呼び出してphpに渡して処理し指定要素にブックマーク一覧をloadメソッドで表示させるという感じです

$(function(){
$("#youso").load("xxx.php");
});

メニューの折りたたみ機能は人気AV女優AV女優別、人気タグなどをそのまま表示させるとずらっと長くなって邪魔だったのでつけました。

これには同じくjquery.cookie.jsを利用しました。

参考サイトhttp://blog.caraldo.net/2009/03/newjqqookiemenu.php

検索結果の表示方法切替にはZoomer Galleryを利用しました。

参考URLhttp://phpjavascriptroom.com/?t=ajax&p=jquery_plugin_zoom#a_zoomergallery

検索結果ページで表示される

[ここの画像]

××× の検索結果

44件中 1~10件目を表示

ここの画像の部分をクリックするとgoogleイメージ検索みたいに一覧でイメージ表示できるようにしてみました。

動画表示ページ

基本的に動画の埋め込みを許可しているサイトのみプレイヤー表示をしそれ以外は画像を表示し動画データリンクするようにしました。

埋め込み部分はあらかじめそれぞれのサイト対応したプレーヤー部分のコード記述しVIDEOIDの部分に置き換えるような形にしました。

XVIDEOSを例にすると

XVIDEOS場合かならず動画urlhttp://www.xvideos.com/videoXXXXXX/のようになりますのでXXXXXXの部分を

VIDEOID部分に置き換えるようにプログラムを組みました、

埋め込み部のソース

>||<object width="510" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="allowScriptAccess" value="always" /><param name="movie" value="http://static.xvideos.com/swf/flv_player_site_v4.swf" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="id_video=VIDEOID" /><embed src="http://static.xvideos.com/swf/flv_player_site_v4.swf" allowscriptaccess="always" width="510" height="400" menu="false" quality="high" bgcolor="#000000" allowfullscreen="true" flashvars="id_video=VIDEOID" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
||<

その他の動画サイトURLの一部分のデータを使っているので同様の処理をしました。

まとめ

実際の作業は2、3週間ですが色々調べる時間が多くて制作に2ヶ月くらいかかりました。

自分エロ動画検索を作ってみて有名プログラマーさん達がいかに優秀なのか思い知らされました。

皆さん思いついて数日で作ってしまうのでびっくりです

全くWEBの知識がない人で4、5ヶ月ですごいの作っちゃう人とかもいるみたいですし世の中広いな~と思います

しかし、エロサイト作りで勉強になりますね~

大分、色んな知識を得ることができました。

これからプラグラム勉強しようと思う人はぜひエロサイトから入ってみて下さい。

きっと楽しいですよ!

そんなこんなで?頑張って作ってみたエロ動画検索、良かったら使ってみて下さい。

これで少しは技術の発展に役立てたでしょうか?w

アダルト動画検索ヌキネーター

P.S エロサイトを作っていてはじめは楽しくて興奮しながら作ってたのです最後の方はエロい物を見ても全く反応しなくなりましたw

  不能ではないんですけど・・・現在も性欲が著しく減退しております・・・

  そしてスーパーpre記法がうまういかないのはなぜ?はてな匿名ダイアリー投稿全然からない・・・

  そしてそしてプログラマーさんとかデザイナーさんとかエロい人とかお気軽にお声をおかけ下さい。



【お知らせ】2011/09/07

新しいエロWEBサービス作りました

http://d.hatena.ne.jp/uniqueweb/20110906/1315285545

2011-07-20

RubyKangi #3 / Final RubyKaigi, Final Day

週末に行ってきたイベントだが、ちょっとインパクトが強すぎて、あとたぶん昼から通しで追っかけてるのは自分だけなので、この話誰かに伝えたい!と柄にもなく思ってしまった。

というわけで自宅Wikiから一部編集して張ってみる。

parse.yで構文いじり

  • 冒頭は yacc/C レベルでの正統的なid*追加して・・・の話かな(遅刻で聞けずだが)
  • 途中で Ruby レベルでできるだけする、という話に
  • 最後の end 羅列省略のための ennnnd は爆笑(Lisp cdddrのパロ)

Art with Glitch

活動報告:るびま分だけ

  • あの充実サイトの企画・運営話と聞いて!
  • 本当に毎回出し切ってる。書き溜めなし、揃った分は全力で出す
    • 「次号はないから」と毎回思いながら出している #なんという一期一会
  • 数年間は石の上だったが、遂に7年目。会議と違い、まだまだ終わらないよ!
  • 執筆企画いつでも募集してます
  • 記事の質とかインタビューで人を見せる企画とか、ホント魅力的だよなぁ

Hacking Ruby

GIS with Ruby

sinsai.info

  • どこらへんがRubyかと思ったら、やっぱりPHPだった。
  • PHP(Usahidi)でのスピーディーな立ち上げ話をしつつ、ugly codeをdisるTL
  • Ruby?Hack4Japanで書いてる人いるよー位(w
  • でも、来日した人に、日本はまだまだ復旧途上だという事は判ってもらえたか

Rails @ NotRubyKaigi

Fabio Akitaさん話

なぜRubyか、なぜRails

***みんながするから、は自分コモディティ化!***

世界に出るために:英語

ここまで、日本語でウケを取り、アメリカ人しか聞こえない英語をしゃべりつつの話。まじありえないレベルの覚悟と実践なんだが・・・!

ブラジルを変える

この人のセッションブラジル事情の紹介みたいな話で大ホール側のセッションも覗いてみようかなと思っていた所にこれで、ただちに絶対参加すべきレベルセッション格上げされた。こんな人がいるとは。

Ruby and Rails in Brazil

で、昼休み後の問題のセッション。結局ツイートどころじゃなかったが、こんな感じ:

プログラマが学ぶべきはプログラミングだけではない。全てだ。

心理学経済学物理マーケティング、、、全てだ。

この言語をみんながしてるからなんて最低だ。自分コモディティ化だ。

そんなのはキャリアじゃない。僕はこんな風潮と戦う。

Javaはあれが酷いとかPHPがとかいう態度でRubyを使うのも無駄だ。

自分がすべき事を良くできるから選ぶ。それ以外の姿勢は間違いだ。

自分が何を成せるのかだけが問題なんだ。プログラミングだけの話ではない

なんという激熱トーク。本当に小さかった南米Rubyコミュニティを仲間と共に成長させ、いまやRubyConf Brazilとか南米で何個もイベントが立ち上がるまでに育てた。この伝道のため、ここ数年で80箇所は回って普及に努めたとかとか。ブラジル事情への関心と関係なく、この熱量を体験できてよかった。

最後時間オーバー後の「あと一言だけ(本当はあと1分だけと本人は言っていたのだが、わざと誤訳してタイマー役の人に会場から叫んだ自分w)」でどんなにダメだとされていても、諦めずに進めという、過去偉人が貶められたり失意にあった時代の動画もよかった(もっとも、この話は知っていたのでインパクト自体は薄めだった)。

DeepConnect話

ORMインプリ

この後はLTとクロージング

クロージング:今北三行

インパクト強すぎw

これ漫画系展開をバックボーンにしたエンタテイニングなスタイルだと理解せずに真に受けると大変だなと心配になったり。なにしろ上は三行だけど全部通しで書くと

***I will crush you***

  • みんな、大人気ない大人になって競ってハックしようぜ!

真面目に受け取ったらヤバイ発言多すぎだろ・・・

 こ れ が 締 め の 講 演 か よ !

そういえば途中にまどマギネタも入ってた記憶があるのだが、上のインパクトが強すぎてどこかに飛んでった。

その後の高橋さん最後挨拶スタッフを集めてのスタンディングオベーションはちょっとうるっと来た。初参加だから今回の運営自体への思い入れはないのだけど、この回だけでも感激することが多かった。この完成度に達するまでどれだけの努力と熱意が投入されていたかと考えると。

隣の席が実はtdtdsさんでびびってたのだが、最初に立ち上がったのを見て、続く二人目のタイミング大事!とすぱっと立ち上がってみてよかった。その後前列の人がみんな!立とうよ!みたいにやって一気に雪崩状態。

herokuありがとう

これで会議は閉幕したのだが、さらにherokuの緊急パーティーが開催され、思い切って行ってみた。まあ、懇親会に輪をかけたリア充な雰囲気でまともに話せなかったのだが、

  • まつもとさんと入店前にgdbとかlua/rite/pythonの話ができた
    • 名刺を貰うのではなく、名前を覚えてもらえる自分になりたい!的なことを言った気がする(汗
    • まじでパッチくらいは書かないとだめだこれは / ていうか名刺とか割とどうでもいい(を。名刺よりパッチを受け取って下さい
    • 喉が痛そうだということに途中で気付いて申し訳なかった
  • ちなみに英語漬けの決意は、大学に入ったら自分ポルトガル語しか知らないがために遅れを取り、それが悔しくてやったそうな
    • その悔しさでその行動が取れる人は少ないと思う。やはりすごい

こんな一日だった。熱かった・・・

2011-05-19

今頃.NET Framework3.5のアプリ作る事になったけど

データベースアクセスには、LINQ to SQLっていうの使うのがいいのかな。

Entity Frameworkって3.5 SP1から導入されたみたいだけど、アップデートは4.0でしか行われていないみたいだし。

それにしても、ネット上にあるMicrosoftプログラム開発に関する情報って少なくなったような気がするのは気のせいかな。

ググっても全然引っかからない。

VB6やらAccessの開発全盛時代はちょっと検索すると掲示板やら個人サイトやらの情報がわらわら出てきた記憶があるんだけど。

今そういう人はWebに流れてしまったのかなぁ。

2011-05-15

http://anond.hatelabo.jp/20110515025034

あまりに初歩的なSQLインジェクション、つまりフォームに「'; (任意のSQL文); --」と入力するだけでアウトになるようなケースは、公開するとかなり早期に機械的な絨毯爆撃を受けるので早急に対処しないとまずいってのはあるんだけどね。

正直進むも戻るも派遣責任取れる範囲じゃないので上司に投げて後は知らんというのがビジネス的な態度ではある。

まあ浜岡原発ですら3年くらい何ともないじゃないか何ともなかったらどうしてくれるんだとか言い出す奴が出てくる世の中だからな。リスク管理マニュアル化されてないとこうなりがち。

モテるstatic女子力を磨くための4つの心得

こんにちはプログラミングをしているただの女子です。私は学歴も知識もありませんしブスですが、staticに関してはプロフェッショナル。今回は、モテるstatic女子力を磨くための4つの心得を皆さんにお教えしたいと思います。

 

1. あえてnewを使ってインスタンスを生成する

あえてnewを使ってインスタンスを生成するようにしましょう。そして飲み会の場で好みの男がいたら話しかけ、わざとらしくパソコンを出してインスタンス生成してみましょう。そして「あ~ん! この言語本当にマジでチョームカつくんですけどぉぉお~!」と言って、男に「どうしたの?」と言わせましょう。言わせたらもう大成功。「プログラミングとか詳しくなくてぇ~! ずっとこのオブジェクト指向言語っていうやつ使ってるんですけどぉ~しっくりこないんですよぉ〜!いちいちnewって書かないといけなくて使いにくいんですぅ~! ぷんぷくり~ん(怒)」と言いましょう。だいたいの男はインスタンスを生成せずに、すべてstaticな関数プログラムを書く習性があるので、newなんてキーワードは使っていないはずです

そこで男が「static関数使わないの?」と言ってくるはず(言ってこない空気が読めない男はその時点でガン無視OK)。そう言われたらあなたは「なんかなんかぁ~!最近SQLが人気なんでしょー!? あれってどうなんですかぁ? 実行時に一行ずつコンパイルするスクリプト言語と違って、もっとも高級な言語なんでしょ?でもなんかよくわかんなーい。私かわいそーなコ★」と返します。すると男は「あぁあいつね、あいつ俺の友達なんだ、イイヤツだろ」といってくるので、そのまま調子に乗らせておきましょう。



2. プログラムでとにかくstaticを使うとモテる

ファイルローカル関数」や「関数自体で状態を持つ」ことなどができる「static」をとにかく無闇につかうと、一般のstatic男性は「この子はstaticを愛してるんだなぁ」や「え?こんなところにもstatic使えるの?なにこれ?」と思ってくれますインターネット上ではそのような〇〇おじさんや、××おじさんなど、変なひとがいるので、よいこの皆さんは関わらないようにしましょう。

 

3. とりあえず男には「えー! なにそれ!?  知りたい知りたーい♪」と言っておく

飲み会などで男が女性に話すことといえばstaticの話やVBの話ばかり。よって、女性にとってどうでもいい話ばかりです。でもそこで適当に「へぇーそうなんですかぁ~?」とか「よくわかんないですけどすごいんですねぇ」と返してしまうと、さすがの男も「この女ダメだな」と気がついてしまいます。ダメ女だとバレたら終わりです。そこは無意味テンションをあげて、「えー! なにそれ!?  知りたい知りたーい♪」と言っておくのが正解。たとえ興味がない話題でも、テンションと積極性でその場を乗り切りましょう。積極的に話を聞いてくれる女性に男は弱いのです

いろいろと話を聞いたあと、「staticな関数を使えば、newって書かなくていいんですねー。覚えたぞぉ! メモメモ!」とコメントすればパーフェクト。続けて頭に指をさしてくるくる回しつつ「キュンキュンキュン! キュンキュンキュン!」と言って、「どうしたの?」と男に言わせるのもアリ。そこで「うるせぇハゲ」と言えば女子力アップ! そこでまた男は「オブジェクト指向ってしっくりこないんですよね〜オブジェクト指向って(ry」と連呼して壊れだすので、放置しておきましょう。

 

4. プログラミングするときインスタンスを生成できない女をアピールせよ

男とプログラミングするときは、とにかく「あーん! 私インスタンス生成ないんですよねぇ~(悲)」と言いましょう。するとほぼ100パーセント「え?インスタンスなんて生成する必要ないじゃん。static理解せずにわざわざインスタンス宣言してるやつなんて笑っちゃうよね〜」といわれるので、(こいつなんなの・・・)と心のなかで思うだけにして口には出さないようにしましょう。ここでまた100パーセント「どうしたの?」と聞かれるので、うつむいて3~5秒ほど間をおいてからボソッとこう言います。「そうですよね〜staticおじさんカッコイイ〜」と心にもないお世辞を言っておきましょう。

その瞬間、あなた女子力がアップします。きっと男は「なんて優しい天使のようなコなんだろう! 絶対にゲットしてやるぞ! コイツは俺の女だ!」と心のなかで誓い、あなたに惚れ込むはずです。そういうやつより上にのし上がったら、そんなことは忘れて好きなだけインスタンスを生成して大丈夫です。「インスタンスを生成できないんじゃなかったっけ?」と言われたら「は?」とか「うざい」や「おまえは一生C言語でもかいてろ」と言っておけばOKです

2011-04-16

Webを作るのに覚えておきたい6つの言語

1. HTML

2. CSS

3. JavaScript

4. PHPなどのスクリプト言語

5. SQL

6. キャッチー言葉とロジカルな構造日本語

10年以上Webに携わって、6が一番難しい

2011-04-14

パスワード個人情報を扱うサービスを作る際に気をつけたこと

HTMLはわかるけど、サーバーサイドはお遊びでphpを触ったぐらいだったので、会員制でデータをためこむサイト作りに初めて挑戦した

今回重視したのは、「いか個人情報をお漏らししないようにして、万が一漏らしても被害を少なくするか」ということ。

世の中、有償サービスでもパスワードを平文で保存してるサービスが意外と多いらしいので、流出した時のリスクを少しでも減らせる対策として書きます

今回のシステム構成

サーバーロケットネットキャンペーンにでレンタルサーバ年1000円ポッキリプラン

クライアント側の処理HTML+CSS+jQuery(とプラグインもろもろ)
サーバ側の処理PHP
WebサーバーApache
データベースMySQL

個人情報こわい!

個人情報ビビる漏洩とかまじ困るし怒られるしこわい。

俺も巻き込まれたところでは、サミータウンがメールアドレスパスワードセットでお漏らししてお詫びに1ヶ月無料なにそれこわい

サミータウンだけならまだいいけど、メアドパスワードを他のサービスで共通化して使ってる情弱なので、

共通化してメアドパスワードをどこかのサービスが一箇所でも漏らすと、ヤフオクID乗っ取り事件みたいなことになる。

http://internet.watch.impress.co.jp/cda/news/2008/09/26/20967.html

だってできれば人様のメールアドレスパスワードとか預かりたくない。

万が一、肉親のメールドレス発見してパスワードにrapemeとか入ってたら明日からどういう顔すればいいかからない。

ググってみてもどこにも情報のってない。うーん困った。ダメもとで「個人情報ってどうやって保存したらいいんだろう。。。」

って、twitterでつぶやいたら、「住所とかは可逆暗号化でいいけど、パスワードハッシュで不可逆化しないとだめだよ!」

と、呪文のようなありがたい言葉を教えてもらった。

暗号化の種類

「住所とかは可逆暗号化でいいけど、パスワードハッシュで不可逆化しないとだめだよ!」

何のことかわからなったので、調べてみると、

・可逆暗号=元のデータに戻せる暗号化方式。

ハッシュハッシュ値を使った、元のデータに戻せない暗号化方式

うーん。。。よくわからん。。。

電話番号とか住所は、第三者が使用する情報なので、可逆が必要。パスワードは、認証しか使わないので、

ハッシュ値結果が一致すれば元のデータがわからなくてもOK、という方式なのでこういった暗号の使い分けをする。

●可逆暗号イメージ(もとにもどせる) 暗号キー開発者が指定する。
090-xxxx-xxxx →(暗号化)→ !'&%($% →(復号化)→ 090-xxxx-xxxxハッシュイメージ(もとにもどせない) 
登録passwordDBに保存)→(ハッシュ値抽出)→!"$#'$#="
ログインpassword →(ハッシュ値抽出)→!"$#'$#="
※二つのハッシュ値が合っていれば、パスワード一致として認証する。

暗号化の実現方法

可逆暗号電話番号とか住所とかに適用

今回はMySQL関数で実現した。encode関数暗号化して、decode関数でもとに戻す。

例えばtel_noという項目だけあるテーブルがあるとすると、

//データベースに保存する時
insert into テーブル名 (tel_no)  values (encode(tel_no,'暗号キー'));
//データベースから取得する時
select decode(tel_no,'暗号キー') from テーブル名;

これで、データベース格納時は暗号化(バイナリ化)されて、データベースから取り出してHTML表示する時に復号化はされる。

ハッシュパスワードかに適用

今回はphpのhash関数で実現した

ユーザ登録時>

$password=(フォームから取得)
$hash=hash('sha512',$password)
//ユーザ登録時は、ここで生成した$hashをデータベースにぶっこむ。

ユーザ認証時は、入力されたパスワードと、データベースパスワードが一致するかチェック。

ログイン認証時>

//フォームから入力されたパスワード
$input_password=(フォームから取得)
$input_hash=hash('sha512',$input_password);

//MySQLに保存されたパスワードを取得(略)
$db_hash==(データベースから取得)

//判定
if($input_hash==$db_hash)
	echo 'ログインしますよ!';
	//ここにログイン処理を書く
else
	die('メアドパスワードがあってないよ!');

これでもしSQLインジェクションとかでデータ流出しても、ハッシュ暗号パスワードに関してはまず解析されないはず。。。

可逆暗号データphp側の暗号キーが盗まれない限りバレない。。。はず。。。

暗号化する対象のデータをえらぶ

何でもかんでも暗号化するとコードが煩雑になるし、パフォーマンスにも影響でそうなので、

住所データ都道府県とか、漏れても良いような情報暗号しませんでした!!

本人が特定できなければ個人情報はないらしいので。。。

個人情報保護法
2条による定義個人情報」とは、生存する個人に関する情報であって、当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの(他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを含む。)をいう。

http://ja.wikisource.org/wiki/%E5%80%8B%E4%BA%BA%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E8%AD%B7%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E6%B3%95%E5%BE%8B#2

これで、もし漏れても、俺、ウンコ漏らして臭いけど、パンツから出てないからいいよね?というレベルはなった。はず。

お漏らさないようにキツくする

万が一漏れても大丈夫!と書いたけど、そもそも漏らすなというお話になる。色々調べた結果、以下の対策をほどこした

SQLインジェクション対策

・当初jQuery側でSQL組み立ててPHPに渡してたので、これだと任意のSQLが実行できて漏らし放題なのでやめる。

GETとかPOSTでDBに渡すパラメータを扱ってる場合、ちゃんとエスケープする。

例えばログイン認証するPHPで、GETメソッドでフォームからデータを取得するような場合

$id=$_GET['id']
$pwd=$_GET['pwd']
$sql="select * from ユーザーテーブル where uid='$id' and pwd='$pwd'

とかやってると、login.php?id=admin'&pwd=' OR '1'='1とかパラメータを渡されるとあら不思議

select *from ユーザテーブル where uid='root' and pwd='' or 1=1

で、誰でもログイン出来ちゃう!ので、mysql_real_escape_stringでエスケープしたり、渡されたパラメータが想定した値かどうか(例えば数値かどうか、とか)のチェックをいれたりする。

クロスサイトスクリプティング

・保存するデータタグJavascriptを埋め込まれないように、保存されたデータを出力する場合PHP側でhtmlspecialchars関数使ってエスケープするようにする。


こんな感じでお漏らし対策をした。間違いがあったら教えて欲しい

ちなみに出来上がったサイトはこれ。

http://oreni-makasero.com/

2011-03-29

http://anond.hatelabo.jp/20110329150439

RDBは、なるたけ簡単に構成する方がいい。

SQLが難しくなるなら、どこかが間違ってる。

典型的PHPerの13の悪癖

PHPerの問題点は、視野が狭いこと。典型的には以下のような悪癖を持つ。

何も知らないかPHPを愛せるんだよ、PHPerは。だからまず、HTMLCSSJavaScriptSQLを覚えろ。次に、Javaに移行しろ。そんなに難しくないよ、Java。特に大量にコードを書けるPHPerは、速度が出てライブラリ化が容易なJavaの方が向いている。今はVPSがあるので、小規模案件でも問題ない。

15年間ほどPHPインターネットを支えてきたが、そろそろ設計の脆さが問題になっている。PHP 6の開発が振り出しに戻ったのは、不幸な事故はない。ウェブ仕事をしていれば、PHPJavaで共通する知識も多い。PHPerはJavaを覚えてPHPさよならしろ。そして恥ずかしい悪癖を直すべきだ。

2011-02-26

http://anond.hatelabo.jp/20110223195508

プログラマー」と名乗っている人をあんまり信用しないほうがいいというのはよく言われる話だが最近そのことを痛感している。今やってる仕事の一環として、「ほかのプログラマープログラムを書いてもらって、それをレビューする」という作業があるのだが、この「ほかのプログラマーが書いたプログラム」というのがひどい。クズたいプログラムばっかりだ。

物心ついた頃から不可解で仕方がなかった

たいしたプログラムも書けない そのくせに威張り散らしてる

ってな、黒夢の『C.Y.HEAD』という曲の歌い出しですけど、最近この部分がぐるぐるぐるぐると頭を回るものだよ。

ええ、わかってますよ。仕事相手の悪口を公的な場で言うなんて、問題があるって言うんでしょう。まあ、それもそうなんだけど、たいしたプログラムも書けないくせにプログラマー名乗ってる奴らに本当に腹が立つからせいぜい堂々と書きますよ。

「忙しくってコードの質が下がってる」っていうような事情もあるでしょうが、まともに納品が出来ないなら仕事なら受けるべきでないわけだし、ビジネス世界は「結果責任」を負うものですから、「事情」なんてのは知ったこっちゃないね

……っていうふうにね、「仕事」というのは基本的に「事情」を無視するものなんですね。だから基本的にはあんまり僕は「仕事」が好きじゃない。とはいえ、今いっしょに働いている人たちはかなり「事情」というものを意識していて、おかげでそれほど辛くはないんだけれども。ただ「ほかのプログラマー」みたいな、外部の人たちは、事情を共有することができないので、「あー! クズたいコード送ってきやがって!」ということにしかならない。「事情」を共有できるような、近しい距離の人たちとのみ、仕事をしていたいものですよ。

で、そのコードがどういうふうにダメなのかというと、主に2つの側面がある。

【1】文法が正しくない、プログラムが読みづらい

【2】ソフトウェア目的意識できていない

【1】はもう、そのまんま。文法がおかしいとか、同じ様な処理コピペで5回かいてるとか、1メソッドが長すぎる上に変数が"hoge"とかでわかりにくく、意味を取るのに困難があるとか。「こんなプログラムに金を払わなければならないのか……」と思うとめまいがする。何せ、それを「まともなプログラム」にレビューするのは僕なのだ。で、その作業に対してお金は一銭も入ってこないのだ。

不具合先祖返りなんかは誰にでもあるミスだし、それを点検するために僕がチェックしているわけなので、そのあたりはいい。しかし文法の狂っているプログラムを修正するというのは、時には全体を書き換えなくてはならなくて、非常に労力である。それに、受け取ったコードは「ほかのプログラマー」さんの「成果物であるので、あまり手を加えすぎるわけにもいかない。それが「仕様書」をもとにしたコード場合、あまり修正するとクライアントに「自分はこんなこと言っていない」と思われてしま可能性もある。だいいち、こんな作業にあんまり時間をかけたら、ほかのもっと大切な作業をする時間がなくなってしまうのだ。こういった様々な事情を考え合わせ、うまいことバランス取りながら、修正の妥協点を探していくわけだが、これはとてつもない頭脳労働である。疲れる。

【2】は例えば、「バリデートチェック」のためのコードなのに、「intは2バイト」ということばっかり書いて来るとか。「intは2バイトはわかったけど、いつからバリデートチェックになるのだろう」と思って読み進めても、最後までintは2バイトしかチェックしていない。依頼主であるからSIerは、そんなプログラムに金を払いたがるだろうか?

もっと具体的な例。ゲーム会社が、「我が社のキャラクタ版権を利用して、凄く売れるSNSゲームを作ってくれ」と依頼してきたとする。プログラマーが打ち合わせに行くと、企画者は「動的フラッシュも使って、100万ユーザーが遊べる。。。」という話を延々とする。プログラマーは「了解しました」と言って安請負する。そのプログラムメイン処理だけで1000行というもので、memcachedの「mem」の字もないし、「オブジェクト指向」といった概念も勿論ない。これでは仮にSNSゲームリリースされたとしても、100人さえも遊べない。

このくらいならマシなほうで、ひどいのになるとフリーランス会社から紹介されたプログラマーで、「SQLselect文くらいしかやった事がない」とか平気で送りこんでくる。たった一人で。

また、意味のないコメントも多い。ループ処理に、「イントのiに3を代入する」と書いて、何の意味があるのだ? せめて「処理速度改善の為にIntegerは使わずにプリミティブのintを使う!」というふうに書くのが本来だと思う、まぁ嘘なんだけど。だって、そんなコメントみて、「なるほど」って誰が思いますかね?

コメントには必ず「目的」というものがあって、次にソースを読む人は処理の概要を知りたいのだから、「プログラム」をそのまんまコメントにしてもダメなんですよ。そういう単純で、最も重要なことが意識できないで、どうして堂々と「プログラマー」なんて名乗れるのか知らん、と思うぜ。

一番、腹が立つのは「偽SEですね。「プログラムはだれでもできるでしょ、重要なのは業務知識でしょ!」みたいなのが偽SE。こういうのを本当に思っているのがいる。業務の画面遷移さえ理解してないSEがだよ。

上の例はさすがに大げさでも、「僕は、プログラムが好きでソフト開発者になりました」とか言ってまともにプログラムが書けない奴は、頻繁にいる。自分サーバ建てろよ。自分で簡単なサービスつくる事もできないなら、向いてないから辞めてしまえ。

「オレはサーバエンジニアじゃないかコマンド打てない」みたいなね。

世も末だ!

ここに挙げたのは「最低限」のことで、「より読みやすく」「より自然に」「より美しく」というところを、自分能力限界まで突き詰めてこそ、プロってもんじゃないんかね。もちろん時間や諸々の事情相談してのこととはいえ、「26歳の若造吐き気を催すような拙いプログラム」を送ってくる、30代40代のプロプログラマーってのはいかがなもんでしょう?

身の程を知れというか。

なんでプログラム書けない人がプログラマーなんかやってんだろ?

んで、なんでそういう人に「仕事」があるんだろうか?

世の中ってのは本当にわからんもんです

身の程を知れよ。

自分の欲望ばっかり考えやがってね。

2011-02-11

http://anond.hatelabo.jp/20110211004212

元記事にも100人1000人のユーザーならSQLでも問題ないって話をしたと思うが 1万人ユーザーって簡単なの?そもそも。って話だよね。

そしてその時のサービスは本当にツイッターたいな大量データサービスなの?と。(それってツイッターのコンペでサービスとして成り立たなそう。違えばいいけど)

 

ORACLでハイエンドサーバーグリッド使うのと 自分MYSQL分散書くのと HADOOPにするのと どれが得かはやってみないと分からん

ダウンタイムを短くしようとすると、2011年現在では組めるならばオラクルな気はする。すくなくとも簡易的にベンチとらないとわからん

 

Hadoopの怖いところは所詮Apache.orgということで、Apache.httpdのように急激な開発が流行から外れて止まってるかのようになることがあることなんだよねぇ。

Apache.httpdって、MPMいまだpreforkとか あってWorkerで event とかって、しばらく前は、いま不安定とかそういう開発状況だと思ってるんだけど。

event MPMってもう安定化したの?event MPMのコア概念である

 『Workerですら遅いから カーネルコールバックを使おうっていう流れ』自体はもう10年近く昔の概念だと思ってるんだけど・・・

 

現在 一番イケてるのはHADOOPだとは思うけど。 Rubyが一時期ほどには勢いがないのと一緒で(いちおうRoRから知っているみとしては、RoRによる隆盛が奇跡のようなものだが

まだ、怖いよね。 障害復旧の実装もまだ、弱いし。個人的にはZookeeperがもっとちゃんとなったら、もう1度 調査する! という感じで塩漬け状態なのがHadoop.

少なくとも単一障害点のフェールーバー周りが本家でどうなるかとかだねー。

 

どうでもいいけどPHPの方が好きなので PHP for apache event MPMを安定化希望・・・ まぁ、Perlもいいよね。

 

だがRubyPASCAL だけは無理だ。BEGINとか書いてあるソースを高速に読みこむのは無理。()ぐらいならいけるけど、BEGINってなんだよ。図形認識できないから読みづらいよ。

2011-02-10

http://anond.hatelabo.jp/20110210125519

それ、正規化してインデックス引いたSQLの方が効率よさそうなんですけれども・・・。

http://anond.hatelabo.jp/20110210104011

漏れjavaで出来たNetBeansを使っていろんなプロジェクトを開発しているが、おもに使う言語PHPやらSQLやらだ。

IDEやらKVSやらが何でできていようが、その上で走るアプリケーションは何の制限も受けない。つうかmemcacheクライアントは各言語版で存在してるじゃんか。だからそこら辺の事実が他のLL言語の何かに影響することは全くない。

LVが極まって羅刹にまで走ったjavaプログラマとか(俺とか)のコード見てみろ。割とひどいぞ?

boolean isExsistByなんとかコードAndなんとかIDAnd指定日時()

たいな糞メソッドてんこ盛りだぞ? 中でやってるのはSQL一発撃ってその結果(1行1カラム)とってくるだけ。生SQL文の方が100倍解釈しやすいと思わんか。

2010-12-23

Web対戦ボードゲームチャット】を作るにはどうしたらいいだろう。

プログラミング勉強中。

そりゃあ、やろうと思えば様々な手法があるだろうけど…

いかに余計な作業を減らして「やりたいことを実現」するための作業に専念するか、を考えている。

いろんな言語への興味はあるが、むしろそのせいで今まで時間いまくってるので、そろそろ「手早く作る方法」を知りたい

あんまり色々な手法を試してもいられない。

「これ!」ってやり方を決めたい

何か、すっきりしたやり方はないものか…


作りたいもの

2人対戦ではない。4~6人前後が参加する。
プレイヤーのアテは既にある。
3Dじゃないし画像ゴリゴリ動かしたりはしない。
扱うのはテキスト中心。GoogleドキュメントやOnsheetを改造したたいな感じのものが作れればいい。
全員が全ての情報を見られるわけではない。公開情報と秘匿情報がある。
ログイン制にするかどうかで迷う(手軽さが失われる?)。
中断→再開 ができるようにしたい。
これはそんなに問題ないだろう。
対戦格闘アクションたいな「リアルタイム性が命」ってものではな
多くても1~2秒に1回くらい画面が書き変わればいい。
計算とかの処理も、せいぜい「山札をシャッフル」とかそういうのだけ出来ればいい。
べつに敵キャラ勝手に動いたりはしない。人間vs人間ボードゲームから
いちいちユーザーさんにインストール作業とかさせたくないので、ブラウザゲー(Webアプリケーション)にしたい。
…のだがブラウザゲーにすると大変なのだろうか? どうなの? って悩んでる。
「各人がサーバーを立てる」みたいなのも混乱するしタルいので、製作者のほうでサーバーを用意したいのだがどうなんだろう。
負担がどれくらいのものか気になる。月々数千円で賄えるだろうか? 同時に立てられる部屋数は、最初は2~4個くらいでいいと思うんだけど。



自分の状況

独学でプログラミング勉強中。

だが、あまり修得にばかり時間をかけてはいられない。


プログラミング言語は、C C++ Java Python Perl VB C# HSP PHP JavaScriptなど、どれも基礎を触ったりしてばかりで何年も過ごしてきた。

FLASHは持ってない。(PalaFlaは触ったことあるけど、いまいちイメージしにくかった)

なんだかんだで一番慣れてるのがHTML+CSSで、次点PHPJavaScript


jQuery大好き。 Ajax大好き。

ただ、PHPだのjavaScriptだのSQLだの、複数言語を同時に扱ってると非常に面倒。

そこでサーバーサイドJavaScriptに目をつけたものの、『Jaxer』は2008年に書かれた記事がちょっとあるばかりだし…

Node.jsってどうなんだろう…?


考えられる手法

PHP + MySQL + jQuery
いちばん無難だと思う。現行はこれ。でも面倒さが拭えないし、「MySQLでいいの?」みたいな疑問もどんどん湧いてくる。
上記のもの + Cake PHPなどのフレームワーク
自分の求めてる「手軽さ」を実現するには良さそうだが、また別の問題がいろいろ発生しまくるような気がする。
Ruby on Rails
なんか、いいとか悪いとか色んな話を聞く。
Skypeプラグイン?として作る
日本語情報が少ない。
GoogleドキュメントやOnsheetにマクロを組み込む
なんか違った。
FLASH
良さそうに思える。…が、無料ActionScriptを体験してみたら、どうも馴染めない。
Shilverlight
Javaアプレット
今までまったく触れていなかったが、もしかしたらいいのかも? と思い始めた。とりあえず今から触ってみる。


うーん、あまり纏まってないが、とりあえず現状をダンプしておく。

なんか参考になるものがあればなー。

こういうこと色々聞ける相手も周りにいないし

2010-12-06

http://anond.hatelabo.jp/20101203150748

完全に一致を作るための勉強法



たくさんのアクセスありがとうございました

コメントもたくさん頂いてまして、それにお答えするのに「ブログでもつくろうかいな」とのぼせましたが、そんなテーマで続くわけもないので、やはりアノニマスダイアリーしました







製作期間について】

まず、皆さん仕事しながらたった4ヶ月で!と褒めて頂いてますが、たったじゃないですよ。4ヶ月って。

仕事が終わって、毎日2~3時間。土日関係無くやると、多分300時間くらいになります

専門学校の2年間の授業時間がこのくらいだったりするんじゃないですかね。結構長いです。




モチベーションの維持について】

モチベーションを保つのがすごいというのも褒めてもらいましたが、私は一回やり始めると、意外に長く続きます

コツがあるんです

毎年、日々の単純作業が続かない新入社員が入ってきますが、そんな新人に言います。

「息をするように続けるんだよ。」

毎日やるんです。土日関係無く。毎日。




勉強したという言葉の誤り】

前回の日記で「勉強した」と何度も使ってしまった為、誤解をされている方が多くいらっしゃいます。

正確には、「調べ」ました

職業柄「調べる」という事が多い為、WEBサービスを作るという事に関してはそれが訳に立ちました



追記でも書いているのですが今回のシステムほとんどが、先人達が作った既存システムベースになっています。

ぱくりと言われてしまえばそれまでなんですけど、丸ごとはやってないですよ。というか、丸ごと合うモノがなくて、いろんな所からソースコードを拝借させてもらいました

なので、中身はぐちゃぐちゃです。けど、検索システムはそれでも200行くらいしかありません。クローラーは80行くらいでしょうか。




HTMLについて】

基本をやったのは、恐らくHTMLCSSだけです

というか、それすら途中で挫折してAdobe社のDreamWeaverというソフトを使いました

適当に書けばソースは綺麗にしてくれるし、CSSの体裁はプロパティを設定しながら見た目のまま調整すれば良いし、一番助かったのはテンプレート機能でした

最初は全部のHTMLファイルコピーしながら作っていたのですが、ヘルプを見るとテンプレートライブラリという機能があるのをしってライブラリいまいち分らなかったのでテンプレートを使いました

Dreamweaver便利

テンプレート便利




Javascriptとの出会い】

最初に本やで立ち読みした本に、「プログラムをやってみよう」ということでJavascriptの事が書いてありました

なので、自然プログラム最初さわりがコレになっただけなんですね。

でも、アラートを出したりとかばっかりで、面白くありませんでした



インターネット黎明期からのネットユーザーなのですが、「最近よく見るページが移動しないのにページの中身が切り替わるやつかっこいいよな」と思って「ページ遷移しない 読み込み」で検索をすると、Ajaxという文字を見つけ、「ajax 入門」で検索してトップに出たサイトAjaxの概要だけ調べて、「ajax 簡単」でprototype.jsjQueryの文字を見つけて「ああ、jQueryってよく見るな」というのがjQueryとの出会いでした

最近よく見るページが移動しないのにページの中身が切り替わるやつ」は、非同期通信という名前した

jQueryを使うと、下記のように1行コピペするだけで外部のHTMLを読み込む事ができました

--------------------------------------------------------------------------

var http = $.get("abc.html",null, function(data) {$("#main").html(data);});

--------------------------------------------------------------------------

すごい簡単。最初意味は分りませんでしたが、目的の事ができればそれで良いので次に進みました



jQueryすごい

■非同期通信かっこいい

プラグインいっぱいあって楽しい




Perlとの出会い】

jQueryがちょこっと書くとダイナミックに色々変わってくれるので、日々いろんなプラグインを探して遊んでいました

でも、作りたかったのは検索システムだったのを思い出し、また近くの大きな本屋に。

検索するパソコンで”プログラム 検索”で探しだした棚に行くと、「CGI/Perl」の本棚した

大量にありすぎてどれをかって良いか分らなかったので、いくつか立ち読みして家に帰り、「CGI/Perl 入門」で検索すると

http://www.kent-web.com/perl/

このページにたどり着きました



Windowsだった為、ActivePerlを入れていくつかプログラムをやりましたが、これがまた面白くないんですね。

すごい地味で。このPerlをさわった最初の1日は正直かなり苦痛した



その後、”AV女優検索システムって不動産検索システムに似てるな”って思って「CGI/Perl 不動産検索 無料」で検索したら、http://www.yumemaboroshi.net/ってサイトが引っかかって、ここのおかげでかなり進みました

先人が作った大量のプログラムダウンロード出来るサイトなんですね。



Perl面白くない

フリーソフトを集めたサイトソースがいっぱい見れる




PHPとの出会い】

いくつもダウンロードしては、サンプルと中身を見てを繰り返してたら、Perl/CGI以外にPHPがたくさんありました

どう違うのかと思い検索したら、PHPはすごい叩かれてて、Perlがえらいみたいに書いてあったのですが、叩かれてる理由がいまいち理解できませんでした

結果PHPを使う事になったのですが、その大きな理由は、DreamweaverPHPが開ける。なおかつHTMLファイルをそのまま使うテンプレート機能のプラグインがあったという事でした



PHPテンプレートを使うには、Smartyというプラグインを使えば良いということが分って、「Smarty 入門」で調べて、いくつかのタグを覚えました

実際にSmartyで使ったタグは、{$変数}と{if}{/if}と{foreach}{/foreach}の3つだけだと思います。

色々高機能らしいですが、まあ目的は達成できたのでいいか。と。

PHP検索プログラムは、HTMLファイルボタンを押すと、テキストファイルに書いてある内容を、表示してくれる簡単なものを作って、そこに肉付けしました

(最終的にテキストファイルSQLサーバーになりましたが。)




PHPDreamweaverと相性がいい

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以外は。なんであんなに読みづらいんでしょう。




と、またもや長くなりすぎたのでこの辺で。







あ、ちなみに、アクセス数収益をご報告します。

金、土、日、月と約4日間爆発的にアクセスを頂きました



アクセス数は、4日間で約200アクセスほどありました

DMMクリック10クリックほどあり、その結果、購入された金額が、なんと!











700円でした

報酬額が245円。

ありがとうございました



http://www.kanzen21.com/




----------------------

12/8 12:00追記

アクセス過多でまたもやサーバーがダウンしました

今回のサーバーダウンは結構深刻でなかなか復旧が出来ていません。。。

申し訳ないです。




----------------------

12/8 12:10追記

全然起動しません。なんなんだこれは。

サーバー会社に問い合わせ中です

状況は、Twitterでお知らせします。

http://twitter.com/#!/kanzen21_com




----------------------

12/8 13:00追記

サーバー復活しました

サーバー会社の方、ありがとうございました

2010-12-04

http://anond.hatelabo.jp/20101203150748

ショックだね。超高速道路というか、そういう以前の問題だよこれは。

やろうとすることを普通の人が身につけるのに3年は掛かるだろうに、しかも、ここまでのクオリティはでない。

唸ってしまう。


HTML+CSS

意図したものを意図したように表示させるのは困難。

だが自分意図で作れる場合は、できないことは回避できる。

回避できるのであれば使うHTMLCSSは限られる。覚えるのは最小限。

Dreamweaverつこーてるのかな?

ツールが解決してくれるのならコードを書く必要すらない。


JavaScript

jQueryでやられていることを自前実装するには技術力が必要。

逆に言うとjQueryが利用できるならそれですむ。

中で何をやっているかなんて詳しく知る必要などない。

世界中のもっと詳しい人がチェックをいれてくれている。jQueryを利用したライブラリやサンプルコードも転がっている。jQueryでできないことがでてきたらどうするか? prototype.jsでも使えばいいじゃない。

ともかく回避方法はいくらでもある。


Perl

扱いがかわいそう。

自分に必要がないもの目的に合致するのに遠回りなものを切り捨てる能力がないと何時まで経っても勉強だけして終わる。


php

PHPで何かしようとしたのではなく、単なるテンプレートエンジンとして割りきって利用したようだ。

表示したいところに表示させたいものを埋め込むだけなら、それはHTMLとほぼ同等の何かでしかなくなる。

LL学習目的はないので寄り道をする必要などない。


クローラー

どの言語でも実装できる。phpを使っていて、なぜRuby

どの言語でやっても一緒なら、できるだけ自分がつくる部分が少ないほうがよい。

phpではクローラーをつくるのにいいライブラリがあるというのを聞いたことがない。

コマンドラインベースで動かす人は皆無だからね。

RubyならPerlたい正規表現に悩まされることもない。なるほど。

素人Ruby環境を例えばLinux上に構築しようとしたらかなり躓くところがあると思う。Railsを使わずにRubyで済ませたというところか。ここらへんから何か恐ろしい

逆算するとクローラーをつくるまで学習を初めてから2ヶ月も掛かっていないことになる。


Apache

クローラーをつくってからApacheを知ったというのがリアルで笑えるのだけど、恐ろしい

Ruby環境PHP環境をどうやって同居させたのかとかそういう苦労が見えない。ということ苦労しなかったのかもしれない。やはりRailsはなくてRubyなのか。

技術者を名乗る人でもRuby環境構築ができない人も多いのにこの人は素直にすごい。

何もないところからLinux環境PHPやらmySQLやらRubyやらの環境構築は熟練した人でも半日かかるめんどくさい作業なのでそれをやれてしまうというところで、3年生ぐらいのエンジニアスキルがあると俺は認める。

それは言い直すと普通に仕事として身につけたとしても一般的には3年はかかるということだ。


MySQL

はてさて、SQLまでかけるようになったというのだろうか。

DB設計は? 確かにこの内容であれば設計を要するほどの複雑さはない。1テーブルで十分。

インデックスとか貼ってないだろうなとは思わせるが、5GBのデータでもこれだけのレスポンスが出てしまう時代だ。

チューニングするぐらならいいハードにのっけなよということか。



デザイン

デザイナーとしても食っていけるだけのスキルがあるんじゃなかろうかとおもってしまう。

GIMPボタンひとつ作るのでもしんどいよ。


Face.com

もう、なんていうか調査能力もすごい。

というか調査能力がすごいんだろうな。

2010-12-03

自分WEBサービスを作りたいと思っている人へ

もう、いいおっさんの年齢なんですが、先日、とある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を超えていることに気がついた。

このときテキストファイルデータを扱おうと思っていたが大きすぎて動かない。

SQLサーバーというものを触り始めた。

最終的にデータ量は5GBを超えた。




11月も後半、本稼働用のサーバーを探していたら、丁度カゴヤVPSサーバーベータ版を募集していた。

ここぞとばかりに申し込みボタンクリックして申し込んだ。

すごく、快適です。まだベータですが、本番稼動でも、50GBで900円という激安プランです

http://www.kagoya.jp/cloud/vps/

さくらさんの2.5倍の容量でさくらさんよりちょっと安い。

ベータ版では、3つまでOSインストールができます。もちろんそれぞれにIPアドレスが振られます

このVPSサーバー管理システムインストールし、もろもろの環境も作って、11月末についに、公開。



AV女優スリーサイズから検索できるシステム、「完全に一致です

 【完全に一致AV女優類似検索システム

 http://www.kanzen21.com/

類似検索機能付きで、2次元3次元をつなげる夢のシステムですはい

「なんだエロかよ」とか言わないでください。

真剣に作ったんだ。仕事をしながらよく頑張ったと自分をほめてあげたい







このシステムは、下記のような構成になっています。

----------------------------------------------

サーバー:カゴヤVPSサーバーベータ版)

WEBサーバーApache

SQLサーバーMySQL



HTMLXHTML+CSS

インターフェースjQuery+selectToUISlider

検索プログラムPHP

テンプレートエンジンSmarty

クローラーRuby+Mechanize+Cron

-----------------------------------------------



サーバー上にある静的なHTMLは1ページもなく、mod_rewriteですべてPHPが処理しています。

ボタン等の画像は、GIMP作りました




一番大変だった事は、、、



このサイトデータDMM社のデータを使わせてもらったのですが、AV女優顔写真をそのまま使うのは、肖像権的にNGらしく、AV女優の作品の中からその女優の顔が一番大きく写っているパッケージを使うことにしました

しかし、女優データは約5万件。作品データ12万件。とても手作業でやるわけにもいきませんでした



結局どうしたかというと、Face.com(http://face.com/)という、画像の顔認識ができるAPI無料提供しているサービスを利用しました

同様のことができる、OpenCVというソフトがあるのですが、最初から付いているパターンデータでは人の正面の写真しか顔として認識しませんでした

それに比べて、Face.comの認識精度は驚くほど高く、横だろうが斜めだろうがかなりの精度で顔を認識してくれました

データJSON形式で返してくれる(JSONもこのとき初めて知った)為、取得したデータを後で加工しやすかったです



1.このAPIを使い12万件の作品データをすべてスキャンするプログラムを書く※1

2.顔の縦の長さと横の長さを取得

3.縦×横で顔の面積を計算

4.作品テーブルの中に3で計算した顔の面積を追加

5.SQL女優テーブルと作品テーブルを結合

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クエリーを保持してくれるらしく、実際にデータ検索を行わないので高速になるそうです。こんなの知らなかった。ありがとうごいました

プログラムはサンプルがあるからどうにかなるんですが、サーバー周りの事が全然わかりません。。。。ぐうぅぅ。。。。

おやすみなさい。


-------------------------------------

12/6 23:30追記

ブックマークコメントもらっていた事を別の日記で説明しました

http://anond.hatelabo.jp/20101206224349


-------------------------------------

1/12 10:00追記

最終報告を書きました想定外ばかり。

http://anond.hatelabo.jp/20110112095450

2010-11-24

http://anond.hatelabo.jp/20101124234216

おもしろいじゃないか

小池栄子検索したら北川ゆりがヒットするのが、すばらしい

システムはぱっと見る限り、HTML+jQuery+SQLサーバー+PHPだな。

似たようなサービスがあったような。

- 転職ならen
- 派遣ならen
6ページ中1ページ目を表示(合計:131件)