gradleプロジェクトでscala REPLにプロジェクトのpackageを使う

sbtを使っている場合 sbt consoleで終わり. ですがsbtを使ってないので仕方がない. 移行計画が終わっていない. gradleを使っている場合 Method for launching a Scala REPL for a Gradle project. が参考になりました. しかし一部廃止された構文を使っていたのでめっちゃハマりました. 注意. <<はもう使えません. まずclasspathを出力するタスクを定義します. task classpath { print

はがきデザインキット2020の出力するCSVデータをカメラのキタムラの要求するCSVデータに変換する

はがきデザインキット2020 | ゆうびん.jp の出力するCSVデータを宛名シール印刷 - | 年賀状(令和2年)ならカメラのキタムラの要求するCSVデータに変換する. 経緯 うちの親は去年喪中だったので去年は年賀状を作らないらしいけれど今年は作るらしい. 宛名を印刷する方法として去年うまく行った方法である, 郵便局の提供するはがきデザインキット2020 | ゆうびん.jp を使って印刷しようとしていました. ダメでした. 紙づまりになるしそれを回避しても印刷できません. 私も相当見てみましたが原因不明

システムアーキテクト試験挑戦1回目で不合格でした

成績照会 感想 まあ論述式がダメダメすぎて落ちるだろうなと思ってはいたのでそこは予想通りではあります. でもCは予想外でした… 当落ギリギリぐらいを予想していたのでショックです. 記述はまあいつもの記述なのでギリギリ合格ラインまで持っていけたのですが, 小論文(論述式)がなんかダメそうだったのでダメでしたね… 近年, ユーザビリティの善しあしが, 企業競争優位の獲得手段として注目されている。システムアーキテクトには, 情報システムが提供する機能, その機能の利用シーン及び想定した利用者の特性を考慮

:
uBlacklistを使ってポケモン徹底攻略やStack OverflowのコピペサイトをGoogle検索から除外しましょう

コピペサイトがうざい 企業系攻略サイトひどすぎませんか。実は以前にも大企業「4社」から特性や技の文章などを丸コピー等されていることを確認し、修正を依頼したのですが、平謝りするだけで、謝罪に来られたのは1社だけでした。(続) — ポケモン徹底攻略|16年運営 (@poketettei) November 24, 2019 企業系ゲーム攻略「アルテマ」、ポケモンだけで1900ページの文章盗用を謝罪 被害を受けたサイトは「攻略を続けられなくなる」 - ねとらぼ 最近ポケモン徹底攻略から企業系攻略サイトの

シェルスクリプトでGoogle Driveから巨大なファイルをダウンロードする

問題 Google Driveからcurlとかwgetで大きなファイルをダウンロードしようとすると, Google Drive can't scan this file for viruses. って怒られます. Google Driveがマルウェア解析出来ないからダメらしい. そのせいでtar.gzファイルをダウンロードしたはずなのにHTMLをダウンロードしてしまい, 後々の解凍がダメになります. 人力でダウンロードした場合は「それでもダウンロードする」みたいなボタンがあるのでそれをクリック

RustでActixのMessageのresultのエラー値をstrに出来なかった

#[derive(Debug, Message)] #[rtype(result = "std::result::Result<(), &str>")] pub struct RequestSmart(pub Arc<Global>); みたいに書きたい. error[E0106]: missing lifetime specifier と怒られる. Rustの複数の生存期間パラメータでハマった - Kekeの日記の関係のようですね. 複数の生存期

Emacsでファイルとディレクトリのバッファのみを閉じる関数を書きました

問題 これまで (defun kill-all-buffers () (interactive) (mapc 'kill-buffer (buffer-list))) を (global-set-key (kbd "C-M-S-q") 'kill-all-buffers) で割り当ててEmacsを終了する時に作業をリセットしたい時に使っていたのですが, 最近lsp-modeを使うようになって, lsp-modeはlspの接続バッファを終了させると再起動す

eclipse.jdt.lsはGentooだとopenjdk-binのバージョン11では動きますがopenjdkの方では動かないので要注意

オチ openjdkではなくopenjdk-binを使えば解決です. 問題 EmacsでJava開発をする時eglotではなくlsp-modeを使えば割とあっさり構築完了しました - ncaq に書いた通り eclipse/eclipse.jdt.ls: Java language server を使っているのですが, eclipse.jdt.lsがOpenJDK 11だと動かなくてOpenJDK 9だと動きます. JDK 11をシステムのVMに設定しているとソースコード全体に Java: The t

:
tscのエラーをeslintのエラーに変換してくれるeslint-plugin-tscが超便利なので最近導入してます

typescript-eslintはtscの出すエラーを出してくれない またfathyb/parcel-plugin-typescript: 🚨 Enhanced TypeScript support for Parcelを導入してparcelがビルド時に型エラーを報告するように…出来れば良かったんですがどうもこれうまく動かないようですね. Emacsでtslintが使われているプロジェクトではtslint, eslintに移行したらしきプロジェクトではeslintが使われるようにする - ncaq

精神障害者保健福祉手帳を更新して2級にしましたけどよく考えたらメリットが見いだせません

障害者手帳の画像 障害者手帳を更新してきました 先月あたりに更新手続きを行った精神障害者保健福祉手帳(障害者手帳)が受取可能になったので先週受け取ってきました. 2019年11月1日に3級から2級に更新されました. 更新の際に行ったこと 本当は医師から受け取った診断書1つだけで障害者手帳と自立支援医療受給者証の両方が更新可能なのですが, 1つ試したいことがありました. それは 精神障害者手帳は診断書なしで障害年金の等級に合わせてくれる 障害年金と障害者手帳の関係 - いいづか障害年金オフィス(

現在StackageのLTS Haskell 14.16で入るhlintのv2.1.26は壊れているので対策しました

hlintがParse Errorを報告する意味が解らなかったのでissueを書いていたのですが, allow: newerを有効にしてnightlyの最新版を入れたら治っていました. 最新版では治っているものにissue建てても流石に無駄だなあと思ったので私個人の記事に書いて供養します. 現在の対処法としては, hlintコマンドを使う時に hlint --ignore="Parse error" src などとすることです. どうせシンタックスエラーはGHCがビルドする時にエラー

EmacsのquickrunでHaskellを実行する時にシステムのghcではなくStackのghcを使ってもらう方法

syohex/emacs-quickrun: Run command quickly. This packages is inspired quickrun.vim は初期設定では以下の通りrunghcをそのまま実行してHaskellを実行します. ("haskell" . ((:command . "runghc") (:description . "Run Haskell file with runghc(GH

gradle-scalatestはGradleのバージョンが合わないと謎のエラーを吐くので注意しましょう

問題 JavaとGradleでビルドしているプロジェクトにScalaソースコードを突っ込むことにしました. テスト駆動開発をする予定なのでまずはScalaTestを導入することにしました. scala - Can't run Scalatest with Gradle - Stack Overflow に書かれている通りGradleは初期状態だとScalaTestを認識せずにかなり面倒な記述が必要になるので, デコレーター(で良いのか?)とかが必要としないものを探しました. 本当はsbtでScalaもJa

localhostにlistenしようとして使っていないアドレスで失敗するのはVagrantが/etc/hostsを書き換えるのが原因?

問題 Macでlocalhostを対象に待受を行うプログラム(例: webpack-dev-server)を動かすと Error: listen EADDRNOTAVAIL: address not available 192.168.33.13:8080 のようなエラーが起きてlisten出来ないことがあります. 192.168.33.13なんてIPアドレスの範囲すら外れているので完全に謎です. 同僚2人がMac使いでこの現象に悩まされていたので調査してみました. 直接的な原因 /etc/hos

:
AWS Japanの最終面接で落ちてきました

受けた会社 AWS Japan 経緯 2019年09月18日に採用担当の方から 弊社の社員より評判をお聞きし、ぜひ弊社のエンジニア職にてご興味をお持ちいただきたくご連絡いたしました。ご紹介したいポジションはこちらとなります。 というメールが来ました. クラウドサポートエンジニア/Cloud Support Engineer に応募してみませんかということのようでした. どうせ落ちるだろうけど, とりあえず面接受けてみるかと思って応募しました. カジュアルミーティング 職務内容や職場環境につ

Haskell Day 2019に参加しました

Haskell Day 2019|IT勉強会ならTECH PLAY[テックプレイ] 去年: Haskell Day 2018に参加しました - ncaq 例によって発表はせず聞き専です. 去年と比べてあまりメモしなくなって自分の軽い感想と自分の質問だけメモしていました. あまり読む価値はないかもしれません. 10時12分に着席. 「詰めて座って下さい」とのことだったので一番右端に座ったけど, そこまで人詰まらなかったので少し中央に寄り直したら, 右のプロジェクタの真正面に位置したのでとてもちょうど良かった.

EmacsでJava開発をする時eglotではなくlsp-modeを使えば割とあっさり構築完了しました

ぐだぐだ試行錯誤したログを載せています. EmacsでJava開発をする 専用IDE以外でJava開発をするのは苦行であることが知られています. 実際私も2015年ごろに学校の課題で ncaq/chat.sd: チャットツールを開発していた時はflycheckが対応していなくて一々コンパイルエラーをgradleで確認する地獄の作業を行っていました. それでもクソ遅い上に頻繁に壊れるEclipseよりはマシだったので皆よりは優位を取っていた気がします. 正直あの環境だったらIntelliJを学割入手した方が

Gentoo LinuxでUSEフラグをunmaskしてopenjdk 11のgentoo-vmフラグを有効化してシステムのJavaとしてインストールする

Gentoo Linuxでは現在openjdk 11をインストールすることは出来ますが, デフォルトでシステムグローバルのJavaとして設定することは未だ出来ません. それは未だIcedTeaやOpenJDK 8の役割になっています. しかし一々パスを設定するなどは面倒くさいのでJava 11をグローバルで使える方法を探しました. マスクされてるだけでgentoo-vmのUSEフラグは存在するのでこれを有効にすれば問題無さそうです. マスクされているということはバグがあるのでしょうけど, 基本的にJavaア

問題が発生したのでGENTOO_MIRRORSのftp.jaist.ac.jpへの繋ぎ方をrsyncからhttpに変えました

私はGentooのmake.confのミラー設定を GENTOO_MIRRORS='rsync://ftp.jaist.ac.jp/pub/Linux/Gentoo/' としていました. そうしていたら今日ソースコードのダウンロードに失敗するのを発見しました. ミラー設定を解除してGentoo公式を見るように設定しても >>> Emerging (1 of 2) sys-libs/timezone-data-2019c::gentoo * Fetching files

Windowsを心配するのを止めてfont-familyにsans-serifとだけ指定するようにしました

私は font-family には総称ファミリを設定するべきだと前から思っていました. グローバルな空間で明朝体ではなくゴシック体を使うように設定するには font-family: sans-serif; とだけ指定するのが望ましく, 何かをごちゃごちゃ指定するべきではないと思っていました. 何故ならばユーザは表示したいフォントをそれぞれOSやブラウザに指定しているはずで, それを上書きしてしまうのは行儀が悪いからです. 総称ファミリであるsans-serifが設定されていればユーザはブラウザの設定など

:
静的型付けでnull安全なAltJSの評価と選定

2019年09月版. 静的型付けでnull安全なAltJSの評価と選定. 比較整理する必要があったので比較しました. 間違っている所などの指摘を受けたいので広く公開します. ちなみに私は2015年頃はDartを推していたようですね. 当時のTypeScriptはstrictNullChecksも@typesも無かったのであまり魅力的に感じなかったようです. 私の提言 結論から書きます. 個人的にはPureScriptを推したいですが, 流石に他の人にとっては学習コストが大きすぎると思ったので, 基本的に以

ActixのHandlerのhandleメソッドでFutureを返却して送信元のActorで実行する

actix/actix: Actor framework for Rust でHandlerからFutureを返そうとして失敗し続けて何もわからん… ってなってました. ハマったポイントはロジックのResultのErrとFutureのErrは別だと思っていたところです. そこは同一なので, ResponseFutureの第2型引数にはエラーを単独で渡す必要があります. ハマり続けていた原因はslack_hook::Resultを使っていたため, エラーが単独で見づらかったところにもあるでしょう. まずメッセ

dic-nico-intersection-pixivをニコニコ大百科のデータを自前でスクレイピングするように変更しました

ncaq/dic-nico-intersection-pixiv: ニコニコ大百科とピクシブ百科事典の共通部分の辞書 https://cdn.ncaq.net/dic-nico-intersection-pixiv.txt でnicoimeのデータを使わず自前でスクレイピングするようにしました. 何故自前でスクレイピングするようにしたのか これまでのdic-nico-intersection-pixivはニコニコ大百科の辞書データとしてニコニコ大百科IME辞書 神は細部に宿り給うのものを使わせて貰っていま

子供部屋おじさんなのでSony BRAVIA KJ-55A9Gを父の日と父の誕生日プレゼント合算で購入しました

購入したもの A9Gシリーズ | テレビ ブラビア | ソニーの55型です. YouTubeの4Kデモを写した様子 何故購入したの 私はテレビを殆ど見ないのですが, 両親は普通に見ています. 母の日に母の誕生日プレゼントを合算して(こちらもかなり時期が被っている)に 9.7インチiPad - Apple(日本)を買ったので, 父親には父の日と父の誕生日プレゼントを合算して何を贈るかなあと思って考えてみると, 今のテレビPanasonic VIERA TH-P37X1はプラズマなので残像とかあまり

Rustでデフォルトのパニック表示を損なわずにpanic時に行われる処理を増やす

多分みんな知ってそう. 動機 Rustでサーバを書いている時, panicは想定外なので起きたら絶対に気が付きたい. よってパニックが起きた時はSlackの特定チャンネルに通知を出すことにしました. それで2重パニックになったらもう知らない. 実現メソッド std::panic::set_hook - Rust でパニック時の処理を書き換えできます. 問題 これを使うだけではデフォルトのパニック処理が消えてしまいます. RUST_BACKTRACE=1時の処理とかを自分で書くのは面倒くさい.

reqwestのマイナーバージョンアップで間接的にプログラムが動かなくなりました

問題 slack-hook - Cargo: packages for Rust が Error(Reqwest(Error(Executor(EnterError { reason: "attempted to run an executor while another executor is already running" }), "https://hooks.slack.com/services/foobarhogehuga")), State { next

RustのBTreeMapで特定のキー以上(未満)の要素を全て取り除くにはsplit_offメソッドを使う

やりたいこと BTreeMapの特定のキー以上の要素を消去したい. 望むこと BTreeMapはその名の通りツリーなのだからツリーを切り離すことですっきり効率もよく削除したい. そりゃ全てイテレーションすれば削除は出来るでしょうがスマートじゃあない. 解決方法 split_offメソッドを使います. サンプルコード use std::collections::*; fn main() { let mut a = BTreeMap::new(); a.insert(0,

hpackでbuild-type: Customを使うと警告が表示される問題の解決方法

問題 build-type: Custom とpackage.yamlに書いてSetup.hsで処理を行うと, ビルド時に Warning: Package syakerake uses a custom Cabal build, but does not use a custom-setup stanza という警告が表示されます. 原因 Setup.hsで使われているソースコードの依存関係が記述されていないのが原因. 解決方法 私はSetup.hsで import Dist

Gentoo Linuxでnetworkmanager-l2tpをnm-appletを使って設定する時はgnome USEフラグを付ける

networkmanager-l2tpを使ってL2TP VPN接続したかったのですが, インストールして接続を編集しようとしてもVPNタブが出てこなくて困りました. VPNタブが出ないと設定を作成も出来ないので何もできない. いろいろ調べて, package.useでgnomeフラグを追加してみたら出現しました. net-vpn/networkmanager-l2tp gnome VPNタブ

Emacsを使うとparcel watchが🚨 Cannot read property 'type' of undefinedで動かない問題を解決する

yarn parcel watch --out-dir dist src/index.html のようにparcel watchを実行している時Emacsでファイルを編集すると 🚨 Cannot read property 'type' of undefined とエラーが出てきてファイルが更新されません. Hot Module Replacementのせいかなと思って--no-hmrを付け足してみましたが改善しません. これは既に報告されていて, Cannot read prop

:
npm scriptを使ってtypescript-eslint環境で複数のlintをターミナルで常に動かして成功をわかりやすくする

typescript-eslintは型エラーを報告しない typescript-eslintはtscが警告するような型エラーを報告しないため, lintはeslintとtscの両方で行う必要があります. 場合によってはstylelintも行うでしょう. よってnpm scriptのlintコマンドは以下のようになります. { "scripts": { "lint": "run-p --print-label lint:*",

Actix 0.8でActorを別のスレッドで実行する

Actor model by Rust with Actix - Qiita はとても参考になる良記事で公式ドキュメントより優れている面すらあります. 公式ドキュメント Actix Quickstart - Actix は「WIP」で章が終わっている場所すらあるので… ただ0.7準拠というのが残念なポイントですね. 現在(2019-05-30T19:14:10+09:00)のActixのバージョンは0.8.2なので. 特にArbiterに関するAPIは大幅に変わっていて, startメソッドなんて消滅してい

Actix web(1.0)でグローバルな状態を共有する方法

試行錯誤を書いても役に立たないし色々な無駄な思考を書くのも面倒なので省いて短く書きます. まずActix web 1.0では0.7でstateと呼ばれていたものはdataと呼ばれるようになりました. dataのドキュメントは以下です. actix_web::web::Data - Rust そしてここに書かれているサンプルコードは間違っており, 素直に設定していくと App data is not configured, to configure use App::data().というエラーメッセージを見て

Haskellプロジェクト(Stack)のTravis CIでの実行速度を高速化する

プロジェクトの.stack-work/をまるごとキャッシュしてしまう. cache: timeout: 1000 directories: - $HOME/.local - $HOME/.stack - .stack-work/ 単純明快ですがこれに長らく気がついてませんでした. 私が今取り扱っているHaskellプロジェクトにはextra-depsが多く, これらをビルドするのには$HOME/.stackをキャッシュするだけでは足りないので, 毎回これらをビルドするのに

Material-UI PickersのDateTimePickerのrequired属性が効かない問題をreadonlyを抹消して解決する

input要素にrequired属性を付加しておくと, formのsubmit時にinputにデータが入力されていないとブラウザが警告してくれます. The world's most popular React UI framework - Material-UI のTextFieldにもrequired属性があって同様に動いてくれます. しかしtype="datetime-local"のブラウザネイティブサポートは限られているので, これはラッパーを使ってクロスブラウザ対応させることになります. そこでM

:
Emacsでtslintが使われているプロジェクトではtslint, eslintに移行したらしきプロジェクトではeslintが使われるようにする

TypeScriptでは今後ESLintが使われるようになりました. TypeScript on ESLint の未来 - Qiita それ自体の設定は以下です. @typescript-eslint ことはじめ - teppeis blog ちなみに私は "extends": ["plugin:@typescript-eslint/recommended"] を有効にしています. また fathyb/parcel-plugin-typescript: 🚨 Enh

:
wasmを使わずにRustプログラムの構造体に対応したTypeScriptの型定義ファイルを吐き出す

やりたいこと actix-webでwebアプリケーションを書いていて, フロントエンドとの通信をJSONで行うことにしました. どうせFormを使ってもFormをHTMLに展開できるテンプレートエンジンなどが無いからです. この小規模のアプリケーションならばPOSTを禁止して全部PUTにしてしまえばCSRF対策考える必要もなくなりますし. さてJSONをRust側で表す型はstructで書いてSerdeでデシリアライズ出来るようにするとして, 対応するTypeScirptの型を自動生成したくなりますね.

Rustプロジェクトでlib.rsにmodを書いた時にlibディレクトリ以下に置くことを要求されてコンパイルが通らなかった原因

バカバカしいですが数分ハマったのでメモ. Rustプロジェクトでlib.rsをmain.rsから分離させた時に, error[E0583]: file not found for module `foo` --> src/lib.rs:9:9 | 9 | pub mod foo; | ^^^^^^^^^^ | = help: name the file either lib/foo.rs or lib/foo/mod.rs inside the directory

:
Linux(X11)でキーボードのチャタリングをGnomeなどのアクセシビリティツールを使わずに抑止するにはxkbsetを使う

ソフトウェアでチャタリングを解決 Alienware m17に買い換えてGentoo LinuxをBtrfs on dm-cryptでインストールしてNVIDIAのGPUを有効にして起動しました - ncaq で述べているように, C-mが意図せず2回押される問題に悩まされています. 「キーボード チャタリング」で検索するとソフトウェアから対処する方法があることを知りました. 人間の意図する連打速度ではない連打を無効化して押さなかったことにするアプローチのようです. Windowsだとccchattttt

react-hot-loaderを最新版にアップデートしようとして右往左往したメモ

完全に右往左往した時のメモなので脈絡がないです. Appコンポーネントが別ファイルに分けられてなくて警告が出ていました. それを直したかったのです. gaearon/react-hot-loader: Tweak React components in real time. を読んで, どうせ構造を変えるなら最新版準拠にしたいなと思いました. react-hot-loaderを4.8.4にして, import { hot } from 'react-hot-loader/root'; im

Linuxデスクトップで追加アプリケーション無しでカテゴリごとにデフォルトアプリケーションをまとめて設定

デフォルトアプリケーション - ArchWiki にはNautilusなどのファイラでmimetypeを設定することが出来ると書いてあります. 確かにそれは出来るんですが大量にあるファイルの関連付けを一つ一つ設定していくのは面倒くさいです. Ubuntuとか使ってたらUbuntu Tweakで設定出来たような気がしますが, あいにく私が使っているのはXMonadとGentooなのでTweak系は使えなません Mimeoとかいう設定アプリケーションがあるらしいですがportageに無いのであまり使う気になれま

ThunderbirdのLightningにGoogle Calendarの情報を同期するProvider for Google Calendarが実用的になっていました

Provider for Google Calendar Mozilla Thunderbird には Lightning というカレンダー+TODO機能が同梱アドオンとして付いてきます. それに対して Google Calendarの同期を行う Provider for Google Calendar というアドオンがかなり良くなっていました. 昔(5年前ぐらい)に使ったことがあるのですが, 謎の同期エラーを起こしまくって使い物にならないと思って, でもスマートフォンのことを考えるとGoogle Cal

:
BtrfsのマルチプルデバイスがsingleだとJBODになってデータが分散されないのでRAID 0に切り替えました

追記(2021-01-21): singleに戻しました singleに戻しました. データが増えた後, 実際にはデバイス空き容量があるにも関わらず, no space left on device と表示が出てエラーになってしまいました. Btrfsのサイトなどを見たり, Stack Overflowを見たりすると, RAID 0だと全ての領域を使い切れるとは限らないと書かれているようです. 使える場合もあるようですが… もしかしたら定期的にbalanceを実行すれば問題ないのかもしれませんが, あんま

:
Alienware m17に買い換えてGentoo LinuxをBtrfs on dm-cryptでインストールしてNVIDIAのGPUを有効にして起動しました

この記事には Alienware m17の購入に至った理由 購入方法(ALIENWARESTORE AKIBAでの購入が1万円割引でオススメ?) Gentoo LinuxのBtrfs multiple device on dm-cryptでのインストール方法 OptimusをBIOSで無効化出来ない状態でもNVIDIAのGPUをLinuxで使う方法 Alienware m17のレビュー が書かれています. Alienware m17 (08A2) 型番P32Eを購入しました 第8世代のインテルCPUを

xmobarで日本語dateをフォーマットして表示する方法

xmobar標準のdateを使うと表示はこうなります. date 私は英語を理解しないのでSatの意味が分かりません. しばらくそのままこれを表示させて英語の曜日を覚えようと思いましたが無理でした. 日本語にしたい. 実は日本語にすること自体は簡単です. xmobarにDateの設定をせずに%date%を動かせば良いのです. 日本語date しかしこれはなんかスペースが多くて領域が勿体ないですね. JSTなのも自分にとっては自明ですし… と思って設定します. Run Date "%F

:
Linuxカーネル5.0ではCFQ, Deadlineと言ったシングルキュースケジューラが全て削除されてカーネルのデフォルトIOスケジューラ設定も無くなっていました

Linux 5.0での変更 5.0での全体の変更はここで見れます. 今回ビックリしたのは block/cfq-iosched.c と block/deadline-iosched.c の削除です. CFQが主にSSDで性能が良くないことは知っていましたが, Deadlineが削除されるとは思っていませんでした. まあパフォーマンスの最大化 - ArchWiki を信じるならCFQとDeadlineはマルチスレッドに対応していないので削除は時代の流れでしょう. 言及はコミット上ではここでされています. すご

:
RustプロジェクトでCircleCIを設定する

RustプロジェクトについにCircleCIを導入する余裕が生まれてきたので, 設定メモを書きます. ググったのですが全網羅して書いてる所が見つからなかったので仕方なく自分で調べて書いてます. CircleCIのimageを利用する 最初はRust公式のDockerイメージ rust - Docker Hub を使おうと思ったのですが, CircleCI的にはCircleCIの作ってる circleci/rust - Docker Hub を推奨してるらしいですね. それでタグは何を選択すれば良いんでしょ

:
Rust超初心者向けチュートリアル, ツールとマクロの紹介

社内向けに発表した資料を多少改変してコミュニティに還元します. 初心者向けガイドなので既に書いてるって人は見なくても良いと思います. 実際に手を動かしてツールをインストールしてもらうことを推奨します. 適当に動かしたい人向け Rust Playground webサーバがRustコードを実行してくれます. Rustのダウンロード数100位までのライブラリが使えるので, 大抵のサンプルはインストール不要でここで実行できます. shareしたコードは自動的にgistにアップロードされるのでそこだけは注意. s

RustのStructOptで環境変数に値をフォールバックさせたい時の書き方

問題 プログラムにAWSのキーを入力して動かしたい. 素直に引数に入れさせたいので StructOpt を使って認識するようにします. use structopt::StructOpt; #[derive(StructOpt, Debug)] #[structopt(name = "basic")] pub struct Opt { #[structopt(short = "a", long = "aws-access-key-id")]

Firefox for Androidでも「通知の許可の要求をブロック」する方法

webのプッシュ通知の許可を求めてくるダイアログは鬱陶しいですよね. 鬱陶しい通知許可ダイアログの例 Notifications API は非常に濫用され, どのサイトに行ってもいきなり許可を求めてくるようになりました. 非常に不快です. デスクトップ版Firefoxには「通知の許可の要求をブロック」する機能があります. 通知の許可の要求をブロック 私はこれを使って, 有用であるChatworkとFacebook以外の通知を求めるダイアログを完全にブロックしています. 快適です. しかし残念なが

Emacsでrusticとeglotを使っている時にflymakeのハイライト表示がバグるので無効化しました

前提 私はEmacsでRustを書く時に brotzeit/rustic: Rust development environment for Emacs を使っています. そしてLanguage Server Protocolのフロントエンドに joaotavora/eglot: A client for Language Server Protocol servers を使っています. rusticはeglotを自動設定して, eglotはflycheckではなくflymakeを使ってエラーの検出と表示

:
Rustで外部crateの型にメソッドを実装する

Rustにはメソッド構文があります. メソッド構文 となるとデータに関連する処理は単独関数ではなくメソッドで実装したいですね. よし type Comments = Arc<RwLock<BTreeMap<u32, String>>>; impl Comments { fn lines(&self) -> Vec<String> { unimplemented!(); } } これはエラーになります. 理由に

nickel.rsで作ったサービスでCORSを許可する

ガバガバセキュリティで良い場合. 特別なパッケージは要らないです. サンプルコード nickel.rs/enable_cors_header_set_issue.rs at 181065e693dd826f167534126bce5aa2254ed657 · nickel-org/nickel.rs を見ます. enable_cors関数を実装します. コピペする場合はMITライセンスのサンプルコードなので転載元は明示しておきましょう. server.utilize(enable_cors);でヘッダを付加

:
EmacsのHaskellの開発環境をinteroからHaskell IDE Engineに移行しました

chrisdone/intero: Complete interactive development program for Haskell をやめて, haskell/haskell-ide-engine: The engine for haskell ide-integration. Not an IDE を使い始めました. 昔の移行記事遅まきながらEmacsのHaskell開発環境をInteroに移行しました - ncaq 昔の記事を見て気がついたのですが, 今はターゲットの切り替えは haskell

:
xmonadを再起動した時xkeysnailが終了してくれなくて2重起動するようになっていたのでsystemdに管理だけ任せて起動はxmonad側で行うようにしました

xmonadで起動したzshのスクリプトがxmonadの終了時に終了しない spawn ".xmonad/xkeysnail-daemon" としてstartupHookに差し込んであるスクリプトが終了しません. xkeysnail-daemonの内容は以下です. #!/usr/bin/env zsh set -ux while do sudo xkeysnail --quiet ~/.xkeysnail/config.py >&2 echo

デスクトップLinuxにBtrfsとSnapperを使うようになってファイルを間違えて削除してしまう恐怖から開放されました

今の私のデスクトップはbcache+Btrfsで, ラップトップはBtrfsという構成なのですが, Btrfsの機能を活かしたら最高に便利でした. Btrfsに関する基礎的な知識はこちらを参照してください. Btrfs - ArchWiki 圧縮にlzoを選んでるのと(zstdの方が良い) discardオプションを使っているのが(NVMeの場合fstrim.timerを使った方が良い) 今風では無いですがそれ以外は網羅しています. スナップショット Btrfsにはスナップショット機能があり, その時点で

:
RustのCargoプロジェクトで素直に書いたDockerfileをdocker buildするとソースが書き換わるたびにフルビルドが走って滅茶苦茶遅いことはcargoのファイルだけコピーしてビルドすることで解決します

Docker初心者です. C++アプリケーションに依存してたりして少し複雑なcargoプロジェクトをDockerで動かせるようにしていました. 素直に COPY . . RUN cargo build --release と書いていたら, ソースに変更を加えるたびに, 依存ライブラリのビルドが全て走って, 毎回滅茶苦茶時間がかかります. その対策として, # プログラムの依存関係だけをコピー COPY Cargo.toml Cargo.lock /work-dir/ # 何もプログラムが無いとビルドエラ

MSIのM-Flashで更新対象のBIOSファイルが認識されないと思ったら, 同じ型番の違うマザーボードのBIOSをダウンロードしていました

2017年からUEFIアップデートしてないですし, 最近第二世代Ryzen対応させるアップデートが出てるはずなので, MSIのマザーボードのBIOS(UEFI)をアップデートしようと思いました. まずはlshwで型番を確認 strawberry description: Desktop Computer product: MS-7B09 (To be filled by O.E.M.) vendor: Micro-Star International Co., Ltd. ve

:
Dockerで起動したサーバにcurlでアクセスしても「接続が相手からリセットされました」とエラーメッセージが出るだけの時の解決策

エラー curl: (56) Recv failure: 接続が相手からリセットされました 解決法 docker run --network=host で解決します. In Mac, curl: (7) Failed to connect to localhost port 8080: Connection refused · Issue #359 · bazelbuild/rules_docker 見てて気が付きました. 1日潰しました. The host networking drive

GentooをXPS 13 9360に再インストールした時に詰まった所のメモ

前回のインストール. XPS 13 9360(2016年発売)にgentooをインストール - ncaq 動機は容量が足りないためです. 次のXPS 15のアップデートまでこのPCで耐えしのぐつもりなのでやっていきます. Windowsのパーティションが縮小できませんでした 「十分な空き領域がないのでこの操作を完了できません」と出てくる 前回のインストール時には縮小できる範囲が半分ぐらいだったのでちょうどそれぐらいで分割しましたが, 明らかに足りなくなってきたのがわかりました. しかしWindows側も

xmonadでxmobarなどに表示されるウィンドウタイトルがかなり短く省略されてしまうことの対策

問題 4Kディスプレイを買ってから気がついたのですが, xmonadが表示するウィンドウタイトルはかなり短く省略されてしまいます. 短く省略されている図 せっかく大きなディスプレイを買ったのにタイトルが省略されているのは勿体無い! 特にFirefoxのwebページのタイトルは長いのが多いですし, Emacsのマイナーモード群は下のステータスバーではウィンドウ分割されると読めなくなるので余ってる領域で全部閲覧したい. ということで何故省略されているのか調べて解決させました. 原因 xmonadやx

:
FirefoxがGCCとClangのどちらでビルドした方が速いか私のGentoo Linux環境で測定してみました

vs 結論 あまり変わらないのでClangを使うことにしました. FirefoxがGCCではなくClangでビルドされるようになりました 次のナイトリーからTier-1プラットフォームのFirefoxすべてがLLVM Clangでビルドされることになると伝えた。 Firefox全プラットフォームでLLVM Clang利用、性能向上を確認 | マイナビニュース そしてFirefox 64からは正式にClangで全てのプラットフォームに提供されるようになりました. Improved perfor