2016年12月18日日曜日

jQueryで前後の要素を入れ替えるシンプルな書き方

動きのイメージ




コード

<section class="main container">
    <section>
        要素1
    </section>
    <section>
        要素2
    </section>
    <section>
        要素3
    </section>
</section> 
<script>
$(function() {
    $('下へのセレクタ').click(function() {
        var section = $('section.main > section').has(this);
        section.next().after(section);
    });
    $('上へのセレクタ').click(function() {
        var section = $('section.main > section').has(this);
        section.prev().before(section);
    });
});
</script>

解説

一つ下へ移動する場合、該当の要素を次の要素`next()`の後`after()`に置く
一つ上へ移動する場合、該当の要素を前の要素`prev()`の後`before()`に置く

要素の個数や順番を計算するなどを最初に考えたがプロトタイプ作る上ではこれで十分だったのでメモ



2016年12月6日火曜日

リリース前に文法チェックを差分実行して確認する


コード(bach)

git fetch origin
for FILE in `git diff --name-status origin/master -- | grep -E '^[AUM].*\.php$'| cut -c3-`; do
  if php -l $FILE; then
    echo "OK"
  else
    exit 1
  fi
done

解説


まずfetchして最新のmasterを取得します
diffを取得してA: 追加、M: 更新、U: 競合しているファイルを抽出
必要な場所だけ取得してループを回します

$FILEを用いてphp -lで文法チェックする

2016年12月5日月曜日

複数のgzファイルを一気にgrepする方法

コード

find ./ -name "*.gz" -exec zgrep '正規表現' {} \;

解説

-execは引数を受け取って後続の処理に受け渡すオプション。{}の位置に受け取ったファイル名を渡す\;で終わらせるのがルール

2016年1月4日月曜日

Google apps script でGmailの下書きをつくるライブラリ

Google apps script でGmailの下書き(draft)をつくるライブラリを作成したので紹介します。


背景

Google apps scriptの標準関数だとメール送信はあるけど下書きが作れない!
Gmail APIを利用した形で実現出来たのでライブラリ化しました。

使い方

下記のような感じでbuildしてmake()で下書きが作成されます。

project id
M6iKsfeXXavjDNzz6EEFRBu141rqerMCH
example
var MailLib = new createHTMLDraftInGmail();
MailLib.From('sample@example.com')
       .To('sample@example.com')
       .Title('title')
       .HtmlBody('body
test')
       .make();


2015年11月10日火曜日

google apps script のライブラリを取り込んで利用する

今回はgoogle apps script でライブラリをつくる方法をご紹介します。

何がいいか?

  • 公開されている便利なライブラリを利用して効率よくプログラムできる
  • 自分で共通ライブラリを作って、読み込んで使うことで保守性が上がる

ライブラリを読み込む

  • 「リソース」タブの「ライブラリ」を選択する
  • プロジェクトキーを入力する
  • バージョンを指定する
  • 保存する




スクリプト内で利用する

「識別子」として指定した文字列で読み込んだライブラリを使うことができます
ex) var GetStockDataObj = GetStockData.factory({hoge: 'fuga'});



2015年11月6日金曜日

google apps script ライブラリの作り方と公開方法

今回はgoogle apps script でライブラリをつくる方法をご紹介します。

何がいいか?


  • 異なるファイルなどで作った関数やクラスを違うスクリプトから使うことができる
  • 便利関数など共通化しておける
  • 作ったプログラムを外部に公開できるので世界中で使ってもらえる(大げさ)
自分でもライブラリを一つ公開しました
=> google apps script 向け株式情報取得ライブラリ

ライブラリをつくる

バージョンを登録する


  • 「班を管理」を選ぶ
  • バージョンのタイトルを入力して「新しいバージョンを保存」を押す



プロジェクトキーを取得する


  • プロジェクトのプロパティを選ぶ
  • プロジェクトキーの項目の英数字をメモ帳などに保存しておく




権限設定を変える


閲覧権限以上がないとスクリプトを実行できないですので権限設定を変えます
「共有ボタン」を押す
権限を閲覧可に変更する(今回は一般公開なので誰でも閲覧可にしました限定して公開する場合は特定のアドレスだけに共有するようにしてください)










2015年11月2日月曜日

スプレッドシートで株価管理するための google apps script 向け株式情報取得ライブラリ

はじめに


自分が株価取得用に作ったgoogle apps scriptのスクリプトをライブラリ化したので紹介します。
これを定期実行の関数から呼び出して、株価の管理をしています。

できること

  • 株式が存在するか
  • 現在の株価の取得
  • 社名の取得
  • 単元株式の取得
  • 予想配当の取得
==> サイトにある情報ならmatch使って拡張すれば良いので今後は出来高なども取れるようにする予定

github


https://github.com/uenoryoichi/googleAppsScript/blob/master/getStockData/GetStockData.gas

使い方

  1. ライブラリを読み込む
  2. codeを引数に渡してfactoryでオブジェクトを作成してください

技術的なこと -- プロトタイピングでの記述 --

jsでちょっとしたライブラリつくる時に使われているプロトタイプを使う機会が無かったので今回のライブラリ化に際して使ってみました。

良かった面

  • 共通で使う初期値などを予めsetして、それに沿ったオブジェクトを返してくれるので、単純に関数群としてのライブラリと異なり、分離した時に引数の受け渡しを都度都度しなくて良くなった。
  • 特にurlFetch部分の呼び出しがオブジェクト生成時のみになったので、かなり高速化して、GASの起動時間による制限でできなかったことができるようになった。
  • ライブラリ内のメソッドを継承したり追加したりできるので特殊な対応が必要な時にも柔軟に対応できる

まだまだな点

yahoo依存で頑張ってmatch関数によってデータを取得しているので、まだ不完全

  • 上場廃止のものはページが存在しているので取得できてしまう
  • 取得できるものがまだ限られている
  • 今まで作ってきた他のスクリプトとの相性上、今回は一つ一つの値を返すようにしたが、連想配列を一括で返すほうが、ライブラリとしては良いのではないかと作ってて思った