ウェブエンジニア珍道中

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

2018-01-01から1年間の記事一覧

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 第一引数で指定した文字数まで第二引数で指定した文…

Kotlinで任意の文字数の文字列を作る

長さが100の文字列を手っ取り早く作りたいときの処理です。 "a".repeat(100) Stringにrepeatメソッドがありました。 repeat - Kotlin Programming Language 一文字だけの文字列に対して、引数で繰り返す回数を指定してに任意の長さの文字列を作ります。 テス…

IntelliJ IDEAで多用しそうなショートカット・操作まとめ

本をざっくり読んで便利そうなショートカットをメモしました。 まだまだ機能があるので、随時更新すると思います。 IntelliJ IDEAハンズオン――基本操作からプロジェクト管理までマスター作者: 山本裕介,今井勝信出版社/メーカー: 技術評論社発売日: 2017/11/…

dockerのimageを.tarにエクスポートする

imageをファイルにエクスポートしておきたいなーって事があり、ちょうど良かったのがあったので覚え書きします。 エクスポート docker save [repository]:[tag] > [好きな名前].tar これでエクスポートができます。repositoryとtag両方指定しないと、インポ…

immutableなクラスでto_hashを作るまで

Rubyにてセッタをもたないimmutableなクラスを作り、to_hashで値を取ってくるようにしたのでまとめます。 今回は例として本(Book)クラスを作ります。 完成品 class Book ATTRIBUTE_NAMES = [:name, :author, :price].freeze attr_reader *ATTRIBUTE_NAMES …

vue.js環境をvue-cliで簡単に構築してみた

結構前に出ていますが、今更ながら触ってみてとても楽にvue.jsの環境構築ができたのでまとめます。 vue-cliとは コマンドを叩き、質問にいくつか応えると、その質問に応じたVue.jsの開発環境ができるというものです。 導入手順 グローバルインストールします…

RubyのBooleanについて(一発ネタ)

今回はただの一発ネタです。 Rubyの真偽値のtrueとfalseには.!メソッドというものがあるのを知りました。 真偽値をひっくり返すものです。 true.! # false もちろん、頭に!を付けてもOKです !true.! # true trueが!メソッドでfalseになって、頭の!でtrueに戻…

typescriptのuniontypesについて

typescriptの共用体型についてまとめてみます。 共用体型とは union typeとか、ユニオン型とか言われてるっぽいです。 変数等に型を指定する時に複数指定できます。 複数の型を|区切りで指定し、どれかの型で有ることを示します。 こんな感じ。 let hoge: st…

typescriptでテストを書く環境を作ってみた(mocha, chai)

typescriptでテストコードを書くための環境作りをしたので、ご紹介兼備忘録です。 使うライブラリ mocha Mocha - the fun, simple, flexible JavaScript test framework Javascriptのテストフレームワークです。上記HP曰く「シンプルで柔軟で楽しい」らしい…