Python関連のことを調べてみた2019年12月15日

Python関連のことを調べてみた2019年12月15日

Pythonで時刻周りのテストをコード化する

# 1. はじめに
時刻に関するテストは手動で実施していると`sysdate`を変更したりと何かと面倒臭いうえに、バグが混入しやすい。
そこでテストをコード化してもっと簡単にテスト実行し、品質もあげられないか試してみた。

# 2. 実行環境、ツール
実行環境は以下

“`
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.1
BuildVersion: 19B88

$ python –version
Python 3.7.4
“`

また、時刻周りを簡単にテストするにあたり[freezegun](https://github.com/spulec/freezegun)というパッケージを使ってみる。
この`freezegun`というパッケージを使うと`Python`の標準ライブラリの`datetime`から得られる現在時刻を指定したものに差し替えることができる。

# 3. freezegunを使う
時刻周りの処理をテストをするときは、当然ながら色々な時刻を使ってテストがしたい。 とはいえ、そのためだけにシステムの時刻を

元記事を表示

暗号技術のエモさに気づいてしまったエンジニアが、Pythonで実装し倒そうとしている話

現代の情報社会は暗号技術に支えられているといっても過言ではありません。にもかかわらず、我々はとくに暗号技術を意識することなくその恩恵に授かっています。しかも、暗号技術は古くは紀元前100年ほど前から存在していたという古参っぷりです。おまけに、現代暗号は高度な数学を駆使して高いセキュリティを確保しようとしており、果てはブロックチェーン技術にも派生していきます。

何だこの歴史の長さと守備範囲の広さは!!

ということで、暗号技術のエモさに気付いた私が、Pythonで暗号を実装し倒そうとしている話をします。

# 暗号技術の基本的な考え方

暗号は大きく**鍵生成**、**暗号化**、**復号**の3つの要素によって成立しています。

特に、暗号技術において鍵は非常に重要な要素をしめています。というより、暗号技術はこの鍵をいかに生成するかという技術だとも言えるかと思っています。何故なら、この鍵は暗号化でも復号でも使われるものであり、安全性に直結するものだからです。

鍵の扱い方によって、**共通鍵暗号**と**公開鍵暗号**の二種類に分類できます。

共通鍵暗号は、暗号化と復号の両方のプロ

元記事を表示

VisualStudioCodeを使い始めて変わったこと

#VisualStudioCodeを使い始めて変わったことを書いていきたいと思います。
##実は今回書いたのはVisualStudioCodeが出たての頃からのヘビーユーザです。
戸倉さん(@ayatokura)ごめんなさい。
自分はVisualStudioCodeが出たときからのヘビーユーザです。
なぜかと言うとEclipseが◯んこだったから。
1ヶ月に一回再インストールに飽き飽きしていた頃に出てきたのがAtomとVisualStudioCodeでした。
Atomはプラグインが少なかったのと重くて使いようになりませんでした。
そこで選んだのがVisualStudioCodeでした。
一番の特徴はTerminalが入っていてコマンドスクリプトも使えるんですよ。
実はLinux(Ubuntu・CentOS・RHESなどで使用可能)やMac・Windowsでも喜んでVisualStudioCodeを使っちゃうユーザでした。

依然ある職場でLinuxVimerにかなり妬まれました。
Vimが嫌になっておりしこたま困りました。
それはVisualStudi

元記事を表示

未経験から始めるPython

バージョンによる差異が大きいのと、独特な書き方も多いので、無暗にググるとハマる。ググりまくる前に、基礎的なことに一通り目を通しておくとよさげ。

# 入門
[The Self-Taught Programmer: The Definitive Guide to Programming Professionally](https://www.amazon.com/Self-Taught-Programmer-Definitive-Programming-Professionally-ebook-dp-B01M01YDQA/dp/B01M01YDQA/ref=mt_kindle?_encoding=UTF8&me=&qid=)

Pythonの超基礎を学びつつ、プログラマとして仕事を得るまでに知っておくとよいことも書かれている。

# Pythonの癖やハマりポイント
[Pythonを書き始める前に見るべきTips](https://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0)

知らないと時間を浪費してしまいそうなハマりポイントを教

元記事を表示

サンドウィッチマンのコントを機械学習でつくるver4

サンドウィッチマンのコントをディープラーニングで作る第4弾!!!!!!!!!!!!

自然言語処理 Advent Calendar 2019 の14担当です(1日おくれてごめんなさい!!!!)
https://qiita.com/advent-calendar/2019/nlp

サンドウィッチマンみたいなコントを自動的に作りたい、そしてこれお笑い事業所に売って4000兆円ほしい。
そしてサンドウィッチマンに会いたい!

今回はHREDをpytorchで実装してみました!

### 過去try
Ver3 >> https://qiita.com/yoyoyo_/items/e03a1a5f99762352c95f
Ver2 >> https://qiita.com/yoyoyo_/items/f30c538234e62dbaa081
Ver1 >> https://qiita.com/yoyoyo_/items/105879c386be1d8b0782

# HRED

元論文は
A Hierarchical Recurrent Encoder-Decoder For Gener

元記事を表示

Pythonのリリースサイクルが早くなる!

##はじめに

Pythonの生みの親である[Guido van Rossum](https://en.wikipedia.org/wiki/Guido_van_Rossum) さんが6年半務めたDropbox社を辞めるというニュースが入ってきたのがちょうど一ヶ月半くらい前。転職するわけではなくこのまま引退されるという。御年63歳。長きに渡りお疲れさまでした。既に一年以上前にPythonのBDFL(*Benevolent Dictator For Life*: 優しい終身の独裁者)の座を降りていて、Pythonの開発に大きな影響はないですが、ちょっと寂しですね。

彼がPythonを作り始めたのが 1989年12月で、ちょうど30年前になります。クリスマス休暇で趣味のプログラミングをしたかった彼はインタープリタ言語を作ろうと思いたち、それが今のPythonとなったわけですね。

1991年に0.9.0として出されたPythonもバージョンを重ね、2000年に2.0、2008年に3.0が出て、Python2とPython3は並行して開発が進みながら、現時点で2.7.17と3.8.0まで来

元記事を表示

kivyMDでのページのリフレッシュ

# はじめに
↓↓今回つくるもの↓↓
![listview.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551034/8a73caf9-2d65-ab5f-75fc-965cb63f530c.gif)

KivyとKivyMDのバージョン
`Kivy==1.11.1
kivymd==0.102.1`

kivymdのバージョンは0.1XX.Xらへんがいいかも。古すぎると色々バグるので。

完全初学者なので間違ってるところがあったらコメントお願いします?
# なんで書こうと思ったの?
記事が少なすぎるからです()
>googleでMDScrollViewRefreshLayout(今回つかうやつ)を検索した結果。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551034/06810630-c281-106c-bf13-6c333d5c03a9.png)

ちなみに2つ目に出てきたものはKivyMDモ

元記事を表示

RaspberryPi(python)でvl53l0xを使う

VL53L0Xを用いたToF式測距センサを使ってみた話

結論:
$ sudo pip install VL53L0X
とする。

コードの書き方、接続はこちらを参考に
https://github.com/pimoroni/VL53L0X-python

元記事を表示

直近の予定をGoogleカレンダーから取得して毎朝LINEで通知する

![screenshot-2019-12-13-155539.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35655/5af83558-e6c7-5811-9efb-e0dfd0dcd380.png)
我が家では当日〜明後日までの予定を毎朝LINEに通知してくれるちょっとだけ便利なものを導入してます:rolling_eyes:

# 概要

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35655/b78a3ec4-b606-66ad-d09c-24b5da3f3dc9.png)

– S3から静的なデータを取得する
– GoogleカレンダーAPIで明後日までの予定を取得してくる
– LINE Notify APIで設定したトークルームへ通知する

## 材料
– AWS Lambda … 1つ
– Googleカレンダー … 1つ以上
– GCPのサービスアカウント … 1つ以上

元記事を表示

Nim初心者が書くNim初心者のためのNimの高階関数について

# この記事で書くこと
この記事では,Nimで提供されている高階関数(higher-order function)を紹介し,Pythonと比較します.Nimの書き方のTips的なのも含まれます.

# Nimってなに?
***効率的、表現力豊か、エレガント
Nimは、静的に型指定されたコンパイル済みシステムプログラミング言語です。 Python、Ada、Modulaなどの成熟した言語の成功した概念を組み合わせています。***
(引用:[https://nim-lang.org/](https://nim-lang.org/) with Google翻訳)
要はPythonのような構文で,C言語なみに速いプログラミング言語です.普段Pythonを書きながらも速度に不満を持っている僕には夢のような言語であるわけです.

# 高階関数ってなに?
高階関数とは,***関数を引数に取る関数***のことです.
古くはLISPやML系の言語で用いられていましたが,近年の関数型言語の隆盛によって,多くのプログラミング言語にも実装されてきています.例えば,Pythonなどのスクリプト言語や,最近ではJa

元記事を表示

ipythonで開発してたら,scrapyが読み込めなくなった

`scrapy`を使って遊んでいたら,変なエラーが発生して解消するまでの方法をメモしておく

## 症状
`ipython`を使って,開発を行なっていたら,急に次のエラーを吐いた

“`
pyenv: scrapy: command not found
The `scrapy’ command exists in these Python versions:
anaconda3-2019.10/envs/scrapy
“`
ちなみに,condaで`scrapy`という仮想環境でipythonを使っている(と思っていた)
ここが問題になっていることに気がついた

## 対処方法

– まずは,以下のコマンドで`pyenv`のバージョンを確認する.すると,以下のように,分離していることがわかった.
– ここで使いたい`ipython`は,`anaconda3-2019.10/envs/scrapy`を使用する

“`
$ pyenv versions
system
* anaconda3-2019.10 (set by /Users/*******/.pyenv/ver

元記事を表示

conda環境にgensimをインストールする(ついでにmecabもインストールした)

# conda環境にgensimをインストールする

## 結論
– condaでのインストールはやめておいた方が良い
– `pip install gensim`でインストールしてください

## やったこと

言語処理などで便利な`gensim`をインストールする

“`
$ conda install -c anaconda gensim
“`

## 結果

とにかく時間がかかった

### 実行結果

インストールを実行した結果を次に載せておく.めちゃくちゃ時間がかかりました.理由はよくわからない.

“`
$ conda install -c anaconda gensim
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_re

元記事を表示

MacBook Pro でOpenPose

MacBook Proで機械学習、Deep Leaning系の記事を調べていた際、Macで姿勢検出ができるという記事を
いくつか見つけて色々試してみたところ動作したので、備忘録的に書いておきます。

#環境

– MacBook Pro 15in 2018 2.2 GHz Core i7 32GB Memory
– Mojave 10.14.6
– python 3.7.5
– homebrew でpythonとvirtualenv、wgetをインストール

# 設定手順

1.python仮想環境を作成します。

“`
$ virtualenv mppose
“`

2.python仮想環境に入ります。

“`
$ source mppose/bin/activate
“`

3.動作させるために必要なパッケージをインストールします。

“`
$ pip3 install tensorflow ipython configobj keras pillow opencv-python
“`

4.Kerasバックエンド版のOpenPoseのリポジトリをクローンして移動します

元記事を表示

CORESERVER で Python の CGI を動かす

## 概要
– GMOデジロックのレンタルサーバー「コアサーバー」で Python の CGI を動作させる

## 今回の環境
– 料金プラン: ビジネスプラン「CORE-B」 (30日間無料お試しトライアル期間中)
– サーバー: b1.coreserver.jp
– Python 3.6.8

## 設定: CGI 実行ファイルの拡張子を cgi または py にする

.cgi ファイルは最初から CGI として実行できるようになっているので、実行権限をつけて置いておけば良い。

“`
$ ls -l ~/public_html/hello.cgi
-r-xr-xr-x 1 alice hpusers 414 12月 12 20:08 /virtual/alice/public_html/hello.cgi
“`

拡張子を py にしたい場合、 .py ファイルは CGI として実行できるようになっていないので、 CGI として実行されるための設定を記述した .htaccess ファイルを設置する。

“`
$ ls -l ~/public_html/.htaccess

元記事を表示

PyTorchとJupyterLabが使えるDocker環境を構築する

# PyTorch + JupyterLabのDocker環境構築

Deep Learningのフレームワークとして人気が上がっているPyTorchとデータ分析でPythonを使うときに人気のJupyterLab(Jupyter Notebookの後継)を使えるDocker環境の構築をしました。
新しく環境整備をしたので、記事を修正します(2019.12.14)

## 作業の流れ
1. NVIDIA GPUグラフックボードのドライバーやNVIDIA Container Toolkitをインストールする
2. JupyterLabのDockerfileに手を加え、Docker Imageを作成する
3. PyTorch公式のGitHubをもってくる
4. PyTorch公式のDockerfileに2.で作ったDocker Imageをベースに指定するなど必要な変更を加える。
5. PyTorchのDocker Imageをビルドする

—-
## 具体的な手順
### NVIDIA ドライバーやNVIDIA Container Toolkitをインストール
[こちらの記事](h

元記事を表示

Python + ZeepでGaroon SOAP APIからスケジュールの取得

備忘録。

###前回の記事

Python + ZeepでGaroon SOAP APIからユーザー情報取得
https://qiita.com/yamashi6/items/d360546eb4ccf2495951

###参照

Garoon SOAP APIの共通仕様
https://developer.cybozu.io/hc/ja/articles/202228464

予定を検索する
https://developer.cybozu.io/hc/ja/articles/202235474

###ソース

“`Python
from zeep import Client
from zeep import xsd

client = Client(wsdl=’https://(サブドメイン名).cybozu.com/g/index.csp?WSDL’)

# bindしてやらないとスケジュールの取得など使えない
sc_client = client.bind(‘ScheduleService’, ‘SchedulePort’)

header = xsd.Complex

元記事を表示

pythonのbinpackingライブラリーのすゝめ

#binpacking問題とは
説明しよう!binpacking問題とはあるランダムなサイズの品物とそれを詰める同じサイズのビンが複数あり、そのビンの数を最小にしようという問題である。

[英語wiki](https://en.wikipedia.org/wiki/Bin_packing_problem)

ここみりゃわかるだろ(投げやり(日本版は糞

#1次元binpacking問題

oneDpackというのがあります。
anconda promptで

“`python
pip install oneDpack
“`

使い方
capとしてbinのサイズ、itemsに入れるもののサイズを入れます。
capが大きいととても遅くなります。

“`python
from oneDpack import*

cap=60
items=[2,4,5,2,7,4,7,3,7,3,7,43,8,2,4,13,6,4,3,2,4,7,9,10,40,23]
for i in packing(cap,items):
print(i)
print(sum(i))
“`
出力

元記事を表示

Python + RequestsでGaroon REST APIから組織に所属するユーザーの取得

備忘録。
GaroonのRESTの機能、もう少し充実させてほしい。

###参照

Garoon REST APIの共通仕様
https://developer.cybozu.io/hc/ja/articles/360000503306

組織の取得(GET)
https://developer.cybozu.io/hc/ja/articles/360017843172

###ソース
“`Python
import requests

url = ‘https://(サブドメイン名).cybozu.com/g/api/v1/base/organizations/1/users’

headers = {
‘Host’: ‘(サブドメイン名).cybozu.com:443’,
# ‘Content-Type’: ‘application/json’,
# 「ログイン名:パスワード」をBASE64エンコードしたものを値に指定。
# xxxxxxxxxを書き換えること
‘X-Cybozu-Authorization’: ‘xxxxxxxx

元記事を表示

PyQt 入門編

# Qt 5.14 Release!!
いきなりテーマと関係ない話ですみません。
皆さん、Qt 5.14 がリリースされていますよ!!
![スクリーンショット 2019-12-14 22.02.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62136/a837169e-4959-ff53-5520-2ab15686293e.png)
久しぶりに Qt を Install しようとしたところ、気がつきました(実はhermitさんと一緒にいた時に気がついたのですが・・・)。
早速 5.14 を Install してみようかと思いましたが、今回の目的は新機能を使うことでは無く、バインディングツールなどの互換性も考慮すると、LTS 最新の 5.12.6 が無難かと思いました。時間がある時、5.14 もトライしてみようと思います。

# はじめに
今回で7回目の投稿となります、HW 開発者の ynuma です。
簡単に近況を書かせていただきます。

早いもので、娘がもう少しで3歳になります。
先日は七五三の

元記事を表示

PythonでQiita APIを叩いて初心者向け記事を一覧取得したあと、神記事たちを参拝していく

## はじめに

Qiitaの「初心者」タグや「新人プログラマ応援」タグの初心者向け記事は
新人QAエンジニアの私にはとても参考になるものばかり。
ただ残念なことに、個別タグページにはトレンドと新着記事しか載っておらず、
過去の良記事を探しにくい仕様になっています。
本記事では、まずQiita APIを使って初心者向け記事(:=「初心者」OR「新人プログラマ応援」タグのついた記事)を
全て出力するプログラムを作成したのち、次に出力リストの各記事をいいねの多い順に読んでいった結果
「これはとんでもなく参考になる!」と感じた神記事たちを紹介していきます。

*※注:今回はいいね数でフィルタしてますが、あなたの為になった記事はいいね数にかかわらず神記事ですよ!!*

### やりたいこと

1. 初心者向け記事を全部取ってきてCSVに出力する
2. 表計算ソフトでCSVを読み込み、リストを「いいね回数が多い順」に降順ソートする
3. 上から順に参拝する

## プログラムを作る

### どうすれば「初心者向け記事を全部取ってきてCSVに出力」できそうか検討する
シンプルにこんな感じで考えて

元記事を表示

OTHERカテゴリの最新記事