Home About
kotlin script が便利 Javaのライブラリも使える

kotlin が気軽に使える kotlin script 便利です。 インストール方法や使い方の詳細はこちら Kotlin Scripting Examples: kotlin-main-kts usages をご覧ください。

kotlin 関連のインストールがされている前提ですが、以下のように kotlin script を実行できます。

» Read More
スターバックスコーヒーのコースターの正規品がほしい

starbucks-coffee-coasters

左が最近メルカリで購入したもの。 右が 20年ほど前に自分で購入した本物。 入手してから気づいたのだが、これはどうもレプリカ・・・というか偽物な気がします。 本物か偽物か確認しようがないのですが。

落札時には偽物の可能性を考えたことがなく安易に落札、ちょっと残念に思っています。 使い勝手は問題ないのですが。

» Read More
Node.js + Underscore でcountif を使って2つのリストから重複した要素のみのリストを作り出す

二つのリストから countif をつかって 両方のリストに重複して含まれている要素のみを取り出したリストをつくる.

これを Node.js + Underscore で実装した。(覚え書き)

» Read More
Excel の countif 関数的なものをGolangで実装した

二つのリストがあり、 (1)両方のリストに含まれているもの、 (2)はじめのリストにだけ含まれているもの、 (3)あとのリストにだけ含まれているもの、それぞれを計算する必要が発生。 エクセルでそれを行うには countif を使う。

こんな風に:

Excel

これを Golang で実装した。(覚え書き)

» Read More
関数型オブジェクト指向プロラミングを Golang に翻訳する

関数型オブジェクト指向プロラミングを JavaScript に翻訳する というエントリーを2年前に書いた。 Haskell のオブジェクト指向的なコードを JavaScript に書き直したエントリーだが、今読み返してもいまいちピンとこない。 ならば Golang で書き直してみよう。 Golang であれば、JavaScript と違って型を明示的にコード中にかけるので、わかりやすくなるのではないか?

» Read More
Golang や Kotlin で関数の型を定義する

Go言語では first class functions とやらで、関数はファーストクラスオブジェクトであり値のように使うことができる。 そして、この関数の型(どんな型を引数にとってどんな型を返す、という情報)に名前をつけることができる。

» Read More
ラムダ(式)を javascript と kotlin script と golang で使う

パーサーコンビネータについて調べていて、 そもそもその元になる概念としてコンビネータがあることを知る(いまさら?!)。 つまり、パーサーコンビネータはいろいろあるコンビネータの中の一つ。 そして、いろいろあるコンビネータの中でもっとも有名なのが Y コンビネータとか Z コンビネータらしい。 そして、コンビネータを構成するパーツの一つがラムダ(式)とか無名関数であると。

名前付き関数はいつも使っていて、そして名前無し関数(無名関数)も結構使う。 では、ラムダ(式) と無名関数ってイコールじゃないの? と思って調べるもよくわからない。

Wikipedia によると: 「プログラミング言語における無名関数(英語: anonymous functionあるいはnameless function)とは,名前付けされずに定義された関数のことである.無名関数を表現するための方法には様々なものがあるが,近年主流となっているのはラムダ式による記法である.」 ということで、ラムダ式(という概念)をプログラム言語で表現するときに使うのが無名関数(または匿名関数)と考えて問題なさそう。

パーサーコンビネータや Yコンビネータを理解するための最初の一歩としてラムダ式を把握する。

» Read More
ExtendScript から https にアクセスする

ExtendScript には Socket があるので、http のように SSL でない ウェブリソースにアクセスすることができる。 しかし、SSL 化された https のウェブリソースにはアクセスする方法がない・・・と思っていたのだが、 なんと macOS では curl を経由すれば簡単にできることが判明した。

Windowsの場合も VBScript を経由することで実現できるようです。 詳しくは restix をご覧ください。

wttr.in with vscode

» Read More
ExtendScript で Underscore.js を使う(その2) webpack 編

ExtendScript で Underscore.js を使う(その1) rollup 編 で rollup + babel + Underscore.js を試したのだが、 rollup を webpack に差し替えての Underscore.js を試したのでその備忘録。

» Read More
ExtendScript で Underscore.js を使う(その1) rollup 編

Node.js で ExtendScript する話(パート3) ES6 Javascript 記述を使いたい で node.js を使ってモジュールを解決しつつ、アロー関数や const let などのES6 Javascript 記述を使って書けるようになった。 そこで、次に Underscore.js を利用した ExtendScript をコーディングすることを考えます。

実のところ単に Underscore.js を使うだけならば、ExtendScript 標準の @include ディレクティブを使うことで普通に利用できます。 しかしこの方法では、 (1)Underscore.js のファイルを常に本体のファイルとともに配布する必要があり面倒、 (2)Underscore.js を使う側のアプリケーションコードで、ES3レベルの Javascript しか記述できない、 という2つの問題があります。 Node.js + rollup + babel を使う方式でこの問題を解決しましょう。

» Read More
Node.js で ExtendScript する話(パート4) webpack アゲイン

Node.js で モジュールを使って ExtendScript するために

その後、さらに調べてみると、 パート1で不都合があった webpack で、オプションを適切に指定することで、 ExtendScript用のコードにバンドルできることがわかりました。

Node.js ではさまざまなツールの組み合わせが存在していて、自分の目的にあうツールがどれなのか・・・という。 アプリケーションコードを書く前段階での試行錯誤が半端ないですね。

» Read More
Node.js で ExtendScript する話(パート3) ES6 の Javascript 記述を使いたい

実のところ、 パート1パート2は、この ES6 の Javascript 記述で ExtendScript 用のコードを書くための前準備であった。

ここまでで、モジュールを使ってコードを書けるようになり、rollup により、それらのコードを一つのファイルにまとめるところまでできた。 あとは、このコードをいわゆるトランスパイラと呼ばれるコード変換ツールにより、ExtendScript として機能する Javascript に変換します。 このトランスパイラは定番の babel を使います。

» Read More
Node.js で ExtendScript する話(パート2)

パート1では、webpack を使って、モジュールを一つのファイルにまとめていました。 しかし、この方法では、webpack により、ExtendScript で実行できないjavascript記述が追加されてしまう不都合がありました。 そこで モジュールをひとつにまとめる機能を webpack の代わりに rollup を使って解決することにします。

» Read More
Node.js で ExtendScript する話(パート1)

Web関係のJavascript 開発では、Node.js を使って モジュールに分割して開発をしていく。 これを InDesign 用の ExtendScript でもできるようにしたい。 もちろん、ExtendScript にも @include 記述により、モジュールを使うことはできる。 しかし、その場合できあがったコードを配布するときに、依存しているモジュールファイルも一緒に渡す必要が生じる。 これを避けたい。配布時には単にひとつのファイルだけで完結したい。

» Read More
Golang, listFiles 指定のディレクトリ内のファイルまたはディレクトリを列挙する(改良版)

Golang で listFiles する方法 の改良版。

» Read More
Thinkpad X1 Nano 使用開始から 2ヶ月経過 / 今オーダーすると納期が来年?!

Thinkpad X1 nano

この夏、Lenovo で BTO のマシンをオーダーしたら納期が来年の予定になった、という記事がありました。 Reddit の r/thinkpad でも 納期が 2022年4月になっているという投稿があったので、半導体不足のせい? 自分の場合は、Thinkpad を 6月1日にオーダーして、当初は一ヶ月程度で納品という表示だったのですが、 途中で、納期が延びて 9月になっていた時期もありました。 しかし、その後また何度か納期表示変更があり、結局7月上旬に到着、 おおむね当初の納期見積りの通りでした。

» Read More
Golang, 名前付きタイプにメソッドを生やす

Golang では named type に対して method を生やすことができる。 これが Java などでクラスがあると便利だった機能の代替として使える。

» Read More
Golang, アイテムを日付でソートしたい

Golang でのソート処理をメモ。

» Read More
Golang, リストを n 個ごとに分割してサブリストをつくりたい

このサイトのエントリーを全部取得してリストにして、それをたとえば10エントリーごとに分けてページネーションしたい、のような場合の話。 元のリストから n個ごとに分割したサブリストをつくりたい、というケースは結構ある。

» Read More
自宅回線を Rakuten UN-LIMIT から楽天光 に乗り換え

回線を ADSL から Rakuten UN-LIMIT に乗り換え からの楽天光への乗り換えです。 OCNモバイルONEを契約しているので、月額費用を比較すればOCN光を選択するところなのですが、 1年無料の3年縛りの楽天光キャンペーンに乗っかりました。 相手の策略に落ちた感がありいい気はしないのですが、光コラボレーションなので、時が来たらOCN光に切り替えるのもさほど苦労はなかろうと。

» Read More
InWin Chpoin Mini-ITX ケース レビュー

開発用メインマシンとしての Ubuntu サーバに Fractal Design の Define Nano S ケースを使っていたのですが、 集中できる環境づくりのための一環として机周りのものを減らすために、 もっと小さいケースに変更しよう!と思い立ち、InWin の Chopin にしました。

Chopin シリーズには Chopin と Chopin Pro があり Pro の方が付属電源の品質がよいので、そちらも 検討したのですが、日本では入手が難しいようです。 結局、入手が簡単な 普通の Chopin を購入しました。

InWin Chopin Case

Mini-ITX のマザーボード用で、この Chopin のように小さいサイズのケースはほぼこの製品一択のようです。 とても気に入ったので、後継機種が出るようにレビューを書きます。

» Read More
Golang, マップの使用例

ポケモンのタイプ別にポケモンリストを用意する例。 Golang の マップでそれを実装方法の備忘録。

» Read More
Alacritty と Solaraized Color と 行間調整

以前から使いたいと思っていた 高速なターミナル Alacritty を使いはじめました。 Ubuntu 標準のターミナルは、ウインドウのタイトルバーの高さが無駄に大きく気に入らない。 Alacritty はそこが適度に狭く、僅かな差ではありますが、標準のそれよりも作業用の領域を広く使うことができます。 タイトルバーに凹凸がなく単色になっているのも気に入っています。 タブ機能はないと思いますが、代わりに screen を使うので問題ありません。 導入設定を備忘用に記録しておきます。

alacritty-on-ubuntu-desktop

» Read More
Google Spreadsheet で 空の行を詰めて別の列に表示する方法

MS Excel で 空の行を詰めて別の列に表示する方法 で filter 関数が素敵というエントリーを書いたところですが、 Google Spreadsheet でも普通に filter 関数使えました。 filter 関数を使いたい、そして業務などで MS Excel 縛りがない場合は、 Google Spreadsheet を使いましょう。

filter-function

» Read More
MS Excel で 空の行を詰めて別の列に表示する方法

たとえばB列にポケモンの名前が入っているとする。 ただし、途中に空白行があるので、そこは詰めてD列に表示するにはどうしたらよいか?という問題。

ポケモン名リスト1

この問題の回答を検索してみるとこれらしい。

配列数式と index, small, row などの関数を組み合わせることで実現できるらしい。 なるほどわからん。

» Read More
Golang, listFiles 指定のディレクトリ内のファイルまたはディレクトリを列挙する

Golang でそれをする方法の備忘録。

改良版をこちらに書いた。

» Read More
Thinkpad X1 Nano に Ubuntu 21.04 Desktop をインストール

Thinkpad X1 Nano に Ubuntu 21.04 Desktop をインストールしたので、取り急ぎレビューです。 まだ、数日前に入手してUbuntuをインストール、その後、コードを少し書いた程度なので、 その点はご了承ください。

Thinkpad X1 nano

» Read More
Golang で JSON を Marshal, Unmarshal する(備忘録)

Golang での基本の JSON 処理をメモ。

» Read More
Golang で POST する(備忘録)

Golang を使ってウェブサーバに POST する最小限のサンプルをつくる。 POSTを受けるサーバは Micronaut で用意する。

» Read More
Apache FOP で日本語フォントを使用した fo を pdf に変換する

fop コマンドが既にあるとして、fo から pdf への変換は、 fop src.fo result.pdf するだけの話。 詳細は このページ を参照のこと。
しかし日本語文字列を含んだ fo を処理すると、日本語部分が意図通りには出力されない。 これを解消してみます。

こんにちは世界

» Read More
Part 2: テスト用に json を POST して json を返す ウェブサービスをつくる

デバッグのためのテストとして json を POST して json を返すウェブサービスを Micronaut でつくる話。

» Read More
Part 1: テスト用に json を返す ウェブサービスをつくる

デバッグのためのテストとして json を返すウェブサービスを Micronaut でつくる話。

» Read More
goldmark を使って markdown を HTMLに変換する mymark コマンドをつくった

hugo という静的サイトジェネレータを使いはじめて、 急にこのブログサイトのオレオレ静的サイトジェネレータがみすぼらしく感じはじめた。 ならば、このブログサイトも hugo で構築すればいいじゃないか、と思ったのだが、 hugo 用の気に入ったテーマが見つからない。

hugo で使うコンテンツは markdown で記述するのだが、それは goldmark という golang 製の markdown パーサーが使われているという。 ならば、変換部分だけは goldmark を使うことにして、残りのサイト構築部分は既存のものを流用しつつ 良い感じにすればいいんじゃないの?ということで、オレオレサイトジェネレータの刷新がはじまった。

その顛末は長いので割愛するが、肝心の markdown を HTML に変換する goldmark がすばらしく便利なので、 そこだけ紹介します。

» Read More
Wnn7egg から tamago-tsunagi に変更, Emacs 26.3 日本語入力

Wnn8 server + Wnn7egg + Emacs の組合わせで日本語入力しているが、なんか変換結果を学習してくれないのです。 単に自分が設定を間違えているだけだと思う。 しかし、少し調べたくらいでは解決方法がわからなかったので、 試しに Wnn7egg に代えて tamago-tsunagi を使うことにした。 インストールしてみると、問題なく使える。目的の変換結果の学習もしてくれる。 とりあえず当初の目的は果たしたので、しばらくは tamago-tsunagi を使い様子をみよう。

» Read More
ついに Parallels Desktop 16 が M1 Mac に正式対応したので試した

とは言っても、M1 Mac ではなく、手元にある Intel Macbook Air にまずはお試しでインストール。

Parallels Desktop 16 for Mac のトライアルをダウンロードしようとすると、 ゴールデンウィーク向けのプロモーションとかで 25% OFF クーポンのオファーがあり、 もうこれ買うしかないのか、とか思いつつも、まずはトライアル。

インストールは簡単で、Ubuntu Desktop のインストールも、iso イメージファイルを指定するだけで あとはいつも通りです。 ただし、Parallels のアカウントを作成しないと試すことはできません。 これは少し煩わしく感じますが仕方ありません。

» Read More
GA-F2A88XN-WIFI にインストールした Ubutnu 20.04 Desktop の bluetooth (7260HMW) がうまく作動しない問題の解決

こんな古いマザーボードを今の使っている人はほとんどいないと思うが、とりえあず備忘録。

» Read More
歯車っぽい設定アイコン画像をつくる / 円周上の点を計算して図形を描画

歯車風の見た目の 設定アイコン をSVGで描画しようとおもった。 歯車の図形は円周上の点を計算してそれをつなぐとうまく描画できそうなので、 円周上の点の計算とそれらを組み合わせて図形をSVG描画する方法についてコードをまとめておきます。

settings_icon

» Read More
Amazon Music から YouTube Music (Premium) への乗り換え検討中

もう数年前から音楽の聴き放題ストリーミングサービスは Amazon Music 一本で來た。 もともとは、聴きたい曲で、Amazon Music で聴けない曲が YouTube Music にあったので、フリートライアルをはじめたのだが YouTube Music がすばらしすぎるので乗り換えるかも。

» Read More
NUC に FreeBSD 12.2 をインストールして それを Wnn8 サーバにした

少し前に Wnn7 + VirtualBox + FreeBSD 10.4 の環境をつくった。 しかし良く調べてみると Wnn8 を使えば、あんな苦労はしないで、最新の FreeBSD 12.2 に普通インストールできるらしい。 しかも Wnn8 で wnn7egg がそのまま使える。さらに Wnn8 は今でも購入することができる。

ならばということで、NUC ( NUC6CAYH ) を用意して Wnn8 サーバをつくることにする。 今回はその作業の覚え書きです。

» Read More
Android Studio を使わない ライブラリプロジェクトで Robolectric テストをする一番簡単なプロジェクト例

諸事情により Android Studio を使わないでライブラリはつくるようにしています。 その場合の Junit4 と Robolectric を使った 一番簡単なテストの書き方を覚え書きとしてここに残します。

» Read More
org.json.JSONObject で JSON データを読むときに欠落しているパラメータを上手に扱いたい

JSONは柔軟にデータを表現できて便利だが、 org.json.JSONObject を使ってプログラムでそれを読むときに、 プログラムからみて想定外のデータ構造(たとえば、キー name に対する値があるはずだが、無い場合もある、のような場合)に 例外が発生してプログラムがそこでストップすることになる。 それは困るので、例外をキャッチして、デフォルト値を代わりに適用するなどというコードを書くわけだが、 そのようなコードは非常に読みづらい。これをなんとかしてスマートに書く方法はないのか? ということであれこれ試行錯誤した結果をここに書き残す。

» Read More
Wnn7 の FreeBSD 用アップデートを適用する

Wnn7 を macOS Catalina + emacs 26.3 nox で使う, VirtualBox + FreeBSD 10.4 を利用 では 製品版CDROM の内容でインストールを進めていましたが、 こちらから FreeBSD アップデートパッケージ が配布されていることが判明。 なるべく最新のものを使いたいので、このアップデートを適用してみます。

» Read More
Wnn7 を macOS Catalina + emacs 26.3 nox で使う, VirtualBox + FreeBSD 10.4 を利用

随分前には ThinkPad X230 + Ubuntu + VirtualBox + Vine Linux + Wnn7 の組合わせで、運用していたこともあったが Wnn7 のためだけに VirtualBox をバックグラウンドで起動しておくのが負担になっていつしか使わなくなってしまっていた。

しかし、M1 chip 搭載の Mac が登場したことで、バッテリー効率が飛躍的に良くなったらしい。 それならば M1 MacBook Air などで、Wnn7 を常用する環境つくることできるのでは? と思いリサーチを始めた。

» Read More
VirtualBox のゲストOSイメージのファイルサイズを減らす

検索すれば Windows がゲストOSの場合などの説明はあるのですが、 ゲストOSが macOS の場合の説明を見つけるのに苦労したので、ここに備忘用に書きます。

» Read More
オブジェクト指向的な JavaScript

先日 closure を使った オブジェクト指向的なコードを JavaScript で書くというデモをする機会があり、これはその覚書です。

» Read More
Chromebook Spin 13 レビュー

アメリカアマゾンから購入したものの到着してみたら外箱がぶっ壊れていて……という 幸先が悪かった Spin 13 ですが、初期不良の問題(キーボードの不具合)が解消してからは安定して利用できています。 しばらくは、また不具合が再発しやしないかとおっかなびっくり使っていたのですが、どうやら大丈夫のようです。

chromebook-spin-13-w640

» Read More
Macの標準の日本語入力をやめて Google 日本語入力を試しはじめる

Macの日本語入力といえば「ことえり」だと思っていたのですが、Catalina から「日本語入力プログラム」と呼称されているようですね。趣がない。 その「日本語入力プログラム」が最近とても気に入らない。自分が期待した変換がこない感がすごい。理由はわからない。 そこで、Catalinaを機に使わなくなっていたATOKに戻ろうと思ったが、Macユーザはもはやサブスクリプションしか選択がなくなっていた。 毎日使う日本語入力なので、月額330円はアリといえばアリなのだが、どうしようかと思って調べてみると、 Macでも Google 日本語入力が使えることを知る。そうなんだ。 それなら、ATOKに行く前に先に Google 日本語入力を試すことにする。

» Read More
V Corn をテスト導入

ここしばらくはずっと Sarasa を使ってきましたが、偶然 V Corn を使う機会に恵まれ、これを試験的に使いはじめました。

v-corn

» Read More
ExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その2 (もっと単純に)

ExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その1 よりもっとシンプルに書く方法。 フォルダを順に辿りながら、フォルダを見つけたら callback する方式。

» Read More
ExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その1

指定したフォルダ以下のサブフォルダ、サブサブフォルダ...を含めてすべてのフォルダを探す、というコードを書いてみた。 ExtendScript では each や map, reduce などが使えないので、実装は少し面倒でした。

» Read More