技術memo

関数型ゴースト

キーカスタマイズツールKeyhacと日本語入力システムSKKがオススメだけどオススメしづらい話

Keyhacの話 WindowsとMac限定ですけど、Keyhacって常駐アプリがあります。 たとえば通常ではCtrl+cでテキストやファイルをコピーするところを、Alt+wでコピーするように変更したりできます。 つまり、Emacsのキーバインドに洗脳されてしまった人がOS全体の操…

Spacemacsを使い始めた話 #emacs #spacemacs

Spacemacsってなに? Emacsの拡張(魔改造?) 全体的に人間に優しくなった(キーボードショートカットのサジェストとか出たりする) 設定管理をいいかんじにしてくれる(layerシステム) キーバインドがVim(Evil)かEmacsか選べる 私はEmacsバインドで使ってます …

セルフマネジメントできない人とか(爆笑) #ryoka_nagoyaka

りょかさん迎撃会でLT発表した資料です。なごやかなごやか。 本文中に出てきたレビューに関するもっと詳しい話はこちらです。

最高に怠惰な技術書との向き合い方、または私は如何にして積ん読の山を築いたか #shinsotsu_wakaru

新卒でもわかるソフトウェア開発技術書の良書の見分け方 で発表した資料です。概ねギャグです。

スクラムのスプリントレビューの話 #nagoya_scrum

アジャイル開発とスクラム MeetUp 2017/02 で発表した資料です。ゆるふわな感じです。本当です。

スクラム歴1年1ヶ月ですがスクラムってよくわかりません #nagoya_scrum

スクラム現場ガイド MeetUp 2016/10で発表したので、資料です。 ちょっと煽りを入れすぎたかと反省はしています。

すのとらさんを"なごやか"した話 #nagoyakaeru

弊社に来た人を迎撃する定例(?)イベント、今回はsunotora 迎撃会ということで、いつの間にか発表者にされていたので発表しました。 (前回は体調を崩して参加出来なかったりもしましたね。) 発表資料という名のgist (なお資料は予告なく消される可能性があり…

NL名古屋で何故かジャズについて話した件 #NLNagoya

NL名古屋という名古屋エンジニア勢の謎の勉強会があり、気がついたら発表者にされていました。なごやこわい。 とても自由なイベントなようなので、特にエンジニア的でない話題で発表してきました。 「ジャズって居酒屋とかのBGMになってるやつでしょ?」「オ…

F# でTDDした話 前編? #FsAdvent #fsharp

この記事はF# Advent Calendar 2015の4日めの記事です。3日めは@gab_kmさんの実践 Persimmon.Dried #FsAdvent — a wandering wolfでした。 前置き ご無沙汰してます。こんばんは、まだ生きています。なごやかされて早3ヶ月、色々なことがありましたが、まだ…

9月で転職しました

わかりやすいまとめ きょんさん「うちにこない?」 私「いきます!」 そしてなごやへ 誰? ねのといいます。今年度で28歳。最終学歴=学部卒。 東京都内の小さなソフトウェアハウスで4年ほど、C#(.NET)等で業務システムを開発したりしていました。 何があった…

Visual Studio 2012/2013でEmacsキーバインドを使う方法(暫定)

環境 Windows 8.1(64bit) Visual Studio 2012/2013 Ultimate (32bit)

任意型リストのsplit/join

ご無沙汰してます。忙しさにかまけて、あまり技術の勉強メモすら捗らない昨今です。 Twitterでお題が出されていたので、それとなくF# でやってみました。

シーケンスのソート後の順番を、元の順番を保ったまま取得したい

Twitterでお題が出されたので、F# でやってみました。 sortして、indexとzipして、またsortし直すなんて、「ずいぶんとダサいコードを書いてるのね!」って思いました。*1 例のコードの「人」と「車」のデータ型にcarRankingとhumanRankingとがあるのも、型…

プログラミングパラダイムの話への補足、あるいは「正しさ」について

先日の記事 関数型・オブジェクト指向なプログラミングパラダイムについて思うところ - 技術memo で誤魔化したいくつかのことについて、補足します。

関数型・オブジェクト指向なプログラミングパラダイムについて思うところ

動機 イメージ論でない言語パラダイムに関する話を書きたかった。*1 まともな意見をインターネット空間に1つでも多く残しておきたかった。*2 要約 オブジェクト指向プログラミングはデータに対する操作をオブジェクト*3として抽象化する。 関数型プログラミ…

FireFox + KeySnail でEmacsキーバインドなWebブラウジング環境を作った話

昨年末からEmacsを使い始めて以来5ヶ月ほど、すっかり洗脳完了し、今ではEmacsキーバインドがなければ生きていけない状態になっています。 普段Webブラウジングに使っていたGoogle Chromeでは良い方法がなさそうだったのですが、FireFoxのKeySnailという拡張…

Scala言語を急ぎ足で学ぶ(勉強メモ 2/2)

勉強メモその2です。 その1に戻る

Scala言語を急ぎ足で学ぶ(勉強メモ 1/2)

普段はC#, F#, Java辺りを書いてる目線から、Scalaを勉強してみたので、コードメモを晒してみます。 動作環境はこの記事のPlayFramework無し(JDK + Scala + IntelliJ IDEA)です。

IntelliJ IDEA(無償版)でScala+PlayFramework2.3の開発環境を作った話

何故かScalaを始めることにしたので、環境構築メモです。意外と躓きました。

Haskell PlatformをWindowsにインストールしたらCabalがupdateできなかった話(解決済)

一時はもうダメかと思いましたが、解決しました。

実務に使うプレーンテキスト→Microsoft Word変換、あるいはPandocを使い始めた話

SIerのお仕事で、設計書を書いたりするときに、Microsoft Office Wordのdocxファイルを使うことがあります。 そんな中でも、ドキュメントのフォーマットがある程度自由にできる場合に*1、Wordで直接書くのをやめて、プレーンテキスト(Markdown)で書いて、Pan…

テキストメモツール比較、あるいはhowm(一人お手軽wikiもどき)を使い始めた話

考え事をメモしたり、各種記録をつけたりといった、メモツール界隈(?)には以前から関心がありました。 ここ最近Emacsを使い始めたタイミングで丁度良さそうなツールを見つけたこともあり、各種情報をまとめてみることにしました。

今、F# で関数型プログラミングをはじめるなら

F#をはじめてみたい人向け、2015年初頭現在の言語関連情報への参照をまとめてみます。 おおむね日本語です。

Scheme(Gauche)でポイントフリースタイル風味

;; リスト(ツリー)を平坦化する。 (define flatten (letrec ((flatten-rev (fold$ (lambda (x acc) (if (list? x) ;; xがlistなら再帰呼び出し結果をaccの先頭に追加 ((compose (fold$ cons acc) reverse flatten-rev) x) ;; それ以外なら単にxをaccの先頭に…

継続渡しスタイルの再帰関数の読み解き方、あるいは多値で済む場合

Scheme手習い(The Little Schemer) 8章に、multirember&coという関数が出てくるのですが、何だか急に難しさが跳ね上がったようで、正直わけがわからなかったので、自分用に解説をメモしておきます。 動作環境はGauche 0.9.4です。

「同じようなswitch文があちこちにあると改修が困難」って本当?(Expression Problem)

概要 プログラムの設計では、よく「同じようなswitch文があちこちにあると改修が困難になる」と言われています。そういった場合は、「switchの分岐を、オブジェクトの多態性を利用して無くすべきだ」とも言われます。 しかし、それは本当でしょうか。「すべ…

WindowsでEmacsにテキストファイルを関連付けする

Windows 7でemacsclientを導入しようとして困った話です。 やりたいこと Windowsのエクスプローラーでテキストファイルをダブルクリックすると、起動済みのEmacsでそのファイルを開いてほしい。

SML# の「多相レコードによる多相ヴァリアントの表現」がわからなかった話

SML

この投稿は、ML Advent Calendar 2014の22日目の記事です。前日はkawada_syogo225さんのAlice MLの仮想マシンについて | 小さいモノは美しいでした。 多相ヴァリアントの話 ラベル付きヴァリアントの多相版、です。詳しくは以下あたりを見ましょう。 4.2 多…

SchemeでF# 風パイプライン演算子を書いてみた

パイプライン処理のこと 巷ではStreemやStreeem、さらにはstleemなんてものまで現れて、パイプライン風プログラミング言語が話題になっています。 パイプライン処理風のプログラミングスタイル、面白そうですね。 ところで、パイプラインといえばF# ですね?…

FSharperならこう書く(A Poker Game Program) #FsAdvent

これはF# Advent Calendar 2014の8日目の記事です。 前日はk_disposeさんのF#のlintツールであるFSharpLintを使ってみる - Qiitaでした。 今日は、 「F#をやってる人って普段どんなコードを書いているの?」 「何を考えてプログラミングしてるの?」 とお思…

Macでプログラミング環境を作った話

Mac初心者です。 今までプログラミングは仕事でも趣味でもWindows機を使っていたのですが、せっかくMBAを買ってしまったので、そろそろ開発環境を本気出して作ってみようかと思い立ち、あれこれインストールしてみました。 その辺りのメモ書きです。

IComparer<T>と、リフレクションを使用しないSortableなBindingListの実装

リストのソートなんて今時LINQでOrderBy/ThenByが使えるから十分、とはいえそうも行かないのがUI周りですね。 「Windows Formsでdata objectを定義してそのListをDataGridViewにDataBindしたら、ヘッダをクリックしてもソートしてくれないんですけど!」 そ…

基礎プログラミング演習(1),(2)をF# でやってみた

元々お手本コードを割と関数型風に書いていたので、ほとんどそのまま一対一対応で移植する形になりました。 比較すると、記法がどれほど簡潔かわかるんじゃないでしょうか。

基礎プログラミング演習(2)

前回の演習(基礎プログラミング演習(1) - 技術memo)と同メンバーで、また似たようなプログラミング演習問題をやってみる会を開きました。 問題 コマンドラインで動くじゃんけんゲームを作りましょう 仕様 初めに「出す手を入力してください(g:グー、c:チョキ…

業務プログラマーのための不完全にしてあまり意義のないプログラミングガイド

概ね、「比較的冗長な構文を持ち、ガベージコレクションを行い、シングルディスパッチを使う、クラスベースで静的型付けのオブジェクト指向言語で、実装を単一継承しインタフェースを多重継承する」ようなプログラミング言語の話です。 なお、以下のコード例…

ログ出力ライブラリlog4netを独自クラスでラップする(その他使い方メモ)

目的 log4netのインターフェースが何だか使いにくい、独自の関数でログに書き込みたい でも自作クラスでラップすると%location等のlog4netで出力する「書き込み場所」情報が全部独自クラスになってしまう エラー処理等、同じようなことを何度も作りたくない …

LINQでバッファリングしてみる

結局何がやりたいのかはよくわからなかったのですが、LINQ楽しいよLINQ、というお話です。たぶん。 前置き プログラムから動的に生成したSQLをDBに問い合わせすることって、よくあると思うんです。 例えばこういうSQLについて。 select * from product where…

コナミコマンドができるまでひたすらランダムなキー入力を生成する

Twitter Webでコナミコマンドが使えると話題になっていたので、演習問題がてらやってみます。 仕様 擬似乱数のシード値は外部から指定する 生成する記号の個数の上限を、外部から指定する キー入力される可能性のある記号の一覧(↑↓←→AB)は、固定とする 特定…

再帰関数のメモ化(Memoization for Recursive Functions)とY Combinatorの速度計測

解説は前記事再帰関数のメモ化(Memoization for Recursive Functions)とY Combinator - 技術memo 以下、F# Interactiveに流し込むだけ。

再帰関数のメモ化(Memoization for Recursive Functions)とY Combinator

Y Combinatorのことを調べていて、気がついたらこんなことに。 目次 関数のメモ化(Memoization)のこと Y Combinatorのこと(不動点コンビネータ) 再帰関数のメモ化(Memoization for Recursive Functions) 参考記事

SQLのouter joinの罠にハマった話

SQL

結論 join on ほにゃららと、where ほにゃららだと、outer joinのときに挙動が違います。 outer joinのouter側のテーブルへの条件は、onのところに書きましょう。 left outer joinでwhereのところにright側テーブルに関する条件を書いた場合、条件に合致しな…

基礎プログラミング演習(1)

ご無沙汰してます。 ややあって、友人のプログラミング初心者2人とプログラミング勉強お泊まり会をしましたので、そのレポート的なものを残しておきます。 条件など 2人はプログラミング初心者 入門書の前半くらいまで読みかけ 使用言語は、一人がC++、もう…

F# でリフレクション/式木に触れてみる

前置き F# Advent Calendar 2013 8日目の記事になります。 昨日の記事は@brother_nomuさんの「F# で Oracle にアクセスしてみたよ!」でした。 ということで、F# を9月に始めて3ヶ月、ちょっとは関数型プログラミングにも慣れてきましたC#er な私です。 F# …