エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

SELECTした結果をそのまんまINSERTできる

これまたよくあるパターンです。 テーブル Aを検索して、集計などなどして、 テーブル Bに結果をINSERTしたい。 ていうケースについて 結論こんな感じです >|sql| INSERT INTO dtb_category_range_count SELECT range_id, count(product_id) AS cnt FROM dtb…

SELECTした結果はそのまんまUPDATEできるよ! 

エンジニアならよくやると思うけど、 テーブルAの検索結果を集計なりなんなりして、 テーブルBに保存するっていうケース UPDATEにFROM句つかってサブクエリやれば、さくっといける SLECT結果をグルグルループしながらアップデートってのもあるけど、 件数多…

smarty で isset(or empty)がエラーになる時のワザ!

結論だけ もしsmartyでissetを使うとエラーになる場合には、|smarty:nodefaultsを付けると上手くいくかも。 {if isset($var)} これを、↓みたいに付ける。 {if isset($var|smarty:nodefaults)} なんで、これで上手くいくかって? それは知らん! emptyは試し…

webデザイナも使いたい!gitbacketとsouceTreeでのソースコード共有

エンジニアならお馴染みのgitでのソースコード共有ですが、 webデザイナにはたぶん馴染みないでしょう。 gitってなに?って人はすまん。こっちをみてください。 http://www.backlog.jp/git-guide/ そんな非エンジニアな人に知ってほしい。 超楽ちんに最新ソ…

これが答えだっ php5.3以下でもjson_encodeで日本語扱うなら!

PHP

PHP 5.4以上なら公式サイト見れば、日本語扱う方法は載ってますが、 それ以下のときはjson_encodeすると結果の文字列は {"\u1234":"\u1234"} みたいな形式になります。 これだと都合が良くなく、日本語のまま扱いたい場合、どうするか? すでに解決している…

smartyのsectionとかloopの回数取得なら!

{section name=counter loop=$array_data start=2 step=2 max=10} {if $smarty.section.counter.first} {* 最初のループ時にtrueになります *} 最初のデータ {/if} {if $smarty.section.counter.last} {* 最後のループ時にtrueになります *} 最後のデータ {/…

cakephpでなぜviewが出ない? 404 not foundのときはapache見直せ

あぁ、2014の新年1発目の記事だ。。。 macローカルでcakephpを入れて開発始めたが、失敗 原因はapacheのoverride php.ini のmod_rewriteは忘れずにコメントアウト外すんだけど こっちは忘れてたわー su vi httpd.conf 同じような状態になっている人がもしい…

pdoでロールバックが効かない!? あっけないけどハマる原因

PHPでDBを使うときはPDO ちゃんとinTransactionをしているのに、rollBackされない 現象に悩まされた。 テーブルのタイプ確認しました? innoDBはトランザクション使えるけど、 MyISAMは使えないからね!!! しかも!!! 立ち悪い事にMyISAMでは使えないく…

衝撃! みんな知らないPDOの正しい使い方

[フレームワークなしの生でPHP使う人向け] PHPエンジニアなら今やDBヘの接続をPDOを 使っていることでしょう。 まぁ、たぶんフレームワークのクラスとか使ってる人は あんまり意識してないだろうけど。。。 select文を使うときこんな風に使ってないですか? …

悩んでないかい? indexされてない大量データを鬼早くdeleteする方法 [mysql]

鬼早くdeleteとか書いたけど、 deleteなんて使わない!!! そんなトロトロやってらんないっす>< じゃあどうやのか、 1. create table で新しいテーブル作る 2. insert select で古いテーブルから新しいテーブルに必要なデータ移す 3. テーブル名をそれぞ…

サーバ監視に sarを使おう!

もしインストールしてないなら下記でインストールだ!! $ sudo yum install sysstat $ sudo service sysstat start そんで、 sar -r CPU状況 sar -u メモリ状況 sar -b i/o状況 ちなみにこのサイトが詳しく説明してくれてるよ http://www.syboos.jp/linux/d…

dfとduコマンドの結果に違いがあってヘンなとき【サーバの容量確保ワザ】

サーバの管理者にとって頭の痛い問題で、 クラウドサーバは便利なんですけど、容量がちっちゃくて すぐ容量不足に陥る。 そんなときの対処法の1つ。 プロセスが使用している途中で削除したファイルが 使用してた容量が開放されずに残っていることがある。 …

jqueryでajax使うならこれ クロスドメインを回避できる xdomainajax.js

下記からダウンロードしてhtmlに普通に指定して終わり。 https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js cross-domain-ajax/jquery.xdomainajax.js <script type="text/javascript" src="js/jquery.xdom…

jQueryでフォーカス外れたときのイベント

blurを使う。 実例は下記な感じ $(".form [name=product_code]").blur(function(){ //ここに処理を書く });

smartyでvar_dump これ最高

これだけ 出したいtplファイルの変数を |@debug_print_var {$smarty|@debug_print_var}

EC-CUBEでadmin画面のパスワード忘れたとき

そんなときは、下記のとおり http://ec-cube.nakweb.com/blog/1073.html data/class/admin/LC_Page_Admin_Index.php を開く あとは下記のとおり、コメントアウト あとはシステムのところからパスワードを変更する ※※※そのあとは、絶対にコメントアウトを外そ…

クラウドサーバ借りて、ブラウザからアクセスできるようにする方法

クラウドサーバたてて、apacheインストールしてもブラウザから アクセスできないとき だいたい、問題はこれ。 たいていのクラウドサーバはssh用のポートしか開いてません。(ニフクラとかね) なので、apacheインストールして、アクセスしても 画面が見えな…

fget_csvで文字化けするとき

PHPで、fget_csvを使って文字化けするとき、 setlocale(LC_ALL, 'ja_JP.UTF-8'); をやってみよう。 大概のサーバは大元の設定で、なってるはずだけど 必ずでない。 ということで忘れずに。

サーバが重い!もしかして原因はkswapd0かもね。。。

linuxサーバが重いとき TOPコマンド打って、 kswapd0 が30分とかずっと立ち上がってたら、 それのせいで重い。 でも、圧迫したメモリをHDDに逃がすプロセスで 止めることはやっちゃダメ。 メモリのデータを逃がそうとして、そのデータが重すぎて うまく逃が…

crontabするならdev/nullを忘れるな!サーバ死ぬから

シェルなら 0 * * * * /home/admin/public_html/snmplogger/daily.sh >/dev/null 2>&1 PHPなら 10 * * * * /usr/bin/php /path/to/file/err_serverchecker.php >/dev/null 2>&1 下のやつを必ずかこう >/dev/null 2>&1 これやらないと、echoとかの出力内容を…

simplexml_load系の返り値を一気に一発で配列にする方法

PHP

$xmlはxmlファイルを読み込んだやつね。 $sx = simplexml_load_string($xml); json_decode(json_encode($sx), true); 解説はこちら http://fdays.blogspot.jp/2011/03/php-simplexml.html もし、@attributeとかの属性も細かく取りたいなら http://soft.fpso.…

eclipseでタイピング高速化。vi使いに必須のプラグイン

Vrapperというプラグインがネットで探すと超優秀らしい。 eclipseの補完機能をのこしつつ、 viライクな動きができるとのこと。 ソフトウェアのインストールに http://vrapper.sourceforge.net/update-site/stable/ を入れて、eclipseの指示に従うだけです。 …

PHPでメールを送信方法

mb_send_mail がPHPの標準関数でありますが、 超、イケてないっす>< 迷惑メールにバンバン入ります。 gmailの人はまず受信できない 一番いいのが、pear の mailを使いましょう 使い方は、ここがわかりやすい。 http://www.phpbook.jp/pear/pear_mail/ イン…

マウントディスクの付け外しには注意!!![[fstab]]

やっちまいました。 ニフティクラウドで、追加ディスクをマウントさせて ディスクを外したきに起きる 超、やっちゃいけないこと。 やっちゃいました。 tomcatが落ちるとかapacheが落ちるとかそんなレベルじゃない... サーバーの起動自体が落ちるという、かつ…

sendmailの起動

これも結論だけ。 /etc/init.d/sendmail start

postgresql9.2 をインストールする方法。あと8系を削除する方法

postgresqlの8系から9系へのバージョンアップ方法 ただ、9系をインストールしようとしても、 8系と9系は別のアプリケーションとして 同じサーバに両方存在していまいます。 ので、8系を削除してから9系をインストールします。 ちなみに9系をインスト…

アマゾンEC2で、ユーパーユーザ(root)になる方法。。

簡単に結論だけ。 $ sudo su - これだけ。

アマゾンEC2でsshログインに失敗したら

アマゾンのEC2でインスタンス立ち上げて、 その時に作った秘密鍵でログインしようとしたら WARNING: UNPROTECTED PRIVATE KEY FILE! で、エラーた。 ・原因 秘密鍵の権限が低過ぎる ・解決策 ターミナル開いて chmod 600 [秘密鍵を指定] これをやってから、 …

postgresql9.2 をインストールする方法。あと8系を削除する方法

これに書いてある。 http://morizyun.github.io/blog/postgresql-mac-centos-rails/ 既にpostgreq8系が入っているときは、これだけだとダメ postgresユーザになってホームディレクトリにある .bash_profileにコマンドのパスを通す su - postgres cd ~/ vi .b…