Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

2016-05-01から1ヶ月間の記事一覧

関数定義の際、引数を与えなくてもargumentsが補足している

関数に引数を与えなくてもargumentsが補足しています。 名前付けた方が当然追いやすいですが。 実際のところ 基本的な例がこちら。 function hoge() { return arguments[1]} hoge(2,9) //> 9 ちょっと複雑に 内部のアロー関数でargumentを補足 第二引数がな…

JSでもRubyのEnumerableみたいな事をやる

JSでもRubyのEnumerableみたいな事をやる事ができます。 for ... ofみたいなことをやらなくても良いので、意味合いを追いやすくなります。 実際のところ rubyでいけば、こんな感じですね。 ary = [5, 6, 13, 0, 1, 18, 23] ary.reduce {|i,j| i += j} ary.se…

【読書メモ】「読まなくていい本」の読書案内

「読まなくてもいい本」の読書案内:知の最前線を5日間で探検する (単行本)作者: 橘玲出版社/メーカー: 筑摩書房発売日: 2015/11/26メディア: 単行本(ソフトカバー)この商品を含むブログ (10件) を見る黄金の羽根の拾い方などの経済系読み物で有名な橘玲さ…

getterとsetterを使って既存オブジェクトを拡張する

javascriptはgetterとsetterを使うことで既存オブジェクトを拡張する事ができます。 実際のところ 通常、Dateクラスにはyearという名前の関数はありません。 let now = new Date; console.log(now.year); //> undefined Date.prototypeに手を加える事でyear…

new環境expoにいってきました

会場の様子 産業PCの大手、タフブックの発展系tough tablet

google apps scriptでGoogle formsを生成する

google apps scriptだけでGoogle formsを生成する事ができます。 似たようなフォームを何個も作っている場合は楽になるかも知れません。 実際のところ 色々ゴテゴテとついた2ページ程のGoogle Formを生成するパターンを考えます。 function makeForm() { va…

UNIX時間はミリ秒単位

余りに間抜けな話ですがメモ。 Javascriptをはじめ、時間系のライブラリはUNIX時間を戻り値として返してくる事が多いです。 これはミリ秒の値です。 実際のところ 今年の5月末日から、来年の3月末日……というか年度末までの日数を出す という挙動を意図したJ…

sprintf-jsを使ってJSでもSprintf記法を使う

sprintf-jsを使ってJSでもSprintf記法を使う 実際のところ 導入 普通の手順通りnpmでインストール。 $ npm install -g sprintf-jsその後本体で const sprintf = require('sprintf-js').sprintf とやれば、読み込みの準備は完了 Javascriptだと案外面倒な、ゼ…

google formで入力後に確認メールを送る

google formで入力後に確認メールを送る方法です。 受領メールの反応速度は結構商売に直結したりするので重要ですよね。 この例から作りこんで、同時に営業担当にメールが行くようにすると手間が更に減ります。 実際のところ フォーム 以下のような入力フォ…

テンプレートリテラルで文字列に変数を埋め込む

テンプレートリテラルで文字列に変数を埋め込む事ができます。 実際のところ 文字列の埋め込みは"${}"で行います。 bashっぽいですね。 let a = 'gogo' `duck duck ${a}` // =>'duck duck gogo' 公式では、次のような例も紹介されています。 var a = 5; var …

letはブロックに紐付く

letはブロックに紐付くため、varではできなかった事が出来るようになります。 実際のところ var messages = ["Meow!", "I'm a talking cat!", "Callbacks are fun!"]; for (var i = 0; i < messages.length; i++) { setTimeout(function () { cat.say(messag…

Javascriptのsortは破壊的である

タイトルのまんまです。 Javascriptのsortは破壊的なので注意して下さい 実際のところ let d = [ 1, 5, 6, 2, 3, 4 ] d.sort() // [ 1, 2, 3, 4, 5, 6 ] d // [ 1, 2, 3, 4, 5, 6 ] rubyとおなじ感覚でソートしてしまうと意図しない挙動をする恐れがあります…

分割演算子をつかって配列データを楽に取り扱う

分割演算子をつかって配列データを楽に取り扱う方法です。 これはドットが3つ並んだ、最初見ると何だかサッパリわかないものですが配列を使う際にとても重宝します。 実際のところ [..."hello"] // [ 'h', 'e', 'l', 'l', 'o' ] これはString#splitと等価の…

第7回 教育ITソリューションEXPOに行ってきました

実際のところ 筆っぽい書き味のホワイトボード パソコン室の端末をボタン一つで操作するアプリ。 これ以上とない圧倒的説得力 教育向けロボット、お値段30万円。 産業ロボット並の自由度でヌルヌル動きます。 イチゴjamのロボット みんな大好きlittle bit マ…

ジェネレータ関数を同期処理に活かす

shuzo-kino.hateblo.jp で扱ったジェネレータ関数ですが、ホントは同期的処理で使う子みたいです 実際のところ bluebirdというライブラリを活用しつつ、ファイルの上書き処理をするものを考えます。 'use strict'; const Promise = require('bluebird'); con…

「美しい社会論」からは距離を置いたほうが良いという話

感動話にせよ社会論にせよ、それが「美しい社会」の腐臭を放つなら そういった主張・情報からは距離をおいたほうが良いように感じます……という個人的意見表明です。 事例 歴史的事例 ナチスにせよISILにせよ歴史上「その実行に暴力が伴う美しい社会実現運動…

"break label"構文でループから任意のタイミングで抜ける

"break label"構文はforやwhileといったループから抜ける事ができる書式です。 悪名高きgoto文そのものの記法ですが、ネストしたループから特定条件で離脱したい場合などには かえってシンプルに書くことができたりします。 使いドコロを理解していれば、そ…

for...inとfor...ofの違い

個人的には頻繁に誤爆するfor...inとfor...ofの違いです。 雑にまとめると、 中身を見たい場合はof enumrableなものを読みたい場合はin といったところでしょうか 実際のところ 基本的な挙動 特に拡張をしていない、ただの文字列の場合を考えます。 配列でも…

"yield*"記法は変数をバラして渡す事ができる

"yield*"記法はforeachでぶん回せるような変数をバラして次の関数に渡す事ができます。 実際のところ 具体例として、フィボナッチ数列をジェネレータ関数で実装するケースを考えてみます。 記述する際の利用法は以下の(1)(2)の通り。 'use strict'; function…

IOT/M2M展2016に行ってきました

IOT/M2M展2016に行ってきました 気になったもの シール式RFID 元はシールメーカーだった会社さんの展示です。 マイナス40度といった極地向けから、 オイル/グリースまみれの表面に貼り付けできる凄いのまで 表面の文字、アンテナパターン、更にはid情報ま…

はてなNGは実際便利

はてなブックマーク、使ってますか? 特定のユーザをフォローすれば最新技術についていくのも楽ですし、 知らなかった知見も得られて有用です。しかし、です。 匿名性SNSの宿命か、基地外さんの排除は極めて困難でもあります。 特に、政治・経済・ライフハッ…

ジェネレータ関数を使って、オレオレ・イテレータを作る

ジェネレータ関数を作るfunction*()記法を使って、オレオレ・イテレータを作ることが出来ます。 基本的に同じルールで進行するが時偶変なパラメータが発生する 任意のフラグが立った際、強制終了したい ……といった、有りがちなケースで使うと効果的です 実際…

javascriptで8bit、16bitなどの値を配列経由で使う事ができる。

JavaScriptの変数は日々世界のハッカー軍団によって性能改善が図られてはいます。 が……場合によっては、容量扱いがタイトな場合もありますよね。 WebCacheに入れたい場合とか。*1 そういう場合、ビット数を指定した値の扱いが可能です。 種類としては正負のI…

prototypeを使うと既存オブジェクトを拡張可能

prototypeは既存オブジェクトに手を加えるメソッドです。 実際のところ オブジェクト指向的な書き方をした、以下の様な関数があったとします。 function Person(fist, last) { this.first = fist; this.last = last; } p = new Person('gogo', 'yubari') こ…

C言語的構文のfor文において、変数宣言部では複数の変数を設定する事が可能

C言語的構文のfor文において、変数宣言部では複数の変数を設定する事が可能です。 まことに恥ずかしい話ではありますが、プログラミングで飯喰って5年は経つのに最近はじめて知りました。 実際のところ for文の宣言部に書くことで(コンパイラなりVMの実装に…

ArduinoでJSONを扱う「ArduinoJSON」

arduinoでJSONを扱うライブラリに「ArduinoJSON」というのがあります。 IoT系で計測データをJSONで吐き出したかったり、あるいはJSONファイルをDSL風に使いたい場合にはとても重宝します。 ちなみに……Arduino-Jsonなんて名前ですが、OS XやWin、Linuxでも動…

javascriptの関数で可変長の引数を扱う

functionで可変長変数を扱いたい場合、ベタな方法としては……最初から受け取る変数を配列として設計してあげる方法がありますね。 他にも、通常の引数のように渡す方法や、後で配列形式の変数を渡す方法があります。 実際のところ 渡した数値の平均を出す……と…

javascriptにおいて、trueは1(数値)として扱われる事がある

ちょっと何言ってるかわかりませんが、javascriptにおいてtrueは1として扱われてしまう事があります。 条件式でも1と扱うことができますし、四則演算もビット演算もできます。 魔界記法を実現したいならモッテコイですね……実際には意図しないバグを潰す過程…

数値にNaNを足すとNaNになる

数値にNaNを足すとNaNになります。 実際のところ グローバル変数NaNは"Not-A-Number"の略で、数値でない事を示す変数です。 数値を吐き出すメソッドでミスった場合に出力されます。 Math.sqrt(-1) // NaN このNaN、一つ奇妙な特性があり……既存の数値に足し込…

Arduino IDEにデフォルトで存在しないボードを追加する。

Arduino IDEには公式がサポートしているAVR系の石を採用したボードが一通り把握されています。ARM系*1やIntel系*2はデフォルトではリストにありません。 これらはボードマネージャで明示的に入れてあげる必要があります。 実際のところ 32bit ARMが乗ってるM…