ManyToManyFieldの追加や削除

Python3.5、Django1.9で多対多のリレーションの要素の追加をadminの管理画面からではなく、コードを書いて行いたかったので頑張りました。

class Author(modesl.Model):


class Article(models.Model):
  authors = models.ManyToManyField(Author)

このようにしてリレーションを設定します。片方だけで十分です。どっちにやるのがいいかは難しいです。データベースに詳しい人に聞きましょう。

ar1 = Article.objects.get(id=1)
ar1.authors.all()
au1 = Authors.objects.get(id=1)
au1.article_set.all()

明示的にリレーションを書いた方は書いたattributeでアクセスできますが、もう片方は自動的に相手のクラス名_setというattributeが生成されます。

au1 = Authors.objects.filter(id=1)
au1.article_set.all()

とやってよく怒られます。filterが返すのはQuerySetです。

au1.article_set.add(ar1)

で追加することができます。リレーションの設定を間違えていて逆のほうが自然かもしれないですね。

au1.article_set.remove(ar1)

で削除ができます。

管理画面から追加したりするのはめんどくさいのでプログラムから操作できるとうれしいですよね。

ICPC国内予選参加記

前日

早めに寝た。

当日

2限のみなのでゆっくり起きてゆっくり準備をした。んで2限を受けて、そこから日吉へ向かった。階段を降りたところで知り合いにあって彼女の単位の心配をした。また数歩歩いてイケメンが二人いたのでモテる方法を教授してもらい日吉へ向かう。その途中メディア前に知り合いがいたので話しかける。衝撃の事実を知ったところでメディアでライブラリとかを印刷して、メディア前でプラクティスに出た。その時に少しルールを確認した。やっと日吉へ向かい始めた。自転車を漕いでいると蟻本を忘れていることに気が付き家に寄ってから駅へ。横浜駅までついたところで腹痛に襲われトイレへ。横浜駅にはトイレが存在せず、LUMINEの2階まで走った。やっと日吉についたが時間まで暇だということに気がついてメディアへ。入館に失敗した。SFCと同じで、かざせばいいらしい。しばらくしたら@tabetarashindaに食堂に来いと言われた。食堂でライブラリの確認とかキーボードの接続をしていた。時間ちょっと前に@mt_tildeが女の子との用事が終わったらしく合流。矢上へ。その道中、競プロの話などせず、@mt_tildeが頑張って重たいプリンタを運んだことを笑って話していた(この時僕は笑っていられた)。ついたのが直前で水分も購入できず、ほとんど準備がままならないまま競技が開始された。

競技

まず、問題をコピーした。めちゃくちゃ遅くて問題文を読み始めるのにだいぶ時間がかかった。terminal操作とsublimeemacsvimという全員エディタが違うということで混乱していた。A問題を@mt_tildeに任せる。@tabetarashindaと問題を読み始める。問題が後ろからゆっくり出てきたのでHから読み始めた。Hよくわからん。問題把握するのはすぐだけど、難しそう。で他の問題も少しづつ見ていった。Eを見て幾何ぽいので@mt_tildeにあとで解いてと頼む。@mt_tildeがAを通した。@tabetarashindaがBを書き始める。

DがワカンネとなったのでCを考え始めた。「x年後に咲いているにはn以上のx未満の数でxの約数があるかx年周期の竹を植えればいい」ということまでわかり、少し睨んでいたら素数判定やんけと解法が降ってきた。@tabetarashindaがBをバグらせて、@mt_tildeと考え始めたので、篩を書き始めた。ちょっと実装手間取った。一つ目のデータセットが通った。二つ目のデータセットはWA。実は一つ目のデータセットの出力をふたつ目の時にsubmitしていたらしい。そのことに、気づくのにあと60分。Bの解法が降ってきたらしいので@mt_tildeが解き始めた。延々とBをバグらせていた。デバッグを手伝ったけど全然治らなかった。

Dを解き始める。結構早めに解法が降ってきた。Bが通ったので交代してDを書き始めた。頭使わずに実装を始めたので重要な情報を忘れていたWA、計算量を一つ大きくしてACできた。DPを実際にかけることがなかったのでうれしかった。

この間に@tabetarashindaと@mt_tildeが他の問題を眺めていたHは貪欲と言われてよくわからんと思って話を聞いていた。実際のそうだったらしい。どっちのせよ残り15分ずつ実装できなかった。

結果は4完 2WA。結構慌てた部分もありました。辛い。まあちゃんと問題が解けて楽しかったです。

競技後

プリンタを日吉にまで運ぶ必要があったらしい。持って行った1人で坂も登った。辛い。銀魂で@peryaudoさんと@snukeさんと@mine_studioさんと@monyoneさんと落ち合う。中華へ。なぜか僕がやばい話を必死にチームメイトの二人が先輩方に語っていた。snukeさん湘南台のうまい飯の話を聞いていた。お店でも下世話な話と競プロの話、7:3ぐらいの割合だった。界隈の闇にまた一つ詳しくなったようです。またご飯行きたいです。

来年もICPCにでます。

桐生市立商業高等学校 元生徒会長挨拶全文公開

桐生市商業高等学校の卒業文集?である闘志に元生徒会長として寄稿したポエムの全文を公開公開します。


 三年生の皆さん、とうとう卒業の時がやってきました。一年前、先輩方が言っていた、三年になってからの一年間は一瞬だという言葉の意味を今更気づきました。とはいえ、大学数学を学んだり、志望校に落ちたり、今までの人生で一番勉強したりと充実した一年間だったように思います。三年生の皆さんもそれぞれ思い出があることでしょう。

 友とは私のことを愛してくれる人間のことだ。人から愛されるには、まず自分から人を愛さねばならない。私がこの三年間でどれだけの友に恵まれたかは分かりませんが、中学生の頃と比べると多くの人を愛することができたのではないだろうかと思います。というのも中学時代の私は非常に排他的で人付き合いというものが得意ではありませんでした。

 高校で副会長になってからは、声をかけてくれる人もいてとても嬉しかったです。会長に就任してからは「会長っ」などと呼んでくれる人も多くとても嬉しかったです。また、学校外でも声をかけてくれる方もいました。私が前に出て話す時も反応してくれることも多かったです。対面式の新入生歓迎の言葉を半年以上たった後でも覚えていてくれた一年生もおり感動すら覚えました。私の高校生活を彩らせてくれた全ての人に感謝をしたいと思います。彼らのおかげで、高校生活の三年間、多くの人々と出会い、私は大きく成長することができました。

 昨年に引き続き、冒頭から先人の言葉を引用することになりましたが、最後ぐらいは自分の言葉で在校生に一言伝えたいと思います。「私は優秀じゃないから」「◯◯さんとは違って」は聞き飽きました。君たちは自分が何ができて、何ができないかを決められるほど偉くはないです。高校生には時間もチャンスもたくさんあります。やる前から諦めず、自分の好きなこと、やりたいことに一生懸命取り組んでほしいと思います。

 そして、もう一つ、これは昔の自分に最も伝えたいことですが、授業の一時間一時間を大切にしてください。高校生の一日のうち、授業は多くを占めます。これを無為に過ごすのはあまりにもったいと思いませんか。つまらない授業にもつまらない授業なりの受け方もあります。限りある時間を充実なものにしてくれることを願っています。

 私たちはこれから自ら決めた道をそれぞれ歩んでいきます。最近、気がついたのですが、本当は高校卒業というのは人生のゴールではなく、むしろスタートだったのです。

 今思えば、高校での三年間はあまりに楽しかった。充実していました。人生の楽しみの全てなんじゃないかというぐらい濃い三年間でした。しかし、これからの人生はこれまでの十八年間よりもはるかに長いものです。これを高校での三年間以上のものにできるように精一杯走り続けます。

 この文章を執筆している現在、一年の六%が過ぎてしまいました。私たちはどんなに頑張っても高々あと百年しか生きられません。残りの百年が充実したものになるように一日一日を噛み締めて生きていきたいです。

 私たちはこれまで多くの人に支えられて生きてきました。これからも多くの人に支えられて生きていきます。支えてくれた全ての人への感謝とこれからの人生での全ての出会いへの希望を胸に私たちは桐生商業を卒業します。


以上です。これを書いてから半年も立っていませんがまったく記憶にございません。

IBM BluemixとDjangoでWebサービスを作ってみた

毎日ブログを更新するというっていた数年前の私はどこへ行ったのですかね。

ICPCの国内予選を目前に控えているのにもかかわらず、Webを触っていました。Django1.9の日本語情報がまだまだ少ないようなので頑張りました。

実際に作ったWebサービスはPocketやはてなブックマークのようなサービスで気になったWeb上の記事をPushしてきます。でそれをPopすることで記事が見れます。先入先出なので溜まってしまっても先頭から読む必要があってブックマークしっぱなしで読まないみたいなことを防げます。一度読んだ記事のUrlは破棄されます。情報が氾濫するこの時代にとても使えるサービスです。ブックマークがたまることを防げるし、情報収集だけで時間が取られるみたいなことも無くなります。CSSを一切使っていないのでUIは悲惨です。使う人がいるようなら直します。名前は

QueЮ

です。Queueです。ただのQueueです。

とりあえず、はまったところについてメモ。URLFieldはhttp://の部分がない可能性があるみたいで、リダイレクトするときにhttp://とかハードコードすると動く。デフォルトのserver.pyではなくrun.shを利用するとDjangoが動く。ただどうやってrun.shを動かすかがわからない。いろいろ試していたら動くようになった。

>>> [][0] # これはエラーが出るけど
>>> [][:1] # これはちゃんと動く
[]

あるかないかわからないときには気をつけようね。user認証を行う場合には、viewごとにanonymousユーザの場合の処理を書いたほうがいいかもしれない。Webはルールをハードコードするのが多くて大変。

半分くらいDjangoのtutorialとかIBM Bluemixのtutorialを見てやったので特に書くことはないです。

自己啓発本を500冊以上読んだ僕がおすすめする自己啓発本0選と読むべき本10選

お久しびりです。たまたま、 www.proof0309.com の記事のタイトルを見て面白そうだなと思ってのでブログ記事を書くことにしました。 AOJ-ICPCの問題を解かなきゃならないんですが、仕方なく書きます。

僕が自己啓発本を読み始めたのは中学生の頃からで一軒家を立てて引っ越した頃からです。徒歩で行ける書店が二つあったので本を読むようになりました。アドラーの嫌われる勇気なんかはだいぶ前から流行ったりしていますね。ロジカルシンギングの実践本とかも人気です。僕はアマゾンとかhontoで本を買うのも好きですが、書店に行って本棚を眺めるのが好きです。どんな本が平積みにされてるかとかどんな本が置かれてるかで世の中がどうなってるか俯瞰することができるからですね。とても楽しいです。安倍政権の支持率が下がってきてる中、田中角栄本とか吉田松陰の本が売れるようになってきてるのも面白いです。

本題に入り僕がおすすめする自己啓発本0選を紹介します。

終わります。僕が自己啓発本を500冊以上読んで学んだことは自己啓発本は少なくとも僕にとっては時間の無駄だったということです。大学生になる前にこのことに気づけたということを僕の人生にとって有益だとは思います。大学、社会人の大切な時間を自己啓発本に割く必要はなくなりました。自己啓発本の類は基本的にテクニック集で普遍的なものではないです。アドラーの嫌われる勇気も古典と呼ばれるような要素を持ち合わせていないと思います。僕は読んだことはないです。間違っていたら指摘してください。普遍的な内容ですが、ごくごく当然のことしか書かれていないらしいですし、当時の出来事などについて書かれていたりして、現代の日本人が読んでもピンとこない文が多いと言います。別の本のことかもしれません(どっちにせよ何らかの自己啓発本です)。日本人が書いたような本であるという印象でした。

個人的に古典と呼ばれるに値する本は何らかの理想を唱えたもの、ものごとの本質をつくものなどで、実際に起きた事件や出来事に触れることがほとんどない本だというイメージを持っています。

一冊も紹介せずに終わるのはあれなんで、読者層を限定しない、全ての人が読むべき本を紹介します。上に当然のことしか書かれていないみたいな理由で古典名著ではないと言ってしまったので

ここらへんの本は外します。個人的には両方とも面白いです。

1 ゲーデルエッシャー・バッハ

この本はいろんなところで積ん読されていることでも有名な本です。ダグラス・R. ホフスタッターはこの本の著者として永遠に名前が残るであろうと評する人もいる名著です。AIの本かと思えばそうではなかったです。何の本と明確に定義するのも難しいでしょう。多分自己言及の本だと思います。

残り9冊は後で書きます。疲れた

人生ゲーム 2016 今年の抱負

あけましておめでとうございます。一年の計は元旦にありとのことで一年の計を考えていきます。

去年と一昨年、抱負をブログでやって達成していないです。サボっていたのかな。

抱負って一年間こんな感じの気持ちで生きていきます程度の決意表明だったらしいです。知らなかったです。


今まで、複数のタスクを抱えてあたふたすることが多かったです。JOIのように一定期間、一つのことだけに取り組むなら割と結果を出せていました。

今年はマルチタスクができるように自分のキャパを増やすように頑張っていきたいです。


これだけだと真面目にやらなそうなのでどっかで一年間でやりたいことリストみたいなの作ろうとおもいます。

2015ふりかえり

既に2015年は終わっていますが問題ない

TCとCFだめ、 春合宿参加できたのでとてもよかった オンサイト4回出たと思う JOI夏季セミ参加できたのでとてもよかった 競プロ以外のプログラミングをした テストの点数は悪かった 筑波落ちた、死にたい 数学できない 英語できない 割と何もしない日多かった気がする 年末年始に泊まりに行ったり仲間と遊ぶことはそれなりにあった 鎌倉とか会津とか湘南とか筑波とか旅行した 彼女をつくっていない、死にたい

26.0% 達成度D

数字的には充実していない2015年だったらしいです。割と楽しかったと思う。精進できたかは知らない。