IT練習ノート

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

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…

JavaParserを使ってみる

Javaのコードレビューをしていて、指摘事項の水平展開をする時に、エディタ等のgrepで検索して、類似の指摘箇所を探したりします。 ただ、それだと、複数行にまたがり相関をもった内容の抽出に手間がかかります。 例えば、前のプロジェクトでは、stream処理…

JOOXで要素をwrapする。

過去記事で、jooxを取り上げたました。これを案件で補助ツールとして使っています。一律にxmlを補正したい時や、xmlの記述がプロジェクトのルールに従っているかをチェックするためにつかっています。 JavaでjQueryライクにXMLを操作する - IT練習ノート た…

Javaのstreamで嵌る

IntStreamとStream<T>インターフェースに親子関係がない java.lang.AutoCloseable java.util.stream.BaseStream<T,S> java.util.stream.DoubleStream java.util.stream.IntStream java.util.stream.LongStream java.util.stream.Stream<T> そのために(?)、IntSteramに3</t></t,s></t>…

JavaでjQueryライクにXMLを操作する

github.com jOOXというライブラリを使えば良さそうです。 嵌ったところは DOCTYPEがあると読み込んでくれないので、その場合、自分でxmlファイルを読み込む必要がある。 childrenメソッドでセレクタでタグを2個指定するのは動かない模様。(findなら複数指定…

Unfoldの使いどころ

haskellのコーディングでfoldrは頻繁に使う印象がありますが。その双対(で、あってるのかな?)のunfoldは、あまり使わない印象があります。というか、使いどころのイメージがつかめませんでした。 この前、n進数間の変換に使えることに気づきました。 が、…

Data.BinaryのputとputByteString

ByteStringがBinaryクラスのインスタンスになっているので、putとputByteStringは同じものかと思ったのですが、差がありました。 Data.Binary > runPut $ put $ BSL.pack [0xFF,0xFE,0xFD] "\NUL\NUL\NUL\NUL\NUL\NUL\NUL\ETX\255\254\253" > runPut $ putLa…

Haskellのerrorで嵌る

次のような作りかけのコードを書いていました。errorの部分はあとで修正していくつもりでした。コーディングが進んで、errorの部分をコーディングする段階に来たのですが、show tの内容が出力されませんでした。 paramMetaData2TypeString_ (VAR tipe len) =…

Haskellの時間で嵌る

UTCTimeはDayと`DiffTimeから構成されます。DiffTimeはドキュメントに0 <= t < 86401sの範囲と記載されていますが、範囲以上でも動いてしまうようです。 > y = secondsToDiffTime 60 * 60 * 24 > z2 = UTCTime (fromGregorian 2018 11 17) y > z2 2018-11-17…

Javaのlambdaやstreamのベストプラクティスは?

ラムダ式のベストプラクティス Best Practices using Java 8 Lambdas | Baeldung StreamAPIコーディング規約 coding-standards/Javaコーディング規約.md at 8f152d2a7c6853f14345fbd9f10a9a0b14525e1f · future-architect/coding-standards · GitHub StreamA…

SQLServer Management Studioの上位200件の編集で、decimal(38,0)は扱えない模様

直接セルを入力しようとすると20桁までしか受け付けてくれません。38桁の値をSQLで設定した後にみると、<ファイルを読み取れません>となります。 update TBL_DECIMAL set x_decimal_38_0 = 99999999999999999999999999999999999999 where x_id = 13;

SQLServerの浮動小数の仮数の指定

マニュアルをみると、float [ (n) ]と記載されているので、nを指定できるように思えます。 https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/float-and-real-transact-sql?view=sql-server-2017 実際create tableでfloat(14)などとしてもエラーになり…

Haskellにはforがない。でもループのインデックスみたいなやつを使いたいとき。

> ['a','b','c'] のようなリストを扱っているときに、インデックスも使って処理をしたい時があるかもしれません。 その場合は自分でインデックスを付与してあげます。 > zip [0..] ['a','b','c'] [(0,'a'),(1,'b'),(2,'c')] > fold系の関数を使うときに、タ…