- 1. Python formatのあれこれ(省略Ver)
- 2. Redmineのログ可視化ページがお蔵入りした話
- 3. AWSでUbuntuインスタンスを立ち上げ、指定したバージョンのPythonをソースからインストールする
- 4. Python DataFrame メソッドについて覚え書き
- 5. 【はじめてのFlask】GETとPOSTで値を受け取る
- 6. 【AtCoder】プログラミング初心者が1カ月でAtCoder茶色になるまで【Python】
- 7. 輝度の減衰クラス
- 8. piexifで画像にジオタグを付与する ~恐縮だが、指定する緯度経度で写真を撮ってくれないか~
- 9. [運用編]discord.pyでdiscordのbotを作ってみよう!
- 10. 初めてのコーシー分布
- 11. PythonでTOTP(Time-based One-Time Password)を実行する
- 12. マルチステージビルドしたらStreamlitが動かなくなった
- 13. Splunkでループ処理ってどうやるの? 邪道な方法だが実行してみた
- 14. macでpip install psycopg2が通らない時
- 15. マルチステージビルドした時のMeCabエラーを回避する
- 16. PyTorchで線形回帰+L1/L2正則化
- 17. 【PyTorch】自由にネットワークを設計するよ
- 18. 本番環境などを想定した際のDjangoプロジェクトのTips
- 19. キャディプログラミングコンテスト2021(AtCoder Beginner Contest 193) 参戦記
- 20. Python+OpenCVでイラスト塗り絵化プログラムの作成
Python formatのあれこれ(省略Ver)
この記事ではPythonの基礎であるformatについてまとめていきます。
もっと詳しくみたいという方はこちらをみてください!
[Python formatのあれこれ](https://www.cardenema.com/?p=166)
それでは早速みていきましょう!
## formatをみてみる
“`python
name = “かるでね”
print(“私の名前は{}です。”.format(name)) # 私の名前はかるでねです。
“`## 複数の変数を扱う
“`python
name = “かるでね”
age = 21
like = “Python”print(“私の名前は{}です。年齢は{}歳です。{}が好きです。”.format(name, age, like))
# 私の名前はかるでねです。年齢は21歳です。Pythonが好きです。print(“私の名前は” + name + “です。年齢は” + age + “歳です。” + like + “が好きです。”)
# 私の名前はかるでねです。年齢は21歳です。Pythonが好きです
Redmineのログ可視化ページがお蔵入りした話
# はじめに
私が以前に所属していたチームでは月末に振り返りを行い案を出して改善活動をしていました。
この振り返り作業のために、開発チームメンバのRedmineのログを可視化したけど残念ながら活用されなかった思い出を書いていきます。
ですので、本記事では成功事例というより、業務の合間にせっかく作ったのに使われずにお蔵入りしてしまった、という失敗事例の内容となります。#当時の問題
月末に実施していた振返りでは、一ヶ月の間に実行したタスクと予定と実績工数などの確認をしてどの作業に時間がかかったかを見つけて問題点を挙げて改善案を検討していました。
この振返りの材料となるデータ(予定工数、実績工数等)を、プロジェクト管理ツールとして使っていたRedmineのログから取得、集計して作成していました。### Redmineとは?
集計作業内容の説明にあたって、少しだけRedmineの説明をさせて頂きます。
【概要】
OSSのプロジェクト管理ツールです。
Redmineではタスクを「チケット」として作成して進捗、スケジュール管理を行えます。
詳細は公式ページをご確認ください。⇒ [
AWSでUbuntuインスタンスを立ち上げ、指定したバージョンのPythonをソースからインストールする
##:dvd: この記事の目的
用途に合わせたPythonの環境をすばやく構築したい、そんな時のための手順を、備忘を兼ねて書き記します。
なお、本記事執筆時点(2021/02/27)での情報となります。AWSのサービス内容は常にアップデートされるため、内容が合致しない場合はご了承下さい。##:dvd: AWSでUbuntuインスタンスを作成
本記事ではAWSの無料利用枠の範囲で設定を行います。
また、AWSのアカウント取得やログインについては割愛します。####1. AWSでインスタンスを選択し設定を行う
(1)AWS画面の左上の「サービス」をクリックし、「コンピューティング」の「EC2」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/81ffd83b-e1fc-98d1-a698-6a99984b9b79.png)(2)左枠メニュー項目から「インスタンス」をクリックします。
![image.png](https://qiita-ima
Python DataFrame メソッドについて覚え書き
# 初めに
今後使いそうなメソッドのまとめ。– pandas バージョン
– 1.0.5前回と同様最高気温の月平均を用いる。
https://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=44&block_no=47662&year=2020&month=&day=&view=a2
“`max_temperature.csv
年,1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月,年の値
1876,6.6,8.2,13.6,17.5,21.7,22.8,28.6,31.6,26.8,20.4,15.8,11.0,18.7
1877,8.8,8.8,11.3,19.1,21.5,26.0,31.0,30.5,25.8,21.3,14.4,10.2,19.1
1878,7.2,7.1,12.9,16.2,22.7,24.1,29.8,28.5,26.3,20.2,14.1,10.9,18.3
1879,9.0,10.9,13.0,17.1,21.9,25.2,30.4,
【はじめてのFlask】GETとPOSTで値を受け取る
## 概要
前回、URLルーティングを回すところまでやった。
今回は、画面からの入力を受け取るところをやる(ほんまちょっとずつやな…)。`/try_login`と`/write`のところ。
### /try_login
`/login`では login.html を表示。その中で form でユーザ名とパスワードを送る。
とりあえずGETを使うことにする。login.htmlのformの部分。
“`
“`
app.pyの/try_loginの部分。
“`
@app.route(‘/try_login’, methods=[‘GET’,’PO
【AtCoder】プログラミング初心者が1カ月でAtCoder茶色になるまで【Python】
#概要
2021/01/28からPythonでAtCoderを始め、AtCoder Beginner Contest(通称ABC)に参加し、2021/02/27のコンテスト(ABC 193)で茶色になりました。プログラミング経験はほぼゼロの状態からスタートしました。
![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1159866/eab9401b-c037-3296-4cb2-3233ab82402a.png)自分の勉強の振り返りだけでなく、AtCoderの始め方や過去問サイトも紹介しています。
途中で登録の仕方や過去問サイトを紹介していますので、ぜひ記事を読みながらAtCoderを始めてみてください。
プログラミングのことを何も知らない人でもこの記事を読んだらAtCoderを始められるように書いたつもりです。私はPythonを使っていますが、コードは出てこないので他の言語を使う方でも差し支えなくお読みいただけます。(他の言語の特有の難しさについては分かりませんのでその点はご留意
輝度の減衰クラス
“` python
import numpy as np
from sympy import *class Light:
def __init__(self,p0,cd0):
self.p0 = p0 #光源からの距離
self.cd0 = cd0 #初期輝度def decay(self,pos,rate):
# 輝度は距離の逆二乗で減衰する
# 反射率rateも乗じて減衰させる
kyori = sqrt((pos.x-self.p0.x)**2 + (pos.y-self.p0.y)**2)
print(rate)
cd_end = self.cd0 / kyori**2 * rate
return round(cd_end,2)def main():
var(‘a:z’)LED = Point(0,5)
cd0 = 10**5
Plate = Point(1,6)
Land_o =
piexifで画像にジオタグを付与する ~恐縮だが、指定する緯度経度で写真を撮ってくれないか~
# はじめに
恐縮ですが前の記事からお読みください。
[PillowでExif情報を遊ぶ ~辞書の復習を兼ねて~](https://qiita.com/mo256man/items/b4567b0e0945b99f9cff)# piexifを使う
`piexif`により、Exifの規格にのっとった非常に多くの情報を得ることができる。
[公式](https://pypi.org/project/piexif/)
辞書の構造がPILと違っているので注意。“`Python:ソース6
from PIL import Image, ExifTags
import piexif
from pprint import pprintfilename = “hoge.jpg”
img = Image.open(filename)
exif_dict = piexif.load(img.info[“exif”])pprint(exif_dict)
“`“`Python:結果6
{‘0th’: {256: 3264,
257: 2448,
[運用編]discord.pyでdiscordのbotを作ってみよう!
# はじめに
Botの作り方は理解した。
でも、**「どうやって24時間動かすのか分からないよ!!」**という人向けの記事になります。準備編、実践編、運用編の三部構成になっています。
一部 [準備編]discord.pyでdiscordのbotを作ってみよう! 二部 [実践編]discord.pyでdiscordのbotを作ってみよう! 三部 ←今ここ **記事は全編通して、基本操作するOSはWindows10を使用しています。**
# Step0
初めてのコーシー分布
コーシー分布について調べる必要があり、色々Google先生に聞いていました。
なのですが、ほとんどが期待値と分散が存在しないという話しか教えてくれなかったんですよね。
Wikipediaが一番詳しかったような感じがしましたが、計算方法とかは載っていないからモヤモヤするし、英語の文献とかだと詳しいのとかあったけど、そもそも英語読むの大変だし。。。
日本語である程度まとまっているのが読めたら、何人かはハッピーになるかなということで、今回はコーシー分布について書いていこうと思います。
# 1.確率密度関数
コーシー分布の確率密度関数は、以下で与えられます。“`math
f(x) = \frac{1}{\pi \left( 1+x^2 \right)} \;\;\; (-\infty < x < \infty) \tag{1.1} ``` 確率密度関数の形は、こんな感じ。 ```python import numpy as np import matplotlib.pyplot as plt x = np.arange(-10, 10, 0.1) y = 1 / (np
PythonでTOTP(Time-based One-Time Password)を実行する
# TOTP(Time-based One-Time Password)について
最近、会社へのVPNへのログインでも銀行でもオンラインショッピングでも多要素の一つであるTOTPを使う機会が非常に増えました。仕組みをイマイチ理解しないまま使用しており、少々の不安とそのロバスト性に確信が持てていなかったので調べました。結果として、盗み見等にも強いロバストであることを確信できましたが、Authyのようなサービスを気軽に利用する怖さを実感いたしました。(secretを他人に渡してしまうということなので、google authenticatorがクラウド同期をサポートしない気持ちがわかりました)
## 仕組み
完結に記すと以下の式になります
$$
password = hash(sercretkey, unixtime)
$$これだけなのだがRFCという規格にても定義されており挙動が正確に記述されています
ハッシュアルゴリズムは何らかのデータを一方通行で非常に強い非可逆性の強い変換を行い数値化でき、bitcoinや各種さまざまなセキュリティはこれに依存しています。
マルチステージビルドしたらStreamlitが動かなくなった
Streamlitはpythonのアプリケーション1フレームワークで、簡単にデータの可視化や機械学習モデルのアプリを作成できるて便利。
今回はStreamlitをDocker上で構築して動かしていたのですが、機械学習のDockerイメージはどうしてもイメージサイズがデカくなってしまうのでマルチステージビルドで軽くしちゃおうと思ったら動かなくなりました。というお話。
# 修正前
“`requirements.txt
streamlit
plotly
pandas
scikit-learn
“`“`dockerfile
FROM python:3.7
USER rootEXPOSE 8501
WORKDIR /streamlit-docker
COPY requirements.txt /streamlit-docker
RUN pip install -r requirements.txt
CMD streamlit run app.py
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8RUN mkdir -p /root/.st
Splunkでループ処理ってどうやるの? 邪道な方法だが実行してみた
# はじめに
Splunkの SPLってめちゃくちゃ便利なんですが、唯一困るのがループ処理になんですよね〜。一部の streamingコマンド (eval, regex, rename など)は foreach コマンドで実装可能なのですが、それ以外のコマンド (stats,timechartなど) だと、このforeachコマンドが使えません。
例えば、複数の型番をリストして、その型番ごとに色々と計算した結果を表示したい。などの場合には以下のようなプロセスが必要です。
1. 型番をリスト化
2. 型番を一つごとに計算処理を実行
3. 同じことを全部の型番に対してループで実行最近は機械学習などと組み合わせる機会も多く、このようなループ処理は避けては通れなくなってきております。
そこで、今回は邪道かもしれませんが、 RestAPIを利用してリモートからループ処理を実行するパワープレイをご紹介します。 (Splunkだけでシンプルにできる方法知っていたら是非教えてください)
# 構成概要イメージ
今回はこんな感じでループ実行させます。 pythonで実行させるので、運用
macでpip install psycopg2が通らない時
macにposgreをインストールして、djangoと連携させたいだけだったんです。
“`
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command ‘/usr/bin/clang’ failed with exit code 1
“`こんなメッセージがでてきて悲しいとき。
## 結論
“`
export LDFLAGS=”-L/opt/homebrew/opt/openssl@1.1/lib”
export PKG_CONFIG_PATH=”/opt/homebrew/opt/openssl@1.1/lib/pkgconfig”
export CPPFLAGS=”-I/opt/homebrew/opt/openssl@1.1/include”
“`を叩いたらいけた。
もともとPostgreSQLをインストールしたときに、
“`
==>
マルチステージビルドした時のMeCabエラーを回避する
# 概要
MeCabを使ったマルチステージビルドで詰まったのでメモを残します。
今回はasariというパッケージを使いたかったためmecab-python3のバージョンが低いです。
今度時間があればバージョン上げても動くか検証してみます。# 環境
python 3.7
mecab-python3 0.7# 修正前
“`dockerfile:Dockerfile
FROM python:3.7-buster as builderWORKDIR /work
RUN apt-get update \
&& apt-get install -y mecab mecab-utils libmecab-dev \
&& pip install -U pipCOPY requirements.txt /work
RUN pip install -r requirements.txt
FROM python:3.7-slim-buster as runner
COPY –from=builder /usr/local/lib/python3.7/site-
PyTorchで線形回帰+L1/L2正則化
# はじめに
PyTorchを勉強しようと思ってUdemyで見つけたPyTorchの入門コースを受講しました。**PyTorch Boot Camp : Python AI PyTorchで機械学習とデータ分析完全攻略**
https://www.udemy.com/course/python-pytorch-facebookai/とてもよい感じだと思いました(小並感)。せっかく勉強したので、復習としてPyTorchを使って一番簡単な線形回帰をやってみたいと思います。
Pythonのバージョンは3.7.9、PyTorchは1.7.1です。# 使用するデータセット・モデル
今回使用するのは以下のようなボストン住宅価格のデータセットです。
![スクリーンショット 2021-02-20 21.16.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697043/6c65bfc6-09ca-9ee4-7e22-43862419eabc.png)「CRIM」~「LSTAT」列を説明変数にして、目
【PyTorch】自由にネットワークを設計するよ
#自分の手で自由にパラメータを定義したい
PyTorchを使ったDeepLearningが流行ってるらしいですが、
Qiitaとかはてなブログで他人の記事を読んでると
“`h = nn.Linear(N, M)“`
みたいに、$\boldsymbol{h}=\boldsymbol{x}^T\boldsymbol{W} + \boldsymbol{b}$における$\boldsymbol{W}$と$\boldsymbol{b}$(ネットワークパラメータ)の定義を全て
PyTorch任せにしてるのが多いですよね。まぁこれで所望のネットワークを構築できるなら全く問題ないですし、
むしろ恩恵も多いんだろうな〜とは思いますよ。ただ、$\boldsymbol{W} = \boldsymbol{AH}$みたいに別々のパラメータを用いて表現したい場合は困っちゃいます。
だからこの記事では
“`h = nn.Linear(N, M)
“`
みたいな書き方じゃなくて、ちゃんと全てのパラメータを手動で定義する方法をメモとして残します。
#
#
# #####################
本番環境などを想定した際のDjangoプロジェクトのTips
pythonのwebフレームワークである“Django“
プロジェクト自体は、“django-admin startproject
“で始められる。
プロジェクトをローンチして、書き始めてもいいんですが、本番環境を見据えて予め色々やった方がいいことをまとめて行こうと思います。
現在、Djangoを本番環境に移行している最中で、最初からこうしておけばよかった…と思うのでツラツラと書き連ねて行こうと思います。1. プロジェクト全体の構想をある程度練って、それぞれの“application“を大きくしすぎない(サーバーサイドのコードが増大しすぎてみづらい。)
2. 本番環境用と開発環境用で“settings.py“を切り分ける
3. “.env“を最初から作っておく。
4. docker上で開発する。(デプロイする時に面倒にならないために)
5. “test.py“を有効に使っていく(障害予防)
6. “templates“の“BASE_DIR“は、“application“ごとに管理(プロジェクト全体一
キャディプログラミングコンテスト2021(AtCoder Beginner Contest 193) 参戦記
# キャディプログラミングコンテスト2021(AtCoder Beginner Contest 193) 参戦記
## [ABC193A – Discount](https://atcoder.jp/contests/abc193/tasks/abc193_a)
2分で突破. 書くだけ.
“`python
A, B = map(int, input().split())print(100 – (B / A) * 100)
“`## [ABC193B – Play Snuke](https://atcoder.jp/contests/abc193/tasks/abc193_b)
3分半で突破. 各店舗ごとに売り切れ前にたどり着けるか判定し、売り切れ前にたどり着けた中で一番安いのを出力するだけ.
“`python
INF = 10 ** 18N = int(input())
result = INF
for _ in range(N):
A, P, X = map(int, input().split())
if X – A > 0:
Python+OpenCVでイラスト塗り絵化プログラムの作成
# はじめに
塗り絵をやりたくなったが、塗り絵を買いにいくのがめんどくさかったので、自分で作ってみた。
画像処理はopencvを利用した。
色鉛筆は100均に買いに行った。# 完成物
### 元画像
![FREE.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679107/1776b4e2-8344-7881-0ba8-3caa6c8639dc.jpeg)### 塗り絵化
![free3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679107/5c64a321-695d-197f-f99f-64be8b40d5af.jpeg)# 準備
### opencvのインストール
コマンドラインに下記コマンドを入力
“`pip install opencv-python“`# 塗り絵化アルゴリズム
1. 画像入力
2. グレースケール化
3. 膨張処理
4. 2と3の差分取得
5. 白黒反転目的としては