スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

統合環境私的備忘録



家でも職場でもeclipse様様な状態でAndroidプログラムしてます。こんにちは。

某BREWとかBREWとかBREWとかだとまあ大体エディター直打ちやってますが、
正直統合環境使えるなら使いたいところですね。
え、VC使えって?いや、もうBREWは見なかったことに…


そんなeclipse様に関する私的備忘録。

なんで書こうかと思ったかというと…
workspace切り替えたりなんかアップデートしたり家と会社の環境を
合わせたりする為の備忘録的な意味合いで…


え、設定ファイル持ち歩けってか…
うん、多分それが一番正しいと思います。






といってもそんなにeclipseを端から端までの知り尽くしているわけではないです。
あくまで私が便利だと思い込んでいるところとかだけ…。





フォーマッター設定

人のソースを受け継いだり、webからありがたーくサンプルを頂いたりすると…
他人と私ではソースの書き方が違ったり、webからコピーするとインデントされなかったり…

あれをイチイチ手直しなんかしてらんないですよね~

そんな時は「Ctrl + I」とか「Ctrl + Shift + F」とか押すと幸せになれますよね。
→編集のどっかの項目だったと思いますが、ショートカットしか覚えていない

eclipseに限らず、インデントの修正やフォーマットに沿っての修正をやってくれるというのは
統合環境の機能の中で最高に好きな機能の一つです。

例えばこうなる

class Test{
private int mTest = 0;

Test(int i){
	mTest = i;
}

public int getMTest(){
return mTest;
}
}

上のようなのをとりあえずコピーするとこんな感じ

20110612_1.png

Ctrl + Shift + F を押すと(私の環境は)こうなる

20110612_2.png


す、素晴らしい…

素晴らしいんだけど、これだって自分の普段のフォーマットとは違う可能性があるわけで…


ということで、このフォーマットを設定するのが
ウィンドウ→設定→Java→コード・スタイル→フォーマッター
です。

元々ある設定を自分好み改変して、設定ファイルをExportしておけば、
家でも会社でも素晴らしいフォーマッター生活がエンジョイできます。

ちなみに保管アクションで、終了時にフォーマット掛けてくれるような設定も可能。
私はなんとなくやってませんが。


てかさー、大体の統合環境ってこういう機能満載なんだから…
会社でちゃんとフォーマット決めて使おうぜ!!
と思っていますが、割とエディター大好きな方が多いので浸透しません…


まあちなみに万能ではないです。


// これが
if( bTest)
	bTest = false;


// こうはならない
if( bTest){
	bTest = false;
}



この辺はフォーマット後諦めてエディターで正規表現でgrep掛けて置き換えしてますが…
なんかいい方法無いでしょうか?

2011/07/05 追記
クリーンアップ側の設定で可能でした。




以下ほんとに備忘録

Q:パッケージエクスプローラ上でsvnとかのファイルがいて、どうでもいいパッケージが表示されるんだけど…

A:
・ウィンドウ→設定→Java→外観→パッケージ・エクスプローラおよびプロジェクト・エクスプローラの階層…を折り畳むにチェック入れる
・ウィンドウ→設定→Java→コンパイラー→ビルド→出力フォルダーのフィルターするリソースに「.svn/」とか書き足しておく


Q:Androidプロジェクトにてgen(出力先)フォルダ内のソースに警告でてうざいんだけど…

A:ウィンドウ→設定→Java→FindBugs→フィルター・ファイルでExclude filter fileにgenを省くように書いたxml読ませる

コメントでも書きましたが、自分自身できてませんでした。
むしろ誰か教えてください


Q:TODOとか以外にタスク・タグにコメントが乗るようにしたい

A:ウィンドウ→設定→Java→コンパイラー→タスク・タグを好きに弄る


この辺が環境切り替えたときにやる(やった)ことですかね。





他に
・お前この設定使ってないのかよ、情弱乙www
とかあったら教えてください。





スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : eclipse

ListViewのヘッダ幅を固定してみる(C++/CLI & win32)



なんかやっぱり流行りというかAndroid関連での検索が引っかかってくる今日この頃。
そんな中 windowsformアプリ関連(C++/CLI)のことをちょこっと。しかも今更な内容。
正直Windowsアプリはwin32APIでゴリゴリに書く人で、.Netってな~に?って状態ですので、間違ってても責任取りません。
ってかむしろこういう方法あるよ!、みたいな素敵な指摘が欲しいです。


内容としては ListView header幅固定 を C++/CLIにwin32APIを混ぜて実現したもの
ちなみにヘッダの境界線にマウスが来た際にマウスカーソルが変更されるのも阻止。
まとめると
・ListViewのヘッダ幅がマウスで弄れないこと
・ヘッダの境界線上でマウスカーソルが変わらないこと
なお、会社で確認した動作確認はXP SP3
開発はVS2008 standerd sp1
家での確認は 7 pro のVC++ 2008 Express Edition


スゲー簡単な方法


// stdafx.hに追加
	#include"windows.h"
	#include "commctrl.h"

// Form1.hの適当なところに追加
// 略
	EnableWindow( ListView_GetHeader( reinterpret_cast(this->listView1->Handle.ToInt32()) ), FALSE);
// 略

ぶっちゃけ、 Google先生に「ListView ヘッダ固定」で聞いてTOPに返ってくる内容ですが…。
上記内容をフォームのコンストラクタの中にでも突っ込んでおけばOK。
その辺から拾ってきたのを足しただけですので、ありなのかどうかすら分かりませんが、一応目的は果たせます。


上記の注意点


windows form アプリ的にはあまりwin32APIを使用されたくなさそうです。
環境にもよりますが、多分上記はまずリンカエラーとなるでしょう。
これもググれば答えが返ってきますが、一応方法を。

vs2008 standerd sp1 の場合は、うろ覚えですが、
・プロジェクト → プロパティ → C/C++ → 全般 → 追加のインクルードなんたら → 親からなんたら にチェック
で通るようになるかと。
何でも2005位からformアプリ作成時の初期設定では、win32用のライブラリが軒並み外されているとかで、自分で設定が必要らしいです。
もちろん個別に必要なライブラリをリンクしてもいいんですけど。

VC++ 2008 Express Edition
上記と同じ方法で行けると思いきや、駄目でした。
そこで取った方法は次の方法。
・Win32コンソールアプリを作成
・プロジェクト → プロパティ → リンカ → コマンドライン からlibファイル名をコピー
・Formアプリの同じ場所にコピーした内容を貼付け
超強引ですがこれで行けますwww

ちなみにコピーした内容はこれ
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
不要なものも居るけどその辺は無視。


ちょっと面倒な方法


お作法的にいいのかどうかは全く分かりませんが、上記にたどり着いて気がついたのは 「余裕でwin32APIガンガン使えるじゃん!」ってことです。
ウィンドウハンドル取得できれば結構やりたい放題ですよね。
さて、上記のようにHeaderを無効化することで目的を果たすと、楽は楽なのですがこんな要望が来たらアウト。
・ヘッダ部分のクリックはしたい!
更に、私が確認した環境では上記方法ではヘッダ部分をクリックすると、何故か一行目のアイテムがクリックされたと認識することも発覚。
というわけで、ListViewもヘッダ部分もサブクラス化してしまへ。


//****************
// Form1.hとか
//****************

	HWND hList = reinterpret_cast(this->listView1->Handle.ToInt32());
	HWND hHeader = ListView_GetHeader( hList);
	
	OrgList = (WNDPROC)GetWindowLongPtr( hList, GWLP_WNDPROC);
	SetWindowLongPtr( hList, GWLP_WNDPROC, (LONG_PTR)ListViewSubWindowProc);
	
	OrgListHeader = (WNDPROC)GetWindowLongPtr( hHeader, GWLP_WNDPROC);
	SetWindowLongPtr( hHeader, GWLP_WNDPROC, (LONG_PTR)ListViewHeaderSubWindowProc);


//****************
// hoge.cpp/h 色々略
//****************

WNDPROC OrgList, OrgListHeader;


LRESULT CALLBACK    ListViewHeaderSubWindowProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
	switch(msg){
	case WM_SETCURSOR:
		return TRUE;
	}
	return (CallWindowProc(OrgListHeader, hWnd, msg, wp, lp));
}

LRESULT CALLBACK    ListViewSubWindowProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
	NMHEADER* pnmhdr;
	switch(msg){
	case WM_NOTIFY:
		pnmhdr = (NMHEADER*)lp;
		
		switch(pnmhdr->hdr.code){
		case HDN_ENDTRACK:
		case HDN_BEGINTRACK:
		case HDN_TRACK:
		case HDN_DIVIDERDBLCLICKW:
			return TRUE;
		}
		break;
	}
	return (CallWindowProc(OrgList, hWnd, msg, wp, lp));
}

上記のソースもその辺探せば幾らでも出てきます。
・Header部分でカーソルを変更させない
・カラム幅をいじらせない
それぞれを自前で実装したというか、本来の実装へ渡さないだけですが。

ちなみにヘッダをクリックできるとか出来ないとかは、ListView::HeaderStyleで変更出来ますので、
まあ、わざわざwin32APIを使用するまででもないでしょう。

なお、恐らくこの段階ではまたもエラーになると思います。
コンパイル時に「 /clr:pure または /clr:safe と共にコンパイルされた関数に対する呼び出し規約 '__stdcall ' が無効です」というエラーがでると思います。
その指摘に従って
・プロジェクト → プロパティ → 共通言語ランタイム サポート
を /clr:pure から /clr へ変更することで、コンパイルが通るようになります。


また、Vistaから「HDS_NOSIZING」なるスタイルが追加されたようなのですが、 もしかするとこれらの実装(サブクラス化)をしなくても、このスタイル設定一発で終わる可能性も大ですね。
ま、めんどくて確認していませんし、そもそも私の場合XPで動作することが前提ですから。
誰か結果を教えてください。

ってか、こんな実装ありなんだろうか…
ぶっちゃけ何処がC++/CLIなんだか、普通にwin32じゃん…
C++/CLI 使いの方教えてください。
むしろ一番目に書くべきな気もしますが、貼り付けたコンソールのウィンドウハンドルって結構簡単に取れるよ!ってことが言いたいだけです。


テーマ : プログラミング
ジャンル : コンピュータ

tag : サンプルソース

気がついていなかった











GoogleIME の64bit版出てるし。

さっぱり気がついていなかったwww

Google.cn 撤退確定情報と同時に気がつきました。

テーマ : PC/パソコンセット
ジャンル : 携帯電話・PHS

DELL studio 1557 がおかしい件について2



先日Dellより返答がありました。
可能性として
・電池が古い
・BIOSのアップデートがうまくいっていない
・基盤が駄目


電池が古いってありえるのか?
11月末に購入したPCのボタン電池は、何年前に製造したもの使ってるんだよw


BIOSアップデートミス
もちろん書きミスとかあるだろうけど、せめてインストール時に判定してほしい


基盤がだめ
どうしろと


とりあえず、アップデートがうまくいっていないというパターンであることを祈ってBIOSを再アップデート。


今後どうなるか気になるところです。



ちなみにこの前ログイン画面で固まりました。
この妙にフリーズする現象も問題かも。


ちなみにSSDではないのでいわゆる「プチフリ」ではないです。

続きを読む

テーマ : PC/パソコンセット
ジャンル : 携帯電話・PHS

DELL studio 1557 がおかしい件について



現在 11月に購入したDell studio 1557 というノートPCを使用しています。
スペックは以下のとおり


OS:Windows 7 Pro 64bit
CPU:Core i7 Q720
メモリ:4GB


なんせそれまで使用していたPCが7年前の大学入学当初のPCだったため、もうPCの能力の差はいうまでもありません。
しかも12万を切る価格で買えるんだからすごい時代になったものです。
eclipse3.5動かしながらAndroidエミュレータとブラウザ立ち上げて、winampでネットラジオ。
しかも無線LAN有効で。


こんなこと、これまでのPCじゃ無理でした。
ってかeclipse起動ですら死にそうなくらい無理でした。
ハードの進歩ってすごいですね。


この状態でタスクマネージャ立ち上げてCPU使用率とか見ても、まだまだ余裕な状態。


って感じで基本的に快調なんですが、いまいち微妙な点が


・フリーズが頻発
・勝手にBIOSの設定が変わる


フリーズ頻発といっても、起きないときは全く起きません。
一週間くらい快適に使用していたら、ある日3連続くらい起きるとかそんなのです。
起きる要因はさっぱりですが。
なんせエクスプローラ開いただけで駄目とか、基本的に意味がわからん場合に発生します。
まあwindowsだからと言われてしまえばそれまでなので、諦めています。

なおドライバ等更新できるものはすべて最新のものが入っているので、どこかで報告されていた、何かが古いとアウト!ってのではないと思います。


問題は後半
BIOSの設定といっても、単にキーボードを使用する上で、ファンクションキー(Fキー)の優先度設定に関する部分なのですが。
ノートPCらしく、F1~F12キーに対して、音量の設定やら液晶の輝度設定やらWLANのOnOff機能やらが割り当てられています。
問題は、なぜかそれらのマルチメディア機能が優先的に働くようになっており、本来のFキーの機能はFnキー同時押しでないと働かないという素敵な設定になっております。


つまり、「Alt+F4」でアプリを終了させるにも、「Alt+Fn+F4」でないと実行できない、という素敵な状態です。
文字列変換なんて最低です。
半角英字に変換するのに「Fn+F10」ってあほかと。
画面更新に「F5」単体で無理とか信じられん。


そこで問題となるのがBIOSの設定。
こちらの設定でファンクションキーが優先となるか、マルチメディアが優先となるかが選択できるわけです。
もう購入後、即効でファンクションキー優先にしましたよ。


そんなこんなで快適なファンクションキー生活(?)を送っていたのですが・・・。


ある日突然マルチメディア優先に戻ってる。
意味わからん。


すでに購入1ヶ月の間で2回発生。


さすがに腹立たしいので、サポートセンターに問い合わせ。
「調査後連絡します」
と、片言の日本語で中国人が回答。


解決しなかったらどうしよう。
少なくとも次にDELLを買うことはなくなるのだろうが。


誰か問題の解決策を知っていたら教えてください。


テーマ : PC/パソコンセット
ジャンル : 携帯電話・PHS

プロフィール

駄猫

Author:駄猫

Twitter
その他
最新記事
カテゴリ
月別アーカイブ
検索フォーム
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。