- 1. 地域インターネットレジストリデータをネットワークアドレスに変換する
- 2. 【selenium】pythonのseleniumを使いやすくするためのクラス作成
- 3. テキストインターフェイス By Python
- 4. 【個人開発】カレンダーの予定ごとにチャットすることができるアプリ開発 【Next.js, TypeScript, Python, Flask, Docker】
- 5. 特許情報を用いたOllamaモデルの性能評価:llmとEmbeddingの違い
- 6. paizaラーニング問題集「【全探索 2】コップの水」を、解説例に基づいて解いてみた
- 7. 画像にモザイクをかける方法を覚えました
- 8. 余ったラズパイの使い道備忘録
- 9. paizaラーニング問題集「【全探索 1】高い寿司を食いたい!」を、解説例に基づいて解いてみた
- 10. 【初心者向け】pytestの基本と使い方を解説
- 11. paizaラーニング問題集「【全探索 2】コップの水」を解いてみた
- 12. scoop pytyhon + scoop pipxでpoetryがインストールできなかったとき
- 13. ネストの深いオブジェクトの差分表示
- 14. Flask + SQLAlchemyで音楽共有SNSを作る – アプリケーション起動編
- 15. Flask + SQLAlchemyで音楽共有SNSを作る – バックグラウンドジョブスケジューリング編
- 16. Flask + SQLAlchemyで音楽共有SNSを作る – 日次タスク自動化編
- 17. Flask + SQLAlchemyで音楽共有SNSを作る – アルバムアートAPI編
- 18. Flask + SQLAlchemyで音楽共有SNSを作る – Spotify API連携編
- 19. Flask + SQLAlchemyで音楽共有SNSを作る – メッセージ送信機能編
- 20. Flask + SQLAlchemyで音楽共有SNSを作る – ユーザープロフィールページ編
地域インターネットレジストリデータをネットワークアドレスに変換する
## ネットワークアドレスへの変換方法
前回投稿で **PostgreSQLのネットワークアドレス型を活用すると不正アクセスしたホストの国コード検索が簡単になること**を紹介いたしました。
https://qiita.com/pipito-yukio/items/79d5f84bb8b3ed3c8171
また下記の投稿では、**地域インターネットレジストリ(RIR)データをダウンロードしテーブルインポート用の CSV ファイルを作成するシェルスクリプト** も紹介しました。
https://qiita.com/pipito-yukio/items/147f7b2f42ad9fc1dbd0
**本記事では地域インターネットレジストリデータから作成したデータベースインポート用のCSVファイルの開始IPアドレスとIP件数からネットワークアドレス (cidr形式) に変換した CSV ファイルを出力する python スクリプトを紹介いたします。**
地域インターネットレジストリ (APNIC) よりダウンロードしたファイルの中から **IPv4 アドレスの割り当て済み (allo
【selenium】pythonのseleniumを使いやすくするためのクラス作成
# はじめに
selenium を使いやすくするためのクラス(Seleniumコントローラー)を作成してみました。
selenium の利用初心者です。試しに「[Seleniumを使った楽天ウェブ検索での自動検索](https://note.com/mugi_cat/n/n287f1defc8a3)」を参考に自分のローカル環境で実行してみようと考えて、試行錯誤しました。
参考を作成された当時(2020年2月11日)と現状(2024年10月17日)にて、楽天ウェブの挙動やseleniumのAPIが変わっていたり、実はいろいろとお作法があるっぽので、以下の通り対応しました(対応中です)。# 動作環境
VScode上のJuypiterNotebookで動作してます。下記の要件を満たせば、どこでも動作可能です。
– Python 3.12.1
– selenium 4.25.0# 使用例:Pythonスクリプト
“`
# seleniumコントローラー生成=ブラウザ開く
ctrller = selenimuContorller()# 楽天ウェブ検索
ctrller.ge
テキストインターフェイス By Python
# Cursesのクラスライブラリを書いてみた。
CURSESのクラスライブラリを書いてみました。
[https://github.com/kawamo55/curses](https://github.com/kawamo55/curses)
上記URLでソース公開中!# サンプルプログラム
“`ct03
#!/usr/bin/python3import time as tm
from curlib import lcurscl=None
#
# ——— Menu Data ——–
mbas = [‘+—————————————-+’,
‘| |’,
‘| |’,
‘| |’,
‘|
【個人開発】カレンダーの予定ごとにチャットすることができるアプリ開発 【Next.js, TypeScript, Python, Flask, Docker】
## 自己紹介
こんにちは!文系大卒のりょま(25歳)です。
私はフルタイムでの就業経験はありませんが、ソフトウェアエンジニアを目指して自己学習を進め、プロジェクトを通じて実践的なスキルを身に付けてきました。今回開発したアプリ「Chatendar(チャテンダー)」は、これからの就職活動に向けたポートフォリオとして活用する予定です。
## はじめに
![cc-put-event.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361410/621e9279-6ae4-5468-3597-f1245405f0ae.png)今回は、私が開発したアプリ 「Chatendar(チャテンダー)」 をご紹介します。Chatendarは、カレンダーとチャットを融合させた、イベントや予定ごとの情報管理に特化したアプリです。友達やチームメンバーとチャットしながらイベントの詳細を決め、そのままイベント情報に反映させることができます。
「チャットで決めた重要な予定や詳細を、過去のメッセージから探すのは面倒だ」と感じ
特許情報を用いたOllamaモデルの性能評価:llmとEmbeddingの違い
![aozora.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/28600395-305e-c9dd-257e-c338c12cdbd2.jpeg)
# はじめに
以前、私の投稿で**Ollama**の**llm**モデルと**embedding**モデルを使って、自分のPCで**RAG**(Retrieval-Augmented Generation)を実現したことについて書きました。
https://qiita.com/ogi_kimura/items/7e2e00049ba14aca716a
https://qiita.com/ogi_kimura/items/3740e300e946b33bae00
その後、@SNAMGNさんから貴重なアドバイスをいただき、**Ollama**にはさまざまなモデルが存在することを教えていただきました。私自身も確認したところ、確かに多くのモデルがあることがわかりました。
そこで今回は、**Ollama**に登録されている**llm**と
paizaラーニング問題集「【全探索 2】コップの水」を、解説例に基づいて解いてみた
https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__a_cup_of_water
▼解説例の考え方
bit全探索と呼ばれる手法を使用すると、すべての小さなコップの組合せを求めることができます。以下に概要を示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881331/6ea4d65b-f604-29a0-c7d7-1968faa50004.png)
▼コード
“`py
########## 処理0(準備) インプット,リスト定義 ###########N,K = map(int,input().split())
w = [0]*N
for i in range(N):
w[i] = int(input())# max_ml: 大きなコップに入れられる水の最大量を格納する変数
max_ml = 0# max_ml: 小さなコ
画像にモザイクをかける方法を覚えました
https://www.pixiv.net/artworks/97331358
こちらを可能な限り縮小してから元のサイズに戻したら
![HonamiKotoMosaic.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880421/92f68889-1bc7-3adc-cf70-9030d8862fb6.jpeg)
こうなりました。個人的には満足です。
なぜ作ったかというと、文化祭のポスターで、イラストを描く人とは別に、私がレイアウトを担当していて、全体の配色を考える時に一回イラストをガビガビにしておきたいな、と思ってです(イラストはまだ貰ってないので、穂波殊のイラストで試しました。元の画像の原型が残ってる画像もありますがそちらは上げるのを控えさせていただきます)。Google Colaboratoryでやったんですが、ファイルを空にしてから画像を作る使用にしちゃったんですが、いくつも作れた方が良かったな、と思ってます。ポスターの締切が近いのでそれはまた今度にしようと思っています。
余ったラズパイの使い道備忘録
## 備忘録です
1・学校塾その他諸々から帰ってきてボタンを押したら「ただいま」が自動的に親のLineに届く装置
参考→https://chatgpt.com/share/67107692-6a20-8005-89d3-c94fcd1ec23d
※おれはPythonができないのでぜーんぶGPT任せです
必要なもの→ラズパイ、タクトスイッチ、抵抗10kΩ、ブレッドボード、ジャンパーワイヤ、Wi-fi2・時計と天気を表示するデジタルサイネージ
参考→https://qiita.com/Mikeinu/items/450ea67f47f3b6688319
必要なもの→LEDディスプレイ、HDMI多分また付け足します
paizaラーニング問題集「【全探索 1】高い寿司を食いたい!」を、解説例に基づいて解いてみた
https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__get_richer_sushi
▼解説例の考え方
連続するK枚の寿司を、P[(i+j)%N] (j=0,1,…K-1)で表現する考え方です。以下に例を示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881331/cc02a437-e9f5-fdd5-6517-d8a04d046cb6.png)
▼コード
“`py
########## 処理0(準備) インプット,リスト定義 ###########N,K = map(int,input().split())
P = [0]*N
for i in range(N):
P[i] = int(input())# tmp_total: 連続するK枚の寿司の合計金額を格納する変数
tmp_total = 0max_prime
【初心者向け】pytestの基本と使い方を解説
# はじめに
この記事では、Pythonのテストフレームワーク「Pytest」の基本的な使い方について、初心者向けに解説します。
テストを書くことでコードの品質を向上させ、バグを早期に発見できるため、品質を向上させることができます。**pytestの公式サイトへのリンク**
https://docs.pytest.org/en/stable/
# 目次
**[1.Pytestとは](#pytestとは)**
**[2.Pytestのインストール](#pytestのインストール)**
**[3.簡単なテストを書いてみる](#簡単なテストを書いてみる)**
**[4.例外のテスト](#例外のテスト)**
**[5.オプション](#オプション)**
**[6.パラメータ化](#パラメータ化)**
**[7.フィックスチャー](#フィックスチャー)**
**[8.前処理と後処理](#前処理と後処理)**
**[9.mock](#mock)**# Pytestとは
**Pytest** とは、Python用のオープンソースのテストフレーム
paizaラーニング問題集「【全探索 2】コップの水」を解いてみた
https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__a_cup_of_water
▼考え方
この問題を解くために私が考えた内容1.~3.を以下に示します。
1.N個の小さなコップの組合せをすべて求め、それぞれの容量(ml)を計算します。その容量の中でX[ml]を超えないかつ最も大きい容量を出力します。
2.コップの組合せを求めるために、itertoolsというモジュールを使用します。以下に使用例を示します。
“`py
import itertoolsw = [30,40,50]
print(list(itertools.combinations(w,1)))
# [(30,), (40,), (50,)] → 1個の小さなコップの組合せすべてprint(list(itertools.combinations(w,2)))
# [(30, 40), (30, 50), (40, 50)] → 2個の小さなコップの組合せすべてprint(li
scoop pytyhon + scoop pipxでpoetryがインストールできなかったとき
`pipx install poetry`を実行したときにpythonが見つからないという旨のメッセージが出てpoetryをインストールできませんでした。
その前までは[Microsoft Storeのpython](https://apps.microsoft.com/detail/9ncvdn91xzqp)をインストールして使っており、それをアンインストールして[Scoop](https://scoop.sh/)にまとめようとしました。
とりあえず、以下の手順で解決しました。
1. pythonと検索して引っかかる、削除してもよさそうなレジストリを削除する
1. `%appdata%`のキャッシュを消しまくる
1. ユーザーフォルダの`pipx`フォルダを削除する今思えば、`pipx`フォルダの仮想環境で元のpython実行ファイルを見つけられないことが原因で、`pipx`フォルダを削除するだけでよかったのかもしれません。
やはりmac
ネストの深いオブジェクトの差分表示
## 目的
ネストの深いオブジェクトの差分をわかりやすく比較表示してhtml出力するpythonのサンプルコードを作成してみました。## 全体の流れ
1. **HTML生成**: `generate_html` 関数を使用して、Pythonのデータ構造(辞書やリスト)をHTML形式の文字列に変換します。
2. **差分の検出とハイライト**: `diff_objects` 関数が2つのオブジェクトを比較し、差分を検出しながらHTML文字列を生成します。差分は追加、削除、変更としてハイライトされます。
3. **非表示部分の処理**: 深くネストされた部分など、差分がない部分を “…” で簡略表示するために、`remove_hidden_content` 関数が使用されます。
4. **行番号の追加**: `add_line_numbers` 関数を使用して、表示されたHTMLに行番号を追加します。
5. **差分の集計表示**: 追加、削除、変更の数をカウントし、HTMLのトップに集計表として表示します。
6. **HTMLファイルの出力**: 最終的なHTML内容をファイル
Flask + SQLAlchemyで音楽共有SNSを作る – アプリケーション起動編
## はじめに
前回の記事では、バックグラウンドジョブスケジューラーの設定について解説しました。今回は、Flaskアプリケーションの起動部分、具体的にはメインスクリプトの実装について詳しく説明します。
## メインスクリプトの実装
以下に、Flaskアプリケーションを起動するメインスクリプトの実装コードを示します:
“`python
from app import app, dbif __name__ == ‘__main__’:
with app.app_context():
db.create_all()
app.run(debug=True)
“`## 機能の詳細解説
1. **メインスクリプトの判定**
“`python
if __name__ == ‘__main__’:
“`
– このスクリプトが直接実行された場合にのみ、以下のコードブロックを実行します。
– これにより、このファイルが他のスクリプトからインポートされた場合に、以下のコードが自動的に実行されることを防ぎます。2. *
Flask + SQLAlchemyで音楽共有SNSを作る – バックグラウンドジョブスケジューリング編
## はじめに
前回の記事では、日々の楽曲をリセットする関数の実装について解説しました。今回は、この関数を定期的に実行するためのバックグラウンドジョブスケジューラーの設定について詳しく説明します。
## バックグラウンドジョブスケジューラーの設定
以下に、APSchedulerを使用したバックグラウンドジョブスケジューラーの設定コードを示します:
“`python
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.cron import CronTrigger
from app.tasks import reset_daily_songsscheduler = BackgroundScheduler()
scheduler.add_job(
func=reset_daily_songs,
trigger=CronTrigger(hour=4, minute=0),
id=’reset_daily_songs_job’
Flask + SQLAlchemyで音楽共有SNSを作る – 日次タスク自動化編
## はじめに
前回の記事では、アルバムアート取得のAPIエンドポイントの実装について解説しました。今回は、アプリケーションの日次メンテナンス作業を自動化する機能、具体的には日々の楽曲投稿をリセットする関数の実装について詳しく説明します。
## 日々の楽曲リセット関数の実装
以下に、日々の楽曲投稿をリセットする関数の実装コードを示します:
“`python
from datetime import date, datetime, timedelta
from app import app, db
from app.models import DailySongdef reset_daily_songs():
with app.app_context():
yesterday = date.today() – timedelta(days=1)
DailySong.query.filter(DailySong.date_posted <= yesterday).update({'is_current': False})
Flask + SQLAlchemyで音楽共有SNSを作る – アルバムアートAPI編
## はじめに
前回の記事では、Spotify APIを使用してアルバムアートを取得する機能の実装について解説しました。今回は、この機能をアプリケーションの他の部分から簡単に利用できるようにするための、APIエンドポイントの実装について詳しく説明します。
## アルバムアート取得APIエンドポイントの実装
以下に、アルバムアートを取得するAPIエンドポイントの実装コードを示します:
“`python
from flask import jsonify
from app import app
from .spotify_utils import get_album_art # 前回実装した関数をインポート@app.route(‘/get_album_art/
/ ‘)
def get_album_art_api(artist, title):
album_art_url = get_album_art(artist, title)
return jsonify({‘album_art_url’: album_art_url})
`
Flask + SQLAlchemyで音楽共有SNSを作る – Spotify API連携編
## はじめに
前回の記事では、メッセージ送信機能の実装について解説しました。今回は、アプリケーションの視覚的な魅力を高めるために、Spotify APIを使用してアルバムアートを取得する機能の実装について詳しく説明します。
## Spotify APIを使用したアルバムアート取得機能の実装
以下に、Spotify APIを使用してアルバムアートを取得する関数の実装コードを示します:
“`python
import requestsdef get_album_art(artist, title):
client_id = ‘your_spotify_client_id’
client_secret = ‘your_spotify_client_secret’auth_response = requests.post(‘https://accounts.spotify.com/api/token’, {
‘grant_type’: ‘client_credentials’,
‘client_id’: client_
Flask + SQLAlchemyで音楽共有SNSを作る – メッセージ送信機能編
## はじめに
前回の記事では、ユーザープロフィールページの実装について解説しました。今回は、ユーザー間のコミュニケーションを促進するメッセージ送信機能の実装について詳しく説明します。
## メッセージ送信機能の実装
以下に、メッセージ送信機能の実装コードを示します:
“`python
from flask import render_template, flash, redirect, url_for
from flask_login import login_required, current_user
from app import app, db
from app.models import User, Message
from app.forms import MessageForm@app.route(‘/send_message/
‘, methods=[‘GET’, ‘POST’])
@login_required
def send_message(recipient):
user = User.query.filter_by(
Flask + SQLAlchemyで音楽共有SNSを作る – ユーザープロフィールページ編
## はじめに
前回の記事では、フォロー/アンフォロー機能の実装について解説しました。今回は、ユーザープロフィールページの実装について詳しく説明します。このページでは、特定のユーザーの情報と投稿を表示します。
## ユーザープロフィールページの実装
以下に、ユーザープロフィールページを表示する機能の実装コードを示します:
“`python
from flask import render_template
from flask_login import login_required
from app import app
from app.models import User, DailySong@app.route(‘/user/
‘)
@login_required
def user(username):
user = User.query.filter_by(username=username).first_or_404()
posts = DailySong.query.filter_by(user_id=user.id).ord