googleMap利用の港地図です。
< リンク >
< 画面絵 >
運航港地図
施設港地図
< ご利用上の注意 >
運航港地図を船舶運航業務等で利用された結果生ずる、いかなる有形無形の損害については、開発者は一切の責任を負わないこととします。
データ内容につきましては、出来る限り最新の状況に追従させてますが、間に合わないこともあり、ご容赦下さい。
Semakin di depan
昔、インドネシア語を勉強してた時期があり、ふさわしい電子辞書がないので、自作しました。
国内でインドネシア語を勉強してる人、日本人インドネシア駐在員の方々、在日インドネシア人の人達にご好評で、一時期、多数のアクセスがありましたが、最近はガラケー利用者が少ないのか、時代遅れなのか、過疎な状態です。
URL : 2020年3月リニューアルしました
特徴としては、
1) 印 => 日 検索で、ローマ字が出る
2) 日 => 印 検索で、ひらがな、ローマ字が使える
3) 検索結果を一時的に記憶して、一覧で見れる
だけです。
上画面例訳語を見て、初めて知った言葉、polisi tidur は、警察 : 睡眠 が日本語訳になり、面白い表現で少し笑えます。
辞書データは下サイトの運営者作成のを、使わせて頂いてます。
デバッグする時、NetBeansのデバッグで止めてチェックしたりするのが、じゃまくさく、時間かかるので、止めてみて終了させる必要ない場合用に、System.out.println() で見れるようにしてます。
昔作った、obj.getClass().getDeclaredFields()でのループ型で配列がとれない欠点があり、JSON出力にしてます。
null, getterのないフィールドがとれない欠点がありますが、PHPの var_dump() みたいなこと出来て便利です。
[ 出力例 ]
===============================
Time : 2019-01-08 19:16:29.204
Class : vesselsch.Polygon
Comment : ポリゴン追加
-------------------------------
{
"lats": [
35.68114829375634,
35.680799702175534,
35.6783595184685,
35.67561015535696,
35.67561015535696,
35.67700460322533,
35.677771539167104,
35.678956789306746,
35.679026509354955,
35.68114829375634,
35.68114829375634
],
"lons": [
139.97815035776364,
139.98261355356442,
139.98287104562985,
139.98201273874508,
139.9794378180908,
139.97892283395993,
139.9801244635986,
139.9801244635986,
139.97840784982907,
139.97815035776364,
139.97815035776364
],
"id_poly": 0,
"nm_poly": "1916",
"cd_unlo": "JPFNB",
"tp_poly": "CY",
"nm_route": "",
"cnt_corner": 0,
"latmid": 0.0,
"lonmid": 0.0,
"m_depth": 0.0
}
[ コード例 ]
// JSONデコードはリフレクションで行う //
Polygon PL = new Polygon();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Type type = new TypeToken<Polygon>() {
}.getType();
PL = gson.fromJson(jsn, type);
// デバッグ出力 //
FieldValuePrint fvp = new FieldValuePrint(PL, "ポリゴン追加");
[ 出力用クラス ]
package vesselsch;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.commons.lang.time.DateFormatUtils;
/**
* 指定クラスJSON出力
* @author 田中尚
*/
public class FieldValuePrint {
private Object obj;
private String comment;
/**
* 引数付コンストラクタ
* @param obj クラスオブジェクト
*/
public FieldValuePrint(Object obj) {
this.obj = obj;
this.printToJSON();
}
/**
* 引数付コンストラクタ
* @param obj クラスオブジェクト
* @param comment コメント
*/
public FieldValuePrint(Object obj, String comment) {
this.obj = obj;
this.comment = comment;
this.printToJSON();
}
/**
* クラスのフィールド名、フィールド値一覧チェック出力
*
*/
public void printToJSON() {
// JSON出力 //
Gson gsondbg = new GsonBuilder().setPrettyPrinting().create();
System.out.println("===============================");
System.out.println("Time : " + DateFormatUtils.format(new java.util.Date(), "yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println("Class : " + this.obj.getClass().getCanonicalName());
if (this.comment != null) {
System.out.println("Comment : " + this.comment);
}
System.out.println("-------------------------------");
System.out.println(gsondbg.toJson(this.obj));
}
}
[ 送信データ画面例 ]
デバッグする時、NetBeansのデバッグで止めてチェックしたりするのが、じゃまくさく、時間かかるので、止めてみて終了させる必要ない場合用に、System.out.println() で見れるようにしてます。
[ 出力例 ]
===============================
Class : vesselsch.Polygon
——————————-
lats : [D@de31cc6
lons : [D@2cdf0ade
polynm : null
latsList : null
lonsList : null
id_poly : 0
nm_poly : 謎の海域ふな
cd_unlo : JPFNB
tp_poly : OT
nm_route :
cnt_corner : 0
latmid : 0.0
lonmid : 0.0
m_depth : 0.0
===============================
配列型がとれてないので、改良予定
[ クラス例 ]
package vesselsch;
import java.util.ArrayList;
import java.util.Arrays;
/**
* GoogleMap 多角形型
* @author 田中尚
*/
public class Polygon {
private double[] lats; // 座標緯度
private double[] lons; // 座標経度
private String polynm;
private ArrayList<Double> latsList = null; // 未使用
private ArrayList<Double> lonsList = null; // 未使用
private int id_poly;
private String nm_poly;
private String cd_unlo;
private String tp_poly;
private String nm_route;
private short cnt_corner;
private double latmid;
private double lonmid;
private float m_depth; // 水深
[ 埋め込み例 ]
JSONリクエストのセット状況
// JSONデコードはリフレクションで行う //
PolygonDtl POD = new PolygonDtl();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Type type = new TypeToken<PolygonDtl>() {
}.getType();
POD = gson.fromJson(jsn, type);
// Javascriptで"が消せないので //
//POD.setCd_facil(POD.getCd_facil().replaceAll("\"", ""));
if (POD.getCd_facil() != null) {
if (POD.getCd_facil().equals("")) {
POD.setCd_facil("ZZZZZ");
}
else {
POD.setCd_facil(POD.getCd_facil().substring(0, 5));
}
}
// -- debug
MyBatisParent mb = new MyBatisParent();
mb.printFieldValueList(POD);
よく使うので、関数にしてます。
CREATE DEFINER=`root`@`localhost` FUNCTION `fc_csv_idxtxt_int`(
`src` varchar(300),
`idx` smallint
)
RETURNS int(11)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT 'CSV列指定位置取得'
begin
declare rtnvalcsv int;
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(src, ',', idx), ',', -1) INTO rtnvalcsv;
return rtnvalcsv;
end
|
誕生年月日を渡せば、今日の年齢を返します。
CREATE DEFINER=`root`@`localhost` FUNCTION `fc_age_by_birthdate`(
`bdate` date
)
RETURNS int(11)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '日付値指定年齢取得スカラー関数'
begin
declare agetoday int;
select year(current_date) - year(bdate) - (right(current_date, 5) < right(bdate, 5)) into agetoday;
return agetoday;
end
DATE型値をキャストなしで部分文字列取得できます。
下は今日以外を指定した年齢取得
CREATE DEFINER=`root`@`localhost` FUNCTION `fc_age_by_birthdate_tgtdt`(
`bdate` date,
`tgtdt` date
)
RETURNS int(11)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '日付値指定年齢取得スカラー関数'
begin
declare agetoday int;
select year(tgtdt) - year(bdate) - (right(tgtdt, 5) < right(bdate, 5)) into agetoday;
return agetoday;
end
[ 利用場面 ]
各社から提供されるデータの船名を結合させて処理する時、船名内の記号、スペースの扱いがまちまちで、使えないので作ってみました。
正規表現使えば、すっきりして、新規出現にも対応できると思いますが、今のところ支障なく使えてるので、不都合に遭遇したら、作り変えます。
CREATE DEFINER=`root`@`localhost` FUNCTION `fc_extract_symbol`(
`src` varchar(250)
)
RETURNS varchar(250) CHARSET utf8
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '記号除去関数'
begin
return
replace(replace(replace(replace(replace(replace(replace(src, ' ', ''), '*', ''), '.', ''), '-', ''), ',', ''), '(', ''), ')', '');
end
昔、MySQLで初めて作った、ユーザー定義関数です。
言語を付け足していけば、拡張できます。RETURNS の CHARSET は必要に応じて変更してください。
CREATE DEFINER=`root`@`localhost` FUNCTION `fc_dofwtxt`(
`idx` tinyint,
`langcd` varchar(4)
)
RETURNS varchar(20) CHARSET sjis
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '言語指定曜日文字列スカラー関数'
begin
declare res varchar(12);
if (langcd = 'jp') THEN
select
case (idx)
when 2 then '月'
when 3 then '火'
when 4 then '水'
when 5 then '木'
when 6 then '金'
when 7 then '土'
when 1 then '日'
end as restxt into res;
END IF;
if (langcd = 'jpp') THEN
select
case (idx)
when 2 then '(月)'
when 3 then '(火)'
when 4 then '(水)'
when 5 then '(木)'
when 6 then '(金)'
when 7 then '(土)'
when 1 then '(日)'
end as restxt into res;
END IF;
if (langcd = 'ens') THEN
select
case (idx)
when 2 then 'Mon'
when 3 then 'Tue'
when 4 then 'Wed'
when 5 then 'Thu'
when 6 then 'Fri'
when 7 then 'Sat'
when 1 then 'Sun'
end as restxt into res;
END IF;
if (langcd = 'cnp') THEN
select
case (idx)
when 2 then '(星期一)'
when 3 then '(星期二)'
when 4 then '(星期三)'
when 5 then '(星期四)'
when 6 then '(星期五)'
when 7 then '(星期六)'
when 1 then '(星期天)'
end as restxt into res;
END IF;
return res;
end
Firebird 日本ではあまり使われてませんが、海外ではMySQL, PostgreSQL と同じ位使われ、三大OSSデータベースのひとつと言われてます。
特徴、列挙すると、
1) 管理が少なく、ほっておいても雑草のようにちゃんと動く
2) プアな環境でも動き、ハードコスト、利用コストを抑えられる
3) 一通りの機能は揃っていて、他DBからの移行も容易
4) トリガ、ストアド、ストアド導出テーブル、ユーザー定義関数、揃っていて海外ではスモールオラクルと言われてる
5) データベース毎にファイルが1個で管理しやすい
6) Windowsでも使いやすい
7) SQLが標準に近く、くせが少ない
8) サーバー用のsuper serverと組込用のclassic server に別れ、組込用途で使いやすい
9) 文字コードの対応が豊富
10) インストール容量が小さく、すぐに準備出来る
11) 自作UDFを組み込める
12) 日本語の情報は少ないが、外国語のは多く、ロシア語、ポルトガル語、インドネシア語の情報が多い
13) IDEが豊富にあり、好みで選べる
14) コマンドラインの isql で mysql, psql と同等の事が出来、ステータス確認用SQLも普通に揃ってる
15) チューニング項目が少なく、何もしなくても高パフォーマンスが得られる
本家 Home : https://firebirdsql.org/
IBPhoenix : https://www.ibphoenix.com/
Wikipedia : https://ja.wikipedia.org/wiki/Firebird
日本ユーザー会 : http://tech.firebird.gr.jp/firebird/index.php?firebird_xsite=0
キムラデービーブログ : http://blog.kimuradb.com/
.table : テーブルの一覧
sqlite> .table
log_apacheaccess log_df log_jstat log_rsyncbackup
log_apachests log_dircntsz log_loadave log_rxtx
log_cpu log_free log_ping log_videoupload
.schema : 指定したテーブルの show create table
sqlite> .schema log_free
CREATE TABLE "log_free" ("tm" timestamp NOT NULL ,"used" integer NOT NULL ,"free" integer NOT NULL );
CREATE UNIQUE INDEX log_free_tm on log_free(tm);
.exit : 終了
.quit : 終了
.show Shell設定状態表示
sqlite> .show
echo: off
explain: off
headers: off
mode: list
nullvalue: ""
output: stdout
separator: "|"
stats: off
width:
sqlite>
.database : 使用中のデータベースを表示
seq name file
--- --------------- ----------------------------------------------------------
0 main /home/sqlite/logs
.help : ヘルプを表示
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail ON|OFF Stop after hitting an error. Default OFF
.databases List names and files of attached databases
.dump ?TABLE? ... Dump the database in an SQL text format
If TABLE specified, only dump tables matching
LIKE pattern TABLE.
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ?ON|OFF? Turn output mode suitable for EXPLAIN on or off.
With no args, it turns EXPLAIN on.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices ?TABLE? Show names of all indices
If TABLE specified, only show indices for tables
matching LIKE pattern TABLE.
.load FILE ?ENTRY? Load an extension library
.log FILE|off Turn logging on or off. FILE can be stderr/stdout
.mode MODE ?TABLE? Set output mode where MODE is one of:
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML <table> code
insert SQL insert statements for TABLE
line One value per line
list Values delimited by .separator string
tabs Tab-separated values
tcl TCL list elements
.nullvalue STRING Use STRING in place of NULL values
.output FILENAME Send output to FILENAME
.output stdout Send output to the screen
.print STRING... Print literal STRING
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.restore ?DB? FILE Restore content of DB (default "main") from FILE
.schema ?TABLE? Show the CREATE statements
If TABLE specified, only show tables matching
LIKE pattern TABLE.
.separator STRING Change separator used by output mode and .import
.show Show the current values for various settings
.stats ON|OFF Turn stats on or off
.tables ?TABLE? List names of tables
If TABLE specified, only list tables matching
LIKE pattern TABLE.
.timeout MS Try opening locked tables for MS milliseconds
.trace FILE|off Output each SQL statement as it is run
.vfsname ?AUX? Print the name of the VFS stack
.width NUM1 NUM2 ... Set column widths for "column" mode
.timer ON|OFF Turn the CPU timer measurement on or off
詳しくは : https://qiita.com/sotetsuk/items/cd2aeae4ba7e72faad47
|
|
コメントを投稿するにはログインしてください。