2017年4月30日日曜日

LinuxでAndroidアプリを実行するためのコンテナ「Anbox」

LinuxでAndroidアプリを実行するためのコンテナ「Anbox」 コンテナ技術を利用しているところが、新しい切り口ですね。

AnboxはAndroidオペレーティングシステムをコンテナに置き、ハードウェアアクセスを抽象化し、コアシステムサービスをLinuxに統合します。 すべてのAndroidアプリケーションは、他のネイティブアプリケーションと同様に、オペレーティングシステムと統合されます。





参考サイト
LinuxでAndroidアプリを実行するためのアプリ「Anbox」(マイナビニュース)

2017年4月29日土曜日

高速、超軽量コンテナOS「RancherOS」

高速、超軽量コンテナOSで、Dockerコンテナに特化した「RancherOS」がリリースされたとのこと。

システムサービスはDocker Composeによって定義され、cloud-initを使用して自動的に設定され、管理上の負担を軽減します。 不必要なライブラリとサービスが排除され、コンテナホストオペレーティングシステムの更新、パッチ適用、および保守の手間が最小限に抑えられます。





参考サイト
Dockerコンテナに特化した「RancherOS」リリース(Think IT)

2017年4月23日日曜日

拡張現実(AR)をブラウザ上で実現できるJavaScriptライブラリ「AR.js」

拡張現実(AR)をブラウザ上で実現できるJavaScriptライブラリ「AR.js」 確かに、映像を見る限り、軽快ですねぇ。面白い。







参考サイト
Web上で軽量・高速に動作するARツール「AR.js」(GET AR)
VR(バーチャルリアリティ)とAR(拡張現実)の違い(PANOPLAZA)
AR.js: Efficient Augmented Reality for the Web(UploadVR)

2017年4月22日土曜日

Ubuntuで「fish」シェル

Ubuntuで「fish」シェルです。お遊びで、ちょっと試そうと思い、インストールしてみたのですが、気に入りました(笑)。コマンドの補完が、最高に素晴らしいです。しばらく使ってみることにします。

インストール
$ sudo apt-add-repository ppa:fish-shell/release-2
$ sudo apt-get update
$ sudo apt-get install fish



参考サイト
にわか管理者のためのLinux運用入門 [70] 便利シェル「fish」を使う(IT Search)

2017年4月21日金曜日

Laravel5.4で、CSVダウンロード

Laravel5.4で、CSVダウンロードです。ストリームのレスポンスを返すようにすると良いらしい。書き方が洗練されている感じがします(笑)。

return response()->stream($callback, 200, $headers);

  public function csvDownload()
  {
    $headers = array(
      "Content-type" => "text/csv",
      "Content-Disposition" => "attachment; filename=file.csv",
      "Pragma" => "no-cache",
      "Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
      "Expires" => "0"
    );

    $callback = function() {
      $handle = fopen('php://output', 'w');

      $columns = [
        'id',
        'name',
        'email',
      ] ;
      mb_convert_variables('SJIS-win', 'UTF-8', $columns);

      fputcsv($handle, $columns);

      $users = User::all();
      foreach ($users as $user) {
        $csv = [
          $user->id,
          $user->name,
          $user->email,
        ] ;
        mb_convert_variables('SJIS-win', 'UTF-8', $csv);
        fputcsv($handle, $csv);
      }

      fclose($handle);
    };

    return response()->stream($callback, 200, $headers);
  }

参考サイト
laravel5.3 CSVダウンロードを実装する(あしたからがんばるさん)
CSV export in laravel 5 controller(Stack Overflow)
Laravel 5.2 Response::stream alternative(LARACASTS)
HTTP Responses(Laravel)

2017年4月17日月曜日

MySQLで「IN()」句でデータを取り出した際、指定した通りにORDER BYで並べ替える

MySQLで「IN()」句でデータを取り出した際、指定した通りにORDER BYで並べ替える方法です。FIELD関数を利用すると、うまく取得できます。FIELD関数は、文字列に利用するものと思われがちですが、数値に対しても有効らしい。今まで、苦労して並べ替えてましたよ(笑)。

SELECT * FROM blogs 
WHERE id IN (10, 9, 8, 7, 6, 5) 
ORDER BY FIELD (blogs.id, 10, 9, 8, 7, 6, 5)

参考サイト
MySQL ORDER BY IN()(Stack Overflow)

2017年4月16日日曜日

Twitterの次は「Mastodon」?

Twitterの次は「Mastodon」かもしれない? 分散型のネットワークで、500字まで書き込み可能とのこと。とりあえず登録してみましたが、使い方がよくわからない(笑)。



参考サイト
Twitterのライバル? 実は、新しい「マストドン」(Mastodon)とは!(プログラミング+)

2017年4月15日土曜日

Ubuntu 17.04がリリース

Ubuntu 17.04がリリースされました。独自GUIの「Unity」が採用される最後のバージョンだそうです。

カーネル4.10では仮想マシンがネットワークインタフェースを直接制御する機能を取り込んだ。
これまでパーティションとして自動構成されていたスワップ領域を、17.04からはファイルとして用意する。ユーザーは必要に応じてスワップ機能をオン/オフできる。


参考サイト
Ubuntu最新版「17.04」登場、スワップや印刷などを改善(ITpro)

2017年4月14日金曜日

Laravel5.4で、ログインイベントを取得して、ユーザーのログイン時刻を記録

Laravel5.4で、ログインイベントを取得して、ユーザーのログイン時刻を記録してみました。Laravelは、認証処理で様々なイベントを発生させてくれるので、 EventServiceProviderで、これらのイベントを取得することができるとのこと。

/app/Providers/EventServiceProvider.php
class EventServiceProvider extends ServiceProvider
{
  protected $listen = [
    'Illuminate\Auth\Events\Login' => [
      'App\Listeners\LogSuccessfulLogin',
    ],
  ];
}
その他の取得可能なイベント
protected $listen = [
  'Illuminate\Auth\Events\Registered' => [
    'App\Listeners\LogRegisteredUser',
  ],

  'Illuminate\Auth\Events\Attempting' => [
    'App\Listeners\LogAuthenticationAttempt',
  ],

  'Illuminate\Auth\Events\Authenticated' => [
    'App\Listeners\LogAuthenticated',
  ],

  'Illuminate\Auth\Events\Login' => [
    'App\Listeners\LogSuccessfulLogin',
  ],

  'Illuminate\Auth\Events\Failed' => [
    'App\Listeners\LogFailedLogin',
  ],

  'Illuminate\Auth\Events\Logout' => [
    'App\Listeners\LogSuccessfulLogout',
  ],

  'Illuminate\Auth\Events\Lockout' => [
    'App\Listeners\LogLockout',
  ],
];
$ php artisan event:generate
/app/Listeners/LogSuccessfulLogin.php
use Carbon\Carbon;
use Auth;

class LogSuccessfulLogin
{
  public function handle(Login $event)
  {
    $user = Auth::user();
    $user->last_login_at = Carbon::now();
    $user->save();
  }
}

参考サイト
Recording last login information using Laravel events(Steven Westmorelandさん)
Authentication(Laravel)

2017年4月13日木曜日

Laravel5.4で、「updated_at」の日時を変更せずにデータを更新

Laravel5.4で、「updated_at」の日時を変更せずにデータを更新する方法です。更新日時を記録したくない時もありますよね。

/app/Http/Controllers/BlogController.php
$blog = Blog::find(1);
$blog->timestamps = false;
$blog->title = 'ブログのタイトルをこっそりと更新';
$blog->save();

参考サイト
Update without touching timestamps (Laravel) - (Stack Overflow)
Eloquent: Relationships(Laravel)

2017年4月9日日曜日

Ubuntu 18.04のデスクトップがGNOMEに変更、スマホ開発も中止

Ubuntu 18.04のデスクトップがGNOMEに変更、スマホ開発も中止するそうです。英断と言えるのではないでしょうか。これでまた、デスクトップ市場でも、Ubuntuが席巻するようになるのかもしれません。



参考サイト
Ubuntu、UnityからGNOMEへ戻る - スマホ向け開発は中止(マイナビニュース)

2017年4月8日土曜日

Djangoフレームワーク 1.11がリリース

Djangoフレームワーク 1.11がリリースされました。長期サポート版(LTS)で、セキュリティ、およびデータ損失の修正が、少なくとも今後3年間適用されるとのこと。



参考サイト
Django 1.11がリリースされましたね(偏った言語信者の垂れ流しさん)

2017年4月7日金曜日

Laravel5.4で、ログインURLを変更

Laravel5.4で、ログインURLを変更してみました。認証されていないユーザーを処理するメソッド「unauthenticated()」が、/app/Exceptions/Handler.php にあるので、ここを変更すれば良いらしい。

/app/Exceptions/Handler.php
  protected function unauthenticated($request, AuthenticationException $exception)
  {
    if ($request->expectsJson()) {
      return response()->json(['error' => 'Unauthenticated.'], 401);
    }

    // return redirect()->guest('login');
    return redirect()->guest('signin');
  }

参考サイト
How to change default redirect URL of Laravel 5 Auth filter?(Stack Overflow)

2017年4月5日水曜日

Laravel5.4で、MySQLのVARCHAR型、TEXT型カラムへのバリデーションには、面倒でも「max:(数値)」を設定すべき?

Laravel5.4で、MySQLのVARCHAR型、TEXT型カラムへのバリデーションには、面倒でも「max:(数値)」を設定すべきかもしれません。バリデーションをすり抜けてエラーになりました。MySQL自体は、入力が長すぎる場合は、適当にちょん切ってくれるような気がしましたが、違いましたかね?

/app/Http/Requests/StoreBlogPost.php
public function rules()
{
  return [
    'title' => 'required|max:100',
    'body' => 'required|max:1000',
  ];
}

参考サイト
Validation(Laravel)

2017年4月1日土曜日

ブロックチェーン版のLinux「Hyperledger」

ブロックチェーン版のLinux「Hyperledger」 Hyperledgerは、クロスインダストリーのブロックチェーン技術を推進するために作成されたオープンソース。 Linux Foundationが主催するグローバルなコラボレーション組織です。



参考サイト
「ブロックチェーン版Linux v1.0」は世界を変えられるか(ITpro)
オープンソースのブロックチェーン Hyperledger Fabric を試してみる(Qiita)
hyperledger/fabric(GitHub)