goo blog サービス終了のお知らせ 

こんにちは、ねこです。

自称プログラマのおばちゃんのブログです。いろいろあるよねぇ~。

[修正版] DOJOをつかってリストにあるもののみ、指定の位置にCSSだけで光り続けるアニメーションを載せます。

2017-01-10 08:47:43 | IBM i

昨日GOO様、落ちてましたか?メンテでしたかねえ。。。時差があるのとおつむが弱いので もひとつわかってません。

 

ところで、すみません!!!

めっちゃクラッピーなjavascript書いてましたね。。。とほほ。

こちらに、修正晩乗せときます。

『DOJOをつかってリストにあるもののみ、指定の位置にCSSだけで光り続けるアニメーションを載せます。』

変更箇所:

aryPlaceMでaryHyoujisasetaiのPLACEとaryHyoujiSanshyoumotoのplaceの共通項をjsonにまとめておいて、のちにアニメーションのウェジットをつくります。こうすることで、呼ばれたaryHyoujisasetaiがかわっても、ノードさえきれいにけせば更新することができます。

vTitleOMとvTitleIMのarrayにウェジットを組んでおきます。

では、こんなかんじ。

function funcGenerateMapAnimeation(aryHyoujisasetai, aryHyoujiSanshyoumoto){
require([
"dojo/dom",
"dojo/_base/fx",
"dojo/fx",
"dojo/domReady!"
], function(dom, fx, coreFx){
var delay = 200;
for (var i=dom.byId("kokoM").childNodes.length-1;i>=0;i--){
dom.byId("kokoM").removeChild(dom.byId("kokoM").childNodes[i]);
}
for (var i=dom.byId("kokoE").childNodes.length-1;i>=0;i--){
dom.byId("kokoE").removeChild(dom.byId("kokoE").childNodes[i]);
}
if (aryHyoujisasetai.length>0){
var vLeftM, vTopM, vPlaceM, nodeCnvsM, attStyleM, attIdM;
var aryPlaceM = [];
for (var i=0;i<aryHyoujisasetai.length;i++){
vPlaceM = aryHyoujiSanshyoumoto[aryHyoujiSanshyoumoto.map(function(e) { return e.place; }).indexOf(aryHyoujisasetai[i].PLACE)].place;
aryPlaceM.push(vPlaceM);
}
for (var i=0;i<aryHyoujisasetai.length;i++){
vLeftM = aryHyoujiSanshyoumoto[aryHyoujiSanshyoumoto.map(function(e) { return e.place; }).indexOf(aryHyoujisasetai[i].PLACE)].left;
vTopM = aryHyoujiSanshyoumoto[aryHyoujiSanshyoumoto.map(function(e) { return e.place; }).indexOf(aryHyoujisasetai[i].PLACE)].top;
vPlaceM = aryHyoujiSanshyoumoto[aryHyoujiSanshyoumoto.map(function(e) { return e.place; }).indexOf(aryHyoujisasetai[i].PLACE)].place;
nodeCnvsM = document.createElement("canvas");
attStyleM = document.createAttribute("style");
attStyleM.value = ""
+"position: absolute;"
+"left:"+vLeftM+"px;"
+"top:"+vTopM+"px;"
+"";
nodeCnvsM.setAttributeNode(attStyleM);
attIdM = document.createAttribute("id");
attIdM.value = "mapIdM"+vPlaceM;
nodeCnvsM.setAttributeNode(attIdM);
attOnOverM = document.createAttribute("onclick");
attOnOverM.value = "alert(vName)";
nodeCnvsM.setAttributeNode(attOnOverM);
attWidthM = document.createAttribute("width");
attWidthM.value = "35px";
nodeCnvsM.setAttributeNode(attWidthM);
attHeightM = document.createAttribute("height");
attHeightM.value = "20px";
nodeCnvsM.setAttributeNode(attHeightM);
dom.byId("kokoM").appendChild(nodeCnvsM);

var canvasM = document.getElementById("mapIdM"+vPlaceM);
if (canvasM.getContext){
var ctx = canvasM.getContext('2d');
ctx.font = "bold 18px Arial";
ctx.fillStyle="#b30000";
ctx.fillText(vPlaceM, 5, 15, 200);
}

}

if (dom.byId("kokoM").getElementsByTagName("canvas").length>0){
var vTitleOM = [];
var vTitleIM = [];
for (var a=0;a<aryPlaceM.length;a++){
vTitleOM[a] = new fx.fadeOut({
node:"mapIdM"+aryPlaceM[a],
delay: parseInt(delay),
duration:1100,
onEnd: function(){
for (var a=0;a<aryPlaceM.length;a++){
vTitleIM[a].play();
}
}
}).play();
}
for (var a=0;a<aryPlaceM.length;a++){
vTitleIM[a] = new fx.fadeIn({
node:"mapIdM"+aryPlaceM[a],
delay: parseInt(delay),
duration:1100,
onEnd: function(){
for (var a=0;a<aryPlaceM.length;a++){
vTitleOM[a].play();
}
}
}).play();
}
}
}
});

}
);
}

これで、呼び出すときに

var aryHyoujisasetai = [{PLACE:"02", NAME:"TOMATO"},
{PLACE:"34a", NAME:"CUCAMBER"},
{PLACE:"21", NAME:"LEMON"}];

var aryHyoujiSanshyoumoto = [{place:0,left:442,top:211},
{place:"34a",left:442,top:211},
{place:"02",left:550,top:297},
{place:"21",left:543,top:244},
{place:"c4",left:85,top:67}];

funcGenerateMapAnimeation(aryHyoujisasetai, aryHyoujiSanshyoumoto);

スタイルシートは

<style type="text/css">
div#wrapper {
width: 668px;
height: 318px;
margin: 0 auto;
}
.relative{
position: relative;
}
</style>

HTMLは

<div id="wrapper" class="relative">
<img src="img/maps/map.png" width="668">
<div id="kokoM"></div>
</div>

尚、DOJOのルートはディレクトリーによって違います。いろいろググッてDOJOの設置の仕方を確認してください。

 

ほんと、ごめんねぇ。

 

ねこでした!


アフィリエイトというのはアメリカからもできんのかいな。本日を持ってアフィリエイトやめます。

2017-01-04 06:36:45 | IBM i

と、いうより、もう少し勉強してからしようかなと思います。

明けましておめでとうございます。今年もよろしくお願いします!

昨日だったかな?アメリカでは三日の日です。youtubeビデオでいろいろと調べてみたら、結構いろんなテクニックがあるらしいです。たとえば、

1.ブログはターゲットをひとつに絞っていくつも作る。特に、衣・食・住関係は脈あり。

2.ターゲットに沿ったアフィリエイトの広告を出すべし。

3.ターゲットの広告には自分の感覚を添えた文章をつける。

などなど。

こりゃいかん、ねこのブログはぜんぜんなっとらん。ターゲットが剣道、IT、アメリカ生活やもんなぁ。

これは練り直さんと。

今後は、ターゲットを絞って。。。って、しぼりませーん!

だって、好きでやってるからね。

ブログといえば、金もーけ、カリスマブロガー、食レポなど、どうにもこうにも。。。取りざたされやすいけど、本当は「ウェブサイト覚え書き」の進展系ワード。「web log」ウェブログが、縮まってブログになった。

とういうことは、なんでもかいていいわけ。そこに興味をもって、はたまた縁があってみてくれる「訪問者」さまもいるわけですね。

今回、二週間だけアフィリエイトやってみてわかったことは、どんな仕事にも近道は無いってこと。お金は時間と汗と知識が運んでくれます。ブロガー職や、ユーチューバーもそう、結構みんな時間かけて必死でやってる。 だから、「一ヶ月でアフィリエイト収入」なんちゃらってうたってる怪しいサイトやセミナーにお金払っちゃだめですよ!

 みなさん、無病息災、飛躍の年をお過ごしください!

読んでくださって有難うございました。

 

ねこでした。

 

 


AS400 / ZEND / PHP / Ajax#3(ZEND for i / ZEND Studio13)

2016-12-30 06:22:02 | IBM i

とうとう今年も終わっちゃいますね。

みなさん、忙しくされてますか?

ねこは、そこそこ。今晩は、うちで道場のパーティがあります。ちっちゃな家に12人ぐらいきちゃいます。ポットラック式にしたので、今年は餃子やくぐらいかな。楽でよし!

 

では、本題です。

今日は、なかなかお目にかかれないであろう、ZENDコンソール画面をAS400とWEBの両方の写真を添付します。このZEND for i というシステムはアラン・セイデンさんというかたが、まったく違う二つのマシーン、AS400とPCを組み合わせたことに大きな意味があります。このお陰で、PHPが走ったり、WebsphearとAS400上で連携させたりということが可能です。まぁ、最近ではIISサーバでもPHP走らせてるところありますが。この規模はそんなもんじゃぁありません!なかなかすごいことです。

こちらZENDウェブコンソール画面

この前ウェブニアのサーバートレーニングを受けたんですが、ここアメリカでもAS400と連携するシステムが増えてきているそうですが、まだまだ情報が足りてないようで、ほとんどの人がこのコンソールコマンドを知りませんでした。

GO AS400上のルート/ZSMENU

そしてこのコマンドをグリーンスクリーン(AS400の画面)のコマンドラインから打ち込むと、次の画面が出てきてとても便利です。

こちらZEND AS400コンソール画面

 
 そして、こちらウェブコンソール画面
 
 
皆様、良いお年をお過ごしください。ねこでした。

AS400 / ZEND / PHP / Ajax#2(AS400とPHPの連携、コストなし)

2016-12-28 08:04:17 | IBM i

 

全開に引き続き。。。初めてこちらにたどり着いた方、こちらからお読みください。

AS400 / ZEND / PHP / Ajax#1(AS400とPHPの連携、コストなし)

 

気をつけてください、ローカルでZEND for Windows なんかを使う場合にはDB2コネクトありませんから。。。たとえ、あなたのお使いのZEND for i にあったとしても。。。
1.こちら、PDOを使う場合。
try {
if ($server_name == 'localhost') {
$dbh = new PDO('odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=AS400のドメインネーム/ホストネーム;HOSTNAME=AS400のドメインネーム/ホストネーム;DATABASE=AS400赤丸の中;NAMING=1;', 'サーバーのユーザー名', 'アクセスパスワード', array(
PDO::ATTR_PERSISTENT => true
));
} else {
$dbh = new PDO("ibm:AS400赤丸の中", "サーバーのユーザー名", "アクセスパスワード", array(
PDO::ATTR_PERSISTENT => true
));
}
} catch (Exception $e) {
die("なんで死んでしまったんだ。。。ドメイン名はあってるのか?だめだったら、IPアドレス直でやってみよう。データベースはAS400のSystemネームだぞ?それでもだめだったら、あとはクォーテーションなんか間違ってねーか?: " . $e->getMessage());
}
function funcpushdata($dbh, $sql){
try {
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$sth = $dbh->prepare($sql);
$sth->execute();
$data = $sth->fetchAll(PDO::FETCH_ASSOC);
$dbh->commit();
} catch (Exception $e) {
$dbh->rollBack();
echo "ここの場合はSQLを最初に心配したほうがいいかもです。: " . $e->getMessage();
}
return $data;
}

 

2.で、こっちはiSeries Access ODBC for Windows 付属のODBCアドミニストレーションを使った方法。PDOは使えないらしい。。。間違ってたらごめんなさい。
if ($server_name == 'localhost'){
$server="astest";
$user="サーバーのユーザー名";
$pw="アクセスパスワード";
$connect = odbc_connect($server,$user,$pw);
if ($connect == false) {
echo "Use System i Navigator Defaultをコネクションで選択しているか?セキュリティも全部System iに任せちまえ!.<br>";
}
$result=odbc_exec($connect, $sql) or die("ここの場合はSQLを最初に心配したほうがいいかもです。");
$data = array();
while($myRow = odbc_fetch_array($result)){
$data[] = $myRow;
}
odbc_close($connect);
}else if ($server_name == 'AS400のドメインネーム/ホストネーム'){
$server="*LOCAL";
$user="サーバーのユーザー名";
$pw="アクセスパスワード";
$connect = db2_connect($server,$user,$pw);
if ($connect == false) {
echo "もうこれはね。。。わからん。サーバー名を確認すること。これがプロダクションサーバーで実際にデータベースとのやり取りをするところなんで、大体はローカルをさせば大丈夫だと思うんだが。こればっかりはそのシステムによるでしょう.<br>";
}
$result=db2_exec($connect, $sql) or die("Data error");
$data = array();
while($myRow = db2_fetch_assoc($result)){
$data[] = $myRow;
}
db2_close($connect);
}else{
echo "これはもう電源だな。。。<br>";
}

で、ちょっと心配。。。なんて場合は、こうしても良いかもです。これは、個人の責任でね。ねこは、もっとバッシバシにやりたい派です。時間かかるけどな。
function fnc_Chk($str, $charset = 'UTF-8'){
return htmlspecialchars($str, ENT_QUOTES, $charset);
}
$date1 = fnc_Chk($_GET['Date1']);
$date2 = fnc_Chk($_GET['Date2']);
array_push($aryParm, $date1, $date2);
$and = $and." and datefield between (?) and (?)";
$sql = "select * from antanotable where userid = 'tomato'".$and;

 

RPGプログラマ上がりのねこが必死でつかんだ情報です。「こんなん、もうしってるわっ」ってなかた、すみません。でも初心者の方やこれからPHPとAS400を連携させようとされてる方、ささやかながらでも情報を共有できればとアップしました。少しでも役に立ったと思われた方、こちらのアフィリエイトクリックしてください。バナーブリッジ様のバナーです。ねこは今アフィリエイトにチャレンジしてます。

アフィリエイトというのはアメリカからもできんのかいな。一日目

アフィリエイトというのはアメリカからもできんのかいな。一日目(午後の部)

アフィリエイトというのはアメリカからもできんのかいな。二日目

アフィリエイトというのはアメリカからもできんのかいな。三日目

アフィリエイトというのはアメリカからもできんのかいな。四日目(Googleアドセンス検証とAS400、PHPの話を少し)

アフィリエイトというのはアメリカからもできんのかいな。五日目‐なら、Googleアナリティクスしてみたる。

 

 


AS400 / ZEND / PHP / Ajax#1(AS400とPHPの連携、コストなし)

2016-12-27 06:28:37 | IBM i

ねこです。

2014年に『あかん。。。またカテゴリーが増える。 -> AS400 + Apache + PHP + DOJO ToolKit』なんて記事を書いたんですが、ほったらかしになっているにもかかわらず、結構な数の方が見てくださっていました。びっくりです。。。この記事の後、新しいプロジェクトがきて頓挫しちゃってたんですね。すみません。。。

ではまずAS400 についてですが、ご存知のようにコンピュータ言語からすでに違います。(AS400はebcdic / PCはascii) PCより大型の『ミッドフレーム』もしくは『メインフレーム』といわれるマシーンです。90年代には、多くの官公庁、病院、大企業などが主にデータ管理とその出入力画面にエミュレータという遠隔操作を使用して活用していました。ここアメリカでは、未だに多くの場所で使われています。その理由として挙げられるのは、IBMが「i(アイ)シリーズ」として、全てのプロトコルを一台でやってやろうじゃないか、と2000年ごろに打ち立てた新しい形式にコスト削減を求めたエンジニア達がこぞって推奨したからですね。2000ミレニアム問題もなつかしいなぁ。。。

では、本題に入ります。そういうことで未だ多くの場所でAS400 が使われているのですが、ことコンピュータ言語に関しては不便なことが多発しています。PHPなどは殿堂入りのプログラミング言語にもかかわらず、2010年ごろまでAS400では使えませんでした。ところが、AS400のWEBサーバ化の可能性が進むにつれて、それも不可能ではなくなってきたのです。そしてそれをボックスに詰め込んだのが、『ZEND』。たったらぁ~んっ!

ねこは2014年の記事の段階で、『ZEND』を使わない方法でとおもったんですが、『ZEND』を使うだけなら今のところコストがかかりません。それにとっても簡単です。ねこの職場でも一年ほど無料バージョンを使ってました。だって、PHP使うだけだもん。それにしてもAS400でPHP動いたときは感激やったなぁ!では、何にコストがかかるのか?それは、サポートと、Z-rayといわれる、モニタリングシステムです。普通のログなんかだけじゃなくってちゃんとSQLステート文や、HTTPリクエストなんかもきっちり一緒に見せてくれるんで、プロダクションエラーがとってもわかりやすい!!!Slow Request Excution とか、Slow Qury Executionなんかもみせてくれる。自動的にエラーをメールしてくれたりね。ZEND Studio というIDEをあわせて使うとライブでプロトタイプデバッグができちゃいます。お値段はたしか、プロフェッショナルで年間九千ドル弱、Studioで三百ドル弱ってとこかな?

ただひとつ、ここに問題があります。

それは、開発のローカル(ねこのはWindows)とプロダクションのドライバがことなること。はい。DB2 Connect が必要です。この情報を得るのに、結構な時間がかかった。だって、IBMさんとZENDさんは仲良しだから、お互いに商品売りたいものね。その上、このDB2 Connect、数年前まで、無料やったんとちゃうかな?↓これ、2012年の情報です。でも、まだこのままだと思います。DDB2 Connect、これが意外ににたかぁーい!!!ほとんどの会社がAS400買ったときの付属のSystem i Access にたよってるんじゃぁないでしょうか!?ねこんとこもそうでした。。。あれはつらい戦いだったなぁ。。。でぇ!ここでこちら「ポッチ」と押してください。ねこはいま、アフィリエイトに挑戦しています。そりゃ、お金入ればうれしいに決まってます。でもね、結構ちまたで出回ってる「私はアフィリエイトで大金稼ぎました!」とか、「アフィリエイト、主婦でも簡単、お小遣いかせぎ!」なんてのを目にすると、「ちっ。。。」って思っちゃたんです。どれくらいの努力を加えたところで「簡単」とか「働かずに」とか定義できるレベルなのかと。みんな必死なんじゃないのぉ?でも、アフィリエイトの構造自体は大賛成です!!!だって、たったクリックするだけで、結果的に相乗効果で全ての人の利益が上がるってこと。お互いにクリックし合えばいいんですよね。意地悪心抜きでね。アフィリエイト、隔週ぐらいで結果アップしていきます。

おっと、話がそれました。

それでは、DB2が使えないSystem i Accessローカルマシーンから、データベースにコネクトしたい場合には、

iSeries Access ODBC Driver をつかいましょう!!!

そしてもちろん、ZEND for i では、DB2コネクトつかえます。AS400だからね。

次回、実際のドライバコネクションの部分を詳しくお見せします。。。アフィリエイト上がってなかったら、心折れちゃうかもですが。

 

読んでくれてありがとう! ねこでした。