Issue Metrics Action で週に Close した Issue を毎週レポートとして出力する

Issue Metrics GitHub Action を使うと、Issue、Pull Request、Discussion に関するメトリクス(初回レスポンスまでの時間、クローズまでの時間など)を簡単に追跡・監視できる。 github.blog これを使って週ごと(スプリント)で Close された Issue のメトリ…

GitHub Projects で Status が "Done" または "Canceled" のすべての Issue を Close する

GitHub Projects で特定の列の Issue を自動で Close するワークフローが欲しくて調べたときのメモ。GitHub CLI でサクッと実現できると読んでいたんだけど API 叩かないと無理そうだった。 github.com Discussion のコメントを参考に Status が "Done" また…

チームの成長と向上を促すふりかえりの場を作るために意識していること

自分がスクラムマスターとしてふりかえりの場を設計するときに意識していることをまとめました。 1. ふりかえりを実施する目的を共有する 何のためにふりかえるのでしょうか?目的が腹落ちしていないと「ふりかえりの時間って無駄じゃないですか?」「ふりか…

useRefを使ってDOMノードを操作している子コンポーネントに親コンポーネントから ref を渡して DOM ノードを取得する

汎用コンポーネントを作っていると、フォーカス制御やキーボード操作のために ref を使っている子コンポーネントに親コンポーネントから ref を渡して DOM ノードを取得したい場面があります。 これは forwardRef と useImperativeHandle を組み合わせて、re…

サイボウズを退職しようとして次の転職先を探したらサイボウズになった話

この記事はサイボウズアドベントカレンダー17日目の記事になります。 こんにちは。サイボウズで働いているエンジニアのもやし丸 です。 エンジニアとして働き始めて今年で3年目になります。 入社1年目のときは自分の3年目の姿なんて全く想像できませんでした…

.execCommand(insertText...) .execCommand(insertHTML...) の代替実装を考える

JavaScript でカーソルがある位置に文字列を挿入したいときは execCommand を使用すると簡単に実現することができました。 developer.mozilla.org しかし、execCommand はブラウザ間での不具合も多く、現在は非推奨のAPIになっています。 今回は非推奨になっ…

debounce と throttle の React Custom Hooks を実装してみる

throttle や debounce は連続して大量に繰り返される処理を間引いて負荷を軽減させたりするときに使います。 今回はそれらの間引き処理を React Hooks で実装してみました。 react-use に useDebounce と useThrottle が実装されているので自前で実装する必…

画像の読み込みに失敗したときに代替画像を表示する [JavaScript/React]

まずは JavaScript で実装してみます。 <img id="image" src="https://" /> <script> const imgEl = document.getElementById("image"); imgEl.onerror = () => { imgEl.onerror = null; imgEl.src = "https://placekitten.com/200/200"; }; </script> 画像の読み込みに失敗したときに onerror が実行されます。…

GitHub Pages に Google Domains で購入した独自ドメインを設定する

GitHub Pages のドキュメントを読みながら独自ドメインの設定をするだけの話なのですが、この記事では初心者向けにもう少し詳しく解説します。 GitHub Pages サイトのカスタムドメインを設定する - GitHub Docs 用語 記事の中で頻繁に出てくる用語を先に説明…

LilyGo T-Wristband にQRコードを表示してみる

前回の記事の続きです。 Hello world 表示させるだけで終わってしまうのは勿体ないと感じたので Twitter と GitHub の QR コードを表示してみました。 勉強会に参加すると名刺交換することがあると思いますが、僕は不必要に名刺をバラ撒きたくない人なので、…

プログラミング可能なスマートウォッチ「LilyGO T-Wristband」を手に入れたので Hello world を表示してみる。

プログラミング可能なスマートォッチが販売されたということで何も考えずに即買いしました。 LilyGO T-Wristband https://pt.aliexpress.com/item/4000527495064.htmlpt.aliexpress.com 2020年1月に AliExpress で購入したのですが、某ウイルスの影響なのか…

Rでパッケージインストール用のディレクトリが作成できないときの対処方法

R

Rでパッケージをインストールするときは、まず保存先のディレクトリを作成する必要があります。このディレクトリの作成に失敗するとパッケージのインストールを開始することができません。 保存先のディレクトリは作成できているけど、何故かインストールに…

サイボウズに新卒入社してkintone開発チームに配属されてから1年経ったのでふりかえる

こんにちは もやし丸 です。2019年にサイボウズに新卒入社して、kintone開発チームでWebエンジニアとして働いています。 kintone開発チームに配属されてから1年経過したのでふりかえりを書きました。 自分が配属される時期に中途入社された sakito さん、 No…

cross-envで指定した環境変数がコード上でundefinedになるのをなんとかする

開発用と本番用で表示する View を切り替えたいときに環境変数を使うことがあります。 以下は yarn + webpack + React で環境構築して、環境変数をコードから参照して表示するViewを切り替えている例です。 import React from "react"; function App() { ret…

Jestでwindowオブジェクトをモックする方法

この記事では以下の Window.js と CheckHostName.js を使用します。 export const getHostName = () => { return window.location.hostname; }; import * as Window from "./Window"; export const isTwitter = () => { return window.location.hostname ===…

VSCodeで特定のディレクトリ以下の未使用import文をすべて削除する [Javascript/TypeScript]

ファイルの保存時に organize imports をしていれば未使用の import文 が commit されることはほぼないと言っても過言ではありません。 例: VSCode でファイル保存時に未使用の import文 を削除 & 自動ソートする設定。 settings.json に以下を記述する。 "e…

異なるDOMノードにレンダリングする2つの React Component 間で状態を共有する

結論 Portalを使う ja.reactjs.org 解説 既存のサイトを部分的に React に置き換えている場合、それぞれ異なるDOMノードにレンダリングするコンポーネント間で状態を共有したい場面に遭遇することがあります。 例えば、次のようなヘッダー、サイドバー、コン…

Chrome拡張でiframe内のDOMの変化を監視する

Chrome拡張を作っているとiframe内の DOM の変化を監視したい場面に遭遇することがあると思います。監視する方法はとても簡単です。 manifest.json に "all_frames": true を追記して、すべてのフレームにスクリプトを挿入するように設定します。そして、ifr…

OpenCVで1つのウインドウに複数の画像を表示する

表示させたい画像の画素の配列を結合して、imshow の引数に渡す。 import cv2 import numpy if __name__ == "__main__": catImg1 = cv2.imread("./cat1.jpg") catImg2 = cv2.imread("./cat2.jpg") mergeImg = numpy.hstack((catImg1, catImg2)) cv2.imshow("…

Javaのジェネリクスの型安全について自分なりにまとめてみた

Effective Java 第3版を読んでみたところ、自分がジェネリックスの型安全について理解できていないことがわかったのでまとめてみました。 はじめに Javaの型変換 アップキャスト ダウンキャスト ジェネリクス型 非境界ワイルドカード型 ジェネリクス型の継承…

Windows版のRでパッケージのインストールに失敗するときの対処法

R

Rはパッケージのインストールをネットワーク経由で行います。 メニューの「パッケージ」→「パッケージのインストール」もしくはinstall.packagesを端末に打ち込んで、CRAN(Comprehensive R Archive Network)から各種パッケージをダウンロードします。 この…

もやしの市況をスクレイピングしてTwitterのプロフィールに市場価値として掲載してみた

取り組んだこと 新潟市の中央卸売場のもやしの市況状況日報をスクレイピングして中値から200gあたりの市場価値を求めてTwitterのプロフィール欄に反映させるようにしてみました。 TwitterAPI使ってツイの名前のところで絵文字スロットやってる人いたからそれ…

DIGI XBEE SENSORを使ってみた

研究室で研究をしていたら教授に「何かに使えるかもしれないから動かしてみてほしい」と言われて古のDIGI製品を渡された。いつもなら「あw僕忙しいんでwww」と言って断るのだが、頼まれた日の前日にとんでもないミスをして教授に迷惑をかけてしまっていたの…

fstabの設定を間違えてRaspberryPiが起動しなくなったときの対処方法

RaspberryPi3 設定手順を書いているときに自動マウントの設定を間違えてしまい、RaspberryPiが起動しなくなるということが起こりました。/etc/fstabの設定ミスを修正すれば解決するのですが、ファイルシステムがext4なので編集するにはLinuxマシンが必要です…

RaspberryPi3 設定手順メモ

RaspberryPiの設定手順を毎回忘れてしまうので記録しておくことにしました。 OSのダウンロード RASPBIAN STRETCH LITEをダウンロードする zipを解凍する $ unzip 20**-**-**-raspbian-stretch-lite.zip OSをSDカードに書き込む 接続されているデバイス名を表…

esp8266でMQTTを使ってみる

MQTTを利用してesp8266とRaspberry Pi間でメッセージの送受信をしてみた。 使用した物 ・esp8266 ・Raspberry Pi2 ・タクトスイッチ×1 開発環境 ・ArduinoIDE 1.6.12 ・Python2.7.9 (Python3.4.2でも動作確認) ・sango ネットワーク構成図 MQTTブローカーを…

ESPr Developer(ESP-WROOM-02開発ボード)を書き込みモードに切り替える

ESPr Developer(ESP-WROOM-02開発ボード)でLチカしようとしたら以下のようなエラーが出て書き込みができなかった。 warning: espcomm_sync failed error:espcomm_open failed error:espcomm_open failed どうやら書き込みモードに切り替わっていないらしい…

Wio NodeをArduinoとして動作させる

Wio Nodeとは Wio NodeとはAndroid/iPhoneの専用アプリ、WioLinkを経由してセンサーやモーター等を動作させることが可能なWifiモジュールです。はんだ付けやプログラミング未経験の人でも、簡単にIOTを体験することができるようになっています。 通常はWioLi…

HelloWorld

ブログはじめました。主に備忘録です。よろしくお願いします。