Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

"SQL Fiddle" ブラウザ上でいろいろなDBMSでSQLをテスト実行して、結果を確認することができるサービス。

いろいろなDBMSSQLの挙動を確認したいけど、環境構築するのが面倒な方に朗報です。

SQL Fiddleブラウザ上でDBMSを切り替えて、SQLを実行できるのでDBMSごとに異なるSQL関数の振る舞いの違いなどを簡単に確認できるサービスです。

2016/09/11現在、対応しているのは以下のDBMSで主要なものはすべてあるっぽいです。

使用方法は簡単です。

まず、以下のページにいきます。

sqlfiddle.com

以下の様な画面が表示されます。

f:id:finalstream:20160911181644p:plain

①左上のところでDBMSを選択します。

②左ペインの下にある"Build Schema"をクリック。

③右ペインが使用可能になるので、SQLを入力します。

④右ペインの下の"Run SQL"をクリック。

です。

こりゃ便利!

*1:なぜかエラーになりました

SQLite( or PostgreSQL)でファイルパスからファイル名だけを取得する。

SQLiteでファイルパスからファイル名を取得したくなったので調べてみました。

SQLiteにはlastIndexOfのようなものがないみたいです。

instr()で文字列の位置を検索できますが、最初の位置しか返さないのでファイル名取得には使用できません。
Oracleみたいにpositionを指定できてマイナスを指定したら文末からサーチしてくれればよかったんですけど。

困ったときはstackoverflowってことで調べてみました。

stackoverflow.com

ドンピシャなQuestionがありました。

これによると以下のようにすればOKということらしいです。

select replace(filepath, rtrim(filepath, replace(filepath, '\', '')), '') from table;

ほんとにとれました。
rtrimを使うなんて凡人にはできない発想ですね。
しかも1つずつ分解して考えてもどういうことなのかよくわからない。。
まー深くは考えないことにします。

rtrim?ほんまにとれるのーと疑っているそこのアナタ。
以下のページからSQLiteを選択して以下のSQLを実行してみてください。
びっくりすることにとれます。

sqlfiddle.com

select replace('c:\work\subwork\hogehoge.xls', rtrim('c:\work\subwork\hogehoge.xls', replace('c:\work\subwork\hogehoge.xls', '\', '')), '');

ちなみにPostgreSQLでも同じ方法でとれました。

Rubyのhttps通信で"certificate verify failed (OpenSSL::SSL::SSLError)"というエラーが出たが、証明書を設定するのが面倒でとりあえず動かしたいとき。

Rubyで'net/https'を使ってHTTPS通信を行ったとき、以下のエラーがでました。

C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

どうやらSSLの検証に引っかかっているみたいです。

とりあえず動かしたい!ってときは以下のようにverify_modeの指定を追加して検証しないというように設定すればOKです。

        https = Net::HTTP.new('xxx.xxx.xxx',443)
        https.use_ssl = true

        # これを追加
        https.verify_mode = OpenSSL::SSL::VERIFY_NONE

        https.start{
        
        }

以下のマニュアルにはデフォルトはVERIFY_NONEって書いてありますけど、追加しないと動きませんでした。

instance method Net::HTTP#verify_mode= (Ruby 2.3.0)

正しく対処するには証明書をダウンロードして明示的に指定する必要があるらしいですが、とりあえず動かしたいときはこれだけでOKですね。