強まっていこう

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

おすすめ芸能人・有名人 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 側。

続きを読む

RabbitMQ でPub/Sub (チュートリアル3 Publish/Subscribe)

今回は本家チュートリアル 3 Publish/Subscribe です。これは何か?を簡単に言うと、ブロードキャストです。
今までの例では Receiver 側は Sender から送られた Message をどれか一つの Receiver だけで受けていましたが、これを複数の Receiver で受ける事が可能になります。

ではまず Receiver 側です。

pub.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, 'fanout', {
    durable: false
  });
  const q = await ch.assertQueue('', {
    exclusive: true
  });
  await ch.bindQueue(q.queue, a.exchange, '');
  console.log('Waiting exchange=%s', a.exchange);
  await ch.consume(q.queue, 
    msg => {
      console.log('Received: %s', msg.content.toString());
    },
    {
      noAck: true
    }
  );
};
main();

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

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

Exchange を定義します。Exchange については第1回の記事で少しだけ触れましたが、ここで改めて説明し直します。
基本的には Queue と同じですが違いは送受信方法や、名前に対して部分一致、OR などで受信が可能になります。
この Exchange には Queue を格納します。durable の意味は Queue と同じです。
そして Queue と同じように RabbitMQ 側に定義が残ります。一覧と削除は以下で可能です。

続きを読む

RabbitMQ でタスク処理(チュートリアル2 Work queues)

前回、単純なメッセージ送信を行いました。今回は本家チュートリアル 2 Work queues にあたる、タスク処理を行ってみます。タスク処理で大事なのはきちんとタスクが完遂されることです。なので、もし処理途中でプロセスが死んだ場合、他のプロセスがタスク処理を引き受ける必要があります。以下のコードでそれが実現できます。

worker.js

#!/usr/bin/env node

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

// worker の処理が正常終了した場合 ack でmsg を投げるとMQ 側からキューが消える
// それが行われずプロセスが死んだら他のワーカーがそのキューを処理する
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: true
  });
  console.log('Waiting queue=%s', a.queue);
  ch.prefetch(1);
  await ch.consume(a.queue,
    task => {
      var secs = task.content.toString().split('.').length - 1;
      console.log('Received: %s', task.content.toString());
      setTimeout(() => {
        console.log('Done');
        ch.ack(task);
      }, secs * 1000);
    }
  );
};
main();

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

function usage() {
  const usage = `worker.js QUEUE_NAME`;
  console.log(usage);
  process.exit();
}
await ch.assertQueue(a.queue, {
  durable: true
});

durable: true にするのは RabbitMQ が死んだ時でも残る Queue にするためです。
durable: false が指定された Queue がすでに存在する場合はその Queue を消す必要があります。

続きを読む