2012年1月23日月曜日

Hoge.c

/*
============================================================================
Name : Hoge.c
Author : M♂DS
Version :
Copyright : M♂DS
Description : Hoge in C, Ansi-style
============================================================================
*/

#include
#include

#define BUFFLEN 256

struct _list {
struct _list *prev;
struct _list *next;
char buff[BUFFLEN];
};

typedef struct _list LIST;

LIST * makeList(LIST *current) {
if (current == (LIST *) NULL) {
current = (LIST *) calloc(1, sizeof(LIST));
current->prev = (LIST *) NULL;
} else {
current->next = (LIST *) calloc(1, sizeof(LIST));
current->next->prev = current;
current = current->next;
}
current->next = (LIST *) NULL;
return current;
}

int main(void) {
LIST *q, *p;
int i;

p = q = (LIST *) NULL;
for (i = 0; i < 100; i++) {
p = makeList(p);
if (q == NULL) {
q = p;
}
snprintf(p->buff, BUFFLEN, "hoge %03d", i);
}

for (p = q; p; p = p->next) {
puts(p->buff);
}
return EXIT_SUCCESS;
}

次の案件に備えて11年ぶりくらいに
C言語を使ってみたが
意外と忘れてなくて良かったε-(´∀`*)ホッ

.screenrc

# -*- shell-script -*-

termcap kterm hs@
terminfo kterm hs@
term ansi
vbell off
bind w windowlist -b
hardstatus alwayslastline "%{= gw} %H %{= wk}%-Lw%{= bw}%n%f* %t%{= wk}%+Lw %{= wk}%=%{= gk} %y/%m/%d %c "
defhstatus I^En:^EtI
shell -$SHELL
startup_message off
autodetach on
defscrollback 5000

bind 'd' setenv DISPLAY
bind w windowlist -b
bind ^p paste
bind p paste

bind r eval 'echo "Resize window"' 'command -c resize'
bind -c resize ^] command
bind -c resize j eval 'resize +1' 'command -c resize'
bind -c resize k eval 'resize -1' 'command -c resize'

bindkey -m > eval "stuff ' '" writebuf 'exec sh -c "xsel -i -b < /tmp/screen-exchange; sleep 0.1"'


2009年2月23日月曜日

Ruby/RailsのためのVim導入(その1)

CentOSに付属のvim(vi)は、rubyオプションが有効になっていないので
vim-rubyを導入しても正しく動作しない。
よってvimの最新版をソースから導入する事にした。

作業前に、vimのrubyオプションが無効な事を確認

$ vim --version | grep ruby
+python +quickfix +reltime +rightleft -ruby +scrollbind +signs +smartindent
つ´Д`)つ


ソースをダウンロード
$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2
$ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
$ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz
$ tar xvfj vim-7.2.tar.bz2
$ tar xvfz vim-7.2-extra.tar.gz
$ tar xvfz vim-7.2-lang.tar.gz

パッチをダウンロード
※ブラウザで、ftp://ftp.vim.org/pub/vim/patches/7.2/ にアクセスして、最新の番号を確認する
$ mkdir patches
$ cd patches
$ wget ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.001-100.gz
$ curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.[101-124]'
$ cd ../vim72
$ zcat ../patches/7.2.* | patch -p0

configure
※--enable-rubyinterp を付ける

$ ./configure --enable-perlinterp --enable-pythoninterp --enable-tclinterp \
> --enable-rubyinterp --enable-multibyte --enable-xim --enable-fontset \
> --with-features=big --prefix=$HOME 2>&1 | tee config.log

makeして導入
$ make 2>&1 | tee make.log
$ make install
(prefixが、/usr/local とかならsudoを付ける)

確認
$ $HOME/bin/vim --version | grep ruby
+printer -profile +python +quickfix +reltime +rightleft +ruby +scrollbind

・-)

参照(っていうか、そのまんま・・・)
http://www.hazama.nu/t2o2/archives/002696.html

2008年8月2日土曜日

[ruby] rubygems でmysql ライブラリをインストールする

mysql-develが入っているか確認する

$ rpm -qa | grep -i mysql
mysql-5.0.45-7.el5
mysql-devel-5.0.45-7.el5

gemでインストールします(そのままだとエラーが出ますね)

$ sudo /opt/ruby/bin/gem install mysql --no-rdoc --no-ri
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/opt/ruby/bin/ruby extconf.rb install mysql --no-rdoc --no-ri
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/opt/ruby/bin/ruby
--with-mysql-config
--without-mysql-config
(snip)

Gem files will remain installed in /opt/ruby/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/ruby/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out

mysqlの設定を、mysql-configから取得するように指定

$ sudo /opt/ruby/bin/gem install mysql --no-rdoc --no-ri -- --with-mysql-config
Building native extensions. This could take a while...
Successfully installed mysql-2.7
1 gem installed

チェックする(require でmysqlが読み込めればOK)

$ /opt/ruby/bin/irb -rrubygems
irb(main):001:0> require 'mysql'
=> true
irb(main):002:0> exit

成功したっぽい

2008年7月28日月曜日

[unix] スペースを含むファイル名をfindとxargsで使う方法

Mac OS Xみたいに、ディレクトリやファイル名にスペースを含んでいる場合
find と xargsをそのまま実行すると
スペースの前後で別々の引数として処理される(´・ω・`)

・対応方法
スペースを区切り文字にするのではなく0(ゼロ、null)を区切り文字にする。

$ find . -type f -print0 | xargs -0 ls
のように
find には、-print0
xargsには、-0もしくは--null
オプションを指定する。

それでも正しく認識せんぞという場合は効率が悪いけど
xargs -i と "{}" を書くようにしよう・・・
 find -print0 | xargs --null -i ls "{}"