- 1. AWS EC2の初期環境構築:Emacs, zsh, Python3(Miniconda)
- 2. 自分のITライフを振り返りつつ、プログラミング言語の学ぶ順番について考える
- 3. PytorchでDataFrameのデータをNNで訓練できる形に整形する
- 4. 仮想マシン配置最適化問題(簡単版)をblueqatで解いてみた
- 5. ConceptNetをローカル環境で実装する
- 6. Python の正規表現マッチングで引数付groupを使うと遅いのか検証する
- 7. Python 3チップス
- 8. MacにPython, Jupyter Notebook, BeautifulSoup4, Seleniumを用いたスクレイピング環境を構築
- 9. Django REST FrameworkのPermission周りの日本語解説がないので書いてみた
- 10. Python リストから順番を維持したまま重複を取り除く方法。
- 11. Windowsで通知を出す神パッケージ「zroya」を見つけた話
- 12. Pythonのturtleでマウスクリックしたところに亀を移動させる
- 13. heroku + Python で Vtuber Twitter bot 作る
- 14. Python の起動方法による sys.path の違い (v3.8.2)
- 15. Pythonで「大石泉すき」を何回で揃えられるかゲームをつくる
- 16. Python 3.8 スライス関係の覚書き
- 17. (Python) ABC162-D 考察ログと解法
- 18. TypeError: __init__() got an unexpected keyword argument 'status'の対処方法
- 19. Atcoder ABC160 A-EをPython3で
- 20. jupyter-notebookでpython3が動かない
AWS EC2の初期環境構築:Emacs, zsh, Python3(Miniconda)
# TL; DR
まっさらなEC2インスタンスにログインして作業環境を構築した際のメモ
– `emacs-nox`をリポジトリから導入
– `zsh`をリポジトリから導入
– `/etc/passwd`を編集しシェルを変更
– `/etc/locale.conf`を編集し文字化けを解消
– `.zshrc`を編集し変更を適用
– `Miniconda3`をインストーラから導入
– `/path/to/conda init zsh`を実行# はじめに
本記事ではAmazon Linux 2を使っているが,Ubuntu Serverを使う場合もあるため,以下に注意する.
– Amazon Linux 2のデフォルトユーザ名は`ec2-user`になる.Ubuntu Serverでは`ubuntu`になる.
– Amazon Linux 2はRedHat系なので,パッケージマネージャには`apt`ではなく`yum`を使う.
# リポジトリの初期化
“`
$ sudo yum update
“`Debian系の`sudo apt updat
自分のITライフを振り返りつつ、プログラミング言語の学ぶ順番について考える
http://www.minekawada.com/program-language-oder.html
目次
自分のプログラミング言語の学んできた順番川田さとし、C言語を始める
川田さとし、Javascriptを始めるの巻
川田さとし、Pythonに目覚める
川田さとし、C#で仕事としてのプログラミングへ後編は作成中
PytorchでDataFrameのデータをNNで訓練できる形に整形する
# 概要
ニューラルネットワークでデータを訓練させたり検証したりする際に、データを(データ群,ラベル)の形に整形する必要がありますよね。
MNISTやCIFAR10だと事前にこの形になっているんですが、手持ちのデータを使うときには自分でこの形にする必要があります。が、理解するまで時間がかかったのでこちらにしたためておきます。尚、基本的な方法については英語でどんぴしゃ回答してる方々がいたため、英語が行ける方は以下の一連のやりとりをご覧ください。
[Convert Pandas dataframe to PyTorch tensor?](https://stackoverflow.com/questions/50307707/convert-pandas-dataframe-to-pytorch-tensor)このQiitaでは文脈を補って少し詳しく解説しているので、適宜必要なところだけサク読みして下さい。
##データとラベルに手持ちのデータを分ける
###DataFrameからラベルを引っ張って来る(ラベルのコラム名:target)
“`python
train_labe
仮想マシン配置最適化問題(簡単版)をblueqatで解いてみた
前回はblueqatを使ってVQEの動作確認を実施した。今回は、仮想マシン最適化問題(簡単版)をblueqatのVQEで解いてみる。
# 仮想マシン配置最適化問題とは
一言で表すと、**「仮想化基盤において、仮想マシンを無理なく詰め込むことができる仮想マシンの配置ってどんな配置?」**っていうのを求める問題です。私が現在勝手にそう呼んでいますが、正式名称があるのでしょうか・・・?# この問題を考えるに至った背景
私の日頃の業務は、VMware製品を利用してオンプレ環境での仮想マシン提供、基盤全体の運用保守を行っています。基盤としては700VM程度の中規模基盤です。業務をしていて思うのは、「仮想マシンの配置を工夫すればもう少しリソース(特にCPU、メモリ)の空きができるんじゃない?」ってことです。どこの基盤管理者も同じだと思いますが、新規の仮想マシンを提供する時は以下のことを特に意識しているんじゃないでしょうか?
– 仮想マシン搭載予定の物理マシンにリソースの余力があるか
1台の物理マシンに仮想マシンを詰め込み過ぎると、仮想マシンのパフォーマンスに影響するため、この観点は非
ConceptNetをローカル環境で実装する
# ConceptNetとは
> ConceptNet aims to give computers access to common-sense knowledge, the kind of information that ordinary people know but usually leave unstated.[公式githubより]
端的に言うと、コンピュータに常識を持たせることを目指した常識データベースです
# 常識が何の役に立つか
考えればきりがないのですが、一例として挙げてみます
## ユーザの発話の正しい意味や文脈をコンピュータが認識する
“`
(サウザンドドレッシングの話をしていて)
女性A:そう、そう、そう。何かね、でも沖縄の人は、何にでもあれかけるから。
女性B:沖縄すごい。じゃあ、最初からバラで売らなくて混ざったのを。
女性C:隠れた味だね、沖縄の方は。
女性A:混ざったやつは売らない。売ってはないかなー。
レストランとかも作りがいがないとかいうの聞いたことがある。
何にでもかけちゃうから。微妙な味を出してもー。引用元「名大会話コーパス」
Python の正規表現マッチングで引数付groupを使うと遅いのか検証する
# 結論
– 正規表現でグループを指定するとちょっと遅くなる。(14%)
– 引数付でgroup(1)とかするとさらにちょっと遅くなる。(22%)
– 遅くならないわけではないけど倍かかるわけでなし別に気にする必要ない。(個人差があります)
– 何行もロジック書くよりは標準ライブラリの関数使ったほうがだいたいにおいてマシ。# やる気あったんか
どちらかというとQiitaになんか書こうというモチベーションでした。すいやせんした。
Pythonの正規表現でマッチしたあとmatchobj.group(1)とかするとなんか遅い気がしたし、簡単に検証できそうだったのでとりあえず書きますという気持ちです。# 環境
– Windows 10 Home
– Python 3.6.6
– ipython 6.4.0# 実験用コード
“`python
import reseq = “hoge123fugafoobar456zoo”
pat1 = re.compile(r”\S+\d{3}\S+\d{3}\S+”)
pat2 = re.compile(r”\S+(\d{3})\S+
Python 3チップス
Python3を触っていてエラーが発生したり調べたことのひたすらメモです。短いもの主体なのでチップスの名前を使っています。
# arrayはリスト内包記法でリストに変換される
“`py
from array import array
array1 = array(“i”, [0, 1, 2, 3, 4])
print(array1) #array(‘i’, [0, 1, 2, 3, 4])
print([i for i in array1]) #[0, 1, 2, 3, 4]
print(type([i for i in array1])) #
“`# ctypesにはmemmoveが実装されている
“`py
from ctypes import *
ctypes.memmove #
“`
RtlCopyMemoryやRtlMoveMemoryは不要です。#arrayは文字列をサポート終了予定
#ctypes.get_unicode_bufferメソッドの戻り値に対応する型はcty
MacにPython, Jupyter Notebook, BeautifulSoup4, Seleniumを用いたスクレイピング環境を構築
新しいMacBook Proを買ったので、個人的備忘録としてPython, BeautifulSoup4関連の環境構築で参考にした記事をメモします。
きっとこの通りにやれば他のMacでもひとまず問題なくいけるはず、、## MacBookについて
OS macOS Catalina 10.5.13
プロセッサ 2.6 GHz 6コアIntel Core i7
メモリ 16 GB 2667 MHz DDR4## 目指す環境
– Python3でBeautifulSoup4を使ってスクレイピングできる
– Pythonのバージョン管理をできるようにしておく
– JavaScriptで動くサイトも見れるよう、SeleniumとChrome Driverが使える## Homebrewのインストール
まっさらなPCなので、、
[MacにHomebrewを導入する方法](https://qiita.com/balius_1064/items/ac7dff5ef10eaf69996f)##Python, virtualenvのインストール
Virtualenvも含め、[ma
Django REST FrameworkのPermission周りの日本語解説がないので書いてみた
#なぜ書こうと思ったか
Djangoが好きでプライベートで色々と触っているのですが、QiitaにDjango周りの記事はそれなりにあってもDjango REST Framework(以下DRF)周りの記事が少ない・・・(この記事を書いている段階で159件)
とても強力なフレームワークであり、かつフロントエンドとサーバーサイドを分割して開発するのが一般的になってきている現状で、DRFはとても魅力的な選択肢の一つであると思います。
一方で、日本語の記事や技術書が少なく、英語のドキュメントを読むことが必須になると英語ができない方からするととっつきにくい印象を与えてしまうのではないかと思います。
とりわけ初心者からすると日本語ですら理解できないような内容を英語で書かれてもなぁ・・となりがちだと思うので書きました。#DRFのPermission
アクセス制御に関する領域です。>Authentication or identification by itself is not usually sufficient to gain access to information or co
Python リストから順番を維持したまま重複を取り除く方法。
**Python3.7以降から使える方法です。**
—
Python3.7からは**辞書の順番が維持**されるらしい。
##fromkeys()
以下のようにして辞書が生成できる。入力 `print(dict.fromkeys([“キー1”, “キー2”, “キー3”], “値”))`
出力 `{“キー1”: “値”, “キー2”: “値”, “キー3”: “値”}`第二引数を指定しなければ値がNoneとなる。
print(dict.fromkeys(l))
{3: None, 2: None, 1: None, 5: None, 4: None}“`##list()
辞書を引数に渡すとkeyからリストを作る。**Keyは重複しない**
##本題
入力“`
l = [3, 3, 2, 1, 5, 1, 4, 2, 3]
print(dict.fromkeys(l))
print(list(dict.fromkeys(l)))
“`
出力“`
{3: None, 2: None, 1: None, 5: None, 4: None}`[3, 2
Windowsで通知を出す神パッケージ「zroya」を見つけた話
# Windowsで通知したい
監視アプリやトレイアプリで通知をしたいとき、丁度いいパッケージを見つけられませんでした
一応、[WinAPI](http://blog.sbfm.jp/archives/137)とか[Powershell](https://quzee.hatenablog.com/entry/2019/01/14/014959)とか使えば出来るんですが、[^1]– Python3で
– Windowsで
– Cpython・Powershellを使わずに
– Pythonのパッケージを使って
– 数行で
– トースト通知を出すという条件だと中々ヒットしないんです…
# そんな貴方にzroya!
悩むこと数ヶ月、ついに[zroya](https://malja.github.io/zroya/)というパッケージを見つけました
[WinToast](https://mohabouje.github.io/WinToast/)というC++ライブラリを使ってるみたいです
~~まぁ結局Cpython使ってるようですが、使いやすいならOKです~~# インストール
pi
Pythonのturtleでマウスクリックしたところに亀を移動させる
#Pythonのturtleでマウスクリックしたところに亀を移動させる
### 実行イメージ
### サンプルプログラム
“`python
import turtlekame = turtle.Turtle(“turtle”)
def moveKame(x, y):
kame.goto(x, y)kame.screen.onclick(moveKame)
turtle.done()
“`
### 解説
“`python
# turtleモジュールを読み込む
import turtle
“`“`python
# kameという名前の変数にturtleモジュールの中の亀(Turtle)を生成して格納する
kame
heroku + Python で Vtuber Twitter bot 作る
# 目的
次の機能を持つTwitter botを作ります。
(たぶん)無料で運用できるはず。– YouTube
– チャンネル登録者数のキリ番突破通知【達成通知】
宝鐘マリンさんのチャンネル登録者数が
27.5万人を達成しました。
(YouTube : https://t.co/aVisQbrraA)— ホロライブ いろいろ通知bot (@hololive_notify) April 14, 2020
Python の起動方法による sys.path の違い (v3.8.2)
# 概要
Python のプログラム起動方法には何種類かあり、それによりモジュールの検索パスである `sys.path` の値が異なる。
## 参考文献
v3.8.2 版を閲覧
- Python のセットアップと利用, 1. コマンドラインと環境. https://docs.python.org/ja/3/using/cmdline.html
## 詳細
簡単に言うと
- ファイルなどを直接指定した場合はそれに関連するディレクトリが `sys.path` の先頭に来る
- `-m` でモジュールを指定した場合はカレントディレクトリが先頭要素になる
- いずれの場合でも、モジュール名は `"__main__"` という文字列である。まとめると以下の通り。ディレクトリ (パッケージ) や .zip ファイルを起動できることは著者は知らなかった。
| `python` の後の引数 | 実行されるもの | そのモジュール名 (`__name__`) | `sys.path` の先頭要素 |
|-----------------|------------------|----
Pythonで「大石泉すき」を何回で揃えられるかゲームをつくる
#概要
[「大石泉すき」Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ohishi-izumi-suki)にて[Excel VBAでつくったもの](https://qiita.com/tsuru2_mitsuru/items/171386402987d87f8587)を、Pythonの勉強がてら焼き増ししただけのものです。```py
import randomSTRING = '大石泉すき'
i = 0
output = ''n = len(STRING)
max = n - 1while output != STRING:
output = ''for _ in range(n):
location = random.randint(0, max)
output = output + STRING[location]print(output)
i += 1print('「{}」が揃うまで{}回かかりました。'.
Python 3.8 スライス関係の覚書き
#概要
Python 3.8のスライス操作`a[1:2:3]`、スライスクラス``、`__getitem__`メソッドに関する覚書きです。主な用語は公式ドキュメントの[6.3.3. スライス表記 (slicing)](https://docs.python.org/ja/3/reference/expressions.html#slicings)、[6.17. 演算子の優先順位](https://docs.python.org/ja/3/reference/expressions.html#operator-precedence)、[3.2. 標準型の階層](https://docs.python.org/ja/3/reference/expressions.html)に従っています。 # スライス表記・操作
`x[1:2]`のような表現をスライス表記、`[slice_list]`の手前への適用をスライス操作と呼びます([6.17. 演算子の優先順位](https://docs.python.org/ja/3/reference/expressions.
(Python) ABC162-D 考察ログと解法
[ABC162](https://atcoder.jp/contests/abc162) に(バーチャル)参加しました。
D問題が面白かったので初めての解説記事を書きます!![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155933/febfd5fc-ca05-0827-eb9e-e89b13037c28.png)
綺麗な解説ではなく、その時思ったことを垂れ流すように書いてみました。
なお解いている様子は [YouTube](https://www.youtube.com/watch?v=d2Ha71q17_c) に動画があります。
# 問題
[D - RGB Triplets](https://atcoder.jp/contests/abc162/tasks/abc162_d)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155933/ca95e703-afd6-85c5-a
TypeError: __init__() got an unexpected keyword argument 'status'の対処方法
#はじめに
firebaseをpythonで使用する際、```swift:エラー内容
TypeError: __init__() got an unexpected keyword argument 'status'
```
上記エラーに遭遇したため、解決方法を記録として残しておきます。#解決方法
下記コマンドは以下の通りです。```python:解決方法
pip uninstall requests
pip install requests==2.23.0
pip install firebase_admin
```
上記コマンドで解決できました。
2.23.0のところはrequestsの最新バージョンを指定してください。今回参考にしたGitHubの記事です。
より詳細に記載がりますので、よろしければご参照ください。
https://github.com/firebase/firebase-admin-python/issues/262ご参考になれば幸いです。
Atcoder ABC160 A-EをPython3で
#A Coffee
2文字目=3文字目かつ4文字目=5文字目ならYes、それ以外はNo```ABC160a.py
s=input()if s[2]==s[3]:
if s[4]==s[5]:
print("Yes")
exit()
print("No")
```#B Golden Coins
貨幣価値の高いものから順に入れていけばOK。[AOJの問題](http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DPL_1_A&lang=jp)みたいにうまくいかないパターンかなと思ったら違った。```ABC160b.py
n=int(input())a=n//500
b=(n%500)//5print(1000*a+5*b)
```#C Traveling Salesman
終点と始点区間を含む$n$区間のうち、最も距離の長い区間を除いた和を出力する```ABC160c.py
k,n=map(int,input().split())
a=list(map(int
jupyter-notebookでpython3が動かない
# jupyter-notebook起動
ターミナルで
```
jupyter notebook
```jupyter-notebookを開き、new→python3で新たにファイルを開いた。
```py
print('python')
```を入力しても反応がなく出力されない
# ターミナルエラー確認
```
ImportError: cannot import name 'create_prompt_application'
```
`create_prompt_application`を検索すると下記の記事を見つけた。[jupyterが動作しなかった時の対応メモ](https://qiita.com/aj1m0n/items/a4cd872fc60c51305acd)
調べていると上記エラー以外にも、jupyter-notebookが動かないエラーは様々あるみたいです。
# 解決法
一旦 jupyter-notebook を起動しているターミナルを control + C で閉じ、prompt-toolkitをインストール
```
pip inst