はてなキーワード: beginとは
34分
現役のときに比べて腕が鈍ってるなあ
ソースは汚いよ
同じところを二回訪れないことに注意して、次の状態をキューに入れていけばいいだけ
隣は距離1なのでただのFIFOでいい
重み付きのグラフならpriority queueを使う
dequeなんちゃらの前までが入力で、while の中が重要なコード
答えはSとGも塗り潰しちゃったのを出力してる
サンプルの入力で最短距離であることを確認してる
#include <map> #include <string> #include <iostream> #include <vector> #include <iterator> #include <deque> #include <set> using namespace std; typedef pair<int, int> P; int dir_x[] = {0,1, -1, 0}; int dir_y[] = {1, 0, 0, -1}; int main() { string line; vector<string> input; while (getline(cin, line)) { input.push_back(line); } const int X = input.size(); const int Y = input.begin()->size(); vector<P> start; P goal; for (int i = 0; i < X; i++) { for (int j = 0; j < Y; j++) { if (input[i][j] == 'S') { start.push_back(P(i, j)); } else if (input[i][j] == 'G') { goal = P(i, j); } } } deque<vector<P> > Q; set<P> visited; Q.push_back(start); while (!Q.empty()) { vector<P> p = Q.front(); Q.pop_front(); if (visited.find(p.back()) != visited.end()) { continue; } visited.insert(p.back()); if (p.back() == goal) { for (int i = 0; i < p.size(); i++) { input[p[i].first][p[i].second] = '$'; } copy(input.begin(), input.end(), ostream_iterator<string>(cout, "\n")); break; } for (int i = 0; i < 4; i++) { P next = P(p.back().first + dir_x[i], p.back().second + dir_y[i]); if (input[next.first][next.second] == '*') { continue; } vector<P> new_state(p.begin(), p.end()); new_state.push_back(next); Q.push_back(new_state); } } return 0; }
function returner() { return 100; } function profiler(aFunction) { var begin = new Date(); for (var i = 0; i < 500000; ++i) { aFunction(); } var end = new Date(); return end - begin; } function profileLambdaExpression() { // lamda expression print("lamda expression : " + profiler(function () returner()) ); // equal to above expression print("normal form : " + profiler(function () { return returner(); }) ); // not return the value print("return no value : " + profiler(function () { returner(); }) ); } profileLambdaExpression();
>> lamda expression : 1521
>> return no value : 1431
SpiderMonkey 1.8.0 pre
http://www.geocities.jp/jazzdoriura/karaoke/intro.html
ジャズのスタンダードを歌いたい人にとっては、いつも『All Of Me』や『Take The A Train』、『Route 66』というわけにはいかず、かといって『The Shadow Of Your Smile』『The Girl From Ipanema』『Begin The Beguine』なんかはちょっと違うし…と悩むところかもしれません。
この辺はあるらしいな。よー知らんが。
Practically speaking, the April 2009 G20 Summit is probably the last chance to put on the right tracks the forces at play, i.e. before the sequence of UK and then US defaults begin (2).
http://www.leap2020.eu/GEAB-N-32-is-available!-4th-quarter-2009-Beginning-of-Phase-5-of-the-global-systemic-crisis-phase-of-global-geopolitical_a2805.html
基軸通貨どうするかで対立とかしてる場合じゃないんだけどねー。
まあ無理だろうね。終わりが始まる。
Practically speaking, the April 2009 G20 Summit is probably the last chance to put on the right tracks the forces at play, i.e. before the sequence of UK and then US defaults begin (2).
http://www.leap2020.eu/GEAB-N-32-is-available!-4th-quarter-2009-Beginning-of-Phase-5-of-the-global-systemic-crisis-phase-of-global-geopolitical_a2805.html
24 from know
23 who because with
22 economy
21 an new people plan so
20 by every health
19 us
17 do
16 also that's these
15 all Americans It's must years your
14 about education energy here jobs make no
13 budget if
12 cost country one recovery than there tonight we've why
11 crisis how out reform those when
at banks college Congress don't future money nation next responsibility some tax what where world
children deficit even just me meet need put up work year
afford back cannot down economic end first help lending my see take times was way
again businesses confidence days each ensure get government high history invest issue million once only power right system
already another been begin bring buy century challenges clean come credit debt fact families financial goal helping largest long-term made most over president recession save schools still support through too
address any ask bad before business called chamber commitment cut cuts effort ever family finally global home its job keep last lead like loans many market necessary never off opportunity other programs provide spend united we'll were would
able accountable across act action administration am asked can't could critical cyber cycle cynical difficult does dollars easy force four-year he homes investment Iraq let longer may men moment national nearly old pay percent price private problems promise receive renewable restore say security send sense she should single soon stand States street struggle technology tell think values war well well-being we're without words workers worse yet
ability absolutely after auto bank begins beyond breaks build cause change child comes community compete comprehensive concern confront costs created decade decisions Democrats depend depends didn't dime done efficient enough entrepreneurs everyone federal forward foundation given good govern great half her higher hold hope housing I'm includes industry inherited insurance into I've lay layoffs legislation letter life long lost major makes Medicare move nor often part passed place problem progress protect pushed regulations Republicans resources restart return root said same savings says seen Sen. sent serve simply solar solve speak spirit step struggling students taxpayer thank then today together training understand use wait want watching ways whatever which women won't working young
abuse accounts affordable Afghanistan agenda allow along amid appointed approach areas around arrived assistance assure away balance become begun being believe benefits best billions bless boldly both bought built burden car career Carolina cars children's citizens clear close committed common company complete continue continued corporations countries creating crushing debates decline demand did different diploma directly disease doctors doesn't dollar doors dreams eliminate enterprise era example expand expanded extremism face failure far fastest-growing father few fiscal forces forge found four fraud full fully generation generations getting give God Greensburg had hard haven't healthy held helped highest him his historic households ideas ignore important industries innovation inspiration instead invented kind lasting launched law laying lift line lines list living loan look lose lower massive millions months mortgage much nations neighbor nobody office oil open order ordinary ourselves overseas own pass paychecks payment payments places policies priorities probably process program prosperity provided public quality quick quickly quitters quitting rates real rebuild recover reflects renewed require responsible re-start result revive rewards rules sacrifice safe second secure seek serious service set ship sitting small Social something source South spending spur state stock stopped stores strength strengthen strong stronger submit suffering surely takes teacher teachers term terrorists third though thousands threats three told tomorrow took tough trust trying tuition turn under upon very Vice view wake walk Wall waste wasteful weakened went what's wind worthy yourself
変化とか無視した。1個なんて載せられるかー!
http://www.leap2020.eu/GEAB-N-32-is-available!-4th-quarter-2009-Beginning-of-Phase-5-of-the-global-systemic-crisis-phase-of-global-geopolitical_a2805.html
the next four months, before summer 2009. Practically speaking, the April 2009 G20 Summit is probably the last chance to put on the right tracks the forces at play, i.e. before the sequence of UK and then US defaults begin (2).
It is high time for the general population and socio-political players to get ready to face very hard times during which whole segments of our societies will be modified (4), temporarily disappear or even permanently vanish.
去年あたり『経済?大丈夫に決まってんだろwww歴史を見ていままで大丈夫だったじゃねーかwww馬鹿な悲観論乙wwばーかばーかwww』とか言ってた馬鹿増田共が今頃どんな顔をしてるのか見てみたい。
http://anond.hatelabo.jp/20090121144441
(M)先人がミサイルや戦車を使うのみならず、信念と確固たる同盟をもってファシズムや共産主義に勇敢に立ち向かったことを思い出そう。
(A)先人たちがファシズムと共産主義を屈服させたのは、ミサイルや戦車によってだけではなく、頼もしい同盟国と強固な信念によってでもあることを思い起こしてほしい。
(Y)前の世代は、ファシズムや共産主義と、ミサイルや戦車だけではなく、強固な同盟と強い信念を持って対峙(たいじ)したことを思い出してほしい。
(M)先人は軍事力だけが我々を守るのではないことや、またそれを好き勝手に使えないことを知っていた。
(A)彼らは自らの力だけが自分たちを守ったのではないことも、その力が、自分たちが好きなように振る舞う資格を与えたのでもないことを理解していた。
(Y)彼らは、我々の力だけでは我々を守れず、好きに振る舞う資格を得たのではないことも理解していた。
(M)代わりに、彼らは慎重にそれを使うことで力が増し、安全は目的の正しさや、他国の手本となる振る舞い、謙虚さや自制心から発することを知っていた。
(A)その代わりに先人たちは、自らの力は慎重に使うことで増大し、自らの安全は、大義の正しさ、模範を示す力、謙虚さと自制心から生まれると知っていた。
(Y)代わりに、慎重に使うことで力が増すことを理解していた。我々の安全は、大義の正当性や模範を示す力、謙虚さ、自制心からいずるものだ。
(M)我々はこの遺産を引き継ぐ。
(A)私たちはその遺産の継承者だ。
(Y)我々は、この遺産の番人だ。
(M)これらの原理に再び導かれ、解決により一層の努力が求められる新しい脅威に対抗できる。
(A)いま一度こうした原理に導かれることにより、私たちはより厳しい努力、つまり、より強固な国際的協力と理解を必要とする新たな脅威にも立ち向かうことができる。
(Y)こうした原則にもう一度導かれることで、我々は、一層の努力や、国家間の一層の協力や理解が求められる新たな脅威に立ち向かうことができる。
(M)我々は責任を持ってイラクから撤退し始め、イラク人に国を任せる。そしてアフガンでの平和を取り戻す。
(A)私たちは、責任ある形でイラクをその国民の手に委ねる過程を開始し、アフガニスタンの平和構築を始める。
(Y)我々は、責任ある形で、イラクをイラク国民に委ね、苦労しながらもアフガニスタンに平和を築き始めるだろう。
(M)古くからの友人とかつての敵と共に、核の脅威を減らすために絶えず努力し、さらに地球の温暖化とも戦う。
(A)また古くからの友好国とかつての敵対国とともに、核の脅威を減らし、地球温暖化の恐れを巻き戻す不断の努力を行う。
(Y)古くからの友やかつての敵とともに、核の脅威を減らし、地球温暖化を食い止めるためたゆまず努力するだろう。
(M)我々の生き方について言い訳はしないし、それを断固として守る。
(A)私たちは、私たちの生き方を曲げることはなく、それを守ることに迷いもしない。
(Y)我々は、我々の生き方について謝らないし、それを守ることを躊躇(ちゅうちょ)しない。
(M)無実な人々を殺したり、脅迫で自己の目的の実現を図る者に対し、告げる。
(A)自分たちの目的を進めるためにテロを引き起こし、罪のない人々を虐殺しようとする者に対し、私たちは言おう。
(Y)テロを引き起こし、罪のない人を殺すことで目的の推進を図る人々よ、我々は言う。
(M)我々の意思の方が強く、我々の意思を曲げることはできない。
(A)いま私たちの精神は一層強固であり、くじけることはない。
(Y)我々の精神は今、より強固であり、壊すことはできないと。
(M)我々の方が長く生き、そして打ち負かす。
(A)先に倒れるのは君たちだ。私たちは君たちを打ち負かす。
(Y)あなたたちは、我々より長く生きることはできない。我々は、あなたたちを打ち破るだろう。
(M)我々の多様な出自は強みであり、弱みではない。
(A)なぜなら、私たちの多様性という遺産は、強みであり、弱点ではないからだ。
(Y)我々のつぎはぎ細工の遺産は強みであって、弱みではない。
(M)キリスト教徒、イスラム教徒、ユダヤ教徒、ヒンズー教徒、そして無宗教者の国だ。
(A)私たちの国はキリスト教徒、イスラム教徒、ユダヤ教徒、ヒンドゥー教徒、そして無宗教者からなる国家だ。
(Y)我々は、キリスト教徒やイスラム教徒、ユダヤ教徒、ヒンズー教徒、それに神を信じない人による国家だ。
(M)地球上の津々浦々から来たあらゆる言語と文化で形作られている。
(A)世界のあらゆる所から集められたすべての言語と文化に形作られたのが私たちだ。
(Y)我々は、あらゆる言語や文化で形作られ、地球上のあらゆる場所から集まっている。
(M)内戦(南北戦争)や人種差別という苦い経験もしたが、その暗い時代をへて、我々はより強くなり、きずなも深くなった。
(A)私たちは、南北戦争と人種隔離という苦い経験をし、その暗い歴史の一章から、より強く、より結束した形で抜け出した。
(Y)我々には、南北戦争や人種隔離の苦い経験があり、その暗い時代から出てきて、より強く、より団結するようになった。
(M)かつての憎しみはいずれ消え、我々を分け隔てた壁はいずれ消える。
(A)それがゆえに、我々は信じる。古い憎悪はいつか過ぎ去ることを。種族的な境界は間もなく消え去ることを。
(Y)我々は信じている。古くからある憎しみはいつかなくなり、民族を隔てる線も消えると。
(M)世界が小さくなるにつれ、我々が共通に持つ人類愛が出現する。
(A)世界がより小さくなるにつれて、共通の人間性が姿を現すことを。
(Y)世界が小さくなる中で、我々に共通の人間愛が現れることになると。
(M)そしてアメリカは平和の時代をもたらす役割を果たさねばならない。
http://anond.hatelabo.jp/20090121123006
(M)この旅を今日、我々は続けている。
(A)これが、私たちが今日も続けている旅だ。
(Y)これが今日、我々が続けている旅なのだ。
(M)我々は今でも地上で最も繁栄し強力な国だ。
(A)私たちは地球上で最も繁栄した、強力な国であり続けている
(M)我々の労働者は今回の危機が始まった時と同様、生産性は高い。
(A)私たちの労働者は、この(経済)危機が始まったときと比べ、生産性が落ちたわけではない。
(Y)我々の労働者は今回危機が始まった時と同様、生産性は高い。
(M)発明心に富み、商品やサービスは先週、先月、昨年と同様に求められている。
(A)先週、先月、昨年と比べ、私たちの創造性が低くなったのでもなければ、私たちの商品やサービスが必要とされなくなったのではない。
(Y)我々は相変わらず創意に富み、我々が生み出す財やサービスは先週や先月、昨年と同様、必要とされている。
(M)我々の能力は落ちていない。
(A)私たちの能力は衰えていない。
(Y)能力も衰えていない。
(M)だが、過去に固執し、狭い利益しか守らず、面倒な決定は後回しにする時代は終わった。
(A)ただ、同じところに立ち止まり、狭い利益を守り、不快な決断を先延ばしする時代は明らかに過ぎ去った。
(Y)しかし、同じ手を用いるだけで、狭い利益にこだわり、面倒な決定を先送りする、そんな時代は確実に終わった。
(M)今日からは、我々は立ち上がり、ほこりを払い、アメリカ再建の仕事に取りかからねばならない。
(A)私たちは今日から、自らを奮い立たせ、ほこりを払い落として、アメリカを再生する仕事を、もう一度始めなければならない。
http://ja.wikipedia.org/wiki/%E4%BA%BA%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99
http://en.wikipedia.org/wiki/How_to_Win_Friends_and_Influence_People
Seven Rules For Making your Home Life Happier(幸福な家庭を作る七原則)は日本語訳無し。
某大学の6年生なんだが、今更ながら『勉強することができる奴、これ最強』ということに気付いた。
勉強ができる、ということは、自分の能力を状況に応じてカスタマイズしていくことができる、ということだ。
高校までの勉強は基礎教養であること以上に、勉強する力を身につけることに意味がある。数学が出来て将来何の役に立つんですか?という中二の問いには、数学は君の生活を支えている大切な学問だ、という答えよりも、数学が出来るようになる過程で勉強の仕方を身につけることが必要なんだ、という答えの方が適切だろう。前者は理科系の素養を持つ中二にしか響かないが、後者はより一般的な答えとなりうるからである。
『勉強をするスキル』がこの過程で身に付いていれば、向き不向きはあるにしてもほとんどどんな職業にも就くことが出来るだろう。また、環境の変化にも強くなれる。環境が変化してもそれに応じて必要なことを勉強すればいいだけの話なのだから。しかし『勉強をするスキル』が身に付いていなかったら?単調労働等の誰にでも出来る仕事しか出来ないだろうし、環境の変化に対応することも難しいだろう。
そしてこのスキルは、若いうちから身につけるのが一番お得であり効率もいい。というより多分、若いうちに習慣づけておかないとどうしようもない。小中高の宿題を9割以上踏み倒した奴が大学生になって、たとえ単位や留年がかかっていてもいきなりレポートをしっかり提出できるようになるわけがないのだ(体験談)。
この文章を高校生までの若年層が読むかどうかは分からないが、もし読んでいたらどうか心に留めておいてほしい。
『勉強することができる奴、これ最強』
しかし勉強の出来不出来で人を分類する方法ってよく考えついたなー、と思う。社会の役割分担としての適材適所がかなりの程度自発的に(創発的に?)行われるからだ。教育の大切さというのは一人の人間を育てるための大切さだけでなく、社会全体を上手く回すための大切さでもあるのだ。
あとこんなこと書いたけど、勉強の出来不出来で決まるのはあくまで社会の中での自分の立ち位置であり、幸せな人生をおくれるかどうかはまた別問題だよ。だからもしかしたら本当に大切なのは、『勉強をするスキル』よりも『どんな勉強をするのか、またはしないのか』を見極めることかもしれんね。
=end
Could not load class (App::Mobirc::Plugin::HTMLFilter::DoCoMoCSS) because : Can't locate XML/LibXML.pm in @INC (@INC contains: /home/pc/mobirc/lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /home/pc/mobirc/lib/App/Mobirc/Plugin/HTMLFilter/DoCoMoCSS.pm line 5.
BEGIN failed--compilation aborted at /home/pc/mobirc/lib/App/Mobirc/Plugin/HTMLFilter/DoCoMoCSS.pm line 5.
Compilation failed in require at /usr/local/lib/perl/5.8.8/Class/MOP.pm line 151.
at /usr/local/lib/perl/5.8.8/Class/MOP.pm line 133
Class::MOP::load_first_existing_class('App::Mobirc::Plugin::HTMLFilter::DoCoMoCSS') called at /usr/local/lib/perl/5.8.8/Class/MOP.pm line 157
Class::MOP::load_class('App::Mobirc::Plugin::HTMLFilter::DoCoMoCSS') called at /usr/local/share/perl/5.8.8/MooseX/Plaggerize.pm line 20
App::Mobirc::load_plugin('App::Mobirc=HASH(0x8d7e490)', 'HASH(0x8d7536c)') called at /home/pc/mobirc/lib/App/Mobirc.pm line 44
App::Mobirc::_load_plugins('App::Mobirc=HASH(0x8d7e490)') called at /home/pc/mobirc/lib/App/Mobirc.pm line 35
Class::MOP::Class:::around('CODE(0x8ab5250)', 'App::Mobirc', '/home/pc/mobirc/config.yaml') called at /usr/local/lib/perl/5.8.8/Class/MOP/Method/Wrapped.pm line 129
Class::MOP::Method::Wrapped::__ANON__('App::Mobirc', '/home/pc/mobirc/config.yaml') called at /usr/local/lib/perl/5.8.8/Class/MOP/Method/Wrapped.pm line 89
App::Mobirc::new('App::Mobirc', '/home/pc/mobirc/config.yaml') called at mobirc/mobirc line 36
pc@ubuntu-vm:~$ sudo mobirc/mobirc
Could not load class (App::Mobirc::Plugin::HTMLFilter::DoCoMoCSS) because : Can't locate XML/LibXML.pm in @INC (@INC contains: /home/pc/mobirc/lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /home/pc/mobirc/lib/App/Mobirc/Plugin/HTMLFilter/DoCoMoCSS.pm line 5.
BEGIN failed--compilation aborted at /home/pc/mobirc/lib/App/Mobirc/Plugin/HTMLFilter/DoCoMoCSS.pm line 5.
Compilation failed in require at /usr/local/lib/perl/5.8.8/Class/MOP.pm line 151.
at /usr/local/lib/perl/5.8.8/Class/MOP.pm line 133
Class::MOP::load_first_existing_class('App::Mobirc::Plugin::HTMLFilter::DoCoMoCSS') called at /usr/local/lib/perl/5.8.8/Class/MOP.pm line 157
Class::MOP::load_class('App::Mobirc::Plugin::HTMLFilter::DoCoMoCSS') called at /usr/local/share/perl/5.8.8/MooseX/Plaggerize.pm line 20
App::Mobirc::load_plugin('App::Mobirc=HASH(0x8d799e0)', 'HASH(0x8d7089c)') called at /home/pc/mobirc/lib/App/Mobirc.pm line 44
App::Mobirc::_load_plugins('App::Mobirc=HASH(0x8d799e0)') called at /home/pc/mobirc/lib/App/Mobirc.pm line 35
Class::MOP::Class:::around('CODE(0x8ab4390)', 'App::Mobirc', '/home/pc/mobirc/config.yaml') called at /usr/local/lib/perl/5.8.8/Class/MOP/Method/Wrapped.pm line 129
Class::MOP::Method::Wrapped::__ANON__('App::Mobirc', '/home/pc/mobirc/config.yaml') called at /usr/local/lib/perl/5.8.8/Class/MOP/Method/Wrapped.pm line 89
App::Mobirc::new('App::Mobirc', '/home/pc/mobirc/config.yaml') called at mobirc/mobirc line 36
せっかく書いたから匿名でのせてみるよ
使い方は
必要なものを 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
辛い時でも 笑ってられる そんなアンタは ホンマにアホや 先の事など 考えないまま ペース配分さえ 出来ないで走る 悲しい時こそ おどけてばかり そんなアンタは やっぱりアホや 惚れてふられて また繰り返す 学ばないまま 明日を迎える だけどそんなアンタを アンタを見てると なぜか優しい風が吹き抜けてゆく 湿った心は笑いで乾く 笑顔のまんま(笑顔のまんま) 笑顔のまんま(笑顔のまんま) そんな人生 生きてるだけで丸儲け 笑顔のまんま(笑顔のまんま) 笑顔のまんま(笑顔のまんま) そうさTHAT WAS THAT あの時はあの時さ 笑顔のまんま(笑顔のまんま) 笑顔のまんま(笑顔のまんま) そうさ人生 生きてるだけで丸儲け 笑顔のまんま(笑顔のまんま) 笑顔のまんま(笑顔のまんま) そうさTHAT WAS THAT あの時はあの時さ 僕が笑い(僕が笑い) 君にあげるから(君にあげるから) 君の笑顔を僕にください
---
from FNS27時間テレビ
アセンブリ言語は構文が単純な(1行1命令)為、m4 のようなマクロプロセッサがあればとりあえずアセンブルの真似事はできるという点が重要な気がします。
(じっさいそういう本があったはず、SPARC Architecture, Assembly Language Programming, and C ISBN:9780130255969)
他のもっと高機能な言語は brace / begin-end で文脈自由言語になってたり、BASIC でさえ変数定義/抹消を管理しなければならないので。
追記:いやもちろんバイナリは吐けないよ、とか、ELFローダ作るのは大変だよ、とか(Linkers & Loaders ISBN:4274064379 でも
実用的なローダを作るようにはなってなかった)そういう話は沢山あるのですが
http://anond.hatelabo.jp/20071102195139
同じ文章を生み出すかっていう、そういう話?
「どうしようもなくバカだ」
船井は重ねて言った。君はむっとして、途方も無く長くまっすぐな廊下を先に歩く禿頭を睨んだ。
「ランダムなアルファベットの中に、いくらシェークスピアの文章が現れようとも、他のノイズから切り出すことをしなければ、それはやはりランダムノイズにしか過ぎんのだ。この場合シェークスピアを取り出す作業こそを創作と、取り出す主体を知性というのではないかね」
船井は振り返りもしないで喋る。
「それにだ、なんでチンパンジーなんだね。ニホンザルだっていいじゃないか。むしろニホンザルの方が。ああ、君は100匹目の猿の話をしらないのか。こういうことだ。ある日宮崎は幸島の一匹の猿が芋を洗うようになった。それを真似した猿が100匹を数えたとき、それは突如として群れ全体の習性となり、更に位置的につながりの無いはずの高崎山の猿までが芋を洗い始めた。集合無意識のなせる現象だな」
船井は突き当たりのドアの前で足を止めた。ドアを開ける。
「ということでだ。芋でもなんでもいい、餌で釣ってタイプライターを叩かせるように仕向けた猿を百匹集める。すると距離を超越して何匹もの猿がタイプライターを叩くようになる。それを集めて意味のある文章を叩いた猿に餌をやると果たしてどうなるか。そんな猿が100万匹いたら?」
船井が半身引いて見せた室内を君は覗き込む。獣の匂いが鼻につく薄暗い部屋は、反対側の壁が消失点の彼方にあって果てが無く、同様に左右の壁も判別できない。規則正しく置かれた机は格子模様を描き、部屋の広さを強調している。ひとつの机につきひとつのタイプライター、一匹の猿。キーキーと鳴き喚く声、カタカタとタイプ、チーンとリターンの音。君は息を止める。
部屋のドアが開いたのがわかると、猿達はタイプライターに叩きつけていた手を止めた。猿は紙を機械から抜き取るとそれを手に扉口に――君のほうに向かって殺到してきた。君は立ちすくむが、船井は目の前で紙を手にギャアギャアと飛び跳ねる猿めらをにこやかに見渡す。差し出される紙をいちいち受け取って目を通すと、あるものにはポケットから豆を出してやって褒めてやり、またあるものには首を振って紙をさし返す。豆をもらった猿はすぐさま空いた机にとって返し、豆をぼりぼり齧りながらまたタイピングを始める。もらえなかった猿は怒って紙をびりびりに引き裂くと、これまた机を探して占領しタイピングを始めた。もらえなかった猿の中には紙を破っても怒りが収まらず、あたりかまわず糞を投げつけるものもいた。その飛沫を浴びても船井は笑みを崩さず、猿どもの差し出す紙の検査を続けている。そして一段落つくと君のほうを見ていう。
「名作とそうでない物の判別をして、猿に餌をやるだけの簡単なお仕事です」
君は袋いっぱいの豆を手渡される。本当に100万匹いそうなこの部屋の猿に一袋では足りない。ならば本当に選別を、などと思っている間に第二波殺到。差し出される紙にはいずれもアルファベットが打たれており、「Stately, plump Buck Mulligan came from the stairhead, bearing a bowl of lather on which a mirror and a razor lay crossed.」「MARLEY was dead: to begin with. There is no doubt whatever about that.」「In 1913, when Anthony Patch was twenty-five, two years were already gone since irony, the Holy Ghost of this later day, had, theoretically at least, descended upon him.」などと書いてはあるものの君には何のことやらわからず、君がよく知るシェークスピアであるところの「To be, or not to be」だとかは探そうとしても、猿にせっつかれて見つけている余裕が無い。適当に意味のある英文に見えるものに豆を与えていたら、周囲は徐々に剣呑な空気になり、そういえばさっきつき返した紙にはキリル文字が書いてあったんじゃないかということに思い至るも、東欧文学まで原文でフォローできている君であろうはずは無く、殺気立っている猿達に奪われるようにして豆を与えているので袋の豆も尽き、いよいよ進退窮まったと助けを求めて船井の方を見れば、そこにはただ一匹の巨大な猩々がにまにまといやらしい粘着質の笑いを浮かべているだけで、君は脛に飢えた猿の歯が食い込むのを感じて倒れ、毛深い無数の腕が掴みかかり……夢でさえあればそこで目が覚めるはずだったのだけれど。
だから私が代わりにこれを
ナッキーの「Turbo Delphiはじめて奮戦記」- 第1回 Turbo Delphi のインストール
http://torrent.borland.com/turbo_hotfix_rollup.zip
http://torrent.borland.com/prereqs_jp.zip
http://torrent.borland.com/turbodelphi_jp.exe
(1) \dotNETRedist\dotnetfx.exe
(2) \dotNETRedist\langpack.exe
(3) \dotNETRedist\NDP1.1sp1-KB867460-X86.exe
\dotNETSDK\setup.exe
\IE60SP1\ie6setup.exe
\dotNETJSharp\vjredist.exe
\dotNETJSharp\vjredist-LP.exe
\MSXML\msxml.msi
C:\Documents and Settings\<ユーザー名>
TurboDelphi_JP.exe
yusukeooki blog: [会社のこと]新リリース検索エンジン プレスリリース検索エンジン Powered by ValuePress!
Components > Sound Effects > Mixer. Torry's Delphi Pages
Apollo - Delphi Ruby interface
もっと楽にGUIとの連携がしたい:Python + Delphi = P4D(Python for Delphi) - ふにゃるん
[Delphi]【Delphihacks】Delphi【Win32API】
procedure TForm1.FormCreate(Sender: TObject); var s: string; i, j, k: Integer; x, y: Double; begin try x := 100.0; y := 3.0; x := x / y; ShowMessage(FloatToStr(x)); s := 'Delphi'; Form1.Caption := s; finally // end end;
ことで、さっさと忘れるという魂胆。
_| ̄| ((○
_| ̄| ((○
_| ̄| ((○
_| ̄| ((○
ここからDelphi編
_| ̄| ((○
_| ̄| ((○
ちなみにこんな感じのプロシージャだった
procedure test;
Label1.Caption := 'テストだよん!';
end;
ちなみに語尾が「だよん」だとかのなのは、今もやってる個人的なルールっぽいもの。
_| ̄| ○
あーすっきりした!
発祥: http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/
Scheme という Lisp 語族の言語を用いて ℃-ute の相関関係をプログラムし、様々な角度から関係性を分析する手法を紹介していきます(ソースコードは最後に張ります)。
まずは、メンバー間の関係を「リスト」というデータ型で表現します。例えば「栞菜->愛理」という関係は
(kanna . airi)
という形で表すことができます。これに、「大好き」という情報を付加し、ついでにその関係の性質を数値化したものを加えると
((kanna . airi) (desc "大好き") (score . 1))
のようになり、関係図における一つの矢印の情報をデータ化できたことになります(暫定的に、好意は 1、良好・中立は 0、険悪は -1 の3段階で表すことにします)。
メンバー間の全ての関係性をこのデータ単位で定義し、データベース化しておくことで、色んな条件に基づいた検索やスコア計算などが可能となります。
ここで相関関係図における矢印を「リンク」と呼ぶことにして、あるメンバーから他のメンバーへどのようにリンクし、またリンクされているかを調べることができます。
(sort-nodes (number-list (from-links)))
結果:
((kanna . 6) (saki . 5) (maimi . 4) (erika . 3) (mai . 3) (chisato . 3) (airi . 2))
栞菜ちゃんがメンバー全員にリンクを張っていることが分かり、℃-ute ラブっぷりが伺えます。なっきーにも同様の事が言えます。例の「女の子が好き」発言を数値的に裏付ける結果と言えるかもしれません。
ただ、データ不足でリンク件数がまだ少ないのと、リンクの性質(好意/反感など)までは分からない点を考慮する必要があるでしょう。
同様に、リンクの終点の件数を調べてみます。
(sort-nodes (number-list (to-links)))
((chisato . 5) (erika . 5) (kanna . 4) (maimi . 4) (airi . 4) (mai . 3) (saki . 1))
えりかちゃんと千聖ちゃんが高ポイントです。メンバーからの人気や注目度の高さを示すデータですが、千聖ちゃんの場合敵対的なリンクが2件含まれている点に注意してください。
なっきーの被リンク数が極端に少ないですが、単純にデータ不足のためだと思われます。はぶら(ryとか言わないようにお願いします。
リンクに付随するスコアを計算することで、愛情の度合いを測ることができるのではないか、という考えに基づく研究です。
まず、全ての関係性を対象として、スコアがマイナスの関係を抽出してみます。
(filter-nodes (lambda (n) (< (score-relation n) 0)))
結果:
(((kanna . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1)) ((saki . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1)))
件数だけを得ると
(length (filter-nodes (lambda (n) (< (score-relation n) 0))))
2
僅か2件です。
良好・中立的な関係は
(length (filter-nodes (lambda (n) (= (score-relation n) 0))))
8
愛に満ちた関係は
(length (filter-nodes (lambda (n) (> (score-relation n) 0))))
16
非常に多いです。舞美ちゃんの「℃-ute同士でラブラブなんですよ」発言(例のラジオ)を数値的に裏付ける結果と言えるんじゃないでしょうか。
次に、メンバーごとのスコアを算出してみます。Lisp 的には以下のようにフィルタリングと畳み込み (fold) で計算することができます。例えば
(foldr (lambda (n acc) (+ (get-score n) acc)) 0 (filter-nodes (cut to? <> 'kanna)))
3
上式を一般化して一挙にメンバー全員に適用してみると
(sort-nodes (map (lambda (x) (cons x (score-loved x))) (all-members)))
結果:
((airi . 4) (kanna . 3) (mai . 2) (erika . 2) (maimi . 2) (saki . 1) (chisato . 0))
愛理ちゃんが好意を寄せられやすい傾向が伺えます。
今度は逆方向のスコアを計算してみると
(sort-nodes (map (lambda (x) (cons x (score-loving x))) (all-members)))
((kanna . 3) (maimi . 3) (chisato . 2) (airi . 2) (saki . 2) (mai . 1) (erika . 1))
まいまいとえりかちゃんが特に堅い・一途だという傾向を読み取ることができます。
今度は組み合わせ(カップリング)の評価です。
2点間相互のリンク・スコアを加算したものを「相性」と考えられるものとします。最大値 (互いに好意を寄せている場合の数値) は現在のスコアリング方式では 2 です。例えば
(score-between 'kanna 'airi)
の値は
2
となります。1 であれば一方通行と考えます。
関係性が未定義の場合もあるので 0 のものを除外して算出すると
(sort-nodes (filter (lambda (n) (not (= (cdr n) 0))) (map (lambda (n) (cons n (apply score-between n))) (all-combinations))))
(((chisato mai) . 2) ((chisato airi) . 2) ((airi kanna) . 2) ((saki kanna) . 2) ((kanna maimi) . 2) ((erika maimi) . 2) ((saki airi) . 1) ((saki erika) . 1) ((kanna mai) . 1) ((maimi airi) . 1) ((saki chisato) . -1) ((kanna chisato) . -1))
となります。若干ピンとこない部分もあるかも知れませんが、計算上は矛盾無くデータの内容を表しています。
(map (lambda (p) (find-relation (cons (caar p) (cadar p)) identity)) (filter (lambda (n) (= (cdr n) 1)) (map (lambda (n) (cons n (apply score-between n))) (all-combinations))))
(((kanna . mai) (desc "喰ってやるよ") (score . 1)) ((saki . airi) (desc "好き") (score . 1)) ((maimi . airi) (desc "良き妹") (score . 1)) ((saki . erika) (desc "彼氏にしたい") (score . 1)))
のようになります。
以上の調査を経て気になった問題点を列挙してみます。
特に最初の点に関して、「百合的」なるものの質的評価がなかなか難しいと感じました。例えば「大好き」も「良き妹」も同じ 1 と評価してしまっているのが妥当かどうか、といったことです。
また、スレにて与えられた情報を評価・分析する方法としては有効だとしても、逆方向のフィードバックの手段がなかなか見つからないというのが三つ目の問題です(技術力不足とも言います)。(注:画像化の方法が分かりました。追記参照)
最後に、プログラムのソースを示します。実行には PLT Scheme が必要です。文字コードは UTF-8 で保存した上で、(load "c-ute.ss") としてください。文字化けする場合はターミナルが UTF-8 を表示できるよう設定する必要があります。がんばってください。
c-ute.ss:
(require (lib "etc.ss") (lib "list.ss") (lib "26.ss" "srfi") (lib "delete.ss" "srfi" "1")) ;;; Utilities (define true? (compose not not)) (define (ignore _) #f) (define fif (case-lambda ((predicate consequent) (fif predicate consequent ignore)) ((predicate consequent alternative) (lambda (x) (if (predicate x) (consequent x) (alternative x)))))) (define (concat! xs) (apply append! xs)) (define (mapconcat f lst sep) (let lp ((str (f (car lst))) (lst (cdr lst))) (if (null? lst) str (lp (string-append str sep (f (car lst))) (cdr lst))))) (define (slice-string str len) (let lp ((res '()) (str str)) (if (<= (string-length str) len) (reverse! (cons str res)) (lp (cons (substring str 0 len) res) (substring str len))))) (define (break-string str len) (mapconcat identity (slice-string str len) "\\n")) ;; NOTE: input and output ports have to be either file-stream or #f ;; (i.e., cannot be a string port) (define (run exe opt in out) (let-values (((p p-i p-o p-e) (subprocess out in #f exe opt))) (subprocess-wait p) (close-input-port p-e))) ;;; Database ;; http://ja.wikipedia.org/wiki/%E2%84%83-ute (define names '((erika . "えりか") (maimi . "舞美") (saki . "早貴") (airi . "愛理") (chisato . "千聖") (mai . "舞") (kanna . "栞菜"))) (define (symbol->name sym) ((fif true? cdr) (assq sym names))) (define nodes '()) (define edges '()) (define (relate from to desc score) (let ((n (cons from to))) (or (find-relation n (lambda (r) (let ((d (assq 'desc r)) (s (assq 'score r))) (set-cdr! d (cons desc (cdr d))) (set-cdr! s (+ score (cdr s)))))) (begin (set! nodes (cons n nodes)) (set! edges (cons (cons n `((desc ,desc) (score . ,score))) edges)))))) (define (find-relation n k) ((fif true? k) (assoc n edges))) (define (related? x y) (find-relation (cons x y) (lambda (_) #t))) (define (from? n x) (eq? (car n) x)) (define (to? n x) (eq? (cdr n) x)) (define flip-relation (case-lambda ((n) (and (related? (cdr n) (car n)) (cons (cdr n) (car n)))) ((n k) ((fif true? k) (flip-relation n))))) (define (get-score n) (cdr (assq 'score n))) (define (get-description n) (cdr (assq 'desc n))) (define (describe-relation n) (find-relation n get-description)) (define (score-relation n) (or (find-relation n get-score) 0)) (define (print-node . ns) (for-each (cute find-relation <> (lambda (r) (display (format "| ~a => ~a (~a)~%" (caar r) (cdar r) (mapconcat (lambda (s) (string-append "\"" s "\"")) (cdr (assq 'desc r)) ", "))))) ns)) (define (iter-nodes k) (let lp ((nodes nodes)) (unless (null? nodes) (k (car nodes)) (lp (cdr nodes))))) (define (filter-nodes p) (let ((ns '())) (iter-nodes (fif p (cut find-relation <> (lambda (n) (set! ns (cons n ns)))))) ns)) (define (from-links) (map car nodes)) (define (to-links) (map cdr nodes)) (define (all-members) (delete-duplicates! (from-links))) (define (all-pairs) nodes) (define (ordered-pairs) (concat! (map (lambda (x) (map car (sort (filter-nodes (cute to? <> (car x))) (lambda (x y) (> (get-score x) (get-score y)))))) (sort-nodes (map (lambda (x) (cons x (score-loved x))) (all-members)))))) (define (all-combinations) (let lp ((cs '()) (ns nodes)) (if (null? ns) cs (let ((n (car ns))) (lp (if (member (list (cdr n) (car n)) cs) cs (cons (list (car n) (cdr n)) cs)) (cdr ns)))))) ;; number-list :: [a] -> [(a . Int)] (define (number-list ls) (let lp ((ns '()) (ls ls)) (if (null? ls) ns (let ((x (car ls))) (lp ((fif not (lambda (_) (cons (cons x 1) ns)) (lambda (n) (set-cdr! n (add1 (cdr n))) ns)) (assq x ns)) (cdr ls)))))) ;; sort-nodes :: [(a . Int)] -> [(a . Int)] (define (sort-nodes ns) (sort ns (lambda (x y) (> (cdr x) (cdr y))))) (define (diff-nodes ms ns) (let lp ((ds '()) (ns ns)) (if (null? ns) (sort-nodes ds) (lp (let* ((n (car ns)) (m (assq (car n) ms))) (cons (cons (car n) (- (cdr m) (cdr n))) ds)) (cdr ns))))) (define (get-total-score x p) (foldr (lambda (n acc) (+ (get-score n) acc)) 0 (filter-nodes (cut p <> x)))) (define (score-loved x) (get-total-score x to?)) (define (score-loving x) (get-total-score x from?)) (define (score-between x y) (+ (score-relation (cons x y)) (score-relation (cons y x)))) (define (-> x) (display (format "~%Links from [~a]~%" x)) (iter-nodes (fif (cut from? <> x) print-node))) (define (<- x) (display (format "~%Links towards [~a]~%" x)) (iter-nodes (fif (cut to? <> x) print-node))) (define (<-> x) (display (format "~%Reciprocal links for [~a]~%" x)) (iter-nodes (fif (cut to? <> x) (lambda (n) (flip-relation n (lambda (m) (print-node m n))))))) (define (<=> x) (display (format "~%Reciprocal matches for [~a]~%" x)) (iter-nodes (fif (cut to? <> x) (lambda (n) (flip-relation n (lambda (m) (if (ormap (lambda (x) (ormap (lambda (y) (equal? x y)) (describe-relation m))) (describe-relation n)) (print-node m n)))))))) (define (<?> x) (let ((to (assq x (number-list (from-links)))) (from (assq x (number-list (to-links))))) (display (string-append (format "~%Link statistics for [~a]~%" x) (format "| ~a => ~a (love ~a)~%" x (cdr to) (score-loving x)) (format "| ~a => ~a (love ~a)~%" (cdr from) x (score-loved x)))))) (define (info x) (for-each (cut <> x) (list <- <-> <=> -> <?>))) ;;; GraphViz (http://www.graphviz.org/) support (define graphviz "C:/Program Files/ATT/Graphviz/bin/dot.exe") (define (nodes->dot ns) (string-append "digraph cute {\n" ;;"\tordering=out;\n" ;;"\trankdir=LR;\n" "\toverlap=true;\n" "\tnode[fontname=\"msgothic.ttc\"];\n" "\tedge[fontname=\"msgothic.ttc\",fontsize=9];\n" (let lp ((str "") (ns ns)) (if (null? ns) str (let* ((n (car ns)) (s (score-relation n))) (lp (string-append str (format "\t\"~a\" -> \"~a\"" (symbol->name (car n)) (symbol->name (cdr n))) (format "[label=\"~a\",color=\"~a\"," (break-string (car (describe-relation n)) 7) (cond ((> s 0) "red") ((= s 0) "green") (else "blue"))) (format "style=\"bold~a\"];\n" (if (and (not (= s 0)) (< s 1) (> s -1)) ",dashed" ""))) (cdr ns))))) "}")) (define (write-dotfile dot file) (and (file-exists? file) (delete-file file)) (with-output-to-file file (lambda () (display dot))) file) (define (dot->png dot png) (call-with-input-file (write-dotfile dot "c-ute.dot") (lambda (in) (and (file-exists? png) (delete-file png)) (call-with-output-file png (lambda (out) (run graphviz "-Tpng" in out))))) 'done) ;;; Setup database ;; Based on: ;; http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/116-142 (begin (relate 'maimi 'erika "大好き" 1) (relate 'maimi 'kanna "良き妹" 1) (relate 'maimi 'airi "良き妹" 1) (relate 'maimi 'mai "姉妹" 0) (relate 'erika 'maimi "一番可愛いよ" 1) (relate 'erika 'kanna "仲間" 0) (relate 'erika 'chisato "おソロパジャマ" 0) (relate 'kanna 'erika "仲間" 0) (relate 'kanna 'maimi "好き" 1) (relate 'kanna 'saki "喰ってやるよ" 1) (relate 'kanna 'mai "喰ってやるよ" 1) (relate 'kanna 'airi "大好き" 1) (relate 'kanna 'chisato "愛理に手出すんじゃねぇよ" -1) (relate 'saki 'maimi "荷物整理" 0) (relate 'saki 'erika "彼氏にしたい" 1) (relate 'saki 'kanna "興味がある" 0.5) (relate 'saki 'chisato "愛理に手出すんじゃねぇよ" -1) (relate 'saki 'airi "好き" 1) (relate 'airi 'kanna "受け入れる" 1) (relate 'airi 'chisato "最近親密" 1) (relate 'mai 'erika "保護者" 0) (relate 'mai 'maimi "姉妹" 0) (relate 'mai 'chisato "恋人" 1) (relate 'chisato 'erika "おソロパジャマ" 0) (relate 'chisato 'mai "恋人" 1) (relate 'chisato 'airi "最近親密" 1)) ;; query relations / draw graphs (if (file-exists? graphviz) (dot->png (nodes->dot (ordered-pairs)) "c-ute.png") (for-each info (all-members)))
Graphviz というソフトによって関係図を可視化できる、ということを教えていただきました(既に上プログラムを実行すると自動的に関係図画像を作成するようにしてあります)。ここでは技術的な観点から幾つか注意点を挙げておきます。
まず、Scheme プログラムから Graphviz を動かす方法について。コマンドラインからの起動のように、プログラムへのオプション文字列で入出力ファイルを指定する方法ではどうも上手く行きませんでした。調査の結果、入出力ファイルのポートを Scheme 側で用意しておく必要があるようです。処理系によって異なりますが、PLT Scheme の場合 subprocess という関数を次のように呼び出します。
(subprocess output-port input-port #f "/path/to/dot.exe" "-Tpng")
ここで output-port は png 等画像ファイルへの出力ポート。input-port は dot ファイル(グラフの定義ファイル)の入力ポートです。エラーポートは必要無いでしょう (#f)。
dot という名前の実行ファイルが、関係図のような有向グラフを描画するプログラムです。最後にオプション文字列として出力形式を指定します(png, jpeg, gif, etc.)。
次に dot ファイルを Scheme で書く方法ですが、以下の基本的な有向グラフの書式
digraph g { A -> B; B -> C; C -> A; }
を理解すれば、後は実直に Scheme のデータを当てはめて format 関数等で変換するだけです。
(string-append "digraph g {" (format "~a -> ~a;" (car node) (cdr node)) "}")
問題は、ノードを配置する順番によって出来上がる画像が変わってくる、ということです。
より見た目に分かりやすくするための工夫としては、相互にリンクするノード同士が dot ファイル上でも近接して出力されるようにすると良いでしょう。関連の強いものが画像の上でも近くに表示されるようになります。
また上述(特に例3)のスコアの概念を応用し、スコアの低いものが後に出力されるようにすることで、重力感覚に一致するような関係図を得ることができるでしょう。
KEREM SHALOM, Israel, July 11 ?? Real life has a way of intruding into the airy absolutes of the Israeli-Palestinian conflict. Each side may deny the other’s historical legitimacy, or plot the other’s demise, but somehow, the gritty business of coexistence marches on.
Skip to next paragraph
Enlarge This Image
Rina Castelnuovo for The New York Times
An Israeli man signaled for a truck to move toward Gaza at Sufa on Wednesday. Commerce continues despite the Hamas takeover.
The New York Times
For the past month, since the Islamic militants of Hamas took over the Gaza Strip, Israel has kept the main commercial crossing point at Karni shuttered, squeezing the life out of the limp Gazan economy. Israel bans contact with Hamas, and Hamas seeks Israel’s destruction, making border crossing etiquette more precarious than elsewhere.
Yet at this small crossing near the Egyptian border on Wednesday, between mortar attacks by Hamas and other militants, about 20 truckloads of milk products, meat, medicines and eggs passed from Israel into Gaza, part of the effort to keep basic commodities reaching the 1.5 million Palestinians of the largely isolated strip. Most of the supplies are not humanitarian relief, but are ordered by Palestinian merchants from Israeli suppliers, relying on contacts built up over years.
The mechanics of the crossover manage to answer Israel’s security needs while avoiding contact with Hamas. At Kerem Shalom, Israeli trucks transfer their goods to what Israeli military officials describe as a “sterile” Palestinian truck. Driven by a carefully vetted Palestinian driver, the truck never leaves the terminal, carrying the goods to the Palestinian side, where they are transferred onto ordinary Palestinian trucks that drive into Gaza.
Kerem Shalom, which means “vineyard of peace,” is surrounded by fences and concrete barriers. It can process only about 20 trucks a day, so it is reserved for products that require refrigeration.
The hardier goods, which make up the bulk of the supplies, go through another crossing, at Sufa, to the north. About 100 Israeli trucks a day come from Israel, swirling up clouds of dust before dumping thousands of tons of dry products, bales of straw and crates of fruit on “the platform,” a fenced-in patch of baked earth. At 3 p.m. the Israeli suppliers leave. Like drug dealers picking up a “drop,” the Gaza merchants send in trucks from a gate on the other side and take the products away.
Other products make their way into Gaza with virtually no human interaction. At the fuel depot at Nahal Oz, Israeli tankers pour diesel, gasoline and cooking gas into Gaza through pipes that run beneath the border. And even at Karni, the main crossing that closed for normal operations on June 12, the Israelis have adapted a 650-foot-long conveyor belt, which was previously used for gravel, to send in grain.
“It is better all around from a security point of view that commodities go in,” said Maj. Peter Lerner of the Coordination and Liaison Administration, the Israeli military agency that deals with the civilian aspects of the Gaza border. “More despair doesn’t serve anyone.”
Israeli officials cite security reasons for having shut Karni, the only crossing equipped to send containers into Gaza, or to handle exports out of the strip. “Karni was based on the concept of two sides operating together,” said Col. Nir Press, the head of the coordination agency.
Colonel Press noted that in April 2006, a vehicle loaded with half a ton of explosives got through three of four checkpoints on the Palestinian side of Karni, and was stopped at the last security position by members of the American-backed Presidential Guard, loyal to the Palestinian president, Mahmoud Abbas of Fatah.
But the Presidential Guard is no longer there, having been routed, along with all other Fatah forces in Gaza, by Hamas.
Instead, the military wing of Hamas and other Palestinian factions have been firing mortar shells at Kerem Shalom. On Tuesday, 10 of them landed in and around the terminal as two trucks of milk were passing. The crossing was closed for the rest of the day. [Another barrage of mortar shells hit areas around Kerem Shalom on Thursday.]
Hamas suspects that Israel wants to use Kerem Shalom to replace the Rafah crossing on the Egypt-Gaza border, which has been closed since June 9. The Palestinians had symbolic control at Rafah. At Kerem Shalom, Israel can better supervise who ?? and what ?? is going in and out of the strip.
“Kerem Shalom is a military post, a place from which Israeli tanks begin their incursions into Gaza,” said Fawzi Barhoum, a Hamas spokesman, justifying the mortar attacks. “How can we consider it a safe and legitimate crossing to replace Rafah?”
But when it comes to food, rather than principle, Hamas is proving itself pragmatic as well. On Sunday, Palestinian merchants, trying to press Israel to reopen Karni, told the Israelis that Hamas had barred the import of Israeli fruit. But by Wednesday, the Israeli fruit was ordered again. “Hamas does not want to lose the private sector,” a Gaza businessman explained.
Tellingly, the exposed Sufa crossing, through which most of the food comes, has not been attacked with mortars so far. Without Karni, however, and with the smaller crossings operating on a one-way basis, Gaza can barely subsist. With hardly any raw materials going in, and no products from Gazan farms, greenhouses and factories so far allowed out, Gaza’s tiny industrial base is on the verge of collapse.
Hamas officials say they want to start negotiations with Israel about reopening the formal crossings. Major Lerner said that Hamas had “a few things to do” first, including recognizing Israel’s right to exist and freeing Gilad Shalit, the Israeli soldier captured and taken to Gaza in a raid more than a year ago.
But the ultimate test of pragmatism may come in September when the Hebrew calendar enters what is known in Jewish law as a “shmita” year. Then the fields of Israel are supposed to lie fallow, and observant Jews seek agricultural products grown elsewhere. Before the Hamas takeover, Israel’s rabbis had reached agreements with Palestinians to import vegetables from Gaza, Major Lerner said. Given the needs of both sides, it may still happen.
タグ「delphi」を含む注目エントリー - はてなブックマーク
Delphiアプリケーションのメモリリーク検出法 (山本隆の開発日誌)
http://www.componentsource.co.jp/features/delphi/
TMS Software | Productivity software building blocks
Components > Effects and Multimedia > Video. Torry's Delphi Pages
Components > Effects and Multimedia > Audio. Torry's Delphi Pages
Components > Effects and Multimedia > Voice. Torry's Delphi Pages
Components > Effects and Multimedia > Direct X. Torry's Delphi Pages
eXeScope(Windows95/98/Me / ユーティリティ)
Delphi-ML〓〓〓〓〓〓〓〓〓〓〓??About Delphi
Delphi Q & A 〓f〓〓〓〓 〓〓〓〓〓〓O〓〓(HTML〓o〓[〓W〓〓〓〓)
Delphi WAVEサウンド音を鳴らす/Tips & Tricks
5分ではじめるDelphi - 第1回 簡単なメディアプレーヤの作成(前編)
Controling sound volume from code
lsMicrophone: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT
SwissDelphiCenter.ch : ...set the volume for the microphone/ mute it (enhanced)?
Components > Sound Effects > Mixer. Torry's Delphi Pages
PlaySound('C:\WINNT\Media\start.wav', 0, SND_FILENAME or SND_ASYNC);
Delphi6でプログラミング ビットマップの半透明コピー AlphaDraw
procedure TForm1.Button1Click(Sender: TObject);
bmp1.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FINANCE.BMP');
bmp2.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FACTORY.BMP');
Form1.Canvas.Draw(10,10,bmp1);
Form1.Image1.Canvas.Draw(10,10,bmp2);
bmp1.Free;
bmp2.Free;
無料版Delphi6でSTGをつくるためのプログラミング講座 Ver.2005 Jan.
SwissDelphiCenter.ch : ...get the MAC Address?
もっと楽にGUIとの連携がしたい:Python + Delphi = P4D(Python for Delphi) - ふにゃるん
Delphi WindowsのOSのバージョンを取得する/Tips & Tricks
SourceForge.net: Gecko SDK for Delphi
BDS(Delphi/BCB)用SQLiteライブラリ (山本隆の開発日誌)
SwissDelphiCenter.ch : programming tips
ナッキーの「Turbo Delphiはじめて奮戦記」- 第1回 Turbo Delphi のインストール
フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro
フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro
http://torrent.borland.com/turbo_hotfix_rollup.zip
http://torrent.borland.com/prereqs_jp.zip
http://torrent.borland.com/turbodelphi_jp.exe
(1) \dotNETRedist\dotnetfx.exe
(2) \dotNETRedist\langpack.exe
(3) \dotNETRedist\NDP1.1sp1-KB867460-X86.exe
FizzBuzz・・・。
DROP TABLE IF EXISTS `tmp_fizzbuzz`; CREATE TABLE `tmp_fizzbuzz` ( `num` int( 4 ) NOT NULL default 0, `fizz` VARCHAR( 4 ) NOT NULL default '', `buzz` VARCHAR( 4 ) NOT NULL default '', PRIMARY KEY (`num`) ) ; delimiter // DROP PROCEDURE IF EXISTS fizzbuzz// CREATE PROCEDURE fizzbuzz() BEGIN DECLARE bufnum INT DEFAULT 1; delete from `tmp_fizzbuzz`; WHILE bufnum <= 15 DO insert into tmp_fizzbuzz (num) value (bufnum); set bufnum = bufnum + 1; END WHILE; END // delimiter ; call fizzbuzz(); update tmp_fizzbuzz set fizz = 'Fizz' where mod(num,3) = 0; update tmp_fizzbuzz set buzz = 'Buzz' where mod(num,5) = 0; select if (concat( fizz ,buzz) = '' , num, concat( fizz ,buzz) ) FizzBuzz from tmp_fizzbuzz;
mySQLでつくってみた。
文字列の連結ができないで死にそうになった。。+とか&でやっても0で帰ってきやがるのさ。
そしてそもそもストアドを使わない仮想レコードの作り方ができないで死にそうになった。
なんか、こんなのに時間かけるつもりなかったんだけどなー・・・。
だめっぽ。
modとか使っちゃだめなんだっけ? 知るかヽ(`д´* )ノプンピー
ヨーロッパ株はまだ下げているみたいだね。
でも今回は日銀の非はそんなにないと思うなあ。
利上げしないで、あのまんま円キャリートレードの対外投資が増え続けてたとして、それがrewindしたときのダメージは今回どころじゃないよ。
日銀の利上げ以外の要因としては、アメリカの耐久財受注が想定外のダウンしてたのと、偶然重なっちゃったってのはあるかも。
http://news.google.co.jp/news?hl=ja&ned=jp&q=%E8%80%90%E4%B9%85%E8%B2%A1%E3%80%80%E5%8F%97%E6%B3%A8
興味深いのは、日銀の利上げに対して、Newsweek と the Economist が反対の評価をしてるってところ。
物価下落が収まったのは実力ではなく国外要因のため
But Mr Fukui’s sights are set further ahead. He makes policy according to the inflation outlook about two years down the road. Over that horizon, Japan’s recovering economy will surely begin to press against its supply-side limits, pushing up wages and prices. Mr Fuki’s forward-looking policy has something to look forward to.
http://www.economist.com/daily/news/displaystory.cfm?story_id=8731403