ほろ酔い開発日誌

有意義な技術的Tipsを共有出来たら嬉しいです。Ruby、Railsが好きです。Web開発全般(Rails多め、フロント、サーバー、インフラ)、データ分析、機械学習あたりの記事が中心になる予定です。

Reactで 開発開始まで

以前、Reactの勉強のために以下のようなデモを作ったのですが、Reactのスタートをコピペベースで出来るようにメモしておきます。 github.com ここではこちらを参考にセットアップしていきます。 qiita.com npmの用意 適当なディレクトリを用意します(今回は …

Java 配列部分型 ( ArrayStoreException )

普段、Javaはあまり使わないほうですがJavaの型について学んだことがあったのでメモします。(触れるのはJavaですが、型の問題としては一般に関わる話です。) BがAの部分型であるときにBの配列をAの配列の部分型にしてよいか ということに関してです。 前提…

Google Formで回答を受けたらSlackに通知する (Google Apps Script)

やったこと タイトル通り、Google Formで回答を受け付けたらそれをSlackに通知します。 大体の手順は以下のような感じ。 Google FormでFormの用意。また、回答をSpreadSheetに出すようにしておく。 Slackのincoming webhookの用意をする。 Google Apps Scrip…

Tensorflow run() vs eval() と InteractiveSession() vs Session()

はじめに Tensorflowを使う際にコードによって若干の違いが見られたのでその点を理解しておきたいと思います。 run() と eval() InteractiveSession() と Session() この2点に違いについて説明します。 run() vs eval() 例えば、以下のような簡単なMLPの実装…

RNNやWord2Vec関連のリンクの備忘録

RNN概要 LSTMについての説明が中心。 RNNのRがrecurrentの頭文字であることからも表されるように、RNNは同じネットワークを繰り返して前のネットワークで学習した結果の一部を後続のネットワークに渡すようなことをしています。それは前のネットワークの情報…

【Swift3】ニュースアプリ風の横スクロールメニューバーライブラリ3つの検討

ニュースアプリのメニューバーを実装したくなったので、ライブラリを検討してみました。 イメージとしてはGunosyのメニューのようにスライドしてジャンルを切り替えるようなものです。PageMenu、PagingMenuController、TabPageViewControllerの3つを比較して…

群知能(Swarm Intelligence)の実装 (Java) - PSO・ABC-

大学の課題で群知能(Swarm Intelligence)の実装が課題に出て、PSO(Particle Swarm Intelligence) と ABC(Artificial Bee Colony) のアルゴリズムを実装することになりました。 そこで、コードの紹介(github)と参考になったものを載せておきます。 群知能(ぐ…

MacでディープラーニングのためにGPUを使いたかった話

ディープラーニングをするときは処理速度を上げるためにGPUを使いたいです。GPUを使わないとなれば、大きなデータセットは扱いたくはないです。この前、CPUでやろうとして3日くらいかかった(途中で諦めた笑)やつもGPUだったらどれだけ楽になったことか。 …

Kaggle 「Allstate Claims Severity」を終えての振り返りと整理

約1ヶ月程の期間ちょこちょこ時間を使って、データ分析・データモデリングのコンペのプラットフォームであるKaggleで Allstate Claims Severityというコンペに挑戦しました。 www.kaggle.com このようなコンペははじめてで学びだらけでした。今回の復習をし…

XGBoostをPythonで動かす on Mac

XGBoostは、Gradient Boostingのframeworkを提供してくれるライブラリです。Gradient Boostingは決定木のような弱学習機をアンサンブルする形態のモデルを生み出します。 高い精度が期待出来るためコンペでもよく登場するライブラリです。Deep Leaningより気…

MacBookを購入後に最初に行う環境構築 (エンジニア向け)

新しくMacBookを購入しました。初期設定を色々としないといけなかったので備忘録も兼ねて設定手順を書きます。 こういう設定は正解もないですし、あまり教わる機会もないので参考になればと思います。 初心者エンジニアの方でこれを真似してご自身のスタイル…

大学生がプログラミングをはじめる方法

今回はいつも書くような技術のお話とはちょっと違うことを書いてみたいと思います。テーマは「大学生がプログラミングをはじめる方法」です。プログラミングに興味があるけど、はじめの一歩が踏み出せない。そんな方に少しでも役立つと幸いです。

Rails サイト内検索機能を作った (AND検索にも対応)

サイトの記事数が増えてきてサイト内検索が欲しくなりました。というわけで検索機能を実装するためのgemのransackで検索機能を実装することにしました。 github.com 今回やろうと思っているのは記事のタイトル検索が出来ればいいなーと思っています。あと検…

Rails使うときほとんど正規化考えないよね

正規化とはRDBにおいてデータを適切に管理するための手順です。 正規化 まずはさらっと正規化を考えます。 正規化は以下の手順で行っていきます。 第一正規化 第二正規化 第三正規化 ボイスコッド正規化 第四正規化 第五正規化 第一正規化 同一の内容の行が…

Imagemagickをupdateしたらrmagickに怒られたから直した

imagemagickの脆弱性が見つかってわちゃわちゃしてますね。 ImageMagick の脆弱性 (CVE-2016-3714) に関する注意喚起 rubyでいうとrmagickとか普通に使うので古いimagemagickに依存してたらよくないですね。というわけでimagemagickをupdateしてみた。 そし…

Pythonの環境構築 Anaconda 蛇をアナコンダに強化した

これまでpythonをそこまでたくさん使わなかったのでそんな気にしなかったですけど、そろそろちゃんと使うようになったのでちゃんとpythonを使いやすくしとこうと思います。 なかなか良さ気な記事があったのでこれを参考にしました。 qiita.com anacondaは、p…

GooglebotのUA変更の影響を受けた1%に見事に含まれたお話

事の発端は、自分のサイトを検索にかけたときにURLの下に「このサイトはスマートフォン対応されていません」のような文言があることに気づいたことです。 このサイトではPCとスマホはViewを切り分けているのでばっちり対応していたので「えっ?」って感じで…

ELBとEC2-2台で冗長構造を作ってみた Nginxのconfを紹介

前回capistranoで2台のproductionサーバーにdeployした続きの記事です。 seishin55.hatenablog.com メモ書き程度に書いておきます。 とりあえず、ELBを用意しました。ELBでEC2の2台を繋げてあげて出来るかなと思ったのですが挙動が変でした。(heathチェック…

Capistranoで複数productionサーバーに対して別々にdeployする

複数のアプリケーションサーバーを用意して負荷分散をやろうと思いました。それで、それぞれに対して別々にdeployしたいなーと思いました。 今回やるのはAWS上のEC2の2台に対してそれぞれ別々にdeployします。 ここでやるのは、productionとstagingをそれぞ…

GithubのPrivateレポジトリを学生はタダで無限に作れる!

さっき、Slackでこんな記事が共有されました。 github.com えっっっっっっ!! 月$7でprivateアカウント無限に使えるのか!これは嬉しいニュース! ちなみにorganizationは1ユーザーあたりで最初の5ユーザーが月$25でその後の人は月$9になるよう。(こちらは…

Webサイトの画像を適切に表示させるために

Webサイトを作成する上で、サムネイル画像の見栄えが大きく良し悪しに関わることは言うまでもないと思います。また、画像のサイズが大きすぎてサイトの表示速度が遅くなるなどの問題も起きるので画像の扱いはポイントになってくるわけです。 今回は特にサム…

Rails RedisでPVランキングを作ってみた

記事のPV数ランキングを実装したかったので、Redisを利用して実装してみたいと思います。 ちなみに、Redisを使うに至った経緯は、 MySQLにPVテーブルを持たせると負荷上がりそうだから避けたい。 とはいっても簡単にランキング機能を実装したい。 じゃあ、Go…

Ruby HTMLとXMLをスクレイピング

HTMLとXMLをRubyのgem「Mechanize」を使ってスクレイピングを行う手法を簡単にまとめておきます。 まず、 gem 'mechanize' これでgemの準備done。 HTMLスクレイピング agent = Mechanize.new page = agent.get("http://hoge.com") # スクレイピングしたいペ…

Ruby URL文字列を扱う方法

最近スクレイピングでURLを取得してきたのですが、絶対パスになっていたり相対パスになっていたり統一感がなくて困ったのでちょっとURLを変更してみようと思います。 相対パスを絶対パスに変える news_path = "http://hoge.com/news/" entry_path = "/entry/…