タッチパッドジェスチャ

クリック機能がない

クリック機能がないタッチパッドで苦労したのでメモです

タッチパッドジェスチャ

タッチパッドジェスチャ Windows 10

FRT103

ダブルタップでクリック

指2本でタップすると右クリック

無料で使えるVisual Studio Code で、C#開発の始め方

Visual Studio Codeの特徴

  • 無料
  • 機能拡張が充実
  • Microsoft製で、Mac版、Linux版もある
  • 軽いエディタになっていて、Atomでも動く

※32bit OS上ではC#のデバッガは動かない

ダウンロードはこちら

Visual Studio Codeは VS Codeとも呼ばれます。

Visual Studio Codeの設定

日本語化

プラグインの検索で japanese と入力すると、

Japanese Language Pack for Visual Studio Code

が出てきます。これをインストールし、VS Codeを再起動すると、メニューなどが日本語化されます。

C#用に開発環境を整える

C#

インテリセンスや、定義へ移動、C#のデバッグができるようになる。.NET Core(CoreCLR)のデバッグサポート

VS Sharper for c#

新しいC#クラスまたはインターフェイスファイルを追加する

C# Extensions

この拡張機能は、フォルダーツリーをトラバースしてproject.jsonまたは* .csprojを見つけ、それを親フォルダーとして使用して名前空間を決定します。

C# XML Documentation Comments

Visual StudioCodeのXMLドキュメントコメントを生成します。

この拡張機能は将来非推奨になる

C# for Visual Studio Code (powered by OmniSharp)現在、v1.23.8(2020年12月18日)からのドキュメントコメントを公式にサポートしています。をオンにすると、公式のものを使用できますEditor: Format On Type。

XMLドキュメントコメントVisualStudioCodeのサポート

NuGet Package Manager

VSCode用のNugetパッケージマネージャーGUI。Nugetサーバーから簡単にパッケージ化できるVisualStudioCodeの拡張機能

Microsoft .NET Core SDKのインストール

ここからダウンロード

実は、SDK 3.1.410では現在デバッグができない問題にあたりました。

The .NET 3.1.40x SDKs require version 16.7 of MSBuild.

For MacOS and Linux users who have Mono installed, this means you will need to set omnisharp.useGlobalMono to never until a version of Mono ships with MSBuild 16.7.

Note about using .NET Core 3.1.40x SDKs

プログラムの実行はできましたが、デバッガが動かない。なので、1つ前のバージョン 3.1.116を利用しました。

プロジェクトの作成

まず、ファイル → フォルダを開く から、プロジェクトをインストールするためのフォルダを指定しておきます。

ターミナル画面が開いていない場合は、ターミナルメニュー→新しいターミナルをクリックして、ターミナル画面を開きます。

その後ターミナルにて、 dotnet new consoleを実行します。

dotnet new console

うまく通ると、Program.csや、csprojファイルが出来上がります。

このProgram.cs上には Hello World!がコンソール上に表示されるようプログラムが書かれているので、このまま実行が可能です。

F5 キーを押します

デバッガを用いて、コンパイル→実行する際に

と表示され、Yesボタンを押下すると、

  • launch.json
  • tasks.json

が追加されます

また、環境の選択では .NET Coreを選択します。

実行方法

コンソールに dotnet run と打ち込めば、実行可能です

Hello World!

がめでたく表示されました。

x86マシンではデバッグできない?32bitではデバックできない

32bitマシーンだと、デバッグ機能が働きません。市場はみんな64bitに移行していて、32bitまでサポートする資金がないとの事。

[WARNING]: x86 Windows is not currently supported by .net core debugger.

と表示されてしまいました。

Visual Studio Code C#では x86のデバッグをサポートしていません。

正確にいうと、拡張機能

OmniSharp/omn​​isharp-vscode

がサポートしてないって事です。残念。

You aren’t doing anything wrong. x86 debugging is not supported by the C# extension. You will need full Visual Studio for that.

この拡張機能がC#のデバッグ機能を担っており、サポートしていない事が明言されています。

トヨタ プレミオ スマートキーの電池切れた! ボタン電池CR1632を安く早く手に入れる方法

Amazon 無料翌日配達

maxell コイン型リチウム電池CR1632 1個 CR1632 1BS B

300円程度で、maxell日本製が購入できます。

CR1632リチウムコイン電池、6個バック

とにかく安く、早く欲しい場合

EUKEPUI

EUKEPUIは2004年以来、一流の素材を使用した高品質のリチウムボタン電池を開発してきました。 鉛の重金属安全基準は40ppm、水銀が5 ppm、カドミウムが20 ppmの場合、EUKEPUIリチウムボタン電池の関連含有量は鉛基準よりはるかに低くなります。 これは、高性能で信頼性が高く、環境に優しいバッテリーの開発におけるもう1つのマイルストーンです。 EUKEPUIは30年以上にわたって環境にやさしい電池の開発に取り組んでおり、その実りある成果は私たちの美しい地球と次世代に捧げられています。

本社をどこに置くのかも良く分からないのですが、中国メーカーっぽいですね。

情報が少なく、Whoisを調べても eukepui.com は取得済みですが登録情報がほとんどなくたどれない。商標登録者(申請者および所有者)が、中国の住所だったというところで、中国メーカの方かなと思ったところです。

安い物には理由がある

やっぱり安いものにはそれなりに理由があります。

  • 水銀の含有
  • 外側ケースが違う

数百円の違いなら、やっぱり品質の良いものを購入した方がいい!

そう思いました。量より質を求める。体にもいいもの。環境にもいいもの。安さ優先で選んでいくと惑う事もあるけど。

Amazon 明日じゃなくてもいい

明日じゃなくても、安く、早めに欲しい

信頼のPanasonic 製品です。

パナソニック(Panasonic)[パナソニック] CR1632 3V リチウム電池 2個

楽天日本製を安く買う

メール便で安くって事で、翌日配送はちょっと厳しいです


まとめ

トヨタ プレミオのスマートキーには

CR2016 スタートシステム非搭載車

CR1632 スタートシステム搭載車

の2種類のボタン電池が使われています。電池の交換は簡単なのでディーラーにもっていかなくても、ネットでポチっと電池を注文してさらっとご自分で変えてしまうのもよいかと思います。

ExcelでPostgreSQLへODBC接続する

ポイント

インストールしているExcel のビット(64bit or 32bit)と、ODBCドライバを合わせる事

アカウント → Excelのバージョン情報

ODBCドライバのダウンロード

PostgreSQL: The World’s Most Advanced Open Source Relational Database

このページの、ODBCドライバ置き場から

ダウンロードする。

ODBCドライバの設定

Windowsの管理から、

ODBCデータソースアドミニストレータ(32ビット)を起動

ユーザDSN → データソースの新規作成

PostgreSQL Unicode ODBCセットアップする

接続設定

データ → データの取得 → そのほかのデータの取得

にて、ODBCからを選択する

ODBCからインポートにて、先ほど作成したデータソース名(DSN)を選択する

まとめ

自分のパソコンは64bitマシーンです。Windows10は、64bitバージョンを利用しています。

だけど、Officeは32bitバージョンを利用しています。64bitバージョンだとAccessが、思った動きをしないという不具合が出て、そのままずっと32bitバージョンを利用しています。

ODBCドライバは、マシーンやOSのbit数に合わせるのではなく、Officeのバージョンに合わせる必要があります。ここが抜けてると、データベースへテスト接続はうまくいくのに、実際にデータを取得しようとすると、途中でエラーが出ます。

Excel条件付き書式で1行ずつ塗りつぶす

特定のセルが、空白でなくなったら、その1行が塗りつぶされるように条件付き書式を設定します。

今回は、「確認」の日付が入るE列に、文字が入ったら、その1行が塗りつぶされるように設定します。

条件付き書式

まずは、書式を設定したい一行を選択しておく。その後、「条件付き書式」メニューをクリックする。

条件付き書式メニューを押すと、下記のようにメニューが表れる。

新しいルールを選択

書式ルールの編集ダイアログが表示される。

=$E2<>""

この中で重要なのが、全体参照の位置です。

=$E2がポイントになり、今回列方向にコピーしたいので、Eの前だけ$をつける。これが、$E$2だと一行に色はつかない。

書式のみコピー

列を選択して、コピーする。

その際は「書式のみコピー」を選択し、必要な列に同じ設定をしていく。この時に、条件が絶対参照設定になっていると、うまくコピーできない。

つまり、 $E$2となっていると、指定した行に値が入った時ではなく、$E$2に値が入ると全ての行の書式が設定されてしまう。

Excelでセル内で改行されている1行目だけを抽出する

Microsoft Power Automateを利用して、Gmail に到着したメールをExcelに転記してみました。すると、本文に余計な改行がはいっていて。

Microsoft Power Automate側でどのようにすれば改行を防げるかは分からなかったので、Excel関数を利用して1行目だけを取得するよう設定しました。

関数を利用

利用した関数は、

LEFT関数 左から指定の文字数分の文字を抽出

FIND関数 指定の文字コードもしくは文字が左から何番目にあるかを取得する

の2つです。

=LEFT(投稿確認[@投稿者],FIND(CHAR(10),投稿確認[@投稿者])-1)

今回テーブルを利用した形になっているが、テーブルを利用する必要はありません。通常のセル参照でも問題はでないので、F3とか、A1とか、そんな感じで指定してしまって構いません。

投稿者欄が、改行が入っており見にくいので、1行目だけを取得する

FIND関数

文字列の改行までの文字数がいくつあるかを調べる

FIND(CHAR(10),投稿確認[@投稿者])

これで、投稿確認[@投稿者] セルに入っている文字列の改行位置までを調べる事ができる。

CHAR(10)

がポイント。CHAR(10)が LFを表す。すなわち改行。

この関数で改行迄の文字数を求めている。

LEFT関数

LEFT関数を利用する事により、一番左の文字列から、CHAR(10) で求めた改行迄の文字数-1 で、1行目だけを取得する。

特定ページを画像を含めて他ドメインサイトへ移設 WordPress

特定のページをそのままコピー

エクスポート、インポート作業で簡単にできます。

毎回どうやるんだっけ?と思っていたので、方法をメモしておきます。

特定ページのエクスポート

DeMomentSomTres Exort

を利用します。

このプラグインは WordPress の最新3回のメジャーリリースに対してテストされていません。もうメンテナンスやサポートがされていないかもしれず、最新バージョンの WordPress で使用した場合は互換性の問題が発生する可能性があります。

最近はメンテナンスが追い付いていないのか、最新バージョンのWordPRessでのテストが行われていませんが、2021/6/21時点では問題なく稼働しました。

DeMomentSomTres Exortの使い方

ツールからDeMomentSomTres Export を選択

今回は、投稿をまるっとコピーしたいので、この設定でエクスポートファイルをダウンロードします。

すると、エクスポートしたファイルはXML形式でダウンロードされます。

インポート

移設先のWordPressにて、インポートを選択

WordPressインポーターをインストールしておきます。

ダウンロードしたXMLファイルを指定して、ファイルをアップロードしてインポートボタンを押下します。

インポートする時に、「添付ファイルをダウンロードしてインポートする」にチェックを入れるのを忘れずに

この操作で、画像ファイルを含めて移転先サイトにページをコピーしてくれます。

VisualStudio開発環境IISをLAN内スマホからアクセスできるようにする

VisualStudioデバッグ環境

VisualStudioデバッグ環境で、webアプリ開発の際、スマホからのアクセス画面を確認したいです。別に立てたIISサーバに配置するのもちょっとおっくうだし、開発しながらスマホで開きたいと思い、開発環境のローカルIISにLAN内スマホからアクセスできるように設定してみました。

開発環境はVisualStudio 2017です。

WindowsDefender ファイヤーウォールを無効

まずは、WindowsDefender ファイヤーウォールを無効にします。

IISの設定変更 applicationhost.config

VisualStudioインストール時にIIS Expressが同時インストールされています。この設定ファイルをさがすのに苦労しました。

VisualStudio2017では、開発したプロジェクトのフォルダにコンフィグが入っています。

プロジェクトフォルダの .vs を開くとconfigフォルダがあります。この中に

applicationhost.config

が入っています。

hostsファイルを書き換えて、直接ドメイン名でアクセスさせるような事も可能ですが、スマホアクセスだとDNSの設定なども面倒なので、ローカルホストに割り当てられたIPアドレスを調べます。

コマンドプロンプトから、自分のマシンに割り当てられているIPアドレスを調べます。

192.168.10.30

です。

Wireless LAN adapter Wi-Fi:

   接続固有の DNS サフィックス . . . . .: flets-west.jp
   IPv6 アドレス . . . . . . . . . . . .: b3:81db:9879
   一時 IPv6 アドレス. . . . . . . . . .: :73ac:3951:1b4e
   リンクローカル IPv6 アドレス. . . . .: :81db:9879%22
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.30
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: :8ea0%22
                                          192.168.10.1

applicationhost.config に

<binding protocol=”http” bindingInformation=”*:8493:192.168.10.30″ />

を書き加えます。

            <site name="WebApplication1" id="2">
                <application path="/" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="C:\Users\User\Documents\Visual Studio 2017\Project\webappli" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:8493:localhost" />
		    <binding protocol="http" bindingInformation="*:8493:192.168.10.30" />
                </bindings>
            </site>

VisualStudio プロジェクトのプロパティ

プロジェクトのプロパティから web の設定で

プロジェクトのURLを

http://192.168.10.30:8493/

と設定し、「仮想ディレクトリの作成」ボタンを押下

URLの予約

管理者権限で起動したコマンドプロントにおいて、

Microsoft Windows [Version 10.0.19042.1052]
(c) Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>netsh http add urlacl url=http://192.168.10.30:8493/ user=Everyone

URL 予約を正常に追加しました

を実行します。

スマホからアクセス

デバッグを開始し、LAN内スマホから

http://192.168.10.30:8493/

にアクセスすると、webページが表示できました。

まとめ

上記手順により、同一LAN内スマホから開発中のwebアプリにアクセスが可能になります。

参考にさせて頂いたサイト

http://surferonwww.info/BlogEngine/post/2017/04/23/where-is-applicationhost-config-file-for-iis-express.aspx

https://devadjust.exblog.jp/23066969/

情報をまとめてくださっている方々に感謝

asp.net webフォームでSMS認証を作る twilio編

携帯電話番号で認証

asp.net webフォームを利用して、テキストボックスに携帯電話番号を入力し確定すると、SMSに6桁のPINコードが送信され、そのコードによって認証されるwebページを作ってみます。

twilio

SMS送信にはtwilioを利用します。

Twilioは、音声通話、メッセージング(SMS/チャット)、Eメールなどの様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドコミュニケーションプラットフォームです。

twilio

webの準備

携帯電話番号入力用のテキストボックスを作成します。

テキストボックスのプロパティに、Phone属性を与えます。

.NET 4.5 ではTextBoxModeの列挙値が16種類に増えており、HTML5で新たに追加されたtype属性の値をサポートするようになっています。

なお、このモードを選択すると、テキストボックスとしての働きは変わりませんが、携帯電話でアクセスすると数値入力キーボードが起動します。

スマホからテキストボックスの動作チェックをしたい場合

ローカルマシーンの開発環境IISにアクセスさせるための方法はこちら

C#携帯文字列チェック

正規表現を利用して、テキストボックスに入力された数値が携帯番号かどうかを確認します。

            //ハイフン付きで入力された場合はハイフンをすべて削除
            string PhoneNumber = t_Keitai.Text.Replace("-", "");

            if (Regex.IsMatch(PhoneNumber, @"^(070|080|090)\d{8}$"))
            {
                C_Keitai.Text = "";
            }
            else
            {
                C_Keitai.Text = "※電話番号を正しく入力";
                InputOK = false;
            }

内容

070,080,090 のいずれかで始まっている

その後は数値8文字になっている

ハイフンは無視する

PINコードSMS送信

twilio api を利用して、6桁の数値PINコードを携帯に送付します。

            Random rnd = new Random();
            Session["SmsPinCode"] = rnd.Next(100000, 999999);

            // Find your Account Sid and Token at twilio.com/console
            // and set the environment variables. See http://twil.io/secure
            string accountSid = Environment.GetEnvironmentVariable("AC5a36**********");
            string authToken = Environment.GetEnvironmentVariable("c118d49df************");

            TwilioClient.Init("AC5a36**********", "c118d49df************");

            var message = MessageResource.Create(
                body: "デジタルマヒカリシ\n\r" + "PINコード:" + Session["SmsPinCode"],
                from: new Twilio.Types.PhoneNumber("+190********"),
                to: new Twilio.Types.PhoneNumber("+81" + PhoneNumber.Remove(0,1))
            );

PINコードはセッション変数に格納しておきます。

PINコードの検証

入力されたPINコードが、送付したPINコードと等しいか確認します。

            try
            { 
            if (int.Parse(PinCode.Text) == (int)Session["SmsPinCode"])
                l_Ninsho.Text = "0K";
            else
                l_Ninsho.Text = "NG";
            }
            catch
            {
                l_Ninsho.Text = "PINコードは数値のみ";
            }

PgAdmin4 テーブルリストアできない時に試す事

テーブルをリストアしたいのにエラーが

PgAdmin4を利用してテーブルをバックアップしました。テーブルのみのバックアップです。

さて、リストアしようと思ったら、Succesfullyと書いてあるのにデータが戻っていない。

今迄、パスの問題でリストアできない事がありました。

デスクトップや、ドキュメントにバックアップしているファイルをおいてリストアするとエラーが出てリストアできない。

今回は、Cドライブ直下においてもだめでした。

リストアを選択する場所

今迄、テーブルを右クリックしてリストアしてました。

これではリストアは成功しているように見えるのですが、ちゃんとリストアできないテーブルに値が入らないんです。

バックアップファイルの置き場所

バックアップファイルをデスクトップに置いてリストアすると、リストアに成功したように見えるのですが、テーブルは復元されていません。

成功するリストア

スキーマを右クリックしてリストアすると、ちゃんとリストアできました。

Failed exit code:1

これは、バックアップしたデータベースと、リストアするデータベースのユーザの差がある場合に出るエラーです。

Cause
Exit code 1 is returned when the restoring of the database is attempting to add the IPS_username to the Schema.
If the IPS_username is already configured in the Schema or is different from the IPS_username in the old PostgreSQL database, it will return exit code 1.

Exit Code 1 When Restoring PostgreSQL Database with pgAdmin4

バックアップする際のデータベースの所有者が、リストア先のデータベースにない場合にエラーが発生します。

まとめ

テーブルをリストアしたい時は、スキーマを右クリックしてリストアします。過去の経験で、日本語パスが含まれる場合リストアに失敗していましたが、関係ないようです。デスクトップにおいてもちゃんとリストアできました。