鉄分は大事。(特にヘム鉄)

こっち→ https://brookbach.com

ABC032に参加した

 Atcoderで行われているAtcoderBeginnerContest,通称ABCに参加した。

Welcome to AtCoder Beginner Contest 032 - AtCoder Beginner Contest 032 | AtCoder

 今までいくつかこういうのに参加してたけど、参加記ってめんどくさかったので書いたことなかった。他の人が書いてるのを見て、思考の整理になりそう&後々振り返るときなどに役に立ちそうと思ったので試しに書いてみることにした。

A. 高橋君と青木君の好きな数

 A,B二つの数で割れる,N以上の数を出力せよ、という問題。

 最小公倍数を使って・・・とか考えたが,制約を見て全探索すればいいやと思って妥協して実装した。AC時間は開始6分ぐらい。

a = gets.to_i
b = gets.to_i
n = gets.to_i
ans = n
loop do
 if ans % a == 0 && ans % b == 0
 break
 end
 ans += 1
end
puts ans

B. 高橋君とパスワード

 文字列Sに対して、長さKの部分文字列の数Tを数え上げる問題。

  • K > Sの場合は0を出力した。
  • K ≦ S の場合、見つけた部分文字列を配列Tに保存していく。
    i 文字目から i + K 文字目までの部分文字列 tmp を切り出す。
    これが新しい部分文字列の場合、 T に保存する。
    最後に T の長さを計算する。

AC時間は開始14分ぐらい。

s = gets
k = gets.to_i
t = []
if s.length < k
    puts 0 
else
    for i in 0..(s.length - k - 1)
        tmp = s[i..(i + k - 1)]
        if t.include?(tmp)
            next
        else
            t.push(tmp)
        end
    end
    puts t.length
end

C 列

 長さNの数列S、整数Kがある。Sのうち、すべての要素の値の積がK以下となるような、連続した部分列の最長の長さを求める問題。

 Sに0が含まれる場合、解はNとなる。

 Sに0が含まれ、かつK>0の場合、要素の積がK以下となるような配列sと、その積mを作成する。数を一つ取得するたびにmを再計算する。そして、m>Kの間、先頭の要素をpopしてmを再計算する。この際、sの長さの最大値を保存しておく。

 だいたいの方針は上の通り。再計算に関して、はじめ、数の出入りがあるたびにすべての要素について再計算していてTLEした。考えて、出入りする数に関してだけ計算すれば良いと気づき変更した。変更の際、出入りする要素が0のとき、mがnilのときに注意する必要があった。(2REした)

 尺取り法なるアルゴリズムがあって、それに似たようなものになったと思う。

AC時間は開始65分ぐらい。(一回目の提出は30分ぐらい)

n, k = gets.split.map(&:to_i)
s = []
max = 0
m = 0
n.times do
    s.push(gets.to_i)
    if s[-1] == 0
        max = n
        break
    end
 
    if m == 0 || m == nil
        m = s.inject(:*)
    else
        m *= s[-1]
    end
 
    while m.to_i > k
        t = s.shift
        if t.to_i != 0 && m.to_i != 0
            m /= t
        else
            m = s.inject(:*)
        end
    end
 
    if s.length > max
        max = s.length
    end
end
puts max

D ナップサック問題

 3つの条件があって、それらの条件に応じて適切なアルゴリズムを用いてナップサック問題を解く問題。できなかった。

 ナップサック問題の解法は蟻本を写経したものが手元にあったので、それをコピペしたらいけるやろとか思ってたらそんな甘くなかった。要復習。

 条件によってアルゴリズムが変わるのは面白いと思った。

さいごに

 できれば全完したかったができなかったので悔しい。ただ、まだまだ初心者でやることがたくさんあるのはわかっているので(蟻本、チーター本、ABCの過去問など)、練習を重ねて上達していきたい。

 余談だが、サンプルケースをコピペするのがめんどくさいと思いrubyでそのへんやってくれるatcoder_greedyなるgemを作ったんだが、本番でうまくサンプルを取得してくれなかった。

情報系の大学生の自分が2015年に読んだ本のまとめ

はじめに

 今年、といっても8月くらいから、本を読もうと思い読み始めた。はじめの頃は何を読んだらいいかわからなかったが、読み始めてみると一つ読み終わったら次に読みたい本が出てきてハマってしまった。
 今年の振り返りと、あとは少し前の自分のように本を読みたいと考えているが何を読んだらいいかわからないと思ってるような人に向けて書く。
 あと、本の紹介とともにアフィリエイトを貼り付ける。これは、読みたい本に対して自分の財布が寂しく、この記事を書くことで少しでもその補助が欲しいからです。また、最後に自分の欲しい本リストを公開します。優しい人は一冊でも良いので助けてください。
 

読んだ本について

 読む本の選び方だが、本当は自分で本屋に行き自分で考えて読む本を選んだ方がいいのだと思う。しかし、膨大な量の本の中ゼロから自分の読みたい本を探すのは大変難しかった。
 なので、この辺のまとめを見つつ、興味を持った面白そうな本から買い始めた。
 
 
 本はだいたいAmazonの中古、もしくはBookOffで買っている。タブレットも持っているので何冊か電子書籍で購入もしたが、活字の本を読むには紙媒体の方が読みやすいと自分は思った。この違いについては長くなりそうなので省略する。また、大学での専門科目の勉強に使う本も結構購入したが、そういった本はここには上げない。
 

読んだ本の紹介

 では、読んだ本の紹介に移る。本の紹介はジャンル別に、簡単な紹介と面白かった度を星5つを満点として紹介する。 
  紹介する本について、☆の数でソートしようとしたがあえてやめておいた。これらの本を選んだ基準でわかるように、ここで上げた本はどれもみな良い本であり、星の数は単純に自分の感想だからです。各本の紹介については、詳しく書こうとするとネタバレになってしまったり、数行では終わらなくなりそうな本が多々あったのでなるべく短くなるようにしました。
 

SF

SFは、名作と呼ばれる物を端から読んでいこうと思い読んだ。途中で他ジャンルのものを読むことが多くなりまだ読んでいない本があるのでそこを読み進めていきたい。

 

アンドロイドは電気羊の夢を見るか? (ハヤカワ文庫 SF (229))

アンドロイドは電気羊の夢を見るか?  ☆☆☆
アンドロイドが発展した世界で、人間とアンドロイドの違いとは、人間とは何か?を問いかける本。人間ってなんだろうね
 

星を継ぐもの (創元SF文庫)

星を継ぐものガニメデの優しい巨人巨人たちの星  ☆☆☆☆☆
星を継ぐ物シリーズ。ハードSFなのではじめは読むのが辛いが、読み進めていくうちに止まらなくなる。星を継ぐ物だけでも十分な大作だが、次のシリーズを読むとそれが序章だったと感じるのですごい。この辺BTTFみたいだと思った。
 

夏への扉 (ハヤカワ文庫SF)

夏への扉 (ハヤカワ文庫SF)  ☆☆☆☆
自分の発明を奪われた主人公が、それを取り戻す話。サッパリしてるSFなので、軽く読めると思う。あと猫がかわいい
 

一九八四年[新訳版] (ハヤカワepi文庫)

一九八四年  ☆☆☆☆
全体主義ディストピアな世界で、主人公がもがくが・・・という話。書かれた時代のせいなのかもしれないが、全体主義を極端に悪く書いているな、と感じた。(全体主義が良いとは言っていません)
 

華氏451度〔新訳版〕 (ハヤカワ文庫SF)

 
華氏451度 ☆☆☆☆
舞台は本を読むことが禁止された世界。本を焼くことを仕事にしている主人公が、あるとき本の魅力にハマって・・・という内容。
本を全く読まない妻、本を読んでいるが内容の復唱しかしない上司などに対し、主人公がどう感じるかが面白かった。
 

たったひとつの冴えたやりかた (ハヤカワ文庫SF)

たったひとつの冴えたやりかた  ☆☆☆☆
スター・ウォーズみたいにいろんな宇宙人がいる世界で、3つの短編が書かれている。宇宙人に限らず、未知との遭遇って面白いなと思った。
 

ホラー

角川ホラーを3冊読んだ。小説でのホラーというのは、映画や漫画と異なり音や映像、絵などの直接的な恐怖を受けることがないのでホラーが苦手でも楽しめると思う。

 

黒い家 (角川ホラー文庫)

黒い家  ☆☆☆
サスペンスホラー。サイコパスな人が相手。終盤の追い詰められてる感がすごい怖かった。
 

玩具修理者 (角川ホラー文庫)

玩具修理者  ☆☆☆
表題の短編ともう一つの中編で構成されている。
怖いというより考えさせられる系で、SFよりだと思う。
 

パラサイト・イヴ (新潮文庫)

 
パラサイト・イヴ  ☆☆☆
ミトコンドリアが反逆する本。バイオハザードで慣れてしまっていたせいかそんなに怖さは感じなかった。生物系の人が読むと色々突っ込みたくなるらしいが、自分は違和感なく楽しく読めた。
 

その他小説

ホラー、SF以外のジャンルの本をあげる。これらの本はあまり力を入れずに読めるので、息抜き感覚で読んでいた。

 

大聖堂 (上) (ソフトバンク文庫)

大聖堂  ☆☆☆
中世イギリスで大聖堂を巡る人々の話。長い。人物ドラマとして面白かった。ただ、大聖堂自体になじみがなく大聖堂の構造とか説明されても全く思い浮かばなかったのが残念だった。わからない名前出てきたら画像をググりながら読むと良いと思う。 
 

塩狩峠 (新潮文庫)

 
塩狩峠  ☆
昭和ぐらいのキリスト教の人の話。泣ける、というレビューを見て読んだが、自分にはキリスト教色強すぎて微妙だった。
 

中島らも『ガダラの豚』全3巻セット (集英社文庫)

ガダラの豚  ☆☆☆
考古学者のおっさんがアフリカに行って呪術者と闘う話。真面目かと思いきや結構ふざけてるので、TRICKとかSPEC好きな人なら楽しめると思う。 
 

オリエント急行の殺人 (ハヤカワ文庫―クリスティー文庫)

オリエント急行の殺人  ☆☆☆
オチが有名すぎてネタバレ不可避な本。呼んでる途中でオチを思い出してしまった。ただ構成は見事で面白い。もう少し推理小説を読みたいと思った。 
 

桐島、部活やめるってよ (集英社文庫)

桐島、部活やめるってよ  ☆☆☆
高校の一つの出来事を元に、高校生の心の動きを事細かに描写している。登場人物のスクールカーストがはっきりしているので、どの人に共感できるかでその人がわかりそう。
 

The Rosie Project: Don Tillman 1 (Don Tillman Series)

The Rosie Project  ☆☆☆☆
唯一の洋書。確かビルゲイツが勧める本の中にあったと思う。理系の研究者が、婚活するぜ!って本。読みやすく面白い内容だった。英語で本を読むと、感情表現とか、よりネイティブな感覚がわかる・・・気がする。ちなみに和訳も出てるようである→ワイフ・プロジェクト
 

カラマーゾフの兄弟〈上〉 (新潮文庫)

カラマーゾフの兄弟 (上巻のみ)☆☆☆
大学生のうちに読んでおいた方が良い本で必ず上がっている気がする。ロシア文学で、カラマーゾフ一家の話を題材にいろんな人の欲が書かれている。非常に読みにくいので読むのに気合いが要る。中、下巻を読んでいないので読まなければ・・・
 

アルジャーノンに花束を〔新版〕(ハヤカワ文庫NV)

 
アルジャーノンに花束を ☆☆☆☆

知能にハンデを持つ主人公が、頭の良くなる手術を受け、天才になり・・・という話。主人公の知能レベルが変わっていく中で、周りの人との関係も変わっていく。読者としては客観的に見られるが、実際自分が作中の登場人物だったらどうだろうか・・・と考えながら読んでいた。

 

役に立つ系

物事の考え方や物理、科学について書いている本。とても役に立つ本が多かった。

東大とかハーバードの先生が書いたって煽りが多い

暗号解読〈上〉 (新潮文庫)

暗号解読 ☆☆☆☆☆
 シーザー暗号から現代の暗号に至るまで、その発明と解読の解説とドラマを読みやすく、わかりやすく書いてある。暗号について全く知らなくても楽しめる。結城浩先生の暗号技術入門も冬休み中に読む。 
 

これからの「正義」の話をしよう (ハヤカワ・ノンフィクション文庫)

これからの「正義」の話をしよう ☆☆☆☆
古代から現代まで、どのように正義の考え方が進化してきたか、そしてこれからはどうするべきが、みたいなことが書いてある。大切なのは結論を決めることではなく、質問をして、考えて、議論することである。と学んだ。 
 

沈黙の春 (新潮文庫)

 
沈黙の春 ☆☆
50年ぐらい前に書かれた、化学物質を森に撒きすぎててこのままじゃ人類やばいよ、って内容。たぶんこの本が出たおかげで今なんとか地球が終わらなくてすんでいるのかな、と思った。内容は古いが大事なことが書いてあると思う。 
 

知的複眼思考法 誰でも持っている創造力のスイッチ (講談社+α文庫)

知的複眼思考法 ☆☆☆☆☆
単一的な物の見方ではなく、複数の角度から物事を考える方法を身につけるべく、本の読み方、文の書き方、物の考え方を詳しく説明してくれる。実際に身につけるのは大変だと思うが大変参考になった。
 

明日の幸せを科学する(ハヤカワ・ノンフィクション文庫)

 
明日の幸せを科学する ☆☆☆☆☆
題名が某宗教っぽいが、Stumbling on Happinessという本の訳なので全く関係ない。また、内容も幸せになるためにはとかではなく、人間の脳がどのように機能し、考えているかの解説がメインで、そのうえで間違いを犯さないためにはどうするか、ということが書いてある。最終的な結論だけでなく、自分たちの脳が以下に間違いを犯しやすいかを知ることができるだけでも読む価値がある。 
 

主役はダーク 宇宙の究極の謎に迫る

主役はダーク ☆☆☆
こちらもふざけた名前ではあるが、東大の物理の先生がダークマターとかの宇宙の話を解説した本。わかりやすく書いてあるが、著者が終始ふざけているので冗談を聞きつつ大切なところを読む力が求められた。
 

情報系

情報系の人向けの本で、特に専門的でないものをここにあげる。

 

How Google Works (ハウ・グーグル・ワークス)  ―私たちの働き方とマネジメント

Googleの中の人が、How Google Worksについて書いている。優秀な人を集めて自由にやらせとけ、みたいな内容で凡人はどうすればいいんだ、と思った。
 

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造

 
珠玉のプログラミング  ☆☆☆☆

コードを書いて問題を解決するために、どういう点に気をつけどう考えていくかが書いてある。競技プログラミングみたいな内容であり、実際の業務には役に立たないと思えるかもしれない。しかし、大事なのは考え方であり、この本の内容ぐらいはできていないとだめだと思う。

 

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ☆☆☆☆
コードを書く人におすすめする本のなかだと必ず登場する本。変数名とかの単純なところから、コード全体の設計まで、どうすれば読みやすくなるかが書いてある。内容自体は難しくないが、身につけるには練習とレビューが必要である。
 

それがぼくには楽しかったから (小プロ・ブックス)

それがぼくには楽しかったから ☆☆☆☆

Linuxを開発したリーナス・トーパルズの自伝。技術の話ではなく、なぜそれを作ったか、何を考えていたかが書いてある。 雲の上の人のように感じるが、本を読むと印象が変わると思う。

 

おわりに

 以上29冊でした。思ったより少なかったので、来年はもっと読みたい。おすすめの本があったら是非紹介してください。

www.amazon.co.jp

 

 

リーダブルコード 読書感想

下書きのまま数ヶ月眠っていたこの感想だが、あとで2015年の読書録をアップするので短いけどこの記事もアップする。


かの有名なリーダブルコードを読んだ。
おすすめの技術書、みたいな記事だとほぼ確実に入っているよね、この本。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)


読んだ感想
nothing new.



と言えるようになりたい。変数の付け方から、コメントの書き方、さらには関数の構造まで、いかにコードを読みやすくするかってのが丁寧に書いてある。


あとがきにも書いてあったけど、この本には難しいことは書いてないしすぐに実践できる。でもそれを、普段からずっと実行するのはむずかしい。どうしてもなまけたくなるし、疲れたりしてるとわかりにくいコードを書いてしまう。大事なことは、この本の内容を無意識に、常識にすることなんだろう。

アジャイル開発とスクラム 読書感想

今回は読書感想記です。最近意識して本を読むようにしているので、読んだ本について簡単に感想を書くようにしようかなと気が向いた。
本を読み終わったのは去年の末で、実はこの記事は下書きのまま数ヶ月ほっておかれていた


もうだいぶ前のことだけど、バイト先でがっつりアジャイル開発、スクラムについて勉強した。(学んだことのまとめは別に書く)
その流れで、去年の12月ぐらいのAmazonのセールで安くなっていたこちらの本を購入して読んだので感想を書く。

アジャイル開発とスクラム~顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント

アジャイル開発とスクラム~顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント


こちらの本は、実践的なスクラムの手法というより、実際にこんな会社がスクラムを導入したら上手く行ったよ!みたいな感じの内容。

これ一冊でスクラムを始めるのは無理だけど、チームの意識を高めるために読んだりとか、スクラムを導入するのを嫌がる上司とかに読ませたらいいと思った。

これとは別にエッセンシャルスクラムも読み始めているので、こちらも読み終わったらレビューする予定。

vpsを借りた。その2、独自ドメインの取得

2ヶ月ぶりの更新。アウトプット大事なのはわかるが難しい。めんどくさい

ドメインとってみる

 vpsを借りたので、晴れて自由に使えるサーバーを手に入れた。次に(同時に)やったことは、独自ドメインの取得。


ドメインは、お名前ドットコムで取得した。
手順は、

  • 欲しいドメインが使われてないか検索
  • 使われてなかったらそのまま契約

って流れ。

契約の時に、Whois情報公開代行を設定する。
これは、ドメインを持ってるのが誰かを調べるWhoisっていうのがあるんだけど、何も設定しないとお名前.comに登録した自分の個人情報が登録されるらしい。会社とかの場合はそれでもいいんだけど、個人で使う場合は困る。そこで、自分の情報の代わりにドメインを取得した会社の情報を設定することができる。
これがWhois情報公開代行サービス。

このサービス、新規登録時に設定すると無料で設定できるんだけど、あとから設定するには別途料金がかかるらしい。
そこで登録時に申し込んでおく。あとは流れに沿って、支払い方法とかを入力すると晴れて独自ドメインが取得できる。

ping打ってみる

取得できたらまずはドメインpingを打つことを目標にした。
そのためには、ドメインにAレコードを設定してvpsにてドメインの設定を行う。

①Aレコードの設定
お名前.comのDNS関連機能設定→設定したいドメインを選ぶ→DNSレコード設定を利用する
と移動して、
TYPE:A
VALUE:自分のvpsIPアドレス
を入力。ホスト名は空白で、その他は変更しない。その後、右端の追加を押す。
で、ページ下部の確認画面へ進むを押す。
この前後で、ネームサーバーをお名前.com指定のものに設定するように言われるので、設定する。

ドメインの設定
借りているvpsで他社管理ドメイン設定をするところがあったので、そこで自分のドメインをホスト名として登録した。
適当この辺、vpsごとに違うと思うので、それぞれググったほうがいいと思う。

これでpingを打ってみる。
ドメインDNSに浸透するまで最大で3日間ぐらいかかるらしいので、失敗した場合は設定とかを見直しつつちょっと待ってみるとよいかも。
自分の場合は次の日には問題なく出来た。
f:id:brookbach:20150428004555p:plain

できた

これにて独自ドメインの取得は終了。なんかほんとに自分のメモみたいになってて、ブログに書く意味あるのかわからない。。。自分と同じように、ちょっと興味あるぐらいの人へのはじめの案内になってくれると嬉しい。
そもそも見てる人がいるのか

次は独自ドメインのメールアドレスの設定方法について書く。


なにか質問等あれば気軽にどうぞ。