ロックとチュウーハイとこりんがるな日々

日々のインプットした事をアウトプットする場所

passwordを生成するコマンド

macのみ

  • install

    brew install pwgen

  • 実行   

    • pwgen

      いっぱいでてくる

    • pwgen 16 1

      16文字でパスワードを一個だけ生成

    • pwgen -s 16 1

      16文字でパスワードを一個だけ生成、複雑にする

    • ほかにもあるが -h でヘルプを参照してください

prestoで整数同士の割り算をすると整数が返される問題の解決方法

prestoで整数同士の割り算を行う整数が返却される場合は良いが以下のような場合に0が返却される

select (10 / 5);

予想される値は 0.5 だが prestoの場合は 0 が返却されてしまう 正常に0.5 を返却してもらうためには以下のようにする必要がある

select (10 * 1.0 / 5);

もしくは以下のようにする

select (cast(5 as DOUBLE) / 10);

prestoの便利関数 url_function

prestoにはURLを分解する関数が付いています、使うと正規表現で分割してたのがアホらしくなるほど便利なんでめもっときます

select 
  url_extract_fragment('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_host('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_parameter('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test', 'flag'),
  url_extract_path('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_port('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_protocol('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_query('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test')
;
  • url_extract_fragment([url])

    与えられたURLからfragment部分を取得します ↑のSQLからは以下が取得されます

      test
    
  • url_extract_host([url])

    与えられたURLからhost部分を取得します ↑のSQLからは以下が取得されます

      www.hoge.com
    
  • url_extract_parameter([url], [parameter_name])

    与えられたURLから指定したパラメーターを取得します ↑のSQLからは以下が取得されます

      1
    
  • url_extract_path([url])

    与えられたURLからpath部分を取得します ↑のSQLからは以下が取得されます

      /fuga/var/index.php
    
  • url_extract_port([url])

    与えられたURLからport部分を取得します ↑のSQLからは以下が取得されます

      8080
    
  • url_extract_protocol([url])

    与えられたURLからprotocol部分を取得します ↑のSQLからは以下が取得されます

      http
    
  • url_extract_query([url])

    与えられたURLからprotocol部分を取得します ↑のSQLからは以下が取得されます

      flag=1&flag2=2
    

公式: https://prestodb.io/docs/current/functions/url.html

prestoで縦持ちのテーブルを横持ちのテーブルに変換する

prestoで縦のテーブルを横のテーブルに変換する方法です

with o as (
  select
    id, age_range, count(td_url) as count
  from
    m
  group by
    id, age_range
),
p as (
  select
    id,
    MAP_AGG(age_range, count) as kv
  from
    o
  group by
    id
)
select
  id,
  IF(kv[20] is null, 0, kv[20]) as arv20,
  IF(kv[25] is null, 0, kv[25]) as arv25,
  IF(kv[30] is null, 0, kv[30]) as arv30,
  IF(kv[35] is null, 0, kv[35]) as arv35,
  IF(kv[40] is null, 0, kv[40]) as arv40,
  IF(kv[45] is null, 0, kv[45]) as arv45,
  IF(kv[50] is null, 0, kv[50]) as arv50,
  IF(kv[55] is null, 0, kv[55]) as arv55,
  IF(kv[60] is null, 0, kv[60]) as arv60
from
  p
  1. map_agg関数でマップ型の構造をつくる
  2. 1で作ったマップを参照する

参照: http://qiita.com/k24d/items/79bc4828c918dfeeac34

TreasureData 前日分のログを指定する方法

最近Treasurdataを使っています 何回か同じ事を調べたのでメモです

hiveとprestoで現在のunixtimestampの取得方法が違ったので以下に書きます

hive

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(unix_timestamp(), '-1d'), 'yyyy-MM-dd 00:00:00', 'JST'),
    TD_TIME_FORMAT(unix_timestamp(), 'yyyy-MM-dd 00:00:00', 'JST'),
    'JST'
)

1時間前の場合

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(unix_timestamp(), '-1h'), 'yyyy-MM-dd HH:00:00', 'JST'),
    TD_TIME_FORMAT(unix_timestamp(), 'yyyy-MM-dd HH:00:00', 'JST'),
    'JST'
)

presto

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(CAST(TO_UNIXTIME(NOW()) as BIGINT), '-1d'), 'yyyy-MM-dd 00:00:00', 'JST'),
    TD_TIME_FORMAT(CAST(TO_UNIXTIME(NOW()) as BIGINT), 'yyyy-MM-dd 00:00:00', 'JST')
    'JST'
)

1時間前の場合

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(CAST(TO_UNIXTIME(NOW()) as BIGINT), '-1h'), 'yyyy-MM-dd HH:00:00', 'JST'),
    TD_TIME_FORMAT(CAST(TO_UNIXTIME(NOW()) as BIGINT), 'yyyy-MM-dd HH:00:00', 'JST')
    'JST'
)

ウォーキング・デッドはヒューマン・ドラマ

ウォーキング・デッドはヒューマンドラマです 僕とよく話をする人は20回ぐらいこの話を聞いているかもしれないけど 急にブログにまとめて見たくなったので現時点での僕の考えをまとめておく

まずウォーキング・デッドとはアメリカのテレビドラマです、アメコミで原作があるようですが、微妙に 登場人物やストーリーが違っていたりします 2010年ぐらいから放送されており、現在はシーズン7の前半まで放送されています

物語としてゾンビにより世界の終末後を描いています シーズンの最初の方はゾンビ対生存者の戦いを描いており、生存者達はゾンビから身を守れかつ安全に 暮らせる場所を探します

生存者達も脅威はゾンビであり、生存者同士は協力して共通の敵であるゾンビを倒していきます 法も秩序も崩壊していくなか人々はまだ道徳や今までの秩序やルールを守ろうとしますが ゆっくりとゆっくりと生存者達の人格は崩壊していき、新しいルールが作られていきます

そして生存者達の人格はゆっくりと崩壊し、新しいルールのもとに再構築されていきます

ウォーキング・デッドの見どころはゾンビがグロいとかそんな事ではなく上に書いたとおり 生存者達の人格が壊れ再構築されていく過程を楽しむのが最大の見どころかと思っています

物語が進むにつれてゾンビは新しい世界を構成する一つの要素でしかなく、そこにいて当たり前の 存在になっていきます脅威はゾンビではなく、人間になっていきます

戦いだけでなく、他にも色々なヒューマン・ドラマが展開されるのがウォーキング・デッドです ぜひ一度見て下さい

ちなみに物語の中ではゾンビという言葉は一度も登場していません、ウォーカーやバイター、感染者なんて よばれています ウォーカーという呼び名は人間を指している可能性もあります、この世界においてゾンビも人間もあるき続ける 者たちです

でわであ

2017年の抱負

今週のお題「2017年にやりたいこと」

2016年は本業に専念しました だからなにか身についたかと言うとこれとった技術は身につかなかったなと感じた大晦日でした

今年やる事をしたためる

  • AWS ソリューションアーキテクトの資格をとる
  • Deep Leaning(はやりものに手をだす)
  • せっかくなんで分析をやる
  • 1週間に1つブログを書く
  • コミュニティ活動に力をいれる
  • php以外の言語を取得する
  • 開発者を便利にするものをつくる
  • 今年もAWS Summitに行きたい
  • ディズニーランドに行きたい
  • 毎日ストレッチする(体がかたすぎる)
  • 1日1プログラム
  • 個の力を強くする

今年もよろしこです