IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

Vimでカーソルキーを使いたくなる時

vim

Ctrl+v -> j -> Shift+i のパターンで、今処理した場所と、別の場所で同じことをするとき。

IIJのeSIM対応データ通信サービスの開始

メディアでは既報であるが、7/18よりIIJがeSIMのサービスを始める。 www.appbank.net www.itmedia.co.jp IIJでは、6/28に技術レポートを出していて、eSIMの(技術)解説があった。 https://www.iij.ad.jp/dev/report/iir/pdf/iir_vol43_focus2.pdf 2019年の夏…

Pythonのifは文と式の2つがある

気になったのでメモ。 世の中的には、1行で書くifと言うらしい。 Googleのサジェスト 文のif 8. 複合文 (compound statement) — Python 3.7.4rc2 ドキュメント 式のif 6. 式 (expression) — Python 3.7.4rc2 ドキュメント 英語だとshort hand ifと言うらしい…

VSCodeでNeoVimを使う

キャプチャがある正規表現 このようなキャプチャがある置換ができませんでした。 サイトにissueがあって解決されていました。これを見ると、VSCodeVimの正規表現はJavaScriptエンジンを流用しているらしいです。そこで、NeoVim連携が追加されて、その連携を…

戻り値の型によって結果が変わる例

> :{ *| foo :: MonadThrow m => Int -> m Int *| foo x = (if x == 0 then throwM RatioZeroDenominator else return x) *| :} > :t foo foo :: MonadThrow m => Int -> m Int IOの場合 > foo 1 :: IO Int 1 > foo 0 :: IO Int *** Exception: Ratio has ze…

Cockroach DBを使ってみる

www.cockroachlabs.com Windows版入手先画面 バイナリ サーバ起動 PS C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64> .\cockroach start --insecure --listen-addr=localhost * * WARNING: RUNNING IN INSECURE MODE! * * - Your cluster…

PowerShellの入門書?

監視の本なのですが、PowerShellの入門書としてコンパクトにまとまっている気がしました。 ネットワーク監視 最強の指南書 (日経BPムック 日経ITエンジニアスクール)作者: 日経NETWORK出版社/メーカー: 日経BP発売日: 2017/05/18メディア: ムックこの商品を…

hs-bootファイルとは何か

Haskellのライブラリのコードを見ていると、まれに、hs-bootという拡張子がついたファイルを見かけることがあります。なんだろうと思っていたのですが、モジュールインポートで相互参照を解決するために使用するようです。 10.8. Filenames and separate com…

比(ratio)、割合(proportion)、率(rate)をきちんと区別する

英語 定義 例 補足 比 ratio 分子分母が別々なもので、互いに相手を含まない 一般には次元がある BMI 性比 割合 proportion 分子が分母に含まれる分数 次元はない 値はゼロから1の間 有病率 打率 死亡率 「率」と言うが、意味は「割合」であることに注意 率 …

比(ratio)、割合(proportion)、率(rate)をきちんと区別する

英語 定義 例 補足 比 ratio 分子分母が別々なもので、互いに相手を含まない 一般には次元がある BMI 性比 割合 proportion 分子が分母に含まれる分数 次元はない 値はゼロから1の間 有病率 打率 死亡率 「率」と言うが、意味は「割合」であることに注意 率 …

ghciを使ってざっくり性能測定

カジュアルにghci上で性能測定をしようと思ったのですが、少し工夫が必要なようです。 ghciでは:set +sすることで性能を測ることができます。。 Haskell function execution time - Stack Overflow ghci上での計測なので、表示する処理も計測に含まれしまい…

filter + map = mapMaybe

ghcでfusionしてくれそうな気もするが、どうなんだろう。 参考リンク Code smell: Boolean blindness | RV Blog Data.Witherable 11.1. Language options — Glasgow Haskell Compiler 8.9.0.20190425 User's Guide

Firefoxのアドオンを作ってみた

あらかじめユーザ登録をして、ログインをしておく。 登録サイト Submit Your First Add-onを選択 配布方法の選択 Firefox Add-onsに登録するのでOn this siteを選択しContinueを選択、次の画面で、Select a fileを選択し、作成したAdd-onをアップロードする…

関数型言語に対するヒトラーのリアクション

www.youtube.com ここら辺がツボにはまるらしい。 https://www.youtube.com/watch?v=ADqLBc1vFw#t=0m15s https://www.youtube.com/watch?v=ADqLBc1vFw#t=1m38s https://www.youtube.com/watch?v=ADqLBc1vFw#t=2m10s

Windowsのコマンドプロンプトの小ネタ

コマンドプロンプトをたくさん開いたときに便利そう。 titleでコマンドプロンプト自体のタイトルを変更 colorで文字色、背景色を変更 たぶん探すといろいろあるはず。

HLintでよく指摘される内容

今作成しているライブラリでHLintを実行してみました。傾向としては、冗長なdoと冗長なカッコの指摘が多いようでした。 src/Database\SQLServer\Internal\Tokens.hs:626:1: Suggestion: Use newtype instead of data Found: data ROW = ROW{columnValues :: …

io-streamでストリームを変更する

Generatorを作る必要があります。 以下のようにしてしまうと、固定値を永遠に流すストリームになってしまいます。 badFunc :: InputStream Int -> IO (InputStream Int) badFunc s = do v <- S.read s case v of Just x -> makeInputStream $ return $ Just …

ファイルに行番号をつける

io-streamでinputstreamを作りつなげるだけ。 is-stream sample

is-streamでファイルコピー(デバック付き)

io-stream sample 3 (copy) デバック部分はコメントアウトしています。

CoqからHaskellのコードを生成する

Extractionという機能を使うとできるらしい。Coqで証明してHaskellで動作させる感じなのか。 coq.inria.fr 単純な方の定義 Inductive FBB : Type := | Foo | Bar | Buzz. Require Extraction. Extraction Language Haskell. Extraction "C:\work\FBB.hs" FBB…

Haskellのモナドを圏論的に理解するスライド

数学でいうモナドの定義と、Haskellで普段使っているモナドの定義は、一見違うように見えるが、実は、クライスリカテゴリを通じて、同じだという話(雑な理解)。 http://emorehouse.web.wesleyan.edu/research/talks/monad_rosetta.pdf the seemingly diffe…

Kindの入門記事

diogocastro.com 記事を読むには以下のextensionの理解が必要。 KindSignatures haskell - Kind Signatures - Stack Overflow ExplicitForAll MagicHash haskell - What are hashes (#) used for in the library's source? - Stack Overflow ConstraintKinds…

ラムダ式があのように表現されている意図

ラムダ計算を学ぶときに最初に読んでおくとよいと思った。(というか自分にとっては今が最初だけど) sites.google.com "f(x)"という表記法の欠陥は、高校の数学までではほとんど表面化しませんが、 大学に入ってから定義域や値域が関数の集合になるような …

分った積りの積分定数

例えば、 数学の不定積分の説明 不定積分|もう一度やり直しの算数・数学 不定積分とは、積分の範囲をどこからどこまで、という範囲を指定していませんので、積分の範囲が不定になっている積分のことです。 (中略) ※記号のCは積分定数なのでその中身はいくつ…

variantの小さなサンプルを書いてみた

extensibleパッケージのvariantの使い方を確認するために小さなサンプルを書いてみました。 やりたいことは、 data A = AX | AY deriving (Show, Eq) data B = BY | BZ deriving (Show, Eq) と定義したときに、AとBを合わせたデータ(構造)を(簡単に)定義…

catamorphism, anamorphism, histmorphism, dynamorphismの概要をつかむ記事

45deg.github.io 個人的に慧眼だったのは、不動点の節の説明での発想の転換の部分でした。 そもそもリストを関手で表現したいならば、こう定義した方がよさそうに見えます。 (2) List:=1+Int×List しかしこれでは定義自身にList が含まれる、いわゆる再帰的…

Lensの全体像を簡潔に理解するための記事

LensのOpticsはいろいろあって混乱してくるけど、この記事は、いい感じに細かいところを捨象しているところが素晴らしい。 titech-ssr.blog.jp

Windowsドライバ開発のメモ

micro kernel 関数呼び出しではなく、message passing WDFが隠蔽化 Driver Model DM KMDF UMDF (user modeで動く) reflector ハリウッドの圧力? Windows Driver Kit 開発ツールは最新版を使わないとはまる。 開発は敷居を高くしている。EV証明書とかが必要…

extensibleの小さなサンプルを書いてみた

モナドのスタックの取り回しが面倒に感じているので、そろそろ何とかしたいと思っていました。ここでようやく重い腰を上げて、extensibleにチャレンジです。ウェブ上にある情報は、複雑だったので、もっと小さなサンプルを書き下してみました。 mtlとcompati…

NTextを指定してもTDSプロトコル用はvarcharになっている

なんでだろう? using System; using System.Data; using System.Data.SqlClient; namespace ConsoleApp1 { class Program1 { static void Main(string[] args) { using (SqlConnection conn = new SqlConnection()) { conn.ConnectionString = "Server=DESK…