- 1. Pythonで独立した実行に対して重複しないようにJobを与えたときのメモ
- 2. CloudWatchLogsで取得したログを加工してEFSに格納するLambda作ってみた
- 3. SuperCollider + FoxDot のセットアップ(ubuttu20.04)
- 4. 【AtCoder解説】PythonでABC248のA,B,C,D,E,F問題を制する!
- 5. AWS Cloud9でPython基礎~Amazon S3を利用する
- 6. 『Python1年生』で勉強中(その2)
- 7. 【AtCoder】PythonでABC248のA, B, C, D, Eを解く
- 8. Python3 対話モードを終了する方法
- 9. ABC248での学び
- 10. Djangoでwebサービスを作ってみるまで~その1(環境構築編)~
- 11. AWS LambdaでPython基礎
- 12. 【python】ezdxfを使ってみよう#1~図面作成と設定編~
- 13. Effective Pythonまとめ 2. List and Dictionaries (Item11~Item18)
- 14. 【Python】1~4次までの地域メッシュコードを計算する
- 15. ImportError: cannot import name ‘xxx’ from partially initialized moduleの対処法
- 16. 自動でvenvを(de)activateする
- 17. CentOS Stream 9 LAMP.sh
- 18. Jupyter NotebookでなくJupyter Labを起動する方法
- 19. Pythonの初期化処理
- 20. [Python3 / pynamodb] create_table時に Table read and write throughput must be at least 1, and cannot be null
Pythonで独立した実行に対して重複しないようにJobを与えたときのメモ
## はじめに
まずは問題設定を記述します.
1. $N$ 個の独立した実行があり,それぞれの実行に対して,Uniqueな config を渡し,それに基づいた実行を独立に処理する
2. SQL alchemyを利用したデータベースに対して,configを渡す毎に対応する行の `run flag` を `True` にする
3. ただし,SQL alchemyに対する `SELECT` クエリと `UPDATE` クエリの間に他の実行が `SELECT` クエリを実行してしまうと2つの実行に対して同一の config が渡されてしまうためこれを何とか避けたい.## 解決策
以後,Tokenの生成は`temp` ディレクトリ内において完結するものとする.
1. $N$ 個の実行開始時にただひとつだけ `target.token`という空ファイルを生成する.
2. 各実行に対してUniqueなTime hashを生成し,それぞれ `target_
CloudWatchLogsで取得したログを加工してEFSに格納するLambda作ってみた
# はじめに
日次でCloudWatchLogsからログを取得し、加工してEFSに格納する独自スクリプトを動かしてた。
だが以下の点でイケてないスクリプトでたちまち処理が失敗していた。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187693/0257c3e3-e6d1-c1f0-f021-c173d2ddf097.png)
図1:既存構成:::note alert
こんな感じ
・サービス利用増により、ログ量が莫大し処理が追いつかずにMaintenanceWindowsの**上限値5時間**をオーバしてしまう
・古き良き(?)シェル芸でログを加工しておりコードは煩雑化・処理は非効率で処理が行われてる
:::## 実装方式
上記を解決するにはスクリプトを改修したり、そもそものサーバスペックを上げたりするといった流れになるがログ量は増える一方であったり、この処理のためにスペック上げるのは~~贅沢・贅肉すぎるし~~もったいないという形で以下で実装してみた
![image
SuperCollider + FoxDot のセットアップ(ubuttu20.04)
# はじめに
今日は音関係のことで、SuperCollider をインストールしたのでメモ。
自分は何をしたいのかわからないが、とりあえず、– 演奏を録音したい
– 自作自演のピアノ演奏しながら、ドラムとか流したいというのでまぁ、いじってみるか、ということに。かなり飛躍があるかな。
# インストールした
半日かかりでしたが、できたのでメモ。環境は Linux Ubuntu20.04 (古いVAIO)です。
– SupperCollider
– FoxDot### FotDot
これはpip でなんの問題もなくインストールされました。
https://foxdot.org/installation/
あとで tkinker がないと言われたので、これも入れました。
“`
$ sudo apt install python3-tk
“`### SuperCollider
ソースを持ってきて、cmake でbuildするも、いろいろ足りなくて怒られたので、いろいろインストールしたら最終的に動きました。
https://supercollider.git
【AtCoder解説】PythonでABC248のA,B,C,D,E,F問題を制する!
**ABC248**の**A,B,C,D,E,F問題**を、**Python3**でなるべく丁寧に解説していきます。
ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。
– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増えるご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!
**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM
AWS Cloud9でPython基礎~Amazon S3を利用する
2022/4/6(水)に行われたAWSセミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で学習した、AWS Cloud9 から Amazon S3 に Pythonでファイルを読み込み・アップロードする部分の復習。
# 構成図
AWS Cloud9から、 Amazon S3バケット上のテキストを読み込む操作と、テキストをアップロードする操作をPythonで実現する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/a6440a86-5807-63b9-acf4-10269055849e.png)# 1.S3バケットにあるファイルを読み込む
## 1-1.S3バケットの作成
マネジメントコンソールで S3 画面にいき、「バケットを作成」をクリックする。
バケット名は使用用途がわかる一意の名前を付ける。このバケット名はこの後のPythonコードで使用するため、コピーしてメモしておく。
バケット名以外はデフォルトのまま、「バケットを作成」をクリックする。
『Python1年生』で勉強中(その2)
## この記事について
『Python1年生』(以下、書籍)でPythonを学習する初心者の記録です。
今回も大したことは書いていませんが、こういうのは習慣的にやるべきだと最近読んだ別の本に書いてあったので、とりあえず書き散らします。■ バックナンバー
・[『Python1年生』で勉強中(その1)](https://qiita.com/megrim_q/items/c1417f507e96c1fb7015)## 実行環境
| OS・MW | バージョンなど |
|:-:|:-:|
| OS | Windows 10 Pro 21H2 19044.1645 |
| Python | 3.10.4 |
|IDLE |3.10.4|## やったこと
引き続き、IDLEに書籍のサンプルプログラムを入力してひたすら試していました。
その他、ときどき思いつきで書き方を変えてみたりなど。## 気になったところ
### Pythonについて
– 文字列の一部を抜き出す書き方、例えば「w[1:10]」のように書く場合、
「1番目~10番目まで抜き出す」のかと思いきや、「
【AtCoder】PythonでABC248のA, B, C, D, Eを解く
自分がコンテストでやった考察と実装を書いてみます.
# 目次
* [A問題 『Lacked Number』](https://qiita.com/yassu/items/ae83817838c2c25e5a1d#a%E5%95%8F%E9%A1%8C-lacked-number)
* [B問題 『Slimes』](https://qiita.com/yassu/items/ae83817838c2c25e5a1d#b%E5%95%8F%E9%A1%8C-slimes)
* [C問題 『Dice Sum』](https://qiita.com/yassu/items/ae83817838c2c25e5a1d#c%E5%95%8F%E9%A1%8C-dice-sum)
* [D問題 『Range Count Query』](https://qiita.com/yassu/items/ae83817838c2c25e5a1d#d%E5%95%8F%E9%A1%8C-range-count-query)
* [E問題 『K-colinear Line』](https://qiita.com
Python3 対話モードを終了する方法
# Python3ってターミナルに打ってみた!
~~~shell
python3
~~~
REPLと呼ばれる対話モードが開きますよね
動かしたはいいものの、何をどうすればいいのか分からないし、何より終了したいのにできません
そんなとき、↓のコードを実行してみてください
~~~python3
type(exit)(quit, ‘finish’)()
~~~# 結論
REPLを終了できました!# 補足
Python2の人は
~~~python
type(exit)(quit)()
~~~
で十分だった気がしますかしこ
ABC248での学び
# ABC248で得た学び
今日はA,Bだけ解けて、Cは考えたけど難しそうすぎて飛ばしました。
その後のD問題を後から友達と答え合わせする中で得られた学びを記します。* 1. ソート済み配列に対するBisectを使ったインデックス取得
D問題では、ソート済みの配列からある数L,Rについて、”L<X<R”を満たすような要素の数を取得する必要がありました。
僕は初め数列内のすべての要素に対してL
Djangoでwebサービスを作ってみるまで~その1(環境構築編)~
# Djangoでwebサービスを作ってみるまで~その1(環境構築編)~
## なぜ書き始めたか
ただの練習です。Djangoを触れるようになってから早1年、そろそろまとめるように何か記事を書いてみようということで初心者の方やDjangoってそもそもなんすかというような人向けの記事を僕なりにまとめたいと思います。(最終的には色々機能ごとに分けてテンプレ化したい)ということで早速始めていきましょう
## 今回のテーマ
タイトルにもある通り`Djangoでwebサービスを作ってみるまで~その1(環境構築編)~`です環境構築しましょう。(この記事を参考にdocker環境を構築しました。→https://qiita.com/bakupen/items/f23ce3d2325b4491a2dd)
今回はdocker上で構築・実装していきたいと思います。なのでdocker上のコンテナでコマンドを実行するような形になっています。“`
docker-compose run web python3 –version
docker-compose run web python3 man
AWS LambdaでPython基礎
2022/4/6(水)に行われたAPNパートナー限定セミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で学んだLambda部分の復習。
AWS Lambdaと Amazon Translate を使ってテキスト翻訳するアプリケーションを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/e23bb7ce-521c-da78-714d-d6f9589b28e0.png)# 1.Lambda 関数を実行する
## 1-1. Lambda 関数の作成
マネジメントコンソールで Lambda を開き「関数の作成」をクリックする。
– 「一から作成」を選択する。
– 関数名:適当な名前を付ける。目的がわかるようにしたいので今回は`translate_lambda`とした。
– ランタイム:python3.9その他項目はデフォルト値のまま「関数の作成」をクリックする。
![image.png](https://qiita-image-store.
【python】ezdxfを使ってみよう#1~図面作成と設定編~
# ezdxf~図面作成と設定編~
**ezdxf**というpythonライブラリを使って、**dxfの自動作図**を研究します。
自分のプログラミングノートを兼ねて、シリーズでまとめていきます。
この章ではまず**簡単なdxfデータを作成し、初期設定の確認をします。**
1. **ezdxfのインストール**
1. **自動作図は最短5行!**
1. **エディター内でdxfを即確認できる**
1. **便利なsetupを設定**
1. **setupの中身を確認**開発環境
windows 10(64bit)
Python 3.8.10
ezdxf 0.17.2## ezdxfのインストール
“`Python:pip install ezdxf
pip install ezdxf
“`
Excelに記録した座標を読み込んでの作図や、dxfを読み込んでExcelにまとめるなどをするには、openpyxlやpandasなどのライブラリを用いるようになっていきます。
## 自動作図は最短5行!
**線を一本作図した図面を作成します。**(図形の書き方の詳細は別の章でまとめ
Effective Pythonまとめ 2. List and Dictionaries (Item11~Item18)
Pythonのコーディング力を引き上げるために、[Effective Python Second Edition(英語版)](https://www.amazon.co.jp/dp/B07ZG18BH3/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)を用いて学習しています。
(日本語版は訳が機械的でわかりづらいというレビューが多かったので、英語版を利用することにしました。)
今回は、第二章のList and Dictionaries (Item11~Item18)について、要点をまとめていきます。:::note warn
個人的に解釈した内容を記述しているため、本の内容と厳密には一致しない表現が含まれる可能性があります。
:::# Item11: Know How to Slice Sequences
### 基本的なsliceの使い方
Pythonでは、list, str, bytes型などをスライスする際には、`somelist[start:end]`が利用できる。
この際、startに指定したindexに対応する要素は実行
【Python】1~4次までの地域メッシュコードを計算する
# はじめに
緯度経度から、地域メッシュコードを1~4次まで計算するPythonのPGを作成しました。
# メッシュコードとは
緯度経度を基に四角の区域に分けたものです。交通量分析やPTでメッシュコード単位で分析をしているとよく出てきます。
詳細は下記を参照してください
– [総務省統計局 地域メッシュ統計の特質・沿革](https://www.stat.go.jp/data/mesh/pdf/gaiyo1.pdf)
– [地域メッシュまとめ](https://qiita.com/nkuchiii/items/a3a83d5a2cdd5d8d630c)# 環境
– python version 3.7.4
– windows10# 実装
“`python:test.py
# coding: UTF-8
# メッシュコード変換設定用変数
MILLISECOND = 3600000 # 計算の単位(ミリ秒)に変換して計算する#*************************************************************************
ImportError: cannot import name ‘xxx’ from partially initialized moduleの対処法
# エラーが出た状況
このエラーが出たのが1つのファイルに色々コードを記述して、だいぶごちゃごちゃしてきたので、複数ファイルに分けようとしていました。
そしたらファイルを複数に分けた後、「ImportError: cannot import name ‘xxx’ from partially initialized module」が出てきやがりました。# 原因:循環import
このエラーの原因は循環importでした。
循環importとはなんだよという方のために説明いたします。ファイルA
“`
import ファイルB
“`ファイルB
“`
import ファイルA
“`めちゃくちゃ簡潔に書くとこんな感じです。
ファイルAでファイルBをインポート、ファイルBでファイルA。
両方のファイルでファイルを呼び出し合っていることによりこのエラーが発生してあります。この両方からファイルを呼び出し合っているところを解決してあげるとエラーが消えました?
# 終わりに
初心者エンジニアですので何かありましたらコメントしていただけるとありがたいです!☺️
自動でvenvを(de)activateする
# Introdaction
Pythonで仮想環境作ったはいいけど毎回activate/deactivateするのが面倒臭い。
自動化させましょう。## 環境
Python3.3 以降
Ubuntu 20.04## 特徴
– プロジェクトディレクトリに移動した際に、直下に仮想環境があれば、自動でactivateする
– プロジェクトディレクトリの外へ`cd`する際には自動的にdeactivateする
– 同一プロジェクトディレクトリ内で`cd`してもdeactivateしない
– 仮想環境名は任意に設定できる※参考にさせていただいたのはこちら[[1−3](#references)]。
こちらのページで示されている方法を実装すればそれで十分だったが、プロジェクトディレクトリ下にあるサブディレクトリに移動してもdeactivateされてしまったり、仮想環境名を固定しなければいけなかったりと、ちょっと自分の使い方では痒所に手が届かなかったので自分好
CentOS Stream 9 LAMP.sh
vi Cent0S9.sh
“`
#インストール
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf config-manager –set-enabled remi
dnf -y install xrdp tigervnc-server
systemctl start xrdp.service
systemctl enable xrdp.service
systemctl set-default graphical.target
systemctl status firewalld#日本語環境インストール
dnf -y install ibus-kk
Jupyter NotebookでなくJupyter Labを起動する方法
Windows環境でAnacondaをインストールしてJupyterを使おうとしたらJupyter NotebookとJupyter Labがあることに気づいた。
スタートメニューから起動するとJupyter Notebookが起動するが、新しいのはJupyter Labらしいので設定を変更してJupyter Labが起動するように変更した。1. Anaconda Promptを開いて設定ファイルを生成。
“`python
jupyter notebook –generate-config
“`
2. `C:\Users\ユーザ名\.jupyter\jupyter_notebook_config.py`が作られているので開く。
3. 下記のところを`lab`に書き換える。
“`python
c.NotebookApp.default_url = ‘/lab’
“`設定ファイルは.pyなので行頭に余計なスペースなどが入るとエラーで設定が有効にならない。
Pythonの初期化処理
# __init__メソッド
これはクラスからインスタンスを生成するために使用されるメソッドで、クラスの初期化の処理を担っています。
Rubyで例えるとinitializeメソッドと同じで次のように記述するはずです。
“`ruby
class クラス名
def initialize(a,b,c)
@a = a
@b = b
@c = c
end
end
“`一方Pythonでは以下のように記述します。
“`python
class クラス名:
def __init__(self,a,b,c):
self.a = a
self.b = b
self.c = c
“`
と記述します。
これによりクラスのインスタンスを生成され、a,b,cの値は初期で使用される値となります。
pythonでは__init__メソッドの引数の中にselfが入っていますが、これによりクラスのインスタンスを生成しているので、
“`python
def __init__(self, ~)
“`
と覚えておくとよいかもしれ
[Python3 / pynamodb] create_table時に Table read and write throughput must be at least 1, and cannot be null
# 発生したエラー
> E pynamodb.exceptions.TableError: Failed to create table: An error occurred (ValidationException) on request (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) on table (some_data) when calling the CreateTable operation: Table read and write throughput must be at least 1, and cannot be null
>
>.venv/lib/python3.8/site-packages/pynamodb/connection/base.py:651: TableError`Table read and write throughput must be at least 1, and cannot be null`がエラーの原因っぽいことはすぐにわかった。
けれど、`Table read and w