- 1. Cloud9とApache Httpdでflaskアプリを動かす
- 2. lightbox2の使い方とカスタマイズについて(メモ)
- 3. PEP 612 (Parameter Specification Variables) を読んだよメモ
- 4. Saliency MapをGANで生成するSalGANを実装してみた
- 5. 「14日で作る量子コンピュータ」を読んでみる。3日目
- 6. PEP 604 (Complementary syntax for Union[]) を読んだよメモ
- 7. Pythonの関数入門
- 8. ラズベリーパイZERO-WHで監視カメラ(動体検知と動画保存)を作成する
- 9. Random Dot Stereogram
- 10. Windows10 + Python3 + selenium + chromedriver + headless chrome で要素を操作してみる(その1 修正版)
- 11. DjangoでAjax(汎用クラスビューを使用)
- 12. YOLOv4環境構築②
- 13. ゼロから始めるLeetCode Day44「543. Diameter of Binary Tree」
- 14. macとwinでpyInstallerを使う時経験した不具合と対処法
- 15. 関数を戻り値とするタイプの高階関数
- 16. python3で定期的に関数を実行する高階関数
- 17. Djangoを一からセットアップしてみた(Vagrant, Centos, Python3)
- 18. PEP 613 (Explicit Type Aliases) を読んだよメモ
- 19. マイページからいいね(LGTM)順が消えたので Qiita API 使って取得する
- 20. ゼロから始めるLeetCode Day43「5. Longest Palindromic Substring」
Cloud9とApache Httpdでflaskアプリを動かす
# はじめに
Coud9で使用しているEC2上でflaskアプリを動かして、動作検証したいケースがある。
その際に参照するための手順を残しておく。# Apache Httpdの設定
Apache HttpdはCloud9上にデフォルトでインストールされている。
そのため、自動起動の設定だけ入れておく。– 起動設定の現状確認
“`
$ sudo chkconfig –list httpd
“`– 自動起動設定
“`
$ sudo chkconfig httpd on
“`– 設定確認
“`
$ sudo chkconfig –list httpd
“`# 必要なパッケージのインストール
– apache-devとgccのインストール“`
$ sudo yum -y install httpd24-devel
“`※ gccはもともとインストール済みだが、Cloud9以外でインストールするなら以下。
“`
$ sudo yum -y install gcc
“`# mod-wsgiのインストール
– pipのバージョンアッ
lightbox2の使い方とカスタマイズについて(メモ)
#この投稿について
作業進捗の備忘録、学習効果の向上を目的として記録していきます。
学習しながら作業を進めておりますので、情報が間違っている場合も多々あると思います。
正しい情報は公式ドキュメントを参考にしてください。#開発環境
* macOS High Sierra 10.13.6
* Anaconda 3
* Python 3.7.7
* Djnago 3.0.6
* VisualStudioCode※記事内のHTMLコードやフォルダ構成についてはアプリ開発途中のものを使用していますので、あらかじめご了承ください。
#lightbox2とは
公式サイト
https://lokeshdhakar.com/projects/lightbox2/Webサイト上でいい感じに写真を閲覧できるようにするためのJavaScriptライブラリです。
#lightbox2でやりたいこと
ページをめくる感じに写真を次々閲覧したい。
なんかいい感じに写真を見せたい。#導入してみる
`lightbox.js`を公式のGithub(https://github.com/lokesh/l
PEP 612 (Parameter Specification Variables) を読んだよメモ
Microsoft の Python 向け型チェッカーの [pyright](https://github.com/microsoft/pyright) の README を流し読みしていたら、初めて聞く PEP が登場したシリーズ第二弾です。
今回は [PEP 612 (Parameter Specification Variables)](https://www.python.org/dev/peps/pep-0612/) について書きます。## 概要
* 汎用のデコレータを書こうとすると、型を書くのが非常に難しい
* **指定された関数と同じ引数を持つ関数** を表現する方法がほしい## アプローチ
* `ParameterSpecification` という引数を表す型を追加すると解決する
引数を表す型として `ParameterSpecification` を追加する。
`ParameterSpecification` は `Callable` と一緒に用いることで callable object のジェネリクスっぽく振る舞うことができる。 `TypeVar`
Saliency MapをGANで生成するSalGANを実装してみた
#はじめに
画像内の目立つ部分のことを”Salient”な部分と言う.
特に画像が与えられた時に目立つ部分の分布を表したmapのことをSaliency Mapと言う.下の例は左の画像とそれに対応するSaliency Mapを並べて表したもので、人の部分が目立っていることが読み取れる.
![sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391115/aa2d47cb-23f6-c9ee-505c-ac2666a4d95a.png)
深層学習を用いてこのようなSaliency Mapを生成する手法がいくつか提案されている.
今回はその中でもGANを用いて生成を行うSalGANというモデルをKerasを使って実装し性能を評価してみることにした.こちらは元論文と今回の実装のURL.
[元論文 – SalGAN: Visual Saliency Prediction with Generative Adversarial Networks](https://arxiv.org/abs/170
「14日で作る量子コンピュータ」を読んでみる。3日目
# はじめに
今回は重ね合わせの原理と、電子波束についてまとめる。# 3 電子波束の観察
## 重ね合わせの原理
重ね合わせの原理は、シュレディンガー方程式を満たす複数の解を、足し合わせてできる関数もまたシュレディンガー方程式の解となっていると言う原理です。例えば以下のようなある分布にしたがって、$\psi_k$を重ね合わせた波動関数を用意する。$$
\psi(x,t)=\int_{-\infty}^{\infty}a(k)\varphi_k(x)e^{-i\omega(k)t}dk=\int_{-\infty}^{\infty}a(k)e^{ikx-i\omega(k)t}dk
$$これをシュレディンガー方程式に代入してみる、この時自由空間なのでポテンシャルは0したがって
$$
i\hbar\frac{\partial}{\partial t}\int_{-\infty}^{\infty}a(k) e^{ikx-i\omega(k)t}dk=\frac{\hbar^2}{2m}\frac{\partial^2}{\partial x^2}\int_{-\infty
PEP 604 (Complementary syntax for Union[]) を読んだよメモ
Microsoft の Python 向け型チェッカーの [pyright](https://github.com/microsoft/pyright) が最新の仕様に対応していると聞いて README を流し読みしていたら、今までウォッチしていなかった [PEP 604 (Complementary syntax for Union[])](https://www.python.org/dev/peps/pep-0604/) というのがリストアップされていたので目を通してみました。
ちなみに次の記事で PEP-612 についても書く予定です。## 概要
* 毎回 `Union[int, str]` って書くのうざくない?
* Scala みたいに `int | str` って書けるようにしようよ
* 型アノテーションだけじゃなくて、 `isinstance()` や `issubclass()` でも使えるようにしようよ## アプローチ
* 型同士を `|` でつなぐと型集合をつくれるようにする
以上。
## 例
PEP にあるサンプルを見ると一目瞭然なので説明は省
Pythonの関数入門
# まえおき
– この記事は執筆中の[やさしくはじめるPythonプログラミング](https://github.com/simon-ritchie/python-novice-book-preview)の本の特定の章の部分抜粋です。
– 入門本なので初心者の方向けです。
– 関数の章の内容が主になります。
– Qiita記事にマッチしていない箇所(「章」や「ページ」といった単語が使っていたり、改行数が余分だったり、リンクが対応していない等)があるという点はご留意ください。面倒なのでQiita用に調整するのやりたくない。気になる方は↑のリンクの電子書籍版をご利用ください。
– コメントなどでフィードバックいただいた場合、書籍側にも活用・反映させていただく場合があります。# 同じ処理のコードを使いまわす : 関数入門
この章ではPythonの関数について学んでいきます。そもそも関数ってなんだ?という感じですが、その辺りの説明を含めて説明していきます。
関数をうまく使いこなすとコードを書く量を減らせたり、同じコードを何度も書かずに済んだり、読みやすいコードにしたりと
ラズベリーパイZERO-WHで監視カメラ(動体検知と動画保存)を作成する
# はじめに
ラズベリーパイで監視カメラを作成しました。監視カメラといっても、入り口付近に設置し入場した人の確認を行うといったもので、カメラ設置場所に近づいた人(または物)に対し記録するものとしています。また24時間を想定しているので、夜でもある程度は動作してほしいと考えています(実際にはなかなか難しいようです)。
コストはかけないものとしているので、ラズパイZERO HWとカメラのみで動作するようにしました(ネットワークにつながるラズベリーパイなら大丈夫と思います)。
監視カメラとしては、カメラ画像より動体検知し、その後に動画を一定時間記録しこれをGoggleDriveに保存します。
また、できるだけ通信量が増えないように設定を変更できるようにしました(可能な範囲ですが)。
その代わりに、リアルタイム性は全く無視しています。
(ハードウエアへの電源供給やWifiなどによるネット接続は前提です)具体的には、以下のように差分抽出画像(比較グレイスケール画像に変化部分を青色で表現しています)を検出したら、この画像を含め動画を数秒間撮影し、これを保存するといったものです。
![cam9
Random Dot Stereogram
ランダムドット・ステレオグラムを描画するプログラムをpythonで書きました。
とは言っても、ランダムな点でステレオの図を描画するだけのジョークプログラムですので、
真面目な人は怒らないで下さい。ubuntu20.04では、pip3でpygameがインストールできなかったので、`sudo apt-get install python3-pygame python3-numpy`として、pygameをインストールしました。以下のコードを、コピー&ペーストして、適当なディレクトリに置き、実行権限を付けて、同じディレクトリに*ここ*にある画像ファイルを置いて、実行して下さい。
pythonで初めてのグラフィック処理のため、初学者覚書を兼ねてです。“`rdsg.py
#!/usr/bin/python3
from pygame.locals import * # pygameイベント処理のため
import py
Windows10 + Python3 + selenium + chromedriver + headless chrome で要素を操作してみる(その1 修正版)
Windows10 + Python3 + selenium + chromedriver + headless chrome で要素を操作してみる(その1 修正版)
#目的
[日本Seleniumユーザーコミュニティ](http://www.selenium.jp/test-site)が公開しているテストサイトの要素を操作してみる
以前動かしていたコードに対して、headless chrome を使用するように修正&動作確認
#サンプルコード
textbox:値の確認と、テキスト入力後の値を確認する
radio button:値の確認と、他方をクリックした後の値を確認する
checkbox:値の確認と、両方をクリックした後の値を確認する
※注意事項:radio button、checkboxの値の取得“`python
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscodeimport time
from selenium import webdriver
from selenium.webdriver.comm
DjangoでAjax(汎用クラスビューを使用)
『Django Ajax』で検索するといくつか記事がヒットするがほとんどが関数ベースビューによるものだったので、汎用ビューを使用したコードを解説。
汎用ビューよく分かってない方はまずはそちらに入門しましょう。
– [Djangoにおけるクラスベース汎用ビューの入門と使い方サンプル](https://qiita.com/felyce/items/7d0187485cad4418c073)
– [Djangoの 汎用クラスビューをまとめて、実装について言及する](https://qiita.com/renjikari/items/af3e8958d2653e6f8d46)これは私見ですが、Djangoを採用する大きなメリットの1つがクラスベースである汎用ビューを利用することだと考えています。
したがって、**たぶんこれがベストプラクティスだと思います**。# 完成品イメージ
GitHub – [skokado/django_ajax: Django + Ajax サンプル](https://github.com/skokado/django_ajax)
入力した文字列を画面
YOLOv4環境構築②
# 前回の記事
[YOLOv4環境構築①](https://qiita.com/kzsDev/items/89731ffe7df4e1cf4628)参考
# DarkNetのダウンロード
Cドライブとは別のDドライブ直下に“`YOLO_v4“`ディレクトリを作成することにした
このディレクトリにDarkNetをダウンロードするGitHubからクローンする
https://github.com/pjreddie/darknetURLをコピーして
![darknet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644808/5219989f-6cd1-669f-817b-4b5f8164c387.jpeg)コマンドプロンプトから“`YOLO_v4“`ディレクトリに移動してクローン
“`D:/YOLO_v4
$ git clone https://github.com/pjreddie/d
ゼロから始めるLeetCode Day44「543. Diameter of Binary Tree」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day43「5. Longest Palindromic Substring」](https://qiita.com/KueharX/items/33f03dec9919b71ef3c0)今はTop 100 Liked QuestionsのM
macとwinでpyInstallerを使う時経験した不具合と対処法
pyInstalllerの設定をwindowsとmacで経験した事を書き留めたいと思います。
macOSは10.13.5 Hight Sierra、windows 10 1909です。###Mac:
1. pyenvの問題。PyInstallerを使うと、OSErrorが発生した。対処はpyenvの再インストール。
“`PYTHON_CONFIGURE_OPTS=”–enable-shared” pyenv install バージョン
“`注意:envのアンインストールは不要だった。pip listで確認できるすでにインストールしたモジュールは失われていなかった。
2.pyInstallerの再インストール必要。
上記「モジュールは失われていなかった」と書いた。pip listで確認すると存在していることが確認できた。しかしpyInstallerを実行してもまだOSErrorが発生した。pip uninstall pyInstallerとpip install pyInstallerを実行し、再インストールした。Mac環境でpython
関数を戻り値とするタイプの高階関数
# 外でも結構されてる説明
を、もう少しわかりやすい命名にしたつもりです。“`python
def k_minus_x(k):
# もととなる関数。こいつが高階関数。
def f(x):
return k – x
return ffive_minus_x = k_minus_x(5) # x_minus_3は新しい関数と捉えてOK
print(five_minus_x(3)) # 2print(k_minus_x(7)(3)) # 4
“`# 真価は場合分けのときなのでは?
試しに書いたのは、じゃんけんするだけのコード。
関数の中で関数を宣言しなくても使えるみたい。
当然もっとシンプルにできるけど、複雑な処理をさせたいときは結構使えそう。“`python
def janken(hand: str):
# もととなる関数。こいつが高階関数。
if(hand == ‘rock’):
return print_paper
elif(hand ==
python3で定期的に関数を実行する高階関数
6/2,3 しらかみゅさんのアドバイスにより、より短いコードでより正確な動きができるようになりました。
“`python:定期的に関数を実行する高階関数
def minute_interval(interval_min: int, at_sec: int, function, *args, **kwargs):
“””RUNS FUNCTION REPETITIVELY
Args:
interval_min(int) : Value of minute. If 11, it will operate at 00, 11, 22, 33, 44, and 55.
at_sec(int) : Value of second. If 5, it will operate at 05.
function: Function you want to call repetitively
“””
while True:
now = datetime.now()
wait_min = n
Djangoを一からセットアップしてみた(Vagrant, Centos, Python3)
# はじめに
先日、ローカル環境でAnacondaを使ってみたのですが、「これをブラウザで表示することはできないものか…?」と思い、Djangoを使える環境を作ることにしました。今回はVagrantのbox立ち上げから、ブラウザにDjangoの仮想サーバ画面を表示するところまで行いました。
最終的には、
ブラウザ上でフォームに入力
→送られたデータを基にサーバ側で機械学習モデルが計算
→結果をブラウザに返す
という感じのアプリが作れたらなと思っております。# 実行環境
ホストOS: Windows10
ゲストOS: Centos7(Vagrant)# VagrantのBoxを作る
こちらは[Vagrant+Python3+Django環境でHelloWorld](https://qiita.com/192_60_33_2/items/73df25e2dd64217165ae)を参考にしました。
コマンドプロンプトで作業します。“`
vagrant box add centos/7
vagrant init centos/7
“`生成されたVagrantfil
PEP 613 (Explicit Type Aliases) を読んだよメモ
最近 [python/peps](https://github.com/python/peps) をフォローして PEP の更新を追いかけるようにしているのだが、GvR が [PEP 613 (Explicit Type Aliases)](https://www.python.org/dev/peps/pep-0613/) は (3.9 ではなく) 3.10 に入れよう的なことを言っていたのでちょっと読んでみた。
>I think it’s too late to add to 3.9, but it can be added to typing_extensions, and of course 3.10 is open (the master branch is now 3.10).
https://github.com/python/peps/issues/1412#issuecomment-633641359## 概要
* [PEP-484 (Type Hints)](https://www.python.org/dev/peps/pep-0484) では型エイリアス
マイページからいいね(LGTM)順が消えたので Qiita API 使って取得する
# 初めに
いいね順が見れなくなったので、コードを書くことにしました。
消されたということは、需要がなかったんですかね…# 動作環境
– Windows 10
– Python3.7.1(Anaconda)# コード
USER_ID を変更すれば、別ユーザーの投稿一覧も取得できると思います。
“`python
import http.client
import json
import mathCONN = http.client.HTTPSConnection(‘qiita.com’, 443)
USER_ID = ‘riekure’
PER_PAGE = 100class Api:
# リクエスト結果をJSON形式で返す
@staticmethod
def request(http, url) :
CONN.request(http, url)
res = CONN.getresponse()
data = res.read().decode(‘utf-8’)
return
ゼロから始めるLeetCode Day43「5. Longest Palindromic Substring」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day42「2. Add Two Numbers」](https://qiita.com/KueharX/items/4c2734a5d0b5db87f1b3)今はTop 100 Liked QuestionsのMediumを解いています。