ウェブエンジニア珍道中

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

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曰く「シンプルで柔軟で楽しい」らしい…

webpack4には"--mode"オプションが必須らしい

正直タイトルが全てなんですが、ちょっと詰まったのでメモっときます webpack4でtypescriptのトランスパイルをしてたら以下の警告文が出ました。 WARNING in configuration The 'mode' option has not been set. Set 'mode' option to 'development' or 'pro…

TypescriptでPromiseについてまとめてみる

わかった気がせんでもないのでまとめます。 async/awaitを勉強しようとしたら「そもそもPromiseが分からんと話にならん」ということで勉強しました。 今更感&検索したらいっぱい出てきますが自分の理解が進むから良いんです(自分本位) Promiseとは ECMASc…

Rubyのtapメソッドが便利なので紹介する

RubyのObject#tapが便利だったので紹介します。(昔からあるらしいけど) tapメソッドとは ブロック文を渡すと中身の処理を走らせてレシーバを返すメソッドです。 hoge = "test".tap do |string| puts string true end puts hoge # "test" Objectクラスに定…

検証・勉強用にDockerでmysql環境を用意した話

mysqlの勉強のために簡単に環境を構築・破棄したかったのでDockerで準備しました。 手順 Dockerのインストールは割愛します、今回はDocker for Macで行いました。 作業ディレクトリを用意する 作業用のディレクトリを作って入ります。これはコンテナとファイ…

ImageMagickを使ってPSDからpngの一枚絵を生成するコマンドについて

PSDからpngとかの画像を生成したい時ってありますよね? 僕はありません。 が、仕事で使ったので書き溜めておきます。 ※convertコマンドはImageMagickの7系からmagickコマンドに変わったりしているので、適宜変えて下さい。 コマンド hoge.psd から hoge.png…

テスト用に大容量のダミーファイルを作るコマンド覚え書き

大容量の送信テストとかで時々適当なファイルを作りたくなるのでコマンドのまとめをメモ兼共有します。 macOSの場合 mkfile 1g <適当なファイル名> これで1GBのファイルができます。 1k 1m 1gでそれぞれキロ、メガ、ギガが指定できます。 Linuxの場合 falloc…

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

久しぶりのデザパタです、今回はFactory Methodです。 Factory Methodとは Template Methodパターンをインスタンス生成に適応したものです。 Factory(工場)はインスタンスを作る役割を果たし、作り方の枠組みを示す親クラス(抽象クラス)と実際に特定のク…