Hejdaの見る夢

一人前のエンジニアを目指して頑張ったこととかをつらつら書くブログ

builderscon 2018 前夜祭 に行ってきた時の個人メモ

日時・場所

uzulla: 乾杯&ウェアラブル謎ガジェット

cho45: 自作 BLE キーボードのその後

kazuph: IoT開発の闇

f:id:nari_kyu:20180907133228g:plain

KAYAC hara: 人類バーチャル化のすすめ

ペパボ Make部: デモ〇〇連発 〜夏の終わりの打ち上げ花火〜

  • 説明
  • ぺぱぼMAKE部
    • GMOペパボ社員による非公式のものづくり部活動
    • ほとんどがゆーれー部員
    • MakerFaireにも出店
    • 社内展示会
  • IoTでどんなものを作ってきたのか
    • ロボットボールの作り方
      • ロボットボールを触ってみたいという衝動
      • 光るは正義
      • omicro
    • omicro
      • https://medium.com/tichise/ロボティックボール-liveballを作った-7185b45f6e88
      • 球体の中のラジコン
      • bluetooth -> iOSアプリ -> omicro
      • マイコン
        • mbed
          • LPC1768
          • LPC114FN28
          • LPC**
        • mbedの良さ
          • オンラインIDEがある
          • ライブラリが豊富
          • コマンドツールが使える
      • watch OSアプリも作っている
        • 手の甲の動作で動くのは展示では良い
        • 予期せぬ動作もある
      • BLE
        • koshianを使用
      • ボディ
  • IoT歯ブラシスタンド
    • 原因
      • 口内環境は大事
      • 歯ブラシの交換時期が分からない
      • 歯磨きを計測して、口内環境を管理したい
    • マーケ
      • 「歯ブラシ」と「IoT」はたくさんある
      • 「歯ブラシスタンド」と「IoT」は前例が無かった
    • 工程
      • イデアづくり
      • 雑なプロトタイプを作る
        • 圧力センサー
        • ESP32
        • 昇圧3.3V DC
        • Arduino IDE
      • 実際に動かす
        • 思った通りに動かない
        • 展示すると次の改善点が見えてくる
    • 作った感想
      • プロトタイミング大事
      • 物理を感じる
      • 楽しい!!

感想

  • 普段やっていることとは違って、実際にアプリを作っているエンジニアのつらみとつらみの中の面白みを感じ取れたので楽しかった 😊

Node-REDをVagrant上で立ち上げて、ブラウザで確認する

Qiita

Node-REDをVagrant上で立ち上げて、ブラウザで確認すると同内容です。

使用するvagrant box

# cat /etc/debian_version
9.5

構築

vagrantの起動

割愛

Debianの基本設定

  • ROOT化
sudo su -
  • aptの更新
apt-get update
apt-get upgrade -y
  • (今回使う)最低限のアプリのインストール
apt-get install -y vim
curl https://gist.githubusercontent.com/iganari/a2baec1af976425cc8e21ccd68cf5585/raw/b6fce2cc91e1c77da759af1d2ea7b771b597787f/_vimrc -o /root/.vimrc
ls -la /usr/bin/vim.basic 
unlink /etc/alternatives/editor
ln -s  /usr/bin/vim.basic /etc/alternatives/editor
apt --purge remove -y nano
  • サーバの時刻を日本にする
rm -rfv /etc/localtime &&\
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
echo 'LANG="en_US.UTF-8"' > /etc/default/locale

nodejs version8 をインストールする

  • 既存のnodejsを削除して、公式からインストールスクリプトを用いてインストール
    • 意図したnodejsをインストールした後にNode-REDもインストール
apt remove --purge -y nodejs
curl -sL https://deb.nodesource.com/setup_8.x | /bin/bash
apt-get install -y nodejs
npm install -g --unsafe-perm node-red

作業ユーザ作成

  • 作業ユーザは node-red
username='node-red'
useradd -m -s /bin/bash ${username}
echo "${username} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${username}
chmod 0440                                  /etc/sudoers.d/${username}
cp    /root/.vimrc            /home/${username}/.vimrc
chown ${username}:${username} /home/${username}/.vimrc

Node-RED をnpmからインストールする

  • 作業ユーザ node-red になる
su - node-red
  • 専用のディスクトリを作成し、node-redをインストール
mkdir         /opt/nodered-vagrant
chmod 0777 -R /opt/nodered-vagrant
cd            /opt/nodered-vagrant
npm install node-red

起動・終了スクリプトを設置

  • 再び、ROOT化
sudo su -
  • ダウンロード
wget "https://raw.githubusercontent.com/iganari/nodered-vagrant/master/bin/usr/bin/node-red-start" -O /usr/bin/node-red-start
wget "https://raw.githubusercontent.com/iganari/nodered-vagrant/master/bin/usr/bin/node-red-stop"  -O /usr/bin/node-red-stop
  • 権限変更
chmod 0755                /usr/bin/node-red-st* 
chown root:root           /usr/bin/node-red-st*
wget "https://raw.githubusercontent.com/iganari/nodered-vagrant/master/bin/etc/systemd/system/node-red.service" -O /etc/systemd/system/node-red.service
  • 権限変更
chmod 0755      /etc/systemd/system/node-red.service
chown root:root /etc/systemd/system/node-red.service
  • 起動
systemctl start node-red
systemctl enable node-red

ブラウザで確認

http://192.168.33.131:1880/

f:id:nari_kyu:20180820191504p:plain

ソース全体

簡単な構築方法含め、以下のレポジトリにまとめたので確認してみて下さい :blush:

https://github.com/iganari/nodered-vagrant

Mercari meetup for SRE に行ってきた時の個人メモ

開催日 / 場所

  • 2018/07/25(水)
  • 19:30 〜 21:30
  • 株式会社メルカリ

connpass

https://mercari.connpass.com/event/92098/

Twitter hashtag

https://twitter.com/hashtag/mercari_sre?f=tweets&vertical=default&src=hash&lang=ja

オープニング&SREチームのご紹介

  • 登壇

    • @masartz
  • slackの使い方メモ

    • リモートの出勤
    • hello bot で出勤になる
  • task管理
    • add todo hogehoge でJIRAにチケット起票
    • slackのURLがチケットに入ってくるので、チケットからslackの流れに戻れる

Traffic Optimization @cubicdaiya

  • 登壇

    • @cubicdaiya
  • メルカリの特徴

    • ネットワーク回線は細い
      • Wifiを前提にしない
    • スマホで利用可能なデータ通信量は有限
    • 良いUI/UXを実現するには高速な動作が必要不可欠
      • 低速なネットワークでもストレスなく動作する必要がある
      • 端末一つあたりの画像配信量はなるべく抑えることが重要
  • API

    • JSON
      • gzip
        • 圧縮レベルは6に設定している。理由は後述。
    • バイナリデータ
      • これから主流
    • ネットワークレイテンシ >>> 圧縮にかかるオーバーヘッド
      • トレードオフだが、マクロな目線で見ると圧縮にかかるオーバーヘッドは今は無視出来る
      • メルカリにおいては、ネットワークはCPUより高い
  • 構成
    • アプリ --- akamai --- imageflux --- S3
  • 圧縮に関して
    • 圧縮
      • 10% ~ 20% 減
    • 圧縮 && WebP
      • 30% ~ 50% 減

Expanding World of Data @kazeburo

  • 登壇

    • @kazeburo
  • メルカリのデータセンター

    • 石狩DC
      • 空調のコストが低い
      • 災害のリスクが低い
    • GCP
      • cloud(東京リージョン)
  • データセンターの距離
    • 1,000 Km
  • 早く通信する施策
  • これから

    • 東京のどこかのDCにラックを確保して、GCPと石狩の真ん中として使用する
  • DataBaseについて

    • MySQL 5.6, 5.7系
    • 巨大なデータ && トラフィック
    • TBを超えるテーブルが複数
    • 高いIOPS
    • 次世代は東京のDCに作りたい

Ubuntu 18.04にDockerをインストールする(+docker-composeも)

アジェンダ

repositoryをアップデートする

  • apt パッケージのアップデート
sudo apt update
  • HTTPS経由でrepositoryをやりとり出来るようにするためのパッケージをインストール
sudo apt install -y \
     apt-transport-https \
     ca-certificates \
     curl \
     software-properties-common
  • Dockerの公式GPG keyを追加する
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • repository( stable ) を追加する
sudo add-apt-repository \
     "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
     $(lsb_release -cs) \
     stable"
  • 再度 apt パッケージのアップデート
sudo apt update

docker をインストールする

  • インストール・起動
sudo apt install -y docker-ce
  • 起動確認
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-09 17:51:00 JST; 58s ago
     Docs: https://docs.docker.com
 Main PID: 3920 (dockerd)
    Tasks: 16
   CGroup: /system.slice/docker.service
           tq3920 /usr/bin/dockerd -H fd://
           mq3935 docker-containerd --config /var/run/docker/containerd/containerd.toml
  • プロセスの確認(sudo有)
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

指定の一般ユーザでも sudo 無しでdockerを使えるようにする

  • 初期設定では出来ない
$ whoami
iganari
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.37/containers/json: dial unix /var/run/docker.sock: connect: permission denied
  • 一般ユーザ( iganari )をDockerグループに追加する
### 確認
$ cat /etc/group | grep docker
docker:x:999:


### 追加
sudo gpasswd -a iganari docker


### 確認
$ cat /etc/group | grep docker
docker:x:999:iganari
  • dockerが使用するソケットを一般ユーザでも読み込み出来るようにする
sudo chmod 666 /var/run/docker.sock
  • プロセスの確認(sudo無)
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

docker-composeをインストール

  • /usr/local/bin/ 配下にダウンロード
sudo curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 実行権限の付与
sudo chmod 0777 /usr/local/bin/docker-compose
  • 確認(sodo無)
$ docker-compose -v
docker-compose version 1.6.2, build 4d72027

以上でやりたいことが出来ました 😉