かきスタンプ

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

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 のエイリアスです。

Windows:ネットワークに繋がっているけど、外部からpingが通らない

以下の手順で、外からpingが通るようになります。

コントロールパネル→Windowsファイアウォール→詳細設定→受信の規制
「ファイルとプリンターの共有(エコー要求・ICMPv4 受信)」にて、右クリックし、「規制の有効化」を選択。

f:id:kakisoft:20180124234726p:plain

ICMP(Internet Control Message Protocol)は、pingで使用される、ネットワーク の通信状態を確認する時に使用するプロトコルです。

Hyper-V:ゲスト端末をフルスクリーンで表示

<環境>
ホスト:Windows 10 pro
ゲスト:Windows 7 pro
 
Hyper-VでゲストOSをフルスクリーンで表示する事は、正攻法では無いっぽい。
解像度を変えると出来るけど、それだと柔軟性に欠ける。

代替策として、ゲストOSに「リモートデスクトップ接続」を使用すると、お手軽に解決できます。

<ゲスト側の設定>

  1. 「ファイル名を指定して実行」にて、『sysdm.cpl』と入力。(システムのプロパティを起動)
  2. 「リモート」タブにて、『リモート接続を許可する』を選択。

後は、ホスト側にて「リモートデスクトップ接続」を使い、ゲストOSに接続。
この場合、IPでなく、ホスト名を指定して接続した方がいいかと思います。

PHP:マルチバイト関数(mb_xx)実行時に「Uncaught Error: Call to undefined function」が発生した時の対処

「mb_」で始まるマルチバイト関数(mb_strlenなど)を実行した時に、以下のエラーが出た時の対処。

Uncaught Error: Call to undefined function ...

 
php.iniファイルに、以下の設定を追加する。

extension=php_mbstring.dll

編集後、webサーバを再起動。
 
php.ini の場所は、以下のコマンドで検索できる。

php -i | grep php.ini

 
Windowsコマンドプロンプトでは grepが使えないので、cmderなどのサードパーティ製ターミナルを使用しています。