- 1. pythonnetでPythonからDLLを呼び出す
- 2. Atcoder ABC256A-EをPythonで解く
- 3. 【Pandas】DataFrameを結合する方法 | concat / merge / join
- 4. 知識ゼロから始める具体的なプログラミング入門
- 5. Python学習サイトメモ
- 6. Masoniteで登録フォーム(Laravelとの比較)
- 7. GOFデザインパターンをPythonで理解する ~ Creational Design Patterns編 ~
- 8. queueを用いた幅優先探索を今更実装・比較してみた
- 9. Youtube Data APIを使ってカスタムURLを元にチャンネルIDを取得出来るか試してみた
- 10. motoによるSQSキュー(FIFO)のモック作成
- 11. 【LINE WORKS】Pythonでオウム返しBotを作る【API 2.0】
- 12. Python で Amazon Rekognition を動かしてみた
- 13. Meraki MV Sense MQTT を使ってみた
- 14. tkinterを使用して画像変換器を作成した。
- 15. CDKでCloudFront Functionが見つからないエラーの対処
- 16. PythonのPyMuPDFでPDFのContentを編集する
- 17. 0 にごく近い値の数値表現 “非正規化数” とその計算時間について
- 18. 太鼓WebをWindowsで動かす。
- 19. grpc + Python + Authentication で 複数パーティで異なるアクセスコントロールを実装する
- 20. Anaconda環境下にインストールしたPyMOL(Open Source) 起動時にエラー「could not find or load the Qt platform plugin “windows”」
pythonnetでPythonからDLLを呼び出す
今回は以前に業務でPythonファイルからC#DLLを使用しないといけない場面があったのでその時の備忘録です。
# DLL
今回は例として以下のようなコードのDLLを使用します。
“`test.cs
public class Test
{
public static int Addiction(int a, int b)
{
int num;
num = a + b;return num;
}}
“`
簡単な足し算をするプログラムです。
今回はインスタンス化しなくても呼び出せるように静的メソッドを定義しています。# Python
Python 3.7.8使用するDLLが32bitの時はPythonも32bitを使用するようにしてください。64bitのPythonでは32bitのDLLを使用することはできません。
## ライブラリ
題にも書いた通り、pythonnetを使用します
“`bash
pip in
Atcoder ABC256A-EをPythonで解く
# A – 2^N
解説にも書いてある通り。いくつか解き方があります。`2^n`が`1<
【Pandas】DataFrameを結合する方法 | concat / merge / join
## 【はじめに】
Pythonライブラリの「Pandas」の中で、DataFrameを結合する方法はいくつかあります。
今回はその中でも「concat」、「merge」、「join」について、それぞれの違いに触れながら紹介していきます。### 本記事の内容
– pandasのインポート
– csvファイルの読み込み
– 列を取得する
– DataFrameを結合する | concat()
– DataFrameを結合する | merge()
– DataFrameを結合する | join()## 【pandasのインポート】
“`Python
import pandas as pd
“`## 【csvファイルの読み込み】
「1920年から2015年までの全国の人口推移のデータ」を使用します。
“`Python
df = pd.read_csv(‘data.csv’, encoding=’shift-jis’)
df
“`| | 都道府県コード | 都道府県名 | 元号 | 和暦(年) | 西暦(年) | 人
知識ゼロから始める具体的なプログラミング入門
試しに「プログラミング入門」「プログラミング 始め方」で検索したところ、どうやってプログラミングを(無料で)勉強できるか具体的に書いてるページがなかったので(2022年現在)書いてみることにします。
# プログラミング言語とは
プログラミングを始めるにはまずプログラミング言語を選ばなければいけません。プログラミング言語とはコンピュータ(スマホや家電内蔵のものも含む)にどんな動作を行うべきかを記述するためのものです。なぜそんなものが必要なのかというと、コンピュータというのは0と1(より正確には電流のオン・オフ)しか判別できないため、指示するためには「0100001011…」というように書かなければいけないからです。プログラミング言語を使うと人間でも理解できる形でコンピュータに対する命令が書けます。# 最初に学ぶべきプログラミング言語
一口にプログラミング言語と言ってもJava、Python、C#、Goなどたくさんあります。なぜかというと「複数の処理を並列して高速で動かしたい」「複雑なプログラムを書くために機能ごとにまとめられるようにしたい」「既存の言語は記述量が多くエラーも発見
Python学習サイトメモ
模擬試験
https://python-basic.com/
https://study.prime-strategy.co.jp/
Masoniteで登録フォーム(Laravelとの比較)
今回Masoniteで、よくありそうな登録フォームを作成してみました。
Laravelと比較しながら少しだけ見ていきたいと思います。
※controllerとviewだけ。今回はアイテム(item)を登録・編集するイメージのものになります。
また、登録も編集も同一のviewを使用するようにしています。[Laravel Documentation](https://laravel.com/docs/9.x)
[Laravel ReaDouble](https://readouble.com/laravel/9.x/ja/)
[Masonite Documentation](https://docs.masoniteproject.com/)# Controller
### Laravel
“`php:app/Http/Controllers/ItemController.php
use App\Http\Controllers\Controller;
use App\Http\Requests\ItemRequest;
use App\Models\Item;class
GOFデザインパターンをPythonで理解する ~ Creational Design Patterns編 ~
# GOFとは?
GOFとはGang of Fourの略でオブジェクト指向プログラミングにおける再利用性の高いコーディングのパターン、デザインパターンをまとめた4人のプログラマー(Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides)のことを指します。
彼らは「Design Patterns: Elements of Reusable Object-Oriented Software(オブジェクト指向における再利用のためのデザインパターン)」の著者であり、今回はその本の中でまとめられているCreational Design Patterns(生成に関するデザインパターン)についてまとめていこうと思います!Creational Design Patterns(生成に関するデザインパターン)は以下の通りです。
– Abstract Factory
– Builder
– Factory Method
– Prototype
– Singletonこれらのパターンはその名の通り、クラスの生成に関するデザインパターン
queueを用いた幅優先探索を今更実装・比較してみた
少しずつアルゴリズムとデータ構造の勉強をしていきます。
以前もやっていたのですが、割とテキトーに勉強していたので理解したところをきちんとアウトプットしていきます。
学問的にきちんと学んだわけではないので、雑なところもあるとは思いますがそこはご了承ください。## 幅優先探索(BFS)
#### 幅優先探索とは
**[wiki](https://ja.wikipedia.org/wiki/%E5%B9%85%E5%84%AA%E5%85%88%E6%8E%A2%E7%B4%A2)** より引用
> 幅優先探索(はばゆうせんたんさく、英: breadth first search)はグラフ理論(Graph theory)において木構造(tree structure)やグラフ(graph)の探索に用いられるアルゴリズム。アルゴリズムは根ノードで始まり隣接した全てのノードを探索する。それからこれらの最も近いノードのそれぞれに対して同様のことを繰り返して探索対象ノードをみつける。「横型探索」とも言われる。> 幅優先探索は解を探すために、グラフの全てのノードを網羅的に展開・検査する。最良優先
Youtube Data APIを使ってカスタムURLを元にチャンネルIDを取得出来るか試してみた
[Youtube Data API](https://developers.google.com/youtube/v3/getting-started)で特定のチャンネルからアップロードされた動画の情報を取得する場合、対象チャンネルのIDが必要になります。
自分のチャンネルであれば、Youtubeにログインして設定画面からチャンネルIDを確認することが可能ですが、
他人のチャンネルの場合は、対象のチャンネルのURLの末尾を確認するのが一般的だと思います
※YoutubeのチャンネルURLについては、[こちら](https://support.google.com/youtube/answer/6180214?hl=ja&ref_topic=9257109)をご参照くださいhttps://support.google.com/youtube/answer/6180214?hl=ja&ref_topic=9257109
ただし、人によっては「カスタムURL」を設定することで独自のURLを使用している方もいることが分かりました
※カスタムURLの詳細は、[こちら](https://su
motoによるSQSキュー(FIFO)のモック作成
# はじめに
– boto3で実装したSQSメッセージ送信処理のテストコードを書くために、AWSサービスをモックするmotoを使うことにしました。
– テストフレームワークは、pytestを使います。
– その時にはまったポイントをご紹介します。# プロダクトコード
– テスト対象となるプロダクトコードは、以下のようにクラスで実装しました。
“`python:sqs.py
# -*- coding: utf-8 -*-import os
import uuid
import logging
import boto3logger = logging.getLogger()
class Sqs():
def __init__(self):
self.__queue_url = os.environ.get(‘QUEUE_URL’)
self.__sqs_client = boto3.client(‘sqs’)
self.__msg_group_id = “group_id_1”def send
【LINE WORKS】Pythonでオウム返しBotを作る【API 2.0】
# はじめに
LINE WORKS APIの新しいバージョン「[API2.0](https://line.worksmobile.com/jp/pr/20220404/)」がリリースされ、従来のAPI (API1.0) は非推奨化および提供終了が予定されている ([参考](https://jp1-notice.worksmobile.com/view/#/detail-view/571?usess=1&serviceType=12&serviceLanguage=ja_JP))。今回は、PythonによるAPI2.0に対応したBot実装例を、シンプルなオウム返しBotをベースにまとめる。
# ソースコード
具体的な実装については以下を参照。[FastAPI](https://fastapi.tiangolo.com/) をサーバーとして使った。https://github.com/mmclsntr/lw-api-2_0-echo-bot-python-fastapi
以下、実装内容について一部抜粋して解説する。
# 実装解説
– 環境: Python 3.9##
Python で Amazon Rekognition を動かしてみた
# 背景
「家に不在時でも〇〇が家に来たら〇〇を行う」
こんな事ができたらなぁと考える事がありました。例えば
・ヤクルトレディが来たらオートロック解除
・宅配業者ならオートロック解除
・N〇Kならブラックリスト登録
でもどうやって判断するんだ?画像分析ってなんか難しそうやなぁと言うことで今回は、やりたい事の一端に活用できそうな **Amazon Rekognition** を動かしてみます。
また、今後応用できるように **Python** で動作できる様にします。# 流れ
①**Python** 実行
②**Amazon S3** にImageを格納
③**Amazon Rekognition** で要素を分析
こんな流れでいきます。
# 環境
Windows 10 Enterprise 上でWSL2を
Meraki MV Sense MQTT を使ってみた
# 背景
Meraki MVのAPIの中に”MQTT”と記載があった。
何のことか分からなかったので調べると、面白そうなので動かしてみた。# 環境
Windows 10 Enterprise 上でWSL2を動かしています。
Ubuntu、Pythonを利用しています。### Version
“`
$cat /etc/os-release
NAME=”Ubuntu”
VERSION=”20.04 LTS (Focal Fossa)”$python3 -V
Python 3.8.10>wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
“`
# 構成
今回動作確認をした構成図はこちら。
毎度わかりずらいのはすいません☺# 目的
pythonを用いてGUIを操作し、画像変換器を作成します。# イメージ
完成したGUIをキャプチャしてます。画像を選択します。左には、加工前の画像(Base)と右には加工後の画像を(Effect)を表示するようにしています。タブを選択すると、設定してあるいくつかの加工ができるようにしています。![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176158/dfaa44d8-b2e4-f626-158b-57635aba6eba.png)
## ライブラリ
GUI表示、画像処理ライブラリを選んだ背景です。また、モジュールを3つに分けてプログラムを作成しており、その背景について簡単に説明します。### GUI
以前の記事では、PySimpleGUIを使用していたのですが、違うGUIを使用してみたかったので、今回は、tkinterを使用することにしました。
GUIは、tkinterを使用してます。### 画像処理
画像処理は、Pillow, NumPy, OpenCV
CDKでCloudFront Functionが見つからないエラーの対処
## 問題
CDKでCloudFront Functionを作成した状態で、別のリソースを変更した際に下記のエラーが出た。
“`sh
12:02:49 | UPDATE_FAILED | AWS::CloudFront::Function | mycloudfrontfunction911B181C
Resource handler returned message: “Resource of type ‘AWS::CloudFront::Function’ with identifier ‘ap-northeast-1MyCloudFrontFunction6AA8AF07’ was not found.” (RequestToken: 74d6dbad-01af-c5ca-985b-4091c1eddd4a, HandlerErrorCode: NotFound)
“`NotFound?CloudFront Functionの変更は行っていないのに何故だろうと思って調べると下記のissueを見つけた。
[(a
PythonのPyMuPDFでPDFのContentを編集する
## はじめに
とあるフリーソフトで図形を作成し、PDF出力したらWatermarkががっつり入っていて、そのままでは使い物になりませんでした。
とはいえ、PDFの内容がvector形式で記述されていれば、Inkscape(Illustratorの互換ソフト)で個別に編集することで、きれいに取り除くことができます。しかし、何か不備があって複数の図形を作り直した際、すべてのPDFを個別にInkscapeで編集するのが億劫だったので、PythonによるPDF編集を試みました。
## install PyMuPDF
ライブラリとしては、PyMuPDFを利用します。importの際は`import fitz`とします。
“`bash
pip install PyMuPDF
“`他にもPDF関係のライブラリはいくつかあるのですが、特に有名なPyPDF2は日本語がMetadataを含めて入っているとエラーを出して読み込めないのでなしです。
PyMuPDFは中華系ライブラリのおかげか、マルチバイト言語にも優しい設計ですね。## PDFの構造
今回、PythonでPDFを取り
0 にごく近い値の数値表現 “非正規化数” とその計算時間について
# 0 にごく近い値の数値表現 “非正規化数” とその計算時間について
※本記事は, [デノーマルフラッシュの速度改善効果](http://www.katsuster.net/index.php?arg_act=cmd_show_diary&arg_date=20210211) からきっかけを得て執筆しています.
## 浮動小数点数について
コンピュータで小数を扱うとき, 小さな値から大きな値まで幅広く扱えるよう, 浮動小数点方式がよく使われる.
小さな値では, 小さな “ずれ” が相対的に大きな誤差になってしまうため, 高い分解能で表現し,
大きな値では, 小さな “ずれ” は相対的に小さな誤差のため, おおまかに表現している.浮動小数点数の丸め誤差を視覚化したグラフが分かりやすいので引用する.[^1]
![](https://www.researchgate.net/profile/Gael-Deest/publication/321993979/figure/fig2/AS:574194211868672@1513909976420/Maximum-represent
太鼓WebをWindowsで動かす。
## 太鼓ウェブって何だ?
私はプログラムを教えています。生徒が太鼓の達人が大好きで勉強の合間に時間を決めてやっているらしい。聞いてみると自作の曲を作れるらしく超絶技巧を要する曲もあるらしい。なんじゃそれは?自作曲なんて入れてもらえるのかいな?商用ゲームだろ?なになに?太鼓ウェブなるものがある?そりゃナムコがやってんのかいな?何?違う?
よくわかりませんね???
というわけで生徒からカルチャーショックを受けたところで、先生としては若干反撃したくなり太鼓ウェブについて調べる。なるほど、有志が作って運営してるんかいな。ライセンスは?少し揉めそうになったが、一応線引きができている(これも生徒から明確な説明を受けた。彼は優秀だ。)。なるほど、あ、githubにソース公開されてるやんけ。ざっと見たところLinuxなら簡単に構築できそうだな。
「構築してみるかい?」
「やるやる」ということで先生としての面目躍如(?)で生徒も興味を示したんですが、Linuxは彼にとって障壁が高く家にも環境が無いので構築法を覚えても家でやることもできません。何とかWindowsでやれんかな?Pythonや
grpc + Python + Authentication で 複数パーティで異なるアクセスコントロールを実装する
**@kenmaro**です。
普段は主に**秘密計算、準同型暗号などの記事について投稿しています**。
秘密計算に関連するまとめの記事に関しては以下をご覧ください。> – [秘密計算エンジニアを始めて2年半が経った。](https://qiita.com/kenmaro/items/48059dd60f79e80f5ef8)
> – [秘密計算エンジニアを始めて3年が経った。](https://qiita.com/kenmaro/items/a1d90a074d552b7bf886)## 概要
今回の記事は、
https://qiita.com/kenmaro/items/90b601be08256b17ff45
の続編となります。前回は、
**grpc をPython で使う際**の
– **SSL/TLS をgrpcに実装する**
– **SSL/TLS + token によるAPIへのアクセスコントロールを実装する**というシナリオでチュートリアルを行いました。
今回は、前回の2つ目の
– **SSL/TLS + token によるAPIへのアクセス
Anaconda環境下にインストールしたPyMOL(Open Source) 起動時にエラー「could not find or load the Qt platform plugin “windows”」
## 環境
– Windows 11
– Anaconda
– Python 3.9.12
– Anaconda-Navigator 2.1.4
– conda 4.13.0## やったこと
すでにconda-forgeがチャンネルに入っている場合は省略
~~~
conda config –add channels conda-forge
~~~
ここから本題
~~~
conda install pymol-open-source
## Solving environment後 Pythonなどのバージョンに合ったものが選ばれる
> Proceed? ([y]/n) ## yと答えるか何も打たずにEnter
> done
~~~PyMOLの起動
~~~
pymol
> could not find or load the Qt platform plugin “windows” in “”
~~~
というエラーが出た
どうやらPyQt5がプラグインを探せないエラーっぽい## 試したけどダメだったこと
Anacondaをインストールした際にデフォルトで付いてくる