書評「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 起動時 ...
AtCoder Beginner Contest 162
AtCoder Beginner Contest 162に参加したので、学んだことを書いておきます。
問題と結果
問題名
結果
A
Lucky 7
WA:不正解
B
FizzBuzz Sum
AC:正解
C
Sum of gcd of Tuples (Easy)
TLE:実行時間制限超過
D
RGB Triplets
未提出
E
Sum of gcd of Tuples (Hard)
未提出
F
Select Half
未提出
A:Lucky 73 桁の数値に「7」が含まれているかをチェックする問題でした。解けたはずなんですが、最後のテストケースで失敗していて原因はよく分からなかったです。
B:FizzBuzz Sum有名な「FizzBuzz 問題」で、Fizz、Buzz、FizzBuzz いずれでも無い場合の和を求めるという問題でした。単純だったので、これは解けました。
C:Sum of gcd of Tuples (Easy)3 つの変数 a, b, c があります。それぞれを 1 から与えられた数字まで増やしていき、全パターンで 3 つの数字の ...
SQLServerの日付
TL;DR
スラッシュ(/)区切りで日付を設定するときは、シングルクオーテーション(’)で囲む
datetime 型に Insert しようとすると最近、Excel のデータを DB に投入する機会がありました。
単純に Insert 文を書いて入れようとしたのですが、データの種類として文字列や数値、そして日付が混ざっていたので「気をつけないと変に変換されそうだなー」と思っていました。
案の定、次のような SQL を書いて失敗しました。
12-- 日付を入れようとした失敗例INSERT INTO Table_1 VALUES (2020/1/1);
このクエリを実行してもエラーは出ません。でも、実際に設定される値は想定とは異なります。
1234-- 実際に設定される値Datetime---------------------------1905-07-14 00:00:00.000
原因は…想定した「2020/1/1」が設定されなかった原因は、シングルクオーテーション(’)で囲んでいないからですね。
12-- 意図した日付が入る例INSERT INTO Table_1 VAL ...