MySQL + phpMyAdmin環境をDockerで構築する
WordPress の開発環境を作るために、MySQL + phpMyAdmin 環境を作る必要があったのでメモしておきます。簡単に作りたかったので、WSL2(Windows)上の Docker で動かしました。
動作環境
WSL2(Windows 10 Pro)
Docker
Dockerdocker-compose.ymldocker-compose.ymlは次のように書きました。MySQL のデータはdocker-compose.ymlと同一階層のmysqlフォルダに保存するようにして、永続化させます。
123456789101112131415161718192021222324252627version: "3"services: db: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: w ...
Social Hack Day に参加しました
2021/10/23(土)に開催された「Social Hack Day Online #32」に初めて参加しました。
Social Hack Day とはCode for Japan が開催してる 1 日限りのハッカソンです。ただ、ふつうのとは違って、実社会での改善を目指して継続的に活動されているそうです。最近は毎月開催されているようで、今回も以前からの継続プロジェクトが多かったです。
参加するにはPeatix の Code for Japan のイベント一覧に次回分のイベントが表示されるので、そこから申し込めます。基本的に無料です。
当日は、Gatherという、昔のドット絵 RPG みたいなコミュニケーションツールでアクセスします。(ブラウザのみで、インストール不要。今回初めて使われたようです)初回は参加者向けの説明があるので、開催 15 分くらい前に入りましょう。開始後、全員の自己紹介があるので、スプレッドシートに入力しておくとよいです。(その場で書いてる人がほとんどでしたが)ひとり 15 秒くらいだったので、準備しなくても書いてあることを読めば OK でした。
実際に参加してみて ...
書評「1分で話せ」伊藤羊一
「1 分で話せ」(伊藤羊一著)を読んだので感想を書いておきます。
ピラミッドストラクチャー結論 → 根拠 → 実例の順で 3 段ピラミッドを作り話すことで、説得力を増す伝え方ができるということです。
スッキリ・カンタン「スッキリ」というのは文字や言葉を少なくし、ややこしくしないということです。これはスライドと話す言葉両方に当てはまるそうです。また、難しい言葉を使わず中学生にも分かる程度の言葉を使うというのが「カンタン」です。一度聞き手が言葉を理解できなくなると、話が進んでしまいそれ以降聞いてもらえなくなるためということでした。
イメージを描いてもらうロジカルな話だけでは人は動かず「頭の中に生まれたイメージ」が必要とのことです。聞き手にイメージさせるか、イメージの中に聞き手を引き込ませることが重要と書かれていました。
感想結論から話すと分かりやすいというのは知っていましたが、ピラミッドストラクチャーの話はなんとなくしか分かっていませんでした。まずは紙に書き出して考えてみようと思います。ロジックが正しいだけでは人は動かないというのは、コロナ禍で本当にその通りだよなと実感しています。
1 ...
書評「アンソーシャルディスタンス」金原ひとみ
金原ひとみさんの「アンソーシャルディスタンス」(Unsocial Distance)を読んだので感想を書いておきます。
この本は、TBS ラジオ「伊集院光とらじおと」で紹介されていたのを聞いて知りました。5 つの作品が収められた作品集となっています。
1 つ目の「ストロングゼロ」は、その名の通り高アルコール飲料に溺れていく出版社で働く女性が主人公になっています。飲食店でのお酒の提供が自粛要請されるなか、高アルコール飲料が売れているのはニュースで見聞きしていました。そういうこともあり、自分でもイメージしやすく読みやすかったです。
自分の働き方もコロナ禍で大きく変わり、悩みもあります。そういうところが似ていて、解決できていないのも同じだなと思いました。それ以外にも「なんで、読みたいと思えたんだろう」と考えてみると、「警察 24 時」に似ているなと思えてきました。自分は警察から追われたり、捕まったりしないけど、現実世界で起きているスリルを味わえて少し興奮しているようでした。
最後に、この本には大人向けの内容が書かれていますので、苦手な方はご注意ください。
金原ひとみ アンソーシャルディスタ ...
ReactiveProperty + PrismでV <=> VM <=> Mを双方向で連携する
ReactiveProperty + Prism で、V <=> VM <=> M を相互連携するアプリのサンプルコードを書いておきます。
ゴール
Model で設定した値が、View のテキストボックスに表示される
View のテキストボックスで入力した値が、Model に反映される
Modelテキストを保持するReactivePropertySlim<string型プロパティを用意します。バリデーションはいらないのでReactivePropertyよりも動作が軽いこちらを使います。
123456789public class Model: BindableBase{ public ReactivePropertySlim<string> Text { get; set; } public Model() { Text = new ReactivePropertySlim<string>(); }}
ViewModelView(画 ...
Seleniumでブラウザを操作する
C#で Selenium を使ってブラウザを操作する上で便利なコードを書いておきます。
指定した URL を新しいタブで開く123456// 新しいタブを開いて選択する((IJavaScriptExecutor)driver).ExecuteScript("window.open();");var newTab = driver.WindowHandles.Last();driver.SwitchTo().Window(newTab);// 指定したURLに遷移するdriver.Navigate().GoToUrl("http://example.com");
タブを選択するdriver.WindowHandlesに全タブの実体が入っているので、取り出してチェックしていけば OK です。
12345678910// 開いているタブからURLが"http://example.com"のタブを選択するvar handles = driver.WindowHandles;foreach (var handle in handles ...
C#でSeleniumを使ってブラウザ自動操作をする
Selenium を使うと、ブラウザを自動で操作できます。使い方としては、① 要素を見つけて、② クリックなどの操作を行うことになります。
1. 要素を見つける要素を見つけるには、HTML の ID や Class 名、XPath を使うことができます。XPath を使うと柔軟に要素を探すことができます。
12// XPathを使う場合(Class名に"example"を含む要素)var element = driver.FindElement(By.XPath("//div[contains(@class, 'example')]"));
XPath はこのページが分かりやすかったです。
クローラ作成に必須!XPATH の記法まとめ
要素が表示されるまで時間がかかる場合は、それまで待つ必要があります。
123// 要素が表示されるまで、最大5秒待つnew WebDriverWait(driver, TimeSpan.FromSeconds(5)) .Until(ExpectedConditions.ElementTo ...
C#でSelenium(ブラウザを自動操作)を使うための準備
C#で Selenium を使ってブラウザ(Chrome)を自動で操作してみました。準備に必要な情報がちらばっていたので、まとめたいと思います。
Nuget からパッケージをインストール下記のパッケージをインストールします。
Selenium.WebDriver(必須)
Selenium.WebDriver.ChromeDriver(必須)
WebDriverManager(任意。Chrome 操作に必要な「ChromeDriver」最新版を自動取得)
一番下の「WebDriverManager」は任意ですがインストールした方が便利です。Selenium から Chrome を操作するためには対応したバージョンの「ドライバ」が必要です。Chrome は頻繁に更新されますが、「WebDriverManager」を使えばドライバを自動取得できます。
Selenium から Chrome を操作する12345678// ChromeDriver最新化new WebDriverManager.DriverManager().SetUpDriver(new ChromeConfig());/ ...
HttpRequestException:「Error while copying content to a stream.」の対策
C#で HttpClient を使って、とある API からデータを取得していたのですがSystem.Net.Http.HttpRequestException: Error while copying content to a stream.が発生してしまいました。根本的な解決はできなかったのですが、調査した内容や実際にやった対策を書きます。
発生したエラーPrism(WPF)で HttpClient を使って API を呼び出すところで、エラーが発生したりしなかったりする状況でした。(発生条件は不明)
.Net Framework 4.6.1
Visual Studio 2017
123456789101112// コード// 参照:https://dekirukigasuru.com/blog/2020/04/24/csharp-httpclientfactory/// Microsoft DependancyInjectionvar provider = new ServiceCollection().AddHttpClient().BuildServiceProvider ...
Dockerでfirebaseローカル実行ができなかった原因
Docker で構築した開発環境で、firebase のローカル実行ができなった原因を解決したので書いておきます。
TL;DR
Docker で firebase をローカル実行して、ホストから接続するには –host 0.0.0.0 が必要
12# hostオプションがないとホストのブラウザから閲覧不可$ firebase serve --host 0.0.0.0
firebase ローカル実行firabse はローカルで実行する機能があります。いちいちデプロイしてると時間がかかるので、ありがたいですね。
12# ローカルで実行$ firebase serve
ローカル実行したのにつながらない…開発環境は次の記事を参考にして、Docker で構築していました。
[Firebase] Cloud Functions で消耗したくない人のために、開発環境のベストプラクティスをまとめていったら Docker に行き着いた話(随時更新)
で、同じようにfirebase serveでローカル実行したのですが、ホストのブラウザからつながりませんでした。
firebase 起動時 ...