Perl日記

PerlとかRubyとかPHPとかPythonとか

チケットタイトルアンチパターン

普段はBTS、JIRAとかRedmineとかのチケットでタスクを作っている。 その中で、いくつかチケットタイトルについて、アンチパターンを把握したので、メモ。 現状を書いただけで「だから何?」パターン 例) 「ABC機能がX仕様に対応していない」 「DEFアプリのY…

ミーティング中に漫画を読む

正確には、「全体ミーティングでたまに発生する雑談中にサンデーを読む」である。 いまの職場では、社内のエンジニア全員でのミーティングが週に一回行われている。 そのミーティングの時間内で、古くからの鉄板ネタとして、いじられキャラをいじる、という…

プロとは

「あなたが思うエンジニアとしてのプロとは何か」を提出しないといけないらしい。 先にこちらに下書き的にまとめてみる。 まあ特段新しく考えたわけでもなくて、普段、業務の中で感じていた漠然とした内容を言語化してみただけだ。 エンジニアとしてのプロと…

成果の出ない一年だった

去年の2月に中途入社してから、1年3ヶ月くらいが経った。 この1年3ヶ月は、それまでと比較して、成果が出なかった期間だったと感じる。 なんでかな、と考えるまでもなく、おそらくその原因は、スピード感だと思う。 できることもした方がいいこともたくさん…

分報チャンネルを巡回しないようにした

いま所属している開発チームでも、個人用の分報チャンネル(#times_xxxのやつ)がおのおの存在している(途中入社したときからあった)。 「そういうものか」と思って、自分用のチャンネルを作って、Twitter的な使い方をしていた。 自分も他の人も、そこにはあ…

コードに嘘を書かない

久しぶりにブログを書く。リハビリがてら最近思ってることとか。 最近は、コードレビューのときの「承認」ボタンを押す自分の中のハードルが、とても下がったように感じる。 少し前までは、 インデントが揃ってない コードが稚拙だ コードが過剰に複雑だ N+1…

はてブ毎時ランキングを作った

リハビリがてら作ってみた。hateb-rank.herokuapp.com

週刊少年サンデーを自炊して約6年経った

websunday.net 10年以上サンデーを読んでいる。 読んだら捨ててたけど、ちょうど自炊の環境を整えたのもあって、2010年くらいから電子化して捨てるようにした。(さすがに現物をとっておくには場所をとりすぎる……) なんとなく、やってること書いてみる。ち…

Scalaでクラスを継承したときのコンストラクタのパラメータ

newするときに渡す引数は、子クラス定義時も親クラス名といっしょに指定しないといけない。 class Hoge(a: Int) class Fuga extends Hoge // error: not enough arguments for constructor Hoge: (a: Int)Hoge. class Fuga(a: Int) extends Hoge(a) // ok //…

Scalaのクラスのコンストラクタの引数の可視性

valをつけるとattr_reader、varをつけるとattr_accessorになる。(Perl日記だけどRubyで例える) 何もつけないと、privateになる。 // aは何もつけない、bはval、cはvar class Hoge(a: Int, val b: Int, var c: Int) { def getA = a } val hoge = new Hoge(1…

ScalaでCharをtoIntすると文字コードになる

はまったのでメモ。 "1234567890" という文字列を List(1,2,3,4,5,6,7,8,9,0) という形にしたい。 やってみた。 "1234567890".toList //=> List[Char] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 0) "1234567890".toList.map(_.toInt) //=> List[Int] = List(49, 50…

Scalaのcollectionのviewを覚えた

RubyのEnumerable#lazyみたいなやつ。実際の中間処理をその場で実行せずに、forceメソッドが呼ばれたときとか、ループするときに、一気に実行する。 // 中間データができてしまうパターン (1 to 10).map(_ + 1).map(_ + 2) // scala.collection.immutable.In…

Scalaのコレクション系列多くてどれを使っていいのか悩む

PHPだとarray()で済んでたからな…。 とりあえず配列は、線形処理ならList、ランダムアクセスならVectorで、 辞書ならMapを使っておけばいいのでしょうか。。。 scala.collections.immutable Traversable └Iterable ├Set │├HashSet │├SortedSet ││└TreeSet │├…

初めて無職になった。まだニートではない

12月。 1日に突然会社がなくなるというアナウンスがある。 メインタイトルのアプリが違う会社に買い取られることになったので、アプリと一緒にその会社に転籍するかここで辞めるか10日で決めろと言われる。 10日。転籍条件があれだったので、辞めることにす…

Scalaの変位指定アノテーションと上限・下限境界がわからない

LL脳には辛い。 説明を読んでるときには、「なるほどなー」、と思うんだけど、いざ出てくると「どういう意味だっけ…」ってなるし、「いつ使えばいいんだ…」ってなってる。classだけではなくて、defにも使えるので、混乱する。。。 とりあえずこれは理解した…

Scalaにおける表明

assert() def add100(x: Int): Int = { val z = x + 100 assert(z >= 0) // 必ず0以上という表明 z } ensuring() def add100(x: Int): Int = { val z = x + 100 z ensuring(_ >= 0) } // ↑こう書けるので、↓こうも書ける def add100(x: Int): Int = x + 100 …

Scalaで空のListにはreduceLeft()ではなくreduceLeftOption()を使用する

要素が存在するListにはreduceLeft()で問題ない。 List(123, 234, 345).reduceLeft{ (a, b) => a + b } //=> 702 でも要素が空っぽだと、エラーになる。 List[Int]().reduceLeft{ (a, b) => a + b } // java.lang.UnsupportedOperationException: empty.redu…

Scalaで標準入力を受け取る

text1.txt 123 234 345 456 5 6 7 8 9 10上のデータが標準入力でわたってくるので、受け取りたい。Main.scala object Main extends App { import scala.io.StdIn.readLine // 1行目 val firstArg = readLine().toInt // 2行目をスペースで区切りながらInt…

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メディア: 単行本(ソフ…