Author Archives: のびー

のびー

About のびー

株式会社ホットポット(現 イー・ガーディアン株式会社)(アルバイト)2005年1月~2006年4月  ↓ 株式会社エディア 2006年4月〜2007年7月  ↓ 株式会社パクレゼルヴ 2007年8月〜2010年7月  ↓ グルーポン・ジャパン株式会社 2010年8月〜2011年12月  ↓ ミューズコー株式会社 2012年2月3日〜2013年12月31日  株式会社パクレゼルヴ からの出向扱いにて所属。  ↓ 株式会社PRECS 2014年1月 いっぱい会社渡り歩いてるように見えるけど、転職は1回しかしてません!

q Text as Data

By | 2015/03/03 8:03 PM

http://harelba.github.io/q/

tsvファイルやcsvファイル等をそのままSQLであれこれしてしまおうという感じ。

ということで面白そうなので使ってみました。

で、rpm取得してインストール

早速使ってみましょう。

コレ、CSVとかで無くても大丈夫見たいなのです。
なので今回はアクセスログをゴニョゴニョしてみます。

で行けるみたいです。

出力結果は、まぁ元のファイルに依存するみたいなのでそれぞれ見ていただければと思います。

オプション
-D
 出力のファイルのデリミタ
 ex)
  -D $’\t’ => TSVファイル
-d
 入力のファイルのデリミタ
 ex)
  -d ,   => CSVファイル
-O
 出力ファイルのヘッダーを出力
-H
 入力ファイルのヘッダーをカラム名として利用
-e
 入力ファイルの文字エンコーディング
-Q
 クエリの文字エンコーディング

などなど
後は

でご確認を

的なファイルがあったとして、
iPhone、Android、その他でデバイス別に各ファイルのアクセス数をソートして見てみたい
といった時

とかとかやれば

的な結果が帰ってくる

JOINもできるみたいなので、色々やれそうで面白いですね。

で、中でどうやってるのかなーとソースを見てみる。

https://github.com/harelba/q/blob/master/bin/q
githubで公開されているのでかる~く流し読み。

ほほぅ なるほど
sqlite使ってるのね
メモリ型でやってるから高速に処理できると。

と、いうことは、sqliteの構文ならそれなりに使えそう。

機会があれば色々使ってみようかな。

ソケットでメールを送ってみよう

By | 2015/01/23 9:06 PM

まぁ、phpならメール関数使うなり、ライブラリいっぱい転がってるんで
そういうの使ったほうがいいです。
当然。

ただ、SMTPの生コマンドで送ってみよう というだけの話です。

前提条件として、認証なしのSMTPサーバがローカルにある という前提。
認証ありの場合、HELOコマンドをEHLOに変えてごにょごにょして下さい。

本当は$ret部分でコマンドの結果を受け取って、失敗したとかの判定を入れるべきですがめんどくさいので
割愛。

あと、どうせソケットで送るなら、一回つないだコネクションを使いまわして連続で送信する ということをやってます。
phpのmail関数系は毎回コネクションを張るので、大量に送るならコネクションは使いまわしたほうが良いです。

まぁ、大体のライブラリにはアリます。

ただ、注意がアリます。
大量に送信していると、途中でコネクションが切れたり ということもあるので、
ちゃんとコネクションがはられているか ということも確認しましょうね

大体2~300回ぐらいで 貼り直したほうがいいと思います。

CSSやJS等が更新してもキャッシュされてしまって困っちゃう!

By | 2015/01/19 8:29 PM

と、言うお話。

的な感じで書けばキャッシュされなくて済むね!
やったね!!

とは行かないですよね。
コレだと普通に更新していない時でも毎回転送してしまうので。

ではでは

って感じにすればいいんじゃね? 俺って天才!

とか思っちゃう早とちり君もいますね。

phpのマニュアルにも書いてあるんですが、filemtime 関数の結果はキャッシュされるのです。

注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。

なので、定数でも作っちゃいましょうか。

んで

ってしてやるのが確実かなと。
CSSとかJSを更新したタイミングでインクリメントしてやれば良いかと。

デプロイツールに上の定数をインクリメントするような仕組みを入れてやれば、
更新した時に自動的にタイムスタンプが変わるかなぁと。

spl_autoload_registerでrequire_onceだらけのソースをスッキリさせましょう。

By | 2015/01/16 8:28 PM

便利ですよね
spl_autoload_register

newした時にそのクラスが無ければ探しに行ってくれる というような感じです。

ということで簡単な使い方です。

document_root/
 ├index.php
 └class/
    ├Hoge/
    │ └hoge.class.php
    └Fuga/
      └fuga.class.php

的な感じのファイル構成だとしましょうか。

って感じにしておけばOK。

また、
require
する時に

みたいな事してやれば、デバッグで$autoload_listを出力させてやれば、どんな順番でclassが読まれてるか分かる。
で、file_existsのif にelse付けてやって

ってしとくのもありっちゃ有りです。
(try catch で例外受けるほうがいいと思うけど割愛)

spl_autoload_register部分を共通ファイルとかにしちゃえば、classのロードのためにいちいちrequire_onceとかしなくて済みます。
クラスの命名規則と設置場所さえルーリングされていれば、requireが100個あろうが200個あろうが書く必要は無いです。

WebアプリケーションからMySQLのクエリ発行する際に入れておくといいかも知れない

By | 2015/01/05 11:01 AM

WebアプリケーションからSQLを発行する際に
入れておくといいかも知れないので紹介

WebアプリケーションからSQL実行する際に
どこから呼ばれて、何処のメソッドかわかるようにしたいので
db.phpクラスに以下のような感じにしておく。

やってる事は単純で
呼び出し元のファイル名とファンクション名を取り出してるだけ。

コレを発行するSQLの頭に付けてやり、末尾に改行を入れてやればそのままクエリは発行できます。
そうすると、mysql側で

とかすると

的な結果が見れるのでいかがでしょうか。

トラブルや、高負荷時に何処のクエリが原因かすぐさま確認したい! といった時や
結果取れてるけど、このSQLは何処から呼ばれてるんだろう?
といった時に役にたつと思います。

的な機能があれば、デバッグ時にも当然役に立ちますし。