- 1. Pythonでシーザー暗号(漢字含む)
- 2. Django, 多対多関係モデルを用いて簡易アプリケーションを作る
- 3. 【Python】データ分析環境をコンテナで作るならAlpineベースイメージはやめとけ
- 4. 日本※で一番※ポーカーが上手い※のは誰か計算してみた(TrueSkill)~評価編~
- 5. venv が動かないときの対応の一例
- 6. Pygameを使ってテトリスを作った
- 7. Pythonのs3fsライブラリは常駐プログラムに使わない方が良いかもというお話。
- 8. Qiitaにコードを投稿するための.pyファイルの変換
- 9. Selenium Python readonlyに値をねじ込む。
- 10. 日本※で一番※ポーカーが上手い※のは誰か計算してみた(TrueSkill)~実装編~
- 11. 線形探索(番兵法)
- 12. PythonのtkinterでGUIを作ってみる_その2
- 13. FRIDAがAndroidコミュニティトークンの検証をクラック
- 14. ubuntu16.04でkeras-yoloを使用し動画を読み込む
- 15. Repl.itで爆速でPython3+Flask+SQLite3のプログラムを動かしてみた
- 16. Python Gui
- 17. 始めてのanacondaと仮想環境作成
- 18. 二分探索
- 19. 日本※で一番※ポーカーが上手い※のは誰か計算してみた(TrueSkill)~理論編~
- 20. リモートのpython3(psycopg2)からubuntu16.04@AWSのpostgresqlに接続
Pythonでシーザー暗号(漢字含む)
# シーザー暗号
[シーザー暗号 – Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%B6%E3%83%BC%E6%9A%97%E5%8F%B7)
アルファベットを指定された文字数分ズラすという、原始的な暗号化手法です。# 実装(アルファベット・数字のみ)
アルファベット、数字のみの場合はpythonの組み込み関数のROT13を使えばできます。
Wiki曰く、伝統的にこういう場合はシフト数は13らしいです。
13にしておけば、同じ関数で暗号化と複合化をこなせるからでしょうね。“`python
import codecs
codecs.decode(‘Hello, World!’, ‘rot13’)
# ‘Uryyb, Jbeyq!’
codecs.decode(‘Uryyb, Jbeyq!’, ‘rot13’)
# ‘Hello, World!’
“`# 実装(漢字含む)
今回は、漢字を含む文字列のデータのマスキングが必要だったので、自前で作りました。
アルファベットと数字はA-Z,a
Django, 多対多関係モデルを用いて簡易アプリケーションを作る
#はじめに
最近個人的にアプリケーション開発していて一つ詰まった箇所として、**models.py**で作成したモデルを**templates**に表示させることがありました。多対多のリレーショナルデータベースのモデルの作成に関する解説は多く見かけ参考にさせていただきましたが、それを**htmlファイル**に表示する方法に関する情報がどうしても**Django初心者**の自分には分かりにくく、理解に時間がかかりました。今回はDjangoの初心者の方でも分かりやすく、**一つの簡易アプリケーション**を開発しながら**多対多関係モデル**の作成、表示方法について解説していきたいと思います。##今回作成する簡易アプリについて
今回のテーマとして**多対多関係モデル**を扱いますので、まずはモデルを作る前にどのような**アプリ**を作るか書いていきます。分かりやすい例としてパッと出てきたものが**動物園**(上野動物園、旭川動物園など)のリンクを押すと**その動物園にいる動物**(象、キリン、アルパカなど)を表示してくれるアプリケーションだったので、簡易的なものになりますが、そのような*
【Python】データ分析環境をコンテナで作るならAlpineベースイメージはやめとけ
Numpy/Pandas、scikit-learnを使うPython実行環境を整えようとしているあなたへ。
悪いことは言わない、alpineイメージを使うのは**やめとけ**。
# 結論から
**slim**イメージを使いましょう。
3.7系の最新であるバージョン`3.7.5`のベースイメージサイズの違いは以下の通り。“`shell
$ docker images
python 3.7.5-alpine3.10 b11d2a09763f 8 days ago 98.8MB
python 3.7.5-slim 46cf279fff55 11 days ago 179MB
python 3.7.5 023b89039ba4 11 days ago 918MB
“`# あれこれパッケージ追加するのにAlpineは不向き
Pythonでコンテナ環境を立ち
日本※で一番※ポーカーが上手い※のは誰か計算してみた(TrueSkill)~評価編~
# 記事へのリンク
1. [理論編](https://qiita.com/syym88/items/6d19b24ce2eebed730d8)
2. [実装編](https://qiita.com/syym88/items/be75914c742dcdca33ae)
3. 評価編(←本記事)# 本記事におけるお断り
本記事は筆者が自学自習のためにデータ取得から計算までを行ったものです。特定の団体や個人から許可許諾はとっていないため、もし内容に問題があるとお考えの場合にはご連絡いただければ幸いです。
また、タイトルにもある通り、単純に強い、上手いを判断するのが困難であるポーカーにおけるスキルの『推定』がやりたかったことです。
本記事を通じて少しでもポーカーに興味を持ってアミューズメントやオンラインでポーカーを始めたいと思う人が増えれば何よりです。#実行結果
GitHubに計算した結果を格納しました。以下から参照&DL可能です。
列名等はReadMeをご覧ください。個人的な感覚では上二つがある程度良い感じの並び順だと思います
[TrueSkillのエクスポース、レーティング順](
venv が動かないときの対応の一例
# 状況
`python -m venv $HOME/venv/3.6.8` などとしても、“`
Error: Command ‘[‘/home/tabaru/venv/3.6.8/bin/python’, ‘-Im’, ‘ensurepip’, ‘–upgrade’, ‘–default-pip’]’ returned non-zero exit status 1.
“`となり、venv の設定ができない。
# 環境
* `icc –version` とすると、Intel compiler が動く。
* `python –version` とすると、 `Python 3.6.8 :: Intel Corporation` などと出力される。python 3系は python3 としないと呼ばれないはずなのに。
* Ubunt 18.04 だが、おそらく distribution は無関係。
* Intel compiler の設定を直前に行っていた。# 原因
環境変数 PATH 中で Intel python の bin ディレクトリが先に書かれていたため、
Pygameを使ってテトリスを作った
# 初めに
2ヶ月ほど前に作ったテトリスです。供養のために記事として投稿しました。プログラムについての説明は気が向いたら追記する予定です。# プレイ画面
![Screenshot from 2019-10-30 18-42-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407395/6837bdbb-f264-9ca9-7cf6-08c3c0cfd2b4.png)
なんかそれっぽいですね# プログラム本体
割とガバガバ設計なので、本家と比べると使用感が異なると思います。実行にはpygameが必要なので、ない人はインストールしてください。
“`Python3
import pygame
from pygame.locals import *
import sys
import random
import copy# 定数
MAX_ROW = 20
MAX_COL = 10class Block:
def __init__(self, block_type):
Pythonのs3fsライブラリは常駐プログラムに使わない方が良いかもというお話。
S3に保存したCSVファイルを読み込む処理を書いていたところ不可解な事象に遭遇したので備忘。
`s3fs`パッケージのキャッシュが悪さしている可能性が非常に高い。# 起こったこと
プログラムの起動後にS3に追加されたファイルを認識できなかった。アップロードは完了してファイルが利用可能な状態になっているのに以下の状態になる。
– `s3fs.S3FileSystem.exists`メソッドの戻り値が`False`になる
– ファイルを読み込もうとすると**Access Denied**エラー(ファイルが存在しない場合と同様のエラー)例えば以下のような挙動となる
– プログラムを起動(例では対話プロンプト)
– s3fsを使用してS3バケットの中身を確認する
– プログラム起動後の途中にバケットへファイルを追加する
– 追加したファイルが読み込めない“`python
# S3は以下の状態とする
>>> import s3fs
>>> fs = s3fs.S3FileSystem()
>>> fs.ls(‘bucket-name/path’)
# [‘bucket-name
Qiitaにコードを投稿するための.pyファイルの変換
AtCoder Beginner Contest (A~C問題) の過去問回答を投稿するために用いているコードです。
手順
1. .pyファイル -> .txtファイル変換
2. .txtファイルの中身を、1つの.txtファイルに格納自身なりの工夫
・ 対象回をrangeで選択できるようにした(初回投稿日: 2019/10/30, 最終更新日: 2019/10/30)
““python
import re
import os
import shutil
import globfor num in range(136, 137):
fld_path = ‘C:/path/02_Atcoder/ABC’
fld_path_txt = ‘C:/path/02_Atcoder/ABC/txt’
file_num = ‘/ABC’ + str(num)
file_num_list = glob.glob(fld_path + file_num + ‘*’)
print(file_num_list)#該当num回のファイルを
Selenium Python readonlyに値をねじ込む。
###正しいかどうかは別として。
driver.execute_script(“document.getElementsByName(‘name属性’)[0].removeAttribute(‘readonly’);”)
変数名 = driver.find_element_by_name(“name属性”)
変数名.clear()
変数名.send_keys(‘ねじ込む値’)readonlyを一旦削除
入ってる文字を削除
値を入れる
日本※で一番※ポーカーが上手い※のは誰か計算してみた(TrueSkill)~実装編~
# 記事へのリンク
1. [理論編](https://qiita.com/syym88/items/6d19b24ce2eebed730d8)
2. 実装編(←本記事)
3. [評価編](https://qiita.com/syym88/items/2359a250d4145da31f33)# 本記事におけるお断り
本記事は筆者が自学自習のためにデータ取得から計算までを行ったものです。特定の団体や個人から許可許諾はとっていないため、もし内容に問題があるとお考えの場合にはご連絡いただければ幸いです。
また、タイトルにもある通り、単純に強い、上手いを判断するのが困難であるポーカーにおけるスキルの『推定』がやりたかったことです。
本記事を通じて少しでもポーカーに興味を持ってアミューズメントやオンラインでポーカーを始めたいと思う人が増えれば何よりです。#実行環境
今回環境はGoogle Colaboratoryにて実装しました。### Google Colaboratory
Googleが公開している無料で使えるハイスペックなJupyterNotebook実行環境です。
Googl
線形探索(番兵法)
#はじめに
順番に全部探索していくということで、「for文で一発やんけ!w」と思って説明を読んでいきました。すると、番兵法というものを見てよくこんなこと思いつくなぁと思いました。#コード
“`linear_search.py
def linear_search(A,key):
i = 0
A.append(key)
n = len(A) – 1
while A[i] != key:
i += 1
if i == n:
return “NOT_FOUND”
return i
“`#説明
引数に配列Aと探したい値keyを取ります。見つかれば最初に見つかった配列のインデックス、見つからなければNOT_FOUNDという文字列を返します。keyを配列の末尾に追加(番兵)することによって、whileの終了が保障されているため終了条件がいらなくなっています。(なんかすごい)#参考文献
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造(https://www.amazon.co.jp/%E3
PythonのtkinterでGUIを作ってみる_その2
## 過去のおはなし
[PythonのtkinterでGUIを作ってみる]
(https://qiita.com/daisuke8000/items/9b6bb05e78f2bbc0c315)GUIはまだまだ奥が深いなぁと思ったので投稿します。
## 今回のおはなし「grid」と「StringVar」
gridはWidgetを配置するための手法みたいなやつです。(違う?)
「pack」とか「place」とかあります。(ちなみに前回はplaceでした)
昨日、今日に触る機会があったのでちょっとお勉強がてらやってみました。## 感想
個人的な感想だが、考え方が少し抵抗ある。
直感的なのはplaceかなぁ。と思う。
gridはなんとなくだが、開発者っぽい考え方だなぁって印象でした。## コード
“`py
import tkinter as tk
#ボタンバインド用関数
def btn_click():
onp = textbox1.get()
var.set(onp)
if len(onp)!=8:
var1.set(‘Err
FRIDAがAndroidコミュニティトークンの検証をクラック
(ヒント:日本語はすべてGoogle翻訳からのものです)
## まえがき(前言)
>这个社区是酷安,以前想过要爬(spider)这软件,但是都忘了,几天前抓了下它的包,发现请求 **headers** 里有一个 **token** 验证,果断就给破了> このコミュニティはCoolapkで、以前このソフトウェアを入手することを考えていましたが、それを忘れていました。数日前にそのパッケージを入手し、リクエスト** headers **に**トークン**の検証があることがわかりました。 そうです。
## 分析プロセス(分析过程)
最初にバッグをキャプチャします(先抓个包)
![zhuabao.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317662/34cbd1bc-a01a-4c38-84d3-91b0c92e9aa1.jpeg)
確認に使用されるリクエストヘッダー **X-App-Token** があることがわかります。**X-App-Device** に関しては、携帯
ubuntu16.04でkeras-yoloを使用し動画を読み込む
# 目的
前回、darknet_rosをインストールしてROS上でyoloを使用してみました。
今度は動画を読みこませたいと思います。
なぜかというと、物体認識をする現場にいるわけじゃないので、
現場で動画を撮影してきてテストしたいと思い…本家のyolov3は静止画かwebカメラにしか対応していないので、
撮影した動画にたいして物体認識できるようにkeras-yoloをインストールします。
そしてyolov3で学習させた自前のデータを使って認識してみます:dancer::sparkles:# 環境
ubuntu16.04
Nvidia 384.183
CUDA 9.0
python2.7.12
python3.5.2# 必要なもの
TensorFlow-gpu
Keras
Keras版YOLOv3# TensorFlowのインストール
python3系を使っていくので、pip3でpython3にインストールします。
またデフォルトはpython2.7のため、pythonを実行するときには**python3**と指定していきます。“`
sudo pip3
Repl.itで爆速でPython3+Flask+SQLite3のプログラムを動かしてみた
## 0.初めに
私はエンジニアではないただのドシロウトです。
Python3+Flask+SQLite3の環境が簡単に作れるRepl.itというオンラインIDEを試してみました。
Repl.it – The world’s leading online coding platform
https://repl.it/60以上のプログラム言語に対応したIDEみたいです。
無料で使えます。(非公開だと有料)## 1.使い方
あまりに簡単なので使い方をアニメGIFまとめました。
![anime gif](https://i.imgur.com/A4m0y6z.gif)
たったこれだけです。
ログインしなくても保存できないだけで試すことはできます。
## 2.コピペしたプログラム
すごく単純なFlaskを利用したプログラムです。
WEB画面から以下ができるプログラムです。
* データベースの生成
* テーブルの生成
* テーブル内容一覧表示
* データベースの削除“`python:main.py
from flask import Flask
impo
Python Gui
# 初めに
Pythonによるローカル動作のソフトウェアにおいて、GUI実装には主に3つのライブラリにて実装される場合が多い。
– Qt
– wxWidgets(wxPython)
– Tkinterあと、そもそもwebアプリケーション的に作成し、GUIはWebブラウザ側にお願いするという方法もある。そうなると、以下のライブラリが考えられる。
– Django
– FlaskDjangoは機能が多く、ローカル動作のソフトウェアで使用するには不要であると考えるため、今回はFlaskに絞る。
## Qt
QtはC++で実装されたオープンソースである。Pythonによる使用には主に以下のライブラリを使用することが多い。
PyQtの場合は、ネット上の情報量も多く、使用しているエンジニア人口も多い。– PyQt
– pysideQtはGPL、LGPL、商用ライセンスの3つが提供されている。PyQtはGPL、pysideはLGPLで提供され、それぞれに商用ライセンスがある。
商用ライセンスを使用しなくても、GPLおよびLGPLは特に商用利用を禁止していないが、GPL
始めてのanacondaと仮想環境作成
#初めてAnacondaをダウンロードして、仮想環境を作成するまで
初めてAnacondaの仮想環境を構築したが、少し詰まったので、備忘録として残します。##環境
Macbook proを使用“`terminal
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15
BuildVersion: 19A583
“`##Anaconda-Navigatorインストール後の環境構築
Open Terminalでターミナルを起動し、環境を切り替える。
“`terminal
$ conda info -e
# conda environments:
# 現在の環境に*マークがつい
二分探索
#はじめに
二分探索は、概念は理解していたのですが、最近のコンテストでいざ書こうとすると終了条件が曖昧だったりしてしまったのでまとめるついでに記事にしてみました。
#コード
“`binary_search.py
def binary_search(A,key):
left = 0
right = len(A)
while right > left:
mid = (left + right)//2
if A[mid] == key:
return mid
elif A[mid] < key: left = mid + 1 else: right = mid return "NOT_FOUND" ``` #説明 ・引数には、ソート済みの配列Aと探索したい数字keyを入れる。 ・探索対象の先頭をleft、末尾+1をrightとする。(探索の継続条件がright>leftになる)
・mid=(left+right)//2とす
日本※で一番※ポーカーが上手い※のは誰か計算してみた(TrueSkill)~理論編~
# 記事へのリンク
1. 理論編(←本記事)
2. [実装編](https://qiita.com/syym88/items/be75914c742dcdca33ae)
3. [評価編](https://qiita.com/syym88/items/2359a250d4145da31f33)# 本記事におけるお断り
本記事は筆者が自学自習のためにデータ取得から計算までを行ったものです。特定の団体や個人から許可許諾はとっていないため、もし内容に問題があるとお考えの場合にはご連絡いただければ幸いです。
また、タイトルにもある通り、単純に強い、上手いを判断するのが困難であるポーカーにおけるスキルの『推定』がやりたかったことです。
本記事を通じて少しでもポーカーに興味を持ってアミューズメントやオンラインでポーカーを始めたいと思う人が増えれば何よりです。#なんでこんなことしようと思ったのか
pandasを勉強する機会があり、継続学習のために興味がある領域でお勉強&アウトプットしたかったらです。
あと、ポーカーというかなり運の要素が入るゲームにおいて実力を正確に計算する事が出来るのかという
リモートのpython3(psycopg2)からubuntu16.04@AWSのpostgresqlに接続
###前提
#####①ubuntu16.04をAWS上で立ち上げpython3,postgresqlをインストール完了
#####②python3でpsyopg2が扱える
以下はSelectクエリの実行例です。リモートで実行する前にローカルで問題なく実行できることを確認しておきます。“`python3
#################################
### Selectクエリの実行例 ###
#################################
import psycopg2, psycopg2.extras# 1. Postgesqlの接続設定(設定に合わせて修正してください)
#HOST = “localhost #ローカルで実行するとき
HOST = “172.0.0.1”
PORT = “5432”
DBNAME = “postgres”
USER = “postgres”
PASSWORD = “p@ssword”
CREDENTIAL = “host={h} port={p}