yuw27b’s blog

技術メモと雑記

JavaScript

JavaScriptでクリップボードにコピー(2022年版)

※ 2017年に書いた記事が、2022年現在では非推奨になっているAPIを使っているので、改めて。 変わったところ document.execCommand('copy')が仕様からなくなり、非推奨になりました(MDN)。今のところどのブラウザでも動作しますが、今後も動く保証はありま…

Web上のExcelファイルからデータを読み取る(Node.js)

備忘録。 const request = require('request'); const Excel = require('exceljs'); const getBuffer = (url) => { return new Promise((resolve, reject) => { request(url, {encoding: null}, (error, response, body) => { if (error !== null) { reject(…

ReactでModal windowを実装する

汎用コンポーネントも存在しますが、自作のミニマル実装コードです。ひとまずコード(スタイルなどは簡略化しています) import React from 'react'; import PropTypes from 'prop-types'; class ModalWindow extends React.Component { constructor(props) …

GCP Cloud FunctionsでPuppeteerを使う

1日1回スクレイピングしてきてSlackに流してほしい、みたいな簡単なやつなので、Firebaseまではいらない。Cloud FunctionでランタイムにNode.jsを選択→package.jsonとindex.jsを登録しておき、Cloud Scheduler->Pub/Sub経由で呼び出せばOK。 プチハマりどこ…

改行入りのテキストをReactでレンダリングする

改行が含まれてると分かっている時は、component内に関数を用意して、行ごとにpタグで囲む。または、brタグを挿入する const textWrap = (text) => { if (typeof text !== 'string') { return null; } return text.split('\n').join('<br />'); } 改行が2連続の場…

HighchartsをReactで使う

ReactなWebアプリケーション内に、Hightchartsでグラフを描画するときのメモ。基本的には、Hightcharts公式のReact用ラッパーライブラリを使えば良い。 GitHub - highcharts/highcharts-react: The official Highcharts supported wrapper for Reactnpmにあ…

カレンダーUIを実装するReact component

<Airbnb謹製のReact用カレンダーUIコンポーネントの紹介です>Reactで作っているWebアプリケーションにカレンダーUIが必要だったので、どんなのがあるかな、と検索したところ、いろいろありました。 例えばこんな: GitHub - clauderic/react-infinite-cale…

npmのoptionalDependenciesの使いどころ

npmのpackage.jsonの依存パッケージの定義には、よく使うdependencies、devDependenciesの他に、optionalDependenciesというのもあります。今まで存在を知らなかったのですが、「optional」という名のとおり、なくても問題ないとか、特定の環境でだけ必要と…

小さなJSライブラリ作った時に使ったもの

ピュアなJavaScriptで書いた JSのファイル数は10もない 使ったもの rollup.js Babel prettier ESLint UglifyES Jest あとGitHub -> CircleCIでビルドしてる。ビルドする時にCode Climateにテストスコアを送ってる。 今導入してもいいかも? TypeScript・・・…

JavaScriptでクリップボードにコピー(Chrome/Firefox/Safari10〜/IE9〜)

※2022/4/19追記:ここで使っている仕様は古くなり、非推奨になっているため、新しい記事を書きました。そちらを参照してください。 「クリップボードにコピー」はJavaScriptのみでは不可能だと、昔に思い込んだままだったのですが、HTMLの各種APIとJavaScrip…

SVGをReact.js/JSXで使う

この記事はSVG Advent Calendar 2016の19日目です。 去年に引き続きグラフを描いての参加です。 React × SVG React.jsなプロジェクトでSVGを描画したときのメモです。 React.jsでは、JSXという記法でJavaScriptコード内にHTMLタグを記述していきますが、SVG…

カレンダーUIを実装する依存なしのJavaScriptライブラリ

カレンダーUIを実装するJavaScriptライブラリの紹介です。 Webアプリ上の入力フォームに、日付を選択する項目を実装したときのこと。 input type="date" を使いたいのだけど・・・ HTMLのinputタグに、「type="date"」を指定すると、一部のブラウザではカレ…

SVGを描くJavaScriptライブラリ

この記事は、SVG Advent Calendar 2015 - Adventarの15日目の記事です。 チャートやグラフ用のJavaScriptライブラリはどれがいいんだろう? 2015年は「Ajaxで取ってきたデータを、SVGのチャートやグラフにして表示する」という作業をわりとたくさんやりまし…

JavaScriptのPromiseとarray.reduceを合わせて使う

順番に非同期の処理をしたい要素たちを配列に入れて、各要素に対してPromiseを返す関数を実行する。例)['a', 'b', 'c']という配列があったときに、それぞれの文字を2秒おきにコンソールに表示したい //これだと2秒後にほぼ同時に「a」「b」「c」がコンソー…