Large Display Size Middle Display Size Small Display Size

2017 年 5月 の日記






2017/5/23(火)

以下はメールなどのデジタルメッセージ(そういう言葉はありませんが私はコンピューターに打ち込んで送受信するメッセージをそう呼んでいます)で、『自分は嫌われていてメールができない…』と思っているような人の悩みを解決しようと思って作ったアドバイスです。

私自身のためではなく、私の家族のために作りました。歳を取ってからデジタルメッセージを始めて、うまくいかず、悩んで心を痛めて老人ボケ(脳の細胞の減少)を促進してもしょうがないでしょう、と思い。自分が悩むのは構わないが、親がそんなことで悩むのは見ていられません。

17/05/23(火) 22:33:58

デジタルメッセージで嫌われる人や、嫌われていると思っている人は多い。
デジタルメッセージとは、メール、チャット、ツイッター、ラインなどです。
せっかく書いたメッセージに返事がない。
私をボイコットしている?
誰でも自分を避けられることほどつらいことはありません。
どういうメッセージを書いたら相手は返事をくれるのだろう?

※以下の方法は17/05/23(火) 現在、そんなに多くの実績があるわけではありません。
 ただ、私自身、昔からこの点について悩んだり、一般的な問題として考察してきたことです。

***

”相手が得するメッセージだけを送る。”

たとえば、どこかへ旅に出かけた場合、
旅先の景色の写真を「こんな場所に来たよ」と、相手に送る。
相手にとっては、へぇ、と思い、なんらか返事を返しやすい。
へぇと思うことが相手にとっての得。
つまり相手は、写真を見ることであなたがその場所に来ていると想像してちょっと楽しめるのだ。

”映画館へ行くため、バスに乗って移動中。映画は「マリアンヌ」を観ようと思います。面白くなくても良しとします。”

これは2017年2月に私が不特定多数へ向けて書いたツイッターのメッセージ。
小学生時代の友人から返事をもらいました。
このメッセージに写真は付けませんでしたが、
友人は「自分の友達が今こんなことをしている」と楽しめたのではないかと思います。


また、もっと具体的な例として、今、ツイッターでメッセージを作って送ってみました。
相手は不特定多数で、内容は私が先日観た映画の紹介です。
自分ではなく、相手が得するようなつもりで、メッセージを書きました。

”iTunesで映画を観ました。「アナザープラネット(字幕版)」空に突如として現れた惑星。その惑星は地球とうり二つで別の自分が存在している。運転中に惑星を見ようとして人身事故を起こす主人公。自分の身を隠して被害者と仲良くなっていくが…”
(メッセージに加え、その映画へのリンクを付与)

このような内容なら相手は紹介された映画を「どれどれ」と思って観るかもしれず、観たら感想など返事をくれるかもしれません。
相手はあなたと同様、どんな番組、どんな映画が面白いのか探しているので、相手にとって得な情報なんです。


”相手が得するメッセージだけを送る。”
気を付けることはそれだけ。
試しにやってみましょう。


***

その他

これもツイッターです。

”ちゃんと逮捕されて良かった…。
金塊の売却益 大半を会社役員が手にしたか | NHKニュース”

福岡市で7億円相当の金塊が盗まれた事件で、その犯人たちが捕まったというニュース。
そのニュースを読んで、心に浮かんだ言葉を、シンプルにそのままツイッターに書いて送ったら、見知らぬ人にリツイート(自分の気に入ったメッセージ(この場合、”ちゃんと逮捕されて良かった…。”という私のメッセージ)を仲間にも教えてあげるしくみ)されました。

心の中のそのままの言葉は、相手に共感を与えるんです。
自分の心の中をそのまま言葉にするのはちょっとコツが必要ですが…。

2017/5/19(金)

今月の右上画像は、寄せては返す波です。

もとはRPGのマップチップの波打ち際をアニメーションで簡潔にリアルに描いたら見栄えするだろうと思っていたもので、今回試しに作ってみました。

計算はsin関数を使っています。

このファイル: cgi-bin/prj/20170518-javascript/波/javascript.html

<html lang="ja">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>untitled script</title>
<script>

function $( id ) { return document.getElementById( id ); }


var bits = new Array();
var canvas;
function onloadx() {
canvasEL = $( "canvasID" );
canvas = canvasEL.getContext( "2d" );

swidth = canvasEL.width;
sheight = canvasEL.height;
centerY = sheight / 2;

bitmax = 20;
bitwidth = Math.floor( swidth / bitmax );
stp = 0.05;
	
//theta add by setInterval()

images = new Array();
for( var i = 0; i < 3; i++ ) {
img = new Image();
img.src = "図" + ( i + 1 ) + ".png";
images.push( img );
}

for( var i = 0; i < bitmax; i++ ) {
var bit = new Object();
bit.dx = i * bitwidth;
	
//dx is draw position x
bit.theta = 0.1 * i;
bits.push( bit );
}

timerID = setInterval( "run()", 75 );
}
function run() {
var changeImg = false;
for( var i = 0; i < bitmax; i++ ) {
var bit = bits[ i ];
var backKaesu = bit.kaesu;
bit.kaesu = bit.theta > 3.14 / 2 && bit.theta < 3.14 * 1.5;
bit.theta += stp * ( bit.kaesu ? 0.8 : 2 );
//check.
if( bit.theta > 6.28 ) {
bit.theta -= 6.28;
}
bit.dy = Math.sin( bit.theta ) * 100;
if( bit.kaesu && bit.kaesu != backKaesu ) {
bit.dy2 = bit.dy + 16;
if( i == 0 ) changeImg = true;
}
bit.dy2 -= 1;
}
if( changeImg ) img = images[ Math.floor( Math.random() * 5 ) ];

draw();
}
function draw() {
canvas.fillStyle = "rgb(233,221,175)";
canvas.fillRect( 0, 0, swidth, sheight );

//砂浜の湿り
for( var i = 0; i < bitmax; i++ ) {
var bit = bits[ i ];
canvas.fillStyle = "rgb(213,189,101)";
canvas.fillRect( bit.dx, 0, bitwidth, centerY + bit.dy2 - 8 );
}

//落ちもの
if( img ) canvas.drawImage( img , swidth / 2, sheight / 2, 64, 64 );

//波
for( var i = 0; i < bitmax; i++ ) {
var bit = bits[ i ];
//海水
canvas.fillStyle = "blue";
canvas.fillRect( bit.dx, 0, bitwidth, centerY + bit.dy );
//泡
var awasize;
if( bit.kaesu ) {
if( bit.dy > 64 ) {
var rate = ( bit.dy - 64 ) / 64;
awasize = 16 + 16 * rate;
} else {
awasize = 16;
}
} else {
awasize = 32;
}
canvas.fillStyle = "white";
canvas.fillRect( bit.dx, centerY + bit.dy - awasize / 2, bitwidth, awasize );
}
}


</script>
<style>
</style>
</head>
<body id="bodyID" onload="onloadx();">
<canvas id="canvasID" width="800" height="256" style="
border
	
:
	
solid 1px black;

">
there is no canvas.
</canvas>
</body>
</html>

 新しいウィンドウで実行  [小WINで表示]

2017/5/16(火)

下記に掲載するスクリプトは、私が作った(今のところ)とても気に入っているスクリプトです。

RPGの戦闘やイベントの実行のプログラムの大まかな流れの試作です。

JavaScriptやC言語など、どのプログラミング言語も、A,B,Cそれぞれの処理を順に実行するにはA(); B(); C();のように順に書けば実行されます。

しかし、もしBが3秒間のアニメだとしたら、どうプログラムすればいいのかという問題です。

たとえば、RPGの戦闘で、「モンスターがあらわれた!」と一文字ずつ表示して、そのあとにプレイヤーのコマンドを待つような場合です。

A(); B(); C(); と書いてしまうと、一気にすべて実行されてしまいます。アニメの部分は時間で制御して、そのアニメが終わったら次の処理に移る…、そのような動きはなかなか難しく、以下のスクリプトが解決の1つです。

暫定的に「できた」と思ったところなので、実際使い始めるともしかしたら以下のスクリプトでもだめかもしれないのですが。。とりあえず、これでいけるかなと思っています。

このファイル: cgi-bin/prj/20170516-最近一連のRPGスクリプト/20170517/javascript.html

<html lang="ja">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>untitled script</title>
<script>


function $( id ) { return document.getElementById( id ); }

//アニメのリスト(複数アニメの同時実行に対応している)
var anms = new Array();
	


//次に実行するゲームイベントの命令
var progInst;
			



//プログラムの開始
function onloadx() {
progInst = "first";
run();
}


//「ゲームループ」のように実行される関数
function run( skipAnm ) {
var doProg = true;

//アニメ実行部
if( ! skipAnm ) {
for( var i = 0; i < anms.length; i++ ) {
var anm = anms[ i ];
//check.
if( anm.end ) continue;

//現バージョンは、文字表示のアニメのみ
var letter = anm.src.substr( anm.cnt, 1 );
$( "testID1" ).innerHTML += letter;

anm.cnt ++;
//check.
if( anm.cnt >= anm.max ) {
$( "testID1" ).innerHTML += "<BR>\n";
anm.end = true;
}
//check.
if( anm.doWait ) doProg = false;
}
}

//ゲームイベント実行部(switch構文で実装。※C言語などコンパイラ言語ではこの方法は使えない)
if( doProg ) {
switch( progInst ) {
case "first":
message( "モンスターが現れた!" );
progInst = "loop";
break;
case "loop":
alert( "loop" );
progInst = "test1";
break;
case "test1":
alert( "end" );
return;
}
}

timerID = setTimeout( "run()", 300 );
}


//メッセージのアニメ作成(anms配列の1つの要素作成)
function message( st ) {
var anm = new Object();
anm.src = st;
anm.cnt = 0;
anm.max = st.length;
anm.doWait = true;
anms.push( anm );
}


</script>
<style>
#testID1 {
}
</style>
</head>
<body id="bodyID" onload="onloadx();">
<div id="testID1" style="
background-color
	
:
	
salmon;

border
				
:
	
solid 2px black;

position
	
:
	
absolute;

left
		
:
	
100px;

top
			
:
	
100px;

width
		
:
	
100px;

height
		
:
	
100px;

">
</div>
</body>
</html>

 新しいウィンドウで実行  [小WINで表示]

2017/5/6(土)

Wi-FiタイプのiPadでezwebメールを受信する方法です。

17/05/04(木) 14:10:30

ケータイの暗証番号をauショップで聞いた。
ケータイにてauID登録
※暗証番号がわからないとauIDの登録ができない

iPad→Windows PC→auスマートホン→auネット 接続を行う。
各接続の説明
iPad→Windows PC
			
Wi-Fi接続

Windows PC→auスマートホン
	
auスマートホンのテザリングでWindows PCをネットにつなげる

auスマートホン→auネット
	
auスマートホンの携帯電話としてのインターネット接続。


※iPadでezwebメールを受信するにはauネットからアクセスしている必要があるらしい。
※一度受信できたら、後はauネットである必要はないです。

以下の作業の参考: https://www.firstlogic.co.jp/blog/lab/negi/1979

管理者としてcmd起動

netsh wlan set hostednetwork mode=allow
netsh wlan set hostednetwork ssid=testap
netsh wlan set hostednetwork key=0123456789 keyusage=persistent
netsh wlan start hostednetwork

auスマートホンにて EasyTether 起動
※EasyTetherはテザリング契約なしでテザリングを行えるAndroidアプリです

Windows PCにて

EasyTether起動 connected 確認
ネットワークと共有センター を開く
(画面左側の)アダプター設定の変更
イーサネット2 EasyTether Network Adapter を右クリック>プロパティ
※イーサネット2 の2の数字部分は環境により異なる。
共有 タブ
ネットワークのほかのユーザーに..接続を許可する にチェック
ホームネットワーク接続 プルダウンメニュー>ローカルエリア接続*14 を選ぶ。
※ローカルエリア接続*14 の*14の数字部分は環境により異なる。

iPadにて

Wi-Fiの接続先を、testap にする。
iPadでインターネット接続できることを確認する。

【iPad】iPhone / auスマートフォン / auケータイでご利用中のEメール(@ezweb.ne.jp)の設定・変更
https://www.au.com/support/faq/included/id11317768/

以降、この手順通りで成功した。




ページ制作 homepage6047



ページの上端へ (もくじ開く)