はてなキーワード: MySqlとは
Webサービスになるんじゃないかなーってことを思いついたので、自力で作ってみよう思う。
プログラマとして社会人約三年経験後、無職半年目。別業界に行こうと思ってた。
でも思いついたからやってみるって言うのは有りだと思うんだ。
機能拡張とかばっかりだったから、どうしていいのかいまいちわかってない。
・レンタルサーバを借りる
・余裕があればドメイン取得
・開発言語はPHP(とはいえ独自フレームワークばっかりだったのでCakeとか使えないぞ……)
・MySQL実は使ったことがないんだよな。関数をチェックしておく必要性あり。
・UIはHTML5を意識したXHTMLで書いておけば将来的な移行がしやすいのかな。最初からHTML5で書くというのも手か?
・CSS3使ってもいいのかなあ
・関連商品の表示のために何をすればいいのか(DBに閲覧履歴を保持するのか?)
・他にも思いつき次第追記
・ここがわからないのであった
・twitterとかなのかな
まあ、作れないかもしれないけど、その時はその時。
FuelPHP Advent Calendar 2011 の 15日目。
FuelPHP の URL とコントローラの関係から続いて寄稿します。
早速ですが本題。
といって、そもそもの経緯を先に。
fuelphpを試そう!ってなもんで既存のサーバでPHP5.3にしよう〜という所が発端。
既にyumでPHP5.2ベースで環境が構築してあったせいで、色々とconflictしてインストールに手間取る。。。
案外、環境構築ってはまると手間よねーといった意味合いも込めて、
今後の参考迄に割とストレートにいける様にセットアップ手順をログります。
今回はせっかくなので、色々と最新パッケを用意します。
なので、fuelphpを動作させるために、今回は最新のRPMパッケからPHP5.3をインスコ。
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
(PHPを先にインストールすると色々こけるので先にmysqlをセットアップ)
で起動テスト。
いや、こけた。
起動せず。。
ふむ。repositoryをremi-testにしなければダメな模様。
再度インストールの場合には依存関係のパッケージでconflictするのでとにかく消す。
ごっそり消す!!
でインストール。
$ sudo yum --enablerepo=remi-test install mysql mysql-server
$ sudo /etc/init.d/mysqld start
Starting MySQL: [ OK ]
いった!
自動起動設定だけ済ませて次へ。
既存のphp5.2以前がある場合は、やはりとにかく、ごっそりremove!!
で以下に続く。
$ sudo yum --enablerepo=remi install -y php php-mysql php-xml php-mbstring php-common
ほんとはハマった辺りのログとかも入れた方がいいんでしょうが、今回はこれでご勘弁。
ソースから入れた方が楽だよなぁ・・・と何度か方向転換しかかりましたが・・・なんとか。
明日16日目は@madmamorさんの「FuelPHPのcoreクラスを拡張してみる。」ですね!
おたのしみに!
THANKFUL WORLD - 世界を「ありがとう」でつなげよう -
似たようなサービスは既にあると思いますが、PHPプログラムの練習課題として作成してみました。
投稿者から「ありがとう」にまつわる話を投稿してもらい、感謝の気持ちを伝えるサービスです。
この中で一番の目的だったのは3番目の最後までやり遂げるだったりします。
本当にどんなものでもよかったので、最後まで作り上げて公開するのを目標にやってきました。
Webサーバの構築課題も含めてなので、さくらのVPSを一台契約しました。
インストールから設定まで行って初めて分かることも多くありました。
1週間
今できることを高めることも重要ですが、自分に足りないものを吸収してより良い形で昇華することも必要。
個人でサービスを作る以上、自分自身がクライアントなので途中で行う仕様変更(改善や思いつきによる変更など)に対する文句のぶつけ場所もありません。
念入りに設計を行い、それに基づいて開発を行う。
何事も初めが肝心です。
ひと通り開発を行ってみて、自分の知識や能力についてもある程度把握できたように思えます。
今できることもわかったので、次は今できないことをできるように知識を深め、
今できることと合わせて新たな段階に進めればと思います。
【お知らせ】2011/09/07
http://d.hatena.ne.jp/uniqueweb/20110906/1315285545
プログラムは全く得意じゃないけれど最近よく見かけるようになったエロ動画検索を自分でも作ってみたくて頑張ってみました。
近年、インターネットの普及によりエロ動画が自宅で簡単に見れるという素晴らしい時代になりました。
自分が若い頃はインターネットなんてものはなくエロビデオが主流でドキドキしながらレンタルビデオ屋に行き、可愛い女の子がレジにいない隙を見計らってお兄さんにパッケージを伏せて空箱を渡しビデオを借りたものでした。
お兄さんにビデオの空箱を渡そうとした時に可愛い子がレジに戻ってきて焦って渡すのをやめてものすごく変な動きをしながらエロビコーナーに引き返していくなんてことも多々ありましたw
僕のお気に入りといえば「白石ひとみ」や「あいだもも」といった女優でよく借りてました。エロビを借りるということがものすごく恥ずかしい時代?年頃?でカモフラージュに普通のビデオと一緒に借りるということもしていました。それはそれは大変な思いでオナニーしてたんです!
しかも、ビデオデッキ自体が貴重な時代でリビングに一台しかないのが当たり前でした。
深夜家族が寝静まってからヘッドフォンとビデオを抱えリビングに行き暗がりの中でヘッドフォンをテレビに差し込んでビデオの再生ボタンを期待に胸をふくらませながら押したものです。いいシーンを何回も見るためにビデオを巻き戻すんですが、ビデオを巻き戻すガチャンガチャンという機械音で家族が起きてこないか?とかそれはそれはドキドキしながら見てました。一仕事終えたあとヘッドフォンを外したらジャックが外れていて大音量で喘ぎ声が響き渡っていたなんてこともありました。誰も起きてこなかったのは優しさなんでしょうか?w
さて、大分前置きが長くなりましたがエロというものはものすごい技術発展させるものだと思います。エロのおかげで日本でビデオは普及しエロのおかげで日本でインターネットはものすごく普及したと言っていいと思います。自分もエロを通して技術の発展に貢献し自分自身のスキルアップになれば。という高い志を持ってこのサイトを制作しました。決して自らのオナニーライフの充実と性癖を充たすため作ったわけではありません・・・w
※2011.08.07 利用中のサーバーに障害が発生しているようで現在サーバーに接続できない状態となっています・・・
サイト名の由来は抜きネタからきています。抜きネーター、ヌキネーターという感じですw
エロサイトの制作工程を日記にしてみたんで良かったら読んで下さい。そしてこのサイトを使って夜いろいろと励んでくれたら嬉しいです。
まず前提条件としてお金をほとんどかけたくない。アダルトサイトであるということから
月の予算は5000円以内で考えていたのでけっこう探すのが大変でした。
日本でアダルトサイトを許可している所はかなり限られていてさらにやりたいことができるのは
専用サーバーかVPSしかないのでそうなると専用サーバーは予算オーバーなので
VPSで探すことになり検索しまくってはじめに見つけたVPSはKAGOYAのVPSだったのですがβ版で募集を締め切っていて泣く泣く諦めました。
KAGOYAはかなり評判がいいみたいなので使ってみたかった。
次に見つけたのが○○○VPS。海外サーバーで日本語サポートがあり転送量の制限なしディスク容量100G
月1300円程度で借りれるということで初期設定費用に5000円程度かかりましたが借りてみました。
結果、ここは最悪でした。
あまりの酷さに1ヶ月で解約。
よく調べてみたら評判がものすごく悪い某VPSの再販らしいです。
もう失敗したくないと思い今度は比較的有名な海外サーバーLINODE。
iptablesの設定でどうしてもうまくいかなくて拙い英語でメールしてみたら
10分しないうちに返信がきました!
メールに書かれているとおりにコマンドを入力したらあっさり解決。
担当のブライアンはなぜか分からないけどとてもフレンドリーで親切に感じましたw
LINODEは複数のディストリビューションから好きなものを選択できるので
とりあえず、64bit版を選択。
一番面倒だけど重要だということで
Tripwire
ほんとに面倒でした。
はじめはmysqlにストレージエンジンgroongaを使おうと思ったのですが
初めに借りた最悪なVPSはOSが32bit版だったのでgroongaがのソースが見つからずなぜかと思っていたら
どこかで見つけた記事で32bit版ではgroongaの性能を発揮しきれないということで32bit版の提供をやめてしまったらしいと書いてたので
じゃあ、sennaにするかということで最悪VPSでsennaをインストール。
その後LINODEに変更したのでOSに64bit版を選択し念願のgroongaをインストール。
しかし、調べてみると
プログラムもそれに合わせてその都度書き換えたので2度手間どころか3度手間4度手間でした・・・
まず
そして下記の順番でインストール
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分おきに取得するような物を作ったことがあったのでそれほど時間はかからないかなと思ったのですがけっこう時間かかりました。
スクレイピングにはTidyとhtmlSQL、それにPHP Simple HTML DOM Parserを使いました。
SQL みたいな文法で HTML を抽出する PHP のライブラリ
htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」
3つの中で抜群に使えるのはPHP Simple HTML DOM Parserだったんですが
ループ処理させるとメモリがすごいことになって今回のようなスクレイピングに向いてないみたいで
結局、htmlSQLとTidyの両方を使ってスクレイピングしました。
両方ともPHP Simple HTML DOM Parserに比べるとうまくデータの取得ができないことが多く残念な感じなんですが他に選択肢がないので・・・
使える順に並べると
といった感じかもしれません。
おおまかにデータを取得して正規表現で特定データを抜き出しました。
http://affiliate.dmm.com/link.html
利用可能な物はパッケージ画像、サンプル画像(縮小)と書かれていたのでそれに従い画像を利用。
注記に※ユーザーレビューは引用いただけません。とだけ書かれているのでそれ以外は引用ありと判断して説明文とタイトルなどを利用
女優データとジャンルデータ、DVDデータ、を紐付けたデータベースを作成し検索ワードに応じて検索結果に関連する商品を表示させるようにしました。
現状、売り上げ0で意味があるのか分かりませんけどw
エロサイトということで多少はチューニングとか設定とかしないとまずいかもと思い色々調べて設定しました。
やったこと
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を参考にしました。
シンプルで使いやすいようにしようと思いこのデザインにしました。
クロスブラウザは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を利用しました。
参考URL:http://phpjavascriptroom.com/?t=ajax&p=jquery_plugin_zoom#a_zoomergallery
検索結果ページで表示される
[ここの画像]
××× の検索結果
44件中 1~10件目を表示
ここの画像の部分をクリックするとgoogleイメージ検索みたいに一覧でイメージ表示できるようにしてみました。
基本的に動画の埋め込みを許可しているサイトのみプレイヤー表示をしそれ以外は画像を表示し動画データへリンクするようにしました。
埋め込み部分はあらかじめそれぞれのサイトに対応したプレーヤー部分のコードを記述しVIDEOIDの部分に置き換えるような形にしました。
XVIDEOSを例にすると
XVIDEOSの場合かならず動画のurlがhttp://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
週末に行ってきたイベントだが、ちょっとインパクトが強すぎて、あとたぶん昼から通しで追っかけてるのは自分だけなので、この話誰かに伝えたい!と柄にもなく思ってしまった。
ここまで、日本語でウケを取り、アメリカ人にしか聞こえない英語をしゃべりつつの話。まじありえないレベルの覚悟と実践なんだが・・・!
この人のセッション、ブラジル事情の紹介みたいな話で大ホール側のセッションも覗いてみようかなと思っていた所にこれで、ただちに絶対参加すべきレベルのセッションに格上げされた。こんな人がいるとは。
で、昼休み後の問題のセッション。結局ツイートどころじゃなかったが、こんな感じ:
Javaはあれが酷いとかPHPがとかいう態度でRubyを使うのも無駄だ。
なんという激熱トーク。本当に小さかった南米のRubyコミュニティを仲間と共に成長させ、いまやRubyConf Brazilとか南米で何個もイベントが立ち上がるまでに育てた。この伝道のため、ここ数年で80箇所は回って普及に努めたとかとか。ブラジル事情への関心と関係なく、この熱量を体験できてよかった。
最後の時間オーバー後の「あと一言だけ(本当はあと1分だけと本人は言っていたのだが、わざと誤訳してタイマー役の人に会場から叫んだ自分w)」でどんなにダメだとされていても、諦めずに進めという、過去の偉人が貶められたり失意にあった時代の動画もよかった(もっとも、この話は知っていたのでインパクト自体は薄めだった)。
この後はLTとクロージング。
インパクト強すぎw
これ漫画系展開をバックボーンにしたエンタテイニングなスタイルだと理解せずに真に受けると大変だなと心配になったり。なにしろ上は三行だけど全部通しで書くと
真面目に受け取ったらヤバイ発言多すぎだろ・・・
こ れ が 締 め の 講 演 か よ !
そういえば途中にまどマギネタも入ってた記憶があるのだが、上のインパクトが強すぎてどこかに飛んでった。
その後の高橋さんの最後の挨拶とスタッフを集めてのスタンディングオベーションはちょっとうるっと来た。初参加だから今回の運営自体への思い入れはないのだけど、この回だけでも感激することが多かった。この完成度に達するまでどれだけの努力と熱意が投入されていたかと考えると。
隣の席が実はtdtdsさんでびびってたのだが、最初に立ち上がったのを見て、続く二人目のタイミングが大事!とすぱっと立ち上がってみてよかった。その後前列の人がみんな!立とうよ!みたいにやって一気に雪崩状態。
これで会議は閉幕したのだが、さらにherokuの緊急パーティーが開催され、思い切って行ってみた。まあ、懇親会に輪をかけたリア充な雰囲気でまともに話せなかったのだが、
こんな一日だった。熱かった・・・
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 →(暗号化)→ !'&amp;%($% →(復号化)→ 090-xxxx-xxxx ●ハッシュのイメージ(もとにもどせない) 登録password(DBに保存)→(ハッシュ値抽出)→!"$#'$#=" ログインpassword →(ハッシュ値抽出)→!"$#'$#=" ※二つのハッシュ値が合っていれば、パスワード一致として認証する。
今回はMySQLの関数で実現した。encode関数で暗号化して、decode関数でもとに戻す。
例えばtel_noという項目だけあるテーブルがあるとすると、
//データベースに保存する時 insert into テーブル名 (tel_no) values (encode(tel_no,'暗号化キー')); //データベースから取得する時 select decode(tel_no,'暗号化キー') from テーブル名;
これで、データベース格納時は暗号化(バイナリ化)されて、データベースから取り出してHTML表示する時に復号化はされる。
<ユーザ登録時>
$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条による定義 「個人情報」とは、生存する個人に関する情報であって、当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの(他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを含む。)をいう。
これで、もし漏れても、俺、ウンコ漏らして臭いけど、パンツから出てないからいいよね?というレベルにはなった。はず。
万が一漏れても大丈夫!と書いたけど、そもそも漏らすなというお話になる。色々調べた結果、以下の対策をほどこした。
・当初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関数使ってエスケープするようにする。
こんな感じでお漏らし対策をした。間違いがあったら教えて欲しい。
ちなみに出来上がったサイトはこれ。
元記事にも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もいいよね。
だがRubyとPASCAL だけは無理だ。BEGINとか書いてあるソースを高速に読みこむのは無理。()ぐらいならいけるけど、BEGINってなんだよ。図形認識できないから読みづらいよ。
だから、100万件にするために、どんだけユーザー数が必要なの?
ユーザ数100人が たとえば1日10ツイートするとして 1000ツイート 100万件に達するのに 1000日 約3年
ユーザー数1000人なら 100日。
何が言いたいかというと、100日もかかるなら、バックアップタスク (たとえば5日ごとに分割)しても 1日あたりの件数はたかが知れてるから
余裕で持つだろ。という話。
ちなみに、100万件でもう崩壊しちゃうの? 数百万件ぐらいつっこんだことあるけど・・・このレベルは平気だよね?
Hadoop勉強するより先に、1万人のユーザーを集めることを先に考えたほうが良い。という話がしたかっただけ。
Hadoopを勉強する のが3ヶ月としても 3人月で人を雇うのと 3人月分の既存スペックのマシン+MySQLとどっちがいいか?というのは超微妙。
ユーザー数がたくさんいるなら、そのとおり。
テーブル分割やDB分割 サーバー分割が必要なのもそのとおり。
ただまぁ・・・単純な直列テーブルだけなら、やり方はいくらでもあるし、商用クラスをHadoopか?他の競合製品が出てこないか?というのは、しばらく様子見でしょ。
調べたけど、フェイルオーバー関連がまだ微妙な部分があって考えないといけないよね。
Google 自体が Hadoopのつかっていた、なんたらほうしきだっけ?やめて、次のアーキテクチャーにしました。ってレポでてるのに、次もHadoopか保証ないし。様子見。
1ヶ月ほど前に、アノニマスダイアリーでサービスの紹介させてもらった「完全に一致」のおっさんです。
昨年11月25日に公開させてもらったサービスですが、公開から約1ヶ月半の間、いくつも思ってもみなかった事が起こりました。
誰かに聞いて欲しいものの、例のSEの友人が精神的な病で倒れてしまい聞いてくれる人もおらず、
Twitterでは短すぎてかけず、なおかつブログもないのでここに書かせてもらいます。
最初の記事を書いて、初日から約1週間で300万アクセスがあり、この間何度もサーバーが応答しなくなるという事態に陥りました。
MySQLサーバーとWEBサーバーの調整を教えてもらったお陰で、かなりダウン回数減らす事ができたものの、結局全然処理が間に合ってくれませんでした。
公開した当初は、DMMから直接画像を読み込みを行っていましたが、怒られるんじゃないかと思い、一度読み込んだ女優画像は
サーバーに保存し2回目からは自分のサーバーの中の画像を読み、PHPで必要なサイズで書き出すというやり方をしていました。
しかし、1秒あたりのアクセス回数が多すぎた為、PHPでの処理が全く間に合わず、画像表示ができないという状況に陥りました。
いくつかの画像処理PHPを探していたところ、うまい処理をやっているスクリプトがあり、それを使わせてもらいました。
が、完全には解決できず、結局、VPSサーバーをもう一つ用意し、画像の処理専用で使うことで何とか乗り切りました。
アノニマスダイアリーからのアクセスが一段落し、そろそろ画像サーバーを消して元のサーバーに戻そうとした頃、
またアクセス数が増えだしました。何かと思ったら「R25」というサイトからでした。
R25の紹介記事(http://r25.yahoo.co.jp/fushigi/jikenbo_detail/?id=20101209-00004623-r25)
私はこのサイトを見たことがなかったのですが、ドメインからしてYahooのサービスの一つだと思います。
R25からは10日間ほど継続的にアクセスがあり、ここからも300万くらいのアクセスとなりました。
R25内のアクセス数ランキングでも3位まで上昇したことが大きかったんだと思います。
ある日、問い合わせフォームから漢字ばかりのメールが飛んできた為、文字化けしたかと思っていたら、中国の方からの問い合わせでした。
AV NO1というサイトから来たという内容で、励ましのお言葉をいただきました。
AV NO1 での紹介記事(http://avno1.com/?action-channel-name-viewblogitem-itemid-5525)
ここを皮切りに、中国、韓国、ロシア、アメリカ、カナダ等、世界中の方からアクセスしていただき、特に中国・韓国のユーザーさんは今でも多く来ています。
「日本のアダルトビデオは企画物があっていいよな!」という内容のメールを複数もらいました。
初めてつくったWEBサービスでしたが、この数字がものすごい数であることはわかりました。
先日の結果報告の日記で、200万アクセスあってDMMへの導入が10万クリック、報酬額が700円というご報告をしました。
その報告の後で、R25や各国からのアクセスがあったので、報酬はだんだん増え、結果12月は約15,000円となりました。
正直少ないんだろうなとは思いますが、15,000円は私のお小遣いからすると大金です。
DMMのアフィリエイトは、Aという商品のアフィリエイトリンクをユーザーがクリックし、Aを買った場合は報酬になるそうですが、
DMMのアフィリエイトは1商品をどううまく推薦するかが、報酬アップの肝のようです。
一番驚いた出来事。
サイトを作る時にいろんなサイトをみて、「広告について」というコンテンツを一応用意していました。
もちろん、スポンサーがつくなんて思っていなかったのですが、12月の中旬に、複数の広告代理店さんから一気に広告オファーが来ました。
広告運用の経験など無く、いろいろなサイトや記事を調べ、料金の提示をし、メールでのやりとりをさせてもらい、複数社と契約に至りました。
その結果、一ヶ月の広告収入が合わせてなんと、30万円オーバー。
DMMの報酬額の少なさにがっかりしていた矢先の出来事だったので衝撃的でした。
私の月給とほぼ同じ額が、突然口座に振り込まれるという、信じられない事が起こりました。
契約期間は単月であるため、継続かどうかはまだ決まっていませんが。
スポンサー契約の数日後、今度は「サイトを売ってくれ」というオファーが1日に2件同時にありました。
購入希望金額は、2件とも300万円という非常に高額なものを提示していただきました。
しかし、もう少しやりたい事があった為、2件ともお断りさせていただきました。
ありがたいことに、個人の方はお断りした今でも、ラブコールをいただいています。(この日記に書くことは了承をもらいました。)
サイト売却を断った理由である「もう少しやりたかった事」の一つが、今回追加した、”会えるAV女優”検索です。
AVに出ている女優さん達は、キャバクラや、ヘルス、デリバリーヘルスで働いている人も多く居るようで、
それぞれのサイトでも大々的に「AV女優在籍」と書いてあることが多くありました。
私は地方に住んでいる為、正直会える確率は低い為、都市圏にすんでいる方が羨ましいです。
有名な女優さんも多く居るようで、出張に行くときには是非、とか思ってしまいます。
見ていただける方はこちらから。
http://www.kanzen21.com/actress/
以上です。WEBサービスの運用自体が初めてなので、もしかしたら「当たり前じゃん」というような事も含まれるのかもしれません。
しかし、私にとってはとても衝撃的で、脳が痺れる体験ばかりでした。
この一ヶ月半、何度も夢に出てくる程、このサイトの事ばかりを考えていました。
結果的に大成功となりましたが、いろんな偶然や幸運が重なったお陰の成果であり、これが自分の力だとは思いません。
しかし同時に、"チャレンジした結果"であることは迷うごとなき事実だと思っています。
その道のプロじゃなくても、会社組織じゃなくても、専業じゃなくてもやれる。
アノニマスダイアリーに書くのは、おそらくこれが最後になると思います。
みなさん本当にありがとうございました。これからも完全に一致をよろしくお願いします。
本業はWEBプログラマだが、仕事の合間に、アダルト動画の検索エンジンを作ってみた。制作期間4日間(笑)
品ぞろえがいいので、何かエロ動画見たい!って時に、私はDMMを利用することが多いのだが、検索がへぼくてなかなか欲しい動画が見つからなかったりするので、自分でほしい動画を探し出せるようにデータベース化しようと思ったのが最初のきっかけ。
で、キーワードとか、女優のスリーサイズ、ジャンルなどから検索することができ、一覧と一緒にサムネイルとか文章も表示されるので、欲しい動画が探しやすいかな、と。後、自分が単体女優の出演作しか購入しないので、それも検索条件に含めることができるようにしました。
ただ、目立った機能よりも、より使いやすいようなインターフェース作ったり、快適に検索できるように内部的なシステムの調整したりするほうが先かな。
一応、安価なレンタルサーバーなので、いろいろ分散処理したり、ブラウザキャッシュを調整したりしています。
そりゃあ、やろうと思えば様々な手法があるだろうけど…
いかに余計な作業を減らして「やりたいことを実現」するための作業に専念するか、を考えている。
いろんな言語への興味はあるが、むしろそのせいで今まで時間食いまくってるので、そろそろ「手早く作る方法」を知りたい。
あんまり色々な手法を試してもいられない。
「これ!」ってやり方を決めたい。
プログラミング言語は、C C++ Java Python Perl VB C# HSP PHP JavaScriptなど、どれも基礎を触ったりしてばかりで何年も過ごしてきた。
FLASHは持ってない。(PalaFlaは触ったことあるけど、いまいちイメージしにくかった)
なんだかんだで一番慣れてるのがHTML+CSSで、次点でPHPかJavaScript。
ただ、PHPだのjavaScriptだのSQLだの、複数言語を同時に扱ってると非常に面倒。
そこでサーバーサイドJavaScriptに目をつけたものの、『Jaxer』は2008年に書かれた記事がちょっとあるばかりだし…
Node.jsってどうなんだろう…?
うーん、あまり纏まってないが、とりあえず現状をダンプしておく。
なんか参考になるものがあればなー。
こういうこと色々聞ける相手も周りにいないし…
ショックだね。超高速道路というか、そういう以前の問題だよこれは。
やろうとすることを普通の人が身につけるのに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のデータでもこれだけのレスポンスが出てしまう時代だ。
チューニングするぐらならいいハードにのっけなよということか。
デザイナーとしても食っていけるだけのスキルがあるんじゃなかろうかとおもってしまう。
もう、なんていうか調査能力もすごい。
というか調査能力がすごいんだろうな。
もう、いいおっさんの年齢なんですが、先日、とある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://anond.hatelabo.jp/20101118000033
前回:http://anond.hatelabo.jp/20101122141124
店のHP(Wordpressで構築)をさくらVPSに移転完了。
無事、稼働している様子。
これで旧サーバからおさらば出来る。
某所でもヤバイヤバイ言われており、サポート掲示板でのサービス提供者の発言も
結構ヤバゲな運用状況に陥っているのが透けて見えていた。
まぁ月々500円でmysqlやpostgresqlを使い放題だし、安かろう悪かろうじゃないけど致し方がない面もあり。
さて、今度はさくらのVPSに移ったわけだが、レビューによると性能は良いらしい。
ただし、root権限があるので自分でセキュリティやアップデートに気をつけないといけないわけだが…
現状を羅列してみる。
さすがにこれはヤバイ気がする。
みんなセキュリティはどうしてるんだろ?あと追加でやるとすれば…
そんなことは言っていない
『最近のWebシステムって、遅いことがあるよねperlにしろRubyにしろ・・・ という話題をすると・・・mod_perlは遅くないとか、lightyとかmemcachedとか いう返答が帰ってくるのにうんざりした。... 』
Webシステムが 根源的に遅いのか、速いのか そんなことは ではなく。
perlが遅いとか、Rubyが遅いとか、PHPでもJavaでもなんでもいいよ。 それが遅いだ、速いだ。あげくはHTTPがApacheだlightyだ memcached だmysqlだ。
他社が作ってる 又は 他人が作ってるOSSが作ってる ソフトの話をされることにうんざりした。
という話だ。
そりゃ、それぞれ、その会社がやることであって、貴方のところじゃないでしょと。 貴方のところのパートを速くするお話がしたいんだよと。
追加だけど
お金があったとして お金があるならmemcached,mysql,mod_perl,RoRの中を調べてみます じゃ 困るんだよ。
淡々と、memcached,mysql,mod_perl,RoR の中を探っていました。お金さえあれば、その経験を生かして 良い物が作れます。じゃないと。
他人に説明できない。
議論にならないから、 『今のWebシステムがなんで遅いのか』を述べてから言ってみて。
ちなみに、DBが9ms プログラムが1msだから10msのDBを改善しましょうねってのはわかるが。プログラムを0.5msにすることで、5%ほど改善することも事実なんだよね。
そして、DBなんて、これ以上そんなに早くなるの?と。memcached?それは、みんな当たり前にやってることでしょ?差別化要因にならぬ。
で、単位時間100万セッション貼ってたら5万セッションほどそれで改善するわけだ。複合効果でDBも楽になるだろ。1セッションが短くなれば。
逆に言えば、DB速くしますって Mysqlの中身を改造しますならPG。memcached入れますだけだとね・・・
memcachedいれた上に、独自改造なので他社よりさらに速いです。なら、それはわかる。エンジニアリングだ。
その差は小さいけど、重要なんだよね。memcachedを使うだけ?それとも、memcachedを使いこなしてパラメーターだけじゃなくて、中身のチューニングまでやってくれんの?
が巡ってくるとは、その時は夢にも思わなかった。
俺はたまたまその事件現場に遭遇してしまったのだ。
「やめてください、お願いですから・・・」
哀願する派遣社員を取り囲むように
「さっさと社にもどれ!お前がバックレた時に消していったデータ復活させるんだよ!!」
と、3人のプログラマー。
「・・・やめないか、土方。」
思わず、口をついで出てしまった挑発の文句。もう後には引けない。
ならば・・・と、俺は左手で、懐からPHP逆引き大全を取り出す。
俺はすかさず、正面のKENT似の男の鳩尾に蹴りを叩き込む。
悶絶し、倒れるPerl Monger。
pythonistaの鼻の骨が砕け、昏倒する。
「10日でおぼえるPHP5入門エルボー!」 もう一人のサスペンダーの頭蓋骨を砕く。
一撃必殺。 一瞬にして、
俺を取り囲むように倒れ悶絶する壊れたプログラマーが4つできあがった。
「次からは、相手を見て喧嘩を売ることだな・・・。」
返り血で真っ赤に染まったPHPによるWebアプリケーションスーパーサンプルを拭き取りながらそっと、
「持っててよかった、基礎からのMySQL。」
募集要項
・運営ツールの開発
求める経験
【必須経験】
・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も仮に一から自分で全部作れと言われても簡単なものなら作れるレベルだよ。
しかし…
2chレン鯖板スレッド+http://f43.aaa.livedoor.jp/~sils/参照、レン鯖板の各スレより拾った。
ぐぐって見つけたコチラも参照した。http://arekore.hp2.jp/pay/
あくまでCMSツールを使用して一から同人サイトを作りたい+サポート、メール、コントロールパネル、アクセス解析は無くていい人向けです。
順次[試用しての感想]追加予定。特に記載が無いものは使える/出来る項目。
■条件(上から下へかけて優先順位が下がる)
- 月額1000円以下
- 同人を公式に許可(同人アダルトの可否/あくまで字書き18禁+局部修正でギリギリ可向)
- MySQLが使え、バージョンが新しい[試用しての感想]
- mod_rewriteがインストールされている
- PHPバージョンが新しい
- .htaccessが使える
- CGIが使える
- sendmailが使える
■以下備考
残念ながらさくらインターネットが総合的に見ていいのかもしれない。
サイト毎にDBを分けたいとかセーフモードやら、同人という壁は大きい。
phpMyadminは自分でインストールする。鯖によってphpとMySQLのバージョンが違うので面倒。
mod_rewrite使えない。
セーフモードなのでWPの自動アップデートが出来ない。DBが十つ付いている。
WP設定が楽。DB鯖は当たり外れ有。[個人的には重いと感じる]
上位にチカッパ等あるがこちらは規約に同人が触れられていない。
バックアップ機能有(大概の鯖は規約で、サーバ側でデータを消失しても責任は負わないと記述)
試用無し。MySQL使用不可
容量100MB
独自ドメイン不可
容量200MB~
海外鯖
永らく募集が止まったりする
DB無制限
試用無し(ただし14日間までならクーリングオフで、手数料15%引きで返金有)
レスポンスが遅い(入金確認等)
試用無し。
女性専用
容量50~100MB、独自ドメイン可
DBが十つ/無制限付いている。
DB鯖は当たり外れ有、だがさくらと違い鯖間移動が簡単に出来る。
miniの方が共有相手に業者が少ない為軽いらしい。
無料でも出来る所は多々あるので触れないが、今まで使ってきた鯖感想
最低限ファイルのアップロードや設置が出来るレベルでないと厳しい。
サポートはほぼ機能していないので自分で調べて自分で全部設定する。
ただし出来る事が多いので、中上級者向けには最適。
コントロールパネルやファイルアップローダ、アクセス解析付き。
見てる限りでは落ちたのを見たことがない。
フォーラムには初心者が溢れて和やかなのでデビューにはいいかもしれない。
鯖管に特徴があるので人を選ぶかも。
MySQLが使えないが、人数が少ないので快適。同人アダルトOK。
審査制。
規約は同人に寛容だが、初心者お断り。審査制だが相当でないと落ちることは無い。
コントロールパネル、アップローダ等は一切無いがxreaのように必要なものは揃っている。
たまに落ちる。個人的にここのDB鯖はさくらより軽快だと思う。
結構苦労したので健忘録として。。
環境は以下のとおり
yum install mysql-server
/etc/init.d/mysqld start
mysql_secure_installation
jruby -S gem install rails jruby -S gem install warbler jruby -S gem install activerecord-jdbc-adapter jruby -S gem install activerecord-jdbcmysql-adapter jruby -S gem install jdbc-mysql
mysql -u root -p mysql> create database redmine character set utf8; mysql> grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'redmine'; mysql> exit
(任意の場所にRedmineを解凍して、解凍先のディレクトリに移動した後)
cp config/database.yml.example config/database.yml vi config/database.yml
database.yml
production: adapter: jdbcmysql database: redmine host: localhost username: redmine password: redmine encoding: utf8 #development: # # #test: # #
後のwarbleでのエラーを防ぐため、developmentとtestをコメントアウト
jruby -S rake generate_session_store jruby -S rake db:migrate RAILS_ENV=production jruby -S rake load_default_data RAILS_ENV=production
script/serverで起動し、http://localhost:3000 にアクセスして正常に動作するか確認する
jruby script/server -e production
vi config/environments/production.rb config.logger = Logger.new(config.log_path) config.logger.level = Logger::INFO
warble.rbを生成
jruby -S warble config
warble.rbを修正
vi config/warble.rb config.dirs = %w(app config lib log vendor tmp extra files lang) config.gems = ["jdbc-mysql", "activerecord-jdbcmysql-adapter", "activerecord-jdbc-adapter"] config.gems["rails"] = "2.3.5" config.gems["rack"] = "1.0.1" config.webxml.rails.env = "production"
jruby -S warble
できたwarファイルをTomcatに配置して、Tomcatを起動する
mv redmine-0.9.3.war /usr/local/tomcat/webapps/redmine.war /usr/local/tomcat/bin/startup.sh
warblerのバグ(?)でwarに入らないファイルをコピーして入れる
cp vendor/gems/rubytree-0.5.2/.specification /usr/local/tomcat/webapps/redmine/WEB-INF/vendor/gems/rubytree-0.5.2
あくまで、Fラン私立文系の落ちこぼれ学生が就職活動してみて思ったことなので、実際その職種が実態は一切保証しない。でたらめである。
具体的に言うと、文系は特別な資格が無い場合、ほとんどの人が飲食・介護・レジャー・サービス・営業の職に就く。昔みたいな総合職・事務職は効率化と技術革新で、機械に仕事取られて減ってる上に、椅子取りの倍率が半端じゃない。
これらの業界は構造的な問題を抱えているので、キャリアアップには、他の業界の何倍も労力が必要であると感じた。自分には無理だと思った。
現状の大手就活サイトは一社に並ぶ行列の長さが半端じゃない。祝日のディズニーアトラクションのように、何時までたっても乗ることが出来ない。ファストパスの存在を探して、以下にズルするかが求められる。
就職活動以降は、違法行為でなければ、いくらでもカンニング・ズルが許される。真面目になんかやってられない。真面目にキャリア支援課やリクナビで活動するよりも「どうやってその他大勢の学生を出し抜くか」を考えた方が効果的だと思う。
今振り返ると、SPI対策やら、適正試験対策、「正しい就職活動」みたいな技術はほとんど無駄だった。「シューカツスキル」はそれ単体では何の役にも立たない。
例えば大学三年から気合いを入れて「シューカツスキル」を磨き続けても、もし内定取り消しでも食らって留年した場合、20から22歳までの三年間を「シューカツスキル」に費やすことになる。しかし、実際は社会で役立つスキルはほとんど身につかない。
ただ、笑顔で丁寧に挨拶して、相手と良好な関係を築く技術は普遍。この辺は演じれば良い。
この際、おっさんぐらいまでの年上とコミュニケーションすることが好きだと、楽に出来る。
以上のような文系の民間就職の惨状が広がる中、教員は数少ない安定した選択肢であると思う。
大量の団塊世代の引退と、少人数学級の普及で教員採用試験の倍率は下がり続けている。
平成22年度(21年度実施)東京都教員採用選考における主な改善について
http://www.kyoiku.metro.tokyo.jp/press/pr090205j.htm
これを見る限り、東京都の教採の倍率は下がり続けており、21年度には小学校教員で過去最低の2.6倍を記録している。東京都の小学校教員は社会的に相当な穴場ではないだろうか。
もちろん、教員は大変な職業であり、その他の職業と同じく割に合わないことばかり。ただ、志がある人にとってはこの状況はかなり恵まれていると言って良いのではないだろうか。
22年度以降は社会人採用の規制緩和、不景気による他業界からの流入などの要因で他の公務員試験と同じく倍率が上昇する可能性もある。ただし、小学校教員免許は参入障壁が高く、急な倍率上昇はそれほど無いのではないだろうか。
一方、地方の倍率は以前として高く、都内の五倍以上の差が開いている状況もある。
http://www.toonippo.co.jp/news_too/nto2008/20080702182831.asp?fsn=eb33f76037153e93cde084f7e7644d6f
地方での教員採用試験突破はかなりの難関である。近年、仕事は東京に局地的に集中しており、仕事をするには東京というのが現実的な選択肢となりそうだ。
これでは就活は絶対に無理。
あったのはずっと好きで考え続けていた、メディアの知識。
でもメディアの知識だけでご飯が食べられる時代は終わった。
Twitter始めてからそんな風に思い始めて、プログラミングを始めた。
(ちなみにTwitterは広告、IT業界の二つの業種では就職に必ず役立つ)
VBA,Ruby,Perl,c++,php,MySQL辺りをかじった。ほんとにかじる程度。
でも、かじってみると業界の様子がすごくよく分かる。同じプログラミングでもRuby on Railsと.NETを使う人では業種が違うぐらいやっていることが違う。
で、そのうち自分がどういうところで働いたら楽しそうで、どういうところだと楽しそうじゃないかが見えてくる。自分の場合はガチのSierに入っても絶対に向いていないと思った。
やりたいのは、"プログラミングを通して、人の心を動かせる仕事"だった。
そんな事が分かったら、就活は運良く二ヶ月で終わって、現時点でやりたいと思ってる仕事に就けた。
でも、ブラックかもしれないし、何かが折れるかもしれないし、暮らしていけないかもしれない。
まぁこんな屑でも内定は取れますよってだけの話。
・文系ヤバイ
・教員は倍率低い
で、一番言いたいのは
「ラーメン屋になりたければラーメンをまず作れ」ということ。偉い人の受け売りなんだけど。
シューカツなんてどうでもいいから、ラーメン作ればいいよ。
はてな記法とか無視で読みにくいですがゴメンナサイ。
かいたひと→http://twitter.com/chobi_e
follow/unfollowはご自由にどうぞ。
うん、次なんか書くまでにはブログ用意しておこう。
===============
会社としてもOpenSocialに関わってるし、個人でもちょいちょい
勉強がてらに手を出しているので参加させていただきました。
会場を提供してくださったコンテンツワンさんありがとうございました。
http://www.contents-one.co.jp/
ほいではメモの公開。
聞き逃しや誤記もあるかと思うので参照はほどほどに。
=============================
mixi機能の紹介とOpenSocialAPIリファレンス的な説明。
あとは公開するのは微妙なので割愛。
PHPでWEB開発を行うようにしてオープンソーシャルアプリを作る(@KuniTsuji)
=======================================================================
CodeIgniterを使ってのmixiアプリ構築についてのお話。
OpenSocial開発しているので全て既知の情報だったので
メモがありません。ゴメンナサイ。
要約するとPCはつくるのめんどいけどモバイルだとぺらいちで済むし、
運用した気になるモバイルオープンソーシャル (@cocoitiban)
=========================================================
ウノウさんは社員募集中、@cocoitibanは彼女募集中!
@cocoitibanのお仕事
映画生活(ピアに売却)、フォト増、clipp、まちつく
・まちつくについて
位置ゲー、もともとふつうのモバイルアプリとして提供していた。(ユーザー数非公開)
・リリース前
・社長がやりたい→同僚がすごい勢いで作成。@cocoitibanは横で傍観
(モバイルOpenSocialって元のサービスがあれば結構勢いですぐ作れるんですよね。)
・ロードアベレージ1000でも登録できるんだー
そして、当然のように他社を含め登録ができなくなるw
・初日から1週間は1日10万のペースで増えた
・mixiに登録しているユーザーだからまちつくに登録という意識は低いっぽいですが
・ウノウには3時間で画像生成をキュー処理に書き換えたやつがいる
・ボトルネックになりそうなものを全部退治
・ハードウェア確実に足りないので購入進める
・二日目、三日目と同じように+10万人ってトラフィックをさばかなきゃいけない
・リリースから今まで
・初期(パフォーマンスアップ)
・回線が足りなくなりつつあることに気がつく100Mなのに・・・
・決めてから1週間くらいでリリース
・Memcached適用範囲を増やす
・一部機能を企画レベルで見直しふかがひくなるかつ、よりよい動作へ。
・初期パフォーマンスアップ
・L7ロードバランサふやす
・DBマスタ分割
クエリはチューニングされていてCPUやDisk ioのreadはすかすかだけどWriteが痛い事に
・ORMの機能をつかって分割
・トランザクション上影響ないものを分割
・サーバー台数的にはそんなにない。
・中期
・ちょっとだけいいサーバーに置き換え
→あっさり解決
・本格的な機能改善
ユーザーに不便かけてる機能とかを大幅見直し
・社員数増員
・8Fに追加して4Fに事務所を移すことに
・引っ越し大変でした
・可能な限り早くしたかったがユーザーに不便をかけている段階ではリリースできなかった。
・中期
・一部処理をQ4Mに置き換え
・EC2とはおわかれできた
・EC2は悪くないがサーバーがある現状ではコスト間と運用の体制のにゃー(メモ終わる前に次のページへ)
・まとめると
・数ヶ月、数人のエンジニアでおこなわれたので長短納期
・力業だが安定志向を目指す方がいい
・変わったことやると大体トラブって死ぬ
・しかし新しい事やらないと間に合わない
[そのほかメモ]
・Q4M
・Gearman
・ActiveMQ
・自前で実装
・そのほかいいのがあれば
・キュー処理っているの?
・実装クイズ
・Friends1000人いて全員取りに行く場合どうする?
・キャッシュとして定期的に削除しなきゃだめ
・いや1000人とってきちゃおうよ
・トラフィックの波が激しい
・流入云々でかなり違う
・分散のネックはやはりデータベース
・ORMは使うべき
・流行るか流行らないか分からないサービスをつくる場合には必要
・はやった場合にすぐ分割できるか
・トランザクションがネックになる
・XAトランザクション
・トランザクションを正しく処理できるか
・KVSとの透過性
・逆をいえば上記はコードを綺麗にかけるかどうかなので使わなくてもいいと思う
・エンジニアとして思ったこと
・EC2はありだけど運用がイントラで運用するのとは違う形になるので経験が必要だと感じた。
・AmazoRDSが別の地域で使えるようになるといいなぁ。
・どきどきするのが課金。コストをいやいやでもエンジニアが意識せざるを得なくなる
・かなりはやい
・半年1年後、国内レベルのトラフィックであれば大半のWEBサービスは1台でおk
・ip_conntrack/iptable
・ulimit
・Symfony使ったけどそんなボトルネックにならなかった的な話。
・バッチ処理とかforkで悩むことが多い
# 総評
最近はめっきり大きなトラフィックを扱うことがなかったからちょっと刺激もらえました。
前の会社ではサーバー200台くらい管理してたけど今の会社では数十台程度だし、
そこまでトラフィックもこないのでサーバーエンジニアとしては体たらく気味。
まぁ、業務的には様々な方面でやっているので仕方のない事ですが。
とりあえず現状で出しておいて流行したら確実に死ぬ&寝れなくなるので事前に
震える子鹿のようにただビールをひたすら飲むのでありました。
そんな私に声かけてくださった皆様、ありがとうございます。
お名前/ID出していいのか微妙なので割愛させていただきますが、感謝感動雨あられでございます。
そうそう、個人的には今の流行がTwigなので@cocoitibanともうちょっと
お話したかったですが懇親会LTもありーの、飲み過ぎて気持ちわりーので実現せず。
Twigすごく良いとは思うんだけどいまいちドキュメントが少ないので
本当にこれでいいんか?て思うことが結構あるのよねー。
Node周りの実装がぱっと見分かりづらいので難儀。
そいじゃ会社いってきまー