REALFORCE SA for Macを買った

Macのキーボード環境は貧弱である。Apple純正のキーボードを除くとMac向けキーボードに選択肢はほとんど無い。 USキーボードであればWindows用でもレイアウトが同じなのでWindows用を買ってきて使う手もある。だが、あいにく私はJISキーボード派。JISキーボ…

カハンの加算アルゴリズム

浮動小数点数の小数演算には誤差が付き物 function sum(array) { let result = 0; for (let i = 0; i < array.length; i++) { result += array[i] } return result; } const a = Array(1000000).fill(0.1); console.log(sum(a)); 結果 100000.00000133288 こ…

AWS ElastiCache RedisのマルチAZがt2インスタンスでも使えるようになっていた

t2インスタンスではマルチAZが使えなかったので、開発環境ではマルチAZなしで構築していたんですが aws.amazon.com 去年の11月ぐらいから使えるようになっていたらしい。 いいですね。これで価格を抑えてマルチAZ環境のテストが行えます。

WebコンテンツのDark Modeについて

WebコンテンツのDark Modeの情報が全然ない。まぁ、まだ仕様策定中で実装してるのがmac版のsafariだけなので仕方ないのだが。 Safari以外の状況は以下のような感じ。 https://bugs.chromium.org/p/chromium/issues/detail?id=889087 https://bugzilla.mozill…

Node v12でTLS v1.3を試す

先日リリースされたNode v12はTLS v1.3に対応しているらしい。というわけで早速試してみた。 サーバ証明書の作成 まずテスト用に自己署名サーバ証明書を作成する。ここでは楕円曲線secp521r1*1のecdsaの秘密鍵を作成した。鍵を作成できるサブコマンドは何種…

公開鍵は暗号よりも電子署名

こちらはSSHではRSA公開鍵は電子署名に使っているのであって、暗号化をしているのではないという記事。 qiita.com 実はRSAを暗号として用いるシーンは減ってきている。 現在、我々に最も馴染みのあるRSAの用途はSSL/TLSだろう。TLSは公開鍵暗号ではなく共通…

prefers-color-scheme対応のSafari 12.1がリリースされた

prefers-color-scheme対応のSafari 12.1がmacOS 10.14.4とともにリリースされた。prefers-color-schemeはOSの外観モードに応じて切り替えのできるメディアクエリ @media (prefers-color-scheme: dark) { div { color: #fff; background-color: #333; } } @me…

evalとFunctionを使わず文字列をJSコードとして実行する

以下のコードは古のスーパーハカーが書いたと言われる、SNSでシェアしただけで行政機関の執行を受けるほどの危険なコードらしい。 for(;;) alert('何回閉じても無駄ですよ~'); なぜこのコードが危険なのか私には説明できないのだが、そんなコードを実行可能…

Node.jsのテストツールAVA

最近のNode界隈ではAVAというテストツールがイケているという噂なので試した。 GitHub - avajs/ava: Testing can be a drag. AVA helps you get it done. import test from 'ava'; test('foo', t => { t.pass(); }); test('bar', async t => { const bar = …

出版業界はまだ2005年ぐらいを生きているのだろうか?

note.mu これはすごいですね。時代錯誤が。今年2019年ですよね?2005年じゃなくて、Amazonがkindleを売り始めたの10年以上前ですよ。 ビジネスの世界はデータが命。機械学習やAIがデータ分析のツールとして持て囃され爆発的な進歩を遂げる昨今、アメリカのIT…

bundle installするとcan't find gem bundlerと言われる

bundle installするとcan't find gem bundlerとエラーが表示される $ bundle install --path=vendor/bundle Traceback (most recent call last): 2: from /Users/nullpon/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>' 1: from /Users/nullpon/.rbenv/versions</main>…

Rubyの配列の長さはcountではなくlength/sizeで取得する

countではなくlength/sizeが良いらしい def bench(msg) t = Time.now 30000.times do yield end puts "#{msg}:\t#{Time.now - t}s" end arrs = (0...100).to_a.map do |i| Array.new(rand(100)) end bench("count") do arrs.each { |a| a.count } end bench(…

JavaScriptでBase64エンコードする

NodeはBufferにbase64エンコード機能があるのだが Buffer.from("あいうえお", "utf-8").toString("base64") ブラウザのJSにはこういう便利な実装がないのだった。どうするか? window.btoa ブラウザにはbtoaというbase64エンコードを行う関数がある。しかし…

Symbol.iteratorでユーザクラスを反復可能にする

JavaScriptのユーザクラスをfor of構文でループ可能にする方法。Symbol.iteratorでiteratorプロトコルを実装したオブジェクトを返す関数をセットするか、ジェネレータ関数を実装すれば良い。楽なのは後者 class Hoge { *[Symbol.iterator]() { yield 1; yiel…

async/awaitで配列要素の非同期処理を書く

二年ぶりぐらいにNodeを書いているのだが、寝ている間にコールバック地獄はasync/awaitの導入によって終了していたらしい。ほほーう。 で、配列要素の非同期処理である。コールバック時代はnpmのasyncモジュールを使うのが一般的だったが、async/await時代の…

scriptのasync属性とdefer属性の挙動

MDNによるとscriptのdefer属性は この論理属性は、スクリプトを文書の解析完了後かつ DOMContentLoaded が発生する前に実行することをブラウザーに示します。 と書かれているが、文書の解析完了と言う言葉が具体的にどういう意味を持つのかわからない。非def…

lsコマンドをhistoryに残さない

lsコマンドの履歴なんて不要。 zshでHIST_IGNORE_SPACEというオプションをセットすると、先頭にスペースを入れて実行したコマンドが履歴に残らなくなる。まずこれをセット setopt HIST_IGNORE_SPACE 次にlsのエイリアスを作成。先頭にスペースを入れてエイリ…

地球上の2点間の距離を求める

地球を真球と仮定して球面余弦定理に当てはめれば近似値が出る。 ググるとhaversine fomula(半正矢関数)という関数を使った計算式が出てくる。これは三角関数表を引く回数を減らすために球面余弦定理を変形したもの。PCではsinやcosを簡単に計算できるので…

ブラウザはport 6000にアクセスできない

知らんかった… Dockerでローカル環境を構築していた時にブラウザはport 6000にアクセスできないことを知った。例えばdockerで以下のようにnginxを起動。 docker run -p 6000:80 -v $(pwd)/htdocs:/usr/share/nginx/html --name web nginx:latest chromeで ht…

新MacBook Airは最強のドヤリングマシン

MacBook AirとMacBook Pro 13 inch、ディスプレイのサイズは同じだがどちらを買うべきか。メモリ8GB、ストレージ256GBの今年のモデルで比較すると MacBook Air ¥156,800 MacBook Pro 13inch ¥198,800 価格差は3万2000円。CPUの性能差を考えるとPro 13 inch…

MySQLのCTE

SQLアンチパターンをパラパラめくっていて、 ナイーブツリーの項で SQL-99標準では、WITHキーワードの後に共通テーブル式(CTE:common table expression)を指定する形式の再帰クエリ構文を定義しています。 という一文を目にし、ふとMySQL 8からCTEが使え…

HTML Canvasでバイリニア法、バイキュービック法、ランチョス法

ディレクトリを漁っていたら、10年ぐらい前に書いたHTML CanvasとJavaScriptによるバイリニア法の画像拡大のコードが出てきた。これが酷いコードだったので最近の文法も使って書き直し、ついでなのでバイキュービック法とランチョス法による拡大縮小も書いて…

プログラミングが役立つIT業界と役立たないIT業界

現役SEですけど、プログラミングできてもあんま役に立たないっすよ。給与高い管理系の仕事にシフトしていくほどなおさら使わない。IT職でさえ、こんなもんです。子供の習い事は習字がいいと思います。会議でホワイトボードにシステム設計ガシガシ書いてると…

Railsのbefore_forkで接続を閉じる必要あるの?

Railsのunicornやpumaのconfigをネットでググってみると以下のような設定が見つかる。 # unicorn preload_app true before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! end after_fork do |serve…

rapportdとxartstorageremoted

新品のMacBook proに見知らぬportが開いていたので調べてみた。 $ netstat -nat | grep LISTEN tcp6 0 0 *.49298 *.* LISTEN tcp4 0 0 *.49298 *.* LISTEN tcp6 0 0 *.61500 *.* LISTEN tcp4 0 0 *.61500 *.* LISTEN $ sudo lsof -i:49298,61500 Password: C…

日本の最高気温記録が更新された

暑さ番付、東の横綱熊谷市で日本の最高気温記録を塗り替える41.1度をマークしたそうです。 今日の熊谷、午前中の最低気温がなんと28.0度、日の出とともに気温が上がり、正午に39度、13時に40度近くまで上昇。その後も勢いは衰えず、14時23分に41.1度に到達し…

nginxのlocationの優先順位を誤解していた

最近nginxを触っていて、locationの優先順位、主に^~の有無による前方一致の扱いについて誤解していたことに気づいた。 まず正解から。locationは以下の流れで決定される 完全一致チェック -> location = path {} locationとURIが完全一致すれば、この設定で…

Scalaのimplicitパラメータは何のための機能?

最近Scalaのコード読むことが増えたんですが、implicitパラメータのついた関数が多用されるとメッチャコード読みにくいんすよねアレ。このドワンゴのScala研修テキストにあるようなコード この3つのメソッドは共通してConnection型を引数に取るのに、呼びだ…

2018冬アニメ

完走4作品 宇宙よりも遠い場所 ゆるキャン△ オーバーロードII ヴァイオレット・エヴァーガーデン 世間的にはポプテピが流行っていたようだが、内輪ネタの悪ふざけには興味がないので見ていない。 宇宙よりも遠い場所は久々の大当たり。早見沙織が出るから見…

bundlerでmysql2のインストールが失敗する

bundle updateしたらエラーが出た。 MacOSX high sierra 10.13.4 Ruby 2.5.1 (rbenv/ruby-buildでインストール) MySQL 5.7.21 (brewでインストール) linking shared-object mysql2/mysql2.bundle ld: library not found for -lssl clang: error: linker comm…