- 1. 条件に一致するDatabricks Job一覧取得方法
- 2. PythonからTwitterと天気予報のAPIを使って定期ツイートをする
- 3. psycopg2.extensionsが見つからない時の対処法
- 4. ABC82メモ
- 5. Pythonでアナグラムを判別するプログラムの作成
- 6. デッキ画像から駒名称を抜き出す【テンプレートマッチング編】
- 7. AOJトライに関する知識知見の記録共有:Volume0-0060
- 8. Python: 画像データからサムネイルを作成する
- 9. pythonの処理に制限時間を設定する
- 10. PythonプログラムからTwitter APIを利用して大量のTweetを取得する
- 11. PythonプログラムからOpenLDAPに接続&ユーザ情報を取得する
- 12. 【Python3】python-ulidで一意なIDを作成する
- 13. Raspberry Piでsounddeviceを利用するための準備
- 14. 【簡単】django_restframeworkのjwt認証を最低限実装していく
- 15. 【MediaPipe】Holisticのランドマークの具体的な場所、座標取得・保存まとめ【Python】
- 16. 【Python】Python3.10以降の新機能 match文を使ってみる
- 17. 【Mac/python3.8】Twitter Bot that Tweets Every Hour!
- 18. Python3 コーディング規約(PEP8-ja)
- 19. kivyMD開発其の壱 初期公開説明篇
- 20. Paiza 便利ツール
条件に一致するDatabricks Job一覧取得方法
# 対象読者
– チームで[Databricks](https://databricks.com/jp/)を利用している方
– 既存のJobで細かい条件に一致するものの洗い出しを行いたい方# 目的
Jobがたくさんあるが、その中でも現在定期実行されているものを確認する。
(応用すれば他の情報でも抽出可能とおもわれます。)# 流れ
– [Databricks CLI](https://docs.databricks.com/dev-tools/cli/jobs-cli.html)を用いてJob一覧とそれらに紐づく情報をjsonで出力し、
– jupyter notebookで読み込み、
– 確認したい情報を抽出しcsvで出力します。# 環境
– Mac
– Databricks on AWS
– python
– jupyter notebook### 事前準備
– [Databricks CLI](https://docs.databricks.com/dev-tools/cli/jobs-cli.html)が利用可能なように準備をしてくださ
PythonからTwitterと天気予報のAPIを使って定期ツイートをする
#初めに
タイトルの通りPythonを使用して定期ツイートをするプログラムを作りました。
使用したライブラリはtweepy、使用した天気予報APIは[天気予報 API(livedoor 天気互換)](https://weather.tsukumijima.net/)です。
lolipopというレンタルサーバー上にアップロードして定期実行させています。#目次
1.Twitter APIの取得
2.tweepyのインストールとテスト
3.天気予報APIの取得とテスト
4.最後の仕上げ
5.サーバーにアップロード
6.サーバー側にtweepyをインストール
7.サーバー上で定期実行#1.Twitter APIの取得
これが一番大変でした。
[Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ](https://qiita.com/kngsym2018/items/2524d21455aac111cdee) を参考にして登録しました。
元々持っていたアカウントを使用しました。手順は以下の通りです。1.電話番号認証をする
2.Twitter Dev
psycopg2.extensionsが見つからない時の対処法
## 概説
djangoでPostgreSQLを使ったWebアプリを作るとき、macOS(intel)の仮想環境上で`showmigration`や`makemigration`を実行しようとしたら`ModuleNotFoundError: No module named ‘psycopg2.extensions’`が出てしまったとき、wheelとsetuptoolsをアップデートした上でpsycopg2-binaryを強制的に再インストールすることで解決した。## 環境
環境は以下の通りです。
| 名称 | バージョン |
|:-:|:-:|
| macOS | Monterey(12.1) |
|django|4.0.1|
| Python | 3.8.9 |
| brew | 3.3.10 |
| pip | 21.3.1 |
| psycopg2-binary | 2.9.3 |
|PostgreSQL|14.1|## 対処法
仮想環境上で以下のコマンドを実行してください。
“`:shell
pip install –upgrade wheel
ABC82メモ
# ABC82 メモ
## [A – Round Up the Mean](https://atcoder.jp/contests/abc082/tasks/abc082_a)$a$と$b$を足して2で割った計算結果を切り上げる。
これは$a+b+1$を2で割って切り捨てたものと等しい。“`python:82A.py
a, b = map(int, input().split())ans = (a+b+1)//2
print(ans)
“`## [B – Two Anagrams](https://atcoder.jp/contests/abc082/tasks/abc082_b)
$s$と$t$を一度リストにして、$s$を昇順、$t$を降順にそれぞれ並び替え、文字列に戻す。
文字列同士の比較演算は、辞書順で比較されるため、問題文通りそのまま比較。“`python:82B.py
s = input()
t = input()s = list(s)
t = list(t)s.sort()
t.sort(reverse=T
Pythonでアナグラムを判別するプログラムの作成
# アナグラムとは
>〘名〙 (anagram) ことばのつづりを換えることによる遊び。単語をばらばらに崩し、全く別の単語を作る。LIVE が EVIL に、TIME が EMIT にの類。
出典: 精選版 日本国語大辞典例えば、evilとlive, eatとteaなどがアナグラムの例として挙げられます。
# 与えられた配列からアナグラムをグループ分けする
いくつかの単語が格納されたリスト(strs)からアナグラムとなっている単語のグループを返す関数を作ります。
“`Python
def groupingAnagram(strs):
hashMap = {} #ハッシュマップを作成for s in strs:
key =”.join(sorted(s)) # 文字列をアルファベット順にソートする
if key not in hashMap.keys():
hashMap[key] = [s] # ハッシュマップにキーを作成
e
デッキ画像から駒名称を抜き出す【テンプレートマッチング編】
# はじめに
こんにちは。逆転オセロニアのYouTubeチャンネル「まこちゃんねる」の中の人です。
本稿では、**デッキ画像から駒名称を抜き出すこと**を目標にします。
抜き出す方法はいくつか存在すると思いますが、今回は**テンプレートマッチング**を使った方法を利用してみます。
# モチベーション
リスナーさん**「デッキに入ってる駒名称が分からない!教えて!」**
まこちゃん(うーん…毎回手動で書くの面倒くさいな…ある程度自動化したさ)# テンプレートマッチングとは?
**入力画像(今回であればデッキ画像)からテンプレート画像に類似する箇所を探索する手法**です。類似度と座標を取得することができます。ただし、回転や拡縮に弱く処理も遅いのが欠点です。
AOJトライに関する知識知見の記録共有:Volume0-0060
# タスク概要
Card Game
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0060
# コード実装例
TIPS1. 例外処理含む評価パターンを追加
“`Python
import pprint, sys, timedef core(arg, adv=True, n_cards=10, s_limit=20, k=3):
my_cards = arg[0]
your_cards = arg[1]n_cards = max([n_cards] + my_cards + your_cards)
if adv:
candidates = [n for n in range(1, s_limit – sum(my_cards)) if n not in my_cards + your_cards]
else:
candidates = [n for n in range(1, n_cards + 1) if n no
Python: 画像データからサムネイルを作成する
“`python
import imghdr
from io import BytesIOfrom PIL import Image
def create_square_thumb(
binary_of_fullimage: bytes,
thumb_size: tuple, # サムネイルのサイズ(x, y)を指定する。 例:(100, 100)
thumb_quality: int, # サムネイルの品質を指定する。↓をご参照
) -> bytes:
“””
画像データのbytesから、指定したサイズと品質でサムネイルを作ってbytesで返す。
[thumb_quality: int]
フィルタ ダウンスケーリング品質 アップスケーリング品質 パフォーマンス
PIL.Image.NEAREST ⭐⭐⭐⭐⭐
PIL.Image.BOX ⭐ ⭐⭐⭐⭐
pythonの処理に制限時間を設定する
探索アルゴリズムを実装した際に、「10秒で探索!」など制限時間をつけて探索したいなと思うことがあり、色々探していると`timeout-decorator`という良さげなライブラリがありました。
#### timeout-decorator
https://github.com/pnpnpn/timeout-decoratorpipインストールすれば使えます。
制限時間が来ると強制終了するような使い方は[参考になる記事](https://qiita.com/toshitanian/items/133b42355b7867f5c458)があったのですが、探索アルゴリズムで使う際には制限時間がきたら最新の結果を返すような挙動をさせたいです。
ということで以下のようなコードになりました。
“`python:test
import time
import timeout_decoratordef long_function(i):
time.sleep(4)
return iclass time_limit_class:
def __init__
PythonプログラムからTwitter APIを利用して大量のTweetを取得する
# はじめに
過去の記事([※1](https://qiita.com/Blaster36/items/4bf54b129f506f814a6c))で自然言語処理をする機会が増えてますとお伝えしてました。
その対象としては、Twitterも含まれていて、Tweetの取得を試みた時期がありました。
> この2~3か月くらい、筆者は仕事でデータ収集(BeautifulSoupやSeleniumを使ったWebスクレイピング)と自然言語処理(MeCabを使った形態素解析とgensim使った単語の分散表現と感情分析)をする機会が増えてます。もともと趣味で、プログラムからTweet(投稿)したり、他者のTweetを数件取得したりは経験していました。
が、大量データが必要になったので、既存の有志ブログに掲載のCodeを参考にしながら紹介します。(掲載のCodeが素晴らしく、大変助かりました。)
**[TwitterAPI でツイートを大量に取得。サーバー側エラーも考慮(pythonで)](http://ailaby.com/twitter_api/)**
※対象は「大量にダウンロード」の節
PythonプログラムからOpenLDAPに接続&ユーザ情報を取得する
# はじめに
これまでJupyterHub/JupyterLabを利用した分析環境をVirtualBoxもしくはWSL2で整備してきたが、共通して認証にはOpenLDAPを使ってきた。
自宅PCでは自ずと筆者のみの利用ではあるが、会社(組織)で利用するならばユーザ管理をする必要がある。
どれだけのユーザがいて、いつパスワード変更をしたか、etc.というわけで、OpenLDAPに登録したユーザの情報を取得するプログラムを書いてみようと思う。
なぜプログラムか?かというと、OpenLDAP操作用のWebUIにはFusionDirectoryやphpLDAPadminがあるものの、全ユーザの情報を一覧で取得するのはちょっと面倒と思った次第でして。そこで、本稿では、**「PythonプログラムからOpenLDAPに接続&ユーザ情報を取得する方法」**を順に紹介してゆく。
## 本稿で紹介すること
– OpenLDAPの起動
– PythonプログラムでOpenLDAPへの接続
– PythonプログラムでOpenLDAPからユーザ情報の取得## 本稿で紹介しないこと
–
【Python3】python-ulidで一意なIDを作成する
## 環境
– Ubuntu20.04
– Python3.8.10
– python-ulid1.0.3## 背景
### 前提事項
オブジェクト指向においてエンティティは「同一性によって識別されるオブジェクト」とされます。つまり、エンティティは一意なIDを持つ必要があります。(一意性が担保できればIDでなくても良いですが)
### 問題意識
今までIDの採番はRDBに任せていました。具体的にはidをautoincrementにしてinsertするときに自動採番するという方式です。
この方法には以下2つの問題があります。
1. DBにinsertするまでエンティティがIDを持たない。(つまり、エンティティの定義を満たしていない状況が生まれる)
2. IDというドメイン層の関心事がインフラ層(DB)の責務になっている。この問題を解決するには次の要件を満たす手段が必要です。
1. ドメイン層で実現する
1. オブジェクト生成時にIDがセットされる
1. 一意性が担保されている
1. 一意である(DBの主キーとして利用するため)
1. 順序が担保されている(ソー
Raspberry Piでsounddeviceを利用するための準備
## What is sounddevice?
[sounddevice](https://python-sounddevice.readthedocs.io/)は、[PortAudio](http://www.portaudio.com/)ライブラリのバインディングと、[NumPy](https://numpy.org/)配列で生成した信号を再生したり、[NumPy](https://numpy.org/)配列として録音するためのライブラリです。## Setting audio output for Raspberry Pi
1. `sudo raspi-config`を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2275052/88a83139-9fd9-3d
【簡単】django_restframeworkのjwt認証を最低限実装していく
# 目的
スロットリングの実装は以前に行い、APIを叩く回数に制限をかけることでブルートフォース攻撃などに対策を行なったが、**それだけでAPIに関するセキュリティが万全と言えるわけもない。**
**なぜなら誰でもAPIを叩ける状態になっているから。**そこでこのAPIを認証されたユーザーだけが制限された回数叩けるように認証周りを実装していきたい。# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebrew | 3.3.8 |
| mysql | Ver 8.0.27 f
【MediaPipe】Holisticのランドマークの具体的な場所、座標取得・保存まとめ【Python】
自分用にMediaPipeのHolisticでlandmarkを取得した結果をまとめました。
holisticを使うと画像中の人物に対してpose, face, right_hand, left_handのランドマーク推定をまとめて行ってくれます。#下準備
imageに対してmediapipeを適用します。“`python:下準備
import mediapipe as mp
import cv2# 初期設定
mp_holistic = mp.solutions.holistic
holistic = mp_holistic.Holistic(
static_image_mode=True,
min_detection_confidence=0.5)image = cv2.imread(‘画像パス’)
results = holistic.process(
cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
“`resultsにすべての結果が格納されています。
以下、resultsからそれぞれのランドマークを抽
【Python】Python3.10以降の新機能 match文を使ってみる
### はじめに
`Python3.10` から `match文` が搭載されました。`match文` は 従来の`if文` と異なり条件式に対応できないという、落とし穴があるのと、
if文と同じように、for文と組み合わせて使うことが多いと思ったので、そこら辺を記載しようかなと思います。※注記※
正規表現にもmatch関数というものがあるので、混在しないように気をつけてください。完全に別物です。
正規表現のmatch関数については以下の記事を参考にしてみてくださいね。[Python 正規表現のmatch関数](https://ai-inter1.com/python-regex-match/)
—
### 動作確認環境
OS: mac OS Monterey 12.1 (M1 Mac)
環境: miniforge (conda環境)
Python: 3.10.1
エディタ: Visual Studio Code※注記※
必ず、Python 3.10.0以上で実行してください。
【Mac/python3.8】Twitter Bot that Tweets Every Hour!
# Objective
To create a twitter bot that tweets every certain period of time (In this project, every one hour) with tweepy
# Version
– python 3.8
– tweepy 4.4.0# Get Developer Account for Twitter
To create developer account for twitter, go to here
You may need to enable your e-mail and phone number for the Elevated account. You need to update your account from **Basic** plan
Python3 コーディング規約(PEP8-ja)
Python標準ライブラリのコーディング規約を整理します。Pythonのコーディング規約は[PEP8-ja](https://pep8-ja.readthedocs.io/ja/latest/)という文書にまとめられており、命名規則やインデントのルールが記載されています。
標準的なコーディングルールに準ずることでプログラムの可読性を向上させることができます。
### インデント
– インデントは1レベルにつき4つ
– 複数行を継続する場合は4つでなくてもよい
– タブではなくスペースでインデントをつける### 1行の長さ
– 最大79文字
– docstringやコメント等のテキストは最大72文字
– 2項演算子の前で改行する## 命名規則
|作成するもの|命名規則|
|-|-|
|パッケージ(ディレクトリ)|全て小文字
アンダースコアは非推奨|
|モジュール(ファイル)|全て小文字
アンダースコアは可|
|クラス名|CapWords(頭文字が大文字, それ以降はキャメルケース)|
|例外|CapWords
名前の末尾に「Error」を付ける|
|
kivyMD開発其の壱 初期公開説明篇
正月気分がようやく薄れ、またいつもの毎日が戻ってまいりました。(強制)
今年もよろしくお願いしまーす!(いろんな方が見てると思うので簡素に)
はい、ということで新年もKivyMDのお時間がやってきました!お正月気分は
まだ抜けてない人が多いでしょうかね。投稿者も全然抜けてはいません:joy::joy::joy:というわけで、寒い中なんかお仕事も始まっていますが、(あと体重が増えたりも…)
なんかやる気でなーとなった方はこちらの記事でも読んでお正月気分を抜いてもら
えれば、この上なく幸いでございます。(おそらく抜けない)強引に今日のお題に入っていきますが、まずは去年の年末にどんなことをやって
いたかと言うと、ギリギリ滑りこみセーフで1stAppのリリースを告知していま
した。なんそれ?そんなの知らないよという方は以下の記事を見てもらえればと
思います。https://qiita.com/virty/items/3d03e5e2c8ec35a9117d
まぁ、全然大したことないTODOアプリでしかも完成はしていないんですけどね。。
今回はこちらのアプリの続編で、前回
Paiza 便利ツール
#入力
“`console:入力
1 2
“`
###一行複数値の入力(数固定)
“`python:コード
x, y = map(int, input().split())
print(x, y)
#1, 2
“`###一行複数値の入力(数不定、list型)
“`python:コード
x = list(map(int, input().split()))
print(x)
#[1, 2]
“`###複数行複数値の入力(2次元list型)
“`console:入力
1 2 3 4
5 6 7 8
9 10 11 12
“`“`python:コード
data_list = [ list(map(int,input().split(” “))) for i in range(3)]
print(data_list)
#[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
“`#初期化
##list
###1次元
“`
x = [0] * 4
print(x)
# [0, 0, 0, 0]“`
##