百聞は一見に如かず。ということで、以下サイトのデモサイトをご覧ください。
http://touchpunch.furf.com/
タブレット (xperia tablet z)でも、問題なく操作できました。
jqueryuiでは、タブレット対応していないので(2014年10月現在)、
タブレットでドラッグアンドドロップを対応するための選択肢の一つかと思います。
タブレット、スマートフォン対応のライブラリ系は他にもあるとは思いますので
随時更新していきたいと思います。
2014年10月8日水曜日
2014年10月7日火曜日
同時接続・同時操作が簡単なターミナルソフト「rlogin」
以前の記事でTeraTermのブロードキャスト(同時操作)について書いてますが、
私の環境での同時接続数が50を超え、画面いっぱいに表示しても
表示しきれなくなってきたので、別のソフトを探していたところ、
複数同時接続が前提のターミナルソフトがありました。
その名は「rlogin」です。
http://nanno.dip.jp/softlib/man/rlogin/
TeraTermからの乗換を考慮しつつ使ってみたところのまとめです。
【主だった特徴】
・タブ形式の切替で、複数の接続先を1画面で確認できます。
・接続先も、タブ(グループ化)管理により、別々でOK
・ブロードキャスト(同報:同時操作)もOK
私の環境での同時接続数が50を超え、画面いっぱいに表示しても
表示しきれなくなってきたので、別のソフトを探していたところ、
複数同時接続が前提のターミナルソフトがありました。
その名は「rlogin」です。
http://nanno.dip.jp/softlib/man/rlogin/
TeraTermからの乗換を考慮しつつ使ってみたところのまとめです。
【主だった特徴】
・タブ形式の切替で、複数の接続先を1画面で確認できます。
Tab系の画面でよくある「ALT + TAB」キーにより、タブを切り替えられますので
ブロードキャストの結果を順次確認するときなど相当便利です。
・接続先も、タブ(グループ化)管理により、別々でOK
TeraTermでは、入力 Or プルダウンからの選択だったので、
一覧で表示、選択できるは大きなメリットです。
これは当然できるものとして選定しているので、問題なくOK。
TeraTermとの違いをあげるとするならば、
TeraTermではブロードキャスト先を選択し、ブロードキャスト用画面で
入力した結果を各画面へ一斉配信しますが、rloginでは
親となるウインドウ(接続先)を指定すると、現在接続されている
すべてのウインドウへ同報されます。
コンソールを操作しつつ、結果、別の接続先にも反映されている感じになるので
直観性は上がっているような気がします。
ブロードキャストしつつ、コマンドを入力後、ALT+TABで実行結果を確認。なんてのが
最近の操作ルーチンになってます。
・設定系は一通りありそう
パッと見、主だった設定はありそうです。今のところ、
設定項目がなくて苦労したケースはありません。
設定はテキストファイルとしてまとめてエクスポートできるので、
設定名さえ把握できれば、テキスト上で一括置換も容易です。
※端末Aで保存した設定を端末Bで読み込ませると、パスワードの
再入力を求められたので、機密性的にもしっかりしています。
⇒その場合、端末Bでパスワード保存して暗号化されたテキスト文字を置換で、万事解決
TeraTermはシンプルで使いやすいので手放すつもりもないのですが
同報が必要な操作はrloginを使っていこうと思ってます。
2014年9月17日水曜日
Mybatisを使う中でのTips (軽め
使っているライブラリのバージョンは、3.0.4です。
マニュアルをきちんと読めばわかる内容なので、自分用メモです。
else はありません。
比較演算子は、 != か、 == です
ELSEを使いたければ、chooseを。
例) Order Byを可変にする例
マニュアルをきちんと読めばわかる内容なので、自分用メモです。
IF文について
else はありません。
比較演算子は、 != か、 == です
ELSEを使いたければ、chooseを。
例) Order Byを可変にする例
OEDER BY
<if test="sortId != null and sortId!=''">
${sortId} ${sortType}
</if>
<if test="sortId == null or sortId == ''">
COLA ASC
,COLB DESC
</if>
別途定義しているSQLを利用する方法
定義:
<sql id = "commonQuery">
SELECT 1
</sql>
呼び出し
<include refid="commonQuery"/>
2014年9月16日火曜日
MySQLでサブクエリでUPDATE
以外と便利です。ただ、方言なので、ANSI的なSQLとは違います。
UPDATE `tableA` r,
(SELECT id,c.hoge
FROM `tableA` r
JOIN tableB e ON r.aa = e.aa
JOIN tableC c ON c.bb = e.bb) x
SET
r.hoge = x.hoge
WHERE
r.id = x.id;
ラベル:
MySQL
2014年9月12日金曜日
サーバーOSのシャットダウン時にtomcatが正常にシャットダウンしない件
仮想環境で新たにアプリが動作するサーバー環境を作成したところ、
OSのシャットダウン時にTomcatが正しく終了せず、OSが終了できなくなってしまいました。
色々と調べたところ、解消したので経緯を残しておきます。
UnknownHostExceptionを出して、うんともすんともいかなくなる。
/etc/hostsに、hostnameを書いていなかったので、書きました。
しかし、ダメ。
・シャットダウンの詳細確認
きちんと動いているサーバーもあるので、シャットダウンの時の内容を比較。
すると、tomcatの終了順が違う事がわかりました。
終了順をさらに調べていくと、以下な感じ
【OKケース】
OSのシャットダウン時にTomcatが正しく終了せず、OSが終了できなくなってしまいました。
色々と調べたところ、解消したので経緯を残しておきます。
事象
サーバOS上で、shutdown -h nowを行うと、tomcatの終了スクリプトで待ち状態。そのうちUnknownHostExceptionを出して、うんともすんともいかなくなる。
java.net.UnknownHostException: hostname: hostname
at java.net.InetAddress.getLocalHost(InetAddress.java:1360)
at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:490)
at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:288)
at org.apache.jk.server.JkMain.pause(JkMain.java:726)
at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
at org.apache.catalina.connector.Connector.pause(Connector.java:1037)
at org.apache.catalina.core.StandardService.stop(StandardService.java:578)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:788)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:662)
at org.apache.catalina.startup.Catalina.start(Catalina.java:629)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
結果
ホスト名が原因ではなく、tomcatのサービスが正しくインストールされていなかったため。過程
・ホスト名の解決/etc/hostsに、hostnameを書いていなかったので、書きました。
しかし、ダメ。
・シャットダウンの詳細確認
きちんと動いているサーバーもあるので、シャットダウンの時の内容を比較。
すると、tomcatの終了順が違う事がわかりました。
終了順をさらに調べていくと、以下な感じ
cd /etc/rc.d
【OKケース】
[root@host rc.d]# ls -l -R | grep tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
【NGケース】
[root@host rc.d]# ls -l -R | grep tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
終了スクリプトがない・・・
というわけで、
chkconfig --del tomcat
chkconfig --add tomcat
chkconfig tomcat on
を実施し、きちんと生成されて、正しくシャットダウンできる事が確認できました。
インストールに失敗したのかもしれません・・・
2014年9月9日火曜日
CentOS6.5 + mod_mono で起動時にエラー「Failed to connect to mod-mono-server after several attempts to spawn the process.」
いつもの通りCentOS環境でmod_monoをソースからインストールして起動したところ
サーバー再起動で、完了です。
「Failed to connect to mod-mono-server after several attempts to spawn the process.」
のエラーが出てしまい、対処をしたので手順をメモしておきます。
概略
- ソースからmod_monoをインストール
- /testエイリアスを作成し、mod_monoのサンプルサイトへアクセス
- 503エラーとなったので、/var/log/httpd/error_log を参照したところ、上記のエラー
原因
SELINUXが標準でインストールされ、稼働していたためでした。
SELINUUXの動作状況確認
#getenforce
enforcing : 有効 , disabled : 無効
SELINUXの無効化設定
/etc/selinux/config
SELINUX=disabled
2014年8月18日月曜日
Kendo UI で、Cultureを変更する
モックアップを作りたいだけなので、簡単にメモ。
<script src="../../../kendoui/js/cultures/kendo.culture.ja.min.js"></script>
<script src="../../../kendoui/js/cultures/kendo.culture.ja.min.js"></script>
<script>
kendo.culture("ja");
</script>
ある程度使えるかどうかの評価をすることになったらちゃんと記事にしていきます。
ラベル:
Kendo UI
2014年8月14日木曜日
ビルドされているモジュールのプラットフォームを確認する方法(corFlags.exe)
CorFlags.exe というFrameworkに付属しているツールを利用すると
モジュールがビルドされたプラットフォームを確認する事が出来ます。
私の場合、64bit環境で動作有、原因を調べるのに使いました。
http://msdn.microsoft.com/ja-jp/library/ms164699(v=vs.110).aspx
【使用例】
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>CorFlags.exe aspnet_merge.exe
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 11
ILONLY : 1
32BIT : 1
Signed : 1
正しい使い方はあれこれありそうですが、私の場合には32bitでビルドされたことが
わかって、それでOKだったので、話題としては終わりでした。
モジュールがビルドされたプラットフォームを確認する事が出来ます。
私の場合、64bit環境で動作有、原因を調べるのに使いました。
http://msdn.microsoft.com/ja-jp/library/ms164699(v=vs.110).aspx
【使用例】
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>CorFlags.exe aspnet_merge.exe
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 11
ILONLY : 1
32BIT : 1
Signed : 1
正しい使い方はあれこれありそうですが、私の場合には32bitでビルドされたことが
わかって、それでOKだったので、話題としては終わりでした。
ラベル:
.net
プログラム入れ替えにより ASP.net WebサービスでPermissionsエラーが発生
IIS ASP.net環境で動作しているプログラムの入替を行ったところ
Permissionエラーが発生するようになってしまいました。
その対処の一部始終をメモしておきます。
・Webサービスの1つに不具合があり、プログラムの入替を行う。
|-web.config
|- bin
|- Program.dll ←今回これだけを入替
|- *.dll
・持参した、Program.dllを、上書きコピー
結果、これでアウトでした。
起きたエラーがコレ。
で、ダメだったので、あれこれやっているうちに、できるようになりました。
結果としては、アプリケーションプールにキャッシュされていたようです。
・アプリケーションプールの、停止、再起動を行う。
使っていたアプリケーションプールは共有だったので、個別に新規で一つ作り
新規で作ったアプリケーションプールを割り当ててみました。
その結果、改善されました。
それで、通常使っているアプリケーションプールを一旦再起動して、
アプリケーションプールの設定を元に戻すと、正常稼働。
アプリケーションプールの再起動時に、動作中プロセスの影響からなのか
「アプリケーションプールを起動できません」的なエラーが出て焦りましたが、
少し待ってから起動したら動いたので、結果問題なしといったところです。
⇒Windows\Microsoft.net\Framework**\Version\Temporary ASP.NET Files に
IISが自分のロードしたモジュールをキャッシュします。
⇒結果、問題なし。
念のため、
・アプリケーションとしての設定を解除
・該当キャッシュをクリア
・再度アプリケーションへ変換
とやり、キャッシュの再構成を行いましたが、改善せず
他にもアプリが動いていて、止めるにはいろいろと手間があったので、今回は除外
プログラムを持ち込んだため、はまりました。
インターネットから取得したデータの扱いには十分注意しましょう。
Permissionエラーが発生するようになってしまいました。
その対処の一部始終をメモしておきます。
【概況】
・IIS + ASP.netで稼働しているWebサーバ。 (Webサービスを稼働中) Win2008R2 , IIS7.0・Webサービスの1つに不具合があり、プログラムの入替を行う。
【環境】
・WebService Directory|-web.config
|- bin
|- Program.dll ←今回これだけを入替
|- *.dll
【やったこと】
・Program.dllをコピーして別の場所へバックアップ・持参した、Program.dllを、上書きコピー
結果、これでアウトでした。
起きたエラーがコレ。
型 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' のアクセス許可の要求に失敗しました。 場所System.Security.CodeAccessSecurityEngine.Check(Objectdemand,StackCrawlMark&stackMark,BooleanisPermSet) 場所System.Security.CodeAccessPermission.Demand() 場所System.Reflection.Assembly.VerifyCodeBaseDiscovery(StringcodeBase) 場所System.Reflection.Assembly.get_CodeBase()
【原因】
・Internetゾーンから取得したファイルを、そのままIIS稼働環境へコピーしたため。【対処】
・ファイルのプロパティにてブロックを解除する。で、ダメだったので、あれこれやっているうちに、できるようになりました。
結果としては、アプリケーションプールにキャッシュされていたようです。
・アプリケーションプールの、停止、再起動を行う。
使っていたアプリケーションプールは共有だったので、個別に新規で一つ作り
新規で作ったアプリケーションプールを割り当ててみました。
その結果、改善されました。
それで、通常使っているアプリケーションプールを一旦再起動して、
アプリケーションプールの設定を元に戻すと、正常稼働。
アプリケーションプールの再起動時に、動作中プロセスの影響からなのか
「アプリケーションプールを起動できません」的なエラーが出て焦りましたが、
少し待ってから起動したら動いたので、結果問題なしといったところです。
【他に調べたこと】
・IISにキャッシュされていないか⇒Windows\Microsoft.net\Framework**\Version\Temporary ASP.NET Files に
IISが自分のロードしたモジュールをキャッシュします。
⇒結果、問題なし。
念のため、
・アプリケーションとしての設定を解除
・該当キャッシュをクリア
・再度アプリケーションへ変換
とやり、キャッシュの再構成を行いましたが、改善せず
【やりたかったけど試してない事】
・IISの再起動他にもアプリが動いていて、止めるにはいろいろと手間があったので、今回は除外
【まとめ】
普段はUSB媒体でプログラムの持ち込みをするのですが、今回はWeb経由でプログラムを持ち込んだため、はまりました。
インターネットから取得したデータの扱いには十分注意しましょう。
2014年8月10日日曜日
ネットワーク(LAN)はループさせてはいけません(ブロードキャストストーム)
先日、お客様先へシステム納品時に、LAN障害が発生。
結局はループだったであろう。という事なのですが、
改めてその爆発力を目の当たりにしたのでまとめておきます。
・PINGを継続して実行していると、何回かに1回くらい、Request Timeoutが出る。
インフラ屋さんがあれこれ調べてやっていたのですが、ひょんなところで気がついた
ハブに、ネットワークループがありました。
その片方を取り外したところ、解決。
ネットワークはループさせたらだめ。
※但し、STP(スパニングツリープロトコル)を持っているハブを利用しているだとか
VLANとか、意図的にループ経路を作っている場合には別
・1本のLANケーブルを、同じハブに挿したらダメ。ということです。
・ハブ間は、1本のLANケーブルでつなぐことが基本で、二重化のようにつないだらダメという事です。
・ぐるっと回って1周。というようなLAN配線はダメということです。
詳しくはASCIIさんあたりを参照。
http://ascii.jp/elem/000/000/451/451629/
http://ascii.jp/elem/000/000/561/561903/
何も知らないユーザーさんだと、気にもならないのでしょうけども、
以外に単純な落とし穴で、ネットワークが使えなくなってしまう。
結局はループだったであろう。という事なのですが、
改めてその爆発力を目の当たりにしたのでまとめておきます。
現象
・ネットワークがつながったり、切れたりする。・PINGを継続して実行していると、何回かに1回くらい、Request Timeoutが出る。
インフラ屋さんがあれこれ調べてやっていたのですが、ひょんなところで気がついた
ハブに、ネットワークループがありました。
その片方を取り外したところ、解決。
結論
ネットワークはループさせたらだめ。
※但し、STP(スパニングツリープロトコル)を持っているハブを利用しているだとか
VLANとか、意図的にループ経路を作っている場合には別
そもそもネットワークのループって?
ループってどういうことか?っていうと、・1本のLANケーブルを、同じハブに挿したらダメ。ということです。
・ハブ間は、1本のLANケーブルでつなぐことが基本で、二重化のようにつないだらダメという事です。
・ぐるっと回って1周。というようなLAN配線はダメということです。
詳しくはASCIIさんあたりを参照。
http://ascii.jp/elem/000/000/451/451629/
http://ascii.jp/elem/000/000/561/561903/
何も知らないユーザーさんだと、気にもならないのでしょうけども、
以外に単純な落とし穴で、ネットワークが使えなくなってしまう。
余談
そのお客さんは半日間、全システムがほぼダウンで、業務になってませんでした。
登録:
投稿 (Atom)