htsign's blog

ノンジャンルで書くつもりだけど技術系が多いんじゃないかと思います

VSCode for Windows で OCaml の言語サポートを有効にする

Cygwin 入れたくない勢です。 WSL環境内で使う分にはややこしいことしなくても Linux用の手順でOKですが、以下はあくまでWSL外のWindows環境で OCaml の言語サポートを有効にしたい場合に踏みたい手順です。 前提 WSL2 有効化済み VSCode 1.76.2 opam 2.1.2 …

F# で構造的部分型のメソッドを呼び出す方法

F#

これどっかで書いたような気がしてましたが、少なくともこのブログでは書いたことなかったようなので、すごく久しぶりに生存報告がてら書いてみようと思います。 F# は基本的に公称型で表現される言語なのですが、OCaml を直接の親に持つ言語だからなのか、…

Linux版Steam の Portal 2 を日本語環境でプレイする

Pop!_OS 20.10 にて。 日本語でプレイしようとしたら文字が全く表示されない現象に出くわしたため、その解決手順をメモ。 1. fontconfig 用の設定ファイルを作成します。 $ mkdir -p ~/.config/fontconfig $ vim ~/.config/fontconfig/portal2.conf 2. なん…

ノートPCをポチりました

12月からフルリモートとなることが決まりました。 自宅ではどうせ集中できないだろうと思うので、出先で仕事ができるようにとノートPCを買うことにしました。 なので、昨日1は外でも使える *nix がプリインされてるノートPCを物色していたわけです。 初めは …

Wandbox のエディタ設定を言語ごとに保存して自動で切り替えする UserScript

表題の通り。 Wandbox さん非常に便利なんですが、言語を切り替えてもエディタ設定は切り替わらないんですよね。 例えば F# はタブ文字をインデントに使えませんが、Go はタブ文字でのインデントを推奨しています。 これら言語を切り替えるときに設定も都度…

InoReader 向けに、はてブ integration を追加する UserScript

こんな感じになります。 「動けばいい」をモットーにクソ雑実装。 暇すぎて他にすることなくなったらリファクタリングする可能性が微粒子レベルで存在します。 gist.github.com

Vim script で flatmap

Vim

しょーもない話ですが最近になって Vim script を書き始めたので。 全く知らなかったのですが、 Vim 7.0 あたりから map 関数や filter 関数が実装されていた模様。 また、 Vim 8.0 からはラムダ式が、 8.2 からは UFCS っぽいもの1が導入されたそうです。 m…

scoop cleanup * はいいぞ

Windows を開発機にしているユーザーの100%が導入している1と言われる Scoop ですが、インストールされているアプリケーションのアップデートが溜まってくると割とストレージを圧迫します。 そんなときは scoop cleanup * として過去のバージョンを消してし…

nim / rust / pony の速度比較

※ 最初に申し上げておきますが、とても浅はかな比較です。 Rust は言わずもがな、「最も愛されているプログラミング言語」4年連続1位1の言語です。 データの生存期間を型で管理することで、GCなしにメモリセーフなプログラミングを可能にしてますね。 トレイ…

Promise を再帰させるとどうなるか

ただの興味本位です。 以下のコードを各環境で動かしていきます。 const p = n => new Promise(resolve => { console.log(n); resolve(p(n + 1)); }); p(1); なるべく公平を期すため、ブラウザの場合は about:blank にて実行します。 環境 PC1: 種別 詳細 OS…

URLからトラッキングのアレを削除するやつ書いた

モチベーションは Neat URL がだいぶ前から動かなくなっていた*1から。 似たようなアドオンも軒並み死んでいるように思うので自分で作りました。 とりあえず単純なトラッキングタグ(って言うのかな?)は削除できるようにしてあり、最終的な目標としては Ne…

npm scripts で OS ごとに処理を分ける

npm scriptsに clean ってコマンドを登録しようとしたんですよ。 普通なら rimraf を使うところなんですが、 cleanの過程で node_modules ディレクトリも削除して綺麗にしたい。 かと言って npm i -g rimraf など、環境依存になるので以ての外。 rm コマンド…

git stash の tips

git stash、使ってますか? 作業中の内容を一旦別に追いやることで他のコマンドを阻害しなくなる便利なコマンドです。 git stashの詳細については、Qiitaやら各種ブログやらで説明していらっしゃる先人がたくさんおりますので、そちらにお譲りします。 tl;dr…

Visual Studio Code for Windows の Integrated Terminal に MSYS2 の fish を使う

fish、便利です。 当方は未だにWindows 8.1 UpdateなのでWSL1は使えません。 なので Git for Windows SDK をインストールして簡易的なシェル環境を構築してます。 これが pacman があるのでなかなか快適なんですね。 nodeもこれで入れられるのでchocolateyも…

式途中に null として評価されてしまうケースの回避方法

F#

F# の話題です。 let x = A().B.C.D とあるとき、もしA().B が null だったら? F# で定義した型は AllowNullLiteralAttribute 属性を付与するか Unchecked.defaultof<'a> を使用しない限り、たとえ参照型だろうが null になることはありません。 でもCLRの…

Java5 での開発のつらみをやわらげる tips

仕事で Java5 の案件がきました。 このご時世に Java5 とか負の遺産以外のなにものでもないですが、仕事なので仕方ありません。 拡張for文とか可変長引数とかアノテーションとかジェネリクスとか、それ以前と比べればかなりマシなものの、 現代的なプログラ…

Perl の range operator

これPerlerの皆さまからすれば「何を今更」な話かもしれませんが、個人的に驚いたので書きます。 Perlには範囲演算子というのがあって、他の言語でも度々採用されてる便利な演算子なんですが、 例えば my @nums = (1..5); とすることで 1 から 5 までの連番…

JScript(not JavaScript)のArrayに対するメソッド群を追加する超単純なポリフィル

今さらこんなコードを書くこと自体恥ずべきことだと思うのだけど、勤務先の業務システムがJSPで実装されており、クライアントサイドはレガシーなIEが想定されています(嘆かわしいですが、よくある光景ですね…) そしてこれまたよくある光景なのですが、秘伝…

はてブのコメントにつけたスターを見易くするグリモンスクリプトがはてブリニューアルにつき動かなくなったので修正しました。

表題の通り。 gist.github.com

Partial Active Patterns

F#

引数で受けた正規表現を評価して、ヒットしたら返します。 習作として作りました。 gist.github.com 使い方 アクティブパターンなので、パターンマッチの内部でリストから取り出すイメージですね。 マッチしなければ次のパターン(この例では| _ -> ()の行)…

はてブ見ててどのコメントにスター付けたかよく忘れるので

GreaseMonkeyスクリプトを書きました。 gist.github.com 使うと自分が付けた星は点滅するようになります。 以上。

F#のべき乗計算

現在F#の勉強を始めたところで、基礎的なところをぼちぼち習得している段階です。 演算子の話なんですが、F#にはOCamlの系譜だからなのか**演算子(べき乗)があります。 RubyやPythonなど、関数型の血を引いたいくつかの言語にも備わっている珍しくもない演…

全てのフレームを対象にするには

某大手工業系企業の新規開発プロジェクトに参画しているのですが、非常に悲しいことに社内ポータルが未だにフレームを使用したサイトなのです。 フレームを使うと容易にペインで分けたサイトを構築できるため、実用重視のエンタープライズ界隈で重宝されるの…

最近 Nemerle がマイブームです

私自身は最近知ったのですが、実は以前からある言語っぽいですね。 C#によく似た構文を数多く持ち、関数型言語によく見られる機能(パターンマッチングとかタプルとか)を言語レベルで実装しているのが特徴です。 型を静的にチェックできる強力なマクロもあ…

リンク化スクリプト

かねてからHatena::Let で公開 *1 していて、個人的にもかなり使っているスクリプトをGreaseMonkey用に書き直したのでそれも公開してみます。 https://gist.github.com/htsign/5eed5473a9e75c7c45f3a5571d7d0803/raw/convertTextToLink.user.js GreaseMonkey…

他の人がエントリに書いてた仕分けbatが冗長だったのでvbsにした

www.ken10blog.com 本当はC#とかでパパッと書いてしまうのが楽だけど、元ネタがバッチファイルなのでWindows標準で動くスクリプトという点でWSHを選びました。*1 PowerShellはローカルで気軽に動かすためにポリシーを変更する必要があるので却下。 Option Ex…

個人的によく使うWindowsコマンドまとめ

Twitterで戯れていたら流れで思いついたので唐突にまとめてみます。 「個人的によく使う」というのがミソで、ここに載っていないものは載せ忘れかほとんど使わないか存在を知らないものです。 載せ忘れは思い出し次第追記していきます。 基本 Win+Rで「ファ…

.NET Framework 3.5環境で nameof 演算子っぽいことする

最近仕事でこんな感じのメソッドを定義して使っています。 public static class Utility { private static Dictionary<string, string> exprCache = new Dictionary<string, string>(); public static string NameOf<T>(Expression<Func<T>> expr) { string exprString = expr.ToString(); string name; </func<t></t></string,></string,>…

Windows 10 Mobileでのユーザー辞書クリア手順

W10M端末におけるユーザー辞書(英語キーボード用)及び予測変換情報の初期化方法が思った以上に分かりにくかったのでメモがてらに。 画面上端から下へスワイプし、アクションセンターを表示します。 クイックアクション右下の「展開」をタップしてすべての…

以後は特に指定のない限りJSはES6記法で書いていこうと思います。

Intlオブジェクトというものを知りました。 国際化表記における各種変換を取りまとめるそこそこ大規模なオブジェクトらしい。 Collator DateTimeFormat NumberFormatの3つのサブオブジェクトを持つ模様。 それぞれインスタンス化して使用するっぽい。 (() =>…