DailyDiaryCron

かきため

日付の羅列からSQLで継続日数を割り出してみた

日の列があれば、継続日数 を動的に割り出したい。 データはだいたいデータベース内に入っている為、SQLで出したい。どうやる?を書きました。 あんまりどこにも書いてないんだよねぇ。ほぼSQLパズル。

※ Redshiftを対象としています。

元テーブルと参考データ

create

create table continued ( date Date );
insert into continued values ('2017-01-01'),('2017-01-02'),('2017-01-03'),('2017-01-05'), ('2017-01-06'),('2017-01-07'), ('2017-01-09'), ('2017-01-11');  

ここから割り出す

    date    
------------
 2017-01-01
 2017-01-02
 2017-01-03
 2017-01-05
 2017-01-06
 2017-01-07
 2017-01-09
 2017-01-11

開始日を割り出す

開始日を割り出すには、対象日の前の日に居なかったら開始とみなせる。 その為、開始日対象日をFで継続中をTと出す。

create table continued_tf as 
select a.date, case when ( select 'T' as TF  from continued b where b.date = (a.date - 1)) = 'T' then 'T' else 'F' end  as TF from continued a;

select 内でサブクエリってパワー使いそうであまり使いたくないけど、仕方ないね。 この時点で地獄感ある。

    date    | tf 
------------+----
 2017-01-01 | F
 2017-01-02 | T
 2017-01-03 | T
 2017-01-05 | F
 2017-01-06 | T
 2017-01-07 | T
 2017-01-09 | F
 2017-01-11 | F

最も近い開始日を各日付に割り当てる

あんまりこういういSQLは好きじゃないけど仕方ないかな・・。 ユーザー毎に作りたかったらユーザー毎のIDを指定すればよろし。

with aaa as (
  select a.date, a.tf,  
  (
    select
      b.date start_date 
    from continued_tf b
    where b.date <= a.date 
      and b.tf = 'F'
    order by b.date desc
    limit 1
  ) start_date
  from continued_tf a
)
select f.start_date, f.date, f.tf, datediff('days', f.start_date, f.date ) as continue 
from aaa f

postgresql の場合はcontinueを以下に書き換え。

( f.date - f.start_date ) as continue 

↓ こんな感じで完了

 start_date |    date    | tf | continue 
------------+------------+----+----------
 2017-01-01 | 2017-01-01 | F  |        0
 2017-01-01 | 2017-01-02 | T  |        1
 2017-01-01 | 2017-01-03 | T  |        2
 2017-01-05 | 2017-01-05 | F  |        0
 2017-01-05 | 2017-01-06 | T  |        1
 2017-01-05 | 2017-01-07 | T  |        2
 2017-01-09 | 2017-01-09 | F  |        0
 2017-01-11 | 2017-01-11 | F  |        0

SQL

株式会社labbitについてと今後

会社用のドメインは取ったのだがサイトがまだ出来ていないので、ブログにネタを書きためていく。

後述もするけど、labbit.co.jp が欲しかったのだが、既に合同会社Labbitさんに取られてしまったので、lab-bit.co.jp になってしまった。これは致し方ない。

社名については

最新の技術研究や開発を意味する Lab と データの最小値を表す bit を合わせて Labbit(らびっと) とした。というのは後付けであり、単に個人事業になるちょっと前に うさぎ(5才)の だいふく を飼っていて後付で説明が良い感じなったという理由。 Rabbit じゃないの?ってよく言われるけど。

他の似た会社について

株式会社Labbit を設立した後に色んな似た会社を探し回った所、いろんな会社さんがいた。

株式会社Labit さんが2011年からやっていて会社名が全く同じ意味合いにしていて、これはぱくったと言われそーって思ってたら、既に会社閉じているようで、CEOさんはメルカリへジョインしているし、セーフ。

合同会社Labbit さんは2016年から受託系フリーから転身して会社作ったような感じかな。この会社さんが labbit.co.jp のドメインを取っていて、使って無さそうだから譲って欲しい・・。

株式会社Labbits さんは既に2014年から活動しているようで、 HackerBase というエンジニア向けサービスをつくっていた。良さげで名前かぶったのが申し訳ない感じがした

どの会社もWeb・アプリ系サービスであり、似たような名前で似たような会社になりがちなのでは。

メンバーについて

まだ1人社長の会社。学生自体からの付き合いがある二人と何かしらやっていきたい気持ちでいる。良い感じになってきたら迎え入れて、大きく出来たらいい。

我が社でやれること

  • データ分析

まず私が出来ることは、データエンジニアを(名前ができる前から)5年ほど続けている。 ログ設計が必要な Google AnalyticsAdobe Analytics も経験し、生データの扱いはそれなりに熟練度を持っている。最近では Firebase Analytics がとても良いデータ化されており面白かった。

構築関連もクラウドを有効活用した データレイク・DMPの構築はお手の物であり、データが大きくなるに連れて必須になる前処理はお手の物。

分析段階では、BigQuery/Redshift を利用したパフォーマンスを活かし、リアルタイムなデータ解析にも力を入れている。この辺の知識は豊富と言っても良いと思う。

直近で取引先にて周りで機械学習を作成している方が多くいるので、それをどう利用していくか、掛け合わせていくかの Webアプリ・スマートフォンアプリ・IoT 開発を行っている。

  • マイニングファーム

また、ブロックチェーン界隈にてマイニングファームの構築をお手伝いなども何度か仕事を頂いていたりもしている。マイニングリグを利用して数百台のGPU構築、とても凄く圧巻。今後も取引を続けていきたい。

  • 取引Bot開発

不労所得」を目指す意欲が高く、仮想通貨取引所の自動売買Bot制作も力を入れている。

  • AR開発

iOSAndroidを利用したAR開発も活発化している。まだ参考程度のものしか作れていないが、今後主軸とした開発が行えるよう力を蓄えている。

最後に

新技術は今まで出来なかったことを可能にする以外にも、難しかったものが簡単になったり、誰でも出来るようになる。シンプルになる。そして、今まで出来るまでに莫大だったものが、想像力と組み合わせで新たな価値を作っていくことも出来る可能性が出てくる。

その為に新しい技術を少しでも多く取り入れ、不労所得を得れる素晴らしい世界を作り上げたい。

自営業4年目にして株式会社として起業した

自営業として屋号Labbit を掲げていたが、5月1日にて株式会社Labbitを設立した。

時間が取れないのと顧問になって頂く税理士の事務所紹介と言うこともあり、 設立には司法書士の方にご依頼する形で設立をお願いした。

費用的には、株式会社設立で必ず必要となる20万+数万程度。 今の時代、ぐぐると「起業 0円」や 「会社設立freee」などのサービスをよく目にするが、法務局に行くという時間が勿体ないのと数万程度ならばお願いしたほうがいいなと感じた。

フリーランスになって3年間で試したこと

この3年間歩んできて、フリーランスの方(特に新たになろうと思う人)にはお得感があってやった方が良いと思った事を3つ書きます。

  • 社会人から個人事業になったら出来る免除
    • 国民年金を全額免除 出来る!
    • 健康保険 を減らせる!
      • 任意継続がオススメ。
      • 文芸美術保険組合 に入る!
  • 個人事業税支払事業にならない方法
  • 信用について
  • さいごに
続きを読む

Scrapy shell で画像を表示するデバッグ方法

scrapy shell を使ってスクレイピングしていると、実際にアクセスした画像URLをコピペして開くのが面倒だったので、コンソールから今どの画像を見ているのかを知りたくなった。

ダウンロードして開く

当たり前かもしれないが、ローカルで画像を開く場合、一度ダウンロードする必要があった。

$ scrapy shell
fetch('http://yahoo.co.jp')
import requests
import io
from PIL import Image
Image.open(io.BytesIO(requests.get(response.css('img::attr(src)')[0].extract()).content)).show()

Webブラウザから開く

こっちの方が簡単だった。

$ scrapy shell
fetch('http://yahoo.co.jp')
import webbrowser
webbrowser.open(response.css('img::attr(src)')[0].extract())

スクレイピングPython

Terminal.app から Vim で マウススクロールが固まる件について解決した

解決策

set visualbell の設定を削除する。

たったこれだけ

経緯と雑感

Terminal.app を利用していて、マウススクロールをした際、行末および行初まで思いっきり移動した際、固まる問題が解決した。 僕は なんちゃって自称Vim使い であり、 .vimrc にそこまでこだわりがなかった。

今回も新しいMac環境となった際、 「vim 設定 おすすめ」で一番上に来た記事の vimrc を意味もわからず設定している。 同じような人は居ないだろうか? 絶対いる。

こいつを反映したせいで、私のMacでは、 mouse=a を指定するはめになった。なんちゃって Vimmer な私はこの mouse=a は好きじゃない。

しかし、やらなければ、マウススクロールが勝手に固まるのだ。

たまたま Vagrant を利用した環境を整えていたところ、マウススクロールをしてもデフォルトのvimでは固まらない。 しかし使いにくいからいつものように設定を入れる。 固まる! 「そうか、.vimrc の設定を入れることで止まっていたのか。」 とやっと気づいた。

1行ずつ試し、ついに見つけた。ど真ん中においてある set visualbell 。こいつだった。

全ての環境の vimrc へ制裁という名の削除を行った事により、 私の vim 環境では mouse=a も同時に葬ることに成功した。繰り返す。

成功した。

ネットワーク速度をコマンドラインから見る方法

Webブラウザから、「速度」と検索して計測している皆さん、こんにちわ。 私はついに脱しました。

続きを読む