Monday, August 31, 2009

08/31/2009


  • 1 日の 00:00:00 に実行される cron を設定した。

  • 本番環境のデータベースを更新したりする cron だけに自宅からログインンして監視していた。

  • cron が実行されて 30 秒くらい経過したときセッションが expire するなどアクシデントに見舞われたが、どうやら正常に終了したようだ。



Sunday, August 30, 2009

08/30/2009

A problem occurs while installing OpenLDAP on Ubuntu Linux

Ubuntu Linux にて OpenLDAP を tar ボールからインストールしようとするとき、具体的に

./configure

を実行した後、

% ./configure
.....
.....
.....
checking db.h usability... no
checking db.h presence... no
checking for db.h... no
configure: error: BDB/HDB: BerkeleyDB not available
%


というエラーでつまずいたら、以下のようにパッケージをインストールする。

apt-get install libdb-dev


インストールした後、再度 configure を実行する。

How to connect to Microsoft Windows computers running Terminal Services on Ubuntu Linux

これまで不可能だと思っていたが、どうやら Linux distributions などから Windows マシンのターミナルサービスにログインできるようだ、以下のようなソフトウェアを利用して。


rdesktop

rdesktop は、自分の Ubuntu Linux 8.10 に既にインストールされていた。コマンドラインから実行する。

rdesktop remotehost





KRDC

一方 KRDC は リッチな UI を提供してくれる。KDE とネーミングされているが Gnome でも利用できる。KRDC はインストールされていなかったので、以下のように実行してインストールする。

sudo apt-get install krdc

Saturday, August 29, 2009

08/29/2009


  • 久々に Amazon Web Services で操作していたら AWS Management Console なる便利なツールが提供されていた、いつのまにか。

  • Linux distributions からも rdesktop というプログラムを利用して Windows Server に接続かつログインできる!

  • KRDC というソフトウェアを BlueSkyDetector からおしえてもらった。

  • 早速 Ubuntu Linux にインストールした。


Friday, August 28, 2009

08/28/2009


  • Microsoft Office Project なるソフトウェアをインストールした。

  • Excel での管理を中止するようだ。




Thursday, August 27, 2009

08/27/2009


  • 昨夜アルコールを飲んだ影響からかよろしくない体調だったので、ほぼ定時で業務を終了した。





Wednesday, August 26, 2009

08/26/2009


  • 某氏の送別会 in 川崎に参加した。

  • 早退する予定だったが、早退できなかった...。




Tuesday, August 25, 2009

Monday, August 24, 2009

08/24/2009


  • 10/04 に結婚式の二次会がスケジュールされた。





Sunday, August 23, 2009

08/23/2009


  • 追加の採用枠を確保できたら、という話らしい。





Saturday, August 22, 2009

08/22/2009


  • He didn't call me today...





Friday, August 21, 2009

08/21/2009


  • 送別会に参加した。

  • まったく予想していなかったオファーをいただいた。

  • 連絡を待つ...。



Thursday, August 20, 2009

08/20/2009


  • リリース予定だったが、この件の作業を停止するよう指示された。





Wednesday, August 19, 2009

08/19/2009


  • 20:00 前に終業する予定が 22:30 過ぎまで...。

  • 明日、ある小さなプログラムをリリースする予定だが、自分が考えていたほど小さくなかった...。かつ、正しい手順でリリースしなければならず、まったく意識していなかった。

  • 明日、職場に到着するまでに手順をまとめる予定だが、まとめられるか自信なし...。

  • 業務や職場の雰囲気について感想を記載してください、的なメールを受信したが、まったく手をつけられなかった。

  • 去年、大崎の、ある職場で仕事をした。そのときに知り合った韓国人の技術者が来週の水曜日に帰国するそう。今週の金曜日、つまり 21 日に送迎会が開催されるので参加する予定だ。

Tuesday, August 18, 2009

08/18/2009


  • リリース日

  • 対象は全キャリア

  • これまでの幾つかプログラムをリリースしてきたが、もっとも慌ただしく、しかもミスったし、想定していなかった事象も発生したリリースだった。



Monday, August 17, 2009

08/17/2009


  • 作業ログを確認するかぎり正確に対応したようだが、どうも問題を解消できなかった?らしく、注意されてしまった。

  • コロコロと作業の優先順位が変更される...

  • 明日にリリースがスケジュールされた。



Sunday, August 16, 2009

08/16/2009


  • 無駄に過ごしてしまった。

  • ただし、それなりに休息 (体力的にも精神的にも) できた。

  • 特に、土日に精神的な休暇を確保しないと、マジでしんどい。

  • 何も考えない気楽な人、みたいに思われているかもしれないが、そこそこテンパっている。


My First Kernel Module

Designing BSD Rootkits, 1st Edition を参考に、初体験 !? となる kernel module を作成してみた。つか、ほとんどコピペだ。

最初の 1 歩は、Loadable Kernel Modules を作成してみる作業だ。Loadable Kernel Modules は、kernel のサブシステムであり、boot した後にロードされたりアンロードされたりし、管理者が動的に機能を追加したり削除したりできる。

で... loadable kernel modul は LKM と省略されたりする。

本ページにて、これから記載しようとしている内容は、ここ Dynamic Kernel Linker Facility - KLD にオフィシャルドキュメントとして記載されている。ちなみに作業した OS は NetBSD でなく FreeBSD 7.2-RELEASE だ。


最初の KLD は、これだ。これは正しく完全な KDL だ。load 関数は、event handler を役割している。


#include <sys/param.h>
#include <sys/module.h>
#include <sys/kernel.h>
#include <sys/systm.h>

/* The function called at load/unload. */
static int
load(struct module *module, int cmd, void *arg)
{
    int error = 0;

    switch (cmd) {
    case MOD_LOAD:
        uprintf("Hello, world!\n");
        break;

    case MOD_UNLOAD:
        uprintf("Good-bye, cruel world!\n");
        break;

    default:
        error = EOPNOTSUPP;
        break;
    }

    return(error);

}

/* The second argument of DECLARE_MODULE. */
static moduledata_t hello_mod = {
    "hello",    /* module name */
    load,     /* event handler */
    NULL     /* extra data */

};

DECLARE_MODULE(hello, hello_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);



上記の内容をファイル hello.c として作成する。続いて Makefile を作成しよう。


KMOD=  hello        # Name of KLD to build.
SRCS=  hello.c      # List of source files.

.include



make を実行する。


% make
Warning: Object directory not changed from original /usr/home/satoshiabe
@ -> /usr/src/sys
machine -> /usr/src/sys/i386/include
cc -O2 -fno-strict-aliasing -pipe -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c hello.c
ld -d -warn-common -r -d -o hello.kld hello.o
:> export_syms
awk -f /sys/conf/kmod_syms.awk hello.kld export_syms | xargs -J% objcopy % hello.kld
ld -Bshareable -d -warn-common -o hello.ko hello.kld
objcopy --str
%



作成された kernel module つまり hello.ko をロードしたりアンロードしたりできる!


% sudo kldload ./hello.ko
Hello, world!
% sudo kldunload hello.ko
Good-bye, cruel world!
%



完璧だ。もし何もエラーが表示されないなら、起動してる kernel に kernel module をロードしたりアンロードしたことを意味する。次回、より高度 ? な内容にチャレンジしてみたいと思う。

NetBSD Kernel Reading Memo Aug 16

Saturday, August 15, 2009

08/15/2009


  • 13 時に起床する予定だったが 15 時を過ぎて目覚めてしまった。

  • 涼しく湿度の低い、まるで秋のような天気だった。

  • "硫黄島からの手紙"



static modifier in C

The word "static" has two meanings.



For data defined globally, "static" means "private to this file."


...





For data defined inside a function, it means "variable is allocated from static memory (instead of the temporary stack)."


#include <stdio.h>

void print_count()
{
    static int count = 0;
    count++;
    printf("%d\n", count);
}

int main()
{
    print_count();
    print_count();
    print_count();
    return(0);
}

Friday, August 14, 2009

08/14/2009


  • クロネコが荷物を破婚できてくれるはずだったので 19 時ちょうどに職場を脱出するはずだった。

  • 結局 22 時ごろまで残業...。

  • マシンのスペックが悪すぎてイライラしている。



NetBSD Kernel Reading Memo Aug 14


  • 初日

  • どこから開始すれば...

  • インストールした NetBSD の、どこかのディレクトリにソースファイルが存在するはずと考え、とりあえず Google した。

  • /usr/include か?

  • このあたり http://www.netbsd.org/docs/ のドキュメントから確認していく予定

Connecting to SQL Server in Python

http://pymssql.sourceforge.net/


import pymssql
conn = pymssql.connect(host='localhost', user='user', password='password', database='HOGE-DB')
cur = conn.cursor()
sql_string = "select * from tableName"
cur.execute(sql_string)
rows = cur.fetchall()
for row in rows:
    print row

Thursday, August 13, 2009

Wednesday, August 12, 2009

08/12/2009


  • 体調不良のため仕事を休んだ

  • 15:00 過ぎに目覚めた

  • OpenLDAP の replication を設定した。

  • いちおう replication していて同期されているが、ある一方の変更がもう一方へ反映されない。

  • kernel のソースコードを読む場合 Linux と BSD とで、どちらが better かを質問したところ NetBSD という回答をいただいた。

Enabling OpenSSH on NetBSD

ssh is part of the NetBSD base system, which means it is installed by default. But, after installing, sshd is not started. So you can edit /etc/rc.conf file and add line:

sshd=YES



If you want to run sshd right now:

# /etc/rc.d/sshd start

Setting up the global system timezone on NetBSD

Besides setting up the global system timezone by symlinking /etc/localtime to a file in /usr/share/zoneinfo

# ls -l /etc/localtime
lrwxr-xr-x 1 root wheel 25 Aug 13 08:40 /etc/localtime -> /usr/share/zoneinfo/UTC
# rm /etc/localtime
# cd /etc
# ln -s /usr/share/zoneinfo/Japan localtime
# /sbin/shutdown -r now

Tuesday, August 11, 2009

08/11/2009


  • リリースが延期された...





Creating a new directory in Python

>>> import os
>>> if os.path.exists(r'C:\tmpA') is False:
>>>     os.mkdir(r'C:\tmpA')

Monday, August 10, 2009

08/10/2009


  • リリースは明日に延期された





Sunday, August 09, 2009

08/09/2009


  • 藍屋で夕食

  • 大きな地震が

  • OpenLDAP のドキュメントを更新



Connecting to a PostgreSQL database using Common Lisp

後で書く

Saturday, August 08, 2009

08/08/2009


  • 数年も音信不通となっていた知人が連絡をくれた!

  • 午前中に耳鼻科へ。

  • Python に関係するメモを記述した。



Reading a text file in Python

f = open('/etc/passwd', 'r')

for line in f.readlines():
print line,

f.close()

A Sample In Python

Python を使用してスクリプティングするときのサンプル、というかひながた。"pass" が記述されている部分にメインの処理を記述する。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#import something

if __name__ == "__main__":

try:

pass

except Error, e:

print e

Connecting to the PostgreSQL using Perl

忘れていたのでメモ

% sudo apt-get install libdbi-perl libdbd-pg-perl
% vi connectToPostgreSQL.pl
#!/usr/bin/env perl

use warnings;
use strict;

use DBI;

my $dbh;
my $sth;
my $rc;
my $rows;

$dbh = DBI->connect('DBI:Pg:database=satoshiabe;host=172.16.227.128;port=5432', 'satoshiabe', 'satoshiabe');

if ($dbh) {
$sth = $dbh->prepare("SELECT * FROM table01 WHERE sysid > ?");
$sth->bind_param(1, 3);
$sth->execute;

while(my $ref = $sth->fetchrow_hashref()) {
print "$ref->{'uid'}\n";
}

$rows = $dbh->do("INSERT INTO table011 (uid) VALUES ('01ZZZZZZ')");
print $rows . + " rows affected\n";

$dbh->disconnect;
} else {
print "cannot connect to the database";
}

% chmod +x connectToPostgreSQL.pl
% ./connectToPostgreSQL.pl
%

Extracting String Using Regular Expressions In Python

% python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:29:17)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> p = re.compile(r'^(..).(..).*')
>>> p.sub(r'\2 \1', r'abcdefghijklml')
'de ab'
>>>

Using Named Columns in Python

% sudo apt-get install python-psycopg2
% python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:29:17)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> conn = psycopg2.connect("host='localhost' dbname='satoshiabe' user='satoshiabe' password='satoshiabe'");
>>> cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
>>> cur.execute("""SELECT * FROM table01""")
>>> rows = cur.fetchall()
>>> for row in rows:
...        print row['user_name']

Friday, August 07, 2009

Thursday, August 06, 2009

08/06/2009


  • 19 時から?職場で夏祭りみたいなイベントが開催されたが、参加できなかった。





Wednesday, August 05, 2009

08/05/2009


  • 体調不良で会社を休んだ。





Input and Output in Python

恥ずかしながら、いつも忘れるので...。

% python
Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open('/tmp/workfile', 'w')
>>> print f
<open file '/tmp/workfile', mode 'w' at 80a0960>
>>> f.write('This is a test\n')
>>> value = ('the answer', 42)
>>> print value
('the answer', 42)
>>> s = str(value)
>>> f.write(s)
>>> f.close()

Tuesday, August 04, 2009

08/04/2009


  • 12 時ごろに作業を完了した、が...。





Monday, August 03, 2009

08/03/2009


  • 22 時ごろから本格的に作業を開始し、10 時間ほど作業しっぱなしの予定だ。





Sunday, August 02, 2009

08/02/2009


  • 双眼鏡が配送された

  • Python を使用してスクリプトを作成しようと思ってハマった。現在 3 日の 04:10 AM なり。




How to connect to a PostgreSQL database using Python on Ubuntu Linux

% sudo apt-get install python-psycopg2
% python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> conn = psycopg2.connect("host='localhost' dbname='satoshiabe' user='satoshiabe' password='satoshiabe'");
>>> cur = conn.cursor()
>>> cur.execute("""SELECT * FROM table01""")
>>> rows = cur.fetchall()
>>> for row in rows:
...        print row

How to install Skype on Ubuntu Linux 64-bit version

Download Ubuntu 64 bit Skype package

Saturday, August 01, 2009

08/01/2009