×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
時間のかかる処理を実行しているときに応答なしになっちゃうのが嫌だったのでプログレスバーを表示しよう。
ってことでUrumaで進捗状況を表示するためのプログレスバーを早速トライ。
public class MainAction {
public ProgressBar progress;
@EventListener(id = "button")
public void clickButton() {
for( int i = 0; i < 100; i++ ){
//時間のかかる処理
this.progress.setSelection(i);
}
}
}
これでいけるだろうって思って実行したらボタンをクリックしたときの処理が短ければ(5秒~10秒?)問題なくできるんだけど、時間がかかると応答なしになってプログレスバーが動かなくなってしまいます。
そこでいろいろ調べた結果やっぱりスレッドを使わないといけないらしい。
スレッドなんてほとんどやってなかった(Javaを勉強し始めたころにちょこっとやっただけ)ので書き方がよくわからん^^;
ちょうどいいのないかなーって調べたらSWTで似たようなことやってるのを発見><b
で、真似てみた。
public class MainAction {
public ProgressBar progress;
public Shell shell;
@EventListener(id = "button")
public void clickButton() {
for( int i = 0; i < 100; i++ ){
//時間のかかる処理
this.progress.setSelection(i);
}
}
public void OriginalThread imprements Runtime{
private int index = 0;
public void run() {
for( index = 0; index < 100; index++ ) {
//時間のかかる処理
shell.getDisplay.asyncExec(new Runtime() {
public void run() {
progress.setSelection(index);
}
});
}
}
}
}
コレで実行したらちゃんと動いたw
まぁshell.getDisp・・・のrun()に最初時間のかかる処理書いて最初みたいに応答なしになったけどね^^;
shell.getDisplay.asyncExec(new Runtime() {
public void run() {
progress.setSelection(index);
}
});
のprogress.setSelection(index);には時間のかかる処理は書いてはいけません。(書いてもいいけど意味ないしね)
ってことでUrumaで進捗状況を表示するためのプログレスバーを早速トライ。
public class MainAction {
public ProgressBar progress;
@EventListener(id = "button")
public void clickButton() {
for( int i = 0; i < 100; i++ ){
//時間のかかる処理
this.progress.setSelection(i);
}
}
}
これでいけるだろうって思って実行したらボタンをクリックしたときの処理が短ければ(5秒~10秒?)問題なくできるんだけど、時間がかかると応答なしになってプログレスバーが動かなくなってしまいます。
そこでいろいろ調べた結果やっぱりスレッドを使わないといけないらしい。
スレッドなんてほとんどやってなかった(Javaを勉強し始めたころにちょこっとやっただけ)ので書き方がよくわからん^^;
ちょうどいいのないかなーって調べたらSWTで似たようなことやってるのを発見><b
で、真似てみた。
public class MainAction {
public ProgressBar progress;
public Shell shell;
@EventListener(id = "button")
public void clickButton() {
for( int i = 0; i < 100; i++ ){
//時間のかかる処理
this.progress.setSelection(i);
}
}
public void OriginalThread imprements Runtime{
private int index = 0;
public void run() {
for( index = 0; index < 100; index++ ) {
//時間のかかる処理
shell.getDisplay.asyncExec(new Runtime() {
public void run() {
progress.setSelection(index);
}
});
}
}
}
}
コレで実行したらちゃんと動いたw
まぁshell.getDisp・・・のrun()に最初時間のかかる処理書いて最初みたいに応答なしになったけどね^^;
shell.getDisplay.asyncExec(new Runtime() {
public void run() {
progress.setSelection(index);
}
});
のprogress.setSelection(index);には時間のかかる処理は書いてはいけません。(書いてもいいけど意味ないしね)
PR
Linux環境でPlone3をインストールして自作プロダクトをインストールしたらタイトルに日本語入力でエラーが発生。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 72: ordinal not in range(128)
Windows環境だとエラーで無いのにorz
結構いろいろ調べてみたらsitecustomize.pyを記述すればOKみたいなことが書いてあったので標準Ploneにも書いてある箇所(Ploneのバージョンが違うのでそれらしいところ)
Plone3がインストールしてあるディレクトリ/zinstance/lib/pythonにsitecustomize.pyを記述してみたけれどコンパイル(Pythonはインタプリタだからコンパイルっておかしいか;)すらされん(==)
仕方ないのでpythonディレクトリがあるところに書いてみて結果
Plone3がインストールしてあるディレクトリ/lib/pythonにsitecustomize.pyファイルを作成し、以下を記述
sitecustomize.py
import sys
sys.setdefaultencoding("utf-8")
でZopeを再起動してコンパイルされていることを確認して日本語入力したらうまくいった><
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 72: ordinal not in range(128)
Windows環境だとエラーで無いのにorz
結構いろいろ調べてみたらsitecustomize.pyを記述すればOKみたいなことが書いてあったので標準Ploneにも書いてある箇所(Ploneのバージョンが違うのでそれらしいところ)
Plone3がインストールしてあるディレクトリ/zinstance/lib/pythonにsitecustomize.pyを記述してみたけれどコンパイル(Pythonはインタプリタだからコンパイルっておかしいか;)すらされん(==)
仕方ないのでpythonディレクトリがあるところに書いてみて結果
Plone3がインストールしてあるディレクトリ/lib/pythonにsitecustomize.pyファイルを作成し、以下を記述
sitecustomize.py
import sys
sys.setdefaultencoding("utf-8")
でZopeを再起動してコンパイルされていることを確認して日本語入力したらうまくいった><
とりあえずPloneの画面を表示してみる。
デフォルトでPloneって名前のPlone Siteがあるので左かテーブルにあるPloneをクリック。
その後上にあるviewタブをクリックするとデフォルトのトップページが表示されます。
http://localhost:8080/Ploneでアクセスすると左部分がない(実際に表示される)状態で表示することができます。
新たにPlone Siteを作成してみる。
ルート(/)でもデフォルトのPloneサイト(/Plone)でもフォルダ内でもどこでもいいので右上のプルダウンからPlone Siteを指定します。
idとtitleなんかを指定してAdd Plone Siteボタンを押下すればid名 (title名)のPlone Siteができてるはずです。
そしたらhttp://localhost:8080/id名でアクセスすれば表示されます(=ω=)
ヘッダーの画像を変更
まずは/Plone/portal_skin/plone_imageにあるlogo.gifをクリックするとヘッダー画像が表示されるのでここでcostamazeボタンを押下。
すると上のパスが/Plone/portal_skin/costamazeになっていると思うので、画像を変更してボタンを押下。
またhttp://localhost:8080/Ploneにアクセスすると変更した画像にヘッダーが変わります。
デフォルトでPloneって名前のPlone Siteがあるので左かテーブルにあるPloneをクリック。
その後上にあるviewタブをクリックするとデフォルトのトップページが表示されます。
http://localhost:8080/Ploneでアクセスすると左部分がない(実際に表示される)状態で表示することができます。
新たにPlone Siteを作成してみる。
ルート(/)でもデフォルトのPloneサイト(/Plone)でもフォルダ内でもどこでもいいので右上のプルダウンからPlone Siteを指定します。
idとtitleなんかを指定してAdd Plone Siteボタンを押下すればid名 (title名)のPlone Siteができてるはずです。
そしたらhttp://localhost:8080/id名でアクセスすれば表示されます(=ω=)
ヘッダーの画像を変更
まずは/Plone/portal_skin/plone_imageにあるlogo.gifをクリックするとヘッダー画像が表示されるのでここでcostamazeボタンを押下。
すると上のパスが/Plone/portal_skin/costamazeになっていると思うので、画像を変更してボタンを押下。
またhttp://localhost:8080/Ploneにアクセスすると変更した画像にヘッダーが変わります。
Plone3を使っての仕事をするってことで・・・。
でも情報少なすぎ><
とりあえずインストール
Plone3からDLしてインストール。
Windowsはインストーラーでボタンをポチポチ押していけばOK。
Linuxはシェルを起動すればいいらしいです。
手軽なのでインストールはここまで。
Plone(Zope)の起動はPlone ControllerってのでStart Ploneを押下すれば起動します。
Apachなどが入ってるとポート番号が被ってしまう場合があるのでPlone ControllerのPortsまたはPloneをインストールしたフォルダ\Data\etcにあるplone.confってのでポートを変更してください。
これで起動できるはずなのでhttp://localhost:8080/manageにアクセスするとZopeの管理画面が表示されます。
Urumaのコミッタになりました。
宿題を得て早速悪戦苦闘。
宿題は実装できたけどもうちょっと書き方変えられるんじゃないってところで悩んでます。
Javaの使い方を知ってるかどうかで悩んでいるんだけどね;
自分で作ったものが使われるのっていいよねw
宿題を得て早速悪戦苦闘。
宿題は実装できたけどもうちょっと書き方変えられるんじゃないってところで悩んでます。
Javaの使い方を知ってるかどうかで悩んでいるんだけどね;
自分で作ったものが使われるのっていいよねw
次のページ
>>