xampp環境でEC-CUBE3開発を少し楽にするコマンドプロンプト起動バッチ

EC-CUBE3ってややこしや(笑

composerや各種ジェネレータの利用などなんだかんだとコマンドプロンプトを使う機会が多いのですが、
xampp環境(zip版)だとpathが通ってないので色々面倒

っということでバッチを作りました。

cmd /k set path=%~dp0xampp\php;%path%

cmd /k
この部分でバッチが勝手に閉じられないように対処

set path=%~dp0xampp\php;%path%
ここでpathを通す作業

set
コマンドプロンプトで環境変数を設定するためのコマンド

set path=
これでPATHを設定しますよ~って意味

%~dp0
これで今いるディレクトリパスが取れるらしくて最後にディレクトリセパレータが入ってます。
例) c:\windows\

xampp\php
ここはバッチを置いたディレクトリからphp.exeまでのPATHですね

;
PATHセパレータ

%path%
「既に登録されてるPATH」=環境変数のを参照する。

つまり
set path=[xampp/phpまでのフルパス];%path%

をしてるってこと。

mysqlにもPATHを通すなら

cmd /k set path=%~dp0xampp\php;%~dp0xampp\mysql\bin;%path%

jQuery使ってたらネイティブDOMが浦島太郎になってた話

先日仕事でEC-CUBEの2系のカスタマイズしてたんです。

内容的にはformにinput type=hiddenな項目追加するというもの。

既存のソースにあんまり手を入れたくないし、
複数サイトに横展開していかなきゃいけないのでモジュール(アドオン)化したくって
JSから要素追加しちゃえ!ってこんな感じの操作をさせたんですね。

$("#form").append('<input type="hidden" name="hogehoge" value="">');

ところがこれがなぜか動かない!!

首をひねりながら色々調べる事30分
$がprototypeになってたっていうね(笑

一般的な対処は

jQuery("#form").append('<input type="hidden" name="hogehoge" value="">');

ってすればいいんでしょうけど。。。

jQueryに依存してったのってこの部分だけなので、この際全部ネイティブで書いちゃおうかと思ったんですね。

私の知ってるネイティブなDOM(level3)ってappend([DomNode])しかなくて。。。
これがとってもメンドクサイ( ˘•ω•˘ )

querySelector()が知らぬ間に出来てたのを思い出して、もしかしてなんか出来てるかも?
で、ちょいと調べたら素敵なメソッド出来てるじゃん!!

var form = document.querySelecter("#form");
form.insertAdjacentHTML('beforeend','<input type="hidden" name="hogehoge" value="">');

なんでもコア技術が好きな私としてはめちゃくちゃ感動してたんです!!

で、今日になってquerySelector()とかも追加されてるしもしかしてDOM Level4出てる?
なんて思って調べてみた。

DOM4 REC-dom-20151119
あるじゃーん!
DOM Level4じゃなくてDOM 4 !?
Levelとこ行ったの!!!Σ( ̄□ ̄;

って突っ込みつつ長らく浦島太郎だったことを思い知ったのでした。。。

XAMPPにComposerのインストール

margedocさんのオールインワン等PC内に複数環境を作っている場合の情報とかがなかったので残します。

コマンドプロンプトから次を実行

>cd [xampp/phpのパス]
[xampp/phpのパス]>php  -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
Failed loading \project\ec-cube3\pleiades\xampp\php\ext\\project\ec-cube3\pleiades\xampp\php\ext\php_xdebug.dll
All settings correct for using Composer
Downloading...

Composer (version 1.5.2) successfully installed to: [xampp/phpのパス]\composer.phar
Use it: php composer.phar

こんだけ。

ザックリいうと、composer.pharがphpのパスの通ってるところにあれば良いっぽい

次のコマンドで動作確認

[xampp/phpのパス]>php composer.phar
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.5.2 2017-09-11 16:59:25

Usage:
  command [options] [arguments]

こんなのが表示されればとりあえず動いてるらしい

composerを利用する場合は
↑みたいに

php composer.phar [パラメータ]

カレントが[xampp/phpのパス]以外だと

php [xampp/phpのパス]composer.phar [パラメータ]

ってしなきゃダメ臭い。
すんごい面倒なのでバッチを作る

[xampp/phpのパス]>echo @php "%~dp0composer.phar" %*>composer.bat

これでcomposer.batが作られました。
※[xampp/phpのパス]で実行しないとダメなので注意!
そしてディレクトリ名変更したら修正しなきゃダメなのでこの点も注意!
っても絶対このこと忘れてるよねwww

今後は「php composer.phar」を「composer」って読み替えて使う

カテゴリー: PHP

Chromeの開発者ツールの使い方

Chromeの開発者ツールが最近優秀だと聞いたので調べてみた。

■公式の説明
https://developers.google.com/web/tools/chrome-devtools/

公式はちょっと見ずらいので他を探してみた
http://www.buildinsider.net/web/chromedevtools/01
http://commte.net/blog/archives/5882

まぁググればいいんですけどね(;´・ω・)

FireFox開発者ツールの使い方

Web制作初心者の方に開発者ツールの使い方説明のサイトとかないかな~
って探していたら、公式サイトを発見!

こんなサイトあったんですね!

https://developer.mozilla.org/ja/docs/Tools

「MDN」をみて「MSDN」と勘違いして、MSがなんでFireFoxの開発者ツール説明してるの!?Σ(゚Д゚)

って驚いたけど勘違い!紛らわしぃw

Windows10の仮想デスクトップが便利!

先日仕事用のPCをWindows10にたのですが、タスクバーにある「タスクビュー」なるものを見つけて「仮想デスクトップ」なる機能をみつけました。

仕事中に別な作業依頼が来て画面にウインドウがあふれるなんてことがよくある私なのですけど、この仮想デスクトップでお仕事を切り分けられます!

Win10にしていろいろ不便を感じることがあるけど、久しぶりに「いいね!」って思う機能をみつけて喜びを感じたひと時でした(笑

ショートカット
新規:[Win]+[CTL]+[N]
切り替え:[Win]+[CTL]+([←] or [→])

CakePHP2 Formヘルパーのcheckboxの使えなさときたら。。。

checkboxで複数選択の項目を作る場合、cakephpでは次のように書く説明がよくみられます。

$options = array('foo','var');
$formdata = $_POST['data'][フィールド名];

$this->form->input("フィールド名",
 	array(
 		'type'=>'select',
 		'multiple' => 'checkbox',
 		'div'=>false,
 		'label'=>false,
 		'legend'=>false,
 		'options' = $options,
 		'selected' = $formdata,
	)
);

確かに複数で出力される。

だがしかし!「’div’=>false」が効いてない(´・ω・`)

チェックボックスを横並び出来ないっていう。。。。
ソース追いかけたらdivオプション自体がシカトされてる。

皆どうしてるんだろう???

そもそも$this->form->inputは色々な機能を盛り込んだ$this->form->xxxxのalias的な物
エラーメッセージの出力なども自動でやってくれる便利な子ではあります。
色々共通化した結果の歪がこれなんでしょうね。

けど、CakePHPってこうした落とし穴がところどころ存在して悩まされる。
普通に使うFormヘルパーにもこんな落とし穴作るとかもうダメダメじゃん。。。
何でこんなフレームワークが日本でたくさん使われてるのかマジ理解不能。

さらに今回はフィールド名のところを空にしたり、name属性を調整したりと
ソース踏襲の為にFormヘルパーを使て次のように対応

$options = array('foo','var');
$formdata = $_POST['data'][フィールド名];

$i=0;
foreach($options as $val){
	$checked=false;
	if( $data[フィールド名][$i] == $val ) $checked = true;

	echo '<label>';
	echo $this->Form->input(false,
		array("name"=>"data[フィールド名][$i]","type"=>"checkbox",'label'=>false,'div'=>false,'value'=>$val,"checked"=>$checked));
	echo $val.'</label> ';
	$i++;
}
if(isset($errors[フィールド名])) echo '<div class="error-message">'.$errors[フィールド名][0].'</div>';

第1引数のフィールド名をfalseにして色々な機能をOffにして対応。
とりあえず目的の事は出来た。

で、テストしてたら何故だか直前の入力フィールドのエラーメッセージがこのcheckboxに反映されるという
奇々怪々な現象が発生。

いやね、最初は私がフィールド名を間違って書いたのかと思いましたよ。
けどそうじゃなかった!!

inputメソッドの第1引数にフィールド名を指定して使った後に
inputメソッドの第1引数にfalseを使うと、前者のエラーメッセージを拾い上げてくれる優れもの!
もう失笑です。

‘error’=>false

のオプションを追加して非表示にできたけどもさ。。。
もうほんと、なんだかなぁ~って感じです。

昔から不勉強を棚に上げて「使いにくいから!」とFormヘルパーを使わずにゴリゴリPHPコード書いてたんだけど、
やっぱりその方法が正解のようです。

ちなみにバージョンは2.7.8です。

キーボードはやっぱり赤軸が好き

私がメカニカルキーボードに出会ったのは19歳のころ、
職場で使われていたホストコンピュータ(AS400)のキーボードでした。
とてもソフトでストレスのないクリック感。そして、カシャカシャカシャっと心地よい音を奏でるキーボード。
その当時はパソコンに標準添付されたエアパッド式のキーボードを使っていたので大変な衝撃を受けたものです。
それ以来メカニカルキーボードへの憧れの様なものが芽生えた瞬間だったように思います。

それ以来いくつかのメカニカルキーボードを経て、ここ7,8年はFILCOシリーズにお世話になっています。

ところで私の様なプログラマーという仕事をしていると、
1日で一番長く手に触れているものがマウスとキーボードってことになっちゃいます(^^;
もしかしたら生涯で一番長いかもしれませんね。

そんな切っても切れない大切な相棒たるキーボード。
それだけにストレスの少ない使いやすいキーボードが個人的に欲しくなります。

私の最近のキーボードへのこだわりは次の3点

・メカニカルであること(笑
・テンキーレスであること。
・印字が側面にあること

の3点です。

「メカニカルである事」はどうでもよいとしてw
「テンキーレス」は私がFPSやTPSのゲーマーだからです。
FPSやTPSってマウスの稼働範囲が広く欲しいんですよね!なのでテンキーレスがいい!

「印字が側面にあること」これはですね~、ゲーマーな方ならわかると思うんですけど、キートップの印字だとAWSDの文字が消えるんですww
長く使うと印字が消えてしまって、4年くらい使ってたFKBN91M/JB2なんか半分近いキーの印字がなくなってる始末!
私はタッチタイピングできるので印字なくてもそんなに問題はないんだけど、家族やゲストさんからクレームが(^^;
そんな理由から側面印字なキーボーだと消えちゃうことが無いのでありがたいですね!

さてさて、そんなこだわり派の私ですけど、今は赤軸 91キーの FKBN91MRL/NFB2を使っています。

で、サブPC用にもう一つ!っと思ったのですが、時期的にどこも在庫が無いようだったので
以前使っていた茶軸と、まだ使ってない青軸と悩んだ結果、青軸 91キーのFKBN91MC/NFB2 を購入してみました。

カチャカチャカチャっという青軸独特の音がするw
赤軸はカタカタ、スコスコと控えめな音なだけに気になる!

改めて茶軸と比較してみたけど茶軸より音が大きいですね~

一番特徴的だと思ったのはクリック感です!
青軸はある一定量押下すると急に抵抗がなくなってスコンってキーが沈むので独特のクリック感がありますね!
そのぶん指に衝撃がくるので、微妙にイラッとした感じもします(^^;

赤軸はシームレスな押下感で
茶軸は押下した最初の方に引っかかりがある感じ
青軸は半分くらいのところに引っかかりがある感じ

ただ、同じ茶軸のFKB108M-AIとFKBN91M/JB2なんだけど、
微妙にクリック感が違うんですよね~

ロットによって差があるって事なのかしら?

使っているMajestouch達

EC-CUBE::多数注文中にカートが空になる

MySQLを利用したEC-CUBEサイトで件名の不具合が出るようです。

原因はdtb_session.sess_dataの型がtextになっていて、文字列が足りなくなったために起こるようです。

EC-CUBEはsessionデータをDBで保存しており、serializeしたsessionデータを保存しています。

対策としては次のコードを実行する。

alter table dtb_session change sess_data sess_data longtext;

MySQLの仕様を確認したところ、文字列の長さは次の通り

text longtxt
65,535byte 4,294,967,295(4G)

私の環境では65kどころか1k程度でセッションが途切れてました。

writeする前に既に文字が途切れていた節もあって、この対応ですべて片付くかは微妙な所。

ひとまずこの対応で様子見をしてみます。

※SC_Helper_Session.sfSessWrite()の第2引数「$sess_data」がわたって来た時点で途切れていた。
※UTF-8環境で若干の日本語文字を含みます。

WordPress::ログインユーザのパスワードを忘れてしまった時の対処法

たま~にやっちゃう。パスワード忘れ。
そんな時には次の方法で対処します。

mysqlでパスワードを強制的に上書きする方法です。

update wp_users set user_pass=md5('newpassword') where id=xxx;

newpasswordの部分を書き換えて、idの「xxx」を該当ユーザのidを指定しましょう。