いのエう’s blog

のんびりと更新していきます o(^-^)o

軽量Linuxの比較(?)

2012-10-30 12:03:57 | PC

最近のLinuxは古いPCでは重いので、VirtualBoxを使って試してみた。
で、せっかくいろんなOSインストしたので、起動時間、起動後のメモリ使用量、終了時間を測ってみた。

マシン:Compaq Evo Desktop D510 SF
 OS:Xubuntu 12.04
 CPU:Pentium4 2.4GHz(50%)
 メモリ:1GB(256MB)
 HDD:ATA WD5000AAKB 7200rpm(8GB固定)
 ※()内はVirtualBoxの設定

OS比較
OS起動時間メモリ使用量シャットダウン時間
Windows2000 SP4 4:07 73MB 0:20
Linux Mint 13 Mate 6:45 158MB 0:44
Xubuntu 12.04 4:05 151MB 0:37
Xubuntu 12.10 6:53 176MB 0:53
Lubuntu 12.04 3:50 92MB 0:30
linuxBean 12.04.1-121008 2:51 57MB 0:15

標準インストールのまま。起動時間は、負荷がかからなくなるまでの時間(自分の主観)。
WattOSも試してみたかったのだが、なぜかVirtualBoxにインストできなかった。
表を見るとWindows2000は速そうだけど、オフィスなどソフトをインストすると遅くなっていくので、あくまで参考程度に。

追記
linuxBeanのシャットダウンで自動で電源が落ちなかったので、Grub Customizerの設定でacpi=force、そしてacpidインストした。
(acpi=force だけではうまくいかなかった。)


UbuntuにMonoをインスト

2010-11-27 21:58:41 | PC
Ubuntu 10.10にしたので、使ったことがない開発環境「Mono」をインストしてみた。
ファーストインプレッションは、Visual Studioに近い感じ。
仕事でVisual Studioを使っていたので、ウィンドウへのオブジェクト(ウィジット)の配置がAnjutaより分かりやすい気がした。
と言っても、Windowsの開発に比べると、GTK特有(?)のコンテナ(ウィジットの配置場所な感じ)やウィジット(ボタンやラベルなどのオブジェクト)、シグナル(クリックなどのイベント)でつまづくかもしれないけど。(Anjutaをいぢっていたときちょこっと悩みました。)

話が変わるが、最近のお気に入りの壁紙はビッグウェーブ。たまに眺めて癒されてます。
ちなみにこの前の壁紙はMAJURIUMのビーチでした。

Ubuntu 10.10 入れました。

2010-11-25 22:18:43 | PC
最近、Ubuntu機のMBRが飛びました。
ライブCDで直そうとしたが、HDDの指定先を間違えてさらにおかしくなった。
面倒になったのでOS入れ直そうとデータだけをバックアップして、10.10をインストしました。10.10は入れる予定がなかったのだが、結局クリーンインストになってしまった。
そして、マイ環境を数時間で大部分復活完了。(Windowsと比べて復旧作業が簡単)
10.04と比べて細かいところでいろいろと変わっている。大体は良くなっている感じかな。

10.04のときはradikoでラジオを聞いていたのだが、NACK5がない。(普通のラジオでは自分の部屋だとノイズがひどい。埼玉に住んでいるのになぜ?)
ネットでNACK5が聞けないのかググってみたらKeyHoleTVというのがあるらしい。しかも、Windowsだけでなく、Mac、Linuxにも対応。
Ubuntu8.04-32bits版を落として、解凍。lkeyholetvを実行したらすぐに使えました。makeしないとダメかなと思ったのだが、そのまま使えた。(嬉)
KeyHoleTVってNACK5だけでなく各地のラジオ、TV(画質は悪いが)が視聴できるので、radikoより使えるかも。

Ubuntu 10.10

2010-10-15 20:42:40 | PC
Live CDで試してみました。
見た目、10.04からは大きな変化はなさそう。
9.10までは小さな不具合があって騙しながら使っていた感じだったのだが、今のところ10.04が非常に安定しているので、今回のアップデートは見送るかな。
いろいろカスタマイズするのも面倒なので。
11.04で対応すると思われるGNOME 3.0でUIが変わると思うので、その時にクリーンインストでもいいかも。

Grub Loading.

2010-03-27 22:46:33 | PC
最近、Ubuntuの起動が非常に不安定でした。
BIOS画面の後、「Grub Loading.」と出て、HDDをガリガリし始める。数秒ガリガリして起動する時もあれば、10分以上待っても立ち上がらない場合もある。
ネットで調べた結果、BIOSの設定の見直し、GRUBの再インストールといった情報があったので、試してみたが改善しない。
GRUBの設定を見直すついでに、GRUBメニューの古いlinuxカーネルもSynapticを使って削除することにしました。
・削除したカーネル:2.6.31-14~18
・残したカーネル  :2.6.31-19, 20
カーネル削除後、
sudo update-grub2
を実行。
そして再起動してみると、HDDがガリガリしなくなり正常に起動するようになりました。
原因は、古いカーネルだったのかな。

UbuntuでGeanyのタブ文字の表示方法変更と全角スペース可視化&制御文字の色変更

2010-03-10 20:10:11 | PC
前回のGeanyのタブ文字の表示変更の続き。
寝る時間を削って、やっと全角スペースの可視化に成功したので、ソース載っけてみました。
ついでにタブの表示もちょこっと変更。(最後のドットが表示されないみたいなので。)

geany-0.18.1/scintilla/Editor.cxx

1750行目あたりのDrawTabArrow関数

void DrawTabArrow(Surface *surface, PRectangle rcTab, int ymid) {
// ### Update Start タブの表示方法変更
// int ydiff = (rcTab.bottom - rcTab.top) / 2;
// int xhead = rcTab.right - 1 - ydiff;
// if (xhead <= rcTab.left) {
//  ydiff -= rcTab.left - xhead - 1;
//  xhead = rcTab.left - 1;
// }
// if ((rcTab.left + 2) < (rcTab.right - 1))
//  surface->MoveTo(rcTab.left + 2, ymid);
// else
//  surface->MoveTo(rcTab.right - 1, ymid);
// surface->LineTo(rcTab.right - 1, ymid);
// surface->LineTo(xhead, ymid - ydiff);
// surface->MoveTo(rcTab.right - 1, ymid);
// surface->LineTo(xhead, ymid + ydiff);
 surface->MoveTo(rcTab.left , ymid);
 surface->LineTo(rcTab.left + 2, ymid - 2);
 surface->LineTo(rcTab.left + 5, ymid + 1);
// ### Update End タブの表示方法変更
}


void Editor::DrawLine 関数の2600行目あたり
 // Foreground drawing loop
の下の方を追加。

   } else if (IsControlCharacter(ll->chars[i])) {
    // Control character display
    inIndentation = false;
    if (controlCharSymbol < 32) {
// ### Add Start 制御文字の色変更
     if (vsDraw.whitespaceForegroundSet)
      textFore = vsDraw.whitespaceForeground.allocated;
     surface->PenColour(textFore);
// ### Add End 制御文字の色変更
     // Draw the character
     const char *ctrlChar = ControlCharacterString(ll->chars[i]);
     DrawTextBlob(surface, vsDraw, rcSegment, ctrlChar, textBack, textFore, twoPhaseDraw);
    } else {
     char cc[2] = { static_cast<char>(controlCharSymbol), '\0' };
     surface->DrawTextNoClip(rcSegment, ctrlCharsFont,
      rcSegment.top + vsDraw.maxAscent,
      cc, 1, textBack, textFore);
    }
   } else if ((i == startseg) && (static_cast<unsigned char>(ll->chars[i]) >= 0x80) && IsUnicodeMode()) {
    char hexits[3];
    sprintf(hexits, "%2X", ll->chars[i] & 0xff);
    DrawTextBlob(surface, vsDraw, rcSegment, hexits, textBack, textFore, twoPhaseDraw);
   } else {
    // Normal text display
    if (vsDraw.styles[styleMain].visible) {
     if (twoPhaseDraw) {
      surface->DrawTextTransparent(rcSegment, textFont,
       rcSegment.top + vsDraw.maxAscent, ll->chars + startseg,
       i - startseg + 1, textFore);
     } else {
      surface->DrawTextNoClip(rcSegment, textFont,
       rcSegment.top + vsDraw.maxAscent, ll->chars + startseg,
       i - startseg + 1, textFore, textBack);
     }
    }
    if (vsDraw.viewWhitespace != wsInvisible ||
     (inIndentation && vsDraw.viewIndentationGuides != ivNone)) {
     for (int cpos = 0; cpos <= i - startseg; cpos++) {
      if (ll->chars[cpos + startseg] == ' ') {
       if (vsDraw.viewWhitespace != wsInvisible) {
        if (vsDraw.whitespaceForegroundSet)
         textFore = vsDraw.whitespaceForeground.allocated;
        if (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways) {
         int xmid = (ll->positions[cpos + startseg] + ll->positions[cpos + startseg + 1]) / 2;
         if (!twoPhaseDraw && drawWhitespaceBackground &&
          (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways)) {
          textBack = vsDraw.whitespaceBackground.allocated;
          PRectangle rcSpace(ll->positions[cpos + startseg] + xStart - subLineStart,
           rcSegment.top,
           ll->positions[cpos + startseg + 1] + xStart - subLineStart,
           rcSegment.bottom);
          surface->FillRectangle(rcSpace, textBack);
         }
         PRectangle rcDot(xmid + xStart - subLineStart, rcSegment.top + vsDraw.lineHeight / 2, 0, 0);
         rcDot.right = rcDot.left + 1;
         rcDot.bottom = rcDot.top + 1;
         surface->FillRectangle(rcDot, textFore);
        }
       }
       if (inIndentation && vsDraw.viewIndentationGuides == ivReal) {
        int startSpace = ll->positions[cpos + startseg];
        if (startSpace > 0 && (startSpace % indentWidth == 0)) {
         DrawIndentGuide(surface, lineVisible, vsDraw.lineHeight, startSpace + xStart, rcSegment,
          (ll->xHighlightGuide == ll->positions[cpos + startseg]));
        }
       }
      } else {
       inIndentation = false;
      }
// ### Add Start 全角スペース可視化
      int charpos = cpos + startseg;
      if (charpos > 1 &&
        (static_cast<unsigned char>(ll->chars[charpos - 2]) == 0xe3) &&
        (static_cast<unsigned char>(ll->chars[charpos - 1]) == 0x80) &&
        (static_cast<unsigned char>(ll->chars[charpos]) == 0x80) &&
         IsUnicodeMode()) {
       if (vsDraw.viewWhitespace != wsInvisible) {
        if (vsDraw.whitespaceForegroundSet)
         textFore = vsDraw.whitespaceForeground.allocated;
        surface->PenColour(textFore);
        PRectangle rcZenSpace(ll->positions[charpos - 2] + xStart - subLineStart,
         rcSegment.top,
         ll->positions[charpos + 1] + xStart - subLineStart,
         rcSegment.bottom);
        surface->MoveTo(rcZenSpace.left + 2, rcZenSpace.top + 3);
        surface->LineTo(rcZenSpace.right - 4, rcZenSpace.top + 3);
        surface->LineTo(rcZenSpace.right - 4, rcZenSpace.bottom - 5);
        surface->LineTo(rcZenSpace.left + 2, rcZenSpace.bottom - 5);
        surface->LineTo(rcZenSpace.left + 2, rcZenSpace.top + 3);
       }
      }
// ### Add End 全角スペース可視化
     }
    }
   }


これでLinuxで使えるGUIなエディタができたかな。
それにしてもブログにソースコード載っけるって大変。勝手に変換されるよー。

Ubuntuのエディタ

2010-03-03 01:52:58 | PC
最近、Geanyを使い始めました。
それに伴い、タブの矢印がちょっと見づらかったので、ソースを落としてきて表示を変更してみました。

geany-0.18.1/scintilla/Editor.cxx

void DrawTabArrow(Surface *surface, PRectangle rcTab, int ymid) {
// ### 2010.03.03 Update Start
//  int ydiff = (rcTab.bottom - rcTab.top) / 2;
//  int xhead = rcTab.right - 1 - ydiff;
//  if (xhead <= rcTab.left) {
//      ydiff -= rcTab.left - xhead - 1;
//      xhead = rcTab.left - 1;
//  }
//  if ((rcTab.left + 2) < (rcTab.right - 1))
//      surface->MoveTo(rcTab.left + 2, ymid);
//  else
//      surface->MoveTo(rcTab.right - 1, ymid);
//  surface->LineTo(rcTab.right - 1, ymid);
//  surface->LineTo(xhead, ymid - ydiff);
//  surface->MoveTo(rcTab.right - 1, ymid);
//  surface->LineTo(xhead, ymid + ydiff);
    surface->MoveTo(rcTab.left , ymid);
    surface->LineTo(rcTab.left + 2 , ymid - 2);
    surface->LineTo(rcTab.left + 4 , ymid);
// ### 2010.03.03 Update End
}

コンパイルは簡単で良かった。
ここの通りにやってみたら簡単にコンパイル、インストができた。

./configure
make
sudo make install


Ubuntu 9.10

2009-11-18 22:06:48 | PC
Ubuntu 9.10 日本語Remixをクリーンインストール。
人柱覚悟でext4フォーマット。
インスト後、まず初めにしたことは、512MB以上のファイルをコピー。(ubuntu-ja-9.10-desktop-i386.iso)
でも md5sumチェックしたが問題無し。残念(?)。
2週間近く使ってみて、致命的な問題は全くなし。もちろん、今でも512MB以上のファイルをガンガン使ってます。

Ubuntu 9.10にして良かったところ
・外部スピーカが鳴るようになった。
・動作が快適になった。(WindowsXPより機敏に動作する)起動改善PPAインストしたらさらに快適。
・起動が早い。(後述)

逆に×なところ
・日本語変換のiBusの操作性がちょっと劣る感じ。(入れ替えれば良い話だが面倒なのでしてない)
・キーボードのランプが点かない。(夜寝たまま起動状態の時は眩しくなくて良いが)
・Braseroの一貫性チェックでエラー(600MB以上の大きなファイルでエラーが発生する模様。きちんと焼けているようだが)

相変わらずなところ
・エディタはgeditとviで我慢。(sakuraエディタが欲しい)


◎起動時間
・Pentium4 2.4GHz + メモリ1GB マシン
Ubuntu 9.04 : 1分10秒
Ubuntu 9.10 : 58秒
Ubuntu 9.10 + PPA : 45秒

・Core2Duo E8400 3.0GHz + メモリ2GB マシン
WindowsXP SP3 : 53秒


マシンの稼働時間は、Windows機:Ubuntu機=2:8。
しばらくは、世間で騒がれている(?と思う)Windows7はお預けかな。ちなみに仕事の現場では、XPマシ~ンが現役です。今月初日にしたことは、2000からXPにアップグレード作業でした。Vista、Win7の単語は聞いたことがありません。どうなっているんだWindows。

ubuntuインストール設定後の覚え書

2009-02-22 18:20:59 | PC
去年から調子が悪かったPCがついにお釈迦になりました。メインPCだったので移行がちょっと大変だったのだがほぼ完了。おかげでサブPCもいろいろとハードから変更。

ubuntuは7.04のころから使いはじめているが、半年毎のバージョンアップで、かなりの勢いで使いやすくなっている。そろそろ常時使用も可能かも。
とりあえず、いろいろネットからあさった情報からクリーンインストール後の自分好みの覚え書を書いてみた。(ubuntu 8.10対応)

・デスクトップテーマ
GNOME-LOOK.ORG
GNOME Art

・壁紙
Googleのイメージ検索で「検索対象:」を「特大」にして、「wallpaper win 7」

・FirefoxにTab Mix Plusのアドオンを追加

・フォント
デスクトップを右クリック > 外観の設定のフォントタブより
固定幅:M+2VM+IPAG circle
M+ と IPAフォントの合成フォント」よりダウンロードし、解凍したファイルをホームフォルダの.fontsフォルダに入れる。(フォルダの新規作成)

描画の種類:サブピクセル」のスムージング(LCDs)

・geditのタブ文字「^」、全角スペース「□」の表示(sakuraエディタのように)
gedit-pluginsをインスト(システム > システム管理 > Synapticパッケージマネージャ)
/usr/lib/gedit-2/pluginsのdrawspaces.pyを編集
まず端末を開いて、
cd /usr/lib/gedit-2/plugins
sudo chmod 666 drawspaces.py
と一般ユーザーからでも変更できるようにしておく。
エディタで、drawspaces.pyの125行目あたりの部分を変更
--------------------------------------------------------------------------------
    def draw_tab_at_iter(self, cr, iter):
        if not self._plugin._draw_tabs:
            return

        rect = self._view.get_iter_location(iter)
        x, y = self._view.buffer_to_window_coords(gtk.TEXT_WINDOW_TEXT,
                                                  rect.x,
                                                  rect.y + rect.height * 2 / 3)

        cr.save()
#MOD start 125行目
#        cr.move_to(x + 4, y)
#        cr.rel_line_to(rect.width - 8, 0)
#        cr.rel_line_to(-3,-3)
#        cr.rel_move_to(+3,+3)
#        cr.rel_line_to(-3,+3)
        cr.move_to(x + 3, y - 5)
        cr.rel_line_to(+2, -2)
        cr.rel_line_to(+2, +2)
#MOD end
        cr.restore()

#ADD start
    def draw_nbsp_at_iter_zenkaku(self, cr, iter):
        if not self._plugin._draw_nbsp:
            return

        rect = self._view.get_iter_location(iter)
        x, y = self._view.buffer_to_window_coords(gtk.TEXT_WINDOW_TEXT,
                                                  rect.x,
                                                  rect.y + rect.height / 2)

        cr.save()
        cr.move_to(x + 3, y - 5)
        cr.rel_line_to(+8, 0)
        cr.rel_line_to(0, +8)
        cr.rel_line_to(-8, 0)
        cr.rel_line_to(0, -8)
        cr.restore()
#ADD end

    def draw_tabs_and_spaces(self, event, iter, end):
        cr = event.window.cairo_create()
        cr.set_source_color(self._plugin._color)
        cr.set_line_width(0.8)
        while iter.compare(end) <= 0:
c = iter.get_char() if c == '\t': self.draw_tab_at_iter(cr, iter) elif c == '\040': self.draw_space_at_iter(cr, iter) elif c == '\302\240': self.draw_nbsp_at_iter(cr, iter) #add start elif c == '\343\200\200': self.draw_nbsp_at_iter_zenkaku(cr, iter) #add end if not iter.forward_char(): break cr.stroke() class DrawSpacesWindowHelper(object): ・ ・ ・ --------------------------------------------------------------------------------