謎言語使いの徒然

適当に気になった技術や言語を流すブログ。

プログラム脳を鍛える数学パズル on python3

追記: とりま gist に置いてみた (2017/06/27 プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/16メディア: Kindle版この商品を含むブログ (7件) を見る お題はこれで、…

超久々に Python 弄ってた

AI 関連が実質 Python 一択で、数学系ライブラリもその表示も Python だとかなり揃ってたので、久々にやってみようとしてどハマりした記録。 何をしようとしたかというと、下記を Python で実装すればいいかなーとかとか漠然と考えてどハマりした。 プログラ…

Java8 の Stream が物足りない人たちへ

www.vavr.io 言ってみれば、Scala 並の Collection を Java で提供するライブラリ。 何がいいって、Tuple とか Either 型もあるから、クソッタレな null や throw とおさらばできる。 その昔 javaslang (java.lang があるなら俗語があってもいいよね)と名…

JUnit をもう少し管理者にみやすくしてみた

今日紹介するのはこれ。 Scala でザクッと作ってみた。 github.com 制作時間は調べ物 6h 、実装 4h か… まだまだ精進が足りない。 こいつは先日書いた、JavaDoc を XML で吐き出すメモ - 謎言語使いの徒然 と、JUnit の結果をマージして出力するツールだ。 …

引数パースライブラリの SCOPT(3.6.0) 使ってみた

紹介するのはこれ github.com 依存はこれだけ libraryDependencies ++= Seq( "com.github.scopt" %% "scopt" % "3.6.0" ) で、引数を格納するクラスをこんな風に用意して import java.io.File case class Config(javaDocXml: File, junitResultDir: File) パ…

sbt を jar にしてみた

つっても何の事は無い。 github.com これ突っ込んだだけ。 project/plugins.sbt に下記を追加して addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.4") build.sbt でざっくり指定するだけ。 name := "Example" version := "1.0-SNAPSHOT" scalaVersio…

JavaDoc を XML で吐き出すメモ

やりたい事が何かと言うと、外部プログラムにおいて、Java クラスのリスト取得と、そのドキュメントを引き抜きたいと考えた。 しかしながら、単純に javadoc のコマンドだけ実行すると、HTML ファイルが出てくる。 これは JavaDoc コマンドの仕様であり、基…

くたばれカーゴ・カルト・プログラミング

何? Wikipedia によると。 実際の目的には役に立たないコードやプログラム構造を儀式的に含めておくプログラミングのスタイルである。カーゴ・カルト・プログラミングは主に、プログラマが解決しようとしているバグか解決策のいずれかかまたは両方を理解し…

1 クラス 1 機能、1 メソッド 1 処理の徹底

どういう事? 名前の通り、クラス設計において、1つの機能は1クラスとして用意します。 また、1機能の実現もまた手続きがありますので、それら手続きも基本的にクラス、メソッドとします。 さらに、手続きの中でもループして書き換えるとか、なんらかの値…

オブジェクトの状態は作らない

ここで言う状態とは、クラス変数と振る舞いの状態を意味します。 例えば、クラス内の特定のフラグが true となったらメソッドの挙動が変わるなどです。 状態とは? Java で例えれば、Closable インターフェース実装クラスなんかがそれに当たります。 リソー…

設計はトップダウンとボトムアップ

設計のトップダウン コードが設計だとしても、全ての設計が不要になるわけではない。 もちろん、Excel 方眼紙に書いた誰も読まないコード書いた方が早い設計書ではない。 まずは機能設計までと名前空間(パッケージやディレクトリ構成)だ。 何の事はない、…

車輪の再発明は避ける

プログラマなら何度も聞いた筈。 でも、実際に車輪の再発明って結構やってるのでは? 車輪の再発明とは? 何のことはない、同じようなものを何回も書く事をいう。 例えば、AJAX API を作るという場合なら、XML/JSON でシリアライズ/デシリアライズの環境を整…

勉強し続ける

前のエントリ でも書いたが、勉強はスキルを上げる唯一の手段だ。 加えて言えば、勉強する気もなく古い技術ですべて解決しようとする人、とはコードを改善したいとも思わない人とは、僕は仲良くできないだろう(きっと一緒に仕事をしたら喧嘩になるか、そいつ…

プログラムを読みやすくするための個人的Tips

個人的に綺麗なコードを書くために心がけているもの。 数が多いので、効果があると個人的に思っているものだけ集めてる。 なぜ読みやすく書くのか 読みやすいことに興味がない人のコードで、本当に汚ければ遠慮なくけなすし、そのコードを保守したいとも触り…

Playframework2.5 で Slack3 弄ってみる

まずはアプリケーション仕様 今回は特に何も考えず、Evolution で突っ込んだ文字列を画面に表示するだけ。 ジンプルなことは良いことだ。 教科書はこれ PlaySlick - 2.5.x Playframework プロジェクト作成 いつものこと activator new play-scala を選択する…

Playframework2.5.x でプロジェクト分離してみた

サブプロジェクト自体は、Playframework2.3 から存在していて、当時はあまり使い道も思い浮かばなかったが、今では大分使いやすくなってたのでメモ。 完全独立した sbt プロジェクトを取り込む このケースでは、完全に独立した sbt モジュールを取り込みます…

プログラミングの経験と信仰

経験は全ての物事の元となるもので、とても重要なものだと思う。 でも、経験を『信仰』にした瞬間、それは害悪となる。 プログラマは誰しも経験した記憶があるだろう。 「それならコレでもできるよ」と長ったらしい作りをした人を。 かく言う私も、これをか…

パスワード用ハッシュ、jBCrypt を使ってみた

なんでそんなことになったかというと、Playframework の Crypto クラスがいつの間にか Deplicate になってたという事態。 これにより、色々変動があったのだが、「パスワードのハッシュに Crypto.sign 使うんじゃない」だそうです。 Misuse as a Password Ha…

SPAするほどでもない時に気軽に使う JavaScript framework, Vue と Knockout 比較

ちょっと鯖欲しかったので Activator new で作って試す。 nodejs で勉強するチャンスだったかもしれないが、時間もなかったのでとりあえず知ってるやつで。 とりあえず、読めるようにしておく。 build.sbt に libraryDependencies ++= Seq( jdbc, cache, ws,…

Playframework 2.5 で足りてなさそうなセキュリティヘッダ設定を追加する

セキュリティヘッダなんて、ヘッダに組み込むだけのものなので、ザクッと。 package filters import javax.inject.{Inject, Singleton} import akka.stream.Materializer import play.api.Configuration import play.api.mvc.{Filter, RequestHeader, Result…

Scala 関数型デザイン&プログラミング:Exercize3.16-3.23

Scala 関数型デザイン&プログラミング:Exercize3.2 - 3.13 - 謎言語使いの徒然 の続き。 Exercise 3.16 各要素に +1 したリストを返す関数を作れ。 なんか仕様的に map 関数に似てるなーと思った。 とりあえず フォイ def map[A, B](as: List[A], func: A =>…

Winows10 がクソ重い

症状的には定期的にHDアクセスが 100% に突入するというもの。 そういや前も食ったなと思い出して、対処した。 マシンを再セットアップしてからやってなかったなーと IPv6 をオフ OneDrive 同期を停止 毎回やらないと酷いことになるって最悪のエコシステムだ…

Scala 関数型デザイン&プログラミング:Exercize3.14-15

相変わらず教科書はこれ。 Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)作者: Paul Chiusano,Rúnar Bjarnason,株式会社クイープ出版社/メーカー: インプレス発売日: 2015/03/20メディア: 単行本…

Scala 関数型デザイン&プログラミング:Exercize3.2 - 3.13

前回 からの続き 教本はこれ Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)作者: Paul Chiusano,Rúnar Bjarnason,株式会社クイープ出版社/メーカー: インプレス発売日: 2015/03/20メディア: 単行…

Scala 関数型デザイン&プログラミング:Exercize3.1

続き サンプルコード package fpinscala.datastructures sealed trait List[+A] case object Nil extends List[scala.Nothing] case class Cons[+A](head: A, tail: List[A]) extends List[A] object List { def sum(ints: List[Int]): Int = ints match { c…

Scala 関数型デザイン&プログラミング:Exercize2.2 - 2.5

引き続き勉強がてら Exercise をやってみる。 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド作者: Paul Chiusano,Rúnar Bjarnason,株式会社クイープ出版社/メーカー: インプレス発売日: 2015/04/30メディア: Kindle版…

Scala 関数型デザイン&プログラミング:Exercize2.1

真面目にやろうかと思った。 書籍はこれ Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド作者: Paul Chiusano,Rúnar Bjarnason,株式会社クイープ出版社/メーカー: インプレス発売日: 2015/04/30メディア: Kindle版この…

投票が近づいて来たので、40代以下に言っておこうか

なんで皆の税率が上がって、将来の年金まで気にするようになるのか、その理由をざっくり説明する。 なんで老人向けの介護とか福祉がこの時期叫ばれるのか? まず、この時期になると声高に叫ばれることがある。それは高齢者福祉だ。 最近では少子化対策で児童…

WindowsでYeaomanしてみる

表題の通り。 環境は Winows10 …つってもあんま意味ないな。 まずは Node.js から。 といっても Windows はインストーラあるから楽勝だね。 v4.2.6 をインストール。面倒なので PATH もひいてもらう。 C:\test>node -v v4.2.6 次、Git for Windows 。 バージ…

Scala で解く「プログラマ脳を鍛える数学パズル」

病院行ったついでに待ち時間暇すぎて書店で見かけたやつ。 www.amazon.co.jp これの問2 1000 - 9999 の中で、「351 , 3 * 51 = 153」(計算結果が元の逆順になる)みたいな数字を見つけ出せ。 使っていいのは四則演算のみで、必ず1回は計算すること。 これ…

似非Ctrl+Fをこっそりアプデ

github.com 何やったのかというと、タグを任意に配置/デザインできるようになった。

JavaScript(CoffeeScript) で似非 Ctrl + F 作ってみた。

まじかと思ったんだけど、マジだったので驚いてる。 shertan.me ちょっと待て基本だろ常考。 こんなもん、Windows XP 初期の時代からデフォルトだぜ? Keyboard Shortcuts for Internet Explorer 6 記憶が確かなら、Windows 98 時代からあった気もする。 ま…

Play2.4 でネストしたJsonをバインドする

何で今更かというと、これつかえねーかなと思ったから。 最初は、Forms でのバインドをしようとしたのだけど、早速フォーラムが見つかりました。 キーワードは Play recursive form https://groups.google.com/forum/#!topic/play-framework/Ya1hPmR2QtY こ…

フォームヘルパーをタグ調整する(Play 2.4.x) with マルチセレクトチェックボックス

Playframework 2.4 において、フィールドコンストラクタの仕様も変わったので、対応したチェックボックスを作ってみる。 Custom Field Constructors これがなんなのかというと、input とかの helpers の外枠の事。 いつぞや Bootstrap 対応した フォームヘル…

Mac で ansible 基礎設定やってみた。

Ansible のことをちまちまやったので、その件メモ。 ネカフェでやってるんだけど、近くのネカフェは速度が遅すぎてこれ以上はちょっと厳しかった。 Install と言ってもこれだけ。 $ brew install ansible ちなみにバージョンは $ ansible --version ansible …

LL Ring 行ったメモ

LLRing memo 第一試合 Ruby vs Perl vs PHP vs JS Python はイベント衝突で不参加 Javascript ECHMA Script 2015 が発表、ECHMA 6 が名称変更で、正式公開。 言語仕様の追加が行われてる。 JavaScript の仕様が変わるとみんな地獄をみる。しかし、ALT JS な…

「AUひかり」で買ってきたルータを使うときの注意

まず、AUの課金の仕方がひどいと思った…とはいえ、建物がAU契約なのでほかの選択肢がなかなかなかったのだが、ともかくひどい。 無線LANを使うには別契約が必要(追加課金) 替えの性能いいルータをレンタルするなら追加課金 ルータすら契約上「貸与」で、も…

なんかもう紹介せざるを得なかったScala記事「バカ向け言語Scala」

まともにモジュール化設計もできていない保守不能糞コードの設計者を「エリート様」と皮肉って、「バカな私は、シンプルさを求めたScalaを使う」と言う記事。 センスに溢れて「いいぞーもっとやれー」と応援したくなってしまいました。 バカ向け言語 Scala -…

Java/Scala 比較。一定期間の曜日ごとの購買集計

単純なお題。 標準出力から、日数と、その日数に応じた日々の購買金額が入力されたとき、曜日ごとの集計額を計算しなさい。 ただし日数は 7 の倍数であることが保証され、曜日の先頭は日曜日である。 入力例: 14 日間を指定、各日付の購買数は、下記の通り…

Play2.4 の DI を弄ってみる

まず適当に Singleton アノテーションをくっつけて使用する。 package utils.modules import javax.inject._ /** * アクセスカウンター */ @Singleton class AccessCounter { @volatile private var price = 0 def add(p: Int) = price += p def get = price…

Playframework 2.4.x でセキュリティヘッダの設定など

まず前提として、Playframework にはフィルタという機能がある。 Playframework 2.3.x 以下の場合は、Global オブジェクトにミックスインする形式をとっていた。 ScalaHttpFilters だが、Playframework 2.4.x 以降は、DI も含めて形式が変更となり、root パ…

LoT LT行ってみた(追記)

IoT縛りの勉強会! IoTLT vol.6 - 資料一覧 - connpassiotlt.connpass.com みっけたのでリンク メモだけざっくり。 整理はしない。 キーワードだけ拾えればいいかな的な発想。 前段 IoT Letter というサイトがある。 IoT 関連書籍やイベント、記事ソリューシ…

Polymer1.0 の入門を始める

Polymer ってなんぞ? What is Polymer? - Polymer Custom elements extend the web 一言でビルトイン以外のカスタムタグを追加すると。 カスタムなイベントや、デフォルトのスタイルも含めてコンポーネントとして定義できるらしい。 面白いのは「フレームワ…

Playframework2.4.xのサブプロジェクトの扱い

完全に親子関係でしたねってだけ。 子のオブジェクトは親から参照できるけど、親のオブジェクトを子は参照できない。 同時に、子は横つながりを持たない。 まぁなんとなく想像通りな訳で、使い道的には、幾つかのプロジェクトで共有しておきたい機能をサブプ…

駄文

まずはじめに最近好きな言語を挙げるが、Scala / F# なんかが好きだ。 そのどれもに共通することを挙げよう。 静的型 型があれば、おかしなコードはコンパイルで弾ける。 規約の準拠チェックもツール作りが動的型よりは容易だ。 関数型 関数が引数や返り値に…

PlayFramework 2.4 でサブプロジェクトで一部URLを切り出してみる

教科書は下記 SBTSubProjects で、まずはプロジェクト root ディレクトリに下記を一気に作成 modules /rest_apis /controllers /conf そして、 modules/rest_apis/build.sbt を作成する。 ここに実は二つ罠があった。 公式では下記(20015/7/8 時点)が書か…

Play 2.4.x をいい加減調べてみる

色々変わったそうなので、まずはハイライトを見てみる。 https://www.playframework.com/documentation/2.4.x/Highlights24 DI サポート テストにおけるモックを容易にしたかった 軽量な組み込みPlayアプリケーションや、一つのJVM上で複数のPlayアプリケー…

AmazonEC2 上に、Redmine 2.6.5 + Backlogs (カスタム)を入れた

AMI 公開 AMI ID : ami-6465ca64 元ネタ AmazonEC2 上に、Redmine 2.6.5 を構築したメモ(AMI有) - 謎言語使いの徒然white-azalea.hatenablog.jp カスタムBacklogs patrickatamaniuk/redmine_backlogsgithub.com 本家が更新停止してるので、fork の中から最近…

Redmine2.6.5 に Backlogs を突っ込んだメモ

事のついでだし、RedmineBacklogs を S3 + Redmine2.6.5 に入れようとしたログ。 元ネタの AMI はこれ AmazonEC2 上に、Redmine 2.6.5 を構築したメモ(AMI有) - 謎言語使いの徒然white-azalea.hatenablog.jp まずは plugins ディレクトリで git clone git://…

アジャイルに使えそうなReminePlugin

見てて気になったものメモ。 フル機能は有償だけど、いろいろ良さげ Redmine Agile pluginwww.redminecrm.com 残念ながら開発がイマイチ息してなくて、有志が fork してる状態のものが下記 Redmine Backlogs :: Home