ソフトウェア

2021年04月13日

【VSCode】mdwiki をスムーズに閲覧する方法

大規模なWiki システムは必要ないけれども、ちょっとしたことを階層的にまとめるのにちょうどいいmdwiki ですが、最近ではブラウザで手元のmdwiki.html を開いても正しく表示されないことがあります。

そんな時にVSCode の拡張であるLive Serverを使うことでスムーズに閲覧することができます。

使い方

上記リンク先を見てもらえばわかるので詳しい方法は割愛します!
簡単に言えば、mdwiki.html ファイルをVSCode で開いて、画面下の「Go Live」を選択してアクセスするか、コマンドパレットから「>Live server: Open with Live Server」を選択してアクセスすることで閲覧できます。

それでは良いmdwiki ライフを!



rabbitcats at 20:00|PermalinkComments(0)

2021年04月09日

【Googleスプレッドシート】INDIRECTとADDRESSとMATCHを使って値を取得する

タイトルが仰々しい感じではありますが、買い物をした時の商品の値段や購入場所、日付などをgoogleスプレッドシートに追加していき、最安値とその価格を良い感じに抜き出したかったのが発端です。

いろいろと調べてみるとVLOOKUPで抜き出す方法が最初に目につきますが、それでは使い勝手が少し悪く、INDEXとMATCHを使った方が良いよとの記事もありましたがなかなか上手くできなかったのでタイトルの関数たちで実現することになりました。

ちなみに検索していたら、相互リンクしている「ソースに絡まるエスカルゴ」さまのページにたどり着いたので記事を参考に同じように解説していこうと思います。

表データの準備

まずは取得したい表データを準備します。表データはGoogleスプレッドシートにて作成しています。
作成した表は下記のとおりです。買い物(や価格調査)をするたびに行数を増やしていくことになります。

日付 場所 ツナ缶 鯖缶 おでん缶
1977/04/08 村上商店 288 358 379
1977/05/13 松井商店 250 381
1977/06/21 スーパー北斗 360 360

実際に作成した表は下記のような感じです。購入していない(価格を調べていない)ところは空白になっています。

20210408_1

各商品の最安値とそれを購入した場所を調べる

やり方は下記のとおりです。

まずはおでん缶の最安値を探します。単純にMIN 関数で良いでしょう。

=MIN(E2:E)

これを例えばセルG2に入れておきます。

次に最安値をキーとして最安値の場所を良い感じに調べます。

=INDIRECT(ADDRESS(MATCH(G2,E:E,0),2,1,TRUE))

やっていることはMATCH 関数でE列の中から最安値と一致する行番号を探し、ADDRESS 関数で行番号と列番号(2はB列のこと)からアドレス値"$B$2"文字列を作成し、INDIRECT 関数にてアドレス値の文字列からセル参照を取得します。
結果として下記の画像のように良い感じに値の取得ができます。


20210408_2



各関数の詳しい説明については下記を参照してください。

MATCH - ドキュメント エディタ ヘルプ

ADDRESS - ドキュメント エディタ ヘルプ

INDIRECT - ドキュメント エディタ ヘルプ

VLOOKUP について

VLOOKUP - ドキュメント エディタ ヘルプの使い方を見ると下記のようになっています。

VLOOKUP(検索キー, 範囲, 番号, [並べ替え済み])

この関数では問題が2つあります。

  1. VLOOKUP では検索キーに指定したキーを範囲内から探し、"範囲内の"番号で指定した列の値しか取れないこと
    今回の表で言えばツナ缶の最安値である「250」から場所の「松井商店」を探すためには検索キーに「250」を入れ、範囲は「B1:C4」とする必要があります(今後も増える可能性を考えれば「B:C」とかにする)。
    今回のようなキーが数字で調べたい対象が文字列の場合にはすべて範囲に含めても良いですが、どちらも数字だったり文字で重複が考えられる場合は範囲に含められません。
  2. 範囲に飛び値を指定できない
    こちらは調査不足の可能性がありますが、VLOOKUP の範囲指定を場所と鯖缶だけのような指定にする方法がわかりませんでした。いちおう飛び値の指定方法として「(B:B,D:D)」のような方法がありますが、うまく動作してくれませんでした。
    また、Google スプレッドシートで配列を使用する - ドキュメント エディタ ヘルプ を参考に「{B:B,D:D}」のように新たに配列を作って検索がうまくできませんでした。
INDEX とMATCH について

これでできることについては【Googleスプレッドシート】INDEXとMATCHを使って値を取得する - ソースに絡まるエスカルゴ に詳しく書かれていますのでそちらを参考にしてください。

このやり方では問題が1つあります。

  1. INDEX 関数では範囲内からでしか値を取得できない
    VLOOKUP と同様ですね。

このやり方ではINDEX の範囲を配列を使って作成することで飛び値も良い感じに検索できるので、1に挙げた問題が気にならなければこの方法で良いと思います。

続きを読む

rabbitcats at 10:00|PermalinkComments(0)

2018年02月11日

Windows 10 でソフトウェアの立ち上がりが遅い問題

できごと


新しくSurface book 2を購入して使っていたときにTortoise svn で差分表示をすると差分表示画面が2分くらい経たないと立ち上がらないため、ストレスに感じていました。
最初はTortoise svn 自体に問題があるのかと思いましたが、よくよく考えると作成したソフトウェアをビルドしたときも立ち上がりが遅くちょっと調べることにしました。

解決策



今回は調べたらすぐに解決策がありました。

very-slow-tortoisesvn-compare-to-base-since-win-10-fall-creators-update-local

どうやらSet/GetPixel に問題があったようで、次のアップデートを適用すると直りました。

KB4058258

ダウンロードファイルはHow to get this update の項にあるリンクから飛べます。

これを適用するとwinver.exe で調べられるビルドバージョンはBuild 16299.214 になります。

さいごに


このアップデートはFull Creators Update の2018年2月初めのアップデートであり、他の修正に関しては次の日本語の記事などを見てください

「Windows 10 Fall Creators Update」の累積アップデートリリース


rabbitcats at 09:45|PermalinkComments(0)

2017年06月21日

BitBucket にgit pushできない問題

久しぶりにBitBucket にリポジトリを作ってpush しようとしたときにエラーが出てしまったのでその時の解決策

環境

windows 10
git v2.12.1
日にち:20170620

エラー

$ git push -u origin

という感じでBitBucket にpush しようとするとユーザ名とパスワードの入力ダイアログは出るものの、入力したところで下記のエラーが出てしまいました。

remote: Empty password
fatal: Authentication failed for 'https://user@bitbucket.org/repo/test.git/'

やったこと

小一時間他のことをしながらいろいろと検索してみたところ、git のバージョンを上げればうまくいくと書いてある記事が見つかりました。
半信半疑で試しにv2.13.1.2 に上げてみたところ、ターミナル上でパスワード入力が求められて入力するとすんなり成功しました。

最近はバージョンを上げると大抵のことがうまくいくようでちょっと困りものですね。



rabbitcats at 22:37|PermalinkComments(0)TrackBack(0)

2017年05月27日

vs2017でのboost ビルド時エラー

vs2017 でboost1.64.0 をビルドしようとしたときに所々でエラーが出たのでその時のメモです。

環境

ツールまわり

  • visual studio 2017
  • Windows Kits 10.0.15063.0

実行環境

x86 Native Tools Command Prompt for VS 2017 を管理者権限にて実行

bootstrap.bat から呼び出される %boost_root%/tools/build/src/engine/build.bat には次のように書いてありました。

If you have Visual Studio 2017 installed you will need to build from
the Visual Studio Command Prompt for VS 2017 as we where unable to
detect your toolset installtion.

エラー

ことの始まりはbootstrap.bat を動かしたときの次のエラーでした。

execnt.c(57): fatal error C1083: include ファイルを開けません。'tlhelp32.h':No such file or directory

ということで、b2.exe とかbjam.exe が作られませんでした。

tlhelp32.h

tlhelp32.h 自体のことについては置いておいて、見つからないと言われるので適当なプロジェクトでインクルードしてみると、

C:\Program Files (x86)\Windows Kits\8.1\Include\um\TlHelp32.h

にあるとのこと。あるじゃん…
それはそうと、Prompt 上のインクルードパスを調べたところ、Windows Kits は8.1 ではなく10系列が設定されていました。

C:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\...

上記ディレクトリ以下でtlhelp32.h があるか確認したところ、ありませんでした。それじゃあ見つからないと言われるのも仕方がないですね。

visual studio 2017 を最初に入れた時にWindows Kits は10.0.14393.0 が入っていたのでそちらを確認するとファイルはあったのでどうにか14393を使うようにしたところb2.exe とかbjam.exe が作られました。

エラーは続くよ

そのあとboost をビルドしようとすると、winsock2 のインクルードでやっぱりWindows Kits は10.0.15063.0 のディレクトリを参照しようとしました...

オチ

さいごに、初心に戻ってインストーラをまた立ち上げてみたところデスクトップC++x86およびx64用 Windows 10 SDK (10.0.15063.0) がチェックついてませんでした…
チェックつけてやり直したらうまくいったので、もし同じ困り方をしたらこのコンポーネントがちゃんと入っているかチェックしてみてください。

全部ちゃんとインストールしてたと思ったのに哀しかったです...



rabbitcats at 12:01|PermalinkComments(0)