日本帰国

https://i.sios.com/ir/news/20180615jinji.pdf 米国に来て丸4年が経過しましたが、この度、7月1日付でサイオステクノロジー株式会社 常務執行役員を拝命いたしましたので日本に帰国します。サイオスグループは最近になってホールディングス制に移行していて…

deno2

deno/deno2 at master · ry/deno · GitHub 今週から、denoの根幹部分の新しいプロトタイプとしてdeno2(いずれはlibdenoとする計画?)のコミットが始まってました。GolangをやめてC++とRustで書き直している(Rustのコードがパッと見で見当たらないけど)の…

deno

github.com 作者のRyan Dahlは言わずと知れたnode作者。nodeのしがらみを捨ててV8+GolangでTypeScriptの実行環境を作ると言う。。。いいぞもっとやれ。 たった24日前からのスタートで、まともなリリースも無いのに、すでに13.4kのStarがついているのが驚く。…

OfficeのAutoUpdateそれ自体の更新が失敗する

普段はGoogle G-Suiteばかり使ってるのでMS-Officeを利用することが無いのですが、Office for Macのサブスクリプション(Office 365というべきか)を持ってます。たまにExcel開くと画面のように、「Office Update サブ Web」なるもので更新があることを伝え…

CLionが最強かもしれない

WebStorm大好きっ子な私ですが、WebStormはWEB系技術をターゲットとしていてC/C++のIDEサポートはありません。Go言語関連がGoLandに製品格上げなされた結果としてプラグイン提供がなくなってしまったのと同様にC/C++のプラグインもどうやらWebStormに提供さ…

C++でCoreText

NodeモジュールでまずはOSのフォント情報を取ろうと思います。Objective-CでやればサンプルもたくさんあるのだけどここはC++で書きたかった。 #include <ApplicationServices/ApplicationServices.h> #include <nan.h> using namespace v8; ApplicationServices/ApplicationServices.hを取り込みます。この中にC</nan.h></applicationservices/applicationservices.h>…

node-gypそしてnanへ。おまけでTypeScript

github.com nodeのアドオンを調べてたら本もなければ情報も少なく、この土日ずっと家族には仕事が忙しくてヤバいという体裁を装い篭ってたので、せめて記録ぐらいは残そうとサンプルを書きました。サンプルは超シンプルになりましたがこれは理解してからシン…

node v10.1.0は回復

node v10.1.0がリリースされていたので、nで切り替えて一通りテストやビルドを動かしてみました。 (node:26203) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.alloc…

node-canvasの型定義備忘

node-canvasの型定義を使うところだけ書いてみたけど目的に敵わなかったので、定義だけ備忘。いつか使うかも。 declare module 'canvas' { import * as Stream from 'stream'; interface PNGOptions { palette: Uint8ClampedArray; backgroundIndex?: number…

@types/nodeは治った

@types/nodeの10.0.4が出てたので試しにupgradeしてみたらTypeScriptのコアLibとぶつかる問題は解決していました。nにまだ10.0.0より後は来てないので本体入れ替えないから定義だけupgradeの意味はないけど、害もなし。

node v10.0.0は地雷

node v10.0.0は地雷バージョンでした。すでに@types/nodeがv10.0.0でTypeScriptのコアLibとURLなどいくつかの型定義が被って爆死という案件がありましたが、今回はts-jestの環境で以下のテストが沈黙してしまうという問題を抱えています。非TypeScriptな素の…

開発ガイドラインとGetting started

内向きに開発ガイドラインとGetting Startedを兼ねたようなものを書こうとしたが、目次だけ書き出したけどこれでも環境作るところだけ、この後にコーディング編とテスト編とリポジトリ&CI&デプロイ編があって、そもそもコーディング編にはSPA章とサーバレ…

gulp v4によるフルTypeScriptなビルド環境

SPAを作るには、webpack等の、色々寄せ集めて一つのJSにバンドルしてくれるツールを用いてビルドしますが、サーバサイドやローカル実行ツールのプロジェクトはそもそもビルドする必要すらありません。しかし、何らかの都合でビルドをしたい場合もあるでしょ…

fontkitを活用したら、ばっちりテキストのBBoxが取れました

github.com 必要なものだけfontkitの定義ファイルを作る。 // @/renderer/headless/fontkit.d.ts declare module 'fontkit' { function openSync(filename: string): Font; class Font { ascent: number; descent: number; unitsPerEm: number; layout(text:…

SVGTextElementのBBoxをpuppeteerで取る

なんでこんなことをしてるのかというのは、プロジェクトがクソ忙しい中できちんと説明できないのですが、ふと面白くなっちゃってd3.jsとdagre.jsでSVGを書いてました。 要件としてはブラウザ上でSVGにてテキストが入ったダイアグラムを描く際に、レイアウト…

可搬性の高いGoのVendoring環境整備その後、dep編

mk.hatenablog.com direnvでGOPATHを通し、特にまずvendorフォルダを優先することでgo getにていい感じにVendoringするようにしてました。が、しかし、しばらく離れているうちに様子が変わってしまいましたね。 HUGO(https://github.com/gohugoio/hugo)の…

GoLand...っておい

www.jetbrains.com しばらく前のSPAプロジェクトを久しぶりに開いてみたのです。同じプロジェクトでTypeScriptのクライアントとGoのサーバを両方書けるようにしたWebStormで作った環境が、どうも何かおかしい。GoのIDEサポートが動いていないのです。 結論と…

AWS Lambdaでのネイティブコード実行

なんと、まだ日本にいます。12月下旬からなので既に2ヶ月以上。流石にそろそろ帰米します。 さて、AWS lambdaのこと。 Lambda Execution Environment and Available Libraries - AWS Lambda If you are using any native binaries in your code, make sure t…

Python速修

スーパーバイザーで入ったプロジェクトがPythonメインだったため、これまでずっと食わず嫌いだったPythonを速修しています。初めてPythonの名を知ったのは間違いなく10年以上前、もしかしたら15年ぐらいかもと思いますが、オフサイドルールと呼ばれる改行と…

Alexa...アレクサ?

Amazon Echo Dot (2nd Gen.)を買いました。日本では招待制購入みたいですが、米国では有り余っているのか値引きして$30になった上、オーダーしたらFree-2day指定のはずが翌日届きました。当然英語版ですが、いきなり日本語化します。 箱から出してmini-USB電…

続 keyof T

in keyof T - まさたか日記 keyof Tを用いて連想配列でアクセスする際の縛りを前に書きましたが、もっとスマートな書き方を思いついたのでメモ。 test ('power of keyof', () => { function checkObject<T>(props: T): { [N in keyof T]?: string } { return Ob</t>…

High Sierraでgit不具合

日本での週末、まだ時差ボケですごく早朝に起きてしまう。 WEB見ててもSierraの時のようには悲鳴があがってない気がしたので、特に検証もすることなくHigh Sierraにアップグレードしました。噂のAPFSなる新ファイルシステムに何のためらいもなく変更されてい…

.d.tsをどうつくるか

Angularが教えてくれた。 TypeScriptの学びの中で、他のライブラリの型情報をどう手に入れるかは説明されているのだけど、ライブラリとしてどのように型情報を提供するのかはあまり説明されていない。ECMAScriptで書かれたライブラリに後付けでindex.d.tsだ…

React v16、Enzyme v3

昨日から日本に来てます。 facebook.github.io さて、炎上の末にライセンスがMITになったReactのv16がリリースされたと同時期に、Enzymeもv3がリリース。v3からsetupに変化がありました。 Working with React 16.x · Enzyme 説明とおりにしたけど動かねー。C…

TypeScriptでReactのライブラリを作りました

TypeScriptの勉強が嵩じて、一個、Reactのフォーム画面を作るときのめんどくさいところをまとめた小さなライブラリを作りました。 github.com 何がめんどくさいと思っていたかというと、 フォームの一時的状態をどこに持つか悩む。Reduxストアに持つのは大げ…

in keyof T

TypeScript 2.1 · TypeScript このTypeScript2.1で追加されたという keyof演算子をうまくつかうと、オブジェクトのプロパティを縛るのに有用でした。 test ('power of keyof', () => { // 返値のin keyofという受け方が今回の話題。今回Nは捨て型だけど、使…

関数オーバーロード

Functions · TypeScript 上記URLの最後、関数オーバーロード(記事のOverloads項目)なる言語仕様について。まずは以下のようなのがあったとします。 // .tsxファイル まずはこんなのがあったとします。 import * as React from 'react'; type P = { message…

prop-typesか、それに代わる何かが必要な件

これまでReactコンポーネントを書く時、コンポーネントの使われ方を縛るためにprop-typesを用いて動的なチェックをしていました。TypeScriptでは代わって静的な型チェックを利用してprop-typesを使わずとも利用方法を縛るということになってます。しかし、け…

Interfaceのメンバ競合の問題

import * as ReduxActions from 'redux-actions'; import * as Redux from 'redux'; // 型の競合エラーがでる interface ExAction extends Redux.Action, ReduxActions.Action<string> {} 現実感の無い実験のためのこのコードは、今日時点では残念ながらコンパイラを</string>…

The hidden power of Jest matchers

medium.com 素晴らしい記事。これらの「The hidden power」を知らず、expect(rec.prop).toBe(val)の組み合わせをプロパティの数だけ並べてましたよ。 function fn() { return { a: 1, b: true, c: 'hello', d: { d1: 2, d2: false }, e: 3, f: 4 }; } // 今…