Let's write β

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

円形グラフプロット

角度と値を元にした円形のグラフを書く必要がある場面があったので、 とりあえずの出力結果を確認するためにlispbuilder-sdlをつかって書いてみました。 (ql:quickload :lispbuilder-sdl) (ql:quickload :lispbuilder-sdl-gfx) (defun read-plot-data (file-…

GCCのコンパイル力を知った

GCCでswitchを使ってると、明確に確定値の場合はswitchが自動的に必要最小限の 演算に展開さていることを知った。 まずは子のCのコード #include <stdio.h> main() { switch('a') { case 'a': printf("hoge"); case 'b': printf("fuge"); } } みてのとおりswitch整数</stdio.h>…

SBCLのdisassembleの結果を比較する

SBCLでdisassembleを用いてアセンブラ(?)を出力した時に番地などの詳細情報がでてきて diffをとって比較するのが困難なので、ちょっと必要な部分だけを抽出してくれるawkスクリプトを書いてみました。 { if(NF >= 5 && $3 ~ /.*:/) { print $3,$5,$6,$7 }…

液晶ディスプレイのノイズを利用して作曲ができるかもしれない

今気がついて、正確には把握していないのですが、液晶ディスプレイを表示している時にその表示内容によって異る周波数のノイズがスピーカラーから本当に微量ですが出力されている事に気がつきました。 この音と表示色の関係を把握したら、この音を増幅してデ…

Cの引き数のスタックへのつまれる順を利用して訳がわからない事を

スタックに積まれる時は後ろの引き数から順番に評価するという事で #include <stdio.h> void showargs(int x, int y) { printf("X: %d, Y: %d\n", x, y); } int main() { int x = 0; showargs((printf("case1 x: %d\n", x), x = 1, x), x); x = 0; showargs((printf("</stdio.h>…

OpenCVで顔のパーツの位置の取得

とりあえず雑にやってみました。 #include <opencv/cv.h> #include <opencv/highgui.h> void detectObj(const char *cascade_name, IplImage *img, IplImage *gImg, CvMemStorage *storage, int maxcount) { CvHaarClassifierCascade *cascade = 0; CvSeq *seq; int i; static CvScalar colo</opencv/highgui.h></opencv/cv.h>…

Catrobat(Catroid)で遊びたい

先日Nexus7をGoogle for Entrepreneur Weekで賞をいただきNexus 7をチームに一台いただきました。 そのNexus 7はどうせならということでチームの共有財産にしているのですが、それを触らせてもらっていたらあまりにも楽しかったので、自分で買ってしまいまし…

Haskellでラムダ式をパース

import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Char import Control.Monad data LambdaExpr = Var Char | Lambda LambdaExpr LambdaExpr | Apply LambdaExpr LambdaExpr deriving (Show) identifier :: GenParser Char st Lam…

Haskellで論理式をパースして遊ぶ

昨日の昼ごろなんとなくパーザを書きたくなり、ちょうど論理式のパーザなんかが短時間で書くには適切なものだろうと思いまして書いてみました。Parsecのハイパワーな機能をつかってしまうことも考えたのですが、どうせならなんとなく自分で構造をくみ上げて…

画面が...うつらない.. Debian Wheezy..

昨晩帰宅してからaptitude updateしたところ、更新が大量にきていたので、とりあえず更新したところディスプレイのドライバかなにかと相性がわるかったらしくて画面が表示されなくなってしまいました。...追記... ドライバーをfglxからatiにしたところ無事表…

Rubyで一次元オートマトン part 2 (画像生成)

Cairoライブラリを利用して画像を出力できるようにしてみました。 もうすこし抽象化したいですが.. require 'cairo' class World def initialize(size) @map = Array.new(size, 0) @rule = Hash.new end def show @map.each do |cell| if cell == 0 print " …

Rubyで一次元オートマトン

とりあえずルールとかみながらつくってみました。 次は生成関数から生成できるようにしたいとおもいます。 class World def initialize(size) @map = Array.new(size, 0) @rule = Hash.new end def show @map.each do |cell| if cell == 0 print " " else pr…

Source-Code-Pro導入してみました。

[速報] ソースコードを表示するためのフォント「Source Code Pro」をアドビがオープンソースで無料公開 - Publickey なにやらSource Code ProというフォントがAdobeから公開されたとのことで、話題になっていたので 早速導入してみました。 まずは、自分…

Debian Wheezyに移行しました。

今時間があったのでGnome-Shellをつかうために、Debian wheezyに移行しました。 途中ですこしパッケージの更新がうまくいかずてこずったりしましたが、無事に移行できました。 ドライバーの方も一度アンインストールし、ATIから最新版をダウンロードしてイン…

はてなBlog ベータに移行してみました。

ダイアリーからブログへの移行が簡単になったとの事なので、移行してみました。 自動リダイレクトとかあるので、移行も簡単でした。はてなはスーパーpreがつかえるので、LispのSyntax Highlightが 楽にできるのが良いので、愛用させてもらってます。

CLでmetaclassでdispatchするdefmethodはできない?

素朴な疑問なのですが、CommonLispでdefmethodするにあたって、meta-classレベルでdispatchできるのでしょうか? http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2007-06/msg01042.html ここを見るかぎり、できないとの回答でした。 しかし、Post…

ダメだった..

できると、おもっていた.できなかった。 (defpartial main-layout (&rest contents) (:html (:head (:link :href "/static/css/bootstrap.css" :rel "stylesheet" :type "text/css") (:script :src "/static/js/bootstrap.min.js")) (:body contents))) CL-A…

勘違いしてた。

どうやって部分テンプレートみたいなのつくってそれを連鎖させれば良いんだろうとかいってたけど、普通にできた。勘違いしてた (ql:quickload :cl-markup) (defmacro defpartial (name args &body body) `(defun ,name ,args (markup:markup ,@body))) (defp…

正規表現でmatchをつかってcond

正規表現でマッチしたときだけ、式を実行したいときってありますよね。 ただ、二回チェックするのは冗長なので、cond風に書きたいですね。 そこでマクロです。 (defmacro aif-match (regex str then-expr &optional (else-expr nil)) (if (stringp regex) `(…

Vectoをつかってマークを自動生成

ちょっとしたマークやフラグを大量生成するならVectoをつかってみるのも手かもしれません。 (ql:quickload :vecto) (defpackage :vecto-user (:use :cl :vecto)) (in-package :vecto-user) (defun radiant-lambda (num file) (with-canvas (:width 90 :heigh…

QuickLispコマンドライン

Quicklispをコマンドラインから利用できれば便利です(?) まぁいずれにせよ、なんとなくライブラリ管理と処理系は別にしておきたいのです 本当は処理系依存をはずしたいのですが、今はこれだけ #!/usr/local/bin/sbcl --script ;;; The following lines ad…

ネットがない環境に行くという事

昨今はネットに接続できる環境に居る事が多く、ここ3日ほどネットの接続環境が無い環境にいっており、 自分の頭とPC内の資料以外にたよれない環境にいました。そんな環境にいながらもがいていると、どれほど普段自分がネットや別のマシン等の外部リソースに…

CLでねじれヒープ

何かしらコードを書いていないと元々無い腕がなまるので、「関数プログラミングの楽しみ」を読みながらねじれヒープをHaskellからLispに移植してみました。 ;;Define basic types (defclass <tree> () ()) (defclass <null> (<tree>) ()) (defclass <fork> (<tree>) ((item :initarg :item </tree></fork></tree></null></tree>…

OpAuthのStrategyをPHPをはじめて2日で2つ作ってみた。

PHP

PHPでCakePHPなどを利用してWebサービスを開発している人も多いと思います。 ネット上でOpAuthというOAuthの面倒をみてくれるナイスならライブラリを発見したので、利用していたのですが、連携可能なサイトの中にFlickrがなかったのですが、自分の開発中のサ…

CommonLispではてなブックマークAPI

ちょっと情報を抽出したい事があったので、片手間ですが、つくってみました。 (ql:quickload :drakma) (ql:quickload :cl-json) (setq drakma:*text-content-types* (cons '("application" . "json") drakma:*text-content-types*)) (setq drakma:*header-st…

新しい言語を学ぶときにチェックすること

ある言語からある言語へ移行するときや、新しい言語を学ぶときに付きまとうのが その言語独特の文化も問題です。自分の今つかっている言語とはまったく違うメンタルモデルをもっている言語を勉強するときに、闇雲に突っ込んでいっても五里霧中になってしまい…

Javascriptの本を二冊買いました。

僕としては僕はデスクトップ系のソフトウェアが書きたいのですが、最近は主にAndroidのアプリケーションやWebアプリケーションを実装する案件を抱えています。RubyOnRailsはまぁ理解したかなという事で、ある程度サクサク作成(良い語呂だ)できるのですが、…

COWON iAudio10を買いました。

以前はiPodやらをつかっていた時期が僕にもありました... しかし、今はLinuxを母艦としてつかっている事もあり、ポータブル音楽プレーヤーにはかなり 制限がありました。その中でLinuxでも利用できると報告されておりまぁ使いやすそうかなとおもったので COW…

CLでClojure風関数ディスパッチメソッド

プログラムを書いているときに、Clojure風のメソッドのディスパッチに引数にたいして関数を適応した 結果を利用して実行するメソッドをディスパッチする機構がほしいなぁとおもいました。 そこで、MOPをつかってちょっとした実装をしてみました。 (ql:quickl…

Clojure NoirでTwitter Like

ClojureのNoirとかデータベースとかの復習のために、Twitter Likeなんだけど、 一人でつぶやくだけの物をつくっています。一人でつぶやくだけという目的によって ほとんどデータ管理はしてません。