個人的なまとめ。

てきとーに何か書きます。

slack APIの使い方

他のサイトだといまいち使い方が分からなかったので、自分用に記載しておく。

api.slack.com


chat.postMessage method | Slack

例えば、chat.postMessageを使用する場合は、FactsのMethod URLに色々とパラメータを付加してく。

https://slack.com/api/chat.postMessage?token=YOUR_TOKEN&channel=YOUR_CHANNEL_ID&text="Hello, World!"

とやれば、とりあえず指定したチャンネルに書き込む事が出来る。

Tokenは、Legacy Tokenを使用した。簡単に取得出来るので、とりあえずはこれで。
今は別の新しいやつが有るらしいので、そっちを使うのがベストっぽい。

$_SESSIONでページ遷移の時にもデータを保持する

phpで$_SESSION関数を使用して、ページング(ページ遷移)の時にもデータを保持したい。

ローカルでは、

<?php
    session_start();
?>

が必要だが、レンタルサーバー等にアップする場合には、session.auto_startが有効になっている場合は、不要です
もちろん、ローカルでもphp.iniでsession.auto_startが有効であれば不要です。

ちなみに、自分はこのsession.auto_startが有効になっている事に気づかずに、session_start();を書いてたせいで上手く動作しませんでした。

<?php
    $_SESSION['keyword'] = "音楽";
?>

とかやれば、$_SESSION['keyword']に"音楽"が代入されます。
$_SESSIONは、ブラウザが閉じられるまでデータを保持するので、途中でデータを消したい場合は、

<?php
    $_SESSION['keyword'] = "";
    $_SESSION['keyword'] = array();
    unset($_SESSION['keyword']);
?>

以上はどれも同じなので、好きなやつを使えばいいかな、と。
個人的には, = ""のやつを使ってます。

PHPで今日の日付に1日足す

例えば、2018年6月6日から2018年6月7日までの期間に絞ってデータを抽出したい時があるとする。

<?php
    $objDateTime = new DataTime('NOW');
    echo $objDateTime->format('Y-m-d');
?>

と実行すると、

2018-06-06

という風に値が得られる。

ので、ここに1日を足そうと思う。

<?php
    $objDateTime = new DataTime('NOW');
    echo $objDateTime->modify('+1 days')->format('Y-m-d');
?>

という風にするだけ。
勿論、echoの部分を$nextDay等適当に変数を付けてあげれば、使いやすいと思う。

今回はNOWではなく、入力したフォームの日付をGETで取得し、それに1日を追加したがやり方は同じ。

<?php
    $objDateTime = new DataTime($_GET['date']);
    echo $objDateTime->modify('+1 days')->format('Y-m-d');
?>

という風にするだけで、GETで取得したname=dateの値に1日追加する事ができる。

簡易的に足すのであれば、

<?php
    $nextDay = ++$_GET['date'];
?>

でも問題はない。ただこれだと、1日しか追加出来ないし、31日とか月末を指定された場合はエラーがでるので、上記の方法でやるのがベストだと思う。

IFTTTのWebhooksをphpで使う

昔から知ってて気になってたIFTTTを使ってみた。
実際、どう使えばいいのかいまいち分かってないけど、とにかく便利らしい。

Webhooksは自分で作成したアプリやWebなどに埋め込んで、URLにPOSTかGETで投げることで、動作を行う事ができるやつ。

<?php
$name = 'Sample';

$json_data = array(
    'value1' => $name,
);

$URL = "http://maker.ifttt.com/trigger/{EVENT_NAME}/with/key";
$URL .= $YOUR_KEY;

$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-Type: application/json',
        'content' => json_encode($json_data),
    )
);
file_get_contents($URL, false, stream_context_create($options));
?>

以上で出来る。file_get_contentsは使わない方が良いって書いてある記事もあったけど、とりあえずはこれで。curlを使うのがベストらしい。

$json_dataの配列の中のkeyは、IFTTTで設定をしたkeyと揃えると良い。
この画像の場合だと、$json_data = array( 'value1' => $name ); とかしてあげれば良い。
f:id:kosuke128:20180528193653p:plain

スマホの方でIFTTTのアプリを入れておけば、そっちに通知が行く。
使い道はイマイチ思いつかないけど、とりあえず使えるようになった。

ある特定の事をしたいためのvimコマンド

とあるプログラム作成の時にしか使わない、vimのコマンドをメモっておこうと思う。
あくまでも研究室用。きっと来年以降役に立つと思う。

q w        // 記録モードに
<Shift + I>    // 行の先頭に移動
\item       //  \itemは手入力
<Esc>      //  Escで一旦入力モードを終わる
<Shift + $>   //   行の一番後方に移動
a        //   入力モード
\\       //    \\を手入力
<Esc>                  
j        //  一つ下の行に下がる
<Shift + I>
\textit {
<Esc>
<Shift + $>
a
}
<Esc>
j
^
q        //  記録モードを終了する

使う時に、

@w

を入力するだけ。


追記:
実際の使い方としては、Texで大量に

\begin{itemize}
    \item Sample\\
    \textit{This is sample}
    \item Sample2\\
    \textit{This is sample2}
\end{itemize}

とか打つ時に、一々カーソルを左に動かして\itemって打ったり、右に動かして \\ って打ったりするのが大変なので、vimでまとめて一気にやりたい。
という時に使うのが上で書いたやり方。

同じような形式の物がずっと並んでいるのであれば、vimでまとめたやった方が確実に早い。