ajaxで取得したjavascriptを適用させる方法

ajaxでデータと一緒にjavasciptを取得して、実行したかった。
サーバー側でfunctionを動的に生成して、その関数をjavascriptで実行したかったんです。

最初は、htmlでscriptタグを出力しておいて、

$('script_area').html(script);

みたいにして出力してみたものの当然実行されず。
evalしても駄目。

google先生で探し回ったところ、appendChildで出力されれば適用されることがわかった。

以下はサンプルコード。

            function add_script(script) {
              var s = document.createElement("script");
              s.type = "text/javascript";
              s.innerHTML = script;
           
              var ele = document.getElementById("display_area");
              ele.appendChild(s);
            }
           
            function display_script() {
                var parm = {
                    url : $('#url').val(),
                    mode : $('input[name=mode]:checked').val()
                };
                var url = "/test";
                $.ajax({
                    url: url,
                    data: parm,
                    dataType: 'json',
                    success : function(json) {
                            add_script(json.scripts);
                    },
                    error : function (XMLHttpRequest, textStatus, errorThrown) {
                        console.log(XMLHttpRequest); // XMLHttpRequestオブジェクト
                        console.log(textStatus); // status は、リクエスト結果を表す文字列
                        console.log(errorThrown); // errorThrown は、例外オブジェクト
                    }
                });
            }

Vagrant+apache2+php-fprm環境にxdebugをインストールする

今の現場で使用しているVagrant環境で、xdebugのインストールに手間取ったのでメモ。

<環境>
Vagrant
apache2
php-fpm

<やったこと>
$ yum -y install php-devel

PEARが入っていない場合
curl -O http://pear.php.net/go-pear.phar
sudo php -d detect_unicode=0 go-pear.phar
参考:http://jason.pureconcepts.net/2012/10/install-pear-pecl-mac-os-x/

$ pecl install xdebug-2.2.7

上記がエラーとなる場合は以下を試してみる
$ pear clear-cache
$ pear list-upgrades
$ pear upgrade

xdebug.soのインストール先を探す
[root@localhost ~]# find / -name xdebug.so
/usr/local/php/5.6.15/lib/php/extensions/no-debug-zts-20131226/xdebug.so

php.iniに追記
[root@localhost ~]# vi /usr/local/php/5.6.15/lib/php.ini

# 最終行以降に追記
zend_extension=”/usr/local/php/5.6.15/lib/php/extensions/no-debug-zts-20131226/xdebug.so”
xdebug.remote_enable=1
xdebug.remote_port=”9001″ # 何故かデフォルトの 9000 だとうまくいかないことが多い
xdebug.profiler_enable=1
xdebug.profiler_output_dir=”/tmp”
xdebug.max_nesting_level=1000
xdebug.idekey = “phpstorm” # PhpStorm 側で指定する IDE の識別子
xdebug.remote_connect_back=1
xdebug.remote_autostart=1
xdebug.remote_handler=dbgp

インストールされたか確認
[root@localhost ~]# php -i | grep -i “xdebug support”
xdebug support => enabled

再起動
[root@localhost ~]# /etc/init.d/php-fpm restart

DELL PowerEdge T110II 障害(後日談)

購入したHDDは予定通りに届き、故障した片側のHDDと取り替え。
自動的に修復が始まると思っていたので、1日放置していたけど、状況改善されず???
RAID Status: Degraded
のまま。

RAID Controller(PERC H200)のBIOS画面を開くと。

Slack for iOS Upload-1

“Missing”。認識されていない。
RAID に組み込まれていないよう。

“Hot Spr”の所だけ、黄色になって変更できるようになっている。
hotspareモードじゃないので、容量が完全に一致していない(Slot0 HDD=930GB,Slot1 HDD=931GB)と、自動的には組み込まれないみたい。
“Hot Spr”=YESにして、「C」を押して、変更を保存すると、、、

Slack for iOS Upload-2

Task 0 Syncd

になって、復旧が始まった!!
Device StatusもRebuildingになったので大丈夫そう。
このまま完了するのを待ちます。

マニュアル構成が必要なraid controllerなのかもしれません。
初のRAIDドライブ故障であたふたしましたが、知り合いにサポートしてもらって、無事解決しました。

DELL PowerEdge T110II 障害

客先へ納入したデルのサーバーに障害。

なかなかbootまでたどり着かないという現象。
異音もする。

ヤフオクで購入したので、DELLが直接サポートしてくれない、、、
調査に協力はしてくれた。
digaでRAIDコントローラーの障害と出たので、ヤフオクでPERC H200を購入。
5,000円くらいで買えた。

差し替えても復旧はしない。
diagまでもたどり着かない状態。

えいやっと、HDDケーブルを抜いて起動したら、片側のみ外した状態だと正常にCentOSが起動した!
HDD障害もあったのか、、、
純正部品(GPP3G)の購入もDELLからは出来ず、、、
オフィシャルショップのものは7万で高い、、、

最初は、Amazon.com/ebayで買って、転送サービスで日本で送ろうと思っていたが、時間がかかる。

知り合いに相談しつつ、同規格のHDDなら大丈夫だろうということで探す。
Amazon.co.jpで1.6万の安めの物が見つかった。

着払いで注文して、届くのを待つ。

homesteadのVMをもう一つ作る

Laravel5がきたので、検証用に新しくVMを作ろうとしたら、いろいろぶつかって、うまくいかなかった。
対処方法のメモ。

$ git clone https://github.com/laravel/homestead.git Homestead-l5
$ cd Homestead-l5
$ vi Homestead.yaml

---
ip: "192.168.11.10"
memory: 2048
cpus: 1
name: "homestead-l5"
hostname: "homestead-l5"

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: (作業フォルダ)
      to: /home/vagrant/Code/Laravel

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local

$ vi scripts/homestead.rb

class Homestead
  def Homestead.configure(config, settings)
    # Configure The Box
    config.vm.box = "laravel/homestead"
#    config.vm.hostname = "homestead"
    config.vm.hostname = settings["hostname"] ||="homestead"

    # Configure A Private Network IP
    config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10"

    # Configure A Few VirtualBox Settings
    config.vm.provider "virtualbox" do |vb|
#      vb.name = 'homestead'
      vb.name = settings["name"] ||='homestead'