モノラルログ

マツオ ( @matsuoshi / monaural.net ) のざっくりしたブログです

無料でデータ通信できる(らしい) donedone に加入した

いわゆる格安SIM (MVNO), ビッグローブが新しく立ち上げた "donedone" に加入した

www.donedone.jp

特徴的なのは、0円で低速 128kbps を50GB使える、という「エントリープラン」があること。さっそく申し込んでみました。 (なお申込み多数につき、これを書いている2021年7月9日時点ではエントリープランの新規受付は一時停止中らしい)

k-tai.watch.impress.co.jp

2日後に SIMカード到着。早い。

ふつうにスマホに挿して、APN は biglobe のものを設定すれば使えました。特に迷うところなし。

これで低速だけど、無料で月50GBのデータ通信をゲット。にわかには信じがたい。

肝心の使い心地は、ごめんぜんぜん外に出てないのでまだわからん。128kbps だと、テキストのやりとりくらいが主なんだろうなあ。

昔 OCN モバイル ONE を使っていたことはあって、それが低速制限時は 200kbpsでした。その場合でも、Twitter 的なテキストのやりとりなら問題なし。インスタやラジオ再生は、ちょっと待てば使えなくもない。Googleマップはしんどい。動画は最初からあきらめ。くらいの感触でした。128kbpsはそれ以下になるわけで、まあだいぶ割り切りはいりそう。ないよりはいいけど、みたいな。

楽天モバイルと組み合わせて毎月0円運用できるのか

そういえば、楽天モバイルはデータ1GBまでなら毎月無料、通話も無料だった。

これに donedone を追加すれば、通話も通信も毎月無料で運用可能ってことになるのか。まあ初期費用系はかかるけど、すごい時代だな。若干やりすぎ感もある。というか、こういう無料サービス系の持続性ってどうなんだろう、というのは気がかりではありますね。donedone の場合、今後は使いたいときに高速通信が使えるようなオプションチケットを販売していくそうです。適度にそういうの使いつつ、長くサービスが続くといいけど、まあ楽しみながら当面試していきます。

PHP でシステムのコマンドを実行する関数の種類を調べた

PHP でサーバのコマンドを実行する関数ってどれくらい種類があるのか、調べる機会があったので、そのメモです

system()exec() が有名かと思いますが、結構種類が多かった……!

  • exec
  • passthru
  • pcntl_exec
  • popen
  • proc_open
  • shell_exec
  • system
  • 実行演算子

しかし多いな…… とりあえず8種類か。

参考にしたのは PHPのドキュメントのこちら。

www.php.net

実行演算子は関数ではなくて、 ``` で囲んだ文字列を実行できるというもの。強そう (危険そう)

<?php
$output = `ls -al`;
echo "<pre>$output</pre>";

www.php.net

また、pcntl_exec と実行演算子は、前述のドキュメント「システムプログラムの実行」一覧には載っていません。この 8種類というのも自分調べなので、まだ実行させる関数は他にもあるのかもしれない。わからない。

たとえばセキュリティ、OSコマンドインジェクションの調査をするとかなら、可能性としてはここらの関数をひととおりチェックする必要があるということかな。

module.exports されていない関数を rewire でテストする

JavaScript + jest で古いコード、module.exports されていない関数をテストしたかったのですが、rewire というのを使えば可能でした、というメモ

たとえばこんなコード

function privateSum(a, b) {
  return a + b
}

とだけ書かれたファイルがあるとします。この後に

module.exports = privateSum

ってされていれば、テストコードから import すればいいだけなんですが、export されていないので外部から privateSum関数にはアクセスできません

rewire

ここで rewire というライブラリをかませます

github.com

rewire, かなり昔からあるライブラリっぽい。これを使って、こんな風にテストを書くことができます。

const rewire = require('rewire')
const myModule = rewire('../src/private')

test('exported function', () => {
  const sum = myModule.__get__('privateSum')
  expect(sum(1, 2)).toBe(3)
})

まず rewire を requireし、その rewire を使って対象のソースコードを読み込みます。

そんで

  const sum = myModule.__get__('privateSum')

この __get()__ というメソッドで、export されていない関数を参照できるようになるという具合。あとは普通に呼び出してテスト可能。

べんり。

モック化にも使える

__set()__ というメソッドもあり、対象の関数や変数を差し替えることも可能でした。なのでテスト時のモック化なんかにも使える。

べんり。


サンプルこちら

github.com

PhpStorm のフォルダ単位の diff ビューアーを、コマンドラインから起動

PhpStrom の、フォルダ単位の差分表示機能

見やすくて助かってるんですが、この画面って CLI から起動できるんですね、しらんかった

pstrom diff <path_1> <path_2>

でいけるっぽい

f:id:matsuoshi:20210514103611p:plain

参考こちら

pleiades.io

リモートでの意思決定/合意の工夫として miro を使ってみた

合意の段階

書籍「アジャイルコーチング」の「合意を形成する」の章で出てくる「合意の段階」

なにか意思決定をする場面において、賛成や反対は、1か10かに分かれるとは限りません。だいたい途中に段階があるものです。「条件つきで賛成」とか、「やや反対」とか、「絶対反対」とか。

f:id:matsuoshi:20210414133649p:plain

それを見えるようにするものとして、この本では「合意の段階」というものが紹介されています。この図のように賛成〜反対を 5段階に分けて、自分の考えがどこらへんに当たるか、各自にチェックを入れてもらうような方法。

他にも「拳から5本指 (5 fingers)」という、0〜5本の指をみんなで出して意思を示す方法とか、Lean Coffee などで使われるサムズアップ/ダウン 👍 👎 の方法とか。せーの、で同時に親指を出してもらったりする感じですね。

全員同席でやるなら、このへんのやり方はお手軽です。

リモートでこれをやる

リモートの場合はどうしよう。特にカメラ ONを強制していない場合。

カメラOFF の状態でも、こんな感じの意思決定方法を試したいなということで、miro でひと工夫してみました。

f:id:matsuoshi:20210414134442p:plain

まあ、miro 使ったことある方なら ↑ で一目瞭然だと思うのですが、miro って全員のカーソルが表示されるじゃないですか。

それを使って、「せーの」でカーソルで指し示してもらう方法です。

めちゃシンプルですし、みんなのカーソルが一斉に動くさまは、意外と楽しいですよ。

f:id:matsuoshi:20210414134650p:plain

サムズアップ 👍 サムズダウン 👎 もこんな感じで。