A Tour of Go 1日目
Hello World!
package main import "fmt" func main(){ fmt.Println("Hello, 世界!") }
Packages
- Goのプログラムは、パッケージで構成される。
プログラムはmainパッケージから開始される。 - 以下は擬似乱数を返す。
rand.Intn
は同じ数を返す
package main import ( "fmt" "math/rand" ) func main(){ fmt.Println("My favorite number is", rand.Intn(4332)) }
Function
- 関数は、0個以上の引数をとることができる
- 例は
add関数
はint型
の2つのパラメータをとる
変数名の後ろに型名を書くことを注意
package main import "fmt" func add(x , y int) int { return x / y } func main(){ fmt.Println(add(42, 13)) }
Multiple results
swap関数
は2つのstringを返す
package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main(){ a, b := swap("hello", "world") fmt.Println(a, b) }
Ruby on Railsでログインを実装した!(Devise未使用)
以前、Deviseを使ったログイン方法を書きましたが、今回は全く使わない方法を書きます。 ちなみに、Deviseを使った方法は簡単ですがいらない機能が出てしまうので結構めんどくさいですw
やり方
- まず下記RubyGemを追加します。
gem 'omniauth' gem 'omniauth-twitter'
Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, `twitter_token`, `twitter_token_secret` end
- ログインのために、Userモデルを作成してください。
rails g model user provider:string uid:string user_name:string
ここのprovider
では、Twitterやfacebookなどの連携先を示しています。
uid
はその連携先の各個人のIDです。ちなみに、このIDでユーザを検索することができます。
- Userモデルを記述していきます。
/app/models/user.rb class User < ApplicationRecord def self.find_or_create_from_auth(auth) provider = auth[:provider] uid = auth[:uid] user_name = auth[:info][:user_name] self.find_or_create_by(provider: provider, uid: uid) do |user| user.user_name = user_name end end end
- ログイン用のコントローラーを作成します。
rails g controller sessions
- そして、コントローラーないを記述します。
class SessionsController < ApplicationController def create user = User.find_or_create_from_auth(request.env['omniauth.auth']) session[:user_id] = user.id flash[:notice] = "ユーザー認証が完了しました。" redirect_to root_path end def destroy reset_session flash[:notice] = "ログアウトしました。" redirect_to root_path end end
最後にヘルパーメソッドと、ルーティングを編集し完成です!
class ApplicationController < ActionController::Base protect_from_forgery with: :exception helper_method :current_user, :logged_in? private def current_user return unless session[:user_id] @current_user ||= User.find(session[:user_id]) end def logged_in? !!session[:user_id] end def authenticate return if logged_in? redirect_to root_path, alert: "ログインしてください" end end
get '/auth/:provider/callback', to: 'sessions#create' get '/logout', to: 'sessions#destroy'
久しぶりすぎて全然覚えてなかった・・・
参考
Vimrcを公開してみた
gistに置いておくのもいいんだけど、あとでみるのがめんどくさいので
ブログに置いてみようと思います。
PHP×Docker(開発環境)
昨日書いた通り勉強を始めています。
久しぶりに他の言語をやるのでワクワクしてしています。
開発環境ですが、Dockerを使いました。
まあ、Rubyから使ってるのでこっちの方が楽かと・・・
目次
使用したもの
やり方
Docker導入等は省略します
PHPなので
php7-apache
を使っていこうと思います。 コンテナをPHP+Apacheでもいいですが、勉強するだけなので同一コンテナの運用で構わないかと思います。
DockerHub次に学習用のディレクトリを用意しましょう。今回は
php_study
と名前ををつけました。php_study
の中にDockerfile
を作成します。そして中身は以下の通りです。
FROM php:7.2.10-apache RUN apt-get update -qq && apt-get install -y build-essential libpq-dev ENV TZ Asia/Tokyo RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV LANG C.UTF-8 WORKDIR /var/www/html COPY /html /var/www/html
そのあとにhtmlディレクトリを作成します。そしてその中にindex.php
を作成します。
中身は以下の通りです。
<?php phpinfo();
Dockerを起動して、http://0.0.0.0:80
を開くと以下のページが出ると思います。
Dockerの起動について
起動は毎回コマンドを打ってもいいですが、シェルやdocker-composeでまとめると便利です。
自分はsetup.sh
というシェルファイルを作成しました。
docker build -t php7-apache . && docker run --rm -d -p 80:80 php7-apache
まとめ
いかかですか? なんとなくhostを汚したくないなーと思って、Dockerでやりましたが 結構覚えることが多かったりするのでhostにphp+Apacheを入れてもいいのかなと思いました。
Ruby on RailsのERBをHamlに変更するやりかた。
はじめに
メモ用で書いてみました。
最近はHamlをよく使うようになりましたHaml。
めちゃくちゃ便利ですよねw
でも、Rails new
しても生成されないですよね?
そこでERBをHamlに変更してみました。
Hamlとは
What is it? Haml (HTML abstraction markup language) is based on one primary principle: markup should be beautiful. It’s not just beauty for beauty’s sake either; Haml accelerates and simplifies template creation down to veritable haiku.
つまり、HTMLより簡潔に簡単にかけるテンプレートエンジンです。
導入について
Gemfile
に以下を書います。
gem 'haml-rails'
ERB→Hamlに変更することできます。
bundle install
をかけます。rails haml:replace_erbs
をかけておしまい。
おそらくERBファイルが全て変わっていると思います。
便利なのでぜひ使ってみましょう!!!
研究室にGitLabを立てた話
お久しぶりです。
研究室にGitLabを立てたので話して行こうと思います。
導入したきっかけは?
元々研究室にはgitbucketがあったのですが、
- 使っている人間が少なかったこと(実際使っていたのは二人)
- メンテナンスがあまりされていなかったこと
- あと個人的にもう少しリッチな機能が欲しい
とのことで、他のツールの検討をはじめました。
いろいろ調べているとこんな記事を見つけました。
リッチな機能が搭載されていて、クローズな環境で動かせるGitLabってええやん
と思い早速導入を開始しました。
学生の評判は?
目的は研究室でみんな使って欲しいってことが1番の目的にしていたので、導入してからの働きかけには
だいぶ苦労しました。特に、「Gitって何?」と言った人が8割だったのでGitの基本の使い方勉強会を開いたことで
利用率もだいぶよくなったと思います。
また、通知がissueなどの通知はメールで送信されるところをslackと連携させることによって常に見る状況を作ったので だいぶ利用者が増えました。
苦労したこと
一番苦労したことは、導入ではなく運用だと思います。 貧弱なサーバで運用していたので、すぐにメモリの使用率が上昇してたことが運用する上で苦労したことです。 基本的にPrometheusと呼ばれる監視ツールがメモリを消費する原因の一つだったことがわかり現在はPrometheusを停止しています。 監視は外部のツールを使って監視するようにしています。
また、オープンソースってこともありちょくちょくバグが多いように思います。 よく、issueで「バグがある」と言った報告がありました。
現在もwikiを立てると500が出るバグあるので、公式なのかサーバの問題なのか調査する必要があると思います。
GitLabを導入したいと思っている研究室はぜひ入れてみたほうがええと思います。 でわでわ〜