勉強 Archive
Wineで動くテキストエディタ「notepad++」に新しい拡張子定義を追加しようとした
最近Ubuntuを使ってる中で不満なのがテキストエディタ。デフォルトのgeditはサクラエディタに比べるとどーもしょぼくて慣れません。ということで、WindowsのプログラムをLinuxで動かせるWineを使って、WindowsのエディタをLinuxで使ってみる事にしました。
■Wineで動作するWindowsエディタ
Electronic Genome – Linuxのwineで動作するWindows用テキストエディタ動作比較
このページの表の通り、notepad++が一番動作良好のようです。手元で確認したところ、サクラエディタはカーソルの移動ができず全然ダメ、Terapadは置換が動作せずいまいち。てことで、人生で初めてnotepad++を使ってみました。
海外では定評のあるエディタって通り、設定項目豊富でプログラミング向きのエディタ。対応言語も多く入力補完が出来るところなどはサクラエディタよりも上といえます。けど普通のテキストファイルに弱い。.txtファイルはNormal textとして扱われ、.txtに対して独自の色分け設定をすることはできません。
これをなんとかしようとnotepad++のインストールディレクトリを探したところ、stylers.xmlとlangs.xmlというそれっぽいファイルが!うん、これをいじってtxtという拡張子定義を追加すればいいよね!…動かない><設定項目には表示されるようになったのに…。しかも特定KEYWORDをハイライトする設定を追加すると「NppParameters::getLangIDFromstr」みたいなエラーが出る…。
このエラーワードでググッたところ、以下のようなページにぶち当たりました。
SourceForge.net Repository – [notepad-plus] View of /PowerEditor/src/Parameters.cpp
1391 LangType NppParameters::getLangIDFromStr(const char *langName)
1392 {
1393 if (!strcmp("c", langName)) return L_C;
1394 if (!strcmp("cpp", langName)) return L_CPP;
1395 if (!strcmp("java", langName)) return L_JAVA;
1396 if (!strcmp("cs", langName)) return L_CS;
1397 if (!strcmp("objc", langName)) return L_OBJC;
1398 if (!strcmp("rc", langName)) return L_RC;
1399 if (!strcmp("html", langName)) return L_HTML;
~中略~
1439 if (!strcmp("inno", langName)) return L_INNO;
1440 if (!strcmp("searchResult", langName)) return L_SEARCHRESULT;
1441 if (!strcmp("cmake", langName)) return L_CMAKE;
1442 return L_TXT;
1443 }
どうやら対応拡張子をソースコード中でハードコーディングしてるみたいです。つまり.txtを認識させるにはどうやっても無理。
■やっぱりサクラエディタは使いやすいよなぁ…ということを再確認。
サクラエディタなら任意の拡張子を定義して色分け設定できる。色分け定義に正規表現も使える。サクラエディタの「整形」コマンドを使えば並び替えや重複行のマージもできるし、「高度の操作」を使えば行単位、単語単位での切り取り・削除とvimライクな操作も出来る。
ということで、サクラエディタ最高!というお話でした。
■これからどうしよう?
- 我慢してnotepad++を使う
- 我慢してgeditを使う
- 郷に入れば郷に従え、でgvimなどを使う。
gedit極めても仕方ないのでnotepad++がgvimかなぁ。移動モードで必ず半角英数にしなければいけないgvimは日本語テキストを編集するのに不向きだと思ってるのですが使ってる人いますか?「ソースのコメントが日本語」くらいならいいですが、このブログの文章をgvimで書くとか苦行かな?まぁnotepad++はいつでも使えるので、しばらくはgvimでかんばろうと思います。
サクラエディタ
窓の杜 – 【REVIEW】プログラミングに適したテキストエディター「NotePad++ EUC-JP 対応版」
Web拍手&はてブ
下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。はてブはこちら。
- Comments: 2
- Trackbacks: 0
ちまたで人気のUbuntuについて
最近Linuxの勉強ばっかり。機械とばっかり向き合ってると人間向けにブログ書く気がなくなりますw まぁそのおかげで大分Linuxというものを把握できてきた…と思います。
■そこでUbuntu。
僕の当初の計画は、「普段使いのOSをUbuntuに変更し、四苦八苦しながらLinuxの仕組みを覚えていこう」というものでした。しかしテスト機にUbuntuをインストールして、すぐにこの計画が失敗する事に気付きました。だってGUIだけで普通に使えちゃうんだもん。
ブラウザやメモ帳などアプリは普通に使えるし、操作が分からなかったら「とりあえず右クリック→メニューからそれっぽいのを選択」で全部解決する。D&Dもできるからデスクトップ上のタスクバーにショートカットを追加、みたいなのも簡単。WindowsUpdate的なアップデートマネージャーが付いてるから、パッケージを最新のものに保つことも簡単。
■Ubuntuの一番褒めたい点
UI。洗練されすぎ。初期メニューバーには
- アプリケーション
- 場所
- システム
の3つのみ。メモ帳起動するのは「アプリケーション」、フォルダ開くのは「場所」、なんか設定変更するのはシステムって簡単に分かる。Windowsの場合、スタート→すべてのプログラム→アクセサリ→メモ帳だもんなぁ…。
あと言葉が具体的で人間に近いから迷わない。例えば「場所」をクリックした後に出てくる「デスクトップ」や「CD/DVDの作成」や「サーバに接続」。Windowsではよく使うのにデフォルトでは専用のメニューが用意されていない項目です。
確かにブラウザやエディタは同種の後発ソフトの方が機能的に洗練されているものですが…。まさかOSにまでそれが適用されるとはって感じです。
■一応言っておくと
僕がUbuntuを自然に使えるのはいろんなOSを使った経験のあるエンジニアだからで、IEしか使ったことがなく「いつものWindowsの画面」以外は応用の利かない一般人が問題なく使えるとは言えない。まぁそれを言うなら「UbuntuにIEが搭載されない限り一般人には使えない」ということになるので、応用の利かない人はほっといてUbuntuはUbuntuなりの進化をしてほしいと思う。
Web拍手&はてブ
下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。はてブはこちら。
- Comments: 0
- Trackbacks: 0
Linux勉強の途中経過とか
最近ブログも書かずに何をやってるのかというと、Linux(や投資)の勉強である。「じゃあその内容を書けよ」となるのだが、人に分かりやすく説明できるレベルじゃないので別ブログに書いてます。
■Linuxの勉強をしてみた感想
- Windowsのバックグラウンドに助けられるなぁ。
- Windowsと比べると(不慣れな分)使いづらいなぁ。
まずですね。Windowsでコマンドプロンプトやバッチをいじっていたこともあって、スムーズに勉強が進んでます。OS違えどやりたいことは同じなので、IT製品の基本思考に沿えば引っかかりは少ないです。僕の場合、「WindowsのGUI→WindowsのCUI→LinuxのCUI」って感じで知識を付けていったのでそれぞれのハードルが低かった。多分何も知らない新人に「これからはLinuxだー!」ていってLinuxコマンド研修させたら死ねると思います。
反面、Windowsを使いこなしすぎててLinuxが不便という欠点があり。というのも、俺のWindows操作はマジちょっぱやでショートカットキー使いまくりなので、Linuxのショートカットキーを知らない&知ってても使い慣れない現在、大変もどかしい感じで操作をしてます。
■Linuxコマンドについて
オプション多すぎ。一部のオプションしか使わないとはいえ、コマンドのマニュアルが5,6ページあると引く。あとオプションの使い方がアルファベット順に書いてあるから、使用頻度が高いオプションがどれか分からないのも痛い。ので、これは使って慣れるしかないなぁと考えてます。
Web拍手&はてブ
下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。はてブはこちら。
- Comments: 0
- Trackbacks: 0
今日の不思議。スタートアップスクリプトについて。
Windowsでスタートアップスクリプトといえば
gpedit.msc→Windowsの設定→スタートアップスクリプト
で設定するのが一般的と思うが、タスクスケジューラーでスケジュール設定を"システム起動時"に設定しても同じようにサーバが起動したタイミングでスクリプトをキックできる。
「そんな面倒な事しなくてもいいじゃん」という話だが、前者はスクリプト実行ユーザーがSYSTEMアカウント固定なのに対して、後者は好きなアカウントで実行できる。SYSTEMは管理者と同等レベルの権限を持つので普通は困らないが、リモートサーバに対してスクリプトを実行するような場合はタスクスケジューラーでDomainAdminなどを指定しないといけない。
以下はリモートサーバのレジストリを操作した後、リモートスクリプトを実行するようなスクリプト。これはDomainAdmin権限でないと動かない。
Set objCont = WScript.CreateObject("WshController")
Set objRegProv = GetObject("winmgmts:{impersonationLevel=Impersonate}" & "!\" & SRVNAME & "\root\default:StdRegProv")
objRegProv.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,"1"
Set objRemote = objCont.CreateScript(TMPSCRNAME,SRVNAME)
objRemote.Execute
前者は前者でドメインセキュリティ設定でドメイン内の全てのコンピューターに対して一気に設定できるという利点があるが、実はschtasksでスクリプトを組めば同じことができたりする。ただし、schtasksの場合適用先のPCが起動していることが条件なのでクライアントPCに適用するのは向かない。まぁ、通常はサーバ機で複雑なスクリプトを実行する場合のみタスクスケジューラーを使えばいいだろう。
※さらっと書いてるが、これで1週間はまった。
Web拍手&はてブ
下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。はてブはこちら。
- Comments: 0
- Trackbacks: 0
非Exchangeサーバでオフラインデフラグ
障害対応の関係でExchangeの本番データをデフラグしました。方式はオフラインデフラグ。普通のオンラインデフラグと違って実際に見かけのデータベースサイズを小さくできます。ただしその間サービスは停止しますが。
■手順
- メールボックスサーバからバックアップサーバにデータをコピー(サーバ負荷を考慮して)
- バックアップサーバにeseutil.exeをコピー
- オフラインデフラグ実行
■注意点とか
- eseutilと一緒に必要なdllもコピーしましょう。dllが足りなかった場合、処理途中で停止してやりなおしとなります。参照:How to run Eseutil on a computer without Exchange Server
- ディスクの十分な空き領域がある事を確認します。必要領域は元のDBサイズ+処理後のDBサイズ×1.05です。足りない場合は、eseutilのスイッチでワーク領域(処理中、処理後のDBが保存される場所)を別ディスクに指定しましょう。
- メモリ使用率が100%近くになるので注意しましょう。
■パフォーマンス
- OS:Win2003Server noSP
- CPU:Xeon 3GHz × 2
- メモリ:2GB
- 処理前のDBサイズ:約25GB
- 所要時間:約50分
2GB/分。思ったよりも処理が早くて驚きました。オンラインデフラグ実行直後のDBを使用したからかもしれませんが…。同スペック、同容量でもDBの状態によって処理時間が変わる可能性があります。
■オフラインデフラグ実行時のイベント"MSExchangeIS Mailbox Store 1221I"について
オンラインデフラグ終了時に以下のようなイベントが出力されます。
種類 : 情報ソース : MSExchangeIS Mailbox Store 分類 : General イベント ID : 1221 説明 : オンラインでのディスクの最適化が終了した後、データベース Storage Group Name \Mailbox Store には 565 MB の空き容量があります。
ここで表示される空き容量は"edbとstmを合わせたもの"というのがMS担当者の説明でしたが、今回オフラインデフラグ前に表示された"空き容量"は2.3GB。そしてオフラインデフラグで削減できたのは2.8GB(edb),7.23GB(stm)。状況から考えると、"edbのみの空き容量"が正しいような気がします。(そうなると、オンラインデフラグでstmを処理しているのか…という問題も出てきますが)
■残る問題
実はこのストアに保存されているユーザデータの合計は約9GBです。それに対してオフラインデフラグ後のDBサイズは16GB。DB管理領域を考慮しても計算が合いません…。その使ってない7GBはなんなんだ?MS社の説明では、というより理論的にはオフラインデフラグを行うと不要領域は一層されるはずなのですが…。もしかしてExchangeのデータベース効率ってもの凄く悪いとかそういうオチ?雲行きが怪しくなってきました…。
Web拍手&はてブ
下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。はてブはこちら。
- Comments: 0
- Trackbacks: 0



