npm-check-updatesからupdatesに移行しました。
npmのコマンドを打っていると、「おまえが使ってるパッケージに脆弱性あり。npm auditで調べろ」という警告が出ていました。で、調べてみると、全部がnpm-check-updatesの関連でした。アップデートの目的の1つは脆弱性の解消なのに、そのチェッカーが脆弱っていうのは笑えない話です(npm-check-updatesはめったに使わないし、攻撃経路は限られているような気はしますが、だからと言って脆弱性を放置したくはないのです)。
見てみたら、npm-check-updates自体、既に更新がほとんどされなくなってました。これじゃあ仕方ないですね。
そして、issueも立ってました。
続きを読むWindowsからLinuxへの移行を試してみた
前提
- 2018年12月の試行の結果です。
- Ubuntu Mate 18.04 LTSに、Windows 10の環境を可能な限り移行してみます。
- PCは両OSのデュアルブートです。
- 個人的な都合で、Microsoft Officeの文書を受け取り、オフラインでも扱いたいので、完全な移行は考えていません。
- 「~があります(あるらしいです)」ではなく、実際に試した結果だけ書いています。
Electronアプリケーションの翻訳(l10n)
Electronアプリケーションはクロスプラットフォームなのですから、可能なら世界各地で使えるようにしたいものです。そこで必要となるのが国際化(internationalization, i18n)と各言語対応(localization, l10n)。
文言からはじまってRTL(アラビア語など右から左へ書く言語への対応)、数字や日時の表記など色々とありますが、とりあえずここではアプリケーション上のメッセージの翻訳についてだけ考えます。
続きを読むHTMLのカスタムデータ属性(data-*)へのアクセス
小ネタです。
HTML5でカスタムデータ属性(いわゆる「data-*」属性)が導入されましたが、JavaScript(やTypeScript)からのアクセスの際のキー命名規則については、MDNの記述がやや微妙です(ここでは原典として英語版を参照しています)。
続きを読むTypeScript+ElectronでUDPポートで受信待ち受け
タイトルのまんまです。ただし、サンプルコードではなく実際的な話です。
Electronでsocketを使う時は、main
プロセスでNode.jsの機能を使うことになります。私の場合、UDPを扱いたかったので、 dgram を使います。
私が必要だった機能は、次のようなものです。
- 特定のIPアドレス(NIC)とポートの組み合わせに対して、受信待ち受けを開始・終了できること
- IPアドレスとポートの組み合わせが既に使われている可能性があるため、その場合は利用者にエラーを通知できること
- 複数のポートが一括で開けること(※実際には、今は使っていません。つまり1ポートだけ)
この場合、受信待ち受けを開始するには、1つの組み合わせに対する受信待ち受けをPromise
にして、それを束ねてPromise.all
で実行し、then/catchで結果に基づく処理を行えばよさそうです。
TypeScript最大のハマりポイント:this
TypeScriptは、全体としては整然として、素直に動作します。しかし、たまに意外な落とし穴があります(自分もはまったのですが、その時のコードが残ってませんでした。すみません)。
「なぜか型がundefinedになっている」などの問題が起きるようなら、次のTypeScript公式の文書を参考にするといいでしょう。
重要なのは「メソッドを参照だけして呼び出しが後、という形式はヤバい」ということです。それをアロー関数などで回避すれば、意味不明のトラブルに見舞われる頻度は下がると思います。
なお、参考として、以下に2016年12月1日版の原文の簡易版の和訳を示します。
(※注意)訳質が怪しい部分があります。誤りに気付いた場合、コメントなどいただければ幸いです。
続きを読むTypeScriptを使ってみて「使うべき」と思った話
最近、ずっとブログを休んでいましたが、そろそろ再開。ただ、以前のような話は少なくなる見込みです。
個人的にTypeScriptとElectronでアプリケーションを書いています(Eto.Formsもいいのですが、プラットフォームごとの挙動の違いの扱いがつらいところです。GUIがシンプル、かつ、マルチプラットフォームでも主な対象がWindows、というケースなら向いていると思います)。
とりあえず、今回はポエム的に印象だけさらっと書いておきます。
続きを読む