底辺SE奮闘記

年収300万SEブログ

【Flutter・Android】実機デバッグでクラッシュする件

現象

タイトル通り、実機でデバッグしようとすると、

「問題が発生したため〜」

のような文言が表示されアプリが強制終了しました。

環境

解法

色々試したところ、下記変更で問題解消となった。

app/src/main/AndroidManifest.xmlから下記コード部分をコメントアウト or 削除

<meta-data
    android:name="io.flutter.embedding.android.SplashScreenDrawable"
    android:resource="@drawable/launch_background"
/>

【Laravel】ユニットテストで「Call to a member function connection() on null」と表示され失敗する

自分用メモ

環境

  • PHP 7.2.5
  • laravel/framework 7.24

現象

根本原因はよくわかっていないのですが、

php artisan make:test HogeTest --unit

で作成した、DB操作系テストが

Call to a member function connection() on null

と表示され失敗した。

失敗のコード

<?php
namespace Tests\Unit\Model;

use App\Model\HogeTest;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\DB;
use PHPUnit\Framework\TestCase;

class HogeTest extends TestCase
{
    use DatabaseTransactions;

    public function testExample()
    {
        HogeModel::insert([
            "hoge" => "ほげ"
        ]);
    }
}

成功のコード

<?php
namespace Tests\Unit\Model;

use App\Model\HogeTest;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\DB;
//use PHPUnit\Framework\TestCase;// こちらを削除
use Tests\TestCase;// こちらを追加

class HogeTest extends TestCase
{
    use DatabaseTransactions;

    public function testExample()
    {
        HogeModel::insert([
            "hoge" => "ほげ"
        ]);
    }
}

原因はよくわかっておりません。

【PHP・Laravel・Stripe】WebHookのシグネチャをSDKなしで確認する

表題の通りです。

環境

  • PHP 7.2.1
  • Laravel 5.8

コード

最小のソースコードを示しますので、ご自分の環境にあった形に修正を行ってください。

<?php
public function hoge(Request $request) {
    $params = explode(",", $_SERVER['HTTP_STRIPE_SIGNATURE']);
    $t = explode("=", $params[0])[1]; // タイムスタンプ
    $v1 = explode("=", $params[1])[1];// シグネチャ
    $content = $request->getContent();// HookBody
    
    $hookKey = "whsec~~~";//StripeのWebhookのページにある署名キー
    $hash = hash_hmac("sha256", $t.".".$content, $hookKey);

    if ($hash == $v1) {
        // 正常なWebHook
    } else {
        // 不正なWebHook
    }
}
        

以上です。

【JavaScript】Chart.jsで面グラフ(エリアグラフ)をプロットする

はじめに

Chart.jsはドキュメントも充実しており、とても便利なのですが、面グラフに関しては理解に苦労しましたので、こちらにメモとして残しておきます。

環境

  • Chart.js 2.9.3

基本HTML

HTMLファイルは下記のようになっているとします。

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>
</head>
<body>
    <div class="canvas-area">
        <canvas id="myChart"></canvas>
    </div>
<script>
//ここにスクリプトを書いていきます
</script>
</body>
</html>

面グラフ基本

基本的には下記の通りです。

面グラフは「下端データセット」と「下端データを参照するデータセット(上端データセット)」の二組からなります。

const ctx = document.getElementById('myChart').getContext('2d');
const myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: [
            1,2,3,4,5// 横軸の値
        ],
        datasets: [{
            data: [0,1,2,3,4],// エリア下端データセット
            fill:false,// エリア下端はfalseにしておくと良い
        },{
            data: [1,4,9,16,25],//エリア上端データセット
            //上端は下端の位置を設定する
            //以下の場合は1つ前を意味する
            fill: "-1",
            backgroundColor: 'pink',// エリアの色はこちらで指定する
        }]
    }
});

ソースないfillプロパティには下記の値が設定できます

意味
1,2,3,... 参照データセットの位置を絶対位置で指定する
"+1", "+2", "-1", "-2",... 参照データセットの位置を相対位置で指定する
"start", "origin" グラフ下端を参照
"end" グラフ上端を参照
false 塗りつぶさない(参照元のデータセットに指定すると良い)

面グラフと普通の折れ線グラフの共存

面グラフと折れ線グラフを共存させる場合は下記の通りです。一度わかってしまえば当たり前なのですが、煮詰まっている間は以外と分からないものです。

var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: [
            1,2,3,4,5
        ],
        datasets: [{
            data: [0,1,2,3,4],
            fill: false,
        },{
            data: [1,4,9,16,25],
            fill: "-1",
            backgroundColor: 'pink',
        },{// 普通に配列に追加するだけです
            data:[10,11,12,13,14,15],
            fill: false, //falseにしておかないと面グラフに見えますね
            borderColor:"skyblue"
        }]
    }
});

終了

結果は下記の通りになります

f:id:uma-no-kawa:20200826175157j:plain

【Xamarin】2020年4月16日現在 iOS13.4でGestureRecognizersが反応しない

解法は「Xamarinをアップデート」です。

正常動作を確認したバージョン

  • VisualStudio for Mac 8.5.3
  • Xamarin.Forms 4.5.0.530

現象

下記コードがiOS13.4で正常に動作しなくなる

<RelativeLayout.GestureRecognizers>
    <TapGestureRecognizer Tapped="OnButtonClicked"/>
</RelativeLayout.GestureRecognizers>   

2020年のエンジニア平均年収が600万円以上ってどこの世界線の話?

平均労働時間10時間超(自宅勤務を除く)残業代無し有給無しでここ数ヶ月土日も無い、年収300ないワイみたいな人もいるのに?

能力無い人には地獄な世界ですわ・・・。