2011-12-16

進路に関するFAQ

追記: 最新版 http://sorah.jp/faq/career/

さて,前からあちこちイベントに行くたびに「sora 高校どうすんの」みたいな質問を 5, 6 人から受けるので, 途中から「FAQ エントリを年内にあげるから><」みたいな風に言っていました.

ということでそろそろ年末になりますし忘れないうちに進路に関する FAQ という事でエントリしておきます.

Q. 高校どうすんの?

A. 行かないです.行かないけど受験だけはしようと思ってましたけど学校にそういう事なら県立受験に必要な書類は出せないと言われて受けないことに.

Q. 大学行くん?

A. とりあえずとっとと 高等学校卒業程度認定試験(旧大学入学資格検定 を取得して大学受験はしようかなーと思ってます. うまくいくといいね…

Q. 高校生相当の年齢の間は何するん?

A. 大学に向けてぼちぼちと高校課程の一般教養の勉強()とか,あと,コードを書くバイトとかすると思います.

Q. どうして高校いかないん?

A. 中学校と同じように高校/高専も飽きるだろうなーと踏んだ結果.

間違いなくつまらなさそうなので飽きそう。 独自に勝手に勉強するのがもともと好きなのでそっちのほうが合ってるし.高校の一般教養くらいまでならなんとかなりそう!

あと,バイトとかにもそこそこ時間を割り当ててそっちの方でも経験積めたらいいなと思ってます. 学校行きつつだとあんま割り当てられなさそう.

Q. 高専という道は…

A. 同じように最寄りの小山高専だと(主に授業に)飽きそうな気がした.そもそも学力がなかった。 遠い高専に行ってまで行くものでもないしね。

追加の質問があれば

Twitter @sora_h 等に mention をください.このページに追記したいと思います.

バイト先

Joining COOKPAD

Published at 2011-12-16 00:03:22 +0900 | Permalink
2011-12-06

桜花あどべんとかれんだぁ 6 日目

注意: この記事は自分の twitter のノイズが嫌だとか言う人にはおすすめしません。別の記事を読むことをおすすめします。

(この記事は 桜花あどべんとかれんだぁ 2011に参加しています。前日は ふぁいたん でした。)

桜花あどべんとかれんだーとか、なにそれこわい!

みんなにならい、桜花ちゃんについて語るのー(✿◡╹)-♡

桜花ちゃんとは

@rofi という名前のidで活動してるかたです!

主にバイナリと可愛い子を mogmog して生きている気がします。

タイムゾーンがずれているきがしなくないのもポイントですね!

こわい

こういう所がこわいです:

  • なんか着せようとしてくる
  • バイナリアン
  • ほかいろいろ

すごい

こういうところがすごいです:

  • バイナリ弄り
  • 円周率プログラミング(?)

こわくてすごい!

かわいい

  • 他の人との会話
  • 性格

和みますね!

出会い

ほもっきんちゃんと同じ感じで、桜花ちゃんとの出会いについて 振り返ってみたいとおもいます。

最初は確かセプキャンのチャットができたときに、そこにいたほもっきゆちゃんの twitter から @rofi へのリンクが貼られていてフォローしていました。

ざんねんながら、セプキャン中は上記のいろいろに気づいていなかったのであまり 絡めませんでした。後悔しています。。 というか、セプキャン同期生との交流は終わってから一気に強まった感じなのもふくめ。

そして桜花ちゃんの周辺もフォローし、いつのまにか桜花ちゃんとその周辺に絡んでいました!

こんなかんじですね。桜花ちゃんはよ関東><。

いつ桜花おねーちゃんに会えるかなぁ〜?><

Published at 2011-12-06 14:59:05 +0900 | Permalink
2011-12-05

Kernel VM

dev

(本記事は カーネル/VM Advent Calendar 2011 に参加している記事です.この記事は 5 日目の記事で,前日は @naota344 でした.)

カーネル/VM 探検隊には参加したことがない sora_h です.こんにちは!

さて,カーネル/VM advent calendar はテーマなんでもいいということですが,やはり前日を見るとカーネル関連じゃないと行けない気がしなくも無いですね……………!!!!

カーネルとVMといえばまあRuby の KernelRubyVMが思い浮かぶわけです.

ネタがないのでこの二つを解説しましょう.ごめんなさい!!!!

Kernel

Kernel とはすべてのクラスから参照できるメソッドが定義されているモジュールであり, Object はこいつを include している.

有名な例では puts とかopen() とかそういうのが Kernel にあります.

しかしこれを解説するのはあまり面白みが無いので RubyVM を解説しようと思います.

RubyVM

今回はそれのサブクラスである RubyVM::InstructionSequence を取り上げます.

これは Ruby 1.9 系列から搭載された VM, YARV (Yet Another Ruby Vm) の insq (instruction sequence, バイトコード(?)) に Ruby レベルからコンパイルしたりなどができるようになって います.

RubyVM::InstructionSequence.compile("puts 'a'")

等することでコンパイルする事が可能です.

コンパイルの結果は,それでかえってきた InstructionSequence のオブジェクトに対して disasm したものを puts などすると良いのではないでしょうか.

require 'pp'
puts RubyVM::InstructionSequence.compile("puts 'a'").disasm

またこの結果は ruby --dump=insns -e 'script' とか ruby --dump=insns foo.rb とかでも 確認することができます.

そして

RubyVM::InstructionSequence.compile("puts 'a'").eval

で実行することも出来ます.

で,これで生成されるバイトコードを見たからなんだ,という話なんですが, たとえば命令をいじってみたりとかして遊ぶことができますね.

YARV の命令群の実態は insns.def ファイルにあって,コンパイル時にそれを一つの C ファイルに変換しています.

なので,insns.def ファイルを編集してビルドすることで命令の動作が変わったりします.楽しいですね.

YARV の instructions を調べたりするには yhara さんが作った YARV Instructions, また YARV 自体の解説にはまだ執筆途中で中途半端なものの開発者である ささださん が書いている YARV Maniacs を読むと良いかもしれません.

参考資料

まとめ

ちゃんとネタは作っておこう

Published at 2011-12-05 14:59:07 +0900 | Permalink
2011-11-30

Coffeescripting with Ruby #advent11rb

dev

(本記事は Ruby Advent Calendar jp: 2011 に賛同している記事です.この記事は本 Advent Calendar 最初の記事になります.)

Ruby Advent Calendar の最初の記事です.どうもこんにちは.

さて,今回は Ruby と Coffeescript, javascript について語ります.

Ruby から Javascript を使う

さて最近はたくさん javascript のインタプリタがありますね.node とかだとコマンドラインインターフェースも充実しているし.

それらをつかえばもちろん ruby から js を使うことはできるわけです.しかし方法が多すぎる.

それをまとめるために execjs という gem があります.

これは複数の javascript 実行方法に対応していて,自動でどれが現在の環境において実行可能かを判別し どれか適当な方法で実行してくれます.

execjs/README.md 曰く,

つまり,execjs で Javascript を実行すれば適当な方法が採用されるので Ruby から Javascript を使うには向いています.

require "execjs"
ExecJS.eval "(function(name){ return ['hello', name, 'world'].join(' ') })('javascript')" #=> 'hello javascript world'

しかし, javascript を ruby から使うメリットはあるのでしょうか.

Coffeescript

Coffeescript という Javascript にコンパイルされる Javascript で実装された言語があります.

この言語は ruby に python をちょっと混ぜたものをコーヒーに突っ込んだような言語です.

Ruby 等を書いていて Javascript の書きにくさを実感しますが,Coffeescript を使うことでそれをある程度解消することができます.

最近だと Rails 3.1 などでデフォルトが Coffeescript になった事で Ruby 界で一層有名になった感じですかね.

Ruby から Coffeescript をコンパイルする

Rails 3.1 などもやっているように,Coffeescript を Javascript にコンパイルしています.

Coffeescript のインタプリタ (Javascript コンパイラ) は Javascript で実装されているため,JS が実行できれば Coffeescript のコンパイルをすることができます.

そして,先ほど紹介した execjs を利用して coffeescript を javascript にコンパイルする gem があります.

https://github.com/josh/ruby-coffee-script

これを使うことで簡単に coffeescript を javascript にコンパイルすることが可能です.

Sinatra では coffee :the_script などでこれを利用して coffeescript を javascript として render することが可能です.

では,Happy coffeescript life を!

Published at 2011-11-30 15:00:35 +0900 | Permalink
2011-11-11

バイナリの日

http://twitter.com/#!/shugomaeda/status/134860786802753537

@shugomaeda: みんな今日は日記書いといた方がいいと思うよ

'11/11/11, バイナリの日.

Published at 2011-11-11 05:13:55 +0900 | Permalink
2011-11-05

ラムダ計算

dev

ふぁいたん が布教してきたのでインタプリタ書いた.

らむだかわいいです.何でもいいので引数を渡すとreadlineで入力待ちになります.

なんでかは知らんけどローカル変数にLambdaオブジェクト作りまくったりとかで遊んでいます. 是非コード読解してみてください!!

参考資料

あわせて読みたい

Published at 2011-11-05 22:20:26 +0900 | Permalink
2011-10-16

iPhone 4S (au by KDDI版) 最低運用のお話

ios

追記 下記の通りヨドバシカメラ宇都宮で契約成功。この内容で必ずうまく行く保証はないけど。また、店員からの情報をいくつか追記しました。

http://www.au.kddi.com/iphone/ryokin/

気づいたら詳細な料金ページが公開されてた!!! やったね!!!

これが公開される前に@heal_に頼んでいろいろ聞いてもらっていたのだけど, それを元に最低運用プランを考えてみた.ありがとうひいいいいいいる http://twitter.com/#!/heal_/status/125868955419152384

免責事項

  • 自己責任でね!
  • 2011/10/16 時点での情報です.
  • 2011/10/17 ヨドバシカメラ宇都宮で下記の通り成功しましたが、成功する保証はありません。
... Continue Reading...
Published at 2011-10-16 14:54:26 +0900 | Permalink
2011-10-13

FizzBuzz seems be deprecated... How about FibBuzz? #fibbuzz

dev

日本語版

@lchin: "FizzBuzz、4年前に飽きたわー"って誰かまだ言っていないか?あくまで省力化のための足切りとしてのものだけど、出まわりすぎた時点でかなり効果が低下しているはずだ。まぁ、採用基準よりも「不採用基準」として使うだろう

(Are there any person still saying "FizzBuzz, I've lost interest in that 4 years ago..."? We use FizzBuzz for cutoff of a test of employment, but FizzBuzz's effect is getting low because it's too popular. If I needs to use it, I'll use FizzBuzz as "Not Adopting standard", not "Adopting standard.")

http://twitter.com/#!/lchin/status/124138347819053058

I've seen this tweet, and agreed. Because I remembered a FizzBuzz code, so I thought it's deprecated. I thought about a game that is more more complicated than FizzBuzz but still it can write easily.

FizzBuzz... Fizz... Fib... FibBuzz... ... FibBuzz!

Fib is used often for a method name that get Fibonacci number. Fib is Fibonacci.

The following is a rule of FibBuzz:

FibBuzz

FibBuzz: Enumerate fibonacci numbers starting from 1, but replace multiples of 3 with "Fizz" and multiples of 5 with "Buzz" and multiples of both with "FizzBuzz"

Using as a real question, you have to set a limitation, like "100 fibonacci numbers."

Golf

I've created a problem on golf.shinh.org

http://golf.shinh.org/p.rb?FibBuzz

See Also: http://en.wikipedia.org/wiki/Code_golf

FibBuzz sample code (Ruby)

puts (1..100).inject([1,1]){|s| s<<s[-1]+s[-2] }.map{|i| i%15==0 ? "FizzBuzz" : i%3==0 ? "Fizz" : i%5==0 ? "Buzz" : i }

BuzzFib

First I declared FibBuzz as shown below:

BuzzFib: Enumerate the natural numbers. but replace the fibonacci numbers with "Fib" and multiples of 5 with "Buzz" and the fibonacci numbers which divisible by 5 with "BuzzFib"

As same as above, if you use this as a real question, you have to set a limitation like this: "Enumerate the natural numbers from 1 to 100."

But I decided this is not FibBuzz because of reasons shown later. I declared this as BuzzFib.

BuzzFib sample code (Ruby)

puts (1..100).inject([[1,1],[]]){|(s,r),n|[s<<s[-1]+s[-2],r<<((_="#{s.include?(n)?:Fib:""}#{n%5==0?:Buzz:""}").empty?? n:_)]}[-1]

Golf

I've also created a BuzzFib problem on golf.shinh.org.

http://golf.shinh.org/p.rb?BuzzFib

Why I declared as BuzzFib?

I've thought about fibonacci numbers + FizzBuzz because it seems interesting. and I thought a BuzzFib. (It was a FibBuzz then. now It's BuzzFib)

But it's complex and... see the result shown here:

["Fib", "Fib", "Fib", 4, "FibBuzz", 6, 7, "Fib", 9, "Buzz", 11, 12, "Fib", 14, "Buzz", 16, 17, 18, 19, "Buzz", "Fib", 22, 23, 24, "Buzz", 26, 27, 28, 29, "Buzz", 31, 32, 33, "Fib", "Buzz", 36, 37, 38, 39, "Buzz", 41, 42, 43, 44, "Buzz", 46, 47, 48, 49, "Buzz", 51, 52, 53, 54, "FibBuzz", 56, 57, 58, 59, "Buzz", 61, 62, 63, 64, "Buzz", 66, 67, 68, 69, "Buzz", 71, 72, 73, 74, "Buzz", 76, 77, 78, 79, "Buzz", 81, 82, 83, 84, "Buzz", 86, 87, 88, "Fib", "Buzz", 91, 92, 93, 94, "Buzz", 96, 97, 98, 99, "Buzz"] Like this.

You know, no many "Fib"s.

Because fib(12) > 100 is true. it means fibonacci number gets higher number in short times.

I thought this is not beautiful result, and BuzzFib seems complex problem, so I declared this rule as BuzzFib and I declared FibBuzz as another rule.

Published at 2011-10-13 02:08:09 +0900 | Permalink
2011-10-12

FizzBuzz は時代遅れらしいので FibBuzz はどうでしょう #fibbuzz

dev

English version of this entry

@lchin: "FizzBuzz、4年前に飽きたわー"って誰かまだ言っていないか?あくまで省力化のための足切りとしてのものだけど、出まわりすぎた時点でかなり効果が低下しているはずだ。まぁ、採用基準よりも「不採用基準」として使うだろう

http://twitter.com/#!/lchin/status/124138347819053058

こういう話が上がっていたので,FizzBuzz より複雑で,でも簡単にかけるものは何か考えた.確かにFizzBuzzはわたしも__コードを暗記してるようなものだし__,そろそろ時代遅れなのではないかと思った.

FizzBuzz... Fizz... Fib... FibBuzz... ということで FibBuzz という言葉が思いついた.

Fib はフィボナッチ数列を求めるメソッドなどでよく使われる名前というか略称.Fibonacci の頭文字になる.つまり,ルールはこうだ

FibBuzz

FibBuzz: フィボナッチ数を1番目から順番に列挙していく.ただし,3で割り切れるならFizz, 5で割り切れるならBuzz, 3と5両方で割り切れる場合はFizzBuzzを出力する事.3と5どちらも割り切れない場合はそのまま出力して良い.

(実際に問題にするときは100まで等と制限をつけましょう)

ゴルフ

shinhさんのゴルフ場 に問題を作成しました.

http://golf.shinh.org/p.rb?FibBuzz

ゴルフはコードをなるべく短くするスポーツです.詳細はぐぐってください.

FibBuzz 実装例 (Ruby)

100 までの FibBuzz.

puts (1..100).inject([1,1]){|s| s<<s[-1]+s[-2] }.map{|i| i%15==0 ? "FizzBuzz" : i%3==0 ? "Fizz" : i%5==0 ? "Buzz" : i }

BuzzFib

初期の FibBuzz のルールはこうだった:

BuzzFib: 1から数を列挙していく.それがフィボナッチ数ならFib, 5で割り切れるならBuzz, その両方ならBuzzFib, その両方でもない場合はその数を出力してください

同じように100まで等と制限をかけましょう.実際は.

これは後述する理由で FibBuzz とは別にした.

BuzzFib の実装例 (Ruby)

100 までの BuzzFib.

puts (1..100).inject([[1,1],[]]){|(s,r),n|[s<<s[-1]+s[-2],r<<((_="#{s.include?(n)?:Fib:""}#{n%5==0?:Buzz:""}").empty?? n:_)]}[-1]

ゴルフ

BuzzFib のゴルフ問題も作成した.

http://golf.shinh.org/p.rb?BuzzFib

経緯

フィボナッチ数 + FizzBuzz は楽しそうだなーとルールを考え, 最初,上記のBuzzFibのルールを考えてFibBuzzを定義したのだけど…

このルールだとちょっと複雑というかそれ以前に結果が

["Fib", "Fib", "Fib", 4, "FibBuzz", 6, 7, "Fib", 9, "Buzz", 11, 12, "Fib", 14, "Buzz", 16, 17, 18, 19, "Buzz", "Fib", 22, 23, 24, "Buzz", 26, 27, 28, 29, "Buzz", 31, 32, 33, "Fib", "Buzz", 36, 37, 38, 39, "Buzz", 41, 42, 43, 44, "Buzz", 46, 47, 48, 49, "Buzz", 51, 52, 53, 54, "FibBuzz", 56, 57, 58, 59, "Buzz", 61, 62, 63, 64, "Buzz", 66, 67, 68, 69, "Buzz", 71, 72, 73, 74, "Buzz", 76, 77, 78, 79, "Buzz", 81, 82, 83, 84, "Buzz", 86, 87, 88, "Fib", "Buzz", 91, 92, 93, 94, "Buzz", 96, 97, 98, 99, "Buzz"] こんな感じ.

見て分かる通り,Fib が少なすぎる.

理由は fib(12) の段階で fib(12) > 100 を満たしてしまう.つまりフィボナッチ数列のほうが変化が大きいため Fib が少なくなってしまう.

これじゃ見栄え悪いし,しかもちょっと複雑すぎるなぁと思って,冒頭のルールを最終的に自分の中で fibbuzz として,このルールは buzzfib とすることにした.

よければ自分の好きな言語で fibbuzz, buzzfib をといてみてください.

Published at 2011-10-12 16:58:52 +0900 | Permalink
2011-10-02

SpeakerDeck がすごいらしい

web

RubyConfが終わりました.それのレポートはもうちょっと待ってね! 待ってね!

只今 10/2 7:51 am UTC-5 です.いえーい.

さてはて,おまえらはSlideshare使って資料を公開しているであろうが,何を言おうあれはなんとPHP + Flashだった!!!!!!!!!!

昨日角谷さんが夜のpartyで「SpeakerDeckすごいぜわほーい」みたいな大絶賛をしていたので,何がすごいかをざっとまとめておきます!!!!

まず,SlideshareはPHP + Flashです!!!! いいですか,PHPですよ!!! PHP!!!!! さらにスライド見るためのアレはFlashだしな!!!!

かわって SpeakerDeck はなんとRuby + Javascript です!!!! Flashいらず! スバラシイ!!!

しかも Slideshare みたいに follow とか news feed とかいうクソみたいな機能もないし,デザインもslideshareよりないし!

これはいますぐ使うしかない!!!!

http://speakerdeck.com/

とりあえずわたしの資料も上げて見ました.

http://speakerdeck.com/u/sorah/p/parallel-testing-world

Published at 2011-10-02 13:07:57 +0900 | Permalink
2011-09-26

高専カンファレンス in 小山 kosenconf-039oyama に行ってきた

P9250858 (写真は全部Flickrにあります)

小山なのに栃木駅! 栃木駅が綺麗すぎて宇都宮民嫉妬!

行って来ました高専カンファレンス in 小山 (kosenconf-039oyama).ちょうたのしかった.

というわけでレポート.まずは前夜祭から.

... Continue Reading...
Published at 2011-09-26 12:04:14 +0900 | Permalink
2011-09-23

Superprint の名刺が届いていた

めいしきた

(この記事 の続きです.)

9/18には届いていた.

質は高いしかなり良いですね.マシュマロホワイトとかいう紙で頼んだ.

というわけでこれを明日の高専カンファ前夜祭に持って行きます! 100枚あるしどんどん配ろう!

Superprint, かなりおすすめです!

Published at 2011-09-23 04:44:54 +0900 | Permalink