Better Engineer Life

記事を頻繁に書き直す性格なのでごめんなさい。

ResharperのPerformance Guide〜 Resharperが重いから使っていない人にこそ試して欲しい

ある日の出来事

Visual Studioからの通知をずっと無視していました。

見ると「Resharper Ultimate : Configure settings to improve performance」

f:id:rimever:20181114072439p:plain

 

Performance Guide

クリックすると、パフォーマンスを向上させるために、Visual Studioのこの機能をオフにしてみてと案内してきます。

Performance Guide - Help | ReSharper

詳しいことは上記のリンクを見ればわかるのですが、ここでいくつか紹介します。

私自身、パフォーマンス改善の余地があるので試してみると良いかと思います。

 

Disable automatic formatting by Visual Studio

何かしらのテキストをコピペするときにVisual Studio側で自動フォーマットするのを無効にします。

タツムリのマークがついているように意外に重い機能なようです。

確かに、文字列とコピペすると応答なしになったことがあったような……。

これは無効にしておきます。Resharperが処理してくれるので。

 

Disable XAML Designer

XAML Designerは重いらしいです。

下記の記事で非常にリソースを使うことがわかっていると説明されています。

この記事ではユーザーからの不満が記載されてはいるのですが、XAML DesignerなしでWPFの開発は出来るのか? うーん。

under review
I suggest you ...
  • 2011 votes
  • 59 comments

Improve the XAML Designer performance

This suggestion is migrated to Developer Community. Please use below link to view the current status.
https://developercommunity.visualstudio.com/content/idea/351187/improve-the-xaml-designer-performance.html
It often takes several seconds for a XAML Window to fully display. The editor is con...

visualstudio.uservoice.com

Disable CodeLens for all languages

CodeLensが重いのは前々から知ってました。これもオフで。

Resharper関係なしにオフする機能と思ってます。

この部分、誰が修正したかわかりはしますが、そんな犯人探ししても捗らないので。

 

Do not save autorecover information

自動回復情報を保存しないとのことです。

下手にクラッシュした時には修復不可になります。

重くなっているフリーズして本末転倒と言いたいのかもしれませんが、いざ大事な時に限ってクラッシュすると感じるのが人間の性なので、私にはできません。

 

最後に

結局、私は下記のように設定しました。

 

f:id:rimever:20181114073219p:plain

会社の同僚からもライセンスがあるのにResharperは重いから使わないという意見は聞くのですが、それは確かです。

が、私としてはResharperなしとありでトータルで開発効率を考えると断然使えれば使う一択です。

 Visual Studio 2017では、Visual Studio自身が賢くなってますが、まだまだと言ったところです。

使わない人には、もう一度このオプションを試してもらいたいですね。

 

Visual Studio CodeでJupyter Notebookを使う

基本的なことは下記の記事を見ていただければいいと思います。

www.atmarkit.co.jp

似たような記事を投稿したところで、紛らわしいだけですし。

ただし、上記の記事だけでは戸惑った部分があるので、その辺りをフォロー出来ればなと思います。

ファイル拡張子は.py

Jupyter Notebookでは、ipynbというファイルとなりますが、Visual Studio Codeでは.pyファイルとなります。

Visual Studio Codeでipynbファイルを開こうとするとわかるかと思いますが、.pyファイルとして変換するか確認されます。

f:id:rimever:20181115073507p:plain

セルの区切りは「#%%」

それだったら、普通のpythonファイルと区別できないじゃんとなるのですが、#%%と宣言することでセルの区切りを表します。

「#」はPythonでは1行コメントとなりますので、それを利用した記述ということのようです。

Visual Studio CodeでJupyter Notebookとして扱いたい場合は、まず「#%%」を宣言しようということです。

### その他・使ってみて

  • PythonだけでなくJupyterのVisual Studio Code拡張機能のインストールを忘れずにしよう
  • Visual Studio CodeのUpdateも忘れずに
  • Jupyter Notebook Serverに接続するまでに時間がかかる。
  • PyCharmだとカレントディレクトリが変な位置になってファイルを相対パスで扱いづらかったが、その心配はない。
  • インテリセンスについては問題なし。

f:id:rimever:20181114211203p:plain

結論としてJupyter Notebookでcsvを扱っている自分にはPyCharmよりVisual Studio Codeの方が良さそうです。

f:id:rimever:20181114212158p:plain

あとはShift + Enterでガンガン試して行きましょう。

f:id:rimever:20181116212356p:plain

しばらく使ってみました。

左右に画面分割して左で入力して右で結果を確認するのですが、 本家の入力と結果が一つの画面に表示される方が使いやすいです。

結局、Jupyter Notebookに戻りました。

ゆるふわ C# もくもく勉強会 #63〜QiitaのC# Advent Calenderのネタ探しもしないとね

weeyble-csharp.connpass.com

私、QiitaのC#のAdvent Calenderに登録していました。

なのに、全くネタがなく。 Xamarin.Macをやろうかと思っていたのですが、 XamarinのAdvent Calenderもあるのでどうしようかなと。

Accord.NET

C#機械学習のライブラリを紹介していただきました。

accord-framework.net

せっかくなのでGitHubリポジトリを落としてみることにします。

サンプルをちょろっと見た所、本当に、それっぽい。

        [MTAThread]
        static void Main(string[] args)
        {
            double[][] inputs =
            {
                /* 1.*/ new double[] { 0, 0 },
                /* 2.*/ new double[] { 1, 0 }, 
                /* 3.*/ new double[] { 0, 1 }, 
                /* 4.*/ new double[] { 1, 1 },
            };

            int[] outputs =
            { 
                /* 1. 0 xor 0 = 0: */ 0,
                /* 2. 1 xor 0 = 1: */ 1,
                /* 3. 0 xor 1 = 1: */ 1,
                /* 4. 1 xor 1 = 0: */ 0,
            };

            // Create the learning algorithm with the chosen kernel
            var smo = new SequentialMinimalOptimization<Gaussian>()
            {
                Complexity = 100 // Create a hard-margin SVM 
            };

            // Use the algorithm to learn the svm
            var svm = smo.Learn(inputs, outputs);

            // Compute the machine's answers for the given inputs
            bool[] prediction = svm.Decide(inputs);

            // Compute the classification error between the expected 
            // values and the values actually predicted by the machine:
            double error = new AccuracyLoss(outputs).Loss(prediction);

            Console.WriteLine("Error: " + error);

            // Show results on screen 
            ScatterplotBox.Show("Training data", inputs, outputs);
            ScatterplotBox.Show("SVM results", inputs, prediction.ToZeroOne());

            Console.ReadKey();
        }

勉強会中に仕事の電話がかかってきましたが、さほどの問題ではなく、事なきを得ました。

あとはデータ分析のためのデータの転記作業がやっと終了。

これでデータ分析ができます。

結局、Qiitaのネタは見つからず。

Mac

隣の方からダウンロードをクリックした時の挙動がオシャレと言われました。

f:id:rimever:20181115212627p:plain

が、

  • 削除できない。
  • そもそもMacにはWindowsでいうDeleteキーがない

などMacユーザーから不満が。

HoloLens2

私、知らなかったのですが、HoloLens2が出るそうです。ウワサですが。

japanese.engadget.com

33万は、かなり高いハードルでしたが、どこまで安くなるのか。

軽量化も期待したいですね。MS Tech Summitで体験したのですが、正直、重いです。

きちんと装着しないと、ずり落ちてしまいます。

私、建設業界でヘルメットして仕事したことありますが、普通のヘルメットだけでも頭が辛いです。

Pythonでワールドクラスのラガーマンのデータを集める〜通算トライ数トップは日本のあの人

機械学習もしようかと思ったのですが、下記に引き続き、ニュージーランドだけでなく世界のラグビー選手のデータを集めることにしました。

rimever.hatenablog.com

集めたデータを分析してみる

頑張って集めたデータを眺めてみます。

またまた、Pythonで、pandasを使います。

f:id:rimever:20181113230752p:plain

やはり、注目すべきはトップの成績を残したプレイヤーたちです。

※ここでのデータはテストマッチの成績について述べています。

もっとも勝利したのは?

f:id:rimever:20181113230924p:plain

リッチー=マコウ。ニュージーランドの名主将です。世界最優秀選手に3回も選出されています。

131勝17敗。

フランカーですのでポイントゲッターではありません。ですが、勝利数でトップ。

やはり、名選手は記憶にも記録にも残るものということでしょうね。

動画を見たのですが、私には彼の凄さが全然わかりませんでした。

ボールを奪う技術が高いのですが、私が見ても、何が起きたのかわからないのです。

ちなみに出場試合数もリッチー=マコウの148も最多になります。

rugflrug.win

逆にもっとも負けたのは

不名誉な記録にも思えますが、一人で戦うスポーツではないですから。

負けても負けても不屈の選手で国を背負って戦い続けた選手です。

セルジオ=パリセ。イタリアの選手です。34勝100敗です。

rugby-rp.com

総得点は、やはりダン=カーターだけど・・・

総得点・コンバージョン・ペナルティゴールは全てダン=カーターです。

rugbyhack.com

総得点が高いため、キックでの成功数も多いです。

ですが、ドロップゴール数でダン=カーターを上回る選手がいます。

それが、ジョニー=ウィルキルソンです。

www.jiji.com

ラグビー界のベッカムとして、人気選手だったようです。

総得点も1246点です。

通算トライ数は日本のあの人!

大方、オールブラックスニュージーランド代表)の伝説プレイヤーなのだろう、と思いました。

ジョナ=ロムーとか。

f:id:rimever:20181113080829p:plain

え? え?

Daisuke Ohata | Rugby Union | Players and Officials | ESPN Scrum f:id:rimever:20181113080952p:plain

ほんとだー!

テレビ番組、スポーツマンNo.1決定戦で活躍していた記憶があります。

Webスクレイピングの難しさ

色々、思うように行きませんでした。

C#ではHtmlAgilityというのを使ってWebスクレイピングは経験あったのですが、

機械学習 & Pythonもくもく会 (初心者歓迎!)

weeyble-data.connpass.com

もくもく度は、かなり高いです。

私、自己紹介以外一言も発しませんでした。

今回は、学生さんの参加が多かった印象。

学生のうちからこういう場に出るのは、すごいなーと思います。

私が勉強会に参加するようになったって20半ば、いや20台後半からです。

あろうことか、やってたことは、データ分析のための地味なデータ集めをしていただけです。

Pythonもほとんどなし。

本当に成果を挙げるというのは、難しいです

昼間に襲いかかってくる睡魔との私の戦い方

現象

 夜遅くまで仕事をしているわけでもなく、狩りに明け暮れているわけでもないのに強烈な眠気に襲われるということが毎日のように起きていました。

 睡眠障害ではないかと疑うほどでした。 

計測せよ

そこで購入したのは下記。

www.withings.com

 

体重を毎日入力するのが手間なので、Withingsの体重計を購入していました。

Health Mateで体重も睡眠情報も一括で管理できるのは良いなということで購入。

ベッドの下に置くだけなので、設置は簡単でした。

でありながら、お昼寝や途中に起きたかも判定されているところからすると結構正確かと。

 いちおう、医療関係の仕事をしているので、「睡眠時無呼吸症候群」という言葉を知っており、これではないかと思っていました。

これはSpO2を計測するとわかります。残念ながら、この機器では計測できません。もっとお金を出さないと……。

計測結果

f:id:rimever:20181024064523p:imagef:id:rimever:20181026073636p:image

日によっては20%程度しか回復していないと判定されるなど、睡眠の質が悪いなということはわかりました。

時間は長くても浅い眠りで、熟睡できていない。大方そんなことだろうとは思っていましたが、そのようでした。

これが、デジタルで確認出来るのは素晴らしいですね。

パフォーマンスチューニングの世界でも、「推測するな、計測せよ」と言いますが、その計測を行うのがどれほど難しいことか。

ですが、実際にどのような対策をすれば改善されるかまでは教えてくれません。

 

対策

下記のようなサイトを見ながら検討しました。 

 

furikake.doda.jp

 

カフェインは夕方以降は取らない。

取るなら朝から。カフェインの摂りすぎは頭痛に繋がる気もします。

 

糖質制限

体重のためにも、昼間眠くならないためにもなるべく糖質を取らない。

ある日なんてハンバーグ+豆腐+ご飯なしということもありました。

ずっと思っていたのですが、多少我慢できるようにはなってきたかなと。

が、たまに食べてもいいやと食べ始めると食べるようになってしまったりします。

私が、糖質制限できるようになったのは下記の漫画がきっかけです。

yakb.net

枕 

枕は低反発に変えてみましたが、しっくりこないのでもとに戻す。

 

寝る時の姿勢

横向きが寝やすいのですが、体の片側に体重がかかって体を痛めたり、寝違えが起きる気がしたので、ずっと仰向けで寝ようとばかりしてました。

寝返りしてしまうので横向きに寝ても問題ないと知りました。

これは結構、効果があったような気がします。ですが、いびきの時間が増えたような。

 

水分

夜中トイレに起きることがないように、なるべく水分を取らない。

f:id:rimever:20181027224150p:imagef:id:rimever:20181027224139p:image

 

その結果、改善は見られました。

 

f:id:rimever:20181104093211p:image

 

 

 

第17回 日曜日から五反田もくもく会

godanda-mokumoku.connpass.com

初参加です。

駆け出しエンジニア or 初心者 非エンジニア歓迎と書いてあることもあって、非エンジニアの方が多く参加されている会でした。

会場が一般の住宅街にあるので迷いました。

600円でコーヒー無料+wifi/電源ありはありがたいです。

Alexaが導入されており、「Alexa、音楽かけて」というと音楽がかかるようになっています。

今回は下記の記事でやったことをパワーアップさせることにします。

rimever.hatenablog.com

その他、話したこととか

  • SESとスタートアップのどっちがいいのか
  • リモートワークは話したことを文書として提出したり、実は手間
  • 青い銀行のシステムは完成するのか

boxil.jp

修正しました

あんまりよろしくない作法があったので記述を削除しました。

気をつけます。

shinyorke.hatenablog.com