kenjimorita のすべての投稿

フロントエンドエンジニア芸人/インド芸人/もりたけんじの武骨日記 ・NSC東京9期 東京湾に入港してくる貿易船の綱取りをしていた頃、先輩芸能人の運転手する。ビジネスホテルでフロントで英語ができなかった挫折を味わい、力を付けに1人でインドへ渡航した。帰国後世界から発信するためWeb技術をつけたくなり、専門学校へ通う。以後、プログラム言語JavaScriptの正直さに惹かれ 「フロントエンドエンジニア芸人」を極めるため日々奮闘中。現在はサイバーエージェントにジョイン

0428_029バーレーンといえばと聞かれたら縦列駐車と言っていいほどです。

バーレーンに限らず中東は日本のSVR車で溢れていて、人気なのが分かります。

多分石油が水より安い国ではいっぺんに給油したいからか、カッコいいからか大きな車が多くて、ファミリーカーやエコカー、スポーツカーというのは見ません。

あとひょっとしたらマッチョな男性がカッコいいイメージ像があるバーレーンでは車も大きくて力強い、ランクル等が人気なのかもしれません。

誰もが車を持てるような環境になった一方、駐車場が足りないのか、面倒なのか、料金が高いのか、

道路は縦列駐車で溢れています。

人々は駐車をする際、目的地周辺をぐるぐるまわり、空いてる縦列駐車できるスペースを探し、道路で他の後続車お構いなしに止めて、縦列駐車をし始めます。

その結果、その車が縦列駐車し終わるまで渋滞が引き起こされるわけですが、それには理解があるのか他の車はクラクション1つ鳴らさず寛容です。

このバーレーンでの事象はベトナムのバイク、インドのクラクションのような名物です。

 

スーパーマンのエナジードリンクUAEで見かけたエナジードリンクなのですが、

UAEに限らず中東ではそれがけっこういろんな種類売っていて、

なんでかって、多分ですけど、お酒があまり大々的に飲める環境にないからだと思うんですよね。

UAEとかオマーン、バーレーン、カタールもそんなにイスラムの規律が厳しくないのですが、飲み物といえば炭酸ジュースに走っている傾向がありました。

ぷは~っとしたい欲求があるのはどこの国も一緒なのですが、アルコールではないみたいですね。

炭酸ジュースの数は多かったです。

日本では健康的なお茶とか水とかが多いですが、

向こうは男社会なのでやはりこういうものが多いのではないかと思っています。

で、味なのですが、これが面白いぐらいレッドブルと一緒で、この他色々な種類のそれを飲みましたが飲むたびに「一緒!!」と突っ込んでいました。

結局この味に行き着くのでしょうね。

 

毎日床に近い所で寝てるし、
スマホと向き合う時間が多いからか

朝起きた時ハッ!としたんですけど、

寝ぼけながら
ツルツルの床に人差し指でやさしくタップしてた

何を決定したのだろう

// var str1 = 'にわにはにわにわとりがいる';
// document.writeln(str1.indexOf('にわ'));//0(先頭から検索)
// document.writeln(str1.lastIndexOf('にわ'));//6(末尾から検索)
// document.writeln(str1.indexOf('にわ',3));//4文字目から右方向に検索
// document.writeln(str1.lastIndexOf('わ',5));//4(6文字目から左方向検索)
// document.writeln(str1.indexOf('ガーデン'));//-1(不一致)

// var str2 = 'Wingsプロジェクト';
// document.writeln(str2.charAt(4));//sを抽出
// document.writeln(str2.slice(5,8);//プロジ(6~8文字目を抽出)
// document.writeln(str2.substring(5,8));//プロジ(6~8文字目を抽出)
// document.writeln(str2.substr(5,3));//6番目から3文字を抽出
// document.writeln(str2.split('s'));//Wing,プロジェクト
// document.writeln(str1.split('わ',3));//に,にはに,に(3つに分割)

// document.writeln('トップ',anchor('top'));//トップ
// document.writeln(str2.link('https://www.wings.mns'));
// document.writeln('10',sub());//10下付き文字
// document.writeln('10',sup());//10上付き文字

// document.writeln(str2.concat('有限会社'));//Wingsプロジェクト有限会社
// document.writeln(str2.length);//11(日本語も一文字と換算)

// //substring,sliceとsubstrの違い。前者は番目を返す。後者は番目から文字数を返す
// // substringとsliceの違い
// var str = 'WINGSプロジェクト';
// document.writeln(str.substring(8.5));//プロジ(6~8文字目を抽出)引数startと引数endをend+1、start-1文字目までを抽出
// document.writeln(str.slice(8.5));//空文字。入れ替えはしない

// var str = 'WINDOWプロジェクト';
// document.writeln(str.substring(5,-2));//WINDO(1~5番目を抽出)substringは-2を0とみなしend、startを交換するから0から5番目までを抽出
// document.writeln(str.slice(5,-2));//(5,9)になる。負の数は後方の文字数とみなす。-2は後方から3文字目、つまり9文字目slice(5,-2)はstr.slice(5,9)と同じ動作をする

// Arrayオブジェクト

// var ary1 = ['Sato','Takae','Osada','Hio','Saitoh'];
// var ary2 = ['Yabuki','Aoki','Moriyama','Yamada'];

// document.writeln(ary1.concat(ary2));
// //Sato,Takae,Osada,Hio,Saitoh,Yabuki,Aoki,Moriyama,Yamada 配列通しで繋げる
// document.writeln(ary1.join('/'));
// //Sato/Takae/Osada/Hio/Saitoh 第一引数で繋げる
// document.writeln(ary1.slice(1));//Takae,Osada,Hio,Saitoh Satoを削除
// document.writeln(ary1.slice(1,2));//Takae
// document.writeln(ary1.splice(1,2,'kakeya','Yamaguchi'));
// //Takae,Osada(置き換え対象の要素を取得)
// document.writeln(ary1);
// //Sato,kakeya,Yamaguchi,Hio,Saitoh(置き換え後の配列)

// document.writeln(ary1.pop());//Saitoh(削除した要素)

// 文字列を大文字にして','区切りで配列に格納して返す
// var target = 'aaa,bbb,ccc,ddd';
// var target2 = target.toUpperCase();
// var arry = target2.split(',');
// // alert(arry.length + arry);

// var str4 = 'aaa,bbb,ccc,ddd';
// var uper = str4.toUpperCase();
// var arry4 = uper.split(',');
// // alert(arry4);

// //A もし文字列の最後の部分が,だった場合それを抜いた文字列を抽出する
// var str = 'aaa,bbb,';
// if(str.substring(str.length -1) == ','){
// var s = str.substring(0,str.length -1);
// // alert(s);
// }
// var str2 = 'ddd,ccc,';
// if(str2.substring(str2.length -1) == ','){
// // alert(str2.substring(0,str2.length -1));
// }
// var str3 = 'ccc,gggm,';
// if(str3.substring(str3.length -1) == ','){
// // alert(str3.substring(0,str3.length -1));
// }

// //indexOfメソッドとsearchメソッドの違い//
// //indexOfメソッドの引数には正規表現は利用できませんが、serch()メソッドでは正規表現を利用した検索が可能
// var r = 'aaa,bbb,ccc';
// //indexOfは正規表現が使えないので'-1'になる
// // alert('indexOf:' + r.indexOf(',.*,'));
// //serchは正規表現が使えるので'3'になる
// // alert('search:' + r.search(',.*,'));

// // 検索文字が何番目にあるか、ないかの判定
// var str5 = '1234567890abcdefghijk';
// var result5 = str5.search('a');
// if(result5 < 0){ // // alert(',はみつかりませんでした'); // }else { // // alert('aは' + result5 + '番目にあります'); // } // //配列を文字列に型判定して変換 // var arry6 = new Array('aa','bb','cc'); // var aryString = arry6.join('/'); // // alert(typeof aryString + ':' + aryString); // // 配列要素の追加/取り出し(pop/push、LIFO(Last In First Out:スタック(後入れ先出し処理))) // var ary1 = new Array('aa','bb','ccc'); // ary1.push('ddd'); //末尾にdddを追加 // document.writeln(ary1 + '
'); //aa,bb,ccc,dddになる
// var pop1 = ary1.pop();//配列の末尾から要素を取得
// document.write(pop1 + '
');
// var pop2 = pop1.pop();
// document.write(pop2 + '
');
// //もう一度push()メソッドで配列の末尾に要素を追加
// //配列の末尾に'ee'を追加
// ary1.push('ee');
// document.write(ary1 + '
');//aa,bb,ccになる

これを頼んだはずなのに
バーレーンのカフェテリアのメニュー
これがきたよ

バーレーンのパフェ
バーレーンのカフェテリア

これに限らず、中東って結構「盛る」。
イメージをあげるために。
実態はしょぼいことがおおい!笑
物価はほぼ日本と同等なんだけどサービスが追いついてないから萎える!笑

できないならやるな!!笑
背伸びするな!笑

バーレーンの野菜売り
バーレーンの野菜売り

中東にいて現地の人の笑いを誘う方法がある。
こちらが「暑いね!?」って顔をくしゃくしゃにして手で仰ぐしぐさ。
たまらん!みたいに。

とりあえず目があった人に
「暑いね!!まいっちゃうよ!今日は何度なんだい?」
みたいにしてると
向こうは「そうだろう。そうだろう」と言ってゲラゲラ笑う。

したら次には必ず
「お前は坊主だからだ!笑 帽子被らないのかい?」って言われるんだけど
そうしたら
「俺も帽子被りたいよ。君のでいいから貸してくれよ」て頼む

すると相手は帽子を貸してくれる。
そしたら
わたしは帽子の匂いを嗅ぎ、鼻をつまみ、「臭いから返す!」とやる
「酷い匂いだ!暑いのより耐え難い!笑」とやる

周りでその2人の様子を見ていた群集もゲラゲラ笑う。

0428_126

JINSのPCメガネ

JINSのPCメガネ買ったよ。

なんか踏んでも2回まで無料で直してくれるんだって。
PCとかスマホとかから出る光を50%カットしてくれるんだって。

ほぼ一日していることになるね。

PC関係なくこれで外出たら変か聞いたら
外は外でUVをカットしてくれるんだって。

じゃぁもうずっとじゃん!
頼むから俺の顔にPCメガネを埋め込んでくれ!

最近彼氏ができた女性(30前半)が、彼氏の性豪ぶりに疲弊しているみたいで、
率直にお伝えすると、
一日10回もセックスをやるらしいのです。

彼氏は30代後半みたいで、
「君からのメールを受信しただけでち○ち○が勃っちゃう」と言われたらしいのです。

ゲラゲラ笑いました。
電波か!て

さらに
「僕は40になっても、50になっても、60、70になっても君とセックスやるよ!」て
言われたみたいなのです

そんなやついるのか!とまたゲラゲラ笑いました。

なんだか愛されていて微笑ましいのか、処理のはけ口なのかわかりません。

まだセックスが好きなだけか彼女が好きなのか判断できかねるので、
他にはなんて言われたの?と聞いたところ、

セックスの最中に「君を僕なしじゃ生きていけないようにさせてやる!」
て性奴隷宣告されたみたいです。

僕は目の前のパンケーキに乗ってるブルーベリーとホイップを絡ませながら「やめときなさい」と忠告しときました

シャールジャに風景
シャールジャにある世界珍遺産@UAE

ガイド本に載っていない面白い風景に出会ったとき
またどこかにあるそれを求めて足が進む

マスカット・ルイ地区@オマーン
マスカット・ルイ地区@オマーン

今後の向こう3週間
私にとっての最高の出来事も想像できるし
私にとっての最低の出来事も想像できる

もしそれが前者の場合、私にはそれをよりいいものに扱えるし、
もしそれが後者の場合、私にはそれをプラスに変える考えが備わっている

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>0611javascript</title>
<script type="text/javascript">
文字列の数値変換 ///////////////////
var n = '123';
document.write(Number(n));
document.write(parseFloat(n));
document.write(parseInt(n));

文字列を数値に変換した際の型判定////////
document.write(typeof('123' - 0));

文字列で渡されたメソッドををeval関数で解析///////
var str ='window.alert("evel関数")';
eval(str);
関数・三角形の面積(function命令文)

function sankaku(base,height){
return base*height/2;
}
document.write('三角形の面積' + sankaku(5,10));

関数・三角形の面積(コンストラクタ:書き方1)
var trailangle = new Function('base','height','return base * height/2;');
document.write('三角形の面積:' + trailangle(5,2));
document.write('<br />');
関数・三角形の面積(コンストラクタ:書き方2、new演算子を省略してあたかもグローバル関数であるように記述することも可能)
var trailangle = Function('base','height','return base * height/2;' );
document.write('三角形の面積:' + trailangle(5,2));

コンストラクタを使用するメリットは関数本体を文字列として定義できる
var param = 'height,width';
var formula = 'return height * width/2;';
var diamond = new Function(param,formula);

document.write('ひし形の面積:' + diamond(5,2));

//関数 三角形の面積:関数リテラルでの書き方
var triangle = function(base,height){
return base * height/2;
};
document.write('三角形の面積:' + triangle(5,2) );
function命令と関数リテラルは似ているが以下の違いがある
function命令 関数triangleを直接定義している
関数リテラル function(base,height){}と名前のない関数を定義した上で変数traiangleに格納している(宣言した時点で名前を持っていない「匿名関数、、無名関数」と呼ばれる)

 

グローバル変数とローカル変数
scope = 'Global Variable';
function getValue(){
scope = 'Local Variable';
return scope;
}
document.write(getValue());
document.write('<br />');
document.write(scope);

varを使わずに宣言された変数は全てグローバル変数とみなす
ローカル変数を定義するには必ずvar命令を使用する

スコープの解釈が変わる関数リテラルとコンストラクタ関数
var scope = 'Global Variable';
function checkScope(){
var scope = 'Local Variable';
var f_lit = function(){return scope;};
document.write(f_lit());
var f_con = new Function('return scope');
document.write(f_con());
}
checkScope();
javascriptは引数の和をチェックしない
function showMessage(value){
document.write(value);
}
showMessage();
showMessage('山田');
showMessage('山田','鈴木');
引数の妥当性をチェックする
argumentオブジェクトを使って与えられた引数の数と要求するそれの数が異なる場合にはエラーを返す
function showMessage(value){
if(arguments.length != 1){
throw new Error('引数の数が間違っています' + arguments.length);
}
document.write(value);
}
try{
showMessage('山田','鈴木');
}catch (e){//Errorオブジェクトを受け取る変数e
window.alert(e.message);//Errorオブジェクトのmassageプロパティ
}

 

引数の数が違うときに渡されるundefindを利用したデフォルト値を設定する
function traiangle(base,height){
if(base == undefined){base = 1};
if(height == undefined){height= 1};
return base * height /2;
}
document.write(traiangle(5));//省略できる引数は後ろの引数のみ

 

★高階関数
function arrayWalk(data,f){
for(var key in data){
f(key,data[key]);
}
}
var result = 0;
function sumElement(key,value){
result += value;
}
function showElement(key,value){
document.write(key + ':' + value);
// }
var ary = [1,2,3,4,16];
arrayWalk(ary,sumElement);
document.write('合計:' + result);
★を匿名関数で書き換える
function arryWalk(data,f){
for(var key in data){
f(key,data[key]);
}
}
var arry = [1,2,4,8,16];
arryWalk(
arry,
function (key,value){
document.write(key + ':' + value);
}
);

スコープチェーンの振る舞い
var y = 'Global';
function outerFunc(){
var y = 'Local Outer';
function innerFunc(){
var z = 'Local Inner';
document.write(z);
document.write(y);
document.write(x);
}
innerFunc();s
}
outerFunc()

 

クロージャ
function outerFunc(){
function innerFunc(){
alert('hello');
}
innerFunc();
}
outerFunc();

無名関数を宣言と同時に即実行
(function(){alert('fafafa')})();
関数を返す関数
function outer(){
var innner = function(){
alert('hellow');
}
return innner;
}
var f = outer();
f();
function outer(){
var x = 'ken';
return function(){
alert(x);
}
}
var c = outer();
c();

function outer2(){
var x = 1;
return function(){
alert(x);
x = x +1;
}
}
var s = outer2();
s();
s();
s();

</script>

</head>
<body>
<p>fafafa</p>
</body>
</html>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>0611javascript</title>
<script type="text/javascript">
コンストラクタで初期化する
var Member = function(firstName,lastName){
this.firstName = firstName;
this.lastName = lastName;
this.getName = function(){
return this.lastName + '' + this.firstName;
}
};
var men = new Member('kenji','morita');
document.write(men.getName());

動的メソッドを追加する

var Menber2 = function(lastname,firstname){
this.lastName = lastname;
this.firstName = firstname;
};
var men2 = new Menber2('kenji','morita');
men2.getName = function (){
return this.lastName + ':' + this.firstName;
}
alert(men2.getName());

 

プロトタイプオブジェクト
var Membber = function(firstName,lastName){
this.firstName = firstName;
this.lastName = lastName;
};
Membber.prototype.getName = function(){
return this.lastName + ':' + this.firstName;
};

var men = new Membber('fujimaki','takashi');
var men2 = new Membber('morita','kenji');
document.write(men.getName());
document.write('<br>');
document.write(men2.getName());
</script>
</head>
<body>
<p>fafafa</p>
</body>
</html>