とろろこんぶろぐ

かけだしR&Dフロントエンジニアの小言

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

JSConf JP 2019 参加報告

はじめに 昨日今日と JSConf JP 2019 に参加してきたので、聴講したセッションの内容を紹介します。 本記事は Recruit Engineers Advent Calendar 2019 1日目の記事です。 JSConf JP 2019 とは JSConf JP は世界的な JavaScript Conference である JSConf の…

Chrome Dev Summit 2019 参加報告

Chrome Dev Summit 2019 とは Chrome Dev Summit is an annual conference where developers can learn about the latest tools and updates coming to the Google Chrome browser. Chrome Dev Summit は、開発者がGoogle Chrome ブラウザに関する最新のツー…

制約と誓約

Nihonbashi.js で登壇した AMP 開発のつらみを発表した。 そのときのスライド。 speakerdeck.com

GCP の Cloud Function にアクセス制限をつける

GCP の Cloud Function は誰でも呼び出せる GCP の Cloud Function で HTTP 関数を作成すると、デフォルトでは誰でもアクセスできてしまう。 (9/25現在。今後変わるらしい。) アクセス制限をつける 自身のアカウントに cloudfunctions/admin 権限がついて…

next.js v8 と v9 で amp 化の動作の違い

Next.js で AMP ページを作る Next.js では簡単に AMP ページを開発することができる。 Next.js v8 での方法 withAmp の HoC が用意されているので、関数でコンポーネントをはさみこむ。 import { withAmp } from ‘next/amp’ function Home() { return <p>Welco</p>…

amp-validator chrome extension は複数回リクエストが走る

AMP Validator のChrome 拡張 Chrome 拡張で AMP validator が提供されている。 chrome.google.com 閲覧しているページに AMP 版のページがあるかわかったり、 開発している AMP ページが AMP-valid かどうか判断できる。 しかし、リクエストが多発する... n…

css-loader で ValidationError: CSS Loader Invalid Options

ValidationError: CSS Loader Invalid Options nuxt を v2.9 にあげようとしたら css-loader の validation error が出てしまった。 ERROR in ./.nuxt/components/nuxt-loading.vue?vue&type=style&index=0&lang=css& Module build failed (from ./node_modu…

Next.js + AMP + typescript + styled-components ( + storybook)でやったことと気をつけること

Next.js + AMP + typescript + styled-components ( + storybook)でやったことと気をつけること Next.jsでAMP化するときは、 pagesのコンポーネントに対して、nextAmpでwithAmpをimportし、withAmpで囲う。 import { withAmp, useAmp } from "next/amp"; wit…

jest + typescript で 'describe' is not defined

問題 jest + typescript で、eslintが以下のエラーを出力した。 'describe' is not defined. eslint(no-undef) typescriptだと @types/jest を入れろと言われるが、eslint ではそれだけではダメだった。 解決策 eslint-plugin-jest を入れる必要があった。 w…

JavaScript の Async/Await が Promise より優れている7つの理由【翻訳】

本記事は英記事を勝手に翻訳したものです。 Mostafa Gaafar さんの元記事 dev.to 概要 async/await は NodeJS7.6 で導入され、現在も全てのモダンブラウザでサポートされています。私はJSにおいて2017年から1番の変更だと思っています。もしそう思われない…

Vue.js で Drag & Drop 可能なソート機能な UI を作るには?

概要 Vue.js で drag & drop できる UI が作りたいときどのライブラリを入れてどう作ると良いか調べたのでまとめておく。 TL/DR Vue.Draggable が一強。迷ったらこれを使っておけばよさそうではある。 ただ、だいたいのライブラリは SortableJS を使って作ら…

JDK11 で intelliJ でテストカバレッジが取れない?

Java で テストカバレッジを取ろうと思い、 IntelliJ でおもむろに Run 'All Tests' with Coverage したら、こういうエラーが各テストで発生した。 java.lang.ClassFormatError: Nest-host class_info_index 85 has bad constant type in class file app/mod…

java.sql.SQLNonTransientConnectionException: Too many connections

黙って max connections を増やす。 mysql -u root -p mysql> set global max_connections = 1000;

Cypress 導入の方法まとめ

Cypress 導入の方法まとめ Cypress で E2E テストを構築したので作り方をまとめておく。 www.cypress.io Cypressのいいところはドキュメントがしっかりしててサンプルも多く書き味も悪くない。puppeteerほど柔軟ではないもののやりたいことは大抵実現できる…

スタディサプリ English を100日続けてみたレビュー

概要 スタディサプリEnglishを100日(3ヶ月強)継続したところで率直な感想とレビューを書いてみようと思う。 はじめたきっかけ そもそもの英語のレベル感でいうと、TOEICは700点程度で、調子いい時には日常会話ができる程度。 教科として、英語はどちらか…

styled-componentsでpropsが空オブジェクトでも問題ないのはなぜか?

styled-componentsでpropsから値を指定する styled-components でよくこういう書き方をすることがある。 const StyledInput = styled.input` padding: 20px; width: ${({width}) => width}; `; 以下のように props から width の値を伝搬して値を指定するこ…

転職した方がいいかYES/NOチャートを作った

こんな感じ ※ 個人の感想です。

AMP化するまでの5つの手順

概要 AMPは何なのかなんとなくわかったけど、結局何すればいいの?というときのためのAMP化までの工程を5つの手順にまとめる。 0. 準備 まずAMP化したい記事やポストがあることが前提。 1. AMP化のおまじない AMP化するためのおまじないを書く。 htmlにAMP…

なぜ人は不安になるのか考察してみる

不安に感じやすい人へ 僕は何事にも不安に感じやすい人だけど、それに対してどういう考え方で行動しているかという話をしたので、ここにそのときのことを書き残しておく。 人は誰しも不安になる まず「不安」を感じない人はいない。誰しも不安を感じたことは…

GAE(GCP)のデプロイに失敗する

概要 GAE(GCP)のDockerビルドにある時から失敗した。 エラーログ Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 1 file to Google Cloud Storage ═╣ ╚════════════════════…

【2019年度】世界のWeb系テックカンファレンス

概要 2019年度版僕が興味のある大きいWeb系カンファの時期と場所まとめ。 まとめ Facebook F8 4/30 - 5/1 サンノゼ www.f8.com Google I/O 5/7-9 カリフォルニア events.google.com React Europe 5/23-24 パリ www.react-europe.org Apple WWDC 6/3-7 サンノ…

webpackのパフォーマンスヒントが厳しい

概要 webpackのbundleサイズのパフォーマンスヒントが厳しい。 244KBはさすがに厳しい。 WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. Assets: index.js (449 KiB)…

無料でロゴつくるやつ

概要 ちゃっとロゴを作るのに便利 logo-maker.stores.jp シンプルで良い感じ logo.squarespace.com らんらんらんちはこれ hatchful.shopify.com 使った事ないけど以下もよさそう www.777logos.com editor.freelogodesign.org

nuxtでaxiosのhostの設定について

概要 nuxtでクライアント側から$axiosでAPIアクセスする際に、一番ベストなホストの設定の仕方はどうすべきなのか調べた。 nuxt-axios-module nuxt.config.js で以下のようにmoduleを設定すれば、nuxtのfetch(or asyncData)で$axiosを呼ぶことができる。この…

nuxtでクエリが変わってもfetchが動かない

概要 nuxtは pages 配下で fetch メソッドを用意することで、ページを読み込む手前でページに必要なデータをfetchすることができる。 しかしページからページへの遷移では発火するが、キーワードやページ番号といったクエリが変更しても fetch は発火しない…

nuxtで位置情報取得するサービスを作る

概要 nuxtのSSRモードで位置情報取得は行えないので、SSRを行わないようにする。 具体的には、 <no-ssr> で囲むことで該当箇所がCSRになるので、 getCurrentPosition をクライアント側で呼び出すことができる。 該当するコード <template> <div> <no-ssr> <section class="container"> ... </section> </no-ssr> </div> </template> <script> function getCurrentPosi</no-ssr>…

Vue+Element-UIのinputで@keyup.enter.nativeは日本語変換でも発火する

概要 Vue.js+Element-UIで作っていたformのinputで、Enterを押したらsubmitを発火するようにしたくて、@keyup.enter.nativeを使った。 <el-input-number v-model="value" placeholder="値" clearable size="small" style="width: 150px;" @keyup.enter.native="onEnter"> これでオーケーかと思いきや、 @keyup.enter は日本語変換でも発火してしまった。 以下の記事によると、 [Vue.js] 日本</el-input-number>…

今更ながらtypescript+golangでgRPCに入門した

gRPCに入門した 入門したコードは以下にある github.com 参考にしました qiita.com qiita.com 構成 ちょっとレポジトリのフォルダ構成が雑でわかりづらいですが、 フロントエンド(BFFの想定)はtypescript、バックエンドはgolangでAPIが作られることを想定…

Vueコンポーネントのwebpackのproductionビルドでstyleタグが消える

発生した問題 vueコンポーネント(SFC)を作成し、webpack v4でproductionビルドするとstyleタグの情報が消えてしまう問題が生じた。 原因 package.jsonで sideEffects: false を定義していた。 これによりvueコンポーネントのstyleタグがtree shakingされてし…

年末年始にバンコクに行ったときにやった方がよかったこと

概要 タイ・バンコクで2018-2019年の年越しをしたので、そのときにやったこと、特にやってよかったことなどをまとめておく。 基本情報 日程:2018/12/28 - 2019/01/02 渡航: NRT → BKK / BKK → HND 総計:25万円程度/人 やったこと 航空券とホテル 11/10にE…