ウェブエンジニア珍道中

日々の技術的に関する経験を書いていきます。脱線もしますが助けになれば幸いです。

ITエンジニアのための「人生戦略」の教科書 ~技術を武器に、充実した人生を送るための「ビジネス」と「マインドセット」~ を読んだ

タイトルが長い… ITエンジニアのための「人生戦略」の教科書 ~技術を武器に、充実した人生を送るための「ビジネス」と「マインドセット」~作者: 平城寿出版社/メーカー: マイナビ出版発売日: 2017/02/23メディア: 単行本(ソフトカバー)この商品を含むブロ…

rubyでサンプルデータを作る時に便利だったArray#sampleの覚書

Rubyで開発中、サンプルデータ等を用意する時に役立つメソッドがあったのでメモします。 Arrayクラスのインスタンスメソッドであるsampleメソッドというもので、「配列の中からランダムに返す」という機能です。 [1,2,3].sample => 3 # 毎回変わる 真偽値を…

typescriptでデザインパターンを書く -Iteratorパターン-

増補改訂版Java言語で学ぶデザインパターン入門作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2004/06/19メディア: 大型本購入: 51人 クリック: 762回この商品を含むブログ (397件) を見る 以前この本を読んでデザインパターンを勉強して…

RailsでSlimを使った時に起こる「開発環境だけ見た目が崩れる問題」の解消

問題について https://github.com/slim-template/slim-railsを使って開発をしていると、特定の条件で開発環境下(development)でのみ見た目が崩れる減少が起きていました。 長らく原因がわからず解消できませんでしたが、先日ようやく何とかできたので紹介…

builderscon tokyo 2017行ってきた -2日目-

www.te-nu.com の続きです。2日目行ってきましたのでレポート。 朝イチの1発目のセッションは思いっきり寝坊したので2つ目から見ました。慌てて特急に乗ったら日吉駅通りすぎるし。くそう。 見に行ったセッション(午前) 小さく育てて始めるコンパイラ buil…

builderscon tokyo 2017行ってきた -1日目-

buildersconとは buildersconは「知らなかった、を聞く」をテーマとした技術を愛する全てのギーク達のお祭りです。buildersconではトークに関して技術的な制約はありません、特定のプログラミング言語や技術スタックによるくくりも設けません。 必要なのは技…

tmuxのバージョンを見るコマンドが他と違う感があったのでメモ

tmux -V これで見ることができました。 一般的には-vや--versionですが、tmuxに関しては-Vのようです。 あんまり見ない。 ちなみに-vは「詳細なログを出す」オプションらしいです。 tmux-client-PID.log と tmux-server-PID.logがカレントディレクトリに作ら…

はてなブログに固定ページがあったので試してみた

固定ページとは? 固定ページを作成できるようにしました(はてなブログPro) - はてなブログ開発ブログ はてなブログでは、有料プラン「はてなブログPro」利用者向けに、独立した固定ページを作成できる機能を追加しました。投稿した順に時系列で扱われる通…

Rubyのcoerceメソッドについて

Rubyの勉強していたらNumeric#coerceメソッドというものを見つけたのでメモ 機能 全ての数値オブジェクトに対して使えるメソッドで、引数で与えられた数を自分と同じクラスにして自分とセットで配列で返すものだそうです。 hoge = 1.6 hoge.coerce(5) => [5.…

ansibleに*.retryファイルを作らせない方法

ansibleの実行に失敗する度に生成されるファイルで、失敗したホストが一覧で入っています。 .gitignoreで無視したりしても良いのですが、管理するサーバが少なかったりするとメリットも少なく邪魔なので作らせないようにしました。 といってもansible.cfgに…

2017年上半期振り返った

気がついたら2017年半分終わってたよ!!!! ってことで少しだけ振り返り。 といっても別に記録している訳ではないのでTwitterの呟きをさかのぼってみた。 …うん、ロクな呟きしてねぇな。ラーメンの画像アップしすぎだろう。2日連続とか。 やったこと(技術…

gitで編集したファイルのみaddするコマンド覚書

git

gitを使って開発していてブランチを行ったり来たりすると、 あるブランチにはaddしたくないような新規ファイルが出てきました。 個別にgit addを行うのは面倒なので、まとめて行う方法を調べてみたらありました。 git add -u -uオプションつけるだけでOKです…

改めてRubyの整数と浮動小数点数についてまとめた

はじめに 基礎からRubyの勉強をし直そうということでプログラミング言語 Rubyをガッツリ読み直していると、普段何気なく使ってる数値も深く書かれているので少しまとめます。 数値について 全ての数値オブジェクトは Numericクラスのインスタンス。整数であ…

Docker for MacでRubyの検証用環境をサクッと作る

はじめに Rubyの勉強を家でしている時に「これ実際に動かさないとわからんな」ということが度々あります。 Macだと homebrewや rbenvを使って環境構築をする場合が多いですが、今回はMacに直接インストールしたくないと思いDocker for Macで作りました。 敷…

レガシーソフトウェア改善ガイドを読んだ

レガシーソフトウェア改善ガイド (Object Oriented Selection)作者: クリス・バーチャル,吉川邦夫出版社/メーカー: 翔泳社発売日: 2016/11/11メディア: 単行本(ソフトカバー)この商品を含むブログを見る 本書は古くて保守や追加開発などが大変なソフトウェ…

mysqlのインストール直後にログインできない問題について

久々にCentOSにインストールしたら詰まったのでメモ。 症状 インストールして起動後ログインができない パスワードもわからない。 環境 mysql Server version: 5.7.18 CentOS version 6.7 対応 インストール時に仮のパスワードを発行しているようなので sudo…

Dockerで全コンテナを止めて削除するためのコマンド覚え書き

コマンド docker stop $(docker ps -a -q) でまとめて止めて docker rm $(docker ps -a -q) でまとめて削除できます。 おまけ docker rmi $(docker images -q) で 全イメージを削除できます。 psも imagesも -qオプションでIDだけを取ってこれるので、それを…

RubyでURLをaタグに書き換える処理を書いた

DBから取ってきた文字列を表示する際に、URLが混ざっていた場合aタグに置き換えて表示する必要があったためその処理を書きました。 コードはこんな感じです。 require 'uri' def convert_url_into_a_tag(text) text.gsub(URI.regexp(['http', 'https'])) do …

CentOS6にRubyを入れるDockerfileを作った

Docker便利そうなのでいじってみてます。 Rubyが入った環境を作ってみました。 Dockerhubに用意されたものがありましたが、CentOSではなかったので自作です。 FROM centos:centos6 MAINTAINER te-nu RUN set -x RUN yum -y update RUN yum install -y openss…

今更ながらirbからpryにして色を付けた話

経緯 僕はRailsを使って開発をしているのですが、「なんで rails consoleでは綺麗に色分けされて表示されるのに、 irbではずっと白黒なんだろう」と思ってました。 よくよく見るとうちのプロジェクトで rails console時に動いているのって pry-railsってgem…

Vue.jsことはじめ -簡単な入力と出力をしてみる-

以前の記事でvue.jsの環境ができたので、今回はとりあえず入力した値を出力するところまでをまとめようと思います。 環境 Vue.js 2.2.0 Vue.jsはバージョン1系から2系に上がって結構書き方とか変わってるようなので要注意です。 サンプル いきなりですが、完…

Rubyのセッターメソッドとレシーバとselfの話

Rubyでクラスを作って色々処理を書いていると、セッターメソッド周りで意図しない挙動をしたりRubocop(静的コード解析ツール)に「冗長なselfつけんじゃねーよ」と怒られたりしたのでまとめます。 問題 問題のコードはこちらです、ギターをクラス化してみま…

Vue.jsことはじめ -動作環境構築からHello Worldを出力するまで-

プロジェクトでVue.jsを使うことになったので、とりあえずCDN(Content Delivery Network)で動く環境を作ったので共有します。 必要なもの テキストエディタ ブラウザ 構築手順 Vue.jsを読み込むために、 htmlのheadタグ上に以下のscriptタグを乗っけるだけ…

RailsのActiveRecordでcreate_or_updateを分岐なしでスマートにする方法

最近見つけたので紹介します。 今回は本(Book)モデルを例題にします。 方法 こんな感じでできます。 book = Book.find_or_initialize_by(id: 1) # book = Book.find_or_initialize_by(name: "こころ") # idじゃなくてもOK book.update_attributes( name: "…

Rubyでプライベートクラスメソッドを定義する方法

Rubyでクラスの外から呼べないプライベートなクラスメソッドを書く時にちょっとクセがあったのでご紹介します。 方法 こんな感じに書くと宣言できます。パブリックメソッドの hogeから プライベートメソッドの fugaを呼び出してます。 class Hoge def self.h…

Railsでテスト用DBのテーブル定義が開発環境と違う時に打つコマンド

最近RSpecを使ってテストコードを書いてます。それで開発環境でdb:rollbackとか色々していたらテスト用のDBと内容がズレてきてしまい、「えーい、今の開発環境に合わせんかい!」という時に打つと良いコマンドを見つけたのでメモ。 Rails5 bundle exec rails…

Rubyでprivateメソッドを無理やり呼び出す方法があった件

割と衝撃的だったのでメモ 方法 Object#sendメソッドを使います。 sample class Hoge private def test_method puts "hoge" end end hoge = Hoge.new hoge.test_method # エラー hoge.send(:test_method) # 動く 用途 これを普通に使ってるとプロジェクトが…

Reactを勉強するためにまずはRailsに突っ込んでみた

Reactを体験・検証する環境を作ってみました。 とりあえず慣れていて、色々検証しやすいだろうと、 根拠なく思ったのでRailsに突っ込みます。 動作環境 Ruby 2.3.1 Rails 5.0.0.1 react-rails 1.8.2 構築手順 Gemfileに以下記述 gem 'react-rails' で、イン…

Rails5でnested attributesに詰まった話

早速Rails5を触ってると、nested attributes周りで詰まったので紹介します。 症状 全ての項目を入れてもバリデーションに引っかかって保存できない。 モデル ここではモデル名をParent, Childとします。 class Parent < ApplicationRecord has_many :childre…

gitが呼び出すテキストエディタをviからvimに設定し忘れて困った話

git

困ったこと git commitが動かない git config --global --editとかも動かない 挙動としてはviが起動して、コメントや設定などを記入して完了しても 反映がされませんでした。 原因 どうやら以下の原因で動かなかったようです 変に凝って.vimrcを色々改造して…