読者です 読者をやめる 読者になる 読者になる

日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

Excel で F2→Enter によるセル再評価をまとめて実行する

セル選んで F2→Enter するとセルが再評価されて書式変わったりするが、 これを大量のセルでまとめて実行する方法があるのかググってみたら見つかったのでメモ。 マクロ組んでもできなくもないが、区切り位置指定ウィザードでまとめて実行できる。 www.relief…

spacemacs お試し中

最近 spacemacs の設定にハマってる。 ハマってると言うのはあんま良い意味ではなく、しばしばエディタの学習曲線でネタ的に良く挙がる 以下比較イメージ中にある emacs の状態。 emacs設定の底なし沼にハマると中々抜け出せないんだよなあ。 じゃ今までの自…

ASP.NET アプリを IIS に配置する(ただし一度パッケージングしてからのやり方)

はじめに 2017/01/23 加筆修正 やりたい事の要点 経緯的なもの 手順概要 Visual Studio 2015 の Web 公開ウィザード(?) で Web Deploy Pakcage を作成する アプリ配置前 IIS 設定(必要なら) 配置サーバ環境 Default Application Pool の .NET Version 変更 I…

Java, Clojure くらいしか知らない自分が ASP.NET 上で動く Web サービスをイチから作る

はじめに 実行環境 手順概要 ASP.NET 空 Web アプリプロジェクトを作る 外部ライブラリの依存性の解決 WebAPI 初期設定を行うクラスファイルを用意する Global.asax に初期設定コードを記述する 疑問1: App_Start フォルダ作成は必須なのか? 疑問2: WebApiC…

leiningen しか使った事のないやつによる NuGet の使い方メモ

はじめに インストール VisualStudio 拡張版と CLI 版 CLI 版のインストール Visual Studio 拡張版のアップデート バージョン確認 CLI 版 Visual Studio 拡張版 設定一覧 VisualStudio で表示・変更できる設定は? パッケージの生成的なものはあるか ローカ…

四角形を動かす、描画する

arcade-clj シリーズ。全体の目次はこちら。 元記事での追加機能 まずは四角を描画してみる すごくどうでも良い事 Entity System について 四角を動かす 斜め移動の判定 動かすコード 動かすコードを呼び出すコード 画面内のみで動くようにする 画面のリサイ…

Screen の 切替

arcade-clj シリーズ。全体の目次はこちら。 元記事での追加機能 作業 赤い画面と緑の画面二つ用意する ところでイベントハンドラに渡してる関数って Clojure 的にはタダの関数だよね github スナップショット 元記事での追加機能 スペースが押されたら背景…

ESC を押したら終了するようにする(イベントハンドリングの触り)

arcade-clj シリーズ その 2。シリーズ全体の目次はこちら。 元記事での追加機能 イベントハンドリング :on-keydown github スナップショット 元記事での追加機能 エスケープかxが押されたら終了するように変更する 以上。x は play-clj では特に何もしなく…

play-clj のインストール、シンプルなウィンドウの表示

arcade-clj シリーズ 1 つ目。シリーズ全体の目次はこちら。 一部以前の記事と重複している所もあるけどご容赦を。 play-clj のインストール ひとまず動かしてみる 元記事の仕様に合わせる REPL で動かしてみる それでもまだ面倒 emacs の設定書き換えるの嫌…

ArcadeRS サンプルゲームを通じて play-clj に慣れる

ArcadeRSという ゲーム制作を通じての Rust 言語を学ぼうと言うチュートリアル記事がある。 この記事はそのチュートリアルを通じて完成するゲームを play-clj で作ってみようと言う記事。 元記事と違って Clojure そのものは既にある程度学習済で、ここのタ…

cider で play-clj 触り始めました

libGDX を Clojure 上でより使い易くされた play-clj 触り始めました。 github.com まだサンプル触ってる段階だけど REPL で起動したままいじれるのは 非ゲーム分野では経験済みとは言えゲームでも可能なのが改めて新鮮。 今日は 公式チュートリアル ではフ…

駄文:すいません、Rust 俺にはムリ

まあ誰に謝ると言う訳でもないんだけど Rustはプログラミング言語Rustを 一通り試してみて、さあそれじゃちょっとしたツールやライブラリみたいなの試しに作ってようかと 手を動かしてみたらコンパイラに怒られまくって正直心折れました。 いや、ネイティブ…

環境変数設定画面を直接開く方法

前日本語でググって見つからず諦めてたが今日英語でググッてみたらあった。 serverfault.com と言うわけで以下のような感じでそのままバッチファイルにしたものを PATH 通してる所に放り込んだ。 @echo off rundll32 sysdm.cpl,EditEnvironmentVariables コ…

Rust Win GNU ABI で実際何か作る時は MinGW-w64 の gcc にパスを通しておくのが実質必須と言うお話

今回は Conrod と言う GUI ライブラリのサンプルを動かしてみたくて 試そうとしたら、コンパイルが途中で止まったのが発端。 確認環境 Win7 64bit Rust Stable 1.8.0 GNU ABI 公式ガイドにあるサンプルを動かす Cargo タスクを実行すると外部 Crate のコンパ…

Cargo で gcc のフラグを任意に渡す方法→cargo rustc からのみ可能(2016-05-08修正)

要は Windows の GUI サンプルコードをお試しで動かすと コンソールも一緒に立ち上がってたのが嫌だったので調べると見つかった。 stackoverflow.com で、このフラグを Cargo から渡す方法はないか調べた。 確認環境 Win7 64bit Rust Stable 1.8.0 GNU ABI 2…

Cargo でグローバルにライブラリサーチパスを追加する方法

Cargo で C ネイティブライブラリをリンクさせる為に 配置されているパスを Cargo に明示的に指示したい場合どうするか。 確認環境*1 プロジェクト単位での設定方法 グローバルに設定する方法 参考 確認環境*1 Win7 64bit Rust Stable 1.8.0 GNU ABI プロジ…

Rust で try! マクロが上手く動かなかった

Rust 絶賛学習中なんだけども、try! を 使用したサンプルが動かなかったのでメモとして残す。 原因はちゃんと追ってないが、状況と回避方法だけ。 (と言っても try! マクロ使わないようにするってだけだけど) 2016-05-08 追記 原因分かった。未読だったエラ…

Rust 開発環境構築 - Eclipse で構築してみた

LifeTime や Trait、関数型プログラミング的な事も可能らしいシステムプログラミング言語辺りの ワードが気になって Rust を始めてみようと思いたった。 で、まずは環境構築からと言う事で探してみた。 開発環境選定 Emacs IntelliJ VisualStudio Eclipse 事…

Dungeon Crawl Stone Soup 0.17.1(英語版)をビルドしてみた

ちょっと思う所があって PC フリゲのローグライクの一つである Dungeon Crawl Stone Soupをソースからビルドして上手く行ったので その時の環境をメモしておく。 OS は Win7 Pro 32bit ソースは 公式に置かれてる Full source with dependencies のリンクか…

WindowsでJDK7,8を切替

以下の記事そのままの方法を使わせて頂いたのでメモ。 WindowsでJDK 7とJDK 8を切り替える際の注意点 Oracle もこういう情報を標準で提供してくれればいいのに。

cider での TDD っぽいワークフロー

ワークフロー REPL 起動(C-c M-j) ※ 1 回のみ 何か関数書く REPL 上でテスト ok なら保存・リロード(C-x C-s, C-c C-n, C-c C-k) REPL 上で実行したコードと結果を = とした is フォームにコピペし、 適当な名前を付けて保存・リロード(C-x C-s, C-c C-n, C-…

On Lisp -> Clojure へ移植: 14.1~14.4

14.1 関数の構築 関数合成をマクロ化する意味が結局良く分からない。 funcall を暗に呼んでいて省略できるのがメリットくらい?それにしてもまだ呼び方が (fn (compose list 1+ truncate)) と、Clojure の comp を知っていると使う側が fn を改めて呼ぶ必要…

On Lisp -> Clojure へ移植: 13.1~13.3

13.1 アナフォリックな変種オペレータ p116 aif を初めとした図 72 ひと通り。 (defmacro aif [test-form then-form & [else-form]] `(let [~'it ~test-form] (if ~'it ~then-form ~else-form))) (defmacro awhen [test-form & body] `(aif ~test-form (do ~…

codox を使った GitHub へのもう少し手抜きな API doc 公開方法メモ

GitHub へ API doc を deploy する方法としては既に codox の HowTo としてもあるんだが、ここではもう少し手抜きな方法をメモしておく。GitHub Pages となるリポジトリは既に作っているものとする。 lein doc してできた doc フォルダを普通に git commit&p…

cider を 0.8.1 にアップデートしてみた

cider が 0.8.1 になってた のでアップデートしようとしたが割と手間取ったのでその手順をメモしておく。 今回は 0.7.0 の時と違い単なるインストール記事で使用感までは書いてない。 個人的に色々気になるのはあるけども今回は 元Changelog。 を見てもらう…

日本語キーワード

久しぶりの更新。小ネタだけど。 Clojure で日本語 Keyword は避けた方が良さそう。 :あとか:いとか単純なものだと普通に使えるんだけど アルファベットや漢字と混合したものだと関数のプロセスによっちゃ キーはあるのに値が取れない事がある。 取れなかっ…

Clojure のちょい便利マクロ

複数のシーケンスを対象に先頭からそれぞれ要素を取って処理したい時どうするか。 map が順当なんだけど渡す処理がごく簡単な場合ならまだしも ちょっと複雑になってくると少し見辛くなる。 例えばこんなの。 (map (fn [avar bvar cvar] (->> (foo-fn avar) …

Clojure で lazy-seq を生む関数についてのトラブルシューティング

Clojure で lazy-seq を生む関数と言うのは cheatsheetの Creating a Lazy Seq に書かれている関数の他に も良く使う所では map 関数なんかもそうだったりする。Programming Clojure を読んだ事があれば 何となく記憶してるかもしれない。 REPL で確かめてみ…

Clojure の名前空間とファイル名

Clojure では名前空間を切る時、通常は名前空間名と.cljを除いたファイル名を同じにするよう構成する事になっている。 また、名前空間をドットで区切るのはパス区切りと対応付けられる。 名前空間が foo.bar だったら foo\bar.clj となる。 一方、lisp での…

Clojure の SQL DSL の一つ sqlingvo なかなかイイですよ

[2014-07-22 追記] table 別名がデフォルトで AS なしに修正された事を示すリンクを追記 Clojure 界隈では、SQL DSL の選択肢が結構前からいくつか存在する。初期からある Korma や HoneySQL そして今は Clojure で JDBC ラッパーのデファクトスタンダートと…

トップレベルでの let,letfn を使った private 化

Clojure でコード書いてる時、^:private な変数や関数で 行数が増えてくるとこれってどこで使ってたっけ?と思う事が増えてきた。 原始的な検索や、タグジャンプでまあ分からん事もないんだけど 行数が増えてくるとそれすらも億劫になってくる。 良く書くパ…

codox でドキュメント出力されない ns がある件

codox、作ったツールの関数群を俯瞰するのには 十分使えるものだと思ってる。もう少しこなれてくれば提出用にしてもいいんじゃないかってくらい。 が、その場合割と致命的に困る事があり、一部 ns で何故かドキュメント出力されない事がある。 AOT コンパイ…

Clojure 界隈での高階関数がらみのグチ

外部ライブラリを色々使い出して最近ふつふつ思うのが、どーも高階関数が絡んだ時の説明がイマイ チな事がチラホラあるような。ここで言ってるのはさすがに今更高階関数そのものの説明してくれと 言ってるわけではなく、API として説明不足と言うか。個人的…

On Lisp -> Clojure へ移植: 12.1~12.3

ここでも一応書いておくが、前の 11 章はベースになる setf に該当するものが Clojure には見当たらないので章全体を飛ばしている。 また、この章のサンプル移植は most-of しかなく、殆ど無いも同然なので ここも飛ばしてもらっても構わない。 12.1 新しい…

On Lisp -> Clojure へ移植: 10.4~10.6

10.4 反復 p96 (defmacro forever [& body] `(loop [] ~@body (recur))) 図 53 単純な反復用マクロ.while, for は既出なので till のみ。 Clojure の loop には go や return はないが、条件分岐と recur を組み合わせたら マクロ定義時だけは同様の事が可…

Emacs cider を 0.7.0-SNAPSHOT へ update

cider なんだがどうやら GW 前に 0.6.0 リリースがリリースされてた模様。 そこで REPL 上で 0.6.0alpha と表示されてた cider を 0.7.0-SNAPSHOT へ更新した。 更新は el-get で Github master から remove -> install と実行し、 後 leiningen プラグイン…

On Lisp -> Clojure へ移植: 10.1~10.3

この辺りから段々と変態じみてくるw 10.1 コンテキストの生成 p90 図 47 let のマクロによる実装。 binds の奇数 index はローカル変数のシンボルなので、それを関数の仮引数として渡し、body を実行。 で、binds の偶数 index を関数の実引数として後半部で…

On Lisp -> Clojure へ移植: 9.1~9.4

9.1 評価の回数 p84 On Lisp で言う複数回の評価を起こし得るマクロが Clojure 版にあるかどうか 良く分からん。形式的に近いのとなると for-b なんだが、 (defmacro for-b [[sym start stop] & body] `(loop [~sym ~start] (when (<= ~sym ~stop) ~@body (r…

On Lisp -> Clojure へ移植: 8.1~8.9

8.1 マクロ引数の捕捉 p75 ここで挙げられている for はリスト内包表記な Clojure の for でなく、 命令プログラミング的な for をマクロ実装してみたもの。 Clojure でサンプルを素直に読み替えて定義してみた場合だと実際は使えない。 (defmacro for-a [[s…

On Lisp -> Clojure へ移植: 6.9~6.11

6.9 マクロへの依存 p66 Clojure も事情は同じと考えていいのかな。 (defmacro mac [x] `(inc ~x)) ;=> #'user/mac (def f (fn [y] (mac y))) ;=> #'user/f (defmacro mac [x] `(+ ~x 100)) ;=> #'user/mac (f 1) ;=> 2 6.10 関数からマクロへ p67 ここでは …

On Lisp -> Clojure へ移植: 6.4~6.8

6.4 マクロ展開の確認 p60 図 33 マクロ展開確認用のマクロ (defmacro mac [expr] `(clojure.pprint/pprint (macroexpand-1 '~expr))) cider なら C-c C-m すればいいんだが一応。 6.5 引数リストの構造化代入 p61 最初サンプルほぼそのまま書いてみたのだが…

On Lisp -> Clojure へ移植: 6.1~6.3

6 マクロ 6.1 マクロはどのように動作するか p54 (defmacro nil! [x] (list 'def x nil)) 6.2 逆クォート そのままバッククォートと言われたりもする。 一応補足すると、Common Lisp でのバッククォート中のカンマは Clojure では ~ に相当する。 同様に Com…

On Lisp -> Clojure へ移植: まえおきと目次

まえおきのまえおき ここは On Lisp -> Clojure へ移植記事シリーズのエントリポイントとして書いてます。 なので目次は中身が更新され次第合わせて更新します。 意思表明的な意味を込めてまえおきも置いてますがんなもんどうでもいいよと言う人は まえおき…

JavaFX の Drag and Drop

JavaFX に限らず、一言に Drag and Drop と言っても、Source と Target が何か、Target の扱いを どうするかで話は大分変わるんじゃないかなと思いつつ、まずは日本語リソースをググってみるがサッとは見当たらない。 この記事の続き には書かれてるかもしれ…

年度も変わったので

ちょっと気分を変えてブログテーマをこちらに変えてみた。 Separate - テーマ ストア - はてなブログ はてなユーザ ID なしで見えるのかな。 まあリンク先には飛べなくとも変わりましたと言うことで。 サイドバーがデフォルト隠れているのが気に入ったので選…

JavaFX の Low-Level Binding API の使い方整理

いやあ、ハマりにハマりまくったが何とか解決できたので整理する。 前に JavaFX の Binding ってあまり使う事ないかも とか言ったけど撤回します。その後調べてると Low-Level Binding とも組み合わせたら割とやりた い放題、と言うか異なる型同士の Propert…

Clojure の destructuring でちょっと驚いた事

祝 Clojure1.6 正式リリース 個人的に目を引くような変更点 はあんまりないんだが、1.5 から使い勝手は変わらずに不具合修正もいくらかされているみたいので、既に 遭遇してる人はもちろんの事、この先要らん地雷を踏みたくない人もアップデートかけた方が良…

leiningen プロジェクトでのパッケージング

leiningen プロジェクトで作ったプログラムの配布について。 ライブラリであれば標準で lein deploy が用意されてるが(使った事ないけど)、スタンドアロンア プリとして本体の jar の他にマニュアルなどのドキュメントを jar には含めずに 書庫ファイ ルに固…

コマンドプロンプトのデフォルトフォント変更

この記事はレジストリを直接いじる事になります。レジストリの編集先は示しますがレジストリ自体 の編集方法についてはここでは書きません。 以前 コマンドプロンプトの表示領域を変更する記事 を書いたが、今回もう一つやりたかったデフォルトフォントの変…

Clojure で mutable な field を持つ deftype の例

doc 見れば書いてはいるんだが試した事はなかったので試してみた。 Clojure deftype that has mutable field and setter ...