php.ini

Posted by muchag | PHP | 2015-05-29 (金) 12:53:43

初期設定項目。

extention
extension=php_openssl.dll

外部 API からレスポンスがない

PHP | 2015-05-29 (金) 12:53:43 |

外部 API からレスポンスがない

Posted by muchag | PHP | 2015-05-29 (金) 12:50:56

まさかこんなところが原因だとは思わず、24時刊無駄にしちゃった。 😥

【環境】
php:5.4.7
現象

Google Places API を利用しようと思ってコーディングしたところ
file_get_contents の戻り値が false になった。

原因

API 問い合わせ先が https であるのに対して
php の openssl が ON になっていなかった。

解決
(xampp)\php\php.ini
  1. - ;extension=php_openssl.dll
  2. + extension=php_openssl.dll
試行錯誤
cURL

file_get_contents がだめだったので、cURL も試してみたけどだめだった。

ブラウザでチェック

試しに要求 URL をブラウザに直接入力してみると
ちゃんとレスポンスが返ってきて、json 文字列が表示された。

API キー

Google Developer Console を見ると、API キーには4種類
サーバー キー、ブラウザ キー、Android キー、iOS キー
があるようで、サーバーサイドの場合は、サーバー キーが必要なんかと思い
これを取得、設定を変更したけど、ダメ。

解決後調査結果

サーバーサイドスクリプト内であろうが、ブラウザ直接入力であろうが
サーバー キーでも、ブラウザ キーでも、どちらでもレスポンスが返ってきた。

素の php

はた、と思いついて、マッサラのテストページを作り
当該箇所のみを記述して読み込んでみた。

  1. $url  = sprintf( 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=%s&sensor=false&key=%s', $word, $key );
  2. $json = file_get_contents( $url );
  3. echo $json;
Warning

すると、下記のような Warning が。

file_get_contents(): Unable to find the wrapper…

「file_get_contents(): Unable to find the wrapper」

Symfony でも、エラーを表示するように設定しないと時間の無駄だね。。。

Google 先生

で、Google 先生に質問したら、下記記事が一番上に表示された。
YAHOO! JAPAN 知恵袋:PHPでhttps://から始まるURLのオープンに…

こちらの回答に従って、extention を ON にしたところ、無事に解決した。

PHP | 2015-05-29 (金) 12:50:56 |

データベース設計

Posted by muchag | SE | 2015-05-27 (水) 11:07:28

参考サイト

DeNA Engineers’ Blog
ソーシャルゲームのためのMySQL入門
ソーシャルゲームのためのMySQL入門その2

slideshare:ソーシャルゲームのためのデータベース設計
→残念ながら見ることができない。メモリオーバーかも。。。

リレーショナル・データベースの世界

SE | 2015-05-27 (水) 11:07:28 |

PDT アップデート

Posted by muchag | Eclipse | 2015-05-26 (火) 12:14:14

Eclipse:4.4 LUNA の PDT には、厳しいバグが有った。
デバッグ中にステップ実行をする際、実行行へ飛んでくれない。

改善するために、PDT をアップデートしようとしたら
結構大変だった。

【環境】
Eclipse:4.4 LUNA
PDT:3.3.0→3.4.0.201502171754
OS:Windows7 SP1 64bit
成功手法

なんとなく勘で進めた結果で、一見上手くいっているっぽい、というだけなので
これが正しい手法なのかどうかは不明。

メニュー
[ヘルプ]-[新規ソフトウェアのインストール]

使用可能なソフトウェア
stackoverflow:How to install PHP support in eclipse Luna?
より、下記 URL を引っ張ってきた。
[作業対象]:http://ermaster.sourceforge.net/update-site/
[追加]

リポジトリーの追加
[名前]:PDT(任意)
[OK]

使用可能なソフトウェア
[PHP 開発ツール にチェック]-[次へ]

ここで下記メッセージ。

要求されたインストールを完了できませんでした。

修復インストール・ページ
次の代替解決策のいずれかを選択します:
◯同じインストールはそのまま保持し、互換性を持たせるためにインストールされている項目を変更(デフォルト選択)
◯項目をインストールして互換性を持たせるためにインストールを更新
◯オリジナル・エラーを表示し、ユーザー独自の解決策を構築:

デフォルト選択のまま、[次へ]

インストールの詳細
[完了]

その他の手法

Eclipse は巨大 IDE だけあって、アプローチの仕方が多いね~。

更新の確認

Pleiades All in One Eclipce 4.4 Lunaの場合、付属のPDT(ver.3.3.0)では、デバッグモードでのステップ実行の際に、実行行がエディタに反映されないという不具合がありました。ステップ実行をする場合は、以下のようにPDTのアップデートが必要です。

メニューより「ヘルプ>更新の確認」を選択する。
「選択をすべて解除」をクリックしてチェックした後、「PHP開発ツール (PDT)」をチェック」。(2014年12月22日現在、最新はver.3.3.2)
「次へ」をクリックし、以下ウィザードに従ってアップデートする。

悠雀堂:PHPの開発環境を構築する(その2):Eclipseの基本操作

メニューより「ヘルプ>更新の確認」を選択する。
この時点で、更新がたまっていたみたい。
たくさんの更新が入った。
しかも、1度で済まず、3度同じ作業を行って、初めて次のステップへ進めた。

「選択をすべて解除」をクリックしてチェックした後、「PHP開発ツール (PDT)」をチェック」。(2014年12月22日現在、最新はver.3.3.2)
残念ながら、私の環境では一覧に「PHP開発ツール (PDT)」が現れなかった。

どうしてよいのかわからず、ここで頓挫。

Eclipseマーケットプレース

Eclipseにて。
 「ヘルプ>Eclipseマーケットプレース」にて
 「PDT」で検索。

 すると、「アンインストール」というボタンの横に、
 「更新」というボタンがあります。

… snip …

ちなみに、更新後には再起動が必要です。

あずきみるくのあずきはニガテ – for Engineer:EclipseでPHP - ついでのHelloWorld

検索結果に PDT が現れず頓挫。

Eclipse | 2015-05-26 (火) 12:14:14 |

インストールする項目の収集中にエラーが発生しました

Posted by muchag | Eclipse | 2015-05-26 (火) 11:55:43

プラグインのインストール時に出たエラーへの対処。

【環境】
Eclipse:4.4.1
OS:Windows7 SP1 64bit
現象

ERMaster プラグインを導入 しようとしたら、標題エラーが出た。

インストールする項目の収集中にエラーが発生しました
2015-12-03 追記 ここから

EGit をアップデートしようとしたら、同様の現象が起きた。

そして、同様の対処方法でアップデート出来た。

2015-12-03 追記 ここまで
解決手順
アップデートサイト情報を一時消去
  1. [ウィンドウ]-[設定]
  2. 左ペイン[インストール/更新]-[使用可能なソフトウェア・サイト]
  3. 使用可能なソフトウェア・サイト
    1. [全てを選択]:左のチェックボックスは関係なし。Shfit で手動選択
    2. [エクスポート] で、bookmarks.xml を保存
    3. [全てを選択]:左のチェックボックスは関係なし。Shfit で手動選択
    4. [除去]-[OK]
    5. [OK]
プラグインのアップデート
  1. [ヘルプ]-[新規ソフトウェアのインストール]
  2. 使用可能なソフトウェア
    1. [作業対象]:当該 URL を入力
    2. [追加]
  3. リポジトリーの追加
    1. [名前]:(任意)
    2. [OK]
  4. 使用可能なソフトウェア
    1. [当該プラグイン にチェック]
    2. [次へ]
  5. インストールの詳細
    1. [次へ]
  6. ライセンスのビュー
    1. [同意するを選択]
    2. [完了]
bookmarks.xml の復旧
  1. [ウィンドウ]-[設定]
  2. 左ペイン[インストール/更新]-[使用可能なソフトウェア・サイト]
  3. 使用可能なソフトウェア・サイト
    1. [インポート]
    2. さっき保存しておいた、bookmarks.xml を選択
    3. [開く]
    4. [OK]
不具合サイト特定

上記手順でアップデートできるっていうことは
登録済みアップデートサイトを1つずつ削除していけば、
悪さをしている項目を特定できるはずよね。。。

時間があるときにやってみよーっと。

参考サイト

Futurismo:Eclipseプラグインのインストール/アップデートでNo repository found containingが出てあたふたする場合の解決方法

Eclipse | 2015-05-26 (火) 11:55:43 |

ERMaster

Posted by muchag | Eclipse | 2015-05-26 (火) 11:07:36

ER 図作成プラグイン。

【環境】
Eclipse:4.4
ERMaster:1.0.0v20141214-2153
OS:Windows7 SP1 64bit
インストール

メニュー
[ヘルプ]-[新規ソフトウェアのインストール]

使用可能なソフトウェア
[作業対象]:http://ermaster.sourceforge.net/update-site/
[追加]

リポジトリーの追加
[名前]:ERMaster(任意)
[OK]

使用可能なソフトウェア
[ERMaster にチェック]-[次へ]

インストールの詳細
[次へ]

ライセンスのビュー
[同意するを選択]-[完了]

設定

[表示領域を右クリック]-[オプション]

固有の設定

[文字セット]:utf8
[照合順序]:utf8_unicode_ci

オプション

[入力のフォーカス移動時に IME モードを自動で切り替える] にチェック。
これで、物理テキストボックスの場合は半角英数字、論理テキストボックスの場合は全角ローマ字入力になる。
便利!

他はデフォルトのまま。

利用
新規作成

メニュー
[新規]-[その他]

ウィザードを選択
[ERMaster]-[ERMaster]
[次へ]

新規ER図
[親フォルダーの決定]:直接入力か選択
[ファイル名の決定]:(任意)
[次へ]
[データベースの選択]
[完了]

テーブル
追加

左ペインのツールを選択して、表示領域でクリック。

編集

表示領域内のテーブルオブジェクトをダブルクリック。

カラム
リレーションカラム

table_a.id = table_b.table_a_id の場合。
関連ツールを選択して、元となるカラムから別テーブルへ結合すると、自動的にそのカラムが追加される。

Eclipse | 2015-05-26 (火) 11:07:36 |

設定 -> 文字コード

Posted by muchag | MySQL | 2015-05-22 (金) 22:39:16

最近の XAMPP に入っている MySQL は、my.ini をいじらなくても
phpMyAdwmin からデータベースを作成する際に
文字コードを指定することで、文字化けをしなかったので
そのままで利用していたけど、久しぶりに文字化けに遭った。

【環境】
MySQL:5.5.27
XAMPP:1.8.3
デフォルト?

何もしてない気がするので、多分下記がデフォルト。

  1. mysql> show variables like 'character_set%';
  2.  
  3. +--------------------------+--------------------------------+
  4. | Variable_name            | Value                          |
  5. +--------------------------+--------------------------------+
  6. | character_set_client     | cp932                          |
  7. | character_set_connection | cp932                          |
  8. | character_set_database   | latin1                         |
  9. | character_set_filesystem | binary                         |
  10. | character_set_results    | cp932                          |
  11. | character_set_server     | latin1                         |
  12. | character_set_system     | utf8                           |
  13. | character_sets_dir       | D:\xampp\mysql\share\charsets\ |
  14. +--------------------------+--------------------------------+
my.ini

インストール 1.7.3
以前、こちらの記事で書いたのが基本。

  1. [mysqld]
  2. # 2015-05-22 追記
  3. character-set-server=utf8
  4. skip-character-set-client-handshake
  5.  
  6. [mysqldump]
  7. # 2015-05-22 追記
  8. default-character-set=utf8
  9.  
  10. [mysql]
  11. # 2015-05-22 追記
  12. default-character-set=utf8
以前との変更点

以前 の通りに my.ini をいじったら、MySQL が起動しなくなった。

[ERROR] (xampp)\mysql\bin\mysqld.exe: unknown variable ‘default-character-set=utf8’

MySQL 5.5 から仕様が変更になったらしい。

[mysqld] については
default-character-set=utf8 ではなく
character-set-server=utf8 と記述することで無事に起動。

  1. [mysqld]
  2. - default-character-set=utf8
  3. + character-set-server=utf8
参考サイト

cyberarchitect:[ERROR] mysql\bin\mysqld.exe: unknown variable ‘default-character-set=utf8′

my.ini 編集後
  1. mysql> show variables like 'character_set%';
  2.  
  3. +--------------------------+--------------------------------+
  4. | Variable_name            | Value                          |
  5. +--------------------------+--------------------------------+
  6. | character_set_client     | utf8                           |
  7. | character_set_connection | utf8                           |
  8. | character_set_database   | latin1                         |
  9. | character_set_filesystem | binary                         |
  10. | character_set_results    | utf8                           |
  11. | character_set_server     | utf8                           |
  12. | character_set_system     | utf8                           |
  13. | character_sets_dir       | D:\xampp\mysql\share\charsets\ |
  14. +--------------------------+--------------------------------+

むw 1つだけ latin1。

global 値

参考サイトにしたがって、global も覗いてみる。

  1. mysql> show global variables like 'character_set%';
  2.  
  3. +--------------------------+--------------------------------+
  4. | Variable_name            | Value                          |
  5. +--------------------------+--------------------------------+
  6. | character_set_client     | utf8                           |
  7. | character_set_connection | utf8                           |
  8. | character_set_database   | utf8                           |
  9. | character_set_filesystem | binary                         |
  10. | character_set_results    | utf8                           |
  11. | character_set_server     | utf8                           |
  12. | character_set_system     | utf8                           |
  13. | character_sets_dir       | D:\xampp\mysql\share\charsets\ |
  14. +--------------------------+--------------------------------+

ほー。こちらはちゃんとなっている。

my,ini 設定前の global 値も見ておけばよかった~。

character_set_database
原因

character_set_database だけが値が異なっている原因は・・・

この値はどこを参照しているかというと、create database した時の値です。

よかろうもん!:MySQLでcharacter_set_databaseがlatin1になってしまう問題の対応方法

だそうです。

あれれ。
データベースを作成した時に、文字コードを設定しそこねたのかしら。

確認方法
  1. mysql> show create database `databese1`;
  2.  
  3. +-----------+----------------------------------------------------------------------+
  4. | Database  | Create Database                                                      |
  5. +-----------+----------------------------------------------------------------------+
  6. | databese1 | CREATE DATABASE `databese1` /*!40100 DEFAULT CHARACTER SET latin1 */ |
  7. +-----------+----------------------------------------------------------------------+

うほ!確かに。。。

解決方法
  1. mysql> ALTER DATABASE `databese1` default character set utf8;

直った~♪

経緯

問題解決にはあまり関係ないので
記事末に覚え書き用経緯を。

データ情報

駅データ.jp
こちらのサイトから、全国の駅データをいただいてきた。

編集

配布されているデータは、ちゃんと UTF8 なのだけど
データを追加する都合上、Excel で編集してから DB へ流し込んだ。

データが多く、phpMyAdmin からではタイムアウトになってしまったので
コマンドラインから実行。

手順
  1. 配布元よりデータを DL
  2. Terapad で、SHIFT-JIS、CR+LF へ変換
  3. Excel で、データ編集
  4. Excel から CSV 出力
  5. Terapad で、UTF-8N、LF へ変換
  6. コマンドラインより DB へ流し込み

すると、途中から文字化けという事態が起こった。
これはこれで不思議。。。

MySQL | 2015-05-22 (金) 22:39:16 |

CLI -> 基本

Posted by muchag | MySQL,コマンドプロンプト | 2015-05-22 (金) 11:41:07

MySQL のコマンドラインからの操作。

【環境】
MySQL:5.5.27
XAMPP:1.8.3
開始

私は MySQL を XAMPP から利用しているので
MySQL も XAMPP 内にある。

コマンドプロンプトを開いたら、下記3種の利用方法がある。

  • そのまま記述(環境変数を登録している場合)
  • MySQL\bin まで cd
  • フルパスで記述
コマンドラインツールの起動
  1. $ mysql -u ユーザ名 -p

これでパスワードの入力を促されるので
パスワードを入力し、認証が通ったら
ツールを利用できるようになる。

  1. mysql>

プロンプトが上記のようになれば、起動成功。

パスワードも含めて起動
  1. $ mysql -u ユーザ名 -pパスワード

-p オプション指定の直後にパスワードを記述する。
スペースを開けずに記述する ところがミソ。

データベースを指定して起動
  1. $ mysql -u ユーザ名 -D データベース名 -p
データベースの選択
  1. mysql> use データベース名
テーブル一覧表示
  1. mysql> show tables
終了
  1. mysql> quit
  2.  
  3. または
  4.  
  5. mysql> \q
書式
文末

SQL 文の最後に ;(セミコロン)を付けること。
なぜって、下記のようにカスケード記述ができるから?

カスケード記述

長い SQL 文を分割して入力できる。

  1. mysql> SELECT a, b, c, d, e FROM table_a, table_b WHERE table_a.id = table_b.table_a_id AND table_a.id = 1;
  2.  
  3. // 途中で Enter キーを押下すると、継続して SQL 文を記述できる
  4. mysql> SELECT a, b, c, d, e(Enter)
  5.     -> FROM table_a, table_b(Enter)
  6.     -> WHERE table_a.id = table_b.table_a_id(Enter)
  7.     -> AND table_a.id = 1;

というわけで、文末にセミコロンを付けないと、永遠に -> が出てくる。 🙄

メモ
コマンドエイリアス
コマンド エイリアス
quit \q
MySQL,コマンドプロンプト | 2015-05-22 (金) 11:41:07 |

SQLSTATE[HY000]: General error: 1005 Can’t create table

Posted by muchag | OpenPNE 3.x,Symfony 1.x | 2015-05-21 (木) 22:49:18

【環境】
Symfony:1.4.13
OpnePNE:3.8.15
状況

OpenPNE3 のプラグインを開発していて、DB の再構築を行ったところ
下記のようなエラーメッセージが出た。

エラーメッセージ
SQLSTATE[HY000]: General error: 1005 Can’t create table ‘database_name.#sql-16e8_55a’
(errno: 150).
Failing Query:
“ALTER TABLE op_my_hoge ADD CONSTRAINT op_my_hoge_parent_id_op_my_parent_id FOREIGN KEY (parent_id) REFERENCES op_my_parent(id)”.
Failing Query:
ALTER TABLE op_my_hoge ADD CONSTRAINT op_my_hoge_parent_id_op_my_parent_id FOREIGN KEY (parent_id) REFERENCES op_my_parent(id)
原因

よく見てみると
op_my_hoge.parent_id と op_my_parent.id のデータ型が異なっていた。

OpenPNE 3.x,Symfony 1.x | 2015-05-21 (木) 22:49:18 |

引数があるメソッドの呼び出しエラー

Posted by muchag | Excel VBA | 2015-05-20 (水) 18:28:51

前から気になっていたことがやっと解決したのでメモ。

【環境】
Excel:2010
現象

以前から何度も出くわしているので、前の例は忘れてしまった。
今回の例。

クラスを作成して、setter を配置したところ
呼び出し元でエラー。

  1. class.setHoge (a)

記述して、改行すると、メソッド名と () の間にスペースが。。。

コーディング中に、「修正候補:=」みたいな感じの
「= がないよ~」という案内が出たと思うけど
確かなことは記憶がない。

お試し

「= がないよ~」と言われた気がするので、試しに無意味な変数をかましてみた。

  1. Dim a
  2. a = class.setHoge(a)

確かに、これだと動くw

解決策

でも気持ちが悪いなぁ、と思っていたら、ひょっこり正解に当たった。

あとは、VBAの場合戻り値のない関数を呼ぶ際には「Call」を
先頭につけたほうが安全です。
( なくても呼べる場合もありますが、基本はつけておく。 )

YAHOO! JAPAN 知恵袋:Excel2003 VBAのクラスメソッドの呼び出しに…

あw そゆこと?

  1. call class.setHoge (a)

確かに~!!! ちゃんと動いた。

昔はちゃんと call をつけていたけど、
call がなくても動くので、いつの間にか忘れてた。。。

Excel VBA | 2015-05-20 (水) 18:28:51 |
次ページへ »