Profile cover photo
Profile photo
Emiko Kishi
5 followers
5 followers
About
Posts

Post has attachment
mysqlメモ:
最大値+1をidにする(けどauto_incrementは使いたくない)処理、よく忘れる。

INSERT INTO テーブル名 ( id, name )
SELECT last_insert_id(max(id)+1), '名前' FROM テーブル名

テーブルにデータが1件も無い時、max()はnullを返すので、それを気にするケースでは last_insert_id( ifnull(max(id), 0) + 1 ) とかやる。
いま追加した id をもらうには:

SELECT last_insert_id() FROM テーブル名

以下mysqlリファレンスから引用:
・LAST_INSERT_ID()、LAST_INSERT_ID(expr)
LAST_INSERT_ID() に引数を付けない場合は、最近実行された INSERT ステートメントの結果として、最初に自動的に生成され、正常に AUTO_INCREMENT カラムに挿入された値を表す 64 ビット値が返されます。
(中略)
現在実行中のステートメントによって、LAST_INSERT_ID() の値は影響を受けません。
(中略)
expr が LAST_INSERT_ID() への引数として指定されている場合は、その引数の値が関数によって返され、LAST_INSERT_ID() によって次に返される値として記憶されます。
https://dev.mysql.com/doc/refman/5.6/ja/information-functions.html
Add a comment...

cgi perlメモ:
apiっぽいもののHTTPヘッダには、Access-Contorol-Arrow-...なのつけておく。
print $session->header(
-status => $statusCode,
-type => 'application/json',
-charset => 'utf8',
-Access_control_allow_origin => '*',
-Access_control_allow_methods => 'POST, GET, PUT, OPTIONS',
-Access_control_allow_headers => 'Content-Type',
), encode_json($result);
Add a comment...

vbaメモ:
ExcelシートにADO接続してSQL発行するとき、型が一致しないエラー(-214746259 式で型が一致しません)発生。
原因は、Excelシートの場合、フィールドの型は最初の数件(デフォルト8)で推測されるから。数値に見える文字列がデータの最初に含まれてた。
MaxScanRows=16として、推測する行数を増やしたけどダメだったので、とりあえずはその項目で降順にソート(数値より文字が上にくる)してから処理した。
もっとちゃんとした方法があるんじゃないかな…。

引用:
Excel テーブルは、従来のデータベースとは異なり、列に直接データ型を指定する方法がありません。代わりに、列の中の一定数の行が OLE DB プロバイダによりスキャンされ、そのフィールドのデータ型が推測されます。スキャンされる行数は、デフォルトでは 8 行ですが、接続文字列の拡張プロパティで、MAXSCANROWS 設定に 1 ~ 16 の値を指定することでスキャンされる行数を変更できます。
https://support.microsoft.com/ja-jp/help/278973/excelado-demonstrates-how-to-use-ado-to-read-and-write-data-in-excel-w
Add a comment...

AngulerJSメモ:
当たり前のことだけど、deferオブジェクトを.reject()とか.resolve()とかしても、単にに「もう待たなくていいよ」と知らせるだけであって、それで処理が終わるわけではない。

// これは多分、やりたいことじゃない。
service.method = funciotn(){
var def = $q.defer();
if ( 判定 ) {
def.reject();
}
// 何か処理
// その後resolve?
def.resolve();
return def.promise; // プロミス返しておく
}

// やりたいことはこれか
service.method = funciotn(){
var def = $q.defer();
if ( 判定 ) {
def.reject();
}
else {
// 何か処理(判定に引っかかラなかった場合のみ実行)
def.resolve();
}
return def.promise; // プロミス返しておく
}

// もしくはこう?
service.method = funciotn(){
var def = $q.defer();
if ( 判定 ) {
def.reject();
}
else {
def.resolve();
}
// 何か処理(判定に結果に関わらず実行)
// メソッド呼び出し元は、この処理を待たない。
return def.promise; // プロミス返しておく
}

Add a comment...

anguler material メモ:
md-tabタグはng-showで消せない。ng-if使うべし。
Add a comment...

angulerJSメモ:
webアプリ実行中に、$scopeのプロパティとか、そのスコープにinjectしてるサービスで抱えてるデータとか、コンソールから確認する。

var e = document.getElementById('スコープのとこのID');
// スコープ取る
var scope = anguler.element(e).scope();
scope.myData // とかやったり
// そのスコープでinjectしてるサービス取る
var myService = angular.element(e).injector().get("サービス名");
myService.someMethod() // とか実行したり
Add a comment...

AngulerJSメモ:$applyは「Angulerのフレームワークの外から、Anguler式を実行するのに使う($apply() is used to execute an expression in angular from outside of the angular framework. )」もの。
スコープの更新が効いてない?遅延してる?というときのおまじない、というのはちょっと乱暴じゃないのか。
Add a comment...

Javascriptメモ:
数字の0はfalseだけど、文字列の"0"はfalseじゃない(今更)。perl人は注意。

// trueが返される。
var a = "0";
if (a) { true; } else { false; }

// falseが返される。
var b = 0;
if (b) { true; } else { false; }
Add a comment...

Post has attachment
AngulerJSユニットテストメモ:
ユニットテスト走らせたらエラー「angular.element.cleanData is not a function」⇒anguler.jsとangular-mock.jsのバージョンが違うとダメ。
$ npm install anguler-mock@x.x.x
で同じバージョンのやつ導入しよう。

https://rafikitechnology.com/2016/04/26/fixed-issue-with-angular-and-angular-mocks-do-not-agree-jasmine-is-angry/
Add a comment...

AngularJSのアプリをProtractorでテストする勉強中です。
ngMaterialで表示したダイアログ中にあるボタンをid指定で選択できなくてスタック中。

<md-dialog>
<md-dialog-content>
<form id="myForm"...>...</form>
</md-dialog-content>
<md-dialog-actions>
<md-button id="myCancel"....>キャンセル</md-button>
</md-dialog-actions>
</md-dialog>

protractorの方でこのダイアログを表示した後に
expect(element(by.id('myForm').isPresent()).toBe(true);
は通過するのに
expect(element(by.id('myCancel')).isPresent()).toBe(true);
は「true is not defined」と失敗してしまう。

formとの違いは、md-buttonであることなので、きっとそのあたりの理解が足りてないのかなと思うのですが。
一晩寝かせて、明日見直します。
Add a comment...
Wait while more posts are being loaded