2012-01-01から1年間の記事一覧

VimScriptでbrainfuck処理系

VimScriptのお勉強も兼ねて..vim/pluginディレクトリに入れて,.vimrcに nnoremap <C-i><C-f> :<C-u>call<Space>Bfrun_current_buffer()<CR> と書けば,Ctrl-i Ctrl-fと打つだけで,今開いているバッファがbrainfuck インタプリタで実行され,出力が新しいバッファとして開かれるよう</cr></space></c-u></c-f></c-i>…

VimScriptで躓きやすいところ

というか,今日初めてVimScript触ったので,躓いたところを列挙しただけです. 実行 :source % 出力 改行あり出力 echo v 改行なし出力 echon v 代入 代入 let v = 0 演算代入 let v += 1 文字列と配列 文字列結合 let s = 'ABC'.'DEF' let s .= 'GHI' 配列…

C言語で関数名の文字列を取得する方法

C言語で関数名を取得する方法だが,普通にC言語をコンパイルするとリンクの時点で関数名のシンボルは削除されるため,関数名を取得するにはちょっと小細工が必要になる. 自分なりにググってまとめたので書く. 方法 __func__を使う C言語には定義済みマクロ…

OS自作入門をGASでやる 1日目

helloos0とhelloos1はすっ飛ばし,helloos2からやることにした. コンパイル方法 # アセンブリをコンパイルする. # -nostartfilesオプション:標準のスタートアップルーチンを使わない # -nodefaltlibs:標準のライブラリを使わない %gcc -nostartfiles -node…

NVCCの吐くコードを観察する.

ネット探してもなかったんで. 元のコード #include <stdio.h> #define N 10 __global__ void add(int *a, int *b, int *c) { int tid = threadIdx.x; if (tid < N) c[tid] = a[tid] + b[tid]; } int main(void) { int a[N], b[N], c[N]; int *dev_a, *dev_b, *dev_c;</stdio.h>…

20分ごとにビーってなるやつ.

集中してると時間が経つのをすっかり忘れてしまうので適当に作った.

トライ木でお手軽連想配列

http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%82%A4%E6%9C%A8 かんたん! typedef struct TriTree_ { struct TriTree_ *children[256]; void *value; } TriTree; TriTree *new_tri_tree(){ int i; TriTree *t = malloc(sizeof(TriTree)); for (i = 0…

CUDA用簡易Makefile.

gistに上げなおした.

Mac OS XやUbuntuでSuperH開発環境(binutils, gcc)を構築する.

題名通りです./usr/sh-hitachi-elf ディレクトリ下にSuperH(SH)用の環境をインストールします. GCCとBinutilsのコンパイルの際に,ビルド用のディレクトリをわざわざ作っていますが,これは必須です.やらないとコンパイルできません. GMP,MPFR,MPCは多倍…

LISP処理系を作る(途中).

javascriptの勉強も兼ねて(といいつつc like).とりあえず構文木生成まではいけたと思う.そもそもlispをよくわかってないので合ってるのかなー. 動作 ("ABC" [1 2 3 ()])を与えると((65 (66 (67 ()))) (1 (2 (3 (() ())))))みたいになる. 文法 []リスト…

SSHでアクセスできない環境にトンネルを掘る方法

ただし,その環境から外に向かってSSH接続できる必要があります. ちなみに,ばれるとネットワーク管理者に殺されます.自分の家のネットワークで試しましょう.ここではSSHでアクセスできない,接続先:サーバ(server)接続元:クライアント(client)とします…

MacportsのMaximaでエラー

MacportsからインストールしたMaximaがエラーを吐く.どうやらSBCLというlispインタプリタが原因のよう. %maxima fatal error encountered in SBCL pid 91245: can't load .core for different runtime, sorry Welcome to LDB, a low-level debugger for th…

CUDA4.0 開発環境構築 on Ubuntu 11.04

追記:現在の配布されているCUDAは5.0なので,ここで紹介している方法は使えません. CUDAのダウンロードからドライバー、ツールキット、SDKをダウンロードする。 今回はUbuntu server 11.10 64bit を使ったので、CUDA FOR LINUX Ubuntu 11.04 64bit, Driver…

CGDBのショートカット一覧

CGDBとは CGDBっていう素敵なGDBフロントエンドがあって,viのキーバインドで操作できるらしい. 「GDB使えないのが許されるのは小学生までだよね〜」ということもあるのでGDBの使い方覚えます. ショートカット 前段階としてマニュアル見てショートカット一…

Pythonから使えるニコ生アラートAPI用スクリプトをgithubにぶち込みました.

REST API叩いてるだけです.本当にありがとうございました. Page not found · GitHubに整理したコードぶち込みました. xml2dictというライブラリ使ってます.github初めて使いました.

pythonでXMLSocket

0x00で区切られて,どんどん送られていくる.のでそれを拾うだけ. class XMLSocket : def __init__(self, host=None, port=None) : self.host = host self.port = port self.sock = None self.buf = "" def connect(self) : self.sock = socket.socket(sock…

サーバ諸設定

Ubuntu Serverを使って鯖を立てた時の諸設定 IPアドレスの固定 % vi /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopba…

PS/2プロトコルについて

PS/2キーボードをここしばらく制作しており,ある程度PS/2とPS/2キーボードのプロトコルがわかってきたので,ちょっとまとめてみます.参考にさせていただいたのは以下のサイトです. http://hp.vector.co.jp/authors/VA037406/html/ps2interface.htm http:/…

ドリランド言語作った.

brainfuckファミリ. ドリランド言語 brainfuck ラ > ン ドッ + ド - ! . ! , リ [ ♪ ] 実行例 % python dolifuck.py "ドッドッドッドッドッドッドッドッドッリラドッドッドッドッドッドッドッドッラドッドッドッドッドッドッドッドッドッドッドッラドッド…

PythonでBrainfuckインタプリタ

今更な感じもするがoutput Hello, world!追記:gistに上げ直しした.

CUI版Dropboxを使う.

Dropboxをインストール. $ cd ~ && wget -O - "http://www.dropbox.com/download?plat=lnx.x86" | tar xzf - $ wget "https://www.dropbox.com/download?dl=packages/dropbox.py" $ python dropbox.py start #URLが表示されるので開いて認証する #これで完…

mod_rewriteでURLを扱いたいけど,スラッシュが消える.

http://example.com/http://example.com/39661 を http://example.com/index.php?url=http://example.com/39661 に 変換したくて,mod_rewrite使ってみたんだけど,結局動かなかった.そのときの設定はコレ RewriteRule ^(http://.*)$ http://example.com/in…

MacでPyAudioを使ってみる.

インターバルタイマー的なのが欲しかったのでPythonで音を出そうと思い,PyAudioを使ってみました. PyAudioっていうのはPortAudioのPythonラッパで,PortAudioはプラットフォームに依存しない音声APIのライブラリらしいです. インストール 公式サイト http…

MP3のタグの文字化けを直す

EasyTagをつかう. インストール % apt-get install easytag 直し方 EasyTag起動して[メニュー]→[設定]→[設定][ID3 タグの設定]タブ ID3 Ver 1.x でタグを書き込む→非チェック ID3 Ver 2 でタグを書き込む→チェック 常に Unicode 文字セットを使用する→チェ…

UbuntuでIRC鯖を立てる

インストール % sudo apt-get install ircd-hybrid viで設定ファイルを書き換える # sudo vi /etc/ircd-hybrid/ircd.conf # host = "127.0.0.1"; # change this! host = "192.168.0.11"; # change this!IRC鯖を再起動 % sudo service ircd-hybrid restart

ファイル名が文字化けているのを直す

convmvを使う. インストール % sudo apt-get install convmv 直し方 % convmv -r -f sjis -t utf8 * --notest

windowsでシンボリックリンクを貼る

厳密にはシンボリックリンクではなくてジャンクションです. xpの場合 http://technet.microsoft.com/ja-jp/sysinternals/bb896768%28en-us%29.aspx からダウンロードし,exe をパスの通っているところに置く. junction リンク先 リンク元 http://sourcefor…

texで図表を表示する.

メモ. 前準備 プリアセンブリに \usepackage[dvipdfmx]{graphicx} を追加. 記述 図表を表示したいところに 図\ref{fig:opecode}に○○を示す. \begin{figure}[tb] \centering \includegraphics[width=8cm]{sample.png} \caption{\label{fig:opecode}○○} \en…

**** ERROR ** Could not find encoding file "H". っていうエラー

debian 6.0 squeese でdvipdfmxを使ってたらタイトルに書いたエラーが出た. 下記のパッケージを入れることで治りました.cmapというのは普通の文字をPDF用の内部表現に変えるのに使うデーブルが格納されたファイルっぽいです. % sudo apt-get install cmap…

2年生の時に書いたマインスイーパ

2年生の時に書いたマインスイーパ.懐かしい.cursesで動く.hjkl移動.