はてなキーワード: 配列とは
本来は和泉千晶→杉浦小春→風丘麻里→小木曾雪菜→冬馬かずさの方がいいんだろうけど私は
杉浦小春→和泉千晶→小木曾雪菜→冬馬かずさ→風丘麻里 の予定。
・千晶=若いころの関係にとらわれない。春希よりも自分を優先する「まっとうな人間」。
・麻里=若いころのかずさ→主人公の関係の反復。ただし大人。
という感じかしら。やってみないとわからんけど、千晶はヤバイ香りがプンプンする。
これだけみたら、かずささんが優遇されすぎな気がするね。
雪菜さんの不憫さがハンパないけど、逆転を期待するしかないね。
ちょこっとやった限りでは、風丘麻里はクリアしなくてもいいんじゃないかな、と思ってきた。
このキャラは、かずさ的なポジションのまま、良い先輩のままのポジションの方がいいんじゃね?と。
このキャラはあえてやるなら最後のご褒美って感じにしたい。少なくとも冬馬のあとにしたい。
冬馬にしたって、主人公が雪菜ルートまでにヘタレというか過剰な自虐的ナルシシズムを改善、せめて自覚してくれないかぎり、やる気が出ない。
そんくらい冬馬はすきなんだよな。主人公、しっかりしてくれー。
とりあえず、キャラの好みは現時点では
雪菜さん < 小春 < 千晶 < 依緒 < かずさ <麻理 となっております。
ただ、往々にして、ストーリー的でみると、
ツンデレキャラのストーリーの質はかなり下がることが多いので(ツンデレキャラは報われない時が一番輝くのにそうしない)
小春を一番手に置くのが安牌だと思われ。千晶はまぁ主人公の欺瞞をぶっ壊す立場として期待。
ここで主人公が壊れなければ、麻理投入したあと雪菜に。どっちがぶっ壊す役か微妙にわからないんだよなぁ。
しかし、この作品のシナリオライターは変態だなぁ(良い意味で)
2010/05/16 23:40
こんにちは。昨日会った者です(これで特定するには情報不足だけど、まあわかるよね)。
で「幅優先探索でやる」という方針自体はいいと思うし、データ構造の作り方も基本は押さえていると思います(斜め読みしかしてませんが)。
ただ、コーディングの発想が「C で作る」という大方針から見て、少しちぐはぐな印象も受けます。データ構造の設計や操作の部分、汎用のライブラリを作ろうというのならあれでもいいと思うのですが、わざわざ汎用のライブラリを使わずに自分で専用の道具を一から作ろうというのなら、問題の性質を考慮して能率良くやることが大事です。
ところが、ここに載っているコードを見ると、見かけが C らしくなく、C++ や Java の劣化版のような印象を受けます。記法(マクロを大文字化しない、ルーチン名を大文字で始めるなど)だけの問題ではなく、データ構造の設計思想が「C で書く」という方針と矛盾しているように見えます。
もう少し具体的に言うと、そもそも C というのは現在 Web 系の世界などで流行のスクリプト言語類とは逆で、汎用言語でありながら低レベル(ハードウェアに近い)処理が簡単にできることに特色があります。つまり、組み込みを想定してプラットフォーム非依存のコードを書いたり、ハードウェアの特性を考慮して低レベルな最適化をやりたいというときに適しています。
そこでこの問題ですが、これを C でやるということは、処理速度や使用メモリ量の最適化が要求される状況、つまり迷路の大きさが途方もなく大きいような状況を想定すべきです。もっと言ってしまえばこの問題、たとえば画像処理などで似たような発想が要求されることがあります。このため、どうすれば時間のかかる処理を切りつめることができるかを考えてやらねばなりません。
このプログラムの場合、時間のかかる処理の代表格である malloc() が大量に使われています。これはいかにもまずいです。このような大量データを処理する場合の定石は、あらかじめ必要なだけメモリを確保しておいて、自分で割り当てることです。具体的には、必要と想定される量だけメモリを配列の形でどかっと確保しておいて、配列のインデックスをポインタ代わりに使います。そして、足りなくなったら倍々のような感じでメモリを realloc() してやればよいのです。
なお、そのような観点で言って、木の各節点の子の数は高々 4 (スタート地点が内点でないとすれば 3)であることを使っていることはよいと思います。ここで「子のリスト」とかを作ってしまっていたらこれはもうアホもいいところですから(容量の節約にすらなりません)。
そんな感じでしょうか。
とにかく、この手の問題は、アルゴリズムさえわかっていれば可読性もヘッタクレもないので、「短く書く」というような表層的なことよりも、何が求められているのかをよく考えて、柔軟に設計思想を考えることが大事だと思います。
2010/05/17 13:54
Oさんですね。専門的なコメントありがとうございます!cで書くと言いつつObjective-Cっぽい発想で書いていました。マクロの命名もその影響で、関数はImage Magickなどに似た命名規則になっている気がします。mallocを使いすぎると時間がかかるということは全然意識していませんでした。今度作るときはメモリ管理を自前で用意する発想を取り入れてみたいです。参考になるコメントありがとうございました!
みんなも知っての通り、前々から2chなどでヤフー知恵袋が『Yahoo!バカ袋』『Yahoo!知恵遅れ』とネタにされています。
たとえば
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1252778297
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1315883
こんな質問するのは一体何者なんでしょうか。
おもしろいので、こういう質問を集めるサイトを作ってみました。
知恵袋のURLをコピペで登録するだけのシンプルなサイトです。
サイトの名前は『ヤホーおバカ袋』となっていますが、最初は『Yahoo!キチガイ袋』でした。流石にヤフーさんに怒られるかなと思って控えめにしましたwww
ぜひみんなもおもしろい質問をのっけていってください^^
Yahoo知恵袋APIはOAuthを使って書き込みなども出来ますが、今回は記事の内容を取得するだけだったので楽でした。
ひとまずAPIを叩いてXMLを見て、あとは配列にして...と簡単にとれました。
環境はApache+PHP+MySQLを使っています。よくあるあれです。
jqueryも使っています。jqueryプラグインはすごく豊富でajaxを使ったフォームもtwitter風のメッセージバーも超簡単に設置できました。
あと、cssはyahooのcssフレームワークを使っています。yahoo css gridsが便利で、http://developer.yahoo.com/yui/grids/builder/ これを使えば土台が簡単にできました。。
デザインはアイコン載っけりゃいい感じに見えるので、http://photoshopvip.net/ からテキトウに見つけます。
読んでくれてありがとうございました^^!
せっかく作ったので、誰かに教えたくて。。。
ぜひ使って、おもしろい質問を共有しましょう^^
要望あればぜひぜひください。
自分が完全放置系研究室に所属していた時に知っておくと、もう少し楽だったろうなぁと思うツールを単に列挙
よって内容に偏りあり。
タカラがリアルタイムPCRでのプライマーの設計指針を書いてくれている。
通常のPCRでも基本的にこれに従えばOK
http://catalog.takara-bio.co.jp/product/basic_info.asp?unitid=U100004425
http://www.sigma-genosys.com/calc/DNACalc.asp
Primerの長さ、分子量、Tm、GC含量、2次構造の作りやすさ、Primer Dimerの有無などを複数のサンプルに対して計算してくれる。
*異なるPrimer間でのDimer形成に関してのデータは無い
知らないタンパク質が出てきた
○UniProt
タンパク質についてのデータが簡単に手に入る。知らないタンパク質名があったら取り敢えずココで検索
・糖鎖付加部位
・S-Sの部位
・報告されている変異の場所
・関連性の高い論文へのリンク などなど多数の基本情報が記されている
http://web.expasy.org/compute_pi/
使用頻度は低いけれど、無いと困るソフト
○Translate tool
http://web.expasy.org/translate/
コドンのフレームがズレていても、逆向きの配列でも全てのパターンで翻訳してくれる。(フレームのズレ3種×向き2種=Total6パターン)
表示も3文字表記と1文字表記があり、翻訳後のコピ-&ペーストに便利
○Vector Database
https://www.lablife.org/g?a=vdb
配列とマップも表示され、新しいベクターを作製する場合何かと便利
○ClustalW2 - Multiple Sequence Alignment
http://www.ebi.ac.uk/Tools/msa/clustalw2/
系統樹を描いてくれるソフト。ホモログなんかを比較する時にも便利。
http://www.youtube.com/watch?v=r2cG1SzDdBA
YouTubeでもある通り、ホームページ内でも系統樹を見る事が出来ますが、オフラインでデータを見たい場合は
TreeView Xを使えばできます。
http://darwin.zoology.gla.ac.uk/~rpage/treeviewx/download.html
マウスオーバーで単語の意味が表示される。ライフサイエンスに特化しているのためマニアックな単語もいける。
ライフサイエンス辞書ツールのようにマウスオーバーではないが、検索ボックスにコピー&ペーストしなくても検索が可能なので、とても楽。
ライフサイエンスに特化していないが、かなり広い範囲の単語が登録されているのほとんどの単語、述語の意味が分かる。
○検索
http://lsd.pharm.kyoto-u.ac.jp/ja/service/weblsd/conc.html?c
上記したライフサイエンス辞書ツールを開発しているホームページ
単語にたいしての共起表現を検索してくれる。分からない単語の訳の予想や、論文を描く時の助詞を検討する時に便利
とりあえずの便利ツールでした。
K&RのCで書かれたプログラムを渡された(もう少し正確に言えば、VisualStudioのWizardで作られたものにK&RのCでコーディングしてある(C++ですら無い)ので純粋なCでは無いが果てしなくK&RのCだ)。あと、これを作った人はどうにも「ポインタ」の概念が無いらしく、無駄に多次元配列だったり、配列のアドレス渡しとかが多用されている。
作業指示は、これを流用して、C++/CLIかつ.netFramework3.5使用かつ新規案件に対応せよ、との事。
個人的にはどう見積もっても3人で4ヶ月かかる量なんだが、予算が1人で1ヶ月、と言って来た。理由は「Cからの流用だから」。
参ったな。自分としては、C++/CLIはもはや別言語だと思っているんだが。
どうにも上司と顧客に説明出来ない。説明出来ないのは、自分が理解していないせいだ、と言われればそれまでなのだが、自分の感覚で言うと、高段者がうっている将棋や囲碁の一手を初心者に教える、とでも言うか、小学生に微分積分を教えるというか、そんな感覚がある。
いや、相手が、K&RやANSI、C++、C++/CLIを分かっている人間になら、説明は出来るのだが、相手のレベルに合わせて、説明が出来ない。
今回のこれに限らず、見積もりとかすると、「なんでこんなに時間かかるの?」とか「高い」とかよく言われるのだが、やっぱり説明が出来ない。デスマってるプロジェクトには、よくさらなる人員投入がされる事が多々あるのだが、デスマってる時点で負け戦だし、「混乱したプロジェクトに人を投入すれば、さらに混乱するだけ」と自分は思っているので、やめてもらいたいと思っている。
「あんたの小学生になる子供が、100人いたら、東大に合格するくらいの学力が発揮されるんですか?」と問いたい。
あれは、VisualBasic4が出た頃か。それまでWindowsプログラムというものをCまたはC++で書いていた自分には、驚異的な言語に思えた。そしてみんな言う。「VBで作れば簡単ですよ」
自分にはVBという言語はとてつもなく難しい言語に思えた(MFCは論外)。なぜなら「かゆいところに手が届かない」言語だったから。だから、皆が言う「VBなら簡単」の理由がさっぱり分からなかった。ちょっとした使い捨てツールや、極々Windows標準的な事しかやらないのであれば、VBは簡単な言語であったのは分かる。実際自分もそういう使い方をしていたから。
そして、うちの職場ではそんな製品を作る所では無く、仕様を満たすためにはサブクラス化とかWin32APIを使うとかしないと実現出来なかった。もちろん「VBで作れば簡単ですよ」と言っていた連中にサブクラス化など理解出来ようも無く、ただただ右往左往してデスマーチに突入していった。
その時も、お偉方や顧客に説明が出来なかった。「VBなら簡単」と言っていただろう、と言われるだけ。
まぁ、VBも.net時代になってから、だいぶマシになってきたと思うけどね。少なくとも、スレッドセーフになってくれただけでもありがたい。
まぁ、その辺はともかく、もしかして、デスマやIT土方とかなるのは「説明が出来ないから」なのではなかろうか?と思えてきた。必要な時間と予算を説明出来ないから、泥沼になるのではなかろうか、と。
説明が出来ない限り、プログラマーは永遠にIT土方であり、地位向上は望めないと思う。人月の神話じゃなく、ファンクションポイント法とか、なにか定量的に説明出来ればいいのだけど。ファンクションポイント法だって、それが分からない人には通じないわけで。「小学校に入学した児童にも分かるような」説明が出来ないとダメなんだろうなぁ。どうすればいいんだろ?
続きです。
僕は柴田大輔さんの映画にはまっているわけですが、周りの人はなかなか理解してくれません。。。トホホ・・・
まあ、地味で個性的なので当然かもしれませんが、このブログでは、柴田大輔論を含め、気軽に日記でも書いていこうと思っています。
最近は、暑い日が続いていますが、何とか耐えている今日この頃です。
おそらく監督も炎天下の中、撮影に走り回っているのでは?と思っていますが、早く新作が見てみたいものです。
DVDの予約も入れないといけないし、なんだかバタバタしていますが、柴田監督の作品を見るのを楽しみにしているのです。
もっともCMが先だったので、映画だけでなく、広告作品やCMも結構見ていますよ。お気に入りだらけなんです^^
さて、いっちょ行きますか!
http://cinema-j.com/houga/?taxonomy=post_tag&term=%E6%9F%B4%E7%94%B0%E5%A4%A7%E8%BC%94
主役の大統領暗殺犯を追う二人の刑事――すぐキレる血の気の多い早川刑事に宮川大輔、美人にめっぽう弱い番場刑事にケンドーコバヤシ!・・・
・バカバカしいことを大真面目に!『さらば愛しの大統領』柴田大輔監督&世界のナベアツインタビュー
http://cinetri.jp/interview/saraba_interview/
監督は「3でアホになる」という衝撃のギャグを世に送り出し、放送作家としても活躍する世界のナベアツと、NOVAウサギやジョージアなどのCMを手掛けてきたクリエイター柴田大輔・・・
・世界のナベアツが長編映画監督デビュー! 大阪府が独立国家を宣言!? の疑問
http://aromacan.blog118.fc2.com/blog-entry-2108.html
ナベアツは「柴田大輔監督と共に、邦画史上『最もポップコーンとコーラに合う映画』を完成させることが出来ました。更には、・・・
http://www.cinematopics.com/cinema/works/output2.php?oid=10597
CM界で常に新しいものを贈り出す柴田大輔が世界のナベアツとタッグを組み、「これは映画なのか!?」と、これまでの映画体験を覆すほどの、とことん「笑い」を追求したオリジナル作品を作り上げた。・・・
http://blog.goo.ne.jp/tanmen_daisuki
フォトジャーナリストの柴田大輔さんは、2007年にエクアドルに暮らすアワ民族を中心としたコロンビア難民グループと出会い、彼らと交流を深めながら、難民としての困難な状況だけでなく・・・
柴田大輔(かずさDNA研究所・室長)の公演にて・・・21世紀はバイオテクノロジーの時代であると云われている。
医学の分野では、ヒトのゲノム塩基配列の解読が進められており、全体の概略が2000年6月に発表された。
・柴田大輔のページ
特にアニメ部分に関してはほとんど同じ水準にある萌えオタニュース速報とどうしてこんなに差が空いてるか、は興味深い。
結論を先に書くと、私が思ったのはやらおんって階級意識が明確だよねってこと。そして、一番人数が多い層の人間が一番優越感を感じられる仕組みになってること。
そして、その仕組みの結果としてやらおんでは祭りが発生する。萌えおたニュース速報では発生しない。この差は大きい。
発端は、批評家たちに対しての反発だろう。
こいつらアニメにとって何もプラスの貢献をしなかったよね、むしろ存在自体がマイナスだよねってくらいの嫌悪感を感じる。
同時に、技術とか能力ないけどアニメについて語りたいって層を大歓迎してるというのも感じる。
えらいのは、作ってる人と声優さん。それから買ってる人。ちょっと下の階層に楽しもうとしてる人。アンチや批評家は最下層に位置づけ直してる。
私は声優に全く興味がないし、ローソンフェアとか全く興味ない。売上情報もそこまで気にすることないと考える。
なので、なんでこの人こんなに声優とか消費活動取り上げるんだろう、って思っていたのだけれど、
こういう序列になってるんだと考えれば納得する。そりゃこっちのほうが重要度高いんだからあたりまえだよな、と。
批評家の毒にも薬にもならない批評よりかはよっぽど役に立つよねー、ということなんだろう。
他にもイロイロと特徴がある。たとえば理解しようとしてる人間への寛容さや親切さ。パロディによる個々人の楽しみ方の紹介など。
今では他も真似してるけど禁書の解説記事を毎回載せてたのは印象的。
本来禁書みたいに「解説が必要なアニメ」は、キャラ魅力が低かったらボッコボコに叩かれてたんだろう。実際錦織監督は叩かれまくってるわけで。
AB!に対するの態度も全体を叩きつつキャラ萌えを押し出そうとしてたし、
女にコンプレックス抱いてるキモオタ男読者が多いのを意識してか君に届けとか放浪少年を取り上げないところとか心遣いがわりと細かい。
かなり明確な思想の持ち主であると思う。
一方やらおん空間においては今まで好き勝手に作品を叩いてそれなりにいい気分に浸っていられた批評家やアンチの扱いは悲惨なものだ。
やらおん空間においては彼らは「バッシングを受ける対象」としてしか存在を許されていない。
お前らの存在いらねーんだよ、と。もう口閉じて眼と鼻と皮膚呼吸もやめて死ねくらいに思ってそうだ。
せめて口を開くなら、ヤマカンやハルヒの中の人のようにアニメの話題の肥やしになれ、うんこ野郎。
あずまんみたいに言うだけじゃなく自分で作ってみろ。そして作った物に責任をとれ、敬意を払えと。
実際の事情はどうか知らないが、制作者の立場に立ちながら無責任、アンチな言動とったと受け取られたあずまんはまさにワーストオブワースト。
やらおん空間ではリサリサ先生のまなざしを向けるのがふさわしいレベルなんだろう。
そういうやつらを見せしめにして、名状しがたい祭りを楽しむのがやらおん。
割とたんたんとアニメの話題だけを載せ続ける萌えオタニュース速報。
どっちが正しいとは言えないけど、人気があるのは圧倒的にやらおんだなぁ、と思う今日この頃。
個人的には、やらおんの価値観の再配列ははわりと一時大戦後のドイツの全体主義を彷彿とさせるものがあってあまり好きではないのだが人気には納得する。
よく「やらおんに比肩するサイトがない」っていうのが話題になるけど、扇動力が全然違うのは確かだよ。ほんとうに良く出来てる。
最終的に、能力も知識もない人らが権力を握ったアニメ業界が、知識層を追いだしてどういうアニメファン層をつくるかと思うとげんなりするが、それが世界の選択というのならしょうがないわね。理想としては、既存の評論家どもはきっちり潰れて、個人サイトとか若い人らが評価され直すといいんだけどなー。
で、そもそもなんでこんなに批評家や知識人(笑)に対して風当たりが強くなってるんだろうか。
それは、多分みんな「このままだとアニメそのものがなくなっちゃう」ってぼんやりと危機感を覚えてるんじゃないだろうか。
あるいは、少なくとも批評家をトップに置く序列に対する現状に対する猛烈な反発があるんじゃないだか。
上から目線で批評を加えたり製作者の状況無視して割りに合わない要求ばかりしたり、
アニメにはいろんな要素があることを忘れてテーマとかストーリー語ってるやつらばっかりだと、
じゃあお前らは文学(笑)でも読んでろって製作者がブチギレて、
ほんまに純粋にビジネスとして萌え豚向けアニメしかつくられなくなるんじゃねーかと。
それぞれに人の集まりができて、市場ができてってなっていけば。
でも、どいつもこいつも批評家の口にするのって同じことなんだよね。内輪感半端ない。
あずまんとか宇野とかそういうもともとコミュニケーション苦手そうなやつらがメインとなって
自分たちの居心地の良い空間をつくろうとしてるから異物があまり育たなかったんだろう。
楽しみ方が恐ろしく窮屈で偏屈。喋ってる本人らはデブばっかのくせにどうしてこうなるんだろう。
あの界隈、多分2~3人いたらあと全部キャラかぶってるからいらない。
そういう批評家どもの多様性の無さのため、批評家が褒める作品って限られてくる。
そうすると、こいつらを中心とした序列だと、本当に一部の作品しか残らない。
それは、ものすごくアニメというものをつまらなくさせてしまう、と、そんな展開。
これも本当のところはどうかしらない。ただ、明らかに彼らが戦犯扱いなのは間違いない。
あまり気持よくないのだが、ドイツのブルジョワ階級と違って批評家が役立たずだという点には同意してるのでまぁ別にいいかな(爆
参考記事
はちま機構のことはしらんけど、こういうのと比べるとやらおんは比較的全うだと思う。
コーディングに詰まっている人を見かけるたびに「どうしてそこで単純な配列に突っ込んで単純にループで回すだけ、という単純なアルゴリズムが思いつかないんだろう」と思う事がある。
これ、新人によく言われる、よく言われるわー。
ただ、たぶん「分かる人」と「分からない人」てのはあるんだと思う。
惣菜のパックの透明なフタを製造したりナニしたりっていうバイトをしてたんだけど、
先輩に言われても、最初はさっぱり分からなかった。どう違うのかと。
しかしある日突然、ウラとオモテの違いがはっきりと分かるようになってしまった。
本当に突然の出来事。光沢が違うのが分かった。完全に分かった。
多分それまでずっと脳の中ではパターンマッチの学習が行われてきたんだと思う。「子猫が単純な図形を識別するのに必要な学習」と大体同じような理屈による学習。そしてある瞬間、ついにその学習の成果が、どっか「俺の意識」に関連する神経と繋がったんだと思う。
今では「分からなかったあの頃の自分」が分からない。ウラとオモテがどう同じように見えていたのか、さっぱり思い出せない。
そういう劇的な体験の他に、今、俺はプログラマやってるんだけど、コーディングに詰まっている人を見かけるたびに「どうしてそこで単純な配列に突っ込んで単純にループで回すだけ、という単純なアルゴリズムが思いつかないんだろう」と思う事がある。俺も偉そうな事は言えないけど、これも経験によって「分かる」「分からない」が如実に現れてるんだと思う。
そういうのが、あるんだと思うよ。
※ 惣菜のプラ板の話はフィクションがまぎれていますw 本当は別業種の別材質のウラオモテ。新人さんの全員が、まずこれのウラとオモテが見分けられない。
http://kosstyle.blog16.fc2.com/blog-entry-1440.html
を読んだときに頭の中で即変換された。
<【就活生必読】「目のつけどころが良い!」と言われるアピールを書くための6つの方法>
で早速やってみようと思ったんだが、これが難しいを通り越して無理っぽい。
1. 凡庸さは恥と心得る
2. タイトルは意外なものを組み合わせる
3. タイトルに「具体的なもの」と「抽象的なもの」を組み合わせる
4. 同質のものの間の差異を見つける
5. 異質のものから共通点を見つける
6. 「引用」で「お得感」を出す
その理由を考えているうちに、巷のライフハックへの不満がふつふつと湧いていた。
おそらくこれ改変ネタとしてあんまり美味しくないのは、1~6がストーリーとしてつながってないからだ。
これがオムライス女子みたいにすぐに改変ネタにならないのは多分そういう事なんだと思う。
オムライス女子はは、とりあえず記事を読んだ人間が、自分にその図式を当てはめれば当てはめて
一貫した振る舞い(オムライス女子の場合はバカ)を演じることができる素材だった。
このライフハックも同様だ。出来ない。場合によっては矛盾があって、こまる。
で、世の中のライフハックってこんなんばっかだよな、と。つながりのないやつが箇条書きでズラズラならんでるの。
いい加減、30個とか100個とか項目があって、その中からよりどりミドリみたいなのやめようよ。
その「選択する」という作業がすでに負担になる。特に、むじゅんがあったりや整合性の取れない項目を並列に並べられると、非常にストレスを感じる。結局ひとつもやらずに終わってしまう。それって一番面白くないよね。
それが1000ページの大著であれ、1ページにおさまる6個の項目であれ、それを読むことで自分が実践してどう変化するかというストーリーを作れないなら自分にとっての敷居の高さは全く同じだ。分量が問題なのではなく取捨選択しなければいけないというところが問題なのです。
自分を当てはめてそのネタを消費できるようにするためには、巷のライフハックはまだハードルが高すぎる。
効率厨のみなさんには無加工で味も素っ気もない情報としてライフハックを毎日私らのもとに届けているLifehacker.jpなんかの方がいいのかもしれない。でも、私にはあれ食べられない。勝間本とか生食用のユッケのような味わいで腹壊しそう。「楽をしなけりゃ成果が出ない」みたいな2ページに1ライフハックが100個入ってるみたいな本ってのは全然味がわからない。もっとちゃんと料理されたものが食いたいのですよ。うんちく聞きながら、友達と一緒に会話しながらゆっくり味合わないと勿体無いですよ。 食べられなかったり腹下したりするものがいくらお買い得価格でも意味が無い。むしろお金と時間の無駄になっちゃう。
取捨選択のストレスも、配列の手間もいらない、ストーリーを持ったライフハック。
本来矛盾や衝突を管理するための論理であるマネジメントをそんなチープなものにできるとだれが思うだろうか。
しかし、そのチープさ故に、素材の良さを残しつつ誰でも消費できるものが出来上がった。
非効率ではあるが丁寧な仕事だと思う。割高で量も少ない、原価計算とかし出したらクソのように思える物。
でも、回転寿司じゃないんだから、メニューズラズラ並べられるよりレストランオススメのコース料理だしてくれる方がいいのですよ。自分で料理が出来ない私が、わざわざ他人が作ったものを食うなら、ああ言うのが一番あってる。多分。
ライフハックブログの人やライフハックの著者がそれを書けとは言わない。ただあれ書いた人たちは、著作権とか全部放棄して、紹介したネタをいかようにも改変・ストーリー化してよいということを明言して欲しいところ。
東日本沖で起きた巨大地震について http://sk01.ed.shizuoka.ac.jp/koyama/public_html/etc/EastJM9.html
地震が発生したときの地震学者は《大変なことが起きてしまいました。》と勿論思うけど、その一方で「地震キター!これで論文5〜6本書けるから、私の学会での地位も安泰だ」とも思ってしまう者です。
「東日本沖で起きた巨大地震について」書かれた小山先生も《大変なことが起きてしまいました。》と思う一方で、「チキショー!これが富士山大爆発だったら俺のテリトリーだったのにい」とほんの少し、本当にほんの少しだけど、思ってしまったでしょう。
Amazonで「小山真人」と入力して検索すると解りますが、小山先生は以下の本を書いたり監修されたりしてます。
先生の次の本は「《東日本全体の地殻歪が再配列・不安定化》している。それに伴って富士山の活動も活発化してるため、いつ噴火してもおかしくないのだ」という内容になります。
その本の狙いの一つは「富士山噴火が近いので、観測・研究のために予算を投じるべきだ。ついては私、小山真人に研究予算をつけなさい」というものです。予算の確保も研究者の重要な仕事の一つであり、また、自己主張が強くなくては学者としてやっていけないので、このことは恥じることでも何でもありません。
を見てみましょう。
画面を下の方にスクロールしていって論文タイトルを眺めると、小山先生の専門は「火山」であることが解ります。先生の専門である「火山」と、先生が「東日本沖で起きた巨大地震について」で論じられた「地震」の間には以下の大きな違いがあります
科学的な観測が可能になってからは噴火の記録がない富士山は「いくつかの火山」には含まれません。2000年に噴火した際に素早い避難で被害を抑えた有珠山などが噴火予知しやすい火山になります。
地震予知が不可能なのは、地震学者が怠慢なためではありません。日本全国をカバーする満足な観測網がなく、地震発生時のデータが取れないためです。それでも「ある地域での大地震は周期的に発生する」という仮説のもとに粗い精度で「200年〜300年周期で大地震が発生する」と言っているのです。
このロングスパンの周期を突き止めるために、小山先生のもう一つの専門である「歴史地震」が用いられています。古文書に記された地震に関する文書を調べ「吉原では灯籠が倒れたという記述があるから、震度は6ぐらいだな」と見当をつける研究です。ひたすら古文書にあたり、いつの地震のものかはっきりしない記述の年代の見当をつけ、震度の見当をつけ、震源地を探っていくという考古学に近いものが「歴史地震」です。
地震予知の現在のレベルは「地震は、いつか、どこかで、必ず起こる」というものです。にもかかわらず《歪の再配列にともなう地震や火山噴火が、今後数年かけて東日本全体で起きていくことになるでしょう。》と断言できる理由が解りません。
今回うごいた太平洋プレートに沿った部分に歪みが生じているというのなら解ります。《実際にインドネシアでは》と小山先生が挙げている事例は、同じプレート境界で地震が続くことを示しています。なのでこの文章の主旨が「太平洋プレートの境界で、今回うごいていない、十勝沖・根室沖、伊豆諸島沖で大規模地震が続く可能性がある」なら理解できます。
もし歪みが異なるプレートもしくは内陸の活断層に生じると言いたいのであれば、同じプレート境界での地震を挙げるのではなく、内陸部で大地震が発生している事実、もしくは隣接する異なるプレートの境界で大地震が発生している事実を挙げなくてはなりません。
それでも地震や火山噴火が東日本全体で起きるという理由は何なのでしょう。現在の地震学で、そのような知見が得られるのでしょうか。
もし《歪みの再配列のために地震・火山活動が起こる》と言いきれるだけの知見があるなら、どこに歪みが生じていて、それがいつ頃解放されるのか言えるのではないでしょうか。「どこで解消されるか解らないけど、とにかく東日本のどこか」というのは、一体なんの根拠があって断定できるのでしょう。
小山先生が挙げられたプレート図を見れば解りますが、日本はいくつかのプレートがぶつかる地点に位置しており、大地震が起こりやすい国です。
しかしこれは、昨日今日そうなった訳ではなく、ましてや東北地方太平洋沖地震が発生してそうなった訳ではなく、日本列島が形成された頃からずっとそうなのです。東海大地震については、何十年も前から「いつ起きてもおかしくない」と言われ、東南海・南海地震についても警戒が続いています。
なので東北地方太平洋沖地震によって《地学的に平和で安定した時代は終わりを告げた》わけではなく、日本に住む以上は「地震は、いつか、どこかで、必ず起こる」状態にあります。
地震に対して備えるのであれば、地震のない日が何年も続いても、日々備えを怠らないことが重要となるでしょう。大地震が起きたからと言って慌ててパン・カップラーメン、トイレットペーパーを買い占めるのとは、異なる態度が重要です。
小山先生のテーマに「防災」もあります。事実を淡々と述べて行く中で防災意識が高まらず、歯がゆい思いをされたこともあるのではないでしょうか。そうした思いが、今回のようなある種「煽っている」文章を書かせているのではと思います。
ということです。
http://1-byte.jp/2011/03/20/20_tips_you_need_to_learn_to_become_a_better_php_programmer/
良いPHPerだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。
つまり俺たちがしなくちゃならないことは「より良いPHPerにならないため」に何ができるかってことなのさ。
それじゃ、始めよう。
?>なんて使っちゃいけない。そう俺たちはBAD PHPer。
無駄なホワイトスペースの出力に悩まされるくらいなら対称性なんて丸めてゴミ箱にでも捨てた方がまだマシだ。非対称性こそが賛美。
require_once("config.php");
未だにこんなことやってるやつがいるのかいベイベー。絶対にダメだ。この一行を見たら俺は悶絶する。
ダメだ、早く何とかしないと。
大抵このconfig.phpの中身はこうなっている。見て絶望だ。
$hoge_path = ''; if (!LOCAL) { define('FOO_FLAG', 1); if (HONBAN) { define('HOGE_FLAG', 1); } else if (TEST) { define('HOGE_FLAG', 2); } } else { $hoge_path = '/local'; define('FOO_FLAG', 2); define('HOGE_FLAG', 3); } define('HOGE_URL', $hoge_path.'/hoge/');
こういうのが延々と続くわけだ。もういやだ。もう見たくない。
本番環境とテスト環境でどういう値の違いがあるのか、ローカル環境だとどうなるのか、まったく把握できる気がしない。
なまじPHPな設定ファイルのせいで、処理をついつい書いてしまう。そしてどんどん複雑になってしまう。
やはり設定データは基本的にYAML等のデータしか定義できない形式のもので用意すべきだ。そして環境ごとに設定ファイルを分けるべきである。
そうすることで何にどういう違いがあるのかすぐにわかるし、diffすれば一度にすべて把握することができる。
# 本番環境設定ファイル foo_flag: 1 hoge_flag: 1 hoge_url: '/hoge/'
# テスト環境設定ファイル foo_flag: 1 hoge_flag: 2 hoge_url: '/hoge/'
# ローカル環境設定ファイル foo_flag: 2 hoge_flag: 3 hoge_url: '/local/hoge/'
// ここで後の処理のためにhogeメソッドを呼び出しておく $q->foo(); // $a['foo']はここに来る時点で真のはず // 2010-03-10 判定がおかしいので修正 // 2010-06-21 やっぱり値が入ってる方が正しい if ( !isset($hoge[0]) ) { }
コメントは保守されない。そう、それは真実。こんなコメントを発見したら即効削除しよう。コメントは基本信じるな。
俺たちにちょっとしたヒントと大きな損害を与えてくれる、それがコメントの役割なのだ。
わかる。いいたい事はとてもわかる。俺たちはしばしばインデントにスペースを使うはずだ。一方でIDEのしっかりした言語ではタブも使うことがある。しかし悪いことに、両者を混同しているプログラマも一定数いるのだ。
タブを画面上で認識しにくいエディタが世の中には存在する(何とは言わないが)
そして画面上で認識しにくいことを理由にタブを気にしないプログラマがいる。
この二つの条件が重なると、タブとスペースの交じり合ったインデントが完成する。もうぐちゃぐちゃだ。これは永遠に続く戦いだ。
私たちが勝利を掴むためにできることなどせいぜい、常にスペースしか使わない。タブを見つけたらその都度スペースに変換する。そういった地道な活動が明日へとつながるのだ。
われわれがプログラムをするとき、何に一番時間がかかってるか。実は変数の命名なのである。ここで拘り過ぎて時間をかけ過ぎては何も進まない。
御託はイイからさっさと書け、だ。しかしとはいっても変数名は重要。日頃からどういうときにどんな名前を使うかを決めておくといい。
そして変数名に型はまったく必要ない。型宣言のないPHPにおいて、型の変数名をつけること自体ナンセンスだ。
$iNumber = 'aaa';
になんの意味もない。コメントを信じるなでも言ったが、これはプログラマを混乱させるだけの害悪なものだ。
変数を使う前に初期化するのは、警告を出さないという意味でも良い癖だ。しかし具体的にどこでやるかが問題だ。
$foo = null; $foo = $q->foo();
こんな初期化に意味はない。よくあるのはやはり、if文で値を振り分けるケースだろう
$foo = null; if ( $hoge ) { $foo = 1; } else if ( $bar ) { $foo = 2; }
このときの初期化はとても有効だ。もしnullの初期化を忘れたまま$fooを使うと警告が出るが、ちゃんと初期化してるので出ない。基本中の基本だ。
function getStatus() { $bReturn = false; if ($i == 2) $bReturn = true; return $bReturn; }(中略)
もし、何かしらの理由で、あなたの書いたif文が間違っていたら?
この書き方をしていれば、間違った値に対して、常にfalseが返る。
私たちが、PHPでsensitiveなデータを取り扱うなら、正しいデータが入力されるまでは、動かないコードを書くべきだ。
trueとfalseの条件がいまいち明確ではないが、本当に動かないコードを書けというのであれば以下のようにすべきだ
function getStatus() { $bReturn = false; if ($i == 2) $bReturn = true; else if ($i == 1) $bReturn = false; else throw new Exception("bad status! $i"); return $bReturn; }
中途半端にfalseを返して生存させる必要性はまったくない。今すぐ死ね!
連想配列のキーを指定する場合だけ定数と間違わないようにクオートで囲まなければならない。そして逆に定数を使いたい場合はクオートで囲ってはいけない。
更に後世のプログラマが処理を見たときに、定数が使いたかったのか、文字列が使いたかったのかを明確にしたい場合はconstantを使うと良い。
// 定数のFOOを使うよということが明確になる print $a[constant('FOO')];
もし、文字列を変数の値と一緒に出力するとき、PHPではコンマの代わりにprintfを使うことが使える。
printf( “Hello, my name is %s“, $sName);
以下の代わりに上記のコードを使う。
echo “Hello, my name is “, $sName;
出力すべき変数が増えれば増えるほど、有効になっていく。とにかく迷ったならば、printfを使え、だ。
三項演算子はとても有効だ。しかし優先順位に難があるせいで、三項演算子をネストしようとすると以下のようなコードになってしまう
$n = (($i == 1) ? 2 : (($i == 2) ? 3 :$i));
括弧だらけで読みにくいったらありゃしない。三項演算子を使うなら一回まで。約束守れないやつは丸めてゴミ箱にでも捨てちまえ。
if ( $flag ) { }
仕様をちゃんと把握しているなら真偽値のチェックなどこれで十分。
もし事前にbool型だというのが確定してるのなら「$flag === true」を使えばいい。
インクリメント、デクリメント演算子は前に付くか後ろに付くかで意味が変わるので慣れるまでは非常にややこしい。
わけがわからなくなるくらいなら初めから使わないほうが良い。見極められないなら使うな。それがPHPerなのだ。
文句なしだ。これは文句がない。
他にも色々あるので覚えておこう
$a %= 1; $a &= 1; $a |= 1; $a ^= 1; $a <<= 1; $a >>= 1;
てっとり早く画面に表示する際にpreはよく使うが、デザインの関係上画面の文字が見えないときがある。
なのでdivを使って以下のようにしとくと便利だろう。
function p($var) {
echo "<div align='left' style='background-color:white;color:black;'><pre>";
print_r($var);
echo "</pre></div>";
}
君らが通常作るアプリケーションなんぞに、定数なんぞ必要ない。いいか、もう一度言う、お前ら程度のもんが、定数使おう何ぞ、おこがましいわ!
大丈夫。なんでもかんでも定数にする必要はない。結局設定ファイルに定数をずらずら作りまくってわけがわからなくなってるパターンが多い。
貴様みたいなもんに、定数は制御できん。いいか設定ファイルはYAML等のデータで持つようにし、その連想配列のデータ構造を一つ持ってるだけで定数の変わりになる。
このメリットに比べれば、定数だと書き換えられなくて良いという利点などこの歯のカスほどのものだ。そんなものは丸めてゴミ箱へ捨ててしまうといい。
認識を改めろ。俺たちはより良いPHPerにならないために努力している。
class Request { private $parameters; private $method; function __construct () { $this->method = $_SERVER['REQUEST_METHOD']; if ( strtoupper($this->method) === 'POST' ) { $this->parameters = $_POST; } else { $this->parameters = $_GET; } } function param ($key) { return isset($this->parameters[$key]) ? $this->parameters[$key] : null; } }
これだけでもいい。たったこれだけでもとても便利だ。ここから拡張してGETやPOSTを明示的に取るメソッドとかも作ってみるといい。自分の手を動かすのだ!
例が良くない。こんなのは引数が20個ある関数から、setを20回呼ぶオブジェクトに変わっただけではないか。
そもそもこの20個の引数とはなんなのか。何かのデータ構造なんであれば連想配列にして引数一つとして渡すべきだし、それぞれまったく異なる用途の変数なのであればWindowsプログラミングじゃあるまいし、20個も引数取る時点で設計が間違えている。
何がいいたいか。別に関数でもオブジェクトでもどっちでもいいということだ。
そんなことで悩んでる暇があったら設計を見直せ。
スキあらば自分自身を返せ。スキあらばオブジェクトを返せ。配列はArrayObjectのARRAY_AS_PROPSで返せ。
ひたすらメソッドチェイン。来る日も来る日もメソッドチェイン。とにかくメソッドチェインを使い続けろ。そこに未来はある。
どんなコードも繰り返すな。もし、少しでも同じコードを書いていたなら、それは関数に置き換えてしまえ。
・・・と、いうのはやめなさい。
一見同じように見えた処理でも前後の流れでまったく違うものということが往々にしてある。
まとめ方にも問題があるケースもある。何でもかんでも関数化すると、関数が膨大に増えていく。君は見たことがあるだろうか。common.phpやfunction.phpの恐ろしさを。
確かに細かく関数化はされているが、適切に関数化していないのである。結合度が非常に高い。なんでもかんでも盲目的にまとめれば良いという話ではないのだ!
あまりに極度に意識しすぎると、プログラムそのものができなくなる。そういう状態に陥る。
気を抜いて。そう気を抜いて。所詮あなたのコードなんてすぐに消えてなくなるよ。きっともっと偉い人が作り直すよ。だからまずは思うが侭にやるといい。
結合度を減らすというのは非常に難しい。何度も何度も失敗し続けて、ようやくここは分けた方が良かったんだなと気付く。次に活かそうと心に決める。そしてまた同じ過ちを繰り返していくわけだ。
まずは実装することだ。これが一番の早道だ。まずはがっつり結合した関数をあえて作るといい。何も考えずに作ろう。
そしてその後に、一部分使いまわしたいとおもうことがあるはずだ。その時に関数に切り出そう。それを繰り返すといい。そのうち初めから分けた方が良いと気付く。
何事も経験が必要である!経験を積まないプログラマは丸めてゴミ箱に捨ててしまえ。
さて、先の例で言うならば、私ならadd_result_outputという関数を作ってしまうだろう。だって、addとresultを連続して呼ぶのはめんどくさいんだもん。一連の流れをいつも使うのなら、その流れをやってくれる関数を作ればいいじゃないか。
function add_result_output ($iVar, $iVar2) { $r = add($iVar, $iVar2); echo result($r); }
もっと言えばクラス化してしまってもいいかもしれない。どんな感じになるかは君の手を動かして確認しよう!
このTipsはとてもわかりにくく、ニッチ過ぎる部分も多いかもしれない。
あくまでも「より良いPHPerにならないための20Tips」なのだ。
君はこの記事を鵜呑みにしてはならない。PHPをPHPと見抜けないPHPerはPHPを使うのは難しい。
もし、あなたがPHPプログラマなら、公式のPHPドキュメントはあなたのケツの穴を拭くための紙になるだろう。
私は、それぞれのセクションを眺めて、各関数でどんなことが出来るかなんぞ、歯クソのゴミ程に役に立たないとおもっている。動けばいい。はは。
あなたは、PHPで用意された既製関数で多くのことが実現できることに、(俺の仕事を減らすなと)驚くはずだ。
この記事があなたの役に立たない事を。
ふざけんな!
この記事に書かれている内容は、丸めてゴミ箱に捨てた方が良いレベルです。
親切なトラックバック、指摘に感謝します。プログラム改良を思いついたのですが書き方がわからないので忘れないように書いておきます。
上のプログラムでは素数か判定する数を既知の素数を格納した配列にある全ての素数で割ることで素数か判定していました。
初心者としてはなかなかいいアイディアと思っていたのですが、大幅に比較回数を減らせる方法があることに気がつきました。
割る数と商は入れ替え可能なので、素数の2乗でできていて割られる数より大きくて最も小さい数の平方根の素数までを
割る数として使えば事足りると気がついたのです。つまり113は11まで割って割れなければ素数として確定するという事です。
私のプログラムだと、13から109までの素数ので割るという比較をしなくて良くなります。
プログラムに落とし込むには配列内の全てに実行するsosuu_hairetu.each do |waru|を指定回数実行するという形に直す必要があります。
array = [1,2,3,4,5,6,7,8,9] n = 0 5.times do puts array[n] n = n + 1 end
初心者の自分にはひねったコードは書けないので期待しないでね。
なれている人のコードはショートハンドとかバリバリ使っててあまり読めないorz。
#小さい順に数え上げて、既知の素数で割りきれないもを素数として表示。 #既知の素数は配列に格納する。 puts '0からどこまでの範囲の素数を探しますか?終端の数を入力してください。' last_num = gets.chomp.to_i if last_num < 1 puts '素数はありません' elsif last_num < 2 puts '素数は1だけです。' else puts 1 puts 2 sosuu_hairetu = [2]#既知の素数を格納する配列 ichi = 0#素数の入っている配列を参照する時に使う count = 3#これが素数であるか比較する対象 while count <= last_num sosuu_hairetu.each do |waru|#それまでに分かっている素数と比較する if count%waru == 0#割りきれたら他のに移る count = count+1 retry end end puts count sosuu_hairetu[(ichi = ichi + 1)] = count count = count+1 end puts last_num.to_s + 'までに素数は' + ( sosuu_hairetu.length + 1 ).to_s + '個ありました。'
それからしごとホスイ。
2010年の年末から年始にかけて10連休ほどあったので、新しいサイトを作ろうと思い立った。
月に1万円だと、毎日コーヒーを飲んでるだけでなくなってしまうので、コーヒー代くらい稼げたらうれしいなあ。じゃあどうする。何を作る?
ということで、まずTwitterを使ったものを作ることにした。
ひとつのジャンルにしぼってツイートをかき集めれば、面白い流れになるんじゃないか。人が来るんじゃないか。そう思った。togetterみたいな。で、ジャンルは、個人的に興味がある子育て。ていうか毎日帰宅してから朝まで子どもの寝かしつけや夜泣きの対応でサイトを更新する暇も、俺が寝る暇もあんまりない。ので、手がかからないことが大前提。なんだったら自動更新でもいい。
自動更新かー。と思って「ブログ 自動更新」でググったら、wordpressにRSSから更新するプラグインがあるらしいことを知った。はい決定。その瞬間、「TwitterのAPIからRSSを引っ張ってwordpressに投稿するサイト」に決まった。
さくらインターネットのスタンダードを申し込んだ。14日お試しがあるらしいけど、仮申し込みの時点で住所も入れてコンビニ請求にしたら、数日後に請求書が送られてきてビビった。(同時にドメインも申請しちゃった)
まあ、webで申し込んで、すぐにサーバコントロールパネルという画面に入れるようになった。「クイックインストール」というリンクがあったので見てみたらMovableTypeとWordPressを自動でインストールしてくれるらしかったので、ボタンを押した。インストールできましたというので発行されたURLをクリックしたけど404だった。1時間くらい404で、その日はもう寝た。
次の日の夜。これはもう、10連休を利用して毎晩1時間ずつ捻出するしかない、さくらのお試し14日あるから約14時間で作りきるしかねえ、と思った。
サイトにアクセスしたらwordpressが入ったページが出てきた。おお、サイトができてる!
まずTwitterを調べるか、と思って、「Twitter API」で検索したけどOauth?とかいう面倒なことをしないといけないらしかったのでやめた。じゃあ普通に検索は?と思って「Twitter 検索」で検索したら、search.twitter.comの結果はjsonかatomで取得できるし、APIコール制限もないらしいのでこれに決定。検索だけで1時間たった。
夜も更けて、続けて作業した。「wordpress xml 投稿」で検索していくつか探したらFeedWordpressというプラグインがあったので入れた。あ、事前知識としてMovableTypeでのブログはやったことがあったので、プラグインを入れるみたいな話はスムーズに進められた。
で、twitterの検索結果をatomで返した結果を入れてみた。ら、本当に投稿されてた。よっしゃできた、と思った。1ツイートが1エントリになってたし、投稿者もツイートした人になってた。よかった。でも、満足できなかった。
次の日。同じことを自力でやる方法を探した。「wordpress xml 投稿」で検索して、XMLをパースできるようになればいいんじゃないかと思い、simplepieというPHPライブラリにたどり着いた。が、PHPなんてまったく知らないし、憶える気もなかった。actionscriptで書かせてよ、とずっと思ってた。
次の日。「wordpress xml 投稿」でまた検索。どうやらwordpressの投稿って、xmlrpcというやり方を使ってるらしかった。ので、「wordpress xmlrpc 自動投稿」で検索したら、なんかサンプルコードが載ってたのでそのまんまコピペ(結局PHPだった)。したらちゃんと投稿されていた。ふむ。ここで何を思いついたのか、「wordpress xml パース」と昨日みたいなことを検索した。simpleXML?というライブラリがあるらしかったので、それを試してみることにした。(たぶんPHPが動いたので気をよくしてたんだと思う)
こういう流れでいけると思った。考え方はactionscriptをエディタに書いて、ノリであてにいった。変数に宣言するのはできた。$var1とかで宣言したことになるらしい。URLRequestに相当するコードを探したら「file_get_contents」らしいことが分かった。(「PHP 外部ファイル」で検索)
で、ゲットしたのはXMLなんだけど、上記検索したなかにたまたま書いてあった「simplexml_load_string」というのを使うとXMLをパースできそうな気がしたので、ノリで書いたactionscriptでは
var req:String = "http://search.twitter.com/?q.atom=mogemoge";
var r:URLRequest = new URLRequest(req);
var kekka:XML = r.send() as XML; ←いまここ
なので、XMLにキャストしたんだろうなみたいな感じだった。E4Xを使えればいいのにPHPって馬鹿ねと思いながら寝た。
年があけて、3が日が終わりそうだった。年末にやってたこと(上記までのこと)を思い出しながら、XMLの必要な部分だけ抜き出す方法を模索した。atomっていってもentryがたくさん入ってたから配列にするんだろうけど、ってんで「php foreach」を検索。なんとなくサンプルコードをまねしながら、記事タイトル、記事本文だけ取得した。あとはxmlrpcのサンプルにあわせて投稿するようにした。できた。寝た。
次の日の朝、ブログを見た。昨日更新したものしかあがってない。自動じゃねーじゃん。
で、「自動 投稿」で検索したら、クローン(cron)という仕組みを使わないといけないのだった。クローンはサーバの仕組みらしく、そういえば俺はPHPをはじめDB、サーバという単語を極力さけて仕事してきたので、もう気持ちが悪くなってきた。「さくらインターネット cron php」で検索して、なんとかやり方を見つけて、cronを登録した。(1時間に1回にした。設定は * * * 0)
仕事から帰ってきて、サイトを見ると、投稿が大量にたまっていた。やった!で、調子に乗ってツイッターアカウントを作った。なんだったらツイッターも自動化したかったので「twitter bot」で検索した。Easybotterというサンプルボットがあったので使わせてもらった。自動で一行ずつつぶやくようにした。
ツイートを集めることは成功したけど(毎時間100件のツイートを1エントリとして投稿してる)、それを眺めて面白いんだろうか? ボットを動かしてるけど人がくるんだろうか?
そんなとき「trivist」がはてブに載ってた。なんかにたものを感じた。やっぱツイートを引っ張ってきて投稿するサイトはアリなのか?アリなはずだ!
サイトの体裁を整えた
trivistをまねて、記事を評価(はてなスターとかいいねボタンとかに近いもの)する仕組みが欲しくなった。「wordpress 評価 プラグイン」で「wp-postratings」というプラグインを発見して、入れてみた。どうやら1エントリーに1評価しかできないらしい。俺のサイトは1エントリーに100ツイートあるから、どのツイートを評価するのかが分からない。
いったん、wordpressの全投稿を削除した。で、cron に登録されてるPHPを、1記事に1エントリーにした。
エントリーを投稿するついでに、Yahoo日本語解析APIをつかってツイートを分析して、名詞と動詞だけを取り出そうと思った。それをタグにすれば、タグクラウドが作れると思った。はてブはずっとずっと昔からやってるから、Yahoo日本語解析っていうのが2006年くらいに流行ったことをなぜか憶えてたので、やってみた。できた。
なんか俺、PHP書くのが早くなってね?
アクセス解析を入れてみた。サイトに来てる人は、俺だけだった。
どうにかして人を増やしたい。サイトの広告募集はする気がないし、ベタベタとバナーを貼りたくなかった。みんなが気軽に見に来て、軽い気持ちで評価してくれて、更新を楽しみにしてくれるサイトにしたかった。コミュニティサイトじゃないけど、やっぱりサイトはコミュニケーション設計をしないと意味がないんじゃないか、見てくれるユーザはどうやったら楽しいんだろう、ということを考え続けて10日ほど経った。Twitter経由で来てくれた人が3人ほどいるようだけど、何がダメなのか分からないので増田にお願い。
ここまで書いて教えてくんじゃねーか、と思われるかもしれないが、ググレカス的な検索は上記で書いたみたいにいろいろやってきた。でも、サイトを作ってみてはじめて、ユーザに向けたサイトってどう作ればいいのかが分からないということに気づいた。
小遣い稼ぎもしたいんだけど、面白いサイトを作るヒントがほしいと思った。
kanzen21やtrivistみたいに、俺も過程を全部さらしたから、辛辣な意見を求む。そしてはてブされるのを待ってます。
UK版ファームにはまだ通知がこないので、Nordic あたりに偽装して試してみる。
■準備
12:55 まずは準備。母艦に入ってたソニエリの Update Service をアンインストールした。
13:00 Titanium Backup http://tinyurl.com/22rxwqc でアプリをバックアップした。
13:01 純正のバックアップツールで SMS/MMS をバックアップ。
13:05 APN Backup Restore http://tinyurl.com/26t6pq7 で APN 設定をバックアップ
13:08 (念のため) SMS Backup+ http://tinyurl.com/24kv56y で SMS/MMS を gmail にバックアップしておこう
13:17 SMS しかバックアップ取れてないぞ。ま、いいか。準備完了。
■いよいよアップデート
13:17 build.prop を書き換えよう。Xda developers http://forum.xda-developers.com/ に情報探しに行く
13:21 日本語の情報あるじゃねーか。。。http://tinyurl.com/2uzugyk http://tinyurl.com/2fu9xsy
13:23 build.prop の 1238-0199 を 1238-8536 に書き換え。要 root
ro.product.name=U20i_1238-8536
ro.build.fingerprint=SEMC/U20i_1238-8536/SonyEricssonU20i/delta:1.6/1.1.A.0.8/1:user/release-keys
ro.semc.version.cust=1238-8536
13:30 ここら辺 http://tinyurl.com/ydjr8jg から Update Service をインストール
13:36 ダメだ。最新のソフトウェアがインストールされています、だそうだ。
娘が起きてしまったので一旦中断
15:50 再開。Update Service をアンインストール、PC 再起動、再インストール
15:59 Back ボタンを押しながら USB 接続すると、アップデートがあります、だそうだ。
16:05 アップデート完了。
■root
16:24 ここら辺 http://juggly.cn/archives/12187.html を読みながら SuperOneClick で root 化。5分くらい経ったけどまだダメ。
16:33 APN Backup Restore http://tinyurl.com/26t6pq7 で APN 設定を復元
一旦中断
16:50 USB Debugging 有効、Unknown Sources 許可、Screen timeout 30分にして再度挑戦。10分くらい放っておいたら root 取れてた。
■ひたすらリストア
17:00 Titanium Backup http://tinyurl.com/22rxwqc でアプリを復元。一つ一つやると時間かかる。有料版買おうかな
17:15 純正のバックアップツールで SMS/MMS をリストア。
17:26 Auto-sync 有効にして放っておいたら電話帳もリストアされた。
夕食のため中断
21:34 DroidSansJapanese.ttf (中身はメイリオ) と DroidSansFallback.ttf を /system/fonts に入れて reboot
UK ファームのときの qwerty.kcm.bin を取っておけば良かったのかな。
00:45 MMS の UserAgent 変えるの忘れてた。custom_settings.xml で対処 http://tinyurl.com/29qex3v
■キーマップ変更
11/4 11:13 ここ http://tinyurl.com/33lw734 に添付してある keys.tar を解答して、keyboard-config 以下のファイル全部と、mimmi_keypad.kcm.bin を置き換えたらキーマップも EN 配列になった。qwerty.kcm.bin は mimmi_keypad.kcm.bin へのシンボリックリンクだったので置き換えず。←今ココ
人によって色々なんだなーと痛感させられました。
私から見るとiPadは、USBフットペダル等と同じような、プラスアルファの製品にしか見えないんです。何故って、キーボードが無いから。
携帯でさえ、普通のキーボード配列が使えるスマートフォン的な製品でないと駄目で、そんな理由でHTCの端末にしろXPeriaにしろ買う気が起きないくらい。タッチパネルでいいじゃないと思うかも知れないけれども、そんなことはない。キーとキーの境目の物理的感触、押下する感覚無しにはブラインドタッチ出来ないし、キーボード代わりにはならない。携帯ブラインドタッチしようっていうのがまず例外的なのかも知れないけれども。
テトリスを第1候補に選んだのは
1.アルゴリズムが十分に簡単だから。見た目とアルゴリズムが一緒なのでネットワークから隔離されてもアルゴリズムを自己発明できる。
2.最低限必要な要素が盛り込まれているから
3.ほぼ誰でも知っているから。
4.自己PRで付加機能をつける余地が多いから
アルゴリズム、絵、音、などいろいろなところで創意工夫してPRする余地がある。
動けばいいという課題で、動くだけという物を作るならそれこそ時間競争になる。
しかし8時間有れば最低限可が保証されるというルールなら、他をPRすることは十分に可能。
8時間なら可といわれたからといって、それは絶対ではないという大人の社会のルールを見破れるか?
という感じかな
学術的なアルゴリズムだと、創意工夫の余地PRの余地が少なすぎる。
それこそ、学術的なアルゴリズムを記憶しているかどうか?を見たいわけじゃないし。
テトリスと言ってあったけど、レビューしたら実は隠し機能でPキーを押すと、ぷよぷよルールになるなども有りなわけだし。
その辺は与えられた時間をどう使うかだな。
そのためには、アルゴリズム・絵・音 できることは多い方がいいだろ?
http://d.hatena.ne.jp/faith_and_brave/20100220/1266673222
まず第一にエンタープライズでの開発が考慮されていない。エンタープライズの開発だと100人200人 マスタークラスから ジュニアーまで様々なレベルの開発者が携わる。
その中で重要になってくるのは可読性。
はっきり言って、歴史的な可読性を犠牲にして効率が上がるならともかく、気持ちの問題程度の効率では意味がない。
第2に
スレッドとファイバーの違いぐらいわかれ、わざわざスレッド起こしたらコンテキストスイッチにどれだけコスト食うんだよ。
関数コールするとレジスタとかが、スタックにPUSHされるんだよってわからん奴が、IF書くなと同じで、スレッドってコンテキストスイッチの塊なんだよってのがわかんないのに下手にスレッド書かせるな。
3にラムダ式・・・いらん・・・必要なのは曲芸じゃない、可読性。可読性を犠牲にして早くなるならともかく・・・
4にforeachではlastを変数に取るな。途中でReallocしたり、eraseしたりしたときに余計なバグを生んで面倒だ。レビューの時も邪魔。速度?速度が必要な背景でSTLのVector使うな。配列使うかポインタ使え。
なんつーか、トータルで見て、次はC++と各種OpenCLとかGLとかのライブラリの集合だな。C++0xはまともに使う人もいなさそう。正規表現とかもライブラリ使えば良いし、そもそもC系列ならBisonとかLRとかだろうと。C系列の使い手ならBNFを使え。正規表現使いたければそれこそ、Perl使え。
Perl基礎文法最速マスター - Perl入門〜サンプルコードによるPerl入門〜
http://d.hatena.ne.jp/perlcodesample/20091226/1264257759]
Route 477 - Ruby基礎文法最速マスター - , 1. 基礎 , 2. 数値 , 3. 文字列 , 4. 配列 , 5. ハッシュ , 6. 制御文 , 7. サブルーチン , 8. ファイル入出力 , 知っておいた方がよい文法 , 余談 , (おまけ)Ruby書籍紹介
http://route477.net/d/?date=20100125]
http://www.1x1.jp/blog/2010/01/php-basic-syntax.html]
http://d.hatena.ne.jp/dplusplus/20100126/p1]
昔勤めてた会社の人が「年にひとつぐらいは(仕事以外で)新しい言語、フレームワークに触れるといいよ」みたいなことを言っていたのでこれを機に(正直好きではなかった)Perlもはじめてみようかなと。
Java基礎文法最速マスター - 何かしらの言語による記述を解析する日記
http://d.hatena.ne.jp/nattou_curry_2/20100130/1264821094]
LLじゃないのも出てきたので改題。このへんいっぱつで Mece になるようにできないのがしょぼいなー。
ところで増田ではカギ括弧でくくってもリンクが正しく認識されないしhttp記法のタイトルもリンクにならないしイケてないのなんとかできないのかな。
なんで@押したら[に、[押したら]になるんじゃー。
!@#$%^&*()_+ 1234567890-=
QWERTYUIOP{} qwertyuiop[]
ASDFGHJKL:"| asdfghjkl;'\
ZXCVBNM<>? zxcvbnm,./
なんじゃこの配列は
しかも意味不明さをさらに加速させているのが、DOSプロンプトはちゃんと押した通りのキー入力ができているということだ。
DOS窓にできてなぜ他の入力がカオス(英語キーボード風になってる?)になる。全く困った事だ。
他にも半角全角がALTキー同時押しが必要になってたり。もうわけわからん。
可能性1.chkdsk c:がまずかった
可能性2.クラッキング食らっている
可能性3.実は俺は夢をみている
キーボード(DOS窓がちゃんとなってる以上関係ない気がするが)ELECOM TK-FCM005BK
んがあ
さてどうするか
対処法1.だましだまし使う。どうにかして脳内を英語キーボード配列にして対処。