かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

TypeScript:外部モジュールを含めたソースのコンパイル方法と、実行時の注意点

TypeScriptでは、外部モジュールを含めてコンパイルする場合、「-m」オプションを使用します。
(オプションを指定しない場合、別々の jsファイルが生成される。)

(例:コンパイル CommonJS方式)
tsc sample01.ts -m commonjs

(例:コンパイル AMD方式)
tsc sample01.ts -m amd

Node.jsで実行する場合、node sample01.js といった実行コマンドとなる。
が、Node.jsは CommonJSを採用し、AMD方式はサポートしていないので、後者の場合はエラーが発生する。
(つまり、Node.jsで実行する場合は CommonJSに限定される。)

とはいえ、CommonJSは直接ブラウザで動かす事を前提としていないので、外部モジュールが必要なTypeScriptソースを、コンソールからNode.jsを使ってサクッと実行するのは止めといた方が良さそう。

ちゃんと開発する場合は、CommonJS方式で書き、Webpackでブラウザで動くコードにビルドする方法になるかと思うけど、サンプルコードとはいえ、ある程度の規模になったら、そうした方がいいんかな。

TypeScript:別ファイルのモジュールが認識されない

TypeScriptでは、スラッシュを3つ付けたコメントの後に、importするモジュールを指定する。

(例)
main.js

module UserModule {
    export var name = "yamada";
}
console.log(UserModule.name);

/// <reference path="./developers.ts" />
console.log(DeveloperModule.name);

developers.ts

module DeveloperModule {
    export var name = "kaki";
}

が、このソースは developers.tsが認識できずコンパイル出来ない。

どうやら、reference path は、ソースの先頭に書く必要があり、それ以外の部分に書くと記述が無視されてしまうそうな。

という訳で、reference path をコードの先頭に記述する事で解決。
 
 


(参考サイト)
https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html

MySQL Trend Seminar 2018 @福岡:ダイジェスト

MySQL Trend Seminar 2018 @福岡』での話のダイジェスト。 sosl.connpass.com

MySQL 8.0 について

MySQLは、分析とかは元々あまり得意ではなかったが、改善されて、どんどん良くなった。
 

GIS(空間図形情報)サポートの強化

Boost.Giometryライブラリを統合。
地理情報系。
st_distance() で距離を計算できる。
 

デフォルトのキャラがユニコード

今まではラテン1。日本人ユーザに優しくない。  

データ型

JSONデータ型を強化 (5.7で実装済み。パフォーマンスを改善。)
特定の要素だけを更新できるようになった。  
JSONデータを、SQLのように取得できる。  

共通テーブル式

WITH句追加。
パフォーマンスが良くなる事もある。(複数呼ぶ場合とか)
 

Window関数

LAG関数
1つ前のレコードの値を参照できる
 
LEAD関数
1つ後のレコードの値を参照できる
 

SELECT FOR UPDATEの拡張

NOWAIT
行が既にロックされていれば、すぐにエラーを返す。
 
SKIP LOCKED
行が既にロックされていれば、その行に対するロックはあきらめる。
 

不可視インデックス(Invisible Indexes)

オプティマイザから見えない索引。
一時的に索引を見えない状態にする。
(一時的にインデックスを削除した状態と同じになる。インデックスの削除を安全に行える)  

オプティマイザヒントの拡張

joinの順番を変更できる
 

降順索引

 

ヒストグラム

データが偏っている場合のクエリの精度向上。
インデックスよりもお手軽。
 

セキュリティ

ロール概念の追加
 

何で 5からいきなり 8?

6は頓挫した。7は姉妹品がナンバリングして、混同を避けるために、もう1つ上げた。

Oracle:ODTを使用した時の接続設定

ODT(Oracle Developer Tools for Visual Studio)を使用して、プロジェクトから Oracleに接続する場合、 OracleClient用に設定した tnsnames.ora とは別に、ODT用の tnsnames.oraを用意する必要があります。
   
ODTをデフォルトのパスにインストールしていた場合、以下のフォルダに tnsnames.ora を配置します。(Oracle Developer Tools for Visual Studio 2017 の場合)

C:\Program Files (x86)\Oracle Developer Tools for VS2017\network\admin

 
「あれ。sqlplusではOKなのに、何で繋がらないんだ?」という現象に遭遇していました。

ASP.Net MVC:テンプレートが色々選べるプラグイン『BootstrapBundle』

Fukuoka.NET様主催の、ふくてんもくもく会 #1 にて、
もくもくした内容をスライドにしました。
 
f:id:kakisoft:20180204025538p:plainASP.Net MVC BootstrapBundleはどうでしょう?』
https://gitpitch.com/kakisoft/HowAboutASP.NetMVCBootstrapBundle#/
 
ASP.NET MVCでひな形を作る時、色々なテンプレートを選択できるようになります。
詳細は、スライドを参照ください。

Windows:テキストファイルの文字列を検索する

Windowsにて、テキストファイルから特定の文字を検索する場合、PowerShellを使うと便利です。

sls [検索したい文字列] [検索するファイル] 

 

(使用例)
sls "SearchString" *.txt

(使用例:日本語の検索)※SJIS
sls "日本語" *.txt -Encoding default

(使用例:UTF-8)
sls "UTF-8の検索" *.txt -Encoding UTF8

(使用例:サブフォルダも検索)
sls "AlsoWithSubfolders" (gci -recurse *.txt) 

slsは Select-String のエイリアスです。
Powershellのversion2には、デフォルトで設定されていません。政治的な事情により アップデートできない場合は、追加しておくと便利です。

Select-String に sls というエイリアスを作成

sal -name sls -value Select-String

上記のエイリアスを削除

rm alias:sls

エイリアスの一覧を表示

gal

 
 
gci は Get-ChildItem のエイリアス
sal は Set-Alias のエイリアス
rm は Remove-Item のエイリアス
gal は Get-Alias のエイリアスです。