2020年9月30日水曜日

Postgresの要求スペックに応じたconfigを計算してくれるサイト

https://pgtune.leopard.in.ua/#/

例えばこんな感じで計算してくれます。


ax_connections = 10

shared_buffers = 512MB

effective_cache_size = 48GB

maintenance_work_mem = 2047MB

checkpoint_completion_target = 0.7

wal_buffers = 16MB

default_statistics_target = 100

random_page_cost = 4

work_mem = 554871kB

min_wal_size = 1GB

max_wal_size = 2GB

max_worker_processes = 8

max_parallel_workers_per_gather = 4


2020年9月28日月曜日

マイコンリンク集



よく分かる! シリアル通信基礎講座

https://lab.fujiele.co.jp/articles/8191/


Adafruit Tutorial 良い

https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-arduino-ide


ESP8266公式のドキュメントUDP

https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/udp-examples.html


ESP-WROOM-02を2台使って通信してみる

3部作になっている

http://discexuno.wp.xdomain.jp/arduino/esp-wroom-02_client/


ESP-WROOM-02でLチカとWi-Fiの動作試験をする(3)

詳しい

https://synapse.kyoto/hard/ESP-WROOM-02_blink/page003.html


第34回 Arduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(Arduino利用編)

https://deviceplus.jp/hobby/entry034/


ESP-WROOM-02

めちゃくちゃ丁寧で詳しい

https://ht-deko.com/arduino/esp-wroom-02.html


[Solved] ESP8266 WiFI.h fatal error

ESP8266WiFi.h not ESP8266WIFI.h 大文字小文字の問題

https://community.blynk.cc/t/solved-esp8266-wifi-h-fatal-error/1191/9


Arduinoで電流・電圧(INA219)の測定をする 自作のいろいろ

https://garchiving.com/current-voltage-measurement-with-arduino/


A Beginner's Guide to the ESP8266

https://tttapa.github.io/ESP8266/Chap01%20-%20ESP8266.html



電流電圧測定チップINA226をArduinoでライブラリを通して使う方法

https://asukiaaa.blogspot.com/2019/10/ina226arduino.html


AmbientとArduino ESP8266でマイコンの消費電流モニターを作る

バッファとかの話がよさそう

https://ambidata.io/samples/current/current-logger/


サイレックス

Bluetoothのはなし(1)

https://www.silex.jp/blog/wireless/2012/09/bluetooth1.html



「技適マーク」がない機器の日本国内での利用が一部認められる件について

https://techlog.iij.ad.jp/archives/2689



Bluetoothによるシリアル通信

https://fabkura.gitbooks.io/arduino-docs/content/bluetooth.html


Arduino講座 1000円で作れる簡易USBオシロスコープ

https://sites.google.com/site/memorandumjavaandalgorithm/arduino-jiang-zuo-jian-yioshirowo-shittemiyou


電力計測機器の自作

https://sites.google.com/a/gclue.jp/ble-docs/dian-li-ji-ce/dian-li-ji-ce-ji-qino-zi-zuo



“Bad request” error (HTTP) awhile posting to PHP server using Arduino and ESP8266


/ がなくてエラー


https://arduino.stackexchange.com/questions/50760/bad-request-error-http-while-posting-to-php-server-using-arduino-and-esp8266 

2020年9月22日火曜日

メモ用アプリを選ぶ件

ノートアプリを検討しています。今はバラバラにいろいろ使っています。PCでメモしてモバイルでも見れて、量が増えてもよいというもので、無料のものが良いのですが。

3大ノートアプリ?をざっくりいうと

EverNote。無料の場合、月間の制限が来ると使えなくなる。History機能が無料では使えない。

OneNote 起動が遅すぎる。もっさりしている。

GoogleDocument 複数のファイルをメニューで表示できない(画面遷移しないと見れない)



希望

・使いやすいこと。速い、操作性がよいこと

・画像は少なくテキストメイン

・PCメイン。クラウドで同期してモバイルでも使えること

・消してしまってもHistory機能で復活できること

・無料


3つのアプリの機能まとめ


特徴

Evernote

OneNote

Google Document

軽量

×遅い

起動時間

数秒

〜30秒

数秒

History機能

有料

無料

無料

検索・置換

×

アプリの使いやすさ

使いやすさ

メニュー表示

△操作性悪

×できない

× ブラウザでは

可能

可能

有料時

年6,000円、

upload制限60MB無

年10,000円/office、Webアプリが使える

常に無料

その他


Ctrl+C,Vできない




今の所の結論
・Googleがよいですかね・・・
検討の余地あり
 Evernote課金すれば一番使いやすいのですが。年3000円ならするかも。
・EvernoteのHistoryを自分でバックアップしておけばいいのでは??たぶん面倒くさい
・VSCodeで編集してGitで組み合わせればよいのでは?VSCodeは使いやすいのでこれが無難か?Githubだと編集はできるがしやすくはない。
・VSCodeで編集しておいてバックアップはGoogleDocumentにすればいいのでは?これで同期できれば、モバイルでも編集しやすいかも。

2020年9月21日月曜日

AWS TutorialとWhitepaperのメモ


やったチュートリアル、読んだホワイトペーパーについて書きます。

AWS Organizationのチュートリアル

・組織、OUやメンバーアカウントを作ったりする
・OUやメンバーが作られたときにCloudWatchで検知、Lambdaでログを書く。CloudWatchからSNSに通知してメール発信。


Codebuildのチュートリアル

・java のビルドをする
・S3を2つ作る(input, output)


10minites hands-on Build a Basic Web Application


Amplify 
API gateway 
Lambda 
DynamoDB



CodeCommitのチュートリアル


CodeCommitでレポジトリを作ってファイルをアップロード、差分を見る、プルリクエスト出す

https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started-cc.html#getting-started-cc-create-repo


UdemyのCotnito handson


Cognito User pool を流れ通りに作るだけでOK
カスタムで作るを選ぶと、何が設定できるかなどを見れる
パスワードの強さなどを設定
ログイン成功時にリダイレクトされるページを指定できるが、tokenとかは出てこない


Running Containerized Microservices on AWS

コンテナというよりも、マイクロサービスの粗結合について書いてある。

https://d1.awsstatic.com/whitepapers/DevOps/running-containerized-microservices-on-aws.pdf

国勢調査の回答はUbuntuではできない

国勢調査のオンライン回答は、Ubuntuではできないようです。まぁ当たり前かもしれませんが。Yahoo Browserというのが採用されて食い込んでいるのがちょっとおもしろいですね。 




Python ユニットテストのテンプレート

ユニットテストのテンプレートです。
・testedpy.py はテストされる関数のあるpy
・unittest_py.py はユニットテストをする側
この2ファイルは同じディレクトリにある。

実行は
python3 unittest_py.py -v

-v で verbose

---
testedpy.py
# required to use in function
class OutOfRangeError(ValueError):
    pass

# if needed, write variable used in tested_func


# input n, return result
# Test result is as expected.
# Test n is as expected.
def tested_func(n):
    """what this func does"""
    if XXXX == XXXX:  # condition with n
        raise OutOfRangeError("about input n, why this func fail and what should be")

    result = ""
    """some calculation"""

    return result
unittest_py.py
"""
class arg MUST be (unittest.Testcase)

function name MUST start from test_...

self.assertRaises() for bad input

self.assertEqual() for expected results

unittest use .py name and funcname to get expected result
result = testedpy.tested_func(integer)
"""

import unittest

import testedpy  # .py to be tested

# Test n for testedpy.tested_func is as expected.
class XxxxBadInput(unittest.TestCase):
    def test_xxxx(self):
        """explanation why this test fail"""
        self.assertRaises(testedpy.OutOfRangeError, testedpy.tested_func, xxxx)

# Test result from testedpy.tested_func(n) is as expected.
class KnownValues(unittest.TestCase):
    known_values = (
        """(integer, result_known)"""
    )

    def test_tested_func_known_values(self):
        """tested_func should give known result with known input"""
        for integer, result_known in self.known_values:
            result_from_func = testedpy.tested_func(integer)
            self.assertEqual(result_known, result_from_func)


if __name__ == "__main__":
    unittest.main()

2020年9月20日日曜日

Powershellでハッシュを見て同じファイルがないかを確認

ついつい同じファイルを別のディレクトリに保存してしまうので、整理のために確認することにしました。

Powershellの get-filehash (> Powershell 4) を使います。結果はcwdのfilehash.csvに保存しています。


PS C:\Users\...\python> dir | Get-FileHash -Algorithm {MD5}|Select-Object -Property Path, Hash | Export-Csv -Encoding utf8 .\filehash.csv


-Algorithm {MD5} でハッシュアルゴリズムを選んでいます。

デフォルトはSHA256 なのですが、ファイルの同一性だけを見たかったのと時間と出力の重さを考えてMD5にしました。MD5:128bitとSHA256:256bitの違いです。


これで各ファイルに対してハッシュ値が得られます。あとは同じハッシュがないかを探せばよいです。

その後はPythonで処理しています。Powershell側で同一の検索などもできると思うのですが・・・。

注意としては、バックアップファイルは同じハッシュ値を持っています。例:jupyter ipynb_checkpoint


2020年9月18日金曜日

ファイルの最終更新時間をPythonで出力する

import glob

import os

import time


file = glob.glob('.*')[0]


# filename

print(os.path.basename(file))


# os.path.getmtime()  # last modified time

print(os.path.getmtime(file))


# time.ctime() UNIX時間から変換する

print("last modified: {}".format(time.ctime(os.path.getmtime(file))))


"""

.ipynb_checkpoints

1600315202.9459374

last modified: Thu Sep 17 13:00:02 2020

"""

Jupyter(IPython)で表示される数字の桁数を変える

Jupyterで小数点以下の数字の表示桁数を変えます

デフォルト 16桁

numpy 8桁

import numpy as np


# 16桁

>>> 1/3

0.3333333333333333


# 8桁

>>> np.array([1.0/3])

array([0.33333333])


# マジックコマンドで変えます。

# 通常の数字もnumpyの数字も変わります

# 3桁にします

>>> %precision 3

'%.3f'


# 3桁

>>> 1/3

0.333


# 3桁

>>> np.array([1.0/3])

array([0.333])


# np.set_printoptionsでは、npに対して変化します。

# 5桁にします

>>> np.set_printoptions(precision=5)


# 3桁のまま

>>> 1/3

0.333


# 5桁になります

>>> np.array([1.0/3])

array([0.33333]) 

Visual Studio CodeからGoogle Driveが使えるExtension

Google Drive™ for VSCode というエクステンションを使ったときのメモ。

VSCodeからGoogleDriveにファイルのアップロード、ダウンロードできる。※ファイルが自動的に同期できるわけではないです。


2020年7,8月にできたエクステンションで、9月18日の時点で990インストールでした。

公式の説明はここ https://github.com/GustavoASC/google-drive-vscode

GoogleDriveの設定は説明にあるようにここにアクセス

 https://developers.google.com/drive/api/v3/quickstart/nodejs

Enableを押す

名前はQuickStartになっているが変えてもよさそう

Desktop app になっているのを確認 Create をクリック

認証情報をjsonでダウンロードする(credential.json)

---

VScodeのコマンドペレットでConfigurationを選択

credential.jsonをアップロードする

ブラウザが開いてOathの認証ページになる。

認証すると、

「このコードをコピーし、アプリケーションに切り替えて貼り付けてください。」というコードが出るので、VSCodeのウィンドウに貼り付ける。


これでOK。


使ってみた感じ、もともとあったGoogleDriveのディレクトリやファイルは認識できません。

コマンドペレットView: Show Google Drive

でツリーが出ます。あとはGoogle Driveコマンドでからアップロードしたりはできますが、コマンドを2回打たないと実行されないような・・・??

VSCodeからGoogleDriveにファイルのアップロード、ダウンロードはできますが、ファイルが自動的に同期できるわけではないです。

結局、継続的には使っていません。今後の発展に期待です。



2020年9月9日水曜日

PythonのことでStackOverflowで調べた メモ

Pandasでリストをcsvに保存する。

result = [,,,,]

リストからDataFrameにしてto_csvで保存する。そのとき日本語がまじるときはencoding="shift-jis"にする。cp932はNG。

pd.DataFrame(result).to_csv("result_4.csv", header=None, index=None, mode='a', encoding="shift-jis")


re.escapeで自動でエスケープしてくれる。


re.escape("(test)")

> '\\(test\\)'

"." などもエスケープしていまい、選択できない。

カッコだけをエスケープするには

re.sub(r"([()])", r"\\\1", "(test)")

全角の括弧に対応するには、[]の中に全角の括弧()を増やせばよい

re.sub(r"([()()])", r"\\\1", "((test))")


データフレームから1行取り出してタプル

tuple(df.iloc[0].tolist()) としてタプルにすると、numpy属性が残っていて、

ProgrammingError: can't adapt type 'numpy.int64' 

というエラーがでる

tuple(df.iloc[0].values)

ならOK


JupyterでNot trustedという表示が出る


特に気にすることはない。

Trustボタンを押せばいいらしい。任意のコードが実行出来る状態を防ぎたいようだ。

個別のファイルに対してjupyter trust ..ipynbと実行すると回避できる。

https://stackoverflow.com/questions/44943646/jupyter-notebook-not-trusted


Pythonでvirtual環境を消すのはディレクトリを消す

venvに消すコマンドはないということです。直接ディレクトリを消せばOK。

https://stackoverflow.com/questions/11005457/how-do-i-remove-delete-a-virtualenv

2020年9月7日月曜日

PCがスリープにならないように小刻みに動くマウスのダミーを使う

PCが スリープやスクリーンセーバー移らないようにマウスをちょこちょこ動かすためのデバイスを買いました。DigiSparkのデバイスで、mouse jiggler またはwigglerと呼ばれています。

1個500円くらいで売られています。

http://digistump.com/products/1

USBに指すだけで動作します。Windows10では特に問題ありませんでした。LinuxではUSBが認識されず断念しました(あまり調べてませんが)。

Arduinoでの準備はこちらの公式を参考に

https://digistump.com/wiki/digispark/tutorials/connecting

Windows10でインストールするとIDE上に「信頼されていないコントリビューションです。スクリプトの実行をスキップしています。 C:.../.../XXXX.bat」と出ます。そのフォルダまでいってbatをダブルクリックするとデバイスドライバのインストール画面になるので、インストールします。


こちらのコードでは待ち時間を100秒にしています。これはスクリーンセーバーの待ち時間に合わせればよいかと。

WSLでUbuntuとWindowsで相互にフォルダにアクセス

WSLでUbuntuからWindowsのフォルダにアクセス

/mnt を探します

$ cd /mnt/c/User/..

とすればOK

WSLでWindowsからUbuntuのhomeにアクセス

C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntuon_some_version\LocalState\rootfs

にある。

バージョンによってpathが変わっているようです。

https://superuser.com/questions/1083962/windows-linux-subsystem-accessing-files-outside-of-ubuntu

https://silatori.hatenablog.com/entry/2018/07/23


画像ファイルのサイズとDPIのことを調べた

サイズ  印刷時の実サイズ。ディスプレイでは解像度で変わる。

DPI(dot per inch )  1インチににある点(ドット)の数。100dpiであれば1インチに横100点あることになる。


ファイルのサイズは、保存したときからは見ることができない??←できるはず

プロパティから見ることができるDPIは異なっている可能性がある。

★Pillow でDPIが出ないときはそもそも設定されていない

ペイントではDPIが設定されている(Windowsでのプロパティ詳細も同様)のにPillowで

im =Image.open('test.jpg')

im.info

{'jfif': 257, 'jfif_density': (1, 1), 'jfif_unit': 0, 'jfif_version': (1, 1)}

となってDPIが出ないときがあります。これはjfif_unit = 0 はDPIが情報としてないことを示しています。

一方、ペイントでは、画像に情報がなくとも自動でDPI 96 で計算したりするようです。


https://github.com/python-pillow/Pillow/issues/2524

https://github.com/python-pillow/Pillow/issues/2912


2020年9月3日木曜日

aws cliのv1をアンインストールしてv2をインストールする(Linux)

Ubuntu20.04でやりました。


aws cli v1を使っていたら、v2でないと出来ないコマンドがチュートリアルに出てきたのでアップデートしました。


まず、v2のインストール説明によると、

AWS CLI versions 1 and 2 use the same aws command name. If you have both versions installed, your computer uses the first one found in your search path. If you previously installed AWS CLI version 1, we recommend that you do one of the following to use AWS CLI version 2:

https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html

v1とv2を共存させると、Pathを順に見るから面倒で、v1は消すのをおおすすめしますよ、とのこと。


こちらのv1の説明で、

$ sudo rm -rf /usr/local/aws

$ sudo rm /usr/local/bin/aws

https://docs.aws.amazon.com/cli/latest/userguide/install-linux.html


が紹介されていましたが、2行目は、自分の環境では /usr/local/bin/aws ではなくて、/usr/bin/awsでした。

あとはv2のインストールをそのままやりました。


curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

unzip awscliv2.zip

sudo ./aws/install

これら3つを実行すると

You can now run: /usr/local/bin/aws --version

と出るのでやってみますと、

aws --version
aws-cli/2.0.45 Python/3.7.3 Linux/5.4.0-42-generic exe/x86_64.ubuntu.20
と出ました。確かにインストールできています。