EmacsのWoManでディレクトリが存在しない時のエラーが鬱陶しいので調べましたが未解決

要約 *WoMan-Log*を警告程度では表示させない方法を探したけど公式的には無いようです。エラーログ全体ごと殺すか、見えにくくするしか無い。 問題 初期設定したEmacsのwoman関係コマンドでmanを引くと、 *WoMan-Log*バッファに以下のように警告が表示されます。 ** Ignoring unreadable ‘manpath’ directory tree ‘/usr/man’! 今回は/usr/manでしたけど、いつもは/usr/local/manとかが多いですね。 こ

HTML Tidy version 5.8.0はol要素のtype属性を許可しませんが、実際のHTML規格では許可されています

問題 htacg/tidy-html5: The granddaddy of HTML tools, with support for modern standards が擬陽性の警告を発生させるようになりました。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <title>ol</title

GRUBで複数のWindowsのブートを管理した時のトラブルシューティングメモ

要約 GRUBが複数Windowsを認識しなかった時のトラブルシューティングメモ。 GRUBがあるはずのパーティションを認識していない時はMBR(MSDOS)であることを疑いましょう。 システム構成 3枚のSSDを使い、 Gentoo GNU/Linuxが2枚をRAID 0で使って、ゲーム用のWindowsが1枚のSSDをパーティション分割で使っています。 3枚めを業務のWindows専用にしています。 問題 os-prober動かないなと思って自分で40_customを書くことにしました。 最近

Servant/Warp/Waiのサーバ側エラーログの日本語をエスケープシーケンス無しで表示する

問題 servant: A family of combinators for defining webservices APIs でweb APIを作っているのですが、サーバ内部で例外が発生した時、標準エラー出力に出るエラーが読みにくいです。 具体的には、日本語を含む例外データが使われた時、エスケープシーケンスが使われます。 我々は日本語のNLPを行っているため、日本語を例外データから除外するというのは現実的ではありません。 haskell-jp/unicode-show: A Haskell Pack

GHCのプロファイル機能がCabalのエラーで動かなかったことを解決しました

問題 stack bench --profileが失敗します。 動機 パフォーマンスチューニングを行いたい場合、当然まずは計測をすることになります。 Haskell(GHC)にはそれなりに良いプロファイラが付属しているため、まずはこれを使って計測をするのが早道だと思います。 既に他のメンバーによって最適化の数値を計測しやすくするため、 benchmarksがtasty-benchによって実装されているため、このベンチマークで動く処理のプロファイルを取るのが早道でしょう。 期待される動作 stack

hspecでIOアクションの結果の値を実行時に扱う方法

Hspec: A Testing Framework for Haskell でIOアクションの値を使いたい時に気をつけること。 単純にIOに包まれた値をテストしたい場合はshouldReturnが使えます shouldReturn を使えばIOに包まれた値に対して比較が出来ます。 例。 module IoSpec (spec) where import Test.Hspec -- | 例は雑。 foo :: IO Int foo = pure 1 spec :: Spec sp

GLib 2.70.0へのアップデートの結果GNOME Keyringが壊れたので復旧

何もしてないのにgnome-keyringが壊れた 今日PC立ち上げたらターミナルがなかなか起動しなかった。 eval "$(saml2aws --completion-script-bash)" が終了しないらしい。 なんで? ログを見てみると以下のようなgnome-keyringのエラーが表示されていました。 9月 26 14:13:39 strawberry gnome-keyring-daemon[1856]: couldn't access control socket: /run/u

4K 144HzモニタであるLGのUltraGear 27GP950-Bを買いました

4K 144Hzモニターを買いました 買ったのはこの、 Amazon | LG ゲーミングモニター UltraGear 27GP950-B 27インチ/4K/Nano IPS/1ms(GtoG)/144Hz/HDMI 2.1対応/G-SYNC Compatible,FreeSync Premium Pro/Vesa DisplayHDR600/HDMI×2,DisplayPort/ピボット,高さ調節対応 | LG | ディスプレイ 通販です。 27GP950-B | モニター | LGエレクトロニクス・ジ

:
Haskellの文字列型同士の変換が欲しい場合はconvertibleかstring-conversionsを使うと良い感じです

自作ライブラリのstring-transformの改善を考えていました 自作ライブラリの、 string-transform が微妙だなと思いはじめました。 公開時の考えはだいたいこの記事に書いてありました。 Amazon S3の問題はMultipart Uploadで解決しそう, haskellの文字列の変換をわかりやすくするstring-transformを公開しました - ncaq string-transform関連記事 Amazon S3の問題はMultipart Uploadで解決しそう,

ブラウザ側JavaScriptでPunycodeを処理する良い感じのライブラリが見つからなかった

前提 ncaq/google-search-title-qualified: Google will omit the title of the web page. With this add-on, the original title is used as much as possible. という、 Google検索結果のwebサイトのタイトルを省略しない拡張機能を前から作っています。 最近、 added: URLも短縮しない closed #21 by ncaq · Pull Request #3

EmacsでTypeScriptファイルを開くときshebangでnodeが指定されていてもweb-modeで開く設定

shebangが書かれてるとweb-modeを拡張子で指定していてもjs-modeが優先される パターン"\\.tsx?\\'"でTypeScriptコードをweb-modeで開くように設定していても、 AWS CDKなどがinitで生成するbinファイルのように、先頭に、 #!/usr/bin/env node のようにshebangが設定されていると、 js-modeが優先されて起動してしまいます。 簡単に直せるかと思ったら多少手こずったのでメモします。 interpreterキーワードで指定

TypeScriptのtsconfig.jsonでnoUnusedLocalsなどを指定しないようにしました

strictで有効にならない警告も有効にしていました これまではtsconfig.jsonのコンパイル時警告を以下のように設定していました。 { "compilerOptions": { "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": tru

最近流行っているサイト内検索スパムに立ち向かう

最近流行りの内部検索スパム 2021年05月09日にヤンマガの、ごくちゅう!のログインしないと見れない部分を見たいけど、ログインできないなと検索していて、検索結果がスパムに汚染されていると気が付きました。 2021年05月09日の「ヤンマガ Firefox ログイン」の検索結果 ちなみにログイン出来なかったのは一時的なシステムトラブルで、特にFirefoxが悪いとかの問題ではありませんでした。 ログインできないことと、検索結果が汚染されていることをそれぞれ別件でヤンマガに伝えました。 しかしそれから

HaskellライブラリをビルドしていたらCircleCIに暗号通貨をマイニングしてると誤認されて一時BANされた話

突然CircleCIが動かなくなりました 2021年07月05日に、 CircleCIが動かなくなりました。 何をしていたのかと言うと、自作のHaskellライブラリを新しいStackageでビルドできることを確認するためにLTSを上げたPRを作っていました。そしたらCircleCIがビルドをCanceledにしてきて、調子悪いのかなと思ってRerunしてみたら、新しいジョブがNot Runになって動かない。 クレジットが無くなったのかと思いましたが、月始めですし、そもそもOSSは無料で動かせるはずです。

:
Xiaomi Mi 11 Lite 5Gを購入しました

スマートフォン遍歴 2011年: Samsung Galaxy S2(ドコモ版) 2014年: Google Nexus 5(LG, Google Playから購入) 2017年: Google Nexus 6P(Huawei, 中古で購入) 2017年: Huawei P10 lite Nexus 6PからHuawei P10 liteに乗り換えました, オススメのスマートフォンです - ncaq 2018年: Google Pixel 3 XL(HTC(引き抜き?), Google Playから購入

:
Emacsのflycheckの省略記号と省略単位を変える

flycheckの省略記号を...から…に変える flycheckのバッファで表示される文字列がフォーマットの設定以上の場合、切り捨てて省略が行われます。 そして省略された文字列には省略の証として右側に...が付きます。 以下のような感じです。 ...による省略 これは非常に無駄ですよね。省略した証に...と3文字も使ってほしくないです。 この省略文字は指定することが可能です。 その方法をググっても中々出てこなかったのでここにメモしておきます。 ...で検索するのではなく…でコードを検索したら即座に

:
Emacsのlsp-haskell(lsp-mode)で1コマンドでGHCの提供する型定義を挿入したい

haskell-language-serverによってHaskellの開発環境に調和がもたらされましたが、型挿入を選択するのが面倒 haskell/haskell-language-server: Successor of ghcide & haskell-ide-engine. One IDE to rule them all. はHaskellのエディタ環境にやっと調和を齎してくれました。 Happy Haskell Programming で行っていた、 GHCの推論する型注釈をトップレベル

:
HaskellでBuilderパターンをやってMaybeをなるべく除去したい(型引数が複数ある場合)

単一項ならbarbiesが使える 複数項ならボイラープレートを書いていくしかない Kindを潰す方法を思い出すのに時間がかかった 以下は悩んでた時のメモと、悩んだ人向けのインデックスです。 Maybeをなるべく消したい Haskellで、 RustのちょっとやりすぎなBuilderパターン | κeenのHappy Hacκing Blog のようなことをしようとしました。 HaskellではKind概念があるからHKDで楽勝では? import Data.Functor.Iden

EmacsのHaskell編集時のlsp-modeのおせっかいなスニペット展開を止める

問題 Emacsでlsp-haskellを使っている時に、関数や型コンストラクタをcompanyの補完から選んだ時、引数を型名表示でyasnippet形式で表示してくるのに困っていました。 まず、私は引数を考えてから適応する関数を変えることも多いので、関数名から入力しない場合が多く、その時のスニペットはかなりおせっかいでした。 また、レコードで初期化したい型コンストラクタも関数形式で出してくるため、一々キャンセルするのが面倒です。 無効化出来なかった 一見無効化するオプションである、 lsp-hask

xmonadを使っている時に一部のモニタの電源だけが起動時に点かないことへの対処

症状 PCモニタを4枚体制にしました - ncaq でPCモニタを増やしてから、 PC起動時に一部のモニタの電源だけが点かない時があると言う現象が起きていました。 現象が起きるモニタは確定していて、 xrandrで言うDP-4のモニタだけ点かないことがあったりなかったりします。 DisplayPortで接続されているため、電源が点かないと認識もされず、 xmonadのワークスペース割り当てがおかしくなる副作用も発生していました。 起動してからxrandrで設定しなおせばちゃんと電源が点くのですが、履歴に残

:
union typeは楽園ではない

HaskellやOCamlにunion typeがあっても良いのでは? 似非原さんが最近OCamlを始めていて、「調べた範囲ではOCamlにはTypeScriptのようなunion typeはなかった」と言っていました。 確かにない。 その場では、 OCamlは静的型付けの言語で、ベーシックな型は型チェックが終わったら消去されるので、 typeofやinstanceofで実行時に型情報を入手できるTypeScriptとかとは違い、直和型を使うとか、多相バリアントとか、 GADTとかで型情報(型タグ?)を残

ダイキンのMCK40Xと言う空気清浄機を買いました

もうすぐ春も終わって梅雨になり、夏になりそうです。 夏になると部屋を締切ってエアコンに頼り切りになりますね。なので今年は空気清浄機を買おうと思います。最近モニタを新調した時にホコリまみれになったのでこれお金で解決できるならした方が良くない? と思ったためです。 PCモニタを4枚体制にしました - ncaq これまで買ってなかったのは、前空気清浄機買った時に効果を感じなかったためです。最近のは違うかもしれないし、効果を感じなかったのはアレルギーの対処がうまいこと行ってなかったので焼け石に水だったからかもしれま

lensのコード生成時にフィールド名をアンダースコアで始める必要は無かった

昔はあんまり好きじゃなかったlensをamazonkaの使用とともに受け入れ始めました。 HaskellとJSON、そしてレコード型 - syocy’s diary を見て、 makeFieldsのプレフィクス除去良いなあと思いました。 でもフィールド名をアンダースコアで始めるとlens専用のインターフェイスみたいになって、純粋なHaskellのレコード操作が奇妙な感じになるので、 lensだけを使うことを決断しないと使いにくいよねと感じてlensインターフェイスを作るのを躊躇していました。 しかしそれは私

:
Googleにwebサイトのタイトルを省略させないブラウザ拡張、google-search-title-qualifiedを作りました

ゴールデンウィークなので昔考えてたブラウザ拡張を作ることにしました auto-sudoeditをssh越しのリモートファイルに対応させる - ncaq が終わってもゴールデンウィークは終わってないのでブラウザ拡張を作ることにしました。 なんでみんなゲームとかwebシステムを作ってるのに私はEmacs拡張とかブラウザ拡張とか作ってるんですか? GitHubはこちらです。 ncaq/google-search-title-qualified: Google will omit the title of the

auto-sudoeditをssh越しのリモートファイルに対応させる

ゴールデンウィークなのでOSSのメンテナンスをすることにしました ゴールデンウィークなのでみんな何か自作しているのですが、私は特に良さそうなアイデアが思いつかなかったので、 ncaq/auto-sudoedit: automatic do sudo by tramp when need root file に来ている要望を実装しようと思いました。自分自身にも役に立つものですしね。 auto-sudoeditをtramp経由のアクセスに対応させたい trampのsshをroot接続させれば問題ないのです

PCモニタを4枚体制にしました

PCパーツが欲しい ここ最近全然支出してないしPCパーツが欲しい… でも半導体不足とか暗号通貨ブームで今ここ一番ぐらい色んなものが高騰しているので時期が悪すぎます。 あっPCモニタは価格推移グラフを見るに高騰してないっぽいですね。買おう。 値段下がってもないので、いつもよりは高値を維持してるみたいですが。 COVID-19の流行り始めに少ない在庫からモニタを何とか買ったのですが、今はちゃんと選んで買えますね。 TN液晶は厳しい と言うのは半分冗談で、私は、 Acerの4Kモニタ(RT280K)を購入し

AWS CDKでAmazon API GatewayにシンプルにIP制限をかける方法

API Gatewayに雑にIP制限したい とあるOSSをHTTP経由で利用するDockerイメージを書いたのですが、よく分からないですがdocker buildに失敗するらしいです。私含めメンバー3人中2人は成功して、 LinuxとWindows(WSL, Hyper-VのVirtualBox)は成功して、 Macだと失敗するみたいですね。 Macのメモリが16GBしかないのが悪いのか何なのか… まあ元々このコンポーネントはメモリとか結構食いそうなので、 AWSとかに置いて初期化しなくても利用できるよう

Yesodのログを改善して解析しやすくする

Yesodの出力するログを改善したい(Yesodに限った話ではないが) Yesodの出力するログをAmazon CloudWatch Logsで解析してDiscord(Slack互換APIを使う予定)に通知とかを行いたいと考えました。 それを行うためにはYesodのデフォルトの機械が解析しづらい構造をカスタムするのが手っ取り早そうですね。 JSON形式にすればCloudWatch Logs Insightsで解析しやすそうです。デフォルトの形式と戦うよりJSON形式のログを追加した方が誤爆や取り逃しの少な

:
ノイズキャンセリングイヤホンが欲しかったので、Bose QuietComfort Earbudsを購入しました

ノイズキャンセリングが欲しい 先日身内に不幸がありまして宿泊したのですが、父親のいびきがうるさい。とてもうるさい。 これを言うと「お前のいびきの方がうるさい」とカウンターを食らうので父親を責めることは出来まい。ノイズキャンセリングで対抗しましょう。 ちなみに前回は普通のイヤホンで音楽ガンガン流してなんとか寝ました。 Bose Sleepbuds IIを買えば良いのでは? Sleepbuds II(アラーム機能付き) | ボーズ 毎日使うならともかく、珍しく泊まった時のためだけに3万円は中々払える金

SMARTalk(楽天)とSMS専用SIMで粘るのをやめて楽天モバイルを契約しました

私は前から(大学時代に手続きを変えた記憶があるので4~6年ぐらい?)、携帯電話の電話回線を契約せずにSMSのみの契約を行っています。 Nexus 6PからHuawei P10 liteに乗り換えました, オススメのスマートフォンです - ncaq などにも書いていますね。 モバイル通信には、格安SIM/格安スマホ・インターネットサービスのIIJmio のファミリーシェアプランのSMS付帯SIMを使っています。家族3人まとめてお得。 そして音声電話には、スマホの通話料をトコトン安くする | SMARTalk

Emacsのdocker.elでイメージ名が見切れてしまうのを解決

問題 EmacsのDocker関連パッケージまとめ - ncaq で書いたように、 Emacsには良いDockerクライアントがあるのですが、問題があります。 その問題はイメージ名の表示が短いため、 AWSにpushしたイメージなどが全く見分けられないことです。 docker-imageの実行結果の様子 他の設定を参考にして解決はしますが レイアウトを定義しているのはtabulated-listなので他で弄ってる所を参考にすれば問題なさそうですね。 (leaf tabulated-list

HaskellでGTKの最近開いたファイルに項目を追加する

問題 以前、スクリーンショット環境をimport(ImageMagick)からgnome-screenshotに移行できなかったので, PyGObjectで「最近開いたファイル」を追加するスクリプトを書きました - ncaq に書いたとおり、 xmonadでスクリーンショットを取るとGnome(GTK(GObject))の「最近開いたファイル」にファイルを追加するようにしていました。 しかし、この方法には問題がありました。 それは、 Pythonがシステムのライブラリを参照しているので、型チェッカなどが偽

aws ecr get-login-passwordでdocker loginするのをAWS SDKでシェルなしで実行する

対話的なECRへのdocker loginの方法 プライベートECRにdocker pushするためには、 Amazon ECR での AWS CLI の使用 - Amazon ECR に書いてあるように、 aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com と実行してログインする必要があ

AWS CDKのECSとBucketのスタック間でのwould create a cyclic referenceを解決する

問題 // バケットをアプリケーションから無制限にアクセスできるようにします bucket.addToResourcePolicy( new iam.PolicyStatement({ actions: ["*"], resources: [bucket.bucketArn, bucket.arnForObjects("*")], principals: [ applicationLoadBalancedFargateServ

メジャーじゃないGNU/Linux環境でFirefoxのダークモードを有効化する

背景 近年、 prefers-color-scheme を使って、 webサイトがブラウザがダークモードを有効化しているか判別できるようになっています。 Node.jsのドキュメントなどが対応していますね。 ふとAndroidでアクセスして対応しているのを知って、そう言えばメインのGNU/Linux環境で有効にしていないことを思い出しました。 有機ELディスプレイを搭載しているAndroidスマートフォンとは違って、液晶なのであまり節電にはなりませんが、単純に光量が強いと目に厳しいのでなるべくダークモード

AWS SDK for JavaScript v3を使ってDocker向けにAWS_ACCESS_KEY_IDなどを展開する

EFSにデータをアップロードするためのDockerfileを書きました Dockerでごちゃごちゃビルドして最終成果物をEFSにアップロードするDockerfileを書きました。 [aws-efs] Upload files to EFS · Issue #9496 · aws/aws-cdk で提起されているように、 aws-s3-assetsみたいなものがEFSにもあればCDK任せで良かったのですが。 Dockerコンテナはローカルで動く これはそんなに頻繁にビルドするわけではなく、多分二度と再ビ

EmacsからPyrightを使う時にPipenvのライブラリを認識してもらう方法

一つ前の解決済みの問題 boto3-stubs · PyPI とかをインストールしてくれてるのにmypyが認識してくれない。つらい。 ドキュメントでもmypyより、 Pyright が優先されて書かれてるし変な意地はらずに使った方が良いのではと思って問題解決すれば良いなとダメ元で使ってみました。 boto3が認識されました。良かった。 問題 git submoduleで置いてるプライベートなパッケージを認識してくれない。 pipenv run pyright みたいに動かせば認識してくれるんですが

postfixが使うcyrus-saslがgdbmの1.18以降のバージョンでの動作が怪しいのでSASL認証が出来ないことの回避策

発端 数カ月前にシステムをアップデートすると、 warning: SASL authentication failure: Couldn't fetch entry from /etc/sasl2/sasldb2 warning: foo[bar]: SASL CRAM-MD5 authentication failed: generic failure と表示されました。 なんかその時調べた時にgdbmのアップデートが原因っぽいのでgdbmのアップデートをmaskして先送り解決してたみたいで