Excelのように使用できるローコード「Power Fx」をMicrosoftが開発 - GIGAZINE
Windows 10 さえあれば追加費用なくPower Automate Desktop を使ってタスクや業務の自動化が可能に - 吉田の備忘録
2021年03月03日
マイクロソフトが攻勢に出た?!
@2021/03/03 22:28
| Comment(0)
| アプリケーション開発ネタ
2020年12月04日
ローコード開発ツール
マルチデバイス対応のローコード開発ツール | マジックソフトウェア
See Our Leading Low-code Platform in Action | OutSystems
とりあえずメモだけ。
お客さんが話題にしていたので。そんなにベンダー依存をやめたいのか。。
エンドユーザーがやり始めたらぐちゃぐちゃになるだけだと思うんだけど。
ていうか結局ITが少し詳しい人間がこういうのをやる羽目になるんだ。
それでうっかりと機密情報をインターネットに大公開して、大後悔し、ローコードツールの使用が禁止されるところまで夢見た。
業務アプリの新たな開発/カスタマイズ手法 ローコードとは何なのか?ノンコードとの違いも解説
See Our Leading Low-code Platform in Action | OutSystems
とりあえずメモだけ。
お客さんが話題にしていたので。そんなにベンダー依存をやめたいのか。。
エンドユーザーがやり始めたらぐちゃぐちゃになるだけだと思うんだけど。
ていうか結局ITが少し詳しい人間がこういうのをやる羽目になるんだ。
それでうっかりと機密情報をインターネットに大公開して、大後悔し、ローコードツールの使用が禁止されるところまで夢見た。
業務アプリの新たな開発/カスタマイズ手法 ローコードとは何なのか?ノンコードとの違いも解説
@2020/12/04 21:05
| Comment(0)
| アプリケーション開発ネタ
2020年10月19日
たったの一文字:$ 自作のエクセルマクロが会社のWindows Defender でマルウェア扱いしてきたのだが、ようやく解決した
とにかく、ブロックされるたびに
その検知メッセージを見ながら「きっとこういう処理が検知されるんだろうな」というところを
検知されにくくなるように対処してきた。
###2020・11・1時点、結局は会社でのDefender誤検知は防ぐことができました。
でも自宅でそのマクロを実行すると 検知されブロックされてしまいます。自宅のWindowsのほうが新しいビルドだから?よくわからん。とにかく不毛な鼬ごっこのような気がするので自宅でのDefender誤検知対策は、コードの修正ではなく、ひたすら Microsoftに「これは誤検知だよ」と言い続ける作戦に変更しましtあ。
###
以下の画像はブロックされたタイミングで「自分が作ったマクロなんだから 許可!」とやった後の図です。
(最終的には許可はすべて取り消しました。問題を放置することにつながるので)



それでも、やっぱりブロックされ続ける。
でも、もう想像の範囲内では怪しい処理は書き換えた。直すところが分からない。。。。。
そこで最後に、「いったいどこが検知対象なのか」ということで割り出した結果以下の対応をしたところ、マクロのブロックがぴたりと止まった。
RTrim()関数 を RTrim$() に変えた(1か所)
さらに、この怪しい記述は コメントアウト ' していようがそこにあるだけでブロックされた。
'怪しいAPI宣言なども コメントアウトした文字列が残っているだけでNGである。
理由はわからないが、実際に怪しいマクロではなくても、コメントの有無だけでもブロックされることがあるという事が分かった。
なぜこれが ブロックの対象になったのか全く分からなかった。でも問題の個所はこれさえ直せばこれまでブロックされていた複数のPCでブロックされる事態はすべて解消したのだから、現時点の解決策としてはこれで間違いがない。
いつもマクロのリリース(仕上げ)に
http://cpap.com.br/orlando/VBADecompilerMore.asp
を使っているんだけど、こいつが悪さをしているんじゃないかと疑っていた時もありました。でもこいつは関係がなかった。(このツールは余計なバイナリをそぎ落としてコンパクトサイズにするのに使っています)。
会社のWin10-1909 だと問題ないんだけど、最新の2004だとVBADecompiler.exe ででコンパイルしたモジュールができたとたんに削除されてしまう。やっぱりこいつは危ないみたいだ。
怪しいコードの割り出しをするために以下の方法で行いました。
・VBAのソースコードをすべて出力しておく
・新規のマクロブックを作成し、ソースコードを1ファイルずつ取り込んでは「保存」をする
※ Defenderがブロックするタイミングは、「保存」の時だけです。おそらく VBAを保存したときに内部的なバイナリコードを生成していて、これがサーチ対象になっているっポイ(つまり、動的挙動のサーチではなくて、静的な解析をしてるんだね)。
・ここでブロックされたファイルがあった場合、そのファイルを覚えておき、次のファイルの取り込みをする。最後のファイルのインポートまでを行う。
※ 途中でコンパイルをする必要はありません。あくまで ソースコードの取り込み⇒保存 を繰り返す。
・ブロックされたファイルの 一部だけを取り込み「保存」をします。一部というのは、変数宣言、関数プロパティなど、固まりのある範囲。これらも、コンパイルが正常に行われるかどうかを確認する必要がないのでとにかく、「ブロックされたファイルの上半分」とか、そういうくくりでいいので 内容をくくりだして、マクロを保存してチェックします。
・これによって問題の関数が絞り込めるまで、行います。ファイルを割り出したときと同様、問題のある関数だけ控えておいて、それ以外の関数などは全部マクロへ保存します。
・問題の関数が絞り込めたら、関数の中のステップの一部を保存し、同じように問題の行を割り出します。
・問題の行が分かったら、そこから先は何かひらめくまで試行錯誤します。
無くてもよいステップか、書き換えはできないか?と自問自答する。
※ 私の場合は Rtrim()を Rtrim$() に書き換えてみるという事で解決するという「発見」をしました。
そのほかにも、WshShellで Copy,Move,Delete,CreateShortCut などを行うと アウトのようです。まあ、つまりマクロでファイル入出力を行っている痕跡が検知されるとかなりの確率で ブロックですん。
今後どうなるかわかりませんが、現時点のDefender対策として書き留めておきます。
※できるだけ複数のWindowsで検証されることをお勧めします。 悪意のない普通のコードを書いているとしても、お構いなしに理不尽な理由(場所)でブロックされるという事が良くわかりました。(コードそのもののお行儀が悪そうな場所でブロックされるという事は私の観測内では0件でした)
マクロコードの64Bit環境対応もできたし、こっちのめどもついた!!
先輩の家に行ったら『会社員っつーのはオンとオフの切替が必要なんだよ!わかるか!?出勤したらオフ!退勤したらオン!なんだよ!』と言って部屋のミラーボールの電源入れ始めた - Togetter
#マクロブロックされる傾向が一つ分かった#
マクロ付きブック(XLSM)形式で何の問題もなく保存できるものでも
アドイン(XLAM)形式で保存すると、ブロックされることが分かった。
同じ基準でブロックしてくれよ、、、
その検知メッセージを見ながら「きっとこういう処理が検知されるんだろうな」というところを
検知されにくくなるように対処してきた。
###2020・11・1時点、結局は会社でのDefender誤検知は防ぐことができました。
でも自宅でそのマクロを実行すると 検知されブロックされてしまいます。自宅のWindowsのほうが新しいビルドだから?よくわからん。とにかく不毛な鼬ごっこのような気がするので自宅でのDefender誤検知対策は、コードの修正ではなく、ひたすら Microsoftに「これは誤検知だよ」と言い続ける作戦に変更しましtあ。
###
以下の画像はブロックされたタイミングで「自分が作ったマクロなんだから 許可!」とやった後の図です。
(最終的には許可はすべて取り消しました。問題を放置することにつながるので)



それでも、やっぱりブロックされ続ける。
でも、もう想像の範囲内では怪しい処理は書き換えた。直すところが分からない。。。。。
そこで最後に、「いったいどこが検知対象なのか」ということで割り出した結果以下の対応をしたところ、マクロのブロックがぴたりと止まった。
RTrim()関数 を RTrim$() に変えた(1か所)
さらに、この怪しい記述は コメントアウト ' していようがそこにあるだけでブロックされた。
'怪しいAPI宣言なども コメントアウトした文字列が残っているだけでNGである。
理由はわからないが、実際に怪しいマクロではなくても、コメントの有無だけでもブロックされることがあるという事が分かった。
なぜこれが ブロックの対象になったのか全く分からなかった。でも問題の個所はこれさえ直せばこれまでブロックされていた複数のPCでブロックされる事態はすべて解消したのだから、現時点の解決策としてはこれで間違いがない。
いつもマクロのリリース(仕上げ)に
http://cpap.com.br/orlando/VBADecompilerMore.asp
を使っているんだけど
会社のWin10-1909 だと問題ないんだけど、最新の2004だとVBADecompiler.exe ででコンパイルしたモジュールができたとたんに削除されてしまう。やっぱりこいつは危ないみたいだ。
怪しいコードの割り出しをするために以下の方法で行いました。
・VBAのソースコードをすべて出力しておく
・新規のマクロブックを作成し、ソースコードを1ファイルずつ取り込んでは「保存」をする
※ Defenderがブロックするタイミングは、「保存」の時だけです。おそらく VBAを保存したときに内部的なバイナリコードを生成していて、これがサーチ対象になっているっポイ(つまり、動的挙動のサーチではなくて、静的な解析をしてるんだね)。
・ここでブロックされたファイルがあった場合、そのファイルを覚えておき、次のファイルの取り込みをする。最後のファイルのインポートまでを行う。
※ 途中でコンパイルをする必要はありません。あくまで ソースコードの取り込み⇒保存 を繰り返す。
・ブロックされたファイルの 一部だけを取り込み「保存」をします。一部というのは、変数宣言、関数プロパティなど、固まりのある範囲。これらも、コンパイルが正常に行われるかどうかを確認する必要がないのでとにかく、「ブロックされたファイルの上半分」とか、そういうくくりでいいので 内容をくくりだして、マクロを保存してチェックします。
・これによって問題の関数が絞り込めるまで、行います。ファイルを割り出したときと同様、問題のある関数だけ控えておいて、それ以外の関数などは全部マクロへ保存します。
・問題の関数が絞り込めたら、関数の中のステップの一部を保存し、同じように問題の行を割り出します。
・問題の行が分かったら、そこから先は何かひらめくまで試行錯誤します。
無くてもよいステップか、書き換えはできないか?と自問自答する。
※ 私の場合は Rtrim()を Rtrim$() に書き換えてみるという事で解決するという「発見」をしました。
そのほかにも、WshShellで Copy,Move,Delete,CreateShortCut などを行うと アウトのようです。まあ、つまりマクロでファイル入出力を行っている痕跡が検知されるとかなりの確率で ブロックですん。
今後どうなるかわかりませんが、現時点のDefender対策として書き留めておきます。
※できるだけ複数のWindowsで検証されることをお勧めします。 悪意のない普通のコードを書いているとしても、お構いなしに理不尽な理由(場所)でブロックされるという事が良くわかりました。(コードそのもののお行儀が悪そうな場所でブロックされるという事は私の観測内では0件でした)
マクロコードの64Bit環境対応もできたし、こっちのめどもついた!!
先輩の家に行ったら『会社員っつーのはオンとオフの切替が必要なんだよ!わかるか!?出勤したらオフ!退勤したらオン!なんだよ!』と言って部屋のミラーボールの電源入れ始めた - Togetter
#マクロブロックされる傾向が一つ分かった#
マクロ付きブック(XLSM)形式で何の問題もなく保存できるものでも
アドイン(XLAM)形式で保存すると、ブロックされることが分かった。
同じ基準でブロックしてくれよ、、、
@2020/10/19 21:00
| Comment(1)
| アプリケーション開発ネタ
2020年10月12日
VBAから .net アセンブリを利用する
VBからCLR(.NET)を利用する その1[準備編] - Programming Field
64bit 環境でも32 Bit環境でも区別なく同じマクロ(アドイン)が使えることに気をよくしたので、さらに欲が出た。
いろいろVBAに機能を足したいがそのためには .net が使えると都合が良い。
64bit 環境でも32 Bit環境でも区別なく同じマクロ(アドイン)が使えることに気をよくしたので、さらに欲が出た。
いろいろVBAに機能を足したいがそのためには .net が使えると都合が良い。
@2020/10/12 23:12
| Comment(1)
| アプリケーション開発ネタ
2020年10月08日
いつの間にか 64Bit版 VBAへの移植(というかVBAソースコードの32Bit版との共用)は「無理」から「可能」になっていた
LongPtr がいい仕事してるという事が分かった。
Excel2010 以降の環境をターゲットにし、2007より古い環境は切り捨てる、という事でもあるけれども
VBAでWin32APIの64bit対応自動変換プログラムを作ってみた - えくせるちゅんちゅん
数年前まで手持ちの 32Bit版エクセルで動くマクロアドインを同じコードで
64Bit版ExcelVBA環境でも動かそうと、頑張っていた。
その中での一番の強敵は Win32APIの64ビット対応と、あとは MSCOMCTRL.ocx の参照設定である。このOCXが、当時は64Bit版にそもそも存在しなかったのだ。この時点であきらめていたんだけど。
2020年の今、それらは64Bit版にも用意されている。
そこで重い腰を上げ API対応に取り組んでみると、意外と簡単。これまで 条件付きコンパイル引数で VBA7 やら Win64やらで切り替えていた(そうするようにおすすめされていた)記述は、全く条件分岐させる必要がなく 1パターンの記述で(だいたいが)対処可能という事が分かった。
非常に大事な資料は Win32API_PtrSafe.txt 。まずは忠実にこのAPI宣言を コピーする。今までいい加減に Long だとか LongLongとか、Boolean とか書いていたところを改める。
Excel2010以降を対象にする限りは、32Bit環境でも PtrSafe宣言は 書いてあっても動く。
しかも LongPtr を書くと、32Bit環境では自動的にLong と解釈される。
つまり #If VBA7 で振り分ける必要がない。
一気に手持ちのマクロを改修した。 置き換えたAPI宣言が 手持ちの定義と違っていて動かなかったところが少しだけあったけど、そういう変な記述を見直すいい機会になった。
確実に64Bit対応するには、Excelを64Bit版導入して、ビルドエラーが出なくなるまで完全に問題を消し込むこと。思い込みで型を書き換えていってもどこかで間違える。
#余談
使用するOSのBit数も64Bit環境であることを前提にできるととても楽ちんだし、
さらにはOSについてもWindows10と決め打ちできるともっと楽だ、
Office2016以降だとするともっともっと簡単だ
Excel2010 以降の環境をターゲットにし、2007より古い環境は切り捨てる、という事でもあるけれども
VBAでWin32APIの64bit対応自動変換プログラムを作ってみた - えくせるちゅんちゅん
数年前まで手持ちの 32Bit版エクセルで動くマクロアドインを同じコードで
64Bit版ExcelVBA環境でも動かそうと、頑張っていた。
その中での一番の強敵は Win32APIの64ビット対応と、あとは MSCOMCTRL.ocx の参照設定である。このOCXが、当時は64Bit版にそもそも存在しなかったのだ。この時点であきらめていたんだけど。
2020年の今、それらは64Bit版にも用意されている。
そこで重い腰を上げ API対応に取り組んでみると、意外と簡単。これまで 条件付きコンパイル引数で VBA7 やら Win64やらで切り替えていた(そうするようにおすすめされていた)記述は、全く条件分岐させる必要がなく 1パターンの記述で(だいたいが)対処可能という事が分かった。
非常に大事な資料は Win32API_PtrSafe.txt 。まずは忠実にこのAPI宣言を コピーする。今までいい加減に Long だとか LongLongとか、Boolean とか書いていたところを改める。
Excel2010以降を対象にする限りは、32Bit環境でも PtrSafe宣言は 書いてあっても動く。
しかも LongPtr を書くと、32Bit環境では自動的にLong と解釈される。
つまり #If VBA7 で振り分ける必要がない。
一気に手持ちのマクロを改修した。 置き換えたAPI宣言が 手持ちの定義と違っていて動かなかったところが少しだけあったけど、そういう変な記述を見直すいい機会になった。
確実に64Bit対応するには、Excelを64Bit版導入して、ビルドエラーが出なくなるまで完全に問題を消し込むこと。思い込みで型を書き換えていってもどこかで間違える。
#余談
使用するOSのBit数も64Bit環境であることを前提にできるととても楽ちんだし、
さらにはOSについてもWindows10と決め打ちできるともっと楽だ、
Office2016以降だとするともっともっと簡単だ
@2020/10/08 22:13
| Comment(0)
| アプリケーション開発ネタ
2020年06月29日
ローカル開発環境のHTTPS化
@2020/06/29 23:54
| Comment(0)
| アプリケーション開発ネタ
2020年05月24日
VBA で面白そうなところを見つけたのでこれから読んでみる
Get Started
ざっと読んでみたら、なんか 製品版のライブラリの解説書じゃないか? AS400とか書いてあって面白そうだったけど、読むのやめた。
あとは オールライト千栄美 さんの、英語ブログが気になってます。 著作も買ってしまいました。
http://blog.livedoor.jp/chiemi_uk/archives/55822137.html
著作は3時間で読み切りました。
ざっと読んでみたら、なんか 製品版のライブラリの解説書じゃないか? AS400とか書いてあって面白そうだったけど、読むのやめた。
あとは オールライト千栄美 さんの、英語ブログが気になってます。 著作も買ってしまいました。
http://blog.livedoor.jp/chiemi_uk/archives/55822137.html
著作は3時間で読み切りました。
@2020/05/24 00:20
| Comment(0)
| アプリケーション開発ネタ
2020年02月11日
Windows7 での利用をやめる時が来たか、、
Windows10のトースト通知に対応しようとすると、Windows7で別のソリューションが必要になったりして、2重での機能開発・サポートを強いられるなんてこともあったが Windows7をサポート対象外にしても問題ないときがもうやってきたのだから、Windows7の互換性なぞ無視して、Windows7では動かんぜい! と言ってしまおうではないか。
気が楽になった。
気が楽になった。
@2020/02/11 19:53
| Comment(1)
| アプリケーション開発ネタ
そろそろ .net Framework 2.0 対応をやめる時が来たか、、、
今まで、会社では、互換性を重視して、常に .net Framework 2.0 と 4.0 の両方でビルド可能なコーディングをしてきた(VBとC#の両方で)。
ここ数年、それもしんどくなってきていたのだが、今年Windows7 のサポートが終わったこともあったし、もういいんじゃないかと割り切ることにした。
身軽になった。
ここ数年、それもしんどくなってきていたのだが、今年Windows7 のサポートが終わったこともあったし、もういいんじゃないかと割り切ることにした。
身軽になった。
@2020/02/11 19:51
| Comment(0)
| アプリケーション開発ネタ
2019年07月15日
英語ができるとプログラミングの効率よくなる(仮説)
仮説というかほぼ間違いない事実なんですけども。
プログラミングに英語は必要なのか決着をつけようと思う | CodeCampus
同僚のインド人(Aさん)は普通に英語ができます。そして、新しい開発環境でもものすごいスピードで習得してアウトプットできます。
本人曰くプログラミングだけしていたいとのことなので根っからの開発好きなのは間違いない。
方や同じその環境で私が勉強しているのにいまだ追いつかない。いちいちリファレンスをみて、日本語の参考文献を見てようやくサンプルコードの意味が分かる。そんなレベル。
で結局のところ英語が分かれば参考書も必要ないというケースに何度か出くわした。
辞書レベルの知識で何とかなることが結構あるのね。
そういうことが積み重なると開発のスピードの差となって現れてきます。
英語圏の人にとって見たら、日常語で全部書いてあるイメージなんだろうな。
結論としてはもっと英語を身に着けたい。
プログラミングに英語は必要なのか決着をつけようと思う | CodeCampus
同僚のインド人(Aさん)は普通に英語ができます。そして、新しい開発環境でもものすごいスピードで習得してアウトプットできます。
本人曰くプログラミングだけしていたいとのことなので根っからの開発好きなのは間違いない。
方や同じその環境で私が勉強しているのにいまだ追いつかない。いちいちリファレンスをみて、日本語の参考文献を見てようやくサンプルコードの意味が分かる。そんなレベル。
で結局のところ英語が分かれば参考書も必要ないというケースに何度か出くわした。
辞書レベルの知識で何とかなることが結構あるのね。
そういうことが積み重なると開発のスピードの差となって現れてきます。
英語圏の人にとって見たら、日常語で全部書いてあるイメージなんだろうな。
結論としてはもっと英語を身に着けたい。
2019年07月08日
20年前、今の自分を想像できなかった
20年でソフトウェア開発の景色はどのぐらい変わったのか? - Qiita
あと20年、いったいどうなっているんだろう。
あと20年頑張れるだけの、新しい何かを今、始める(育む)べきなんだよなぁ。令和元年だし。
あと20年、いったいどうなっているんだろう。
あと20年頑張れるだけの、新しい何かを今、始める(育む)べきなんだよなぁ。令和元年だし。
2019年05月12日
VBAのPublicNotCreatableの設定をよくわからないまま使っていた
PublicNotCreatable って、クラスモジュールをブック外(アドイン外)VBAプロジェクトから見えるようにするってことなのね。
ならば基本的には全部 PublicNotCreatable にする必要なくて、Privateで アドイン内で完結するように作っていれば問題なし、と。
PublicNotCreatable
自作のアドインブックを見たら、無意味に PublicNotCreatable を設定しているのがあったので全部Privateに戻してる。コンパイルがOKだったので不都合ないでしょう。
ならば基本的には全部 PublicNotCreatable にする必要なくて、Privateで アドイン内で完結するように作っていれば問題なし、と。
PublicNotCreatable
自作のアドインブックを見たら、無意味に PublicNotCreatable を設定しているのがあったので全部Privateに戻してる。コンパイルがOKだったので不都合ないでしょう。
タグ:それでも問題はなかった
2019年03月17日
2019年03月01日
2019年02月08日
dockerとVMWareを同一ホストに入れるのを断念。dockerはVMWareのゲストOSのほうに導入することにする。(CPUの仮想化の仮想化を使う)。
dokerの普通のコンテナを使うとLinuxコンテナーを使うことになり、Windows版のdockerデスクトップをインストールすると HyperーVが有効化されてしまう。
そうなると、同一ホストではVmWareやらVirtualBoxは締め出されてしまう。これはいやだ。
となると、dokerをホストOSに入れることはリスクでしかない。
しかも そういう相性の悪さを考慮していないほかのアプリ、例えばNoxPlayerを起動すると ブルースクリーンで落ちる。Windows10が確実に落ちます。
以下の写真が久しぶりに見たブルースクリーン

昔に比べて落ち着いた青になっています。
100%になっても自動的に再起動してくれなくて1時間くらい待ちました。
というわけで方針変換し、ホストOSでdockerを動かす代わりにゲストOSで動かすことに決めました。
dockerクジラ君にはサヨナラです。
ホストOSから先にHyper-Vをアンインストールしたところ困った顔をしていました(以下の図)

新しいdockerの行き先の ゲストOSはWindows10 Pro 64Bit版 で決定です。メモリは12GB積むことにしました。
VmWareで起動したところ、初期状態では Hyper-Vプラットフォームが有効化できませんでした。

こういう時にはゲストOSの仮想マシンの設定の
仮想エンジンの VTの有効化をチェックします。

有効化した後でゲストOSを起動すると、ゲストOSの中でもHyper-Vが有効にできます。
さて、これでここに dockerを入れましょう。

そうなると、同一ホストではVmWareやらVirtualBoxは締め出されてしまう。これはいやだ。
となると、dokerをホストOSに入れることはリスクでしかない。
しかも そういう相性の悪さを考慮していないほかのアプリ、例えばNoxPlayerを起動すると ブルースクリーンで落ちる。Windows10が確実に落ちます。
以下の写真が久しぶりに見たブルースクリーン

昔に比べて落ち着いた青になっています。
100%になっても自動的に再起動してくれなくて1時間くらい待ちました。
というわけで方針変換し、ホストOSでdockerを動かす代わりにゲストOSで動かすことに決めました。
dockerクジラ君にはサヨナラです。
ホストOSから先にHyper-Vをアンインストールしたところ困った顔をしていました(以下の図)

新しいdockerの行き先の ゲストOSはWindows10 Pro 64Bit版 で決定です。メモリは12GB積むことにしました。
VmWareで起動したところ、初期状態では Hyper-Vプラットフォームが有効化できませんでした。

こういう時にはゲストOSの仮想マシンの設定の
仮想エンジンの VTの有効化をチェックします。

有効化した後でゲストOSを起動すると、ゲストOSの中でもHyper-Vが有効にできます。
さて、これでここに dockerを入れましょう。

2019年01月18日
Java使っていないの?じゃあアンインストールしようぜ!って自ら提案してくるJavaインストーラ嫌いじゃない

その後提案通りにアンインストールしました。 またの機会にはインストールすることを心に決めた。


そうはいっても eclipse IDE のスタンドアロン版が入っているので Java SDK はいつも入っているんだけどね。
タグ:ならばサヨナラだ
2018年11月15日
これからのJavaはAmazon一択になるかも
【速報】マルチプラットフォームで利用可能なOpenJDKのAmazon Correttoが発表されました! | DevelopersIO
Oracleどうしようもないな、Oracleのライセンスも信じられない値段だ(と聞く)し。
Oracleどうしようもないな、Oracleのライセンスも信じられない値段だ(と聞く)し。
2018年08月07日
サマータイムを日本で導入すると2時間なの?
コンピュータシステムのサマータイム対応を巡る二つの楽観論 - アンカテ
ヨーロッパ、ドイツを例にとると、
サマータイムは3月の最終日曜日に始まり、日本との時差は7時間。*今現在こちらですね*
10月の最終日曜日に終わり、日本との時差は8時間
つまりサマータイムを導入しているドイツでも+1時間の時差で調整しているんですね。
サマータイムについて
ところが日本のサマータイムの時差は2時間(と言っている)。
これに日本のサマータイムの2時間を加えて(減らして)考えると、ドイツとの時差はどうなるの、わけわからないよ。
サマータイムで日本中の電波時計がゴミになる(かも)という話 | mzsm.me
ヨーロッパ、ドイツを例にとると、
サマータイムは3月の最終日曜日に始まり、日本との時差は7時間。*今現在こちらですね*
10月の最終日曜日に終わり、日本との時差は8時間
つまりサマータイムを導入しているドイツでも+1時間の時差で調整しているんですね。
サマータイムについて
ところが日本のサマータイムの時差は2時間(と言っている)。
これに日本のサマータイムの2時間を加えて(減らして)考えると、ドイツとの時差はどうなるの、わけわからないよ。
サマータイムで日本中の電波時計がゴミになる(かも)という話 | mzsm.me
タグ:1時間じゃないの
2018年05月15日
2018年04月21日
Javaの未来はどうなっちゃうんだろう。ライセンスの話とか
Java Future Release Notices
いまだにJava6あたりで開発しているものがあるのでそろそろバージョンアップをと思ったら、商用ライセンスが必要とかいったいどんな世界にJavaは進もうとしているのか。
2018年にJavaを利用している人は全員理解すべきことを説明してみる(追記あり) - orangeitems’s diary
あ〜、、これか(個人的感想)。SAP システムでJavaを使っている環境についてのヒアリングがあったものだから何のことかと思っていたけど話がここにつながるのか。CPUコア数に応じて課金されるわけで、、こりゃたまらん。
本の虫: Javaの権利にまつわるまとめがすごい
Oracleが企業のJavaユーザーに対しライセンス料徴収活動を進めている? | スラド デベロッパー
波紋呼ぶJavaサポート打ち切りの横で、IBMがちゃっかりバージョン8のサポートを2022年まで伸ばしているという話 - orangeitems’s diary
2019年にJavaを利用している人は全員理解すべきことを説明してみる - orangeitems’s diary
いまだにJava6あたりで開発しているものがあるのでそろそろバージョンアップをと思ったら、商用ライセンスが必要とかいったいどんな世界にJavaは進もうとしているのか。
2018年にJavaを利用している人は全員理解すべきことを説明してみる(追記あり) - orangeitems’s diary
あ〜、、これか(個人的感想)。SAP システムでJavaを使っている環境についてのヒアリングがあったものだから何のことかと思っていたけど話がここにつながるのか。CPUコア数に応じて課金されるわけで、、こりゃたまらん。
本の虫: Javaの権利にまつわるまとめがすごい
Oracleが企業のJavaユーザーに対しライセンス料徴収活動を進めている? | スラド デベロッパー
波紋呼ぶJavaサポート打ち切りの横で、IBMがちゃっかりバージョン8のサポートを2022年まで伸ばしているという話 - orangeitems’s diary
2019年にJavaを利用している人は全員理解すべきことを説明してみる - orangeitems’s diary
2018年03月07日
良かった。VB系は空気のような存在だね。今年はPython活用したい。
人気が下降しプログラマの求人も少ないプログラミング言語ワースト10は? 一方で仕事の多い言語は? CodementorXとCoding Dojoの調査結果 − Publickey
最近はC#で新規アプリを作ることが多くなってきた。
Javaは知らん(知ってるけどそういう意味じゃなくて)。JavaはOracleのさじ加減一つでどうにでもなる状況が見えてきたので今後どういう立場に落ち着くかわからんね〜
閑話休題。
Pythonを覚えたいんだけど、ただ覚えるだけだとつまらないので目標とか、こういうことできるよっていう餌がほしいなぁ。
将来的に MS Office のマクロ言語にパイソンが搭載されるっていう話はどうなっているのか。
最近はC#で新規アプリを作ることが多くなってきた。
Javaは知らん(知ってるけどそういう意味じゃなくて)。JavaはOracleのさじ加減一つでどうにでもなる状況が見えてきたので今後どういう立場に落ち着くかわからんね〜
閑話休題。
Pythonを覚えたいんだけど、ただ覚えるだけだとつまらないので目標とか、こういうことできるよっていう餌がほしいなぁ。
将来的に MS Office のマクロ言語にパイソンが搭載されるっていう話はどうなっているのか。
2018年01月05日
関係ないと思うけど、QlikSense Desktop はとてもメモリーを食う
Googleが発見した「CPUの脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめ - 4Gamer.net
Download Free Data Visualization Development Platform
現代アプリは調子が悪くても他のアプリを巻き添えにすることはそうそうないが、このQlikSense (Desktop版) は セルフサービスBIを実現するツールなわけだが、うっかり大量のデータを、データソース間の結合をせずにそれぞれのデータ項目(ディメンジョン)を両方表示しようものなら CROSS JOINが発生し、一瞬でリソースを食い尽くす。そしてハングアップするのだが この時に 他のアプリの操作も何もできなくなる。最近使用したアプリではこの 暴れん坊ぶりは QlikSenseでしか見かけたことはない。本当にひどいったらありゃしない。タスクマネージャを立ち上げて無反応になったアプリを強制終了して、、、という手段すら 全く手を出せないような状態になるのだ。
もう去年の話なので 記憶にある限りだと以下の環境で発生した。
・QlikSense DeskTop 3.2
・Windows7
・メモリ8GB
・Corei5
思い出しながら記事を書いてメモとしておきます。
Googleが発見した「CPUの脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめ - 4Gamer.net
Download Free Data Visualization Development Platform
現代アプリは調子が悪くても他のアプリを巻き添えにすることはそうそうないが、このQlikSense (Desktop版) は セルフサービスBIを実現するツールなわけだが、うっかり大量のデータを、データソース間の結合をせずにそれぞれのデータ項目(ディメンジョン)を両方表示しようものなら CROSS JOINが発生し、一瞬でリソースを食い尽くす。そしてハングアップするのだが この時に 他のアプリの操作も何もできなくなる。最近使用したアプリではこの 暴れん坊ぶりは QlikSenseでしか見かけたことはない。本当にひどいったらありゃしない。タスクマネージャを立ち上げて無反応になったアプリを強制終了して、、、という手段すら 全く手を出せないような状態になるのだ。
もう去年の話なので 記憶にある限りだと以下の環境で発生した。
・QlikSense DeskTop 3.2
・Windows7
・メモリ8GB
・Corei5
思い出しながら記事を書いてメモとしておきます。
Googleが発見した「CPUの脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめ - 4Gamer.net
2017年12月21日
今更になってIE9での動作検証がしたくなったらどうする?
Webアプリサイトのデザイン一新を請け負って、完成させた。
見積もり要件には IE11で確認しますと書いておいたので必要ないのだが 無償で最新のEdgeや、FireFox、Chromeでも破綻無いことをチェックした。 完璧だと思っていた。
ふと、Webサイトのアクセスログを分析すると、利用者のブラウザーは半分がIE9からのアクセスだった。
数人だけが頻繁にIE9で利用しているだけかもしれないが、これは見過ごせないと思いIE9での動作チェックの方法を探していると以下のサイトを発見。
Free Virtual Machines from IE8 to MS Edge - Microsoft Edge Development
マイクロソフトが Windows7+IE8 、IE9, IE10 、IE11 および Windows10+Edge, Windows8.1+IE11 という 環境を 仮想マシンで提供してくれている。
利用に制限はあるが、ブラウザーの動作検証だけできればよいので最適なソリューションである。ただ、英語版IEだけなので日本語フォントが微妙に中国語の漢字フォントになってしまって見えたりするがそこは我慢。
さっそくVirtualBoxの仮想マシンをダウンロードしてテストしたところ案の定、最新のブラウザーに特化しすぎて IE9では従来と見かけが大幅に変わっているところを発見。WebのCSSの情報を見てホイホイ取り入れていると古いブラウザーの考慮が抜けてしまうという事があるという好例。
IE9でも、最新のブラウザで確認したのとほぼ同じ修正結果の同じイメージになるように後方互換性を取るためのスタイルシートを考えながらようやく妥協点を見つけてほっとしたところ。
・VirtualBox
仮想マシンソフトウェア はこちら Downloads – Oracle VM VirtualBox
見積もり要件には IE11で確認しますと書いておいたので必要ないのだが 無償で最新のEdgeや、FireFox、Chromeでも破綻無いことをチェックした。 完璧だと思っていた。
ふと、Webサイトのアクセスログを分析すると、利用者のブラウザーは半分がIE9からのアクセスだった。
数人だけが頻繁にIE9で利用しているだけかもしれないが、これは見過ごせないと思いIE9での動作チェックの方法を探していると以下のサイトを発見。
Free Virtual Machines from IE8 to MS Edge - Microsoft Edge Development
マイクロソフトが Windows7+IE8 、IE9, IE10 、IE11 および Windows10+Edge, Windows8.1+IE11 という 環境を 仮想マシンで提供してくれている。
利用に制限はあるが、ブラウザーの動作検証だけできればよいので最適なソリューションである。ただ、英語版IEだけなので日本語フォントが微妙に中国語の漢字フォントになってしまって見えたりするがそこは我慢。
さっそくVirtualBoxの仮想マシンをダウンロードしてテストしたところ案の定、最新のブラウザーに特化しすぎて IE9では従来と見かけが大幅に変わっているところを発見。WebのCSSの情報を見てホイホイ取り入れていると古いブラウザーの考慮が抜けてしまうという事があるという好例。
IE9でも、最新のブラウザで確認したのとほぼ同じ修正結果の同じイメージになるように後方互換性を取るためのスタイルシートを考えながらようやく妥協点を見つけてほっとしたところ。
・VirtualBox
仮想マシンソフトウェア はこちら Downloads – Oracle VM VirtualBox
タグ:仮想マシン貸そうか?
2017年10月26日
FFFTP開発お疲れ様です
FTPクライアント「FFFTP」ついに開発終了か 6年前に“引き継いだ”開発者が表明 - ITmedia NEWS
今はもうWinSCPで十分な感じ。
WinSCPだとC#(.net)で組み込みFTP(SCP)ができるライブラリーがあるので プログラム中に高度なファイル転送処理を実装するのもお手軽簡単。
今はもうWinSCPで十分な感じ。
WinSCPだとC#(.net)で組み込みFTP(SCP)ができるライブラリーがあるので プログラム中に高度なファイル転送処理を実装するのもお手軽簡単。
タグ:からのWinSCP推し
2017年08月07日
正規表現の先読み戻り読みの意味を考えて構文を暗記!
Perlの正規表現における「先読み/後読み」に関する私的まとめ - the code to rock
そんなことはどうでもよいという人は このページを戻るか、次の記事を先読みしましょう。
They don't care about it!
(? ) は これらの先読み (look a head )構文の 基本系であり、これに = で肯定(?=)、! で否定(?!)。
そして < を付けると 戻り読み( look behind ) となる。
一致した文字列は記憶されない(マッチの結果には現れない)。
一方 (?:)は 記憶されないが、マッチの結果には含まれる。
※EmEditor にて確認。
そんなことはどうでもよいという人は このページを戻るか、次の記事を先読みしましょう。
They don't care about it!
(? ) は これらの先読み (look a head )構文の 基本系であり、これに = で肯定(?=)、! で否定(?!)。
そして < を付けると 戻り読み( look behind ) となる。
一致した文字列は記憶されない(マッチの結果には現れない)。
一方 (?:)は 記憶されないが、マッチの結果には含まれる。
※EmEditor にて確認。
2017年06月23日
NPOIの最新版がNugetに置いてあった!! nuget万歳
NuGet Gallery | NPOI 2.3.0
私は nuget のパッケージをダウンロードして解凍して中身を取り出して自分で参照登録する派です。 IDEのアドオンとかでは管理しません。(できません)。
npoi本家の CodePlex は閉鎖が決まっているのでバージョンも2.2.1で止まっていたのでこれで終わりかと思っていたんだよ、、、NPOI - Home
個人的な希望として nuget のようにポータブルで利用できるライブラリがほしいのは DB2 のクライアントドライバー。 Oracleは 公式版があるけどDB2は ラッパーのORMapplerしかないじゃん?
あとは CrystalReport 。これも nuget を探し回っていくつかのアセンブリを手に入れて、ビルドエラーが出ないところまで行ったんだけど、実行時に ライブラリー参照(ファイルが見つからない)エラーが出るんだよ。結局使えない。ただしこの2つのミドルウェアはもともとインストーらが巨大。コンパクトなDLLにまとまるのか疑問である。
Oracleの公式ドライバーは本当によく頑張ったと思う。
ただまあ、Java方面を見ると これらはすべてポータブルに利用できるので .net も早くその域に到達してほしいと願っている。さらにはそれらが Linux でも動くことを。
とは言え自作ライブラリーDLLですら Win32APIを呼んでいるものがたくさんあるからLINUXでの動作はなかなか厳しいことは認める。
私は nuget のパッケージをダウンロードして解凍して中身を取り出して自分で参照登録する派です。 IDEのアドオンとかでは管理しません。(できません)。
npoi本家の CodePlex は閉鎖が決まっているのでバージョンも2.2.1で止まっていたのでこれで終わりかと思っていたんだよ、、、NPOI - Home
個人的な希望として nuget のようにポータブルで利用できるライブラリがほしいのは DB2 のクライアントドライバー。 Oracleは 公式版があるけどDB2は ラッパーのORMapplerしかないじゃん?
あとは CrystalReport 。これも nuget を探し回っていくつかのアセンブリを手に入れて、ビルドエラーが出ないところまで行ったんだけど、実行時に ライブラリー参照(ファイルが見つからない)エラーが出るんだよ。結局使えない。ただしこの2つのミドルウェアはもともとインストーらが巨大。コンパクトなDLLにまとまるのか疑問である。
Oracleの公式ドライバーは本当によく頑張ったと思う。
ただまあ、Java方面を見ると これらはすべてポータブルに利用できるので .net も早くその域に到達してほしいと願っている。さらにはそれらが Linux でも動くことを。
とは言え自作ライブラリーDLLですら Win32APIを呼んでいるものがたくさんあるからLINUXでの動作はなかなか厳しいことは認める。
2017年06月14日
今年は更新なしかと思ったけど オラクル公式 ODP.net 管理ドライバーが出てたー(5月末に)
Oracle Client インストール不要、単体で DB接続可能な Oracle ODP.NET, Managed Driver。: NN Space BLOG-NN空間ブログ
NuGet Gallery | Official Oracle ODP.NET, Managed Driver 12.2.1100
ダウンロード履歴数を「引用」してしまいますが
まだ1万ダウンロード行ってません。
Version History
Version Downloads Last updated
Official Oracle... 12.2.1100 (this version) 9,347 2017年5月31日
Official Oracle... 12.1.24160719 153,844 2016年9月17日
Official Oracle... 12.1.24160419 101,273 2016年4月27日
Official Oracle... 12.1.2400 186,253 2015年10月14日
Official Oracle... 12.1.22 91,926 2015年6月23日
Official Oracle... 12.1.21 76,580 2015年1月16日
OracleのClientソフトウェアを一切インストールする必要がないので .net 開発でOracle接続する場合には超おすすめです。
DB2でもこういうポータブルなドライバー出してくれるといいんだけど、IBMって上下1バージョンくらいしか接続互換性ないんだよね、つらみ。
NuGet Gallery | Official Oracle ODP.NET, Managed Driver 12.2.1100
ダウンロード履歴数を「引用」してしまいますが
まだ1万ダウンロード行ってません。
Version History
Version Downloads Last updated
Official Oracle... 12.2.1100 (this version) 9,347 2017年5月31日
Official Oracle... 12.1.24160719 153,844 2016年9月17日
Official Oracle... 12.1.24160419 101,273 2016年4月27日
Official Oracle... 12.1.2400 186,253 2015年10月14日
Official Oracle... 12.1.22 91,926 2015年6月23日
Official Oracle... 12.1.21 76,580 2015年1月16日
OracleのClientソフトウェアを一切インストールする必要がないので .net 開発でOracle接続する場合には超おすすめです。
DB2でもこういうポータブルなドライバー出してくれるといいんだけど、IBMって上下1バージョンくらいしか接続互換性ないんだよね、つらみ。
2017年05月05日
クエリーに囲まれた世界:LINQと共通表式
先日までは、Oracleで クエリー(とストアドプロシージャ)をゴリゴリ書いていました。 最新のOracleだったので共通表式も難なく使えました。
そこでの構文がしっくり来たところで 最近は SQL Server + C# + LINQ という案件も着手しました。
LINQは情報だけは集めていたものの、普段保守するVB.net案件が .net 2.0 から動作を保証しなければならず LINQはあきらめていました。
という事情があって、LINQの実践は初めてでしたが、すでにあるLINQ案件の改修だったのでそこにあるLINQの実際に動作するサンプルが大量にある状態。
これらを眺めながら少しずつ変更して覚えていったら意外とこれもすんなりと使えるようになりました。
結論:クエリー万歳。、、じゃなくて、何となくこの両者 LINQと共通表式が似ているなーとふと思ったんです。(GWなしで休日出勤しながら)
これ以外にも 売り上げ分析のデータ集計の案件などなどもあって、結局のところクエリーと毎日にらめっこしている日々だなと思った。
関係ないけど(なくもないけど)今までだったら .net の世界ではデータテーブル(データセット、データアダプター)っていうADOの世界がデータ操作の場だった(古い?)と思っていたんだけども、LINQによって 準備も手間もいらない、DBとリストを密に連携することが可能になってきた感じ。 この仕組みって Javaのパラダイムでいえば、サーブレットがJSPになったようなものなのかなとこれまた無責任にふと思う。
いろいろ調べてたらLINQってもう10年位前のテクノロジーなんだね。
特集:C#プログラマーのためのLINQ超入門(後編):LINQによるデータベース・アクセスとO/Rマッピング (3/3) - @IT
でもって、外部キーを追っかけて参照できるってのは これまた初めて知った。こういう仕組みは 確かServiceNow上でアプリ開発した時のテーブル設計にもあった気がする。
どんな開発環境でも、目指すところは似たようなところなんだなーとしみじみと感じる。
そこでの構文がしっくり来たところで 最近は SQL Server + C# + LINQ という案件も着手しました。
LINQは情報だけは集めていたものの、普段保守するVB.net案件が .net 2.0 から動作を保証しなければならず LINQはあきらめていました。
という事情があって、LINQの実践は初めてでしたが、すでにあるLINQ案件の改修だったのでそこにあるLINQの実際に動作するサンプルが大量にある状態。
これらを眺めながら少しずつ変更して覚えていったら意外とこれもすんなりと使えるようになりました。
結論:クエリー万歳。、、じゃなくて、何となくこの両者 LINQと共通表式が似ているなーとふと思ったんです。(GWなしで休日出勤しながら)
これ以外にも 売り上げ分析のデータ集計の案件などなどもあって、結局のところクエリーと毎日にらめっこしている日々だなと思った。
関係ないけど(なくもないけど)今までだったら .net の世界ではデータテーブル(データセット、データアダプター)っていうADOの世界がデータ操作の場だった(古い?)と思っていたんだけども、LINQによって 準備も手間もいらない、DBとリストを密に連携することが可能になってきた感じ。 この仕組みって Javaのパラダイムでいえば、サーブレットがJSPになったようなものなのかなとこれまた無責任にふと思う。
いろいろ調べてたらLINQってもう10年位前のテクノロジーなんだね。
特集:C#プログラマーのためのLINQ超入門(後編):LINQによるデータベース・アクセスとO/Rマッピング (3/3) - @IT
でもって、外部キーを追っかけて参照できるってのは これまた初めて知った。こういう仕組みは 確かServiceNow上でアプリ開発した時のテーブル設計にもあった気がする。
どんな開発環境でも、目指すところは似たようなところなんだなーとしみじみと感じる。
2017年04月20日
JavaScriptにはブロックスコープが無いって、初めて知ったよ。。
ECMAScript 2015 より前の JavaScript にはブロックスコープがありません
JavaScriptのインライン関数とスコープ | 株式会社シンメトリック公式ブログ |
他のC/Java系言語経験の次に、JavaScript開発を始めるにあたっての認識として、まずこの辺を頭に叩き込んでおくとあとあと悩まないで済むかも。
ECMAScript 2015 からは、let 文による変数宣言がブロックスコープとなります。
制御フローとエラー処理 - JavaScript | MDN
let で代入とか、いにしえのVBの時代を思い出します。。。。
JavaScriptのインライン関数とスコープ | 株式会社シンメトリック公式ブログ |
他のC/Java系言語経験の次に、JavaScript開発を始めるにあたっての認識として、まずこの辺を頭に叩き込んでおくとあとあと悩まないで済むかも。
ECMAScript 2015 からは、let 文による変数宣言がブロックスコープとなります。
制御フローとエラー処理 - JavaScript | MDN
let で代入とか、いにしえのVBの時代を思い出します。。。。
タグ:今までよく開発できてたな
2017年04月06日
[SQL]共通表式を使えば、ごちゃごちゃしたサブクエリを一掃できたり、再帰呼び出しができたりする。
新しい業界標準「SQL99」詳細解説
メモ。
共通表式のメリット
・1つのクエリーだけで使用するローカルな(使い捨て)ビューを定義できる
・そのため、サブクエリでごちゃごちゃしなくなるので、見通しが良い
・直前に定義した共通表式は、すぐ後で参照できる(カスケード参照できる)
つまり、明細レベルでまとめて、1段階グループ化して、2段階グループ化して みたいなことがそれぞれをビューにすることなく、1つのクエリで完結する。そしてそのそれぞれを、最終的なSELECT文の中で別々の表として参照できる。
・自己参照のパターン(共通表式のUNION )を取ることで繰り返し参照ができる。これはViewでは実現できない共通表式ならではの使い方。これまでなら、クエリーでは実現できず ストアドプロシジャを書かなければならなかったケースがこれに該当する。
今までよりさらにSQLが楽しく活用できるようになる素晴らしい機能だと思う。
さらにPostgreSQLだと、WITH にDELETE文を記述できて、その削除結果をSELECTしたり、INSERTの対象にできたりするのでこれもものすごく便利だと思う。 SQL ServerやDB2やOracleでも使えるといいのに。
PostgreSQL WITH問い合わせ(共通テーブル式)
20170422_233829 もう一個特徴的なこと
・複数定義した共通表式のうち特定の式を最終SELECT句で参照しなくてもいい
これがあるから、いままでワークテーブルを作らないとできなかったようなクエリーも1つのクエリーで完結できてしまう。ワークテーブル的に使えるのにテーブル定義は不要で、共通表式の定義だけで使える。なんて便利なんだ。
共通表式はかなり強力なクエリー構文だ。
メモ。
共通表式のメリット
・1つのクエリーだけで使用するローカルな(使い捨て)ビューを定義できる
・そのため、サブクエリでごちゃごちゃしなくなるので、見通しが良い
・直前に定義した共通表式は、すぐ後で参照できる(カスケード参照できる)
つまり、明細レベルでまとめて、1段階グループ化して、2段階グループ化して みたいなことがそれぞれをビューにすることなく、1つのクエリで完結する。そしてそのそれぞれを、最終的なSELECT文の中で別々の表として参照できる。
・自己参照のパターン(共通表式のUNION )を取ることで繰り返し参照ができる。これはViewでは実現できない共通表式ならではの使い方。これまでなら、クエリーでは実現できず ストアドプロシジャを書かなければならなかったケースがこれに該当する。
今までよりさらにSQLが楽しく活用できるようになる素晴らしい機能だと思う。
さらにPostgreSQLだと、WITH にDELETE文を記述できて、その削除結果をSELECTしたり、INSERTの対象にできたりするのでこれもものすごく便利だと思う。 SQL ServerやDB2やOracleでも使えるといいのに。
PostgreSQL WITH問い合わせ(共通テーブル式)
20170422_233829 もう一個特徴的なこと
・複数定義した共通表式のうち特定の式を最終SELECT句で参照しなくてもいい
これがあるから、いままでワークテーブルを作らないとできなかったようなクエリーも1つのクエリーで完結できてしまう。ワークテーブル的に使えるのにテーブル定義は不要で、共通表式の定義だけで使える。なんて便利なんだ。
共通表式はかなり強力なクエリー構文だ。
タグ:標識じゃないんだよ
2017年03月30日
実はみんな嫌いじゃなくて、愛着があるけど気に入らないところもあって、それでも使い続けている人が多いことの裏返しなんだと思うよ。
開発者に嫌われているプログラミング言語トップ25 | マイナビニュース
誤解を恐れずに言うけど、ワースト4より下位の言語って、この4つの言語より、マイナーで利用者が少ないよね。
VB6はすでに自分のところでもすべて .net に移植完了したけど、 Office VBA は いまだに改修案件がある。
Office のマクロのスタンダード言語を早く C# も使えるようにしてほしい(VB.netすら対応していないので無理なんだと思うけど)。 アドイン dll を開発するという選択肢は別として。
誤解を恐れずに言うけど、ワースト4より下位の言語って、この4つの言語より、マイナーで利用者が少ないよね。
VB6はすでに自分のところでもすべて .net に移植完了したけど、 Office VBA は いまだに改修案件がある。
Office のマクロのスタンダード言語を早く C# も使えるようにしてほしい(VB.netすら対応していないので無理なんだと思うけど)。 アドイン dll を開発するという選択肢は別として。
2017年03月14日
2017年02月22日
oracleのユーザー定義関数のDETERMINISTICオプションの有無をテストしようとして分かったのは、sysdate とか sysTimestamp は DETERMINISTIC な関数と同じように動くということ。
オラクルで、ファンクションを作っているときにパフォーマンスに効くだろうと思い。DETERMINISTIC オプションについて検証していました。
参考:
ファンクションの宣言および定義
意味:
DETERMINISTIC
同じパラメータ値を使用してファンクションが起動されたときは常に同じ値を戻すことをオプティマイザに示します(この前提が真でない場合は、DETERMINISTICを指定すると予測できない結果になります)。以前に同じパラメータ値を使用してファンクションが起動されている場合、オプティマイザは再度ファンクションを起動するかわりに以前の結果を使用できます。
「同じパラメータ値を使用してファンクションが起動されたときは常に同じ値を戻す」というのがいったいどの範囲で「常に」「同じ」なのかがずっと気になっていて
今回テストファンクションを書いたらなんとなく理解できた。
結論としては
「同じ1回のクエリー呼び出しの中で」
「クエリの特定の場所に記述された同一のパラメータ(もしくはパラメータなし)で呼び出された関数はクエリー中で何度呼び出しされても同じ値を返す」
たとえばこんな関数と
CREATE OR REPLACE FUNCTION SYSDATE_TEST
RETURN TIMESTAMP
PARALLEL_ENABLE
DETERMINISTIC
AS
BEGIN
RETURN systimestamp;
END;
もう一つこんな関数
CREATE OR REPLACE FUNCTION SYSDATE_TEST2
RETURN TIMESTAMP
PARALLEL_ENABLE
AS
BEGIN
RETURN systimestamp;
END;
を作って
以下のようなクエリーで呼び出してみよう
select
TO_CHAR(SYSDATE_TEST,'HH24:MI:SS.FF7') AS fncTS_D -- 関数の中でsysTimestampをDETERMINISTIC 呼び出し。
,TO_CHAR(SYSDATE_TEST2,'HH24:MI:SS.FF7') AS fncTS_N -- 関数の中でsysTimestampを 非DETERMINISTIC呼び出し
,TO_CHAR(systimestamp,'HH24:MI:SS.FF7') AS sysTS -- sysTimestamp をそのまま呼び出し
from scott.emp cross join scott.emp;
emp 表をcross ジョインしているのは 手ごろなサイズ(100レコード程度)のテーブルを作りたかったから。
結果は以下の通り。

systimestamp 自体は DETERMINISTIC で動いているのかそうでないのかよくわからなくなってしまった。
参考:
ファンクションの宣言および定義
意味:
DETERMINISTIC
同じパラメータ値を使用してファンクションが起動されたときは常に同じ値を戻すことをオプティマイザに示します(この前提が真でない場合は、DETERMINISTICを指定すると予測できない結果になります)。以前に同じパラメータ値を使用してファンクションが起動されている場合、オプティマイザは再度ファンクションを起動するかわりに以前の結果を使用できます。
「同じパラメータ値を使用してファンクションが起動されたときは常に同じ値を戻す」というのがいったいどの範囲で「常に」「同じ」なのかがずっと気になっていて
今回テストファンクションを書いたらなんとなく理解できた。
結論としては
「同じ1回のクエリー呼び出しの中で」
「クエリの特定の場所に記述された同一のパラメータ(もしくはパラメータなし)で呼び出された関数はクエリー中で何度呼び出しされても同じ値を返す」
たとえばこんな関数と
CREATE OR REPLACE FUNCTION SYSDATE_TEST
RETURN TIMESTAMP
PARALLEL_ENABLE
DETERMINISTIC
AS
BEGIN
RETURN systimestamp;
END;
もう一つこんな関数
CREATE OR REPLACE FUNCTION SYSDATE_TEST2
RETURN TIMESTAMP
PARALLEL_ENABLE
AS
BEGIN
RETURN systimestamp;
END;
を作って
以下のようなクエリーで呼び出してみよう
select
TO_CHAR(SYSDATE_TEST,'HH24:MI:SS.FF7') AS fncTS_D -- 関数の中でsysTimestampをDETERMINISTIC 呼び出し。
,TO_CHAR(SYSDATE_TEST2,'HH24:MI:SS.FF7') AS fncTS_N -- 関数の中でsysTimestampを 非DETERMINISTIC呼び出し
,TO_CHAR(systimestamp,'HH24:MI:SS.FF7') AS sysTS -- sysTimestamp をそのまま呼び出し
from scott.emp cross join scott.emp;
emp 表をcross ジョインしているのは 手ごろなサイズ(100レコード程度)のテーブルを作りたかったから。
結果は以下の通り。

systimestamp 自体は DETERMINISTIC で動いているのかそうでないのかよくわからなくなってしまった。
2016年11月16日
SendGridでメール送信超楽ちん
SendGrid | メールを成功の原動力に。
ただで使わせてもらっている(検証中)なので宣伝しておく。
C#でメール送信!SendGridを使って簡単に実装する方法 | SendGridブログ
C#のサンプルコードを拾ってきて自分用のAPIキーに書き換え、アドレスも書き換えするだけで実行すればメール送信できてしまう。
GITはインストールされていなくても全然問題ない
以下からダウンロードして使えばよい。
GitHub - SendGridJP/sendgridjp-csharp-example: SendGrid公式C#ライブラリの利用サンプル
以下のことだけよくよく注意して、まずは検証しましょう。
SendGridのライセンスは、譲渡・二次ライセンスが不可となっております。
SendGridの利用規約に同意していない方がSendGridの機能を利用してメールの送信等を行うと、利用規約に抵触しますのでご注意ください。
再販や、SendGridを自社サービスに組み込む際の注意事項を教えてください – サポート
ただで使わせてもらっている(検証中)なので宣伝しておく。
C#でメール送信!SendGridを使って簡単に実装する方法 | SendGridブログ
C#のサンプルコードを拾ってきて自分用のAPIキーに書き換え、アドレスも書き換えするだけで実行すればメール送信できてしまう。
GITはインストールされていなくても全然問題ない
以下からダウンロードして使えばよい。
GitHub - SendGridJP/sendgridjp-csharp-example: SendGrid公式C#ライブラリの利用サンプル
以下のことだけよくよく注意して、まずは検証しましょう。
SendGridのライセンスは、譲渡・二次ライセンスが不可となっております。
SendGridの利用規約に同意していない方がSendGridの機能を利用してメールの送信等を行うと、利用規約に抵触しますのでご注意ください。
再販や、SendGridを自社サービスに組み込む際の注意事項を教えてください – サポート
2016年10月07日
[.net]デバッグビルドでは問題が出ないのにリリースビルドだと不具合。しかも Framework2.0 をターゲットにした場合だけ
。。。という件で、ターゲットフレームワーク2.0という環境での動作も切り捨てられず、一日中 デバッグしました。 リリースビルドに OutputDebugString を突っ込んでモニターしながら。
以下のようなところで不具合が出ていました。この場合、classBのオブジェクトを取得します。
Dim o as object
IF false Then
o = classA.getObject()
Else
o = classB.getObject()
Endif
classA,classBはともに static な function です。
このようなロジックの部分で、classA で参照している 外部ライブラリーの参照ができずにエラーとなっていました。
結局いろいろ試した結果、テスト的に以下のように書き換えるとエラーはなくなりました。
Dim o as object
IF false Then
o = Nothing
Else
o = classB.getObject()
Endif
そこで試しに、と classA.getObject()の代わりに
Private function getAObject() as Object
return classA.getObject()
End Function
とした関数を定義し、
Dim o as object
IF false Then
o = getAObject()
Else
o = classB.getObject()
Endif
上記のようにしたところ、classA にかかわる参照エラーがなくなりました。
ちなみにこれが発生したのは ターゲットフレームワークが 2.0 のリリースビルドだけで
デバッグビルドの場合、もしくは フレームワークが4.0 の場合には リリース・デバッグどちらも問題なしでした。
debugではバッチリ。releaseしたら不具合が発覚。 • C言語交流フォーラム 〜 mixC++ 〜
以下のようなところで不具合が出ていました。この場合、classBのオブジェクトを取得します。
Dim o as object
IF false Then
o = classA.getObject()
Else
o = classB.getObject()
Endif
classA,classBはともに static な function です。
このようなロジックの部分で、classA で参照している 外部ライブラリーの参照ができずにエラーとなっていました。
結局いろいろ試した結果、テスト的に以下のように書き換えるとエラーはなくなりました。
Dim o as object
IF false Then
o = Nothing
Else
o = classB.getObject()
Endif
そこで試しに、と classA.getObject()の代わりに
Private function getAObject() as Object
return classA.getObject()
End Function
とした関数を定義し、
Dim o as object
IF false Then
o = getAObject()
Else
o = classB.getObject()
Endif
上記のようにしたところ、classA にかかわる参照エラーがなくなりました。
ちなみにこれが発生したのは ターゲットフレームワークが 2.0 のリリースビルドだけで
デバッグビルドの場合、もしくは フレームワークが4.0 の場合には リリース・デバッグどちらも問題なしでした。
debugではバッチリ。releaseしたら不具合が発覚。 • C言語交流フォーラム 〜 mixC++ 〜
・おすすめ楽天ショップ1:trendyimpact楽天市場店
・おすすめサプリショップ:iHerb.com
・おすすめ楽天ショップ2:上海問屋
