Hatena::Diary

Naruhodius::Diary このページをアンテナに追加 RSSフィード

January 18(Mon), 2010

今年に入ってから作ったものまとめ (gthumb, twittering-mode.el)

2010年も始まり早くも半月が経過した。新年になってからハックして成果物らしきものが一応できたのでまとめ。


gthumb の独自改変版

http://code.assembla.com/774-gthumb/git/changesets


リモートフォルダにある画像の表示と整理に gthumb を利用していたのだが操作性に不満があり他のツールもイマイチだったので、本体のソースコードに独自にパッチを当てることにした。


すでに実装した機能

  • Emacs/Vim ライクなキーバインド (n,jで次、p,kで前、等)
  • 同一フォルダの終端まで表示したら先頭に循環する改造

これから実装したい機能

  • 現在のフォルダの次/前のフォルダに移動する機能 ( gth-dir-list.c に関数を実装すれば出来る ? )
  • 同一フォルダ循環と順次移動の切り替え

等、他にもいろいろ考えられそうなので今後も自分でメンテしていくことにした。


ビルド方法

あらかじめ sudo apt-get build-dep gthumb してライブラリを揃えてから git clone git://git.assembla.com/774-gthumb.git してソースコードを取得し debuild -r fakeroot すれば Debian パッケージが生成されるので dpkg -i でインストールする。


twittering-mode.el の機能縮小版

http://github.com/id774/scripts/blob/1f94e5e6ce0c32d59ff1063a588459d36a87f22a/dot_files/dot_emacs.d/elisp/3rd-party/twitter1-mode.el


本家の twittering-mode.el の開発のスピードが最近やたら速いのだが、最新版はバギーだったりするし、肥大化していて実装されたすべての機能が欲しいわけではない。それと、コード全体を自分でメンテしていきたいと思ったので、少し古いバージョンに対し最新版から必要な機能だけを選んで取り込んだ版を作った。


現在残っている機能

  • タイムラインを見る
  • 自分のタイムラインを見る
  • 他人のタイムラインを見る
  • リプライを見る
  • 発言する (字数カウント有)

基本的にこの5つがあれば十分。 (リプライはあまり見ないけど)

fav や RT 、 jojo モード等は不要なので削除した。


これから実装したい機能

  • OAuth

今後も最新版のソースコードを追って、良さそうな機能があればそこだけ取り入れるという形で使っていこうと思う。

January 06(Wed), 2010

GNOME を使い始めた。

ふだんはウィンドウマネージャーとして Xfce を愛用しているのだが、仕事用のマシン (ThinkPad X61) は性能が比較的高いこともあり、試しに GNOME に切り替えてみた。


環境は Ubuntu 8.04 LTS / ThinkPad X61。

f:id:Naruhodius:20100106140847p:image


ネットブックのようなリソースの限られた環境では厳しいが、高性能な CPU を搭載したマシンならありかもしれない。

January 04(Mon), 2010

マシン最新状況

マシンまとめを以前に書いたが状況が変わっているので記録。


ThinkPad X60 1709GDJ

液晶が破損したりしたので arawas さんに譲渡した。猫の暖房として活躍中。

http://movapic.com/arawas/pic/974725

http://movapic.com/arawas/pic/974728

ThinkPad は今でも名機だと思うが、バッテリーの持続時間だけが唯一の不満であり、モバイルに適さなくなっていたのでマシンを買い換えた。


Eee PC 1000HE

たった3万円で新しく購入したマシン。バッテリー容量が 8700mA/h もあるため、実働で約7時間は持つ非常にスタミナのあるマシン。ちなみにカタログスペックで最長10時間駆動を謳う VAIO X のバッテリーは実は 4100mA/h しか無いのでその倍以上の容量ということになる。

f:id:Naruhodius:20091220044829j:image

f:id:Naruhodius:20091220044828j:image

購入直後に Windows を消して Debian GNU/Linux 5.0 lenny をクリーンインストールした。マシンパワーの低さだけが弱点だが主に Emacs と Terminal で作業するのでさほど問題にならない。現在のニーズにぴったりマッチしており非常に快適だ。安価なので平日持ち歩くのに最適。


MacBook (White, early 2007)

ThinkPad の存在であまり出番のなかった MacBook も、チューニングしなおしてモバイルで使うように。試しに年末にクラブに持っていったら快適だった。

f:id:Ubuntu:20090128032326j:image


Aspire One

こちらは軽さだけは No.1 だが、バッテリー持続時間が短いためモバイルマシンとしては引退か。スペアマシンまたはサーバー等の用途に使うことに。

f:id:Ubuntu:20090128032902j:image


13-inch MacBook Pro (Mid 2009)

現在メインのモバイルマシン。

f:id:Naruhodius:20100104174914j:image

December 26(Sat), 2009

xflock4 を書き換えた。

内部でいろんなスクリーンセーバーを探して、そのたびにパッケージが無かったりして、きちんと画面にロックがかからなかったりする。そこで思い切って全部書き換えた。

#!/bin/sh

test -x /usr/bin/gnome-screensaver && /usr/bin/gnome-screensaver > /dev/null 2>&1
gnome-screensaver-command --lock
exit 0

これで確実に gnome-screensaver でロックされるようになってスッキリした。

December 24(Thu), 2009

GNU/Linux から NTFS をマウントして利用する。

username と password は、接続先の Windows ドメインのアカウントと同一にする。

#!/bin/sh

test -n "$1" && IP_ADDRESS=$1
test -n "$1" || IP_ADDRESS=172.16.xx.xx

test -d ~/mnt/win || mkdir -p ~/mnt/win
if [ `df -T | grep 'mnt/win' | wc -l` = 0 ]; then
    smb.rb -m ~/mnt/win -s C$ -i $IP_ADDRESS -u username -p password
fi

引数に Windows ホストの IP アドレスを指定して実行すると、対象ホストの NTFS ファイルシステムを GNU/Linux のファイルシステムの一部として扱うことができるようになる。もちろん Windows Server による共有フォルダなどもマウントできる。

f:id:Naruhodius:20091224171933p:image


smb.rb の中身。

実行されるプラットフォームに応じて smbmount または net use コマンドを発行している。

#!/usr/bin/env ruby
$:.unshift File.join(ENV['SCRIPTS'], 'lib') unless ENV['SCRIPTS'] == nil
$:.unshift File.join(File.dirname(__FILE__), 'lib')

class ExecOnWin
  def run(mount, share, ipaddr, user, pass)
    bs = "\\"
    target = bs + bs + ipaddr + bs + share
    if system("ping -n 1 -w 3 #{ipaddr} > nul")
      puts `net use #{mount} #{target} #{pass} /USER:#{user} /persistent:no`
    else
      puts "#{ipaddr} ping timeout."
    end
  end
end

class ExecOnPosix
  def run(mount, share, ipaddr, user, pass)
    if system("ping -c 1 -i 3 #{ipaddr} > /dev/null")
      puts `sudo smbmount //#{ipaddr}/#{share} #{mount} -o rw,uid=#{user},username=#{user},password=#{pass},iocharset=utf8`
    else
      puts "#{ipaddr} ping timeout."
    end
  end
end

if __FILE__ ==$0
  require 'optparse'
  mount = '~/mnt'
  share = 'homes'
  ipaddr = ''
  user = ''
  pass = ''

  parser = OptionParser.new do |parser|
    parser.banner = "#{File.basename($0,".*")} by id774 <idnanashi@gmail.com>
    Usage: #{File.basename($0,".*")} [options]"
    parser.separator "options:"
    parser.on('-m', '--mount DIR/DRV', String, "mount (default = ~/mnt)"){|m| mount = m }
    parser.on('-s', '--share DIR', String, "share (default = homes)"){|s| share = s }
    parser.on('-i', '--ipaddr IP', String, "IP address"){|i| ipaddr = i }
    parser.on('-u', '--user username', String, "username"){|u| user = u }
    parser.on('-p', '--pass password', String, "password"){|p| pass = p }
    parser.on('-h', '--help', "show this message"){
      puts parser
      exit
    }
  end

  begin
    parser.parse!
  rescue OptionParser::ParseError => err
    $stderr.puts err.message
    $stderr.puts parser.help
    exit 1
  end

  if ARGV.size >= 0 && !ipaddr.empty?
    if ENV['windir'].nil?
      x = ExecOnPosix.new
    else
      x = ExecOnWin.new
    end
    x.run(mount, share, ipaddr, user, pass)
  else
    puts parser.help
  end
end

December 16(Wed), 2009

Ubuntu 8.04 LTS で Nuvola アイコンを無理矢理使う。

Karmic の gnome-themes-extras には Nuvola アイコンが含まれているようだ。そこで /etc/apt/sources.list を下記のようにして sudo aptitude update し、一時的に Karmic のリポジトリを利用する。

deb     http://jp.archive.ubuntu.com/ubuntu/ karmic main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ karmic main restricted universe multiverse
deb     http://jp.archive.ubuntu.com/ubuntu/ karmic-updates main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ karmic-updates main restricted universe multiverse

この状態で gnome-themes-extras パッケージをインストールする。

$ sudo aptitude install gnome-themes-extras
$ aptitude show gnome-themes-extras
パッケージ: gnome-themes-extras
新規: はい(yes)
状態: インストール済み
自動的にインストールされた: はい(yes)
バージョン: 2.22.0-3
優先度: 任意
セクション: gnome
メンテナ: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
展開サイズ: 13.5M
依存: gtk2-engines (>= 1:2.14), librsvg2-common
推奨: gnome-themes-more
説明: extra themes for the GNOME desktop
 This package contains a few nice contributed themes for the GNOME desktop. It includes the following global themes: 
 
 * Darklooks, a dark version of the standard Clearlooks theme. 
 * Unity, a smooth and rounded theme. 
   
 It also includes some icon themes for the desktop: 
 
 * GNOME Alternative, which is similar to the standard GNOME icon theme. 
 * Foxtrot, a simple theme in yellow tones. 
 * Dropline Neu, a flashy and colorful theme resembling Dropline GNOME. 
 * Gion, an original and sober theme.

完了したら /etc/apt/sources.list を元に戻すことを忘れずに。


参考

http://sugablog.air-nifty.com/impossibility/2009/05/ubuntu-904----1.html

December 09(Wed), 2009

reg.exe を利用してスクリプトで Windows の環境を変更する。

reg.exe を使えばレジストリをコマンドで変更できる。これを利用するスクリプトを書けば、コントロールパネルなどのダイアログを呼び出さなくても Windows の環境を切り替えることができる。


ThinkPad のブラウザキーの有効/無効を切り替えるスクリプトを書いた。

@echo off

set REGKey=HKLM¥SYSTEM¥CurrentControlSet¥Control¥Keyboard Layout
set REGValue="Scancode Map"

set RemoteMachine=%1

if ""=="%1" goto Usage
if "/?"=="%1" goto Usage
if /I "/h"=="%1" goto Usage
if /I "/a"=="%1" goto LocalMachine
if /I "/d"=="%1" goto LocalMachine
if /I "/b"=="%1" goto LocalMachine
set RemoteMachineName=%1
set Action=%2

:Parse
if /I "/a" == "%Action%" goto Add
if /I "/d" == "%Action%" goto Delete
if /I "/b" == "%Action%" goto Browse
goto Usage

:Add
rem レジストリを追加する
echo - レジストリキーを追加します - 操作対象は%RemoteMachineName%
REG ADD "¥¥%RemoteMachine%%REGKey%" /v %REGValue% /t REG_BINARY /d 00000000000000000300000000006ae0000069e000000000 /f
echo.
goto End

:Delete
rem レジストリを削除する
echo - レジストリキーを削除します - 操作対象は%RemoteMachineName%
REG DELETE "¥¥%RemoteMachine%%REGKey%" /v %REGValue% /f
echo.
goto End

:Browse
rem 操作対象のレジストリを表示する
echo - レジストリ値を表示 - 操作対象は%RemoteMachineName%
REG QUERY "¥¥%RemoteMachine%%REGKey%"
goto End

:LocalMachine
set Action=%1
set RemoteMachine=.
set RemoteMachineName=localhost
goto Parse

:Usage
rem コマンドラインのオプション
echo ------------------------------------------------------------
echo Usage:
echo %0 [machine_name] [/a] [/d] [/b] [/h]
echo /a = Add Registry
echo /d = Delete Registry
echo /b = Browse Registry
echo /h = Help
echo.
echo Examples:
echo %0 mymachine /a (Add Registry on machine "mymachine")
echo %0 /d (Delete Registry on the local machine)
echo ------------------------------------------------------------

:End
rem 終了時に環境変数をクリア
set REGKey=
set REGValue=
set Action=
set RemoteMachine=
set RemoteMachineName=

この例では、スクリプト名にオプション /a を付ければブラウザキーが無効になる。有効に戻すには /d オプションを付けてスクリプトを実行すればいい。


参考

ThinkPad X40 -ブラウザ・キーの無効化-

http://cherry.usacho.jp/20040320.html

November 24(Tue), 2009

Emacs でタブ・全角スペース・行末の空白文字列を目立たせる。

jaspace.el を試しに使ってみたらとても良かったので、こちらでも紹介。

wget http://homepage3.nifty.com/satomii/software/jaspace.el
wget http://openlab.dino.co.jp/wp-content/uploads/2008/08/dotemacs-jaspace.txt
mv jaspace.el ~/.emacs.d/elisp/3rd-party/
mv dotemacs-jaspace.txt ~/.emacs.d/elisp/jaspace-mode.el

ディレクトリはロードパスであればどこでも良い。jaspace-mode.el のファイル名はなんでも良い。中身は自分好みに少し編集したほうが良いかもしれない。


jaspace-mode を呼び出すとトグル動作で on/off を切り替えられるのでこれも設定しておくと良い。

;; タブ, 全角スペース、改行直前の半角スペースを表示する(トグルで動作)
(define-key global-map "\C-c\C-c\C-t" 'jaspace-mode)

参考

続・Emacsでタブ・全角スペース・行末の空白文字列を目立たせる

http://openlab.dino.co.jp/2008/08/29/230500336.html

November 10(Tue), 2009

Opera 10.01 にアップグレードした。

qt3 ではなく qt4 の Opera を利用しているので wget した。

wget ftp://ftp.yz.yamagata-u.ac.jp/mirror7/opera/linux/1001/final/en/i386/opera_10.01.4682.gcc4.qt4_i386.deb
sudo gdebi opera_10.01.4682.gcc4.qt4_i386.deb

October 22(Thu), 2009

ClamAV の開発版を利用する。

オープンソースのアンチウイルスソフトウェアである ClamAV が Debian GNU/Linux の stable から削除された。

http://lists.debian.org/debian-security/2009/10/msg00037.html


リポジトリは、かつては SVN だったが現在では git に移行している。

http://www.clamav.net/download/sources


常に開発版の最新のソースコードを利用することにした。

test -d install_clamav || mkdir install_clamav
cd install_clamav
git clone git://git.clamav.net/git/clamav-devel
cd clamav-devel
./configure
make
sudo make install
sudo vim /usr/local/etc/freshclam.conf /usr/local/etc/clamd.conf
sudo chmod 700 /usr/local/etc/freshclam.conf
sudo cp /usr/local/etc/freshclam.conf /usr/local/etc/freshclam.conf.base
sudo cp /usr/local/etc/clamd.conf /usr/local/etc/clamd.conf.base
sudo freshclam
cd ..
test -d /usr/local/src/security/clamav && sudo rm -rf /usr/local/src/security/clamav
test -d /usr/local/src/security/clamav-devel && sudo rm -rf /usr/local/src/security/clamav-devel
test -d /usr/local/src/security || sudo mkdir -p /usr/local/src/security
case $OSTYPE in
  *darwin*)
    sudo cp -R clamav-devel /usr/local/src/security
    sudo chown -R root:wheel /usr/local/src/security/clamav-devel
    sudo chown root:wheel /usr/local/src/security
    sudo chown root:wheel /usr/local/src
    ;;
  *)
    sudo cp -a clamav-devel /usr/local/src/security
    sudo chown -R root:root /usr/local/src/security/clamav-devel
    sudo chown root:root /usr/local/src/security
    sudo chown root:root /usr/local/src
    ;;
esac
rm -rf clamav-devel/
cd ..
rm -rf install_clamav/

あとは cron で定期的にアップグレードとスキャンを実行する。 $EXCLUDEFILE にはスキャン対象外のディレクトリを羅列しておく。

TARGETDIRS="/"
LOGFILE=/var/log/clamscan.log
EXECDIR=${0%/*}
EXCLUDEFILE=$EXECDIR/clamscan_exclude
cd /usr/local/src/security/clamav-devel
git pull
make clean
./configure
make
make install
test -f /usr/local/etc/freshclam.conf.base && cp /usr/local/etc/freshclam.conf.base /usr/local/etc/freshclam.conf
test -f /usr/local/etc/clamd.conf.base && cp /usr/local/etc/clamd.conf.base /usr/local/etc/clamd.conf
chmod 700 /usr/local/etc/freshclam.conf.base
chmod 700 /usr/local/etc/freshclam.conf
freshclam
if [ -s $EXCLUDEFILE ]; then
    for i in `cat $EXCLUDEFILE`
    do
        if [ $(echo "$i"|grep \/$) ]; then
            i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
            OPTS="${OPTS} --exclude-dir=$i"
        else
            OPTS="${OPTS} --exclude=$i"
        fi
    done
fi
for dir in $TARGETDIRS
do
    echo "clamscan ${dir} ${OPTS} -r -i -l ${LOGFILE}"
    clamscan ${dir} ${OPTS} -r -i -l ${LOGFILE}
done

September 15(Tue), 2009

Ubuntu 8.04 LTS で s2ram を利用してサスペンドをする。

まず s2ram のソースコード一式を以下のサイトからダウンロードする。


Userspace Software Suspend

http://suspend.sourceforge.net/


次にビルドに必要となるパッケージをまとめてインストールする。

sudo aptitude install uswsusp acpi acpi-support pmtools pciutils-dev libx86-dev

s2ram のビルドに成功すると /usr/local/sbin/s2ram が生成される。

s2ram -f などのオプションでサスペンドできることを確認する。


Xubuntu で、ショートカット・キーのみで素早く安全にサスペンドをする。

Xfce の場合 xflock4 でスクリーンをロックできる。

そこで /usr/local/sbin/xfsuspend という名称で以下のようにスクリプトを作成する。

#!/bin/sh

xflock4 && s2ram -f

これを/etc/sudoers に登録する。

Cmnd_Alias SUSPEND = /usr/local/sbin/xfsuspend

%admin ALL=(ALL) ALL
%admin ALL=(root) NOPASSWD: SUSPEND

あとは Xfceのキーボード設定で任意のショートカット・キーから sudo xfsuspend を呼び出せば良い。

September 03(Thu), 2009

Opera 10 を導入する。

Opera 10 が正式にリリースされたのでまとめ。


Mac OS X (10.5/10.6)

Opera の公式サイトから .dmg ファイルをダウンロードしてインストールする。

ベータ版を使っていた場合はプロファイルディレクトリをリネームすれば以前の設定が引き継がれる。

cd ~/Library/Preferences
mv "Opera Preferences 10" "Opera Preferences"

Ubuntu (8.04/8.10/9.04) または Debian GNU/Linux 5.0

Qt4 版を入れて SCIM で日本語入力するのが良さそう。

sudo aptitude install -y scim-bridge-client-qt scim-bridge-client-qt4 gdebi
wget ftp://ftp.yz.yamagata-u.ac.jp/mirror7/opera/linux/1000/final/en/i386/opera_10.00.4585.gcc4.qt4_i386.deb
sudo gdebi opera_10.00.4585.gcc4.qt4_i386.deb

スキンを使う

Opera を入れてからスキンのページを開いて「スキンをダウンロード」をクリックする。

http://my.opera.com/community/customize/skins/info/?id=8760

August 16(Sun), 2009

Firefox のタイトルを変更する。

about:config の nightly.templates.title で設定できる。

${DefaultTitle} Firefox ${version} (Build ${AppBuildID}) Gecko ${geckoVersion} Profile ${Profile}

f:id:Naruhodius:20090816181454p:image

July 30(Thu), 2009

Ubuntu 8.04 LTS のメインブラウザを Opera 10 Beta2 にした。

背景

今まで仕事では ThinkPad X61Ubuntu 8.04 LTS を入れて Firefox 3.0 を利用していた。今日になって Firefox を起動しようとしてもプロセスそのものはメモリ内に常駐するがウィンドウが表示されない状態が起こるようになった。プロファイルの再作成、apt での再インストール、Mozilla の公式サイトや外部リポジトリにある Firefox 3.0/3.5 の導入、WM の変更などいずれを試しても改善しない。かねてから多機能でセキュアだけど鈍重な Firefox に少し嫌気が指していたので、ちょうど良い機会だから Firefox を捨て Ubuntu に Opera を入れてメインブラウザをスイッチしてみることにした。そこで手順などをまとめ。


ダウンロード

i386 版を利用しているので以下から最新のベータ版を導入する。

http://www.opera.com/browser/download/?os=linux-i386&list=all

今回は現時点最新の Opera 10.00 Beta2 をダウンロードした。tarで解凍して sudo ./install.sh してあらかじめ作成しておいた /opt/opera ディレクトリをインストール先に指定する。Xfce のショートカット C-M-o に /opt/opera/bin/opera を割り当てる。Opera は apt で入れることのできる Debian なリポジトリも用意されているのだが、手動で最新のベータ版を導入するのでリポジトリは利用しない。


日本語入力

もっともハマったのがこの日本語入力。このままだと Opera (というか Qt を使うアプリケーション) で ZenkakuHankaku 相当のキーを押しても日本語入力が有効にならない。最近の Ubuntu では scim が標準らしいが、これを利用すると Opera が落ちまくるという情報があるし、そもそも好みじゃないので uim-anthy を Opera で利用することにした。

主に以下の内容を参考にした。

http://d.hatena.ne.jp/zzzhaya/20081213


scimのremove
sudo apt-get remove scim

これをすると利用していないパッケージとして ttf-vlgothic までうっかりアンインストールされてしまったので Emacs のフォント表示が悲惨なことに。すぐに再インストールして事無きを得た。


uimをinstall
sudo aptitude install uim uim-m17nlib

QT_IM_MODULE=xim のみを設定すれば良いらしいので、設定ファイルを以下の通りに編集した。これで GTK では uim を利用しつつ、Qt では xim という状態になるので Opera で日本語入力を利用できるようになる。


/etc/X11/xinit/xinput.d/uim
# uim without toolbar indicator
XIM=uim
XIM_PROGRAM=/usr/bin/uim-xim
XIM_ARGS=
GTK_IM_MODULE=uim
QT_IM_MODULE=xim
# It seems to me that the system needs to be initialized.
# Folowing trick will wait 10 seconds without slowing down X start up.
#XIM_PROGRAM_XTRA="(sleep 10; uim-toolbar-gtk)"
DEPENDS="uim-xim,uim-gtk2.0|uim-qt,uim-anthy|uim-canna|uim-prime|uim-skk|uim-m17nlib"

システムトレイにuimのバーを格納する。
sudo update-alternatives --config xinput-ja_JP

初期設定

スピードダイアル

画面右下の Configure Speed Dial から設定変更できる。4x4などに適当に拡大してよく利用するサイトをがしがし登録していく。


Preferences

Startup を Start with Speed Dial にして Home page に自分のサイトを登録する。


フォント

E-mail compose/display、Web page normal text、Text field などを IPA モナーフォントの明朝体にする。ウェブページのテキストが IPA モナー明朝だとそれだけで見映えは非常に良くなる。等幅フォントを VL ゴシックにする。UI 周りは IPA モナーゴシックをそのまま使ったほうが Opera の場合は良さそう。


パスワード/ブックマークレット

ウェブサービスのパスワードは保管しておけば次回から C-Enter で呼び出せる。なので主要なウェブサービスのパスワードをブラウザに記憶させておく。さらに [View]-[Toolbars]-[Personal Bar] を表示させてここにブックマークレットを登録する。

Nickname を設定しておくと C-l でアドレスバーにジャンプして略称を打つだけでブックマークレットを呼び出せる。このあたりは Firefox と同じなので共通のキーをアサインしておくと幸せになれる。


ショートカットキー

Opera のショートカットキーは以下を参考にする。

http://help.opera.com/Windows/9.00/ja/keyboard.html


Flash Player

libflashplayer.so を直接ブラウザのプラグインに入れていた場合は Opera で利用できないので .deb パッケージを以下からダウンロードしてシステムにインストールする。

http://www.adobe.com/jp/products/flashplayer/


完成

以前に Opera を利用したときは全角文字の文字化けがひどかったり C-l でアドレスバーに飛べなかったりと悲惨だった記憶があるが、どうやらこれなら実用レベルで使えそう。Mac でも Safari をメインに利用しているし、これで自分の利用環境としては Firefox はほぼ不要になった。

July 08(Wed), 2009

はてなダイアリーに技術メモを書く理由。

ソースコードのシンタックスハイライトがさまざまな種類の言語に対応しているから。


ブログを始めました。

旧ブログ (もう更新されません)

http://d.hatena.ne.jp/Ubuntu/