プログラマメモ2 - programmer no memo2

目次

僕の環境はLeiningenで作ってるのですが、どうもeclipseで指定しているgoogle app engineのSDKとクラスパスが前後するとこの問題が出る様 2015/11/07

Google App Engineです。
といっても開発環境周りの話です。
なんか色々バージョンアップデートしたら、赤バッテンが出る様になってしまって。。。




僕の環境はLeiningenで作ってるのですが、どうもeclipseで指定しているgoogle app engineのSDKとクラスパスが前後するとこの問題が出る様です。

参考
Importing Google App Engine App (Java) to Eclipse - Stack Overflow

どういうことかというとerrorが出る場合は以下の感じです。


これを入れ替えると赤バッテンが消えます。

これでぐっすり眠れますね。

dependencyなjarをかき集めたいなと思ったわけです。- Leiningen 2015/07/19

Leiningenです。
dependencyなjarをかき集めたいなと思ったわけです。

pluginでlibdirというのがあり、これはdependencyなjarをlibというディレクトリを作りそこにコピーしてくれます。

djpowell/lein-libdir · GitHub

なんとなく、pluginがあるのはわかったのですが、さてどう使うのだろうと悩んでいたのですが、

参考
untitled: Leiningen 2メモ

 project.cljに追加すればよかったです。

:plugins [[lein-libdir "0.1.1"]]
で、

$ lein libdir

eclipseのプロジェクトないにlibフォルダを作ってくれてコピーしてくれていました。


すぐに表示されない場合は,refresh。

jspのコンパイル アンサポート52.0 2015/07/18


google app engineです。


上記の記事とまったく同じで、はじめなぜJSPだけなのかでかなり悩みました。

現時点でのgoogle app engineでつかえるjavaのバージョンは1.7です。
やっかいなのは、jspのコンパイルはどうもeclipseを起動した際のjavaのバージョンによってしまうことのようです。
※指定できる方法があるのではと思ってるのですが....


参考

しかたがないので、eclipse起動で使用するjavaのバージョンをjdk1.7を指すように変更しました。
僕が使っているのは、eclipse Version: Mars Release (4.5.0)

インストールした1.7は、jdk1.7.0_80

ちなみにosx上でのjavaの場所は、
/Library/Java/JavaVirtualMachines

eclipse.iniを書き直すって面倒。

この問題はけっこう面倒ですね。

herokuでclojureのメモ1 2014/10/19

herokuでclojureのメモ
いいチュートリアルがあるので、あまり困らないなと。
 あと、eclipse + Counterclockwise の組み合わせで開発試してしているので、
cloneしてきたclojure-getting-startedをどう、
eclipseのプロジェクトに取り込むのだろうと思ったけど、とても簡単で、フォルダをドラッグアンドドロップするととりこめた。
 
 
 まあベースがあると実験しやすいなと
 
で、ローカルでサーバー起動させるやりかただけど、ベストな解はわかってないのだけど、
 
 
REPLを起動して、命令すると動きだした。
 
 
 

ビルド設定でsrcフォルダにあるファイルを全部includedしたい ALL - eclipse 2014/02/09

eclipseです。
はまったのでメモ。

昔から、ファイルの読み込みとかちょっとした実験するときに、src/doc-filesとか、doc-filesフォルダを使ってやってます。

eclipseでソースフォルダにフォルダを作成するとパッケージとして扱われますが、ハイフンが入っているとフォルダとして表示されます。

そこで、テキストファイルとかおいて、実験してたのですが、いろいろやっている間に、おいたファイルがbin(クラスフォルダ)にコピーされなくなってしまってました。

うーん、と悩んで悩んで。

ビルドの設定で含める(include)がjavaソースだけになっていたからでした。
下記のような設定




これが全て(ALL)でないと クラスフォルダに転送してくれなくなります。
※もしくはピンポイントでファイル指定。

設定したいのはこんな感じ


ALLを指定したい場合は、editでパターンを全部消すとALLになります。



 これで、まるっとコピーしてくれるので、doc-filesになんでもかんでも入れれます。

 一体、何年、eclipseを使ってこんなことにはまるんだろう.....

もんごdb 2013/11/01

開発環境を一カ所にあつめておきたいうわかってもらえない欲望があるわですが、周りの人に賛同してくれる人いません。。。

今回は、mongodbをためしに使ってみようと思いました。
環境はosxです。


 eclipse上でお試し用のプロジェクトを作成して、そこにダウンロードしたモジュールを展開して、起動用のスクリプトを配置して、お手軽に起動できるように。


起動用のスクリプトは、osxは拡張子commandで作成。

スクリプトの中身は以下

#/bin/sh
#echo $0
base=`dirname $0`
cd $base
./bin/mongod --config ./etc/mongod.conf -dbpath ./data/db/

停止はctrl + cで。

ぼくの場合、お試しでやる場合、この方法が好きなんだけどね。

ばいとまんをeclipseで - byteman 2012/12/01

Javaです。bytemanです。

世の中にはbytemanなるものがあるというの昨日知りました。
このプロジェクトの主目的は、ユニットテストとか、自動テストとか、テスト条件がシビアなテストを行えるためにするものなのかしら。

さて、僕の興味は、システムクラス?を触れるようなので、使ってみようというわけです。
禁断のjavaパッケージを触れるようなので、いろいろな調査に使えるかなというわけですね。

 eclipse上で使用するのが楽そうなのでメモ

まず、実行したいクラスの、byteman.jarは、普通に、buildpathに追加しておきます。RunConfigurations...のVM argumentsに -javaagent:の指定と実行したいスクリプトを指定します。僕は、フルパスで指定しましたが、環境変数みたいの使えるかな。




指定した内容は、こんな感じ
-javaagent:/Users/nakawakashigeto/export/eclipse/workspace/workspace3/javafx/lib/byteman-download-2.1.0/lib/byteman.jar=script:/Users/nakawakashigeto/export/eclipse/workspace/workspace3/javafx/src2/a/doc-files/a.btm,boot:/Users/nakawakashigeto/export/eclipse/workspace/workspace3/javafx/lib/byteman-download-2.1.0/lib/byteman.jar
javaagentとscriptとbootを指定します。bootの指定は、自作クラスの場合はbootの指定がなくてもよいようですが、javaパッケージとかさわる場合は、bootにbyteman.jarを指定しておかないといけないようですね。bootに指定しておかないと、下記のエラーが発生しました。

Caused by: java.lang.NoClassDefFoundError: org/jboss/byteman/rule/exception/EarlyReturnException


 まだ、動かせたという程度で全然活用していませんが、いろいろ試してみようと思うのでした。

EOFの入力 - eclipseのコンソールで 2011/09/22

Javaです。eclipseです。実は知らなかったEOFの入力のしかたです。
下記のようなコードを用意します。

import java.util.Scanner; public class TestEOF { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ } System.out.println("*** END"); } }
osxだと。 コンソールで^dを入力 windowsだと多分, contorl+zでとまります。
キーボードとのバインディングは、環境設定のgeneralのkeysをみるとあります。

eclipseのパッケージエクスプローラーからターミナルを起動 - osxです。 2010/05/26

mac osxです。
eclipseを使っていて、いま開いている位置でターミナルを開きたいなということ思うことがしばしばしばしあります。
で、そういうときどうするかなーと考えていて、以下の方法でやってみました。

terminal.commandをプロジェクト内に追加します。
実行するときはsystem editorにしておきます。これでダブルクリックで起動します。
あと、面倒ですが、別のターミナルを開いて

chmod 755 terminal.command


上記を実行します。これが面倒です。

terminal.commandの内容は下記です。

#/bin/sh
#echo $0
base=`dirname $0`
cd $base
bash


なんとなく,
いいような気がします。どうでしょうかね。
bashってシェルを実行しているだけなのでなんかひねりもないですね。
>_<!

elicpse内からxcodeprojを起動する(たいしたものではないです) 2010/05/24

Eclipse内にxcodeのプロジェクトを配置してみるとフォルダとして認識されてしまってダブルクリックで起動しなかった...
ので、xxx.commandを作成してそこから起動することにしてみました。

ちなみに、osxではxxx.commandというファイルを作成するとターミナルから実行できるようになります。

#/bin/sh
#echo $0
base=`dirname $0`
echo $base
open $base/xxxxx.xcodeproj
sleep 5

[アイデア]Eclipseで作成したプロジェクトの配下にXcodeのプロジェクトを配置する。 2010/05/24

ブラウザとメーラと同じぐらいずーと立ち上げぱっなしなのはeclipseです。
で、xcodeのプロジェクトをどうバージョン管理していこうかと悩んでいて、アイデアとして、どうせならeclipseで何でもかんでも管理しようという乱暴な結論にいたりました。
僕の場合、スクリプトを書くより先にeclipseでJavaをRunさせてしまうのと、osxのファインダーより、eclipseのパッケージエクスプローラーの振る舞いに慣れてること、subversionとかeclipseのプラグインにも慣れている。gitもプラグインとしてあるわけですし。

まあ、アイデアどまりかもしれませんが、ちょっといろいろ試してみよう。

[SWT windows]GetAsyncKeyStateでキーイベント処理 2008/09/25

Windowsです。SWTです。
GetAsyncKeyStateを使ってキーイベントを取得します。
下記のコードは、ALT + SHITFTキーの同時押しを念頭において作成しています。
ALTキーはVK_MENUなのかと勝手に類推して作成しています。

参考



import org.eclipse.swt.internal.win32.OS;

public class TestEvent {

public static void main(String[] args) {

key_alt_shift();
}

static void key_alt_shift() {

while (true) {

int s1 = OS.GetAsyncKeyState(OS.VK_MENU) & 0x8000;// alt key???
int s2 = OS.GetAsyncKeyState(OS.VK_SHIFT) & 0x8000;

System.out.println(s1 + " " + s2);

/*
* 同時押しかどうか....
*/
if (0 < s1 && 0 < s2) {
System.out.println("*** BINGO!!");
}

try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}
}

コードアシストしてくれるアプリケーションを作るための手習い その2- eclipse,JFace,swt 2008/09/06

前回に続いて実験。

(1)
eclipseでコード書いているとctrl + spaceでコードアシストしてくれるので、ためしみました。
キーストロークで"Ctrl+Space"するとよいようです。

(2)
入力された値によって提案するもんもんを変更したい場合。
org.eclipse.jface.fieldassist.IContentProposalProviderを工夫すればよい感じ。
もっといいコードの書き方があるかも。
これが実現できると、入力している語の続きの文字を提案できるから入力を軽減できますね。

実行はこんな感じです。



コードです。

import org.eclipse.jface.bindings.keys.KeyStroke;
import org.eclipse.jface.bindings.keys.ParseException;
import org.eclipse.jface.fieldassist.ContentProposalAdapter;
import org.eclipse.jface.fieldassist.IContentProposal;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
import org.eclipse.jface.fieldassist.IControlContentAdapter;
import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;

/**
* コードアシストの手習い
*
* @author nakawakashigeto
*
*/
public class Main extends ApplicationWindow {
public Main() {
super(null);
}

public static void main(String[] args) {

Main window = new Main();
window.setBlockOnOpen(true);
window.open();
Display.getCurrent().dispose();
}

protected Control createContents(Composite parent) {

Text text = new Text(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
IControlContentAdapter contentAdapter = new TextContentAdapter();

/*
* 提案する内容提供します。
*/
IContentProposalProvider provider = new IContentProposalProvider() {

public IContentProposal[] getProposals(String content, int pos) {

return createProposals(content, pos);
}

};

/*
* ctrl + spaceでコードアシストするようにしています。
*/
ContentProposalAdapter contentProposalAdapter = new ContentProposalAdapter(
text, contentAdapter, provider, keystroke("Ctrl+Space"), null);

return parent;
}

/**
* <p>
* 入力された文字列が「あなたは」で終わっている場合に提案します。
* </p>
*
* @param content
* @param pos
* @return
*/
static public IContentProposal[] createProposals(final String content,
final int pos) {

if (content.length() == 0 || !(0 < (pos - 3))
|| "あなたは".equals(content.substring(pos - 3, pos))) {
return new IContentProposal[] {};
}

String[] strings = { "愉快な人","ちょっとあぶない", "いい人", "いやな人", "楽しい人"};

IContentProposal[] proposals = new IContentProposal[strings.length];
for (int i = 0; i < proposals.length; i++) {
final String s = strings[i];
proposals[i] = new IContentProposal() {
public String getContent() {
return "、ずばり" + s;
}

public int getCursorPosition() {
return 0;
}

public String getDescription() {
return "あなたは" + s;
}

public String getLabel() {
return s;
}
};

}

return proposals;
}

static KeyStroke keystroke(String s) {
try {
return KeyStroke.getInstance(s);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}

}

コードアシストしてくれるアプリケーションを作るための手習い - eclipse,JFace,swt 2008/09/06
2008/09/06

Javaです。

身近にコードアシストを使ったアプリケーションを作っている方がいて、それを見ていいなxと思ったので練習です。
コードアシストって、いろいろ応用範囲がありそうですね。

話変わって、個人的には、あと、別に文字から文字へ変換させるのではなく、絵がでて絵から選択して文字列にするとかでもおもしろそうです。

参考



使用したeclipseのバージョン3.2.2
ライブラリは、


テキストフィールドで$と入力すると補完候補がでてきます。

以下コードです。
import org.eclipse.jface.fieldassist.ContentProposalAdapter;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
import org.eclipse.jface.fieldassist.IControlContentAdapter;
import org.eclipse.jface.fieldassist.SimpleContentProposalProvider;
import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;

public class Main extends ApplicationWindow {
public Main() {
super(null);
}

public static void main(String[] args) {

Main window = new Main();
window.setBlockOnOpen(true);
window.open();
Display.getCurrent().dispose();
}

protected Control createContents(Composite parent) {

Text text = new Text(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
IControlContentAdapter contentAdapter = new TextContentAdapter();
// IContentProposalProvider provider = new IContentProposalProvider() {
//
// public IContentProposal[] getProposals(String arg0, int arg1) {
// return null;
// }
//
// };

IContentProposalProvider provider = new SimpleContentProposalProvider(
new String[] { "1", "2", "o_o!" });

ContentProposalAdapter contentProposalAdapter = new ContentProposalAdapter(
text, contentAdapter, provider, null, new char[] { '$' });

// contentProposalAdapter
// .setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);

return parent;
}
}

現時点でのeclipseでのGui(swing)の開発について考えたこと 2008/07/23

VEが芳しくないのとNetBeansのUIツールがさくさく動くのを顧みての結論なのですが、メインの開発はeclipseでUIの部分だけはNetBeansでというのが僕の意見です。

で、NetBeansでソースパッケージフォルダを選択して右クリックで、プロジェクトプロパティで外部のソースフォルダを選択して追加することで、ソースフォルダだけ共有してマチスを使って、NetBeansでがりがり開発します。Eclipseにもどってパッケージエクスプローラーをリフレッシュするという具合。

で、Eclipseでプロジェクトに追加するライブラリは、swing-layout.jarぐらいですかね。
xxx.formファイルはどうもNetBeans上でのUIデザイン時に必要なようなので、実行時になくても大丈夫そうです。いったんこの開発の流れですすめるとNetBeansがないとUIの開発はできなくなりそうですが。

正規表現 日付さがし - YYYY-MM-DDをさがしてクォートしたい。 2008/01/26

MySQLのDATEはYYYY-MM-DDです。


それで、データベースにINSERTする際に、クォートせずに2008-01-26としていて、'2008-01-26'とクォートせずにインサートしていまいました。※設定でクォートせずに入れるための方法があるのでしょうか?

ものの見事に、すべてが0000-00-00となってしまいました。

仕方がないのでSQLを全部つくりなおそうとして、全ての日付をクォートしようとしたのですが、ここでふと悩みました。で、愛用しているCotEditorの置換で、正規表現でマッチしたもの参照して置き換えしたかったのですが、勝手がわからず、結局、eclipseを立ち上げたのでした。

emacs系とかのエディターに慣れていら悩まずにすんだのかもとおもいつつ...
YYYY-MM-DD日付にマッチさせるための正規表現は

(\d{2,4}-\d{1,2}-\d{1,2})


eclipseの画面のキャプチャー


で、すべての日付をクォートするためには、Replaceのニュ力フィールドに'$1'といれます。



replace allで全部クォートできます。

参考

Eclipseで開発途中でクラスパスからファイルの読み込みができなかった場合 2008/01/05

Eclipseで開発途中でクラスパスからファイルの読み込みができなくて、試行錯誤。
たした理由ではなく、自分が以前に行った設定変更が原因。

通常、srcで追加されたファイルはアウトプットフォルダに出力されます。
その際に、どのファイルを含めるのかどうかという設定ができます。

しばらく追跡してませんでしたが、veの非公式版が更新されていました。 2007/12/09

全然、しばらく追いかけていませんでしたが、www.ehecht.comのveが更新されていました。更新日付は11/17でした。

よくよくみてみるとeclipseの3.4でも動くよってこと?

ついついveが動く前のバージョンのeclipseばかりつかっているので、気がつかなかった...

newsgroup
Eclipse NewsPortal - eclipse.tools.ve

まったく関係ないですが、eclipse.orgってグーグルページランクが8なんだ!!
別におどろくことではないけど。

eclipse3.3 + veのためのメモ 2007/11/02

インストール手順をよく忘れるのでメモ
まとまりがないです....
mac osx上のeclipseで試しました。

必要なものをダウンロードします。






eclipseはclassicを使います。バージョンは現在,3.3.1.1です。
非公式なvisual editorはve_eclipse_33_v200709242300_lin_mac.zipを使用しました。



veはWTPが必要なのでまず最初に、インストールします。
WTPのインストールは、「Help - Software Updates - Find and Install」を利用します。

ve_eclipse_33_v200709242300_lin_macのインストールは、「Help - Software Updates - Manage Configuration」を利用します。

この場合、.eclipseextensionファイルを作成する必要があります。


ve_eclipse_33_v200709242300_lin_mac/eclipse/.eclipseextension


参考


スクリーンキャストしてみました。うーん、小さくてみづらいですね。

eclipse buildpathの設定 2007/11/01



この設定が必要かどうかは正直不明...

getResourceで画像ファイル読めない場合があったので設定しました。
binのファイルに多分、srcから画像ファイルがコピーされないからだと考えて、設定しました。一応うまくいきました。