2010/09/28

洗濯機が壊れた Samsung SW-45C1S

洗濯機が、壊れました、、、

脱水しようとすると、エラーが出てできないんです。

洗濯機は、Samsung SW-45C1S です。 まぁ安かったし、しょうがないとは
思ったのですが、やっぱり、修理を頼もうとすると高いし自分で直した方が
面白いので、少しだけがんばってみました。

まずは、マニュアルがなくなってしまっていたので。
マニュアルを探します。

samsungの公式サポートにはマニュアルのダウンロードがもうなかったので、
他にないものかといろいろ探したところ、下記のページにみつかりました。
便利な時代です。

nodevice.jp
http://www.nodevice.jp/user_manual/samsung/other4/sw-45c1s.html

取りあえず、出ていたエラーを調べてみます。
表示されているエラーは、「dE」です。

……
『脱水ができない状態のときに表示されます』
『水平に設置されたか確認してください』  ―――― ok
『ふたが開いていないか確認してください』 ―――― ok


…………
エラーの詳細については これだけみたいです、、、

水平には、設置されているはずだから、ふたのセンサーあたりが問題なのではと
だいたいの検討をつけて探してみることにします。

『samsung SW-45C1S』で検索をかけてみてもめぼしい情報はみつかりませんでした。
『洗濯機 ふた センサー』あたりで、改めて再検索。


ありました!!

洗濯機修理奮戦記
http://gakujun.web.fc2.com/diy/senntakuki/senntakuki.html

洗濯機のふたを無効に
http://rave25.blog50.fc2.com/blog-entry-179.html

上記のページをみてみたところ、ふたのセンサーは、どうやら洗濯機の
上面後方を外した中にあるみたいでしたので、さっそく開いてみることに。

ネジは、2本で止めてあったのですが、とにかく固くて開けるのに苦労しました。
開けるときには壊れないように、注意が必要です。

で、開けてみたところ、、、、
ああ…

センサーかどうかはわかりませんでしたが、何やら配線を止めているところがポッキリ
いってしまっていました。

倉庫で眠っていた、ハンダゴテをとりだして、なれないハンダ付けを開始します。




ぼけぼけで、しかも汚い画像ですけど、下の方にある、青い配線をハンダ付けしたのです。

……電源を入れて、脱水をしてみます。


――――直りました!!!

ハンダ付けが弱くて、2回くらい止まりましたけど、なんとかスムーズに修理が終了しました。

原因は、なんだったんだろうな??


!!


みなさんは、電化製品の調子が悪いなぁとか思っても、絶対に叩いたり
しないようにしましょう。

2010/09/25

Pythonの基本 まとめ Hello, world と 変数

Release:1.1
Date:October 21, 2010
自分用に書いたPythonのHello, Worldから変数についてのまとめです。
間違いや勘違いが多分に含まれている可能性があるので、参考にされる方は
公式のドキュメントなどで確認をお願いします。

注) 印はまだ自身のないところです。

– Hello, World

インタラクティブシェルでHello,Worldを書いてみましょう。
ipythonかbpython、特にbpythonは初心者の方におすすめです(※)。

bpython

機会があったら紹介します。

>>> print('Hello, World!')
Hello, World!
スクリプトファイルを使ってHello,World
1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""Echo 'Hello World'"""

print('Hello, World!')

'''
Created on 2010-09-08
@author Komiyam Iyori
'''
$ python HelloWorld.py
Hello, World!

[1] Python2系と3系ではprintの書き方が異なります。

注釈

[1]print文はPython3から関数に変更になりました。
Python2系 Python3系
print ‘hoge’ print(‘hoge’)
print ‘foo, ‘bar’ print(‘foo’, ‘bar’)
print ‘gau’, print(‘gau’, end=” “)

一番上は2系と3系で互換性があるのでなるべく同じように書くといいと思います(※)。

– 変数を使う

変数を定義するというのは、変数という箱にオブジェクトを代入するということです。

>>> box = 1   # boxという変数の箱の中に1という値を入れる(代入)
>>> box
1
簡単に書くと、「箱(名札:box) = 値」みたいな感じです。
上の場合は 1 という数字を box という名札のついた箱(変数)に入れています。
このような手続きを変数を定義するといいます。(※要確認)
>>> a = 1
変数の中身を確認するには、インタプリタシェルでは単純に a と入力するだけです。
>>> a
1

文字、あるいは文字列の場合には、アルファベットの場合はそのままの文字、日本語の場合には文字コードが表示されます。

>>> n = 'a'
>>> n
'a'

日本語の文字列を扱う場合はUnicode文字列を使いましょう。

>>> n = u'あ'
>>> n
u'\u3042'

きちんと表示するためには、print文(Python3の場合は関数)を使います。

>>> print(n)

変数には、大小アルファベット、数字、アンダースコア( _ )が使えます。

>>> a1 = 1
>>> print(a1)
1
>>> _a = 'underscore'
>>> print(_a)
underscore
変数は、大文字と小文字を区別します。
例えば、 a という変数と A という変数は別物です。
>>> a = 1
>>> A = 'one'
>>> a
1
>>> A
'one'
変数のはじめの1文字には、アルファベットかアンダースコアを書かなくてはいけません。
数値をはじめの1文字とするとエラーになります。
>>> 1a = 1
  File "<stdin>", line 1
      1a = 1
           ^
SyntaxError: invalid syntax

変数名には次の一覧にある予約語は使用できません。

Note

and as assert break class continue def
del elif else except exec finally for
form global if import is lambda not or
pass raise return try while with yield
print

予約語を変数名に使おうとするとエラーが出ます。

>>> and = 0
  File "<stdin>", line 1
      and = 0
            ^
SyntaxError: invalid syntax

print文はPython3系から関数になっているので変数名にできますが、使わないほうが無難だと思います(※)。

>>> print = 'print'
>>> print
print

変数の名前のつけ方に関しては、`:pep: 8` を参照してください。

変数定義いろいろ。

>>> n = 1
>>> n
1
>>> b = 'bar'
>>> b
'bar'
>>> c = d = e = 7  #←同値同時代入
>>> c, d, e
(7, 7, 7)
>>> x, y, z = 1, 2, 3  #←複数同時代入
>>> x
1
>>> y
2
>>> z
3
>>> x, y = y, x  #←同時入れ替え
>>> x
2
>>> y
1

変数どおしの計算はきちんと中身の値が使われます。

>>> width = 20
>>> height = 5 * 9
>>> width * height
900

変数の同時入れ替えの簡単なサンプル

>>> def fib(n):    # n までのフィボナッチ級数を出力する
...     """Print a Fibonacci series up to n."""
...     a, b = 0, 1
...     while b < n:
...         print b,
...         a, b = b, a+b
...
>>> # 今しがた定義した関数を呼び出す
>>> fib(2000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
Pythonでは変数の型は自動的に判断されて切り替えられています。
変数の型を宣言するというようなことはPythonでは必要ありません。
同じ変数に文字列でも数値でも入れることができますが、多言語も学ぼうと思われる方は
変数に今どのようなオブジェクトが入っているのかをよく考え、把握することが大事だと思います(※)。
>>> a = 1   # 数値を代入
>>> a
1
>>> a = 'あ'   # 数値が入っていた変数に文字列を入れる
>>> print a
あ     # エラーなく表示される

間違いなどがあったら、教えていただけると嬉しいです。


[2010-10-21] @Tomoki_Imai さんから日本語文字列についてご指摘をいただきました!
        親切にご指導していただき本当にありがとうございます。

2010/09/22

Python PEP8をマインドップで書いてみた

Release:1.2
Date:September 23, 2010
自分用に書いた、PythonのPEP8をマインドマップでまとめたものです。
間違いや勘違いが多分に含まれている可能性があるので、参考にされる方は
公式のPEP8などで確認をお願いします。
Note
引用元
PEP 8 – Style Guide for Python Code

– PEP 8 – Style Guide for Python Code

View Fullscreen












































(2010-09-22)

マインドマップ画像の表示がうまくいっていなかったので負荷分散のために、細かく切ってみたはいいけれど

今度はうまくつながってない…

cssでどのように書けばいいのか…

つながった画像が見たい方は、こちらからどうぞ。

View Fullscreen

(2010-09-23) つなぎ目ができていたのと順番が前後していたのを修正

2010/09/13

Pythonのルール まとめ

Release:1.1
Date:September 20, 2010
自分用に書いた、Pythonの基本的なルールのまとめです。
間違いや勘違いが多分に含まれている可能性があるので、参考にされる方は
公式のドキュメントなどで確認をお願いします。

– インタプリタを起動する

Pythonインタブリタを起動するには単純にシェル上でpythonとコマンドを打ちます。

$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

インタプリタの終了は、Unixでは Control-D 、Windows では Control-Z
もしくは、

>>> quit()

さらには、

>>> import sys
>>> sys.exit()

でも、終了できます。

もし、Pythonのインタプリタを操作していて入力を受け付けなくなった場合は、
Control-CKeyboardInterrupt を発生させて終了させます。
>>> while True:
...     pass
...
^C
KeyboardInterrupt

Pythonインタプリタには、IPythonやbpythonなど便利なものがあります。

– Python スクリプト ファイルの作成

Python スクリプトをシェルスクリプトのようにして直接実行可能にするにはスクリプトの
先頭に以下の行を置きます。
#!/usr/bin/env python

#! はファイルの最初の2文字でなければなりません。

このほかにも、必要に応じて

#!/usr/bin/pytohn
#!/usr/local/bin/python

などとすることもできます。

実行するときは、以下のようにするか

$ python myscript.py

あるいは、 chmod コマンド などを用いて、スクリプトに実行権限を与えます。

$ chmod +x myscript.py

実行権限が与えられている場合には直接実行できます。

$ ./myscript.py
Hello, World!

– ソースコードの文字コード方式 (encoding)

Python2系では、ASCⅡ 形式の文字コードが採用されているため、
ASCII 形式でない文字コード化方式(エンコーディング)をソースファイルの中で使うには、
#! 行の 直後に一行かそれ以上の特殊なコメントを挿入して、ソースファイルのエンコード
を指定しなければなりません。
# -\*- coding: encoding -\*-
このように宣言しておくと、ソースファイル中の全ての文字は encoding という文字コードでエンコードされているものとして扱われ、Unicode 文字列リテラルを指定したエンコードで直接記述できます。

UTF-8でソースコードを記述する場合は、下記のように宣言します。

# -*- coding: utf-8 -*-

string = u"あ"
print ord(string)

Windowsの場合は、cp932を宣言します。

# coding: cp932

moji = u"あ"
print ord(moji)

宣言をしていなければ、ソースコード中に半角英数字以外の文字を記述すると以下のエラーがでます。

$ python string.py
File "string.py", line 7
SyntaxError: Non-ASCII character '\xe3' in file string.py on line 7, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

– デフォルトエンコーディング

Python2系では、デフォルトのエンコーディングは常にASCⅡに設定されています。
そのため、日本語などのUnicode文字をstr()で変換しようとすると下記のようなエラーが発生します。

>>> uni = u'あ'
>>> str(uni)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042' in position 0: or
dinal not in range(128)

これを解決するには、そのつどエンコードしなければなりません。

str(uni.encode('utf-8', 'replace'))
'\xe3\x81\x82'
デフォルトのエンコーディングを変更するためにはsitecustomize.pyを作成するか
Pythonのパス上にあるsitecustomize.pyに追記しなければなりません。
Ubuntu10.04の場合は、 /usr/lib/python2.6 もしくは、 /etc/python2.6/
sitecustomize.pyに以下を記述します。
import sys
sys.setdefaultencoding(sys.getfilesystemencoding())

Windowsの場合は、 C:\Python26\Lib\ に作成しなければならないようですがわかりません。

デフォルトのエンコーディングは以下のようにして確認できます。

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
$ Python -S hoge.py

のように -S オプションを付けるとスクリプトファイル内に書いても実行できます。

このことを利用して、スクリプトファイル内に、以下のように記述してもできますが
あまりおすすめしません。
#!/usr/bin/python -S
import sys
sys.setdefaultencoding('utf-8')
sitecustomize.pyを設定するのは、ライブラリを使っているときに動かないものがあった
場合や、他者のコードに不備があったときなど、やむ終えない場合のみにするといいかと思います。

– 対話モード用の起動時実行ファイル

Pythonインタプリタを起動するときに読み込まれる設定ファイルを作ることができます。
とりあえず、補完の設定と、履歴の設定をしてみます。
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#-*- coding:utf-8 -*-
""" My Python Setting Files """
import os.path
import atexit

HISTORYFILE = os.path.expanduser("~/.pyhistory")

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter

    class IrlCompleter(rlcompleter.Completer):
        """
        This class enables a "tab" insertion if there's no text for
        completion.

        The default "tab" is four spaces. You can initialize with '\t' as
        the tab if you wish to use a genuine tab.
        """
        def __init__(self, tab='    '):
            self.tab = tab
            rlcompleter.Completer.__init__(self)

        def complete(self, text, state):
            if text == '':
                readline.insert_text(self.tab)
                return None
            else:
                return rlcompleter.Completer.complete(self, text, state)

    #you could change this line to bind another key instead tab.
    readline.parse_and_bind("tab: complete")
    #readline.parse_and_bind("bind ^I rl_complete")
    readline.parse_and_bind("set input-meta on")
    readline.parse_and_bind("set convert-meta off")
    readline.parse_and_bind("set output-meta on")
    readline.set_completer(IrlCompleter().complete)
    readline.set_history_length(1000)

    # Restore our command-line history, and save it when Python exits.
    if os.path.isfile(HISTORYFILE):
        readline.read_history_file(HISTORYFILE)
    atexit.register(lambda: readline.write_history_file(HISTORYFILE))
'''
Created on 2010-09-12
@author http://stackoverflow.com/questions/
Iyori Komiyama
'''

上のファイルを作成したら .bashrc などに以下を追加します。

#PythonStartupFile
export PYTHONSTARTUP=$HOME/.pythonrc.py

これで、Pythonインタプリタで、Tab補完、履歴を使えるようになりました。

– コメント

コメントは’#’文字だけのようです。

>>> n = 234  # 変数nを定義
>>> print(n)  ####### n を表示する
234
>>> b = "abord"  ## 変数に文字列を代入
>>> print(float(n), b)  ## Python2.6.5まではまだprint文は関数になっていない
(234.0, 'abord')
>>> print(b)  ## 上はちょっと変だけど、これはok
abord
>>> n = b #これはb
>>> n
'abord'

次のように書くとエラーになるので注意

print 'a' + \ # this a
      'b' + \ # this b
      'c'     # this c

File "<input>", line 1
print 'a ' + \ #this a
               ^
SyntaxError: unexpected character after line continuation character

ドキュメンテーション

スクリプトファイルあるいは、モジュールなどの先頭、または、関数やクラスの定義直後に
「 “”” 」トリプルクウォートで囲んだ文字列を書くとドキュメンテーションになります。

例えば、randomモジュールのコードには以下のように記述されています。

def randrange(self, start, stop=None, step=1, int=int, default=None,
              maxwidth=1L<<BPF):
    """Choose a random item from range(start, stop[, step]).

    This fixes the problem with randint() which includes the
    endpoint; in Python this is usually not what you want.
    Do not supply the 'int', 'default', and 'maxwidth' arguments.
    """

これは、__doc__を使うことで読むことができます。

>>> import random
>>> print random.randrange.__doc__
Choose a random item from range(start, stop[, step]).

    This fixes the problem with randint() which includes the
    endpoint; in Python this is usually not what you want.
    Do not supply the 'int', 'default', and 'maxwidth' arguments.

もうひとつ。

def vonmisesvariate(self, mu, kappa):
    """Circular data distribution.

    mu is the mean angle, expressed in radians between 0 and 2*pi, and
    kappa is the concentration parameter, which must be greater than or
    equal to zero.  If kappa is equal to zero, this distribution reduces
    to a uniform random angle over the range 0 to 2*pi.

    """
    # mu:    mean angle (in radians between 0 and 2*pi)
    # kappa: concentration parameter kappa (>= 0)
    # if kappa = 0 generate uniform random angle

    # Based upon an algorithm published in: Fisher, N.I.,
    # "Statistical Analysis of Circular Data", Cambridge
    # University Press, 1993.

    # Thanks to Magnus Kessler for a correction to the
    # implementation of step 4.
>>> print random.vonmisesvariate.__doc__
Circular data distribution.

    mu is the mean angle, expressed in radians between 0 and 2*pi, and
    kappa is the concentration parameter, which must be greater than or
    equal to zero.  If kappa is equal to zero, this distribution reduces
    to a uniform random angle over the range 0 to 2*pi.

– 長い単一文の書き方(改行)

Pythonでは、慣例的に1行が80文字以内が推奨されています。
そのため、1文が長くなってしまうときは改行をしなければなりません。

改行には、 \ (バックスラッシュ)を用います。

>>> 1 + 2 + 3 + \
... 4 + 5
15

括弧内であれば、 \ を書かなくても改行できます。

>>> (1 + 2 + 3 +
... 4 + 5)
15
>>> [1, 2, 3, 4,
... 5, 6]
[1, 2, 3, 4, 5, 6]
>>> {1: 'a', 2: 'b',
... 3: 'c', 4: 'd'}
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

– コーディングスタイル(PEP8)

Python には、ほとんどのプロジェクトが守っているスタイルガイドとして PEP 8 があります。
それは非常に読み易く目に優しいコーディングスタイルを推奨しています。

Note

日本語訳は ふるかわとおる さんのページにあります。
  • インデントには空白 4 つを使い、タブは使わないこと。

    タブは混乱させるので、使わない方がいいらしいです。
    使っているテキストエディタの設定を変更しましょう。

  • ソースコードの幅が 79 文字を越えないように行を折り返すこと。

    80文字規制だそうです。これはなかなか難しい。

  • トップレベルの関数とクラス定義の間は、2 行空ける。クラス内部でのメソッド定義の間は 1 行空けること。

    def poge(*pon):
        """ Out the sum of all """
        return sum(pon)
    
    # 新しく書き始めるには空白を挟む
    def hoge():
        """ New define """
        print('hoge')
    
  • 可能なら、コメントはコードと同じ行に書きなさい。インラインコメントは、控えめに使う。
    コメントは、文から少なくともスペース2個分 離しておき、 # とスペース1個で始まるようにするべきである。

    value = 0   # 変数を初期化
    
  • docstring を使いなさい。

    class HogeFuga(object):
        """Do nothing."""
        pass
    
  • 演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れないこと: a = f(1, 2) + g(3, 4)

  • クラスや関数に一貫性のある名前を付けなさい; 慣習では CamelCase をクラス名に使い、 lower_case_with_underscores を関数名やメソッド名に使います。常に self をメソッドの第 1 引数の名前 (クラスやメソッドについては tut-firstclasses を見よ) として使いなさい。

    関数名やメソッドには小文字を、クラスは単語の先頭を大文字にする。

  • あなたのコードを世界中で使ってもらうつもりなら、風変りなエンコーディングは使わないこと。どんな場合でも ASCII が最も上手くいきます。Python3.0 以降のバージョンでは、 UTF-8 が好ましい。 PEP 3120 を参照のこと。

などなど。

— pep8を使ってみる

pep8の規則に違反していないかをチェックできるツールがあるので、試してみましょう。

$ sudo aptitude install pep8
Debian系のLinuxなら、これで PEP 8 が使えるようになります。
使っているOSでpep8が用意されていないならば、 easy_install でインストールすることができます。
$ easy_install pep8

簡単な使い方。

$ pep8 gcd.py
checking gcd.py
gcd.py:5:80: E501 line too long (145 characters)
gcd.py:15:1: E302 expected 2 blank lines, found 1

同じ規則違反があるところも表示させる。

$ pep8 -r  gcd.py
gcd.py:5:80: E501 line too long (145 characters)
gcd.py:6:80: E501 line too long (95 characters)
gcd.py:9:80: E501 line too long (82 characters)
gcd.py:15:1: E302 expected 2 blank lines, found 1
gcd.py:24:1: E302 expected 2 blank lines, found 1

Note


以上で、基本的なPythonのルールは終わりです。
もし足りないところがあった場合は、追加していきます。

(2010-09-20) sys.defaultencodeng('utf8')をsys.defaultencodeng(sys.getfilesystemencoding())に変更

2010/09/03

Ubuntu 10.04 Server のインストールメモ fluxboxの設定まで

普段は Ubuntu10.04 LTS Lucid を使用しています。
サーバーには、Debian lenny 5 が入っていたのですが、
Pythonのバージョンは違うし、いろいろ面倒になってきたので
Ubuntuで統一してみることにしました。

vncで遊ぶために、fluxboxもついでに入れときます。

ダウンロード

ubuntu download

http://www.ubuntu.com/server/get-ubuntu/download

  • 32bitにチェック
  • ubuntu-10.04.1-server-i386.iso

イメージディスクを焼く

Braseroの画面

Brasero で焼いてみた

5分くらいかかります。

有線LANに接続しておく

ねんのため。

インストール

CDを入れて起動する
  • F8キーでBIOSの設定を変更して、CDから起動する
言語選択画面がでるので、日本語を選択
  • メッセージが日本語に変更される

「~ubuntuサーバーをインストール」 を選択

キーボードの種類を選択
  • 「Generic 105-key(Intel) PC」にした
  • Detect keyboard layout? – いいえを選択
キーボードの言語を選ぶ
  • 「Japan」を選択
次も「Japan」を選択
  • kana とか Macintosh とかを選べる
しばし待つ
  • ネットワークの自動設定
ホスト名を入力
  • 「UbuntuServer」とか適当につける
ディスクのパーティショニング

  • 「手動」を選択
    • ubuntuを入れるパーティションを選択する
    • パーティションをex4にする起動フラグはオフで
    • システムルート「/」を選択

しばらく待ちます

ユーザー名を入力
アカウントのユーザー名を入力
パスワードを入力
ホームディレクトリの暗号化
  • はいを選択
ソフトウェアの選択とインストール
  • 自動的にアップデートしないを選択
ソフトウェアの選択
  • LAMP server
  • OpenSSH server
マスターブートレコードにgrubをインストールするか?
  • はいを選択
インストール完了
  • CDを取り出す

問題なく起動することができた。

wireless lan 環境の設定

WHR-G54Sのデバイスを認識させるためにb43-fwcutterをインストール

$ sudo aptitude install b43-fwcutter

もしかしたら、これは必要なかったかもしれないけど、Debianの時に設定していたので

ねんのため。

interfacesに設定を書き込む

auto wlan0
iface wlan0 inet static
    wireless-essid xxxxxxxxxxxxxx
    wireless-key s:xxxxxxxxxxxxxx
    address 192.168.11.3
    netmask 255.255.255.0
    gateway 192.168.11.1

とりあえず、再起動させてみる

……

うまく認識しているみたいだ。

sshの設定

Ubuntuでsshdの設定をしてリモートから接続できるようにする

http://d.hatena.ne.jp/Fiore/20080228/1204174833

↑のブログを参考にさせていただきました。

日本語ppaの追加

$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/lucid.list -O /etc/apt/sources.list.d/ubuntu-ja.list
$ sudo apt-get update

http://www.ubuntulinux.jp/products/JA-Localized

bashからzshへ

個人的な好みです。

$ sudo aptitude install zsh

scp でバックアップしていた設定ファイルを移して

.bashrc に

if [ -f /bin/zsh ]; then
   exec /bin/zsh
fi

を書いて終了。

fluxboxをインストール

$ sudo aptitude install fluxbox fluxconf
$ sudo aptitude install vnc-server

かなりインストールされるけど、大丈夫だろうか、、、

vncのパスワードを設定

$ vncpasswd
  Password: パスワードを入力します
  Verify: もう一度

  Password too long - only the first 8 characters will be used

そうだった、パスワードは8文字までだった。

.vncに設定ファイルを送る

xstartupは下みたいな感じで。

#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
fluxbox &

再起動しておこう。

$ sudo reboot

vncserverの起動

$ vncserver :1
  xauth: creating new authority file /home/user/.Xauthority
  New 'UbuntuServer:1 (user)' desktop is UbuntuServer:1
  Starting applications specified in /home/user/.vnc/xstartup
  Log file is /home/user/.vnc/UbuntuServer:1.log

vncでサーバーに接続してみる

ホスト側のubuntuからリモートデスクトップビューワーを使って接続してみる

リモートデスクトップビューワーの画面

あぁ、、

盛大に文字化けするなぁ。

日本語フォントをいれてなかったorz

$ sudo aptitude install ttf-vlgothic ttf-umefont ttf-takao ttf-ipafont ttf-ipamonafont ttf-sazanami-mincho

これだけ入れとけば大丈夫だろう。

vnc越しのfluxboxの画面

やっとできました!

^            total       used       free     shared    buffers     cached
Mem:           228        127        101          0         11         65
-/+ buffers/cache:         50        178

メモリは127MB使用しているみたいです。

Release:1.0
Date:August 30, 2010