ウェブエンジニア珍道中

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

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(工場)はインスタンスを作る役割を果たし、作り方の枠組みを示す親クラス(抽象クラス)と実際に特定のク…

KotlinでRubyのselectメソッドみたいなやつ作った

Kotlinの勉強二日目で、関数やらラムダ式やらを勉強しました。 関数の引数に関数を渡して色々できるっぽいので「お、じゃあRubyのArrayクラスにあるメソッドっぽいのが作れるのかな」ということでSelectメソッドを作ってみました。 fun select(list: List<Any>, d</any>…

homebrewを使用したkotlinの環境構築の覚え書き

kotlinを仕事で使いそうなので、とりあえず動く環境を作りました。 JVM言語のためコンパイルにjavaが必要だったりしてコマンド一発という感じでは無かったのでメモっておきます。 方法 最初にjavaを入れるため必要なので caskroom/versionsというものをbrew…

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

今回はprototypeパターンを書いてみました。 prototypeパターンとは 既に作っているインスタンスから別のインスタンスを作るパターンです。 メリット 扱うオブジェクトの種類が多すぎる時に管理しやすい オブジェクトを30個作って扱う必要がある際にそれぞれ…

vuexっぽい仕組みをvuex使わずにRxjsで実装してみた

github.com 久しぶりの更新です。 今回はvuexを使わずに下の図を参考にして、それっぽい仕組みでマークダウンエディタを作ってみました。 コンポーネントに対する通知等はrxjsを使って実装しています。 サンプル テキストを入力すると、HTMLでプレビューを表…

typescriptでnodeのfsを動かそうとしてハマったこと

覚え書きとして。 typescript上でfsを動かしてファイル操作をしようとしましたが、「そんなもの無い」と言われて四苦八苦したので解決法を残しておきます。 @types/nodeをインストールして、nodeの型定義ファイルを入れます。 npm install @types/node node…

コードを簡単に整形できるvim-easy-alignを雑に紹介する

vim

github.com vimでコードの列を簡単に揃えられるプラグインがあるので紹介します。 といっても僕が使っているのはこのプラグインのほんの一部分だけです。きっともっとすごい機能がありますが使いこなせてないので紹介しませんmm インストール .vimrcに以下を…

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

github.com 今回はSingletonパターンを書いてみます。 Singletonパターンとは アプリケーション内でインスタンスを一つだけ生成することを保証するデザインパターンです。 new Hoge()で作る度に別のインスタンスが作られるというのを制限します。 サンプル …

TL; DRを雰囲気だけで知った気になってたので調べてみた

TL;DR 概要とか要約とかそんな意味かなって思ってたけど、調べてみたら若干意味が違った。由来はもっと違った。 TL;DRとは? チームの一人がissueを書く際にこの表現を使っていて、「そういえばきちんとした意味知らねーな」と思ったので調べてみました。 li…

モチベーション革命 稼ぐために働きたくない世代の解体書を読んだ

モチベーション革命 稼ぐために働きたくない世代の解体書 (NewsPicks Book)作者: 尾原和啓出版社/メーカー: 幻冬舎発売日: 2017/09/27メディア: Kindle版この商品を含むブログ (1件) を見る 今回はこの本を読んだので感想を書いていきます。 ちなみにKindle …

サイトの速度が話題になってるから、ブログの速度も気にしてみた

最近話題のサイトの速度 最近dev.to(Qiitaの海外版?)が爆速すぎるという話がよくあって、アクセスしたら「ローカルのファイルでも見てんのかな」ってくらい爆速で爽快だった。 www.itmedia.co.jp 阿部寛さんの超シンプルなページとどちらが速いのかなんて…

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

今回はtypescriptでTemplate Methodパターンを書いてみようと思います。(3種類目) github.com Template Methodパターンとは 親クラスで処理の概要を決めて、具体的な処理は小クラスで書いていくデザインパターンのことを言います。 例えば親クラスが「楽器…

4Kディスプレイを作業ディスプレイにしてみたい

※導入はまだしていません 今日こんな記事を読んだ。 www.atmarkit.co.jp この記事によると大きすぎるモニタは見上げることになって辛いとか、消費電力が多いとか注意する点はいくつかあるが、40インチの4Kディスプレイは生産性が上がるらしい。 画像や動画編…

ts-nodeでCLI上でのtypescriptの検証がめっちゃ楽になった話

typescriptでデザインパターンの勉強をしているのですが、コンパイルがとても面倒くさい。 webpackにts-loader入れてコンパイルして検証をしていたのですが、ts-nodeという便利なモジュールがあったので紹介します。 CLI上で検証・勉強したりするにはとても…

typescriptでデザインパターンを書く -Adapter(委譲)-

www.te-nu.com の続きです、まだお読みで無い方はぜひ読んでみて下さい(ダイレクトマーケティング) 前回はAdapterパターンを継承で書いてみましたが、委譲による実装方法もあるので作ってみたいと思います。 継承との主な違い 継承では既存のクラス、今回…

typescriptでデザインパターンを書く -Adapter(継承)-

typescriptでデザパタを書いてみます、今回は二回目(一回目で失踪しなくてよかった) リポジトリはこちら github.com 参考にしている本はこちら 増補改訂版Java言語で学ぶデザインパターン入門作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売…

ITエンジニアのための「人生戦略」の教科書 ~技術を武器に、充実した人生を送るための「ビジネス」と「マインドセット」~ を読んだ

タイトルが長い… ITエンジニアのための「人生戦略」の教科書 ~技術を武器に、充実した人生を送るための「ビジネス」と「マインドセット」~作者: 平城寿出版社/メーカー: マイナビ出版発売日: 2017/02/23メディア: 単行本(ソフトカバー)この商品を含むブロ…

rubyでサンプルデータを作る時に便利だったArray#sampleの覚書

Rubyで開発中、サンプルデータ等を用意する時に役立つメソッドがあったのでメモします。 Arrayクラスのインスタンスメソッドであるsampleメソッドというもので、「配列の中からランダムに返す」という機能です。 [1,2,3].sample => 3 # 毎回変わる 真偽値を…