Tech Lunch 2019-06-05

@naotty

Facebookのクローラー

UAが facebookexternalhit/1.1 でログが吐かれる。
ただ、アクセス数が大量なのでもはやDos攻撃かと・・
バズるはずがないページにも来るし・・ ブロックしたい・・ したい・・

「Sign In with Apple」、サードパーティーログイン採用の全アプリに義務化へ - CNET Japan

Cognitoでの認証も引っかかるのか気になるところ。

その他


@atomita

Sonicの紹介

高速、軽量を謳ったElasticsearchの代替softwareです
公式Libraryとしてphpのpackageがあるのも○
今後に注目

dot言語入門

先日、projectのpull requestにて図解で説明したほうが伝わりやすいと思って、dot言語をsvgに変換してくれるWeb Service(Gravizo)を使ったので、それを元に簡単にdot言語の書き方を紹介しました
が、tech lunch中にはrankでの並び替えが上手くいかずorz

 digraph G {
  graph [
    rankdir = LR
  ];

  left [shape = none, fontsize = 8];
  right [shape = none, fontsize = 8];
  left -> right [color = white];

  job [shape=box, height=2.75, width=1];
  emp [shape=box, height=1, width=1];
  area [shape=box, height=1.5, width=1];

  {rank = min; left; job;}
  {rank = same; right; emp; area;}
}

↑はpull requestに残してたものを掘り出してきました

Kroki!の紹介

Gravizo同様にテキストのdiagramを画像にしてくれるWeb Serviceです
こちらはdiagramをbase64に変換してURLに含ませるのが少々面倒ですが、対応しているdiagramが多いのが魅力


@jhonyspicy

Laravelパッケージ開発のテスト

Laravel 5.8 パッケージ開発

Laravelのパッケージ開発時のテストにOrchestral Testbenchが便利です。 こんな感じにパッケージ開発用の環境でLaravelの関数や機能を使ってテストができます。

<?php
/*
 * 雰囲気だけ伝わればいい的なコードですので
 * 実際は動作しません。
 */
class SomethingTest extends \Orchestra\Testbench\TestCase
{
    use RefreshDatabase;

    protected function setUp(): void
    {
        parent::setUp();

        $this->withFactories(__DIR__ . '/path/to/factory');
    }

    /**
     * @param \Illuminate\Foundation\Application $app
     *
     * @return array
     */
    protected function getPackageProviders($app)
    {
        return [
            // テスト用のプロバイダやパッケージで使うプロバイダも登録できます。
            SomeProvider::class,
        ];
    }

    /**
     * configの値を書き換える。
     *
     * @param \Illuminate\Foundation\Application $app
     */
    protected function getEnvironmentSetUp($app)
    {
        // テストようにconfigの値をデフォルトから変更できます。
        $app['config']->set('database.default', 'testdb');
        $app['config']->set('database.connections.testdb', [
            'driver' => 'sqlite',
            'database' => ':memory:',
        ]);

        ...
        ...
        ...
    }
    
    /** @test */
    public function someTest()
    {
        // factoryやモデルも使えます。
        $user = factory(User::class)->create();

        $this->assertTrue(true);
    }
}