プログラミング
Rubyには、配列などから値を取り出したりするパターンマッチの機能はありません。 しかし、時々欲しいと思うことがあります。そんな時のために作ってみました。 (実は自分でもなんで作ったんだろうと思うような時もあるのですが) githubで公開しています。ht…
HTML5のCanvasを使えば、Javascriptでも画像を生成するプログラムが簡単に作れます。 縦と横に線が並んでいて、線と線が交わるところに円が書かれた画像が欲しかったので、 多分同じことをするソフトはすでに存在すると思いますが、HTML5で作ってみました。 …
Common Lispです。 パターンマッチといっても、束縛する値のリストを連想リストとして返すだけなので、プログラムに応用するにはもう少し工夫が必要かもしれません。 できるだけ簡潔に書こうと思っていましたが、結局長くなってしまいました。 (defun zip-wi…
作りたいものを思いついたので、Wnckについてもう一度、少し調べてみました。 今回は、その方法の実験として書いたプログラムです。 ウィンドウのタイトルと、ウィンドウを開いているアプリケーションの名前を取得します。 アプリケーションの名前は何なのか…
GTKで画像を扱う時に使われるGdk::Pixbufを重ねて新しいGdk::Pixbufを作る方法を書いてみます。 背景画像の上に重なる画像には、背景が透過した画像を使います。 画像は二つとも、一辺が256ピクセルの正方形になっていることを想定して書いたので、256という…
wnckというライブラリを使い、ウィンドウが開かれた時にウィンドウタイトルを表示するプログラムを書いてみました。 これはタイトルを表示するだけですが、wnckはウィンドウの位置やサイズを操作することができるようなので、うまく使えばいろいろな応用がで…
外部コマンドの出力をパイプで取得してそのままGTKのテキストビューに表示するプログラムを書いてみました。 単純な方法でやっているので、ただ単に標準出力を表示するだけですが、 リアルタイムに出力を取得しているので、少しずつ出力されるコマンドは少し…
Pure言語には、「reduce」というマクロがあります。(PureではLispのようなマクロが使える)これは、「与えられた式をもう一度評価する」というマクロです。一見単純なようですが、たくさんの応用ができそうです。 簡単な使い方を紹介します。 foo expr = redu…
「どれだけ括弧を使わずに書けるか」を競う「括弧ゴルフに、Pureを使って挑戦してみました。括弧は、「()」も「[]」も全く出てきません。0個です。階乗は大きい数(intだとオーバーフローしてしまうもの)も普通に出てくるので、それに対応するのに苦労しまし…
方法はほとんど変わっていません。 ほぼメモのような感じなので、D言語でSDLやOpenGLを使う関係の記事はまとめたほうがよかったかもしれません。 ですが書き直すのが面倒なので書いてしまいます。前回と前々回の作業を行った後に行ったので、それを前提に書…
SDLの時の方法はSDL以外にも使えそうだったのでやってみました。 GLUTをインストール Ubuntuならaptで簡単です。 sudo apt-get install freeglut3-dev D言語用ライブラリの準備 「http://shinh.skr.jp/d/porting.html」の「OpenGL」をクリックしてzipファイ…
最近D言語はあまりやっていなかったのですが、なんとなくやりたくなったのでインストールしてみました。 自分が行った方法を適当にまとめてみます。 「/opt/dmd2」の中にインストールされるようになっています。 DMDのインストール まずは、「http://www.dig…
ゲームなどを作るときによく使われる画面描画ライブラリの一つに「SDL」というのがあります。 D言語からSDLを使う場合は、Windowsの場合の方法は結構見つかりますが、Linuxだとあまり見つかりません。 なので適当に書いてみました。 SDLのインストール Ubunt…
久しぶりのScalaだったので少し忘れているところもあって苦労しましたが、なんとか動かすことができました。 方法を書いておきます。http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/creating.html http://code.google.com/intl/ja/appe…
ニコニコ動画をHTML5で再生するBookmarklet「NicoHTML5」(http://d.hatena.ne.jp/saiten/20100225/1267110155)をGoogle Chromeの拡張にしてみました。注意: この拡張にはまだうまく動かないところや変な動作をするところもあるので、使用は自己責任でお願い…
Gaucheでもutil.matchを使えばパターンマッチができますが、括弧が多いのであまり読みやすいとは言えません。 それをなんとかしようと思い、書いてみました。 こんな感じになっています。このマクロを使えば、階乗はこんな感じに書けます。括弧が減るので読…
元は現在進行中のプロジェクトの一部でしたが、ライブラリ化したら便利だと思い、ライブラリとして使えるようにして、 さらに、バージョン管理ソフトの勉強も兼ねてGitHubに投稿してみました。ライブラリは http://github.com/tana/gtts.js ここにあります。…
JavascriptやFlashやPHPなどを生成することができる、ActionScriptに似ているようで少し違うようなプログラミング言語「haXe」を使ってみました。 インストール Ubuntuなら、簡単です。 sudo apt-get install haxe コンパイラはこれでインストールできます。…
この方法はあまり使うべきではないと思いますが、Pure言語で手続き型言語的なプログラムを書く方法として書いておきます。 まず最初に、While関数の定義です。 while expr body = body () $$ while expr body if expr (); = () otherwise;普通に、「exprを実…
例文になるのかどうかはわかりませんが、とりあえず、PureでFizzBuzzをやってみました。 こんなコードです。 check x = "FizzBuzz" if ~(x mod 3) && ~(x mod 5); = "Fizz" if ~(x mod 3); = "Buzz" if ~(x mod 5); = x otherwise; fizzbuzz n = map check (…
前に作ったbotは、ずっと起動していなければならないため不便で、 個人的な都合のために止めてしまっていたため、動作再開のために、レンタルサーバー(land.to)で動作するように改良しました。 仕組みも少し変更しています。 プログラム まず、ソースコード…
GaucheでTwitter APIを使うライブラリ「Gauche-net-twitter」を、レンタルサーバー「land.to」にインストールしてみました。 方法を書いておきます。 「アカウント名」というところは、land.toの自分のアカウント名にします。 「26e0b0e」という部分は、ライ…
GaucheでWebアプリを作ってみたいと思っていましたが、SSHが使える無料のレンタルサーバーが見つからなかったので、 SSHが使えないところ(land.to)にインストールしてみました。 自分のパソコンでコンパイルしたものをアップロードするという方法です。 他の…
久しぶりにRubyとGTKでプログラミングしてみました。 今回は、RubyからGNOMEのタスクトレイ(通知領域)にアイコンを表示します。 http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk%3A%3AStatusIcon ここや、 http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk%…
Pureの、機能や構文などについて、わかったことを書いておきます。 Pureマニュアル日本語版(http://d.hatena.ne.jp/cu39/20100609/1276102382)などを参考にしました。 この記事は未完成です。ずっと完成しないかもしれません。これからさらに追加される可能…
最近知ったプログラミング言語「Pure」をインストールしてみます。 http://d.hatena.ne.jp/Dubhead/20100312/p1 ここも参考にして書きました。 Ubuntu 9.10でやっています。 Pureについて 動的型付けの言語らしいです。インタプリタとコンパイラ、どっちも使…
Qiには、標準ライブラリとしてPrologのインタプリタが搭載されているらしいので、 Prologについて、調べながら少しずつやってみました。 Prologってどんな言語? Prologは、「論理型言語」と呼ばれる言語で、「事実を元に質問の答えを出す」ということをする…
自分がGaucheでOAuthを使うために試行錯誤していたら、 id:SaitoAtsushiさんがGaucheでOAuthを使うコードを書いてくれていたようなので(http://d.hatena.ne.jp/SaitoAtsushi/20100429/1272545442)、 そのコードを元に、Twitterでつぶやくコードを作ってみま…
PCASTLという言語を見つけたので、ビルド方法などを書いておきます。 今回は、Ubuntuでビルドしてみます。 必要なパッケージのインストール PCASTLのインタプリタはreadlineを使っているようなので、ビルドする前にそれをインストールしておきます。 「sudo …
自己書き換えみたいな感じのプログラムです。 これはいろいろな応用ができそうなので、ここに書いておきます。 function selfmodify() { var str = arguments.callee.name + " = function() {\ return \"bbbbb\";\ }"; eval(str); return "aaaaa"; } alert(s…