development

A collection of 17 posts

Hardhat を使った Ethereum スマートコントラクト開発メモ
tech

Hardhat を使った Ethereum スマートコントラクト開発メモ

本記事では、Hardhat を使った Ethereum スマートコントラクト開発について紹介する。Hardhat はスマートコントラクト開発に必要なものが揃った開発環境であり、プロジェクトテンプレートの生成、コントラクトのコンパイルやシミュレーター上でのテスト、デプロイのいずれをも `hardhat` コマンドを通して行うことができる。さらに、TypeScript をサポートしており、TypeScript 版のテンプレートを生成できる上に、typechain を使って、コントラクトに対応する型定義ファイルを出力して開発に利用できる。

  • mecab
    mecab
不動産サイトで坪単価計算を簡単に計算するブラウザ拡張を作った
development

不動産サイトで坪単価計算を簡単に計算するブラウザ拡張を作った

ここ2年間ほど無限に不動産サイトを見ていて、最初は価格しか見ていなかったわけだけど、最終的には毎回坪単価を計算するタイプの人間になってしまった。 毎回電卓を叩くのはめんどくさいので、ブラウザ拡張を作った。名前はそのまま「坪単価計算」という。下記からダウンロードできる。 👉 https://misosi.ru/tsubotanka 面積と価格を選択すると、右クリックメニューから坪単価を計算できるようになる。(現代人向けに平米単価も出る。)実際に動く動画は以下。 元々は Suumo とか Homes のような特定のサイト向けに坪単価を自動で表示するような拡張にしようかと思ったが、ページがリニューアルされたり HTML の構造が変わったりすると使えなくなるし、その変更に追従するのもめんどくさいので、様々なサイトで汎用的に使えるものにしようと思った結果、このような拡張となった。価格と面積さえ選択できれば計算できるので、マイナーなページとか、

  • mecab
    mecab
development

Flow JavaScript SDK で Script を実行してメインネットからデータを取得する。

この記事では Flow メインネットから Flow JavaScript SDKを使ってデータを取得する方法について述べる。 データを取得する方法にも、ブロックやトランザクションを直接指定して記録されたデータを読む方法や、コントラクトが発火させるイベントを取得する方法などいくつかがあるが、ここでは Script を実行してデータを取得する。

  • mecab
    mecab
ghost

Ghost を v0.1 系から v3 系に移行した。あるいは CWM (CJK Writes Matter) について。

‌ このブログは Ghost というブログシステムによって稼働しているが、遙か昔、正式リリース前の v0.1 系 の時に入れたままで、シンプルなブログシステムとしては良く動いていたのもあってずっとアップデートをサボっていた。 しかし、リンクのついた画像を配置した場合に AMP 用のページで画像が表示されない問題に気づき、これは実はテンプレートの問題だったかもしれないのだが、この機会に最新版までアップデートしてみることにした。すんなり行ったのでやり方を記録しておく。 なお、基本的には公式の方法に従っている。まず v0.1 系から v1 系に移行し、それから v3 系に移行した。 なお、CJK Writes Matter という煽りに釣られて来た読者は感想の項を読めば良いかもしれない。 前提 現在、Ghost が /app/ghost/ にインストールされているものとし、移行後も同じディレクトリで動かすものとする。APIの変更により、テーマも移行するためには手動でテーマのファイルを修正する必要があるが、今回はテーマの移行は諦めることにする。

  • mecab
    mecab
tech

Vetur を複数のルートフォルダを持つワークスペース上で正しく動作させる方法

TL; DR Vetur を動作させたいフォルダをワークスペースの先頭に移動させると良い。 (adsbygoogle = window.adsbygoogle || []).push({}); 本文 Vetur は Visual Studio Code 用の、Vue プロジェクトのための拡張機能だ。これは Vue コンポーネントのためのシンタックスハイライティングやフォーマッティング、Linting などを行ってくれて便利だ。しかし、複数のルートフォルダを持つプロジェクトでは、期待する設定ファイルを読み込まず、上記の機能が正しく動作しないことがある。 以下に例を示す。 上記の画像では、個人的に作っているプロジェクトのビューの一つだが、@/... で始まるパスが VSCode 上で解決されておらず、エラーが出ている。さらにこのために関連するモジュールについて効かなくなっている。参照されるべき tsconfig.json には "paths": { "@/*": [ "

  • mecab
    mecab
ホットクックのレシピを検索する Slack bot を作って、副産物としてホットクックレシピ検索ライブラリができた。
development

ホットクックのレシピを検索する Slack bot を作って、副産物としてホットクックレシピ検索ライブラリができた。

ホットクックという、シャープが販売している自動調理鍋があって、これは神の調理器具だ。材料を切って調味料とともに鍋の中に入れてメニューを選択すれば、いつの間にか料理が完成している。しかもおいしい。さらに Wi-Fi 接続モデルでは、公開された新しいレシピが随時ダウンロードされていく。ダウンロード機能の件を抜きにしても、Wi-Fi があるモデルのほうが画面も見やすく操作しやすいと思うので、どうせ買うなら Wi-Fi 版を買った方が良いと思う。 現代の三種の神器として、ホットクック・ルンバ・食洗機を入れていいのではないかと個人的には感じている。 レシピはホットクックの公式サイトで検索できるが、わざわざブラウザを開くのもめんどくさいので Slack bot として動き、メンションを投げると検索したり、レシピの詳細を表示してくれるプログラムを Node.js 用に書いた。

  • mecab
    mecab
development

TypeScript コードのテスト時、ビルド後のファイルもテストする

TypeScript でコードを書いた際、ソースのテストは通っていても、何かの弾みでビルドされたコードが壊れていないことを念のために確認しておきたいという需要はある。とくにライブラリを作っていて、npm に公開する場合など、publish 前に検証するのは良い考えだろう。 このために、同じテストコードをソースと生成物それぞれに対して適用する方法を考える。つまり、以下のような conditional import を行いたい。 // このコードは動かない。 if (process.env.TESTMODE === 'dist') { import { FooClass, FooString } from '../dist/Foo'; } else import { FooClass, FooString } from '../src/Foo'; } describe('Test foo', function() { it('works', function(

  • mecab
    mecab
firebase

Firebase Authentication のデータを別プロジェクトにコピーするスクリプトを書いた

表題の通り、Firebase Authentication のデータを別プロジェクトにコピーしたい状況が起こったので、それを行うためのスクリプトを書いた。 copy_firebase_auth.sh 使い方 Firebase CLI でコピー元、コピー先それぞれのプロジェクトにログインする Firebase の Web コンソール上でコピー元のハッシュパラメータをコピーし、スクリプトと同じディレクトリに .hashParameter として保存する PROJECT_FROM={コピー元プロジェクトID} PROJECT_TO={コピー先プロジェクトID} copy_firebase_auth.sh を実行する 解説 基本的にやっていることは単純で、Firebase のCLI にはユーザーのデータをディスク上に書き出す firebase auth:export と、書き出されたファイルから Authentication にデータを読み込む

  • mecab
    mecab
tech

Cloud Firestore エミュレータ を concurrently と一緒に使う

概要 Cloud Firestore エミュレータ を コマンドの並列実行支援モジュール concurrently と一緒に使う場合、コマンドを少し工夫しないと期待通りに動作しない。以下を行う必要がある。 エミュレータの起動の際、firebase serve --only firestore < /dev/null とし、標準入力を /dev/null から取るようにする。 concurrently の--success (-s) オプションを適切に設定する。 期待通りに動作する npm script の例を以下に示す。 "scripts": { "test": "concurrently --success=first --kill-others -n 'emulator,

  • mecab
    mecab
development

Firebase Hosting のルーティングを噛ませて webpack-dev-server などの静的コンテンツホストを使うためのプロキシ

2019/1/14 午前5:57 (JST) provider のコードを修正。 概要 Firebase Hosting 用に設定したURL書き換えを利用しつつ、webpack-dev-server などの他の開発サーバーからコンテンツの取得をしたい。この問題に対して、Firebase Hosting の開発サーバー (firebase serve) が内部的に利用している superstatic を使い、URLを書き換えた上で別のサーバーからコンテンツを取得するようなプロキシを作ることで解決した。 完全なコードは https://gist.github.com/mecab/9890416390e8c5a2c42547823d252e20 で参照できる。 (adsbygoogle = window.adsbygoogle || []).push({}); 背景と問題 Firebase Hosting は Google が提供する静的コンテンツのホスティングサービスだ。コンテンツを用意して適切な設定を書けば、そのコンテンツをHTTPで取得できるように

  • mecab
    mecab
development

TWESDKでmallocみたいな動的メモリ確保をする

概要 ミーハーなので最近はIoTみたいなことをしている。簡単な無線通信をしたくて、TWESDKを使ってMonoStick(旧TocoStick)で動くプログラムを書いているのだが、動的にメモリを確保する方法を見つけるのに苦労したので記録しておく。 やりたいこと いわゆるmallocを使った動的なメモリ確保。よくあるやつ。 #include <stdlib.h> #include <string.h> void func(void) { uint8 bufLen = 16; char* buf = (char*)malloc((sizeof char) * buflen); // ここ strcpy(buf, "foobar"); } TWESDKで開発していると、上記をやってもmallocがメモリを確保してくれず、常にNULLを返してくる。 解決方法 #include

  • mecab
    mecab
Emoji に関する詳細情報を表示するコマンド、emspect をリリースしていた。
development

Emoji に関する詳細情報を表示するコマンド、emspect をリリースしていた。

この記事は絵文字 / Emoji Advent Calendar 2016の20日目だ。 概要 emojiに関する詳細情報(コードポイント、名前[1]、キーワード、GitHubのショートコードなど)を表示するコマンド、emspectをリリースした。Node.jsで書いてnpm に公開した。GitHubで開発を進めている。 $ npm install -g emspect でインストールできる。 使い方は $ emspect --help 参照のこと。 作った理由 絵文字に関するコマンドは色々あるが、だいたいは検索とか入力支援

  • mecab
    mecab
let's encrypt

SSL証明書更新ついでに Let's Encrypt を導入した。

背景 先日12月15日からこのブログで使っているドメイン用のSSL証明書が失効してしまっていた。ということで更新作業を行った。 これまで StartCom が運営する StartSSL というサービスで無料の証明書を取得して運用していたが、Firefox や Chrome では新たに発行された証明書が信頼されなくなるということに気づいた。どうやら不正な日付の証明書を意図的に発行したり、同じく認証局を運営する WoCert から買収されたことを公表しなかったりと、不祥事を起こしたために信用を失ったことが原因らしい[1][2]。 そこで、最近よく耳にするLet's Encrypt に乗り換えることにした。Let's Encrypt は非営利団体である Internet Security Research Group によって運営される無料でオープンな認証局だ。特徴として、Automated Certificate Management Environment (ACME) プロトコルに対応しており、対応するソフトウェアを利用することで、ドメインの認証から公開鍵基盤の展開を自動で行うことができる点がある。すなわち、WebサイトをSSL対応させる場合、一般的には ドメイン認証を行い(

  • mecab
    mecab
3行で服喪する
development

3行で服喪する

(2016/10/17 10:14 更新: ベンダープレフィックスの必要性を追記) 先日タイ国王が崩御されたが、これを受けてタイ航空をはじめ、多くのタイ関連Webページがモノクロ化されて喪に服しており話題になっている。タイ国政府観光庁の日本向けサイトもモノクロになっていた。 タイ系企業の服喪・自粛っぷりがスゴイ!軒並みサイトがモノクロ化。タイ航空に至ってはプミポン国王が雲の上で手を振っているし…!30日間の娯楽禁止令も出された模様。愛されているなぁ。 pic.twitter.com/Q0wUXA0A5a — USHISUKE (@USHISUKE) October 14, 2016 (adsbygoogle = window.adsbygoogle

  • mecab
    mecab
siggraph2016_colorization を公開してからの大量のアクセスを捌くためにやったこと
development

siggraph2016_colorization を公開してからの大量のアクセスを捌くためにやったこと

背景 前回の記事で書いた、早稲田大 石川研の方々の白黒写真に着色するプログラムをWebで動かすサービスを公開したところ、予想以上にバズって驚いている。まさかITMediaに、加えてねとらぼの方にも掲載される日が来るとは夢にも思わなかった。ちょっとバズったら嬉しいな〜という下心が無かったといえばそんなことはなく、それでTweetするボタンをつけてみたりしたが、まさかここまでとは。という心境だ。 おかげさまで、公開からの5日間(6/5〜6/9)で3万人近いユニークユーザに訪問していただき、13万を超えるページビュー(PV)を記録した。ありがたい限りだ。 一方、急なアクセスの増大に対して、サービスを安定させて動かすためにいくつか改良を行った。私個人が作ったこれまでのサービスはだいたい閑古鳥が鳴いているし、業務でもだいたいコンセプト実証のためのコードを書いているので、これまでトラフィックやパフォーマンスの問題に直面することはなかった。今回アクセスが増えるのを横目に見ながら、

  • mecab
    mecab