WriterでもControl.Monad.Trans.Writer.CPSは典型的なスペースリークはしない
Writerを使いたいけどスペースリークが怖い Writerを使ってはならない - Qiita に書かれているように、 HaskellのWriterは長年スペースリークの元になるので敬遠されてきました。 しかし、私はWriterのインターフェイスをとても使いたいのでもやもやしていました。 ReaderT パターン(翻訳) - LugendrePublic ではスペースリークの危険性があってもWriter使った方が早かったから使ってると書いてありましたが、それでもスペースリークの危険性を考えながら書くのはな
PowerShellで改行せずにファイルに追記する方法
前提 GitHub ActionsでWindowsのPowerShellを使う必要がありました。まあWindows向けのrunでもbashを指定できるみたいなんですが、せっかくあんまりCIで触らないWindowsなのでネイティブシェルであるPowerShellを使ってPowerShellに親しみたいという意図がありました。 やりたいこと ファイルに改行せず文字列を追記したい。 Linuxならば echo -n "foo" >> bar.txt のようにecho
serversessionのアップデートで新しいpersistentに対応した時の格闘記録
前提 これをやった日は3時間ぐらいしか寝てなくて朦朧としてました。なので相当グダグダやっていて、普段ならすぐに解決できるタイプの問題の解決にも手間取っていました。 やる作業 yesodweb/serversession: Secure, modular server-side sessions. を新しいLTSに対応させる。これも昔私が対応させたのですが、今はLTS 15になっています。 persistentのライブラリ的には2.10.5.2から2.13.3.5へのアップデート。多分。 何故必要か
Galaxy Z Fold 3 5Gを今更レビュー
Galaxy S22 UltraとGalaxy Z Fold3 5Gのどっちを買うか悩んでいました - ncaq で悩んだ末に、 Galaxy Z Fold 3 5G を購入しました。 2022年4月12日から使っています。 Galaxy Z Fold3 5G着弾したセットアップするか pic.twitter.com/Np2vYHhnrp — エヌユル (@ncaq) April 12, 2022 日本での発売日が2021年10月なので極めて今更感がありますが、一応レビューを書いておきます。 概要
genkernelで作成したinitramfsがOut Of Memoryで起動しないことへの対処
背景 私は今のラップトップPCでは以下のようなコマンドでinitramfsを作っていました。 alias genkernel-update='sudo genkernel --no-lvm --btrfs --luks --firmware initramfs && grub-update' カーネル直接起動ではなく、 initramfsを使っている理由は、 rootのBtrfsによるソフトウェアRAIDと暗号化を使っていることです。 dracutではなくgenkern
Galaxy S22 UltraとGalaxy Z Fold3 5Gのどっちを買うか悩んでいました
悩み Galaxy S22 Ultra と Galaxy Tab S8 Ultra の組み合わせを買うか、 Galaxy Z Fold3 5G を買うか。 悩んでいます。 S22無印は小さいしメモリ少ないからなしですかね。 S22+なら小さくないのでメモリに目をつぶってありだったんですが、日本では発売しないのでダメ。 Galaxy Tab S8 UltraはGalaxy Tab S8+で良いかもしれません。 Fold買っても結局Tabは買うかもしれません。 前提 MNOとの高額な回線契約はしない。 仮
tidy-html5が5.9バージョンあたりからpreタグの改行を消してしまうので加工した内容を使わないようにする
背景 このサイト、 ncaq/www.ncaq.net: ncaq website はHakyllで構築しています。 そして最終的に出力するHTMLが正しいかどうかを、 htacg/tidy-html5: The granddaddy of HTML tools, with support for modern standards を通すことでチェックして、ついでにHTMLとXML(feed)をインデントしています。 問題 tidy-html5の5.9あたりからは以下のバグが発生しています。 tidy
Firefoxでクオートキーがクイック検索に奪われてしまうことへの対策
日本語記事がないので一応記述しておきます。 問題 いつからのバージョンか知らないですが、 Firefoxでクオートキーを押すと、クイック検索 (リンクのみ) が起動してしまいます。 ページ内検索 | Firefox ヘルプ これは、 Surfingkeys などの拡張機能を使ってクオートで何かしらの操作をしている人にとっては困ることで、拡張機能では上位レベルのキーを奪い取れないようです。 自分は選択したものを検索するのに当てていたので困りました。 解決 ほぼ、 Firefox 63: Disable
helmの更新でhelm-agが壊れましたが、helm公式のhelm-grepがripgrep対応していたのでそちらに乗り換えました
問題 emacsorphanage/helm-ag: The silver searcher with helm interface というhelmでgrep串刺し検索を実現するソフトウェアを、 ripgrepを使うように設定して長年使っていたのですが、今日helmを更新したら壊れてしまいました。 ASCIIのエスケープシーケンスをそのまま表示してしまいます。 調査 調査するのにも無理矢理カスタマイズしているし再現が難しいな、まずはhelmのコアの更新を見て何処で壊れてるか見るかと調べたところ以下のi
Windows 10とWSL2のセットアップログ
久しぶりにWindowsのセットアップを行いました。 2021-12-08から書き始めていたようです。今更ログを公開します。 もう何度もWindowsのセットアップは行っているので見返したいのと、他の人が詰まってたら助けになるようにセットアップをログに残しておきます。 近々またセットアップすることが予想されますし。何故なら近いうちにDDR5世代のPCを組んでWindows 11を入れたいからです。 いい加減セットアップはスクリプトにするべきなのかもしれませんが、 GUI操作が必要なのがまだまだ多いのと、今回
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して先送り解決してたみたいで
既にコンソールで作ったRDSインスタンスをCloudFormation管理下に移動する
雑な人が雑に作ったRDSがあります 大学時代の私が適当にコンソールで作ったS3やRDSなどのリソースをAWS CloudFormation(CDK)で管理することにしました。 設定の変更やアップデートのデプロイを楽にしたかったので。 S3は普通にインポート出来たのですが、 RDSのインポートにちょっと詰まったのでメモします。 雑にインポートしてはダメ CloudFormation cannot update a stack when a custom-named resource requires r
経験5年のHaskellユーザがScalaを仕事で半年使ってみた
haskell-scala-java ちょっと前までScalaを書いていたので、 Haskell好きな人がScalaを書いた感想を書きます。 タイトルは経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blogの模倣です。 あくまで1ユーザの感想です。 Scalaに慣れてしまうと違和感を忘れてしまうと思ったので、当時箇条書きで雑にメモしていたものを参照して書いています。 逆にScala使いがHaskellを知るメモに役立つかもしれません。 Ha
Windows Terminalでmsys2のzshをscoopのPATHを有効化しつつ使う
Windows Terminal良いですね。やっとWindowsにも標準的に使える、まともなターミナルが出てきたかと感無量です。 PowerShellとかシェル部分は面白かったのに、ターミナルエミュレータがつらすぎて使う気になりませんでしたからね。 ただ標準設定でmsys2には当たり前ですが対応してないのでちょっと躓きました。後から考えると冷静にヘルプを見るだけなのですが、ちょっと詰まったのでメモついでに書いていきます。 参考文献 Windows Terminalでもmsys2を使おう - Qiita
AWS CDKでECSにデプロイするDockerイメージのマシな管理方法
大前提の問題 AWS CDKを使ってECSへの継続的なデプロイを行う場合、単純にイメージをfromEcrRepositoryなどで指定すると、 Dockerイメージのみが変更された時、素直にイメージを指定しているだけだと変更が検知されないのでECSタスクの更新が行われません。 主な解決策 3つあります。 ContainerImage.fromAssetを使う イメージのダイジェストをイメージのタグとして付与する gitコミットハッシュをイメージのタグとして付与する それぞれ利点や問題点を書いていき
Pythonでwebスクレイピングをする時に必要だった知識
Pythonでスクレイピングする仕事が降ってきました 半月前ぐらいに、 Pythonでwebサイトをスクレイピングする仕事が降ってきました。 自分が始めるならHaskellやScala、他人が読み書き出来ることを要求されてもTypeScriptあたりで書くのですが、まあ既存のスクレイピングコードがPythonでそれに追加することを要求されたので仕方がありません。 と言うわけでちょっと書いていました。仕事があるたびに即座に(その日以内あたり)終わらせていた気がするので、あまり本格的にはやっていませんが。 必
SlackとTwitterにマルチポストしたかったのでmikutterプラグインを書きました
timesチャンネル作ってしまった 今の会社のSlackにはtimes文化がありますが、 times文化とは: またSlackでtimesを始めてしまった|ばんくし|note 私自身はChatwork時代からプロジェクトに関連する話(〇〇ライブラリ使うべきかなあとか)みたいなことは、全部プロジェクトのチャンネルに垂れ流していて、プロジェクトに関係ない会社の話はrandomに、個人的な話はTwitterに書いていて、それで不自由していませんでした。 完全に技術的な話(〇〇言語のここが分からないとか)みたいな
AWS CDKのaws-lambda-nodejsパッケージが壊れていたので修正しました
概要 aws-lambda-nodejs module · AWS CDK のデフォルト設定での動作が壊れていたので、修正して fix(lambda-nodejs): docker build is not working by ncaq · Pull Request #10885 · aws/aws-cdk というpull requestを送ってmergeされました。 aws-lambda-nodejsは便利 aws-lambda-nodejs module · AWS CDK と言うモジュールがあ
mozc-utのebuildを書きました
例えば「汚言症」が変換できないからストレスだなあと思ってたら、 Mozc UT Dictionary では辞書に含まれてるらしいですね。 でもカスタムビルドするのは管理が面倒、組み込みにすれば外部辞書では出来ない優先順位付けとかが出来ると言ってもなあ、と思って外部辞書として読み込もうとしましたが、辞書数件数制限に引っかかって出来ませんでした。 仕方ないので組み込みビルドすることにしましたが、 Gentoo向けのebuildとかないみたいなので、自分のoverlayに書く必要があるみたいですね。 mozc-u
使えるようになった→Emacsのlsp-modeのlsp-eslintはまだ使うべきではなかった
追記: lsp-eslintは使えるようになっていました Eslint - LSP Mode - LSP support for Emacs に載っているようにautomatic installにも対応して、セットアップが簡単になり、使えるようになったみたいです。 未だvscode-eslintはnpmでインストールできていませんが、 zipファイルをGitHubあたりからダウンロードして展開しているようです。 私の場合ファイル開く時の自動選択でeslintを選ぶとEmacsが応答なしになったので注意して
eslint-cliやeslint_dを動かせるTypeScript向け.eslintrc.jsの書き方
eslint_dが爆速 ESLintの速度が我慢ならないので色々調べてみた結果、 mantoni/eslint_d.js: Makes eslint the fastest linter on the planet が爆速であることを知りました。 存在は知っていましたがこんなに速くなるとは思っていませんでした。 eslintd-fixにはカレントディレクトリの問題があります flycheckはプロジェクトディレクトリを探索するので問題ないのですが、 aaronjensen/eslintd-fix: E
AWSのPrivate Subnetに配置したRDSになるべく持続的リソースを使わずに直接コマンドラインからアクセスする
大変混乱したのでメモします。 助言ありがとうございます! @ncaqaws上のec2にec2-instance-connect とssm-agentがインストールされていて、AmazonEC2RoleForSSMあたりがアタッチされたroleをinstance profileとして設定されていればできました(試したのは amazon-linux2ですが)https://t.co/qd40m7PBgN — 窓際じゃなくなった眼鏡さん (@calkinos) October 12, 2020 踏み台サ
AWS CDKのrole-arnをプロジェクトごとにファイルに書く
2021年3月11日追記: どうやら意味がないらしい 今日試してたら効いてませんでした。上位のアカウントを使って気がついてなかっただけのようです。ドキュメント通りやったのですが… 本文 単純な話ですがググり方によって出てこなかったのでメモ。 CloudFormationの実行ロールを作ってそれで実行しています。 いつの間にかCloudFormationがIAM Roleに対応していました! | Developers.IO 他のリソースを誤って破壊したくないので。 これがプロジェクトごとにアカウントが異
PandocをライブラリAPIで呼び出す場合(Hakyllなど)に東アジアの文字列に余計な空白が入ってしまうことの解決策
問題 私はちょっと前から句読点の種類を「,.」から「、。」に切り替えています。 それで気がついたのですが、このサイトで読点を打った直後に改行すると余計な空白が入ります。 その問題の原因と解決策は知っていたはずです。 それは以下の記事を読むと分かり易いでしょう。 日本語Markdown文書をPandocする際に「余計な空白」をどうにかしたい - Qiita 私はこの問題に対処していると思っていました。 Hakyllで日本語文中の余分な空白を削除する ブログを Hakyll に移行した | Tosainu
Scalaの環境構築をSDKMANからCoursierに移行しました
理由 SDKMANの設定は常に.profileのシェルスクリプトを動かすことになってログインログアウト時などに面倒なため。 Coursier Setupはダウンロードされたバイナリにパスを通すだけなのでシンプルです。 どうせCoursierはScala開発環境を構築する上で入れておいたほうが楽なので入れますし。 方法 Coursier を使って最速でScalaの開発環境を整える - ぶらっ記ぃが参考になります。 GraalVMのおかげでブートストラップが楽で良いですね。 Coursier Setu
msmtpでsmtp-relay.gmail.comを使うにはdomain設定が必要なことがある
sendmail互換システムがプログラムに必要になったのですが、 Docker内部でデーモンを動かすのはだるいし、 sendmailコマンドごときにコンテナを分けるのもだるいです。 でもデーモン無いと再送とか出来ないしなあと思っていたのですが、よく考えてみるとSMTPでメールを飛ばした後はフルマネージドなサービスが処理するのであまり考えなくても良さそうでした。 そこでSSMTPの後継らしい、 msmtp と言うデーモン不要のsendmailコマンドを動かそうとしていました。 しかしsmtp-relay.gm
TypeScript環境でもEmacsのeslint-fixを動かすための設定
eslint周り再調査して気がついたこと。 気がついてなかったけどeslint-fixが最近動いていなかった codesuki/eslint-fix: Fix current file using ESLint --fix と言うeslint --fixを動かすパッケージがあるのですが、最近動いていませんでした。 何故か調べた所 /home/ncaq/Desktop/goodbye-rfc-2822-date-time/src/GitHub.ts 0:0 error Parsing error:
Gentoo(クライアント側)でL2TPでVPN接続する
networkmanager-l2tpを使う 他のディストリビューションと同じようにNetworkManager L2TP pluginを使います。 Gentoo Linuxでnetworkmanager-l2tpをnm-appletを使って設定する時はgnome USEフラグを付ける - ncaq が今も必要かは調べていません。 strongswanのUSEフラグでワークアラウンドする 今現在(2020-09-23) without CAP_CHOWN capability. socket dire
Emacsにelpyをpipenv環境でも動くように導入する
動機 他の人がPythonで書いたコードに継ぎ足しで書くタスクが発生したので、これを機に今まで雑にpython-modeとpython-language-serverとautopep8だけで雑に書いていた環境をちゃんと整備したかった。 elpy vs lsp EmacsでのPython開発環境と言えば jorgenschaefer/elpy: Emacs Python Development Environment が有名です。 しかし今言語環境構築するならLSPが前提みたいな所がありますよね。 La
sbtのマルチプロジェクトでテスト用Scalaクラスを他のプロジェクトから利用する方法
プロジェクトの状態 rootプロジェクトにテストに使うためのクラスがあります. テスト用データ生成などを行うutilプロジェクトでそのクラスを利用したくなりました. しかしrootプロジェクトのテストに使うためのクラスはテスト時にしかコンパイルされないため, 普通にdependsOnしても利用できません. しかし sbt Reference Manual — マルチプロジェクト・ビルドをよく読めばちゃんと解決方法が書いてありました. dependsOnのクエリを弄る方法 sbtのutilセクションに
libinput-1.16.0にアップデートしたらxkeysnailが動かなくなりました
突然PCが一切のキーボード入力を受け付けなくなって焦りました. 最初はxmonadの問題なのかと思ったのですが, 調べたら xkeysnail がキーボードの入力を受け付けるけれど何も出力しないという問題を発症していることに気が付きました. 色々ダウングレードしたり再ビルドした結果, libinput-1.16.0だと動かなくて, libinput-1.15.6だと動くことが分かりました. とりあえず自前のebuildに依存設定を書いておきましたが, この先どうするのでしょう. libinputのバグなら報
タブレットを買ったらメールサーバがエラーを返すようになったのを解決
Fire HD 10(第9世代)を購入しました - ncaq でタブレットを買ってK-9 Mailをセットアップしたら, PCのThunderbirdがログインエラーを起こすようになりました. とりあえずDovecotを再起動したら解決したのですが, その後も定期的にエラーを起こすのでちゃんとログ見て検索しました. エラーメッセージ dovecot[172687]: imap-login: Maximum number of connections from user+IP exceeded (mail_m
Fire HD 10(第9世代)を購入しました
Fire HD 10 これです. 購入した理由 Amazon、7月24日から63時間「タイムセール祭り」。Fire HD 10やASUSディスプレイ - AV Watch によってセールで1万円になってたので購入しました. 2019年10月に発売されたモデルなので, そろそろ新型が来てもおかしくないのですが, セール動向を見るに新型が来てもしばらく1万円にはならないだろうと思って購入しました. 前々からタブレットが欲しかったのです. 何故かというとKindleを使ってジョジョの奇妙な冒険を読むとき
日本語入力の切り替えをトグルからステートレスに切り替えました
日本語入力の切り替え方式を変えることにしました 私はUSキーボード使いでなおかつDvorak使いなので, Ctrlキーに近いC-;で日本語入力をトグルしていました. しかし, 日本語入力をトグルする形式は, 既に日本語なのに日本語状態に入ろうとして解除してしまうなどの切り替えミスがよく発生してしまいます. 一応トグルであることのメリットも存在して, 使うキーが少なくキーバインドを圧迫しないことがメリットなのですが. 最もキーを使うFirefoxやEmacsでC-.を使ってなかったり, C-,があまり使われ
Smartparensを使っていてScalaを書くと波括弧の入力時に改行が自動挿入される問題の解決
問題 ScalaではタプルのVectorへのmapを書く時などに, タプルにマッチする時はcaseが必要になることがあります. Scala 3では不要になるようですが. これは複数個引数とタプルを区別するためです. その時パターンマッチの外側には波括弧{}が必要になります. そして私は, Smartparens をグローバルに有効にしているので, 波括弧を入力すると改行が入ってしまいます. 確実にタプルの対象に対してmapするときは一行で問題ないのに. 新規に波括弧を入力する時は問題ないのですが, タプル
Emacsのlsp-modeを新しいディレクトリでも自動的に起動するにはlsp-auto-guess-rootを有効にする
LSP Mode - Language Server Protocol support for Emacs は各言語のhookにlsp関数をかけていても, これまで開いたことのないディレクトリでは, LSPを有効にするかどうか聞いてきて, importすると起動して.lsp-session-v1に記録されて次回からは自動的に起動します. 暫く使っていてimportすることを選ぶこと以外が無かったので, 自動的にimportさせるようにします. ちょっと調べただけだとすぐに出てこなかったのでメモしておきます.
Windowsをブートさせるためにインストールしているos-proberがgrubのLinux起動メニューを重複して作ってしまう問題の解決
os-prober os-prober はインストールしておくだけで, grub-mkconfig -o /boot/grub/grub.cfgした時にWindowsを検知して起動メニューに追加してくれる優れものです. と言うわけで数年前からずっと使っていました. 問題 ところが近年少し困ったことが発生していました. それは重複したエントリを作ってしまうことです. どういうことかと言うと, ちょっと前のos-proberはWindowsしか検出しなかったのですが, 今はLinuxディストリビューション
ScalaTestのParallelTestExecutionを使ってスイート内のテストケースをシンプルに並列実行する
sbtのテストスイート並列実行機能と混同しやすいので注意 クラス単位で並列実行するか クラス内のテストケースを並列実行するか は全く別の話です. ここは混同しやすく混同した解説がネット上に存在して私も混同してしばらく錯乱していました. ここにはScalaTestを使った後者のクラス内のテストケースを並列実行する方法について書きます. 前者については sbtにおけるテストの並列実行の設定詳細解説 - xuwei-k's blog を読むと良いと思います. なお私が作業しているプロジェクトではforkを使
GTX 1080 TiからRTX 2080 Tiに買い換える必要性が無かったと買ってから気がつきました
ものすごくアホなことをやってしまったので記念に記事を書きます. 事の発端 友人が「しばらくVR出来る環境に居ないから」という理由で VIVE Cosmos を送ってくれました. 前からwebプログラミングについて教えてもらう代わりに譲渡するみたいな話をしていましたが, とりあえず今は見返り無しで送ってくれました. 感謝感謝. セットアップしようと思ったのですが, これDisplayPortしか対応してなくてHDMIだとダメなんですね. うーん困りました. 今のグラフィックボードはHDMIとDVIしか出力端
OCamlをテキスト処理のために使ってみました
欲しかったもの KEINOS/google-ime-user-dictionary-ja-en: ✅GoogleIME用カタカナ語辞書プロジェクトのアーカイブです。Project archive of Google IME user dictionary from Katakana word ( Japanese loanword ) to English. を追加してみたら短い文字が鬱陶しかったので読みが1文字の単語を消したかった. こういう小さなスクリプトを書く時こそ今まであまり触ったことのない言語を
Emacs 27でPackage cl is deprecatedと表示されないようにする
Emacs 27がGentooでハードマスクを解かれました カラー絵文字などが使えるようになりました. UbuntuでmasterのEmacsを--with-cairoビルドしてカラー絵文字見る - つうさにメモブログ 毎回起動時にPackage cl is deprecatedと表示されてめっちゃ鬱陶しい 毎回起動時にPackage cl is deprecatedと表示されますしinit.elを見ててもflycheckが警告してきて鬱陶しいです. 自分が書いて無くてもcsharp-modeとかel
xkeysnailを使ってSkypeとSlackとDiscordで改行と投稿のキーバインドを統一する
問題 各チャットツールで改行と投稿のキーバインドがバラバラなので覚えられない. 参考: 各ツールにおける改行と投稿のキーバインドの違いがひどいのでまとめた - Qiita 理想の動作 mikutterでは, C-mは改行, Enterは送信にしているのでそれに統一したいです. 本来この2つは同じ動作にするべきなのかもしれませんが軽く押せて便利なので… 使っているのがSkype, Slack, Discordぐらいなのでそれに対応すれば良いです. 最近はSkype使ってないですしそもそもそれ以外のGNU
YesodのgetAuthEntityは内部でrunDBを使っているのでデッドロックに注意しましょう
getAuthEntity Yesodの getAuthEntity はデフォルトでrunDBを使っています. これがどういうことなのかと言うと, これに依存しているmaybeAuthなどを使うとYesodDBなどを見ることなくデータベースコネクションを取ってきてしまうため, runDBの内部で使ったりするとデッドロックを引き起こす危険性があります. ユーザ情報を取ってくるので当然と言えば当然なのですが, Cookieに入っているものと混同しやすくもあります. 権限確認などを行う場合注意しましょう.
ScalaTestでforeachなどを使ったテストのグループ分けをするにはbehaviorを使う
ScalaTestでは"foo" should inのようにテストを書いた後it should inとテストを書くとテストをそのキーワードでグループ分けをしてくれます. しかしforeachなどループでデータだけサクッと差し替えるようにテストを書いた場合その方法ではうまく行かなくて, 毎回itで済ませるとグループ分けはしてくれないし同じキーワードを宣言しても同じグループには割り当てられません. 毎回違うグループが作成されます. ScalaTest 3.1.1 - org.scalatest.flatspec
MathJaxを含むローカルのHTMLをPNGに変換する
やりたいこと Pythonから呼び出せる形式でローカルのMathJax(MathML)を含むHTMLファイルをpngに変換する. ページはレンダリングされていなければならない 全ての要素を含んでなければならない(スクロールバーがあるとダメということ) 余計な余白があってはならない ノイズが入ってはならない 選定技術 SeleniumとHeadless Chromeを選定しました. 参考文献: Python: Selenium + Headless Chrome で Web ページ全体のスクリーンシ
zinitでeval dircolorsを使って色定義をする時はシングルクオートを使う
生産性向上の為自分の.zsh.dをsubmoduleでlibを管理する方法からzinitを使うように書き換えていました. seebi/dircolors-solarized: This is a repository of themes for GNU ls (configured via GNU dircolors) that support Ethan Schoonover’s Solarized color scheme. が設定できなくて困っていました. これはzinitで読み込むだけだと設定出来な
JacksonでJSON文字列をScalaのcase objectにマッピングする
文字列をそのまま使うのではなく, 列挙型として扱いたい. Enumerationを使う方式なら, 公式にcom.fasterxml.jackson.module.scala.JsonScalaEnumerationとしてそのまま用意されています. Enumerations · FasterXML/jackson-module-scala Wiki でもEnumerationは使いたくないですよね? 何が嫌かってValueが型になるので型自体を参照するのに2段階ネストしないといけないのがイヤです. あと後々c
Emacsでhelp-fns+の代わりとしてhelpfulを使ってみたら代わり以上に良かった
help-fns+の消失 Emacsに help-fns+.el というパッケージがあります. これはまあ色々とコマンドを提供しているのですが, 私が主に使っていたのはdescribe-keymapでした. Emacsの普通のdescribe-variableで例えばhelpful-mode-mapのようなキーマップを参照すると, 悲しい のようにキーコードが数字で表示されてしまいます. これでは一部の変人以外は何がなんだかわかりませんね. describe-keymapで呼び出すとキーコードではなく
HaskellプログラムをGitHub Actionsでビルドしてクロスプラットフォーム向けにバイナリをReleaseにアップロードする
参考サイト GitHub ActionsでRustプロジェクトをクロスビルドしてリリースする - 詩と創作・思索のひろば GitHub ActionsでElectronアプリのクロスプラットフォームバイナリを配布する | Web Scratch 作ったプログラム ncaq/homura-stopwatch このプログラムの作成自体は他のプロジェクトのビルド待ち時間に書いてたら即座に終わりました. hourglass :: Stackage Server という簡単に時間変換が出来るライブラリのおか
zoom 3.5が私のLinux環境でカメラの映像を取得できないことの解決
問題 zoom 2.7だとカメラ映像を取得できるのに, zoom 3.5だと真っ暗になります. なおobs-studioにも同じ問題が存在し, guvcviewでは問題は存在しません. 環境 2020-04-02T18:49:33 ❯ uname -a Linux strawberry 5.4.28-gentoo #1 SMP Tue Mar 31 11:42:12 JST 2020 x86_64 AMD Ryzen Threadripper 1950X 16-Core Processor Authe
Java側からScalaのforeachメソッドをcallする
問題 ScalaのCollectionのforeachメソッドの返り値型はUnitである. Javaでラムダ式を渡すと返り値型がvoidになり自動変換されないのでコンパイルエラーとなる. 解決策 mapを使う mapを使ってreturn null;とでもしておく. すごくダサい. 多分JVMは最適化してくれるでしょうがnullが詰まったコレクションが新規作成されてしまうのも気になるところ. scala.runtime.BoxedUnit.UNITを使う return scala.runtime.
sbt v1.3.8ではfork設定をしていないとテンポラリディレクトリがクリーンアップされないバグがあるようです
問題 sbt testを動かすたびに/tmpにsbt_7ab6d679/のようなディレクトリが作られて, その中にjarが展開されて, testが終わっても/tmpのディレクトリがクリーンアップされないためメモリを大量に使うようになっていました. またsbt runで起動したwebサーバがrunを終了させてもポートを解放してくれなかったため, 一々sbtを終了する必要があります. 原因 sbtにプロジェクトを移したらアプリケーションがOutOfMemoryErrorを吐くようになった時の対処法 - n
私の.emacs.dをelpaをgit管理下に入れる気の狂った管理方法からleafに移行させました
概要 ncaq/.emacs.d: my Emacs config を気の狂った管理方法からleafに移行しました. 参考文献 conao3/leaf.el: Support your setting init.el like use-package [正式リリース]leaf.elで雑然としたEmacs設定ファイル「init.el」をクリーンにする - Qiita use-packageからの移行のすゝめ - leaf.elでバージョン安全なinit.elを書く - Qiita [2019年アップデ
Setup.hsでcabalのフラグを取得して動作を変える
yesodとwebpackを協調させてTypeScriptをビルドする方法 - ncaq に書いてあるように私はSetup.hsで事前にアセットをビルドしていました. しかしこのpreBuildを使う方法ではどうやってもcabalのflagが取得できないようで悩んでいました. flag取得して挙動を変える方法がわかったので書きます. まずpackage.yamlに custom-setup: dependencies: - base - Cabal - process と書き
英語に弱すぎたのでgoodbye-rfc-2822-date-timeという英語の日時を日本語に変換するブラウザ拡張を作って1年強使っています
ソースコードやダウンロードのリンクはこちら. GitHub: ncaq/goodbye-rfc-2822-date-time: I hate the date and time notation method like RFC 2822. This extension converts time notation to native language as much as possible. Firefox: goodbye-rfc-2822-date-time – 🦊 Firefox (ja) 向け拡張
Gitのコミットメッセージでめっちゃタイプミスをするのでそろそろタイプミスを検出するhooksを書きました
動機 私のGitコミットメッセージは以下のプレフィクスから始まります. added: 機能や関数などを追加した時 changed: ユーザから見てわかるような変更をした時(例: ボタンの色を変える) cleaned: コードフォーマッタなど本質的でない変更をかけた時 deleted: 機能や関数などを削除した時 fixed: バグを修正した時 modified: ユーザから見てわからない変更をした時(例: 内部アルゴリズムの変更) renamed: ファイルや識別名の変更 updated: ライブラリな
Scalaのcase classのフィールドにドキュメンテーションコメントが書けなくて悲しい
case classのフィールドを素朴に定義しました. case class Book( /** 一意な番号 */ var isbn: String) これでフィールドにドキュメンテーションコメントが付けられると思ったのですが, これではつかないのですね. コンストラクタのフィールドではなくclassのフィールドにして, コンストラクタ内で初期化すれば付きそうな気がしますが, ドキュメントのためにコードを冗長にはしたくないですね… 調べたのですが@paramを使ってnameを指定して書い
Scalaで定義したcase classのcopyをJavaから呼び出したかったが無理なのでcloneで妥協しました
copyは実に良いメソッドです. Haskellのレコードのフィールド更新やJavaScriptのスプレッド構文のように使えます. でも何故かJava側から呼び出せなくて困惑しました. ScalaのメソッドはJavaからスムーズに呼び出せるはずなのに. よく考えてみるとcopyメソッドはメソッドのデフォルト引数機能の存在を前提としたメソッドで, Javaにはデフォルト引数機能が無いんですね. このままでは既存のcloneを使ったコードが壊れてしまうのでScalaを使えない… と思いましたが, 冷静に考えてみ
ScalaとJavaを併用しているプロジェクトでsbt-java-formatterを使う
sbtで使えるJavaソースフォーマッタとして sbt/sbt-java-formatter: An sbt plugin for formating Java code があります. これの最新版0.5.0(0.3.0だとタスクが増えなかった…)を使っても, Javaソースが整形されなかったので首を捻りましたが, どうもこれが対象とするJavaソースは javaSourceの場所を参考にしているようですね. https://github.com/sbt/sbt-java-formatter/blob/48
google-oauth-client-jettyとjetty-serverのバージョンコンフリクトを解決する
google-oauth-java-clientの最新版にはバグがあります Jetty exception NoSuchMethodError: org.eclipse.jetty.server.Connector.setHost · Issue #397 · googleapis/google-oauth-java-client というバグで, 1.30.4から発生しています. これ回避方法探しましたが全く分かりませんでした… ではダウングレードすれば良いのではないかと言うとそう簡単な話でもない 1
sbtにプロジェクトを移したらアプリケーションがOutOfMemoryErrorを吐くようになった時の対処法
問題 OutOfMemoryError: Java heap space でこれまでgradleなどで動いていたアプリケーションが死ぬ. 原因 sbtはデフォルトではsbtと同じJVMでアプリケーションを動かそうとします. sbt自身にはメモリを使いすぎないようにリミッターがかかっているので死にます. By default, a forked process uses the same Java and Scala versions being used for the build and th
ポケモン剣盾 シングルバトル シーズン2初期 積み3タテ構築
シーズン2でランクが下がったあとマスターボール級に上がる1日間使ったPT. 上がったら7715位でした. 勝敗率は忘れました. 動機 竜舞したオノノクスで3タテしたい. オノノクス オノノクス ようき 151-199(252)-111(4)-72-90-163(252) 151-199-111-72-90-163 ようき A252 B4 S252 型破り 命の珠 逆鱗 地震 アイアンテール 竜の舞 竜舞した後は陽気より意地っ張りのほうが圧倒的に良いが, ミミッキュに死に出しした時に陽気だとS1
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 %a
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やxm
FirefoxがGCCとClangのどちらでビルドした方が速いか私のGentoo Linux環境で測定してみました
vs 結論 あまり変わらないのでClangを使うことにしました. FirefoxがGCCではなくClangでビルドされるようになりました 次のナイトリーからTier-1プラットフォームのFirefoxすべてがLLVM Clangでビルドされることになると伝えた。 Firefox全プラットフォームでLLVM Clang利用、性能向上を確認 | マイナビニュース そしてFirefox 64からは正式にClangで全てのプラットフォームに提供されるようになりました. Improved perfor
Pixel 3 XLを1ヶ月半使ったので今更レビューします
発表(2018年10月10日)1日後に予約購入して. 2018年11月04日に到着して使い始めて. Pixel 3 XL届いた pic.twitter.com/8yarWngwLn — エヌユル (@ncaq) 2018年11月4日 今更レビューしてます. Google Pixel 3 - 日本 - 世界を見る新しい方法 - Googleストア クリスマス特典で今買うとPixel スタンドが無料でついてくるらしいですよ. スタンドの有用性については購入してないので知らないです. スマートフォン遍歴
J:COMのようなOP25Bをしていてサブミッションポート(587)をサポートしていないプロバイダでTLS(465)でメールをリレー送信する
J:COMに完全に移行してメールが送信できなくなった OP25Bのせいです. J:COMは一応リレー用メールサーバを用意している マンションが契約した時に配られた書類をひっくり返して確認しました. しかし世の中の手順書はみんなサブミッションポートを前提にしている postfixでOutbound Port 25 Blocking(OP25B) 対策 -自宅サーバ編- | server-memo.net など色々資料がありますが, みんな587を前提にしているのでそのまま使えません. Gmail
サイトにsitemap.xmlを追加しました, 簡単かと思ったら意外と大変で2時間ぐらいかかりました
動機 昔の記事を更新した時にGoogleに優先してクロールしてほしいため. Yesodを使った時は動的コンテンツを含んでも yesod-sitemap を使ってサクッと作れたのでかなり簡単な作業だと認識したため. 参考実装 Sitemap with Hakyll を参考に, こちらはテンプレートではなく処理前コードを書きました. 最終的には/sitemap.xmlには <?xml version="1.0" encoding="utf-8"?>
Gentoo上のEmacsでまともなRust環境を構築しました, バグ報告で問題が解決しました
Rustその2 Advent Calendar 2018 - Qiita の10日目の記事です. バグ報告した影響か, rustic-modeの作者の修正によって以下の内容はあっという間に陳腐化しました. 最後の章で修正を記述します. なので最後の章を読んで内容を実行してください. 陳腐化した内容はこれはバグとの戦いとして一応内容を残しておくことにします. これまでrust-modeとflycheck-rustだけでEmacsでRustを書いていましたがそろそろ限界になってきました flycheck-r
Rustの肥大化したmain.rsをファイル分割する方法(超簡略版)
Rustその2 Advent Calendar 2018 - Qiita の5日目の記事として投稿します. Rust初心者向け記事です. Rust 2015を想定していますが, Rust 2018向け情報も含んでいます. Rustのモジュールに関する情報, たくさん情報があって混乱しました. なので文字数少なくまとめます. 実行プログラム向けにmain.rsと書いているので, ライブラリを書いている人はlib.rsと以下読み替えて下さい. コードを分割してpubなどをつける 同じディレクトリsrcに, 新
Acerの4Kモニタ(RT280K)を購入しました, GNU/LinuxでのフルHDモニタを混ぜたマルチディスプレイ環境もきちんと設定できました
購入したもの RT280Kです. RT280Kbmjdpx | acer セールで価格が¥35,840になってたので, そろそろ4Kモニタぐらい買っても良いだろうと思って購入しました. 他にも色々ありましたがこれは4KモニタでありながらGtoGが1msを謳っているので, ゲームにも使えないことは無いだろうと判断しました. もちろんプロゲーマーなら144Hz駆動のやつでも買うのでしょうけど, 私はヌルゲーマーだから関係ありませんね. トリプルディスプレイ スピーカーが無音状態でもうるさい このデ
Surfingkeysを使ってFirefoxでも高速にGoogle翻訳を使う
Firefoxで一番不便なのはワンクリックでページを機械翻訳に投げられないとこなんだよな…いい感じの拡張もなかった…作れという話かもしれんけど — Hideyuki Tanaka (@tanakh) 2018年12月7日 Surfingkeysでキーボードに割り当ててワンキーで飛ばすようにしてます — エヌユル (@ncaq) 2018年12月8日 私はFirefoxを使っていますがGoogle翻訳も便利に使っています. brookhong/Surfingkeys: Map your key
SpamAssassinをバージョン3.4.2にアップデートすると任天堂からのメールが文字化けする症状を直しました
結論 設定ファイルに書いてある add_header all Report _REPORT_ を消すと治ります. 症状 最近任天堂から来るメールが常に文字化けしているので割と困っているThunderbirdが悪いのかと思ったけど生のメールファイルでエンコード試してみたけど正しく認識しないASCIIがそのままなのでutf-8っぽさはあるし実際content-typeもutf-8が指定されてるんだけどutf-8で読めないサポートに連絡だな pic.twitter.com/VMu6I3QwRY —
海外からDDoS攻撃してくるカメラをシャットダウンしてしまうのは不正アクセスなのか?自首してみたが返答がない!そして泥沼のDDoSへ
顛末を記録した雑多なログになっているので整理されていない部分が多々あります. 2万文字を超えているので気合を入れて読むか適当に読み飛ばしてください. これでも不要な調査データを省いたりしてスリム化したのですが超巨大化してしまいました. 2018-11-07から自宅のネットワークの調子が悪すぎる 自宅のネットワークが死んでいました. J:COMの回線現在98%パケットロスするという状態になっています pic.twitter.com/Vfe0O3p5j2 — エヌユル (@ncaq) 2018年11月7
Mackerelを実験として自宅サーバに導入しました
サーバのCPU使用率やネットワーク利用率とかをモニタリングしたい 最近思うことがありまして(詳しくは片付いてからサイトに書きます), サーバのCPU使用率やネットワーク利用率をモニタリングしたいと思うようになりました. また仕事で運用しているサーバも監視したくて, それの実験としてまず自宅サーバで試してみようとという思いもありました. 既にAWSのRoute53 ヘルスチェックのhttps外形監視は導入していますが, CPUなどのデータもわかりやすく見ておきたいですね. AWSのデフォルトのグラフ見づらく
Haskell Day 2018に参加しました
Haskell Day 2018 - connpass 発表はせず, 聞き専です. やっぱり遅刻しました 8時30分に起きる予定が9時30分に起きてしまったので, 会場に着いたのが本来10時のはずが10時53分になってしまいました. 一応メンターやるつもりだったんですが立候補する時間はとうに過ぎてしまいました. あまり手を挙げて質問する人が居ないのでどっちにしろメンターとして活動するのは無理だった感が出てきました. ハンズオン あれ?show 5 丸めとか四捨五入気にしなくていいって...あれ?
EmacsのDocker関連パッケージまとめ
docker.el Silex/docker.el: Manage docker from Emacs. EmacsからDockerを操作するソフトウェア. Gitに対するMagitみたいなもの? Dockerのコマンドラインを緻密に覚えなくても適当にTUIで操作が出来て便利. 特にEmacsから起動した場合はDockerイメージ内部の貧弱なBashではなくて, Emacsのテキスト編集キーバインドを使って操作できるのでとても便利. Docker Remote API Silex/docker-api
webサイトの「Cookieを使用する理由」に「理解しました」を一々押さなくて済むようになるアドオンもしくはフィルタ
EUのGDPRの影響もあり, Cookieを使用する時に使用許可を求めてくるサイトが非常に増えてきました. 殆どのwebブラウザにはCookieを拒否する設定があるので, Cookieが嫌な人はその人が設定で無視すれば良いのに, 何で私が「同意する」「I agree」を一々押さないといけないんですかね? 特にスタックオーバーフロー系のサイトはドメインが細かく区切られているため, よく押す必要があってストレスです. ストレスでしたがだるくて放置していましたが, 今日なんとなく解決する方法を調べたら分で発見しま
DiscordのGNU/Linux版で通話開始直後にノイズが走る問題は環境変数PULSE_LATENCY_MSECを90に設定することで解決できます
Discordはとても良いソフトウェアですが, 繋ぎ始めの瞬間だけとてもノイズが走るのが難点でした. SlackとSkypeを使っていましたが, Skypeを投げ捨ててDiscordに移行することにしました - ncaq しばらく待っていればノイズが消えて普通に通話できるようになるのですが, それまで待つのは鬱陶しいですね. この問題を解決しようと色々単語を変えて検索してみて, やっと解決方法を見つけました. lectrode commented on 2018-08-24 16:37 I was hav
PHP 7.2にアップデートした時Tiny Tiny RSSがrequires mcrypt functions which are not foundとエラーを出す時の対処法
PHP 7.2でmcryptモジュールは削除されました. PHP: PHP 7.1.x で推奨されなくなる機能 - Manual よってこれまでmcryptでフィードを暗号化していたTiny Tiny RSSでは以下のようなエラーが出ます. Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade. Please fix errors indicated
最近(秋)朝起きた時に足がだるくなる時の対策法
気温が下がって足が冷えているから寝る時にちゃんと長ズボンを履く. 足が冷えてると血行が悪くなるのでだるくなる. だるさは最悪一日中続きます. 毎年起きているので学習してきました.
babelで分割代入を変換するのはobject-rest-spreadではなくtransform-destructuring
babel 難読化ツールjavascript-obfuscatorが分割代入での破壊的代入に対応していない function main() { const o = {v: 1} let v; ({v} = o); console.log(v); } main(); は生のJavaScriptだと1を出力しますが, javascript-obfuscatorを通すとundefinedを出力します. javascript-obfuscator break Assignment wit
GentooとEmacsでC#(Unity)開発
omnisharp-emacsはデフォルトでomnisharpをダウンロードする しかし最新版を手で指定してやらないと動作しない模様 dotnetコマンドを使えばslnファイルは作れる Gentooだとdev-dotnet/dotnetcore-sdk-bin OmniSharpがシンタックスエラーは表示しますが型エラーが表示されない 何故か動くようになりました EmacsでC#(Unity)のプログラムを書く Gentooにunity-editorをインストールしたいなら今はdidactic
Gentooにunity-editorをインストールしたいなら今はdidactic-duckを使う
unity-editorがインストールできない Gentoo Linuxにfkmclaneのdev-util/unity-editorがインストールできない. 理由はdev-dotnet/gtk-sharpのビルドに失敗するからとのこと. そもそもこのunity最新版なのか? fkmclaneはdev-util/unity-editor-2017.3.0_p2 なので最新版なのか疑わしい. 今年は2018年のはずなので. Gentoo Portage Overlays - dev-util/unity
Firefoxからなんとか追い出されずにQuantumに移行して旧アドオンと似た環境を作れました
最新版に移行したメモ. だいぶ前の話ですがFirefoxの最新版ではXPCOMやXULを使う拡張が動かなくなりました Firefox QuantumではXPCOMやXULを使うアドオンは動かなくなりました. リリース直後にはそうなると私は死しか無かったのでその場しのぎの回避策を使っていました. Firefox ESRの使用です. ESR版は長くサポートされるので, 最新版ではなくても深刻なセキュリティリスクは小さいです. Gentooにもちゃんとセキュリティアップデートが降りてきます. というかstabl
CommonMarkでは順序付きリストの数値は無視されなくなっていました
古典的Markdownでは順序付きリストの数値は無視されます Markdownをそれなりに書いている人はみんな知っていると思いますが, 古典的Markdown処理系では 2. foo 3. bar は <ol> <li>foo</li> <li>bar</li> </ol> と変換されて, 数値が2から始まることは無視されます. というか順序付きリストの数値は基本無視ですね. これはHTMLの順序付きリストは1から始まり, こ
ゲームではないプログラミングに適したラップトップPCを調べた時のメモ
クーポン考えなくてもXPS 15が最適っぽい. クーポン考えるとこの時期の19%もしくは17%割引が得なのでますますXPS 15が最適っぽい. 前提 用途: Electronなどを使ったアプリケーション開発 OS: LinuxがメインでWindowsもサブで起動出来ると良い CPU: 6コア版 メモリ: 32GB SSD: 1TB モニタ: 15インチ前後 今使っているものへの不満 XPS 13 9360 (075B) CPUのパワーがないのでbabelとwebpackとElectronの実行が
electron-builderがnode_modulesのディレクトリをapp.asarにパッケージングしない原因はapp/package.jsonに依存を書いていないからでした
問題解決を行おうと思ったのですが徐々に行き詰まってきてしまったので, 問題点と調べた内容を整理するためにメモを取ります. 問題 Electronアプリケーションをelectron-builderでパッケージングすると, Semantic UI LESS のアイコンが表示されません. 原因 ビルドとパッケージの手順は, webpackでsrcからappにデータをビルド, appの内容をdistにパッケージするようになっています. ビルドしたときはきちんと app/node_modules/semanti
Semantic UI ReactのMessageでlistプロパティを使ってキーが重複してしまう時はchildrenを使えば良い
Formのバリデーションエラーを Semantic UI Reactの Message で表示したいと思って実装していました. Messageにはlistという属性があり, ここにコンテンツを渡せば複数のメッセージがリストで表示されます. <Message error list={Object.values(this.state.errors)} /> Messageはlistのメッセージ内容をそのままkeyにするので, 同じ内容のメッセージがあると, Reactに Warning:
さくらインターネットのUbuntuサーバにssh接続しようとするとConnection refusedになって接続できない問題の解決法
予想外の苦戦 知人にお願いされてssh接続できるサーバを建てることになりました. 知人はさくらインターネットのVPSを契約していてそれに立ち上げることになりました. ssh接続可能な環境なんて5分で建てられるわwって舐めてかかったら意外と苦戦しました. 原因は以下です. ssh: connect to host x.x.x.x port 22: Connection refused このエラーが常に出て全てのssh接続を弾くようになり何も出来なくなりました. 原因 SSH - SSH接続する際、「
勘違いしていましたがReduxのstateにはMapなどのプレーンじゃないオブジェクトも保存できます
致命的な勘違いをしていました ReduxのstateにはJavaScriptのPlain Objectしか保存できないと思い込んでいました. ここでいうプレーンなオブジェクトというのはconstructorが[Function: Object]になっているものですね. 正しい認識 結論から言うとReduxのstateには基本的に全てのデータ型のオブジェクトを格納できます. しかし一部はReduxの開発者ツールには表示されません. 実験 stateのfooフィールドにDate, moment, Im
正社員として働き始めてからおよそ4ヶ月が経過したので給与明細と労働感想を公開します
給与明細で紙飛行機を作って一番遠くに飛ばせた人が優勝する大会を開こう — ばんくし (@vaaaaanquish) 2017年10月21日 kazoo04とかならフォロワーが1万人も居るので「イケてるエンジニアは皆給与明細を公開している」みたいなムーブメントを起こせるはず — ばんくし (@vaaaaanquish) 2018年6月1日 4月に正社員として雇われてからおよそ4ヶ月が経過したので給与明細を公開したいと思います. 給与明細を公開すると私にとっても皆にとっても良いことが産まれる可能
ESLintのコアのみのルールで相対importを禁止する
前提として絶対importを使っています webpackの設定を以下のようにしています. const path = require('path'); module.exports = { resolve: { extensions: ['*', '.js', '.jsx', '.json'], modules: [path.resolve('./src'), path.resolve(
sentry-electron 0.5.5が`TypeError: module.require is not a function`で起動できない問題を調査しました(未解決)
@sentry/electron - npmのバグ調査をしました. 前に0.5.4が壊れているのをissueで報告しました. I update to 0.5.4, error on MODULE_NOT_FOUND · Issue #81 · getsentry/sentry-electron issueがcloseされたから問題は解決したと思ってv0.5.5にアップグレードしました. 他の問題が発生しました. % y yarn run v1.7.0 $ cross-env NODE_ENV=develop
Gentoo LinuxやArch LinuxなどでStackage LTS 12が使用できないのはncurses 5をインストールしていないからでした
問題 私の管理するパッケージに最新のstackageだとビルドができないというissueが届きました. yesod-form-bootstrap4-1.0.0 build failure with yesod-*-1.6.2 · Issue #2 · ncaq/yesod-form-bootstrap4 それならばとりあえず最新のstackageを試すべきだなと思って, stack config set resolver ltsしてstack setupします. すると以下のエラーが発生しました. % s
ダイキンのS22VTESというエアコンを購入したのですが実際にかかる価格がわからなくてややこしかった
エアコンを買い替えたい そろそろ暑くなってきました. 私の部屋にあるエアコンは東芝製の30年ぐらい前のものらしい, RAS-251BVZというものです. ググっても情報がリモコンぐらいしか出てこない程度には古い. 燃費考えると買い替えてもペイするのでは? 燃費を考えなくてもどうも温度センサーが鈍いようで, かなり部屋が暑くなるまで止まることを繰り返していて非常に不快なので最新のものに買い替えたくなりました. プラズマクラスターやナノイーのような, 疑似科学に手を出していないところが良いので聞いてみたら,
Gentooのworldを更新したらncaq-overlayのmikutterが起動しなくなった問題を解決しました
Gentooのworldを更新しました. するとmikutter 3.7.1を起動しようとすると以下のエラーが出るようになりました. /usr/share/mikutter/core/mui/gtk_form_dsl_select.rb:4:in `<top (required)>': uninitialized constant Gtk (NameError) ruby-gtk2はインストールするようにしているからおかしいなと思って, とりあえず当該ファイルに require
Electronのproduction環境でasarにある画像などのリソースがnet::ERR_FILE_NOT_FOUNDで読み込めないのはBrowserRouterが原因でした
環境 Electron 2 Electron Builder 20 React: 16 webpack 4 React Router 4 Gentoo Linux やりたいこと url-loaderを排除してfile-loaderにしたい. 動機 とある画面を読み込むのがとても遅く, 速くしたかった. 同じ画像を大量に読み込むので, url-loaderを削除してfile-loaderにしてみたらとても速くなった. パスを変更すると読み込めなくなる問題も loader: 'file-l
自宅のルータが存在しないサイトにアクセスした時に証明書エラーを出すのを直す
自宅のネットワークでドメイン切れのwebサイトにアクセスすると証明書の警告が表示されます 以下のように存在しないwebサイトにアクセスすると, httpsにリダイレクトするように促されます. % curl -I 'example.invalid' HTTP/1.1 301 Moved Permanently Server: nginx/1.12.2 Date: Wed, 04 Jul 2018 05:05:44 GMT Content-Type: text/html Content-Len
AtCoderをD言語で解きたくなったので環境を整えました, いや整えられてないです
AtCoderをD言語で解きたくなった D言語がC++に対して勝る点 GCがついているのでメモリ管理が面倒ではない rangeに対応しているのでsortなどを行うためだけにbegin, endを使う必要がない rangeに加えてUFCSがあるのでデータと連ねて処理する時に直感的に記述できる 標準で配列が動的構築に対応しているのでvectorのような長いコードを書く必要がない 標準の文法に連想配列がありインターフェイスがわかりやすい C++だとintの最大値がstd::numeric_limits
ReactでTable要素のmount(描画)に時間がかかる問題を初回の描画を切り捨てることで解決しました
事案 React + ReduxでTableの描画に10秒程度かかる. 要素は多くて700件ぐらい. やりたいこと 描画を2秒ぐらいにはしたい. やってたこと Reduxのデータ構造見直し Reduxのデータをなるべく更新しないようにする mainプロセスの処理最適化 階層を小さく 全て無駄だった そもそもupdateではなくmountに時間がかかっているのですからやってたことは全て無駄. 更新減らすとかも無駄. ページャ作れば良い Table要素はどうせ大半はファーストビューに含まれ
doctestを実行するようにしたのですが, 全部指定するとTravis CIが通らない
これまでhaddock形式のコメントで使い方を書く時にdoctestの形式でコメント書いていました. しかし, 実際doctestは実行していませんでした. いい加減実行してテストしておこうと思ったので導入しました. Travis CIのコマンドを変えずにテストを自動実行して欲しいのでコマンドラインでの実行はやりたくないですね. Stack(Cabal)と連携して実行するようにしたいです. package.yamlに書くことにします. doctest-discoverを導入してみました しかし公式の導入方
render内でReact Routerを使ってRedirectした後に, Reduxのstateにdispatchしたら, 警告が発生する問題をコンストラクタとrenderを併用して解決
やりたいこと Reduxのstateからリダイレクト先を取ってきて, React Routerでリダイレクトしたら, リダイレクト先をクリアします. この処理が何故かコンポーネントの一部のcomponentWillReceivePropsで行なわれていて, そのコンポーネントを表示しない設定を追加したかったのでHoCに移しました. componentWillReceivePropsはもう消去が確定してますしね. なんでそんな実装になってたの React関係ない外部コンポーネントでイベント待受してリダイ
データベーススペシャリスト試験に2回目の挑戦で合格しました
ネットワークスペシャリストの記事 ネットワークスペシャリスト試験に合格したので学習方法などを書いておきます - ncaq 1回目 1回目の結果 当時就活で精神ボロボロでフラフラだったのであんまり期待してませんでした. 2回目 2回目の結果 試験前日の土曜日に休暇を取りましたが, 集中できずにほとんど勉強できてなかったのであまり期待してませんでした. 答えも適当に埋めてましたし. でもギリギリで合格することが出来ました. 試験時はこんなことツイートしてたみたいですね. カーソルのこと全く
certbotをnginxを起動したままsystemdのtimerで動かして証明書を自動更新する仕組みが出来た気がします
問題 今日サイトやメールの証明書が突然切れて叩き起こされました. 本来はLet's Encryptには切れそうな証明書をメールで通知する機能があるのですが, 昔古い証明書に関する通知を消したら, メールアドレスごと通知が消滅する仕組みだったようで, 通知が全く来なくなってしまいました. 通知の復活方法が調べても出てこない… 要望 自動更新するようにしたい. 他のシステムも自動更新出来るようにしたいですが, まずは自分の個人サイトで試してうまく行くか試したい. 実装方法 certbotはcertbo
JavaScriptでtypeof x === 'undefined'を使わないで欲しい理由
何故嫌なのか説明します. nullを弾けない > typeof null 'object' となります. undefinedの場合弾いて, nullの場合許容したい時があるでしょうか. 私はほとんどそんなものは見たことがありませんし, それはしばしば設計ミスを示しています. 一般的にnullも同じく弾くべきです. 変数のフィールドを参照した際のTypeErrorはundefinedでもnullでも起きるため, 両者を弾く意義は大いにあります. falseを弾けない >
CSSのwidthを指定して, 選択された値より実際のwidthが小さくなってしまう原因は, 他の要素が大きいことと, flex-shrinkの未設定でした
症状 Electron/1.8.7, Chrome/59.0.3071.115でwidthの値が指定した値より小さくなってしまう現象に遭遇していました. この現象のせいで要素が隠れてしまうバグが発生していました. 小さくなってしまうだけなら反映されてないだけだと納得出来るのですが, Chromeの開発者ツールで選択された値より計算された値が小さくなってしまっていたので混乱していました. 値が食い違う この要素にはpaddingもmarginも存在せず. box-sizingを開発者ツールで解除してみて
このHakyllサイトのシンタックスハイライターをhighlight.jsからPygmentsに移行しました
highlight.jsへの不満 このサイトではhighlight.jsをコードのシンタックスハイライトに利用していました. これには以下の問題がありました. Emacs Lispに対応していない フロントエンドでの変換なのでクライアントがアクセスするたびに無駄なオーバーヘッドがかかる 正直パフォーマンスはどうでも良いのですが, Emacs Lispに対応していないのは致命的です. Pygmentsへの移行 PygmentsはPythonで書かれたシンタックスハイライターで多くの言語をサポートして
SlackとSkypeを使っていましたが, Skypeを投げ捨ててDiscordに移行することにしました
これまで Syakeでは, これまでチャットにはSlackを使って, 通話にはSkypeを使っていました. Slackにも通話機能があると思われるかもしれませんが, どうもSlackのクライアントの通話機能にはバグがあるようでした. 私の環境だとSlackで通話するとチャットのウィンドウが使えなくなっていたので, 通話にはSkypeを使っていました. そしてリモートで働く時は基本的にSkypeを付けっ放しにして働いていました. 問題 しかし, SlackでもSkypeでも共通する問題がありました. そ
ncurses 6.1にアップデートしたらatopなどのレイアウトが崩れる問題には環境変数TERMを変えれば良いことがわかりました, エスケープシーケンスrepが原因でした
要約 シェルの設定に export TERM=gnome-256color と書けば解決. 問題 ncursesが6.1にアップデートしてから, システム監視ツールのatopのレイアウトが崩れるという問題が発生していました. I upgrade to ncurses 6.1, atop layout broken. · Issue #25 · Atoptool/atop 環境に関する情報提供もありましたし, 今回調査してバグ修正を行ってみようとしました. issueに寄せられたコメントによると,
Emacs 26のDiredでディレクトリを削除する時に一々yesを入力しないで済むようにする
Emacsの標準ファイラDiredはディレクトリを削除する際に一々プロンプトを出して再確認します. しかも以下の設定 ;;"yes or no"を"y or n"に (fset 'yes-or-no-p 'y-or-n-p) を行っていても, お構いなしにyではなくyesを要求してきます. yならともかくyesを一々入力するのはかなり面倒くさいですね. これEmacs 26で追加された設定のようで, バグとして認識されているようですね. emacs
HaskellでDebug.Traceする時に変数名を2回書かなくても良くなるライブラリdebug-trace-varを公開しました
ncaq/debug-trace-var: You do not have to write variable names twice in Debug.Trace 秒速でコピペしたいHaskellデバッグ用関数 - Qiita を読んで, そう言えばprintデバッグする時に色々と面倒だから開発したかったことを思い出したので, 昼休みに書きました. printデバッグする時には, どの変数をデバックしているのかわかりやすいように, しばしば以下のように書きます. import Debu
ウイルス性胃腸炎にかかってつらかった
40℃の熱と下痢で死ぬほどつらかった. 5月29日(火曜日) 日中のテンションがおかしかった. 夜に体がものすごく暑くなって, そろそろ夏が到来したと思って, 一瞬エアコンつけて消して寝ました. 5月30日(水曜日) 会社に行きました. 起きるのがつらく, いつもより1時間遅刻して11時からの出社でした. 会社に着いたあたりで鼻水, 頭痛, 体の痛みを感じました. 吐き気があって, 昼ごはん食べるのがものすごく辛かった. 昼休憩時に寝転がってないと辛かったので会社の床に寝ていました. 昼休憩が終わって
.emacs.dのEmacs LispをEmacs内部で全てバイトコンパイルする方法
Emacsを26にアップデートしました. Emacs 26 そうするとファイルを全てバイトコンパイルし直さないといけません. ディレクトリ内のすべてのEmacs Lispファイルを一発でバイトコンパイル - Qiita という風に, バッチモードを使ってバイトコンパイルする方法がありますが, この方法だとload-pathを設定によって変更している場合, 読み込みが出来なくて一部のファイルはバイトコンパイル出来ません. 調べてみたところ, 以下の記事が見つかりました. elisp - How do I
JavaのListの連結リストによる独自実装
大学の講義で2015年に書いたMyList.javaを2016年にgistにアップロードしていたのですが, 何故かこれだけ記事にしていませんでした. 何故でしょう? コードが汚かったから恥ずかしかったのかな? 昔のコードが汚いのは当たり前で恥ずかしがることでは無いのに. というわけで, せっかくなので当時レポートに書いた解説を添えて記事にしておきます. いやあ, HaskellやC++の思想がまぜこぜになって一貫していないのでかぶれてる感半端ないですね. ソースコード 当時レポートに書いた解説 Li
EsqueletoのilikeでYesodのTextareaを検索する
やりたいこと YesodのTextarea型で保存しているフィールドを Esqueletoのilike関数で検索したい. なぜそのままだとダメなのか ilikeはSqlStringのインスタンスを要求していてTextareaはそのインスタンスじゃないから ilikeの右辺がTextだから型が一致してないとダメ なんでTextじゃなくてTextareaをモデルに保存したの ユーザのtextareaを保存する場所で, 複数回編集が行われることが予想されたので復元が容易なTextarea型にしました
Emacs, ENSIMEでScala, Play開発環境を作る
複数回詰まったのでメモ. ひっかかったところだけ書くので他は公式ドキュメント見てください. Emacsへのインストール ENSIMEはpackage.elでインストールできます. scala-modeなどもついてくるのでそれ以外はインストールしなくて良いです. 依存ライブラリがオプショナルなのでバイトコンパイル時にエラーが出ますが気にしない. プラグインのインストール ~/.sbt/0.13/plugins/plugins.sbtに addSbtPlugin("org.ensime
競技プログラミングのコンテストに初参加して, 調子に乗って初参加なのにAtCoder Regular Contest 097の方に参加したら見事爆死しました
AtCoder Regular Contest 097 - AtCoderに参加しました. 競技プログラミングのコンテスト初参加です. BeginnerではなくRegular Contestの方に参加したら最初の問題すら解けずに無事死亡しました. C - K-th Substringをずっとやっていました. 最初にHaskellで書きました. import Data.List main :: IO () main = do s <- getLine k <-
ReduxのMiddlewareを使ってSentryにReduxのstate情報を送りつける
Sentryというエラー収集サービスがあります. ここには例外などが収集されるのですが, エラーが起きたときのReduxのstateが入るとエラー調査に役立ちますね. SentryにはSentry.setExtraContext(旧版ではSentryClient.setContext)という関数があって, ここに任意のJSONを入れることが出来ます. しかし, 適当に初期化時に設定しても, 初期状態のstateが入るだけで何も役に立ちません. onFatalError関数を追加すればエラー時にフックをかける
laymanがgit commitのauthorを勝手に上書きしていたので報告と対策
何が起きたか 私は ncaq/ncaq-overlay: ncaq personal gentoo overlay というオーバーレイを作っているのですが, これのコミット作者が自分の表記になっていないことに気がつきました. どうやらlaymanでaddした場合リポジトリの設定でコミット作者とコミットメールアドレスが書き換えられるようです. それに気が付かずlaymanの名前とメールアドレスでコミットしていたわけですね. なんで? どうやら 433687 – app-portage/layman-2.0.
IBus 1.5.18がクラッシュして日本語入力が出来ないのは絵文字キーを無効にしているせいかもしれません
今朝さあ仕事始めるぞとラップトップを開いたら, ibus-engine-mozcがクラッシュして日本語入力が出来なくなっていて戸惑いました. 色々調べてみたら, IBusのバージョンを下げれば入力できることが分かりました. issueを開きました. ibus-engine-mozc crash ibus 1.5.18, ibus 1.5.17 don't crash · Issue #2007 · ibus/ibus 数日前に既に解決済みなことを教えて貰いました. IBusEngine SEGV when
WebMoneyを決済手段として実装するサイトの一部に運営者のミスによって脆弱性が発生しています
IPAとWebMoneyとサイト運営者に報告したのが2月7日です. そろそろ注意喚起を兼ねて広く公開しておきます. 脆弱性の内容 WebMoneyの「基本導入マニュアル」を参照してください. 持ってない方は頑張って手に入れてください. このバグもWebMoneyにバグ報告したのですが優先度が低いということで修正されませんでした. そしてその7ページ目の下半分テーブル4行目(ヘッダは含めない)を読んでください. 次に9ページ目の下半分を読んでください. このファイルを公開してはいけないということがわかりまし
StackはGHCやCabalに並列ビルドのjobsオプションを伝えていませんが, 伝えたとしてもGHCの問題で全然速くならない
CabalやGHCには-jオプションがあり, ビルド時に並列に処理するかを指示できます. Stackはパッケージ毎に並列ビルド(依存関係のないパッケージを別々にビルドすること)はCPUのコア数に応じて行います. しかし, パッケージ自体の並列ビルドのオプションはcabalに指定していません. 日々GHCのビルドを待つ我々としては, コンパイル速度は高めたいところです. これを指定すれば速くなるのではないかと思って調べました. 関連issueが出てきました. Develop/Document multi-le
stackでも1コマンドでworldパッケージをインストールしたい
stackではグローバルのリゾルバを以下のコマンドで最新版に更新できます. stack config set resolver lts stackのltsをアップデートするたびにzshのhistoryをたどってhlintやstylish-haskellのインストールを行うのは面倒だと思いました. portageのworldみたいに使うパッケージを登録しておいて, コマンド1回でインストールできるようにしたいですね. シェルスクリプトでうまく改行区切りでパッケージを管理するにはどうしたら良いのかなという疑
ゆうちょダイレクトの劣悪なログイン画面にKeePassXCの自動入力で立ち向かう
ゆうちょダイレクトのUIはありとあらゆる部分が劣悪です. もっとも悪いのはログインがクソ面倒くさいということです. まずユーザIDとパスワードが別ページに表示されるので, 一緒に入力できないのでブラウザのパスワードマネージャに保存できません. 無駄なセキュリティ対策かと思いきや, ユーザIDはないパスワードだけは保存可能なので, 真に何の意味もないんですよね. またユーザIDがハイフンで区切られる部分で3つに分割されているので, パスワードマネージャからユーザIDをコピペしようとしても3回に渡ってコピペしな
Emacs Lispでsort-dwimを書きました
前から書こうと思ってましたがだるくてやってなかったものです. (defun sort-dwim () "1行選択している時は単語のソート, 選択してない時はパラグラフの行ソート, 選択している時はその範囲の行ソート" (interactive) (save-excursion (if (and (use-region-p) (eq (line-number-at-pos (region-beginning)) (line-number-at-
Shift_JISに対応しているのでag(the_silver_searcher)からrg(ripgrep)に乗り換えました
ggreer/the_silver_searcher: A code-searching tool similar to ack, but faster. から BurntSushi/ripgrep: ripgrep recursively searches directories for a regex pattern に乗り換えました. rgの方がagより速いことは知っていましたが, そこまでagの速度に不満を持っていなかったため, あまり乗り換える気にはなっていませんでした. しかし, ついさっき,
mikutterでカラー絵文字を表示するためにcairo 1.15のebuildを書きました
インストールは以下から. ncaq/ncaq-overlay: ncaq's personal gentoo overlay mikutter twemojiプラグイン - cobodoのブログを読んで, そう言えば前回mikutter 3.6にアップデートした時に, cairoのバージョンさえ上げればカラー絵文字表示できそうだなという結論に至ったことを思い出しました. なので, cairo 1.15のebuildを書きました. ダウンロードするURLを少し変えたりするだけであっさりインストールできました.
Google AdSenseのレスポンシブ対応の関連コンテンツのサンプルコードは間違っています
Google AdSenseの関連コンテンツの量を増やしてみようと, これまで自動設定頼りだったパラメータを修正してみました. ここはレスポンシブwebサイトなので, その記述をしようとしました. そしたらドキュメントのバグを発見しました. レスポンシブ対応の関連コンテンツ ユニットをカスタマイズする方法 - AdSense ヘルプの関連コンテンツ ユニット内の行数と列数を指定する > レスポンシブ対応サイト: 4×1(モバイル)、2×2(PC)に書かれているコードは, <script asyn
updatedbをsystemdのタイマーで自動的に実行してファイル検索locateの情報を最新に保つ
Unixにはlocateというプログラムがあります. これはコンピュータ内部のファイルを検索するためのプログラムであり, findよりも圧倒的に高速です. 検索キーワードには正規表現を使うことができます. helm-for-filesのhelm-locateにも使われています. Emacsのhelm-for-filesでnintendoと検索している様子 なぜlocateがfindよりも高速なのか. locateはファイルのインデックスを参照するから速いのです. しかしlocateにはだからこその弱点が
Clang C++コンパイラは関数内でデストラクタのある構造体が確保された場合スコープを区切っても末尾呼び出し最適化を行わない場合がある?
C++の規格には詳しくないのですが, 本の虫: C++入門書で再帰について解説しようとしたら思わぬ最適化できないコードに出くわしたを読んで試してみました. コンパイルコマンドはclang++ -std=c++17 -O2 tco.cpp. これはsegmentation fault (core dumped)します. #include <iostream> struct raii { raii() { std::cout << "constructor"
mikutter 3.6.6をGentooのOverlayでインストールできるようにしました
Overlayはこちらから. ncaq/ncaq-overlay: ncaq's personal gentoo overlay 公式リポジトリに何が起きていたか Gentoo公式のmikutterは3.5.4までしか提供していません. またそれはdev-ruby/delayer-deferred-2.0.0では動かないため, 何も考えずに公式パッケージをインストールすると動かないという状況になっていました. mikutter-3.6.1をインストール というわけで, 前に mikutter-3.6.
webpack, Electron環境で__dirnameをfalseにするとDevtronが動かなくなり__dirnameをtrueにするとプロダクションでパスが参照できない問題を解決しました
Devtronという開発ツールがあります. ElectronのIPC通信を見てくれるやつです. 優れものです. しかし困ったことがあって, Devtronはwebpackの設定を__dirname: trueにしないとディレクトリを正しく読み込みません. かと言って__dirname: trueにすれば良いのかというとそうではなく. __dirname: trueにすると, __dirnameがソースコードの場所を指してしまいます. するとプロダクション環境でindex.htmlを参照するのが難しくなってし
gtagsでctagsを有効にしてJSXのタグを生成する
放置していましたがいい加減gtagsの設定を整えることにしました. 参考: GNU GLOBALの対応言語を大幅に増やすPygmentsパーサーを導入する - Qiita ctagsをオプション無しで有効にする ctagsを有効にしている環境で, /etc/gtags.confを, default:\ :tc=gtags:tc=universal-ctags:tc=htags: と変更します. そして :langmap=JavaScript\:.js.jsx:\ のように.jsと書かれている隣り
Immutable.js 4.0.0-rc.9はFlowでもTypeScriptでもgetとsetの文字列を検査してエラーを出します
Immutable.jsのRecordについて情報を察知しました. class extendでRecordを継承して独自の型を作るやつです. 生JavaScript版, 型安全も何もない. const { Record } = require("immutable"); class Person extends Record({ name: "", birthday: null }) { get age() { return new Date().get
JavaScript標準関数Math.maxで配列の最大値を取得する方法とその罠
JavaScript標準関数にはC++の max_element のような「配列の最大値を返す」関数は存在しません(しないよね?). よってMath.max()を使います. Math.maxは与えられた引数から最大の数を返すので, 配列を引数に分解してやれば良いわけです. つまり > Math.max(...[]) -Infinity > Math.max(...[], -1) -1 > Math.max(...[1, 2, 3]) 3 みたいにやるわけですね. 空配列を適用したら-I
Emacsの標準バックアップ機能で初回保存時に限らず常にバックアップするようにする
Emacsには標準でファイルバックアップ機能があります. (custom-set-variables '(backup-directory-alist `(("" . ,(concat user-emacs-directory "file-backup/")))) '(delete-old-versions t) ;askだと削除時に一々聞いてくる '(kept-new-versions 50)
Zenbackを削除してGoogle AdSenceの関連コンテンツを追加しました
これまで関連記事の表示のためにZenbackを使ってきました. しかし, Google AdSenceの関連コンテンツの表示に乗り換えることにしました. Zenbackの広告表示領域がそこそこ大きく, 内容も固定 精度があまり良くない ためでした. Google AdSenceの関連コンテンツはサムネイルを自動抽出してくれるのも良いですね. 記事に画像が貼り付けられてないと何故かフッターのSkypeアイコンをサムネイルとして認識してしまうのはご愛嬌. 何でだ…? ソーシャルボタンなどは自分で設置すること
HaskellのOverloadedStringsでByteStringを作るとマルチバイトを切り捨てる罠があります
ずっと前に知っていたのですが, 頻繁に忘却するので記事にすることにしました. {-# LANGUAGE OverloadedStrings #-} import qualified Data.ByteString.UTF8 as U main :: IO () main = do putStrLn $ U.toString "あ" -- B putStrLn $ U.toString (U.fromString "あ"
git pullした時に削除済みのリモートブランチとマージ済みのローカルブランチを自動削除する
GitHub Flowのように細かく機能別にブランチを分けてpull requestを作っていく形式だとブランチのゴミが鬱陶しくて仕方が無くなります. Gitにはgit fetch --pruneというオプションがあり, これでリモートブランチは削除を検知して消してくれます. しかしローカルブランチはそのままです. なんでそのままなのかわからないのですが, とりあえず削除するのがいい加減面倒になってきたので, シェルスクリプトを書くことにしました. これ自体はGit でマージ済みのブランチを一括削除する -
日報をgit logから自動抽出してクリップボードにコピーする
私が今働いている会社は勤務時間を入力する際に「今日何をやったか」を入力する欄があります. 一々手でコピーしていたのですが面倒になってきました. なのでgit logから抽出してクリップボードにコピーするシェルスクリプトを書きました. alias git-daily='git log --all --format="%h %ai %s" --since=$(date +"%Y-%m-%d-00:00:00") --author=$(git config user
Gitでファイルを追加するだけの時に雑なメッセージを生成してコミットする
私は~/Documents/をGitで管理しています. Google Driveも使用していますが, 基本的にデータはGitで管理して自宅サーバのプライベートGitリポジトリにpushしてpullして同期しています. 一度Dropboxの同期ミスでロールバックが発生して以来, ずっとこうしています. pushしてpullするのは少し面倒くさいですが, 常にプログラムを待受させなくて済みますし, 基本的にデータの同期は1日の最初にやるだけなので, これで十分なのです. 真に問題であるコンフリクトが発生したとき
Semantic UIでツールチップを要素へのマウスホバーで表示するにはdata-tooltip属性を使う
Semantic UIには Popup | Semantic UIというものがありますが, これはマウスホバーでツールチップを出すための専用の要素を作る使いにくいものです. ボタンなどに注釈としてツールチップを追加したいですよね. しかしHTMLネイティブのものは見辛いから使いたくない. せっかくSemantic UIを使っているのですから. 調べてみたらGitHubのissueが出てきました. Tooltip on disabled button · Issue #4296 · Semantic-Org/
JavaScript(EcmaScript)では引数の評価順序は左から右と定められている
JavaScriptで引数が左から右に評価されること前提のコードを書いていました. そこでCやOCamlでは引数の評価順序が定められていないことを思い出しました. Big Sky :: gcc は副作用のある関数呼び出しを含む式評価順序を最適化する。 日本語で文献が無かったので検索に苦労しましたが, Stack Overflowの質問を見つけ出しました. What is the order of evaluation for function arguments in Javascript? - Stack
nginxで404ページをリダイレクトさせずに表示する
このサイトの404がnginxのデフォルトのままで流石にあんまりにもあんまりでした. 日本語で説明を表示してトップページへのリンクぐらい残しておこうと思いました. nginxで404ページをカスタムする方法は簡単で, error_page 404 /404/index.html; と書けばそこのファイルを参照してくれます. しかし, このデフォルト設定には1つ問題があって, 404エラー時に404のファイルのURLに飛んでしまいます. これはユーザにとっても管理者にとっても望ましくない動作です. ユーザ
helm-ls-gitをhelm-for-filesで一緒に表示する
helm-ls-gitという現在いるgitの管理ファイルを表示するhelmコマンドがあります. これを私はhelm-for-filesで表示した時に一緒に表示させてrecentfなどと一緒に一括検索させていました. それを実現するためにはhelm-for-files-preferred-listにソースを追加すれば良いのですが, helm-ls-gitのソースはデフォルトではnilであり, 追加するだけでは動きません. 変数を初期設定するためにhelm-ls-git-lsを呼び出しておくという暴力的手段を用
company-modeでタブキーで複数の補完候補がある時は候補をスクロールして補完候補が1つの時は補完を決定する
emacsの補完用パッケージcompany-mode - Qiitaに実現できそうな関数が載っていましたが. パッケージ化されていないコードをあまり取り込みたくなかったので敬遠しました. 調べてみると標準でcompany-complete-common-or-cycleという関数があってこれが思った通りの動作をしてくれました. 以下のように書けば完璧です. (define-key company-active-map (kbd "<backtab>") 'compan
company-modeでタブキーに補完もインデントも割り当てる
auto-completeには(ac-set-trigger-key "<tab>")という関数があります. これを実行すると普段はタブキーをインデントに使い, 補完出来るときのみ補完することが可能になります. company-modeにはそのような関数はなかったため, 補完をワンキーでサクッと実行したい私は困ることになりました. 探ってみるとcompany-indent-or-complete-commonという関数があるようでした. これを(global-set-key (kbd "<
SpamAssassinの学習フィルタを重視する
私のメールサーバの~/.spamassassin/user_prefsにはadd_header all Report _REPORT_と書かれていて全てのメールにスパムチェックレポートが追加されるようになっています. スパムが判定されなかったり逆に誤検知が起きた時に原因を知るためです. これを日々見ていると, どうも学習フィルタをあまり信用していないのが原因だとわかってきました. 例えばとある検知されなかったスパムメールは以下のようなレポートとなっています. X-Spam-Checker-Version:
webpack, babel, node環境で例外時のスタックトレースに元ソースの場所を表示させる
問題 nodeに読み込ませるソースをwebpackとbabelでコンパイルするようにすると, エラー時のスタックトレースが at Object.eval (webpack-internal:///76:29:7) のような意味不明なものになってしまいます. これはソースマップを有効にしていても起きてしまいます. webpackのissueにも既にこの問題は報告されていましたが. SourceMap don't link to an src file but to webpack-internal:///[
遅まきながらEmacsのHaskell開発環境をInteroに移行しました
InteroというHaskellのEmacs向け開発環境があります. Intero for Emacs commercialhaskell/intero: Complete interactive development program for Haskell 私はhaskell-modeとFlycheckを既にうまく強調させて動かしていたため. これを使う必要はないかと思って移行していませんでした. しかし今改めて説明画面を見ると. GHCの提案警告に従ってコードを修正する機能. テストなどの違うター
M570がチャタリングを起こすようになったのでMX ERGOを購入して満足しました
2014-10-21にM570トラックボール(正確にはM570t)を購入しました. 概ね満足していたのですが, ここ最近チャタリングを起こすようになってしまいました. もう数年使ってたから仕方ないですね. 普段あまりドラッグ動作はしないので, チャタリングを起こしてもスクリーンショットを選択して取得する時に, 誤動作が起きてイラッと来るぐらいだったのですが. とあるものを購入してからチャタリングは深刻な問題になりました. Sid Meier’s Civilization® VIです. このゲームはドラッ
webpack 4でJavaScriptソースをビルドすると__dirnameが/になってしまう問題の解決法がわからない
やっていた作業 今書いているElectronアプリはmainプロセス側はBabelもTypeScriptもFlowも使っていない生JSで書かれていました. 生JSというのも問題ですが, rendererプロセス側ではBabelを使っていたので, mainプロセスとrendererプロセスでコードを共有できず, 同じコードがコピペして増えるという悪夢が発生していました. 私はこれを解決すべく, mainプロセス側もBabelとwebpackを通すようにコードを変更していました. webpackの設定ファイル
Emacsのレジスタ機能を使って隔離された疑似クリップボード空間を手に入れました
Emacsのkill-region(カット)(デフォルトではC-wに割り当てられる)はクリップボードに文字列を追加します. いやカットがクリップボードに文字列を追加するのは当たり前ですね. Emacsはそれに追加してkill-line(行を削除する)コマンドやkill-word(単語を削除する)などもクリップボードに文字列を追加します. 行や単語をテキストファイルの中で移動させたいことはよくあるため, 一々行を選択してカットする必要がなく, 削除と同じコマンドでカット出来るのは便利です. 削除時にカットされ
YesodのShakespearean TemplatesのHamletで埋め込み形式を使うのはやめてwfsHamletSettings = (wfsHamletSettings def){hamletNewlines = NoNewlines}しましょう
Yesodの Shakespearean Templates :: Yesod Web Framework Book- Version 1.4 はのHamletはインデントで閉じタグを表現します. <body> <p>Some paragraph. <ul> <li>Item 1 <li>Item 2 のように書くわけです. しかしHamletにはタグを埋め込みで書いて閉じタグを明示的に書く方式も
JavaScriptで渡された配列引数をディープコピーする場合デフォルト引数を適当に使うより引数省略を検知してディープコピーを省略したほうが高速
とあるpull requestで. JavaScriptクラスのコンストラクタで. 配列引数にundefinedが渡されていることをtypeof foo === 'undefined'によって検知して. 引数が省略されている場合new Arrayして, 引数が省略されていなかった場合配列のディープコピーを行っているのを見ました. 私は見た, 思った, 書いた. 「それデフォルト引数設定すれば良くないですか?」 とすると「引数を省略した場合配列のディープコピーが生じるのでかなりの無駄になる」と返されました.
jest自体の動作確認は--no-cacheオプションを付けて行いましょう
ハマった順序 babel 7にプロジェクトのライブラリをアップデートしたらjestがbabelのビルドでコケるようになりました. 対応コードを色々書いてみて成功したので, 本当に必要な記述だけを見極めるために変更を元に戻しました. そして失敗を確認するために再度テストを実行したら何故かテストが成功するようになりました. CircleCIでは失敗するのでそのリビジョンでは既に修正されていたということも無さそうです. 原因 キャッシュが原因でした. 私もキャッシュが原因だと疑ったのでgit clean -
WebStorm(IntelliJ IDEA)に負けないEmacsのweb開発環境
最近はElectronとReactでアプリを書いています. web開発ならWebStormという風潮があるのでIntelliJ IDEAを使ってみたのですが3日でEmacsに戻ってきました. 周りはみんなIntelliJを使っていて. CTOの方針でVim, Emacs, Atom, VSCodeなどのテキストエディタを初心者に使わせるのはNGで. IDEを使わせるということになっているので. 少し肩身が狭いですが私はEmacsを使い続けています. というわけで現代的(2018年)なEmacsでのweb開発
アプリケーションのパスが変更された時にwebpackのfile-loaderがファイルパスの先頭にスラッシュを付けないので下部のディレクトリを見に行って404になってしまう問題の解決法がわからない
環境 electron webpack babel-loader url-loader file-loader react-router 問題 importやrequireでurl-loaderのfallbackであるfile-loaderが出力するパスの先頭にはデフォルトではスラッシュが付いていません. よってReact Routerなどを使って下部のディレクトリ/foo/に移動した際. ルートに置いてあるbar.pngファイルを読みに行く時. 本来/bar.pngにアクセスして欲しいところ,
ReactにcomponentDidReceivePropsが欲しいと思ったけれど今回は無くても解決しました
React.Componentのライフサイクル関数には 新しいpropsを引数で受け取るcomponentWillReceiveProps 新しいpropsとstateを引数で受け取るcomponentWillUpdate propsとstateが更新された後に呼び出されるcomponentDidUpdate があります. ここでクラス内で複数propsを参照する処理を行っていると, propsを更新されてから処理を行いたい時があります. ReactのcomponentWillReceiveProps内
親が自宅サーバを物理的に落としてくるのでTwitterで死活監視結果を送ってくれるUptime Robotを導入しました
今日の8時頃に母親が自宅サーバを棚から物理的に落とすということが発生しました. それによりこのサイト, メールなどのサービスが1時間ほど全て止まりました. 落ちていることはTwitterでフォロワーさんに教えて貰いました. その後父親にSkypeで通話して復旧して貰いました. こういう事件は定期的に起きています. これの対策法は全くわかりません. 場所を変えるというのは家の配線の都合上不可能で, 親が線に物を引っ掛けてサーバを落とすという行為は再三注意していますが定期的に起きます. せめて落としたら電話して
PostgreSQLアンチパターン 自動採番される疑似キーを手動で入力する
SQL全般の話ではなくPostgreSQLの話です. IDリクワイアド Pseudokey Neat-Freak(疑似キー潔癖症) に関連するアンチパターン. 運用の問題なのでアンチパターンではないかもしれません. 問題 id bigint not null default nextval('foo_id_seq'::regclass) のような自動採番される人工キーに対して, 自動採番のシステムを通さないで, id手動で指定してinsertで入力してしまうと, 次のinsert時
Haskellでファイルの変更を監視
別プログラムがファイルにデータの書き出しを行うのを監視する必要があったため. hinotifyというinotify APIのHaskell向けバインディングを使います. 非Linux環境? 何もわからない. import Control.Concurrent import System.INotify main :: IO () main = do inotify <- initINotify watchDescriptor <- add
JavaScriptアンチパターン 関連するデータを別の変数に入れる
今日のJavaScriptアンチパターン. class Constant { static get kirby() { return 'kirby'; } static get kirbyColor() { return 'pink'; } static get metaknight() { return 'metaknight'; } static get
Re:Haskellで書いてみたらC++の10倍遅かった 5倍程度になりました
10倍は遅すぎませんか? 本の虫: Haskellで書いてみたらC++の10倍遅かった を読みました. 10倍は差が出過ぎなのではないかと思いました. C++ソースコード まずC++のソースコードが完全なものではないので補完しました. #include <algorithm> #include <array> #include <iostream> #include <random> template <typename Random> b
現在通信しているポートとプロセス名を確認するコマンド
数年前色々探った結果sudo netstat -aepWが便利だとわかりました. よく使うので, 私は以下のエイリアスを設定しています. alias n='sudo netstat -aepW|less' サーバで実行すると以下のようになります. ソケット名は長いので省略. 私のnginxにアクセスしているクライアントもリモートホストが開示されているので省略. ctive Internet connections (servers and established) Proto Recv-
HaskellのGHCによるビルドをLLVMのリンカーLLDで高速化することが出来なかった
リンクが遅い 現在SYAKERAKEをHaskellとYesodで書いています. ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています - ncaq 開発上常に問題が発生していて, それはビルドに時間がかかるということです. コンパイルが必要になる時はまあ仕方がないです. 本質的に時間がかかることに対してはハードウェアの更新で対応するしかないです. しかし, 差分ビルドが有効になっていても, ちょっとした1つのファイルの変更でかなり時間がかかってしま
ゆうちょ銀行の銀行コードなどを確認する
今回Google アドセンスに支払い方法を追加する時に, Google アドセンスに銀行コードを要求されて困りました. ご丁寧にキャッシュカードの何処に書かれているのか画像が添付されているのですが, ゆうちょ銀行のキャッシュカードにはそれは載っていないようです. どうやるのかググって【Google AdSense】お支払い方法の設定(受取口座の追加)※ゆうちょ銀行にも対応! | はぴすぷというサイトを見つけたのですがリンク先のゆうちょ銀行のサイトがリンク切れになっています. 新しいページも載ってないので非常
Nintendo SwitchのJoy-Conの破損は保証期間内でも有償修理になるので気をつけましょう
2018-01-25日に, 電車の中でJoy-Con(R)の故障に気が付きました. 故障の内容は, Nintendo SwitchのJoy-Conは本来, 裏にある取り外すボタンを押しながらでないと本体から取り外せないはずですが, 上にスライドさせようとするだけで取り外しされてしまう, というものです. 家に帰ってからJoy-Conグリップに接続して試してみたのですが, やはりボタンを押さなくても取り外しされてしまいます. よく見るとJoy-Conのプラスチックの部分がRはLに比べて摩耗しているように見えま
デュアルブートしている環境でVirtualBoxでLinuxをホストOSとして別パーティションのWindowsをゲストOSとして起動
忘れると困るので自分用にメモします. 私のXPS 13 9360は買った直後にパーティションを切ってGentoo Linuxをインストールしています. その後Windowsは殆ど起動していなかったのですが, Windows環境を必要とする状況が出てきました. VirtualBoxで専用ディスクを生成しても良いのですが, せっかく別パーティションにWindowsが存在すること, vagrant upが何時まで経っても終わらないことから, この別パーティションのWindowsを有効活用するようにしました. まず
spamcがベイジアンフィルタの学習データを認識しない問題はspamassassinコマンドを直接使ったら解決しました
spamassassinの精度が悪すぎることから調査してみたらspamcコマンドだとベイジアンフィルタの学習データを認識しないことがわかりました. spamcというのはspamdと組み合わせて使うspamassassin用のクライアントです. spamassassinを一々立ち上げていると初期化コストがかかるため, これを使えば軽量にスパムチェックが出来ることになっています. 例によって私もこれを使っていました. しかし, どうもspamassassinの精度が悪すぎることが長年の悩みでした. 全部のスパム
GNU/LinuxでのCDのリッピングにはAudexがオススメです
最近CDをリッピングすることも少なくなってきましたが, GNU/LinuxでのCDのリッピングには Audex - KDE UserBase Wiki がオススメです. audexでリッピングする前のメタ情報認識 5年前ぐらいに知って, ずっとこれを使っています. KDEのソフトウェアですが, もちろんKDE環境でなくても利用できます. おすすめポイントはMusicBrainzとfreedbの両方に対応していることで, どちらかの引っかかったデータを利用することが出来ます. データがない場合や間違ってい
mikutter-3.6.1.ebuildを書こうとしたけれどidn-ruby-0.1.0.ebuildが書けないので正常に動作するものが書けなかった
現在Gentooの公式portageリポジトリのmikutterは3.5.4-r1です. 公式で提供している delayer-deferred の最新版に対応していないので古いものをインストールする奇妙な状況になっていました. ならばとりあえず私のoverlayにmikutter-3.6.1を追加しようと思いました. mikutter-3.6.1がdivaを要求して, divaがportageに存在しないためこれを追加する必要がありましたが, これ自体は他のfakegemを要求するebuildを参考にして簡
WebMoneyがつらい
電子マネーWebMoney(ウェブマネー)がつらい. 私はWebMoneyを個人顧客として使ったことはありません. 決済手段として導入しようとしていてとにかく仕様が地獄. 怒りのあまり文章が整ってないですし順序も支離滅裂です. 私の怒りを整理するために書いているのであまり参考にはならないかもしれません. 仕様書が簡単にアクセスできる場所にない 「問い合わせ」をしないと仕様書が見れません. 普通にweb上にパブリックに公開していません. 我々の場合, 詳細な仕様書が来たのは契約後でした. なので私は契約する
私の誕生日なのでぜにぃ姫を使って親交のある人にBitZenyを配りましたが1ZNY配られると思ってたら10ZNY配られてしまい50人のつもりが5人になってしまいました
本当はスクリプトにして再実行できるような形で配布したかったのですが, 忙しかったので適当に済ませました. 方法は雑すぎるので秘匿します. TwitterのAPI使いにくすぎる. 適当に親交のある人を取得してthanksで送りまくったら, ドキュメントに書いてある通り, 1ZNY送信されると思ってたら, 実際には10ZNY送信されて, 50人に送信するつもりが5人にしか送信されませんでした. 悲しいけどまあ良いや. 一応開発者にはTwitterでドキュメントのミスを報告しました. 額を気にするならthanks
D言語で(a == 1 && a == 2 && a == 3)をtrueにする
D言語で無かったので. import std.stdio; void main() { auto a = new N(); if (a == 1 && a == 2 && a == 3) { writeln("true"); } } class N { bool opEquals(int rhs) { return true; } } opEqualsによるオーバーロードが可能
Haskellで拡張無しでみそスープする
C++ では 2 + 2 の動作を上書きできないかもしれないが、ところで、ここに Haskell という言語があります — Make 生活リズム 正常 again (@mod_poppo) 2018年1月23日 「1+1は?」Haskell「みそスープ」 pic.twitter.com/SF9wi21zeJ — Hideyuki Tanaka (@tanakh) 2018年1月23日 +を実行できるようにするにはNumのインスタンスを作れば良い. みそスープを出力するようにするにはShowを
JavaScriptのexportはexport default以外禁止にしてしまった方が楽になる
追記: 2020-12-11 別にそうでもないなと考えを変えました. なぜ default export を使うべきではないのか? - LINE ENGINEERING には納得できる論も多いですし, この時やっていたプロジェクトのモジュールがつらいのは単に命名がまずかったからです. 概要 相当遅ればせながらJavaScriptのモジュールについて調べて, 自分なりの付き合い方をまとめました. 結論: export defaultのみを使おう. 他のexportはやめよう. JavaScriptコ
計算理論のテスト用ノート
決定性有限オートマトン \(K\) = 状態の集合 \(Σ\) = 入力の集合 \(δ\) = 現在の状態状態 -> 入力 -> 新たな状態 \(q_0\) = 初期状態 \(F\) = 受理状態の集合 非決定性有限オートマトンは\(δ = K -> Σ -> \{K\}\)となっている. ε付きは入力が空白の入力を受け付ける. 正規言語 列の長さ: その列に含まれる記号の個数, 列xの長さを|x|と書く.また長さ0の列を空列と呼び, εで表す. 列xとyの連接とは, 列
アルゴリズムとデータ構造2のテスト用ノート
B木 各ノードは最大m本の枝を持つ, 恨と葉以外のすべてのノードはm/2以上の枝を持つ, 挿入時ノードの要素数がm-1を超える場合は真ん中の要素を親として2分割して部分木を作り, 親のノードの枝の位置に挿入する, それを繰り返す, ノードの中間の要素を消す時は, 子の最大の要素をそこに挿入する, 葉がなくなってしまう場合は隣から貰ってくる, 隣にも存在しない場合, 子の要素2つを合体して新たな子とし, 枝の数を減らす, 高さは0オリジン, 全てのノードに要素を詰めた場合, 要素数は\(高さ*次数^0 + 高
アルゴリズムとデータ構造2(テスト返却)
私のテスト結果は100点満点中68点でした. 平均点は64.7, 最高点は92点だそうです. 手計算が多くて全然駄目だと思っていたのですが, 意外とそこそこ出来ていたそうです. 紙上でアルゴリズムの計算過程を書くよりも, プログラミング言語で書いて出すという形式の方が良かったと思いました. まあ自分が有利になるからそう思っているだけで, 全体で良い講義になるという確証があるわけではないのですが. 間違えた答えについては, 計算用紙を提出してしまったのでなんでこんな答えが出てきたのかわからなくなってしまいまし
mmapというファイルやデバイスをメモリーにマップするシステムコールの解説
選択3: mmap mmapについて説明しなさい。その際に必ずanonymous メモリーについて言及すること。 概要 mmapとは, ファイルやデバイスをメモリーにマップするシステムコールです. 一応mmapはPOSIXに含まれているシステムコールです. しかし, POSIXに定義されている動作はごく一部で, 特にflags引数に指定できるのはMAP_FIXED, MAP_PRIVATE, MAP_SHAREDの3つしかなく, 無名ページもサポートしていません. それぞれのUNIXが独自に拡張してお
UNIX(NeXTSTEP)
寝坊して20分遅刻したので最初何喋っていたのか全く把握してませんでした. スティーブ・ジョブズのNeXTのプレゼンがキャノンの日本語字幕付きでしか動画が残っていないらしい. ウケる. NeXTのアーキテクチャってメインフレームを参考にしてたんですね. メインフレームのアーキテクチャをワンボードに載せるという. コンパックとか懐かしい名前が出てきますが, HPは現役でIBMはPCをLenovoに売り渡して時代を感じます. Mach Kernelの話. ダイナミックローディングが出来るのは当時としては珍しかった
fioによるbcacheシステムのベンチマーク, あまりbcacheに期待しないほうが良い
ファイルシステム: Btrfs, マウントオプションは/dev/bcache0 on / type btrfs (rw,noatime,compress=zstd,ssd,space_cache,subvolid=5,subvol=/) SSD: Samsung SM961 HDD: TOSHIBA DT01ACA3 bcacheが正常に効いているのか確認するため, キャッシュデバイス無効有効両方でベンチマークを取ることにします. 本当はbcacheを使わない純粋なSSDでのベンチマークもするべきなので
Linuxでは何故SSD向けのキャッシュ機構をZFSのようにファイルシステムに依存せずにbcacheのような形で提供しているのか考察
選択2: SSD向けのキャッシュ機構 SSD向けのキャッシュ機構bcache Linuxカーネル3.10ではSSD向けのキャッシュ機構bcacheが新たにサポートされた。ファイルシステムZFSなどではSSDをキャッシュとして使うメカニズムを持っているが、bcacheはファイルシステムなどに依存しない独立した形で提供されている。 Linuxのアプローチではファイルシステムにも依存しないアプローチを採用するのは何故か論じなさい。 ZFSのメインターゲットであるSolarisにもDCD -- Disk Cac
科学論・科学史102(元素合成)
電子には重さはあるけれど, 大きさは点で無い. 電子の大きさはめっちゃ小さいとかではなく, 極限で0に近づく. ただ点だけれど電子には重さがあり, 0.5MeVの重さを持っている. 原子核はもっと重たい. 太陽が石油の塊だとすると, あのエネルギーの放射では100年ほどでエネルギーが尽きてしまう. 核融合のエネルギーが太陽を光らせている. 核反応と化学反応には相当の違いがある. 太陽では小さいものから大きいものを作る核融合を使っている. 人間は核融合に未だ成功してない. 私「ロシアでは核融合炉出来ていると聞
systemdを使ってサーバーで優先度を低くしてBitZenyを採掘する方法
手元のwebサーバ兼ルータもCeleronですが, 一応CPUが存在していて, BitZenyはCPUでもそこそこ掘れるので設定してみました. しかしこのサーバの本懐はマイニングではないので, あくまでCPUが空いている時にのみ動かしたい. 普通にsystemdのユニットファイルのNice値を設定することで可能のようでした. [Unit] After=network.service [Service] ExecStart=/home/ncaq/.local/bin/minerd 省略 Nice=19 [
Gentooでccminerをビルドしてmonacoinを掘る
どうもmonacoinを1モナ2000円で掴んだ負け組です. 今回はせっかく高級なGPUがあるんだからccminerでmonacoinを掘る環境を整えました. それまでもGPUだけはあったんですが, 電源の能力が不足していたのでGPUマイニングは行っていませんでした. それが電源が変わって負荷に耐えられるようになったのでマイニングを行ってみることにします. PCの電源を750WのFSP RAIDER RA-750から1000WのCorsair RM1000iに乗り換えたらGPUが安定駆動するようになりました
nvidia-cuda-sdk-9.0.176がglibc-2.26-r5でビルドできない問題の解決方法
nvidia-cuda-sdk-9.0.176をglibc-2.26-r5環境でビルドしようとすると, /usr/include/bits/floatn.h(61): error: invalid argument to attribute "__mode__" /usr/include/bits/floatn.h(73): error: identifier "__float128" is undefined のようなビルドエラーになります. これを正攻法で解決
PCの電源を750WのFSP RAIDER RA-750から1000WのCorsair RM1000iに乗り換えたらGPUが安定駆動するようになりました
今までFSP RAIDER RA-750を使っていました. これをCorsair RM1000i PS562 CP-9020084-JPに変更しました. 変更した理由は, 従来の電源でMSI KOMBUSTORのストレステストを実行したら, KP41でWindowsが強制終了するためです. 計算上Threadripper 1950XとGTX 1080 Tiの構成では750Wで足りるはずなのですが, 症状がどう見ても電源容量の不足のため, 変更しました. 変更したらストレステストは問題なく動くようにな
Haskell拡張で暗黙的なデータ変換を行って比較する型クラスを作ることは可能ですが, 少なくとも私の素朴な実装は実用的ではない
Haskell, Maybe a型とa型を比較できるようEqとかOrdが定義されてないのはなぜだろう。Just x == y = x == yx == Just y = x == yみたいな。 — Ryou Ezoe (@EzoeRyou) 2018年1月12日 Eq a bというふうに型を2つとる設計にしなかったのはなぜだろう。NumとIntとFloatみたいに共通の型を作れってことなんだろうか。 — Ryou Ezoe (@EzoeRyou) 2018年1月12日 そういうclass
UNIX(UNIXとIoT時代のセキュリティ)
Meltdownの時事ネタ. 最近の組み込み機器はLinuxが動いているという話. そう言えばIntelの組み込み機器死にましたね. Intel、「Galileo」「Edison」「Joule」の提供終了へ - ITmedia NEWS 下手な安いラップトップは物理コア数2ですよね. というか私が今使ってるXPS 13 9360もi7-7500Uなので物理コア数2. スマートフォンに載ってるARM系の物理コアが8(実働は4)が当たり前なのでスマートフォンの方がコア数多いことが普通に多いという. Intelで
BitZenyをRyzen Threadripper 1950Xで採掘する時の良い環境とオプションを探しました
BitZenyをRyzen Threadripper 1950Xで採掘する時の良い環境とオプションを探します. 環境やオプションを変えてマイニングして, ハッシュレートを記録していきます. 検証環境. % uname -a Linux strawberry 4.14.8-gentoo-r1 #15 SMP Wed Dec 27 23:26:15 JST 2017 x86_64 AMD Ryzen Threadripper 1950X 16-Core Processor AuthenticAMD GNU/Li
Threadripper 1950Xに対してメモリが足りなかったので16GBから32GBに増設しました
16コア32スレッドのThreadripper 1950Xを購入して, これで並列ビルドも楽々!clangやchromiumのビルドも超速で終わるようになる! と思っていたのですが, 1つ誤算がありました. メモリが足りない. 最近のメモリの高騰から, メモリは送られた16GBのものを使っていたのですが, これでは到底32スレッドを活かすビルドができないことが判明しました. atopで見ればわかるのですが, cc1plusは1プロセスにつき700MB程度のReal Sizeメモリを消費して, これが32個起
情報リスク管理(総まとめ)
試験の話. 持込禁止. 現代社会がバランスが崩れているというか, 常に人間にモラルなんてない気がします. サイバーセキュリティ人材が不足しているという話本当だろうか… 私は相手にもされなかったので懐疑的, 私個人の問題と言えばそれはそう. 清掃員とサイバーセキュリティのエンジニアを並べられて強みは? と言われても困る. 情報リスク管理ということで実際の情報漏洩事案などをもっとバンバン知れるものだと思ってたのですが, そういうのがあまり無くて残念でした.
科学論・科学史102(量子力学の世界, 小テスト)
蜜柑の色は橙色だが, 黒体放射している橙色の物体と温度が異なるのは何故か 蜜柑は黒体ではないため, 反射光があるだけ. 光源を消去したら蜜柑の色も異なる. と回答しました 合ってるっぽいですね. プランクが導入した量子が実際に存在することを示したのは誰か, またその人は量子をどのようなものだとしたか アインシュタイン. 電子を量子だとした. と回答しました. わからなかったのでダメ元でした. 正解はエネルギーを割って割って割れなくなったものでした. 間違えました.
サービス情報システム(C言語には関数が存在しないという迷言)
早々に 「C言語には関数の定義はない」 「getcharは関数ではない」 という発言が飛び出してきました. 一体何を言っているのかわからない. もうこの講義についていける気がしません. 7.21.7.6 The getchar function と思いっきりC11(N1548)に書いてるんですよね. 「HTTPのプロトコルは何を送っても良い」 ????? 授業後に「C言語には関数の定義はない」という言葉の真偽を聞くために, C言語規格にgetchar関数が定義されていることを示したら, 「C言語に関数は
スクリーンショット環境をimport(ImageMagick)からgnome-screenshotに移行できなかったので, PyGObjectで「最近開いたファイル」を追加するスクリプトを書きました
最近スクリーンショットを撮ることが増えたので, gnome-screenshotに移行しようとしました. importの不便な点は, スクリーンショットが「最近開いたファイル」に表示されないため, 選択するのが面倒ということです. 当初はimportで取得したファイルをどうにかして「最近開いたファイル」に登録することを考えていましたが, gnome-screenshotを使えば自動登録されるのでそれで良いことに気がつきました. 以前のスクリーンショット取得関数は以下です. これをxmonadで呼び出していま
alias pa='ps aux|ag'をag自身が見えないようにfunctionに変更して同期させましたがスマートな書き方ではない気がします
私は数年前から以下のzsh aliasを使用していました. alias pa='ps aux|ag' これを定義していると現在mozcが実行されているか調べる時にpa mozcと入力するだけで良いので便利です. しかしこのaliasには1つの問題がありました. agがps auxと同時に起動されてしまい, 引数に検索キーワードが含まれるので検索にag自身が引っかかってしまいます. これまでまあ別に良いやと思って数年過ごしてきましたが, 突如修正したくなったので修正しました. aliasで
certbot renewが今は使っていない削除したサブドメインのせいで成功しないのは誤ってSubjectに追加してしまっていたからでした
Let's Encryptから「そろそろ証明書の期限が切れるよ」というメールが来たので, 更新しようとした所, 更新ができない. 以下のようなエラーが出ました. 2017-12-29T23:24:36 ncaq@sonoda/pts/0(0) ~ % sudo certbot renew Saving debug log to /var/log/letsencrypt/letsencrypt.log -----------------------------------------------------
Linux版CS:GOで日本語が豆腐になり, 解決できませんでした
Linux版CS:GOをGPUのテスト用に動かしてみたら, 日本語化したくなってきたので頑張ってみましたが無理でした. CS:GOのLinux版はSteamのインターフェイスを日本語にしていても日本語で起動しないので起動オプションで-language japaneseを指定して起動する必要があります. これでゲームの前のインターフェイスは日本語化されます. しかし, ゲーム内のインターフェイスは豆腐文字になってしまいます. フォントが入ってないのかなと思ってフォントを変えてみようと思いました. http:/
Threadripper 1950XとGTX 1080 Tiで新しいPCを組みました, 詰まったところなどメモ
買い物メモ. Ryzen Threadripper 1950X, GTX 1080 TiなどのPCパーツを購入して30万円ほど貯金を吹き飛ばしました - ncaq 旧 CPU: Intel Core i5-3570 4-Core capacity: 3800MHz CPUクーラー: Intelの付属品 マザーボード: Gigabyte H77-DS3H メモリ: DIMM DDR3 Synchronous 1600 MHz 4GiB の2枚で8GiB SSD: Intel SSDSC2CW12(111Gi
Stackの並列ビルド数は--jobsを指定しないデフォルトの場合CPUのコア数と等しくなります
Stackは--jobsオプションを指定することで, 依存関係が独立したパッケージを並列にビルドすることが可能です. これはデフォルトで有効になっている機能です. CPUコア数とメモリのバランスが取れてない場合並列ビルドにメモリが耐えきれずにビルドが落ちてしまうので--jobs 1を指定する必要がありました. なので, デフォルトで有効だとはわかっていました. これのデフォルト並列数が気になったので調べてみました. stack/Config.hs at dd01d0a9e20b440d6f4ebc0f49a
Dell製のPC(XPS 13 9360)のIntel MEの脆弱性修正アップデートは手動で適用する必要があります
Intel Management Engineの脆弱性を修正しようと色々やりましたがDell XPS 13 9360向けの修正アップデートは2017年12月10日に来ることを知りました - ncaq に書いていたとおり, Intel MEの脆弱性への修正アップデートはXPS 13 9360では2017-12-10に来ることになっていました. しかし, WindowsでDell Updateを実行しても実行しても最新ですと表示されて, BIOSの更新もIntel MEの更新も行われません. 配布が遅れるのかな
アルゴリズムとデータ構造2(AI, UI)
基本的に試験の話. 強いAIと弱いAIの話定期. AIの基礎トピックは探索と推論. なのでこれまで取り扱ってきた探索もAIだと言えるけど, 当たり前になった技術はAIと呼ばれない. 文字列探索も探索だし, 将棋などのパターンの探索も探索. 推論. ソクラテス殿がまた死んでおられるぞ. ルールを書きまくるエキスパートシステムの話. インプットが大変. 他のAIの話する人と違って, ちゃんと課題点を言ってくれるから安心する… 知識をとにかく入力して分岐するだけのシステムだとフレーム問題にぶち当たる. ディープラ
UNIX(セキュリティ)
IoT機材がDDoSノードに使われているという話. PCに比べて常にネットワークに繋がっているし, 機器は多いので脅威ですよね. Mirai亜種が国内の最大2万4000ホストに感染、ロジテック製Wi-Fiルーターの脆弱性を悪用 -INTERNET Watch 時事ネタでしたね. ネットワークカメラは元々回線が太いから脅威という話. ネットワークカメラもルータもネットワーク回線が太いことが前提なので, 乗っ取られると脅威ですよね. 組み込みLinux開発者のセキュリティ意識が低いという話は確かにそうかもしれな
計算理論(試験準備)
NPの中でも一番難しい問題を作ろうとしてNP完全問題という概念が生まれたが, 実はNPな問題の多くはNP完全であることがわかってきた. クラスNPの問題を多項式時間で還元してNP完全にすれば良いのでクラスNPの問題は全てNP完全な気がしますけど, 証明はされてないっぽい. NP完全な問題の1例として, 3SAT問題が挙げられる. HAMPATH問題もNPに属することを説明したが, 実はNP完全. 試験解説 今日は試験の解説が主でした. 以下の形式で問題を出す. 好きな言語を指定し, それを受理するTuri
情報リスク管理(クラウドコンピューティング)
クラウドがちゃんとバズワードであること, 既存の技術の組み合わせで構成されていることを解説していて良い. 地震でサーバが倒れる話, 思い出すシリーズだ. 出た, コミュニケーション能力とかいう情報を伝えようという意志を感じない言葉. 経団連の調査で, 企業が新卒に対して選考時に重視する要素として「コミュニケーション能力」がトップだったからと言って, 現代でコミュニケーション能力が必要とされていると判断するのは早計だと思います. いくら新卒相手とは言え, 現在の能力を考慮しないアンケートに意味があるとは思わな
科学論・科学史102(原子の構造)
CTやMRIは聞いたことありますし, MRIはこの間受けましたが, PETと言うのは聞いたことなかったですね. 光の強度が強いと高温. 量子はエネルギーにおける原子, これ以上分割出来ない単位. (素粒子の話は置いておこう) プランクは量子の概念を用いてプランクの法則を作って黒体放射の波長を分布した. しかし, 量子の存在はあくまで数学的テクニックだった. アインシュタインは量子が実在することを示した. 原子の実在は1922年(ペラン)頃に認められたが, 電子の実在は1897年(J・J・トムソン)頃に認めら
サービス情報システム(Amazon, Google, Microsoft)
学年を調べるのに手を挙げろと言われたので4年生で手を上げたら「じゃあ就職決まってるんだ」と言われた. 「決まっていない」と言ったら「もう終わりじゃん」と言われた… 「Microsoftは受託開発していない」という発言をしてますが, 巨大化するグーグル、マイクロソフト、アップル--何で儲けているのか - ZDNet Japan を見たり, Microsoftの導入事例を見るにやってるのでは? と思ったけど確たるソースは出てきませんね, やってないのかな? というかAzureの割合高いな, 2016年の記事みた
Haskellによるwebスクレイピングの方法をdic-nico-intersection-pixivを例に書く
Webスクレイピング Advent Calendar 2017 - Adventarの19日目の記事です. この記事では実際のwebスクレイピングの成果である, ncaq/dic-nico-intersection-pixiv: ニコニコ大百科とピクシブ百科事典の共通部分の辞書で書いた時の思考のログから, Haskellでwebスクレイピングを行う時の知見を抽出していきます. コアのソースコードは dic-nico-intersection-pixiv/Main.hs at master · ncaq/di
既存のプロジェクトのファイルにEmacsでインデントをかけていくスクリプトを書きました, しかしESLintのインデントルールとEmacsのモードが異なっていたので不採用
既存のプロジェクトのファイルが自動インデント規則に従ってない場合, 全てに自動インデントをかけたいことがあります. JavaScriptとかならESLintである程度は抑制できるのかもしれませんが, どうもESLintはコードフォーマッティングツールとしてはあまり優秀ではないみたいです. prettier/prettier: Prettier is an opinionated code formatter. というのがあるらしいです. しかしこういうものはプロジェクト全体に導入する必要があるじゃあないです
Gentooのプロファイルが更新されて, GCCがデフォルトPIE有効になったので, Stackのビルドが壊れました, ビルドオプションを手で修正したらビルドできました, issueに報告しました
Gentooの新しいプロファイル17.0が先日リリースされました. New 17.0 profiles in the Gentoo repository – Gentoo Linux これに遅ればせながら気がついて, 適用してみました. 新しいプロファイルではPIEがデフォルトで有効になっているようですね. eixとequery uの出力に違いがある. とりあえず寝ている間に全更新をかけたのですが, 奇妙なことが発生しました. eixでgccを見ると, 以下のようになります. 2017-12-15T13:
アルゴリズムとデータ構造2(グラフ)
テスト用ノートが手書きのみということだったので, 学習障害で手書きがひどく苦痛であることを伝えたら, 私1人だけ印刷でも良いことになりました. 良かった. グラフと隣接リストと隣接行列を描く例で, 何も思いつかなかったのでポケモンのタマゴグループの繋がりを書きました. 例題なのに7個もノードが作られてしまったので, リストはともかく行列は書くのが面倒でした. 失敗. タマゴグループ 一生私はダイクストラ法を忘れては思い出すのを繰り返している気がします. 今年も去年もやったはずなのに方法を忘却しています…
UNIX(TCP/IP)
TCP/IP - UnixClassWiki TCP/IPの話から入るの良いですね, 何故か関係ない通信プロトコルであるOSIの話をする人が多すぎる. KA9Qなんて初めて聞いたプロトコルですね. と思ったら違った, TCP/IPの初期の実装がKA9Qなんですね. TCP/IPがUNIX上なのにファイルでアクセスできない問題, QUICとかを利用することを考えるともうずっとファイルでアクセスする方法にはシフトしなさそうですね. HTTPSみたいな暗号化してる通信をファイルでアクセスして何か嬉しいか? という
Qoo10というサイトでGTX-1080 Tiを注文したら, 株式会社YAYAYOからCanon PowerShot G9X Mark Ⅱが届きました, 現在返品申請中
Ryzen Threadripper 1950X, GTX 1080 TiなどのPCパーツを購入して30万円ほど貯金を吹き飛ばしました - ncaq に書いている通り, GTX 1080 Tiを購入しました. そうしたら違う商品が届きました. Qoo10.jp - お得で楽しいショッピングというサイトがあり, 価格.com - MSI GTX 1080 Ti ARMOR 11G OC [PCIExp 11GB] 価格比較で最安値だったためそこで注文をしました. そしたらCanon PowerShot G9X
計算理論(P vs NP問題, NP完全性)
P vs NP問題 これまでにPはその言語に属しているかどうかを多項式時間で判定できる言語のクラス, NPはその言語に属してことを多項式時間で検証できる言語のクラスだと学んできた. P ≠ NPだと多くの人が県警から信じているが, 実際にPに属していないNPの言語は見つかっていない. 多項式時間で判定できないことを証明するのは難しい. もしかしたら良いアルゴリズムが存在するかもしれない. NP完全性 NPに属する問題の中で最も難しい問題を見つけようというアプローチ. この最も難しい問題をNP完全問題と
情報リスク管理(働き方改革と事業継続)
「Windowsではメモリの内容をHDDにページングしているから電源を切っても消去されない」ってマジですか? スリープやハイバネーションではなくて? それともスワップファイルに重要情報が入ってしまうという話でしょうか. ググっても出てこなかったんですが, 確かに停電した時再起動したら, アプリケーションの状態が復元されたことがあるので, そういう機能があるのかもしれません. HDDを物理的に壊すセキュリティ施策を聞いて, 家宅捜査の直前にドリルでHDDを破壊したドリル姫こと小渕優子衆議院議員のことを思い出し
科学論・科学史102(黒体輻射と量子)
黒体とは光を反射しない物体のこと. 反射しないので普通は黒色になる. しかし太陽も黒体. プランクはレイリー・ジーンズの法則とボルツマンの法則に矛盾が存在することを発見して, 法則をハックしてプランクの法則を導出した. プランクの法則は量子を仮定しているが, プランク自身は量子に懐疑的だった. これは数学的なテクニックだと考えていた. アインシュタインは光は量子=光子の集まりだと考えた. 光子を金属に当てて電子をビリヤードのように飛び出させる光電効果を光量子仮説で説明した. リンゴの色が本当に赤色かどうかと
サービス情報システム(DRM)
「スカパーやWOWOWなどの有料CS放送はどうやって契約してない人に見せないようにしてる?」という質問をして, とある学生が「B-CASでユーザー識別をしてる」と答えたんですが「それは違う」とのこと. 正確にはB-CASのキーで復号をしてますが合ってると思うんですけどね… その後B-CASカードに暗号キーが含まれているとか言っていてやっぱり合ってるじゃないですか. なんでこの人生徒の答えがこれから話す内容と同じ場合も否定するわけ? 頭スティーブ・ジョブズかよ. 「NOTTVが倒産した」という話をしていたので
Ryzen Threadripper 1950X, GTX 1080 TiなどのPCパーツを購入して30万円ほど貯金を吹き飛ばしました
PCパーツを購入しました. 今使っているデスクトップPCは2013年に組んだもので, そろそろ新調したかったのです. 学生の今年のうちに新調しないと, Windowsのライセンスが更新できないかもしれないという懸念があったため, 年内に新調を済ませたかったという事情がありました. そこに丁度サイバーマンデーが来たので, PCパーツを買うことにしました. しかし, サイバーマンデーの影響は殆ど無かったどころか, 早く買ったほうが全体的に得でした. サイバーマンデー待たなければ良かった… メモリ 少し前に,
Windowsをアップデートしたら勝手にパーティションを作ってまたGRUBがrescueモードになってしまったのでSystemRescueCdでchrootしてfstabを書き換えてgrub-mkconfigをやり直したら治りました
Delphiコードをビルドするために, Windows環境が必要になるかもしれなくなりました. なので, ラップトップPCの放置していたWindowsを最低限使えるように, 最新版にアップデートしていたら, GRUBが壊れてgrub rescueを出すようになりました. あああああー!明日使うのに! pic.twitter.com/EasM8Mkm56 — エヌユル (@ncaq) 2017年12月8日 なんか前にも同じことが起きて無かったっけ? と思ってツイートを検索してみたら, 1年前にも同じよ
アルゴリズムとデータ構造2(動的計画法), Haskellで総当たりでナップザック問題を解く
アルゴリズムとデータ構造2 - 専修大学 今回寝坊して, 起きたら12時で, 行けませんでした! 講義資料は配布してあるのでそれを見ると, 授業内課題でナップザック問題が出たようですね. 問題内容 13kgの容量のナップザックに 品名 重さ 価格 A 4 450 B 5 570 C 2 225 D 1 110 E 6 670 の商品を詰めて, 価格を最大化します この問題では, 同じ商品を複数個詰めても良いことになっています. 私が電卓だけ使って解いたらB,B,C,Dに
Google 認証システムの端末移行に失敗しました, Authyを推奨します
Google 認証システムはGoogle以外のサイトでも利用することが出来ます. 私はStripeとZaifで有効にしていました. しかし引き継ぎに失敗しました. 私はこの認証システムはGoogleアカウントに紐付いていて, GoogleにログインしているAndroid端末なら全てで利用できると思っていました. しかしそれは間違いでした. 端末ごとに管理されていたようです. Googleアカウントの2段階認証は正常に移行できたので, これで問題ないと思っていました. しかしそれぞれのサービスで移行をする必要
HakyllサイトのHTML特殊文字が二重エスケープされてしまうのを正規表現によって解決
このサイトのdescriptionやteaserといったものは teaserFieldByResource :: Int -> String -> Snapshot -> Context String teaserFieldByResource l key snapshot = field key $ \item -> escapeHtml . take l . stripTags . itemBody <$> loadSnapshot (itemIdentifi
計算理論(時間の複雑さの議論)
前回のおさらい 全ての整数\(n >= n_0\)に対してある正の整数\(c\)と\(n_0\)が存在して\(f(n) <= cg(n)\). という言い回しなんか直感的じゃない気がします. 一階述語論理で書けば一見\(∀n(∃c ∈ N^+(∃n_0(n >= n_0 ∧ f(n) <= cg(n))))\)のように見えて, 実は\(∃c ∈ N^+(∃n_0(∀n(n >= n_0 → f(n) <= cg(n))))\)なんですね. 日本語の順序と論理式の順序が違
情報リスク管理(先輩SEの仕事, 運用管理リスク)
先輩SEの仕事 客先常駐SEの話が来てこれはヤバいと思いましたが, システムエンジニアというのが和製英語だと認識していました. 1日のスケジュールか. 09:55時出社で19:30帰宅はきつすぎる… まあ若手時代だし? 次のページの最近のスケジュール見たら08:30分出社で19:30帰宅になって悪化してるじゃないですかー! ヤダー! 定時で帰れる日がないとか嫌すぎる… 1日のスケジュールでプログラミングやってる時間がない… 絶対システムエンジニアにはならないぞと固く決意した. 私はプログラマであり, シス
科学論・科学史102(小テスト(原子論, X線))
原子論を受け入れる時に障害になったものは何か 私の回答 4大元素などの固定観念 目に見えるものでは無かったこと ブラウン運動の説明は他のものでも出来そうに思えること 模範回答 目に見えないものを証明するのが困難. 実証主義に縛られすぎていた. 原子が顕微鏡などで目に見えない時代では実証できないので受け付けられなかった. 証拠を求める姿勢がむしろ足かせになってしまっていた. X線の発見は即座に認められた. 原子論に比べてこれは何故か 私の回答 骨が見えてわかりやすい 手順を特許も取らずに
サービス情報システム(圧縮)
「インターネットでは相手のコンピュータが動いているかわからない場合が多い」と言っていたので, そうか? TCPだとハンドシェイクするのでは? と思ったけれど, 「経路が切れているかコンピュータが落ちているかわからない」という意図だったのでそれならまあ納得ですね. aがUTF-8では1バイトではないと言っていたのでそれはUTF-16では? と突っ込んでしまいました. aを1万文字送る場合の圧縮方法を聞かれたんですが, とっさに答えられませんでした. よく使われるハフマン符号はこの場合使えませんし… a1000
MELPAに自作のEmacs Lispパッケージauto-sudoedit, recentf-remove-sudo-tramp-prefix, symbolword-modeを登録するpull requestを送信しました
Emacs Advent Calendar 2017 - Qiitaの5日目の記事です. 私の.emacs.d/mineには自作の5つのパッケージがあり, 自前で読み込んでいます. 作ったのは大体2014~2015年で, ずっと放置していました. 自分で使う分には全くこれで問題ないのですが, せっかく作ったのだから公開して普通に使えるようにするべきだと思ったので, アドベントカレンダーを機にmelpaに登録してみようと思います. ncaq/eww-goto-alcは英辞郎on the webのログイン必須の
Stackage Serverのちょっとした便利な使い方, Hoogleをブラウザのカスタム検索エンジンに追加しましょう, よく使うパッケージをブックマークする時はPackageRのURLにしましょう
Haskell (その3) Advent Calendar 2017 - Qiitaの4日目の記事です. 前回ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています - ncaq はかなりの長記事になりましたが, 今回はちょっとした小ネタです. Stackage Serverのちょっとした便利な使い方を紹介します. Hoogleをブラウザのカスタム検索エンジンに追加しましょう Haskellは関数が独立しているので, OOPLなどのメソッドと違い, 関
J:COM回線が繋がらなくなったのでUCOMに戻してみたらレイテンシが超改善されました, しかし自作ルータは不安定なのでどうにかしたい
jcomの 回線遅く 不満持ち サポートに連絡したら改善 したけどやはり遅くて不満 - ncaq に書いているとおり, マンションの回線はUCOMからJ:COMに切り替わっていました. 今日何気なくリビングで親と世間話をしていたところ, Wi-Fi経由でインターネットに繋がらなくなりました. あれっと思って有線で接続確認してみましたが繋がりません. ルータかモデムに不具合が生じたのかと思い, 一度全ての電源を切断して数秒待ち, 再接続してみましたが, ルータの管理画面は開けますが, WAN側に繋がりません.
ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています
Haskell (その3) Advent Calendar 2017 - Qiitaの3日目の記事です. この前「Haskellで書かれたwebサービスって何がある?」と聞かれて, HackageとかStackageのようなHaskellに関連したサービスぐらいしかパッと出せませんでした. なので, webアプリケーションであるSYAKERAKEがHaskell製であることと, これを構成するライブラリなどを書いていこうと思います. SYAKERAKEがどういうサービスかはサイトを見ていってください. 半分
jQueryが必要とされなくなってきたのは, Reactなどの他のフレームワークが登場したせいではなく, 標準DOM APIが進歩したおかげです
JavaScript Advent Calendar 2017 - Qiitaの2日目の記事です. 何故この記事を書こうと思ったか JavaScriptの定番ライブラリであるjQueryは, 最近以前と比べて必要とされなくなってきました. その理由はよく, Reactなどの他のフレームワークが登場したせいだと勘違いされています. しかし, jQueryが必要とされなくなってきた理由は標準DOM APIの進歩によるものです. この記事ではそれを書いていきます. なお, この記事ではReact Nativeに
私のHaskellコーディングスタイルガイド, 改行出来るポイントを紹介
Haskell (その3) Advent Calendar 2017 - Qiitaの2日目の記事です. Haskellは各構文を文ではなく式として扱えるため, 適当に書いていくと, どんどん一行が長くなっていきます. その結果, ワンライナーのようなコードが作られることがよくあります. この目のチカチカを避けるためか、どうか、出来るだけ間隙を狭くするために、Haskellプログラマーは無意識にワンライナーになります。例えば上の例だと 2 のケースをだらだらーと一行に書きたがるのですね。その結果、一行50
アルゴリズムとデータ構造2(探索)
BM法の一致サフィックスの話細かいのでスルーされてしまった. まあ地味なところだから仕方がないですね. この学部に声優居たんですね… どうもサイトを見ても専修大学出身という情報が出ていないので真偽は不明ですが. 「"声優名" "専修大学"」で検索しても23件しか出てこないんですが, 隠してるんですかね…? 8クイーン問題ですね, Prologの出番か. と思ったんですが, Prologはアルゴリズムをあまり考えなくて済むようになってしまうのでこの講義の趣旨には適しませんね. 4クイーン問題を手で解く問題です
UNIX(プロセス間通信, ネットワーク通信)
プロセス間通信 - UnixClassWiki 現状私が自分用にホストしているTiny Tiny RSSはnginxとPHPを接続する時にfastcgi_pass unix:/run/php-fpm/php-fpm.sock;と書いて, UNIXソケットを使っています. しかしデフォルトでTCPが使われていて, 設定を変更するのも面倒ですし, そんなにパフォーマンスを気にしているわけでもないので, 次にサーバをリプレースする時はTCPを使うようにしておきましょう. Wnnの話懐かしいですね. Android
HaskellのStateの必要性が, プログラミング言語の処理系を書いた時にわかったので, Stateの良さを語ります
Haskell (その3) Advent Calendar 2017 - Qiitaの1日目の記事です. Haskell初心者の頃はStateが何故必要なのかわからなかった 私はHaskellを書き始めてから2年ぐらいはStateの存在意義がわかりませんでした. こんなものは無くて良いと考えていました. Haskellは純粋関数でシステムを構成して, 引数と返り値だけでものごとを構成しています. 私はそこに魅力を感じてHaskellを学びました. そこで, Stateのような変数をエミュレートするような仕
ストラテラとコンサータの作用と副作用についての個人の感想
ADHD Advent Calendar 2017 - Adventarの1日目の記事です. 私は高校1年(2011年)の頃から発達障害の診断を受けていて, ADHD向けの薬を飲んでいます. 精神障害者保健福祉手帳3級も取得しています. この記事では, 私が服用したADHD向けの薬について感想を書いていこうと思います. 私は強迫性障害向けの薬や睡眠薬も飲んでいますが, この記事では扱いません. この記事は医学的な知識を持たない人が書いた, ただの感想です, 鵜呑みにしないでください. ストラテラ 今年4月
情報リスク管理(情報セキュリティ基礎技術まとめ)
プレゼンにWikipediaからの引用載せるのは良いんでしょうか… いや, 私は全く気にしませんけど, 既に読んだというのは感じますね. nmapと言えばzmapって今はどうなんだろうなと思って使ってみましたがnmapと違って詳細なログを出力したりしないし, 完全に用途が異なるんでしょうね. ウォー・ゲーム (映画) - Wikipedia にも人工知能の名前がウォーパーで, ホストコンピュータの名前がジョシュアと書かれてますが, ウォーパーはシミュレータソフトウェアで, 人工知能はジョシュアじゃないんです
ASKfmからのメールなど, Dateヘッダフィールドを設定していない規格違反のメールがトップにソートされてしまう問題を, ThunderbirdとK-9 Mailで解決する方法
ASKfmなど, メールのヘッダフィールドに発信日付であるDate:を設定していないメールがあります. ASKfmから来るメールのヘッダー このメールはおそらく規格違反です. 必須のヘッダフィールドは発信日付(origination date)フィールドと発信元アドレス(originator address)フィールドだけである。それ以外のすべてのヘッダフィールドは文法的にはオプションである。さらなる情報はこの定義の後の表に含まれている。 RFC5322(Internet Message Format
スパムメールの学習コマンドsa-learnの実行をsystemd.timerで自動化しました
SpamAssassin のメール学習を行うコマンドラインプログラムであるsa-learnをこれまで手動で実行していました. alias sa-learn-maildir='sa-learn --ham ~/.maildir/cur --spam ~/.maildir/.Junk/cur --progress' というaliasを書いて, 時々実行していました. あまり迷惑メールは来てませんでしたし, 分類する前に学習してしまうのも嫌でした. しかし, 最近迷惑メールが結構来るので, 1
科学論・科学史102(X線の発見)
1895年にレントゲンによりX線の発見が行われ, 1901年にノーベル賞が贈られた. どうしてこんなに早く受賞が行われたかと言うと, 発見が素晴らしかったため. 再現性とインパクトが優れている. 書かれたとおりに装置を作れば骨が見える. 素晴らしい. ペランの原子の発見などは理論的なもので, ブラウン運動を見てもあまりインパクトがない. X線の発見は骨が見えるというインパクトが強い. 目に見える驚きがある. レントゲンは誰もが知っているが, あまり偉くならなかった. 対して電子の発見をしたJ.J.トムソンな
サービス情報システム(メディア)
「なぜ皆タブレットではなくコンピュータを使うのだろう」と言ってますが, タブレットPCも立派なコンピュータなのでは… 「2 in 1はタブレットですかPCですか」という質問をしてみたんですが, 「わからない」とのこと. 「タブレットとPCの区別の定義はわからない」と言ってますが, それで「PCで無ければいけない理由は?」と言われても答えようがない… 誰も答えないので「いわゆるタブレット用OSであるiOSやAndroidではアプリ制を採用しているためプログラムを組み合わせるのが難しい, 要するにプログラミング
WebMoneyのCamelCaseどうするの問題にぶちあたったので便宜的にWebmoneyという表記を使うことにしました
電子マネーWebMoney(ウェブマネー)という決済システムがあります. 今回語る内容はこれの決済システムなどには一切関係しません. 名前の話です. いわゆるiOS問題(いわゆるのか?)ですね. これの正式名称はWebMoneyです. Web Moneyでもwebmoneyでもありません. もちろんユーザに表示するテキストはWebMoneyと表記すれば良いのですが, コード上には混乱をもたらしました. HaskellやJavaScriptのコード上ではCamelCaseで名前を付けます. よって素直にHas
Amazon EC2上のUbuntuでGentooのeix --selectedに相当する, 初期パッケージに含まれていない手動でインストールしたパッケージ一覧を表示する方法
需要と模索 プロダクション環境のUbuntu Serverでアプリケーションの構成の変化で不要になったパッケージを消滅させたくなりました. EBS容量を20GB取っていないため, 一応容量を節約したいということと, 不要なパッケージは存在するとセキュリティ上の不安が高まる問題があるため, 削除したいですね. apt-getとapt-cacheは今のUbuntuでは標準ではなく, 全てaptコマンドに統一されました. 他のライブラリに依存されているパッケージはapt autoremoveで消滅しますが, 自
Intel Management Engineの脆弱性を修正しようと色々やりましたがDell XPS 13 9360向けの修正アップデートは2017年12月10日に来ることを知りました
Intel Management Engineなどに8個の脆弱性が発見 ~第6世代Core以降が影響、ThinkPadなどがすでに対策開始 - PC Watch などで報道されてる通り, Intel Management Engineの脆弱性が発見されましたね. 私のDell XPS 13 9360もこの脆弱性に当てはまるので, 修正しようとしましたが, 最終的にアップデートが2017年12月10日に来るので今何やっても無駄ということを知りました. Intel ME/Dell Client ステートメントに
アルゴリズムとデータ構造2(文字列探索(2))
前回のおさらい KMP法のnext配列生成の方法を全く記憶できていません. 難しいというのも理由の1つですが, BM法の方が高速なのにKMP法のアルゴリズムをちゃんと覚える気にならないということもあります. BF法とKMP法とBM法 BF法による比較回数の数え上げがあまりにも面倒臭くてついRustでコードを書いてしまったのですが, fn bf(source: &[char], word: &[char]) -> Option<usize> { let mut
UNIX(ユーザ権限とアクセス制御)
ユーザ権限とアクセス制御 - UnixClassWiki アプリケーションプログラマは権限何もわからない. 雰囲気でユーザ権限をやっている. 「MacにNetInfoって今存在してるっけ?」という話があったので調べたらもう死んでました. OS X ハッキング! (251) Leopard解体新書(2) ~さようならNetInfo~ | マイナビニュース Apple Open Directory - Wikipediaというのが使われるようになったらしいですね. 実はACLの仕組みよくわかっていなかった, グ
計算理論(時間計算量)
前回の復習 \(\{w2w | w ∈ \{0, 1\}^*\}\)ってどういう意味かと思ってたけど, \(w\)をスター演算の結果の一例として, \(2\)の両隣に同じ記号列があるということだったんですね. big-O記法 時間計算量って高級言語だと, どの式や文がステップを消費してどの行為がステップを消費しないのか今ひとつわかりませんでしたが, チューリングマシンだと1ステップがハッキリしていて良いですね. アルゴリズムの計算量は通常複雑な式になる. 漸近的解析と呼ばれる方法を用いて簡略化する.
情報リスク管理(映画に学ぶ情報セキュリティ基礎技術)
20 CENTURY FOX「デデーン」 ウォー・ゲーム(WarGames)という映画を見て, 映画の中で使われていたクラッキング技術を記述することになりました. 公開日時は1983年. 1984年の1年前ですね. 適性検査とかAIによる制御とかSCP財団みたいですね. 核兵器の発射をAIに任せるとか正気かな? しかも30日で作り変えるとは… 「コンピュータをそこまで信用できない」って言ってる人が居たけど正論すぎる… おっパスワードを付箋に書いてて読み取っていますね. これはソーシャルエンジニアリングで良い
サービス情報システム(クラウド)
専修大学Web講義要項 サービス情報システム ネットワーク情報学部 兼任講師 北川 和裕 Macの源流 「Macの源流は1990年代」という話を聞いて, 「Macの源流は1973年のAltoじゃないですか?」って言ったら全否定されました. ええ… ウィンドウシステムとかマウスとかの源流なのに… 「OSが違う」とか全否定されました. NeXTにしたって1988年だし1990年代ではないのでは? メモリ上で演算が出来るか 「メモリ上では数値計算や条件分岐が出来るがハードディスクでは出来ない」ということ
今度こそ画像のアスペクト比を4:3に指定してCSSで内接リサイズしました
画像のアスペクト比を4:3に指定してCSSで内接リサイズしました - ncaq で行っていた内接リサイズは, 画像が縦長の状態を全く考慮していませんでした. 縦長のはそのままになってしまいました… そこでもう諦めてwidthはpx指定してheightはheight: calc(200px * (3 / 4));したのですが, この場合モバイル環境で縦いっぱいに表示されないんですね. CSSでcalcを使って処理できないかなあと思いましたが無理っぽいですね. CSS Variablesを使えば処理できるかなあ
アルゴリズムとデータ構造2(文字列探索(1)), またクイックソートの実装をしました
クイックソート 文字のデータ列のクイックソート. き,い,お,あ,え,う,か か,い,お,あ,え,う,き (か,い,お,あ,え,う),き (う,い,お,あ,え,か),き ((う,い,お,あ,え),か),き ((あ,い,お,う,え),か),き (((あ,い),(お,う,え)),か),き (((あ,い),(う,お,え)),か),き (((あ,い),(う,え,お)),か),き あ,い,う,え,お,か,き クイックソートをプログラミングで実装することは多分出来たはずなんですが, どうしても動きが思い出せない.
UNIX(ファイルシステム)
ファイルシステム - UnixClassWiki むかしのUNIXではディレクトリは特殊なファイルで、catをすると本当に中身を表示できました。 マジですか, 昔のUNIXを動かしてみたらわかるかな… 今のUbuntuってインストール時にワンタップでLVMを使うことを選択できるんですね… Ubuntu 16.04: LVMでファイルシステムを拡張・縮小する - Narrow Escape Linuxの好きな所にボリュームをマウントする機能, 便利は便利なんですけどあまり活用することが無いような気もします
障害年金の給付が行われることになりました日本生きろ
今日の夜, 急に父親に「話があるからリビングに来なさい」と言われて「また1人でお菓子食べすぎたかな…」と思いながら行ったらこれを渡されました. 年金証書 国民年金法に基づく障害年金の給付が行われることになりました! バンザーイ! 就活の影響で今年の4月頃に倒れてしまい, 私はまともに働けないのではないかと思って, 障害年金の申請をお願いしていました. 広汎性発達障害で障害基礎年金2級を取得、年間約80万円を受給できたケース | 千葉障害年金相談センターを見て, 大学に通っていても障害年金は受給できるんだ
Amazon Music Unlimitedの30日間無料体験をオススメするのがオススメです
Amazon Music Unlimitedが始まりましたね. Amazonのサービスによくあることですが, 30日間無料体験をすることが出来ます. 私自身はまだSpotifyの無料体験期間が残っているので, Spotifyの無料体験期間を使い切った12月頃に試してみようと思っています. なので, Amazon Music Unlimitedの使い勝手については殆ど述べることが出来ません. 精々, プライム会員だとお得だとか, ファミリープランを使えば複数人登録する時にお得だとか, Amazonの既存の
動的モデルの単位を自主的に諦めることにしました
散々このサイトで「わからない」「難しい」と書いていた動的モデルですが, 中間試験が全然出来なかったことを受けて単位を諦めることにしました. 動的モデル(中間試験), 試験爆死しました - ncaq 本当は今日は一応行って中間試験の点数を確かめてから諦めようと思っていたのですが, 今日起きたのが11時で講義に間に合わないことが発覚したので早めに諦めることにしました. 履修中止期間は過ぎてしまったので, 単に欠席を続けるということになります. 履修中止期間, 考えた時には既に過ぎてしまっていると思いこんでいたの
計算理論(チューリング機械)
ついに有限オートマトンからチューリングマシンに入りました. アラン・チューリングはよく計算機のない時代にチューリングマシンなんて思いつきましたね. 天才か?(天才です) 計算機で解ける問題はチューリングマシンで解ける. チューリングマシンと有限オートマトンの違い チューリングマシンはテープに対し書き込みと読み出しのどちらも可能 ヘッドは左右どちらにも動くことが出来る テープの長さは無限である チューリングマシンは, 停止状態に入ると直ちに停止する 真面目に有限オートマトンとチューリングマシンを対比させて
情報リスク管理(Webアプリケーションへの脅威)
WebがwebではなくWebなのが気になる, webはもはや固有名詞ではないので小文字にするのが今の私のポリシーなので. 「Internet」と「Web」が終了 – Dan高橋のIT散歩 TwitterのXSS懐かしいですね. XSS対策としてはCSPがかなり有効なんですが, 広告を配信してるとなかなかCSPを使えないのが困りものですね… そもそもフレームワークがCSPを考慮してくれないことも多い. webアプリケーションの脆弱性突いたら不正アクセス禁止法に接触する恐れあるの本当にアレですよね. webアプ
科学論・科学史102(原子の実在)
第3章である「原子の実在と放射線の発見」に入ってきました. これまで触れてきたミクロの視点の根源は原子にある. 科学が発展していない時代, 多くの人は地動説ではなく天動説を信じていた. それは動いているように見えるのは太陽だから. 科学的観測結果をもって, 天動説から地動説に移り変わっていった. 原子の実在はコペルニクス的転回ほど衝撃的なことだった. 原子の概念は古代ギリシャから考えられていた. デモクリトスが原子論を開始し始めた. ルネサンスの古代ギリシャ復興的な考えは地動説には触れたが, 原子論にはあま
サービス情報システム(テナント)
前半30分遅刻したので聞いてませんでした. 【シングルテナント】 IT の分野でシングルテナントというと、クラウドコンピューティングなどのサービスで、ひとつのシステムやサービスを 1社で利用している状態のこと。一方、同じシステムやサービスを複数の企業が共有している状態をマルチテナントという。 用語解説辞典|【公式】NTTPC CPUが高速化してきて, CPUの使用率がそんなに多くない, 基本的にアイドルしてる, だからマルチテナントの世の中になってきた. という話を聞いて, 昔はタイムシェアリングシステ
画像のアスペクト比を4:3に指定してCSSで内接リサイズしました
内接リサイズと外接リサイズが逆に伝えられてきました 画像を内接リサイズするという話があって, それには賛成したんですけど. 実際コードを見てみるとobject-fit: cover;していたので外接リサイズにしているように見える問題がありました. 余白を無くしたいという話だったので外接リサイズしたいのかもしれませんが, 外接リサイズには反対です. Twitterの投稿画像のサムネイルなどは外接リサイズされていますが(公式アプリの場合), ああいうのはクリックしてすぐにポップアップで本物のフルサイズの画像が
xmonadとPulseAudioを使ってキーボードで音量ミュートをトグルする方法
私はウィンドウマネージャにはxmonad, オーディオ管理にはPulseAudioを使っています. ラップトップPCを使う時, 時たまスピーカーで音楽を聞きたいことがありますが, 普段は通知音などはミュートにしておかなければなりません. そういう時, 今まで私は, ミュートをトグルするために一々pavucontrolを起動して切り替えていました. xmonadからPulseAudioを操作してミュートをトグルするスマートな方法がわからなかったためです. xmonadでミュートキーを受け取る方法はわかる. P
アルゴリズムとデータ構造2(ソート(2))
ヒープの表現ってノード要素とポインタで表すのと, 配列で表現するのとどっちが良いんでしょうね. まあ, どっちが絶対的に良いとかはなく, 挿入や削除が多ければポインタが良くて, あまり変わらず閲覧するだけなら配列が良いのでしょうが. 実際どれぐらい挿入することがあれば配列ではなくポインタが良くなるのでしょう. 何も考えずに配列の方が優位ってことが多すぎるんですよね. 実装の楽さはGCが無ければ配列のほうが楽で, GCがあればポインタの方が楽ですね. 永続性や普遍性を考えるとポインタのほうが圧倒的に楽. 挿入
GNU/Linux環境の作成, Gentooの魅力とインストール方法
この記事はUNIXという講義で出た「GNU/Linux環境の作成」という課題のレポートを流用しています. 既にレポートは提出しました. せっかく書いた文章が勿体ないため多少改変して, サイトでも公開します. ディストリビューションの選択とGentooの解説 Gentoo Linuxを選択しています. 昔はUbuntuやLinux Mintを使っていましたが, 高校3年の頃にGentooに落ち着きました. Gentooはソフトウェアをインストールする時に, 原則自分のマシンでソースコードをコンパイルする,
UNIX(デバイススペシャルファイル)
テープデバイスが最近はほぼ使われていないという話. ちょっと前まではバックアップに使われていたことが多いですが, 最近はパブリッククラウドに載せてしまってそのクラウドのバックボーンはHDDだったりしますし本当にそうですよね. テープの寿命性は高いですが, 自前で分散管理するのは大変なので分散して置いたほうが良さそうに思えてしまいます. IBM AIX使ったことないんですよね, AIXプラットフォーム使うにしてもLinux使った方が楽そうに思えてしまいますが, 実際使ってみたら違うものなんでしょうか. ちょっ
dic-nico-intersection-pixivの直リンクを見て意味わからないと言われてしまったのでファイルにコメントを追加しました
今までで最も意味わからないサイトhttps://t.co/qiQSFKqozQ — KOKOTI (@titose_2004) 2017年11月8日 そうですね. 辞書本体のテキストファイルを見るだけだったら意味がわからないと言うのは当然だと思います. というわけで, 生成する辞書にコメントを追加しておこうと思います. 今まで雰囲気で辞書を生成していましたが, まず辞書のコメントの文法はどうなっているんでしょう. それがまずわからない. 参考にするためにnicoimeのmsimeを見てみたら!以下を
動的モデル(中間試験), 試験爆死しました
動的モデルの中間試験がありました. 試験内容 予想通り爆死しました. 他の人はみんな時間内に提出して, チャイムが鳴るまで解いていたのは私だけでした. ε-δ論法 ε-δ論法は教えられた当初から意味がわからず, しかも出るかもしれないと思ってなかったので何も復習しなかったので, 全く意味がわからなくて何も書けませんでした. 導関数の定義 これは自分では出来たと思ったのですが, これでちゃんと証明と認めてもらえるかはわかりません. 関数の接線 積の微分\[\{f(x)g(x)\}' =
Nexus 6PからHuawei P10 liteに乗り換えました, オススメのスマートフォンです
taosero07(@reotasoda)さんからプレゼント, 新しい自作PCを組もうと思います, Nexus 6Pが早期シャットダウンする問題が未解決, HUAWEI P10 liteを購入しました - ncaq に書いたように, 私の持っているNexus 6Pには早期シャットダウン問題が発生してしまいました. 症状はNexus 6P 早期シャットダウン問題(と対処法) - ブログの方と同じような感じです. 私の場合バッテリーが25%になるとシャットダウンしてしまっていました. バッテリー問題さえなければ
計算理論(正規表現と有限オートマトン)
前回の復習 列\(x\)の長さを\(|x|\)と書く. 普通に受け取ってしまったけど, そう言えばなんで絶対値記号を使うんでしょうね, absとlengthに同じ記号を使うのはおかしいのでは? スター演算\(a^*\)ってプログラミング言語で言う正規表現の何に値するんだ? と思ったけど, よく考えたらそのまま*ですね. 言語\(L\)が正規表現で表現されるなら, \(L\)を識別するε入力付非決定性有限オートマトンが存在する. どのような正規表現であっても, 元々の記号から 連接 和集合 スター演算
情報リスク管理(ネットワークへの脅威)
ロールベースのアクセス権限はUNIXのグループとどう違うか, UNIXグループではrootユーザーに全てを割り当てるが, ロールベースのアクセス制御はもっと細かく実行権限を割り当てる. 例えば, passwdを実行するユーザにはそれだけできるグループを与える. ということは, UNIXグループでもファイルの実行権限を細かく割り当てればロールベースのアクセス制御になるんでしょうか? 今でもdisk, audio, video, plugdevと言った細かいグループがあります. 聞いてみたら既存のUNIXのグル
mozcをアップデートしたらmarkdown-mode限定で変換前文字列が赤くなってしまいます
mozcをアップデートしたらmozc.elもアップデートされたようなのですが, これが変換前文字列の背景を真っ赤にしてきて非常にうるさく感じるようになりました. ひじょうにうるさい 変換前に色を変えるのはちょっと鬱陶しいけれど問題ないのですが, その替える先がこんな真っ赤な色では流石に目ざわりです. まあ, 変更すれば問題ないだろうと思って, brownを指定しているコードを探して, (set-face-background 'mozc-preedit-selected-face "#
サイトのURL設計を変更しました
何故変更が必要なのか? これまでこのサイトのエントリーはwww.ncaq.net/2017/11/07/のように, 日付だけを含んでいました. 主にクールなURIは変わらない -- Style Guide for Online Hypertextを参考にした結果です. これには問題があり, 1日に複数のエントリーを投稿しようとしたら1つのページに複数の投稿が混ざってしまいます. このサイトを作った当初は, 興味深い特筆すべきことだけを記述していたので, 1日に複数の投稿をすることは想定していませんでした.
科学論・科学史102(エントロピーと時間の小テスト)
熱力学の第二法則を表すような例を挙げよ 私はインクを水に混ぜた例を挙げました. インクが混ざることがあっても, インクだけが集合することはない. エントロピーが高いという状態をインクが混ざっているような状態と思っていて, それは正しかったのですが, これを秩序だっているという状態だと思っていました. エントロピーが高いのは乱雑な状態です. 逆に覚えていました. 新幹線モデルを使ってエントロピーの性質から安全性と経済性が両立しないことを説明せよ 部品の摩耗や破損をエントロピーの増大と称して, これを低く
サービス情報システム(ECサイト)
ECサイトで買われるものとして辞書を挙げてたけどみんな辞書を持ってなかったから話が成り立ってませんでした. 私も紙の辞書は持っていません. NetBSDを載せている紙の辞書を見たことがありません. 私の用途では紙の辞書は英辞郎に比べて単語数が貧弱すぎて全く役に立ちません. いわゆる電子辞書も紙の辞書をソースにしているから同様です. IDの正式名称は 「identification data」 らしいのでそう言ったのですが, 「Identifierです, その辞書が間違っている」 と言われてしまいました. 「
ファイルは月別に分けて~/Documentsに置いてgitで管理しています
私のファイルの管理方法ですが, 4年ほど前から, リポジトリのようにはっきりしないものは, 基本的に月別に~/Documentsに入れてgitで管理しています. 大学の配布資料やレポートなどもここに入れています. メモや残す意義がなさそうな書き捨てのプログラムでも, 変更履歴を後から見返すことが出来るから便利です. 2017-11-06T16:34:23 ncaq@akaza/pts/0(0) ~/Documents % ll 合計 92K drwxr-xr-x 10 ncaq ncaq 4.0K 11月
Haskellのregex-compatはUnicode文字に対応していないのでregex-compat-tdfaを使いましょう
タイトルにwbr要素を使ってカンマの後に改行を行ってもらうようにしましたで titleWbr = field "title_wbr" (\item -> (\mTitle -> R.subRegex (R.mkRegex ",") (fromJust mTitle) ",<wbr>") <$> getMetadataField (itemIdentifier item) "tit
GNU/Linuxの端末エミュレータはLilyTermがオススメです
GNU/Linuxの端末エミュレータはLilyTermがオススメです. 端末エミュレータではGnome TerminalやKonsoleなどが有名です. 私がオススメするのはLilyTermです. LilyTermはGNOME 端末と同じくlibvteを使っているので, ほとんど動作はGnome 端末と同じです. シンプルな端末エミュレータです. UIが素直でシンプルです. Gnome 端末のようにおしゃれではなく, 素朴です. 設定がわかりやすいです. Gnome 端末はプロファイルを強調して設定画面を出
タイトルにwbr要素を使ってカンマの後に改行を行ってもらうようにしました, Googleアナリティクスの実装をanalytics.jsからgtag.jsに移行しました
タイトルにwbr要素を使ってカンマの後に改行を行ってもらうようにしました 日記の一覧表示のタイトルの改行がよく以下のようになっていて気持ちが悪かった. 改善前 改行制御する文字は無いかなあとか, カンマの後にスペースを入れるとか, CJK以外の文字でも改行するようにするとか, カンマの後に全て改行を入れてしまうとか, ゼロ幅スペースを入れるとか, 考えました. 最終的に, wbr 要素という, ここで改行して良い要素というものを見つけて, これを使うことにしました. ゼロ幅スペースと違ってテキストのコ
manページはEmacsでhelm-man-womanを使って見るのがオススメです
みなさんはUnix向けのmanページをどうやって見ていますか? 私はEmacsとhelmを使って, helm-man-womanを使ってmanページを見ています. オススメです. Emacsでmanのmanページを表示している様子 Emacsでmanページを見るための方法 Emacsにhelmをインストールして, 以下のような設定をします. (global-set-key (kbd "<help> w") 'helm-man-woman) こうすることで,
計算理論(正規言語と有限オートマトン)
形式言語における言葉の定義 アルファベットΣ上の文章: Σの記号を重複を許して並べたもの. 記号列や列とも呼ぶ. 列の長さ: その列に含まれる記号の個数, 列xの長さを|x|と書く. また長さ0の列を空列と呼び, εで表す. 列xとyの連接とは, 列xの後ろにyをつなげた列のことでxyと書く. またxxを\(x^2\)と書くこともある. 列xの逆あるいは逆語とは, 列xを逆から並べた列のことで, \(x^R\)と書く. 例えば\(x = 110\)のとき, \(x^R = 011\)である. 言語
サービス情報システム(ECサイトの要素), 科学論・科学史102(エントロピーと時間の流れ), Spotifyを使い始めました, 情報リスク管理(認証とアクセス制御)
サービス情報システム(ECサイトの要素) 「スマートフォンは日本向けはハイエンド, インドとかのは5000円ぐらいで売ってるローエンド」 という発言がありましたが, Pixelシリーズは日本では売ってなくて, インドでは売ってるんですよね… もはやハイエンドは日本ではなくインド向けに作られていると言っても過言… ではありますか, 一例ですし. 「クラウドサービスと言えばIBMとGoogleの2社」という発言が出てきたので, 「普通クラウドサービスと言えばAmazonが真っ先に出てくるのでは? AWS, G
マークアップとスタイルシートをシンプルにしたくてデザインを多少破壊したら困られました
前回bootstrapのcard使えば改行がされてバンザイと思ってそれ以降の調査はしていませんでしたが, 真面目に調べてみたらword-wrap: break-wordの効果で改行がされるようになったようですね. .cardをそのまま使ったデザインは気に入らないらしく, これ.card使わなくても良いじゃんって感じにcssが上書きされたものが出てきました. これなら自前で全て書いたほうがメンテナンス性まだ良いなと思ったので, そのように書き換えようと思います. sass-convertで修正できるレベルのス
RSSリーダーにはTiny Tiny RSSを使うのがオススメです
Live Dwango Readerの終了がニュースになってから結構経って今更感がありますが. RSSリーダーにはTiny Tiny RSSを使うのがオススメです. 私は最初のRSSリーダーにはOpera(Presto時代)を使い, そこからGoogle Readerに移行しましたが終了して, Feedlyなどを使ってみましたが満足できませんでした. しかし, 4年ほど前にTiny Tiny RSSを使いだして満足しています. Tiny Tiny RSSとは? オープンソースのweb上で動作するRSSリー
taosero07(@reotasoda)さんからプレゼント, 新しい自作PCを組もうと思います, Nexus 6Pが早期シャットダウンする問題が未解決, HUAWEI P10 liteを購入しました
taosero07(@reotasoda)さんからプレゼントしてもらいました taosero07(@reotasoda)さんから色々プレゼントしてもらいました 梅酒, 本, 本, メモリ ガム ありがとうございます. 私にものを送りたい人は, http://amzn.to/2gPm1nL を参照してください. フッターにもAmazonアカウントへのリンクが貼られています. 何かネタで送りつけたいということがあればTwitterなどで気軽に言ってください, 追加します. いい加減新しい自作PCを
UNIX(記憶管理), 間違ったリポジトリ名を変更しました, WebMoneyのAPIがCGI必須になっててつらい, アルゴリズムとデータ構造2(ソート(1))
UNIX(記憶管理) 記憶管理 - UnixClassWiki MMUの話. 今はCPUに内蔵されていることが多い. 家庭向けのMMUのページサイズは8KBぐらいだけど, HPU向けには増やしてあったりする. 本来の意味でのスワッピングとは, プロセスの使っているメモリをまるごと外部記憶領域に移動することを指す. Linuxはページングのことをスワッピングと言っている. 「スワップの意味が変化したと考えられませんか?」 「スワップは技術用語なので, 変化してはいけない, 俗語としてスワップを使うことは別に
動的モデル(定積分)
定積分 関数\(f(x)\)が\([a, b]\)間の任意の\(x\)について, \(|f(x)| < M\)を満たす定数\(M\)が存在するとき, \(f(x)\)は\([a, b]\)で有界である. \([a, b]\)で有界な関数\(f(x)\)について\([a, b]\)を\(n\)個の小区間に分割する. この分割を\[Δ: a = x_0 < x_1 < … < x_n = b\]とする. \(Δ\)に対して, 各小区間の幅を\[Δx_k = x_k - x_{k - 1
Travis CIのキャッシュ異常の解決, chromeでoverflow-wrapが効かないのを解決, 計算理論のバケツの状態遷移図を公開, 計算理論(オートマトンの計算能力の等しさ)
Travis CIのキャッシュ異常の解決 科学論・科学史102(エントロピー), 微分積分の演習問題が出来る気がしない, 情報リスク管理(OSにおけるセキュリティ), travisのキャッシュ更新が失敗していたのでtimeoutを変更しました - ncaq に書いたTravis CIのキャッシュ更新の失敗は, travis.ymlに cache: timeout: 1000 yarn: true directories: - $HOME/.local - $HOME/.stac
科学論・科学史102(エントロピー), 微分積分の演習問題が出来る気がしない, 情報リスク管理(OSにおけるセキュリティ), travisのキャッシュ更新が失敗していたのでtimeoutを変更しました
科学論・科学史102(エントロピー) エントロピーとは何か? 分子の移動速度の位置分布が異なるものがあるが, 統計上同じ温度になる. 同じ温度になると区別がつかない. そこでエントロピーを使う. エントロピーは秩序の度合. 「計算はどうやってやるんですか?」 「高校の数学の組み合わせのように, 袋の中のボールを取り出すように計算する, 組み合わせが多いとエントロピーが大きい, 同じ動きをしている球は同じ色みたいな感じ, 細かくやると時間がなくなる」 綺麗に揃ったヘアピンは買った時は揃っているけれど, 次第
広告の追加, デッドロックの原因はcall stackを取っても不明, 自動テストに1時間かかるので一部削除, object-fitにはwidth設定が必要
広告の追加 自分のサイトで一番下の広告が唯一有効だったことからシステムにも一番下に広告を配置してみました. yesodアプリケーションのデッドロック問題の原因はcall stackを取っても相変わらず不明 デッドロック問題は今のrunDB内部でのrunDBを減らしたのを取り込むことにしました. しかしやはり気になるため, callStackを見るためにステージング環境でstack build --profileしてみましょう. プロファイルを有効にしてビルドするとaesonのビルドが全く終わらないこと
2017衆院選に投票してきました, @tk1024_botさんと会ってきました
2017衆院選に投票してきました 埼玉1区で投票してきました小選挙区は極めて遺憾ですが希望の党のたけまさ公一に投票してきました,どうせ死票だし比例区は立憲民主党,民の字を書き間違えて二重線で訂正したので無効票になってないか不安裁判官審査は何も書かないと信任になることへの抗議で全部✗ — エヌユル (@ncaq) 2017年10月22日 小選挙区で希望の党に投票した言い訳をします. 私は「子供の発達障害の原因は幼児期に親の愛情が足りないからだ」 などと主張する親学推進議員連盟とは不倶戴天の敵にあって
KeePassクライアントをKeePassXからKeePassXCに移行しました, みんなもパスワード管理にはKeePassを使いましょう
KeePassの紹介 みなさんパスワード管理には何を使っていますか? 1Passwordとか, LastPassとか色々ありますよね. 私はKeePassというものを使っています. KeePassはフリーソフトウェア(GPL-2)で, 完全に無料かつローカルで動くのが特徴です. 1PasswordやLastPassと違って, 「お金を払う」ことや「サービス提供元がクラックされることを心配する」必要はありません. 「ローカルで動くのなら複数端末で同期できないじゃん」と思うかもしれません. しかし, KeeP
UNIX(プロセス管理), アルゴリズムとデータ構造2(再帰), yesodアプリケーションのデッドロックの根本的原因がわからない
UNIX プロセス管理 - UnixClassWiki 物理的リソースとしてのCPU数 < 仮想的な計算リソースとしてのCPU数 と書かれてて, 普通の場合はまあその通りだろうと思ったのですが, 最近はハイパースレッドとかあるので, 物理的なCPU数という概念が曖昧になってきていますよね. なので, 捉え方によっては逆になることもあるのではないかとか思ってしまいました. 例えばNUMA構成のCPUをNUMA無効にしたら仮想CPU数をが半減したりするので逆転してしまう可能性があるのではないかとか.
動的モデル(置換積分法)
中間試験が持ち込みありの場合難しくなるという話があり, 暗記力が無いので持ち込みはあった方が出来るのかな… という思いと, 高度な数学の問題を解けるかわからないという思いがあり, 持ち込みありかなしかの投票に手を挙げられませんでした. 「中間試験の点数が悪かったらその先の授業についていくのは絶望的になる」という絶望的な宣言がなされました. 「中間試験にε-δ論法は出ますか?」 「出ないとは言えない, でも出すとしても初歩的なもの」 置換積分法 合成関数\(y = f(x), x = φ(t) (x = φ
計算理論(非決定性有限オートマトン, ε入力付非決定性有限オートマトン)
非決定性有限オートマトン 決定性オートマトンは遷移先が1つに決定されていたが, 非決定性オートマトンは入力に対して複数の遷移先がある. 非決定性有限オートマトンの遷移関数は集合を返すので空集合を返すことがある. 非決定性有限オートマトンは受理するために都合の良い遷移を選んで良い. 「どっちを選んでも受理されるような入力が来た時はどっちを選ぶんですか?」 「どっちを選ぶかは重要ではなくて, 受理されるのかが重要」 prologを思い出しました. 最終的に空集合を返すような遷移できないパターンも受理されたとは
サービス情報システム(ワークフロー), 科学論・科学史102(電流の小テスト), 情報リスク管理(webサーバーリスク)
サービス情報システム サービスと違ってExcelみたいなツールは単機能という話で「ゴジラは空を飛ばない」ということを言われたので, 「え, ゴジラって放射線発射して空飛んでませんでした?」 と言ってしまいました. やっぱりゴジラ対ヘドラで飛んでいたらしいですね. 「命令セットの数は300ぐらい」という発言があったので, amd64/x64の命令数は実際いくつなんだろうと思って調べようと思ったけど全然出てこない. coder64 edition | X86 Opcode and Instruction Re
GitHubで他人のプルリクエストに対しコンフリクト解消や追加の修正を行いつつマージするもう1つの方法
GitHub 単純なコマンドラインでmergeする方法が使えない時 本の虫: GitHubで他人のプルリクエストに対しコンフリクト解消や追加の修正を行いつつマージする方法を読んで, そう言えば私もバイトで最初にチーム(私と社長で2人)で作業を行うときに戸惑ったなあと思い出しました. なので, 今のバイト先の社長から教えてもらった, もう1つの方法を紹介します. 江添さんの述べた方法は, シンプルでわかりやすいですが, 我々のチームでは使えません. 何故ならば, 我々のリポジトリにはTravis CIに
GNU/Linuxにおけるゴミ箱は.Trash/$uid/と.Trash-$uid/のどちらが正しいのか調べてtrash-cliにissueを開いたらSpecを読み間違えていることを教えてもらいました
前半の文章は間違っているので, 正しい情報を得たい人は最後までスクロールするか, Re:GNU/Linuxにおけるゴミ箱ディレクトリは.Trash/$uid/と.Trash-$uid/のどちらが正しいのか - Qiita を参照してください. 通常, GNU/Linux環境, というかFreeDesktop環境での「ゴミ箱」に相当するディレクトリは~/.local/share/Trash/です. しかし, ルートのファイルシステムに属しないディレクトリ, 例えばUSBストレージなどの上でファイルをゴミ箱に移
第6回Haskell-jpもくもく会@朝日ネットに参加してきました, overloaded-recordsライブラリを読みました
(学生は懇親会無料!)第6回Haskell-jpもくもく会 @ 朝日ネット - connpass 開場は12:50なのだからその時に到着するようにすればよかったですね. 開催時間の13:00に合わせてしまいました. なので自己紹介の時間を逃したと思っていたのですが, 13:45分ほどに始まったので良かったです. 今回はGenericやTemplate Haskellを使ったことがないので, それでボイラープレートのコードを自動的に生成するという試みをしてみようと思っています. 具体的には重複したフィールドラ
UNIX, アルゴリズムとデータ構造2
UNIX カーネルの構造と機能 - UnixClassWiki プロセス管理 - UnixClassWiki デバイススペシャルファイル - UnixClassWiki ファイルシステム - UnixClassWiki 今使っているLinuxにはおおよそいくつのシステムコールが用意されているのが調べてみよう。 /usr/share/man/man2に492個のファイルがあったので, およそ500個でしょう. 次に、既に使われなくなりなくなったシステムコールと、互換性のために残してあるが使用するの
動的モデル 原始関数, 不定積分, 部分積分法
原始関数 与えられた関数\(f(x)\)について, \(f(x)\)を導関数とする関数\(F(x)\)を\(f(x)\)の原始関数とよぶ. すなわち, \[F'(x) = f(x)\] \(f(x)\)から原始関数\(F(x)\)を求めることを積分するという. また, \(f(x)\)は\(F(x)\)の被積分関数とよばれる. \(F(x)\)が\(f(x)\)の原始関数であるとき, 任意の定数\(C\)について, \(F(x) + C\)は\(f(x)\)の原始関数である. 不定積分 関数\
portageのバグ報告ガイドが読めないのでメンテナのTwitterにリプライを送ってしまいました, 計算理論, plantumlでオートマトンを描きました, ゲームセンターで初めて音楽ゲームを遊びました
portageのagの最新版がビルドできない問題は既に報告されていました agことsys-apps/the_silver_searcher-2.1.0がビルドできないのでバグ報告するべきかと思ったら既に報告があるみたいですね. 629488 – sys-apps/the_silver_searcher-2.1.0[-lzma] emerge failed error: unknown type name ‘lzma_stream’ 随分前に報告されてますが…, 確認済みらしいのでそのうち直るでしょう. 安
サービス情報システム, 科学論・科学史102, googleアドセンスの審査が通りました, zenbackが混在コンテンツを注入してしまう, disqusを削除しました, 情報リスク管理に無限にツッコミが入れられそう
サービス情報システム モンスターハンターに集中していたら電車を乗り逃して5分ぐらい遅刻してしまいました. 着いたらアイスブレイキングの話をしていました. 試験は「何でも持ち込み可」ということを聞いたので, ん? 人もOK? と思ったけど「人に聞くのはダメ」ということでした. コンピュータは持ち込んでも良いそうですね. 「パクったのは読めば簡単にわかる」という話をしていたので, 「それはパクったわかった奴だけわかったということになっているだけでは?」と聞いてみたら「だいたいだから」という返答でした. 「レポ
今関わっているシステムにGoogleアドセンスを導入しました
今関わっているシステムにGoogleアドセンスの配置をしています. このサイトではないです. と言っても審査とかpull requestとかしたのは別の人なので, 私はたいした作業を行っていないのですが. デフォルトで表示されているコードが<script>の読み込みありで, <head>で既に読み込んでいるのにこれ要るのか? という感じになっているのでとりあえずステージング環境で外して確かめてみようということにしました. 対象のブランチがpull requestのブランチでorigi
disqusを復活させました, zenbackを導入しました, 安達太良山に登ってきました
disqusを復活させました disqusは静的webサイトに付きもののコメント埋め込みシステムなのですが, 私のサイトには全くコメントがされませんでした. それだけなら放置するだけだったのですが, 一時的にバズった結果トップサイトに認定されて, ものすごく大きい広告が貼られるようになったので取り外していました. 当時の自分のバズり方が半分炎上しているようなものだったので, 炎上商法で広告収入を狙っていると思われるのが嫌だったというのがあります. ちなみにGoogleアドセンスは審査落ちましたし, Ama
Haskellを書くときはstylish-haskellとhlintを使って労せずして綺麗なコードを書きましょう
3年前ぐらいからHaskellを書くときには, stylish-haskellとhlintを使ってコードを書いています. これらを使うと, 私のようにツールに頼ってコードを書いているだけでも「コードが綺麗」と褒めてくれるようになります. しめしめ. 他にHaskellを書く時に良いツールがあれば是非教えてください. stylish-haskell jaspervdj/stylish-haskell: Haskell code prettifier stack install stylish-haskell
UNIX, Emacsのチュートリアルを翻訳したのがこの先生でした, IPAの脆弱性報告メールに返信しました, 動的モデルの演習課題をしました, アルゴリズムとデータ構造2, 暗算
UNIX システムとは何か. 「見せているスライドが見つからない」という質問をしたらパワーポイントバージョンはあってもPDFが無かった. アップロードしてもらいました. 先生が「Unity vs Gnome Shell」という動画を流し始めたので「Unity負けて死んだじゃん…」という気分になりました. 「AndroidがGNU/Linux」という話が出てきたので, 「Androidはlibcにglibcではなくbionicを使っているのでLinuxではありますがGNU/Linuxではないのでは?」と思っ
動的モデル 2階道関数・逆関数の導関数
2階導関数 関数\(y = f(x)\)の導関数\(y' = f'(x)\)について, \(f'(x)\)が微分可能であったとする. このとき, \(f(x)\)は2階微分可能微分可能である. また, \(f'(x)\)の導関数を\(f(x)\)の2階導関数と呼び, \(f''(x)\)で表す. すなわち, \(f''(x) = \lim_{Δx → 0} \frac{f'(x + Δx) - f'(x)}{Δx}\) 例:
他の方のRustのFizzBuzzを多少最適化しました, 計算理論
他の方のRustのFizzBuzzを多少最適化しましたが素直な解決策がありました 昨日FizzBuzz を無駄にベンチマークしてみた By Nim、golang、Rust、Crystal、その他 - 強まっていこうを読みました. 私はアセンブリ言語を除けばRustが最速の言語であると思っていたので, この結果は衝撃的でした. しかし, ベンチマークコードを見てみると, どうもこのベンチマークは\nを手動挿入している言語が速いような気がしました. C++のstd::endlがバッファをフラッシュするので遅い
サービス情報システム, portageのmozc-2.20.2673.102のバグは既に修正済みでした, 科学論・科学史102, 情報リスク管理
サービス情報システム シラバス 初回が休講だったので今回はガイダンスです. カバンを机の上に置いたり講義中に帽子を被るのは禁止という話がありました. 自分は元々カバンは床に置いてますし帽子は登山用のものしか持ってすらいないので声を上げませんでした. 飲食は良いらしい, 笑う. パワーポイントで資料を作ると学習効率が良くないのであえて黒板に手書きするという話がありました. 実際どうなんでしょうか. 出席取らないとか言ってるけど大丈夫なのだろうか… 皆に質問をしていくという話. 数学科だけど証明を板書を写して
bootstrap 4 alphaからbetaへの移行を行いました
気分が落ち込んでいてかなりやる気がない. 落ちる問題やデータベースの設計がまずい問題がある程度解決したので何か別のことをやろうと思ってissueを見ます. yesod develがwebpack --watch呼び出しでstack buildを再起動してしまう問題, 今やってみたら再現しませんでした. 謎です. bootstrap 4 betaへの移行 bootstrap 4がbetaになったのでそれにシステムを移行させようと思います. 私の個人サイトは既に雑に移行させましたが, 今書いているシステムはそ
UNIX課題 ファイルとしてのインタフェース
/proc/以下のようにシステムに作用させるインタフェースなのにファイルのように見せているインタフェースを用意している。一方でファイルにアクセスする形式ではなくWindowsプログラミングAPIのように関数へのインタフェースに統一するアプローチもある。自分なりに考えて前者の利点、後者の利点を説明せよ。 ファイルのように見せているインタフェースの利点 どの言語でも容易にアクセスが可能 ファイルを読み込めればアクセスが可能となるため, ファイルをopen, read, writeすることさえできれば,
動的モデル演習課題 導関数の定義と色々な導関数
他の皆さんは授業中に演習課題を楽々出してましたが, 私は当然後から多大な時間を使って提出します. \(y = x^3\)について, \(x = a\)における微分係数を定義にしたがって求めよ \(\begin{aligned} & \lim_{Δx →0} \frac{(a + Δx)^3 - a^3}{Δx}\\ &= \lim_{Δx → 0} \frac{a^3 + 3aΔx^2 + 3a^2Δx + Δx^3 - a^3}{Δx}\\ &= \lim_{Δx → 0} \f
UNIX, アルゴリズムとデータ構造2, 東京大学のスライドのタイトルが文字化けで膣になっていました
UNIX responの番号って毎週新しく発行されるのかなー?と思って「先生今週のresponの番号はなんですか?」と聞いてみたら「今作る」と返されました. 旧講義名「UNIXオペレーティングシステム」の方に間違えて登録した人が数人居たみたいで確認していました. responを開いたら 「本日の授業の感想」 が出てきたので 「講義の最後に提出するということでしょうか?」 と質問してみたら「暇な時に書いといて」 ということです. しかし感想は最後にしか書けないのでは… 課題の説明をしながら引き続きWikip
動的モデル, 数学の知識がない人が大学で数学の知識を手にするにはどうすれば良いんでしょう
動的モデルの講義のノート. 今期はノートを取ることにしているのですが, ノートに書いていることがどういう意味なのかさっぱりわからなくなってきました. 写しているだけで理解が全く出来ていない. 基礎知識が足りない? やはり数3を受けていないと無理? 実際の初回の講義にして何を言っているのかわからなくなってきたので, 単位を取るのは絶望的なことがわかってきました. しかし, せめて微分積分の知識は得たいのですが, 先生が何を言っているのかわからなくて厳しいです. 黒板に書いてない先生の話もノートに取ろうかと思い
計算理論, ナップザック問題, 鳩の巣原理と格子点, StripeからSMSを使わずに認証を手動で有効化すると返信が来ました
計算理論 オートマトン, 正規言語, P vs NP問題とかの話をする講義. 単位取得できないかもなあと思いつつ, ふんわりとしかそのへんの話を理解できていないので是非講義は受けておきたかった. 水曜日はこの講義しか無いスケジュールになってしまったけど, 無理矢理受講しました. 最悪単位は取れなくても良い, 知識が欲しい. 試験が持ち込みありで, 持ち込みテキストは手書きのみという話だったので, 例によってダメ元で「印刷じゃダメですか?」と聞いてみました. 学生に情報をまとめさせたいので, プリントのコピ
科学論・科学史102, データベース上のカラムの命名の間違いを意外とあっさり修正できました, haskellのレコード構文のスタイルを変更しました, 情報リスク管理, StripeのSMS認証未解決
科学論・科学史102 前期の科学論・科学史101の評価はBでした. 後期最初の講義だから, 前期から使っていた教科書を持ってくるのを忘れてしまいました. まあ完全に教科書に沿った授業をやっている講義ではないので良いんですが. どうせ初回はガイダンスでしょうし. 「小さすぎて見えないものを見る」 原子・分子・素粒子のミクロの世界. 講義で十分にわからない場合は教科書を読むなどして欲しい. テストなどの形式は前期に引き続き. シラバスに書いている通り, AとBがある. A方式は小テストでと期末試験で評価する.
stripe-haskellを最新のstackageに対応させたい, stripeのSMS2段階認証が出来ない, stack solverは深く探索しない, goofysのままのほうが良かったかも, SetはFunctorのinstanceにならなかった
stripe-haskellを最新のstackageに対応させたい stripe-haskell: Stripe API for Haskellというパッケージがあるのですが, これが新しいstackageのltsに登場しないので自分のソフトウェアのltsをアップデート出来なくて困っています. extra-depsに指定すれば良いのかなと思って色々やってみましたが, パッケージの依存関係がなんかダメでダメでした. OSSdmjio/stripe: Stripe APIなので, 利用者が修正出来るはずなので
東京ゲームショウ2017に障害者手帳で100円で行ってきました, インディーゲームコーナーのレポートを書きます
東京ゲームショウ2017に行ってきました. 私は「ゲームの情報とかwebで仕入れれば良いじゃん」とか思っていて, 当初あまり興味が無かったのですが, 障害者手帳を持っていれば100円で入場できることを教えてもらったので, 試しに行ってみることにしました. 通常前売り券の料金は1000円なのでこれは9割引きとなります, 東京ゲームショウは神. 行ってみたら結構面白かったです. ほとんどインディーゲームブースに居て, そこがそんなに混んでなかったのでそこでひたすらゲームをしていました. ゲーセンが100円で15
atoolを使えばtar, gzip, zip, 7zなどの複数のツールのコマンドラインオプションを覚える必要が無くなります
atoolというツールが便利です あなたは tar gzip bzip xz 7z zip rar などを取り扱うツールのコマンドラインオプションを覚えていますでしょうか. 私は覚えられません. なので普段圧縮アーカイブを取り扱うときはatoolを使っています. gentooならemerge atoolでインストールできます. このツールはそれぞれのアーカイブへの操作をラップして, 統一したコマンドラインを提供してくれます. なので, 一々個別のツールの使い方を覚える必要が無くなります. tarにaオ
UNIXの初回授業, 汚した図書館の本を弁償したのですが買い取れなくて残念, アルゴリズムとデータ構造2の初回授業
UNIXの初回授業 講義UNIXの初回授業を受けます. 授業番号は163-438-812 (33136). responで出席を取るそうでした. しかし, 前期に使っていた教員が居なかったので, responに登録していたんだけど現状アプリの設定を消していてしまっていたので, 再設定する必要があります. しかし, 教務webサービスにログイン出来るのは10時からなので 「現状出席ができないんですがどうしましょう?」 と聞いたら 「それは君の個人的問題でしょ? なんで私が君の個人的設定の面倒を見ないといけな
動的モデルの初回授業のε-δ論法がわからず早くも躓いています
動的モデルの初回授業 講義動的モデルの初回授業を受けます. 数学が致命的に出来ないのに何故履修登録してしまったんだ… この講義を履修する時はそのことに気がついてなかったから仕方がないんだけど. 1講義単位落としても卒業できるように専門科目限定の履修追加をしましたが, 追加した講義が同じく数学である計算理論なので, 両方を落として留年する可能性が出てきました. 先生も数3の知識が無いとこの講義は厳しいと言っていて死ぬ気配しか無い. 私は数3をやっていない… 参考書として以下の3つが指定されました. 徹底攻
Yesodアプリケーションのクラッシュの原因はやはりデッドロックっぽい, PGPOOLSIZEを増やしてみたらクラッシュしなくなりました
ghciでforkして見てみたらBlockedOnMVarが発生してるのでやはりデッドロックっぽい ghciでYesodアプリケーションを動かしてみます. getApplicationReplがあるのでこれを使います. (port, foundation, app) <- getApplicationRepl t <- fork $ runSettings (warpSettings foundation) app と言った感じでYesodアプリケーションををghciで別スレッドで動かせま
Yesodアプリケーションのデッドロックの検出のためにThreadScopeを使ってみましたが手掛かりにはなりませんでした
今日も引き続きyesod製のwebアプリケーションがクラッシュする問題を解決しようと試んでいます. とりあえず昨日他のブランチでcssやjsのcdnからの配信に切り替えたのでそれを矛盾なくmergeする作業を行います. gdbも試すけど, 試してなかったThreadScopeを試してみようと思います. 正直これで何かがわかるとはあまり思えないのですが… ThreadScopeのページで書かれているRTSオプションって-Nはコア数でわかるけど, -lsはどういう意味なんだろう. -l[flags] イベント
yesodとwebpackを協調させてTypeScriptをビルドする方法
yesodとwebpackを協調させてTypeScriptをビルドする方法 現在yesodとTypeScriptを併用していて, yesodがhaskellアプリケーションをビルドする前にwebpackでTypeScriptをJavaScriptにビルドするということを行っています. yesodのshakespeareのText.TypeScriptにはエラー表示が極めてわかりにくいとかグローバルにtscをインストールしないといけないとかそもそも何故か動かなくなる時があったので独自にwebpackを動かし
haskellプログラムのimportの別名が多くなる問題にはclassy-preludeを使いましょう
classy-preludeというhaskellパッケージの紹介です. importの別名が多くなってしまう問題 haskellでは多くのデータ構造に対する関数がほぼ同じ意図を持っているのにも関わらず, 違うモジュールで違う型で定義されています. lookup, insert, length, member, updateなどですね. データ構造に対する典型的な関数たちは多く被っています. 例えばlookup関数は単なる関数で, baseの Data.List では, lookup :: Eq a =
テストを書いたら本体のバグが発覚しました, エラー時のレスポンスが捨てられてしまうのでhttpsJSONEitherは使わない, 検索した内容をtwitterに投稿するものを作ろうと思います, string-transformの変換元にShow aを追加しました
テストを書いたら本体のバグが発覚しました hspecを使ってshouldThrowを使っているのだけど, 意図した例外を送出してくれないのかdid not get expected exceptionエラーになって困りました. なんでだー??? と思って調べたら本体コードがバグっていることがわかりました. 非常に単純な変数の指定取り間違いでした… テストって大事ですね… エラー時のレスポンスが捨てられてしまうのでhttpsJSONEitherは使わない httpsJSONEitherを使うと, aes
yesodアプリケーションがデッドロック状態になってしまうことがわかってきましたがそれ以外は何もわかりません
goofysを使わない新しい構成のシステムがちゃんと動くか確認するためにステージング環境を整えます. 構築方法はちゃんとメモしているのですが, 流石に面倒くさくなってきた. ansibleとか使えば楽できるんでしょうか… 環境構築なんか1回だけと思ってましたが, 結構な数をこなしてきたので, いい加減導入を考えたほうが良いのかもしれません. しかしステージング環境と本番環境で埋め込む変数が異なったりするのですが, そのへんをansibleはどうやって処理するんだろう, と思ってググったら環境ごとにファイルを
コマンドラインツールの例外実装, string-transformとOverloadedStringsの相性が悪い, Multipart Upload
コマンドラインツールの例外実装 テストできるようにモジュールをlibraryとexecutablesに分けました. baseのexceptionを使うよりsafe-exceptionsを使うほうが良いそうなのでimport先だけ変えておきます. 現在非同期例外を使うことはないのであまり恩恵は無いかなあ… と思いましたが, tryにたくさん型注釈をつけていたところをtryAnyにすることが出来ておおこれは便利. 昨日書いたstring-transform: simple and easy haskell s
Amazon S3の問題はMultipart Uploadで解決しそう, haskellの文字列の変換をわかりやすくするstring-transformを公開しました
Amazon S3にファイルがアップロード出来ない問題はそもそもPutObjectが大容量のファイル向けじゃないからのようでした conduitのMonadResource mをIOに変換する方法がわからない - ncaqについて, @as_capablさんに助言を貰ったので, それについて調べてみました. なんかこのソース見ると ResourceT IO が渡せる奴があるっぽいです(http-client-conduitに詳しくないので見当外れだったらすいません) https://t.co/pR9v
ゆうちょダイレクトのログインが不便, haskellの例外時処理に悩んだ, slackにそこそこの容量のファイルが送れない不具合が発生してしまった
鼻血が止まらない 数カ月前から風呂に入るたびに鼻血が出るし, 寝てる間も自然と鼻血が出て迷惑しています. むかしから鼻血は出やすかったが, ここ数ヶ月のは特に多い. 心療内科で血液検査を定期的に行っているため, 血液の病気ではないでしょうが. 耳鼻科に行くべきでしょうか… 正直面倒くさい. 散髪に行きました 作業コアタイムに備えて起きたら今日は休みだった. 忘れてた. 髪の毛がうざったくなってきたことを思い出しました. 散髪に行きます. 自転車の鍵が所定の場所に無かった. そう言えばちょっと前に父親が
conduitのMonadResource mをIOに変換する方法がわからない
前回出したpull requestに返信 awsパッケージは出来る子でした, 大容量のファイルのS3へのアップロードが出来なくなりました, yesodにpull requestを出しました - ncaq 前回yesod develのstack buildの--fast消して欲しいというpull requestを提出しました. remove the --fast flag from stack build executed by yesod devel by ncaq · Pull Request #144
awsパッケージは出来る子でした, 大容量のファイルのS3へのアップロードが出来なくなりました, yesodにpull requestを出しました
バケット名にドットを付けていたのが全て悪かった, awsパッケージは出来る子でした AWSのS3にhaskellでアクセスするのに苦戦してます, flycheck-stackはもう不要になってました, optparse-applicativeがいい感じ - ncaqに書きましたが, aws :: Stackage Serverで上手くpre signed urlを生成できなかったので, s3-signer :: Stackage Serverを使ってみました. そしてAmazon S3のバケット名にドット
optparse-applicativeはいい感じでした, Data.ByteString.readFileは/dev/stdinを読み込めない, GitPythonを使いました, python好きになれない
だるすぎる だるすぎてやるべきことがあるのに, ずっと世界樹の迷宮IV 伝承の巨神をやっていました. 最近これを再開して, ちょっと前にクリアしました. ソードマン/ルーンマスター ナイトシーカー/ミスティック メディック/ダンサー スナイパー/ミスティック ルーンマスター/メディック の構成でやっています. それで第六迷宮に潜っていたのですが, 三頭飛南瓜が強すぎて1回勝ったけどもうひとつのグループに全滅させられ続けて作業をやりたくなってきました. 作業やってました. optparse-appl
Amazon S3のバケット名にドットを使ってしまいhttps通信が出来ない環境を作ってしまった, S3のダウンロードファイル名を指定できるライブラリがなくて困っている
Amazon S3のバケット名にドットを使ってしまいました aws :: Stackage Serverパッケージでpre signed urlを作る方法はさっぱりわかりませんでした. そんな機能ないのかも. pre signed urlを作る機能だけにs3-signer :: Stackage Serverを使うことにしました. 作ってみたら上手く動かない, https証明書エラーが発生します. web上のドキュメントではみんな普通にhttpsアクセスできてるのになんでだろう… と思って調べてたらとんで
AWSのS3にhaskellでアクセスするのに苦戦してます, flycheck-stackはもう不要になってました, optparse-applicativeがいい感じ
haskellのawsパッケージでS3にアクセス 今書いてるwebアプリケーションでは, S3上に置いているファイルへのアクセスにkahing/goofys: a high-performance, POSIX-ish Amazon S3 file system written in Goというファイルシステムにバケットをマウントできるものを使っています. s3fsの高速版です. しかし, アプリケーションサーバが大量のファイルを送信しているのが負荷になっているのではないかと思ってS3から直接ダウンロード
yesodでprovideRepTypeの中でredirect出来ない時は型を明示しましょう
混乱メモ. yesodでコンテンツを直接配信するのではなくredirectでS3などのファイル保存場所のURLにリダイレクトするようにしようとしていました. とりあえず実際のAPIは作らずにundefinedで関数たちを置いておいて, ハンドラー側の呼び出し機構だけ書いておこうとしていました. しかし困っていました. ファイルを配信するハンドラーは2つあって, 片方はそのままredirect出来るのですが, もう片方はselectRep, provideRepType typeJsonでjsonのリクエスト
emacsの自動補完をauto-completeからcompany-modeに移行しようとしましたがやめました
新しい言語の補完が大概company-modeにしか対応していないため, company-modeに移行しようとしましたがやめました. 設定ファイルは以下のような感じでした. ;; -*- lexical-binding: t -*- (require 'company) (require 'company-quickhelp) (global-company-mode t) (company-quickhelp-mode t) (custom-set-variables '
dic-nico-intersection-pixivをpixivのサイトマップを使って生成するように変更しました
ncaq/dic-nico-intersection-pixiv: ニコニコ大百科とピクシブ百科事典の共通部分の辞書 東方天空璋が発売されたので, IME辞書を再生成しようと思いました. 軽量なネット用語辞書が欲しかったので, ニコニコ大百科とピクシブ百科事典の共通部分の辞書であるdic-nico-intersection-pixivを作りました - ncaq にも書いている通り, 最後にサイトマップが存在することを指摘されました. なので, そのように書き直しました. pixivのsitemapを取得し
大学院の入試に行って, 教員に苦笑いされてきました
リクエストがあったので書きます. 明日の面接の内容、日記にしてくれますか? | ask.fm/ncaq_ask 面接 今日面接がありました. 内容は以下の通りでした. そのままの内容ではありません. 面接は教員数人に学生1人というスタイルでした. 大学院を志望する動機は? コンピュータサイエンスをもっと学びたいと思ったのですが, 私の所属する専修大学には情報系の大学院が存在しません. 近くの国立大学を検索したところ, 埼玉大学の大学院の研究室に興味のある分野が複数あったので, 志望しました. 大学院
twitterでブロックしたアカウントを全てブロック解除するやりかた
仕様変更で動かなくなりました Twitterの仕様変更で私が書いたコードは動かなくなりました. 2020年5月14日に確認した所 document.querySelectorAll("div[aria-label=\"ブロック中\"]").forEach(b => b.click()); ブロック一括解除 for Twitter Lite - HelloRusk Official Website は動くようなのでそちらを参照してください. 動機 私はtwitterでは適当にブロックを行って定
論理式処理系を途中まで書きました
今日, 院試の勉強をしていて, あまりにも何もかもがわからなくて, 何故か論理式処理系を書いていました. 途中でよく考えたらCNFが元の真理値と等しいかQuickCheckで検証をする用途にパーサーを書く必要は無いと気が付きました. 中途半端なものですが, これ以上書き足す予定が無いので公開します. 未来にparsecの参考になるかもしれない. 以下のように使えます. λ> execPropForm "a -> !b" [("a", True), (
「明利酒類 梅香 百年梅酒」と「『俺の妹がこんなに可愛いわけがない』とやり直す中学英語」をプレゼントしてもらいました
こんな大きなものAmazonで頼んでないなあと思ったら贈られててビックリしました名前は公開していいのかわからないので伏せますありがとうございます! pic.twitter.com/8D8uySYX31 — エヌユル (@ncaq) 2017年8月18日 ちなみに私のAmazonアカウントは公開はしていましたが, リンクは貼ってませんでした. これを機にフッターに書いておくことにしました. 明利酒類 梅香 百年梅酒 Amazon.co.jp: 明利酒類 梅香 百年梅酒 瓶 720ml: 食品・飲料・
就活したくない 仕事したくない 進学したくない 存在したくない 死にたい
愚痴. 今日は14:30頃に起床しました. 何もやりたくなかったからゴロゴロしながらtwitterを見ていました. 精神障害者の就活ツイートを見て精神がやられた 16:00頃に流れてきたツイートを見ました. いま、生まれて初めて発達障害者として障害者枠の就活をしてるんだけど、健常者だった頃が信じられない程書類選考で落とされますね。契約社員すら受からない。本当にびっくりした。自分で言うのもアレだけど、それなりの学歴だし、障害者手帳の取得前はそれなりの企業に居たんですよ。 — にゃかがわりょうじ (@n
keterでデプロイした場合yesodアプリケーションが生成するURLがhttpsではなくhttpになってしまう問題を解決しました
yesodアプリのketerへの切り替えを試しましたが, icuライブラリのバージョンが一致せず, 静的リンクもできなかったので, 切り替えができませんでした - ncaqの続きです. 自分の問題解決のために時系列順に書き殴ったメモなので纏まっていません. ご了承下さい. httpsがhttpになってしまう harendra-kumar/unicode-transforms: Fast Unicode normalization in Haskellを使うことによってICUライブラリへの依存を消滅させまし
yesodアプリのketerへの切り替えを試しましたが, icuライブラリのバージョンが一致せず, 静的リンクもできなかったので, 切り替えができませんでした
問題解決を目指したログですが, 問題は解決できませんでした. keterへの切り替えを試してみる 自作のyesodアプリケーションが度々落ちる状況にあり, これがとてもストレスになり, 死にたい. haskell - Applications written by Yesod sometimes stop responding - Stack Overflow 試しにnginxとsystemdを使った構成からketerを使った自前ビルドをしない構成に切り替えを試してみることにしました. nginxを介さず
Half-Life 2をクリアしました
Half-Life 2をプレイし始めました - ncaq プレイ時間 13時間. 環境 Steam(GNU/Linux). 難易度 設定: 簡単 体感: 難しい 感想 FPSって面白いですね. 武器を元に敵を倒していくことには爽快感があります. 何度か進行に詰まって攻略を見ることになってしまいましたが, それでも面白かったです. あまりにも劇中でストーリーの内容が語られなかったので, ストーリー進行がプレイ中にわからなかったのが難点ですね. もっと私の頭の回転が早ければ, すっと入ってきた
映画『ジョジョの奇妙な冒険 ダイヤモンドは砕けない 第一章』を観てきました
映画『ジョジョの奇妙な冒険 ダイヤモンドは砕けない 第一章』公式サイト 一応ネタバレ注意. 気分が塞ぎこんでいたので, 衝動的に映画を見に行こうと思ってその日のうちに出かけてきました. 爆アド手帳こと精神障害者保健福祉手帳による障害者割引で同伴者一名まで1000円になりますし. ちなみに私の手帳の色は水色です. 映画館はユナイテッド・シネマ浦和 | 浦和パルコ6F | 映画館 良かった点 スタンドのCGの出来は普通に良かった 場所が杜王町らしかった 各登場人物の外見特徴をそれなりに掴んで実写に落とし込ん
Half-Life 2をプレイし始めました
SteamによるセールでPortal2などとパックにされてたので購入しましたが, 今まで遊ばずにずっと積みゲーになっていました. 積んでた理由は前作Half-Lifeをクリアするのが困難だったためです. 敵が強いとかそういうことが原因ではなく, 道に迷って進めずにクリアできなかった. 私は方向音痴なのです. その上Half-Lifeは精々NINTENDO64レベルのグラフィック精細しか持っていないため, これが何を引き起こすかというと, 3D酔いが発生します. そういう訳で, 前作Half-Lifeをクリア
JavaScriptのデータ通信, form, fetchとFormData
JavaScriptでデータ通信する時に最近考えることが多いのでメモしておこうかなと思います. formにデータを突っ込んでsubmitする formを取り出してsubmitメソッドを呼び出す方法. formに既に入っている情報で足りない時はinput要素をformに足してやります. const element = document.createElement("input"); element.name = name; element.value = value; form.appe
これからのHaskellプロジェクトではcabalではなくpackage.yaml(hpack)を使いましょう
sol/hpack: hpack: An alternative format for Haskell packages hpackとは hpackとは, cabalファイルを生成してくれるツールです. package.yamlファイルからcabalファイルを生成します. JavaScriptに対するAltJSのようなものです. hpackは何が良いのか yamlである hpackのフォーマットであるpackage.yamlはyamlフォーマットです. 独自のフォーマットを採用しているcabalとは
try-pandoc-with-fileという, markdownをPDFなどに変換するwebサービスを書きました
try pandoc with file pandoc PandocというHaskellで書かれたソフトウェアがあります. これはmarkdown・rst・HTML・Orgなどの豊富な入力を取り, HTML・PDF・Docxなどに変換出来るツールです. 参考:Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association 超便利で, いつも使っています. というか, このサイト自体Hakyllで作られているので, ガッツリpandocに依存しています.
haskellプログラムがメモリを食いまくって落ちていたのはghcに-O0を指定していたからだった
テストコードでも-O0はやめよう. yesod-testがメモリを食いまくる 今, 私はYesodでWebアプリケーションを書いていて, まだseleniumを導入してなかったので, yesod-testで大きいサイズ(100MBぐらい)のファイルを大量に投稿するというテストを書く必要がありました. しかし, そのテストを実行して, testプログラムがファイルを投稿すると, メモリを10GB以上余裕で消費して, 20GB取ってるswapすら超越し, OOM killerが発動したり, segvしてしまい
入院を目標にTOEICのスコアを265から500に上げたいと思います
入院を目標にする あまりのTOEICの点数の悪さと, 就職活動による欝就職活動で鬱病が悪化した - ncaqで大学院進学を一度は諦めましたが, 躁転してなんかいけそうな気がしてきました. 躁転したまま入院したいと思います. 少なくとも修士は生涯年収的に採算が取れるはず 統計上修士は取ってる人のほうが生涯年収が高くなるそうです. まあ, 元々の家庭環境の違いが関係してそうですが… これで「少なくとも修士は取らせてくれ」と親を説得してみました. 出来れば博士号を取りたい 博士号を取りたい. 私の能力で
一体型PCであるiMac Proは本当にコスパが悪いのか?似た自作マシンで試算して検証してみた
この記事はiMac Proが発売するどころか詳細が発表される以前に書かれたものです. 現在参照するのには適していません. iMac Proはコスパが悪いか? iMac Pro - Apple(日本)が発表されましたね. 私はGentoo GNU/Linuxユーザで, ラップトップはDellを使用して, デスクトップは組み立てる人です. MacはGNU/Linux向けのドライバが中々提供されないため基本的に使いません. しかし, 学校などのコミュニティでMacユーザの手助けなどをしなければいけないため, M
Nexus 6P(angler)にLineageOSをインストール
Pixelを買おうと思ってましたが, 日本で発売されずに難民になっていました. 私の使っていたNexus 5は酷使されているため, バッテリーのヘタレ具合が酷く, ケーブル端子がバカになっていて接続が頻繁に切れ, メインメモリも足りないという状態で, 不満だらけでした. そこでフォロワーさんがNexus 6Pを売ってくれる(大きすぎたらしい)という話があったので, これを機会に数年遅れで乗り換えることにしました. 使用するのは標準OSでも良いかなあと思いましたが, ボタンのカスタマイズが標準ROMでは出来な
systemd-233-r1にアップデートすると, systemd-hostnamedが, /var/tmpを/tmp/へのシンボリックリンクとしている場合, クラッシュします
systemd[12345]: Failed at step NAMESPACE spawning /usr/sbin/httpd: Permission denied このようなエラーが出ます. 5月 09 09:34:46 karen sudo[17421]: ncaq : TTY=pts/1 ; PWD=/usr/lib64/systemd/system ; USER=root ; COMMAND=/usr/bin/systemctl restart systemd-hostnamed.ser
ギークハウスZEROで人生へのアドバイスを受けてきました, 面接を公開するのはやめよう
ドワンゴ1次面接に行ってきました, 面接内容を書き起こして, 反省も書きます - ncaq 普通の人間はリアルの会話というのは非公開だと思っているので, それを公開すると不快に思います. だから, 面接を公開すると普通の人というものは不愉快に思うようです. 私は小学校にも中学校にも馴染めず, ずっとTwitterにハマっていたので, 会話は公開情報という誤った認識を持っていました. 損害を与えるとか与えないとかそういう話ではなく, 人を不快にさせるのはやめておいた方が良いです. 私は前例が無かったので怒られ
ドワンゴの選考に2次面接で落ちました, そろそろ就活を終わりにしたいです
ドワンゴ1次面接に行ってきました, 面接内容を書き起こして, 反省も書きます - ncaq ドワンゴの選考に2次面接で落ちました. 面接内容を口外しないことは誓ったのでそれ以外に言うことはありません. 以下は愚痴. 読む価値はいつにも増してないです. 就活疲れたのでそろそろ終わりにしたい 私は根がネガティブで普通に会話しててもナチュラルに「死にたい」とか「つらい」とか「私は何もできない」とか「人類が絶滅して欲しい」が混ざるタイプです. そういう人が面接で会話をするのは耐え難い苦痛があります. 私は嘘が嫌い
エゴサーチのススメ
最近web上でボコボコに批判されることが多いのでエゴサーチにハマりました. Google アラート Google アラート - ウェブ上の面白い新着コンテンツをチェックに自分の名前を複数登録します. 私の場合は Haaaa_N ncaq エヌユル 実名 ですね, me on the webなんて欄があるあたりエゴサーチ推奨です. これで頻度を1週間に1度程度, ダイジェスト設定にすればメールで通知してくれます. しかしこれ, 自分のサイトやはてなブックマークが引っかかるばかりであまり役に立ちません.
ドワンゴ1次面接に行ってきました, 面接内容を書き起こして, 反省も書きます
一応録音していた面接内容を書き起こししていますが, かなりいい加減です. 相槌などは混ぜるのが難しく, 仕方ないので削除しています. 自分の発言文章がぐちゃぐちゃなのは, なるべくそのまま書き起こしを行っているからです. 読みづらいでしょうが, ご了承ください. また, 音質が悪いため, かなり聞き取れない部分があるので, そこにはunclearをつけています. 伏せたいところもunclear. 録音していたスマートフォンを右ポケットに入れていた関係上, 左側にいた方の発言はあんまり聞き取れなくなっています
perl6の速度が現在どれぐらいなのか気になったのでマイクロベンチマークを取ってみました
perl6はまだまだ開発途上です. この記事はすぐに古くなるでしょう. 動機 googleがpython2からpython3に移行せずにpython2だけ対応したライブラリをリリースしやがる. Google「新しいDeepNet系のライブラリ出したで https://t.co/kEsEvS4kLy」俺「どうせまたPython2系のみ対応とかやろ?w」俺「…マジだった………」 — ばんくし (@vaaaaanquish) 2017年4月10日 python3に移行するだけでそこそこ速くなるのに勿体無
エビリファイを投与された結果アカシジアによって静座不能になり地獄に居ました
エビリファイのイラスト(いらすとやからの合成) エビリファイを飲んで, ちょっとでも変なことが起きたらすぐに病院に相談しなおしましょう. まず電話でも良いです. こんな単なる当事者の素人が書いた記事を参考にしてはいけません. これはあくまで個人的な記録です. ちょっと前に起きたことを思い出しながら書いているので, いくつか間違いが存在するかもしれませんが, 御容赦願います. 自分のtwitterを見返せば日時がわかることに気がつきました, 天才かな. 3月28日 心療内科に行って「最近死にたい死にたい
Rustは実行時オーバーヘッドを生じさせないという意味でやっと出てきたC++の後継言語です
RustをOCamlなどの仲間だと勘違いしている人は居るでしょうか. 私がそうでした. しかしRustはC++の後継言語です. C++は言語レベルのGCを持ちません. つまり実行時オーバーヘッドはプログラマが選択しない限り発生しません. C++の問題点 C++の有名な問題点は, ポインタの寿命が把握できないことです. #include <iostream> #include <memory> #include <vector> int main() { std:
死にたいほど痛い肩こりが帯状疱疹(ヘルペス)でした
帯状疱疹とは水痘ウイルスが体内で暴れ出して猛烈な痛みを伴う病気です. 知覚神経の走行に一致して、皮疹出現の数日前から違和感や疼痛が出現することが多い(皮疹と同時、或いは出現後の事もある)。その後一般に帯状に紅色丘疹・浮腫性紅斑・紅暈を伴う小水疱が列序性に出現し、疼痛やそう痒感を伴う。[5]。神経痛・神経障害のみで皮疹が出ないという病態(zoster sine herpete)もある。2週間以上治癒しない場合、免疫機能の異常が考えられる。 60歳代を中心に50歳代〜70歳代に多くみられるが、過労やストレスが
私は密接なコミュニケーションで交換された情報の公開権限がハッキリしないことを理解出来ませんでした
Twitterなどの公開された場のコミュニケーションにのみのめり込み, 私は密接なコミュニケーションで交換された情報の公開権限がハッキリしないことを理解出来ませんでした. また, 当時私は鬱で倒れてから起き上がった直後の状態にあり, 正常な判断が出来る状態にはありませんでした. 謝罪します.
Nexus5のデータが全て吹っ飛んだのでNexus5をLineageOSで再セットアップ
水没事故 うっかりNexus5を水没させてしまいました. ちゃんと乾かしてから起動したら動作はちゃんとしたのですが, 何故かデータが全て吹き飛んでしまった. ストレージがやられた? 復旧過程で一度データを全てwipeする作業が入った? 原因はもはやよくわかりません. 大事なデータはクラウド上に置いてあるので, データが吹き飛んでも損害はないのですが, 色々な再セットアップが面倒くさい. 面倒くさいので, せっかくだから手順を書いておくことにします. ROMの選定 これまで惰性でCyanogenModを
軽量なネット用語辞書が欲しかったので, ニコニコ大百科とピクシブ百科事典の共通部分の辞書であるdic-nico-intersection-pixivを作りました
データは現在https://cdn.ncaq.net/dic-nico-intersection-pixiv.txtに置いています. 良ければ使ってください. google日本語入力の辞書が貧弱なので補完したい ネット用語を変換する辞書が欲しい. 純狐さんが変換できない. mozcだからダメというわけではなく, google日本語入力も対応できていないものが結構あります. 東方の専門辞書とか, いちいち色々な場所を回って収集するのは面倒くさいし, 更新も面倒です. それに私は記号にこだわりがあって, 全角
gentooでgnome-base/nautilus-3.22.2がビルドできなかったのを解決
ちょっと前からgentooのgnome-base/nautilus-3.22.2がビルドできず, アップデートが出来ませんでした. まあそのうち治るだろう, 1つバージョンが古くても困らないし, と思って放置していましたが, しばらく経っても治らなかったので, 原因を真面目に調査してみることにしました. ビルドエラー エラーメッセージは In file included from nautilus-file-undo-operations.c:35:0: nautilus-batch-rename-uti
stackageにアプリケーションをアップロードしました
だいぶ前に作った haskell-import-graph :: Stackage Server haskellのimportのグラフ関係をgraphvizで出力する uniq-deep :: Stackage Server unixのuniqコマンドは隣り合ってない重複行を削除してくれないので削除する というアプリケーションをstackageにアップロードしました. 色んな環境にインストールするのに, stackでインストールできないので不便だからです. 葛藤 こんな自分しか使わないようなアプリ
jcomの 回線遅く 不満持ち サポートに連絡したら改善 したけどやはり遅くて不満
半年前ぐらいにマンションの回線がucomからjcomに切り替わりました. どうも価格が安いということで決定されたらしいです. マンションの管理側で決定されたことで, 議決権を持たないしがない子供の私に反論を差し込む余地はありませんでした… jcom回線が遅い 別にIPアドレスなどに対してこだわりはないので, 品質が同じなら構いはしないのですが, その肝心の品質がひどい. mikutterがtwitterのiconの読み込みに度々失敗する google検索に数秒かかる ホストが分散しているwebサイトを表
尊敬するプログラマと口実を羅列する
1年半ほど前に, 大学の先輩に「尊敬するプログラマって誰か居る?」的なことを聞かれたことがありました. その時は「私はソフトウェアの凄さには興味はあるけれど, 誰が作ったかなんてあまり興味はないし, 今使ってるソフトウェアは大抵複数人の共同作業で作られているので, 特定の誰かを上げるのは難しいですね」と答えました. 今でもこの考えはあまり変わってないですが, この答えってすごくアスペルガーっぽいですし, 単に世間話的にこの質問を投げかけた先輩は話を広げられなくてさぞかし困ったことでしょう. もう一度似たよう
bootstrap-v4.0.0-alpha.6のリリースノートハイライトの日本語訳
Release v4.0.0-alpha.6 · twbs/bootstrapの日本語訳です. bootstrap-flex.scssが消滅してビルドできなくなって30分悩んだので初翻訳です. google翻訳を頼っています. 超意訳. 我英語力皆無. 翻訳 あけましておめでとうございます!これはBootstrap 4の最終的なアルファです. 詳細 v4 Alpha 6 ship list · Issue #20939 · twbs/bootstrap v4.0.0-alpha.6 Milestone
TypeScriptで世界各国の人口を表すインフォグラフィックスを作成するレポートを見直して自己評価
背景 簡単なアドレス帳のレポートを見直してweb技術と自分のwebに対する姿勢の変化を観察する - ncaqの続きです. 2015年06月に記述したレポートを元にしています. オブジェクト指向技術の第2回レポートでは世界各国の人口を表すインフォグラフィックスを作成するという課題が出ました. おそらく私以外全員の受講生はネイティブのJavaScriptを使っていたのですが, その時期は私はAltJSにハマっていたので「TypeScriptを使って良いですか?」という問い掛けをして, 許可を貰いました. なぜ
簡単なアドレス帳のレポートを見直してweb技術と自分のwebに対する姿勢の変化を観察する
背景 2015年06月のオブジェクト指向技術の第1回レポートで, 簡単なアドレス帳というものを書きました. 私がまともにwebを学ぶ以前に書いたものなので, 公開するのは気恥ずかしいですが, 死蔵しておくのも勿体ないので, 見直すことでweb技術と自分のwebに対する姿勢の変化を観察したいと思います. 手抜きのためにレポートの内容を改訂して書いているので, 一部不自然な文章になっています. ご了承ください. 最終的なソースコード 簡単なアドレス帳の実装 簡単なアドレス帳を作る. 何故jQuer
asyncとawaitの由来を調べたところ, asyncとawaitのaは関係なかったことがわかりました, 英語はクソ
背景 「awaitってなんだよ」 という気持ちがある日寝てる私に降ってきました. asyncの由来 asyncはsynchronize(同期する), synchronization(同期すること)を省略したsyncに, ギリシャ語由来の接頭辞a-をくっつけて, async(同期しない)となります. また、英語の〈a-〉という接頭辞はいろいろな意味がありますが、その中の一つに、ギリシャ語の〈a-〉(母音またはhの前ではan-)に由来して、「無」「ない」という否定を表すものがあります。 第29回 食べる
発達障害者です, ウェクスラー成人知能検査(IQテスト, 通称WAIS)の詳細な結果を貰ってきました, 本人が自己分析を行います
背景 私も就職活動とやらをしなければならないことになりまして, 自己分析とやらをしなければならないらしいです. しかし, 私は鬱病を患っているので, 自分で自己分析を行うとどんどん自殺欲求が深まってしまいます. そこで, せっかく数年前に心療内科で知能検査を行ったことがあるので, その詳細な内容を貰ってくることにしました. 先生は「渡すようなものじゃないんだけどなあ…」と言いながらも渡してくれました. これは心療内科の専門のアシスタントと一対一で行うもので, どこぞの得体のしれない団体の適性検査よりはよほ
最初に学ぶプログラミング言語なんて何でも良いだろ, ゲームのスキルビルドじゃないんだから
背景 常々こういった話題について考えていたことを文章にしたいと思っていました. そこに「最初に学ぶべきプログラミング言語」 - mizchi's blogが投稿されたので便乗します. プログラミングスキルに上限なんてない ゲームのスキルビルドは大体上限があります. だいたいのRPGではスキルを全て取ることはできません. ポケモンだって振れる努力値は510で上限になってしまいました. だからというわけじゃないだろうけれど, プログラミングの学習を始める前に「どの言語を覚えようか」なんてことを気にする人が
xinputコマンドを使ってラップトップPCのタッチパッドの無効有効を即座に切り替える
背景 まず、キーボードを入力するとき、少し手のひらがタッチパッドに触れるとカーソルが動いてしまう。この問題について、ThinkPadを所有している(使っている)知り合いに尋ねたところ、「そもそもトラックパッドは無効化している」という返答がほとんどだった。 さよならMac | めがねをかけるんだ タッチパッドがクソ:タッチパッドがボタンと一体になっているため、 Thinkpad 伝統のトラックポイントを使うと、認識がとても怪しくなる。そしてでかいため、指が触れて誤操作の原因になってしまう。これについて
専修大学のhttpによる認証を必要とする腐ったwifiに, NetworkManagerのdispatcherを使って自動ログインする
NetworkManagerを開発しているGnomeのロゴ 2017年度より, 専修大学のwifiにもWPAエンタープライズ認証が導入されました. よってこの記事は早くも腐りました. 背景 2014年に専修大学に入学して, 困ったことが1つありました. それは, 専修大学の学内wifiSENSHUWLはまるで空港のような形でwifiの認証を行うということです. http通信に中間者攻撃をしてhttps://wcgw.senshu-u.ac.jp/cgi-bin/loginへリダイレクトするwebペー
項書換えシステム記述言語maude
背景 大学の分散情報システムという講義で, maudeという項書換えシステムを使うことになったので, コードを書きました. コードを書いたので, せっかくなのでgistにuploadしました. gistにuploadしたので, せっかくなのでここで解説したいと思います. 途中から大学に提出したレポートの写しになっているので, なんだかちぐはぐです.注意してください. maude 公式サイトはThe Maude System. マニュアルはMaude Manual and Examples - The
iijmioの契約を家族のファミリーシェアプランにまとめました
背景 これまでiijmioとは自分と父親が2人分ミニマムスタートプランで契約していました. ファミリーシェアプランを2人で使ったほうがお得なのに, 何故ミニマムスタートプランを2つ契約していたのか? それは「自分がファミリーシェアプランへ変更して親の分のSIMを追加しよ!」と思っていたけれど, 契約の変更は月末にならないとできないことを知らなかったので, 仕方なく新規追加になっていたからです. iijmioの契約変更は月末じゃないとできないことには気をつけよう! 変更するのには手数料もかかるし, そのまま
unixコマンドの使用頻度を計測する
背景 2015年08月に書きました. 大学で「unixコマンドの自分用のマニュアルを書け」という正直言って謎な課題が出たためです. そのためにまず自分の使っているコマンドを計測するために.zsh_historyの内容を解析することにしました. 最初は当初学んでいたerlangで解析しようとしましたが, 文字列操作がわけわかめで疲れてやめました. ソースコード 純粋なunixコマンドだけではなくaliasやfunctionも計測したいため, 自分のncaq/.zsh.dを読み込んで, 定義されてあるコ
haskellによるLZ78の実装
背景 2015年07月の大学の講義「情報理論」で「Ziv Lempel符号について調べて解説せよ」という課題が出ました. 情報理論という名前の講義ですが, プログラミングは直接は関係していない, 数学寄りの講義でした. しかし私はプログラミングで理解したほうが楽なため, LZ78 - Wikipediaによるデータ圧縮プログラムを実装してみることにしました. なぜLZ78なのか. それは適当にググってる時に出てきたwikipediaの記事の解説が丁寧でわかりやすくて, これなら自分でも実装できそうだと思っ
c++によるbrainfuckの実装
背景 2015年05月に書きました. 課題の提出結果をbrainfuckで書いたら先生混乱するかなあと思って, まず同梱するための処理系を書こうと思いました. 私にとっては初めての言語処理系記述でした. ソースコード 今見返した感想 初めてにしてはそこそこうまく出来ているのではないでしょうか. メモリは巨大なテープという安直なイメージからdequeを使って自動拡張していますが, それなら連想配列を使ったほうがおそらく楽だったでしょう. それとループのネスト構造は実行時に文字列処理で強引に解決して
c++によるマージソートの自前実装
背景 2014年11月にc++で安定ソートを実装しました. 学校の課題で何らかの成績の順位付けをする必要がありました. 秒数が同じ時はインデックスが小さいほうが順位が高いという指定があったため安定ソートを使う必要がありました. 別に課題の指定では自前でソート関数を実装する必要はありませんでしたが, constexpr対応させたかったのでマージソートを自前で実装しました. 本当に対応してるかは知りません. インターフェイスはできるだけstd::stable_sortに準じているようです. 当時の私(大学1年
haskellによるquine
HaskellによるQuine クワインを書くコツ 背景 2014年4月に書きました. 当時クワイン (プログラミング) - Wikipedia を知ってちょうど暇でした. 一応Wikipediaのサンプルコードは読まずに書きました. ソースコード main :: IO ()はなくても良いので, これをなくせば1行になります. クワインを書くコツ 文字列を2回出力するプログラムを書きます. 2回めの出力時には, その言語の文字列表現とするために, Haskellの場合はダブルクオートをくっつ
googleオートコンプリートでfizzbuzz
このプログラムを実行してはいけません googleオートコンプリートでfizzbuzz curlのラッパー boost xml_parser 背景 2014年10月に, 大学のプログラミング演習の課題として, fizzbuzzを書いてきてくださいというものが出ました. 普通にやっても面白くないので, googleのオートコンプリート機能を使って余りを判定するようなプログラムを書きました. googleのオートコンプリートには簡単な電卓機能があります. 書いたのは2014年なので, 今動くかはわかりませ
rubyによるedの部分的実装
背景 学校の課題で作成しました. 課題要求で正規表現をなるべく使うようにしています. ソースコード 行番号が正規表現でパースできない edでコマンドを実行するときは, 1, 2pみたいに行番号を2つまで指定するのですが, 実はこの行番号, 無限に指定すると最後の2つが取られるようになっているので, 正規表現では多分パースできません. GNU edでは普通にループして解析してるみたいですね. 2つ以上行番号を指定するコマンドは今のところ存在しないので, 実用上の問題はないでしょうけど. edを実用
斜辺が2017になる三角形を探索してgnuplotでグラフ化
2017年です. 背景 2017の素因数分解がつくる多角形 - tsujimotterのノートブックを読んで, なんだかよくわからないがすごい! と思って, 真似をしてみようと思って, 挫折しました. そこから思考が迷走し始めて, ダウングレードして斜辺が2017になる三角形を探索してみました. 斜辺が2017になる三角形を探索 細かく調べたらキリがない上に, 浮動小数点数の誤差が面倒なので度数法で1から179まで探索しました. gnuplotでグラフ化 角度をz軸にしてgnuplotでグラフ化
ネットワークスペシャリスト試験に合格したので学習方法などを書いておきます
ネットワークスペシャリスト試験に合格しました これまでの振り返り 学習方法 受験テクニック 背景 2016年秋のネットワークスペシャリスト試験に合格しました. これで私は ITパスポート 基本情報技術者 応用情報技術者 情報セキュリティスペシャリスト ネットワークスペシャリスト に合格したことになります. せっかくなので, これまでの情報処理技術者試験を振り返って, 学習方法, 受験テクニックを書き残しておこうと思いました. ITパスポート 高校の時に対策本を1回読んで受験. 電車が苦手だった
whitespaceプログラムをc++プログラムに変換するrubyプログラムを書きました
ifを並べ立ててラベルを表現しました ワンパスで変換したかった 背景 学校で「whitespaceプログラムを実行するrubyプログラムを書け」という課題が出たので書くことにしました. whitespaceのラベルは静的なので, c++に変換できるはずだと思ったので, c++に変換して実行するプログラムを書きました. 参考 この記事はWhitespaceをC言語ソースに変換する - koturnの日記を多大に参考にしています. labelを実装する whitespaceには他の言語で言うgot
webアイコンに絵文字を使おう
絵文字 / Emoji Advent Calendar 2016 - Qiitaの12日目の記事です webアイコンに絵文字を使おう 従来のwebにおけるアイコンの表現方法 当初は素直に画像をアイコンとして配置する方法が使われていました. しかし, http/1環境では大量のファイルを配信すると非常にページが重くなるので, 様々な方法が使われるようになりました. cssが普及した後, アイコンを一枚の画像にまとめてそれぞれの場所で画像の座標を指定するというcssスプライト svgが普及した後, アイ
yesodで全てのモデルにcreatedAt, updatedAtを作りたかった話
Yesod Advent Calendar 2016 - Qiitaの5日目の記事です 私のcreatedAt, updatedAtとの戦いの記録 背景 User email Text name Text createdAt UTCTime updatedAt UTCTime のように, それぞれのモデルに生成時間と更新時間を付けたい. 役に立つことがあるかもしれない 全てのモデルにつけることで一貫性を保ちたい 問題 単純にFormを us
prologによる格子点の個数からの円周率の近似値の計算
Prolog Advent Calendar 2016 - Qiitaの3日目の記事です 2015年07月に出た数学の課題をprologを使って解いてみました これがはじめてのprologでした 未だprolog初心者です 背景 格子点の個数を求め, \(\pi\)の近似値を計算せよ. という課題が2015年07月に数学の授業で出ました. 特に言語は指定されていなかったので, せっかくなのでこれまで実用してこなかったprologで解いてみました. 提出した後死蔵されていたので, Advent Cale
Hakyllの紹介
静的サイトジェネレーター Advent Calendar 2016 - Qiitaの2日目の記事 関連記事 ブログを作りました - ncaq hakyllのteaser設定方法が好みではなかったので自作した - ncaq 私はhakyllしかろくに使ったことはない hakyllとは Hakyllはhaskellで書かれた静的サイトジェネレーターである. このサイトもhakyllで作られている. ncaq/www.ncaq.net: ncaq website 強み pandocが楽に使える P
英辞郎は英語学習において害なのだろうか?
英辞郎 on the webの使用を禁止されかけた 背景 授業中にスマートフォンを使っていることを注意されたが, PCならOKだった, 理由が謎だったので, 何故なのか理由を推察してみた - ncaq の続編. 本来前の記事とまとめて1つの記事にするつもりだった. しかし意外と長くなったし本題が違うので分割する. 誰かを批判することを目的とするものではない. 事件 私はAdvanced English bという英語学習のための授業を受けている. 2016年11月の授業の時に英辞郎 on the w
授業中にスマートフォンを使っていることを注意されたが, PCならOKだった, 理由が謎だったので, 何故なのか理由を推察してみた
授業中の授業のためのスマートフォンの使用を注意された 何故かPCならOKだった 謎なので理由を推察してみた 背景 この文書は人間の思考と社会観念を奇妙に感じて, 私の思考と社会のズレに対して多少のおもしろおかしさを感じて書いている. 私は現在この事件に大して全く不満は持っていない. 損をしていないからだ. 奇妙さを感じているだけである. 誰かを批判することを目的とするものではない. 事件 2016年5月, 私はAdvanced English aという英語学習のための授業を受けていた. その時2回
単純なLispを実装した話
2016年02月に単純なLispを実装した 面白みはない 背景 48時間でSchemeを書こう - Wikibooksを見たら案外簡単そうだと思って手を動かしてみたようだ. 継続とレキシカルスコープの実装が難しく, やらねばならない課題などがあった(これは課題でも何でもない)ので, これ以上実装は進められなかった. かと言って教材をそのまま丸コピペするのも面白くなかった. フィボナッチ数を計算してそれで満足した. ソースコード Parsecを使うのは初めてだった. それどころか, 抽象構文木を作る
MathJaxはCommonHTML出力で使うべきである
MathJaxはそんなに遅くない MathJaxのCommonHTML出力は速い 基本的にSVG出力よりも良い 背景 このサイトに数式表示を導入したかった. MathJax の存在は数年前から知っていたが, 数年前から知識をアップデートしていなかったため, 「MathJaxは遅い」という認識だった. そこで\(KaTeX\)を使おうと考えていたが, 調べ直した所, 今の\(MathJax\)はさほど遅くなかったので, MathJaxを導入した. CommonHTML CommonHTML出力はす
haskellプログラマ向けのモノイドの解説
半群とモノイド 数学のモノイドとhaskellのモノイドの差異 背景 私は高校2年生(2012年)頃に, すごいHaskellたのしく学ぼう!を読んで, haskellを使い始めた. その中にはモノイドの解説もあり, 当然haskellのコードでもモノイドを使っていたが, haskellのモノイドが何処からきた概念なのか, どうしてこういう設計になっているのか, それをさっぱり理解していなかった. 2014年頃に大学の授業で半群, モノイド, 群を学習して, 多少は理解が深まった. しかしその頃はアウ
箱のようなものは鶏肉みたいな味のようなもの
このページは鶏肉みたいな味 - Wikipediaのパロディです クリエイティブ・コモンズ 表示-継承 3.0 非移植ライセンスの下で利用可能です 皮肉です 箱のようなもの(はこのようなもの)とは, 日本語圏においてプログラミングにおける概念を比喩するときによく使われる表現である. 但しあまりにも頻出するため, 一種のクリシェ - Wikipediaのようになってしまっている. その結果, この言い回しは実際には関係のない概念やふさわしくない状況にも現れ, 不条理な笑いをはらむこともある[要出典].
hakyllのteaser設定方法が好みではなかったので自作した
hakyllのteaser設定方法が好みではなかったので自作した twitterがopen graphに対応していたことを知った 背景 twitterにdescriptionを設定したかった. hakyllのteaser設定方法 hakyll公式のteaser設定方法はmoreをmarkdownに書くものである. We use <!--more--> for this to mimic the WordPress convention: Hakyll - Using teasers
LLVMでフィボナッチ数を計算する
2016-05にLLVMでフィボナッチ数を計算するプログラムを書いた LLVM Language Reference Manual — LLVM 4.0 documentationを参考にした 人間が書く言語ではない 背景 自作のプログラミング言語をLLVM対応させて, ネイティブコンパイルしたくなった. なので, まずLLVMの内部言語を知ろうと考えた. そのために, とりあえず, フィボナッチ数を計算するプログラムを書いた. そういう記憶がある. なお, 肝心の自作プログラミング言語は放置されてい
wcのrubyによる簡易的な移植
wcのrubyによる簡易的な移植 wc (GNU coreutils) 8.23を参考にした ファイル引数のみの出力のエミュレート utf-8のみサポート 背景 学校の課題で2016-10に作成した. k-takata/Onigmo: Onigmo is a regular expressions library forked from Oniguruma.のunicodeプロパティ指定を知らなくて結構悩んだ. ソースコード テストコード parallel 'wc {}; ruby
google driveをlinuxで利用した話
dropboxからgoogle driveに移行した grive2がdaemon機能をもたないのでやっつけスクリプトを書いた 背景 google photosが便利そうなのでdropboxに写真アップロードする方法から移行したかった. ついでにファイル同期機能もgoogle driveに移行してdropboxを使うのをやめた. grive2 google driveには公式linuxクライアントがないので, vitalif/grive2: Google Drive client with supp
stack buildがout of memoryした時の対処法
Home - The Haskell Tool Stackでstack buildやstack installしたとき, out of memoryでプログラムがビルドできないことがある. 他の人のPCやTravis CIで起きた. その対処法を書いていこう. --jobsオプションを使う stack --jobs 1 build こうすると並列にビルドが走らないため, メモリが足りなくなることが減る. virtualboxのメモリ割り当てを増やす virtualboxのデフォルトメモリ割当量は少
pixivにメールアドレスを「使用できません」と弾かれていたのが解決した話
pixivにメールアドレスを「使用できません」と弾かれていた MXレコードを設定していないせいだった 規格では設定しなくて良いらしい 独自のバリデーションには気をつけよう 背景 私はメールサーバを独自に運用している. そのメールアドレスがpixivで使えないトラブルがあった. どうでもいいやと放置していたけれど, 丁度pixivのidが変更出来るようになった. その機会にtwitterで愚痴ったら, pixivのエンジニアから返答を頂いた. そう言えばpixivのメールアドレス「このメールアドレス
Google カスタム検索を導入して, その進化に驚いた
Google カスタム検索を導入した 今のカスタム検索は進化していてwebサイトに統合できる 背景 ブログ記事からタグデータを削除した, そもそもブログにタグは不要 - ncaqに書いてあるように, このサイトにタグだのカテゴリだのの区分けはない. 要するに, テキストが主体のサイトなのだから, 全文検索すればいいだろと考えている. しかしgoogleの検索クエリにsite:www.ncaq.netを付ければ, 私のサイトだけを検索することが出来るということを知っている人は多くはないだろう. なので,
linux上のfirefoxでNoto Color Emojiを使う
Linuxでもカラー絵文字は普通に表示できる さまざまなフォントが利用できる Noto Color Emojiを使うときはビットマップを取り除かないようにする 追記 firefox 53からNoto Color Emojiを使うとサイズが異常に巨大化するようになりました. 今の最新版のfirefoxでは組み込みの絵文字が利用できます. 指定するのはやめておきましょう. 背景 FreeTypeがcolor emojiに対応していたことは知っていた. しかし, 私がそれを知ったのは数年前で, その時点
PageSpeed Insightsに従ってサイトを最適化してみた
PageSpeed Insightsという, googleが提供する, webサイトのパフォーマンスを測定して, 速度上昇の提案をしてくれるツールがある. 今回はそれに従って, パフォーマンスの向上を目指してみた. まあ, 元々そんなに重いwebサイトではないのであまり最適化する必要はないのだが(早すぎる最適化), webの学習の一環として最適化を試みることにする. 改善前 スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する このサイトで<
デジゲー博に行ってきました
デジゲー博 | 同人&インディーゲームオンリー展示・即売会に行ってきました. tweet [悲報]デジゲー博の開始時刻を10時だと間違える — エヌユル (@ncaq) 2016年11月13日 デジゲー博で展示してたからやってみたけど合理的で面白かった / “#rogue-hex” https://t.co/jFIFHtqR2r — エヌユル (@ncaq) 2016年11月13日 デジゲー博でlinux対応ゲーム2つ買いましたlinux対応してることを書いておけばlinux対応要求男
強力なフィルタリングであるThe Spamhaus Project - ZENをpostfixで使って, スパムメールを拒否する
dovecotとspamassassinと限界を感じるGoogleAppsを契約してクラウドの民になろうか…面白みは全くないが、実用を考えると仕方がないんだよね — エヌユル (@ncaq) 2016年6月7日 @ncaq spamassassinの限界どこらへんです? — 武藤スナイパーカスタム🔫🕵🏻 (@__tai2__) 2016年6月7日 .@__tai2__ いろいろあるけれど、画像中心のメールに弱い — エヌユル (@ncaq) 2016年6月7日 こんなことをつぶやいて
gulpもgruntも使わずにbootstrap4をカスタムビルド
bootstrapのカスタマイズのメリット bootstrap4はsassで作られているので, 変数を設定することでフォントを変えたり, デフォルトの文字色を変えることが出来る. 他のcssを用意して上書きするのに比べて, この方法には以下のメリットがある. cssファイルが1つにまとまる ルールが1つになるため, どのルールが優先されるか気にする必要が無くなる デザインに統一感が生まれやすくなる bootstrapがsassで定義したマクロが使える デメリットは public CDNを使うことがで
xmonadでgimpを普通に動かす
xmonadの初期設定でgimpを使い, ウインドウを開くと荒ぶり操作が不可能になる. これを解決するにはmanageHookを以下のようにカスタマイズする. myManageHook :: ManageHook myManageHook = composeAll [ isDialog --> doFloat ]
gnome-shellを使うのをやめた
1年前ぐらいからxmonadからgnome-shellに移行して, 気に入って使っていた. しかしディスプレイマネージャでxmonadを起動 - ncaqでわかるように, 私はxmonadに戻って, gnome-shellを使うのをやめた. 使うのをやめる機会に, gnome-shellについてレビューする. gnome-shellの良い点 gnome-shellは言われているほど悪くない gnome-shellは自分の周りではよくボロクソに言われていると感じる. 特に日本ではその傾向が強く, それがc
ブログ記事からタグデータを削除した, そもそもブログにタグは不要
このブログでは, 今までタグデータをyamlに書いていて, そのうちhakyllのタグクラウド機能でタグ検索を出来るようにする予定だった. しかし, それはやめて, 記事データからタグデータを全て削除した. 理由は以下. タグを書くのが面倒くさい 記事からどのタグを抽出するか タグの表記ゆれの対処 新しいタグの追加 これらは私が楽しくやれる作業ではない. 他の人のブログでタグ機能を使ったことがない qiitaのような多人数投稿サイトならともかく, 個人のブログでタグ機能を使ってまで検索しなければい
ディスプレイマネージャでxmonadを起動
デスクトップPCなどでは.zloginにexec startxを書いて自動でXが起動するようにしても良いが, ラップトップPCでは流石にロック機能などが欲しいので, lightdmなどのディスプレイマネージャ(ログインマネージャ) を使いたい. セットアップに少し詰まったのでメモ. 新しいセッション設定を書く必要はない /usr/share/xsessions/に新しいセッションを追加するのは, 私の環境では必要なかった. 何故ならば, 私のxinitには/usr/share/xsessions/Xses
XPS 13 9360(2016年発売)にgentooをインストール
パーティションの切り分け 本の虫: LenovoのWindows 10 Signature Edition PCにLinuxのインストールを妨害する機能が発覚 みたいな話があったので少し不安に思っていたが, 案の定そのままだとSystemRescueCdではSSDを認識できないことが発覚した. しかし, DellはLenovoとは違い, RAIDモードをちゃんと無効化出来るようにUEFIを設定している. 多数の警告を無視しつつ, UEFIでRAIDモードをAHCIモードに切り替えると, ちゃんとSSDをn
XPS 13 9360(2016年発売)を購入した
到着したので書く. 購入理由 これまで使っていたXPS 13 L322X(2013年発売)にあまり不満はなかったが, ファンがぶっ壊れたのか, 少し負荷をかけると異音を放ち, 静かな場所だとかなり気まずい CPUをケチってCore-i5でオーダーしたため, ビルドが遅い 新しいPCは全体的に昔のより軽いと聞いて魅力的に感じた ため新しいPCを探した. USキーボードのものを発注できて軽くてそこそこの速度を持つPCが結局XPS 13しかなく, 丁度15%セールの最終日だったのでつい購入してしまった.
lightdmに引っ越したら, nvidiaドライバがkernel panicを引き起こす原因がgdmだったことがわかった話
問題 数年前から, PCを起動するとたまにnvidiaドライバが発狂して, linuxがkernel panicを引き起こして電源を落とすしかない状況になることがあった. NVidia/nvidia-drivers - Gentoo Wikiや nvidiaのフォーラムを見ても, 似たようなログを出してpanicになる現象はあったが, その解決方法を試してみても, 全く改善しなかった. しかし, 全く起動しないというわけではなく, 50%ぐらいの確率でkernel panicになるという状況だったので,
highlight.jsを全ての言語に対応させる
このブログのシンタックスハイライトにはhighlight.jsを使っている. 膨大な言語に対応し, また多くのスタイルに対応しながらも軽量なフレームワークである. このライブラリをセットアップするときに多少ハマったので, 問題点と手順をメモしておこうと思う. 最終的な方法だけ知りたい人はbrowserifyの項まで飛ばして良い. CDNは少数の言語にしか対応していない おそらく大半の人は, Getting highlight.jsに載っているように, <link rel="styleshe
edコマンド世界ではwqは1文字?
謎 ちょっとedを実装してたら謎を見つけました GNU 'ed' Manual より引用. All ed commands are single characters 全てのedのコマンドは1文字です (1,$)wq file Writes the addressed lines to file, and then executes a 'q' command. (1,$)wq file ファイルに指定した行を書き出し, 'q' コマンドを実行する wqは1文字だった…? そんなことはない
ブログを作りました
ブログを作る理由 月並みな話だが, アウトプットをしないと成長が鈍るからである 数カ月前の記憶を消失することがよくあるのでメモを取っておきたい 思考を文章化することによりストレスが減少するかもしれない 自分にとって価値のないと思う情報でも, 他の人にとってはそうではないこともある なぜQiitaではダメなのか Qiitaはきわめて便利なサイトであるし, 私も記事を投稿したことはあるし, よくコメントなどはする. なぜこれをそのまま使わないか Qiitaを使いたい理由 優れたmarkdownで投稿