2017-01-01から1年間の記事一覧

度数分布表を表示してみる

r

Rを使って度数分布表を表示してみます。

HAVING + CASE + 集約関数で検索の幅を広げる

sql

達人SQL1-10の「集合にきめ細かな条件を設定する」のまとめです。

1より大きい値から始まる数列が連番か調べる

sql

達人SQL1-10の「欠番を探せ:発展版」のまとめです。

重複した部分集合を見つける

sql

達人SQL1-10の「一意集合と多重集合」のまとめです。

すべての値が揃った集合を抜き出す

sql

達人SQL1-10の「各隊、隊員点呼!」のまとめです。

連続する〇〇な区間を探す

sql

今回は、達人SQL1-9の「連続した特定条件を満たす数列の抽出」をまとめる

連番テーブルを使って欠番を求める

sql

前回、連続した番号をもったビューの作り方をまとめた。 今回は、これを使って「特定の数列の中から欠番を求める」というのをまとめる。

連番の作り方

sql

「達人に学ぶ SQL徹底指南書」の1-9の連番の作り方を読んだまとめ。

「全ての行について」を2重否定で攻略する。

sql

全称量化は「全ての行について〜」となっている表現のことで、これをSQLで実現する場合は「〜でない行が1つもない」という2重否定に変換する。 まずは、以下のようなテーブルについて考える。 id title score 1 A 100 1 B 80 1 C 80 2 A 80 2 B 95 3 A 40 3 …

達人に学ぶ SQL徹底指南書 1-4 まとめ

sql

「達人に学ぶ SQL徹底指南書」の1-4を読み終わった。 この章のタイトルは「HAVING句の力」となっていて、HAVING句を利用して集合の状態を調べるということを実践している。 ここでは、本の中に出てきた「歯抜けの有無の確認」「最頻値を求める」「中央値を求…

NULLを扱った時の不思議な挙動

sql

今読んでいる「達人に学ぶ SQL徹底指南書」の中でNULLの扱い方について出てきた。 これまで「IS NOT NULL書いとけばえんやろ!」ぐらいにしか思ってなかったので、いろいろ衝撃を受けた。 たとえば、以下のようなテーブルがあるとする。 name score cat 100 …

今の写経状況(2017年7月11日)

達人に学ぶSQL徹底指南書 これはSOFT SKILLSを読んで「専門性をつけなくては!」と思った時に、「そういえば周りにデータベースを専門にしているエンジニアが少ないな」と思ったのでデータベースに詳しくなっておけばいいことがありそうだと思って読み始めた…

「PHPプログラミング開発テクニック」を読み終わった。

去年から読んでいたPHPプログラミング本がようやく読了できた。 この本は広くいろいろなアルゴリズムをPHPで実装する方法が紹介されている。 各アルゴリズムの理論的な紹介もあり、またそれぞれのアルゴリズムを実装するのに便利なライブラリの紹介もしてい…

「「思考軸」をつくれ」を読了しました。

出口治明さんの「「思考軸」をつくれ」を読了した。 何かを決めたり考えたりする時の判断基準となる「思考軸」をどのようにして作っていくかということが、出口さん本人の経験を元に書かれている。 また、幾つかの思考軸を提案しながら、これらを実際の事象…

with構文を使ってみた。

SQLでテーブルの一部だったり集計結果を使って表を作りたい時、with構文が非常に役に立つ。 WITH tmp1 as (SELECT COUNT(*) cnt, date FROM t1 GROUP BY date), tmp2 as (SELECT COUNT(*) cnt, date FROM t2 GROUP BY date) SELECT tmp1.date, tmp1.cnt, tmp…

ようやくfor文を覚えた。

fish shellを使い始めて約一月、ようやくfor文の書き方を覚えた。 $ for i in 1 2 3; echo {$i}; end 1 2 3 bashと比較して、少しプログラミング言語の文法に近づいた印象。 参考: fish: Tutorial

print_rについて調べてみた。

php

PHPの出力関数のprint_rが気になったので調べてみた。 これは引数に渡された変数の情報を詳しく表示し、配列などの場合には含まれる要素の情報をわかりやすい形で出力してくれる。 また、同様の関数var_dump、var_exportとの違いは出力形式の違いとのこと。 …

IntelliJ Ideaの割当メモリを拡張する。

IntelliJは便利で良いのだが、javaアプリなのでいかんせん重い。 調べたら簡単にヒープサイズを変更できたので、修正した。 $ vi /Applications/IntelliJ\ IDEA.app/Contents/bin/idea.vmoptions # -Xmx1024m ← これを修正 参考: Mac上のIntelliJの動作が重…

ファイル内の重複行を削除する。

ログの集計をしていると重複行があって上手くいかなかいことがあった。 簡単なcsvだったので、プログラムを書くよりもbashでやりたいなと検索したら、awkでよろしくやっている記事を見つけたので真似してみた。 $ awk '!a[$0]++' access.log > access_uniq.l…

mathコマンドで数式計算ができる。

bashで四則演算しようとした時に、mathというコマンドがあるということを初めて知った。 こちらに書いてあるように、実体はbcコマンドのラッパー。 Mac上でターミナルは常に開いていて、簡単な計算をbashでやりたいと思っていたので、今後活用できそうだ。 $…

Mac標準とHomeBrew経由のapache2の設定ファイルの場所。

最近のMacには標準でapacheが入っている。 こいつの設定ファイルは/etc/apache2/httpd.confにある。 次に、HomeBrewを利用してapacheをインストールした場合。 この設定ファイルは/usr/local/etc/apache2/$version/httpd.confにある。 混乱しがちなのでメモ。

深層学習ライブラリKerasを触ってみた。

Pythonの深層学習ライブラリのKerasを使ってみた。 TensorflowやTheanoをベースにして、より簡単にモデルを作ったり拡張したりできるとのこと。 いつもお世話になっているサイトのMNISTとCIFARの実装を写経させてもらった。 たしかにモデルは各層をaddで追加…

PHPでシリアライズ(文字列化)してみる。

php

実装上で配列・連想配列などで実装されているものをファイルなどに出力する場合、文字列に変換する必要がある。 PHPではserialize・unserializeを使用して、文字列への変換と読み込みを行う。 ['name'=>'Taro', 'age'=>18], 'user2'=>['name'=>'Jiro', 'age'…

awkを使ってcsvの集計をやってみた。

csvファイルをRDB等に入れずにそのまま集計しなければいけない需要があり、調査してみた。 最終的に、こちらを参考に実装。 bash-3.2$ cat group.csv a,1 b,1 a,2 b,3 b,2 c,1 c,2 bash-3.2$ < group.csv awk -F',' '{ if($0 !=""){ a[$1]+=$2;}}END{for(i i…

README.mdを作る簡易スクリプトを実装した。

簡易なREADMEをつくるためのスクリプトを作った。 #! /usr/bin/env bash cat << EOF > README.md # PROJECT_NAME ---- ## Description ## Licence MIT ## Author [piruty](http://piruty.com) EOF ディレクトリ直下にREADME.mdというファイルを作り、その中…

requestsでToggl APIを使ってみる。

僕は仕事時間の計測にtogglというサービスを利用している。 このサービスにはWebAPIが用意されているので、pythonでこれを実行するスクリプトを書いてみた。 import requests import pprint import sys API_TOKEN = 'your-api-token' def get_toggl(): heade…

ファイルへの書き込み・読み込みの実装。

php

ひさびさに、PHPでのファイルの読み書きに遭遇した。 仕事でも使うが普段は独自のラッパーを定義して使っているので、素のコードでは久しぶりに書いた。 ちなみに、PHPでのファイルの読み書きはこんな感じ。

辞書型の取り出し順の注意点。

Pythonの辞書型は中の順序が何順で並んでいるかは保証されていない。 従って、辞書のkeyやvalueを元に並び替えが必要な場合は少し気にしてやる必要がある。 d = {"a": 100, "c": 10, "0": 500} # keyでソート for key, value in sorted(d.items()): print("{…

公式のパッケージからMacにRをインストールした。

r

これまでhomebrewでインストールしていたRを使用していたが、パッケージインストール時にエラーが頻発したので公式のパッケージのものでインストールし直した。 まずは、brew uninstall r -fでbrew経由でインストールされたRをアンインストール。 次に、rm -…

Djangoプロジェクトを認識させる。

IntelliJは非常に優秀なのだが、Djangoを扱う場合はDjangoプロジェクトと認識させていないとモジュールのインポートなどでエラーを吐きまくる。 実行自体には問題ないのだが、実装していて気になって仕方なかったのでDjangoプロジェクトとして登録することに…