Posted on

EAVをなんとかし隊

これは平成最後の月。
CakePHP2.x系。入力チェックが通らないたび、フォームの内容が編集前に戻ってしまう不具合を直したときの話。

単純にまず、DBがイケてなかったんです。


INT id
INT type
VARCHAR(255) value

どこからどう見てもEAV。Entity Attribute Value。
何故よくないかのDB設計理論的な難しい説明は置いとく。
DB構造はその時動かす権限がなかった。(もし権限があったらその根本原因から直してしまいたかった)

で、その不具合が発生している画面を見て。

・DBから持ってきたデータ構造
・フォームへ渡すときのデータ構造
・フォームの初期値を表示するとき

これらが全部バラバラで往生した…。

DBからとってきたときの配列:

[
    0=> ['Model'=> [id => 1, type => 1, value => 5]],
    1=> ['Model'=> [id => 2, type => 2, value => "someaddress@example.com"]],
    2=> ['Model'=> [id => 3, type => 2, value => "anotheraddress@example.com"]]
]

これを加工して,typeをキーにしてビューに渡すけれど:

[
    1=> [
        0=> ['id'=>1, 'value'=>5]
    ],
    2=> [
        0=> ['id'=>2, 'value"=>"someaddress@example.com"],
        1=> ['id'=>3, 'value'=>"anotheraddress@example.com"]
    ]
]

ビューでさらに取り出す:
(Formヘルパに’value’で渡している)

$this->Form->input('Model.type_1.value',['type'=>'text', 'value'=> $this->request->data[1][0]['value']);
$this->Form->input('Model.type_2.0.value,['type'=>'text', 'value'=>$this->request->data[2][0]['value']]);
$this->Form->input('Model.type_2.1.value,['type'=>'text', 'value'=>$this->request->data[2][1]['value']]);

(あと、idをそれぞれhiddenフォームで送っていたりする)

フォームを送信すると、入ってくるのは…

[
    'Model'=> [
        'type_1'=> ['id'=> 1, 'value'=>5],
        'type_2'=> [
            0=> ['id'=> 2, 'value'=> 'someaddress@example.com],
            1=> ['id'=> 3, 'value'=> 'anotheraddress@example.com]]
	]
    ]
]

当然、DBからデータを取ってきたときとも最初フォームに渡したときとも違う構造。
このままではフォームの次の値が取れないから、前のコードではリクエスト関係なくDBからその都度データ読み込んで来ていた。
エラー値ならエラー値のままフォームに残しておく仕様なのに…。

とりあえず、その時はビューに渡すときの構造と受け取る時のデータ構造をそろえた。
(そうでないと変換が双方向に必要になるんで)
そろえれば使えなくはない。
Formヘルパに渡すvalue要素も要らなくなるし、入力チェックが通らないときフォームの初期値を作るためだけにDBを読みに行かなくていい。

でも、それでもやっぱりEAVはイケてない…。

この構造の時、まず絶対に1つしかないパラメータをこう…ひとつテーブルにして

INT model_id
INT type1_val

で、複数登録する必要がありそうな情報だけテーブルを分けてこう…。

INT model_mail_id
VARCHAR type2_mail

そしたら、DBからとってきた構造をパースしてフォームに渡す必要って本来それほどないはずなんです…。

僕がDB設計するときには、後輩に同じような愚痴を語らせないためにも、
あと、DB設計理論以上にそもそもコーディングがめちゃくちゃ往生するので、できることならEAVは避けていきたいという話でした。

Posted on

WebサイトをPDFに変換する

HTMLでシステムの画面のモックを作成していた時に
お客様が全ページ画面キャプチャするのが大変・・・
印刷して朱書きで要望等簡単に書けないか?ということがありました。

社内でも調整してほしい箇所をキャプチャするのは大変だし、何かいい方法ないか調べてみました!

続きを読む WebサイトをPDFに変換する

Posted on

ちょっと便利なツール&ウェブサイト

☆ブラウザー
Chrome系
Checker Plus for Gmail?
Google Mail の受信トレイにある未読のメール数を表示します。
このボタンをクリックして受信トレイを開くこともできます。
Googleマルチアカウントランチャー
ワンボックスでGoogleサービスを一発でアクセスでき、
マルチアカウント自由に切り替え、
Gmail/Google+/GoogleAppsなどのアカウントを自動的にチェックします
Screen Capture (by Google)
ブラウザー上でスクロールしないと見えない領域を含めたページ全体をキャプチャ指定できます。
水平方向および垂直方向のスクロールをサポートしています。
Cacoo
CacooはWeb上で図の作成、公開、リアルタイムコラボレーションができるドローツールです。
サイトマップやワイアーフレーム、UML、ネットワーク図などの図を簡単に作成できます。
Firefox系
Firebug
Firebugは、Webページを閲覧中にクリック一つで使える豊富な開発ツールをFirefoxに統合します。
あなたはあらゆるWebページのCSS、HTML、及びJavaScriptをリアルタイムに編集、デバック、またはモニタすることが出来ます。
Pearl Crescent Page Saver
表示中のページを画像として保存します。
ScrapBook
Webページの保存とコレクションの整理を支援します。
FireMobileSimulator
携帯端末のHTTPリクエスト、絵文字表示をシミュレートします。
☆サービス
Gmail
未読メッセージアイコン
タブのアイコンを見れば、受信トレイ内の未読メールの件数がすぐにわかります。
このLabs機能はChrome(バージョン6以降)、Firefox(バージョン2以降)、Opera
でのみご利用いただけます。
返信定型文
よく使う文面を保存しておくと、作成フォームの横にあるボタンひとつで送信できます。
また、フィルタを利用して自動的にメールを送信することもできます。
送信取り消し
間違って[送信]ボタンを押してしまったことはありませんか?[送信]をクリックして
から数秒以内ならメール送信をキャンセルすることができます。
SoftEther VPN
インターネットVPN
http://www.packetix.net/jp/
IOPortal
ダイナミックDNS
http://www.iodata.jp/product/network/wnlan/wn-g300dgr/feature.htm
ラクサバ
レンタルサーバー

Xmarks
各ブラウザ間でブックマーク同期
http://gigazine.net/news/20120928-xmarks/
Money Forward
資産管理
https://moneyforward.com/
TONTON
スケジュール管理
http://tonton.amaneku.com/
aucfan
オークションの相場がわかる
http://aucfan.com/
Schoo
無料ウェブスクール
http://schoo.jp/about
Bukupe
本の感想サイト
http://bukupe.com/
wantedly
ソーシャルリクルーティングサイト
https://www.wantedly.com/
すごい時間割
https://www.sugojika.com/
gumroad
決済機能を持ったURLを生成できるサービス
https://gumroad.com/
http://d.hatena.ne.jp/keyword/Gumroad
モナカ
スマートフォンアプリの開発環境が無料で整えられる
http://monaca.mobi/?lang=ja

Posted on

BI【Business Intelligence】ツールpentahoを使ってみました。

1.利用要件
 外部にあるMySQLに接続し、データベースを利用する。
 欲しい情報をグラフにして表現する。
 また、絞り込んだデータをEXCELやPDFに出力する。
2.pentahoインストール方法
 1)ダウンロードするファイル
  ・biserver-ce-4.5.0-stable.zip
  ・jdk-7u9-windows-i586.exe
  ・fop-0.20.5.jar.zip
 2)準備しておく環境
  ・Fedore14 MySQLのサーバー
   a.ファイアウォールでポート3306を有効にする。
   b./etc/my.cnfにてbind-addressが指定されていないことを確認
     (指定がないとどこからでもアクセス可能になります。)
   c.特定ユーザーのログイン情報のホストの設定を、「すべてのホスト」に設定する。
 3)インストール
  ・C:\pentahoのフォルダを作成する。
  ・C:\pentahoへ1)でダウンロードしたファイルをコピーする。
  ・biserver-ce-4.5.0-stable.zipを(C:\pentaho)へ展開する。
  ・jdk-7u9-windows-i586.exe(32BIT)版をインストールする。
   (64BIT:マシンは64BIT版をインストールする。)
  ・環境変数JAVA_HOMEへC:\Program Files\Java\jdk1.7.0_09を設定する。
  ・あと、biserver-ce-4.5.0-stable.zipの解凍だけでは、EXCEL、PDFが出力できないため、
   C:\pentaho\biserver-ce-4.5.0-stable\biserver-ce\tomcat\webapps\pentaho\WEB-INF\libの
   fop-0.94.jarを消し、fop-0.20.5.jarをコピーする。
3.pentahoの起動
 1)C:\pentaho\biserver-ce-4.5.0-stable\biserver-ceのstart-pentaho.batを実行する。
 2)ブラウザーを立ち上げてhttp://localhost:8080を入力する。
 3)ログイン画面が立ち上がるので、ID:joe、パスワード:passwordにてログインする。
4.pentahoの利用
 1)お使いのデータにより、集計する対象が変わります。
 2)mySQLへの接続、ファイル->新規作成->DataSourceにてData Source Wizardが立ち上がる。
 3)SourceTypeをDatabase Table(s)を選択する。
 4)+アイコンをクリックしてDatabase Connectionにてお使いの環境の情報を設定する。
  (ここで2.2)・c.のユーザーを設定する。)
5.pentahoの停止
 1)C:\pentaho\biserver-ce-4.5.0-stable\biserver-ceのstop-pentaho.batを実行する。
6.利用方法
 2日程度しか調査していないので、できることに関しては、全て把握した訳ではありません。
 利用の方法としては、mySQLでVIEWをCREATEしてそのテーブルをpentahoで参照し、グラフ化
 しました。pentaho内では、条件文を記述できないようなので、mySQLのVIEWで代用しました。
7.補足情報
 biserver-ce-4.5.0-stable.zipをインストールする前に、biserver-ce-3.10.0-stable.zipを
 インストールして使ったのですが、mySQLのViewを参照することができなかったです。
Posted on

Gmail 添付忘れチェッカーなくなってますね。。。

お客さんに6月29日にしたメールの添付忘れに今日(7月6日)に気付きました。
一週間も放置してしまって、ちょっと凹んでますが・・・

ん?あれ?Gmailで本文内に「添付」って書き込んで添付わすれたら
アラートがでたはずなのに!!

と、思って試してみたら、アラートがでなーい。
なんの設定したのかもあやふやだったので、ググってみると

あーそだそだ!
設定→Labsの設定だ、設定がなぜか外れてしまったのか・・・

と、Labs内を探すも添付忘れチェッカーがない。。。

そりゃ
「Gmail Labs は実験的な機能をテストする場であり、
ここにある機能は随時変更、中断、提供中止されることがあります。
」
って書いてるけど。。。。

ヒューマンエラー防止や予防の機能がいきなりなくなるとは、ちょっと困りました。。

Posted on

サイト集客:GIGAZINE セミナー

同僚の誘いがあり興味がある内容なので、
GIGAZINE10
周年記念講演「なぜあなたのサイトに人が来ないのか?」

に行ってきました。

存在は知ってましたが、特にお気に入りに入っ
てるというわけではなかったので、
どんな切り口で「webでの集客をしているのか」、またどんな話をするのかちょっと楽しみでした。

ま
ず最初にメモはするな!と
メモにとらずに頭に残るものこそ自分にとって大事な情報である!
みたいなことを、マクドナルドの社長?の引用文
と共に紹介してました。

内容は大きく5つ
1、更新しまくれ
内容はいたって当たり前のことでした。
アクセス数、実
例共に更新することによって、どう変化があったか紹介されていました。
「更新できないサイト内容であるなら、そこから見直すべき」

2、
デザインを考える
ユーザビリティを考え、何をどこに配置することがベストなのかを常に考える。
レイアウト変更でアクセス30倍とか、ヒー
トマップのF字理論
リピーターはF字にならないのでまた考える。

3、色づかい
文字中心の内容であり、モニター越しに見る
ユーザーのことを考え
見やすい色づかいがどこまで出来ているか。
bing(microsoftの検索エンジン)が文字色を変えただけで収
支がUPしたことを紹介

4、最重要!!サーバ強化
有名サイトやニュースサイトから紹介され、一時的にアクセスが増えた時を逃さな
い。
その時をいつか期待しつつ、オーバースペック気味でもサーバは強化しておけとのこと。

サーバ強化による表示スピードもとても
大事であることをgoogle,amazonを実例に紹介。

5、仕事≠遊び
24時間集客のことを考え、遊んでいる暇はない!
人
の倍しないと、人と同じ結果しかでない。
それができるかどうかが分かれ目である。
みたいな話でした。

内容はこんな感じ
だったはずです。
アクセス解析を見せてくださったり、実例を元に話してたのですんなり納得できる内容でした。

Posted on

子だぬきの技術習得ノート、オープンしました。

子だぬきの技術習得ノート、オープンしました!!

有限会社奥進システムのスタッフが仕事上で思えたり趣味で勉強したことを時々書いていきたいと思います。
Windows、Linux、PHP、Ajax、CakePHPフレームワーク等のWEBに関して掲載していく予定ですので、皆様の参考になれば幸いです!!