Skip to content

Instantly share code, notes, and snippets.

View ochilab's full-sized avatar

おちラボ ochilab

View GitHub Profile
@ochilab
ochilab / getStatement.py
Last active August 26, 2025 03:57
xapiでステートメントを取得する(Learning Locker)
import requests, json, urllib.parse as ul
# === 事前設定 ===
ENDPOINT = "https://<your-ll-host>/data/xAPI/" # 末尾は /data/xAPI/
KEY = "<LL_CLIENT_KEY>"
SECRET = "<LL_CLIENT_SECRET>"
#ここのパラメータを変えることで検索条件を指定できる
params = {
"limit": 10,
@ochilab
ochilab / modify-redis.sh
Created August 25, 2025 09:27
learninglockerのredisでデータが破損した場合の修復
docker pull redis:5.0.4
docker run --rm \
-v learning-locker-docker-image-main_learninglocker-redis:/data \
-v $(pwd):/backup \
alpine sh -c 'cd /data && tar czf /backup/redis-data-backup-$(date +%F-%H%M%S).tar.gz .'
docker run --rm -it \
-v learning-locker-docker-image-main_learninglocker-redis:/data \
--entrypoint redis-check-aof \
@ochilab
ochilab / create_admin.ps1
Created August 25, 2025 06:16
Windows環境でLearningLocker(Docker版)のadminアカウントの設定ファイル(PowerShell)
$EMAIL_ADDRESS = "xxxxx@yyyy.com"
$ORGANIZATION = "personal"
$PASSWORD = "************"
$CONTAINER = "learninglocker"
Write-Host "Creating site admin for Learning Locker..."
Write-Host "Email: $EMAIL_ADDRESS"
Write-Host "Organization: $ORGANIZATION"
docker exec $CONTAINER bash -lc "cd /usr/local/src/learninglocker && node cli/dist/server createSiteAdmin '$EMAIL_ADDRESS' '$ORGANIZATION' '$PASSWORD'"
Write-Host "Done."
@ochilab
ochilab / TrayAppSample.py
Created August 21, 2025 15:21
メニューバー(タスクトレイ)常駐アプリのサンプル
import flet as ft
import threading
from PIL import Image, ImageDraw
import pystray
import asyncio
import time
def main(page: ft.Page):
page.title = "Flet MenuBar App"
page.add(ft.Text("メニューバー常駐のサンプル"))
@ochilab
ochilab / opencvCameraOnFlet.py
Created June 19, 2025 12:20
Fletでopencvのカメラ表示
import cv2
import base64
import threading
import flet as ft
from io import BytesIO
from PIL import Image
# カメラ映像を定期的にキャプチャして画像を更新
def camera_thread(page: ft.Page, image_control: ft.Image):
cap = cv2.VideoCapture(1)
@ochilab
ochilab / sam_sample.py
Last active June 17, 2025 09:36
SAM(Segment Anything)をとりあえず動かした
import cv2
import torch
from segment_anything import sam_model_registry, SamPredictor
import numpy as np
from google.colab.patches import cv2_imshow
# SAMモデルの読み込み(パスは適宜変更)
# sam_checkpoint = "sam_vit_h.pth"
sam_checkpoint = "sam_vit_h_4b8939.pth"
@ochilab
ochilab / py_irt_sample.py
Created June 13, 2025 06:41
IRT(Item Response Theory)のサンプル
import pandas as pd
import torch
from py_irt.models.two_param_logistic import TwoParamLog
class SafeTwoParamLog(TwoParamLog):
def fit_MCMC(self, models, items, responses, num_epochs=1000):
from pyro.infer import MCMC, NUTS
nuts_kernel = NUTS(self.model_vague, adapt_step_size=True)
hmc_posterior = MCMC(
@ochilab
ochilab / getMidiData.py
Created May 20, 2025 12:34
Pythonでmidiデータを取得する
import mido
# 利用可能なMIDI入力ポートの一覧を表示
print("利用可能なMIDI入力ポート:")
ports = mido.get_input_names()
for i, name in enumerate(ports):
print(f"{i}: {name}")
# # 適切なポート名に置き換えてください(例:"MIDI 1")
port_name = mido.get_input_names()[0]
@ochilab
ochilab / gasSample2.gs
Created May 15, 2025 08:39
GAS課題のサンプル(複数対応メソッドあり)
function test(){
var result = getSheetData("001");
Logger.log(result);
}
function doGet(e) {
const keyword = (e.parameter.keyword || "").trim();
if (!keyword) {
return ContentService.createTextOutput(
JSON.stringify({ error: "No keyword provided" })
@ochilab
ochilab / gasClientSample_Flet.py
Created May 14, 2025 11:09
GASから得たJSONをFletで受け取り表示する
import requests
import json
import flet as ft
### Google Apps ScriptのURLを指定
url="ここにGASのURL"
def fetch_data(value):
global url
url2=url+"?keyword=" + value
# Google Apps ScriptのURLを指定