<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>エスブレイン &#187; yokoyama</title>
	<atom:link href="http://www.esbrain.com/author/yokoyama/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.esbrain.com</link>
	<description>高い技術力・創造力・機動力でお客様のビジネスをさらに加速させます</description>
	<lastBuildDate>Fri, 09 Sep 2011 09:55:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/author/yokoyama/feed/" />
		<item>
		<title>UbuntuでDVDを作る</title>
		<link>http://www.esbrain.com/2009/04/ubuntu%e3%81%a7dvd%e3%82%92%e4%bd%9c%e3%82%8b/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/ubuntu%e3%81%a7dvd%e3%82%92%e4%bd%9c%e3%82%8b/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 12:04:45 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=458</guid>
		<description><![CDATA[dvd-slideshowというツールを使うと、旅行などで撮った写真を簡単にスライドショーとしてvobファイルを作ることができそうです。
インストールはsynapticから、dvd-slideshowを検索してインストー [...]]]></description>
			<content:encoded><![CDATA[<p>dvd-slideshowというツールを使うと、旅行などで撮った写真を簡単にスライドショーとしてvobファイルを作ることができそうです。</p>
<p>インストールはsynapticから、dvd-slideshowを検索してインストールするだけです。</p>
<p>関連アプリケーションもインストールされます。</p>
<p>ただし、このツールはコマンドラインで使用するツールなので、設定等はテキストファイルにしないといけないのです。</p>
<p>dir2slideshowというヘルパーアプリケーションを使うと、指定したディレクトリの画像を、指定したエフェクトをつけて</p>
<p>スライドショーにする設定ファイルを作成してくれます。</p>
<p>オプションの指定で、フェードインやクロスフェードなどのエフェクトも指定できます。</p>
<blockquote><p>$ dir2slideshow -o . -t 10 -n sample /media/photo</p></blockquote>
<p>すると、sample.txtファイルが作成され、以下のようなテキストが出力されていました。</p>
<blockquote><p>background:0::black<br />
title:10:sample<br />
fadeout:1<br />
background:1<br />
fadein:1<br />
/media/photo/rimg0004.jpg:10<br />
/media/photo/rimg0005.jpg:10<br />
/media/photo/rimg0006.jpg:10<br />
/media/photo/rimg0007.jpg:10<br />
/media/photo/rimg0008.jpg:10<br />
/media/photo/rimg0009.jpg:10<br />
/media/photo/rimg0010.jpg:10<br />
/media/photo/rimg0011.jpg:10<br />
/media/photo/rimg0012.jpg:10<br />
/media/photo/rimg0013.jpg:10<br />
/media/photo/rimg0014.jpg:10<br />
/media/photo/rimg0015.jpg:10<br />
/media/photo/rimg0016.jpg:10<br />
/media/photo/rimg0017.jpg:10<br />
/media/photo/rimg0018.jpg:10<br />
/media/photo/rimg0019.jpg:10<br />
fadeout:1<br />
background:1</p></blockquote>
<p>やっと本命の、DVDファイル(.vobファイル)を作成します。</p>
<p>コマンドラインから、dvd-slideshowを呼び出します。</p>
<blockquote><p>$dvd-slideshow -n sample -o . -a ./vivaldi.mp3 -f sample.txt</p></blockquote>
<p>-nオプションはタイトル名</p>
<p>-oオプションは出力先ディレクトリ名(出力ファイル名は xxxxx.vobとなります)</p>
<p>-aオプションはBGM</p>
<p>-fオプションはdir2slideshowで作成した設定ファイルです。</p>
<p>その他、背景画像の指定オプションなどがあります。</p>
<p>これでvobファイルが出力されるかと思いきや、BGM関連でエラーが発生し、処理が中断してしまいました。</p>
<p>-aオプションをつけなくても同じエラーでした。</p>
<p>ネットでエラーを調べてみると、libsoxで使用できるファイルフォーマットがデフォルトでは少ないことが原因のようです。</p>
<p><a href="http://ubuntuforums.org/archive/index.php/t-788047.html" terget="_blank">[ubuntu] dvdslideshow problem</a></p>
<p>ここでかかれている解決方法を実施しました。</p>
<blockquote><p>sudo apt-get install libsox-fmt-all<br />
sudo sed -i &#8216;s/-ab 192/-ab 192k/g&#8217; /usr/bin/dvd-slideshow</p></blockquote>
<p>そして、再度dvd-slideshowコマンドを実行すると、正常にsample.vobファイルと、</p>
<p>チャプター情報が書かれたsample.xmlが作成されました。</p>
<p>vobファイルは正常に再生できたので、後はDVD-Rに書き込むだけです。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/ubuntu%e3%81%a7dvd%e3%82%92%e4%bd%9c%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/ubuntu%e3%81%a7dvd%e3%82%92%e4%bd%9c%e3%82%8b/" />
	</item>
		<item>
		<title>pythonで画像表示</title>
		<link>http://www.esbrain.com/2009/04/python%e3%81%a7%e7%94%bb%e5%83%8f%e8%a1%a8%e7%a4%ba/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/python%e3%81%a7%e7%94%bb%e5%83%8f%e8%a1%a8%e7%a4%ba/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 09:15:55 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=446</guid>
		<description><![CDATA[pythonのGUIモジュールであるpygtkを使うと、簡単にウィンドウアプリケーションが作成できます。
しかもRADツールであるgladeインターフェース・デザイナを使えば、GUIの構成もサクサクです。
ということで、 [...]]]></description>
			<content:encoded><![CDATA[<p>pythonのGUIモジュールであるpygtkを使うと、簡単にウィンドウアプリケーションが作成できます。</p>
<p>しかもRADツールであるgladeインターフェース・デザイナを使えば、GUIの構成もサクサクです。</p>
<p>ということで、指定した画像を表示するアプリケーションを作ってみます。</p>
<p>環境はpythonとpygtkが動けばOKです。</p>
<p>まずは、pythonのコードです。</p>
<p>simage.pyファイルとして、保存して下さい。</p>
<pre class="brush: python; title: ;">
#! /usr/bin/env python
# -*- coding: UTF-8 -*-

# インポート
import pygtk
pygtk.require(&quot;2.0&quot;)
import gtk
import gtk.glade

# メインウィンドウクラスの定義
class MainWindow:

 # コンストラクタ
 def __init__(self):
 # gladeファイルから一発でGUIを構築
 self.widgets = gtk.glade.XML(&quot;simage.glade&quot;, &quot;window&quot;)

 # イベントハンドラの割り当て
 self.auto_connects()

 # GtkImageをscrolledwindowに追加する
 self.image = gtk.Image()
 self[&quot;scrolledwindow&quot;].add_with_viewport(self.image)

 # MainWindowを表示する
 self[&quot;window&quot;].show_all()

 # イベントハンドラの追加(gtk_ではじまるメソッドを登録)
 def auto_connects(self):
 event_handlers = {}
 for (itemname, value) in self.__class__.__dict__.items():
 if callable(value) and itemname.startswith('gtk_'):
 event_handlers[itemname[4:]] = getattr(self, itemname)
 self.widgets.signal_autoconnect(event_handlers)

 # 指定されたアイテムが見つからない時に呼び出す(widgetの呼び出しを簡単にする)
 def __getitem__(self, key):
 return self.widgets.get_widget(key)

 # ウィンドウの「閉じる」ボタンを押したときのイベントハンドラ
 def gtk_on_window_delete_event(self, widget, event=None):
 gtk.main_quit()

 # メニューの「終了」を選んだときのイベントハンドラ
 def gtk_on_quit_menu_item_activate(self, widget):
 gtk.main_quit()

 # メニューの「開く」を選んだときのイベントハンドラ
 def gtk_on_open_menu_item_activate(self, widget):
 dlg = gtk.FileChooserDialog(
 &quot;画像を開く&quot;,
 None,
 gtk.FILE_CHOOSER_ACTION_OPEN,
 (
 gtk.STOCK_CANCEL,
 gtk.RESPONSE_CANCEL,
 gtk.STOCK_OPEN,gtk.RESPONSE_OK
 )
 )
 dlg.set_default_response(gtk.RESPONSE_OK)

 # 画像ファイルのフィルタを作る
 filter = gtk.FileFilter()
 filter.set_name(&quot;Images&quot;)
 filter.add_mime_type(&quot;image/jpeg&quot;)
 filter.add_mime_type(&quot;image/gif&quot;)
 filter.add_mime_type(&quot;image/png&quot;)
 filter.add_pattern(&quot;*.jpg&quot;)
 filter.add_pattern(&quot;*.gif&quot;)
 filter.add_pattern(&quot;*.png&quot;)
 dlg.add_filter(filter)

 # すべてのファイルのフィルタも作る
 filter = gtk.FileFilter()
 filter.set_name(&quot;All files&quot;)
 filter.add_pattern(&quot;*&quot;)
 dlg.add_filter(filter)

 # ダイアログの表示
 res = dlg.run()

 # 「OK」ボタンを押したら、画像ファイルを開く
 if res == gtk.RESPONSE_OK:
 self.open_image(dlg.get_filename())

 # ダイアログの破棄
 dlg.destroy()

 # 指定された画像を開く
 def open_image( self, filename ):
 self.image.set_from_file(filename)

# スタートアップ
if __name__ == &quot;__main__&quot;:
 window = MainWindow()
 gtk.main()
</pre>
<p>続いて、gladeファイルです。</p>
<p>simage.gladeファイルとして保存して下さい。</p>
<pre class="brush: xml; title: ;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;!DOCTYPE glade-interface SYSTEM &quot;glade-2.0.dtd&quot;&gt;
&lt;!--Generated with glade3 3.4.5 on Thu Apr 30 17:55:07 2009 --&gt;
&lt;glade-interface&gt;
  &lt;widget class=&quot;GtkWindow&quot; id=&quot;window&quot;&gt;
    &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
    &lt;property name=&quot;title&quot; translatable=&quot;yes&quot;&gt;Simple Image Viewer&lt;/property&gt;
    &lt;property name=&quot;default_width&quot;&gt;350&lt;/property&gt;
    &lt;property name=&quot;default_height&quot;&gt;350&lt;/property&gt;
    &lt;signal name=&quot;destroy&quot; handler=&quot;on_window_destroy&quot;/&gt;
    &lt;signal name=&quot;delete_event&quot; handler=&quot;on_window_delete_event&quot;/&gt;
    &lt;child&gt;
      &lt;widget class=&quot;GtkVBox&quot; id=&quot;vbox1&quot;&gt;
        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
        &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
        &lt;child&gt;
          &lt;widget class=&quot;GtkMenuBar&quot; id=&quot;menubar1&quot;&gt;
            &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
            &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
            &lt;child&gt;
              &lt;widget class=&quot;GtkMenuItem&quot; id=&quot;menuitem1&quot;&gt;
                &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
                &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
                &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;ファイル(_F)&lt;/property&gt;
                &lt;property name=&quot;use_underline&quot;&gt;True&lt;/property&gt;
                &lt;child&gt;
                  &lt;widget class=&quot;GtkMenu&quot; id=&quot;menu1&quot;&gt;
                    &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
                    &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
                    &lt;child&gt;
                      &lt;widget class=&quot;GtkImageMenuItem&quot; id=&quot;open_menu_item&quot;&gt;
                        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
                        &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
                        &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;開く(_O)&lt;/property&gt;
                        &lt;property name=&quot;use_underline&quot;&gt;True&lt;/property&gt;
                        &lt;signal name=&quot;activate&quot; handler=&quot;on_open_menu_item_activate&quot;/&gt;
                        &lt;child internal-child=&quot;image&quot;&gt;
                          &lt;widget class=&quot;GtkImage&quot; id=&quot;menu-item-image2&quot;&gt;
                            &lt;property name=&quot;stock&quot;&gt;gtk-open&lt;/property&gt;
                          &lt;/widget&gt;
                        &lt;/child&gt;
                      &lt;/widget&gt;
                    &lt;/child&gt;
                    &lt;child&gt;
                      &lt;widget class=&quot;GtkSeparatorMenuItem&quot; id=&quot;separatormenuitem1&quot;&gt;
                        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
                        &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
                      &lt;/widget&gt;
                    &lt;/child&gt;
                    &lt;child&gt;
                      &lt;widget class=&quot;GtkImageMenuItem&quot; id=&quot;quit_menu_item&quot;&gt;
                        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
                        &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
                        &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;終了(_Q)&lt;/property&gt;
                        &lt;property name=&quot;use_underline&quot;&gt;True&lt;/property&gt;
                        &lt;signal name=&quot;activate&quot; handler=&quot;on_quit_menu_item_activate&quot;/&gt;
                        &lt;child internal-child=&quot;image&quot;&gt;
                          &lt;widget class=&quot;GtkImage&quot; id=&quot;menu-item-image5&quot;&gt;
                            &lt;property name=&quot;stock&quot;&gt;gtk-quit&lt;/property&gt;
                          &lt;/widget&gt;
                        &lt;/child&gt;
                      &lt;/widget&gt;
                    &lt;/child&gt;
                  &lt;/widget&gt;
                &lt;/child&gt;
              &lt;/widget&gt;
            &lt;/child&gt;
          &lt;/widget&gt;
          &lt;packing&gt;
            &lt;property name=&quot;expand&quot;&gt;False&lt;/property&gt;
          &lt;/packing&gt;
        &lt;/child&gt;
        &lt;child&gt;
          &lt;widget class=&quot;GtkScrolledWindow&quot; id=&quot;scrolledwindow&quot;&gt;
            &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
            &lt;property name=&quot;can_focus&quot;&gt;True&lt;/property&gt;
            &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
            &lt;property name=&quot;border_width&quot;&gt;1&lt;/property&gt;
            &lt;property name=&quot;hscrollbar_policy&quot;&gt;GTK_POLICY_AUTOMATIC&lt;/property&gt;
            &lt;property name=&quot;vscrollbar_policy&quot;&gt;GTK_POLICY_AUTOMATIC&lt;/property&gt;
            &lt;property name=&quot;shadow_type&quot;&gt;GTK_SHADOW_ETCHED_IN&lt;/property&gt;
            &lt;child&gt;
              &lt;placeholder/&gt;
            &lt;/child&gt;
          &lt;/widget&gt;
          &lt;packing&gt;
            &lt;property name=&quot;position&quot;&gt;1&lt;/property&gt;
          &lt;/packing&gt;
        &lt;/child&gt;
        &lt;child&gt;
          &lt;widget class=&quot;GtkStatusbar&quot; id=&quot;statusbar&quot;&gt;
            &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
            &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
            &lt;property name=&quot;spacing&quot;&gt;2&lt;/property&gt;
          &lt;/widget&gt;
          &lt;packing&gt;
            &lt;property name=&quot;expand&quot;&gt;False&lt;/property&gt;
            &lt;property name=&quot;position&quot;&gt;2&lt;/property&gt;
          &lt;/packing&gt;
        &lt;/child&gt;
      &lt;/widget&gt;
    &lt;/child&gt;
  &lt;/widget&gt;
&lt;/glade-interface&gt;
 </pre>
<p>このgladeファイルは、gladeインターフェース・デザイナver3で作成しましたので、そのまま読み込むことができます。</p>
<p>よって、このXMLファイルは理解していなくても、gtkモジュールが勝手に解釈してくれます。</p>
<p>pythonコードをみると、22行目でGtkImageをロードしています。</p>
<p>gladeインターフェース・デザイナにもGtkImageはありますので、そこで設置しておけば良いはず。</p>
<p>しかし、設置して実行してみると、gladeの初期化(16行目)で警告が表示され、<br />
ウィンドウのスクロールが正常に動作しませんでした。</p>
<blockquote><p>./simage.py:16: GtkWarning: gtk_scrolled_window_add(): cannot add non scrollable widget use gtk_scrolled_window_add_with_viewport() instead<br />
  self.widgets = gtk.glade.XML(&#8220;simage.glade&#8221;, &#8220;window&#8221;)</p></blockquote>
<p>とりあえず、プログラムでGtkImageを設置すると大丈夫です。</p>
<p>ということで、100行も書かずに画像ビューワが完成です。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/python%e3%81%a7%e7%94%bb%e5%83%8f%e8%a1%a8%e7%a4%ba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/python%e3%81%a7%e7%94%bb%e5%83%8f%e8%a1%a8%e7%a4%ba/" />
	</item>
		<item>
		<title>microSD Ubuntu壊れる</title>
		<link>http://www.esbrain.com/2009/04/microsd-ubuntu%e5%a3%8a%e3%82%8c%e3%82%8b/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/microsd-ubuntu%e5%a3%8a%e3%82%8c%e3%82%8b/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 04:16:20 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[スタッフブログ]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=439</guid>
		<description><![CDATA[ついに壊れました。

とはいっても、microSDカード自体はまだ無傷ですが、カードのリーダ・ライタが逝きました。
USBケーブルの根元（本体との接合部分）が切れています。（下写真中央の黒い裂け目）
約6ヶ月間ほぼ毎日ケ [...]]]></description>
			<content:encoded><![CDATA[<p>ついに壊れました。</p>
<p style="text-align: center;"><a rel="lightbox" href="http://www.esbrain.com/wp-content/uploads/rw2.jpg" title="rw2"><img class="size-thumbnail wp-image-441 aligncenter" title="rw2" src="http://www.esbrain.com/wp-content/uploads/rw2-150x150.jpg" alt="rw2" width="150" height="150" /></a><a rel="lightbox" href="http://www.esbrain.com/wp-content/uploads/rw1.jpg" title="rw1"><img class="size-thumbnail wp-image-440 aligncenter" title="rw1" src="http://www.esbrain.com/wp-content/uploads/rw1-150x150.jpg" alt="rw1" width="150" height="150" /></a></p>
<p>とはいっても、microSDカード自体はまだ無傷ですが、カードのリーダ・ライタが逝きました。</p>
<p>USBケーブルの根元（本体との接合部分）が切れています。（下写真中央の黒い裂け目）</p>
<p>約6ヶ月間ほぼ毎日ケーブルを出し入れしていました。</p>
<p>90度ワイヤーを折り曲げて使用するタイプなので、耐久性については仕方がありません。</p>
<p>さっそく次期リーダ・ライタを調達しなければなりませんが、</p>
<p>今までのものがとてもコンパクトだったため、</p>
<p>同じ位の大きさのものがあるのか心配です。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/microsd-ubuntu%e5%a3%8a%e3%82%8c%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/microsd-ubuntu%e5%a3%8a%e3%82%8c%e3%82%8b/" />
	</item>
		<item>
		<title>F-Spotなどで、重複インポートしてしまった画像を削除する</title>
		<link>http://www.esbrain.com/2009/04/f-spot%e3%81%aa%e3%81%a9%e3%81%a7%e3%80%81%e9%87%8d%e8%a4%87%e3%82%a4%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%88%e3%81%97%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e7%94%bb%e5%83%8f%e3%82%92%e5%89%8a/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/f-spot%e3%81%aa%e3%81%a9%e3%81%a7%e3%80%81%e9%87%8d%e8%a4%87%e3%82%a4%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%88%e3%81%97%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e7%94%bb%e5%83%8f%e3%82%92%e5%89%8a/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 04:09:34 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[プログラム小技]]></category>
		<category><![CDATA[F-Spot]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ファイル]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=381</guid>
		<description><![CDATA[デジカメなどで撮影した画像をアルバム化するツールとしてF-Spotは便利なのですが、
インポートの際に、誤って過去にインポートしたファイルをコピーインポートしてしまうと、
ファイルが重複してしまいます。
同じ年月日で、a [...]]]></description>
			<content:encoded><![CDATA[<p>デジカメなどで撮影した画像をアルバム化するツールとしてF-Spotは便利なのですが、</p>
<p>インポートの際に、誤って過去にインポートしたファイルをコピーインポートしてしまうと、</p>
<p>ファイルが重複してしまいます。</p>
<p>同じ年月日で、a.jpgと言うものがあったとすると、コピーインポートしてしまった結果、</p>
<p>a-1.jpgやa-2.jpgといったファイルができてしまいます。</p>
<p>そこで、　F-Spotのデータ全体をスキャンして、重複ファイルを削除するpythonスクリプトを作りました。</p>
<p>適当なファイル名を付けて保存し、読み込みと実行属性を付けてください。</p>
<pre class="brush: python; title: ;">
#! /usr/bin/env python
# -*- coding:UTF-8 -*-
#
# 概要:
# f-spotなどで画像を重複で取り込んでしまったときに、
# 重複ファイルを削除する
#
# 処理内容:
#  -???というファイル名がある場合(???は1桁以上の数字)、
# それを取り除いたファイルが同じディレクトリに存在し、
# かつファイルサイズが同じなら削除する

# モジュールの読み込み
import re   # 正規表現用
import os   # ファイル・ディレクトリアクセス用
import sys  # コマンドライン引数の取得用

# 引数チェック
if len(sys.argv) &lt; 2:
 print &quot;usage: %s path&quot; % sys.argv[0]
 quit()

# ディレクトリの存在チェック
rootpath = sys.argv[1]
if not os.access(rootpath, os.F_OK):
 print &quot;dirctory %s is not found.&quot; % rootpath
 quit()

# ディレクトリ内を全走査
print &quot;start&quot;
for root, dirs, files in os.walk(rootpath):
 # ファイル名を得る
 for name in files:
 # -???.というファイル名を検索
 if re.search(&quot;-\d+\.&quot;, name) != None:
 print root, name
 path = os.path.join(root, name)
 # -???を削除したファイル名が存在するかチェック
 orgname = re.sub(&quot;-\d+\.&quot;, &quot;.&quot;, name)
 orgpath = os.path.join(root, orgname)
 if os.access(orgpath, os.F_OK):
 # 元ファイルとファイルサイズが同じなら削除
 org_s = os.stat(orgpath)
 s = os.stat(path)
 if s.st_size == org_s.st_size:
 os.remove(path)
 print path, &quot; is removed&quot;
print &quot;done&quot;
</pre>
<p>引数にF-Spotの画像ルートディレクトリを指定すれば処理を行います。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/f-spot%e3%81%aa%e3%81%a9%e3%81%a7%e3%80%81%e9%87%8d%e8%a4%87%e3%82%a4%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%88%e3%81%97%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e7%94%bb%e5%83%8f%e3%82%92%e5%89%8a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/f-spot%e3%81%aa%e3%81%a9%e3%81%a7%e3%80%81%e9%87%8d%e8%a4%87%e3%82%a4%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%88%e3%81%97%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e7%94%bb%e5%83%8f%e3%82%92%e5%89%8a/" />
	</item>
		<item>
		<title>ウド日高</title>
		<link>http://www.esbrain.com/2009/04/%e3%82%a6%e3%83%89%e6%97%a5%e9%ab%98/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/%e3%82%a6%e3%83%89%e6%97%a5%e9%ab%98/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 02:06:14 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[日高市]]></category>
		<category><![CDATA[うど]]></category>
		<category><![CDATA[日高]]></category>

		<guid isPermaLink="false">/?p=371</guid>
		<description><![CDATA[「ウド」　ほろ苦い春の香り。
今、ウドは旬です。
日高市はウドの生産高が埼玉県一位を誇る、ウドの町です。
しかし、市民でもそれを知っている人は少ないのです。
多くが関西方面に出荷されてしまうので、あちらの方が「埼玉のウド [...]]]></description>
			<content:encoded><![CDATA[<p>「ウド」　ほろ苦い春の香り。</p>
<p>今、ウドは旬です。</p>
<p>日高市はウドの生産高が埼玉県一位を誇る、ウドの町です。</p>
<p>しかし、市民でもそれを知っている人は少ないのです。</p>
<p>多くが関西方面に出荷されてしまうので、あちらの方が「埼玉のウド」は有名なのかもしれません。</p>
<p>毎年春前にはＮＨＫのニュースでも伝えられているのに、なぜ知らないのか？</p>
<p>商品となる白いウドは地下で栽培しているので、どこで栽培しているのか知らないのです。</p>
<p>テレビ中継でしか存在を知ることのできないウド・・・</p>
<p>私も栽培場所を知りません。</p>
<p>畑で背の小さなウドが整然と並んでいる地域があるので、苗を作っているのでしょう。</p>
<p>しかし、野に自生するウドと同じ緑色なので、</p>
<p>知らない人が見ると雑草群にしか見えません。</p>
<p>日高市はウド祭りでも仕掛けて、観光の一事業にすればもうちょっと認知度が上がるでしょうね〜</p>
<p>手始めに、市役所に「ウドのまち日高」と垂幕でも出したり、</p>
<p>公式ホームページのタイトルの空白に「清流とウドのまち」と書いてみてほしいです。</p>
<p>検索エンジンで「ウド」「うど」を検索して、上位5位以内に入って欲しいですね。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/%e3%82%a6%e3%83%89%e6%97%a5%e9%ab%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/%e3%82%a6%e3%83%89%e6%97%a5%e9%ab%98/" />
	</item>
		<item>
		<title>極小Ubuntu</title>
		<link>http://www.esbrain.com/2009/04/%e6%a5%b5%e5%b0%8fubuntu/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/%e6%a5%b5%e5%b0%8fubuntu/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 11:20:24 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[スタッフブログ]]></category>
		<category><![CDATA[SDカード]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[極小]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=100</guid>
		<description><![CDATA[
UbuntuをデスクトップOSとして使い始めてから早6ヶ月。
試行錯誤を重ねた結果、ついに極小のUbuntuでの運用を証明できました。
Ubuntuのメリットである「いつでも、だれでも、どこでも」がかなり現実のものにな [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a rel="lightbox" href="http://www.esbrain.com/wp-content/uploads/sdcard.jpg" title="sdcard"><img class="aligncenter size-thumbnail wp-image-376" title="sdcard" src="http://www.esbrain.com/wp-content/uploads/sdcard-150x150.jpg" alt="sdcard" width="150" height="150" /></a></p>
<p>UbuntuをデスクトップOSとして使い始めてから早6ヶ月。</p>
<p>試行錯誤を重ねた結果、ついに極小のUbuntuでの運用を証明できました。</p>
<p>Ubuntuのメリットである「いつでも、だれでも、どこでも」がかなり現実のものになりました。</p>
<p>結果としては、microSDカード2枚でOK。</p>
<p>ブートやアプリケーション用のカードと、homeディレクトリ用のカードとしています。</p>
<p>2枚構成により、アプリケーションがブラックアウトすることがほとんどなくなりました。</p>
<p>ただし、SDカードに直接インストールできるのは、バージョン8.04です。</p>
<p>バージョン8.10では、直接インストールができません。</p>
<p>（注意：ここで言うインストールとは、HDDと同じインストール方法のことです。バージョン8.10ではSDカードにLiveCDと同じような構成でインストールするため、通常利用向きではないのです。）</p>
<p>よって、一度HDDにインストールしてから、RescueCDなどでバックアップを取り、それをSDカードに移す作業が必要です。</p>
<p>カードリーダは、デュアルアクセス可能なリーダであれば問題ありません。</p>
<p>私はエレコム社製のmicroSDとSDカードが同時にアクセスできるものを使用しています。</p>
<p>この構成で既に4ヶ月動作させていますが、まったく問題ありません。</p>
<p>ただし、いつメモリの書き込み限界を越えるか分からないため、頻繁にバックアップは取るようにしています。</p>
<p>いつまで動くか、検証を続けます。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/%e6%a5%b5%e5%b0%8fubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/%e6%a5%b5%e5%b0%8fubuntu/" />
	</item>
		<item>
		<title>VistaのWindows updateには注意</title>
		<link>http://www.esbrain.com/2009/04/vista%e3%81%aewindows-update%e3%81%ab%e3%81%af%e6%b3%a8%e6%84%8f/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/vista%e3%81%aewindows-update%e3%81%ab%e3%81%af%e6%b3%a8%e6%84%8f/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 08:37:10 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[スタッフブログ]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[vista]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[ログイン認証]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=362</guid>
		<description><![CDATA[PCログイン認証を導入頂いているお客様から、
「使用していると、突然PCがシャットダウンしてしまった」
との連絡があり、急行しました。
PCのイベントログを調査してみると、大量のWindows updateの文字が・・・ [...]]]></description>
			<content:encoded><![CDATA[<p>PCログイン認証を導入頂いているお客様から、</p>
<p>「使用していると、突然PCがシャットダウンしてしまった」</p>
<p>との連絡があり、急行しました。</p>
<p>PCのイベントログを調査してみると、大量のWindows updateの文字が・・・</p>
<p>自動更新の設定がされていたため、定期的に自動アップデートを行い、</p>
<p>再起動までしてしまっていたのでした。</p>
<p>取り急ぎ、Windows updateは手動で行うようにして対応は完了。</p>
<p>ログイン認証システムとVistaの相性問題などの深い問題ではなくて良かったのですが、</p>
<p>Vistaにはご注意を！</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/vista%e3%81%aewindows-update%e3%81%ab%e3%81%af%e6%b3%a8%e6%84%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/vista%e3%81%aewindows-update%e3%81%ab%e3%81%af%e6%b3%a8%e6%84%8f/" />
	</item>
		<item>
		<title>日高市とは？</title>
		<link>http://www.esbrain.com/2009/04/%e6%97%a5%e9%ab%98%e5%b8%82%e3%81%a8%e3%81%af%ef%bc%9f/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/%e6%97%a5%e9%ab%98%e5%b8%82%e3%81%a8%e3%81%af%ef%bc%9f/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 08:31:57 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[日高市]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=279</guid>
		<description><![CDATA[埼玉県西部に位置する、首都圏最後の自然の聖地。
のどかな田園風景が広がる田舎です。
電車やバスはちっとも来ません。
しかし歴史は深く、7世紀後半に遡ります。
朝鮮半島の高句麗が唐・新羅連合軍との戦いに破れ、多くの人が日本 [...]]]></description>
			<content:encoded><![CDATA[<p>埼玉県西部に位置する、首都圏最後の自然の聖地。<br />
のどかな田園風景が広がる田舎です。<br />
電車やバスはちっとも来ません。</p>
<p>しかし歴史は深く、7世紀後半に遡ります。<br />
朝鮮半島の高句麗が唐・新羅連合軍との戦いに破れ、多くの人が日本に移住しました。<br />
その渡来人が集められて住んでいたのが、日高市周辺なのです。<br />
その歴史が残る代表的なものは、高麗神社でしょう。</p>
<p>近年では巾着田（きんちゃくだ）と呼ばれる、高麗川が蛇行したエリアに群生する曼珠沙華が有名です。</p>
<p>意外にもこんな田舎を愛する人は多いのです。<br />
不定期で日高市についてお伝えしていきたいと思います。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/%e6%97%a5%e9%ab%98%e5%b8%82%e3%81%a8%e3%81%af%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/%e6%97%a5%e9%ab%98%e5%b8%82%e3%81%a8%e3%81%af%ef%bc%9f/" />
	</item>
		<item>
		<title>Ubuntuのメッセンジャー</title>
		<link>http://www.esbrain.com/2009/04/ubuntu%e3%81%ae%e3%83%a1%e3%83%83%e3%82%bb%e3%83%b3%e3%82%b8%e3%83%a3%e3%83%bc/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.esbrain.com/2009/04/ubuntu%e3%81%ae%e3%83%a1%e3%83%83%e3%82%bb%e3%83%b3%e3%82%b8%e3%83%a3%e3%83%bc/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 03:37:43 +0000</pubDate>
		<dc:creator>yokoyama</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[emesene]]></category>
		<category><![CDATA[pidgin]]></category>
		<category><![CDATA[メッセンジャー]]></category>

		<guid isPermaLink="false">http://www.esbrain.com/?p=284</guid>
		<description><![CDATA[ubuntuでメッセンジャーソフトといえば、標準でインストールされているPidginが有名です。
ただし、3点ほど不具合がありました。

数行に渡るメッセージを書いていると、ウィンドウが激しく揺れて、応答しなくなる（必ず [...]]]></description>
			<content:encoded><![CDATA[<p>ubuntuでメッセンジャーソフトといえば、標準でインストールされているPidginが有名です。<br />
ただし、3点ほど不具合がありました。</p>
<ol>
<li>数行に渡るメッセージを書いていると、ウィンドウが激しく揺れて、応答しなくなる（必ず発生する）。</li>
<li>ほとんどのファイル転送が失敗する（ごくまれに転送できる）。</li>
<li>相手の環境によっては、〜という文字が？に文字化けしてしまう（相手によるので障害とも言えないかも）。</li>
</ol>
<p>ということで、別のメッセンジャーアプリを試していたのですが、</p>
<p>日本語表示すら怪しく、乗り換えができない状態でした。</p>
<p>ということで、懲りずに今回試してみたのは、emesene。</p>
<p>いつものようにSynapticから、簡単にインストールできます。</p>
<p>起動してみると、GUIはすっきりとしていてなかなか良い感じです。</p>
<p>では、テスト。</p>
<table border="0">
<tbody>
<tr>
<th align="right">No</th>
<th>項目</th>
<th>結果</th>
</tr>
<tr>
<td align="right">1</td>
<td>アイコンは表示されるか</td>
<td>OK</td>
</tr>
<tr>
<td align="right">2</td>
<td>普通の日本語は正常に表示されるか</td>
<td>OK</td>
</tr>
<tr>
<td align="right">3</td>
<td>〜文字は相手に正しく表示されるか</td>
<td>OK</td>
</tr>
<tr>
<td align="right">4</td>
<td>日本語メッセージを書いている間に障害が発生しないか</td>
<td>OK</td>
</tr>
<tr>
<td align="right">5</td>
<td>ファイルは送れるか</td>
<td bgcolor="red">NG</td>
</tr>
<tr>
<td align="right">6</td>
<td>ファイルは受け取れるか</td>
<td bgcolor="red">NG</td>
</tr>
</tbody>
</table>
<p>やっぱりファイル転送はだめでした。</p>
<p>と思ったら、どうも会話先のメッセンジャーがMSメッセンジャー2009年バージョンだとダメだということが判明。</p>
<p>相手が2008年バージョンのMSメッセンジャーとはうまく転送できました。</p>
<p>ちなみに、Pidginでも去年はファイル転送できていたので、MSメッセンジャーとの相性問題のようです。</p>
<p>相手には、最新のメッセンジャーを使わないように伝えておきましょう。</p>
<p>Pidginで発生していた、日本語を長く入力するとウィンドウが激しく揺れる障害は、emeseneでは発生しないため、</p>
<p>しばらくemeseneを使ってみたいと思います。</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.esbrain.com/2009/04/ubuntu%e3%81%ae%e3%83%a1%e3%83%83%e3%82%bb%e3%83%b3%e3%82%b8%e3%83%a3%e3%83%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.esbrain.com/2009/04/ubuntu%e3%81%ae%e3%83%a1%e3%83%83%e3%82%bb%e3%83%b3%e3%82%b8%e3%83%a3%e3%83%bc/" />
	</item>
	</channel>
</rss>

