読者です 読者をやめる 読者になる 読者になる

のぶLab.

流しのソフトウェアエンジニアの雑記帳. Android, Scala, Clojure, Ruby on Railsなど

DroidKaigi 2017に参加しました [Day2]

DroidKaigi 2017の2日目(3/10)に(途中から)参加しました。 (1日目の記録はこちら) ここでは私が聴いた講演のメモやら感想やらを載せます。 位置情報を正確にトラッキングする技術 ※ 資料が公開されたらリンク貼ります。 位置情報トラッキングするノウハウの…

DroidKaigi 2017に参加しました [Day1]

DroidKaigi 2017の1日目(3/9)に参加しました。 ここでは私が聴いた講演のメモやら感想やらを載せます。 各講演の記録 How to Apply DDD to Android Application Development y-anz-m.blogspot.jp DDDは難しいけど怖くない 行き当たりばったりの設計に、とり…

AndroidでJavaslangを動かす

Javaslangとは www.javaslang.io Javaの関数型Libraryです。 Option, Future, EitherやCurrying, Compositionなど関数型プログラミングを実現するAPIをいくつか揃えています。 詳細は以下のページで http://www.javaslang.io/javaslang-docs/ 前提 Javaslang…

Android + Kotlinなプロジェクトでjava.lang.NoSuchMethodError

com.android.tools.build:gradle:2.2.0-alpha1とKotlinを使用する場合、dependenciesの記述順によってはerrorになるみたいです。 stackoverflow.com NG dependencies { classpath 'com.android.tools.build:gradle:2.2.0-alpha1' classpath 'org.jetbrains.k…

KituraでサーバサイドSwift

IBMのサーバサイドフレームワークKituraを使ってSwift製のWebアプリケーションを作ってみます 環境 Mac OSX El Capitan 10.11.4 Swift 2.2 XCode 7.3 Swiftのインストール 自分の環境のインストーラをダウンロードしてインストールします。 Swift.org - Down…

Scalajs + React + Electronでhello world

scala, sbt未インストール状態からScalaJS, Reactを使ってElectronでHello worldするまで 環境はMacOS X Yosemite ScalaJSとは AltJS Scalaで書いたコードがJSに変換される http://www.scala-js.org/doc/tutorial.html sbtとは Scala向けのpackage managerみ…

Neo4jで一意なpropertyを持つNodeを作る

アプリケーション内でuserのmailアドレスなど、あるLabelを持つnodeのpropertyに一意制約をつけるにはConstraintsを使う http://neo4j.com/docs/stable/query-constraints.html Cypherはこのような感じ CREATE CONSTRAINT ON (user:User) ASSERT user.email …

Leiningenで作成したアプリケーションをHerokuにDeployするとエラー

Leiningenで作成したRingを使ったアプリケーションをHerokuにDeployした際に、 このようなエラーが出てアプリケーションが起動しなくなってしまった場合の対処法です。 Exception in thread "main" java.io.FileNotFoundException: Could not locate leining…

ActiveRecordでBigqueryを使ってみる

目的 メインDB + Bigqueryの複数DBなRailsアプリケーションでActiveRecordからBigqueryにあるテーブルを参照するまでの手順。 前提として、Bigquery上のtable, recordの作成などは行っていることとします。 ここではローカル環境や外部サーバ上のRailsアプリ…

Papeclipで画像ファイル向け汎用メソッドを定義するサンプル[Ruby]

paperclipでは画像ファイル以外も添付できる。 気をつけないと画像ファイル以外のObjectからも呼ばれる危険性がある。 画像ファイルに限定したUtilityメソッドを安全に定義するための例として以下の様な実装を考えてみた。 module ImageFileDecorator extend…

Luminus, Reagentな環境でSpecljを導入

ClojureでRSpecのような読みやすいテストを書くためのフレームワークとしてSpecljというものがあります。 ここではprofileにcljsを選択して作成したLuminus projectでClojure, ClojureScriptのspecを実行できるようにしていきます。 前提 前述したLuminus pr…

LuminusでJSON APIを作る

ClojureのWebアプリケーションフレームワークLuminusでJSON APIを作る際にRoutingで少し躓いたので手順をメモ src/APP_NAME/routes/home.clj これだけではダメ (defn ping-json [] ; <- 追加 (json {:response "PONG!!!"})) ; <- 追加 (defroutes home-route…

Rubyでも音楽をcoding

Clojureで音楽をコーディングする記事をいくつか書いてきました。 Overtoneを使ってClojureで音楽をcoding - のぶLab. EmacsでOvertone演奏環境構築 - のぶLab. OvertoneをEmacsで演奏してみる - のぶLab. 実はSonic Piというものを使えばRubyでも音楽をコー…

Overtoneで音楽をコーディング時の指針メモ

Overtoneで音楽を鳴らして遊んでいるときにコーディングに関して感じたことのメモ Overtoneのチュートリアルにあるswingerメソッドはat関数を何度も書いていて冗長 (defn swinger [beat] (at (metro beat) (o-hat)) (at (metro (inc beat)) (c-hat)) (at (me…

OvertoneをEmacsで演奏してみる

EmacsでOvertoneの演奏環境構築は以下の記事を参照ください EmacsでOvertone演奏環境構築 - のぶLab. この記事ではOvertoneのGithub WikiにあるSwingのチュートリアルをEmacs Live上でやってみます。 また、前回の記事で作成したClojureプロジェクトを引き続…

EmacsでOvertone演奏環境構築

OvertoneをEmacsで快適に演奏できるEmacs Liveというものがあるようなので、環境構築をしてみました 環境 Mac OS X Yosemite Overtoneを使えるようにするまでは以下の手順を参考にしてください。 Overtoneを使ってClojureで音楽をcoding - のぶLab. Emacs v2…

Overtoneを使ってClojureで音楽をcoding

Overtoneとは overtone/overtone overtone/overtone · GitHub プログラミング言語Clojureを使って音楽をコーディングするプラットフォームです このOvertoneを使って活動しているアーティストもいるようです (Meta-eXやRepl Electricなど) Overtoneを使っ…

ClojureScriptでNodeJSアプリの作成

ClojureScriptで書かれたNode.js + React + Restify + MongoDBなフルスタックwebアプリ構築メモ ClojureScriptとは Clojure同等の記述からJavaScriptへ変換できる言語です clojure/clojurescript · GitHub ClojureScript環境構築 ClojureScriptを使う際はlei…

scopeでmodelにDBアクセス責務を移譲

RailsではModel.where()を使っていろいろな場所で同条件のクエリを発行することが可能だが、 修正が必要になった際に複数箇所修正が必要になったり、DRYの理念に則っていない。 これらをうまく解消するために、scopeという機能を使ってクエリ発行の責務をmod…

Fat Model解消のアイディア

肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳) | TechRacho http://techracho.bpsinc.jp/hachi8833/2013_11_19/14738 ※ concernにmodelの機能を移しても本質的には何も変わっていない. どこに何があるかわかりにくく見通しが悪い状態…

HerokuからAWS RDSを使えるようにする

HerokuでAWS RDSを使う際の方法が、これまでいろんなところで紹介されていた方法と変わっているっぽい?ので簡単にメモ。 基本的にここの流れに沿って作業する RDSのインスタンスを作成 この辺とか参考にしました これからRDS始める人必見!(①RDSのインスタ…

zepto-railsでlink_to :method => :deleteが効かない

Railsでzeptoを使おうとして断念した記録 背景 jquery likeで軽量なzeptoを使ってRailsアプリを作成したが、 <% link_to "hoge", hoge_path, :method => :delete %> が効かなくてハマってしまった。 原因 "jquery-ujs"に相当するものがないためらしい 代替探…

SublimeからAtomへ1週間変更してみた

エディターをSublimeからAtomに変更し、開発業務を1週間やってみて感じたこと Atom こちらからDLすることができます A hackable text editor for the 21st Century Atom Atomを使った感想 良いところ Git関連のpluginが充実していて便利。 詳細にgit log --g…

Railsで1:Nのテーブルを扱う

Gemの導入 Gemfileに以下を追加してnested form gem を導入 gem"nested_form"bundle install フォーム要素を動的に追加するためのプラグインを追加 application.jsに以下を追加 //= require jquery_nested_form 使ってみる view <%= nested_form_for @projec…

AmazonがKindle2周年セール!

Kindleストア 2周年記念セール 対象のKindle書籍が40%OFFで買えるようです!Code Completeやリーンスタートアップなどエンジニアによく読まれている書籍も対象となっているようなので、 いつか買おうと思っていた方はこの機会に購入してみてはいかがでしょう…

R言語環境構築 for Mac

インストーラをDLしてインストールR言語 http://cran.r-project.org/bin/macosx/ RStudio (統合開発環境) http://www.rstudio.com/products/rstudio/download/

Gravatarでプロフィール自動設定

いろいろなWebサービスにアカウントを作る際、 アバターの登録が面倒でデフォルトのままになってしまうことがよくあります。Gravatarにメールアドレスとアバターを設定しておけば、 諸々のWebサービス(Slack, Github, Bitbucketなどなど)のアカウントに自…

日付・時刻の操作

現在時刻取得 DateTime.now 日時指定 DateTime.new(year, month, day, hour, min) パラメータ取得 now = DateTime.now now.year now.month now.day now.hour now.min 加算した値を返却 now = DateTime.now now >> 1 # 1ヶ月後 now + 1 # 1日後# 大小比較now …

RailsでBootstrap Materialを導入する

BootstrapをベースにMaterialデザインなUIを実装できるBootstrap MaterialをRailsに導入してみました Gemfileの編集 Gemfileに以下を追加します gem 'bootstrap3-rails' gem 'bootstrap-material-design' Install bundle install application.jsの編集 "app/…

MacにHomebrewでMariaDBをインストール

MariaDBをインストール $ brew install mariadbその後、以下を実行 $ unset TMPDIR $ mysql_install_db MariaDBを起動 cd /usr/local/Cellar/mariadb/10.0.13 ; /usr/local/Cellar/mariadb/10.0.13/bin/mysqld_safe --datadir=/usr/local/var/mysql別窓を開…

Template EngineをERBからSlimに移行する方法

ERBの記述が面倒なのでもっとシンプルなものはないかと探してみると、Slimが結構良さそう 特に"%"をたくさん打たずに済むのはうれしい Gemfileの編集 Gemfileに以下を追加する gem "slim-rails" gem 'slim'そして $ bundle installとりあえずこれでOK erbフ…

Macでtreeコマンドを使えるようにする

Mac

Homebrewでさくっとインストールできるようです $brew install treeたとえばRailsアプリケーションをtreeで表示した場合 $rails new hanson $tree hanson hanson/ ├── Gemfile ├── Gemfile.lock ├── README.rdoc ├── Rakefile ├── app │ ├── assets │ │ ├── …

エミュレータでAndroid Wearを動かしてみる

0. 準備 Android StudioのVer0.8.0をインストール http://developer.android.com/sdk/installing/studio.html#download Android StudioをVer0.8.1にアップグレード Android Studioを起動して "Android Studio" -> "Check for updates..."からアップデートで…

YeomanでMEAN(MongoDB, Express, Angular.js, Node.js)アプリケーションを作る

こちらで紹介されている手順を参考に、 Yeomanを使ってMongoDB, Express, Angulaar.js, Node.jsで構成されたWebアプリケーションを立ち上げます。 前提 Yeomanはインストール済みの状態とします。 ちなみに私はBoxenを使ってインストールを行いました。 http…

Yeomanを使ってAngularJSアプリケーションの作成

最近Yeomanが私の周囲でアツいようなので、試してみました。今回はBoxenで必要なものをインストールして Angular.jsを使用したアプリケーションのひな形作成まで。 Boxenで必要なものをインストール yo, grunt, bowerをインストールします。 manifest.ppに以…

GOFデザインパターンをPythonで - State

こちらの写経です。 State 状態をクラスで表現するパターン。 状態によって振る舞いが変更される場合に効果的。 ソースコード GoF design pattern - State

GOFデザインパターンをPythonで - Iterator

こちらの写経です。 Iterator 要素の集まりをもつオブジェクトの各要素にアクセスする方法を提供する。 各要素へのアクセス方法はオブジェクトの内部仕様に依存しない。 ソースコード GoF design pattern with Python - Iterator

GOFデザインパターンをPythonで - Observer

こちらの写経です。 Observer あるオブジェクトが状態変化したとき、自動的に変更を観察者に通知する仕組みです。 ここではDataクラスのセッターでnotify()メソッドを呼び出すことで、状態変化時に通知を行います。 ソースコード GoF design pattern - Obser…

GOFデザインパターンをPythonで - Factory Method

こちらの写経です。 Factory Method インスタンスの生成を直接行わず、それを担うメソッドに任せる。 これによって生成するインスタンスを柔軟に変更することができる。 ソースコード gist8768467

GOFデザインパターンをPythonで - Singleton

今回はこちらを参考にしました Singleton 唯一のインスタンスであることが保証されたクラス。 グローバル変数問題やテスト難化などがのため使用には要注意。 ソースコード GoF design pattern - Singleton.py

GOFデザインパターンをPythonで - Mediator

こちらの写経です。 Mediator オブジェクト間で調整が必要な場合の取りまとめを行う。 オブジェクト同士がお互いを参照しあうことがないようにして、低結合を保つ。 ソースコード GoF design pattern - Mediator

GOFデザインパターンをPythonで - Facade

こちらの写経です。 Facade 複数のクラスやメソッドを呼び出す場合、クライアントが呼び出し順などを意識する必要のないよう、一連の処理をまとめて、一つのインターフェイスで提供する。ここでは各TCクラスのメソッド呼び出しをTestRunnerのrunAll()でひと…

GOFデザインパターンをPythonで - Decorator

こちらの写経です。 Decorator あるクラスに機能を追加したい場合、DecoratorはDecorateeを引数にとるなどしてインターフェイスを同一視して機能拡張が可能。 ソースコード GoF design pattern - Decorator 参考 12. Decorator パターン | TECHSCORE(テック…

GOFデザインパターンをPythonで - Strategy

こちらの写経です。 Strategy 状況によってアルゴリズムを変更する必要がある場合に有効。 if分の分岐内にアルゴリズムをかき分ける必要がなくなる。各アルゴリズムをカプセル化しアルゴリズムを呼び出すインターフェイスのみ提供する。 クライアントはその…

GOFデザインパターンをPythonで - Adapter

こちらの写経です。 Adapter あるクラスのインターフェイスをクライアントの要求するインターフェイスへ変換する。ここではAdapterクラスを介してDog、Cat、Human、Carクラス内のメソッドをmake_noise()として呼び出す。 ソースコード GoF design pattern wi…

GOFデザインパターンをPythonで - Builder

こちらの写経です。 Builder 具体的な作成物を作成過程に依存しないものにすることで、同じ作成過程で異なるモノを作成することが可能。ここではDirectorクラスはAbstract ClassであるBuilderクラスのメソッド呼び出す。 具体的に作成するモノについてはBuil…

GOFデザインパターンをPythonで - Template Method

こちらの写経です。 Tmeplate Method アルゴリズムのひな形(Skeleton)となるクラスを作成、具体的な処理はサブクラスの定義に任せる。ここではSkeletonクラスではなくSkeletonメソッドを用意し、 make_template()でSkeletonに任意の関数オブジェクト(ここで…

iOSのMVCパターンにおけるViewControllerの役割について

iOSのViewControllerの役割がよくわからないので少し調べました。 結局まだよくわかっていないのですが、以下のように書くとうまくいきそうな気がしました。 View -> XIB, UIViewのサブクラス Controller -> ViewController Model -> Model用のクラス iOSのM…

Vagrant+ChefでDjangoをインストール

VagrantとChefを使ってDjangoをインストールします。opscodeで公開されているPythonのcookbookを使ってインストールが可能です。 https://github.com/poise/python こちらのcookbookではPythonと一緒にpipやvirtualenvもインストールしてくれます。 Djangoの…

GOFデザインパターンをPythonで

参考 Pythonでデザインパターン - モジログ http://mojix.org/2012/08/10/python-patternsGOFデザインパターンがPythonで書かれています 一通り写経して身につけたいですね 今年の目標