- 1. [atcoder] ABC226 涙の反省記事
- 2. ゼロから始めるデータベース操作SQL【学習まとめ】
- 3. ポートスキャンサンプル(python 3.8 on aws-λ )
- 4. kivyMDチュートリアル其の肆什乃弍 Components – Tabs篇
- 5. PythonでiCalendar形式のファイルを書き出す
- 6. 文系卒が数学オリンピックをPythonで解く(2020年予選編)
- 7. SSIMオートエンコーダ(全結合層)による異常検知
- 8. pythonの真偽値と条件分岐
- 9. sparse_categorical_crossentropyとMIoUの共存
- 10. 【Python】文字整数 昇順ソートリスト作成 レシピ
- 11. PyTorchの乱数シード固定【GPU】
- 12. seleniumチートシート(Windows&Python編)
- 13. Python3なら4行で単一換字式暗号化プログラムができた
- 14. 論文でよく使うmatplotlib subplotsの覚え書き
- 15. 【備忘録】pip3 install TA-Lib でエラーが出た時の対処法
- 16. SimpleGUIのFileBrowseで一度選択したフォルダのパスをクリアする
- 17. Ubuntu18.04 + pyenv + pipenv + Django + Apache2 なデプロイ その2
- 18. SQLModelを試してみた
- 19. 【AWS CDK】Batchで起動テンプレートを利用する場合のユーザーデータの実装
- 20. AOJトライに関する知識知見の記録共有 (Volume0-0042)
[atcoder] ABC226 涙の反省記事
こんばんは。たゅと申します。
ABC226にpython3で参戦。
https://atcoder.jp/contests/abc226/tasks
三完で入茶させてクレメンスと息巻いていたところ、なんと__ABを通すのに40分+5ペナ__という最悪の事態に。
![2021-11-07 22.40のイメージ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623784/165efb71-830e-91fc-dede-ed5b7ec8485e.jpeg)
Cは推定茶色中盤diffだったので、むしろよく粘ったと自分では納得しています。しかし、ABでここまで詰まることは完全に想定外だったので、コンテスト中は狂いそうでした。
この悔しさをなんとかポジティブな方向に昇華するために、記事を書いております。
概要としては、
__ABC226のA,B問題について、python3で解説します。__
Cも後で解答を見て余裕があれば復習として追記したいと思います。## A問題
https://atcod
ゼロから始めるデータベース操作SQL【学習まとめ】
#データベース学習を始めるきっかけ#
DBの概念や基本的な操作ができないと業務を実施することが出来ない内容の為、
SQL事前学習をすることで、スタートダッシュを切れる目的で学習を始めました!#学習内容#
SQLの事前準備~基本的な操作で必要な3つの文「CREATE文、INSERT文、DELETE文、UPDATE文」の使い方を纏めます。#事前準備#
#1.PostgreSQLのインストールと接続設定
1.インストーラーのダウンロード
PostgreSQLの[ダウンロードサイト](https://www.enterprisedb.com/products-services-training/pgdownload#windows)からインストーラをダウンロードします。
※使っているPCの環境に応じて適切なものをダウンロードしてください。
今回、Windowsのインストーラ(Win x86-64)2.psql.exeの実行
ダウンロードが完了しpsql.exe実行すると、コマンドプロンプトでパスワードが求められたら、任意のパスワードを入力する。
入力後、「postgres=
ポートスキャンサンプル(python 3.8 on aws-λ )
メモリは1GB推奨。がっつりスキャンするので、要チューニングして利用のこと。
“`python
import json
import socket
import random
from multiprocessing import Process, Pipe
import urllib.request#向き先
TARGET_HOST=’hogehoge.com’#通知先WEBHOOK
webhook = “https://discord.com/api/webhooks/9999999999999999/hogehoge”#生成するスレッド数:CONNECTION多重度と同義。400辺りでファイルディスクリプタ関連エラー
THREAD_MAX=300
#検査レート:何%のポートを検査対象とするか。0.3の場合、検査ポートの30%をScan対象とする
#TODO:アホほど回るのでチューニングすること
SCAN_RATE=0.3
#タイムアウト:socketのタイムアウト時間(秒)。0.3くらいで検査できそう
SOCK_TIMEOUT=0.3def portscan(
kivyMDチュートリアル其の肆什乃弍 Components – Tabs篇
晩秋の候、ますますご繁栄のこととお慶び申し上げます(急な畏まり)。
11月も突入するようになりました。またちょっと温かい気温になる日もあって、なんだか
よく分からない季節ですね。はい、今週も始まりました。KivyMDのお時間です。
少し今週は毛色が異なり、先週のTabs篇の続きとなっています。コードの置き場所などは
先週と同じなのでご留意ください。先週からの差分を主に触れ込んでいきたいと思っており
ます。今週のニュースはというと、先週からの続きですが衆議院選挙のことではないでしょうか。
大小問わず変化があった!ということやいつも通りでしょということなど色々思われるとは
推測していますが、いかかだったでしょうか。ちなみにですが、どの党に投票したかやこう
予想していた(後出しだし…)などは少しセンシティブに近いかもなのでここでは記しません。。というわけで今週も元気にやっていきましょう!しつこいようですが、今日は先週のTabsの
続きとなっています。## Tabs
さて、今日はどこから始まるかというと、先週は「Example with tab icon」までで
止まって
PythonでiCalendar形式のファイルを書き出す
iCalendarはカレンダーアプリなどで使われるスケジュールデータの標準フォーマット。
iCalendarファイルを使ってGoogleカレンダーやOutlookなどのアプリにスケジュールをインポートすることもできる。iCalendarファイルは単純なテキストファイルなので、その気になれば一行一行書き出す処理を書いて作ることもできそう。
https://developers.worksmobile.com/jp/document/1007011?lang=ja
PythonでiCalendarファイルを読み書きできるライブラリがあるのでこれを使ってみる。
https://pypi.org/project/ics/
[クイックスタート](https://icspy.readthedocs.io/en/stable/)を見ながら試してみる。
まずはファイルの書き出しから。
“`python:ics_write.py
from ics import Calendar, Event
import arrow# カレンダーの生成
cal = Calendar()
cal.c
文系卒が数学オリンピックをPythonで解く(2020年予選編)
#これまでのあらすじ
– 文系卒の私。でも数学になじみたい。
– ふむふむ、数学オリンピックというのがあるらしい。やってみますか。
– 紙とペンを使ってマジメに解く文系卒。えらい、えらいぞ!
– 5分後にふと衝撃走る。「これPythonでやったほうが早くない?」
– そんな、いつか 誰かに 本気で怒られそうな気づきを 実行したのであった──。#ルール
– 数学オリンピックの問題をPythonで解く。
– ライブラリは可能な限り使わない。例外的にitertoolsは使う。
– 図形の問題は挑戦しないかも。許してね。
– 式変形すれば解けるようなものも面白味がないので対象外。#引用元
問題はこちらから引用しております。[第30回(2020年)JMO予選の問題 – 数学オリンピック](https://www.imojp.org/archive/mo2020/jmo2020/problems/jmo30yq.html)
https://www.imojp.org/archive/mo2020/jmo2020/problems/jmo30yq.html
#Q1
##問題
>千の
SSIMオートエンコーダ(全結合層)による異常検知
#背景
全結合層でオートエンコーダし、画像の異常検知を行う。
loss関数にSSIMを使用すれば構造的類似性の観点からより精度の良いオートエンコーダ結果が得られることから、MNISTデータを用いて検証する。
また、異常度の出し方を画像の輝度差分ではなくSSIMで出すことでどういう値になるかを確認する。
本ページはコードの記録のみとする。検証結果は別紙参照のこと。#やったこと
MNIST数字データで1のみを学習データに使用して全結合層オートエンコーダモデルを構築。1と9の混じったテストデータで9を異常と検知するか確認する。
異常度を算出し、ヒートマップで異常位置を可視化する。“`
#必要ライブラリ
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import mnist
import tensorflow.keras#MNIST読み込み
(x_train, y_train),
pythonの真偽値と条件分岐
pythonで、Noneかどうか、空文字列かどうか、空配列かどうか、空辞書かどうかの判定とその時の処理の書き分けで迷いがちです。
それらを正しく書き分けるためには、何が`None`で何が`True/False`で、それらがどうやってや`if`文や比較演算子で処理されるのかをちゃんと理解する必要があると思っています。
そこで、ここでは、python3の真偽判定とその時の条件分岐について書こうと思います。
## この記事を書こうと思った訳
条件式は色々な書き方ができますが、推奨されている書き方や短く簡潔に書く方法があります。
[PEP8プログラミングに関する推奨事項](https://pep8-ja.readthedocs.io/ja/latest/#id42)にはこのように書かれています。
>> None のようなシングルトンと比較をする場合は、常に is か is not を使うべきです。絶対に等値演算子を使わないでください。
>> また、 本当は if x is not None と書いているつもりで、 if x と書いている場合は注意してください – たとえば、デフ
sparse_categorical_crossentropyとMIoUの共存
#この記事について
今回はsparse_categorical_crossentropyを使用した際に評価指標としてMIoUを使用する方法を紹介します。また、以下のサイトを参考にしております。
サイトによるとtf2.2,tf2.3,tf2.4で問題ないようです。参考:(https://github.com/tensorflow/tensorflow/issues/32875)
#sparse_categorical_crossentropyとMIoU
sparse_categorical_crosentropyは多クラス分類に使用される損失関数ですが、評価指数としてMIoUを使用するとエラーが発生してしまうことがありました。確認すると、入力の型が一致していなければならないそうです。#解決方法
以下のコードを使用することで解決することができます。“`
class UpdatedMeanIoU(tf.keras.metrics.MeanIoU):
def __init__(self,
y_true=None,
【Python】文字整数 昇順ソートリスト作成 レシピ
# 1.【やりたいこと】
“`python
array_1 = ’10 6 8 1 5 9 3 4 7 2′type(array_1)
> `class ‘str’`# やりたいこと
array_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
“`# 2.【作成レシピ】
使用メソッド
* 内包表記:array_1の文字型の整数をint型へ変換 (str型→int型)
* 組み込み関数:sorted()“`python
array_1 = ’10 6 8 1 5 9 3 4 7 2’# レシピ
array_2 = sorted([int(i) for i in array_1.split()])# 完成
array_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
“`
PyTorchの乱数シード固定【GPU】
# PyTorchの乱数シード固定方法
機械学習では、再現性を持たせるために、乱数のシードを固定することが多い。GPU使用時におけるPyTorch乱数シード固定を、PyTorchのドキュメントからまとめた。“`python
import random
import numpy as np
import torchdef torch_fix_seed(seed=42):
# Python random
random.seed(seed)
# Numpy
np.random.seed(seed)
# Pytorch
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
torch.use_deterministic_algorithms = Truetorch_fix_seed()
“`Pythonの組み込みモジュール、Numpy、PyTorchそれぞれの乱数シー
seleniumチートシート(Windows&Python編)
分類:Python3,Windows10,クロム
日付:2021/11/04seleniumの使い方を毎回忘れるのでチートシートにしました
#環境構築
###①クロムのバージョンチェック
メニュー右上の︙アイコンをクリック、→ ヘルプ → googleクロムについて を選ぶ
###②ダウンロードのページ
https://chromedriver.chromium.org/downl
Python3なら4行で単一換字式暗号化プログラムができた
(追記)fsdさんからコメントをいただき、それを参考にしたら、3行でコードが書けた。下のコメント欄に載せました。
(元記事)
ITエンジニア向け転職・就活・学習サービスサイトのスキルチェック問題に挑戦するなかで、「単一換字式暗号」がでてきた。(単一換字式暗号については、ググってください。)最初に提出したコードは`for`、`if`を多用していたので、満足のいくものはでなかった。そこで何種類か考えたなかで、次のコードは初心者なりにうまくできたと思った。
“`python3
plain = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz’ # 平字
cipher = ‘czQPHLsU rneVdEKfvyWSwIGCZqgoFBxtTiklDaOJRjNbAhmYMupX’ # 暗字# 換字表の作成
table = [i for i in range(128)]
for i in range(len(plain)):
table[ord(plain[i])] = ord(cipher[i])# 暗号
論文でよく使うmatplotlib subplotsの覚え書き
論文を書く際に複数枚のグラフの内,最も左にあるグラフのみx軸を表記し,最も下にあるグラフのみy軸を表記するという形式をよく利用するので覚え書きします.
また,左下隅のグラフのみ消すという操作もよく利用するので,customizeの例 (`ax.axis(‘off’)` によって可能です) に載せています.“`python
from dataclasses import dataclass
from typing import List, Optionalimport numpy as np
import matplotlib.pyplot as pltplt.rcParams[“font.family”] = “Times New Roman”
plt.rcParams[“font.size”] = 14@dataclass
class GridSpecKeywords:
“””
Attributes:
width_ratios, height_ratios (Optional[List[int]]):
Th
【備忘録】pip3 install TA-Lib でエラーが出た時の対処法
TA-Libインストールで手間取ったので、正常にインストールする手順を備忘録としてまとめます。
“`
pip3 install TA-Lib
“`上記実行すると、`ERROR: Failed building wheel for TA-Lib`のようなエラーが出てインストールできない。
以下、インストール手順
まず、homebrewでTA-Libをインストール“`
brew install TA-Lib
“`その後、pip3 でインストール
“`
pip3 install TA-Lib
“`これで正常にインストールできました。
SimpleGUIのFileBrowseで一度選択したフォルダのパスをクリアする
#背景
SimpleGUIのFileBrowseでファイルのパスを入手、再度空白に戻すという操作を紹介します。#コード紹介
コードは上半分でウィンドウレイアウト、下半分で挙動を定義しています。上半分のウィンドウレイアウトのコードは以下の通り。“`python:demo1.py
import PySimpleGUI as sgsg.theme(‘DarkTeal7’)
layout = [[sg.Input(key=”input_path”), sg.FileBrowse(‘Select’, key=’input_path2′)],
[sg.Button(‘submit’, key=’submit’),sg.Button(‘clear’, key=’-clear-‘) ],
[sg.Output(size=(60,20))],
]
window = sg.Window(‘ファイル選択’, layout)
“`
残り半分のコード。右上の×ボタン、submitボタン、clearボタンの挙動を定義。(敢えてelseを使
Ubuntu18.04 + pyenv + pipenv + Django + Apache2 なデプロイ その2
#MySQL5.7のインストールと設定
以下のコマンドから実行する.“`
ttimes@xxx-xxx-xxxxxx:~$ sudo apt install python-dev python3-dev libmysqlclient-dev default-libmysqlclient-dev mysql-server
ttimes@xxx-xxx-xxxxxx:~$ sudo mysql_secure_installation
“`
セキュアインスタレーションを実行すると,パスワードのセキュリティレベルを設定し,パスワードを設定することになります.
普段からパスワード生成器を利用されている方は`2`にするといいと思います.
その後,①匿名ユーザを禁止するか ②リモートからのrootログインを禁止するか ③テストデータベースを削除しておくか ④ここまでの設定をすぐに反映するか を聞いてきます,基本的に全て`Yes`でいいと思っています.次はデータベース`ttimesdb`とユーザー`ttimes`に対する権限付与です.成功すれば,変更を反映するためにリロードしましょう.
SQLModelを試してみた
#SQLModelとは
公式はこちら現在PythonのWebFrameworkで最も注目されている(?)FastAPIの作者tiangolo氏による新しいPythonのORMである。
###特徴
Pythonの型付けを強力にサポートするPydanticと、有名なORMのSQLAlchemyをベースにラップしたもので、直感的で短いコードが書けてSQLAlchemyとの互換性も優れているようで、平たく言うと今までデータベースのスキーマをPydanticで定義していたが、SQLAlchemyとFastAPIを使う場合は不要になったということ(だろう)。早速試してみました。
—
環境 Ubuntu20.04 Pipenv Python3.8.10 MySQL8.0 VScode
###インストール
“`linux
pipenv install fastapi sqlmodel uvicorn
“`
とやるも…“`
Creating a Pipfile
【AWS CDK】Batchで起動テンプレートを利用する場合のユーザーデータの実装
Batchのコンピューティング環境で利用する起動テンプレートのユーザーデータは **MIME マルチパートアーカイブの形式** で定義しなければならないらしい。
CDKで実装するときに少しハマったので調べた内容を残しておく。https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/launch-templates.html#lt-user-data
# 実装
何はともあれ実装。こんな感じで実装するとうまくいく。
“`python
from aws_cdk import aws_ec2# UserDataインスタンスの作成
user_data = aws_ec2.MultipartUserData()# UserDataの中身を定義。
user_data.add_part(
# MIME マルチパートアーカイブの形式のUserDataを定義する
aws_ec2.MultipartBody.from_raw_body(
# データの種類を指定。今回はシェルスクリプト
AOJトライに関する知識知見の記録共有 (Volume0-0042)
# 概要
A Thiefhttps://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0042
# コード
TIPS:ビット演算での探索パターン制御“`
def ret_value_weight_items(items, w_limit=-1):
items = sorted(items, key=lambda x: -x[1])
le = len(items)
ret = []
for ptnbit in range(pow(2, le)):
its = [items[i] for i in range(le) if (ptnbit>>i)%2 == 1]
#print(its, ptn)
value, weight = [sum([v[idx] for v in its]) for idx in [0, 1]]
if weight <= w_limit: ret.append([value, we