いつもお世話になっているCrashlyticsですが、
アプリのダウンロードがエラー(Timeout)になることが多かったんですが、
いろいろ試した結果、Buffaloの無線LANの設定を変更したところアプリのダウンロードが成功するようになりました。
毎回途中まで(20%~60%くらい)ダウンロードできるだけに切り分け難しかったんですが。
「Multicast Rate」の値を1Mbpsから24Mbpsに変更した。
これが原因ということは言い切れないわけですが、うちではうまくいきました。
そういうこともあるようです。
2016年12月3日土曜日
2016年9月29日木曜日
macOS SierraにアップグレードしたらSSHエージェント転送できなくなったよ
El CapitanからmacOS Sierrraにアップグレードして前回のアップグレードと違って問題ないなと思っていたら・・・
SSHエージェント転送できないじゃないですか。
sshのバージョンが変わったのか設定が変わったのかまでは調べてませんが、
次の設定を追加して無事完了です。
.ssh/config
http://www.openssh.com/txt/release-7.2
sshのバージョンが変わったのか設定が変わったのかまでは調べてませんが、
次の設定を追加して無事完了です。
.ssh/config
AddKeysToAgent yesいつもクリーンインストールしてますが、今回はこのまま次のバージョンまで使うかな。
追記
ssh -V OpenSSH_7.2p2, LibreSSL 2.4.1バージョンを確認したところ7.2だったので、おそらくこのバージョンからのオプション(新機能)が必要になったようです。
http://www.openssh.com/txt/release-7.2
New Features ------------ * ssh(1): Add an AddKeysToAgent client option which can be set to 'yes', 'no', 'ask', or 'confirm', and defaults to 'no'. When enabled, a private key that is used during authentication will be added to ssh-agent if it is running (with confirmation enabled if set to 'confirm').ただの新機能あるあるでした。失礼いたしました。
2016年8月3日水曜日
Windows 10 Anniversary UpdateしたのでBashを試す
Windows 10 Anniversary Updateをさっそくインストールしました。
時間かかるので作業しない時にやるのがおすすめです。
有効化してPCを再起動します。
Microsoftアカウントとは別に扱えるので、私にとってはこの仕様は助かります。
細かいところはいろいろありそうですが、使えそうな予感です。
Insider previewの不具合を恐れてこれまで使えなかったのですが、しばらくこれで遊んでみます。
この手軽さ・・・、今までのWindowsはなんだったのか・・・
最後に、
Windowsメニューに表示される名前は「Bash on Ubuntu on Windows」という長い名前でした。
時間かかるので作業しない時にやるのがおすすめです。
参考 アップデートの所要時間
- ダウンロード 30分
- インストール(再起動)20分
- Bashインストール 10分
Windows Subsystem for Linux (Beta)を有効化する
まだbeta版なんですね。有効化してPCを再起動します。
コマンドプロンプトからbashを起動する
>bash -- ベータ機能 -- これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、 次のサイトに示される条件に基づいてライセンスされています。 https://aka.ms/uowterms この機能を使用するためには開発者モードを有効にする必要があります。ベータ版なので、開発者モードが必要なのかな?
開発者モードに変更する
- Windowsキー + Iキーで「Windowsの設定」画面を開く
- 「更新とセキュリティー」をクリック
- サイドメニューの「開発者向け」をクリック
- 「開発者モード」をクリック
- 「はい」をクリック
- 念のため再起動(おそらく不要)
コマンドプロンプトからbashを起動する
>bash -- ベータ機能 -- これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、 次のサイトに示される条件に基づいてライセンスされています。 https://aka.ms/uowterms 続行するには、"y" を入力してください:
Windows ストアからダウンロードしています... 100% ファイル システムを展開しています。この処理には数分かかります...ストアからダウンロードなんですね。
UNIX ユーザー アカウントを作成してください。ユーザー名は、Windows のユーザー名と一致する必要はありません。 詳細: https://aka.ms/wslusers を参照してください 新しい UNIX ユーザー名を入力してください:Windowsとは別世界のようですので、ユーザー名を設定しました。
Microsoftアカウントとは別に扱えるので、私にとってはこの仕様は助かります。
新しい UNIX ユーザー名を入力してください: 新しい UNIX パスワードを入力してください: 新しい UNIX パスワードを再入力してください: passwd: password updated successfully インストールが正常に終了しました 環境が間もなく開始されます... ドキュメントを参照できる場所: https://aka.ms/wsldocs ***@DESKTOP:/mnt/c/Users/username$おおおおお、そのまま使える。すこし感動
$ uname -a Linux DESKTOP 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux
$ df -h Filesystem Size Used Avail Use% Mounted on rootfs 224G 46G 178G 21% / tmpfs 224G 46G 178G 21% /run none 224G 46G 178G 21% /run/lock none 224G 46G 178G 21% /run/shm none 224G 46G 178G 21% /run/user
$ ls -la / 合計 141 drwxr-xr-x 2 root root 0 1月 1 1970 . drwxr-xr-x 2 root root 0 1月 1 1970 .. drwxr-xr-x 2 root root 0 8月 3 08:24 acct drwxr-xr-x 2 root root 0 3月 24 05:45 bin drwxr-xr-x 2 root root 0 3月 24 05:54 boot drwxrwx--- 2 root root 0 1月 1 1970 cache drwxrwx--x 2 root root 0 1月 1 1970 data drwxr-xr-x 2 root root 0 8月 3 08:21 dev drwxr-xr-x 2 root root 0 8月 3 08:21 etc drwxr-xr-x 2 root root 0 1月 1 1970 home -rwxr-x--- 1 root root 38896 1月 1 1970 init drwxr-xr-x 2 root root 0 3月 24 05:54 lib drwxr-xr-x 2 root root 0 3月 24 05:42 lib64 drwx------ 2 root root 0 3月 24 05:46 lost+found drwxr-xr-x 2 root root 0 3月 24 05:41 media drwxr-xr-x 2 root root 0 1月 1 1970 mnt drwxr-xr-x 2 root root 0 3月 24 05:41 opt dr-xr-xr-x 1 root root 0 8月 3 08:21 proc drwx------ 2 root root 0 1月 1 1970 root drwxr-xr-x 2 root root 0 8月 3 08:21 run drwxr-xr-x 2 root root 0 3月 24 05:45 sbin drwxr-xr-x 2 root root 0 3月 24 05:41 srv dr-xr-xr-x 1 root root 0 8月 3 08:21 sys drwxrwxrwt 2 root root 0 8月 3 08:19 tmp drwxr-xr-x 2 root root 0 3月 24 05:41 usr drwxr-xr-x 2 root root 0 3月 24 05:45 var気になるエディターは?
$ sudo update-alternatives --config editor alternative editor (/usr/bin/editor を提供) には 4 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /bin/nano 40 自動モード 1 /bin/ed -100 手動モード 2 /bin/nano 40 手動モード 3 /usr/bin/vim.basic 30 手動モード 4 /usr/bin/vim.tiny 10 手動モードvimにしました。
$ screen Cannot make directory '/var/run/screen': 許可がありませんscreenはそのままでは起動せずディレクトリを作成した。
sudo mkdir /var/run/screen sudo chmod 777 /var/run/screentmuxは問題なく起動した。
sudo: ホスト HOSTNAME の名前解決ができませんsudoコマンドは毎回名前解決で失敗するので/etc/hostsにコンピュータ名を登録した。
細かいところはいろいろありそうですが、使えそうな予感です。
Insider previewの不具合を恐れてこれまで使えなかったのですが、しばらくこれで遊んでみます。
この手軽さ・・・、今までのWindowsはなんだったのか・・・
最後に、
Windowsメニューに表示される名前は「Bash on Ubuntu on Windows」という長い名前でした。
2016年7月31日日曜日
Windows10にアップグレードしたのですぐに開発で使えるようにした
Windows10の無料アップグレード終了前にWindows7, 8.1を駆け込みでアップグレードしました。
Windows7はアップグレードで、Windows8.1はクリーンインストールでWindows10構築しました。
これまでも何回かアップグレードにチャレンジしましたが、デバイスドライバやソフトが未対応で使えなかったので見送っていましたが、最後のチャレンジだと思って試したところ問題ありませんでした。ぎりぎりまでアップグレード見送ろうと思っていましたがやってよかったです。
ちなみに、未対応だったソフトやデバイスドライバは、ここでご紹介するものではありません。
すぐに仕事で使えるようにしたかったので、次の3つをすぐにインストールしました。
ただ、VSC以外はリリース版ではないので導入は自己責任になります。
- win-sshfs
- Rlogin
- Visual Studio Code
Dokany 1.0.0-RC4
stableではないのですが、バグフィックスも進んでいるようです。
DokanSetup.exeをダウンロードしてインストールしました。
https://github.com/dokan-dev/dokany/releaseswin-sshfs 1.6.0 RC2
https://github.com/Foreveryone-cz/win-sshfs/releasesrelease-1.6.0-rc2.zipをダウンロードして解凍、保存しました。
RLogin (2.20.6)
ターミナルはRloginを試してみました。
こちらも今のところ問題なく動作しています。
http://nanno.dip.jp/softlib/man/rlogin/Visual Studio Code
エディターは、VSCを試しています。
https://www.visualstudio.com/ja-jp/products/code-vs.aspxこれいいですね。
昔はVisual Studioが最高だと思っていたこともあったので、そのクオリティーで今後もアップグレードされるのを期待します。
2016年3月5日土曜日
Amazon SESを使ったLumen(Laravel)のメール送信
Lumen(5.1)では、Laravelのメール機能が標準では含まれていないので、追加して試してみました。
Laravelのドキュメントを確認した限りでは、送信オプションもいろいろ網羅されているので細かい調整もできそうです。標準以上の機能が必要なケースはあまりないかもしれませんが、もっとカスタマイズが必要な場合は、コアのソースを確認して調査する必要がありそうです。
あと、Amazon SESはデフォルトで送信制限があるので、テスト用のメールアドレスはあらかじめSES側で設定とverify(メールアドレスの有効性の確認)しておく必要があります。制限解除済みであれば登録不要です。
参考
https://laravel.com/docs/5.1/mail追加するパッケージ
composer.jsonのrequireに以下のパッケージを追加してcomposer updateします。"illuminate/mail": "5.1.*", "aws/aws-sdk-php": "~3.0",
設定ファイルの追加
config/mail.phpとconfig/services.phpファイルの作成(デフォルト設定ファイルmail.phpをコピーする)// configディレクトリが無い場合は作成する cp vendor/laravel/lumen-framework/config/mail.php config/mail.php // services.phpは空ファイルを作成して設定値を自分で記述した touch config/services.php
config/mail.phpの修正
// デフォルト値をsesと書き換える。または環境変数MAIL_DRIVERを設定する
driver' => env('MAIL_DRIVER', 'ses'),
config/services.php
awsで作成した値を設定します。
<?php
return [
'ses' => [
'key' => 'keyの値',
'secret' => 'secretの値',
'region' => 'リージョンの値', // e.g. us-east-1
]
];
テンプレートの作成
// テンプレートファイルを作成 touch resource/views/emails/example.blade.phpテンプレートには、通常のviewと同様に変数を渡せます。
HTMLメールの送信
Mail::send('emails.example', ['user' => $user], function ($m) use ($user) {
$m->from('hello@app.com', 'Your Application');
$m->to('メールアドレス', '名前')->subject('テストメールの件名');
});
テキストメールの送信
// テンプレートの値を配列にしてキーをtext、値にテンプレートのパスを指定する
Mail::send(['text' => 'emails.example'], ['user' => $user], function ($m) use ($user) {
$m->from('hello@app.com', 'Your Application');
$m->to('メールアドレス', '名前')->subject('テストメールの件名');
});
// 配列でhtmlメールを指定する場合
Mail::send(['html.view', 'text.view'], $data, $callback);
まとめ
Laravelのドキュメントを確認した限りでは、送信オプションもいろいろ網羅されているので細かい調整もできそうです。標準以上の機能が必要なケースはあまりないかもしれませんが、もっとカスタマイズが必要な場合は、コアのソースを確認して調査する必要がありそうです。
あと、Amazon SESはデフォルトで送信制限があるので、テスト用のメールアドレスはあらかじめSES側で設定とverify(メールアドレスの有効性の確認)しておく必要があります。制限解除済みであれば登録不要です。
2016年2月14日日曜日
Laravel, LumenのSELECT文いろいろ
Laravel, LumenでSELECT文に慣れていないのでメモ。
SELECTもいろいろある
参考
https://laravel.com/docs/5.1/eloquent#retrieving-single-modelsSELECTもいろいろある
find
- プライマリーキーでマッチした1レコードを取得する
- 戻り値はモデルのインスタンス(stdClass)
- 0件の場合は、null
$flight = Flight::find(1);
first
- 条件にマッチした最初の1レコードを取得する
- 戻り値はモデルのインスタンス(stdClass)
- 0件の場合は、null
$flight = Flight::where('active', 1)->first();
get
- 条件にマッチした全てのレコードを取得する
- 戻り値は、配列(各レコードはstdClassオブジェクトのインスタンス)
- 0件の場合は、オブジェクトが返る
$flight = Flight::where('active', 1)->get();
all
- 全てのレコードを取得する
- 戻り値は、配列(各レコードはstdClassオブジェクトのインスタンス)
- 0件の場合は、オブジェクトが返る
$flight = Flight::all();
0件の場合の評価の違い
$flight = Flight::find(1);
if (!$flight ) {
// 通る
}
$flight = Flight::where('id', 1)->first();
if (!$flight ) {
// 通る
}
$flight = Flight::where('id', 1)->get();
if (!$flight) {
// 通らない (オブジェクトが戻り値のため)
}
if (!count($flight)) {
// 通る Countableインターフェース
}
$flight = Flight::where('id', 1)->get()->toArray();
if (!$flight) {
// 通る (オブジェクトを配列に変換したため)
}
if (!count($flight)) {
// 通る
}
$flight = Flight::all();
if (!$flight) {
// 通らない (オブジェクトが戻り値のため)
}
if (!count($flight)) {
// 通る Countableインターフェース
}
まとめ
- get(), all()の場合は、0件の場合もオブジェクトが返る。
- Objectはtrueということと、1件または複数レコード(get()を使うか)を意識して書けばよさそう。
- Illuminate\Database\Eloquent\Collectionは、継承しているクラスがCountableインターフェースを実装していてcount()でitemsの件数が取れる。
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
)
)
2016年2月4日木曜日
Lumenのタイムゾーン設定
Lumenを検証していたところ、時間がUTCになっていたのでメモ
Lumen5.1で時間を表示させたところUTCとなっていました。
アプリ側では何も設定していないので、lumenのソースを確認したところ見つかりました。
デフォルト値をphp.iniの設定にしてほしいのは私だけでしょうか。
Dotenvを使っている場合は、.envに追加
使っていない場合は、bootstrap/app.phpに設定を追加することにしました。
これはドキュメントに書いてほしいですね。
Lumen5.1で時間を表示させたところUTCとなっていました。
echo date('Y-m-d H:i:s e P'); // 2016-02-04 09:00:23 UTC +00:00
Asia/Tokyoとなってほしいのですが、アプリ側では何も設定していないので、lumenのソースを確認したところ見つかりました。
lumen-framework/src/Application.php
public function __construct($basePath = null)
{
date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
$this->basePath = $basePath;
$this->bootstrapContainer();
$this->registerErrorHandling();
}
この場合、環境変数APP_TIMEZONEは設定していないのでUTCになるわけですが、デフォルト値をphp.iniの設定にしてほしいのは私だけでしょうか。
Dotenvを使っている場合は、.envに追加
使っていない場合は、bootstrap/app.phpに設定を追加することにしました。
.env
APP_TIMEZONE=Asia/Tokyo
bootstrap/app.php
// Dotenv::load(__DIR__.'/../');
putenv('APP_TIMEZONE=Asia/Tokyo');
軽量フレームワークなので、かゆいところは自分で対応する必要があるわけですが、これはドキュメントに書いてほしいですね。
登録:
投稿 (Atom)
