スキップしてメイン コンテンツに移動

投稿

多分週刊チラシの裏 (Oct 12 - 18, 2020)

プログラミング言語のエネルギィ効率性おなじみ Computer Language Benchmark Game にある言語のうちプロプライエタリな Smalltalk を除く 27 言語の、時間効率性と空間効率性に加えて「エネルギィ効率性」を検証したという研究。結果は大方の予想を外れない (コンパイラ言語 - VM 言語 - インタプリタ言語の序列) のだが、言語毎によって単位時間あたりのエネルギィ効率 (換言すると CPU 最適化性能) が異なるので「速ければより省エネ」とは必ずしも言えないことや、最大メモリ消費量は言語のパラダイムによって大方が決まり、エネルギィ効率とはほとんど相関がない (ので Java でもエネルギィ効率は高い) ことなど面白い事実が見られる。『アメリカのインターネット』の終焉1994 年に Netscape が設立されたとき、世界にはおよそ一億台の PC があり、その半数は合衆国にあった。 WWW はスイスで開発されたしコンピュータは英国の発明だが、インターネットは米国製だった。 米国の企業がその課題を与え、重要な製品とサービスを作り、規制や言論は米国の立場、文化、法が支配した。 (引用者訳)合衆国政府による TikTok 分割騒動に寄せての現在と未来のインターネットの話。今日のインターネットの利用者のうち 80 - 90% は米国外の住人である。中国のスマートフォン台数は米国と欧州を合わせたよりも多く、ソフトウェア・スタートアップの半数はシリコンバレーの外で起きている。テクノロジーは規制産業になったが、その規則はもはや合衆国の一存では決まらないのである。まつもとゆきひろのツイッターを見てRuby使うのをやめようと思ったRuby の原開発者にして「寛大なる就寝独裁官 (BFDL)」の Twitter における言動が差別主義とは言えないまでもマイクロアグレッションに満ちていたので製品としての Ruby にも悪印象がついたという話。不要に攻撃的な人やコミュニティから距離を置く理性は心身の健康のためにも重要である。FTP のフェードアウトChrome をはじめとする Web ブラウザにおいてファイル転送プロトコル (FTP) のサポート終了が迫っていることに寄せて、半世紀に渡ってインターネットの主流であり続けたサービスの歴史の概説。MIT の院…
最近の投稿

多分週刊チラシの裏 (Oct 04 - 11, 2020)

Hacktoberfest が低品質 Pull Request 祭にDigitalOcean が例年開催している Hacktoberfest は GitHub 上にある公開レポジトリへの PR 4 個毎に特典 T シャツを 1 枚進呈するという OSS 活動参加促進キャンペーンだが、今年は事情が違ったらしい。大量のスパマーがこれまた大量の低品質 PR を其処此処のプロジェクトに送りつけたために大混乱が生じたとのこと。 問題は GitHub 上の全公開リポジトリが対象である点で、あらゆるプロジェクトがスパムの標的になる可能性がありながら各リポジトリメンテナの取れる手段がオプトイン / オプトアウトの別を問わず存在しなかったことである。GitHub は当座の対策として非コントリビュータからの PR 作成を一時的に制限する機能を実装した。DigitalOcean は混乱について謝罪し、同キャンペーンへの参加をリポジトリメンテナがオプトイン方式で選択できるように改めた上、メンテナが “hacktoberfest-accepted” とラベル付けした PR のみをキャンペーンの有効な業績と見做すように変更を行った。1これらの対策により現在は混乱も鎮静化しているが、これまで広く円滑に行われてきた行事が外乱によって厳密な方向へ向かうのは牧歌的な時代の終わりを感じさせる。日本でトロツキスト狩りが進行中政府から独立した諮問機関である日本学術会議が推薦した会員 105 名の内 6 名の任命を菅義偉首相が拒否したという事件。日本学術会議の根拠法である日本学術会議法 7 条 2 号は会員の任命について「会員は、第十七条の規定による推薦に基づいて、内閣総理大臣が任命する。」としている。「—任命できる。」ではない。菅は拒否権の根拠のみならずその動機についても説明を拒否しているが、内閣府から具申があったとのことなのでつまり本人に動機はないか、あるいは同意して盲判を押したようである。 拒否された学者はいずれも学術会議一部 (人文系) に属するはずだった以外はコネクションが見られず、過去に安倍政権の政策に反対意見を唱えたことがあるのが目をつけられたのではと推測されている。日本学術会議側からは事務局長談話として抗議が出ている他、米論文誌である Nature / Science および欧米の大手マスメ…

多分週刊チラシの裏 (Sep 28 - Oct 04, 2020)

Chrome Web Store が有料 Chrome 拡張の取扱を終了Chrome Web Store で提供されている有料 Chrome 拡張及びアプリ内課金 API の両方が 2021 年 1 月いっぱいで廃止される。 開発者はそれまでに代替となるサードパーティの課金 API に移行し、購入済ライセンスの移行手段も用意する必要がある。この決定の発表時点で新規の有料ないしアプリ内課金のある Chrome 拡張の新規登録は終了している。実際のところ 2020 年 3 月時点で既に「一時的に」停止されており、その措置が恒久化されただけとの由。シェルスクリプティングには長いオプションを使え「短いオプション (e.g., -x) はコマンドライン上での略記である。スクリプトにおいては自分や将来の同僚のためにも長いオプション (e.g., ---do-something) を与える方が理解が容易だろう」という主張。異論の余地なく正論である。CobWeb - COBOL to WebAssembly CompilerCOBOL から WebAssembly へのコンパイラ。いやマジで。Cloudflare が何を思ったか同社のサーバレス環境である Workers に COBOL 対応を追加した際の成果物である。 COBOL から C へのトランスレータである GNU COBOL と C コードをコンパイルして WebAssembly を出力する Emscripten から成っており、他の言語に比べて軽量なバイナリを生成するとのこと。「ウチではそんな風にはやらないんだ (“We don’t do that here”)」昨今ソフトウェア開発のコミュニティでも Code of Conduct を用意するところが増えてきたが、コミュニティの文化を明文化するのは難しい。 長大な「べからず集」は息苦しいし、肯定的なガイドラインは時に抽象的で実効的に使えない。問題となるようなふるまいの動機が善意であった場合は特にそうだ。仮に優れたガイドラインがあっても、それに基いて人を実際に咎めるのは骨が折れることである。初中やればコミュニティ内でも疎まれる。 話の分かる相手ならそれでもまだ説得する意義もあるが、Web 上の対話で当事者双方が納得し合ったことがあるだろうか。皆無ではなくとも見苦しいフ…

多分週刊チラシの裏 (Sep 21-27, 2020)

Killed by MozillaMozilla がディスコンにした製品およびサービスのリスト。COVID-19 パンデミックで収入が激減し全社の四分の一にあたる従業員の解雇と収益を得られる製品への集中に踏み切った Mozilla Corp. の最初の犠牲はノートアプリ Firefox Notes とファイル送信サービス Firefox Send となった。過去には第三のモバイル OS を目指した Firefox OS とか Mac ネイティブな Gecko ベースブラウザ Camino など懐かしい名前も見られる。ちなみに元ネタは Google が終了したサービスをリストしている Killed by Google で、こちらは 2020 年 9 月 26 日現在 205 個の製品とサービスが挙がっている。Firefox 81.0 リリースノートMozilla Firefox 81.0 が Release チャンネルに公開された。最大の新機能はメディア再生のキーボードないしヘッドセットからの制御である。要はバックグランドで再生している YouTube タブを AirPods から一時停止できるようになった。Developer Tools における色覚異常シミュレーションの改善やブラウザ標準 audio/video 要素のアクセシビリティ改善なども含まれている。Facebook が自社プラットフォーム上での複数国による組織的政治工作を認識しながら放置していたFacebook が大量の偽アカウントを動員した政治工作を認識していながら、特に小国のそれに対して対策を放棄していたという内部告発。元 Facebook のデータ科学者である Sophie Zhang 氏の告発によれば、ホンジュラスで大統領派の工作が行われていることを氏が報告してから実際に対策が為されるまでに 9 ヶ月、アゼルバイジャンでの与党の工作を同様に報告してから組織的な調査が始まるまでに実に 1 年を要したという。本来この手の濫用に対応するはずの専任チームは濫用の圧倒的な割合を占めるスパム対応にかかりきりで、政治工作については対象が合衆国か西欧である場合を除いて積極的に行動せず、小国の民主主義は Zhang 氏の空き時間を利用した片手間の対応にかかっていたとのこと。Rust じゃダメな理由近年人気が出てい…

多分週刊チラシの裏 (Sep 14-20, 2020)

自分にとってのニュースは自らまとめるしかないと思い至ったので興味深かったものをまとめる。Moment.js 開発終了JavaScript における日時処理の定番であった Moment.js の開発がメンテナンスモードへの移行を宣言した。歴史のあるライブラリであり、オブジェクトが可変で flux アーキテクチャと相性が悪いとか、自前の国際化リソースが全部バンドルされているので昨今の Dead Code Elimination (a.k.a. Tree-Shaking) を伴うバンドラでもサイズが縮まらないといった問題が指摘されていた。 互換性を保ったまま問題を解決できる見込みがなく、非互換な新バージョンをリリースして移行の混乱を生むよりは設計段階で問題を解決している別ライブラリに移行せよとのこと。参考に個人的な見解を述べると、代替候補として挙げられている dayjs はお勧めしない。タイムゾーンのサポートなど多くの場合に必要な機能がプラグインで実現されており、それらプラグインは dayjs オブジェクトにメソッドを実行時に追加したり差し替えたりするので TypeScript や flow の型定義と一致しなくなるためである。結局利用するプラグインを適用したバージョンの型定義ファイルを自分で作る羽目になるのだ。dayjs に限らず TypeScript や flow はプラグイン機構を持った JavaScript ライブラリと相性が悪いので、オールインワンなモジュールを採用する方が良い。代替候補の中では最初に挙がっている Luxon が無難である。20年来の銀英伝ファンからみた今回の揉め事「銀河英雄伝説」という古いスペースオペラ小説を原作とするアニメについて以下のツイートが炎上した件: 銀河英雄伝説のリメイク。3期以降も続くのかな。もしそうなら、男女役割分業の描き方は変更せざるをえない気がする。旧アニメのままだと、さすがに時代にそぐわない。作品として大変に面白いのは踏まえたうえで。…なんてことを書いたら炎上するかな。 — Shotaro TSUDA (@brighthelmer) September 11, 2020どう読んでもただの感想だが、話題がジェンダーかつ発言者の津田正太郎教授の所属が「社会学部」ということで表現の自由戦士の標的にされたもの。「社会学者1が『…

私家版 TypeScript 抽象データ型表現

TL, DR;読んだ: TypeScriptの異常系表現のいい感じの落とし所 | Developers.IO方向性はとても同意できるがデータがオブジェクトである積極的な理由がないのが分かる。今日び new Success(...) もあるまい。 構造的型付が原則なんだから Namespace Import する前提で型定義と関数を公開してしまった方が単純な FP スタイルで書けて勝手が良い。そういうわけで僕ならこう書く。使い方import*as Result from './result';functiondoSomethingFailable(): Result.T<number, Error> { const r =Math.random(); return r <0.5? Result.success(r): Result.failure(new Error('Something failed.'))}functionorDefault<V>(result: Result.T<V,unknown>, defaultValue: V): V { return Result.match(result, { failure() { return defaultValue; }, success(value) { return value; }, });}const result = doSomethingFailable();console.log(orDefault(result, NaN));// Prints a number < 0.5, or NaN. 自明な flatMap / map がないのでより低水準な変換として match を提供しているが、もちろん型の利用者が合意できるなら Optional に類する定義を採っても良い:functionmap<V, U, E>(f: V => U, result: Result.T<V, E>): Result.T<U, E> { return Result.match(result, { failure(value) { return Result.failur…

購読ニュースフィードの整理

ほとんど Web のメディアにしか触れない情報弱者なのでニュースフィードの選択は大事である。社会不安が増大している時分にタブロイド的な話題で怒りを転がすのは生産的でないので整理した。削除したものEngadget Japanese技術系ニュースサイトの筆頭格である Engadet の日本語版、のはずのもの。原語版の翻訳は少なく抄訳であることも多いが問題はむしろ転載元にないライターの編集で、意図的に地名が除かれた COVID-19 という名称を無視して 「中国武漢を震源地とする新型コロナウィルス」と書き連ねる (ものによっては COVID-19 と無関係な記事にも捩じ込む) 1/2/3/4/5だとか、The Verge が「YouTube が中国共産党への中傷を含むコメントを削除」と報じた見出しを批判のコメントを自動削除」に書き換えるだとか印象操作が露骨になってきたので読むのを止めた。ガジェットのレビューを別にすればほぼ転載であり、どうしても日本語で読みたいなら同じ Verison Media でも TechCrunch Japan のライター陣の方が理性的である。はてなブックマーク自身をソーシャルブックマークサービスと思い込んでいる炎上ニュース一言掲示板。 インセルとゲーマーゲーターの炎上会場に成り下がった感がある。技術系の話題はまず上位に来ず、稀に上がってきたときには二日遅れである。要するにスラドの轍を踏んでいる。追加したものThe Register日本語の技術ニュースサイトの転載ソースその1。Meltdown / Spectre 脆弱性のリーク報道で知った人も多いと思う。英国拠点だからか知らないが見出しが駄洒落だったりふざけていることが多い。The Verge日本語の技術ニュースサイトの転載ソースその2。Vox Media の技術系ニュースサイト。BLM 運動や多様性など業界の社会的な関心事についても記事がある。Hacker Newsド定番だが最近まで購読していなかった。Slashdot に規律とユーザの節度を加えるとこうなる、といった体。

BuckleScript が ReScript に改称し独自言語を導入した

Via: BuckleScript Good and Bad News - PsellosOCaml / ReasonML 文法と標準ライブラリを採用した JavaScript トランスパイラである BuckleScript が ReScript に改称した。公式サイトによると改称の理由は、Unifying the tools in one coherent platform and core team allows us to build features that wouldn’t be possible in the original BuckleScript + Reason setup.(単一のプラットフォームとコアチームにツールを統合することで従来の BuckleScript + Reason 体制では不可能であった機能開発が可能になる)とのこと。要は Facebook が主導する外部プロジェクトである ReasonML に依存せずに開発を進めていくためにフォークするという話で、Chromium のレンダリングエンジンが Apple の WebKit から Google 主導の Blink に切り替わったのと似た動機である (プログラミング言語の分野でも Object Pascal が Pascal を逸脱して Delphi Language になったとか PLT Scheme (の第一言語) が RnRS とは別路線に舵を切って Racket になったとか、割とよくある話である。)公式ブログの Q&A によると OCaml / ReasonML 文法のサポートは継続され、既存の BuckleScript プロジェクトは問題なくビルドできるとのこと。ただし現時点で公式ドキュメントは ReScript 文法のみに言及しているなど、サポート水準のティアを分けて ReScript 文法を優遇することで移行を推進していく方針である。 上流である OCaml の更新は取り込み、AST の互換性も維持される。将来 ReScript から言語機能が削除されることは有り得るが、OCaml / ReasonML からは今日の BuckleScript が提供する機能すべてにアクセスできる。現時点における ReScript の Reason v3.6 との差分は

Ruby 3.0 は2020年内リリース

via: Hacket Newsプログラミング言語 Ruby のリポジトリにバージョン番号を 3.0 に上げる変更がコミットされた。Ruby の新版は例年クリスマスにリリースされており (cf. Ruby Releases)、このままいくと2020年12月25日にリリースされるはずだ。Ruby 3.0 は Ruby 2.0 比で三倍の高速化を果たす “Ruby 3x3” として、マイナーバージョンアップ毎に GC の改良をはじめとした種々の性能向上策が導入されてきた。 2018年の 2.6 に至って JIT コンパイラが試験的に導入されたこともあり、現時点は Ruby 2.0 と比較して二倍の性能は得られているとのこと。主要なベンチマーク対象である SNES エミュレータの optcarrot も同程度。年末までどれだけ目標に漸近できるかが楽しみである。なお Ruby 3.0 ではキーワード引数に非互換な変更がある。2.7 時点で警告が出るようになっているので移行には注意のこと。

LIBLINEAR 2.41 で One-class SVM が使えるようになったので Perl から触ってみよう

改訂 (Sep 15, 2020): 必要のない手順を含んでいたのでサンプルコードと記述を修正しました。CPAN に Algorithm::LibLinear 0.22 がリリースされました (しました。) 高速な線形 SVM およびロジスティック回帰による複数の機械学習アルゴリズムを実装したライブラリである LIBLINEAR への Perl バインディングです。利用している LIBLINEAR のバージョンが LIBLINEAR 2.30 から LIBLINEAR 2.41 に上がったことで新しいソルバが追加され、One-class SVM (OC-SVM) による一値分類が利用可能になっています (しました。)OC-SVM って何一値分類を SVM でやること。一値分類って何ある値が学習したクラスに含まれるか否かを決定する問題。 HBO の「シリコンバレー」に出てきた「ホットドッグ」と「ホットドッグ以外」を識別するアプリが典型。「ホットドッグ以外」の方は犬でも神でも一つの指輪でも何でも含まれるのがミソ。二値分類の場合正反両者のデータを集める必要があるのに対して、一値分類の学習器は正例データのみしか要求しない (ものが多い。) 主な用途は外れ値検出で、もちろんホットドッグやホットドッグ様のものを検出したりもできる。使い方手順自体は他の二値ないし多値分類問題と同じです。つまり、訓練パラメータを決めて訓練データセットで訓練してテストデータセットで確度を検証して十分良くなったらモデルを保存するといういつもの流れ。訓練パラメータuse5.032;useAlgorithm::LibLinear;my$learner = Algorithm::LibLinear->new( epsilon => 0.01, nu => 0.75, solver => 'ONECLASS_SVM',); solver => 'ONECLASS_SVM' が一値分類用のソルバです。LIBLINEAR の train コマンドで言うところの -s 21。 OC-SVM の良いところは (ハイパー) パラメータが少ないことで、2個しかありません。epsilon は収束判定に使う指標で、nu は外れ値の見込の割合です。訓練useAl…