Let's write β

プログラミング中にできたことか、思ったこととか

RustでWebプログラミング No2 ~ Routerをつかって複数ルート~

前回の記事では、非常にシンプルなHelloWorldを表示するだけのサーバーを作成しIronの基礎を紹介しました。 今回はRouterと呼ばれるMiddlewareを利用して複数のURLに対応したサーバーを作成しました。 routerをCargo.tomlに追加 routerを利用するためにCargo…

RustでWebプログラミング No.1 ~ IronのインストールとHello World~

Hello World hello_worldバイナリプロジェクトを作ろう $ cargo new hello_world --bin サーバーはmain関数をもったプログラムに成るので、--binオプションを忘れに付けましょう。 Cargo.tomlにIronを追加する [dependencies.iron] version = "*" まずCargo.…

RustでAPI Wrapperを簡単に書くためのライブラリを書いている

Swiftで書かれたAPKitというライブラリ:github.comは非常に綺麗に作られていて、便利ですし更新も活発なので非常に気に入っていて、時々コントリビュートしながら 自社プロダクトでも採用しているのですが、Rustで遊んでいる時にこれと同じようなライブラリ…

Acmeをベースにしたテキストエディタを書いている

Plan9のAcmeに惚れ込んでしまって こんなマウス www.edikun.co.jp を購入してしまったのですが、やはりいくらかつらみが有るというか、 ネイティブでは提供されているような機能を提供するのが難しいと感じたりする場面が有り Acmeをベースにしたテキストエ…

YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa でスタッフをしてきました!

uzulla.hateblo.jp これを見た当初は「4/1だし...嘘だろ...」と思っていたのですが buildersconでお会いした時に冗談じゃなく本当に開催するつもりだとお聞きし、 「あれはマジなんだ!」という熱い思いに打たれ微力ながらボランティアスタッフとして参加し…

Plan9PortのMacOSX環境での日本語入力のサポートを試みている話

Plan9PortのAcmeに前回の記事でも触れましたがぞっこんなわけですが、 どうしても日本語入力ができなくて嫌だったので、iTerm2やdevdrawのIME対応を試みていたプロジェクトなどを 参考に日本語入力に暫定的にですが対応したという話です。GitHub - pocket787…

Acmeにキーバインドを追加する

Plan9Portを最近良く使っています。AcmeというPlan9のエディタがあり、マウスのクリックをいろいろな場面で利用して非常に 便利なのですが、一方でキーバインドは最小限に抑えられており、どうしても僕には少し使いづらい場面がありました。そこで、Acmeのソ…

地下鉄のカーテン

地下鉄の窓のカーテン有りますよね,カーテン(イメージして下さい)あれってパーリンノイズだよなぁっておもったのでちょっと作ってみました なかなかうまくいかないですがそれっぽくはなりました

Rustで画像回転

Rust言語で画像の回転をしてみようと思いまして, ライブラリを探したところ,https://crates.io/crates/imageというライブラリがあったのですが,画像を中心を軸に自由回転させるものがなかったので自作してみました.アルゴリズムはC言語による画像回転処…

RustでLifeGame

前々からリージョン理論でメモリ管理を解決してるとかで理論的な興味はあったのですが Rustでプログラムを書くということはしてませんでした. が久々にホームページを見ましたらドキュメントも充実しているし,なかなか良さそうになっていたので 早速少しず…

TouchDevelopが面白い

MicrosoftのTouchDevelop、以前から知っては居たのですが、 前使った時はいまいちピンとこない感じだったのでしばらく触っていませんでしたが、 最近久々に触ってみたところ結構使いやすくなっていてここしばらく色々と遊んでいました。 http://tdev.ly/qtfh…

三目並べのMinMax AIをLipsで

三目並べのMinMaxAIを書くという課題が出まして、 言語は不問ということだったのでとりあえずLispで書きました。 探索空間のサイズ 三目並べは最初がAIの手番だとすると、最大9! = 362880のパターンが有るのでしょうか? 最初に9マスの内にどこを打つのか?…

Project Euler 67をHaskellで

module Main where import Data.List.Split readTriangle :: FilePath -> IO [[Int]] readTriangle fpath = do content <- readFile fpath return $ map (map read . splitOn " ") $ lines content prob67 :: [[Int]] -> Int prob67 = head . prob67' where …

0hh1 Solver written in Python

仕事が忙しくてなかなか更新できませんでしたが、先日HackersNewsで 0h h1 – A little logic game | Hacker News0hh1というパズルゲームを見かけまして、ちょっとプレイしてみたところ以外にも面白かったので、せっかくだからSolverを書いてみようと思いまし…

2048ゲームをRubyで

2048というゲームがなかなかプレイするのにも、AIを作るのにも面白そうだったので、 自分でいじれるように書いて見ました。 require "curses" def make_board() board = Array.new(4).map!{ Array.new( 4, nil ) } end def available_pos(board) pos = [] bo…

DIMACS CNFパーサーを書いた。

SATソルバーの実装に昨日あたり興味がわきまして、手始めにデータ構造とDIMACS CNFファイルのパーサーを書いて見ました。ファイルから読み込めるようになると今後開発するときのデバッグも用意になりますものね。 module Main where import System.Environme…

MySQLで削除のCASCADEを確認する

Pythonを久々に復習していました。復習がてらちょっとMySQLに接続してDELETEのCASCADEが連鎖的に影響を与える範囲を一覧するスクリプトを書きました。

JavaのSwingでネストしたJSplitPaneを扱う

今とあるツールを久々にJavaのSwingで書いている時に、複数のコンテンツをパッキングしてその間にサイズ調整の棒を表示してユーザーがリサイズできるようにする必要が生じました。JSplitPaneをあてにしていたのですが、どうも奴は2つのコンポーネントしか扱…

Mozart-Oz v2をMacOSXのHomeBrew経由のEmacs.appでつかう。

Mozart.appが更新されていた。 以前の記事ではMozart 1.4.0という少し古いバージョンをEmacs.appで使う方法について書いていたのですが、Mozartのホームページに更新がかかったことを知り、確認してみるとページも綺麗になりMozart-Oz v2という少し新しくな…

Business Card Raytracer in CL.

Redditを眺めていたらHaskellでRayTracingをしてみたよ的な記事が流れてきました。 So I (kind of) made a Haskell clone of the business card Ray Tracer : haskellその説明を眺めてみると何やら名刺サイズのレイトレーシングというものが話題になっていた…

CodeIQのナムドット問題。僕の回答

結城先生がCodeIQに定期的に出題なさっているのですが、今回のナムドット問題をやってみました。 挑戦者求む!【アルゴリズム】古代文献を復元しよう! by The Essence of Programming 結城 浩│CodeIQ 問題の出力に着目してみると、ドットでくぎられている数…

Oz(Mozart)環境をMacOSX 10.8でセットアップした

Ozという言語マルチパラダイム言語があるようで、あまり僕の周囲にはユーザーがいないように 見えるのですが、それでもOzはすごいすごいと聞くので、体験してみねばという事で開発環境の 整備をしました。最近iOS関連の開発をする事になってMacOSXを使ってい…

ClojureでWebApp開発に必要なN個のこと

PerlでWebAppの開発に必要なN個のこと - Islands in the byte streamのClojure版です。あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だ…

NasmでLifeGame

更新が非常に空きました。久々にアセンブラです。 %include "stdio.inc" section .bss array0: resb 8 array1: resb 8 flag: resb 1 section .text global start start: mov rcx,flag mov byte [rcx],0 mov rax,1 mov rbx,0 mov rcx,1 call setCell mov rax,…

SECD Machine in Lisp

;; List Utilities (defun head (lst) (car lst)) (defun tail (list) (cdr list)) ;; Lambda Expression (defun lam-expr (var body) `(lambda ,var ,body)) (defun is-lambda (list) (and (listp list) (eql 'lambda (car list)))) (defun bv (lam) (cadr …

ちょっとした物

ちょっとした物です。 ちょっとした物その2、オートマトンをDOT言語に。

Generalized LR法をHaskellで Part3

以前の構文木では、途中のスタックの状態を保存していなかったので、出力される構文木では どのような途中のスタックの経過をたどったのかが不明瞭でした。 そこで、すこし更新して、スタックの途中経過を構文木中に保存するようにしたので、 どのようなルー…

Generalized LR法をHaskellで Part2

前回はXML風に木を出力するという機能をつけていましたが、本命はDOT言語に出力する事です。 そっちのほうが確認しやすいからね。というわけで付けてみました。 以下は変更した部分だけ -- ParseTreeをDOT言語として出力 type IndentLevel = Int --- インデ…

Generalized LR法をHaskellで

自然言語処理のGeneralized LR法をHaskellで書いてみました。 {-# LANGUAGE TemplateHaskell #-} module Main where import Data.List import Control.Monad import Control.Lens import Text.Printf -- 終端記号と非終端記号(行末も終端記号としておく) dat…

SuffixArrayを使った簡易検索エンジンやってみた。

文字列の検索アルゴリズムについてしらべていたら、良いチュートリアルを発見したので やってみました。 簡単なWebサーチエンジンの作り方 (defun all-suffix-node (str) (loop for s from 1 to (length str) collect (cons s (subseq str (1- s))))) (defun…