読者です 読者をやめる 読者になる 読者になる

Code for final

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

SourceTree v1.9以降のバージョンをアカウント登録せずに使用する方法。

Git SourceTree

会社でGitを使ったプロジェクトをやっており、慣れ親しんだSourceTree(v1.9.6)をいれるかーと思って、インストールして起動し、ウィザードを進めていくと以下の画面が出現。

f:id:finalstream:20161016180457p:plain

家だったら自分のアカウントでログインするけど客先のネットワークだし、変にログインはしないでおこうと思ってスキップを探すけどスキップするところがない。どっちのボタンを押しても先に進めない。

あーウィザードを閉じればいいのかと思って閉じるとSourceTreeが起動しない。

もしや…と思って調べてみるとv1.8.2あたりで登録が必須となったらしい。

回避方法としてライセンスファイルみたいなのをどこかに配置すればできるっぽいって書いてあったけど、客先のネットワークにファイルを持ってくるのが面倒なのでパス。
昔使ってたv1.4とかはまったくそんな必要なかったのになー。

じゃあ、旧バージョンでも使うかということで公式サイトを探すけど、ダウンロードできるようなところがない。

怪しいサイトには旧バージョンがあるけど、会社(しかも客先)のマシンにいれてウイルスでも検出されたら大惨事になるので、とても怖くてできない。

ググって以下の記事内にダウンロード先を発見した。

answers.atlassian.com

URLを見るとAtlassianのサーバっぽいので安全みたい。

というわけで、SourceTree v1.9以降のバージョンをアカウント登録せずに使用する方法はないので、旧バージョン(v1.7.0)を使用するしかないです。

旧バージョンで一番新しそうなv1.7.0のダウンロードは以下からできますが、そのうち消えるリスクもあるので客先ネットワーク、オフライン環境等で使用する予定のある方はダウンロードしておいたほうがいいかも。

https://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.7.0.32509.exe

v1.7.0は最新版とはインタフェースは異なるものの主要な操作はできるのでまったくもって問題ないです。そしてそんなに古くないです。(2015年くらいやと思う)

2016/11/26 追記

しばらくそのまま使えてたんですけど、30日を過ぎたあたりで使用を続けるには登録してくださいというようなメッセージが表示されて使えなくなりました。
なので上記の方法で使えるのは30日間限定になります。
その後はAttlassianにログインして「New SourceTree License」をクリックしてライセンスファイルをダウンロードしてインポートすることで継続して使えるようになりました。

PCをシャットダウンしてもUSB HDDの電源がOFFにならない場合、OFFにする方法。

PC

最近、PCを買い替えてしばらく普通に使っていたんですけど、ある異変に気付きました。

PCの電源を落としてもHDDのランプがついたままなのです。回転もしてるみたいです。

なんで?

調べてみると最近のパソコンはPCの電源が入ってない時でも、スマホとか充電できるように常にUSBに給電している仕様になっているみたいです。

まー場合によってはありがたいときもあるかもしれないけど、そんな機能使わないひと、知らないひとには電気代が無駄にかかる余計な仕様になったんですね。としか思えません。

で、このPCがついていないときもUSBに給電し続けるありがた迷惑な機能はOFFにすることができます。*1

PCがついていないときに動くものなので、Windowsの設定ではどうしようもできません。
ではどこにあるのかというと、BIOSにあるのです。

僕が持っているPC(ASUSマザーボード自作PCとHPのノート)はどちらも設定できました。

マザーボードやPCメーカーによってBIOSの起動方法や設定方法は違うので詳しくは各マニュアルなどを見ることをおすすめします。

以下にASUSマザーとHPのノートの設定方法を記載します。同じメーカーでもモデルによって違うかもしれませんので参考にしてください。

Mother/PC BIOS起動方法 BIOS設定 OFFとなる設定値
ASUS(Z170) DELキー Advanced > APM Configuration > ErP Ready 有効(S4+S5)*2
HP(Spectre13) ESCキー連打 > F10 SystemConfiguration > USB Charging Disabled


今回のまとめですが、PCをシャットダウンしてもUSBに給電し続けるありがた迷惑な機能はBIOSの設定でOFFにすることができるので困っているかたは試してみてください。

*1:できないPCもあるかもしれません。

*2:S4は休止状態、S5はシャットダウン状態を表します。

"Rextester" ブラウザ上でいろいろな言語(C#, Java, Ruby...)を実行して、結果を確認することができるサービス。

Good WebService C# SQL Ruby Java

ついこないだいろんなDBMSSQLを実行できるというサービス*1を見つけて興奮していたんですが、 SQLだけでなく、いろんな言語をオンラインでテスト実行できるという究極のサービスを見つけてしまいました。

Rextesterはブラウザ上で実行環境を切り替えて、いろんな言語の実行結果をすぐに確認できるサービスです。

2016/09/25現在、対応しているのは以下の31言語です。

やばいです。多すぎです。ほとんどの言語が試せます。知らないのもちらほらありますが。

SQL FiddleでエラーになったOracleとかも普通にいけます。主要DBMSもサポートしています。

しかも、実行環境はプルダウンで変更するだけで、Hello Worldのテンプレート付きです。

なんと入力補完も出ます。(出ない言語もありますが、C#Javaは確認できました) f:id:finalstream:20160925195903p:plain

言語を勉強したいけど環境を作るまでもないときはありがたく使わせていただきましょう。


使用方法は説明が不要なくらい簡単です。

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

http://rextester.com/

以下の様な画面が表示されます。(デフォルトはC#

f:id:finalstream:20160925195702p:plain

あとはコードを書いて、左下にある"Run it"ボタンを押すだけで実行結果が下に表示されます。

言語を変更する場合は上部にあるLanguageのプルダウンから変更するだけです。

こりゃ便利!

ブログでよく使うMarkdownの書き方を忘れたときにみるもの。

Markdown

ドキュメントを書くのに便利なMarkdown記法ですが、まだイマイチ身についていなく、久々にブログを書くと忘れたりするのでよく使うものをφ(..)メモメモ


文字修飾

やりたいこと 書き方 Preview
太字 **sample text** sample text
下線 <u>sample text</u> sample text
取り消し ~~sample text~~ sample text
<font color="crimson">sample text</font> sample text
サイズ <span style="font-size: 200%>sample text</span> sample text

フォントの色、サイズはmarkdownでは描けないのでhtmlを直接書く。


改行

行末に半角スペースを2ついれる。
ただし、連続して改行を入れる場合は<br/>を使う。


見出し

# sample1
## sample2
### sample3

#の数で階層を表す。


テーブル

|title|description|
|||
|sample|hogehoge|
title description
sample hogehoge


コード

```cs
Console.WriteLine("sample");
```

Console.WriteLine("sample");

csはC#だけど、ほかにもいろいろ指定可能で言語名を指定すればたいていはいける。

ちなみにインラインで書く場合はバッククォートをひとつで囲む。
`sample code`


箇条書き

通常

* sample1
* sample2
* sample3
  • sample1
  • sample2
  • sample3

連番

1. sample1  (←スペース2つ入れるとインデントされる)
hogehoge1
1. sample2
1. sample3
  1. sample1
    hogehoge1
  2. sample2
  3. sample3


リンク

通常

[Finalstream](http://www.finalstream.net/)

Finalstream

ちなみにtargetを指定して別タブ等で開くようにしたい場合はHTMLで書くしかない。
<a href="http://www.finalstream.net" target="_blank">Finalstream</a>

埋め込み

[http://www.finalstream.net/:embed]

:embedをつけるだけでいい感じに埋め込んでくれる。youtubeのurlなどもOK。


エスケープ

やりたいこと 書き方 Preview
通常 \*\*sample text\*\* **sample text**
HTML `<a href="xxx">sample text</a>` <a href="xxx">sample text</a>
バッククォート `` `sample text` `` `sample text`

バッククォートのエスケープはスペースをいれてエスケープ対象より多い連続したバッククォートで囲む。


脚注

sample text[^1]
[^1]:hogehoge

ちなみに上記の記述ははてなでは効かないのではてなでは以下のようにする。

sample text((hogehoge))

sample text*1


イメージ

![Logo](http://www.finalstream.net/images/logo/topfinalstreamlogo.png)

Logo


はてなだけ

目次

以下のコードでページの上部にあるような目次生成が可能。
[:contents]




ほかにもでてきたら追記します。

*1:hogehoge

Git(SourceTree)でブランチを切り替えただけなのにエラーになって元のブランチに戻れなくなった場合

Git SourceTree

SourceTreeでmasterの変更をdevelopにマージ(普通は逆)しようと思って

masterに変更(コミット漏れ)がないことを確認してdevelopに切り替えて

masterを選択して右クリックメニューから"現在のブランチにmasterをマージ"を選んでマージしようとすると以下のエラーが…。

f:id:finalstream:20160917202114p:plain

git -c diff.mnemonicprefix=false -c core.quotepath=false merge master
Updating 41add75..b1b180a

error: Your local changes to the following files would be overwritten by merge:
    ExplorerWindowCleaner/Actions/AddFavoriteAction.cs
    ExplorerWindowCleaner/Actions/SwitchPinAction.cs
    ExplorerWindowCleaner/App.xaml.cs
    ExplorerWindowCleaner/AppUtils.cs
    ExplorerWindowCleaner/Explorer.cs
    ExplorerWindowCleaner/ExplorerCleaner.cs
    ExplorerWindowCleaner/MainWindow.xaml.cs
    ExplorerWindowCleaner/NotifyIconContainer.Designer.cs
    ExplorerWindowCleaner/NotifyIconContainer.cs
    ExplorerWindowCleaner/Properties/AssemblyInfo.cs
    ExplorerWindowCleaner/Properties/Resources.Designer.cs
    ExplorerWindowCleaner/Properties/Settings.Designer.cs
    ExplorerWindowCleaner/SpecialFolderManager.cs
Please, commit your changes or stash them before you can merge.
Aborting

ただブランチ切り替えただけなのになんで変更が…?
なんかよくわからないので一旦masterに戻って落ち着こうと思って

masterに切り替え(クリーンにチェックをいれた状態で)ようとすると以下のエラーが…。

f:id:finalstream:20160917202039p:plain

git -c diff.mnemonicprefix=false -c core.quotepath=false reset -q --hard HEAD --

git -c diff.mnemonicprefix=false -c core.quotepath=false checkout master
error: Your local changes to the following files would be overwritten by checkout:
    ExplorerWindowCleaner/Actions/AddFavoriteAction.cs
    ExplorerWindowCleaner/Actions/SwitchPinAction.cs
    ExplorerWindowCleaner/App.xaml.cs
    ExplorerWindowCleaner/AppUtils.cs

    ExplorerWindowCleaner/Explorer.cs
    ExplorerWindowCleaner/ExplorerCleaner.cs
    ExplorerWindowCleaner/MainWindow.xaml.cs
    ExplorerWindowCleaner/NotifyIconContainer.Designer.cs
    ExplorerWindowCleaner/NotifyIconContainer.cs
    ExplorerWindowCleaner/Properties/AssemblyInfo.cs
    ExplorerWindowCleaner/Properties/Resources.Designer.cs
    ExplorerWindowCleaner/Properties/Settings.Designer.cs
    ExplorerWindowCleaner/SpecialFolderManager.cs
Please, commit your changes or stash them before you can switch branches.
Aborting

え、ナニコレ、Gitこわい。

自動で破棄できなかったら手動で破棄しようということで以下のように 手動で破棄を選択しても消えない。破棄されない。

f:id:finalstream:20160917202011p:plain

詰んだ。。。

しばらく落ち着いてからいろいろと見渡すと破棄というメニューの中に 全てリセットという危険なボタンがあることを発見。
全て?どこから??と思いつつ、念のため、フォルダのバックアップを取って 思い切って実行してみた。

f:id:finalstream:20160917202926p:plain

f:id:finalstream:20160917203211p:plain

念押しで聞いてくるメッセージが出て、危険な行為をしていることを自覚した。

数分悩んだけどもこれしかないのでOKを押すと…。

f:id:finalstream:20160917203549p:plain

コミットされていない変更がありますという表示が消えていない。
嫌な予感がしつう、もっかいmasterをチェックアウトをしようとしたがエラーが変わっていない。
何も変わってない。

ほんとに詰んだ。。。

しばらく落ち着いて考えてみる。
コミットされていない変更がありますという言われているのだから言うとおりにコミットしてしまえばいいのではということでコミットをしてみることにした。

f:id:finalstream:20160917204411p:plain

そして再びmasterに切り替えてみると…

f:id:finalstream:20160917204648p:plain

戻れた。生還したー。

ブランチを切り替えて、変更を破棄しても破棄されず、元に戻れなくなった場合はコミットすればいいということですね。

破棄しても破棄されなかったのは何だったんだろう。。

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

Good WebService

いろいろな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)でファイルパスからファイル名だけを取得する。

SQL SQLite 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でも同じ方法でとれました。