てぃぐれのプログラマwiki

ワクワクに従う

置換変数【ORACLE】

経緯

Oracle Master Silverの勉強をしていると普段使わない、置換変数というものが出てきた。

でも使い方をイメージしていると、これ、めっちゃ便利なときあるやん。いつも、自分ができないと思っていたことがこれでできるやんと思うようになったので、wikiとして残していきたい。

 

&変数名

同じセッション内のdmlであるならば、そのdmlの回数分、指定してあげる必要がある。

 

&&変数名

&&変数名の場合、同じセッション内のdmlであるならば、一回の指定で使い回される。

 

使い所

この置換変数の良いところはテーブル名の指定にも使える。テーブル定義の変更をしたいときにその箇所だけ入れ替えて使うことができる。

全てのテーブル定義を変更したいときに、新規で作り直すのも厳しいなあと思うときに、これ使えるやん!!

って思った。やっぱ知らないのは罪深いよね。

 

 

曖昧検索 アンダースコア _の使い方【ORACLE】

経緯

曖昧検索といえば%を使うが_をあまり業務で使うことなく、頭になかったので、ここに記しておきたい。

 

_の使い方

like '_x%' 1文字目にxがある2文字目以降は何でも良い

like '_ _ _ _%r_ _'; 前に4文字以上がある。後ろから3文字目がr

like '_ _ %r%_ _' rの前にも後ろにも2文字以上ある

 

※見やすさの都合上アンダースコアの間にスペース入れています。

 

代替引用メカニズム【ORACLE】

経緯

絶対、この先使わないであろう、ORACLEでのシングルクォテーションの役割を果たす機能、書き方を見つけた。

 

q'[xxx]'

代替引用メカニズムではリテラルを扱うときに、シングルクォテーションで描くのではなく、q' + 任意の文字 で始め、任意の文字 + ' で終わるとその囲われた文字はリテラルになるというものだ。

このタイトルはxxxとして扱われる。

下記の場合何が出るのであろう。

q'xxxx'

xxxx?

xx?

?

調査が必要だ。

 

シングルクォテーションとダブルクォテーションの違い

ダブルクォテーションは列名を名付けるときに使う。その際、シングルクォテーションを使うことはできない。

またダブルクォテーションを使うことにより、予約語を出すこともできるし、小文字と大文字を分けることもできる。

 

コードを読む1 STACK AOJ

経緯

自分のコード力?想像の向上のためソースを読みたい。ついでにアルゴリズムやデータ構造を学びたいのでAOJのソースを見る。

 

 

下記コードの見所

自分がやった場合、一回の処理で2回popすることを考えていなかった。

forloopで一回ずつしか処理を回すことができていなかった。めっちゃ頭硬いよなと感じる。

https://onlinejudge.u-aizu.ac.jp/solutions/problem/ALDS1_3_A/review/2467428/c64qh33/C%23

 

Queueじゃダメなん

と思ってみる。最後の演算が*か+なら良いが-だと値が違ってくる。

と思ったが過程を変えることでQueueでもいけるな。。

 

Stack

Last in First out っていうやつやな。

人数の多いエレベーター感あるよね。

 

 

 

 

インスタンスの振る舞い【C#】

経緯

インスタンスメソッド、クラスメソッド、メソッドのあり方について考えてみた。

 

 

よく曖昧になるのだが、これらの使い方がたまに曖昧になる。

この中でインスタンスメソッドはその名の通り、インスタンスの振る舞いである。

これはオブジェクト指向において大事なポイントであろう。

別にインスタンスに振る舞いを書かなくても、そのインスタンスを外部からメソッドを呼べばいいではないか。

一番はオブジェクト指向的な設計になっているかどうかで考えるべきなのだろう。

犬というクラスに歩くというインスタンスメソッドは理解しやすい。

では犬というオブジェクトを作った後に、同じ内容の振る舞いを書いたとしたらどうなるのか。

1、プロパティがカプセル化できていない。

  →プロパティを外部で利用することで保守箇所が増える。

   めちゃ探さないといけない。

   →ソースの管理がしづらくなる。

2、概念が異なってくる

  →犬は歩くのか、犬は歩かすことができるのか

   a dog walks なのか it makes dog work なのか。

  主語の一致、文章性の統一を考えるのであれば、前者が良さそう。

  文学的なコードは書きたくない。そうプロ グラマーならね。

  

 

しかし、最近はもうインスタンス変数を使わずにプロパティを使うことによって、インスタンス変数とプロパティがごっちゃになっているのではないか。その点の、熟考はまたにしよう。

 

 

SupplyParameterFromQueryが動かない【Blazor】

経緯

BlazorでURLからパラメーターを取得したい。

SupplyParameterFromQueryでいい感じに取得できるということなので、使ってみたい。のに使えなかった。

 

原因

Mainlayoutでページ遷移のため@Bodyを表記している。ある理由があって、ここに@Bodyの代わりに直接ページを埋め込み、parameterを渡してあげる。

そして、SupplyParameterFromQueryを使ってみる。動かない。。初期値が入っている。。。

@Bodyに変えてみる。動いた!!うーむ。

@Bodyにメリットあまりなくないかって思ってたがここにトラップがあった。

HEIC EXIF 位置情報をJSで取得する

経緯

Blazorでiphoneの画像から位置情報を取得したい。iphoneの画像データがHEICになって取得の仕方が変わったようだ。

こちらのjsで取得したかったが取れない。さあ、どうしよう。

GitHub - exif-js/exif-js: JavaScript library for reading EXIF image metadata

 

やってみる

使用したのはこちらのライブラリ

GitHub - exif-heic-js/exif-heic-js: JavaScript library for reading EXIF image metadata from HEIC files

 

特に何と解説することはないが、とりあえず取得することはできた。

緯度経度の情報は度分秒の形式で出ているので計算して、自分が使いたいように切り替えてあげる必要がありそうだ。

 

画像に位置情報がついていない場合はもちろん取得できないが、位置情報がついていなものにあとで付与してあげても取得することはできた。

 

iphoneの設定

iphone側で位置サービスの利用がオフになっている可能性があるので、プライバシー設定から切り替えてあげる可能性がある。

 

後記

iphoneからairdropmacにもらってたから、heicであげることができたが、iphoneからだと厳しいとのこと。