【Javascript】URLパラメータをパラメータごとに分割して連想配列に格納する方法。

    var fullUrl = new URL(location.href);
    keys = fullUrl.search.replace("?", "").split(/&/);
    keys = keys.map( function(e){ return  e.split(/=/)} )
    params = keys.reduce(function(p, e) {
        name = e[0];
        val = e[1];
        p[name] = val;
        return p }, {} );
    console.log(params);

    if ('sfdc.tabName' in params) {
        console.log('hoge');
    } else {
        console.log('hogehoge');
    }

VisualStrapを使ってみた

既存環境のメンテナンスでvisualstrapblockタグなるものを初めて見たので調べて見ました。

VisualStrapは、VisualforceでBootstrapが簡単に使えるようになるパッケージだそうです。

http://blogforce9dev-developer-edition.ap1.force.com/ProjectDetail?id=a0290000009MI61

上記ページからパッケージをインストールすると、Visualforceページでvsタグが使えるようになります。

参考

tyoshikawa1106.hatenablog.com

昔書いたntpサーバの設定メモがでてきたので公開しておく

はじめに

今はほとんどいじることはないのですが、前職ではバリバリサーバ管理もやっていて、そのときに調べたメモがたくさんでてきました。
当時の殴り書き程度のメモなので、思い返しながら整理しました。誰かの参考になれば。

ntpサーバ設定手順

インストー

yum install ntp
ps ax | grep ntp
systemctl stop ntpd

設定変更

cp -ar /etc/sysconfig/ntpd /etc/sysconfig/ntpd_bk
vi     /etc/sysconfig/ntpd

編集値

# Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes

設定ファイル編集

cp -ar /etc/ntp.conf /etc/ntp.conf_bk
vi /etc/ntp.conf

編集値

server ntp.nict.jp

手動で時刻調整(※時刻がずれていると同期できない)

ps ax | grep ntpd ※止まっていること
ntpdate ntp.nict.jp

NTPサーバ起動

systemctl start ntpd

NTPサーバ自動起動設定

systemctl list-unit-files -t service | grep ntp
systemctl enable ntpd.service

確認

ntpq -p

【jQuery】jQueryでclickイベントが発火しない罠

はじめに

jQueryでclickイベントを取得する処理を記載したのだが、意図した通りに動作しなかったのでその原因を調べたのでメモる。

原因

元々存在するDOMに対してclickイベントを設定した時は期待通りの動作をするのだが、
appendなどをしようして動的にDOMを生成した場合、期待した動作にならなくなります。

そのため

$('nameClass).click(function() {
    alert('クリック!');
});

$(document).on('click', '.nameClass', function(){
    alert('クリック!');
});

のように書き換えてあげると期待した動作になるみたい。
一応下記にサンプルソースを載せておきます。

サンプル

【NGパターンのソース】

<!DOCTYPE html>
<html>
  <head>
    <title>TableSample</title>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>名前</th>
          <th>年齢</th>
        </tr>
      </thead>
      <tbody id ="result">
      </tbody>
    </table>

    <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
    <script>
      $(function() {
        var jsonData = [
          { "name": "山田", "age": 21 },
          { "name": "佐藤", "age": 56 },
          { "name": "鈴木", "age": 33 }
        ]
        var rowList = [];
        var row = null;
        var cell = null;
        $.each(jsonData, function(i, data) {
          row = $("<tr/>");
          // テキストの場合
          cell = $("<td/>");
          cell.addClass("nameClass");
          cell.text(data.name);
          row.append(cell);
          // リンクの場合
          cell = $("<td/>");
          cell.addClass("nameClass");
          cell.append($("<a href='" + data.id + "'>" + data.name + "</a>"));
          row.append(cell);
          rowList.push(row);
        });
        $("tbody#result").append(rowList);
        $('nameClass).click(function() {
            alert('クリック!');
        });
      });
    </script>
  </body>
</html>

【OKパターンのソース】

<!DOCTYPE html>
<html>
  <head>
    <title>TableSample</title>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>名前</th>
          <th>年齢</th>
        </tr>
      </thead>
      <tbody id ="result">
      </tbody>
    </table>

    <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
    <script>
      $(function() {
        var jsonData = [
          { "name": "山田", "age": 21 },
          { "name": "佐藤", "age": 56 },
          { "name": "鈴木", "age": 33 }
        ]
        var rowList = [];
        var row = null;
        var cell = null;
        $.each(jsonData, function(i, data) {
          row = $("<tr/>");
          // テキストの場合
          cell = $("<td/>");
          cell.addClass("nameClass");
          cell.text(data.name);
          row.append(cell);
          // リンクの場合
          cell = $("<td/>");
          cell.addClass("nameClass");
          cell.append($("<a href='" + data.id + "'>" + data.name + "</a>"));
          row.append(cell);
          rowList.push(row);
        });
        $("tbody#result").append(rowList);
        $(document).on('click', '.nameClass', function(){
            alert('クリック!');
        });
      });
    </script>
  </body>
</html>

【Salesforce】リモートオブジェクトを用いた値の取得

はじめに

リモートオブジェクトを使用しなけらばならない要件の開発があり、はじめてリモートオブジェクトを触ったのでメモる。
簡単にいうと、Apexコントローラで@RemoteActionを使用する場合より、JavaScript Remotingの複雑さを軽減することができるようになるそうです。
確かに、リモートオブジェクトを使用するとApexやSOQLを知らなくても値を取得することは簡単にできそうです。

使用例

こんな感じでAccountオブジェクトから値を取得し、表示することができます。

<apex:page >
    <!-- リモートオブジェクト -->
    <apex:remoteObjects >
            <apex:remoteObjectModel name="Account" jsShorthand="Acc" fields="Id, Name"/>
    </apex:remoteObjects>


    <div class="container">
        <h1>検証画面</h1>
        <table id="assignTable" class="table">
          <thead>
            <tr>
              <th>タイトル1</th>
              <th>タイトル2</th>
            </tr>
          </thead>
          <tbody id ="result">
          </tbody>
        </table>
    </div>

    <!-- jQuery -->
    <apex:includeScript value="https://code.jquery.com/jquery-3.2.1.min.js"/>

    <script>
        $(function() {
            // アカウントオブジェクトから値を取得。
            var acc = new SObjectModel.Acc();
            acc.retrieve({ limit: 10 }, function(err, records, event) {
                if(err) {
                    alert(err.message);
                } else  {
                    var rowList = [];
                    var row = null;
                    var cell = null;

                    $.each(records, function(i, record) {
                        var id = record.get("Id");
                        var name = record.get("name");

                        console.log('>>>>> ' + id);
                        console.log('>>>>> ' + name);

                        row = $("<tr/>");

                        cell = $("<td/>");
                        cell.addClass("project");
                        cell.text(projectName);
                        row.append(cell);

                        cell = $("<td/>");
                        cell.addClass("member");
                        cell.text(memberName);
                        row.append(cell);

                        rowList.push(row);
                    });
                    $("tbody#result").append(rowList);
                }
            });
        });
    </script>
</apex:page>

参考

developer.salesforce.com

たまに必要になるけど、忘れがちなコマンド集

はじめに

普段、あまりコマンドラインで操作をする機会がないのですが、
たまに使うと忘れてしまうコマンド集。
随時追加予定。

コマンド集

コマンド 内容
grep -n ‘xxx’ *.txt ファイル内の'xxx'文字列を検索し、行番号付きで表示する。
grep -r ‘xxx’ . | grep .js 指定ディレクトリ内の'xxx'文字列を検索し、行番号付きで表示する。
git rm -r –cached .settings Gitに追加した不要なものを除外する。

【Gmailの便利機能】1つのアカウントで複数のメールアドレスを使う方法

1つのGoogleアカウントで複数のGmailアドレスを使う方法を知ったので、その方法をメモる。

メインのアドレスが

の場合、

のように、@の前に「+{任意の英数字}」をつけることで、複数のメールアドレスとして使用することができます。
この場合、メールを受信した際は

の受信ボックスに受信します。

これで、テストアカウントの作成やSNSごと複数のアカウントを使うことができますー。