2019-01-01から1年間の記事一覧

PHPUnit: 最初にエラーが発生した時点で実行を停止

$ vendor/bin/phpunit --stop-on-error #最初にエラーが発生した時点で実行を停止 こっちのが便利かも $ vendor/bin/phpunit --stop-on-failure #最初にエラーあるいは失敗が発生した時点で実行を停止 ドキュメント コマンドラインのテストランナー

CakePHP3: 同じSQLを複数実行しないように

ドキュメント Cake\ORM\Table::get($id, $options = []) メモ 下記の場合、同じクエリが2回実行されている $category_id = $this->Articles->get(1)->categoriy_id; $author_id = $this->Articles->get(1)->user_id; 下記のようにすれば、クエリ1回の実行で…

FriendsOfCake/crud: findMethod() の引数

メモ: FriendsOfCake/crud: findMethod() の引数 public function index() { $this->Crud->action()->findMethod([ // カスタム Finder メソッド を指定 // See: Crud - findMethod 'myCustomFinder' => [ // Cake\ORM\Table::find($type, $options = []) の…

CakePHP3: マイグレーションでカラムの型を string から uuid に変更

試行錯誤したのでメモ。もっとシンプルな方法があると思う。。 ドキュメント カラムの属性を変更 作業ログ public function change() { $this->table('hoges') ->changeColumn( 'foo_column', 'uuid', [ 'null' => false, ] ) ->save(); } ↑ ではうまく行か…

CakePHP3: クエリビルダーで SUM(CASE WHEN)

こんな感じの SELECT 文を作りたい場合は、 SELECT user_id AS "user_id", (SUM( CASE WHEN hoge < 3 THEN count END )) AS "A", (SUM( CASE WHEN hoge >= 10 THEN count END )) AS "B" FROM articles GROUP BY user_id こんな感じ $query = $articles->find…

Spleeter で音楽データからボーカル、ドラム、ベース をそれぞれ抽出してみた

spleeter 機械学習を用いて、音楽データからボーカルや各楽器パートだけを抽出してくれるツール 結果 元音源: Baby Girl - Co-fly トラック ボーカル ベース ドラム その他 Spleeter で抽出するまでの流れ (事前準備) Miniconda をインストール Miniconda に…

CakePHP3 (3.2以降): クエリビルダーで DATE 型のフィールドを取得すると、Cake\I18n\FrozenDate オブジェクトが返される

クエリビルダで DATE 型のフィールドを取得すると、Cake\I18n\FrozenDate オブジェクトが返される 同じく、DATETIME 型を取得すると、Cake\I18n\FrozenTime オブジェクトが返される サンプル var_dump( $query->find()-> .... ->get('field_date') ); //fiel…

CakePHP3: 行ロック(SELECT 〜 FOR UPDATE)

BEGIN; SELECT 〜 FOR UPDATE; /* COMMITするまで選択した行をロック*/ UPDATE 〜; COMMIT; これを CakePHP3 で行うと ConnectionManager::get('default')->transactional(function () use ($id) { $query = $this->TableClass; $query->find()->where(['id'…

CakePHP3: $validator->scalar() は integers, floats, strings, booleans, を許可する

This method will accept integers, floats, strings and booleans, but not accept arrays, objects, resources and nulls. See: https://api.cakephp.org/3.5/class-Cake.Validation.Validation.html#_isScalar

CakePHP3: ディレクトリを指定してマイグレーションを実行

備忘録 See: https://book.cakephp.org/migrations/2.x/ja/#migrate # デフォルトで、マイグレーションファイルは、 **config/Migrations** ディレクトリーに # あります。 ``--source`` オプション (省略形は ``-s``) を使用することで、 # ディレクトリー…

CakePHP3: Migrations でテーブルを Drop する

備忘録 ->save() を忘れない See Phinx - Dropping a Table Note that like other methods in the Table class, drop also needs save() to be called at the end in order to be executed. サンプル 例: tests テーブを削除 /// 空のマイグレーションファイ…

CakePHP3 の $validator->integer() は string の '1' を許可する

備忘録 CakePHP3 の $validator->integer() は string の '1' を許可する ソースは以下 See \Cake\Validation\Validation::isInteger() https://api.cakephp.org/3.8/class-Cake.Validation.Validator.html#_integer This method will accept strings that c…

(インスパイア) テスト駆動開発 の 第Ⅰ部 を PHP で写経

写経しました https://github.com/tamurayk/tdd-php インスパイア https://blog.shin1x1.com/entry/tdd-by-example ひとまず 第Ⅰ部 を実践しました PHPでどう書いてよいか解らず、手が止まったときは shin1x1/book-tdd-php をお手本にさせていただきました …

composer install 時のエラー

PHP

経緯 ざっくり言うと、PHP公式 Docker の 7.1-fpm をベースに composer を追加した Docker イメージを作成していた その際、composer install 時のエラーでハマったので備忘録 # composer install --dev Do not run Composer as root/super user! See https:…

PANIC: Missing emulator engine program for 'x86' CPU.

躓いた事 Android Studio を 3.3.2 -> 3.4.2 にアップデートして、Pixel 3 のエミュレータをコマンドラインで起動しようとしたところ、下記のエラー PANIC: Missing emulator engine program for 'x86' CPU. 原因 SDK が古かった $ sdkmanager --list ID | I…

APK から意図しない不要なパーミッションを削除する方法

android/app/src/main/AndroidManifest.xml に <uses-permission android:name="{パーミッション名}" tools:node="remove" /> を追加する事で、意図しない不要なパーミションを削除できる 背景 意図しない READ_PHONE_STATE が付与された APK(Android application PacKage) を Google Play Console にアップロードした際に「プライバシ</uses-permission>…

React Native アプリから Azure Application Insights を利用する

Application Insights JavaScript SDK + React Native Plugin を利用して、Application Insights にメッセージを送信してみました バージョン react-native: 0.57.7 microsoft/applicationinsights-web: 2.0.1 microsoft/applicationinsights-react-native: …

defaultProps で React.Component の Props のデフォルト値を設定

defaultProps で React.Component の Props のデフォルト値を設定できるようです ドキュメント defaultProps 環境 react: 16.6.1 react-natibve: 0.57.7 native-base: 2.12.0 サンプル import * as React from 'react'; import {Body, Header, Left, Right, …

lodash の get メソッドを利用して `Cannot read property 'xxx' of undefined.` の発生を防ぐ

困っていた事 ネストの深いオブジェクトのプロパティにアクセスする際に、場合によってCannot read property 'xxx' of undefined. が発生してしまう 目的のプロパティへのパスの途中で undefined になる場合に発生 解決方法 lodash の get メソッドを利用す…

Immutable.js 3.8 と 4.0 で Record オブジェクト で map()メソッド を使う方法が異なる

Immutable.js immutable を JavaScript で実現してくれる 不変性(= immutable = 元となっているオブジェクトに変更を加えない、加えられない状態)を保ってくれるクラスの集まり immutable.js の Record オブジェクト 限定されたプロパティのみを持つ Map(=連…

React Native: react-native 0.56.0 -> 0.59.2 へのアップグレード作業

大分ハマったので作業内容を整理してメモしました 間違いや、もっと良い方法がありましたらご教示頂きたいです 実施日 2019/03/28 環境 XCode: 10.1 Android Studio: 3.3.2 作業概要 package.json の react-native のバージョンを 0.59.2 に上げて yarn inst…

React Native: FlatList の高さを取得する方法

nativeEvent.contentSize.height で FlatList の高さを取得できる バージョン react-native: 0.57.8 サンプル export default class SampleScreen extends React.Component<Props, State> { onScroll = ({nativeEvent}) => { //nativeEvent.contentSize.height = <FlatList/>の縦幅 co</flatlist/></props,>…

React Native: Android の ハードウェアバックボタン で前の画面に戻れないように制御する

バージョン react-native: 0.57.8 react-navigation: 2.11.2 ドキュメント React Nativer - BackHandler 概要 遷移上、前の画面へ戻れないようにしたい、という場合、下記の制御が必要 スワイプバック できないようにする (iOS/Android) ハードウェアバック…

react-native-iphone-x-helper がどのように iPhoneX を識別しているか

答えとしては、端末の画面サイズから、iPhoneX かどうか判定している バージョン ptelad/react-native-iphone-x-helper : 1.0.3 / 1.2.0 背景 (古いバージョンの react-native-iphone-x-helper を使用していた為) iPhoneXS Max を iPhoneX だと判定しなかっ…

Google Cloud Storage でペラ 1 枚の静的 WEB ページを公開する方法

GCP

(背景) 作業していて、スマホのブラウザで任意のリンクを踏むテストをしたかった やりたかった事 スマホで見れるペラ一枚のhtmlを設置 URLはCloud Storege でデフォルトで付与されるものでok (任意のドメインの設定等はいらない) 概要 Cloud Storage に html…

natibe-base 2.8.0 の <content> で onScroll 使うと (実際には使えるにも関わらず) TSエラーになる

お世話になっているライブラリ NativeBase でおきていた TS エラーについて理解できてなかったので調べてみた 環境 react-natve: 0.57.8 natibe-base: 2.8.0 react-native-keyboard-aware-scroll-view: 0.5.0 ドキュメント NativeBase v2.8.0 - CheatSheet <Content> </content>…

GCP の Cloud Speech API を利用して音声データのテキスト起こししてみた

GCP

経緯 先日、Google Cloud On Board - 入門編トレーニング に参加してきました 機械学習の API が紹介されていた かねてからテキスト起こしに興味があった(議事録作成が面倒だった)ので、GCP の 無料トライアル で試してみた 音声素材は hbSAKABA の #0 での…

JavaScript(ES2015) の export 方法は「名前付きエクスポート」 と 「デフォルトエクスポート」 の 2 種類あり、import する際の名前の付け方が異なる

環境 ES2015 typescript 2.9.2 react-native 0.57.8 JavaScript のモジュール機能(import/export)についてメモ 調べたきっかけ サードパーティー製の ReactNative のライブラリを利用した際 デフォルトエクスポート(export default)されたメンバを import {…

TypeScript の Enum で「値を指定してメンバー名を取得する方法」 と 「そうできる理由」

Enum(列挙型) の使い方がよく解っていなくて調べた話 公式ドキュメント Enums enum GENDER { MALE = 1, FEMALE = 2, } enum GENDER_NAME { MALE = '男性', FEMALE = '女性', } こんな enum があった場合 Enumのメンバーを指定して値を取得 console.log(GENDE…

Android で React Native の KeyboardAvoidingView の behavior を指定すると、逆に Input がキーボードに隠れてしまう

環境 react-native : 0.57.8 Android で React Native の KeyboardAvoidingView の behavior を指定すると、逆に Input がキーボードに隠れてしまった話 React Native に KeyboardAvoidingView というコンポーネントがある キーボードを出した際に、入力フィ…