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 ); とかしてあげれば良い。
スマホの方で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でまとめたやった方が確実に早い。
コマンドだけでテキストファイルをPDF化から印刷まで行う
学部生から、「コマンドだけで、テキストファイルをPDFにしてそれを印刷とか出来ませんかねぇ?」なんて言われたので、やってみた。
具体的に使用する場面が思いつかないけど、モニターが無いサーバーとかで、一々scpでローカルにファイルを持ってきたくない時とかに使う...??
まぁ、物好きもいると思うので、とりあえずやり方だけ。
方法としては、txt -> ps -> pdf -> 印刷という流れで行う。
まず、aptでパッケージをインストールする。
sudo apt install e2ps a2ps
次に、今回使用するe2psでは、文字コードにEUCを使用するため、nkfを利用し変換を行う。
日本語が含まれる場合は、EUCへの変換が必要だが、英語だけの場合はUTF-8のままで問題無いと思われる。
nkf -e --overwirte FILENAME.txt
変換後に、
e2ps -p < FILENAME.txt | ps2pdf - > FILENAME.pdf
その後、lprコマンドで印刷する。
lpr -P PRINTER FILENAME.pdf
ワンライナーで印刷までやろうとしたけど、上手く行かなかったので、とりあえず別々に実行すればとりあえずは出来るよっていう話。
ノートパソコンのアダプタを交換した
ノートパソコンのアダプタが壊れたっぽいので、新しく購入した。
ちなみにこれで3個目。
ASUSのノートパソコンで、ZenBookのUX32Vをかれこれ5年ぐらい使ってる。
ただ、使い方が悪いのかアダプタが悪いのかコネクタ部が悪いのか分からないけど、2回もアダプタが壊れた。
前回は、純正品から互換品に変えた。だって、純正品5000円もするから!!ちょっと高いなぁって思って、互換品で良いかなぁと。
ただ、ここで失敗したのは、アンペア数をちゃんと確認してなかった事。
純正品は19V-3.42A。 互換品は19V-2.37A。
たかが1A。されど1A。
この1Aのせいで、パソコンのバッテリーが90%未満だと充電と給電を繰り返して、バックモニターの明るさがめっちゃ頻繁に変わるのが煩かった。
しかも、バッテリーの消費の方が給電よりも早いので、バッテリーがフル充電するためには、全てのソフトを閉じて、何もしない状態にしないといけなかった。
うまく伝わらないけど、これが凄く面倒くさくて、作業したい時に作業出来ないのは中々なストレスだった。
で、先週、GWに突然アダプタが死んだので、ヤフオクで新しいやつを購入した。
今回はちゃんと3.42Aの物を選んで。
すると、前回までのような症状が全く見られず、ちゃんと充電されているので、やっぱりアンペア数は確認した方が良いと。
一つ賢くなった。