SourceTree(Git)から差分ファイルを抽出してzipに圧縮
SourceTreeでコミット間の差分ファイルを抽出して zipファイル に圧縮する方法です。
フォルダ構成を維持した状態で差分が抽出されます。
リリース後に変更分のソースを渡したりするのに重宝します。
Dictionary の結合
IEnumerable.Concat でコレクションの結合ができますが、Dictionary<string, string>
同士の Concat の戻り値は
IEnumerable(Of KeyValuePair(Of String, String))
になります。戻り値の型を
Dictionary(Of String, String)
にしたい場合は、IEnumerable.ToDictionaryを使います。
続きを読むJavaMailでGmailを使う
Java側での必要最小限の設定は以下。
Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); session = Session.getInstance(props, new DefaultAuthenticator("アカウントID", "パスワード"));
ただし、これだけだと以下のエラーが返ってきます。
Please log in via your web browser and then try again. Learn more at https://support.google.com/mail/answer/78754 e130sm494606pfh.85 - gsmtp
Gmailのアカウント情報 → ログインとセキュリティ → 安全性の低いアプリの許可: 有効 で実行できるようになります。
PowerShell から Oracle に接続(ODP.NET)
Oracle Client がなくても、ODAC(ODP.NET)さえインストールすれば、PowerShellからOracleに接続できます。
ODACのインストールと環境設定
ODACのダウンロード
XCopy版をダウンロードします。(要Oracleアカウント:無料)
64ビットのOracle Data Access Components(ODAC)のダウンロード
PowerShell の .NET Frameworkのバージョンを確認
PowerShellでデフォルトで使われる.NET Framework のバージョンにはOSにより2系と4系の2種類があるので確認します。
PowerShellを起動して
PS C:\> $PSVersionTable Name Value ---- ----- PSVersion 5.1.16299.251 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.16299.251 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
CLRVersion が .NET Framework のバージョンです。
この場合は4系ですね。
※2系であっても、PowerShell.exe.config を作成することで4系にできますが、ここでは割愛。
ODACのインストール
ダウンロードしたODACのzipファイルを解凍し、解凍したフォルダに移動して、PowerShell の .NET Framework バージョンに合わせて以下のいずれかをインストールします。
.NET Framework が2系の場合
install.bat odp.net2 c:\oracle odac
サンプルスクリプト(test.ps1)
[Reflection.Assembly]::LoadFile("C:\oracle\odp.net\bin\4\Oracle.DataAccess.dll") $constr = "Data Source=サーバーアドレス/サービス名;User Id=scott;Password=tiger;" $conn = New-Object Oracle.DataAccess.Client.OracleConnection($constr) $conn.Open() $sql = "select * from emp" $command = New-Object Oracle.DataAccess.Client.OracleCommand($sql, $conn) $reader = $command.ExecuteReader() while ($reader.Read()) { $value = $reader["EMPNO"].toString() + " " + $reader["ENAME"].toString() $value } $command.Dispose() $sql = "update emp set ENAME = 'SMITH' where EMPNO = 7369" $command = New-Object Oracle.DataAccess.Client.OracleCommand($sql, $conn) $command.ExecuteNonQuery(); $command.Dispose() $conn.Close()
2系の場合は最初の行が
[Reflection.Assembly]::LoadFile("C:\oracle\odp.net\bin\2.x\Oracle.DataAccess.dll")
になります。
実行
powershell.exe -ExecutionPolicy RemoteSigned -File test.ps1
小ネタですが、powershellの引数に -ExecutionPolicy RemoteSigned を渡すことでPowerShellのデフォルト設定を変更せずにスクリプトを実行できます。