- 1. 仮想環境(venv)について
- 2. PythonでUIをつくる【3Dモデルを表示する】
- 3. k-meansを改良したk-means++を説明する
- 4. Python用 高速動画入出力クラス FFStream
- 5. ChatGPT retrieval plugin + LangChainを試すメモ
- 6. xpathの基本と上手に指定するコツのまとめ
- 7. データ漏洩しないためにやること(.env, .gitignore)
- 8. よく使うチートシート
- 9. Nuitkaでpythonをexe化(メモ)
- 10. SQLAlchemyで取得したレコードを動的にコピーして新しいレコードとして挿入する方法
- 11. 【cron】Pythonスクリプト(selenium)を定期実行したい…のに動かない??
- 12. 【光る君へ】藤原道長の家系図を rdflib で書く
- 13. 【Python】累計学習時間と今日の学習時間を合計するプログラムを作った
- 14. 【Django x JS】固定のSQLクエリとCSV形式のデータを合体させてSQLファイルとしてダウンロードする方法
- 15. 2024年版 reCAPTCHAの突破(2captcha)
- 16. Databricks から Python にて Azure SQL Database を操作する方法
- 17. Pythonを使ったPDFからSVGへの変換
- 18. Pythonの内包表記について
- 19. 投稿記事情報の一覧を表示するスクリプト
- 20. [Python] 新卒エンジニアが人手不足の案件にぶち込まれて学んだこと・思ったこと
仮想環境(venv)について
## はじめに
仮想環境(venv)についてに関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
## 🦁**結論**🦁
**システムのPython環境を汚染せずに、必要なパッケージのインストールと管理ができて、互換性の問題を避けやすくなるシステム**:::note info
押さえておくべき点
* venvは Pythonでの仮想環境を作るモジュール
* Python3.3以降は標準ライブラリに含まれてる
* 仮想環境は異なるプロジェクト間での依存関係の衝突を防ぐことができる
* **プロジェクトごとに異なるライブラリのバージョンを管理できるため、互換性の問題を避けやすくなる**
* **システムのPython環境を汚染せずに、必要なパッケージのインストールと管理が可能**
* **複数のプロジェクトを同時に進める場合でも、それぞれの依存関係を清潔に保つことができる**
:::
*
PythonでUIをつくる【3Dモデルを表示する】
![Feb-03-2024 15-07-25.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/824e0556-ae03-23c0-2fbd-ce134584bf4a.gif)
# 必要なライブラリをインストール
“`shell
pip3 install pyqt5
pip3 install pyqtgraph
“`PythonでGUIをつくるライブラリや3Dを表示するライブラリはいろいろありますが、今回は
pyqt5(GUI)
pyqtgraph(3D表示)
を使います。# 3Dを表示できるウィジェットを表示
画面を出す。
“`python
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtGui import QPixmap
import pyqtgraph.opengl as gl
imp
k-meansを改良したk-means++を説明する
# はじめに
先日、代表的なクラスタリング手法であるk-meansについて解説記事を書きました。https://qiita.com/sasshi_i/items/2af0a76b95176437f923
しかし、k-meansには問題点があり、今回はその問題点に対応したk-means++という手法について説明します。
# k-meansの問題点
k-meansは最初のステップでクラスタの中心(セントロイド)をランダムにデータ点から選択します。ランダムにデータ点を選んでいることから以下のような問題が発生します。* 初期値によって最適なクラスタリングが行われない可能性がある
* 初期値によって結果の収束までに時間がかかる可能性がある# k-meansの問題点に対応したk-means++
## k-means++とは?
k-meansの初期値選択に改良を行ったクラスタリング手法です。初期のk個のクラスタはなるべく離れている方が良いという考えに基づいてセントロイドを配置します。## k-means++のアルゴリズム
k-means++は以下の手順でクラスタリングを行い
Python用 高速動画入出力クラス FFStream
# はじめに
FFStreamはPython上で動画を高速に入出力する機能をまとめたクラスです。
主に動画から画像を取得して AI等で処理した結果を再び動画にする目的で使います。
最初はOpenCVやPyAV等を使っていましたが、動画の処理がボトルネックになる(AIの処理より動画の処理に時間がかかる)ケースが出てきたのでffmpeg-pythonを使う方法を試みたところ大幅な改善がみられたので、クラス化しました。:::note info
## 特徴
– 処理が速い (ベンチマークを後日掲載します)
– 動画の音声をコピーできる
– 画質やファイルサイズの調整ができる
– PyTorchで扱いやすい Tensor[C,H,W]形式のRGBフレームに対応
::::::note info
## 主な使用例
– [人物抽出を使ったグリーンバック動画作成 (rvm_alpha)](http://amalabo.blog35.fc2.com/blog-entry-420.html)
– [超解像を使って動画の画像サイズを倍にする (swin_video)](https://qiita.
ChatGPT retrieval plugin + LangChainを試すメモ
# はじめに
前回までにConohaVPSに構築したPostgreSQL+pgvector+ChatGPT retrieval pluginをローカルPCからLangChainで試します。
社内文書の検索やQAの無人化などに使えればと考えて検証をしました。# 環境について
ConohaVPSのretrieval pluginには自宅のNASを経由してSSHトンネルで接続しています。
Anaconda上にPython 3.11環境を構築し、その上でJupyterNotebookを利用しています。
このあたりの導入については、他のブログなどを参考にしてください。# LangChainを試す
まずは必要になるパッケージを導入します。
“`
!pip install langchain
!pip install langchain-openai
!pip install openai
“`
次にOpenAIのAPIキー、retrieval pluginのBearerトークンを設定します。
“`
import os
os.environ[“OPENAI_API_KEY”] = “s
xpathの基本と上手に指定するコツのまとめ
## はじめに
xpathの基本と上手に指定するコツのまとめに関しての**備忘録**です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
## 🦁**結論**🦁
### find_elements_by_xpath(xpath)
### 基本構文を使って条件を適切に行うことで修正を減らすことができる。:::note info
押さえておくべき点
* xpathはHTML文書、XMLなどに要素、属性などにアクセスするための言語
* pathを指定する際に「/」が1つ→ルートをしての絶対パスになり、「/」が2つだと文書内の任意のpathになる。
* 「.」が一つだと現在の要素、「.」が2つだと親要素を示す。
* @を利用して属性を選択(@idなど)
* 「*」によりすべてのものを選択できる(@*これは全ての属性)
* 条件選択する場合は[]を使う。
:::
## 基本構文
### 基本は条件式で行う。
“`python:sample.py
elements = driver.find_el
データ漏洩しないためにやること(.env, .gitignore)
## はじめに
データ漏洩しないためにやることに関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇私はGitHubを使ってますが(皆さんも使ってるとは思いますが)、データを更新するたびに、アップロードしてはいけないファイルがないか?APIKEYなどが記載されてないか?
また、誤ってアップロードしてしまって、各社から通知がくるみたいなことが度々ありました。これに対しての対策を学ばせていただき、知識定着化のためアウトプット。
## 🦁**結論**🦁
.envファイルと.gitignoreファイルを活用して行う。:::note info
押さえておくべき点
* gitignoreにアップロードしないデータを指定する
* envファイルに鍵になるもの、URLなどを保管する
:::
***:::note warn
利用シーン
* 全てのシーンで利用。
:::
***:::note alert
注意点
* envファイルはは機密情報を多く含んでいるため、別
よく使うチートシート
[Python](#python)
[TypeScript](#typescript)
[React](#react)
[Javascript](#javascript)
[外部API](#外部api)# Python
## FastAPI
https://qiita.com/raisack8/items/6bd25f34db45e3fdab31## Rest Framework
https://qiita.com/raisack8/items/ade78eabd06b2073d738
## Pandas
https://qiita.com/raisack8/items/8d13ecefe7d1efe35659
## SQL Alchemyhttps://book.st-hakky.com/hakky/sqlalchemy-crud/
### SQL
https://qiita.com/raisack8/items/c3c18f6a0f960378a08b# TypeScript
# React
https://qiita.com/raisack8/items/
Nuitkaでpythonをexe化(メモ)
基本的にはこれらの記事を参考にしました。
実行の部分で手こずったので注意点をまとめます。↓基本的にはこの記事を見ればいい。
https://qiita.com/yulily/items/b97dc34615eac2be7157
↓実行の部分に関してはこちらを参考にした。
# インストール
“`
pip install nuitka
“`# 実行
exe化したいpyファイルまで行く。
“`
cd フルパス
“`
基本の形
“`
python -m nuitka ファイル名.py
“`
何回かyes/noを聞かれるのでyesを選択しましょう。
僕はこの形でないと動かなかったのでそこを忘れないように記事を書きましたね。# オプション
–windows-disable-console:黒い画面を出さない
–standalone:Python環境がないところでも動くようにする
–onefile:ひとつのexeファイルにまとめる
SQLAlchemyで取得したレコードを動的にコピーして新しいレコードとして挿入する方法
SQLAlchemyで取得したレコードをコピーして新しいレコードとして挿入する際、
カラムが多いとレコードインスタンスを作成したときにカラムごとに代入していくのがだるいので動的に値をセットできるようにする際の議事録です。“`python
# 既存のレコードを取得
existing_record = session.query(YourModel).filter(
YourModel.id == record_id
).first()# 新しいレコードインスタンスを作成
new_record = YourModel()# 既存のレコードから新しいレコードへ属性をコピー
for column in YourModel.__table__.columns:
setattr(new_record, column.name, getattr(existing_record, column.name))# IDや他の一意性制約があるカラムの値を削除または変更
new_record.id = None # IDが自動生成される場合、Noneに設定# 新しいレコ
【cron】Pythonスクリプト(selenium)を定期実行したい…のに動かない??
# 目次
[目的](#目的)
[結論](#結論)
[crontabって?](#crontabって?)
[設定してみると…](#設定してみると…)# 目的
先日、cronでseleniumを用いたPythonのスクリプトを定期実行したかったのですが、なかなか沼にハマったため手順を少しまとめておきます。
# 結論
DISPLAYを記述してあげましょう。
# crontabって?
簡単にいうとUNIX系のOSで使える、定期実行のための便利なコマンドです。
`crontab -e` コマンドで設定できます。
“`bash
$ crontab -e
“`
この辺の操作は調べたらいくらでも出てくると思うので割愛します。# 設定してみると…
適当にPythonのスクリプトを書いて設定してみます。
“`python
import datetime
now = datetime.datetime.now()
date_string = now.strftime(“%Y-%m-%d %H:%M:%S”)
print(date_string)
【光る君へ】藤原道長の家系図を rdflib で書く
おはこんばんちわ。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ rdflib」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。
—
### **assistant**:
おはようございます、またはこんばんは。毎度のことながら、お招きいただきありがとうございます。今日はPythonとrdflibについて話しましょう。
まず最初にrdflibとは何かを説明します。rdflibは、PythonでRDF(リソース記述フレームワーク)を扱うためのライブラリです。RDFというのは、情報を「主語、述語、目的語」の形式で表現するもので、主にウェブ上で情報を構造化して提供するための形式です。
rdflibを使うと、Python上でRDF形式のデータを作成、変換、操作などを行うことができます。さらにSPARQLというクエリ言語を使って、RDFデータから情報を抽出することも可能です。これらはオープンデータ等の公開や構造化データの処理に利用されます。
なおrdflibを使うにはPythonをインストールした上で、`
【Python】累計学習時間と今日の学習時間を合計するプログラムを作った
## はじめに
私が在籍しているHappiness Chainというプログラミングスクールでは、学習した日に日報を提出します。日報には今日の学習時間と、**入会してからの累計学習時間**を記入します。
この累計学習時間を毎回計算するのが面倒だったので、先日、計算用のシェルスクリプトを作りました。
https://qiita.com/wsigma21/items/3b9c788270e56532fbd9
このシェルスクリプトでは、最新の累計学習時間をテキストファイルにリダイレクトして上書きしています。
これを見た他の受講生の方に「学習時間の積み上げが可視化できるように、上書きではなく**テキストファイルに追記していく**形式
【Django x JS】固定のSQLクエリとCSV形式のデータを合体させてSQLファイルとしてダウンロードする方法
# 概要
Djangoを使用して、固定のSQLクエリとCSV形式のデータからなるダウンロード可能なSQLファイルを生成するコードを実装したので、紹介します。# サンプルコード
“`py
from django.http import HttpResponse
import csv# 任意のCSVデータをリストに格納。別モジュールで取得する処理を実装するなりDBからデータ取得するなり
data_export_list = [
(1, “hogehoge”),(2,”foofoo”)
]response = HttpResponse(content_type=’text/sql’)
response[‘Content-Disposition’] = ‘attachment; filename=”data_sql.sql”‘
print(response)
#writer = csv.writer(response, delimiter=”\t”)
writer.write
2024年版 reCAPTCHAの突破(2captcha)
## はじめに
reCAPTCHAの突破(2captcha)に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
# 🦁**結論**🦁
**reCAPTCHAを突破するために「2captcha」を使って回避します。**## **前提**🙊
「2captcha」のアカウント作成して「APIKEY」を取得
「2captcha」にチャージ
https://2captcha.com/【流れ】
サイトにアクセス
→「reCAPTCHA」が出現
→「reCAPTCHA」が出現したサイトの「data-sitekey」を取得(reCAPTCHA近くにある)
→「サイトURL」「data-sitekey」「2captchaのAPIKEY」この3つを「2captcha」にリクエスト。
→「2captcha」が「reCAPTCHA」を代理で解除
→「reCAPTCHA」を解除することで「トークン」が発行
→「2captcha」からのレスポンスで「トークン」を取得
→サイ
Databricks から Python にて Azure SQL Database を操作する方法
## 概要
Databricks から Python にて Azure SQL Database へ下記表の方法により実行する方法を共有します。Spark dataframe (jdbc) 経由で操作する方法にて、`prepareQuery`オプションにて DDL 等の実行できましたが、継続的に実行可能であることが保証できないため、本番環境での利用をおすすめしません。
| # | 操作方法 | 事前準備 |
| —- | ———————————— | ————————— |
| 1 | Spark dataframe (jdbc) 経由で操作 | 特になし |
| 2 | pyodbc にて操作 | ODBC を事前にインストール |
| 3 | pymsql にて操作
Pythonを使ったPDFからSVGへの変換
SVG(スケーラブル・ベクター・グラフィックス)とPDF(ポータブル・ドキュメント・フォーマット)は、二つの一般的なファイル形式です。SVGはXMLベースのベクターグラフィックス形式であり、ウェブ上で表示やインタラクティブな操作に使用されます。PDFはクロスプラットフォームのドキュメント形式であり、元のレイアウトとフォーマットを保持し、印刷や共有に使用されます。
PDFドキュメントをSVGファイルに変換することで、PDFドキュメントをウェブページに埋め込んだり、ベクターグラフィックスの編集を行うことができます。また、SVGはPDFドキュメントよりもファイルサイズが小さく、高速な読み込みと表示に適しています。
以下では**Pythonコードを使用してPDFドキュメントをSVGファイルに変換する方法**について説明します。この記事では以下の内容が含まれています:– **[変換方法の紹介](#変換方法の紹介)**
– **[Pythonを使用したPDFからSVGへの変換](#pythonを使用したpdfからsvgへの変換)**
– **[Pythonを使用して指定されたPDFページ範囲を
Pythonの内包表記について
# Pythonの内包表記についていろいろ書いてみた。
2重にしたり、3重にしたりすることもできる。
1行でかけるのはとてもメリットがあることだと思う。– プログラム
“`py
list_a = [ i*i for i in range(0,11)]
print(list_a)
“`– 実行結果
“`py
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
“`– プログラム
“`py
list_b = [ i for i in range(0,20)]
print(list_b)
“`– 実行結果
“`py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
“`– プログラム
“`py
list_c = [ i for i in range(0,20,2)]
print(list_c)
“`– 実行結果
“`py
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
“`– プログラム
`
投稿記事情報の一覧を表示するスクリプト
Qiita CLI ディレクトリ以下にある記事(.mdファイル)の一覧を使用した情報を出力します。
Qiita CLI 初期化(
npx qiita init
)後の public 以下が id ファイルが多数(記事の粗製乱造が原因)だったので、内容を把握するために作りました。https://github.com/ikiuo/qiita-cli-script
**実行例(1)** : “3D” タグの付いた記事の一覧を出力する
“`
$ ./qcarticle.py –tag 3D
0292a58993c4e6d14f2d.md 15157 2023/01/21 22:02:11 — ‘正多面体のデータ(厳密値)’ (3D,Mathematica,正多面体)
11ae22df25279d731f70.md 2506 2021/07/23 21:25:53 — ‘正多面体の双対性と共通値’ (3D,正多面体)
1f8d3c8e799cb2a242f9.md 7739 2023/07/12 14:06:34 —
[Python] 新卒エンジニアが人手不足の案件にぶち込まれて学んだこと・思ったこと
(注)Python初心者が書いている記事です。記述内容はなるべく裏を取るようにしていますが、誤りを含む可能性があります。ご了承ください。
# はじめに
誤解を招きそうなタイトルですが、この記事は「炎上しそうな案件にいきなりぶっ込まれた新卒エンジニアが色々あがいて圧倒的成長をしたぜ!!!」的な話**ではない**です。# じゃあ何の話なのよ
もっぱらPythonの文法とかの話です。
プロジェクトの進め方とか新卒エンジニアが炎上してる仕事に取り組む際の姿勢とかその手の話はゼロです。(そもそも炎上案件ではない)
「じゃあ公式ドキュメントなり解説書なり読んだ方がええやん!」というツッコミが来そうですが、それでもこの記事を書いている理由は2つあります。– 自分用の備忘録として
– 自分が学んだ内容を後から自分で見返すため
– 学んだ時に個人的に抱いた感想なども記録しておきたかった
– 初心者はこういう所に躓いたり、目新しさを感じたりするんだよ、という共有
– 「初心者の視点を提供する」という意味でも何かの役に立ったら良いな、と思っています。
– IT系の経験