Skip to content

Instantly share code, notes, and snippets.

View ochilab's full-sized avatar

おちラボ ochilab

View GitHub Profile
@ochilab
ochilab / EmailCollectionType.gs
Created October 16, 2025 05:24
Googleフォームにて「確認済みメールアドレスで収集」モードを有効にする
form.setIsQuiz(true);
form.setCollectEmail(true); // メールアドレス収集
//form.setRequireLogin(true); // 非推奨メソッド (これは使わない)
//確認済みメールアドレスで収集 (これが正解)
form.setEmailCollectionType(FormApp.EmailCollectionType.VERIFIED);
@ochilab
ochilab / bedrock.py
Created October 2, 2025 02:20
Bedrockをpythonで呼ぶコード
REGION = os.getenv("AWS_REGION", "us-east-1")
brt = boto3.client("bedrock-runtime", region_name=REGION)
def call_claude(model_id: str, user_text: str, max_tokens=600, temperature=0):
body = {
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": max_tokens,
"temperature": temperature,
"messages": [{"role": "user", "content": [{"type":"text","text": user_text}]}]
}
@ochilab
ochilab / createQuizForm.gs
Created September 29, 2025 07:01
Google Sheetの情報から GoogleFormを作成するGAS
function createQuizForm() {
var form = FormApp.create('復習テスト'); // フォームのタイトル
form.setIsQuiz(true);
form.setCollectEmail(true); // メールアドレス収集
form.setLimitOneResponsePerUser(true); // 1人1回答
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// シート全体のデータ
var data = sheet.getDataRange().getValues();
@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 = "[email protected]"
$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(