May 14, 2021

世の中の変え方

  • 世の中のほとんどの人は、説明だけでは理解できない。
  • 世の中のほとんどの人は、頭ごなしに否定する。
  • 世の中のほとんどの人は、試しに使うこともしない。
  • 世の中のほとんどの人は、流行りさえすれば飛びつく。

だから、世の中の変え方は、世の中の人の感情に訴える

  • 自慢できるからやってみたい(プライドをくすぐる)
  • 家族の役に立てるから嬉しい(いい事していると自発性を促す)
  • 苦労していたことが楽になる(個人的な苦痛が減るという利益を示唆)

類まれなるプレゼン力とデザインセンスが必要。

スティーブ・ジョブズがいなくてもスマホの時代になっていましたか?

マクドナルドのシステム

マクドナルドのシステムを真似しない業界や企業は世界中どこにもありません。全部真似しています。

まとめ


1. ハンバーガー大学で中間管理層=支店長候補に対する、顧客支援、人事管理、店員訓練、機器管理、問題の円満解決に関する訓練を行う

利点 支店長が信用できれば会社は儲かる

2. 店舗内の選択肢のすべてを、文字ボタンでなくアイコン (図柄) ボタンにする

利点 色盲の外国人でも、英語が読めない外国人でも雇える

3. 変更が起きるたびに従業員を訓練し、本当にできるようになったかどうか、実際にさせてみて確認する

利点 常識が通用しない人でも雇える


May 13, 2021

phpでMySQL RDBのパスワードやWEBサービスのシークレットアクセスコードをより安全に保管する方法

phpでMySQL RDBのパスワードやWEBサービスのシークレットアクセスコードをより安全に保管する方法

RDBのパスワードやWEBサービスのシークレットアクセスコードを暗号化してphpソースコードに保管する。(平文のパスワードやアクセスコードはソースコードには絶対に保管しない)

暗号化 を簡単に行うには https://yaruben.sakura.ne.jp/openssl/php-aes.php?LANG=ja&INIT=1 を使う。

暗号化に用いた秘密鍵 "HIDDEN_KEY" を".ht_config.dat" という名前の隠しファイル(WEBブラウザから見られない、そしてGitHubソースコード管理サーバーに保管されない)に保管する。

暗号化したシークレットアクセスコード "ENCRYPTED_ACCESS_CODE" は、復号関数 my_decrypt() (以下参考) を用いて元のシークレットアクセスコードを求めてから使う。

Sample code to hide configuration.

The file "ht_config.dat" is hidden from WEB browser by Apache and won't be committed to GitHub.

% cat .ht_config.dat

<?php
define("HIDDEN_KEY", "xxxxtttttttttttttttttttxxxxxx");
?>

Sample code to decrypt an access code of another WEB service

<?php
...
require_once ".ht_config.dat";
function my_decrypt($key, $cipher_text)
{
    $c = base64_decode($cipher_text);
    $ivlen = openssl_cipher_iv_length("AES-256-CBC");
    $iv = substr($c, 0, $ivlen);
    $hmac = substr($c, $ivlen, 512/8);
    $ciphertext_raw = substr($c, $ivlen + (512/8));
    $original_plaintext = openssl_decrypt($ciphertext_raw, "AES-256-CBC", $key, OPENSSL_RAW_DATA, $iv);
    $calcmac = hash_hmac('sha512', $ciphertext_raw, $key, $as_binary = true);
    if (hash_equals($hmac, $calcmac))//PHP 5.6+ timing attack safe comparison
    {
        return $original_plaintext;
    }
    return false;
}
define("ENCRYPTED_ACCESS_CODE", "l59DIPIWOx1s6OOTKB7BonvDIUXGvHiHEmlyDamC8tNqlUM+QRFL+xbdLlodETt0Hr/QscCre6ZZTR5WhzCJV1PpGneh8yz8llmV/8DaErlbMHzVR7ToT0biWI5a1YtTAvt38URjhypdceRomyOrAE1PJtYMvaDk4DOXXTUMoMf8er1r6LFZ7H+SESJIZSLD");
$original_access_code = my_decrypt(HIDDEN_KEY, ENCRYPTED_ACCESS_CODE);
if ($original_access_code !== false)
{
    access_another_WEB_service($original_access_code);
}
...
?>