yuji0602’s blog

日々思っていることなど。

BigQueryでUTCをJSTに変換したい

googleであれこれ探したのですが、レガシーSQLしか見つからず、標準SQLの項目がなかなか見つからなかったのでメモを残します。

Qiitaにて発見しました。

qiita.com

Qiitaに載っていたのはunixtimeですが、TIMESTAMP_SECONDS(unixtime)の部分をtimestamp型のカラム名を設定して具合よく表示されました。

-- unixtimeをjstに変更
FORMAT_TIMESTAMP('%Y-%m-%d %H:%M:%S', TIMESTAMP_SECONDS(unixtime), 'Asia/Tokyo')

色々調べて思ったのですが、そろそろ標準SQLが優先されて検索結果が表示されると個人的には嬉しかったりします。いつも公式ドキュメントの標準SQLへの移行を眺めつつ、検索結果で見つかったレガシーSQLとの対比表を見たり、実際にクエリを書いたりしているのですが地味に効率が悪いんですよね。

まあ効率が悪いのは自分のスキルの問題なので日々精進ですね。

今日も色々撮ってきました。

今日もまた色々撮ってきました。花が咲く季節は良いですね。

どんな感じに撮るのがいいのか分かって無いのですが、撮ってて楽しいカメラは良いですね。

春になると毎年花や木の名前を覚えて行こうかなと思うのですが、相変わらず覚えられずに今に至ります。何にでも興味を持てるようになりたいです。

散歩日和、撮影日和

今日はだいぶ暖かかったので長めの散歩をしました。朝と夕方でレンズを変えて見たのですが、撮れ方が分かってきた気がします。

午前中はこちらのレンズを持っていきました。

OLYMPUS 望遠ズームレンズ M.ZUIKO DIGITAL ED 40-150mm F4.0-5.6 R ブラック

OLYMPUS 望遠ズームレンズ M.ZUIKO DIGITAL ED 40-150mm F4.0-5.6 R ブラック

f:id:yuji0602:20180325230652j:plainf:id:yuji0602:20180325230707j:plainf:id:yuji0602:20180325230723j:plainf:id:yuji0602:20180325230737j:plainf:id:yuji0602:20180325230750j:plainf:id:yuji0602:20180325230804j:plainf:id:yuji0602:20180325230818j:plain

前に使っていたPEN Lite e-pl6と比べるとOM-Dはだいぶピントが合うのが速くていいですね。とはいえワンコの動きを追うのはだいぶ難しかったです。片手にワンコのリードを持ち、片手で撮影というのも多少無理があるのかも知れません・・。


夕方はこちらのレンズを持っていきました。こちらのレンズは最近ヨドバシカメラで貰ってきたレンズのパンフレットに載ってなかったのですが、そんなに評価が良くなかったのでしょうかね。私はこれをよく使っています。

f:id:yuji0602:20180325231215j:plainf:id:yuji0602:20180325231229j:plainf:id:yuji0602:20180325231256j:plainf:id:yuji0602:20180325231312j:plainf:id:yuji0602:20180325231325j:plain

こちらのレンズは前から使う頻度が多いので意図したように撮ることが出来ました。マクロで撮れるのでよく使っています。

OM-Dを買ってまだ電源の位置を間違えたりとか、PEN Liteのモニターを見る癖が残っていたりするのでカメラ自体の操作に慣れてないのですが、持っているレンズでもよく反応してくれるので写真撮るのがとても楽しいです。

今週は旅行に行くので色々撮ってみようかと思います。

OM-D E-M10 Mark Ⅲを持って散歩しました。

昨日カメラを買ったので、今日はOM-Dを持って散歩してきました。

↓昨日書いたのはこちらです。↓

yuji0602.hatenablog.jp

撮影は主にうちのワンコを撮っています。記念すべき誕生日でした。ワンコの写真以外は殆ど撮ってなかったことに気が付きました。。

shibainu-komugi.hatenablog.com

桜がちょっと咲き始めてたので、桜を撮ってみました。

f:id:yuji0602:20180324225150j:plain

f:id:yuji0602:20180324225239j:plain

マクロで撮影したのですが、もう少しピントを合わせられたら良かったような気がしています。明日もまたチャレンジしてみよう。

あ、昨日の夕方の散歩中に撮ったものもありました。

f:id:yuji0602:20180324225710j:plain

菜の花が咲いたり、春は撮り甲斐があるものが多くあるので散歩が楽しみですね。

OLYMPUS OM-D E-M10 Mark Ⅲを買った。

f:id:yuji0602:20180323224812j:plain

この前までOLYMPUS PEN Lite E-PL6を使っていたのですが、取り出そうとした時に棚から落ちて起動しなくなってしまったので新しく買い替えました。4,5年使ってて毎日散歩している時に使っていたりとか、旅行行った時に使ってたので愛着は合ったもののあっけなく落下という最後を迎えてしまいました。本当はレンズが欲しかったのですが本体が壊れてしまうとは。。修理しても良かったのですが、デジカメは年数が経つと新しいものにしてしまったほうが機能が優れていると思ったので心機一転で買い替えです。

キューバダイビングをやってことがあり、OLYMPUS μとハウジングを持って沖縄で何回かダイビングの写真を撮ったりとか、PEN Lite E-PL3とハウジングを持って沖縄でダイビングの写真を撮ったりしてたのでずっとOLYMPUS縛りです。レンズも何個かあるので今回はボディのみの購入でした。

OM-Dはブラックとシルバーの2種類だったのですが、カメラっぽい見た目に惹かれてシルバーにしてみました。見た目はとても気に入っています。

買ってきたのが夕方だったのであまり枚数は撮れてないのですが、外でも良さそうな感じで撮れました。例によってモデルは柴犬の小麦さんです。

f:id:yuji0602:20180323230219j:plain

明日の朝にまた散歩している時に使ってみようかと思います。

家で何か撮れないかなと探したのですが、近くにメルちゃんがあったので撮ってみました。

f:id:yuji0602:20180323225906j:plain

何を撮るにしても、どういう構図で写真を撮るか学んだほうが良さそうですね・・

まだ使い方に慣れてないのでたくさん使って慣れていこうかと思います。


shibainu-komugi.hatenablog.com

TOEIC試験も終わったので

最近見ているもの

TOEICの試験も終わりました。得点がだいぶ悪かったような気がするのでドキドキしています。

試験が終わったので、最近はFire TV Stickでモヤさまを観たりとか、有田と週刊プロレスととか、FRIENDSとか観ています。

すっかり勉強しなくなったかといえばそうではないのですが、頭を少し休めようと思ったので仕事が終わって家に着いたらダラダラと見ている状態です。

英語の勉強を完全にやめたわけではなくまだ続けていて、最近はゼロからスタート英語を読むトレーニングBOOKという本を読んでいます。

ゼロからスタート英語を読むトレーニングBOOK

ゼロからスタート英語を読むトレーニングBOOK

昔から雑学っぽいものを読むのが好きなので、英文でもそういうものを読むと頭に入ってくる気がしています。1つの話が100wordsから200wordsくらいなので飽きずに読むことが出来ます。音声をダウンロードして、通勤中に聴いたりしてます。

あと、試験が終わったのでエンジニアリング組織論を読み始めました。

今日はChapter1を読んでいたのですが、仕事をしていて認識のズレが何故起こるのかとか、解消するための導きが書いてあるのでなかなか面白いです。

最近の話

今月もあと数日で終わるのですが、今月で消えてしまう有給が微妙に余っているので有給消化をし始めました。月末は旅行に行こうかと思っています。旅行は行くまでのプランを建てるのが楽しいのですが、行ってからも楽しめるように大量を整えていかないとですね。ご飯とかオヤツをたくさん食べて2キロ位は太ってこようかと思います。

仕事も今季やることはほぼ終わった状態なのでゆっくり休めそうですね。

pythonで動的にクラスとメソッドをCallする

これはなに?

JavaScriptとかで動的にオブジェクトやメソッドが呼べたりしますが、pythonでも出来たら良いな思ったので調べてみました。

実際に書いてみた

参考にしたQiitaの内容を見て、実際に動作を確認してみました。call_test.pyという名前で書いてみます。コードはこんな感じです。

class Callback(object):
    def __init__(self, data):
        self.data = data

    def wake_up(self):
        return self.data


# 通常の使い方
cb = Callback('test')
result = cb.wake_up()
print(result)

# wake_upを実行
result2 = getattr(cb, 'wake_up')()
print(result2)

# wake_upは実行されない
result3 = getattr(cb, 'wake_up')
print(result3)
# ここで実行される
print(result3())

# クラスを動的に設定
cls = globals()['Callback']
instance = cls('test')
result4 = instance.wake_up()
print(result4)

# wake_upを実行
result5 = getattr(instance, 'wake_up')()
print(result5)

実際にプログラムを実行すると意図した通り動作するようでした。

$ python call_test.py
test
test
<bound method Callback.wake_up of <__main__.Callback object at 0x1016bbc88>>
test
test
test

まとめ

動的にクラスやメソッドが呼べると便利な場合もありますが、クセのあるコードにもなるので使うところは注意しながら書いたほうが良さそうですね。

参考にしたサイト

追記

他にも、Pythonで文字列から定義済みクラスのインスタンスを作るというのがありました。勉強になりますね。