Clojureにおける同一性について

はじめに Clojureの勉強のため、テスト駆動開発をClojureで写経しはじめました。 第1部は、他国通貨を扱った問題をTDDで順番に解決していくさまが紹介されます。 使用されている言語はjavaであり、オブジェクト指向でTDDが行われます。 一方Clojureは関数型…

awkでvlookupみたいな表結合させる

はじめに 最近、bash, awk, jqにお世話になっております。 特にawkは使い始めたばかりなので、awkを使ってワンラインでexcelのvlookup的なことをやりたいときにどうすればよいのかわからなくて、excelで頑張ってたりしてました。 でもエンジニアならば、exce…

typescript導入したprivateなnpmパッケージの作り方

はじめに 開発の規模を大きくなってくると、共通化したコンポーネントを利用したいこともあると思います。 git submoduleをつかって共通部分を切り出すことも可能ですが、branchの変更忘れてしまうと反映されないので、個人的には好みではないです。 一方pri…

goで継承をつかう

go

はじめに goを勉強始めるとjavaなどで学習してきたオブジェクト指向の考え方を違う場面に出くわす。 たとえば、goでは継承できないことである。 しかし委譲を使えば、同じことを実現できるのでその整理をしようと思う。 仕様整理 下図のような関係を考える。…

述語論理をつかったSQL

sql

はじめに 僕は、SQLが苦手である。 普段使い慣れている言語とは別の考えがSQLには必要なのであろうと痛感している。 ということで、達人に学ぶ SQL徹底指南書を使って最近SQLの考え方を学習中。 今回は、SQLで数列を扱うの備忘録を残す。 達人に学ぶ SQL徹底…

DataGripでクエリの大文字化設定

sql

SQLのエディタ?は、Datagripを使うようになった(勉強中) その理由は、 1. キーバインドがカスタマイズできる 2. 補完が最強 3. フォーマット機能が優秀 にある。 さらに、クエリを自動で大文字化してくれることがわかったので 載せておこう。 Datagrip > Pre…

SQLの集合演算整理

sql

はじめに SQL は集合的思考が必要ということだが、和集合や差集合など求める集合演算の仕方は複数存在するようなので、一度整理しようと思う。 集合演算子形式 exist を使った述語論理形式 (外部・内部)結合形式 3パターンで考えてみた。 データの準備 まず…

TypescriptでSequelize してみる

はじめに 前回 Sequelize の一番基本的な使い方を紹介したが、typescript で記述可能ならば、以降 ts で書きたいなと思ったので、今回は typescript の環境を紹介したいと思う。 ts で記述するメリットは、型が使えることだけではなく、エディタからの候補表…

Sequelize入門

SequelizeというORMについて知識の整理のため、記録を残そうと思う。Databaseはmysqlを使用する。 今回は、 1. database作成 2. table作成 3. insert, update, delete という基本的なことの整理をしたい 1. databaseの作り方 databaseを作成するのは、sequel…

dockerでnginx を使ってリバースプロキシをたてる

概要 前回node プロジェクトの dokcer image を作成した。 express などで作成した node でサーバは well known port を使用できないので、80 ポートで HTTP 通信するには、nginx などの web サーバが必要になる。 今回はnginx でリバースプロキシのコンテナ…

node プロジェクトの docker image をつくってみる。

社内でAWS ECS を使うことになったが、そもそも dokcer image を作ったことがなかったので 調べてみた。 目次 node プロジェクトの用意 Dockerfile の作成と build image からコンテナ起動 docker-compose 起動 1. node プロジェクトの用意 typescript & Exp…

docker run -vとDockerfileのVOLUMEは違うのか?

はじめに 最近dockerについてプログラマのためのDocker教科書(以下教科書と呼ぶ)で勉強し始めた。 プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化作者: 阿佐志保,山田祥寛出版社/メーカー: 翔泳社発売日: 2015/11/20メデ…

jsでオブジェクト配列をつかった集合演算

js

はじめに jsで集合演算についてしらべてみた。 調べた限り集合演算の例は[1,2,3]と[2,3,4]の積集合をもとめるといったプリミティブ値の配列が多くて、オブジェクト配列をつかった 集合演算が見つからなかったので、残して見ようと思う。 問題(特定の本の返却…

flow-typedで型情報を管理しやすくしてみた

flowで型を導入後、毎回importするのが面倒だなと感じるようになってきた。 flow-typedをつかえば型情報をグローバルに定義できるようなので、これでimport文書く手間をカットしたり型情報をうまく管理できるのでは... ということで今回は、flow-typedをつか…

Prettierについて調査

最近エディタをsublimeからvscodeに変更しました。 その中でPrettierも適用することになったので、こいつのことを理解しようとおもうようになりました。 はじめはimport内のタブサイズが4になってたりと思うどおりに動かなくて断念かと思ったが、再インスト…

WebpackのdevServerを使ってもサーバと通信できるフロント開発がしたい

はじめに 自分はReactやReduxを使ってWebアプリを開発するときにWebpackのdevServerにお世話になる。devServerを使えば、ソース変更時に自動でブラウザをリロードしてくれて便利だからである。 しかし、devServerを使った場合、localhostで動かしてるwebサー…

Higher Order Componentについて調査

はじめに Higher Order Componentについて学習。 atomic Designと呼ばれるものを実現するよい手法なのだろうと感じ、 使い方を少し学ぼうと思ったので、その記録を。。。 ゴール MyButtonを拡張して、MyCustomButtonコンポーネントをつくる。 ポイントは、st…

React DnD tutorial翻訳してもっと理解を!!

はじめに React DnDは、Reactアプリでドラッグ&ドロップを楽に実装できるライブラリである。 React DnDのOverviewの翻訳を前回記述した。 そこで、Overviewを呼んだだけでは実装イメージがつかめなく、使い方がわからないということを指摘をした。 なので、…

React DnDの公式Overviewを訳して理解を深めたい!

React環境で、ドラッグ&ドロップ操作をどうやって扱えばよいのだろうかと思ってると、 React DnDというライブラリを見つけた。便利そうではあるが、いくつかのブログを見てもよくわからないし、DecoratorやHigher Order Componentの考え方も登場し正直難し…

webpackで.babelrcっているんだっけ?

他人のwebpackの設定をみてると人によっては.babelrcがあったりなかったりする。 どっちが正解なんだと思うことがあったが、別にbabelrcがあってもなくてもよい。 webpack.config.jsでbabelの設定するか、babelrcで設定するかの違いということがわかったので…

gulpを使ってReact Electron Webpack環境にLiveReloadを!

electron開発してると、毎回トランスパイルして起動というのが面倒だなと思ってくる。 webpackのHot Module Replacementを使えばもっと早くできるようだが、僕には理解できなかった。 だがしかし、gulpを使えばそれなりに実現できる!! とわかり挑戦してみ…

babelでトランスパイル

今回はいつも以上に基本的なこと。 webpackを使って複数のjsを単一ファイルにトランスパイルしてきたが、トランスパイルはbabelの仕事。 だからbabel単体を利用して、トランスパイルするにはどんな環境構築作業が必要なのかを備忘録として残しておく。 ただ…

jsでリファクタリングを学びたい(Nullオブジェクト編)

リファクタリングについて学びたく、「Java言語で学ぶリファクタリング」を読んでる。タイトル通り、Javaで記述されているが、js(ES6) + flowで書いてみて、リファクタリングの技術とflowの理解を深めようと思う. 今回取り上げるリファクタリング内容は、4章…

electronでキャプチャーソフトつくってみるpart2

キャプチャーソフトを作成中に、録画経過時間を表示する機能が必要になった。フラグのON/OFFでタイマーの開始・リセット出来るならば、他のアプリにも活かせるかもと思い、タイマーコンポーネントを作ってみた。 要件 タイマーつくる propsであるisRecordを…

electronでキャプチャーソフトつくってみるpart1

js

electronに最近はまってます(笑)。キャプチャーソフトも作れるということなので、 reactとmaterial-uiを練習かねて、つくりました。 electronのキャプチャー機能と動画保存機能を実装してみたかっただけなので、 ものすごく単純です。この調子で仕上げていき…

mochaでテスト実行時にflowの記述を自動で取り除く

はじめに mochaでテスト実行するときに、flowの記述が残されたままだとテストできない。 だから、前までは前処理としてflowの記述を取り除いたフォルダを作成し、 そのディレクトリに対してテストを実行させていた。 しかし、余計なフォルダを作成させずにmo…

electronでReactを使うためのwebpackの設定

js

はじめに electron。javascriptでデスクトップアプリケーションを作れるフレームワーク。 使ってみたかったけど、なかなかよい作りたいものも思いつかずsample demo appで遊ぶくらいでした。 最近ちょっと良いアイデアも思いついたので、思い切ってelectron…

eslintでflowの検証結果も表示させる

そんなにプログラミングするわけではないが、 javascriptは本当に色々変更が激しいなと最近感じてる。 今回は、eslintとflowを使って静的検証が行える環境構築手順を残そう。 eslintを実行させると、flowのチェックと結果を取得できるようにする 目次 eslint…

async/awaitの学習

以前Promiseを使ったループ処理について記述したが、これは再帰関数を利用していた。 普段扱いなれているfor文でループ処理はかけるのかなと感じていたが、 どうやらasync/awaitを使えばできることがわかったので、残しておく。 jQueryの$.ajaxからPromiseへ…

条件付き確率の話

今日は確率について。僕は数学は割と好きな方だったけど、確率にはあまりよい思い出はない。久しぶりに確率の勉強をしていて、気にかかることに出会ったし、数式使ってみたかったのでブログに載せようと思う。 プログラミングのための確率統計1第2章の冒頭に…