2012年2月17日金曜日

テキストモード

[ctrl] + [alt] + [F1]  でtty1に切り替わる。
[alt] + [F7] で元に戻る。

2011年8月8日月曜日

水温計のない車

水温計のない車に乗っていますが、先日オーバーヒートしました。すぐに止まれない状況にあったのですごく焦りました。後のエンジンへのダメージ等を考えると、早めに察知してオーバーヒートになる前に対処したいので、次回、購入する際は、警告灯のみの車は避けようと思いました。

修理工場で診てもらったところ、ラジエターのファンが回っていないとのことでした。

2011年7月23日土曜日

meegoを外付けhddにインストール

公式サイトの説明に従って、usbフラッシュメモリにイメージを書きこんで、起動。ブートローダのメニューから"Installation only"を選択して、インストールガイドに従ってインストール。インストール後、外付けhddから起動すると、"kernel panic"うんぬんメッセージが表示されて起動失敗。ネットで調べ、カーネルの起動パラメータに"rootdelay=10"を追加したら無事起動した。(パラメーターの設定は"/boot/extlinux/extlinux.conf"で行う)

meegoを少し動かしてみた。常時使おうとは思わなかったが、選択肢が増えたことはいいと思う。ssd、ファンレス、軽量なnetbookにインストールされれば、面白いかなと思う。

2011年7月9日土曜日

iOSアプリ > iBook > 英和辞書の使用

http://d.hatena.ne.jp/softether/20100730

すごく快適になる。電子書籍リーダーの多くに大辞泉等との連携機能があるが、アプリへ組み込まれると、速度の面でこれにはかなわないなあと思った。(意味を表示する際に、改行を適当に入れて見やすいようにしてもらえるといいなぁ。iOSのAPIに辞書機能があれば、連携よりもサクサク動いて他のアプリのレベルが上がって良いと思うのだが。)

2011年6月13日月曜日

Eclipse > CDT > 実装にジャンプ

ソースファイルの純粋仮想関数上で"Ctr + t"を押下すると実装先の一覧が表示され、選択してそこにジャンプできる。

2011年6月11日土曜日

Eclipse > CDT > マクロの展開

ソースファイル上のマクロにマウスポインタをのせるとツールチップに展開された形が表示される。さらにF2キーを押すと、ポップアップで表示され、下部にあるボタンを押せば、マクロが展開されていく過程を知ることができる。

2011年6月8日水曜日

GTK HelloWorld

Eclipseを使ってGTKのHelloWorldをやってみた(WindowsXP、MinGW導入済み)。
  1. Eclipseをダウンロード(CDTが同梱されているタイプ)して、インストール(解凍)。
    http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliossr2
  2. GTKをダンロード(All-in-one(全部入り)タイプ)して、インストール(解凍)。
    http://www.gtk.org/download/win32.php
  3. GTKインストールディレクトリにある
    "gtk+-bundle_2.22.0-20101016_win32.README.txt" ファイルに記載されているように、パスを通して(後のために環境変数に登録)、手始めにコマンドを入力する。
    >pkg-config --cflags gtk+-2.0
    >gtk-demo
  4. デモが問題なく表示されたので、Eclipseを起動、適当にC,C++プロジェクトを作成。
  5. GTKサイトのサンプルソースを作成。
    http://developer.gnome.org/gtk-tutorial/stable/c39.html#SEC-HELLOWORLD
  6. プロジェクトのプロパティからインクルードパスを通す。
    C/C++ Build > Settings ---Tool Settingタブ > GCC C++ Compiler > Includes にてパスを通す。
    %GTK_HOME%\Include\gtk-2.0
    %GTK_HOME%\Include\glib-2.0
    %GTK_HOME%\lib\gtk-2.0\include

    すべて通すのは手間がかかるので、コード補完がある程度出来る程度にしておく。コンパイルに必要なパスは、Build Variablesにて設定する。
  7. コマンドプロンプトにて以下を実行
    >pkg-config --cflags gtk+-2.0 > a.txt
    >pkg-config --libs gtk+-2.0 > b.txt
  8. コマンドでリダイレクトしたテキストファイルの内容をBuild Variablesに追加
    (プロジェクトのプロパティ > C/C++ Build > Build Variables)。最初のコマンドの内容を
    gtk-inc,次のコマンドの内容をgtk-libとでもしておく。
  9. プロジェクトのプロパティ > C/C++ Build > Settings --- Tool Settingタブ
    GCC C++ Compiler > Commandline pattern と
    MinGW C++ Linker > Commandline pattern の末尾に ${gtk-inc}と${gtk-lib}を追加。
  10. プロジェクトのビルド、実行。
久しぶりにEclipseCDTを触ってみたが、以前と比べるとIndexerが固まることがなくなったような気がする。Ctr + o でアウトラインがポップアップで表示されると、やっぱEclipseっていいなぁって思う。

2011年6月7日火曜日

「LibreOffice 3.4.0」がリリース‎

http://ja.libreoffice.org/download/3-4-new-features-and-fixes/

エクスプローラーからカレントフォルダを選択してコマンドプロンプトを開く

ずっとこういう機能があればっと思っていたが、やっと見つけることができた。
http://www.atmarkit.co.jp/fwin2k/win2ktips/325openhere/openhere.html

ソースファイルをエディタで開くときにコンテキストメニューの"送る"を利用していたが、この記事を応用して、コマンドを追加し、ステップを減らすことができた。
環境変数PATHへの追加もやってみたがこれはできなかった(set path=%path%;%L)。

2011年6月5日日曜日

vim taglistのインストール

  1. taglistをダウンロードする
  2. $HOME\vimfilesに解凍しdocとpluginフォルダを生成
  3. ctags等にパスを通す
    環境変数PATHに定義するか、_vimrcにて変数Tlist_Ctags_Cmdで実行ファイルを指定
    ($HOME\vimfiles\plugin\taglist.vim の最初の方を読むとよくわかる)
  4. vimを起動
  5. コマンドを実行してヘルプタグを生成
    :helptags $HOME\vimfiles\doc
  6. 試してみる
    :e 何かのソースファイル
    :Tlist                     (Tは大文字で)
ウィンドウが分割されてメソッドやフィールドが表示されたときは感動した(*^^*)

2011年6月4日土曜日

OpenOffice > Python, C++ > 複雑なツールバーの作成

テキストボックスやコンボボックスを持つツールバーを作成するチュートリアルをやってみた。

DeveloperGuide
http://wiki.services.openoffice.org/wiki/Framework/Article/Generic_UNO_Interfaces_for_complex_toolbar_controls
SDKのexampleの中に対応するサンプルソースがある(example\cpp\complextoolbarcontrols)。C++で実装してある。

http://hermione.s41.xrea.com/pukiwiki/index.php?Extensions%2FComplexToolbar
Pythonで実装してある。

C++, Pythonともによく知らないので、サンプルコードを流用してイベントを拾ったら、OpenOffice BasicのマクロにDispatchしてしまえば、簡単に面白いツールが作れると思う(DeveloperGuideのサンプルならBaseDispatch#dispatch内で)。

2011年6月3日金曜日

OpenOffice > Basic > 選択された文字列を取得

'文字列を取得する
'Calcの場合は選択されているセルの文字列
'Writerの場合は選択されている文字列
'Calcのセル内で選択されている文字のみを抽出する機能はない
Function GetSelectedText

controller = ThisComponent.CurrentController
selection = controller.getSelection()
iName = selection.ImplementationName
If iName="SwXTextRanges" Then
GetSelectedText = selection.getbyindex(0).String
ElseIf iName="ScCellObj" Then
GetSelectedText = selection.String
Else
GetSelectedText = ""
End If

End Function

vim ctags

  • タグファイルの設定
    :set tags=tagfile1,tagfile2...
  • タグジャンプする
    Ctr + ]
  • 元の位置に戻る
    Ctr + t
  • タグファイルの作成(vimのコマンドではない)
    ctags -R -f outputfile_name search_directory_path
    例 ctags -R -f c:\tags c:\project1\src
    -R 再帰

vim ヘルプ

  • helpの表示
    :help
  • コマンドを調べる
    :help command_name
  • コマンドの一覧を見る
    :help part_of_command_name<C-d>

OracleがOpenOfficeのコードをApach財団に寄贈

http://itpro.nikkeibp.co.jp/article/NEWS/20110602/360967/

2011年6月2日木曜日

OpenOffice > Python > Eclipseでデバッグ

OpenOfficeのPythonマクロをEclipseでデバッグする方法

EclipseにPydevプラグインをインストールし、Pydevプラグインの機能であるデバッグサーバーを使用することでリモートデバッグできる。あくまでもサーバーであるため、シグナルを送るのはクライアントであるPythonマクロということになる。つまりPythonマクロにサーバーにリクエストを送るためのコードを埋めこまなくてはならない。(Eclipse上でブレイクポイントも貼っても意味が無い。)

参考
http://pydev.org/manual_adv_remote_debugger.html

vim 基本

  • ディレクトリの移動
    :cd directory
  • ファイルを開く
    :e filename

  • バッファを切り替える
    :b filename
  • 次のバッファ
    :bn
  • 前のバッファ
    :bp

  • ファイルの先頭に移動
    gg
  • ファイルの末尾に移動
    G

  • 直前の操作を取り消す(アンドゥ)
    u
  • リドゥ
    Ctr + r

  • 上書きモードに移行する
    R

  • 行をコピー(ヤンク)
    yy
  • 貼りつけ(ヤンクしたものを)
    p
  • 選択範囲をクリップボードにコピー
    Ctr + Insert
  • クリップボードから貼りつけ
    Shift + Insert

2011年5月31日火曜日

makeファイルの内部マクロ

$@ - ターゲット名
$(@F) - ターゲット名(パスを除く)
$% - ターゲットメンバ名
$(@:"変更したい文字列"="変更後の文字列") - 文字列の変換
$(subst "変更したい文字列","変更後の文字列","全体の文字列") - 文字列の変換

参考
http://www.c.csce.kyushu-u.ac.jp/~seiichirou/wiki/index.php?Makefile%A4%CE%BD%F1%A4%AD%CA%FD#content_1_10

-- 使用例 --
1.ファイルの拡張子を変更(%はワイルドカードとして機能)
$(@:%.text=%.txt)

2.ファイルの拡張子を変更して、パスの"/"を"\"に変更
$(subst /,\,$(@:%.text=%.txt))
1を入れ子にする方法ではできなかった(正しい記述が出来ていなかったのかもしれない)。substで入れ子にする方法はまだ試していない。

2011年5月30日月曜日

OpenOffice > Java > Googleの翻訳サービスを利用してピンインを取得

マクロの配置方法は以前の記事を参照して下さい。

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.zip.GZIPInputStream;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import com.sun.star.lang.IndexOutOfBoundsException;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.script.provider.XScriptContext;

public class B {

private static final String URL = "http://translate.google.co.jp/translate_a/t?client=t&hl=ja&sl=zh-CN&tl=ja&multires=1&otf=1&pc=1&srcrom=1&ssel=0&tsel=0&sc=1&text=";

public static void a(XScriptContext sc) throws IndexOutOfBoundsException,
WrappedTargetException, IOException, ScriptException {

String word = Util.getSelectedCellValue(sc);

if ("".equals(word)) {
return;
}
getPinyin(word);
}

private static void getPinyin(String word) throws IOException, ScriptException {

String response = getHttpResponse(word);
if (response == null || "".equals(response)) {
return;
}
String pinyin = extractPinYin(response);
setStringToClipBoard(pinyin);
}

private static void setStringToClipBoard(String s) {
Toolkit kit = Toolkit.getDefaultToolkit();
Clipboard clip = kit.getSystemClipboard();
StringSelection ss = new StringSelection(s);
clip.setContents(ss, null);
}

private static String extractPinYin(String response) throws ScriptException {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
String s = "";
engine.put("s", s);
engine.eval("var a = " + response);
engine.eval("s = a[0][0][3]");
return (String) engine.get("s");
}

private static String getHttpResponse(String word) throws IOException {

String response = "";
BufferedReader br = null;
try {
URL url = new URL(URL + URLEncoder.encode(word, "UTF-8"));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
conn.setRequestProperty(
"User-Agent",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
conn.connect();

int rc = conn.getResponseCode();
// String rs = conn.getResponseMessage();
// System.out.printf("%d %s\n", rc, rs);

if (rc == HttpURLConnection.HTTP_OK) {
br = new BufferedReader(new InputStreamReader(
new GZIPInputStream(conn.getInputStream()), "UTF-8"));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
response = sb.toString();
}
return response;
} catch (IOException e) {
throw e;
} finally {
if (br != null) {
br.close();
}
}
}
}

2011年5月29日日曜日

vbsでショートカットの作成

インストーラを使用しない配置するだけのプログラムがたまってきたので、それらへのショートカットをつくるスクリプトを作成した。vbsは初めてだが、便利な機能があっていいなと思った。これからも活用していきたい。

** 参考にしたサイト **
フォルダの再帰
http://www1.u-netsurf.ne.jp/~tomo_c/tips/R23Lev15.html
拡張子の取得
http://www1.u-netsurf.ne.jp/~tomo_c/tips/WSH003.html
ショートカットの作成
http://www.atmarkit.co.jp/fwin2k/operation/wsh06/wsh06_03.html
DimとSetの違い
http://www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbs598.htm


Sub CreateShortCusts(sFolder)

Set folder = fso.GetFolder(sFolder)

For Each f In folder.Files
If fso.GetExtensionName(f.Path)="exe" Then
Set objShortCut = objShell.CreateShortcut(f.Name + ".lnk")
objShortCut.TargetPath = f.Path
objShortCut.Save
End If
Next

For Each f In folder.Subfolders
CreateShortCusts(f.Path)
Next

End Sub

Set objShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Dim sFolder
sFolder = "D:\Applications"
CreateShortCusts(sFolder)