SwiftUIのモーダルダイアログ SwiftUIでモーダルダイアログ的なものを出すには alert confirmationDialog 番外編として Menu や Sheets などの他の方法 があり、そのうち、 alert と confirmationDialog で複数のボタン、たとえば 「OK」と「キャンセル」を配置したとして、デフォルト(太字表示されていたり、キーボード操作で確定したときに選ばれる)ボタンを変更する方法を説明。 alertの出し方とデフォルト .alert("メッセージ", isPresented: $showAlert, actions: { Button("OK", …
Read More.NET Core 3.x プロジェクトで、特に Program.cs になにか書いてなければロギングの設定は、 appsettings.json (環境の違いで appsettings.Development.json なども同じ意味で含む) が参照されている。 かつ、デフォルトの設定では、特に記載はないが、以下の点でなかなかつらい。 ANSIエスケープシーケンスによるカラーリングが辛い。コンソールで見てる分にはいいのだが… 複数行ロギングがどうにも見づらい。このへんは趣味の問題だが、単一行にしたい… ということで、このあたりを appsettings.json で設定する。 appsettings.json の設定箇所 当該箇所 …
Read More(例えば)formなどからアップロードされたり、GoogleDriveから開いたファイル、が、 Microsoft Word形式(.docx形式)である場合に、これを Google Doc に変換する方法について。 Blobの変換ではエラーになる 最初に考えるのはおそらくこのようなことだが、これはうまくいかない。 const blob = file.getBlob(); // これが、Microsoft Word(.docx)形式のblobだとする blob.getAs(MimeType.GOOGLE_DOCS); // ここで「変換できない」エラー wordからGoogle Docs形式には変換できない。 ちなみに、 …
Read MoreGoogle Calendar APIを使って、サービスアカウントからカレンダーを更新…したいができなくてハマったメモ。 前提として、Google Workspaceで使っている「組織」があって、カレンダーも管理者もサービスアカウントもそこに属しているという場合の話(サービスアカウントは、厳密にはアカウントに属している) カレンダーの共有設定で変更を許可できない 編集したいカレンダーの共有設定で 特定のユーザーとの共有 をする…も、権限のドロップダウンボックスを見ると、予定の変更があるのに許可できない…という問題。 変更を許可できない 組織の権限を委任する GCPではなく、 Google Admin から更新する。 …
Read More突然の問題 iOS14.6から(14.5以前では発生しない)、例えば、以下のようなURL mailto:tanigon@tanigon.info?subject=hoge&body=test%0atest%0a を叩いて、iOS標準メーラーを開くと test<BR>test<BR> のように謎の大文字brタグに置換されてしまい、改行が正しく扱えない。 Gmailだと? ちなみに、iOS14以降、デフォルトメーラーを設定できるようになっている。設定 -> Gmail -> デフォルト…で設定した上で上記と同様のことを行った場合は挙動がまた異なる。 ただ、こちらも改行はされず。さ …
Read Morewsl2インストールメモ 年末にマシンを更改してwsl2をインストールしたのだが、いろいろ躓いたのでメモ。 MSI X570 Gaming Plus + Ryzen 5600X。BIOSで一部設定する必要があるので、参考に。 AMD+AMI BIOSの人は該当する人がいるのかも? Windows Update まずはWindows Updateを終わらせておく wslを有効にしておく コントロールパネル > プログラム > Windowsの機能の有効化または無効化 から、Hyper-V, Linux用Windowsサブシステム, 仮想マシンプラットフォームを有効にしておく。 Windowsの機能のこれを有効化しておく 再 …
Read More前回の続きです これまでの目次 その1 … 基本編 その2 … waitやwindow_handle 要素が出現するのを待つ 通常でも、手続き的に連続して書いておけばページロードがある程度完了するまでは待ってくれる。 しかし、xhrでの読み込みやスクリプトによるDOMの改変、展開などである要素が出現するのを明示的に待つ必要がある場合もある。 そんなときは Selenium::WebDriver::Wait を使う wait = Selenium::WebDriver::Wait.new(:timeout => TIMEOUT) wait.until do driver.find_element(….).displayed? …
Read MoreSelenium WebDriverで遊ぼう Selenium WebDriverがあれば、httpを直接喋ったり、mechanizeやnokogiriで遊ぶより以下のことが出来て嬉しい。 javascriptを使ったレンダリングなどに対応できる javascriptをコールできる chromeなどブラウザの挙動そっくりそのままを再現できる Selenium WebDriver on Ruby で、いろいろ遊んだり、今流行の(多分嘘)RPAしたりやっていくぞ! これまでの目次 その1 … 基本編 その2 … waitやwindow_handle 準備 これはごく普通に gem install selenium-webdriver で …
Read MoreAWS Mobile SDK for Unity が Unity2019でエラー AWS Mobile SDK for Unity は Unity2019では名前衝突したりなんたりでうまく動かない件 このGitHub issue を見ると AWSSDK for Unity はすでに “no longer supported.” とのことで、「そんなぁ」ってなるなど。 ARM64の件もあるが、InvalidDataExceptionがかぶるという問題も。 Addressable使ってるプロジェクトなんかだと、 ‘Ambiguous Reference …
Read MoreRails.cacheにmodelをキャッシュする Rails.cache などを使い、ActiveRecordのモデルのインスタンスをキャッシュ(==シリアライズして保管)する、ということがある。主にパフォーマンスチューニングのために、DBクエリを減らそう、というような場合。 そのモデルが、has_many などの関連(association)を持っている場合、単純にキャッシュにwriteすると、これらの関連のキャッシュが書き込まれてしまう。一件問題なさそうに見えるが、たとえば、関連先のモデルに対して直接アクセスしたりして内容が書き換わる可能性があったりして不都合なこともある。 そういった場合には、モデルをシリアライズ(Ruby的 …
Read More