eclipse.ini

Posted by muchag | Eclipse | 2015-12-31 (木) 14:52:08

【環境】
Eclipse:Mars.1 (4.5.1) PHP
OS:Windows7 SP1 64bit
ファイル内容
  1. -product
  2. --launcher.defaultAction
  3. openFile
  4. --launcher.XXMaxPermSize
  5. 512M
  6. --launcher.defaultAction
  7. openFile
  8. --launcher.appendVmargs
  9. -vmargs
  10. -Dosgi.requiredJavaVersion=1.7
  11. -Xms256m
  12. -Xmx1g
  13. -Xverify:none
  14. -javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
メモリ
  1. -Xms256m → 1g
  2. -Xmx1g → 2g

としてみた。

Eclipse | 2015-12-31 (木) 14:52:08 |

関数名を文字列で指定して実行する

Posted by muchag | JavaScript | 2015-12-30 (水) 15:13:45

PHP では、$$hoge という書き方があって便利なんだけど
Javascript ではどうやるのかな~って探してみた。

下記サンプルコードは、参考サイトより引用させていただきました。

eval

メソッド名を文字列で組み立てて
eval してやることで、関数として「評価」してくれる
ということらしい。率直だ!

  1. var word="apple";
  2. function orange(){
  3.     alert("ミカン");
  4. }
  5. function apple(){
  6.     alert("リンゴ");
  7. }
  8. eval(word+"()");
関数連想配列

私はこちらの方がピンときたので、こちらを採用させていただいた。

  1. var myfunction = [];
  2. myfunction["tashi"] = function (a, b) {
  3.     return a + b;
  4. }
  5. myfunction["hiki"] = function (a, b) {
  6.     return a - b;
  7. }
  8. alert(myfunction["tashi"](2, 5));
参考サイト

You Look Too Cool
evalを使わずに関数を文字列で指定して実行する方法
文字列で関数を実行する

JavaScript | 2015-12-30 (水) 15:13:45 |

HAVING

Posted by muchag | MySQL | 2015-12-28 (月) 9:49:07

【環境】
MySQL:5.5.27, 5.5.38

MySQL:13.2.9.2 JOIN Syntax

用途

グループ化されたデータ(GROUP BY)に対して
検索条件を指定する。

検索対象

よって、GROUP BY 句内のカラムか、または集約関数で使用されるカラムしか参照できない。

記述位置

HAVING 句は、すべての GROUP BY 句のあとで、かつすべての ORDER BY 句の前にある必要があります。

MySQL:13.2.9 SELECT 構文

この記事は、日本語版 5.5用はなかった。

適用順

HAVING 句は、ほぼ最後 (項目がクライアントに送信される直前) に最適化なしで適用されます。(LIMIT は HAVING のあとに適用されます。)

MySQL:13.2.9 SELECT 構文

エイリアス

カラムエイリアスを使用できる。

  1. SELECT COUNT(user_id) AS cnt
  2. FORM hoge
  3. HAVING cnt > 10;
MySQL | 2015-12-28 (月) 9:49:07 |

調査

Posted by muchag | MySQL | 2015-12-27 (日) 23:18:52

ちょ、ちょっと私にはハードルが高い。。。と思われる。
でも、少しずつでも触っていれば、理解していけるかもしれないので
いつもの通り特攻してみるメモ。

EXPLAIN

クエリの実行内容解析?
SELECT ステートメントの頭に EXPLAIN を付けて実行する。

  1. EXPLAIN
  2. SELECT *
  3. FROM tableA
  4. WHERE column1 = a;

上のクエリ例と下の EXPLAIN 例の内容は全く合致してないけど。。。

参考サイト

漢のコンピュータ道:MySQLのEXPLAINを徹底解説!!(2009-03-31)
→ちょっと古い記事だけど、詳しくてわかりやすい

Qiita:MySQLのEXPLAIN(2014-10-23)
→上記記事を参考にまとめられた記事

FROFILE

MySQL 5.6 では、非推奨になってしまったらしい。
なくなっちゃうんだって。
GMOメディア エンジニアブログ:MySQL 5.6ではprofilingが非推奨になってしまった件

参考サイト

漢のコンピュータ道:プロファイリングで快適MySQLチューニング生活(2009-02-03)
→ちょっと古い記事だけど、詳しくてわかりやすい

MySQL Casual:show profileでフェーズごとの実行時間を見る – MySQL Casual Advent Calendar 2010(2010-12-05)
→PROFILE を貯める方法? と、それを参照する方法が載っている

障害解析
参考サイト

Qiita:誰も教えてくれなかったMySQLの障害解析方法(2014-07-12)
→まだまだサッパリわからない。というか試す暇がないけど、いつかやりたい!

MySQL | 2015-12-27 (日) 23:18:52 |

Doctrine -> DISTINCT, LEFT JOIN

Posted by muchag | Symfony 1.x | 2015-12-22 (火) 16:19:36

注意書きを見つけたのでメモ。

【環境】
OpenPNE:3.8.15
Symfony:1.4.13
doctrine:1.2.4
参考サイト

Qiita:DoctrineのDISTINCTは正しく動作しない
→回避策あり

Qiita:DoctrineのLEFT JOINはまともに使えない
→回避策あり

Symfony 1.x | 2015-12-22 (火) 16:19:36 |

“ワークスペースをビルド中” 中に内部エラーが発生しました。

Posted by muchag | Eclipse | 2015-12-20 (日) 13:13:54

コードのインデントにはタブを利用しないように、という話がある。
でも、コーディング中はタブキーは便利♪
そこで、タブをスペースに変換してくれる Eclipse の機能を利用。

【環境】
Eclipse:Mars.1 (4.5.1)
症状

発生したタイミング不明。

“ワークスペースをビルド中” 中に内部エラーが発生しました。
org.eclipse.objectteams.otdt.internal.migration.OTJProjectMigration cannot be cast to org.eclipse.objectteams.otdt.internal.compiler.adaptor.ProblemCleaner
原因

不明。

エラー文言が抽象的すぎて、検索不能。

解決
eclipse.exe

と同じ階層にある

eclipse.exe -clean.cmd

をダブルクリックして、クリーン起動することで
エラーが出なくなった。

Eclipse | 2015-12-20 (日) 13:13:54 |

同期化(差分を見る)

Posted by muchag | Eclipse,Git | 2015-12-18 (金) 16:13:33

【環境】
Eclipse: Mars.1 (4.5.1) PHP
手法
同期化パースペクティブを開くまで

いきなり [チーム同期化] パースペクティブを開くと、
[データ読み込み] か [同期化] か選べ!
と言われて、困ったw

Git
  1. [Git リポジトリー] ビュー
  2. 当該プロジェクトを開く
  3. [ブランチ] を開く
  4. [ローカル] または [リモート・トラッキング] を開く
  5. 当該ブランチのコンテキストメニューから [ワークスペースと同期化] をクリック
  6. 「[チーム同期化] パースペクティブを開くよ」というダイアログが出るので [はい]
  7. [チーム同期化] パースペクティブが開く
同期化パースペクティブ
ローカルブランチから開いた場合

この場合は、ローカルリポジトリと編集中ファイルの差分を見ることになる。

差分のあるファイルがプロジェクトツリーとして表示されているので
目的のファイルをダブルクリックすれば、差分用の左右に並んだビューが開く。

リモート・トラッキングブランチから開いた場合

この場合は、リモートリポジトリ、ローカルリポジトリ、編集中ファイルの三者の差分を同時に見ることになる。
未試行。

三者同時なので、場合分けをされてツリー表示されるみたい。
この先は試していないので、参考サイト参照。

参考サイト

kakiro-web:EclipseでGitをクライアント用途として使用(EGit)(その2)

Eclipse,Git | 2015-12-18 (金) 16:13:33 |

ビュー -> タスク(Tasks)

Posted by muchag | Eclipse | 2015-12-18 (金) 13:22:06

【環境】
Eclipse: Mars.1 (4.5.1) PHP
新規ビュー

問題ビューと同様なので、そちらを参照。
問題(Problems)

内容の構成

問題ビューと同様なので、そちらを参照。
問題(Problems)

Eclipse | 2015-12-18 (金) 13:22:06 |

ビュー -> 問題(Problems)

Posted by muchag | Eclipse | 2015-12-18 (金) 12:18:43

フレームワークは大変ありがたい存在なんだけど
フレームワークを利用すると、せっかくの Eclipse の便利機能を活かせない
と、ずっと困っていた。

なんと、今日はその解決方法を見つけた。

【環境】
Eclipse: Mars.1 (4.5.1) PHP
経緯

フレームワークを利用すると、
フレームワークのソースに Eclipse が反応しちゃって
問題ビューがえらいことになる。。。

これで、せっかくの便利な機能を使えずにいたんだけど
この問題ビューを利用できる日が来た!

新規ビュー

デフォルトの設定を変更すると、
後々、何がなんだかわからなくなることがある。

設定メニューに [デフォルトに戻す] というのもある。
でも、そうすると、今度は独自設定がわからなくなる。

そこで、新規に問題ビューを作成してしまえば
いつでも、どちらの設定でも確認できる。

手法

右上のビュー専用ツールバーの ▼ をクリック
[新規問題ビュー]
名前を入力して [OK]

再表示
デフォルト

こうしておけば、デフォルトの問題ビューは残っているので
もし、一旦消しても、[ウィンドウ]-[ビューの表示] から、いつでも再表示可能。

独自

独自に設定した問題ビューについては
一旦閉じてしまうと、再表示の仕方がわからない。

ただし、再度新規作成をして、同一名称にしてみたら
設定を受け継いでくれた。
きっとどこかに保存しているはず。

内容の構成
  1. 右上のビュー専用ツールバーの ▼ をクリック
  2. [内容の構成]
    1. [全ての項目を表示] のチェックを外す
    2. [以下で選択されたいずれかの構成に一致する項目を表示] を選択
    3. 構成
      1. [新規]
      2. 左ペインに新たに追加された項目を選択した状態で [名前変更]
        1. 名前を任意に入力-[OK]
      3. 右ペイン
        1. スコープ
          1. 下記いずれかを選択
          2. [すべての要素]
          3. [同一プロジェクト内の任意の要素]
          4. [選択された要素のみ] *1
          5. [選択された要素およびその子] *1
          6. [次のワーキング・セット: ◯◯・ワーキング・セット]-[選択]
        2. その他、任意に設定
    4. [OK]

*1:プロジェクトツリーで、予め指定箇所を選択しておくこと
(クリックして、色が反転している状態にしておく)

Eclipse | 2015-12-18 (金) 12:18:43 |

マージ禁止

Posted by muchag | Git | 2015-12-16 (水) 15:08:37

開発環境と本番環境では、どうしても差分が出る。
その差分への対処に頭を悩ませていたけど
他の情報を検索しているときに、素敵な記事を発見した♪
サボり屋の技術メモ:Gitで内容が異なるファイルをマージ対象から除外(無視)する設定

状況

開発環境で開発用に用意しているファイルを本番環境には入れたくない。

具体例

OpenPNE3 では、開発用に下記開発用ページが用意されている。

api_dev.php
mobile_frontend_dev.php
pc_backend_dev.php
pc_frontend_dev.php

これらは、開発環境では利用をするけど
本番環境に上がったらエライことになる。

対応策

Git の設定で何とかなりそう!

  • 別ブランチ(develop から master など)へのマージの際に除外される
  • 下記はそのまま利用できる
    • develop ブランチでのコミット
    • リモートへのプッシュ
    • リモートから他へのマシンのプル

おおお、これぞ正しく探していた方法。

master 以外のブランチ

feature ブランチや release ブランチを新規作成するときは
マージではなくリセット?(コピー)なので、release ブランチへは入っちゃうのかも。
でも、そこから master へいけないはずだから、理論上は問題ないはず。

master と release

ただ、release は、できる限り master と同一性を保証したいので
今後の行方を見守らなければ。

手法
設定ファイル
  • .gitglobal
  • 各リポジトリの .git/config

いずれかに、記述。

内容
  1. [merge "ours"]
  2.     name = "Keep ours merge"
  3.     driver = true

[merge “ours”] の config設定は固定です。特殊なマージエンジンを有効化しているらしい。

サボり屋の技術メモ:Gitで内容が異なるファイルをマージ対象から除外(無視)する設定

んむ。
まんま書くことにしよう。。。

SourceTree
内蔵 Git の場合
C:\Users\[user_name]\AppData\Local\Atlassian\SourceTree\git_local\mingw32\etc\gitconfig

こちらに記述することで設定可能。

.gitattributes

上記で設定した merge=ours という文字列を、マージしたくないファイル名の後に付ける。

  1. ignore_target_file.txt merge=ours
書式
  • .gitignore と真似る
  • ファイル名
    • .gitignore と真似る
    • ファイル名
      • フルパス
      • .gitignore 同様、ワイルドカードを利用できる
        • web/*_dev.php
結果
develop → master マージ

確かに、上記4ファイルは、develop には存在し、master には存在しない。
.gitattributes は、両ブランチに存在する。

やった~!

develop → origin/develop プッシュ

確かに、上記4ファイルは存在したまま。
ただ、develop ブランチでは、存在するのが当たり前なので
まだよくわからない。
変更するファイルじゃないしな~。

origin/develop → 他のマシンへのプル

無事に .gitattributes ファイルがプルされました。
ん~、こちらも問題があるかどうかは不明。

Git | 2015-12-16 (水) 15:08:37 |
次ページへ »