Go way, Go my way! Golang導入してみる。

「Golangは癒し!」らしいです。
そこまで言われたらやるっきゃない。ってことでとりあえず導入してみました。
vagrant上にCentOS立てて以下のコマンドで導入できました。

環境構築

$ sudo wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz
$ export PATH=$PATH:/usr/local/go/bin

確認

$ go version
go version go1.5.1 linux/amd64

(´Д` )
まさかのダウンロードして、展開して環境Path通すだけとは。
癒したる所以を若干感じる(´Д` )

ハロー世界書く

package main

import "fmt"

func main(){
        var hello string = "Hello,world"
        String(hello)
}

func String(s string){
        fmt.Println(s)
}

まだ癒し要素を感じることはできていない。
とりあえず、golangマスコットキャラクターのゴーファ君が癒されるということだけはわかった。

一人ハッカソンプロジェクト-2日目

一人ハッカソンプロジェクト2日目。
世の中にはクリスマスイブにみんなで集まってハッカソンをするイベントもあるそうな。
「悲しいことするな〜」と思いましたが、クリスマス前に一人でハッカソンをするのも十分悲しいと思った今日この頃です。

とりあえずリポジトリ
[blogcard url=”https://github.com/gaku3601/Service”]
readmeは最後に修正するよ。多分。

本日の成果
・topページをなんとなく作成しました。
・ログイン後のホームをワイヤーフレームレベルで作成しました。
・プロジェクト登録formをなんとなく作成しました。[途中]
・その他もろもろ
[トップページ]
むだい
[ホームページ]
むだい3
[プロジェクト登録ページ]
むだい2
画像登録の際、ドラッグ&ドロップで複数枚登録できたらいいな〜と思いつつ、なかなかできず時間オーバー。

本日の作業時間:3時間33分
残り時間:19時間半
スクリーンショット 2015-11-26 23.47.00
Viewに時間がかかりすぎている。レスポンシブ対応を考えるとなかなか作業が進まないけどしゃーないな。
bootstrapにfileuploadの拡張できるやつがなかなか良さげだったので使おうと思ったら盛大にはまった感じです。土日で一気に完成させる(´Д` )

一人ハッカソンプロジェクト-1日目

プライベートプログラミングにメリハリを付けるため、一人でハッカソンしてみます。
猶予時間は8時間*3日=24時間。
時間計測は実装時間を可視化できる「wakatime」を使います。

今回のリポジトリ
[blogcard url=”https://github.com/gaku3601/Service”]
readmeがそのままだけど気にしない。

コンセプト
Webサービスのスタートアップサービス。

本日実装したもの
・GitHubにリポジトリ作成
・ユーザ認証[OpenID認証含む]
・ログインフォーム
・topページ作成[途中]
スクリーンショット 2015-11-25 23.26.44
上下中央寄せ難しすぎワロタ。CSSもっと勉強しやな。。。

本日の作業時間
1時間12分
スクリーンショット 2015-11-25 23.39.06

スタートアッププロジェクト作ってるから、初期導入は一瞬で完成できる。
残り23時間。頭の中にぼやっとあるだけだから、そのうちツマヅクだろう。

高速化のためにBulkInsertを試す

Gakuです。
業務システムのデータが100万行を超えだして速度問題がいろいろ出てきたので、抜本的な改革を入れるべくいろいろ帰宅して勉強してた。
リファクタリングしてぇ~な~って思ってて、テストコードしこしこ書いてたりしたんだけど、テストデータを入れるのもすごく時間がかかる。
いろいろ調べててBulkInsertってのを見つけたので試してみた。

1件もミスなくデータが格納できる状態であれば使用することが可能。
一応コードもGitHubに公開してみた。
[blogcard url=”https://github.com/gaku3601/BulkInsertTest/blob/master/BulkInsertTestProject/Program.cs”]

で、6万件のデータを格納した際の速度はこうなった。
bulk

100倍近い速度が出てる。やばい。
が、実運用しているシステムで何か起こったときデバッグしずらすぎるのでそこでは使えないな~っと思いつつ、強力すぎるのでテストコード書くときには積極的に使っていきたいと思います。
まだまだ手を入れれるところがありすぎるので楽しいと思っている今日この頃(´・ω・`)

Ruby on Railsの認証パッケージDeviseを日本語化する

Ruby on Railsの認証パッケージであるDeviseを日本語化するのに毎回いろいろ面倒くさいので、GitHub上に公開しました。
[blogcard url=”https://github.com/gaku3601/The-Japanese-translation-of-Devise-and-Activerecord”]

使い方

GitHub上にも記述しましたが、こちらにも記述しておきます。

1.config/localesへdevise.ja.ymlとja.ymlをぶち込みます。
2.config/apprication.rbへ以下を追記します。
  config.i18n.default_locale = :ja

適用すると以下のような感じで認証周りが日本語化されます。
スクリーンショット 2015-11-09 22.58.44

開発について

まだまだ翻訳されていない部分が多々あるかと思います。
見つけ次第翻訳しますが、プルリクで助けて頂けるとありがたいです。

おわりに

連日Enterを本気で叩き続けて右手薬指が痛いです(´Д` )

ちょっとずつ知名度はあがってきたのかな

去年からrailsを続けてきて早2年。
これまで苦しくも長い道を歩んできました。
このブログはrailsをはじめてから2代目のブログとなるのですが、googleでrails記事を探していると初代ブログで書いていた記事が見知らぬ誰かにQiita上でまとめられていました。
[blogcard url=”http://qiita.com/shizuma/items/a52fd0ef5b60d61fa330″]
以下が僕の記事
[blogcard url=”http://gaku3601.hatenablog.com/entry/2014/10/04/185947″]

こういうのすごい嬉しいですね。
なんかちょっとでも世界に貢献できてるのかなってあたりが。

ニコ生とかで放送していると、
「gakuさんの放送見てプログラミング楽しそうだからはじめました!」
とか言ってもらえるとなんかやりがいを感じます。

自作サービスでお金を稼ぐのは至極難しい現実を突きつけられて、かなりテンションが下がっていましたが、何か世界に貢献できることを考えてまた一から頑張っていきたいと思います。

P.S
自分で去年記事をまとめたというのに、また同じことを検索している悲しい現実。。。

StartUpRubyonRails ver1.0.0

概要

RoRアプリケーションを作成する上で、絶対に導入する部分が結構あるのでその部分を予め作っておけば開発が楽になると考え製作しました。
主にver1.0.0までは認証周りをメインで作成しております。
gaku3601/StartUpRuby-on-Rails

構成

Ruby 2.1.5
Rails 4.1.8
PostgreSQL 9.4.4

格納gem

・slim
https://github.com/slim-template/slim-rails
・google material design lite
https://github.com/cllns/material_design_lite-rails
・sweet-alert
https://github.com/Najtmare/sweet-alert-rails
・devise,omniauth(※リンクは設定手順)
http://qiita.com/himinato/items/ecb5d45d6875696dbbed

カスタマイズ手順

google material design lite

google material design liteのテーマ変えたい!といった場合は以下のように設定します。
1.cssテーマをダウンロード後、vendor/assets/stylesheets/MDLthemeへぶち込みます。
2.application.cssを以下のように編集することでテーマ変更することが出来ます。

 * file per style scope.
 *
 *= require material
 *= require MDLtheme/ぶち込んだファイル名
 *= require sweet-alert
 *= require_tree .
 *= require_self
 */

ユーザ登録周りのカスタマイズ

ユーザ登録はtwitter,facebookのOpenID認証を使用しております。
ユーザ登録と同時にユーザプロフィールテーブルも作成するようになっております。
プロフィールテーブルへ投入する初期データを変更したい場合は以下ファイルを編集して下さい。
app/models/user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable,:omniauthable,:registerable,
         :recoverable,:rememberable,:trackable,:validatable

  has_one :profile

  def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
    user = User.where(:provider => auth.provider, :uid => auth.uid).first
    unless user
      user = User.create(name:     auth.extra.raw_info.name,
                         provider: auth.provider,
                         uid:      auth.uid,
                         email:    auth.info.email,
                         password: Devise.friendly_token[0,20]
                        )
      #ここプロフィール初期投入変更点
      user.create_profile(
        screenname: auth.extra.raw_info.name
      )
    end
    user
  end

  def self.find_for_twitter_oauth(auth, signed_in_resource=nil)
    user = User.where(:provider => auth.provider, :uid => auth.uid).first
    unless user
      user = User.create(name:     auth.info.nickname,
                         provider: auth.provider,
                         uid:      auth.uid,
                         email:    User.create_unique_email,
                         password: Devise.friendly_token[0,20]
                        )
      #ここプロフィール初期投入変更点
      user.create_profile(
        screenname: auth.info.nickname
      )
    end
    user
  end

  def self.create_unique_string
    SecureRandom.uuid
  end

  def self.create_unique_email
    User.create_unique_string + "@example.com"
  end
end

おわりに

使い方などの補足をgithubのwikiにも掲載しております。
gaku3601/StartUpRuby-on-Rails

多分これで4日分の開発は浮いてくるはず!!!!