エンジニアのひよこ_level10

【毎日更新!】新卒2年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

【PHP】HTMLのclassを指定して要素を取得。DomCrawler【209日目】

こんな時に使う

<div class="aaa">
    <p class="aaa">aaaaa</p>
    <img src="/test/img.png">
</div>

これの、src部分 /test/img.pngが欲しい。

DomCrawler使ってみよう

これ使うと、CSSセレクタ使って取得が出来る。

簡単。見やすい。

■DomCrawler
https://symfony.com/doc/current/components/dom_crawler.html

テスト用コード

(Laravelでphp artisan tinkerとかしていただければ試せます)

use Symfony\Component\DomCrawler\Crawler;

$html = <<< EOF
<div class="aaa">
<p class="aaa">aaaaa</p>
<img src="/test/img.png">
</div>
EOF;

$crawler = new Crawler($html);
$srcs = $crawler->filter('.aaa img')->each(function (Crawler $c) {
return $c->attr('src');
});

結果

=> [
"/test/img.png",
]

【Laravel】url()->previous()で前のページが取得出来ない時の対応【208日目】

直前に見ていたページの取得方法はこちら

willow710kut.hatenablog.com

こんな時につかう

  1. 対象のページを初めて見た時
  2. 新しいページ、新しいタブで開いた時

この時は、直前に見ていたページが取得出来ない。
その時の対応をどうするか。

別なページをセットする

url()->previous('/error');

これで、取得出来なかった場合には、/errorのURLをセットすることが出来る。

引数ない場合何が起こるの?

元コード。

    public function previous($fallback = false)
    {
        $referrer = $this->request->headers->get('referer');

        $url = $referrer ? $this->to($referrer) : $this->getPreviousUrlFromSession();
        
        if ($url) {
            return $url;
        } elseif ($fallback) {
            return $this->to($fallback);
        } else {
            return $this->to('/');
        }
    }

つまり、取得出来なかった時には、引数のURLをセットする。

引数がなかった時には、ドメインのTOPに飛ばされる。

slackで書いた書き込みを、GASで読み込ませる【207日目】

手順

  1. slackにアプリを入れる
  2. アプリの設定する
  3. GASのdoPostで受け取る

slackにアプリを入れる

  1. slackをカスタマイズを開く
  2. メニューからApp管理を選ぶ
  3. 画面上のApp検索で『webhook』とかで検索して、発信Webフックを追加する

アプリの設定する

  1. 設定を追加を選ぶ
  2. 『引き金となる言葉』 を設定
  3. URLにGASのURLを追加 (GASで公開→ウェブアプリケーションとして導入で出るURL)
  4. 設定を保存

f:id:willow710kut:20180508205149p:plain

GASのdoPostで受け取る

GASはdoPostという関数を書くとPostでアクセスした時に動く関数が作れるよ。

function doPost(e) {
  word = e.parameter.text ;
}

これで受け取れるよ。

引き金となる言葉が含まれているから、replace関数とかで削るといいよ。

【PHP】表示させたページに404のステータスコードをつける【206日目】

こんな時に使う

PHPでオリジナルの404ページを表示させたい。

で、ページが例外に入った時にオリジナルの画面を表示させたけど、
ステータスコードが200で正常に表示されている時。

このコード付け足す

header("HTTP/1.1 404 Not Found");

これでステータスコードが404になっています。

google chromeのNetworkの項目とかで確認してみましょう。

【Laravel】実行したor実行する前のSQL文を確認する【205日目】

こんな時に使う

Laravelで書いたSQLの文を確認したい。

$articles = Article::all();

これとか実際にはどんなSQL文で取得したか知りたい

実行後に確認

// これから書くSQL文をLogで取得出来るようにする
\DB::enableQueryLog();

// SQL文実行
$articles = Article::where('id', 1)->get();

// getQueryLogでLogを取得する
dd(\DB::getQueryLog());

実行前に確認

// getをする前のデータ
$articles_sql = Article::where('id', 1);

// SQL文を取得
dd($articles->toSql());

【GAS】キー等、定数をコードに含めたくない時【204日目】

こんな時使いたい

コードに、アクセスのときのキーとかを含むとき、こう書きたくない

key = 'xxxxxxxxxxxxxxxxx';

これをコードに含みたくない時とか。

準備

  1. ファイル→プロジェクトのプロパティ
  2. 開いたモーダルから、スクリプトのプロパティ
  3. 行を追加をクリック
  4. プロパティ(キー名)と、値を入力
  5. 保存!

簡単!

使う

PropertiesService.getScriptProperties().getProperty("MY_KEY");

ちなみに、これで新しくプロパティをセットすることも可能

PropertiesService.getScriptProperties().setProperty("OTHER_KEY");

【日記・思考】余裕が無いときに『出来ること』は実は不幸なのか?【203日目】

出来ると成長を止める?

『30分でとあるプログラムを作れるAさん』がいたとする。
その人は30分で毎回プログラムを作れるでしょう。

『1時間でとあるプログラムを作れるBさん』がいたとする。
その人はどうにかして、Aさんみたく、30分でプログラムを作ろうとした。

頑張るだけじゃダメだった。Bさんはいっぱい工夫して効率を高めた。
結果、Bさんは『20分でとあるプログラムを作れるBさん』になれました。

忙しくて、とにかく手が回らない時ありませんか

とにかく忙しい、今頑張るしかないと頑張っている人はいませんか。

その人はきっと優秀で、『30分でとあるプログラムを作れるAさん』
なのかもしれません。

でも、その人になんとかして余裕を作ることが出来たら、
『15分でとあるプログラムを作れるAさん』になるかもしれません。

でも、きっと忙しすぎて『30分でとあるプログラムを作れるAさん』でないと、
仕事が間に合わないのかもしれません。

弱いロボットから学ぶこと

最近、『弱いロボット』というものが話題になりました。

ロボットがゴミを見つけるのです。
でも、そのロボットはゴミを拾う機能がありません。

だからあたふたするしかないのです。
あたふたしているのを周りに知らせるのです。

すると、周りの人がゴミを拾って、ロボットに渡してくれるのです。

『最初からロボットにゴミを拾う機能をつければいいじゃん』と思うか
『そんな効果、出来事を生み出せる素晴らしいロボットだ』と思うかは
人次第だと思います。

ただ、あなたになにかが不足している時、あなたにはチャンスがあるのです。

私はいっぱい足りない人間だけど、だからこそ考えられることもあるのかも知れない。

私がやりたいこと。

『30分でとあるプログラムを作れるAさん』を、
『15分でとあるプログラムを作れるAさん』にしたいです。

だから、そのために出来ることをやりたい。やれることを探したいです。

みなさんの周りには、忙しすぎて『30分でとあるプログラムを作れるAさん』のままの人はいませんか

きっと何かしらの形で余裕をもたせれば、
『15分でとあるプログラムを作れるAさん』になるかもしれないですし、
もっと生産性の高い何かを生み出してくれるかもしれないです。