- 0.0.1. Win10 + Python3 + selenium + chromedriver で headless chrome を試してみる
- 0.0.2. Cloud Pak for DataのNotebookでmatplotlibのグラフ日本語文字化けを解消する
- 0.0.3. PythonのCelery、RabbitMQ(Docker)を動くところまで
- 0.0.4. Pythonの開発環境をPoetryとDockerで作成してmatplotlibのグラフを描く
- 0.0.5. Cloud Pak for Dataの分析プロジェクトのJobを環境変数付きでAPI実行する
- 0.0.6. numpy Loadtxtについて
- 0.0.7. Anaconda環境でGraphvizを使う
- 0.0.8. Django REST Frameworkで複雑な形式のSerializerを実装する
- 0.0.9. ゼロから始めるLeetCode Day42「2. Add Two Numbers」
- 0.0.10. ABC169 A,B,C問題解説(Python)
- 0.0.11. Cloud Composerを用いて定期的にYoutube APIを叩きBigqueryに結果を格納してみる
- 0.0.12. Python3.9の新機能(2) - Pythonで有向非巡回グラフのソートをする
- 0.0.13. Pythonで平方剰余を判定する
- 0.0.14. Djangoでメール送信
- 0.0.15. 「14日で作る量子コンピュータ」を読んでみる。2日目
- 0.0.16. 【入門】Pythonによる人工衛星データ解析(Google Colab環境)
- 0.0.17. エラーコードから即解決方法を知りたい
- 0.0.18. Pythonista3でYouTube動画の歌詞表示アプリ作ってみた!
- 0.0.19. pycparserを用いたCコードレビューツール
- 0.0.20. PythonCGIの基本
- 1. Hello, World!
Win10 + Python3 + selenium + chromedriver で headless chrome を試してみる
#目的
Windows10 + Python3 + selenium + chromedriver で headless chrome を試してみる
#モジュールのインストール
##seleniumのインストール> pip3 install selenium##chromedriver-binaryのインストール
> pip3 install chromedriver-binaryを実行すると、最新版のモジュールがインストールされる
Successfully installed chromedriver-binary-84.0.4147.30.0サンプルを実行すると以下のエラーメッセージが発生する(かもしれない)
selenium.common.exceptions.SessionNotCreatedException: Message:
session not created: This version of ChromeDriver only supports Chrome ver
Cloud Pak for DataのNotebookでmatplotlibのグラフ日本語文字化けを解消する
matplotlibやseabornでグラフを書いた時に、グラフの日本語が文字化けして以下のように豆腐(□□□)になることがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397277/98f0f714-5e1e-7739-d794-c13f8e8c6735.png)これは環境に日本語フォントが入っていなかったり、適切に設定されていないことが原因で、matplotlib/seaborn固有の問題です。解決策は[他の記事](https://qiita.com/katuemon/items/5c4db01997ad9dc343e0)でも解説されていますが、これをCloud Pak for Data (以下CP4D)上で解決する方法です。
環境: CP4D v2.5, v3.0LA
CP4Dでは、Notebookで起動するPython環境は予め用意されており、かつランタイムを起動するたびに初期状態で起動するため、一度Python環境に設定すれば未来永劫OKというわけには行きま
PythonのCelery、RabbitMQ(Docker)を動くところまで
メッセージブローカーとしてDockerで起動RabbitMQを使用し、Celeryを使った単純なプログラムが動作するところまでを書く。
内容はほぼ公式ドキュメントの通りだが、DockerのRabbitMQを使うように変えている。
## RabbitMQ
```shell
# 起動
docker run --rm -d --hostname my-rabbit --name rabbitmq -p 5672:5672 -p 8080:15672 rabbitmq:3-management# 停止
docker stop rabbitmq
```5672が使用するポート。8080(15672)ポートはブラウザから見れる管理画面。(今回はなくてもいい)
## ライブラリのインストール
```shell
pip install celery
```バージョン4.4.2がインストールされた。
## プログラムの用意
```python:tasks.py
from celery import Celeryapp = Celery('tasks', backend
Pythonの開発環境をPoetryとDockerで作成してmatplotlibのグラフを描く
随時更新していくつもりです。
## 目的
pythonの開発環境をPoetryとDockerで構築し、データの可視化をmatplotlibで行えることを目指します。
1. Dockerfileを作る
2. Docker image をビルドする
3. コンテナを起動する
4. 動作を確認する## 1.Dockerfileを作る
```Docker:Dockerfile
FROM python:3.8.3-busterENV DISPLAY=host.docker.internal:0.0
ENV PATH $PATH:/root/.poetry/binRUN mkdir -p /workspace
RUN apt-get update \
&& apt-get install -y git \
curl \
&& curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | pythonWORKDIR /workspace
CM
Cloud Pak for Dataの分析プロジェクトのJobを環境変数付きでAPI実行する
Cloud Pak for Data (以下CP4D)の分析プロジェクトでは、NotebookやData Refinery FlowをJob化してバッチ実行することができます。今回やりたいことは、以下の2点です。
* Jobに引数を与えて実行時に挙動を変えられるようにしたい
* JobをCP4D外部からAPIで実行したい厳密に言うとJobは「実行時に引数を渡す」と言うよりは「環境変数をセットして起動」という表現のほうが正確のようです。おそらく内部的にはOpenShiftのPodとして起動するため、環境変数をOpenShiftのConfigMapとして扱っているのだと推測します。
JobをAPIで起動し、その際に環境変数を与えて処理ロジックに渡す、ということを実際にやってみます。
# Notebookを作成
Notebookを作成し、それをJob化します。
今回扱う環境変数として「MYENV1」「MYENV2」「MYENV3」を想定し、値をpandasのデータフレームに加工して、CSVとして分析プロジェクトのデータ資産に出力します。
これらの環境変数はもちろんデフォルトでは定義
numpy Loadtxtについて
numpyのLoadtxtを利用する際に、海外OS(Spanish)のせいか文字変換のエラーが発生
ValueError: could not convert string to float: '235.00 ;591.00 '
元のコード train = np.loadtxt("XXXXXXXXXX", delimiter=',', skiprows=1)
色々と調べたところ、file Pathの前にrの追加とdelimiterを;に変更することで解決
修正後のコード train = np.loadtxt(r'XXXXXXXXX', delimiter=';', skiprows=1)
海外OSでは、地味にcsvファイルを扱う際に色々と気を付けないといけないことを実感しました
Anaconda環境でGraphvizを使う
#概要
`Graphviz`をAnaconda環境下で使用する分には、condaプロンプトでインストールするだけで良さそうだったので、手順をまとめました。※その他の環境で使用したい場合は、以下を参照してください。
[【Windows10】Graphvizのインストール](https://qiita.com/BARANCE_TW/items/c3f7816d38cc9e746bbd)#パッケージのインストール
以下の2つをインストールします。```
conda install graphviz
```
```
conda install python-graphviz
```
#環境変数をセットする
binまでのパスを環境変数にセットします。```
...\Anaconda3\pkgs\graphviz-2.38-hfd603c8_2\Library\bin
```
※環境変数の追加の仕方がわからない場合は、[こちら](https://qiita.com/BARANCE_TW/items/c3f7816d38cc9e746bbd)を参照してください。注:[OK]を押し
Django REST Frameworkで複雑な形式のSerializerを実装する
自分用忘備録
逐次追加します基本的に`to_representation()`と`to_internal_value()`オーバーライドすれば何とかなる。
## 環境
* Python 3.8
* django 3.0.6
* djangorestframework 3.11.0## 特定のフィールドでグループ化(group by)してネスト
[^groupby]
[^groupby]: (~~あまり参考にならない~~)参考:https://stackoverflow.com/questions/31071702/django-restframework-group-by### やりたいこと
次のような`model`があったとき```python
class Message(models.Model):
user = models.ForeignKey('User', related_name="messages", on_delete=models.CASCADE)
messsage = models.TextField()
```
デフォルトの`
ゼロから始めるLeetCode Day42「2. Add Two Numbers」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day41「394. Decode String」](https://qiita.com/KueharX/items/4228d2a815922b1631be)今はTop 100 Liked QuestionsのMediumを解いています。
ABC169 A,B,C問題解説(Python)
#ABC169 A,B,C問題解説
どうもs_y1127です。
本日行われたABC169のPythonによる解説を行いたいと思います。##A.Multiplication 1
###問題文
A×Bを求めてください。###制約
1≤A≤100
1≤B≤100
入力は全て整数である。###コード
```python:Main.py
A,B = map(int,input().split())print(A*B)
```簡単ですね。
入力したものを掛けるだけ。##B.Multiplication 2
案外誤答が多かったB問題###問題文
N個の整数
A1,...,AN
が与えられます。A1×...×AN
を求めてください。ただし、結果が
10**18
を超える場合は、代わりに -1 を出力してください。###制約
2≤N≤10**5
0≤Ai≤10**18
入力は全て整数
である。###コード
```python:Main.py
N = int(input())
A = list(map(int,input().split()))
ans
Cloud Composerを用いて定期的にYoutube APIを叩きBigqueryに結果を格納してみる
## はじめに
こんにちは。AIベンチャーでデータサイエンティストをしているたむたむです。
最近Youtuberの東海オンエアにどハマりしているのですが、ふと彼らが最近どのくらいの勢いで総再生回数や登録者数を伸ばしているのか気になり、Cloud ComposerでYoutube APIを定期的に叩き、Bigqueryに日々の数値の推移を格納するコードを書いてみました。ちなみに以下のサイトとかから過去1ヶ月分の再生回数の推移とか見れるのですが、もっと長期間データを溜めて分析したいなと思ったため、今回こんなことをしています。
[【簡単】YouTubeチャンネル登録者数の推移を確認する3つの方法](https://vlog-magazine.jp/youtube-transition/)## Youtube APIの初期設定
Youtube APIを叩けるように初期設定を行います。基本はGCPのServices項目の中からYouTube Data APIを探し、有効化すれば扱えるようになります。その後、Youtube API keyの保存をしておきます。
ここら辺は、[公式サイト](
Python3.9の新機能(2) - Pythonで有向非巡回グラフのソートをする
##はじめに
2020年10月にリリースが予定されているPython3.9で新たに加わる変更を[Python3.9の新機能 (まとめ)](https://qiita.com/ksato9700/items/d5df9d36147796c86c77)という記事でまとめています。少し分量のありそうな話題を別記事にしていますが、これはその第二弾で、有向非巡回グラフのソートについてです。
##有向非巡回グラフとトポロジカルソート
まず、ここでいうグラフは折れ線グラフとか棒グラフとかデータを視覚的に表す図表のことではなく、グラフ理論のグラフです。グラフはデータ構造の一種で、ノード(頂点)とそれらを繋ぐエッジ(枝)で構成されています。ノードやエッジに何かしらの意味をもたせることによって、関連性を持つ情報を表すことができます。
グラフにもいくつか種類があり、その最初の分かれ道がエッジに方向があるかないか。方向があるものを有向グラフ(左側)、無いものを無向グラフ(右側)といいます。
![スクリーンショット 2020-05-31 13.11.10.JPG](https://qiita-image
Pythonで平方剰余を判定する
#平方剰余の定義
整数 a と p とが互いに素であるとする。合同式
```math
x^{2} \equiv a \, mod\, p
```が解を持つとき、a は p を法として平方剰余であるといい、そうでないとき平方非剰余であるといいます。
#オイラー規準
p を素数とすると、 平方剰余であるための必要十分条件は次の式で表される。```math
a^{\frac{p-1}{2}} \equiv 1 \, mod\, p
```
p が奇素数(p >2 の素数)であるとき、xが平方剰余かどうかを Python で実装すると2行で書ける。```python:quadratic_residue.py
def quadratic_residue(a, p):
return pow(a, (p - 1) // 2, p) == 1
```[平方剰余のPython実装](https://github.com/ralphleon/Python-Algorithms/blob/master/Cryptology/quadratic_residue.py)
次に
Djangoでメール送信
# はじめに
ここでは、Djangoでメール送信をする方法について解説していきます。
お問い合わせフォームの作成などに使うことができます。# デフォルトの設定
まず、`settings.py`にメール関連の設定を記述します。
以下は、Gmailを用いる場合の例です。```python:settings.py
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'sample@gmail.com'
EMAIL_HOST_PASSWORD = アプリ用のパスワード
EMAIL_PORT = 587
EMAIL_USE_TLS = True
```# メールの件名や宛先の設定
ここでは、お問い合わせフォームで
`forms.py`にメール送信用の関数を定義します。```python:forms.py
from django import forms
from django.conf import settings
from django.core.mail import BadHeaderError, EmailMessage
「14日で作る量子コンピュータ」を読んでみる。2日目
#はじめに
今回は実際にシュレディンガー方程式を用いて電子の運動を計算してみます。# 2 電子の波動関数
## 2.1 電子の波動関数の表現
ここではポテンシャルによるエネルギーが存在しない場合の電子の波動関数を求める。
前回求めた、時間に依存しないシュレディンガー方程式```math
-\frac{\hbar^2}{2m}\frac{d^2 \phi(x)}{dx^2}=E\phi(x)
```を用いる。ここで定数をひとまとめにして、
```math
k=\sqrt{\frac{2mE}{\hbar^2}}
```これを用いて
```math
\frac{d^2 \phi(x)}{dx^2}=-k^2\phi(x)
```と言う二階微分方程式を解くことで、波動関数は
```math
\psi(x,t)=Ae^{ikx-i\omega t}+Be^{-ikx-i\omega t}
```ここでωについて
```math
\omega=\frac{E}{\hbar}より\\
\omega=\frac{\hbar k^2}{2m}
```
【入門】Pythonによる人工衛星データ解析(Google Colab環境)
## はじめに 〜衛星データとは〜
- 人工衛星データとは、人工衛星を利用した**“リモートセンシング”**によって取得されたデータを指します。
- これまで人工衛星データは専門ツールや大容量データ処理基盤が必要なため、利用できる組織は大学機関や一部の専門機関が限られていましたが、昨今のオープンソース・ライブラリの普及やデータ処理基盤のクラウド利用により、**一般組織でも気軽に人工衛星データを扱える外部環境**が整ってきました。
- 衛星データを利用することで、これまで取得することができなかった様々な**場所・時間・対象の状態**をビッグデータで解析することが期待できます。
- そこで本記事では、**どの様にデータを扱うのか**を、衛星データ解析の**専門ツールを利用せず**(最も身近なツールの一つである**python**を利用)、誰でも気軽に試すために**無償**で利用方法を紹介していきたいと思います。
- また、今回はビジネスや社会実装に利用イメージが沸きやすい衛星データセットを選定してみました。応用できそうな場面を想像しながら、読んで頂ければと思います。## 対象データ
-
エラーコードから即解決方法を知りたい
#はじめに
ググっても解決がなかなか見つけられずにイライラすることありませんか?
ここでは自分が出くわしたエラーの中で、解決に10分以上かかったヤツらをリストアップしていきます。内容に一貫性はありません。エラーと解決策のみ記した断片的な情報です。
##pandasインストールでつまづき
pipでpandas入れる時に出てくるエラー。バージョンダウンで解決した人もいるみたいだが駄目みたい。
aptで入れたらOKだった。```
ImportError: cannot import name 'PY3'
ImportError: cannot import name 'AbstractMethodError' pandas
```
```
pip uninstall pandas
sodo apt install python-pandas
```
Pythonista3でYouTube動画の歌詞表示アプリ作ってみた!
## 1.はじめに
私は音楽を聞く際にYouTube Musicを使っているのですが、このアプリを使う上で非常に不満に思っていることが一つありました。今回はその不満点を解消した話をまとめたいと思います。
何が不満だったかというと主要の音楽再生アプリには今や当たり前のように実装されている歌詞表示がYouTube Musicではまともに機能しないのです。(機能の実装は2020年2月にされた模様)
[参考:YouTube Musicアプリが歌詞表示に対応](https://japanese.engadget.com/jp-2020-03-04-youtube-music.html)
2月に実装された機能ということなので3ヶ月たった今はどうなのかという感じですが、私がよく聞く曲に関して一向に歌詞が追加される気配はなく歌詞表示ができた試しが一度もありません・・・orz
待っていても改善される気配がないということもあり、歌詞表示アプリくらいなら自分でも作れるかも?と思いチャレンジしてみました!!
## 2.環境
- 使用した端末:iPad mini 5、iPhone 11
- アプリ
pycparserを用いたCコードレビューツール
# 背景・目的
普段C言語のソフト開発していて、
コードレビューを依頼する前に自分の書いたコードがコーディングルールに沿って書かれているかセルフチェックするツールが欲しいと考えていました。コードの構文解析処理から作るのは大変なので何か良いライブラリはないか探したところ、
pycparserというライブラリが使えそうだったので、これを使ったコードレビューツール、「pycreviewer」を作りました。
https://github.com/dromar-soft/Pycreviewer# 実行環境
* Python 3.8.2.
* pycparser 2.2.0(https://github.com/eliben/pycparser)# pycparserについて
pycparserはeliben氏によって開発されたC言語の構文解析ライブラリです。
https://github.com/eliben/pycparser# 設計
![](https://raw.githubusercontent.com/dromar-soft/Pycreviewer/ima
PythonCGIの基本
## 想定環境
- Ubuntu Server 18.04LTS
- Python3## cgi-binディレクトリの作成
ホームディレクトリ直下に`cgi-bin`ディレクトリを作成する。```bash
user@hostname:~$ mkdir cgi-bin
user@hostname:~$ cd cgi-bin
```## CGIスクリプトの作成
```bash
user@hostname:~/cgi-bin$ which python3
/usr/bin/python3user@hostname:~/cgi-bin$ vi hello.py
```
`which`コマンドでPython3のパスを確認しておく。```hello.py
#!/usr/bin/python3print('Content-Type: text/html; charset=utf-8')
print()print('
Hello, World!
')
```### コードの解説
1. 1行目にShebang(シバン)と呼ばれるコメントを書く必要がある。