CentOS7で名前解決できないエラー対応

vagrant upで以下のエラーが出た時の対応メモ。

The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

yum install -y kernel-devel kernel-devel-`uname -r` gcc binutils make perl bzip2

Stdout from the command:

Loaded plugins: fastestmirror
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=vag error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"


Stderr from the command:



 One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=<repoid> ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>
        or
            subscription-manager repos --disable=<repoid>

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: base/7/x86_64
$ vagrant ssh
# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
# ping google.com
ping: google.com: Name or service not known
# vi /etc/sysconfig/network-scripts/ifcfg-{xxx}
DNS1=8.8.8.8
DNS2=8.8.4.4
# systemctl restart network
# ping google.com
PING google.com (172.217.25.206) 56(84) bytes of data.

参考

CentOS6 or CentOS7(VirtualBox)で名前解決ができなくなった場合の対処方法 - web-technical-blog

VagrantでRails環境を構築

VagrantRails環境を構築した時のメモ。

$ vagrant ssh
$ sudo yum update
$ sudo yum -y install git
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
$ rbenv install --list
$ sudo yum install gcc make openssl-devel libffi-devel readline-devel
$ rbenv install 2.3.0
$ rbenv global 2.3.0
$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
$ sudo yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
$ sudo yum install mysql mysql-devel mysql-server mysql-utilities
$ sudo chkconfig mysqld on
$ sudo service mysqld start
$ sudo yum -y install ImageMagick ImageMagick-devel
$ gem install bundler -N
$ sudo yum install libxml2-devel libxslt-devel
$ gem install nokogiri -v '{version}' -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/
$ curl --silent --location https://rpm.nodesource.com/setup | bash -
$ yum -y install nodejs
$ sudo yum -y install epel-release
$ sudo yum -y install redis

参考

Oculus Goでスクリーンショット・録画を撮る方法

撮影方法

ホーム画面 > シェア > 録画を選択

確認方法

撮影した写真・映像は「ギャラリー」で確認可能

取り出し方法

調べるといくつか方法があるようですがAndroid File Transferの利用が簡単でした。 https://www.android.com/filetransfer/

参考

Oculus GoとUnityの開発環境構築

UnityでビルドしたアプリをOculus Goで実行するまでのメモ。

やったこと

  1. Oculus Goを購入 https://www.oculus.com/go/
  2. Unityをインストール https://store.unity.com/ja
  3. Oculus Developer Dashboardで団体を作成 https://dashboard.oculus.com/
  4. Oculus Go端末を開発者モードに変更
  5. Java Development Kitをインストール https://docs.unity3d.com/Manual/android-sdksetup.html
  6. UnityのAndroid開発環境を整備

    • File > Build Settings > Platform. AndroidPlayerをインストールしてUnityを再起動
    • File > Build Settings > Platform. Player Settingsを選択して表示
    • XR SettingsのVirtual Reality Supportedにチェック
    • Virtual Reality SDKsにOculusを指定
    • Other > Settings. IdentificationのMinimum API Levelを「Android 7.1」に変更
    • Other > Settings. Package Nameを任意の名前に変更
    • File > Build & Run. ビルドを実行
  7. Oculus Goで実機確認

参考

Active Storageを使って画像をアップロード

ローカル環境でActive Storageを使用して画像をアップロードする機能を実装した時のメモ。

事前準備

imagemagickが入っていなかったのでインストール

$ brew install imagemagick

Active Storageの環境構築

$ bin/rails active_storage:install
$ bin/rails db:migrate RAILS_ENV=development

画像をアップロード

class User < ApplicationRecord
  has_one_attached :avatar
end
class UsersController < ApplicationController
  def update
    @user.update(user_params)
  end
  
  private
    def user_params
      params.fetch(:user, {}).permit(:name, :avatar)
    end
end
= form_for @user do |f|
  = f.label :avatar
  = f.file_field :avatar
  = f.submit

画像を表示

gem 'mini_magick'
<%= image_tag user.avatar.variant(resize: "100x100") %>

参考

bundle updateでPermission deniedが出た時の対応

bundle updateでPermission deniedが出た時の対応メモ

エラー内容

$ bundle update
Fetching nokogiri 1.8.3 (was 1.8.2)
Installing nokogiri 1.8.3 (was 1.8.2) with native extensions
Errno::EACCES: Permission denied @ dir_s_mkdir - /Users/{username}/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-16/2.4.0-static/nokogiri-1.8.3
An error occurred while installing nokogiri (1.8.3), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.8.3'` succeeds before bundling.

原因

過去にsudoをつけてgemをinstallしていたため書き込み権限がなかった

本当ならば、次のディレクトリ「/Users/(ユーザ名)/.rbenv/versions」配下にあるものは全てユーザーアカウントの権限になるべきなのですが、そのディレクトリの中のある幾つかのファイルに書き込む権限がないというのが問題でした。

参考:Rails cが実行不可能、Permission denied @ rb_sysopen – /Users/…の対応策

対応

ディレクトリの所有者をユーザー権限に変更

$ sudo chown -R {username}:staff /Users/{username}/.rbenv

参考

フリーランスエンジニア4年目の2017年振り返り

遅ればせながらフリーランスエンジニアとして4年目の2017年の振り返りです。

個人開発

個人開発で多産多死を行っている状態でした。利益を出したいためにアフィリエイトを中心に置いたサービスの開発を行っていたのですが、SEOアフィリエイト周りのことに注力する時間が多くなり開発へのモチベーションが下がってしまう難しい状況でした。一方で、アフィリエイターの方々は職人的な気質の人が多く文化としても近いため、姿勢や取り組み方など勉強になりました。どこに軸を置くにせよ、2017年は結果を残せなかったことが大きな反省点でした。年末にpeingを開発したせせりさんの存在を知り、そのスタンスが個人開発者として目標とする姿に近かったため、2018年に何かしら活かしたいと思いました。

情報収集

2017年はヨーロッパを一周しました。アジアは日本も含めてビルがひしめき合い中心地は「都市」というイメージですが、ヨーロッパはロンドン以外ほとんどそういった印象を持ちませんでした。街中はゆったりしたスケール感覚で、都心エリアでも建物は低層が中心でした。ヨーロッパの人がアジアに対してサイバーパンク的なイメージを持つ理由も何となく分かりました。しかし、UberEats的な配達員の人を街中で見かける回数はヨーロッパのほうが多く、伝統的な街の雰囲気の中で先端サービスのチャレンジが受け入れられているような印象でした。ベルリンのsoundcloud社など有名サービスのオフィスも(外側から)見てまわりました。

業務委託

長くお付き合いをさせていただいた企業様との契約が終わり、新しい企業様との契約を結びました。今回はリモートワークの割合を増やしました。朝の満員電車から解放され、通勤時間も節約できるため、個人的にはリモートワークのほうが合っています。実際にやってみた感想としては、リモートワークは個人の努力だけでなくリモートワークを受け入れる会社側の土壌も必要だと思いました。今回お世話になっている企業様ではリモートワークを推奨していて、特に開発チームのトップの方が率先して文化や仕組みをつくっているため、リモートで非常に働きやすい環境が用意されていました。リモートで働く側としては、この文化を壊さないため・発展させるために、リモートで働く上での信頼関係をつくることを意識的に取り組みました(レスの速度を上げる・開発の過程を残すなど)。このあたりは勉強中のため2018年の課題の1つです。

仕事場

北向きの部屋で作業していると煮詰まった時に滅入ってしまうため、南向きの物件に移りました。古いですが、とていもいい物件で気に入っています。ただ古い物件なりの課題(寒い・コンセントの数少ない等)があるので徐々に解決できればと。

2018年に向けて

新しいことへのチャレンジや新しい分野の勉強をはじめたい一方で、現在仕事で使っているRuby/RoRの基礎をしっかり固めたい気持ちもあります。今年は6:4ぐらいの割合で基礎固めを多めにしたいなと思っています。この記事を書いている時点で年が明けて1ヶ月経ちそうですが、現在は「プロを目指す人のためのRuby入門」をすすめています。読み終えたらRailsチュートリアルにうつる予定です。