- 1. [Docker入門]勉強して得られたDockerの知見を色々まとめてみた(Windows・Python)
- 2. 人工衛星(Sentinel-2)の観測画像をAPIを使って自動取得してみた.
- 3. Ubuntu等Linux上でPython3/Tkinterのアプリケーション名表示についての問題
- 4. Re:ゼロから始める競技プログラミング生活 第1章2『涙のPython』
- 5. pythonでOSのコマンドを実行して標準出力、標準エラー出力、リターンコードを取得する
- 6. モンティ・ホール問題の数式に頼らない直感的な解説と、Pythonによるシミュレーション
- 7. AtCoder Beginner Contest 153 参戦記
- 8. ABC153のA~DをPython3で解く
- 9. Qiitaってプログラマーのブログと聞いてアカウントを作成しました
- 10. Pythonista3を使ってTwitterのTLをiphoneに音読してもらう
- 11. CNNをベースとした音声区間分割 inaSpeechSegmenter を使ってみた
- 12. [Python3 入門 17日目]8章 データの行き先(8.1〜8.2.5)
- 13. はじめてMacで Pythonやってみた。
- 14. PythonでflacをaacやALACに変換する。
- 15. python並列/非同期実行備忘録
- 16. [Python3 入門 16日目]7章 文字列(7.1.3〜7.3)
- 17. Discord.pyとA3RTのTalkAPI(pya3rt)を利用して簡単にTalkBotを作る。
- 18. statsモジュールの関数
- 19. [Python3 入門 15日目]7章 文字列(7.1.2〜7.1.2.2)
- 20. Python3のScapyでWOLを発行する(LANコン指定型)
[Docker入門]勉強して得られたDockerの知見を色々まとめてみた(Windows・Python)
社内で専門のインフラ関係の担当の方がいらっしゃって、環境などはよしなにしてくださっていたのですが、流石にそろそろDocker周りを自分でも勉強しておかないとまずいだろう・・ということで、最近Dockerにやっと入門したので、色々と学んだことを備忘録も兼ねてまとめたり試したりしていこうと思います。
経歴的にインフラ周りなど馴染みの薄いお仕事を長くしてきていたので、知識的に荒い(浅い)ところなどは色々ご容赦ください。
私も初心者ですし、あまりインフラとかに馴染みのない方向けの記事となります。Windows環境(Docker for Windows)でLinuxやPython関係を動かしたりを中心に進めていきます。
# この記事で触れること
– コンテナなどの概要やメリット
– Docker for Windowsのインストール・設定
– コンテナとイメージ関係の基礎
– Docker Hubやタグについて
– Dockerfileの基礎
– 実際にUbuntuにPythonなどを絡めたイメージのビルド# この記事で触れないこと
記事が長くなりすぎるので主に以下は触れません。
人工衛星(Sentinel-2)の観測画像をAPIを使って自動取得してみた.
## 概要
これまで,欧州の地球観測の人工衛星(Sentinelシリーズ)の画像の取得方法について紹介しました.
[無料で最新の衛星画像を入手する方法.](https://qiita.com/nigo1973/items/9bb6a11caac8e3e1e850)今回は,Sentinelが提供するAPIを用いて,jupyter lab などのPuythonのプラットフォームにSentinelの観測データを管理するCopernicusのサーバからの直接取得する方法,および取得したデータの画像処理,関心域の画像抽出,最後に抽出した画像のjpeg処理について紹介します.自己流ですので,よりスマートな方法がありましたらぜひコメントにてお教えください.
なお,この記事で紹介するコードは以下の記事を参考にさせていただきました.ありがとうございます.[Satellite Imagery Access and Analysis in python jupyter notebooks](https://towardsdatascience.com/satellite-imagery-a
Ubuntu等Linux上でPython3/Tkinterのアプリケーション名表示についての問題
#環境
Ubuntu 19.10 64bit
Python 3.7.5
Tkinter 上記に付属のため省略
#Ubuntu上での挙動
“`python
#python2での実行時は、tkinterをTkinterに変更する。
import tkinterroot = tkinter.Tk()
root.title(“Hello World”)
label = tkinter.Label(root,text=”Helloworld”)
label.pack()
root.mainloop()
“`
これを実行すると、
![pic1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387968/b0cf4503-7d69-c5c6-41d7-e5a6643a4dc2.png)
![pic2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387968/b6681484-666e-829d-7db5-9e14674b64
Re:ゼロから始める競技プログラミング生活 第1章2『涙のPython』
#第2の敵
今回は前回より難しいB問題を解いていきます!!
では早速、問題どーん!!
…何じゃこれ
難易度一気に上げ過ぎではないでしょうかねぇ…
とりあえず図を描いて何を求めていけば良いのかを整理してみます。
![image0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570839/55c0c0c9-3eac-dcd0-a23f-6f8b1381dc20.jpeg)なるほど、この小学生でもまだマシなものを描きそうなこの図を見ると、Lの回数に最初の1回を加えたものがこの問題の解答になると言うことですね。意外と簡単だった!!
では早速、C++
pythonでOSのコマンドを実行して標準出力、標準エラー出力、リターンコードを取得する
python3系で動作確認しました。
“`python
import subprocessdef exec_subprocess(cmd: str) -> (str, str, int):
“””
OSコマンドを実行し結果を返す
:param cmd: コマンド文字列
:return: 標準出力、標準エラー出力、リターンコードのタプル
“””
child = subprocess.Popen(cmd, shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = child.communicate()
rt = child.returncode
return stdout.decode(), stderr.decode(), rt“`
実行例1
“`python
stdout, stderr, rt = exec_subprocess(“echo
モンティ・ホール問題の数式に頼らない直感的な解説と、Pythonによるシミュレーション
モンティ・ホール問題は、確率のパラドックスとして有名な問題です。本記事では、私が考えて最も納得できた数式に頼らない直感的な説明をしてみます。
# モンティ・ホール問題
[Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C)より引用
>プレーヤーの前に閉じた3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる。プレーヤーは新車のドアを当てると新車がもらえる。プレーヤーが1つのドアを選択した後、司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる。ここでプレーヤーは、最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。
ここでプレーヤーはドアを変更すべきだろうか?答「プレーヤーはドアを変更すべきである。なぜなら変更しなかった場合の当たる確率が$\frac{1}{3}$なのに対し、変更した
AtCoder Beginner Contest 153 参戦記
# AtCoder Beginner Contest 153 参戦記
## ABC153A – Serval vs Monster
1分半で突破. 書くだけ.
“`python
H, A = map(int, input().split())print((H + (A – 1)) // A)
“`## ABC153B – Common Raccoon vs Monster
2分半で突破. 書くだけ.
“`python
H, N = map(int, input().split())
A = list(map(int, input().split()))if sum(A) >= H:
print(‘Yes’)
else:
print(‘No’)
“`## ABC153C – Fennec vs Monster
2分半で突破. 書くだけ. できるだけ体力が多いやつを必殺技で倒したいので、ソートして先頭K匹以降を攻撃で倒すものとして集計すればいいだけ.
“`python
N, K = map(int, input().split())
ABC153のA~DをPython3で解く
### はじめに
こんばんは。tax_freeです。午前中は英検を受けて来て、午後はABCを解くという日でした。英検を受験したせいで、日曜日感がゼロで疲れがmax。[前回](https://qiita.com/taxfree_python/items/4c75ff6cf9edc679a020)からレートが17上がりました。
今回のABCは簡単だったのでは。でもできなかった。言い訳させてください。コンテスト中にお腹を壊してトイレに入ってました。みんなは、コンテスト前にヨーグルト食べたり、豚骨ラーメン食べたり、体冷したりしないように気を付けてください。### A問題
[問題](https://atcoder.jp/contests/abc153/tasks/abc153_a)**考えたこと**
HをAで割っていって0より小さくすればいいので、Hが何回Aで割り切れるかを計算すればよい。割り切れない時の場合分けに注意。“`python
h, a = map(int,input().split())
if h % a != 0:
print(int(h/a)+1)
else
Qiitaってプログラマーのブログと聞いてアカウントを作成しました
#50の手習いでプログラミングを学びはじめる
Pythonをストアカの講座で学びました。その時に先生から(すごい若くてカッコいい)Qiitaはプログラマーのブログだと聞いてアカウントを開設してみました。
ついでにGitHubも開設、プログラム学習の備忘録にしようと思います。
#QiitaってMarkdown記法なの?
すこし慣れないと難しいかも。。。見出ししかわからないw#ストアカでの備忘録
– Pythonのインストール
– Anacondaのインストール
– ターミナルを使った動作
– Webページの見出しのスクレイピング
– テーブルタグのスクレイピングソース
– brueを使ったSeleniummのインストール
– サイトのログインやページ操作
– ページの情報収集
– XPATHの使い方備忘録といいつつ半分以上忘れている感じがあり
やばいです、、、ジュピター含めて明日から復習していきます。
Pythonista3を使ってTwitterのTLをiphoneに音読してもらう
# 背景
仕事が終わってTwitterのTLを見ようかと思っても、他にやりたいことが多くてTwitterを見る時間がとれないので、iPhoneが話してくれるのを聞くだけで済むようにした。# 環境
iPhone8 13.2.3
Pythonista3 3.2
Tweepy 3.5.0#準備
・Pythonista3のインストール
・Twitter APIの登録申請
(参考:[PythonでTwitter API を利用していろいろ遊んでみる](https://qiita.com/bakira/items/00743d10ec42993f85eb))
・StaShのインストール
(参考:[Pythonista 3 にStaSh をインストールする。](https://qiita.com/maboy/items/cef5dee13d5b2e9ac843))
・Tweepyのインストール#ファイル構成
今回私は以下のようなファイル構成にした。
├─twitterconfig.py #認証情報を管理
├─sp_timeline.py #実際に動かすコード
└#コード
`
CNNをベースとした音声区間分割 inaSpeechSegmenter を使ってみた
# はじめに
– 音声ファイルの分割をしたい(久しぶりに音声の話題なのは(ry
– Pydubでもできるけど,パラメータを考えるのが面倒くさい
– 今回紹介するものはシンプルな作りをしている
– 区間ごとにラベル付けをしたり,一応性別検出もしてくれる
– [Pythonの音声区間検出ライブラリ inaSpeechSegmenterを試してみた話](http://tam5917.hatenablog.com/entry/2020/01/25/132113)@先駆者様感謝# 実行環境
今回試した環境は以下の通りです.
OS: Ubuntu 18.04 LTS
CPU: i3-4130 3.40GHz
メモリ: 16GB
GPU: GeForce GTX 1660 Ti (6GB)
Python : 3.6.9# 1. inaSpeechSegmenterのインストール
本家通りに実行すれば,基本は問題ありません.
https://github.com/ina-foss/inaSpeechSegmenter加えて必要となるものを以下にまとめて列挙します.
※仮想環境で作成する
[Python3 入門 17日目]8章 データの行き先(8.1〜8.2.5)
#8.1 ファイルの入出力
– fileobj=open(filename,mode)でファイルを開く。
– fileobjはopen()が返すファイルのオブジェクト
– filenameはファイル名
– ファイルをどうしたいかの選択。
– rは読み出し、wは書き込みで上書き及び新規作成も可能、xは書き込みだがファイルが存在しない場合のみ。
– modeの第二文字目はファイルのタイプを示す。tはテキスト、bはバイナリの意味。##8.1.1 write()によるテキストファイルへの書き込み
“`py
>>> poem = “””There was a young lady named Bright,
… Whose speed was far faster than light,
… She started one day,
… In a relative way,
… And returned on the previous night.”””
>>> len(poem)
151#write()関数は、書き込んだバイト数を返す。
>>> f
はじめてMacで Pythonやってみた。
# はじめに
はじめまして。Qiita初投稿のタロウと申します。
社会人歴4年くらいで、開発者としてゴリゴリにコード書いてたのは2年半くらい、
他は要件定義したり、PMに近いことしたり、採用コンサルしたりフラフラしてるタイプの人間です。自宅ではデスクトップPC使ってごく稀にPython書いたり、
gasでやりたくもない業務ツールの開発したりしてましたが、
なんとなくMacに手を出したくなり昨年末にMacbookを購入しました。
さっそくPythonで簡単なクロールツール書いてみようと思ったのですが、
Windowsの時と違って環境構築になんか時間がかかったので、
そのときにやったことを今回は(~~雑~~)メモとして残そうと思ってます。
~~※ローカルで雑にコード書くだけならデフォルトでPython2系は入ってるみたいです~~# スキル
+ Java
+ 業務用システム開発で2年弱くらい (~~class?継承? なにそれおいしry~~)
+ Python
+ Webアプリ開発(FW:Django)…1年弱くらい
+ 簡単なクロールツールくらいは作れる(~~と信じたい~~)
PythonでflacをaacやALACに変換する。
flac形式がiphone対応してないため、変換するツール作りたい。
## 事前準備
pydubとffmpegをインストールする。
### 開発環境は以下
– Windows10 64bit Pro
– VS Code## 実装
“`python
from pydub import AudioSegmentsound = AudioSegment.from_file(“C:/Project/audio/music.flac”, format=”flac”)
# AAC形式への変換
sound.export(“convert320k.m4a”, format=”ipod”, codec=”aac”, bitrate=”320K”)
# ALAC(AppleLossless)形式への変換
sound.export(“convert.alac”, format=”ipod”, codec=”alac”)“`
## はまった点
formatにalacを指定するとエラーとなり、ffmpeg側から怒られた。
mp3ならmp3で通るので拡張子と同じ設定だなと思いこみで、半日潰れた
python並列/非同期実行備忘録
# 切掛
Pythonの非同期実行のネタは似たようなもの(公式の翻訳/再編集?)が多かった。
頭が固くなったオジサンには厳しいので、実例を探して複数言語のサイト見て、試行錯誤してやっと動いたので、肝だけを纏めてみた。# 概要
例は全部Windowsで外部コマンド実行のパターン
解説はほぼなし。## PIDでチェック
簡単でいいね。オジサンがパッと思いついて作ったのがこれ。“` python:pid.py
import subprocess
from time import sleep
procs = {}
for h in servers:
p = subprocess.Popen([“some”, “command”], …)
# subprocess.runでstdout=PIPEでも動きそうだが未調査
procs[p.pid] = pwhile procs:
for pid in list(procs):
if procs[pid].poll in not None:
del procs
[Python3 入門 16日目]7章 文字列(7.1.3〜7.3)
##7.1.3 正規表現とのマッチング
– 正規表現機能は、標準モジュールのreが提供するもので、使うためにはこのモジュールをインポートする。
– マッチングの対象となる文字列のパターンとマッチングするソース文字列を定義する。
– match()はソースの先頭がパターンになっているかどうか。
– search()は最初のマッチを返す
– finall()は重なり合わない全てのマッチのリストを返す。(ある場合)
– split()はパターンにマッチしたところでソースを分割し、部分文字列のリストを返す。###7.1.3.1 match()による正確なマッチ
“`py
>>> import re
>>> source = “Young Frankenstein”
#”You”がパターン,sourceがソース
#matchはオブジェクトを返す。
>>> m=re.match(“You”,source)
>>> if m:
… print(m.group())
…
You#パターンの先頭に^を付けても同じ意味。
>>> m=re.match(“^Y
Discord.pyとA3RTのTalkAPI(pya3rt)を利用して簡単にTalkBotを作る。
とあるDiscord.pyを使って色々試してた昼下がりのこと、
Discordのサーバーでこんなことを言ってる人が居た。
**「おしゃべりくん欲しい!!」**
おしゃべりくんとは、一時期よく見た喋り相手が居ないぼっちに優しいDiscord上のTalkBotのことなわけだが….
そういえば、A3RTとかいう無料で使えるAPIがあったな。
よし、作ろう。
# 一応注意事項。
これを書いてる人はPython初心者勢なので至らぬところがあるかもしれません。そのときはやさしくお願いします….
あと、Qiita初投稿です。よろしくおねがいします。~~ねこです。~~
# 環境
環境についてはQiitaに落ちている記事のようなBotと比べるとかなりアウトローなのでこれを参考にされる方は自分の環境に合わせてください。– discord.py 1.3.0
– Python 3.7.2
– Herokuで複数のBotを回すためイベントループを共有させたりしてます。
– Bot Commands Framework及びCogを使っています。# やりたいこと
特定のチャンネルで喋ったら無条件に反
statsモジュールの関数
#cdf関数
累積分布関数を表す。cdfとは「Cumulative Distribution Function」の略。##累積分布関数とは?
ある値以下となる確率を計算してくれる関数のこと。###正規分布の時の関数の中身
“`math
\begin{align}
F(x)&=P(X\leq x) \\
&=\int_{-\infty}^{x}\frac{1}{\sqrt{2\pi\sigma^2}}e^{-{\frac{(x-\mu)^2}{2\sigma^2}}}dx
\end{align}
“`
[Python3 入門 15日目]7章 文字列(7.1.2〜7.1.2.2)
##7.1.2 書式指定
###7.1.2.1 %を使ったスタイル– 古いスタイルの書式設定は string % dataという形式を使う。
– %と型指定子の間には、幅の上限、文字数の上限、配置、パディングを指定できる。“`py
#文字列
>>> “%s” % 42
`42`
#10進整数
>>> “%d” % 42
`42`
#16進整数
>>> “%x” % 42
`2a`
#8進整数
>>> “%o” % 42
`52`#10進float
>>> “%f” % 7.03
`7.030000`
#指数形式float
>>> “%e” % 7.03
`7.030000e+00`
#桁の大きさによって変わる%g (10進floatまたは指数形式float)
>>> “%g” % 7.03
`7.03`
#整数とリテラルの%
>>> “%d%%” % 100
`100%`>>> actor = “Richard Gere”
>>> cat=”Chester”
>>> weight=28
#文字列の挿入
>>> “My wife is favorite actor
Python3のScapyでWOLを発行する(LANコン指定型)
## コントローラを直接指定してWOLを発行したい
WOLの仕様は以下(WireSharkのWiki)とか。
https://wiki.wireshark.org/WakeOnLAN
要はパケット内に
* 0xffを6つ
* その後に対象のMACアドレスを16個並べるで普通は起きます。ポートとかは関係なくパターンの一致で見れば良いという事もあり、ハードで検出させて割り込み出すとかもまーやれるのかなこれだという感じです。
で、これを送出する場合はUDPパケット作ってでやるのが簡単だと思います。そういうツールもあるみたいですが、私がざっと調べた限りIPアドレスで指定させる物が多かったです。これだとIPアドレスを適当にして発行とかが厳しくなります。なのでコントローラを直接指定して送るやり方を実装してみました。
## Scapy
Scapyを使ってWOLパケットの生成と送信を行います。Scapy自体は前にもチラッと書いてます。以下
https://qiita.com/ken_hamada/items/736e1c22f6c40702d1a7
## 環境
* Mac OS