Diese Anleitung zeigt Ihnen, wie Sie die ThemisDB Coding Platform verwenden, um Code-Snippets zu verwalten, aus dem Internet zu scrapen und mit VSCode zu integrieren.
- Erste Schritte
- Code-Snippets verwalten
- Web Scraping einrichten
- Semantic Search verwenden
- VSCode Integration
- Projekte importieren
- Erweiterte Features
# Docker Container starten
docker run -d \
--name themisdb \
-p 8080:8080 \
-p 18765:18765 \
themisdb/themisdb:latest
# Warten bis Server bereit ist
curl http://localhost:8080/healthErwartete Ausgabe:
{"status": "healthy", "version": "1.3.0"}cd examples/21_coding_platform
pip install -r requirements.txt
python main.pyWas Sie sehen sollten:
- Ein Fenster mit mehreren Tabs
- "Snippets", "Projects", "Search", "Scraper"
- Status-Anzeige unten: "Connected to ThemisDB"
- Klicken Sie auf "Connection" → "Test Connection"
- Sie sollten eine Bestätigung sehen: ✅ "ThemisDB connected successfully"
Schritt 1: Tab "Snippets" öffnen
Schritt 2: Button "New Snippet" klicken
Schritt 3: Formular ausfüllen:
Title: Fast File Reading in Python
Language: python
Description: Efficient way to read large files line by line
Tags: file-io, performance, python
Schritt 4: Code eingeben:
def read_large_file(file_path):
with open(file_path, 'r') as file:
for line in file:
# Process line by line
yield line.strip()
# Usage
for line in read_large_file('large_file.txt'):
print(line)Schritt 5: Button "Save Snippet" klicken
✅ Erfolg: Snippet erscheint in der Liste
- Snippet auswählen aus der Liste
- Edit-Button klicken
- Änderungen vornehmen
- "Update Snippet" klicken
- Snippet auswählen
- Delete-Button klicken
- Bestätigen im Dialog
Doppelklick auf Snippet in der Liste zeigt:
- Vollständigen Code
- Metadata (Autor, Datum, Quelle)
- Statistiken (Views, Copies, Likes)
- Ähnliche Snippets
Warum benötigt? GitHub API-Rate-Limit ist ohne Token sehr niedrig (60 req/hour vs 5000 req/hour).
Schritt 1: GitHub Settings öffnen
- Gehen Sie zu https://github.com/settings/tokens
- Klicken Sie "Generate new token" → "Generate new token (classic)"
Schritt 2: Token konfigurieren
- Name:
ThemisDB Scraper - Scopes auswählen:
- ✅
public_repo(Zugriff auf öffentliche Repos) - ✅
read:user(Benutzerinfo lesen)
- ✅
- Klicken Sie "Generate token"
Schritt 3: Token speichern
# .env Datei im examples/21_coding_platform/ erstellen
echo "GITHUB_TOKEN=ghp_your_token_here" > .envSchritt 1: Tab "Scraper" öffnen
Schritt 2: "GitHub Repository" auswählen
Schritt 3: URL eingeben:
Repository URL: https://github.com/fastapi/fastapi
Schritt 4: Optionen konfigurieren:
Max Files: 100
File Patterns: *.py, *.md
Exclude: test_*, *_test.py
Min Stars: -
Branch: main
Schritt 5: Button "Start Scraping" klicken
Was passiert:
- ⏳ Job wird erstellt und gestartet
- 📊 Progress Bar zeigt Fortschritt
- 📝 Log zeigt Details:
[INFO] Cloning repository... [INFO] Found 234 Python files [INFO] Processing: fastapi/main.py [INFO] Created snippet: FastAPI Application Setup [INFO] Processing: fastapi/routing.py ... - ✅ Job completed: "45 snippets created, 12 duplicates skipped"
Schritt 1: "Stack Overflow" auswählen
Schritt 2: Tags eingeben:
Tags: python, asyncio
Min Score: 10
Max Posts: 50
Schritt 3: Button "Start Scraping" klicken
Ergebnis:
- Fragen mit hohen Scores werden importiert
- Code-Blöcke aus Antworten werden als Snippets gespeichert
- Links zu Original-Posts werden in Metadata gespeichert
Schritt 1: "Documentation" auswählen
Schritt 2: URL eingeben:
Base URL: https://docs.python.org/3/library/asyncio.html
Max Depth: 2
Schritt 3: "Start Crawling" klicken
Ergebnis:
- Dokumentations-Seiten werden gecrawlt
- Code-Beispiele werden extrahiert
- Verlinkungen zwischen Seiten werden als Graph gespeichert
Schritt 1: Tab "Search" öffnen
Schritt 2: Suchtyp "Semantic Search" auswählen
Schritt 3: Query eingeben:
Query: asynchronous HTTP requests in Python
Schritt 4: Enter drücken oder "Search" klicken
Ergebnisse:
1. Async HTTP with aiohttp (Similarity: 0.92)
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
...
2. Concurrent requests with asyncio (Similarity: 0.87)
import asyncio
import requests
...
3. FastAPI async endpoints (Similarity: 0.82)
from fastapi import FastAPI
@app.get("/async")
async def read_async():
...
Schritt 1: Tab "Search" öffnen
Schritt 2: "Find Similar Code" auswählen
Schritt 3: Code-Beispiel eingeben:
async def download_file(url, filename):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
with open(filename, 'wb') as fd:
async for chunk in resp.content.iter_chunked(1024):
fd.write(chunk)Schritt 4: "Find Similar" klicken
Ergebnisse: Ähnliche Code-Snippets mit Similarity-Score
Advanced Search:
Query: HTTP requests
Language: python
Framework: aiohttp
Min Stars: 50
Tags: async, networking
Date Range: Last 6 months
Schritt 1: Extension kompilieren
cd vscode_extension
npm install
npm run compileSchritt 2: Extension laden
- Öffnen Sie VSCode
- Drücken Sie
F5(Extension Development Host) - Oder: Extension als VSIX paketieren
npm run package code --install-extension themisdb-snippets-0.0.1.vsix
Schritt 3: Extension konfigurieren
Ctrl+,→ Settings öffnen- "ThemisDB" suchen
- Konfigurieren:
{ "themisdb.apiUrl": "http://localhost:8080", "themisdb.autoSync": true, "themisdb.suggestOnType": true }
Methode 1: Command Palette
Ctrl+Shift+Pdrücken- "ThemisDB: Search Snippets" eingeben
- Suchbegriff eingeben
- Snippet auswählen → wird an Cursor-Position eingefügt
Methode 2: Sidebar
- ThemisDB Icon in Activity Bar klicken
- Hierarchische Ansicht nach Sprachen:
📁 Python 📁 FastAPI 📄 JWT Authentication 📄 Async Endpoints 📁 Django 📄 Custom Middleware 📁 JavaScript 📁 React 📄 Custom Hooks - Snippet anklicken → Code-Preview
- "Insert" klicken oder Drag & Drop
Methode 3: Context Menu
- Text im Editor markieren
- Rechtsklick → "ThemisDB: Find Similar Code"
- Ähnliche Snippets werden angezeigt
Wenn themisdb.suggestOnType: true:
Beispiel: Sie schreiben:
# JWT authentication in FAuto-Suggest erscheint:
💡 ThemisDB Suggestion:
"JWT Authentication in FastAPI"
@app.post("/login")
async def login(credentials: LoginSchema):
...
Drücken Sie Tab zum Einfügen.
Lokales Snippet zu ThemisDB pushen:
- Code im Editor markieren
Ctrl+Shift+P→ "ThemisDB: Save as Snippet"- Titel und Tags eingeben
- Enter → Snippet wird zu ThemisDB hochgeladen
Schritt 1: Tab "Projects" öffnen
Schritt 2: "Import from GitHub" klicken
Schritt 3: Repository URL eingeben:
URL: https://github.com/tiangolo/fastapi
Schritt 4: Import-Optionen:
Import as: Single Project
Include: *.py, *.md, *.txt, requirements.txt
Exclude: tests/, docs/, .github/
Max File Size: 1 MB
Analyze: Yes (create embeddings)
Schritt 5: "Import" klicken
Ergebnis:
- Gesamtes Projekt wird importiert
- Datei-Struktur wird als Tree gespeichert
- Code-Dateien werden analysiert
- Dependencies werden erkannt
- README wird als Dokumentation gespeichert
Schritt 1: Projekt auswählen
Schritt 2: "Export" → "Export to Folder" klicken
Schritt 3: Zielordner auswählen
Schritt 4: Export-Optionen:
☑ Include all files
☑ Preserve structure
☑ Include metadata (as .themisdb.json)
☐ Include dependencies
Ergebnis: Projekt wird in Ordner exportiert, bereit zur Verwendung
Schritt 1: "File" → "Batch Import" klicken
Schritt 2: Ordner auswählen
Schritt 3: Optionen konfigurieren:
File Types: *.py, *.js, *.java, *.cpp
Recursive: Yes
Auto-Tag: Yes (based on path and content)
Create Project: No (import as individual snippets)
Ergebnis: Alle Code-Dateien werden als Snippets importiert
Beispiel: GitLab Scraper
# scrapers/gitlab_scraper.py
from web_scraper import BaseScraper
import requests
class GitLabScraper(BaseScraper):
def __init__(self, token=None):
self.base_url = "https://gitlab.com/api/v4"
self.token = token
def scrape_project(self, project_id):
headers = {"PRIVATE-TOKEN": self.token} if self.token else {}
# Get project files
url = f"{self.base_url}/projects/{project_id}/repository/tree"
response = requests.get(url, headers=headers)
files = response.json()
snippets = []
for file in files:
if file['type'] == 'blob' and file['name'].endswith('.py'):
content = self.get_file_content(project_id, file['path'])
snippet = self.create_snippet(
title=file['name'],
code=content,
language='python',
source_url=file['path']
)
snippets.append(snippet)
return snippetsVerwendung:
from scrapers.gitlab_scraper import GitLabScraper
scraper = GitLabScraper(token="your_gitlab_token")
snippets = scraper.scrape_project(project_id=12345)Wenn ein besseres Embedding-Modell verfügbar ist:
from code_indexer import CodeIndexer
indexer = CodeIndexer()
# Alle Snippets neu indexieren
indexer.reindex_all(
model_name="microsoft/graphcodebert-base",
batch_size=32
)Statistiken anzeigen:
-
Tab "Analytics" öffnen
-
Übersicht:
Total Snippets: 1,234 Total Projects: 45 Total Docs: 89 Languages: Python (45%), JavaScript (30%), Java (15%) Most Used Tags: async, api, database, authentication Storage Used: 234 MB -
Charts:
- Snippets über Zeit
- Sprachen-Verteilung
- Top Tags
- Scraping-Aktivität
Snippets teilen:
- Snippet auswählen
- "Share" → "Generate Link" klicken
- Link kopieren:
themisdb://snippet/abc123 - Kollege öffnet Link in seiner ThemisDB App
- Snippet wird automatisch importiert
| Aktion | Shortcut |
|---|---|
| Neue Suche | Ctrl+F |
| Neues Snippet | Ctrl+N |
| Snippet speichern | Ctrl+S |
| Snippet bearbeiten | Ctrl+E |
| Snippet löschen | Del |
| Syntax-Highlighting umschalten | Ctrl+H |
| Preview | Space |
1. Code-Learning:
1. GitHub Repos von Top-Projekten scrapen
2. Semantic Search für spezifische Patterns
3. Ähnliche Code-Stücke vergleichen
4. Best Practices identifizieren
2. Team Knowledge Base:
1. Team-Projekte importieren
2. Interne Standards als Snippets dokumentieren
3. VSCode Extension im Team verteilen
4. Snippets über ThemisDB teilen
3. Interview Preparation:
1. Stack Overflow Top-Antworten scrapen
2. Nach Algorithmen-Kategorien organisieren
3. Regelmäßig durchgehen mit Spaced Repetition
4. Eigene Lösungen als Snippets speichern
Lösung: ThemisDB Server läuft nicht
docker ps -a | grep themisdb
docker start themisdbLösung: Warten oder Token konfigurieren
# GitHub Token in .env setzen
echo "GITHUB_TOKEN=ghp_xxx" >> .envLösung: GPU aktivieren oder kleineres Modell
# In code_indexer.py
MODEL_NAME = "sentence-transformers/all-MiniLM-L6-v2" # Schneller, kleinere VektorenLösung:
cd vscode_extension
rm -rf node_modules
npm install
npm run compile- WEB_SCRAPING.md - Detaillierter Scraping-Guide
- VSCODE_INTEGRATION.md - VSCode Extension Development
- ARCHITECTURE.md - System-Architektur verstehen
Viel Erfolg mit der ThemisDB Coding Platform! 🚀
Für weitere Fragen: GitHub Discussions