金曜日, 5月 29, 2009

gdbフロントエンド

gdbフロントエンド
  1. Insight is a graphical user interface to GDB, the GNU Debugger written in Tcl/Tk by people working at Red Hat, Inc. and Cygnus Solutions.
  2. GNU DDD is a graphical front-end for command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the Perl debugger, the bash debugger bashdb, the GNU Make debugger remake, or the Python debugger pydb.

魅惑の中国テレビ

中国ソフトマニアにある魅惑の中国テレビ

水曜日, 5月 27, 2009

网上知名论坛大全

この概要は表示できません。投稿を閲覧するには ここをクリック してください。

火曜日, 5月 26, 2009

Set the default applications on linux

Use xdg-mime to set default applications either for the whole system or the user account.

/usr/share/applications/defaults.list

~/.local/share/applications/defaults.list //For an individual already has this file


Run apropos xdg and see some commands about xdg-series

Reference:
apropos - whatis データベースより文字列を検索する。
xdg-mime - command line tool for querying information about file type handling and adding descriptions for new file types


Mime types in Gnome/Ubuntu
Regarding adding new MIME types, apparently previous version of Gnome included "File Types and Programs" utility that did not make up into Gnome 2.8. New approach explained here
http://www.gnome.org/~jrb/files/mime/

For now on you can add new MIME types manually as described here
http://www.fedoraforum.org/forum/showthread.php?t=26875
http://www.au.freebsd.org/gnome/docs/faq2.html#q22
http://www.freedesktop.org/wiki/Standards_2fAddingMIMETutor

There is a graphical MIME editor that is related to ROX file manager (It is not included into rox-filer package, so you need to install it yourself)
http://rox.sourceforge.net/phpwiki/index.php/MIME-Editor

ハードディスクイメージのマウント

ディスクイメージの作成
dd if=/dev/hdb of=/root/hdd.img bs=512 obs=1024k count=488397168 conv=sync,noerror

obsは出力する単位で、こちらはバッファリングするだけですので大きな値にすると高速化できるそうです。

countは後述するnoerrorで終端が無効になって無限ループするのを防ぐために指定します。countはbs単位です。countの値はdmesgやfdisk -luなどの出力などを見てハードディスク全体の長さになるよう決めます。

convはオプションでsyncは読み込めないセクタがあってもヌルパディングしてデータの位置を保持する、noerrorはエラーがあっても無視して続けることをそれぞれ表しています。



ディスクイメージのoffsetの調査
losetup -f   #使われていないloopデバイスを調べる
losetup /dev/loop0 /root/hdd.img #イメージをマウントする
fdisk -lu /dev/loop0 #セクタ単位でパーティションの位置を確認する
losetup -d /dev/loop0 #アンマウント


パーティションのマウント
mount /root/hdd.img /mnt/ntfs -t ntfs -o ro,loop,offset=32256,nls=utf8

offsetが重要でパーティションの開始位置をバイト単位で指定します。パーティションの開始位置とはセクタサイズ512byteのハードディスクの場合、fdisk -luで出てくるStartにセクタサイズの512をかけた値になります(今回は32256=512*63)。

ntfsパーティションをマウントする場合はnls=utf8を指定しないと日本語ファイルがLinuxから見えなくなります。utf8の指定方法にはiocharset=utf8とする方法や、-oとは別に-utfする方法がありますが、いずれも現在は推奨されずnlsを使うのが良いようです。


losetupしてからmountしても同じ事ができます
losetup /dev/loop0 /root/hdd.img --offset=32256
mount /dev/loop0 /mnt/ntfs -t ntfs -o ro,loop,nls=utf8


参照:ハードディスクイメージのマウント

日曜日, 5月 24, 2009

幾つかのgccオプション

リンクオプション

  • -fno-builtin

     名前の先頭が__builtin__で始まらない組み込み関数を認識しません.影響を受ける関数には,abort,abs,alloca,cos,exit,fabs,ffs,labs,memcmp,memcpy,sin,
    sqrt,strcmp,strcpy,strlenがあります.

     通常,GCCは特定の組み込み関数をより効率的に処理するために特殊なコードを生成します.たとえばallocaの呼び出しは,スタックを直接調整する単一の命令になることがあります.

     また,memcpyの呼び出しは,コピー命令のループをインライン展開したものになることがあります.結果として生成されるコードは,多くの場合,より小さくかつより速いものになりますが,関数を呼び出している部分が,実際にはもはや関数呼び出しには見えなくなるため,その関数呼び出しに対してブレークポイントを設定することができなくなるうえ,異なるライブラリとリンクすることによって関数のふるまいを変更することもできなくなります.

     -ansiオプションを指定すると,allocaとffsは組み込み関数ではなくなります.これらの関数はANSI規格では規定されていないからです.

  • -ffreestanding

     このオプションは組み込み環境や,カーネルをコンパイルする際に使用します.標準ライブラリが存在しない環境や,プログラムのスタートが__mainではない環境において使用します.

     これを指定すると同時に-fno-builtinオプションを指定したことになります.連載第3回で-fno-builtinオプションの解説をしましたが,GCC3.3になって,その意味が変わっています.これも後述します.

  • -nostartfiles

     リンク時に標準システムスタートアップファイルを使いません.標準システムライブラリは,-nostdlibや-nodefaultlibsが使用されない限り,通常は使用されます.

     組み込みなどの用途で標準スタートアップを使用しない場合に指定します.

  • -nostdlib

     リンク時に標準システムスタートアップファイルや標準システムライブラリを使用しません.スタートアップファイルはいっさいリンカに渡されません.指定されたライブラリだけがリンカに渡されます.

     -nostartfilesと同様に,組み込みなどの用途で標準スタートアップを使用しない場合に指定します.

木曜日, 5月 21, 2009

bashとsedで複数ファイルのテキストを置換する方法

bashとsedで複数ファイルのテキストを置換する方法

find . -name "*.html" -exec sed -i 's/元テキスト/置換後テキスト/' {} \;

或いは
find . -type f -exec perl -p -i -e 's/<html>/<html lang="ja">/g' {} \;


Howto Replace multiple file text string in Linux
grep -rl OLDSTRING . | xargs perl -pi~ -e ’s/OLDSTRING/NEWSTRING/’

Sorted
grep -rl OLDSTRING . | sort -u | xargs perl -pi~ -e ’s/OLDSTRING/NEWSTRING/’

Sed
grep -rl OLDSTRING . | xargs sed -i -e ’s/OLDSTRING/NEWSTRING/’

Microsoft AppLocale Utility

Microsoft AppLocale Utility

簡単な説明
Unicode 対応でないアプリケーションの言語 (システム ロケール) を変更することなく、従来のアプリケーションを実行できます。

水曜日, 5月 20, 2009

Amazon Web Serviceで書籍情報を取得する

Amazon Web Serviceで書籍情報を取得する



ブラウザからの取得例:
http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=XXXXXXXXXXXXXXX&Operation=ItemLookup&SearchIndex=Books&ResponseGroup=Large&IdType=ISBN&ItemId=9784873113647&ReviewPage=1

Valid values for the Operation parameter include TagLookup, ListLookup, CartGet, SellerListingLookup, CustomerContentLookup, ItemLookup, SimilarityLookup, SellerLookup, ItemSearch, VehiclePartLookup, BrowseNodeLookup, CartModify, ListSearch, CartClear, VehiclePartSearch, CustomerContentSearch, CartCreate, TransactionLookup, VehicleSearch, SellerListingSearch, CartAdd, Help.

PythonでAmazon Webサービスに接続する
Python library of Amazon Associates Web Service

SellerIDとMerchantIdの識別
http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&Version=2007-01-15&Operation=ItemLookup&SubscriptionId=xxxxxxxxx&ItemId=4792303419&IdType=ASIN&Condition=All&MerchantId=All&ResponseGroup=OfferFull,Offers,ItemAttributes

Access Key IDの取得

warehouse_deals_jp
warehouse_deals_jp
warehouse_deals_jp
warehouse_deals_jp
warehouse_deals_jp
warehouse_deals_jp
warehouse_deals_jp

GDAL - Geospatial Data Abstraction Library

GDAL - Geospatial Data Abstraction Library



GDAL is a translator library for raster geospatial data formats that is released under an X/MIT style Open Source license by the Open Source Geospatial Foundation. As a library, it presents a single abstract data model to the calling application for all supported formats. It also comes with a variety of useful commandline utilities for data translation and processing.

GDAL supports 40+ popular data formats, including commonly used ones (GeoTIFF, JPEG, PNG and more) as well as the ones used in GIS and remote sensing software packages (ERDAS Imagine, ESRI Arc/Info, ENVI, PCI Geomatics). Also supported many remote sensing and scientific data distribution formats such as HDF, EOS FAST, NOAA L1B, NetCDF, FITS.

OGR library supports popular vector formats like ESRI Shapefile, TIGER data, S57, MapInfo File, DGN, GML and more.


gdal source package in Ubuntu 1.5.2-3ubuntu1 version

火曜日, 5月 19, 2009

Scientific Softwares



MathematicaとMatlabの違いは
MathematicaとMatlabの違いは意外と知られていないようだが、Mathematicaは数式処理ソフトであり、Matlabは数値処理ソフトである。前者が連続を扱うのにたいして、後者は離散を扱うと考えればいいのではないか。
SageはMathematicaのフリー版と言えばいいと思うが、OctaveはMatlabのフリー版といったところ。


W32TeX

月曜日, 5月 18, 2009

Androidの開発環境「SDK 1.5 r1」をUbuntu 9.04上に

Androidの開発環境「SDK 1.5 r1」をUbuntu 9.04上に。アプリも稼働させてみる。

自然言語処理

朱鷺の杜Wikiは,情報論的学習理論,機械学習,統計,統計物理,データマイニングについての情報交換の場です.

カーネル法Wiki

土曜日, 5月 16, 2009

面白い映画

中国産インターネットテレビ「PPLive」と「PPstream」
PPLive
PPstream

  1. 校园兔女郎
  2. 初恋50次
  3. 偷穿高跟鞋
  4. 曼哈顿女佣
  5. 我最好朋友的婚礼
  6. 两颗绝望的心(2009年05月28日)


无英文字幕
  1. 小镇姑娘

水曜日, 5月 13, 2009

FirefoxでもcurrentStyleを使う

FirefoxでもcurrentStyleを使う

HTMLElement.prototype.__defineGetter__('currentStyle',

function()getComputedStyle(this,null)

)

camelize

プロパティ指定の互換を取るためにcamelizeとしてハイフン+小文字アルファベットを大文字アルファベットに直す関数を定義しておく。deCamelizeはその逆。


色を取得する場合はブラウザ毎に挙動が異なるので注意する。IEは指定したまま取得できるが、Operaは色を勝手に#16進6桁に展開。Firefoxに至ってはRGBフォーマットにしてしまう。
またFirefoxは短縮形で取得しようとすると、設定していないプロパティにデフォルト値が入った状態で返ってくるので注意する。


Main page - MDC Firefox Development topics


Safari Reference Library

アルゴリズムの紹介

アルゴリズムの紹介

ウェーブレット


ハールのウェーブレット変換

QEMU and GDB to debug bootsector

See Trying to use QEMU and GDB to debug GRUB 2

Start Qemu
  • For Floppy:
    qemu -fda floppya.img  -s -S
  • For CDROM:
    qemu -cdrom grub2.iso -s -S


Start GDB in another console

target remote localhost:1234
; as we start in 16bit real mode
set arch i8086
; set breakpoint in entry point, at begining of GRUB2's CD-ROM boot sector ode.
break *0x7c00
; entered 'c' to start execution until it hit the break point.


; to see where I really was I had to use following command:
x/10i $cs*16+$eip

日曜日, 5月 10, 2009

Delphiのメソッドをメソッド名から実行する方法

Delphiのメソッドをメソッド名から実行する方法

Skype Proxy Setting on Linux

Edit shared.xml file to add proxy settings there. This file is in home/.Skype directory.

Add section
<httpsproxy>
<addr>26.8.1.229:3128</addr>
<enable>1</enable>
<pwd>RmhjsdfsdQ=</pwd>
<user>kolach</user>
</httpsproxy>

in the <connection> scope of the file.

If the proxy has not user or password, then delete lines <user> or <pwd>.

It is better to change <disableport80> to
<disableport80>0</disableport80>


The password is not "encrypted", it's simply base64 encoded so that no unprintable characters make their way into shared.xml file.See Where are the proxy settings stored?

To figure out what text to put into <Pwd> tag:
echo -n "My Password" | base64

References about Operating Systems

金曜日, 5月 08, 2009

Targeting specific Browsers with CSS

Targeting specific Browsers with CSS, originated from Browser-specific CSS hacks

/***** Selector Hacks ******/

/* IE 6 and below */
* html #uno
{ color: red }

/* IE 7 and below */
*:first-child+html #dos
{ color: red }

/* IE 7 and modern browsers */

html>body #tres
{ color: red }

/* Modern browsers (not IE 7) */
html>
/**/body #cuatro { color: red }

/* Opera 9.27 and below */
html:first-child #cinco
{ color: red }

/* Safari */
html[xmlns*=""] body:last-child #seis
{ color: red }

/*safari 3+, chrome 1+, opera9+, ff 3.5+ */
body:nth-of-type(1) #siete
{ color: red }

/* safari 3+, chrome 1+, opera9+, ff 3.5+ */
body:first-of-type #ocho
{ color: red }

/* saf3, chrome1+ */
@media screen and (-webkit-min-device-pixel-ratio:0)
{
#diez { background
: #FFDECE; border: 2px solid #ff0000 }
}

/***** Attribute Hacks ******/

/* ie6 and below */
#once
{ _color:blue }

/* ie7 and below */
#doce
{ *color: blue } /* or #color:blue */

/* 'Modern Browsers' includes IE8, whether you agree or not.. :) */

VirtualBox上におけるFedoraのxorg.confの設定



# Xorg configuration created by system-config-display

Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "InputDevice"

# keyboard added by rhpxl
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "vboxvideo"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Videocard0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x800"
EndSubSection
EndSection



前編

木曜日, 5月 07, 2009

Mandriva Package Management

Mandriva Package Management, see also First Time Linux
GUI Tool
Mandriva Control Center → rpmdrake


CUI
Command What it tells you
rpm -qa list all installed packages
rpm -qa | grep -i office search for a certain installed package
rpm -qf /path/to/file similar to urpmf, but searches on installed system
rpm2cpio package.rpm | cpio -div extract the whole contents from a downloaded rpm
urpmc updates the local data about available packages in all media
urpmf xxxx.so find individual files in rpm packages
urpmf /path/to/file which package has installed "file*" in /path/to
urpme xxx removes the package xxx (and those that depend on it)
urpmi program install program
urpmi --auto-select automatically select upgradeable packages
urpmi --auto-select --update To update the packages based on the new lists
urpmi --auto-update merge urpmi.update -a and urpmi --auto-select
urpmi --fuzzy --test xxx shows all rpms that match string "xxx".
urpmi --keep xxx.rpm installs package xxx.rpm from the current directory and it's dependencies, but if anything has to be removed it will not
urpmi --keep --auto --auto-select update all packages from your enabled media, but don't remove anything: just tell if anything didn't work
urpmi --no-install freemind downloads all the rpms but doesn't install them.
However this doesn't just get the package you ask for, it also gets the dependencies as well
urpmi --test --keep --auto --auto-select update all packages from your enabled media but don't install or remove anything, just tell if it will work
urpmi --update --auto-select installs available updates from your enabled media
urpmi.update -a If a new software package is put into a repository urpmi needs to know about it.
With the command urpmi.update, urpmi gets to know about these new packages.
urpmi.update updates updates the local data about available packages in the medium "updates"
urpmq xmms query the urpmi database to see if there is an RPM for a program to install
urpmq --changelog xxx.rpm print changelog of the package in the current directory
urpmq -i stellarium get a package description
urpmq -i xxx.rpm info on the package xxx.rpm in the current directory
urpmq -il xxx.rpm info on the package xxx.rpm in the current directory & list of files that it installs
urpmq -l barrage see what files are inside the package
urpmq --list-url list the media currently being used
urpmq --sources inkscape just display the url where the package lives
urpmq --whatrequires xxx.rpm which package(s) require(s) the xxx.rpm in the current directory
wget $(urpmq --sources freemind) download a single package without its dependencies



Refer to Various Linux Package Operations

MINIXカーネル再構築:MINIX on VMware Player

MINIXカーネル再構築:MINIX on VMware Player


X Window Systemの起動
ログイン画面表示
xdm
或いはデバッグオプションを付けて実行
xdm -debug 1



xdmプロセスの終了
1.ps ax  grep xdm コマンドでxdmプロセスのプロセスIDを確認

2.kill コマンドでxdmプロセスを終了


Running Minix under qemu

Running Minix under qemu

Running X11 on Minix

Tweaking X11

水曜日, 5月 06, 2009

GNU makeの使い方

GNU makeの使い方

Automakeでmakeする

imake

C++で開発

GNU make Version 3.77 日本語版英語版

Linux Applications for Science & Engineering

Linux Applications for Science & Engineering


Mandriva 2009 Spring Freeのインストール

Mandriva 2009 Spring Freeのインストール



一旦既存のメディアを削除して、Easy URPMIから、2009.1のOfficial mediasとPLF mediasをインストール。GUIより実行すると途中で応答なしになるので、ターミナルから実行。
# urpmi.removemedia -a
# urpmi.addmedia --distrib --mirrorlist '$MIRRORLIST'
# urpmi.addmedia --distrib --mirrorlist 'http://plf.zarb.org/mirrors/$RELEASE.$ARCH.list' (コーデック関連)


次パッケージの更新も実行。
# urpmi.update -a
# urpmi --auto-select



元のリンクに追加インストールしたパッケージのリストが有って、合わせて念書としてここに書かれます(マルチメディア関連のツール)。
  • flash-player-plugin
  • smplayer
  • real-codecs
  • win32-codecs
  • pptp-linux

火曜日, 5月 05, 2009

intel2gas

intel2gas - A converter from NASM assembly language to GAS

yasm - modular assembler with multiple syntaxes support

x86dis - Frontend to libdisasm


flasm - assembler and disassembler for Flash (SWF) bytecode

libasm-java - Java bytecode manipulation framework

月曜日, 5月 04, 2009

C++コンパイラ依存のコーディング

C++コンパイラ依存のコーディング

  • Linux/GCC
    • __linux__, __GNUC__

  • Windows/VC++
    • _WIN32, _MSC_VER


Pre-defined C/C++ Compiler MacrosにStandards,Compilers,Libraries,Operating Systems,Architecturesに分かれて、詳しくかかれています。

GCCでデフォルト定義されるマクロ一覧を見る
echo | gcc -v -E -dM -

Remastersys

Remastersys for Debian and Ubuntu
Remastersys

  1. $ sudo gedit /etc/apt/sources.list
  2. sources.listの末尾に
    deb http://www.remastersys.klikit-linux.com/repository remastersys/
  3. $ sudo apt-get update
  4. $ sudo apt-get install remastersys


導入後、端末から「sudo remastersys」として起動。
「dists」コマンドで、home以外の配布用LiveCD/DVDイメージ(.iso形式)が作成できる、「backup」コマンドで、homeを含む全部のバックアップができます。

For other linux:
  • PCLinuxOS remasterme script
  • Mandriva mklivecd script
  • Fedora 10 Revisor

日曜日, 5月 03, 2009

Linuxにおけるフロッピーディスクのイメージファイルを作成する

Linuxにおけるフロッピーディスクのイメージファイルを作成する

mformat -f 1440 -C -B ipl.bin -i fd.img ::
mcopy kernel.bin -i fd.img ::



DOSフォーマット2.88Mフロッピーイメージの土台を作る

user$ dd if=/dev/zero of=drdos288.img bs=512 count=5760
user$ su -
root# losetup /dev/loop1 drdos288.img
root# mkdosfs -F 12 -S 512 -R 1 -I -v /dev/loop1
root# losetup -d /dev/loop1

as86汇编语言程序的编译和链接

《Linux内核完全剖析—基于0.12内核》でas86で作成されたファイルは512Bitでなく、544Bitです。この32Bitを削除するため、《Linux内核完全剖析—基于0.12内核》に三つの方法を紹介しました。

現在のLinuxシステムのas86には-bオプションでこの32Bitなしのコードを作成できます。

Linux i386 Boot Code HOWTO

LDP HOWTO-INDEX
Linux i386 Boot Code HOWTO


  • 静的なカーネル改変
    カーネルイメージは以下のように構成されている
    [bootsect][setup][[head][misc][compressed_kernel]

    ブートプロセスの詳細を理解しよう。このプロセスは以下のような論理的なステージに分割することが可能である:
    1. BIOS がブートデバイスを選択する。
    2. BIOS がブートデバイスから [bootsect] をロードする。
    3. [bootsect] が [setup] および [[head][misc][compressed_kernel]] をロードする。
    4. [setup] が実行され、 [head](it is at 0x1000 or 0x100000) にジャンプする。
    5. [head] が [misc] 中のカーネルの展開関数を呼び出す。
    6. [misc] が [compressed_kernel] を展開し、0x100000 からのアドレスに置く。
    7. 高レベルの初期化(linux/arch/i386/kernel/head.S 中の startup_32 から開始される) が行なわれる。

  • LKM なしでの動的なカーネル改変


ブートストラップ


/* Absolute addresses */
#define ABS(x) ((x) - _start + 0x7c00)
/* Print message string */
#define MSG(x) movw $ABS(x), %si; call message

.text
.code16
.globl _start
_start:
MSG(test_string)
loop: jmp loop

test_string: .string "test boot sector!"

/*
* Use BIOS "int 10H Function 0Eh" to write character in teletype mode
* %ah = 0xe %al = character
* %bh = page %bl = foreground color (graphics modes)
*/
1:
movw $0x0001, %bx
movb $0xe, %ah
int $0x10 /* display a byte */
message:
lodsb
cmpb $0, %al
jne 1b /* if not end of string, jmp to display */
ret

partion_table:
/* パーティションテーブル(16byte * 4)が格納されている */
. = _start + 446

boot_signature:
/* 最後の2バイトはブートシグニチャというマジックナンバになっている */
. = _start + 510
.word 0xaa55


コンパイルは次の通り.boot はちょうど 512 バイトになる.
$ gcc -c -O2 -nostdinc -fno-builtin boot.S -o boot.o
$ gcc -nostdlib -Wl,-N,-Ttext,7c00 -o boot.exec boot.o
$ objcopy -O binary boot.exec boot
$ dd if=boot of=a.img conv=notrunc

Converting kanji numbers to integers with Python

Converting kanji numbers to integers with Python