強まっていこう

あっちゃこっちゃへ強まっていくためのブログです。

Redux と React hooks どっち使ったら幸せになれるの?

結論としては React を使わない事が一番の幸せへの道。

React ファンボーイはそっ閉じの方向で、以下読むべからず。

簡単なものを作るのにもアホほど時間がかかるので膨大な予算が無駄に取れる贅沢プロジェクトで暇つぶししたい場合のみに使うと良い。

表示速度を上げるにもアホほど労力と精神力と工数を吸い取られ続けるし、大人数でやればやるほどダメになり表示速度と開発速度が共に劇的に遅くなって行く。

そもそもこんなもの Facebook みたいに1画面で多人数から飛んでくるデータをビシバシ表示していろんなやり取りするものの為に作られたのであって、そんなイカツイウェブアプリを作らなきゃならない状況が一般企業にどれほどあるか?そしてそんな無駄な金をドバドバ出せるところがどれほどあるか?って話。GAFA の F だよ?やつらは。

予算かけずさっさと動くものを作れ、バグ出すな、表示速度上げろ、とか簡単に言い出す連中が大半を占める中、使っちゃ駄目なんだってこんなもん。理想と現実をちゃんと見るべし。

やむなく涙ながらにどちらかを使わざるを得ない場合はしょうがなく React hooks を勧める。

wolfbash.hateblo.jp

上のエントリーで貼り付けたコードと、以下に示す React hooks のコードを見比べて欲しい。

続きを読む

ガタガタ抜かさず Redux の使い方だけ簡単に教えろ!

決して、React や Redux の使用を推奨するものでは無い事をご了承願いたい。

React/Redux なるものをヨダレ垂らした noob エンジニアがググった結果がいっぱい出てくる = 流行っている、と言う無邪気な理由だけで導入。
案の定大トラブルとなり、そいつは抜け、火消しとして入ったおっちゃん達が「なんっっじゃこりゃ・・・」と愚痴りつつ調べてもゴミみたいな内容しか HIT せず「こんなもん時間のありあまった暇人が使うもんだろ!こっちは仕事さっさと終えて子供とスマブラせなあかんねん!ぶち転がすぞ!!!」
と発狂しないようにするための処方箋(主に俺向け)。

これらは大量のエンジニアが暇を持て余した結果、現場に故意に混乱をもたらし知ってるやつがドヤ顔で相手を煽るための代物であり、決して使うべからず。
決して幸せにはなれない。多くの FB エンジニアもこっそりそう思っているはず。互換性の無さでエンジニアを殺しに来る Angular と Vue よりマシかな?程度。
嫌々ながら使うハメになってしまった可愛そうな人向けエントリーなので React/Redux ファンボーイは帰れ。

前置きが長い。本題に移る。React はわかっている事前提。

Redux の基本イメージは、Component に status と dispatcher をまとめてくっつけるもの。
status は Component をまたいで変化可能なグローバル変数的なもので、その status を変えるのが dispatcher だと思えば良い。
こう言うものを props に1つ1つ attribute として渡してると多層のコンポーネントになった時発狂するのでそれを回避するのが主目的。
くっつけたものはすべて props 経由で取得。

オブジェクトにオブジェクトをまたぐグローバルなメンバー変数とプライベートなメソッドをつける狂気的なものだと思ったら理解しやすい。
何じゃそりゃ、破綻するだろそんなもの、と思うかもしれないがその通りでちゃんとやらないと破綻する。

たったこれだけの事をやる代物に理解を阻害する素敵要素がふんだんに散りばめられている。

まずコードを見てもらいたい。

続きを読む

おすすめ芸能人・有名人 YouTube チャンネル

著名人が YouTube の高い収益性に目をつけなだれ込みつつあります。
そんな中オススメ出来るチャンネルを紹介してみようと思います。

中田敦彦

www.youtube.com

オリラジあっちゃんがやっているとてもためになるチャンネルです。歴史から現代社会、社会問題からテクノロジーまで幅広いネタで講義を行っています。
カジサックのアドバイスから始めて、ブレークしたチャンネルです。

キングコング梶原

www.youtube.com

ここ最近の芸人・有名人ユーチューバーの流れを作ったのはこの人だと言っても過言ではないです。

インパルス堤下

www.youtube.com

カジサックの中でサック氏として無理やり家に押しかけられ料理を作らされ、さえこにグラタンが良いと毎度言われる堤下氏のチャンネルです。
車周りで色々なトラブルがありましたが、カジサックに支えられ今復活中です。

よいこ

www.youtube.com

よいこの2人がらしい、グダグダまったりなチャンネルです。ライブ配信が中心ですね。ぼーっと見るには最高のチャンネルでしょう。

田代まさし

www.youtube.com

あの!田代まさしのチャンネルです。薬物の話から刑務所の話までいろんな話をしてくれます。
COOLSの佐藤氏と共にブラザーブラザー言っていますが話は殆ど噛み合っていません。

霜降り明星

www.youtube.com

霜降り明星が忙しい中チャンネルを毎日更新しています。漫才100本と単発ネタがあるのですが、漫才の方はあまり・・・
粗品のパチンコ話が一番おもしろいです。ゲームとかも面白いですね。

ゴー☆ジャス

https://www.youtube.com/channel/UCXCknrYDQ2VlVxBnRWBnEFg:embed:cyte

ゴー☆ジャスがかわいい女の子達と毎日ゲームをしている姿を眺めるチャンネルです。

チョコレートプラネット

www.youtube.com

6秒クッキングと言う長田が雑に作ったものを松尾が食わされるコーナーが人気です。

でんじろう

www.youtube.com

でんじろう先生達がいろんな実験を見せてくれる子供大喜びチャンネルです。

里崎智也

www.youtube.com

WBC優勝の立役者の一人里崎氏が美人アナウンサーと共に野球論を語ったり裏事情を語ったりしています。

高木豊

www.youtube.com

おっさん懐かし大洋ホエールズスーパーカートリオの一人高木豊チャンネルです。
大物野球人がゲストで登場するので野球好きにはたまらないチャンネルです。

金村義明

www.youtube.com

金村らしく、毒吐きまくりです。

所ジョージ

www.youtube.com
所さんの趣味丸出しなチャンネルです。随分昔からやっておられます。
歌をやらずにプラモとかエアガンだけをやった方がチャンネル伸びると思うんですがね。

ナイツ土屋

www.youtube.com

ナイツ土屋氏がひっそりやっている消しゴムサッカーチャンネルです。

彼は、学校が終わって家にすぐ帰り飯風呂済ませたらずっと夜中までこれをやっていたらしく、20歳までヤバいハマり方をしていた模様。
大学で落研に入りお笑いに目覚め卒業したものの、熱意が復活気味でチャンネル解説に至ってしまっています。
またこれにハマると今度は芸人の方を卒業するかも、と本人の談。

ASUKA

www.youtube.com

WWE で大活躍している ASUKA選手のチャンネルです。
なんかどんくさいおねーちゃんだなーと知らない人は思うかもしれませんが、試合を見るとびっくりしますよ。
技の多さキレともに本当に凄い選手なんですから。
なんせ WWE 史上最長連勝記録(174勝)保持者ですし、あの世界一性格の悪い男鈴木みのるとも戦ってますしね。

トッカグン

www.youtube.com

もと自衛官コンビのチャンネルです。各国のレーションを試食するコーナーが人気です。賞味期限切れも気にせず食います。

船木誠勝

www.youtube.com

親日 -> UWF -> 藤原組 -> パンクラス 

と格闘路線へ突っ走った結果 FMW や DDT のリングへ上がり松竹へ入ると言う波乱の格闘人生を歩んでおります。
鈴木みのるも現在はすっかりプロレスプロレスしてますが、結局はプロレスこそが最強であり唯一無二の存在なんです。

ジャルジャル

www.youtube.com

ジャルジャルが真面目にコントをやっています。

メンタリストDaiGo

www.youtube.com

早口!(粗品)

かほなん

www.youtube.com

サバイバルアイドルです。お母さんと一緒に山登ったり一人キャンプをしたりしている可愛い子が見たいならチャンネル登録すると良いでしょう。

ミキ

www.youtube.com

ミキのチャンネルですが、VLOG です。やる気は全くありません。

キングコング

www.youtube.com

カジサックをやる随分前からコンビでやっていたチャンネルです。策士である西野氏がこれからはネットだと言う事でかなり早めからやってはいたのですがシモネタキツめでウケが悪く再生・チャンネル登録数共にあまり伸びていませんでした。

マスゲン

www.youtube.com

釣りガールズを3期まで結成し、なんとか女パワーでチャンネル登録者数を増やそうと頑張っているバス釣り芸人のチャンネルです。
出演者全員よしもとの芸人ですが、このチャンネルでしか見れないレアな方々ばかりです。

初級・既得権益とは?(メディア編) まとめ・早見表 - 上杉隆氏



N国の幹事長上杉氏が日本の腐った現状を作り出している根本原因であるメディアの腐敗についてわかりやすく語っています。

ざっとまとめてみました。
_______________________________________________________________________

クロスオーナーシップ - 特定資本が多数のメディアを傘下にして影響を及ぼすこと。
下表の横軸でクロスオーナーシップが結ばれている。

新聞 テレビ ラジオ 出版 インターネット チャレンジャー
読売 日テレ ラジオ日本 角川 ドワンゴ(ニコ動)
毎日 TBS TBS 講談社 ブロゴス 三木谷(楽天)
産経 フジ ニッポン・文化 扶桑社・小学館 ホリエモン
朝日 テレ朝 ニッポン・文化 幻冬舎小学館 Abema 孫正義(ソフバン)
日経 テレ東 InterFM
NHK NHK 立花孝志
MX TFM

電通共同通信時事通信は元々同じ会社(同盟通信社)。

同盟通信社から終戦(1945年)後に、一般報道部門が共同通信社、経済報道部門が時事通信として分離。

何もかもの大ボス = 電通

電通総務省より強い裏ボス出現 = YouTube

これらの既得権益に逆らうとメディアから全干しされる。これらから干された人間こそ本当の改革者。

既得権を保護すると権益だけが潤い国が衰退する。ギリシャ・ローマ時代から歴史が証明している。

日本の 2003年 の一人当たりの GDP は世界 2位。それが2018年には 27 位。もはや日本は先進国ではない。その現実を見せないようメディアが必死に隠している。

立花氏はこれらをぶっこわし、これらの権利を国民に返すのが目的。
_______________________________________________________________________

NHK職員->パチプロ->地方議員->区議会議員->参議院議員->辞職->参議院へ立候補

そんなハチャメチャ立花孝志氏のN国。

立花孝志氏は地方議員になる前からずっと見ていて電通周りの話やパチンコ周りの話をやたら詳しくしてくれるので気に入っていたのですが、この上杉氏もフクイチメルトダウン時からずっと見ている一人です。今やN国の幹事長ですからね。渡辺喜美氏もみんなの党時代に握手をしに行くほど応援をしていたのですが、熊手で爆死しました・・・。その渡辺氏とも組むと言うもう何でも有りっぷりで見ていて飽きないですね、ホントこの方々は。

よくもまぁこんな権力と戦う元気があるものだと感心しつつ自分は何も出来ないなぁと情けなくもなったりします。

なので、せめてまとめでも書くか、と書いてみたわけです。

世の中良い方向に変わって行って欲しいと本当に思います。じゃないとぶっ壊す前に国がぶっ壊れます、ガチで。

Rabbit MQ で RPC(チュートリアル 6 RPC)

今回はチュートリアル 6 RPC についてやっていきます。

まずは RPCのサーバ側です。引数で受けた文字列に日時をつけて返します。

rpc_server.js

#!/usr/bin/env node

const amqp = require('amqplib');
const my = require('./my.js');

async function main() {
  const a = getArgs();
  const conn = await amqp.connect(my.conf).catch(my.die);
  const ch = await conn.createChannel();
  await ch.assertQueue(a.queue, {
    durable: false
  });
  ch.prefetch(1);
  console.log('Waiting queue=%s', a.queue);
  await ch.consume(a.queue,
    req => {
      var msg = req.content.toString();
      var res = `${msg}(${new Date()})`;
      console.log('Response: %s', res);
      ch.sendToQueue(req.properties.replyTo, 
        Buffer.from(res), {
          correlationId: req.properties.correlationId
        }
      );
      ch.ack(req);
    }
  );
};
main();

function getArgs() {
  if (process.argv.length < 3) { usage(); }
  return {
    queue: process.argv[2],
  };
}

function usage() {
  const usage = `rpc_server.js QUEUE_NAME`;
  console.log(usage);
  process.exit();
}
await ch.consume(a.queue,
  req => {
    var msg = req.content.toString();
    var res = `${msg}(${new Date()})`;
    console.log('Response: %s', res);
    ch.sendToQueue(req.properties.replyTo, 
      Buffer.from(res), {
        correlationId: req.properties.correlationId
      }
    );
    ch.ack(req);
  }
);

req.properties.replyTo は、Caller 側に返すための Queue です。
correlationId は RPC のやり取り上で使う一意の ID です。Caller 側で作ります。

次に Caller 側です。

続きを読む

RabbitMQ で Topics (チュートリアル 5 Topics)

今回はチュートリアル 5 Topics をやっていきます。Topic と言ったって単にワイルドカードを使った部分一致で待ち受けできますよ、と言うだけです。

では早速 Receiver から。

sub_t.js

#!/usr/bin/env node

const amqp = require('amqplib');
const my = require('./my.js');

async function main() {
  const a = getArgs();
  const conn = await amqp.connect(my.conf).catch(my.die);
  const ch = await conn.createChannel();
  await ch.assertExchange(a.exchange, 'topic', {
    durable: false
  });
  const q = await ch.assertQueue('', {
    exclusive: true
  });
  a.routingKeys.split(',').forEach(async routingKey => {
    await ch.bindQueue(q.queue, a.exchange, routingKey);
  });
  console.log('Waiting exchange=%s, routing_keys=%s', a.exchange, a.routingKeys);
  await ch.consume(q.queue, 
    msg => {
      console.log('Received: %s', msg.content.toString());
    },
    {
      noAck: true
    }
  );
};
main();

function getArgs() {
  if (process.argv.length < 4) { usage(); }
  return {
    exchange: process.argv[2],
    routingKeys: process.argv[3]
  };
}

function usage() {
  const usage = `sub_r.js EXCHANGE_NAME ROUTING_KEYS(CSV)`;
  console.log(usage);
  process.exit();
}
await ch.assertExchange(a.exchange, 'topic', {
  durable: false
});

Exchange をタイプ topic で定義します。前回のコードとの違いはこれだけです。

Sender 側は前回のコードと何も変わりません。

続きを読む

RabbitMQ で Routing (チュートリアル4 Routing)

さて今回は本家チュートリアル 4 Routing をやってまいります。
Routing と言ったって Receiver 側で名前を OR で待ち受けれるだけと言う簡単な機能です。

pub_r.js

#!/usr/bin/env node

const amqp = require('amqplib');
const my = require('./my.js');

async function main() {
  const a = getArgs();
  const conn = await amqp.connect(my.conf).catch(my.die);
  const ch = await conn.createChannel();
  await ch.assertExchange(a.exchange, 'direct', {
    durable: false
  });
  const q = await ch.assertQueue('', {
    exclusive: true
  });
  a.routingKeys.split(',').forEach(async routingKey => {
    await ch.bindQueue(q.queue, a.exchange, routingKey);
  });
  console.log('Waiting exchange=%s, routing_keys=%s', a.exchange, a.routingKeys);
  await ch.consume(q.queue, 
    msg => {
      console.log('Received: %s', msg.content.toString());
    },
    {
      noAck: true
    }
  );
};
main();

function getArgs() {
  if (process.argv.length < 4) { usage(); }
  return {
    exchange: process.argv[2],
    routingKeys: process.argv[3]
  };
}

function usage() {
  const usage = `sub_r.js EXCHANGE_NAME ROUTING_KEYS(CSV)`;
  console.log(usage);
  process.exit();
}
await ch.assertExchange(a.exchange, 'direct', {
  durable: false
});

Exchange のタイプを direct にします。

a.routingKeys.split(',').forEach(async routingKey => {
  await ch.bindQueue(q.queue, a.exchange, routingKey);
});

bindQueue する時に、第3引数に対して待ち受ける routingKey を指定します。複数指定が可能です。

次は Sender 側。

続きを読む