はてなキーワード: LOGINとは
1年ぐらい前に「そういえば日本の歴史は教科書を読めばいいけど、インターネット上の歴史は意外とまとまってないよな」とふと思いつきで書いて、以降何か思い出す度にちまちまと書いてて、最終的に本にするかどっかで公開しようかと思ってた。
が、金取るほどじゃないし、そもそも出典元は自分の記憶とWikipediaとかその他ウェブサイトだし、正確性も担保できないし、どうせなら皆で見て「あーこういうのあったねー」とか「これが無い!」とか言い合うのも楽しいと思ったので書く。
あと、自分だけでなく、一度某所に公開して出てきたやつも一部混ざってます。※2016年まであります。
・アメリカで現代のインターネットの起源となる「ARPANET」が始動する。最初はカリフォルニア大学ロサンゼルス校とスタンフォード研究所、カルフォルニア大学サンタバーバラ校、ユタ大学の4つを結ぶネットワークから始まった。最初に送信されたメッセージは”lo”だった。(login:を入力しようとしてクラッシュした)
・東北大学とARPANETが接続される。日本にARPANETが入った最初の出来事である。
・慶應義塾大学と東京工業大学を接続するJUNETが誕生。日本におけるインターネットの起源。後に東京大学をはじめ、様々な研究機関や大学が接続されるようになる。
〜〜中略〜〜
・Windows95誕生。一般市民にインターネットが急速に広まる。地下鉄サリン事件発生。
・阪神淡路大震災発生
https://www.youtube.com/watch?v=ktPL7X7nFXk
https://www.youtube.com/watch?v=FvfBJapb2pw
・芝雅之により掲示板「あやしいわーるど」が誕生。日本インターネットのアンダーグラウンドの祖先。元は地下鉄サリン事件を題材にした不謹慎ゲームを配布するために立ち上げたウェブサイト。
あやしいわーるどで発生した文化は後のインターネットに大きな影響を与えたものも多い。
・ネット流行語:「マターリ」「ヽ(´ー`)ノ」「『餃』『子』『の』『王』『将』」「萌え」「Warez」「ギコ猫」「ツンデレ」
・あめぞうにより「あめぞうリンク」誕生。酒鬼薔薇事件発生。あやしいわーるどに少年Aの実名が投稿される。
・あやしいわーるど閉鎖。あやしいわーるどから派生した掲示板が大量に発生する。これらは2016年現在も続いているものもある。
・「あめぞうリンク」にスレッドフロート型掲示板(あめぞう掲示板)が設置される。最初にあったのは「掲示板ニュース速報」「株式速報」
読みづらいとされていた大型掲示板サイトの中でこのシステムは当時は画期的で、爆発的な人気を誇るようになる。
・この頃に「ひろゆき」出現。
・この頃はまだコンピュータも高価で、インターネットもまだ滅多に使われず高額だったため、利用者が好事家に限られていた。雑談以外には、株式、経済、社会情勢、コンピュータ等、専門的で高度な話題が多かったとされている。
・テキストサイト全盛期
・あめぞうの利用者が増加し、サーバ確保が困難になったり荒らしが増えるようになり運営に様々な問題を抱えるようになる。
・サイトの引き継ぎ先を求めていたあめぞうの声に応える形で同年、利用者の1人であったひろゆきにより「2ちゃんねる」が誕生。当時は「あめぞうのセカンドチャンネル」という位置づけとされていた。1日あたり1万人程度の来訪者。
https://www.youtube.com/watch?v=h22l8iWAW18
https://www.youtube.com/watch?v=6rNZBF9DXTU
・スクリプト荒らしによりあめぞう掲示板壊滅。同年閉鎖。西鉄バスジャック事件発生。犯人が2chに書き込んでいたことを受けてひろゆきが初めてテレビに出る。
・ネット流行語:「(この掲示板は)匿名というのが前提になりますので、うそもあるし、ひどいことも書かれます。そういうのをうそはうそであるとか、見抜ける人でないと(掲示板を使うのは)難しいものがあるでしょう」
・教育改革国民会議(森内閣)「バーチャル・リアリティは悪であるということをハッキリと言う」
http://www.nicovideo.jp/watch/nm3956863
https://www.youtube.com/watch?v=LWSZMrz0zsk
・2chに対抗した1ch.tv誕生。あめぞうと西和彦が関わる。
・アメリカ同時多発テロ事件発生
・先行者出現
・田代神
・MAD GEAR SOLIDの1作目が公開される。「性欲をもてあます」
・グリッドコンピューティングを用いたUD ガン研究プロジェクトが開始。2007年に終了するまでの間、Team2chが大きく貢献する
・WinMXで逮捕者。「かぎのおとが おやがかぎわたしや もうだめぽ」
・ドラえもんのキャラを使ったFlashが流行(後にオラサイトと呼ばれる)
https://www.youtube.com/watch?v=DaoGHZFKt6s
https://www.youtube.com/watch?v=nQl3NIJYkt0
とりあえずVirtualBoxをインストール。ここで躓く人は話にならんので置いていく。
http://archive.ubuntu.com/ubuntu/dists/saucy/main/installer-i386/current/images/netboot/mini.iso
こいつをダウンロードする。インストールCDROMのイメージファイルだ。ウインドウ環境とかなくてCUIだけのやつ
VirtualVBoxで「新規」とする。
こう打ったら「続ける」を押す
メモリは1024MBくらいでいいんじゃないの。大したことしないし
仮想ハードドライブは「作成する」フォーマットはVDIでよろしい
ストレージのタイプは可変でも固定でもいいけど俺なら可変にするかな
で、8GBで作成。Cをいじるなら十二分すぎる。2GBくらいでもいいよ
次。「設定」の「ストレージ」でIDEが空になってると思うから「IDE」の部分を選択して「+」のついたアイコンを押す。丸い方ね。CDROMの代わりだから。
OKを押したら「起動」をクリック。
Ubuntuの画面が出ると思うから、矢印で「Install」を選んでエンター。言語選択になるからJapaneseね
キーボードも初心者なら日本語キーボード使ってるだろうからそれに従う。不安なら、「2」の上が「@」になってればUSキーボード、「”」になってれば日本語キーボード
Ubuntuの画面に入ると抜けられなくなるから、抜ける時は「Alt」を押せばいい。多分。
あとアーカイブミラーとかいろいろ聞かれるけどデフォルトでおk
そうこうしてるとインストールが始まるから数分眺めてればよろしい
本名とか聞かれるけどスルーでよい。ユーザー名は大事だからよく使うものを。パスワードも一応堅牢なものにしようね
ホームディレクトリは暗号化しなくよろし。盗まれて困るようなもの作らないでしょ
その後英語でタイムゾーンはAsia/Tokyoか?って聞いてくるのでYES(あるいは「はい」)
「ディスクに変更を加えるか?」のデフォルトがNOなのでYESを押す
そうすると「ベースシステムをインストールしています」と出るのでまた数分待つ。お茶でも入れよう
セキュリティアップデートについて聞かれるな……。手動でいいんじゃないの?うっかりさんは自動で。
適用するプログラムの一覧とか出るけど、特にこれってのがなければ無視で。後から入れられるので。あ、G++があるかどうか確認せずに次いっちゃった。まあいいか
GRUBがどうのとか聞かれるけどVirtual環境でマルチブートする意味はほとんどないのでそのままYESで
そうこうしてるうちに「インストールおめでとう」みたいな感じになって最初の画面にもどるので
電源OFFで。構わん。OFFで。
「設定」の「ストレージ」でさっきのmini.isoを外す。選択して「ー」ボタンで外せるから。
そこまでしたらもっかい起動してみて。
みたいになったら成功。
登録したユーザーとパスワードを打ったらログインできる。できない人は打ち間違いかもしれないのでやりなおし。
ここで気づいたのだが、端末のフォントが日本語に対応してないので次のコマンドを打つ
export LANG=C
export LOCALE=C
前のはこれ http://anond.hatelabo.jp/20121219191602
http://toro.2ch.net/test/read.cgi/unix/1036951410/601
601 :名無しさん@お腹いっぱい。:2012/07/10(火) 15:04:00.62 今月はじめ、職場に古いパソコン(i486DX2の結構ローエンド構成)が入りました。 多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要がありハードにパソコン系を採用するのは聞いていたの ですが、搬入されたパソコンのダンホール箱に印刷されていたのはPC-9801という 文字でした。 「うへぇ~、よりによって98かよ」 NetBSD/OpenBSDインストール不可、Solarisも不可、SATA-HDDからブートできるのか、 今時のLCDディスプレイにつながるのか、FreeBSD9.xは対応してるのか、 今時のネットに繋いでもセキュリティは大丈夫なのか不安はつきませんし、 非メジャーなのでネット上の情報も少なく調べるのも大変です。 おそらく導入に際して、大学など教育機関で最初にそれに触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、唯一コンソールでの漢字ROMによる日本語表示ができたPC-98は大学など 教育機関に浸透していて、日本のパソコン界に多くのバカを輩出しました。 これから私は、おそらくそういうバカが、makeしてもemacsが入らない、 TeXが入らない、firefoxは使えないのか、Rubyが使えないのかなどと、 サバ管気取りの偏ったどうでもいい我侭を言い出し、(だから鯖にするんじゃねーよ、 鯖の常識で話すなつーのに)それと戦わなければならないのでしょう。 そして時代によって決着している、過去20年のパソコン界隈のくだらないそれらの 議論が再現され、それに巻き込まれるのでしょう。もう今からうんざりです。 だからお願いです。教育現場ではPC/ATでもSPARCでもPA-RISCでも PowerPCでもなんでもいいですがメジャーかつ現行のマシンにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
http://toro.2ch.net/test/read.cgi/unix/992942337/737
737 :名無しさん@お腹いっぱい。:2012/09/16(日) 16:27:31.40 今月はじめ、職場に新しい組み込みマシン(ファンレスの結構省電力構成)が入りました。 多分私が開発全般をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要があり、プログラムにアセンブラを使用するのは 聞いていたのですが、添付のサンプルソースコードからチラッと見えたのは LD A,(HL)という命令でした。 「うへぇ~、よりによってZ80かよ」 アドレッシングモード皆無、リロケート不可、使いにくいインデックスレジスタ、 今時の関数引数のスタック渡しに対応できるのか不安はつきませんし、 今の若者はこんなCPU使わないので人材も少なくソフト開発も大変です。 おそらく導入に際して、大学など教育機関で最初にZ80に触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、8bitCPUでi8080上位互換でi8085よりも多くのツギハギ命令を追加拡張した Z80は大学など教育機関に浸透していて、日本のCPU界に多くのバカが輩出しました。 これから私は、おそらくそういうバカが、ADD A,(HL)はできるのにADD B,(HL)は できないのかとか、相対アドレスのCALL命令はないのとか、 スタックフレームポインタとして使いたいのにLD HL,SPっていう命令ないじゃんとか、 アセンブラ通気取りの偏ったどうでもいい我侭を言い出し(だからZ80使うんじゃねーよ) それと戦わなければならないのでしょう。そして時代によって決着している、 過去30余年のCPU界隈のくだらないそれらの議論が再現され、それに巻き込まれるの でしょう。もう今からうんざりです。 だからお願いです。教育現場ではi386でもi568でもi686でも x86_64でもなんでもいいですが現行のCPUにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
http://toro.2ch.net/test/read.cgi/unix/1011306728/134
134 :名無しさん@お腹いっぱい。:2012/07/15(日) 14:17:53.53 今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。 多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要があり、X Window System上のアプリケーションを 使用するのは聞いていたのですが、OSを起動して黒いバックに白い文字だけの 英語の画面に表示されていたのはlogin:というプロンプトでした。 「うへぇ~、よりによってxinit方式かよ」 CUIログインなんて古い、コマンド入力なんて古い、今の奴は日本語入力設定大丈夫 なのか(XMODIFIERS)、今時のマルチシート環境に対応できるのか不安はつきませんし、 xinitユーザーが少ないのでネット上の情報も少なく調べるのも大変です。 おそらく導入に際して、大学など教育機関で最初にxinitに触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、X11で唯一$HOME/.xinitrcを手書きするというCUI的方法で環境設定できた xinit方式は大学など教育機関に浸透していて、日本のX11界に多くのバカが輩出しました。 これから私は、おそらくそういうバカが、GNOME/KDEはどうやって起動するのか、 ウィンドウマネージャを終了したらXごと落ちたとか、ck-xinit-sessionはないのか などと、X11通気取りの偏ったどうでもいい我侭を言い出し(だからxinit方式にするん じゃねーよ)それと戦わなければならないのでしょう。そして時代によって 決着している、過去25年のX11界隈のくだらないそれらの議論が再現され、 それに巻き込まれるのでしょう。もう今からうんざりです。 だからお願いです。教育現場ではgdmでもkdmでもwdmでも xdmでもなんでもいいですがグラフィカルなディスプレイマネージャにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
http://toro.2ch.net/test/read.cgi/unix/1094041299/383
383 :名無しさん@お腹いっぱい。:2012/07/12(木) 19:20:13.06 今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。 多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要があり、制御コマンドとしてシェルスクリプトを 使用するのは聞いていたのですが、そのファイルを開いて1行目に書かれていたのは #!/bin/tcshという文字列でした。 「うへぇ~、よりによってtcshかよ」 ファイル記述子のリダイレクト不可、クオートのネスティング等に無理あり、 今の奴でさえシェル関数は使えないし、パイプラインの終了ステータスもおかしいし、 今時の担当者が扱ってセキュリティは大丈夫なのか不安はつきませんし、 スクリプトとしてのcshは嫌われるのでネット上の情報も少なく調べるのも大変です。 おそらく導入に際して、大学など教育機関で最初にcshに触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、シェルで唯一aliasやhistoryやジョブコントロールの機能が使えた cshは大学など教育機関に浸透していて、日本のシェル界に多くのバカを輩出しました。 これから私は、おそらくそういうバカが、$*でスペース入りファイル名が扱えないとか $<でファイルから読めないのかとか、if文の条件式のコマンドでリダイレクト できないのかなどと、シェル通気取りの偏ったどうでもいい我侭を言い出し (だからcshスクリプト書くんじゃねーよ)それと戦わなければならないのでしょう。 そして時代によって決着している、過去25年のシェル界隈のくだらないそれらの議論が 再現され、それに巻き込まれるのでしょう。もう今からうんざりです。 だからお願いです。教育現場ではbashでもzshでもkshでもashでも Bourne shでもなんでもいいですがBシェル系のシェルにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
続く。
http://engawa.2ch.net/test/read.cgi/linux/1263028279/298
298 :login:Penguin:2012/03/14(水) 06:01:43.41 ID:gAhyxynR >>283 >>291がVineを押してますが… 今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。多分私が運用保守をまかされそうな 雰囲気です。業務的にとある構造分析やシミュレーションなど行う必要がありOSにLinuxを採用するのは 聞いていたのですが、搬入されたPCのダンホール箱に乗っかっていたのはVineのインストールパッケージでした。 「うへぇ~、よりによってVineかよ」 カーネルが古い、日本語環境が古い、ソフトが古い・揃ってない、今の奴は日本語文字コード大丈夫なのか(utf-8)、 x86_64環境は大丈夫なのか、今時のネットに繋いでもセキュリティは大丈夫なのか不安はつきませんし、 非メジャーなのでネット上の情報もすくなく調べるのも大変です。 おそらく導入に際して、大学など教育機関で最初にそれに触れてすりこまれた人間が強気の知ったかぶりをして 発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、唯一日本語環境が充実していた(*)Vineは大学など教育機関に浸透していて、日本のLinux界に多くのバカを 輩出しました。((*)昔の話です。現在はutf8対応やsambaのvfs対応など使い物にならないレベルで遅れていそうです) これから私は、おそらくそういうバカが、emacsを入れさせろ、Texを入れさせろ、コンソールでEUCは使えないのか、 crond使えないのかとかなどと、サバ缶気取りの偏ったどうでもいい我侭をいいだし、(だから鯖にするんじゃねーよ、 鯖の常識で話すなつーのに)それと戦わなければならないのでしょう。そして時代によって決着している、過去20年の Linux界隈のくだらないそれらの議論が再現され、それに巻き込まれるのでしょう。もう今からうんざりです。 だからお願いです。教育現場ではubuntuでもdebianでもFedoraでもRHELでもopenSUSEでもなんでもいいですが メジャーかつ現行のものものにしてください。Kernel2.6 gcc4 glibc2.4 GNOME3/KDE4が最低ラインです。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
http://toro.2ch.net/test/read.cgi/unix/999172129/740
740 :名無しさん@お腹いっぱい。:2012/03/15(木) 13:42:50.73 今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。 多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要がありOSにUNIX系を採用するのは聞いていたのですが、 搬入されたPCのダンホール箱に乗っかっていたのはSolarisのインストールパッケージ でした。 「うへぇ~、よりによってSolarisかよ」 カーネル再構築不可、コマンドが変・オプションがない、KDE環境がない、 今の奴は日本語文字コード大丈夫なのか(ja_JP.PCK)、x86_64環境は大丈夫なのか、 今時のネットに繋いでもセキュリティは大丈夫なのか不安はつきませんし、 非メジャーなのでネット上の情報も少なく調べるのも大変です。 おそらく導入に際して、大学など教育機関で最初にそれに触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、唯一フリーウェアのmake一発率が高かったSunOSは大学など教育機関に 浸透していて、日本のSolaris界に多くのバカを輩出しました。 これから私は、おそらくそういうバカが、makeしてもemacsが入らない、 TeXが入らない、コンソールでEUCは使えないのか、Rubyが使えないのかなどと、 サバ管気取りの偏ったどうでもいい我侭を言い出し、(だから鯖にするんじゃねーよ、 鯖の常識で話すなつーのに)それと戦わなければならないのでしょう。 そして時代によって決着している、過去20年のSolaris界隈のくだらないそれらの議論が 再現され、それに巻き込まれるのでしょう。もう今からうんざりです。 だからお願いです。教育現場ではUbuntuでもDebianでもFedoraでもRHELでも OpenSUSEでもなんでもいいですがメジャーかつ現行のLinuxにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
http://toro.2ch.net/test/read.cgi/unix/1000022300/812
812 :名無しさん@お腹いっぱい。:2012/07/18(水) 15:51:49.38 今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。 多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要があり、拡張カードを刺してHDDを増設して使う ことは聞いていたのですが、納品された拡張カードに書かれていたのは AHA-2940Uという型番でした。 「うへぇ~、よりによってSCSIかよ」 たった20MB/s、コネクタもケーブルも太くて古めかしい、今の奴はOS入れても /としてマウントできるのか、今時の高速HDDに対応できるのか不安はつきませんし、 SCSIユーザーが少ないのでネット上の情報も少なく調べるのも大変です。 おそらく導入に際して、大学など教育機関で最初にSCSIに触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、唯一HDDやCD/MO、テープドライブ等を外付けにでき、デイジーチェインで 拡張性が高かったSCSIは大学など教育機関に浸透していて、日本のストレージ界に 多くのバカが輩出しました。 これから私は、おそらくそういうバカが、ターミネーターが無いよとか、 SCSIケーブル全長1.5mだっけ? 6mじゃないの?とか、SCSI IDがぶつかっちゃった、 などと、SCSI通気取りの偏ったどうでもいい我侭を言い出し(だからSCSIにするん じゃねーよ)それと戦わなければならないのでしょう。そして時代によって 決着している、過去25年のSCSI界隈のくだらないそれらの議論が再現され、 それに巻き込まれるのでしょう。もう今からうんざりです。 だからお願いです。教育現場ではSATA1でもSATA2でもSATA3でも eSATAでもなんでもいいですがシリアルATAのHDDにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
http://toro.2ch.net/test/read.cgi/unix/1061122459/497
497 :名無しさん@お腹いっぱい。:2012/08/03(金) 20:34:26.89 今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。 多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要があり、X Window System上のアプリケーションを 使用するのは聞いていたのですが、X11を起動して表示されたのは、 白黒メッシュのバックに平面的な緑の枠のウィンドウマネージャでした。 「うへぇ~、よりによってtwmかよ」 カラーXpmアイコン表示不可、ウィンドウ最大化とかできない、 GNOME非対応、今の奴はタイトルバーに日本語表示大丈夫なのか、 今時の仮想デスクトップ環境に対応できるのか不安はつきませんし、 twmユーザーが少ないのでネット上の情報も少なく調べるのも大変です。 おそらく導入に際して、大学など教育機関で最初にtwmに触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、X11で唯一標準ウィンドウマネージャとしてソースツリーに含まれていた twmは大学など教育機関に浸透していて、日本のX11界に多くのバカが輩出しました。 これから私は、おそらくそういうバカが、GNOME/KDEのウィンドウマネージャをtwmに 設定できないのかとか、$HOME/.twmrcを設定するGUIツールはないのかとか、 タスクバーはどこにあるのかとか、X11通気取りの偏ったどうでもいい我侭を言い出し (だからtwm使うんじゃねーよ)それと戦わなければならないのでしょう。 そして時代によって決着している、過去25年のX11界隈のくだらないそれらの議論が 再現され、それに巻き込まれるのでしょう。もう今からうんざりです。 だからお願いです。教育現場ではmetacityでもkwinでもfvwm2でも mwmでもなんでもいいですが普通のウィンドウマネージャにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
続く。
元ネタ: http://anond.hatelabo.jp/20120831224653
gentooではバイナリパッケージがないので、短い時間内に様々なソースをビルドします。
tmuxペインをコロコロ変えられたり、やってて落ち着かない、せわしない、と感じた場合は、
彼が元ubuntu童貞で、gentooにlinuxを仕込まれた可能性が高いです。
ビルドは時間がかかるので、一回のコンパイルでより多く最適化するほどお得感があります。
だから一回のビルドで何個--no-xxxxをつけたかにこだわる男は、gentooによって、
パッケージ一個あたりの余計な機能を省こうという発想がクセになっている可能性があります。
gentooによってlinuxを仕込まれると、焦って行うビルドが体に染み付いてしまうので、
雰囲気を良くしてより良いデスクトップにしようとは考えません。とにかくリソースロスに執着します。
loginしてすぐビルドして終わったらrc-update xxxx default; exit、のようなオペレーションを好むのもgentoo男の特徴です。
gentoo慣れすると、「ビルドしてるんだからCPUが熱くなって当然」の感覚が染み付きます。
だからファンがずっと回ってたり、ずっと「ゥゥオォ〜ン!」してたりして疲れきっていても、
してもらうのが当然なので、気を使いません。gentoo好きほど「居直ったギーク」になります。
基本的にgentoo好きの男はファン使いが下手です。
できるだけ水冷に変えたほうが良いでしょう。
ですので、重要なのはインストールしてしまう前にパーツ屋に行くことですよね。
/etcなどの場で、設定ファイルやスクリプトなどを直させてもらったとき、「sudo」と言ったり、
su root, suをするのが普通ですが、gentooなど管理者権限で操作する場に慣れきっていると、
su - rootさせてもらうのが当然になってしまってノーヘジテイトだったりします。
「あのソフトはプロプラに依存してるからダメ」とか「スピードはいいけどカスタマイズ性はイマイチ」とか…。
男同士のおしゃべりでは人気の話題なのでしょうが、当然女には不評です。
しかし素人OSになれていない男は、そんな話をすると嫌がられることすらわかりません。
公式のHPなどでrelease notesを品定めする感覚が、当たり前になってしまっているのです。
「ubuntuはこういう嫌なところがあって…」などの愚痴に対して、すぐ「別れろ!」などの
極端な反応を返すのは、他ディストリに興味の無いgentoo好き男性に多い傾向です。
シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編 - Yamashiro0217の日記の解答例です。MySQL 5.5です。
mysql> CREATE TABLE log ( -> id BIGINT PRIMARY KEY AUTO_INCREMENT, -> server_host VARCHAR(30), -> access_time DATETIME, -> user_id INT, -> access_url VARCHAR(191) -> ); Query OK, 0 rows affected (0.00 sec) mysql> LOAD DATA LOCAL INFILE 'log.csv' -> INTO TABLE log -> FIELDS TERMINATED BY ',' -> (server_host, @unixtime, user_id, access_url) -> SET access_time = FROM_UNIXTIME(@unixtime); Query OK, 9 rows affected (0.01 sec) Records: 9 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT server_host, access_time, user_id, access_url -> FROM log; +-------------+---------------------+---------+--------------+ | server_host | access_time | user_id | access_url | +-------------+---------------------+---------+--------------+ | server1 | 2012-07-27 13:25:24 | 30 | /video.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | | server3 | 2012-07-27 13:25:15 | 7 | /login.php | | server1 | 2012-07-27 13:25:05 | 8 | /profile.php | | server2 | 2012-07-27 13:26:45 | 35 | /profile.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | | server3 | 2012-07-27 13:26:45 | 30 | /login.php | | server4 | 2012-07-27 13:27:05 | 12 | /video.php | | server1 | 2012-07-27 13:27:45 | 7 | /video.php | +-------------+---------------------+---------+--------------+ 9 rows in set (0.00 sec)
mysql> SELECT server_host, access_url -> FROM log; +-------------+--------------+ | server_host | access_url | +-------------+--------------+ | server1 | /video.php | | server2 | /profile.php | | server3 | /login.php | | server1 | /profile.php | | server2 | /profile.php | | server2 | /profile.php | | server3 | /login.php | | server4 | /video.php | | server1 | /video.php | +-------------+--------------+ 9 rows in set (0.00 sec)
mysql> CREATE INDEX log_ix1 ON log (server_host); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SELECT server_host, access_time, user_id, access_url -> FROM log -> WHERE server_host = 'server4'; +-------------+---------------------+---------+------------+ | server_host | access_time | user_id | access_url | +-------------+---------------------+---------+------------+ | server4 | 2012-07-27 13:27:05 | 12 | /video.php | +-------------+---------------------+---------+------------+ 1 row in set (0.00 sec)
mysql> SELECT COUNT(*) -> FROM log; +----------+ | COUNT(*) | +----------+ | 9 | +----------+ 1 row in set (0.00 sec)
mysql> SELECT server_host, access_time, user_id, access_url -> FROM log -> ORDER BY server_host, user_id -> LIMIT 5; +-------------+---------------------+---------+--------------+ | server_host | access_time | user_id | access_url | +-------------+---------------------+---------+--------------+ | server1 | 2012-07-27 13:27:45 | 7 | /video.php | | server1 | 2012-07-27 13:25:05 | 8 | /profile.php | | server1 | 2012-07-27 13:25:24 | 30 | /video.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | +-------------+---------------------+---------+--------------+ 5 rows in set (0.00 sec)
mysql> SELECT COUNT(DISTINCT server_host, access_time, user_id, access_url) -> FROM log; +---------------------------------------------------------------+ | COUNT(DISTINCT server_host, access_time, user_id, access_url) | +---------------------------------------------------------------+ | 8 | +---------------------------------------------------------------+ 1 row in set (0.00 sec)
COUNT関数の中にDISTINCTを書けるのは覚えておくと便利です。
mysql> SELECT COUNT(DISTINCT user_id) -> FROM log; +-------------------------+ | COUNT(DISTINCT user_id) | +-------------------------+ | 6 | +-------------------------+ 1 row in set (0.00 sec)
mysql> SELECT access_url, COUNT(*) -> FROM log -> GROUP BY access_url -> ORDER BY COUNT(*) DESC -> LIMIT 1; +--------------+----------+ | access_url | COUNT(*) | +--------------+----------+ | /profile.php | 4 | +--------------+----------+ 1 row in set (0.00 sec)
mysql> SELECT REPLACE(server_host, 'server', 'xxx'), COUNT(*) -> FROM log -> GROUP BY server_host; +---------------------------------------+----------+ | REPLACE(server_host, 'server', 'xxx') | COUNT(*) | +---------------------------------------+----------+ | xxx1 | 3 | | xxx2 | 3 | | xxx3 | 2 | | xxx4 | 1 | +---------------------------------------+----------+ 4 rows in set (0.00 sec)
mysql> SELECT DISTINCT user_id -> FROM log -> WHERE user_id >= 10 -> ORDER BY user_id; +---------+ | user_id | +---------+ | 12 | | 20 | | 30 | | 35 | +---------+ 4 rows in set (0.00 sec)
第1章 並行プログラミングとGHC (上田和紀) 1.1 はじめに 1.2 ターゲットを明確にしよう 1.3 はじめが大切 1.4 GHCが与える並行計算の枠組み 1.4.1 GHCにおける計算とは,外界との情報のやりとり(通信)である 1.4.2 計算を行う主体は,互いに,および外界と通信し合うプロセスの集まりである 1.4.3 プロセスは,停止するとは限らない 1.4.4 プロセスは,開いた系(open system)をモデル化する 1.4.5 情報とは変数と値との結付き(結合)のことである 1.4.6 プロセスは,結合の観測と生成を行う 1.4.7 プロセスは,書換え規則を用いて定義する 1.4.8 通信は,プロセス間の共有変数を用いて行う 1.4.9 外貨も,プロセスとしてモデル化される 1.4.10 通信は,非同期的である 1.4.11 プロセスのふるまいは,非決定的でありうる 1.5 もう少し具体的なパラダイム 1.5.1 ストリームと双方向通信 1.5.2 履歴のあるオブジェクトの表現 1.5.3 データ駆動計算と要求駆動計算 1.5.4 モジュラリティと差分プログラミング 1.5.5 プロセスによるデータ表現 1.6 歴史的背景と文献案内 1.7 並行プログラミングと効率 1.8 まとめ 第2章 様相論理とテンポラル・プログラミング (桜川貴司) 2.1 はじめに 2.2 様相論理 2.3 時制論理 2.4 多世界モデル 2.5 到達可能性と局所性 2.6 純論理プログラミングへ向けて 2.7 Temporal Prolog 2.8 RACCO 2.9 実現 2.10 まとめと参考文献案内 第3章 レコード・プログラミング (横田一正) 3.1 はじめに 3.2 レコードと述語の表現 3.3 レコード構造とφ-項 3.3.1 φ-項の定義 3.3.2 型の半順序と束 3.3.3 KBLとLOGIN 3.4 応用――データベースの視点から 3.4.1 演繹データベース 3.4.2 レコード・プログラミングとデータベース 3.4.3 いくつかの例 3.5 まとめ 3.6 文献案内 第4章 抽象データ型とOBJ2 (二木厚吉・中川 中) 4.1 はじめに 4.2 抽象データ型と代数型言語 4.2.1 抽象データ型 4.2.2 代数型言語 4.2.3 始代数 4.2.4 項代数 4.2.5 項書換えシステム 4.3 OBJ2 4.3.1 OBJ2の基本構造 4.3.2 モジュールの参照方法 4.3.3 混置関数記号 4.3.4 モジュールのパラメータ化 4.3.5 パラメータ化機構による高階関数の記述 4.3.6 順序ソート 4.3.7 属性つきパターンマッチング 4.3.8 評価戦略の指定 4.3.9 モジュール表現 4.4 おわりに 第5章 プログラム代数とFP (富樫 敦) 5.1 はじめに 5.2 プログラミング・システム FP 5.2.1 オブジェクト 5.2.2 基本関数 5.2.3 プログラム構成子 5.2.4 関数定義 5.2.5 FPのプログラミング・スタイル 5.3 プログラム代数 5.3.1 プログラム代数則 5.3.2 代数則の証明 5.3.3 代数則とプログラム 5.4 ラムダ計算の拡張 5.4.1 ラムダ式の拡張 5.4.2 拡張されたラムダ計算の簡約規則 5.4.3 そのほかのリスト操作用演算子 5.4.4 相互再帰的定義式 5.4.5 ストリーム(無限リスト)処理 5.5 FPプログラムの翻訳 5.5.1 オブジェクトの翻訳 5.5.2 基本関数の翻訳 5.5.3 プログラム構成子の翻訳 5.5.4 簡約規則を用いた代数則の検証 5.6 おわりに 第6章 カテゴリカル・プログラミング (横内寛文) 6.1 はじめに 6.2 値からモルフィズムへ 6.3 カテゴリカル・コンビネータ 6.3.1 ラムダ計算の意味論 6.3.2 モルフィズムによる意味論 6.3.3 カテゴリカル・コンビネータ理論CCL 6.4 関数型プログラミングへの応用 6.4.1 関数型プログラミング言語ML/O 6.4.2 CCLの拡張 6.4.3 CCLに基づいた処理系 6.4.4 公理系に基づいた最適化 6.5 まとめ 第7章 最大公約数――普遍代数,多項式イデアル,自動証明におけるユークリッドの互除法 (外山芳人) 7.1 はじめに 7.2 完備化アルゴリズム 7.2.1 グラス置換えパズル 7.2.2 リダクションシステム 7.2.3 完備なシステム 7.2.4 完備化 7.2.5 パズルの答 7.3 普遍代数における完備化アルゴリズム 7.3.1 群論の語の問題 7.3.2 群の公理の完備化 7.3.3 Knuth-Bendix完備化アルゴリズム 7.4 多項式イデアル理論における完備化アルゴリズム 7.4.1 ユークリッドの互除法 7.4.2 多項式イデアル 7.4.3 Buchbergerアルゴリズム 7.5 一階述語論理における完備化アルゴリズム 7.5.1 レゾリューション法 7.5.2 Hsiangのアイデア 7.6 おわりに 第8章 構成的プログラミング (林 晋) 8.1 構成的プログラミング? 8.2 型付きラムダ計算 8.3 論理としての型付きラムダ計算 8.4 構成的プログラミングとは 8.5 構成的プログラミングにおける再帰呼び出し 8.6 おわりに:構成的プログラミングに未来はあるか? 第9章 メタプログラミングとリフレクション (田中二郎) 9.1 はじめに 9.2 計算システム 9.2.1 因果結合システム 9.2.2 メタシステム 9.2.3 リフレクティブシステム 9.3 3-Lisp 9.4 リフレクティブタワー 9.5 GHCにおけるリフレクション 9.5.1 並列論理型言語GHC 9.5.2 GHCの言語仕様 9.5.3 GHCのメタインタプリタ 9.5.4 リフレクティブ述語のインプリメント 9.6 まとめ
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関数使ってエスケープするようにする。
こんな感じでお漏らし対策をした。間違いがあったら教えて欲しい。
ちなみに出来上がったサイトはこれ。
R-Login
https://glogin.rms.rakuten.co.jp/
https://glogin.rms.rakuten.co.jp/?sp_id=1
https://glogin.rms.rakuten.co.jp/?sp_id=2
https://glogin.rms.rakuten.co.jp/?sp_id=3
https://glogin.rms.rakuten.co.jp/?sp_id=4
https://glogin.rms.rakuten.co.jp/?sp_id=5
https://glogin.rms.rakuten.co.jp/?sp_id=6
https://glogin.rms.rakuten.co.jp/?sp_id=7
beep世代?ということは同じ世代かなぁ。
beepという雑誌が出てきたのが懐かしいのでつい書いてみる(あれってLOGINが発刊される前だっけか)。
はてブでいろいろ書かれているけど、生真面目に謝罪された姿勢は好きです。
ネット上だと分が悪くなると逃げる人が多いけど、元文を消さずに謝罪はなかなかできない人が多い(改変しないでくれ、という要望はちと難しいとは思うけど)。
近いうちに削除する、とあるけど、なるべくなら、削除しないで欲しいと思う。
良くも悪くも、自身の書かれた文章だし、削除したとしても、なかったことにはできないから。
元のエントリーや、今回の謝罪を読んで、音楽に対する真摯な姿勢もわからなくも無いと思った。
色物な音楽が蔓延して、一生懸命作ってるいい楽曲(と、特定の聞き手が思ってるものが)が、楽曲のレベルに見合った評価がされていない為、売り上げが低迷し、活動や露出が減っていくことに対する危惧もわからなく無い。
最初の文章がやたら攻撃的だったのは、その気持ちが爆発したんだろうけど(でも、ネット上はいろんな人が見る以上、取引先に対するような言い回しの方が無難だけど→そうするとつまんない文章になってしまうのだが)、最初の増田は凄く真剣に考えているんだと思う。
ただ…
仕方ないんじゃないかなぁ、と思う。
こうやって音楽業界やリスナーが、紆余曲折し、いろんなサウンドが流行り廃りしていくなかで淘汰され、時々は復刻していくのが音楽の歴史だったと思うし、これからもそうなんじゃないのかな、と。いい楽曲=売れる楽曲、でないことは、元増田だって分かってるはず。
自分は質の高い楽曲を聴いてる、という自負は他者から見れば滑稽に映るもの。
音楽の嗜好なんて、人それぞれだし。
どんなに作り手が頑張って心血注いでも聞き手は勝手なもので好きか嫌いか、しかないし(それは、他の作品…小説やゲームでも言えますね)。
元増田が書いていたように『ある人はいいと思うだろうし、別の人は良くないと思うだろう。それでいいと思う』でいいと思う。
だから、初音ミクの楽曲がいいって人もそれでいいと思う。好きか嫌いは別にして。
悲しいかもしれないけど、これが現実ってヤツですね。
それを受け入れられないと、僕らが若い頃に思ってたような頭の固い古い世代になってしまいかねない。
初音ミクだっていいじゃないか。前のTBで書いたが、個人的には阿久根ミク(http://studios.kir.jp/iku/)の方がウケたけども。
最初の分に関しては自身のブログで書いた。
(For Beginners)
(For Windows)
(For Mac)
(In case you are using shared computer)
(Information)
せっかく書いたから匿名でのせてみるよ
使い方は
必要なものを gem で取ってくるにはこうすればいいよ
長すぎてelispが消えたから続きがあるよ
@echo off setlocal set WD=%~dp0 cd /d %WD% ruby get_movies.rb ruby get_images.rb ruby create_m3u.rb
user: ユーザID password: パスワード ids_file: ids.txt done_file: ids_done.txt movies_dir: movies log4r_config: pre_config: global: INFO loggers: - name: app type: Log4r::Logger level: INFO outputters: - STDOUT - FILE outputters: - name: STDOUT type: Log4r::StdoutOutputter formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%H:%M:%S" - name: FILE type: Log4r::FileOutputter filename: "#{LOGDIR}/sangels.log" formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%Y-%m-%d %H:%M:%S"
require 'fileutils' require 'logger' require 'mechanize' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_movies") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log class IDFile def initialize(file) @file = file unless File.exist?(@file) Fileutils.touch(@file) end end def ids(contains_comment = nil) File.open(@file) {|io| io.to_a.map {|x| x.chomp }.select {|x| if x.empty? nil elsif contains_comment true else not /^\s*\#/ =~ x end } } end def add(id) ids = ids(true) unless ids.any? {|x| x == id} write(ids + [id]) end end def delete(id) ids = ids(true) if ids.any? {|x| x == id} write(ids - [id]) end end def write(ids) File.open(@file, "w") {|io| ids.each {|x| io.puts x} } end end $log.info("BEGIN #{$0} ================") exit_code = 0 begin ids_file = IDFile.new($config.ids_file) done_file = IDFile.new($config.done_file) movies_dir = $config.movies_dir wget = WGet.new sangels = SAngels.new sangels.login($config.user, $config.password) ids_file.ids.each {|id| begin movies = sangels.movies(id) rescue SAngels::Movies::InvalidMoviesError $log.warn("invalid movie id: #{id}") next end dir = File.expand_path(id, movies_dir) movies.each {|link| wget.retrieve(link.href, dir) } expected = movies.movie_links.map{|x| File.basename(x.href)} actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)} if (expected - actual).empty? done_file.add(id) ids_file.delete(id) end } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
require 'fileutils' require 'logger' require 'mechanize' require 'ostruct' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_images") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log $log.info("BEGIN #{$0} ================") exit_code = 0 begin movies_dir = $config.movies_dir sangels = SAngels.new sangels.login($config.user, $config.password) thumbnails = sangels.thumbnails Dir.glob("#{movies_dir}/*").each {|dir| next unless File.directory? dir id = File.basename(dir) url = thumbnails.url(id) unless url $log.warn("#{id} is not found") next end path = File.expand_path("00_thumbnail#{File.extname(url)}", dir) next if File.exist? path $log.info("retrieving #{url}") thumbnail = thumbnails.get_file(id) File.open(path, "wb") {|io| io.write(thumbnail)} } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
BASEDIR = File.dirname($0) require "#{BASEDIR}/util" $config = load_config(BASEDIR) movies_dir = $config.movies_dir Dir.glob("#{movies_dir}/*") {|dir| next unless File.directory? dir name = File.basename(dir) files = Dir.glob("#{dir}/*.wmv").sort File.open("#{movies_dir}/#{name}.m3u", "w") {|io| files.each {|file| io.puts "#{name}/#{File.basename(file)}" } } File.open("#{dir}/00_movies.m3u", "w") {|io| files.each {|file| io.puts "#{File.basename(file)}" } } }
require 'mechanize' require 'hpricot' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" class SAngels HOST = "real2.s-angels.com" LOGIN_URL = "http://#{HOST}/member/" INFO_URL = "http://#{HOST}/teigaku/item.php" THUMBNAILS_URL = "http://#{HOST}/teigaku/" THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/" def initialize() @agent = WWW::Mechanize.new end def login(user, password) login_form = @agent.get(LOGIN_URL).forms.find {|form| form.fields.any? {|field| field.name == "frmLoginid"} } login_form.frmLoginid = user login_form.frmPw = password @agent.submit(login_form) end def movies(id, no_validate = nil) Movies.new(@agent, id, !no_validate) end def thumbnails Thumbnails.new(@agent) end class Thumbnails def initialize(agent) @agent = agent doc = Hpricot(@agent.get_file(THUMBNAILS_URL)) elems = doc.search("div[@class=realthum]/a") @links = Hash( elems.map {|elem| href = elem["href"] id = $1 if /ID=(.+)/ =~ href url = elem.search("img")[0]["src"] [id, url] }) end def get_file(id) @agent.get_file(url(id)) end def url(id) @links[id] end def exist?(id) url(id) end end class Movies class InvalidMoviesError < StandardError end def initialize(agent, id, no_validate) @agent = agent @id = id if !no_validate && !valid? raise InvalidMoviesError end end def info_page_url "#{INFO_URL}?ID=#{@id}" end def info_page @agent.get(info_page_url) end def movies_page @agent.click(info_page.links.find {|link| /P=10/ =~ link.href}) end def movie_links movies_page.links.select {|link| /wmv$/ =~ link.href }.sort {|a, b| File.basename(a.href) <=> File.basename(b.href) } end def valid? info_page.uri.to_s == info_page_url end def each(&block) orig_links = movie_links orig_links.each {|orig_link| link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)} block.call(link) } end end end
require 'log4r' require 'log4r/yamlconfigurator' require 'singleton' require 'fileutils' require 'ostruct' def Hash(a) Hash[*a.flatten] end def load_config(basedir) OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)}) end def new_logger(name) Log4r::Logger.new("app::#{name}") end def prepare_logger(basedir, logdir = nil) logdir ||= basedir Log4r::YamlConfigurator["LOGDIR"] = logdir Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml") end class NullObject include Singleton def method_missing(message, *arg) NullObject.singleton end end class WGet class << self attr_accessor :log def initialize super @log = NullObject.singleton end end def log self.class.log end def retrieve(url, dir) FileUtils.mkdir_p(dir) file = File.expand_path(File.basename(url), dir) if File.exist?(file) log.info("already retrieved #{url}") return true end tmp = "#{file}.part" log.info("retrieving #{url}") ret = system("wget", "-c", "-O", tmp, url) if ret log.info("retrieving succeeded #{url}") File.rename(tmp, file) else if $? == 0x020000 # Ctrl-C exit($?) else log.error("retrieving failure #{url} (#{$?})") end end return ret end end
Slicehost VPS Hosting is now Rackspace Cloud Servers hosting
Slicehost Articles: IP failover - High Availability explained
All requests for the website come to the front end Slice.
That Slice then proxies the request to larger Slices running in the backend of the network.
Slicehost Articles: IP failover - Slice setup and installing Heartbeat
Monitoring Ubuntu Services Using Monit | Ubuntu Geek
$ sudo tasksel
Slicehost Articles: Ubuntu Hardy setup - page 1
Slicehost Articles: Ubuntu Hardy setup - page 2
Automatic Rails on Ubuntu 8.04 LTS « Enjoying Rails
joerichsen's gist: 16225 — Gist
Setting up Ubuntu Jaunty for Ruby and Rails development | Joe Ocampo's Blog
5-minutes to Rails // Slicehost VPS Hosting is now Rackspace Cloud Servers hosting
slicehostでRails2.2.2を動かすまで - なんとなく日記
Slicehost Articles: Ubuntu Hardy - Ruby on Rails
Slicehost Articles: Ubuntu Gutsy - Django installation
UbuntuにLAMPサーバを手早くインストールする方法 - builder
LAMP(Linux、Apache、MySQL、PHP)サーバを手早くインストールする最も簡単な方法
Slicehost Articles: CentOS setup - page 1
Slicehost Articles: CentOS setup - page 2
CentOSのPHPにはマルチバイト対応入ってませんのであとから入れましょう (技術メモ)
タグ「slicehost」を含む新着エントリー - はてなブックマーク
naotaka blog » Blog Archive » Slicehostに申し込み
slicehostでUbuntu8.04の設定1 初期設定 - delab
Slicehost : Tag Archives - delab
ホスティングサービス Slicehost のドキュメントがすばらしい : 僕は発展途上技術者
SlicehostへのRedmine導入手順(Ubuntu Gutsy)
つくるぶガイドブログ: 失敗しない Rails が動かせるホスティングサービス選びと環境構築
具体的にどこがおすすめかという質問を受けた場合、共用サーバーならば海外の Slicehost、専用サーバーならさくらインターネット
Slicehost に移行しました - milk1000cc
Web 管理画面で、OS 再起動・再インストール、コンソール操作、DNS 設定などができます。
バックアップ入れても月額 $25、
レンタルサーバはさくらインターネット | 「さくらのレンタルサーバ」「さくらのマネージドサーバ」
格安レンタルサーバーならステップサーバー | 高機能で格安なレンタルサーバーTOP
レンタルサーバーNSF - 月額100円〜容量無制限可の格安レンタルサーバー
ロリポップ!レンタルサーバー - 月額105円~容量最大30GB 初期費用半額キャンペーン中!
チカッパ!レンタルサーバー - ご利用中のユーザー様へのご案内
レンタルサーバー「heteml」 - 大容量・高機能のレンタルサーバー
Slicehost VPS Hosting is now Rackspace Cloud Servers hosting Slicehost Login
Linode - Xen VPS Hosting Linode Login
Linode.comのVPSホスティングを契約してみた - m-kawato@hatena_diary
Webbynode Hosting - Host and Deploy Ruby on Rails, Django, Node.js, PHP and more
VPS Hosting � Virtual Private Server Hosting | DataRealm.com
Coupon codes, promotions and special offers - CheapVPS
VPS :: VPS Hosting :: VDS :: Virtual Private Servers :: Virtual Dedicated Servers :: Server Axis
RootBSD - FreeBSD and OpenBSD VPS Hosting - Welcome to RootBSD
レンタルサーバーならVPSレンタルサービス|VPS stock
激安の専用サーバ:ServerPronto なんと月額$29〜 | 海外サーバ.jp
サーバ本体無償提供、ホスティング向きハウジングサービスを月額7,780円で
専用サーバの料金と仕様 | 専用レンタルサーバ(ホスティング)のさくらインターネット
Dedicated servers | Windows and Linux dedicated web servers
Dedicated Servers, Self-Managed Dedicated Server, Dedicated Hosting at ServerPronto
MegaNetServe - Value Driven Dedicated Servers on Linux, Windows 2008, Windows 2003 & FreeBSD
Domain Names, Web Hosting and SSL Certificates - Go Daddy
Dedicated Servers, vSERVERs – SERVER4YOU
Web Hosting | Dedicated Hosting | Domain Registration |
海外の安い専用サーバプランをいろいろ並べて検討してみた - GIGAZINE
再度、レンタルサーバ(共有ではなく「専用」です)で、国内外を.. - 人力検索はてな
Website Hosting in the Yahoo! Directory
デル株式会社(Dell Japan)の公式サイト | Dell 日本
HP-ProLiant-ML115 G5まとめwiki - トップページ
各メーカーの最安サーバを比較検討してみた - GIGAZINE
バックエンドアーキテクチャーのおかげで、2テラバイトの画像を、$1000のLinuxサーバー1台で賄うことができる。だから、年間わずか20万ドル程度の設備投資で、現在サーバー500台を保有している。
ドメイン登録 - VALUE DOMAIN:バリュードメイン
Domain Names, Web Hosting and SSL Certificates - Go Daddy
Amazon S3をWindowsにマウントできるJungle Disk Kawanet Tech Blog/ウェブリブログ
Online storage and backup | Secure file sharing | Unlimited online storage | Jungle Disk
Amazon.co.jp: 現場が教えるホスティングサービスの勘所―立ち上げから運用管理までのノウハウ (NEサポートシリーズ): 合阪 省: 本