いのエう’s blog

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

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がガリガリしなくなり正常に起動するようになりました。
原因は、古いカーネルだったのかな。

越谷~玉葉橋ルート

2010-03-26 06:18:53 | インラインスケート
先日の越谷~野田橋ルートも含めて3~4ヶ月調査しました。血(靴擦れ)と汗(冷や汗)と涙(花粉?)の結晶です。
なお、こっちの越谷~玉葉橋ルートが本命かも。
初めて探索した時は、悪路だらけだし、放し飼いの犬には追いかけられるしで使えないと思った。
でも、あちこち探索した結果、悪路、通行量が少なく野田橋ルートより良かった。
このルートを見つけた時は、ちょっぴり感動でした。
越谷からの2つのルートのおかげで三郷から電車で帰るより、電車代&時間の節約♪(嬉)
でも初心者危険&車と通行者には注意。

新大利根橋~取手ルート

2010-03-25 20:52:26 | インラインスケート
利根川のサイクリングロードを下っていくと新大利根橋から舗装された道がなくなってしまう。
そこで偉大なる先人達(チームこそ練)が開拓したルートをご紹介したい。
数年ぶりにこの付近を滑ったのだが、ほとんど覚えていなくてあちこち探索してしまった。(^^;)
でもそのおかげでしっかり地図が頭に入りました。
なお地図上のルートをよく見ると布施あたりで点線となっている箇所が2つあることに気づいた方はとても鋭い!
ここは道がないので滑れません。20~30m歩きます(スケート履いたままでOK)。ホントにこのルートを開拓した先人達には驚かされます。

なお、利根川のサイクリングロードはまだ続いています。
このルート通りに取手ゴールするも良し。
利根川を渡らないで、さらに下って印旛沼ランに合流するも良し。
それでも物足りない御仁は銚子まで滑るも良し。
私は止めません。(笑)

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