左が最近メルカリで購入したもの。 右が 20年ほど前に自分で購入した本物。 入手してから気づいたのだが、これはどうもレプリカ・・・というか偽物な気がします。 本物か偽物か確認しようがないのですが。
落札時には偽物の可能性を考えたことがなく安易に落札、ちょっと残念に思っています。 使い勝手は問題ないのですが。
» Read MoreKotlin が気軽に使える Kotlin Script 便利です。 インストール方法や使い方の詳細はこちら Kotlin Scripting Examples: kotlin-main-kts usages をご覧ください。
kotlin 関連のインストールがされている前提ですが、以下のように kotlin script を実行できます。
» Read More二つのリストから countif をつかって 両方のリストに重複して含まれている要素のみを取り出したリストをつくる.
これを Node.js + Underscore で実装した。(覚え書き)
» Read More二つのリストがあり、 (1)両方のリストに含まれているもの、 (2)はじめのリストにだけ含まれているもの、 (3)あとのリストにだけ含まれているもの、それぞれを計算する必要が発生。 エクセルでそれを行うには countif を使う。
こんな風に:
これを Golang で実装した。(覚え書き)
» Read More関数型オブジェクト指向プロラミングを JavaScript に翻訳する というエントリーを2年前に書いた。 Haskell のオブジェクト指向的なコードを JavaScript に書き直したエントリーだが、今読み返してもいまいちピンとこない。 ならば Golang で書き直してみよう。 Golang であれば、JavaScript と違って型を明示的にコード中にかけるので、わかりやすくなるのではないか?
» Read MoreGo言語では first class functions とやらで、関数はファーストクラスオブジェクトであり値のように使うことができる。 そして、この関数の型(どんな型を引数にとってどんな型を返す、という情報)に名前をつけることができる。
» Read Moreパーサーコンビネータについて調べていて、 そもそもその元になる概念としてコンビネータがあることを知る(いまさら?!)。 つまり、パーサーコンビネータはいろいろあるコンビネータの中の一つ。 そして、いろいろあるコンビネータの中でもっとも有名なのが Y コンビネータとか Z コンビネータらしい。 そして、コンビネータを構成するパーツの一つがラムダ(式)とか無名関数であると。
名前付き関数はいつも使っていて、そして名前無し関数(無名関数)も結構使う。 では、ラムダ(式) と無名関数ってイコールじゃないの? と思って調べるもよくわからない。
Wikipedia によると: 「プログラミング言語における無名関数(英語: anonymous functionあるいはnameless function)とは,名前付けされずに定義された関数のことである.無名関数を表現するための方法には様々なものがあるが,近年主流となっているのはラムダ式による記法である.」 ということで、ラムダ式(という概念)をプログラム言語で表現するときに使うのが無名関数(または匿名関数)と考えて問題なさそう。
パーサーコンビネータや Yコンビネータを理解するための最初の一歩としてラムダ式を把握する。
» Read MoreExtendScript には Socket があるので、http のように SSL でない ウェブリソースにアクセスすることができる。 しかし、SSL 化された https のウェブリソースにはアクセスする方法がない・・・と思っていたのだが、 なんと macOS では curl を経由すれば簡単にできることが判明した。
Windowsの場合も VBScript を経由することで実現できるようです。 詳しくは restix をご覧ください。
ExtendScript で Underscore.js を使う(その1) rollup 編 で rollup + babel + Underscore.js を試したのだが、 rollup を webpack に差し替えての Underscore.js を試したのでその備忘録。
» Read MoreNode.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 MoreNode.js で モジュールを使って ExtendScript するために
その後、さらに調べてみると、 パート1で不都合があった webpack で、オプションを適切に指定することで、 ExtendScript用のコードにバンドルできることがわかりました。
Node.js ではさまざまなツールの組み合わせが存在していて、自分の目的にあうツールがどれなのか・・・という。 アプリケーションコードを書く前段階での試行錯誤が半端ないですね。
» Read More実のところ、 パート1、 パート2は、この ES6 の Javascript 記述で ExtendScript 用のコードを書くための前準備であった。
ここまでで、モジュールを使ってコードを書けるようになり、rollup により、それらのコードを一つのファイルにまとめるところまでできた。 あとは、このコードをいわゆるトランスパイラと呼ばれるコード変換ツールにより、ExtendScript として機能する Javascript に変換します。 このトランスパイラは定番の babel を使います。
» Read Moreパート1では、webpack を使って、モジュールを一つのファイルにまとめていました。 しかし、この方法では、webpack により、ExtendScript で実行できないjavascript記述が追加されてしまう不都合がありました。 そこで モジュールをひとつにまとめる機能を webpack の代わりに rollup を使って解決することにします。
» Read MoreWeb関係のJavascript 開発では、Node.js を使って モジュールに分割して開発をしていく。 これを InDesign 用の ExtendScript でもできるようにしたい。 もちろん、ExtendScript にも @include 記述により、モジュールを使うことはできる。 しかし、その場合できあがったコードを配布するときに、依存しているモジュールファイルも一緒に渡す必要が生じる。 これを避けたい。配布時には単にひとつのファイルだけで完結したい。
» Read MoreGolang で listFiles する方法 の改良版。
» Read Moreこの夏、Lenovo で BTO のマシンをオーダーしたら納期が来年の予定になった、という記事がありました。 Reddit の r/thinkpad でも 納期が 2022年4月になっているという投稿があったので、半導体不足のせい? 自分の場合は、Thinkpad を 6月1日にオーダーして、当初は一ヶ月程度で納品という表示だったのですが、 途中で、納期が延びて 9月になっていた時期もありました。 しかし、その後また何度か納期表示変更があり、結局7月上旬に到着、 おおむね当初の納期見積りの通りでした。
» Read MoreGolang では named type に対して method を生やすことができる。 これが Java などでクラスがあると便利だった機能の代替として使える。
» Read MoreGolang でのソート処理をメモ。
» Read Moreこのサイトのエントリーを全部取得してリストにして、それをたとえば10エントリーごとに分けてページネーションしたい、のような場合の話。 元のリストから n個ごとに分割したサブリストをつくりたい、というケースは結構ある。
» Read More追記 kotlinの場合はこちらを参照。
回線を ADSL から Rakuten UN-LIMIT に乗り換え からの楽天光への乗り換えです。 OCNモバイルONEを契約しているので、月額費用を比較すればOCN光を選択するところなのですが、 1年無料の3年縛りの楽天光キャンペーンに乗っかりました。 相手の策略に落ちた感がありいい気はしないのですが、光コラボレーションなので、時が来たらOCN光に切り替えるのもさほど苦労はなかろうと。
» Read More開発用メインマシンとしての Ubuntu サーバに Fractal Design の Define Nano S ケースを使っていたのですが、 集中できる環境づくりのための一環として机周りのものを減らすために、 もっと小さいケースに変更しよう!と思い立ち、InWin の Chopin にしました。
Chopin シリーズには Chopin と Chopin Pro があり Pro の方が付属電源の品質がよいので、そちらも 検討したのですが、日本では入手が難しいようです。 結局、入手が簡単な 普通の Chopin を購入しました。
Mini-ITX のマザーボード用で、この Chopin のように小さいサイズのケースはほぼこの製品一択のようです。 とても気に入ったので、後継機種が出るようにレビューを書きます。
» Read Moreポケモンのタイプ別にポケモンリストを用意する例。 Golang の マップでそれを実装方法の備忘録。
» Read More以前から使いたいと思っていた 高速なターミナル Alacritty を使いはじめました。 Ubuntu 標準のターミナルは、ウインドウのタイトルバーの高さが無駄に大きく気に入らない。 Alacritty はそこが適度に狭く、僅かな差ではありますが、標準のそれよりも作業用の領域を広く使うことができます。 タイトルバーに凹凸がなく単色になっているのも気に入っています。 タブ機能はないと思いますが、代わりに screen を使うので問題ありません。 導入設定を備忘用に記録しておきます。
MS Excel で 空の行を詰めて別の列に表示する方法 で filter 関数が素敵というエントリーを書いたところですが、 Google Spreadsheet でも普通に filter 関数使えました。 filter 関数を使いたい、そして業務などで MS Excel 縛りがない場合は、 Google Spreadsheet を使いましょう。
たとえばB列にポケモンの名前が入っているとする。 ただし、途中に空白行があるので、そこは詰めてD列に表示するにはどうしたらよいか?という問題。
この問題の回答を検索してみるとこれらしい。
配列数式と index, small, row などの関数を組み合わせることで実現できるらしい。 なるほどわからん。
» Read MoreThinkpad X1 Nano に Ubuntu 21.04 Desktop をインストールしたので、取り急ぎレビューです。 まだ、数日前に入手してUbuntuをインストール、その後、コードを少し書いた程度なので、 その点はご了承ください。
Golang での基本の JSON 処理をメモ。
» Read MoreGolang を使ってウェブサーバに POST する最小限のサンプルをつくる。 POSTを受けるサーバは Micronaut で用意する。
» Read Morefop コマンドが既にあるとして、fo から pdf への変換は、 fop src.fo result.pdf
するだけの話。
詳細は このページ を参照のこと。
しかし日本語文字列を含んだ fo を処理すると、日本語部分が意図通りには出力されない。
これを解消してみます。
デバッグのためのテストとして json を POST して json を返すウェブサービスを Micronaut でつくる話。
» Read Moreデバッグのためのテストとして json を返すウェブサービスを Micronaut でつくる話。
» Read Morehugo という静的サイトジェネレータを使いはじめて、 急にこのブログサイトのオレオレ静的サイトジェネレータがみすぼらしく感じはじめた。 ならば、このブログサイトも hugo で構築すればいいじゃないか、と思ったのだが、 hugo 用の気に入ったテーマが見つからない。
hugo で使うコンテンツは markdown で記述するのだが、それをHTMLに変換するエンジンには goldmark という golang 製の markdown パーサーが使われているという。 ならば、変換部分だけは goldmark を使うことにして、残りのサイト構築部分は既存のものを流用しつつ 良い感じにすればいいんじゃないの?ということで、オレオレサイトジェネレータの刷新がはじまった。
その顛末は長いので割愛するが、肝心の markdown を HTML に変換する goldmark がすばらしく便利なので、 そこだけ紹介します。
» Read MoreWnn8 server + Wnn7egg + Emacs の組合わせで日本語入力しているが、なんか変換結果を学習してくれないのです。 単に自分が設定を間違えているだけだと思う。 しかし、少し調べたくらいでは解決方法がわからなかったので、 試しに Wnn7egg に代えて tamago-tsunagi を使うことにした。 インストールしてみると、問題なく使える。目的の変換結果の学習もしてくれる。 とりあえず当初の目的は果たしたので、しばらくは tamago-tsunagi を使い様子をみよう。
» Read Moreとは言っても、M1 Mac ではなく、手元にある Intel Macbook Air にまずはお試しでインストール。
Parallels Desktop 16 for Mac のトライアルをダウンロードしようとすると、 ゴールデンウィーク向けのプロモーションとかで 25% OFF クーポンのオファーがあり、 もうこれ買うしかないのか、とか思いつつも、まずはトライアル。
インストールは簡単で、Ubuntu Desktop のインストールも、iso イメージファイルを指定するだけで あとはいつも通りです。 ただし、Parallels のアカウントを作成しないと試すことはできません。 これは少し煩わしく感じますが仕方ありません。
» Read Moreこんな古いマザーボードを今の使っている人はほとんどいないと思うが、とりえあず備忘録。
» Read More歯車風の見た目の 設定アイコン をSVGで描画しようとおもった。 歯車の図形は円周上の点を計算してそれをつなぐとうまく描画できそうなので、 円周上の点の計算とそれらを組み合わせて図形をSVG描画する方法についてコードをまとめておきます。
もう数年前から音楽の聴き放題ストリーミングサービスは Amazon Music 一本で來た。 もともとは、聴きたい曲で、Amazon Music で聴けない曲が YouTube Music にあったので、フリートライアルをはじめたのだが YouTube Music がすばらしすぎるので乗り換えるかも。
» Read More少し前に Wnn7 + VirtualBox + FreeBSD 10.4 の環境をつくった。 しかし良く調べてみると Wnn8 を使えば、あんな苦労はしないで、最新の FreeBSD 12.2 に普通インストールできるらしい。 しかも Wnn8 で wnn7egg がそのまま使える。さらに Wnn8 は今でも購入することができる。
ならばということで、NUC ( NUC6CAYH ) を用意して Wnn8 サーバをつくることにする。 今回はその作業の覚え書きです。
» Read More諸事情により Android Studio を使わないでライブラリはつくるようにしています。 その場合の Junit4 と Robolectric を使った 一番簡単なテストの書き方を覚え書きとしてここに残します。
更新 2022-10-07 : このエントリーの内容は古くなったので、そこそこ最近の環境にあわせたプロジェクトを作成しました。 こちらのエントリー(現時点での Android Robolectric テスト、一番簡単なプロジェクト例)をご覧ください。
» Read MoreJSONは柔軟にデータを表現できて便利だが、 org.json.JSONObject を使ってプログラムでそれを読むときに、 プログラムからみて想定外のデータ構造(たとえば、キー name に対する値があるはずだが、無い場合もある、のような場合)に 例外が発生してプログラムがそこでストップすることになる。 それは困るので、例外をキャッチして、デフォルト値を代わりに適用するなどというコードを書くわけだが、 そのようなコードは非常に読みづらい。これをなんとかしてスマートに書く方法はないのか? ということであれこれ試行錯誤した結果をここに書き残す。
» Read MoreWnn7 を macOS Catalina + emacs 26.3 nox で使う, VirtualBox + FreeBSD 10.4 を利用 では 製品版CDROM の内容でインストールを進めていましたが、 こちらから FreeBSD アップデートパッケージ が配布されていることが判明。 なるべく最新のものを使いたいので、このアップデートを適用してみます。
» Read More随分前には ThinkPad X230 + Ubuntu + VirtualBox + Vine Linux + Wnn7 の組合わせで、運用していたこともあったが Wnn7 のためだけに VirtualBox をバックグラウンドで起動しておくのが負担になっていつしか使わなくなってしまっていた。
しかし、M1 chip 搭載の Mac が登場したことで、バッテリー効率が飛躍的に良くなったらしい。 それならば M1 MacBook Air などで、Wnn7 を常用する環境つくることできるのでは? と思いリサーチを始めた。
» Read More検索すれば Windows がゲストOSの場合などの説明はあるのですが、 ゲストOSが macOS の場合の説明を見つけるのに苦労したので、ここに備忘用に書きます。
» Read More先日 closure を使った オブジェクト指向的なコードを JavaScript で書くというデモをする機会があり、これはその覚書です。
» Read Moreアメリカアマゾンから購入したものの到着してみたら外箱がぶっ壊れていて……という 幸先が悪かった Spin 13 ですが、初期不良の問題(キーボードの不具合)が解消してからは安定して利用できています。 しばらくは、また不具合が再発しやしないかとおっかなびっくり使っていたのですが、どうやら大丈夫のようです。
Macの日本語入力といえば「ことえり」だと思っていたのですが、Catalina から「日本語入力プログラム」と呼称されているようですね。趣がない。 その「日本語入力プログラム」が最近とても気に入らない。自分が期待した変換がこない感がすごい。理由はわからない。 そこで、Catalinaを機に使わなくなっていたATOKに戻ろうと思ったが、Macユーザはもはやサブスクリプションしか選択がなくなっていた。 毎日使う日本語入力なので、月額330円はアリといえばアリなのだが、どうしようかと思って調べてみると、 Macでも Google 日本語入力が使えることを知る。そうなんだ。 それなら、ATOKに行く前に先に Google 日本語入力を試すことにする。
» Read MoreExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その1 よりもっとシンプルに書く方法。 フォルダを順に辿りながら、フォルダを見つけたら callback する方式。
» Read More指定したフォルダ以下のサブフォルダ、サブサブフォルダ...を含めてすべてのフォルダを探す、というコードを書いてみた。 ExtendScript では each や map, reduce などが使えないので、実装は少し面倒でした。
» Read More数カ月前から Acer の Chromebook Spin 512 を購入しようかと悩んで今回のアマゾンプライムデーでようやく踏ん切りがついたというか。 とうとう入手しました。 ずっと日常的にペン入力できる Chromebook を探していて、Spin 13 が手元にあるのですが、あれは日常的にペン入力するには筐体が少しばかり巨大すぎました。 Android Studio 用の開発マシンとしては申し分ないのですが。
» Read More執筆用のChromebookにAsciiDocでコンテンツをビルドする環境をつくったときの備忘録です。 HTMLに変換するだけならわけないのですが、PDFに変換しようとすると日本語が文字化けしてしまう問題がありました。 ググってもかなり苦労したのと、Chromebook の Linux(Crostini) 環境での構築説明が見つからなかったのでメモを残します。 ChromeOS バージョンは Version 86.0.4240.77 (Official Build) (64-bit) です。
» Read MoremacOS のターミナルでファイルの内容を閲覧するときに使う open コマンド。 これを Chromebook の Linux でも使うには、 open コマンドの代わりに xdg-open を使えばOK! と思っていたら、そうでもなかった。
» Read MoreVSCode での ExtendScript 実行は、 Adobe Script Runner を使えば簡単ですが、 これで実行したときにエラーがあってもその内容が表示されません。 これでは開発には困るので、 代わりに使うのが ExtendScript Debugger です。
» Read MoreADSLサービスがそろそろ終わりを迎えるので、いよいよ何かに乗り換えなければならない。 MVNOのSIM と ATERM の据え置きルータ(PA-HT100LN)を使った事前の調査で ここの環境では LTE の方が ADSL より速いことはわかっていた。 今年のはじめ頃には Fuji Wifi あたりに乗り換えて、しばらく様子を見ようなどと考えていたが、 コロナ禍により Fuji Wifi は契約できず。契約できるようになった頃にはお得なキャンペーンは終了してしまっていた。
» Read More以前に書いた Kotlin による簡易SVG parser の実装実験 を使って自前のAndroidアプリのアイコン描画などを行っていたのだが、 そんなの標準に提供されているライブラリで対処できるだろう、と思って調べたところ対処できたのでメモしておきます。
» Read MoreJava を使って json データの差分を調べる必要が生じたので、便利なツールを探した。 Stackoverflow に JSONassert がよい、的な情報があったので、使ってみました。 とても便利だったので、紹介します。
» Read MoreGroovy で java.util.Collection コレクション に対するメソッドとして each と eachWithIndex があるので、
同じように collect にも collectWithIndex があるのかと思ったらない。
そこでそれを実現する方法を考えてみた。
再帰のコードを書こうと思ったがわからなくなったので、 Groovy で復習した。
» Read More2つのVPSを使って、それぞれに一つのドメインをSSL/TLSサーバ証明書を入れて運用していたが、 諸事情により、これを一つにまとめたのでその時の手順の覚書です。 すごく面倒になると思って、先延ばしにしてきましたが、やってみたら簡単でした。
» Read MoreChromebook 単体 で Androidアプリ開発が完結できる ことがわかったので、 Android Studio が作動するスペックのChromebook を導入することにしました。 いくつか候補はありますが、 お絵描き系アプリをつくっているので、 スタイラス対応で、海外では評判が高いらしい Acer Chromebook Spin 13 にしました。
» Read MoreChromebook に Android アプリを入れるには Google Play Store 経由が普通ですが、 開発中のアプリを ストア経由でなく直接 adb でインストールできないものかと思って 調べたところ普通にできることが判明。 今まで、Chromebook 自体をデベロッパーモードに変えないとそういうことができないと思っていたので これはうれしい。
» Read Moreuni-ball シグノ vs LAMY safari に書いた通り、かつては、LAMYのローラーボールに LM-63 のアダプタを使って 替え芯は スタイルフィット ( UMR-109 ) または ZEBRA SARASA ( NJK-0.3 ) を使っていたのだが、 書き味がイマイチなのと、インク容量が少なくすぐなくなってしまう上に、価格が割り高なので、使うのをやめてしまっていた。