平衡点
2008/09/07
_ 学会発表終了
疲れた.
VMware 上の Windows XP で PowerPoint を使ってみたのだけれど, 図が大くなると頻繁にスワップアウトして, 画像が出なくなる, という現象に遭遇.
2008/09/09
_ Rails で文献管理システムを作ってみるよ(2/n)
前回はこちら.
- 本日のお品書き
- test の作成, 修正, 追加
- Article 作成時の修正
- (start|end)_page は integer で渡す. model でそれをチェックする.
- year は Date オブジェクトを渡す. 必要なのは year のみ.
の予定でしたが,方針を変えて, 勉強がてら RSpec on Rails を使用してみます.前回, 既に scaffold を使って model, view, controller を作成しているのですが, これを一度忘れてみましょう(なんてこった).
$ ruby script destroy scaffold Article
さよ〜なら〜
RSpec on Rails の導入
ついでに, Selenium on Rails も導入しておきます.
$ rake db:create $ ruby script/plugin install http://rspec.rubyforge.org/svn/tags/CURRENT/rspec $ ruby script/plugin install http://rspec.rubyforge.org/svn/tags/CURRENT/rspec_on_rails $ ruby script/plugin install http://svn.coderepos.org/share/lang/ruby/selenium_rc_spec
RSpec の準備
$ ruby script/generate rspec
Article モデルの作成
まずは rspec_model を作成します.
$ ruby script/generate rspec_model Article \ title:string \ authors:string \ year:datetime \ journal:string \ volume:integer \ start_page:integer \ end_page:integer ... $ rake db:migrate $ rake db:text:clone # Spec 用データベースを生成
というわけで, 以後は
- Spec で振る舞いを記述
- テスト(赤)
- コードの実装
- テスト(緑)
- リファクタリング
の順に開発を行なっていきます.
振る舞いの記述
spec/model/article_spec.rb で Spec を記述します. 何も記述していないと,
require File.dirname(__FILE__) + '/../spec_helper' describe Article do before(:each) do @article = Article.new end it "should be valid" do @article.should be_valid end end
となっていると思いますので, これを修正します. 例えば「タイトルが空の場合は Article を記述できない」という Spec を記述するならば
require File.dirname(__FILE__) + '/../spec_helper' describe Article," を生成するとき" do before(:each) do @title = 'タイトルの例' @authors = '著者の例' @year = '2004' # 年の例 @journal = '雑誌の例' @volume = '雑誌の巻数の例' @start_page = '001' # start page の例 @end_page = '020' # end page の例 end it "は, title が空の場合 valid ではないこと" do @article = Article.new( :title => nil, :authors => @authors, :year=> @year, :journal => @journal, :volume => @volume, :start_page => @start_page, :end_page => @end_page) @article.should_not be_valid end end
といった感じですかね. ちなみに, ファイルは UTF-8 で作成しておきます. あと, config/environment.rb の冒頭に $KCODE='u' を追加しておきます.
テスト(赤)
ここで spec でテストを行なうと,
$ rake spec ... 1) 'Article を生成するとき は, title が空の場合 valid ではないこと' FAILED expected valid? to return false, got true ./spec/models/article_spec.rb:23: Finished in 0.339274 seconds 1 example, 1 failure rake aborted!
となって, app/model で実装していないので, テストは失敗します.
コードの実装
次に app/model/article.rb を実装します. 以下の様に.
class Article < ActiveRecord::Base validates_presence_of :title end
テスト(緑)
そして spec を実行すると
$ rake spec ... . Finished in 0.339777 seconds 1 example, 0 failures
となります. spec に記述した振舞い通りに model が動いていることが test された訳です.
最終的に
Article モデルはどうしたかったのか, と言えば,
- title, authors, year は必須.
- start_page と end_page は, start_page <= end_page とする.
でした.
そんな訳で, 書いた spec とモデルは以下の通り
require File.dirname(__FILE__) + '/../spec_helper' require 'date' describe Article," を生成するとき" do before(:each) do @title = 'タイトルの例' @authors = '著者の例' @year = Date.today @journal = '雑誌の例' @volume = '雑誌の巻数の例' @start_page = '001' # start page の例 @end_page = '020' # end page の例 end it "は, title が空の場合 valid ではないこと" do @article = Article.new( :title => nil, :authors => @authors, :year=> @year, :journal => @journal, :volume => @volume, :start_page => @start_page, :end_page => @end_page) @article.should_not be_valid end it "は, authors が空の場合 valid ではないこと" do @article = Article.new( :title => @title, :authors => nil, :year=> @year, :journal => @journal, :volume => @volume, :start_page => @start_page, :end_page => @end_page) @article.should_not be_valid end it "は, year が空の場合 valid ではないこと" do @article = Article.new( :title => @title, :authors => @authors, :year=> nil, :journal => @journal, :volume => @volume, :start_page => @start_page, :end_page => @end_page) @article.should_not be_valid end it "は, start_page < end_page でなければならないこと" do @article = Article.new( :title => @title, :authors => @authors, :year=> @year, :journal => @journal, :volume => @volume, :start_page => @end_page, :end_page => @start_page) @article.should_not be_valid end end
で, これをテスト(緑)にしたモデルが
class Article < ActiveRecord::Base require 'date' validates_presence_of :title, :authors, :year protected def validate if start_page > end_page errors.add :start_page, "始めのページが最後のページより大きいよ?" end end end
次は
- fixtures を使って, spec をもっと簡潔に書く
- controller, view も spec を使うよ
へ続きます. 多分.
_ HDD の I/O エラー
数日前にも書いたけれど, また出た. どうも同じ場所らしい.
$ cp /var/log/syslog* ~/tmp $ cd ~/tmp $ gzip -d syslog*.gz $ grep sector syslog* | grep error
そうすると
hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, high=3, low=14982393, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, high=3, low=14982393, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, high=3, low=14982393, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, high=3, low=14982393, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, high=3, low=14982393, sector=65314034 end_request: I/O error, dev hda, sector 65314034 hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=65314041, high=3, low=14982393, sector=65314034 end_request: I/O error, dev hda, sector 65314034
と全部同じ場所ですなぁ... ふーむ.
とりあえずバックアップとって, 明日 fsck.ext3 -c かけてみるかな.
_ kernel を 2.6.24 -> 2.6.26 へ
lenny に 2.6.26 が来た + VMware Workstation の 6.0.5 が出た(kernel 2.6.26 で問題無く build できる, らしい)ので, 使用している laptop の kernel を version up してみた.
- 使用したソースの version
- linux-tree-2.6.26: 2.6.26-4
- tuxonice: tuxonice-3.0-rc7a-for-2.6.26.patch
- pcc_acpi: <URL:http://marc.info/?l=linux-acpi&m=121514342014994&w=2:title> に投稿された kernel patch. pcc_acpi.patch_0.94 としておく.
- patch は /usr/src/patches に置いておく.
先ず Debian パッケージで提供されている linux-image-2.6.26-1-686 を導入して, 使用できるかを試しておく. カスタムカーネルから boot できない時の保険のために, 公式パッケージのカーネルはいつでも install している. 無事 boot できて, 普通に動くようなら, そこから作業開始.
$ sudo apt-get install linux-tree-2.6.26 ... $ cd /usr/src $ tar xf linux-source-2.6.26.tar.bz2 $ ln -s linux-source-2.6.26 linux $ cd linux $ patch -p1 < ../patches/tuxonice-3.0-rc7a-for-2.6.26.patch $ patch -p1 < ../patches/pcc_acpi.patch_0.94 $ make oldconfig ...
横着に make oldconfig で Debian パッケージの config をコピーしている. 実際に config が欲しいだけなら, deb パッケージを適当に展開して, config-2.6.26-1-686 を取り出せば良い.
幾つか設定して, 設定後は以下.
+++ /usr/src/linux/.config 2008-09-09 15:25:43.000000000 +0900 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.26 -# Thu Aug 28 10:32:31 2008 +# Linux kernel version: 2.6.26.deutzia +# Tue Sep 9 15:25:43 2008 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -35,7 +35,7 @@ # CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set # CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y @@ -46,12 +46,7 @@ CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_PENDING_IRQ=y -CONFIG_X86_SMP=y -CONFIG_X86_32_SMP=y -CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y -CONFIG_X86_TRAMPOLINE=y CONFIG_KTIME_SCALAR=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" @@ -59,7 +54,7 @@ # General setup # CONFIG_EXPERIMENTAL=y -CONFIG_LOCK_KERNEL=y +CONFIG_BROKEN_ON_SMP=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set @@ -82,7 +77,6 @@ # CONFIG_CGROUP_DEBUG is not set CONFIG_CGROUP_NS=y CONFIG_CGROUP_DEVICE=y -CONFIG_CPUSETS=y CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y @@ -93,7 +87,6 @@ # CONFIG_RESOURCE_COUNTERS is not set CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y -CONFIG_PROC_PID_CPUSET=y CONFIG_RELAY=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y @@ -149,7 +142,6 @@ CONFIG_MODVERSIONS=y # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_KMOD=y -CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_LBD=y CONFIG_BLK_DEV_IO_TRACE=y @@ -178,7 +170,7 @@ CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -CONFIG_SMP=y +# CONFIG_SMP is not set CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set @@ -203,10 +195,10 @@ # CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set -CONFIG_M686=y +# CONFIG_M686 is not set # CONFIG_MPENTIUMII is not set # CONFIG_MPENTIUMIII is not set -# CONFIG_MPENTIUMM is not set +CONFIG_MPENTIUMM=y # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set @@ -227,14 +219,14 @@ # CONFIG_X86_GENERIC is not set CONFIG_X86_CPU=y CONFIG_X86_CMPXCHG=y -CONFIG_X86_L1_CACHE_SHIFT=5 +CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_XADD=y -CONFIG_X86_PPRO_FENCE=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_GOOD_APIC=y +CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_P6_NOP=y CONFIG_X86_TSC=y @@ -245,12 +237,11 @@ CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y # CONFIG_IOMMU_HELPER is not set -CONFIG_NR_CPUS=8 -CONFIG_SCHED_SMT=y -CONFIG_SCHED_MC=y CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set +CONFIG_X86_UP_APIC=y +CONFIG_X86_UP_IOAPIC=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_MCE=y @@ -291,7 +282,6 @@ CONFIG_MTRR=y # CONFIG_X86_PAT is not set CONFIG_EFI=y -# CONFIG_IRQBALANCE is not set CONFIG_SECCOMP=y # CONFIG_HZ_100 is not set CONFIG_HZ_250=y @@ -304,7 +294,6 @@ CONFIG_PHYSICAL_START=0x100000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x100000 -CONFIG_HOTPLUG_CPU=y # CONFIG_COMPAT_VDSO is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y @@ -313,12 +302,34 @@ # CONFIG_PM=y # CONFIG_PM_DEBUG is not set -CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="" +CONFIG_TOI_CORE=y + +# +# Image Storage (you need at least one allocator) +# +CONFIG_TOI_FILE=y +CONFIG_TOI_SWAP=y + +# +# General Options +# +CONFIG_TOI_DEFAULT_PRE_HIBERNATE="" +CONFIG_TOI_DEFAULT_POST_HIBERNATE="" +CONFIG_TOI_CRYPTO=y +CONFIG_TOI_USERUI=y +CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/lib/tuxonice-userui/tuxoniceui_text" +# CONFIG_TOI_KEEP_IMAGE is not set +CONFIG_TOI_REPLACE_SWSUSP=y +CONFIG_TOI_CHECKSUM=y +CONFIG_TOI_DEFAULT_WAIT=25 +CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=500 +# CONFIG_TOI_PAGEFLAGS_TEST is not set +CONFIG_TOI=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_PROCFS=y @@ -333,10 +344,10 @@ CONFIG_ACPI_DOCK=m CONFIG_ACPI_BAY=m CONFIG_ACPI_PROCESSOR=m -CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m CONFIG_ACPI_WMI=m CONFIG_ACPI_ASUS=m +CONFIG_ACPI_PANASONIC=m CONFIG_ACPI_TOSHIBA=m # CONFIG_ACPI_CUSTOM_DSDT is not set CONFIG_ACPI_BLACKLIST_YEAR=0 @@ -347,14 +358,7 @@ CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=m CONFIG_ACPI_SBS=m -CONFIG_X86_APM_BOOT=y -CONFIG_APM=m -# CONFIG_APM_IGNORE_USER_SUSPEND is not set -# CONFIG_APM_DO_ENABLE is not set -# CONFIG_APM_CPU_IDLE is not set -# CONFIG_APM_DISPLAY_BLANK is not set -# CONFIG_APM_ALLOW_INTS is not set -# CONFIG_APM_REAL_MODE_POWER_OFF is not set +# CONFIG_APM is not set # # CPU Frequency scaling @@ -898,6 +902,7 @@ CONFIG_MKISS=m CONFIG_6PACK=m CONFIG_BPQETHER=m +# CONFIG_DMASCC is not set CONFIG_SCC=m # CONFIG_SCC_DELAY is not set # CONFIG_SCC_TRXECHO is not set @@ -1291,22 +1296,21 @@ CONFIG_ENCLOSURE_SERVICES=m CONFIG_HP_ILO=m CONFIG_HAVE_IDE=y -CONFIG_IDE=m -CONFIG_BLK_DEV_IDE=m +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y # # Please see Documentation/ide/ide.txt for help/info on IDE drives # # CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_BLK_DEV_IDEDISK=m +CONFIG_BLK_DEV_IDEDISK=y # CONFIG_IDEDISK_MULTI_MODE is not set CONFIG_BLK_DEV_IDECS=m -CONFIG_BLK_DEV_DELKIN=m -CONFIG_BLK_DEV_IDECD=m -CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y -CONFIG_BLK_DEV_IDETAPE=m -CONFIG_BLK_DEV_IDEFLOPPY=m -# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_DELKIN is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +CONFIG_BLK_DEV_IDESCSI=m # CONFIG_BLK_DEV_IDEACPI is not set # CONFIG_IDE_TASK_IOCTL is not set CONFIG_IDE_PROC_FS=y @@ -1314,50 +1318,49 @@ # # IDE chipset support/bugfixes # -CONFIG_IDE_GENERIC=m +# CONFIG_IDE_GENERIC is not set # CONFIG_BLK_DEV_PLATFORM is not set -CONFIG_BLK_DEV_CMD640=m -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -CONFIG_BLK_DEV_IDEPNP=m +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_IDEPNP is not set CONFIG_BLK_DEV_IDEDMA_SFF=y # # PCI IDE chipsets support # CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_PCIBUS_ORDER is not set # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_BLK_DEV_GENERIC=m -CONFIG_BLK_DEV_OPTI621=m -CONFIG_BLK_DEV_RZ1000=m +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_RZ1000 is not set CONFIG_BLK_DEV_IDEDMA_PCI=y -CONFIG_BLK_DEV_AEC62XX=m -CONFIG_BLK_DEV_ALI15X3=m -CONFIG_BLK_DEV_AMD74XX=m -CONFIG_BLK_DEV_ATIIXP=m -CONFIG_BLK_DEV_CMD64X=m -CONFIG_BLK_DEV_TRIFLEX=m -CONFIG_BLK_DEV_CY82C693=m -CONFIG_BLK_DEV_CS5520=m -CONFIG_BLK_DEV_CS5530=m -CONFIG_BLK_DEV_CS5535=m -CONFIG_BLK_DEV_HPT34X=m -# CONFIG_HPT34X_AUTODMA is not set -CONFIG_BLK_DEV_HPT366=m -CONFIG_BLK_DEV_JMICRON=m -CONFIG_BLK_DEV_SC1200=m -CONFIG_BLK_DEV_PIIX=m -CONFIG_BLK_DEV_IT8213=m -CONFIG_BLK_DEV_IT821X=m -CONFIG_BLK_DEV_NS87415=m -CONFIG_BLK_DEV_PDC202XX_OLD=m -CONFIG_BLK_DEV_PDC202XX_NEW=m -CONFIG_BLK_DEV_SVWKS=m -CONFIG_BLK_DEV_SIIMAGE=m -CONFIG_BLK_DEV_SIS5513=m -CONFIG_BLK_DEV_SLC90E66=m -CONFIG_BLK_DEV_TRM290=m -CONFIG_BLK_DEV_VIA82CXXX=m -CONFIG_BLK_DEV_TC86C001=m +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_ATIIXP is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CS5535 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_JMICRON is not set +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_PIIX=y +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_TC86C001 is not set # # Other IDE chipsets support @@ -1697,6 +1700,7 @@ CONFIG_ENC28J60=m # CONFIG_ENC28J60_WRITEVERIFY is not set CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set CONFIG_NI52=m CONFIG_NI65=m CONFIG_NET_TULIP=y @@ -2080,6 +2084,7 @@ # # ISDN feature submodules # +# CONFIG_ISDN_DRV_LOOP is not set # CONFIG_ISDN_DIVERSION is not set # @@ -2361,6 +2366,8 @@ CONFIG_SX=m # CONFIG_RIO is not set CONFIG_STALDRV=y +# CONFIG_STALLION is not set +# CONFIG_ISTALLION is not set CONFIG_NOZOMI=m # @@ -2456,6 +2463,7 @@ CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m +# CONFIG_I2C_ELEKTOR is not set CONFIG_I2C_I801=m CONFIG_I2C_I810=m CONFIG_I2C_PIIX4=m @@ -3740,7 +3748,7 @@ CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y # CONFIG_EXT2_FS_XIP is not set -CONFIG_EXT3_FS=m +CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y @@ -3748,11 +3756,11 @@ CONFIG_EXT4DEV_FS_XATTR=y CONFIG_EXT4DEV_FS_POSIX_ACL=y CONFIG_EXT4DEV_FS_SECURITY=y -CONFIG_JBD=m +CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m # CONFIG_JBD2_DEBUG is not set -CONFIG_FS_MBCACHE=m +CONFIG_FS_MBCACHE=y CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set @@ -4122,7 +4130,7 @@ # Digest # CONFIG_CRYPTO_CRC32C=m -CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_SHA1=m @@ -4159,6 +4167,7 @@ # CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_LZO=m +CONFIG_CRYPTO_LZF=y CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=m CONFIG_CRYPTO_DEV_PADLOCK_AES=m
その後で
$ fakeroot make-kpkg --revision=`date '+%y%m%d'`+01 \ --append-to-version=.`cat /etc/hostname` kernel-image
なんてして build 開始. さてどうなるでしょう.
... install して, update-initramfs & update-grub したのち再起動をかけたら幸せになりました. 良い感じですね. background でイロイロ走らせることが多いので, preempt はサーバーで良い, のかなぁ. Timer は 250 のままで良いんだろうか
2008/09/14
_ SD カードを swap にする.
VMware for linux を使用していると, メモリは足りているハズなのに swap を使い始めてしまい, Host 側の動作がどんどん遅くなってしまう. 本体(HDD) 側の swap を使わなければ良いだろう, なんて安易な発想と「そういえば Let's Note には SD カードスロットがあった」ということで, SD カードを swap 領域にしてみることにする.
ちなみに,
# hdparm -vtT /dev/mmcblk0 /dev/mmcblk0: readonly = 0 (off) readahead = 256 (on) geometry = 62032/4/16, sectors = 3970048, start = 0 Timing cached reads: 1158 MB in 2.00 seconds = 578.96 MB/sec Timing buffered disk reads: 22 MB in 3.01 seconds = 7.32 MB/sec
ということで. Let's Note CF-R4 の SD カードスロットの I/O Speed は最大 8 MB/s ということなので, ハードウェアとしては期待された速度が出ていると思うけれど, HDD と比べるとやはりちょっと遅め. このことが VMware 実行時にどれだけ影響が出るかは, やってみないとわからないけれど.
2008/09/23
_ Bash クックブック
買ってませんが. ruby を覚えて以来, 簡単な on liner まで ruby で書く癖がついてしまって, メインフレームに行って偶に困ったりします(とは言いつつ, メインフレームで最初にやることは zsh と ruby の install だったりしてwww).
最近は bash_profile に
ZSH=`which zsh` if [ -f ${ZSH} ]; then ${ZSH} -l exit 0 fi
なんて仕込んでますが.
Carl Albing, オライリージャパン, ¥5,789
おひとつ如何? > みっちー
2008/09/24
_ CUPS の設定
以前は VMware 上の Windows からの印刷は samba 経由で行なっていたのだけれど, 何故か印刷できなくなったので, ジタバタしていた. 結局 samba 経由を止めて, CUPS の IPP 受付で印刷することに.
CUPS 側の設定
VMware 上の Windows のネットワーク設定は VMware の NAT. 振っているアドレスは, ここでは 192.168.XXX.YYY としておく(ところで, どなたか NAT 使用時に DHCP 切る設定ご存知ありません?).
先ず /etc/cups/cupsd.conf の修正
... # Only listen for connections from the local machine. #Listen localhost:631 <-- コメントアウト #Listen /var/run/cups/cups.sock <-- コメントアウト Port 631 <-- 追加 ... <Location /> # Restrict access to the server... Order allow,deny #Order Deny,Allow #Deny From All Allow From 127.0.0.1 Allow From 192.168.XXX. <-- 追加 </Location> ...
次に, /etc/mime.convs, /etc/raw.convs の修正. /etc/mime.convs の末尾の
... application/octet-stream application/vnd.cups-raw 0 - ...
のコメントアウトを元に戻す. また, /etc/raw.convs の
... application/octet-stream application/vnd.cups-raw 0 - ...
のコメントアウトを元に戻す.
CUPS を再起動した後, raw プリンタを追加しておく. ここでは CUPS-raw としておく.
Windows 側の設定
普通にインターネットプリンタの設定で, CUPS-raw を追加する. プリンタのドライバは別途必要なので, 適宜入手, install しておく.
追加の際には http://(CUPS のサーバ)/printers/CUPS-raw を指定すれば良い.
感想.
楽で良いわ. そういえば以前はなんで samba 経由にしようとしていたんだっけ?
_ Emacs で rej ファイルを処理する人への 10 のステップ
φ(._. )メモ
VTK-Ruby の 5.0.4 向けの patch は CMakeLists の修正だけで済んだけれど, 5.2 向けの修正は大変なので, 役に立ちそうな tips ですな.
...現実逃避に, 始めてしまいそうな予感大. でも, lenny に入る VTK が 5.0.4 なので, 当分始めないと思いますが.
2008/09/25
_ 某所に ffmpeg を install ちう.
root 権限が無いので, ビルドしまくり.コーデックが沢山あって面倒だにゃぁ. イロイロ試行錯誤していたら, こんなエントリが.
なるほどー.
というわけで, ちょっと弄って某所で仕込み. ほとんど全て --prefix=${HOME} みたいなのをつければ良いだけ, かと思いきや, CFLAGS で -L${HOME}/lib -I${HOME}/include みたいなが必要(あたりまえ).
#------------------------------------------------------------- # config #------------------------------------------------------------- INSTALL_PREFIX=${HOME} ADD_PATH=${INSTALL_PREFIX}/bin #------------------------------------------------------------- # Version #------------------------------------------------------------- A52_SRC=a52dec-0.7.4 DIRAC_SRC=dirac-0.10.0 FAAC_SRC=faac-1.26 FAAD_SRC=faad2-2.6.1 GSM_SRC=gsm-1.0.12 AMRNB_SRC=amrnb-7.0.0.2 AMRWB_SRC=amrwb-7.0.0.3 LAME_SRC=lame-3.97 YASM_SRC=yasm-0.7.1 OGG_SRC=libogg-1.1.3 VORVIS_SRC=libvorbis-1.2.0 XVID_SRC=xvidcore-1.1.3 #------------------------------------------------------------- # main #------------------------------------------------------------- all: build-depend ffmpeg build-depend: yasm a52 dirac faac faad gsm ogg amrnb amrwb mp3lame x264 nut theora vorbis xvid clean: yasm-clean a52-clean dirac-clean faad-clean faac-clean gsm-clean ogg-clean amrnb-clean amrwb-clean mp3lame-clean x264-clean nut-clean theora-clean vorbis-clean xvid-clean distclean: yasm-distclean a52-distclean dirac-distclean faac-distclean faad-distclean gsm-distclean ogg-distclean amrnb-distclean amrwb-distclean mp3lame-distclean x264-distclean nut-distclean theora-distclean vorbis-distclean xvid-distclean #------------------------------------------------------------- # ffmpeg #------------------------------------------------------------- ffmpeg: ffmpeg-build ffmpeg-repos: @if [ ! -d $@ ]; then \ svn co svn://svn.mplayerhq.hu/ffmpeg/trunk $@ ;\ fi ;\ cd ffmpeg-repos && svn update ffmpeg-build: ffmpeg-repos cd $< ;\ export PATH=${PATH}:${ADD_PATH} ;\ LDFLAGS="-L${INSTALL_PREFIX}/lib" \ CFLAGS="-I${INSTALL_PREFIX}/include -L${INSTALL_PREFIX}/lib" \ PKG_CONFIG_PATH=${INSTALL_PREFIX}/lib/pkgconfig \ ./configure --prefix=${INSTALL_PREFIX} \ --enable-gpl \ --enable-nonfree \ --enable-postproc \ --enable-avfilter \ --enable-avfilter-lavf \ --enable-liba52 \ --enable-liba52bin \ --enable-libamr-nb \ --enable-libamr-wb \ --enable-libdirac \ --enable-libfaac \ --enable-libfaad \ --enable-libfaadbin \ --enable-libgsm \ --enable-libmp3lame \ --enable-libnut \ --enable-libtheora \ --enable-libvorbis \ --enable-libx264 \ --enable-libxvid ;\ make && make install ffmpeg-clean: cd ffmpeg-repos ;\ make clean #------------------------------------------------------------- # liba52 #------------------------------------------------------------- a52: liba52.a ${A52_SRC}.tar.gz: @if [ ! -f $@ ]; then \ wget http://liba52.sourceforge.net/files/$@ ; \ fi ;\ tar xf $@ liba52.a: ${A52_SRC}.tar.gz cd ${A52_SRC} ;\ ./configure --prefix=${INSTALL_PREFIX} ;\ make && make install a52-clean: cd ${A52_SRC} && make distclean a52-distclean: rm -rf ${A52_SRC}* #------------------------------------------------------------- # dirac #------------------------------------------------------------- dirac: libdirac_decoder.a ${DIRAC_SRC}.tar.gz: @if [ ! -f $@ ]; then \ wget http://downloads.sourceforge.net/dirac/$@ ;\ fi ;\ tar xf $@ libdirac_decoder.a: ${DIRAC_SRC}.tar.gz cd ${DIRAC_SRC} ;\ ./configure --prefix=${INSTALL_PREFIX} ;\ make && make install dirac-clean: cd ${DIRAC_SRC} && make clean dirac-distclean: rm -rf ${DIRAC_SRC}* #------------------------------------------------------------- # faac #------------------------------------------------------------- faac: libfaac.a ${FAAC_SRC}.tar.gz: if [ ! -f $@ ]; then \ wget http://downloads.sourceforge.net/faac/$@ ; \ fi ;\ tar xf $@ libfaac.a: ${FAAC_SRC}.tar.gz cd faac &&./bootstrap ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install faac2-clean: cd faac && make clean faac-distclean: rm -rf faac* #------------------------------------------------------------- # faad #------------------------------------------------------------- faad: libfaad.a ${FAAD_SRC}.tar.gz: if [ ! -f $@ ]; then \ wget http://downloads.sourceforge.net/faac/$@ ; \ fi ;\ tar xf $@ libfaad.a: ${FAAD_SRC}.tar.gz cd faad2 &&./bootstrap ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install faad-clean: cd faad2 && make clean faad-distclean: rm -rf faad2* #------------------------------------------------------------- # gsm #------------------------------------------------------------- gsm: libgsm.a ${GSM_SRC}.tar.gz: if [ ! -f $@ ]; then \ wget http://kbs.cs.tu-berlin.de/~jutta/gsm/$@ ; \ fi ;\ tar xf $@ libgsm.a: ${GSM_SRC}.tar.gz cd gsm-1.0-pl12 && make && \ make install INSTALL_ROOT=${INSTALL_PREFIX} \ GSM_INSTALL_LIB=${INSTALL_PREFIX}/lib \ GSM_INSTALL_INC=${INSTALL_PREFIX}/include gsm-clean: cd gsm-1.0-pl12 && make clean gsm-distclean: rm -rf gsm-1.0-pl12* #------------------------------------------------------------- # amrnb #------------------------------------------------------------- amrnb: libamrnb.a ${AMRNB_SRC}.tar.bz2: @if [ ! -f $@ ]; then \ wget http://ftp.penguin.cz/pub/users/utx/amr/$@ ;\ fi ;\ tar xf $@ libamrnb.a: ${AMRNB_SRC}.tar.bz2 cd ${AMRNB_SRC} ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install amrnb-clean: cd ${AMRNB_SRC} && clean amrnb-distclean: rm -rf ${AMRNB_SRC}* #------------------------------------------------------------- # abrwb #------------------------------------------------------------- amrwb: libamrwb.a ${AMRWB_SRC}.tar.bz2: @if [ ! -f $@ ]; then \ wget http://ftp.penguin.cz/pub/users/utx/amr/$@ ;\ fi ;\ tar xf $@ libamrwb.a: ${AMRWB_SRC}.tar.bz2 cd ${AMRWB_SRC} ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install amrwb-clean: cd ${AMRWB_SRC} && clean amrwb-distclean: rm -rf ${AMRWB_SRC}* #------------------------------------------------------------- # mp3lame #------------------------------------------------------------- mp3lame: libmp3lame.a ${LAME_SRC}.tar.gz: @if [ ! -f $@ ]; then \ wget http://downloads.sourceforge.net/lame/$@ ;\ fi ;\ tar xf $@ libmp3lame.a: ${LAME_SRC}.tar.gz cd ${LAME_SRC} ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install mp3lame-clean: cd ${LAME_SRC} && make clean mp3lame-distclean: rm -rf ${LAME_SRC}* #------------------------------------------------------------- # yasm #------------------------------------------------------------- yasm: ${YASM_SRC} ${YASM_SRC}.tar.gz: @if [ ! -f $@ ]; then \ wget http://www.tortall.net/projects/yasm/releases/$@ ; \ fi ; tar xf $@ ${YASM_SRC}: ${YASM_SRC}.tar.gz cd $@ ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install yasm-clean: cd ${YASM_SRC} && make clean yasm-distclean: rm -rf ${YASM_SRC}* #------------------------------------------------------------- # x264 #------------------------------------------------------------- x264: yasm libx264.a x264-git: @if [ ! -d $@ ]; then \ git clone git://git.videolan.org/x264.git ; \ mv x264 $@ ; \ fi ;\ cd $@ && git pull libx264.a: x264-git cd $< ;\ export PATH=${PATH}:${ADD_PATH} ;\ ./configure --prefix=${INSTALL_PREFIX} \ --enable-shared \ --enable-pthread ;\ make && make install x264-clean: cd x264-git && make clean x264-distclean: rm -rf x264-git #------------------------------------------------------------- # nut #------------------------------------------------------------- nut: libnut.a libnut-svn: @if [ ! -d $@ ]; then \ svn co svn://svn.mplayerhq.hu/nut/src/trunk $@ ;\ fi ;\ cd $@ && svn up libnut.a: libnut-svn cd $< && make && make install PREFIX=${INSTALL_PREFIX} nut-clean: cd libnut-svn && make clean nut-distclean: rm -rf libnut-svn* #------------------------------------------------------------- # ogg #------------------------------------------------------------- ogg: libogg.a ${OGG_SRC}.tar.gz: @if [ ! -f $@ ]; then \ wget http://downloads.xiph.org/releases/ogg/$@ ;\ fi ;\ tar xvf $@ libogg.a: ${OGG_SRC}.tar.gz cd ${OGG_SRC} ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install ogg-clean: cd ${OGG_SRC} && make clean ogg-distclean: rm -rf ${OGG_SRC}* #------------------------------------------------------------- # theora #------------------------------------------------------------- theora: ogg libtheora.a theora-svn: @if [ ! -d $@ ]; then \ svn co http://svn.xiph.org/trunk/theora $@ ;\ fi ;\ cd $@ && svn up libtheora.a: theora-svn cd $< ;\ ./autogen.sh ;\ ./configure \ --prefix=${INSTALL_PREFIX} \ --with-ogg=${INSTALL_PREFIX} ;\ make && make install theora-clean: cd theora-svn && make clean theora-distclean: rm -rf theora-svn* #------------------------------------------------------------- # vorbis #------------------------------------------------------------- vorbis: libvorbis.a ${VORVIS_SRC}.tar.gz: @if [ ! -f $@ ]; then \ wget http://downloads.xiph.org/releases/vorbis/$@ ; \ fi ;\ tar xf $@ libvorbis.a: ${VORVIS_SRC}.tar.gz cd ${VORVIS_SRC} ;\ ./configure --prefix=${INSTALL_PREFIX} && make && make install vorbis-clean: cd ${VORVIS_SRC} && make clean vorbis-distclean: rm -rf ${VORVIS_SRC}* #------------------------------------------------------------- # xvid #------------------------------------------------------------- xvid: yasm libxvidcore.4.a ${XVID_SRC}.tar.gz: @if [ ! -f $@ ]; then \ wget http://downloads.xvid.org/downloads/$@ ;\ fi ;\ tar xf $@ libxvidcore.4.a: ${XVID_SRC}.tar.gz cd ${XVID_SRC}/build/generic ;\ ./bootstrap.sh ;\ export PATH=${PATH}:${ADD_PATH} ;\ ./configure --prefix=${INSTALL_PREFIX} ;\ make && make install xvid-clean: cd ${XVID_SRC}/build/generic && make clean xvid-distclean: rm -rf ${XVID_SRC}*
やっつけだけど, とりあえず動いたから正義. 書いてから思ったけれど, distclean は結構危険ですな. typo していなくて良かった.
... icc でコンパイルすると高速になったりするんだろうか?
2008/09/28
_ 食わず嫌い
いくない.
初体験は某コードのスパゲッティ特盛, だったので, 最近読んでる別の某ライブラリの C++ コードが, とてもうまく感じてしまう.
まあ, 大人になってわかる味, なんだろうかねぇ.
2008/09/29
_ 関西 Debian 勉強会
09/27 に <URL:http://wiki.debian.org/KansaiDebianMeeting20080927:title> へ.
絶望した. 起きたら 13:30 で絶望した
倉敷さんの 「Debian Mentors の紹介」聞きたかったよ(´・ω・`) そんな訳で, 尊也さんの 「Debian Live に Ubiquity を移植できるか?」 の途中から参加に.
Ubuntu って数ヶ月前の sid でしょ?
というつっこみが印象的. 荊の道を進んでいる感が. 楽しそうだ(違).
木下さんの 「10分でわかる DFSG」. なんと携帯電話でプレゼンしてました. 画面出力のある携帯電話じゃないと無理なんだろうけれど,
テキスト ->(OpenOffice Impress)-> PDF 作成-> 携帯電話の TV 出力
らしい. そんな事もできるのかと結構感動. プレゼン画面にアンテナとバッテリがあるのは御愛嬌, ですね.
時間が余ったらしいので, このあいだの VTK-Ruby の話とか, ちょっと画面に出して時間稼ぎ. あんまり Debian じゃないけれど.
懇親会で, 大浦さんと木下さんに key sign をお願いする. またもや手書きで fingerprint を写す(名刺作った方が良い, と痛感). 携帯ブラウザで<URL:http://www.gfd-dennou.org/arch/uwabami/:title> の fingerprint を表示させて写す. 途中で「0 と O の区別がががが〜」と呟いたら, 名村さんに「16 進数ですから」と指摘される. そりゃそうか.
などなど.
来月は CDBS について喋ります(と宣言することで, プレッシャーを自分に与えておく).
_ 札幌にて
先日, GFD セミナーで札幌に行ったとき, 久々にけんちゃんと呑んだ.
「センセー田酒です. 田酒!」 「それはスバラシィ. ぜひ行きましょう」
という流れで行く店が決まりました.
- 御通しでトマトが出ました.
- ケンタロス(´・ω・`)
- ビールはサッポロ!!
- 黒ラベル, エビス, ギネス
- クラシックだったらもっと良いのになぁ...(贅沢?)
- 日本酒は久保田が全銘柄(?), 田酒がががが
- 品揃え, という点では, 他にも良い店はあるけれど, 田酒だけで個人的にポイント高し.
- 肴もおいしい. 値段も手頃
- ただし, 久々の北海道で, 舌に補正がかかっているかもしれないけれど.
結局二人で 1 万 2 千円ぐらい(…だった筈). 堪能しました.