Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

2015-01-01から1年間の記事一覧

Scalaでは本物の矢印記号が使える

以下のコードは等価である。 for (x <- 1 to 10) println(x) for (x ← 1 to 10) println(x) 「 2016-01-11 追記「=>」の代わりに「⇒」も使えるようだ。ひぇぇ。 val f = (s: String) ⇒ println(s) // f: String => Unit = <function1></function1>

PHPですべてをFにしたかった

PHP

すべてをFにしたかった結果

PHPで関数を返す関数を呼んで関数を呼びたかった(即時実行)

PHP

関数を返す関数を変数に入れて、直接呼びたい。 357 PHP7 問題なし。 PHP5.6 syntax error, unexpected '('怒られた。 他の動かない例 括弧したり変数に入れたり。

Scalaでスクレイピング

Scalaでスクレイピングしてみた。 ライブラリ jsoup やってみた はてなホッテントリのタイトルとリンクを抽出。 build.sbt name := "scalascraping1" version := "0.0.1" libraryDependencies += "org.jsoup" % "jsoup" % "1.7.3" main.scala import org.jso…

PHP7のThrowableを利用したキャッチ

PHP

PHP7からErrorクラスが新設されて、文法エラーのような例外も捕捉できるようになった。Errorクラスも既存のExceptionクラスも、Throwableインターフェースを実装しているので、完全なキャッチは以下のようになる、と思う。 357 //try { // echo add('hoge',…

PHPでArrayOptionクラスを作った

PHP

PHPのArrayは存在しないキーにアクセスすると、Noticeのエラーが発生する。 なので、isset()やら、array_key_exists()をしてから取りに行くのだけど、どうにも面倒だった。最近覚えたScalaのgetOrElse()みたいなことができればいいなと思って、作ってみた。 …

PHPでreset()を使って先頭の要素を取り出しているコードを見た

PHP

int(101) なんとreset()は引数の配列の先頭の要素を返却する。 それを利用して、配列の先頭の要素を取得するために、reset()を使っているコードがあって、 「素直にarray_shift()使えばいいのに…」と、ひどく陰鬱な気分になった。ちなみに内部ポインタは何…

foreachの要素の変数はループを抜けても保持されるのでunset()した

PHP

はまったのでメモ。foreachで配列の中身を直接いじっているコードがあって、その後、同じ変数名を使っていたら中身が壊れてえらい目にあった。先に結論を書くと、foreachのリファレンス変数はforeachを抜けても残っていて、変な動きをしていた。 そしてそれ…

PHPでTraitのメソッド名をasで変更してuseして、うまいことする

PHP

PHPのTraitはuseしたクラスでTraitと同じメソッド名のメソッドを定義すると、それで上書きしてしまう。 foo(); //=> Hoge::foo()====== Traitは継承関係に組み込まれるわけではないので、par…

Laravel5.1入門その11 カスタムバリデーション

PHP

Controllerのアクションの最初にリクエストパラメータをずらずら書くとノイズになりがちだ。 validate($request, [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', // たくさんの // パラメータ //…

筋トレを続けて1年経った

以前からソーシャルゲームをいくつか遊んでいたんだけど、効率よくプレイするために、寝る前にスタミナ全部使って終わるようにしていた。 そんなことを続けていると、自分の現実世界の体力も、余っている状態で寝るのが、なんだかもったいなく感じるようにな…

ネストは悪ではない話

PHP

言語 PHPの話。 発端 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典出版社/メーカー: オライリージャパン発売日: 2012/06/23メディア: 単行本(ソフ…

PHPの名前空間をuseするときはクラス名まで書く

PHP

ちゃんと理解していなかったので読んだ。PHP: 名前空間 - Manual useするときには名前空間+クラス名で、そのクラス名を修飾せずとも使えるようになる。a.php class Foo\Bar#1 (0) {} PHP5.6以上ならば、同様に、名前空間+関数名とか、名前空間+定数名で…

Laravel5.1入門 その10 はじめてのFacade

PHP

Laravelにおけるファサードとは、デザインパターンのファサードとは全く別物なので注意。 単にAPIを使うための機能と捉えておけばいいみたい。 目的 こんな感じでアプリ内からどこでも動くようにする。 true 本当に動くクラス 巡り巡って本当に動くis_piyo(…

Laravel5.1入門その9 はじめてのサービスプロバイダ

PHP

サービスプロバイダのスケルトンをartisan経由で作る。 $ php artisan make:provider FugaServiceProvider Provider created successfully.app/Providers/FugaServiceProvider.php

Laravel5.1入門その7 はじめてのIoCコンテナ

PHP

Laravelプロジェクト直下に素のPHPを書いてみる。 hoge.php bind('foo', function(){ return ['hoge' => 'fuga']; }); // fooの名前で取り出す $foo = $app->make('foo'); var_dump($foo); //=> array(1) { //=> 'hoge' => //=> str…

Laravel5.1入門その7 MongoDBにつないでみる

PHP

MongoDBをインストール。 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 $ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb…

Laravel5.1入門その6 collectヘルパを使う

PHP

Collections - Laravel - The PHP Framework For Web Artisanslaravel.com collect([])を使うと、Illuminate\Support\Collectionインスタンスが返ってきて、PHPの貧弱なArrayを便利にしてくれる。Eloquentを使うときも、これらの便利メソッドが使える。 firs…

Laravel5.1入門その5

PHP

ミドルウェアの使い方のもっと良い方法がちゃんと書いてあった。 HTTP Middleware - Laravel - The PHP Framework For Web Artisans というかもうRailsぽい。やりたいのは /api以下のリクエストは、API用のミドルウェアを通ってほしい /api以下のレスポンス…

Laravel5.1入門その4

PHP

Laravelは5になってからPSR-4に沿うようになったので、appディレクトリの下を自由に使うのが良いらしい。APIとデバッグ用のページと管理者用のページを作る時にどうするかなと思って、まずやってみた。Controllerの下にApi、Debug、Adminの名前空間を掘って…

Laravel5.1入門その3

PHP

ミドルウェアを触ってみる。 artisanでミドルウェアのスケルトンを作る。 $ php artisan make:middleware AuthenticateUserAgent Middleware created successfully.できた。app/Http/Middleware/AuthenticateUserAgent.php

Laravel5.1入門その2

PHP

app/Http/routes.phpを触る。 text/plain

Laravel5.1入門

PHP

メモ。 Ubuntu14。 PHP5.6入れる。 $ sudo add-apt-repository ppa:ondrej/php5-5.6 $ sudo apt-get update $ sudo apt-get install python-software-properties $ sudo apt-get update $ sudo apt-get install php5 $ php5 -v PHP 5.6.9-1+deb.sury.org~tru…

二重引用符中の認識されないエスケープシーケンス

二重引用符(ダブルクオート)の中にバックスラッシュを置くとき、 「\n」とか「\t」とかのエスケープシーケンスは展開されるけれど、 「\j」のような言語が認識できないようなものがどうなるか、言語間で差が出たのでメモ。 Perl print "$]\n"; print "\j\n…

PerlでPDFに他のPDFのページを差し込む

http://r9.hateblo.jp/entry/20120513/p1ScanSnapでスキャンしたPDFをページごとに回転する - Perl日記r9.hateblo.jpの続き。(もう3年も前だ) 本体PDFに表紙PDFのページを差し込む 漫画の単行本をスキャンして自炊するときには、白黒の本体部分と、カラー…

PHPのジェネレータについてLTしませんでした

PHP

社内勉強会で、時間の関係でできませんでしたが、作った資料がもったいなかったのと、Speaker Deck使ってみたかったので試しに貼ってみます。

PHPでUnix時間からDateTimeオブジェクトを作るときのタイムゾーン設定

PHP

はまったのでメモ。 UnixタイムからDateTimeオブジェクトを作るときに、他のやり方と同じノリでタイムゾーンを第二引数に渡しても効いていなかった。一応、マニュアルにも書かれていた。 PHP: DateTime::__construct - Manual 注意: $time パラメータが UNIX…

PythonでMacの濁音・半濁音のファイルを扱う

MacはNFD形式で日本語のファイルとかディレクトリを作るので、スクリプト内の日本語でひっかけられない。 import os os.mkdir("はっぴー") os.path.exists("はっぴー") #=> True これは引っかかる for file in os.listdir("."): if file == "はっぴー": #=> …

PHPのジェネレータまとめ

PHP

PHP5.5から使えるようになったジェネレータについて、社内普及用にまとめる。 ジェネレータとは ジェネレータは、プログラムにおいて、数列の各要素の値などを次々と生成(ジェネレート)し他の手続きに渡す、という機能を持っている手続きである。値を渡す…

ReactでJSON整形ツール書いてみた

できたもの https://dl.dropboxusercontent.com/u/9152456/json_stringify/index.htmlいろいろやった後、削りまくったら結局stateしか使わなかった。 <html> <head> <meta charset="UTF-8"> <title>JSON整形ツール</title> style略 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.2/react.js"></script> </meta></head></html>