ウェブエンジニア珍道中

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

RubyのProcについてまとめる

RubyのProcとかMethodとかの理解が少し進んできたのでまとめる 今回はProcについて Procとは Rubyのブロック文をオブジェクト化したもの ブロック文はdo ~ endや{ ~ }でよくつかう一連の処理をまとめたもの だからといってdo ~ endを直接変数に入れるとかは…

lighthouseの結果をdatadogに投げるdockerコンテナを立てる

lighthouseのscoreを定点観測して、グラフとかで見るとチューニングのモチベ上がんじゃね?と思っていたところ、datadogが対応をしていました。 なので試しにローカルのdockerコンテナ内で投げるように構築したので紹介します。 いるもの docker 今回はdocke…

Mutagenでファイル同期が簡単に出来た話

今回はMutagenというものを使えばファイル同期が簡単にできたので、軽くまとめたいと思います。入門用の記事のつもりなので、詳しい仕様は下記リンクの公式ドキュメントを参照して下さい。 上手く使えば脱docker-syncもできます。 Mutagenとは mutagen.io フ…

crontabのスケジュール作成に役立つサイトの紹介

先に結論 crontab.guru このサイトめっちゃ便利。 覚えられないcrontab たまーにしか触らないので、覚えられずにいつも調べながら書いていたcrontabのスケジュール部分ですが、上記のサイトでサクッと書けるようになったので紹介します。 サイト やってくれ…

findコマンドで見つけたファイルを消す

ファイルをファイル名などで検索して消すことが度々あるのですが、毎度忘れて検索するので備忘録としてまとめちゃいます。 テンプレ find {検索したいファイルパス} {検索条件} -exec {追加で行いたいコマンド} \; サンプル 名前にhogeを含むファイルを見つ…

Rubyのmoduleでサービスクラスを作る

Rubyにおけるサービスクラスの作り方で、一つ作り方を考えたので残しておきます。 サービスクラスとは複数のモデルを使ってビジネスロジックを記述を行うものです、ここでの詳細は割愛しますが、以下の記事が有名でとても勉強になります。 qiita.com 例とし…

SRE サイトリアイアビリティエンジニアリング 5章まとめ

前章はこちら www.te-nu.com 5章 トイルの撲滅 トイルの定義 運用作業という言葉は誤解を招きかねないため、Googleではトイルという言葉を用いる、これは「やりたくない仕事」ではなく、汚れ仕事など単純に言い換えられるものでもない トイルとは以下の傾向…

SRE サイトリアイアビリティエンジニアリング 4章まとめ

前章はこちら www.te-nu.com 4章 サービスレベル目標 サービスレベルに関する用語 サービスを適切に管理するためには、サービスの中で重要な振る舞いがどれかということと、その計測と評価の方法を理解する必要がある Googleでは以下を定義している サービス…

SRE サイトリアイアビリティエンジニアリング 3章まとめ

前章はこちら www.te-nu.com 3章をざっくりとメモしました。こってりした本なので全然進まないです……。 リスクの受容 Googleは決して障害を起こすことがないサービスを目指していると思われているかもしれないが、実際にはある一線を超えるとサービスやユー…

ブラウザのPreloadingを試してみた

blog.asial.co.jp この記事の中でPreloadingというものが紹介されていたので試してみました。Chrome Dev Summitの紹介記事だったので紹介の紹介ですね。 Preloadingとは 次以降のページで使う画像やJSファイルなどの静的ファイルをあらかじめ取得しておくこ…

SRE サイトリアイアビリティエンジニアリング 2章まとめ

前章はこちら www.te-nu.com 2章をざっくりとメモしました。 2章 SREから見たGoogleのプロダクション環境 Googleのデータセンターは一般のものと大きく異なり、従来では見られなかった問題や機会を生み出したので、これらの解説と本書で使う用語を紹介する G…

Parcelを導入を試みてから諦めるまで

www.te-nu.com 以前の記事で紹介しましたParcelというライブラリをプロジェクトで使っているWebpackの代わりに導入しようとしましたが断念しました。 今回は導入にあたって詰まったことと、最終的に断念した理由をまとめたいと思います。 詰まったところ wat…

Docker上でmysql8を使った時に"Authentication plugin 'caching_sha2_password' cannot be loaded~"と出た時の対処法

Docker上でRails + mysql8.0の環境を作ろうとした際にハマったので残しておきます。 エラー内容 root@c61dd571e666:/app# rails db:create Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib/x86_64-linux-gnu/mariadb18/plugin/ca…

SRE サイトリライアビリティエンジニアリング 1章まとめ

最近SRE本を読み出しました。 SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム作者: 澤田武男,関根達夫,細川一茂,矢吹大輔,Betsy Beyer,Chris Jones,Jennifer Petoff,Niall Richard Murphy,Sky株式会社玉川竜司…

dockerコンテナ内でParcelをwatchモードで使った時にエラーが出る

Parcelについてはこちら www.te-nu.com dockerコンテナ内でParcelを使う際に詰まったので残しておきます。 症状 dockerコンテナ内にてparcelをwatchコマンド(監視モード)で動かすと、ブラウザ上で以下のエラーが出力されました。 Uncaught DOMException: F…

ParcelでVue.js + TypeScriptの環境構築をしてみた

フロントエンドに手を出し始めてからずっとwebpackを使ってましたが、webpack.config.jsを書くのが面倒だったり、主観ですがビルドが遅かったりしたので、もう少し速くて手軽なビルドツールを探したところParcelというものが見つかったので使ってみました。 …

連結リストの速度をTypeScriptで検証してみた

連結リストと配列における処理速度の違いについて検証してみたのでまとめます。 連結リストとは? 一言で言うと「配列の亜種」です。できることは大体同じです。(すごくまさかりが飛んできそうなので話半分に聞いて下さい。) 違いを人で例えるならば、配列…

Rubyで再帰関数について軽くまとめ

再帰関数について軽くまとめてみます、今回はRubyで書きます。 再帰関数とは 関数Aの中で同じ関数Aを使う処理を行う関数のことです。 例: def A(num) A(5) end ↑みたいに普通に呼び出すだけだと、Aが呼んだAが呼んだAが呼んだAが…と無限ループになってメモ…

MacOSのターミナル環境構築(iTerm2 + Homebrew + zsh + Prezto + Ricty)の手順書

Macを買い替えたときや新しく会社から支給された時にいつも調べながら構築しているので、いっそまとめちゃいます。「自動化しろよ」って話は(∩゚д゚)アーアーきこえなーい そのうちAnsibleで作ってくれるようにすると良いですね。 iTerm2のインストール Macにてよ…

HHKB BT+キーボードブリッジを導入してみた

新しいキーボードを購入して環境を少し買えてみたのでご紹介します。ぶっちゃけアフィブログみたいになってますが、キーボード選びと環境作りの参考になれば幸いです。 結果 こんな感じになりました。 いわゆる尊師スタイルと呼ばれるものです。名前の由来は…

Elasticsearchの検索においてnullを検索条件にしたい時にすること

Elasticsearchにおいてnullで検索したい時に、手順を踏む必要があったためまとめます。 TL;DR { "type": "keyword", "null_value": "NULL" } 上記のようにして"NULL"で検索すればnullを探せます。 例 下記のような本のデータを格納するindexおよびtypeがあっ…

Pts.jsをtypescript環境で動かしてみた

Pts.jsというものがGithubで話題になってるらしいです、点を線でつないでいい感じの図形を描画できるとか何とか。 github.com Like seeing the Big Dipper in a sky full of stars, Pts helps you connect the dots in the vastness of conceptual spaces. …

Node.js上でのlinuxコマンドの叩き方

Node.js上でlinuxコマンドの叩き方を備忘録として残します。 実行方法 child_processをrequireしてexecメソッドを使います。 const exec = require('child_process').exec; exec("echo 'hogehoge'", (error, stdout, stderr) => { if (error) { console.log(…

AWS LambdaからSlackにメッセージを投げる(node.jsとhttpモジュールを使う)

AWS LambdaからSlackに対してメッセージをpostするためのソースを備忘録として残しておきます。 動作環境 node.js 8.10 const postToSlack = (message) => { const https = require('https'); let postData = JSON.stringify({ text: message }); let option…

Elasticsearchの基本的な操作について

Elasticsearchの基本的な操作などをまとめます。半分メモのようなものです。 間違った解釈があればご指摘いただければ幸いです。 操作方法 CRUD(Create・Read・Update・Delete)はREST APIで行います。REST APIはRailsでよく作るアレです(適当)。 検証はc…

docker-composeでのRails環境にElasticsearchを組み込む

dockerを用いたRailsの開発環境に新たにElasticsearhを組み込んだのでまとめます。 Dockerの設定 docker-compose.ymlを以下のように修正します。 version: '2' services: rails: # ~ imageとか元々の設定(省略) ~ # 追加 depends_on: - elasticsearch # 追…

docker-composeでお手軽mysqlのmaster-slave構成

mysqlのreplicationの構築を検証してみたかったので、Dockerを使って環境構築をしてみました。 docker-composeを使って、コマンド一つでmaster, slave両方管理出来るようにしています。 githubにあげてみたので、よかったら使ってみて下さい。 https://githu…

Railsで特定のModelだけ別DBを操作するようにしてみた

システム間連携等の事情で、別DBを作ってデータを流し込みたくなったので実装してみました。 手順 例としてBookモデルを作り、別DBを対象にするようにします。 環境はmysqlです。元々使っているDBはmain_database、新しく使うDBはsub_databaseという名前にし…

awkの簡単な操作まとめ

awkコマンドを調べつつ簡単な操作を勉強したのでまとめておきます。 awkコマンドとは AWK(オーク)は、プログラミング言語の一つ。 テキストファイル、特に空白類(スペースの他、タブなど)やカンマなどで区切られたデータファイルの処理を念頭に置いた仕…

javascriptで0埋めの文字列を作りたい

"1234"を6桁で"001234"と頭をゼロ埋めしたい時に良さげな方法を見つけたのでメモします。 "1234".padStart(6, "0") // "001234" String.prototype.padStartメソッドを使いました。 developer.mozilla.org 第一引数で指定した文字数まで第二引数で指定した文…