あなたの予想に反して、このページが見えているでしょうか?

脆弱性倶楽部
 最近のエントリー
 カテゴリー
 道具
 管理人
メールアドレス ツイッター
Twitter ブログパーツ
 エントリー
 管理
 SQLite3のデータを表示させる
    [ 2012/05/15 ]
このエントリーをはてなブックマークに追加
最近SQLiteを触ることが多いけど中身をネット上で確かめられるものがあまり無かったので見るだけのものをとりあえず作ってみた。

特定のフォルダにあるすべてのSQLファイルの中身の一覧を表示します

/*
 * SQLiteデータ置き場
 */
$dir = "./application/db/";

/*
 * ディレクトリ内ファイル名取得
 */
$open_dir = opendir( $dir );
while( $file = readdir($open_dir) )
{
 $row_colum = "";
 $colum_name = array();
 $data = "";
 $bc = "";

 if( !preg_match("/\.\.|\.$/i", $file, $match) )
 {
  /*
   * テーブル名取得
   */
  $conn = new PDO("sqlite:" . $dir . "" . $file); 
  $sql = "SELECT * FROM sqlite_master WHERE type='table' order by name ";
  $stmt = $conn->prepare($sql);
  $stmt->execute();
  $row = $stmt->fetch();
  /*
   * テーブルカラム取得
   * テーブル名 : $row['tbl_name']
   */
  $conn = new PDO("sqlite:" . $dir . "" . $file); 
  $sql = "PRAGMA table_info('" . $row['tbl_name'] . "')";
  $stmt = $conn->prepare($sql);
  $stmt->execute();

  echo $file . "&nbsp;-&nbsp;" . $row['tbl_name'] . "<br />\n";
  echo "<table>\n";
  echo "<tr style=\"background: #666666; color: #ffffff;\">\n";
  while($row_colum = $stmt->fetch())
  {
   /*
    * カラム名出力 + カラム名取得
    */
   echo "<th>" . $row_colum['name'] . "</th>";
   $colum_name[] = $row_colum['name'];
  }
  echo "</tr>\n";

  /*
   * テーブル内データ取得
   */
  $sql = "SELECT * FROM " . $row['tbl_name'] . "";
  $stmt = $conn->prepare($sql);
  $stmt->execute();

  while($data = $stmt->fetch())
  {
   /*
    * 背景色指定
    */
   $background = "";
   if( $bc % 2 == 0 )
   {
    $background = " style=\"background: #a9a9a9\"";
   }
   if( $data != null )
   {
    /*
     * 1レコード出力
     */
    echo "<tr$background>";
    for($i = 0; $i < count($colum_name); $i++ )
    {
     echo "<td>" . $data[$colum_name[$i]] . "</td>";
    }
    echo "</tr>\n";
   }
   $bc++;
  }
  echo "</table>\n";
  echo "<hr>\n";
 }
}
closedir( $open_dir );

SQLファイルのあるディレクトリを指定してやると、そのフォルダにあるSQLファイルの中身を全部一覧表示します。

あとで中身の編集とか追加も出来るように拡張する予定です。
[ comment ]
 iOS5.1.1
    [ 2012/05/08 ]
このエントリーをはてなブックマークに追加
5月7日に出ていたようなので早速アップデートしてみた。

今のところ改善対象となった不具合に遭遇したことはないが、とりあえず最新のものにしてみる。

そんでもって早速ユーザーエージェントを確認。

iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206

5_1が5_1_1になってちょっと数字が変わっただけのようです。
[ comment ]
 箱庭
    [ 2012/05/06 ]
このエントリーをはてなブックマークに追加
CSSやHTML5のお勉強がてら箱庭っぽいものを製作してみた。

SQLiteとか使って軽量にし、処理をJavaScriptとかに載せることでサーバーへの負荷を減らし従来の箱庭の重いというのをそぎ落としたシンプルなものを作成中。
別に公開してどうこうってわけじゃないけど、どうせお勉強するからには楽しくやりたい。
そこで考えたのがゲームなんだけど、色々と設定とか考えて機能を追加するのが楽しくてしょうがない。

それに色々と勉強になるから、身につく喜びとか技術的なストックが増えてうれしいことばかり。
しかし、仕事とは違うのでなかなか進まないのが難点ではあるけど、久しぶりに楽しいので良しとすることにした。
[ comment ]
 CSS3のみでかっこいいボタンを作ってみる(IE8も微対応)
    [ 2012/04/28 ]
このエントリーをはてなブックマークに追加
HTML5がもてはやされてる。
時代の波に残されまいといまさらながらに勉強をはじめるわけですが、とりあえずかっこいいボタンを作ってみることにした。

2012/04/28

こういうのを作ってみた。
さすがにIE8だと角丸が使えないし、影をつけれないし、グラデーションも大した機能もないのでこんな感じではあるがそこそこいいものが作れた。

ソースは以下

a.button{
 /* 角丸 */
 border-radius: 4px 4px 4px 4px;

 /* グラデーション */
 background: -webkit-gradient(linear, center top, center bottom, from(#444444), color-stop(0.49, #444444),color-stop(0.5, #222222), to(#222222));
 background: -moz-linear-gradient(top, #444444, #444444 49%, #222222 50%, #222222);
 -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#444444', endColorstr='#222222')";

 border: 1px solid #333333;
 /* shadow */
 -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6);
 -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6);
 /* 他 */
 padding: 3px;
 margin-top: 3px;
 margin-bottom: 3px;
 width: 240px;
 color: #ffffff;
 font-family:Verdana, arial, sans-serif;
 text-decoration:none;
 text-align: center;
 
 display: inline-block;
}

ボタンといいながらリンクになってますが、buttonに変えれば同じようになります。
webkit / moz はそれぞれFirefoxとChrome(webkit)になるわけですが、IE8でもグラデーションを行うには

-ms-filter

というものを使うことで近いことが出来ます。
ちなみにこれはIE8のみなのでIE6/7の場合はfilterとなるので注意が必要。
というかIE6/7は早く地球から滅んでほしい。
まぁ正規のWindowsXPなら自動更新でIE8になっているはずなので、もう気にしないことにしますけど。

それにしてもCSSだけでここまで出来るようになるのは本当にすごい。
いちいちデザインの人に修正してほしいとか言わなくても済むわけだし。
でもボタン1つでここまで大量のソースが必要になってもなんとも思わなくなったのはやっぱり回線の影響が大きいんでしょうね。
[ comment ]
 ソーシャルな機能を追加してみる
    [ 2012/04/20 ]
このエントリーをはてなブックマークに追加
このブログはCodeIgniterを使ってフルスクラッチで作成しているので色々と足りないものがあります。

その中でソーシャルとの連携はTwitterのタイムラインを表示するくらいだったのですが、巷のブログではよく見かけるボタンを追加してみました。
追加したのは

Tweetボタン
はてぶボタン

の2つ。
しかし公式のボタンをそのままコピペするとこのサイトでは問題が発生する。

公式のボタンは貼り付けた場所のタイトルとURLを使ってアレコレしてくれる便利なものなんですが、このサイトはトップページは複数の記事を1つにまとめているため、そのまま使うとトップページがTweetされたりはてぶに送られたりする。
そうするとちょっと困るので公式のものを少し改造して、タイトルとURLを記事毎に出力するように変更。

はてぶ公式
<a href="http://b.hatena.ne.jp/entry/http://zeijaku.net/" class="hatena-bookmark-button" data-hatena-bookmark-title="脆弱性倶楽部" data-hatena-bookmark-layout="standard" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>

はてぶ公式を以下に改造
<a href="http://b.hatena.ne.jp/entry/DBから取得した記事アドレス引数" class="hatena-bookmark-button" data-hatena-bookmark-title="脆弱性倶楽部 " data-hatena-bookmark-layout="standard" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>

Tweetボタンは公式のものだと不要なものがついてたり、改造が行えないのでそれぞれの引数を組み立てて以下のものを作成
<a href="http://twitter.com/share?text=脆弱性倶楽部 " . DBから取得したタイトル引数 . "&via=zeijaku&lang=ja&url=DBから取得した記事アドレス引数" class="twitter-share-button" target="_blank" onclick="window.open(this.href, 'tweetwindow', 'width=550, height=450,personalbar=0,toolbar=0,scrollbars=1,resizable=1'); return false;"><img src="ツイートボタンイメージアドレス"></a>

javascriptの方で別窓で開くように調整。

これで少しはマシなブログに見えるようになったんじゃないかと勝手に想像してますが、これはこれで楽しかったし仕事でも使えるんじゃないかと思ったり思わなかったり。

あとついでに管理画面での集計をより細かく出来るように変更を加えたりしてみた。

どうして現実逃避の作業ってこうもはかどるんだろうか・・・・・・
[ comment ]