Ubuntu」タグアーカイブ

AMD 690G to 880G for Ubuntu

AMD 880G マザーボードを買ってきた、これに Ubuntu 10.10 を入れる。
AMD 690G と Athron64 x2 2.2GHz にそろそろ限界を感じてきたので。
コイツの内蔵グラフィックで fglrx は大丈夫なのかな?

ついでに Phenom II X4 955 と DDR3 4G メモリ。
今まで Duron とかしか買わなかった私なのに 4 コア CPU とはなんてリッチ。
全部で二万円ちょっとだったけど、安くなったもんだ。

三年前のドスパラマシンの中身を全とっかえ、自分で組むのも三年ぶり。
LED 配線のプラスマイナスを間違えた以外は問題なく終了。
余っている HDD に Ubuntu をインストール、これも問題無しで再起動。

流石は CPU パワーが 1.5 倍かつ 4 コア、体感速度も超早くなった。

fglrx は普通に有効になった、標準ドライバもよくできているけど一応。
とにかくコレで動画の CPU 負荷は減るはず。
標準ドライバの時と違ってスクリーンショットのラインが解りにくい…

後はいつものように旧 HDD をスレーブ接続してデータコピー。
Gedit プラグインや Nautilus スクリプト、Opera の設定はコピーだけで使える。

ところで Ubuntu 関連を探すとディレクトリ名変更に変なことしている人が多いけど

コレを off にして F2 キーで普通に変名するだけなんだが…
~.config/user-dirs.dirs も連動して書き換えしてくれるし。

後は必要なアプリを日本語セットアップヘルパと追加と削除から。
Opera を追加と削除にデフォルトで入れてくれないかなぁ…

Opera
Y901x
Gimp
VirtualBox ose
Sylpheed
Ghex
KeepassX
Apache2
PHP
Gjot2
Gnote

再構築完了まで四時間、旧 HDD はそのまんまバックアップになるので一石二鳥。
問題はコピーした VirtualBox 仮想マシンな Vista はアクチが通るかだ。
Vista を買った時に使っていた DVD-R は同じなのでライセンスは間違っていないが。

問題なかった、数値はあまり変わらないけど明らかに快適さが違う。
CPU を 2 に割り当てしたけどタスクマネージャは一つ、何故だろう。
ついでに起動時のサウンドが歪んでいたのも良くなった。

ま、仮想マシン上での Visual Studio が重すぎるのでパワーアップしたんだが。
それと Y901x とかの動画ファイル切り替えで落ちなくなると嬉しいんだが様子見。

やはり Linux もなるべく新しいハードで使わなければ快適にはならないや。
とにかく AMD 880G + SB710 なら Ubuntu 10.10 は問題無いみたい。

よし動画を見まくるぞ!
いや、サイト整理は地味にやっているけどちっとも進まないんで…

Default argument and ReadLines

何を今頃なのだが C# 4.0 を調べてみた。
なんと 4.0 では関数にデフォルト引数を指定できるようになっていた。

てか、今まで無かったのかよ…

Default argument
で可能とかウソを書いてしまった、はずかしい。
引数に数の差だけのためにオーバーロードをする必要はコレで無くなるわけだ。

それと、System.IO.File.ReadLines() というイテレーション関数も追加らしい。
StreamReader.ReadLine() じゃダメなの?と思うんだが…

他は興味がわかないので今回はパス。

ということで 3.5 と 4.0 の csc.exe で試しコードを書く。

default_param.cs

using System;

class Test
{
    public static int Func(int x=5, int y=7)
    {
        return x+y;
    }
}

class __main__
{
    [STAThread]
    public static void Main(string[] args)
    {
        int n = Test.Func(y:20);
        Console.WriteLine(n);
    }
}

readlines.cs

using System;
using System.IO;

class __main__
{
    [STAThread]
    public static void Main(string[] args)
    {
        int n = 0;
        //foreach (var line in File.ReadAllLines(args[0]))
        foreach (var line in File.ReadLines(args[0]))
        {
            n++;
            Console.WriteLine("{0}: {1}", n.ToString("000"), line);
        }
    }
}

ちなみに私がパスを通しているのは 3.5 のみなのでこうなる。
うん、やっぱりどちらも 4.0 でしかビルドできないや。

これだけではツマラナイので Ubuntu でもやってみる。

あれ?デフォルト引数のほうだけ問題なくビルドできちゃった。
どっちなんだよ Ubuntu に最初から入っている mono は。

Readlines は「そんなメソッドありません」ですね、そりゃそうだ。
ReadAlllines とコメントアウトを変更すれば普通にビルドできた。
StreamReader で while ループしたほうが圧倒的効率だけどテストです。

つまり何が言いたいかというと。
コンパイルするのがメンドイけど実用無視で遊ぶなら C# は最強。
Linux で Python は単なる実用ツールでしかないもの、私はだが。

Using wget

結局 Windows に戻ったのは正月だけだった、あぁ Linux は快適。

Linux で不便なのは Opera 11 の検索バーで日本語変換を行うと死ぬことだけだ。
フォントは pre と monospace を VL ゴシックに変更しただけで綺麗になった。

一昔前では考えられないほどマトモ、新参の WebKit 軍団にボロ負けだったしね。
しかしデフォルトショートカットキーをコロコロ変更しないでよ。

ネットをウロウロしていると自作漫画配布サイトに。
最近は Blog 機能を利用しているせいか連番で落とせないトコばかり。
だったけど連番で一枚一枚配布している所もまだ存在するんだね。

これは久々に新規スクリプトを書かないと。
何のために wget コマンドが存在するというのか。
wget だけでリンクをたどるのではなく連番ファイル以外はいらないし。

連番最初は 0 か 1 だし確実に 100 ファイル以下だと決め付けでいいだろう。
パラメータ 2 つ指定を強制するけど自分で使うんだから問題無い。
一応ゼロ詰めしているかどうかで振り分けしている。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

"""
    連番ファイルの一括ダウンロード
    
    コマンド
    $ download url num
    
    url 連番最初のファイルのフルパス
    num 最後のファイル番号の整数
"""

import sys
import os

if len(sys.argv) < 3:
    print "URL と 数を指定してください"
else:
    # ファイル名分離
    pathname, filename = os.path.split(sys.argv[1])
    try:
        n = filename.rindex(".")
    except ValueError:
        print "拡張子が見つかりません"
        sys.exit()
    # 連番最初の数値(0 or 1) と拡張子
    begin = int(filename[n-1])
    ext = filename[n:]
    # ゼロ詰めかどうかで振り分け
    if filename[n-2] == "0":
        name = "wget " + pathname + "/" + filename[:n-2] + "%02d" + ext
    else:
        name = "wget " + pathname + "/" + filename[:n-1] + "%d" + ext
    # 連番数のチェック
    try:
        end = int(sys.argv[2]) + 1
    except ValueError:
        print "二番目の引数は整数でお願いします"
        sys.exit()
    # 開始
    for i in range(begin, end):
        os.system(name % i)
        #print name % i

~/bin に download という名前で置いて chmod で +x して。
覚書ページに書いているけど ~/bin を作れば Ubuntu は勝手にパスが通る。

使ってみる、よしよし動く。
端末を普通に使うようになると「コレで十分」になって退化する私であった。
てゆーか、アッサリこんなのを作って使えるから Linux のほうが楽なんだよね。

実は Python での文字列のスライス方法を忘れていたので何か作ろうと…
こんなしょーもないスクリプトあたりをたまには作らないと忘れるねん。

関係無いけどこんなのを見つけた。

[ Dolphinで右クリックメニューを使う方法 Dolphin用Script] by ひねもすLinux

Dolphin でもスクリプト拡張ができるんだ、知らなかった。
しかし面倒くさいな、Nautilus がこうならないことを祈る。

Ramen Timer for Ubuntu sh

以前 bash を使ってラーメンタイマーを作った。

Ramen Timer for bash

しかしイマイチ気に入らない、Ubuntu の sh は dash へのリンクだ。
普通に #!/bin/sh で始めたり sh に渡すと逆順連番が展開されない。

Almquist Shell – Wikipedia

dash でヤルなら seq を使うしか無いかな、知識が足りないからだろうけど。
seq は逆順にできないので sort で反転させれば上手くいくと思う。

ところで printf なんてコマンドがある。

#!/bin/sh

read -p "何色? :" pantu
printf "%sのパンツ\n" $pantu

echo より遥に解りやすい、C 言語の使い方で括弧やカンマが無いだけだし。
\r や \n エスケープが必要なところが自然に思えて逆に嬉しい。
しかし for 文に使うと何故か %d でも %s でもエラーになって困っていた。
今頃知ったのだが for 文の場合は %g を指定すればイケた。

そんなこんなで dash 版ラーメンタイマーを作ってみる。

#!/bin/sh

for i in `seq 180 | sort -n -r`
do
    printf "残り %g 秒  \r" $i
    sleep 1
done
echo でっきあっがりぃー

ちょっぴり進化したけど何か無駄を感じる…

Ubuntu 10.10 for DotNet EXE

こんなタイトルだけどまず Python の話。
Python で文字列を得ようとしたけど None が戻る場合がある。
今まで if で確認していたけど or 演算子が使えるようだ。

>>> import os
>>> print os.environ.get("HOME") or "Hentai"
/home/sasakima-nao
>>> print os.environ.get("LOLI")
None
>>> print os.environ.get("LOLI") or "Hentai"
Hentai

便利だけど他の言語と互換性が無いよな…
最近使っていないけど超何でもあり言語な C# なら同じ事が可能かな?
と思い久々に Ubuntu 10.10 で C# コードを書いてみたけどダメだった。

しかし何だこれは!

実行パーミッションが付いていたら exe を起動できるようになっている。
「./」指定をすると Tab キーで exe 拡張子までを保管する親切さだよ。
いつからだろう?Ubuntu 10.04 までは mono に渡す必要があったと思うんだけど。
Nautilus から W クリックすると書庫マネージャが起動してしまうんだけどw

てゆーか…
そんなに .NET アプリを Linux で使いたいのだろうか…

標準以外のライブラリは使わない、P/Invoke も WPF も利用しない。
であるならソレでもいいのだが、逆に Windows で GtkSharp なんかもご勘弁。
ところで Ubuntu 10.10 デフォルトは WindowsForm さえ使えないみたいですけど。

GtkSharp も TomBoy が残っている間は有るわけだが、今後はどうだか。
趣味プログラミングならともかくアプリケーション作りはライブラリ次第だもの。
小物を作るにも Python のほうが便利だしライブラリは標準で豊富だし、なんだよね。