hagetak's blog

どうも、はげたかです。

JavaScriptでセグメントっぽいの作った。

はじめに

お風呂に入ってる時、セグメントってすごいよな!って思った。一度、基本情報技術者の過去問でセグメントの問題が有り、すごく印象に残っていたのを思い出した。

それぞれの場所を7bitでフラグを立てて表現している。自分、何でも感動しやすく吸収しやすいので、これに感動をした、ということで、作ってみた。

f:id:hagetak:20150405170352j:plain

環境

(ブラウザのコンソールでテストをしていたが、後述するエスケープシーケンスを使用するためにnodeにした)

github.com

使い方

mkdir tmp && cd tmp

git clone https://github.com/hagetak/segmentJS

  • nodeで実行

    node

s = require('./segment.js');

for(var i=0; i<10; i++){ s.segment(i);}

感想

意外と簡単にできた。エスケープシーケンスってなんかすごいな。たったあの量で、制御ができるんだもん。こうやってちょこちょこ使ってみたいなあ〜〜〜〜!!!

書いてて成長したなぁって点は少しスマートに書けるようになったこと。オブジェクト(rubyでいうハッシュ)を使って綺麗に書けるようになった。昔、何かで読んだコードにこういう書き方があって、それを真似してみた。継続的にコードを読み、試し、スキルを向上したい。

一つつまずいた点は、node_moduleにした際、中にある変数が競合したこと。スコープ的に大丈夫かと思ったらダメだった。説明ができないので、コードで示す。(書いてて分かった。var を抜かしているから、グローバル変数になっていたんだ。)

/* 
   省略
 */
  for( i in hoge){
   /* */
  }

node

s = require('./segment.js')

for(var i=0; i < 10; i++){s.segmnet(i)}

はい。グローバル変数になってた。こうやって書き出すことにより自分の間違え・気付きが現れるからイイね。

参考

d.hatena.ne.jp

を元にnodeで使えるようにした先生のトラック.

JavaScript 第6版

JavaScript 第6版

開眼!  JavaScript ―言語仕様から学ぶJavaScriptの本質

開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質