simple-web-system technology

Webに関する技術をシンプルに扱うブログ

Dartで即時関数を使ってみる(final変数にif文で値を入れたりする)

こんな感じで書ける。 JavaScriptよりも括弧が少ない。 変数宣言時に型をつけた方が間違いが少ないのでおすすめ。 final num = 42; final String message = () { if (num == 42) { return 'this is answer.'; } else { return 'wrong.'; } }(); 即時関数内に…

i3wmでxdotoolを使って、起動時に自動で必要なツールを起動するようにした

i3wmのコマンド自体で自動化できると思ったけど、そんなことなかったので、xdotoolを使った。 xdotool key super+2でworkspace 2に遷移できる。 あとは起動時間を考慮してsleepしつつ&で非同期に起動するだけ。 引っかかったところとして、xdotool key super…

i3wm と xdotoolを組み合わせて、起動時に自動で必要なツールを起動するようにした

i3wmのコマンド自体で自動化できると思ったけど、そんなことなかったので、xdotoolを使った。 xdotool key super+2でworkspace 2に遷移できる。 あとは起動時間を考慮してsleepしつつ&で非同期に起動するだけ。 引っかかったところとして、xdotool key super…

Flutterのstream(bloc)を同期的に待ち受ける方法

結論 streamは非同期的に使うのが主な使い方だが、複数のstreamを扱うにあたって同期的に同期的に値を流したい時もある stream1を処理した後に、stream2を処理みたいな そういう時は、await forを使う Future<int> getStreamInt(stream) async { var result; awai</int>…

環境変数に"\"を入れるとechoしても見えない

状況 Shellのプラグインで Keybindingの設定で環境変数を使う時がたまにある この際、以下のように環境変数を設定する # 例はfish # ただ、他のShellでも同様にバックスペースが要求される set -Ux EXAMPLE_KEY \C-t こうした時にechoで$EXAMPLE_KEYを表示し…

Terminalを録画してanime gifにする方法メモ

[evernote:678e7aa70a7b533d4738cef3e283dbfb Uploading] 結論 asciinemaで録画して、asiicast2gifを使う 色々なツールを使ってみたけどこの組み合わせが一番動作が安定していてよかった インストール homebrewなどのPackageManagerに入っていることも多いの…

VSCodeでTerminalがある下のパネルを開く方法

環境 Macで動作確認しています Windows、Linuxで操作する場合は、CmdをCtrlに置き換えると大体動くはず Panelを表示・非表示にする 下のやつの正式名称はPanelです。 Cmd + Shift + pのコマンド一覧でPanelと打つと、Panel用に用意されているコマンド一覧が…

Riverpodクラス整理メモ

Riverpod関連でクラスや関数が多すぎて訳がわからないので整理してみた。 整理方法 各パッケージのexportから主要なクラスや関数をピックアップした。 riverpod Riverpod本体。Dartだけで動く。 StateNotifierProvider StateProvider FutureProvider StreamP…

Vimの画面管理に関して Windowだけ優遇されてない?BufferとTabの待遇改善を要求する 

ウィスキーで酔ったまま書いた駄文です。 あと、Emacsを使っててVimの画面管理と大体同じことを思うことが結構あったので参考になるかもです。 Vimの画面管理の概要 Vimの画面管理には3つの概念があります Window Buffer Tab このうち、互いに関係している…

ChromebookのTerminalでfontを自由に変える方法(おまけにテーマも変える)

Chrome OS 84からTerminalの設定画面が大幅に変わりました。(テーマ機能とか結構いいです) 見やすくなったのはいいんですが、フォントがデフォルトのものしか選べなくなっています。 vim-deviconsなどでアイコンを使いたいときに困ってしまいます 解決方法…

Emacs 27だとTerminalでTrueColor表示にするの簡単だよ

TrueColorとは、256 color(8bit)よりも多い16,777,216(24bit)色で色を表示できる規格です。 iTerm2やGnomeなどよく使われているTerminalでは対応していることが多いです。 ChromebookのTerminalも対応しています。 Emacs新参者なのでよくわからないんですが…

ChromebookのCrostiniでxselとかでclipboardにコピーできない問題

Crostiniだと以下のようにClipboardにコピーする処理が動かないです。 echo hellp | xsel -bi cat sample.txt | xsel -bi これは、Redditであったwl-clipboardとおうツールのwl-copyで解決しました。 www.reddit.com こういう処理になります。 echo hellp | …

tmuxにfish shellのフルパスを書きたくなかった

tmuxは何も設定しない場合、デフォルトシェルが起動します。 大体はbashでしょう。 ただ、自分はfishを愛用していて、fishの場合はPOSIX互換性がないため、デフォルトシェルにする運用はあまり好まれなかったりします。 そのためtmuxからfishを呼び出して使…

これでいける # 普通に起動する場合 emacsclient -a "" # aliasの場合 alias='emacsclient -a ""' 自分は必ずtuiで起動したいから、更にオプションを指定している # 普通に起動する場合 emacsclient=emacs -t -a '' # aliasの場合 alias emacs="emacsclient=…

Chromebookにnix-shellをインストールする

CrostiniはLXDというコンテナ環境で動作していますが、 このままだとnix-shellがインストールできません。 詳細は以下のIssueにあります。 github.com Issueから解決方法抜粋します ctrl-alt-t でcroshを開く vsh terminaと入力 lxc config set penguin secu…

新しいプログラミング言語やフレームワークの学習方法

メインのエディタを決める vscode デバッガ強い vim emacs sublime text3 サブエディタにintellijを使えるようにする intellij デバッガ強い 日本語の書籍や公式サイトのガイドをひたすら読む クソつまらないんだけど、がんばる 何か作って実践しようとして…

Arm(armhf)のChromebookにVisual Studio Codeをインストールしてハマったメモ

VSCodeにもとうとう公式のArmのバイナリが来ました!! code.visualstudio.com さっそくChromebookにインストールしようとして躓いたのでなんとかしたメモです インストール環境 Chromebook C101PA (armhf:32bit) Debian(Crostini) 10.4 lenovo ideapad duet…

Linuxで、Android Studioのスマホ接続やadb devicesを見ると、permission deniedになる現象の解決方法

簡単に言うとroot権限でadbのdaemonが起動していないからそうなる。 特にAndroid Studioでは、裏でadbが勝手に起動しているので、結構引っかかる。 しかもWindowsやMacだとこの現象が起きないので、訳がわからなくなる。 以下のように、adbを一旦終了してroo…

Arch Linux + i3wm + i3blocksを構築するまでのロードマップ

USBにArchLinuxを焼いて、起動できるようになる パーティションの切り方について理解する Arch Linuxのインストール方法について理解する bootloaderに関して理解する ユーザーと権限に関して理解する ネット接続に関して理解する X Serverに関して理解する …

Clojureのフロントエンドに入門してみた(re-frame + VSCode)

モチベーション 以前からLispに興味はあったのですが、この記事が結構おもしろくてClojureやってみようとなりました logmi.jp シンプルな設計が好きなんですけど、Clujureを学ぶことで勉強になればいいなと また、re-frameからreactのCSSライブラリのmateria…

rustでvectorの値をiteratorで変更するときは、iter_mut()を使う

背景 rustでvectorに入ってるstructをiter().find()で取得して、その値を変更しようとしたんだけど 取り出した値にmutとかつけてもコンパイルエラーで動かなかった ネットであまり見つからないのでメモ代わりに残す 正解 以下のようにすればよかった // 正解…

coc.nvimのプラグインをinit.vim(vimrc)からインストールする設定

以下のように書けばいい " vimであれば、.vimrc " neovimであればinit.vim " これは自分の使っているプラグイン let g:coc_global_extensions = [ \ 'coc-yank' \, 'coc-tsserver' \, 'coc-snippets' \, 'coc-prettier' \, 'coc-pairs' \, 'coc-fzf-preview'…

気分はstatic? 神クラスをstaticメソッドで自動テスト可能にしてみよう

前書き Java、PHP、Ruby、Pythonといったオブジェクト指向言語を想定しています。 実はstaticは半分釣りです。 この記事は、神クラスへの対処、関数の分割やレイヤー分割に関して書いてます。 こんなはずじゃなかったのに こんなことってありませんか? MVC…

Arch LinuxでRust開発環境を整えてみた

Rustの公式サイトを見たけど、PackageManagerを介さないやり方しか載ってなかったので調べてみました。 方針 基本的にArchWikiに載ってる通りに進めるとうまくいきました。 https://wiki.archlinux.jp/index.php/Rust Rustのビルドはnightlyは怖いので、stab…

【初心者向け】Flutterを最速で入門する3つの方法

Flutterとは FlutterはGoogleが開発しているクロスプラットフォームのUI構築用フレームワークです。 現状多く使われているのはAndroidとiOSですが、将来的にはWebやDesktopアプリの制作も可能になるとのことです。 (現在WebはBetaテスト、DesktopはAlphaテ…

ArchLixux + i3wm の環境構築 覚書

自分がArchLinux + i3wmで環境構築したとときの覚書 archlinuxは一つのことをやるにも様々な方法かあって迷う。 エイヤっと一つの手法を選ぶのが大事 大抵あとでも直せる 基本インストール編 wikiのインストールガイドを一通りインストールする https://wiki…

FreeBSDをNvidia MX150が入ったノートPCで動かそうとしたら動かなかった話

表題通り エラーログをみると、以下のように表示されて終了 no screens found(ee) GhostBSDも試してみたけど、インストーラのGUI起動もできなかった こういう時、Linuxの方が情報多くて便利だと思う ちなみに同じPCでArch Linuxを動かした時は、bumblebeeを…

Elmの最初に書くと良さげなMain.elmを置いておく。ついでに環境構築最速セットアップも

Main.elm 自分がセットアップしたらいつも使ってるスニペット src/Main.elmに置いておく module Main exposing (main) import Browser import Html exposing (Html, div, input, text) import Html.Attributes exposing (..) import Html.Events exposing (o…

i3blocksを簡単にカスタマイズできる公式のblockletを使ってみる

i3blocksとは i3wmのステータスバー設定用のツール i3wmで画像検索した時に、よくステータスバーに表示されている (i3statusよりもお洒落だと思う) github.com i3blocks-contrib i3blocksが提供している公式のblocklet github.com 使い方 1. 必要な依存関…

elmで簡単にcssを読み込ませる方法

調べてもあまり出てこないのがElmでのCSSの使い方 サンプルはpure.cssを読み込ませるもの 1. styleタグをview内に定義する(非推奨だけど楽) div [] [ node "style" [ type_ "text/css" ] [ text "@import url(//cdnjs.cloudflare.com/ajax/libs/pure/1.0.1…