Compare commits
21
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c9890676b | ||
|
|
470cf59361 | ||
|
|
00c9982768 | ||
|
|
f99056a099 | ||
|
|
6c7a6d0e3a | ||
|
|
9f6e62676e | ||
|
|
5881ca5c80 | ||
|
|
678c9d1e38 | ||
|
|
3e17c08305 | ||
|
|
daf4aa3dfa | ||
|
|
c9d757d973 | ||
|
|
6d7f875330 | ||
|
|
a84973e5be | ||
|
|
d1564fe7f9 | ||
|
|
90bc9fccba | ||
|
|
866b6ad94f | ||
|
|
bb94fbf8c7 | ||
|
|
de87d42ad0 | ||
|
|
ab35b4fb3a | ||
|
|
1eda7f0e4c | ||
|
|
f2703a8c14 |
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"permissions": {
|
||||||
|
"deny": [
|
||||||
|
"WebFetch",
|
||||||
|
"Read(.env)",
|
||||||
|
"Read(.env.*)",
|
||||||
|
"Read(secrets/**)",
|
||||||
|
"Read(Private/**)",
|
||||||
|
"Edit(Private/**)",
|
||||||
|
"Write(Private/**)",
|
||||||
|
"Read(.obsidian/**)",
|
||||||
|
"Edit(.obsidian/**)",
|
||||||
|
"Write(.obsidian/**)"
|
||||||
|
],
|
||||||
|
"allow": [
|
||||||
|
"Bash(git diff:*)",
|
||||||
|
"Bash(git status:*)",
|
||||||
|
"Bash(git log:*)",
|
||||||
|
"Bash(rg:*)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"attribution": {
|
||||||
|
"commit": " (vault changes by Claude Code)"
|
||||||
|
},
|
||||||
|
"permissions.defaultMode": "default"
|
||||||
|
}
|
||||||
|
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Obsidian local state
|
||||||
|
.obsidian/workspace*
|
||||||
|
.obsidian/cache
|
||||||
|
.obsidian/graph.json
|
||||||
|
.obsidian/metadata.json
|
||||||
|
.obsidian/trash
|
||||||
|
|
||||||
|
# Smart Connections embeddings / local index
|
||||||
|
.smart-env/
|
||||||
@@ -0,0 +1,270 @@
|
|||||||
|
# Design Document: Comprehensive Tagging System
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The comprehensive tagging system will analyze and tag all files in the Obsidian vault based on their location, content, and existing metadata. The system uses a multi-layered approach combining directory-based tags, content analysis, and hierarchical topic classification to create a consistent and discoverable knowledge base.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
The system follows a pipeline architecture with these main components:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD
|
||||||
|
A[File Discovery] --> B[Content Analysis]
|
||||||
|
B --> C[Tag Generation]
|
||||||
|
C --> D[Tag Validation]
|
||||||
|
D --> E[Frontmatter Update]
|
||||||
|
E --> F[Batch Processing]
|
||||||
|
|
||||||
|
G[Tag Registry] --> C
|
||||||
|
G --> D
|
||||||
|
H[Directory Mapping] --> C
|
||||||
|
I[Language Detection] --> C
|
||||||
|
J[Content Classification] --> C
|
||||||
|
```
|
||||||
|
|
||||||
|
### Core Components
|
||||||
|
|
||||||
|
1. **File Discovery Engine**: Recursively scans vault directories
|
||||||
|
2. **Content Analyzer**: Extracts topics, language, and content type
|
||||||
|
3. **Tag Generator**: Creates hierarchical tags based on analysis
|
||||||
|
4. **Tag Validator**: Ensures consistency and prevents duplication
|
||||||
|
5. **Frontmatter Manager**: Updates YAML metadata safely
|
||||||
|
6. **Batch Processor**: Handles large-scale operations with progress tracking
|
||||||
|
|
||||||
|
## Components and Interfaces
|
||||||
|
|
||||||
|
### FileDiscovery Interface
|
||||||
|
```typescript
|
||||||
|
interface FileDiscovery {
|
||||||
|
scanDirectory(path: string): Promise<FileInfo[]>
|
||||||
|
filterByType(files: FileInfo[], types: string[]): FileInfo[]
|
||||||
|
excludeSensitive(files: FileInfo[]): FileInfo[]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### ContentAnalyzer Interface
|
||||||
|
```typescript
|
||||||
|
interface ContentAnalyzer {
|
||||||
|
analyzeContent(content: string): ContentAnalysis
|
||||||
|
detectLanguage(content: string): LanguageInfo
|
||||||
|
extractTopics(content: string): string[]
|
||||||
|
classifyContentType(content: string, filename: string): ContentType
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### TagGenerator Interface
|
||||||
|
```typescript
|
||||||
|
interface TagGenerator {
|
||||||
|
generateDirectoryTags(filepath: string): string[]
|
||||||
|
generateContentTags(analysis: ContentAnalysis): string[]
|
||||||
|
generateHierarchicalTags(topics: string[]): string[]
|
||||||
|
consolidateTags(tags: string[]): string[]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### FrontmatterManager Interface
|
||||||
|
```typescript
|
||||||
|
interface FrontmatterManager {
|
||||||
|
parseFrontmatter(content: string): FrontmatterData
|
||||||
|
updateFrontmatter(content: string, updates: FrontmatterData): string
|
||||||
|
validateFrontmatter(data: FrontmatterData): ValidationResult
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Data Models
|
||||||
|
|
||||||
|
### FileInfo Model
|
||||||
|
```typescript
|
||||||
|
interface FileInfo {
|
||||||
|
path: string
|
||||||
|
name: string
|
||||||
|
directory: string
|
||||||
|
extension: string
|
||||||
|
size: number
|
||||||
|
created: Date
|
||||||
|
modified: Date
|
||||||
|
content?: string
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### ContentAnalysis Model
|
||||||
|
```typescript
|
||||||
|
interface ContentAnalysis {
|
||||||
|
language: 'en' | 'zh' | 'mixed' | 'unknown'
|
||||||
|
contentType: ContentType
|
||||||
|
topics: string[]
|
||||||
|
mentions: {
|
||||||
|
tools: string[]
|
||||||
|
technologies: string[]
|
||||||
|
people: string[]
|
||||||
|
organizations: string[]
|
||||||
|
}
|
||||||
|
sentiment?: 'positive' | 'neutral' | 'negative'
|
||||||
|
complexity: 'basic' | 'intermediate' | 'advanced'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### TagStructure Model
|
||||||
|
```typescript
|
||||||
|
interface TagStructure {
|
||||||
|
primary: string[] // Main category tags
|
||||||
|
hierarchical: string[] // Topic/subtopic/detail tags
|
||||||
|
content: string[] // Content-derived tags
|
||||||
|
meta: string[] // Metadata tags (language, type, etc.)
|
||||||
|
custom: string[] // Manually added tags to preserve
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### FrontmatterData Model
|
||||||
|
```typescript
|
||||||
|
interface FrontmatterData {
|
||||||
|
title?: string
|
||||||
|
tags: string[]
|
||||||
|
created?: string
|
||||||
|
updated?: string
|
||||||
|
type?: string
|
||||||
|
lang?: string
|
||||||
|
source?: string
|
||||||
|
aliases?: string[]
|
||||||
|
description?: string
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tag Hierarchy Design
|
||||||
|
|
||||||
|
### Directory-Based Tags
|
||||||
|
- `project/` - Files in 100-project/
|
||||||
|
- `project/ai` - AI-related projects
|
||||||
|
- `project/infrastructure` - Infrastructure projects
|
||||||
|
- `project/work` - Work-related projects
|
||||||
|
- `area/` - Files in 200-area/
|
||||||
|
- `area/productivity` - Productivity area
|
||||||
|
- `area/health` - Health and fitness
|
||||||
|
- `area/finance` - Financial management
|
||||||
|
- `resource/` - Files in 300-resources/
|
||||||
|
- `resource/development` - Development resources
|
||||||
|
- `resource/cooking` - Cooking resources
|
||||||
|
- `archive/` - Files in 400-archive/
|
||||||
|
- `clipping/` - Web clippings and saved articles
|
||||||
|
|
||||||
|
### Content-Based Tags
|
||||||
|
- `tech/` - Technology-related content
|
||||||
|
- `tech/ai/llm` - Large Language Models
|
||||||
|
- `tech/infrastructure/docker` - Docker and containers
|
||||||
|
- `tech/development/python` - Python development
|
||||||
|
- `personal/` - Personal content
|
||||||
|
- `personal/productivity/gtd` - Getting Things Done
|
||||||
|
- `personal/health/cycling` - Cycling and fitness
|
||||||
|
- `work/` - Work-related content
|
||||||
|
- `work/government` - Government projects
|
||||||
|
- `work/enterprise` - Enterprise solutions
|
||||||
|
|
||||||
|
### Meta Tags
|
||||||
|
- `lang/en`, `lang/zh`, `lang/mixed` - Language tags
|
||||||
|
- `type/hub`, `type/note`, `type/clipping`, `type/daily-note` - Content type
|
||||||
|
- `status/draft`, `status/complete`, `status/archived` - Status tags
|
||||||
|
- `sensitive/credentials`, `sensitive/personal` - Security tags
|
||||||
|
|
||||||
|
## Correctness Properties
|
||||||
|
|
||||||
|
*A property is a characteristic or behavior that should hold true across all valid executions of a system—essentially, a formal statement about what the system should do. Properties serve as the bridge between human-readable specifications and machine-verifiable correctness guarantees.*
|
||||||
|
|
||||||
|
Now I'll analyze the acceptance criteria to determine which ones can be tested as properties:
|
||||||
|
|
||||||
|
### Converting EARS to Properties
|
||||||
|
|
||||||
|
Based on the prework analysis, I'll create consolidated properties that eliminate redundancy while maintaining comprehensive coverage:
|
||||||
|
|
||||||
|
Property 1: Frontmatter standardization
|
||||||
|
*For any* processed file, the frontmatter should contain all required fields (title, tags, created, updated) in the correct YAML format, while preserving any existing data
|
||||||
|
**Validates: Requirements 1.1, 1.2, 1.3, 1.5**
|
||||||
|
|
||||||
|
Property 2: Directory-based tag mapping
|
||||||
|
*For any* file in the vault, the tags should correctly reflect its directory location using the appropriate primary tag (project/area/resource/archive/clipping) and hierarchical subtags based on subdirectory structure
|
||||||
|
**Validates: Requirements 2.1, 2.2, 2.3, 2.4, 2.5, 2.6**
|
||||||
|
|
||||||
|
Property 3: Content type classification
|
||||||
|
*For any* file, the content analysis should correctly identify and tag the content type (hub, clipping, daily-note, meeting, documentation, tutorial, reference, draft) based on content patterns and filename analysis
|
||||||
|
**Validates: Requirements 3.1, 3.2, 3.3, 3.4, 3.5**
|
||||||
|
|
||||||
|
Property 4: Hierarchical topic tagging
|
||||||
|
*For any* file with identifiable topic content, the system should generate appropriate hierarchical tags using forward slash notation that correctly categorize the content into topic hierarchies (tech/, personal/, work/, home-automation/)
|
||||||
|
**Validates: Requirements 4.1, 4.2, 4.3, 4.4, 4.5, 4.6**
|
||||||
|
|
||||||
|
Property 5: Language detection and tagging
|
||||||
|
*For any* file, the language detection should correctly identify the primary language (en/zh/mixed/unknown) based on character analysis and content patterns, and add the appropriate lang/ tag
|
||||||
|
**Validates: Requirements 5.1, 5.2, 5.3, 5.4, 5.5**
|
||||||
|
|
||||||
|
Property 6: Content analysis tag generation
|
||||||
|
*For any* file, the content analysis should extract and tag relevant topics, technical terms, tools, frameworks, technologies, and methodologies mentioned in the content, while preserving any manually added tags
|
||||||
|
**Validates: Requirements 6.1, 6.2, 6.3, 6.4, 6.5**
|
||||||
|
|
||||||
|
Property 7: Tag consistency and validation
|
||||||
|
*For any* generated tag set, all tags should follow kebab-case naming conventions, duplicate tags should be consolidated using canonical forms, and hierarchical relationships should be logically valid
|
||||||
|
**Validates: Requirements 7.1, 7.2, 7.3, 7.4, 7.5**
|
||||||
|
|
||||||
|
Property 8: Data preservation during processing
|
||||||
|
*For any* file being processed, existing tags and metadata should be preserved, backups should be created before modifications, and batch processing should maintain data integrity with proper error handling
|
||||||
|
**Validates: Requirements 8.1, 8.2, 8.3, 8.5**
|
||||||
|
|
||||||
|
Property 9: Sensitive content detection and protection
|
||||||
|
*For any* file containing sensitive information (credentials, personal data, financial/legal information), the system should add appropriate sensitive/ tags while ensuring the sensitive data itself is not exposed or logged during processing
|
||||||
|
**Validates: Requirements 9.1, 9.2, 9.3, 9.5**
|
||||||
|
|
||||||
|
Property 10: Obsidian compatibility
|
||||||
|
*For any* generated tag structure, the tags should be compatible with Obsidian's tag pane, search functionality, Dataview queries, graph view, and common plugins, with hub files containing appropriate Dataview queries for tag-based content listing
|
||||||
|
**Validates: Requirements 10.1, 10.2, 10.3, 10.4, 10.5**
|
||||||
|
|
||||||
|
## Error Handling
|
||||||
|
|
||||||
|
### File Processing Errors
|
||||||
|
- **Invalid file formats**: Skip non-text files with logging
|
||||||
|
- **Corrupted frontmatter**: Attempt repair or create new frontmatter
|
||||||
|
- **Permission errors**: Log and continue with next file
|
||||||
|
- **Large files**: Implement streaming analysis for files over 1MB
|
||||||
|
|
||||||
|
### Content Analysis Errors
|
||||||
|
- **Language detection failures**: Default to 'lang/unknown'
|
||||||
|
- **Topic extraction failures**: Use directory-based fallback tags
|
||||||
|
- **Encoding issues**: Attempt multiple encoding detection methods
|
||||||
|
|
||||||
|
### Tag Generation Errors
|
||||||
|
- **Invalid characters**: Sanitize and convert to kebab-case
|
||||||
|
- **Circular hierarchies**: Detect and break circular references
|
||||||
|
- **Tag conflicts**: Use canonical form resolution
|
||||||
|
|
||||||
|
### Batch Processing Errors
|
||||||
|
- **Interrupted processing**: Resume from last successful batch
|
||||||
|
- **Memory constraints**: Process in smaller batches
|
||||||
|
- **Concurrent access**: Implement file locking mechanism
|
||||||
|
|
||||||
|
## Testing Strategy
|
||||||
|
|
||||||
|
### Dual Testing Approach
|
||||||
|
The system will use both unit tests and property-based tests for comprehensive coverage:
|
||||||
|
|
||||||
|
**Unit Tests** will focus on:
|
||||||
|
- Specific examples of frontmatter parsing and generation
|
||||||
|
- Edge cases like empty files, malformed YAML, special characters
|
||||||
|
- Integration points between components
|
||||||
|
- Error conditions and recovery mechanisms
|
||||||
|
|
||||||
|
**Property-Based Tests** will focus on:
|
||||||
|
- Universal properties that hold across all file types and content
|
||||||
|
- Comprehensive input coverage through randomized file generation
|
||||||
|
- Tag consistency and validation across large datasets
|
||||||
|
- Data preservation guarantees during batch processing
|
||||||
|
|
||||||
|
### Property Test Configuration
|
||||||
|
- Minimum 100 iterations per property test
|
||||||
|
- Each property test references its design document property
|
||||||
|
- Tag format: **Feature: comprehensive-tagging-system, Property {number}: {property_text}**
|
||||||
|
|
||||||
|
### Test Data Generation
|
||||||
|
- **File generators**: Create files with various directory structures, content types, and languages
|
||||||
|
- **Content generators**: Generate text with different topics, technical terms, and sensitive information patterns
|
||||||
|
- **Frontmatter generators**: Create valid and invalid YAML frontmatter variations
|
||||||
|
- **Directory structure generators**: Create nested directory hierarchies matching vault patterns
|
||||||
|
|
||||||
|
The testing strategy ensures that the tagging system maintains correctness across the diverse content and organizational patterns found in the actual vault structure.
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
# Requirements Document
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
This specification defines a comprehensive tagging system for an Obsidian vault with mixed organizational patterns. The system will establish consistent tagging conventions, implement hierarchical tag structures based on actual content and directory structure, and ensure all content is properly categorized for improved discoverability and organization.
|
||||||
|
|
||||||
|
## Glossary
|
||||||
|
|
||||||
|
- **Tag_Hierarchy**: Multi-level tag structure using forward slashes (e.g., tech/ai/llm)
|
||||||
|
- **Frontmatter**: YAML metadata block at the beginning of Markdown files
|
||||||
|
- **Hub_File**: Index file that serves as entry point for a category or area
|
||||||
|
- **Content_Type**: Classification of file purpose (note, project, resource, clipping, etc.)
|
||||||
|
- **Language_Tag**: Identifier for content language (en, zh, mixed)
|
||||||
|
- **Directory_Structure**: Existing folder organization (100-project, 200-area, 300-resources, 400-archive, etc.)
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
### Requirement 1: Standardized Frontmatter Structure
|
||||||
|
|
||||||
|
**User Story:** As a vault user, I want consistent frontmatter across all files, so that I can rely on predictable metadata structure.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. WHEN a file is processed, THE Tagging_System SHALL ensure it has standardized frontmatter with required fields
|
||||||
|
2. THE Tagging_System SHALL use YAML array format for tags: `tags: [tag1, tag2, tag3]`
|
||||||
|
3. THE Tagging_System SHALL include these core fields: title, tags, created, updated
|
||||||
|
4. WHERE content has specific metadata needs, THE Tagging_System SHALL include additional fields like type, lang, source
|
||||||
|
5. WHEN frontmatter exists but is incomplete, THE Tagging_System SHALL preserve existing data and add missing fields
|
||||||
|
|
||||||
|
### Requirement 2: Directory-Based Tag Structure
|
||||||
|
|
||||||
|
**User Story:** As a vault user, I want tags that reflect the actual directory organization, so that I can navigate content according to the existing structure.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. WHEN a file is in 100-project directory, THE Tagging_System SHALL include 'project' tag and specific project subtags
|
||||||
|
2. WHEN a file is in 200-area directory, THE Tagging_System SHALL include 'area' tag and area-specific subtags
|
||||||
|
3. WHEN a file is in 300-resources directory, THE Tagging_System SHALL include 'resource' tag and topic-specific subtags
|
||||||
|
4. WHEN a file is in 400-archive directory, THE Tagging_System SHALL include 'archive' tag
|
||||||
|
5. WHEN a file is in Clippings or ReadItLater directories, THE Tagging_System SHALL include 'clipping' tag
|
||||||
|
6. THE Tagging_System SHALL create hierarchical tags based on subdirectory structure (e.g., project/ai, area/productivity)
|
||||||
|
|
||||||
|
### Requirement 3: Content-Type Classification
|
||||||
|
|
||||||
|
**User Story:** As a content creator, I want files tagged by their content type, so that I can filter and find specific kinds of information.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. THE Tagging_System SHALL identify and tag hub files with 'hub' type
|
||||||
|
2. WHEN a file contains clipped web content, THE Tagging_System SHALL add 'clipping' tag
|
||||||
|
3. WHEN a file is a daily note with date format, THE Tagging_System SHALL add 'daily-note' tag
|
||||||
|
4. THE Tagging_System SHALL detect and tag meeting notes, documentation, tutorials, and reference materials
|
||||||
|
5. WHEN file content indicates it's a draft or work-in-progress, THE Tagging_System SHALL add appropriate status tags
|
||||||
|
|
||||||
|
### Requirement 4: Topic-Based Hierarchical Tags
|
||||||
|
|
||||||
|
**User Story:** As a researcher, I want hierarchical topic tags based on actual content themes, so that I can explore related content at different levels of specificity.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. THE Tagging_System SHALL implement hierarchical tags using forward slash notation (topic/subtopic/detail)
|
||||||
|
2. WHEN content relates to AI/technology, THE Tagging_System SHALL use tech hierarchy (tech/ai, tech/infrastructure, tech/development)
|
||||||
|
3. WHEN content relates to personal topics, THE Tagging_System SHALL use personal hierarchy (personal/health, personal/finance, personal/productivity)
|
||||||
|
4. WHEN content relates to work projects, THE Tagging_System SHALL use work hierarchy (work/airport, work/ali, work/government)
|
||||||
|
5. WHEN content relates to home automation, THE Tagging_System SHALL use home-automation hierarchy
|
||||||
|
6. WHEN content spans multiple topics, THE Tagging_System SHALL include all relevant hierarchical tags
|
||||||
|
|
||||||
|
### Requirement 5: Language and Localization Tags
|
||||||
|
|
||||||
|
**User Story:** As a multilingual user, I want content tagged by language, so that I can filter content by language preference.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. WHEN content is primarily in English, THE Tagging_System SHALL add 'lang/en' tag
|
||||||
|
2. WHEN content is primarily in Chinese, THE Tagging_System SHALL add 'lang/zh' tag
|
||||||
|
3. WHEN content mixes languages significantly, THE Tagging_System SHALL add 'lang/mixed' tag
|
||||||
|
4. THE Tagging_System SHALL detect language based on character analysis and content patterns
|
||||||
|
5. WHEN language cannot be determined, THE Tagging_System SHALL default to 'lang/unknown'
|
||||||
|
|
||||||
|
### Requirement 6: Automated Tag Generation
|
||||||
|
|
||||||
|
**User Story:** As a vault maintainer, I want automated tag generation based on content analysis, so that I don't have to manually tag every file.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. THE Tagging_System SHALL analyze file content to suggest relevant topic tags
|
||||||
|
2. WHEN file contains technical terms, THE Tagging_System SHALL add appropriate technology tags
|
||||||
|
3. THE Tagging_System SHALL extract and tag mentioned tools, frameworks, and technologies
|
||||||
|
4. WHEN content discusses specific methodologies or concepts, THE Tagging_System SHALL add conceptual tags
|
||||||
|
5. THE Tagging_System SHALL preserve manually added tags while adding automated suggestions
|
||||||
|
|
||||||
|
### Requirement 7: Tag Consistency and Validation
|
||||||
|
|
||||||
|
**User Story:** As a vault organizer, I want consistent tag naming and validation, so that tags remain useful and don't fragment.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. THE Tagging_System SHALL enforce kebab-case naming for all tags (lowercase with hyphens)
|
||||||
|
2. WHEN duplicate or similar tags exist, THE Tagging_System SHALL consolidate them using canonical forms
|
||||||
|
3. THE Tagging_System SHALL validate tag hierarchies to ensure logical parent-child relationships
|
||||||
|
4. WHEN tags violate naming conventions, THE Tagging_System SHALL suggest corrections
|
||||||
|
5. THE Tagging_System SHALL maintain a tag registry to prevent fragmentation
|
||||||
|
|
||||||
|
### Requirement 8: Batch Processing and Migration
|
||||||
|
|
||||||
|
**User Story:** As a vault administrator, I want to process all existing files in batches, so that I can systematically apply the tagging system to the entire vault.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. THE Tagging_System SHALL process files in logical batches by directory structure
|
||||||
|
2. WHEN processing existing files, THE Tagging_System SHALL preserve existing tags and metadata
|
||||||
|
3. THE Tagging_System SHALL create backup copies before making changes to files
|
||||||
|
4. WHEN conflicts arise between existing and generated tags, THE Tagging_System SHALL prompt for resolution
|
||||||
|
5. THE Tagging_System SHALL provide progress reporting and error handling for batch operations
|
||||||
|
|
||||||
|
### Requirement 9: Security and Sensitive Content Handling
|
||||||
|
|
||||||
|
**User Story:** As a security-conscious user, I want sensitive files properly tagged and handled, so that I can manage access and visibility appropriately.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. WHEN files contain credentials or API keys, THE Tagging_System SHALL add 'sensitive/credentials' tag
|
||||||
|
2. WHEN files contain personal information, THE Tagging_System SHALL add 'sensitive/personal' tag
|
||||||
|
3. THE Tagging_System SHALL detect and tag files with financial or legal information
|
||||||
|
4. WHEN sensitive content is detected, THE Tagging_System SHALL suggest security best practices
|
||||||
|
5. THE Tagging_System SHALL respect existing security classifications and not expose sensitive data
|
||||||
|
|
||||||
|
### Requirement 10: Integration with Obsidian Features
|
||||||
|
|
||||||
|
**User Story:** As an Obsidian user, I want tags that work seamlessly with Obsidian's built-in features, so that I can leverage the full power of the application.
|
||||||
|
|
||||||
|
#### Acceptance Criteria
|
||||||
|
|
||||||
|
1. THE Tagging_System SHALL generate tags compatible with Obsidian's tag pane and search
|
||||||
|
2. THE Tagging_System SHALL support Dataview queries and tag-based filtering
|
||||||
|
3. WHEN creating hub files, THE Tagging_System SHALL include appropriate Dataview queries for tag-based content listing
|
||||||
|
4. THE Tagging_System SHALL ensure tags work with graph view and tag-based navigation
|
||||||
|
5. THE Tagging_System SHALL maintain compatibility with Obsidian plugins that use tags
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
# Implementation Plan: Comprehensive Tagging System
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This implementation plan creates a Python-based comprehensive tagging system for the Obsidian vault. The system will analyze files, generate appropriate tags based on directory structure and content analysis, and update frontmatter while preserving existing data. The implementation follows a modular architecture with clear separation of concerns.
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
- [x] 1. Set up project structure and core interfaces
|
||||||
|
- Create Python package structure with proper modules
|
||||||
|
- Define core data models and interfaces using dataclasses and protocols
|
||||||
|
- Set up testing framework with pytest and hypothesis for property-based testing
|
||||||
|
- Create configuration system for tag hierarchies and rules
|
||||||
|
- _Requirements: 1.1, 1.2, 1.3_
|
||||||
|
|
||||||
|
- [x] 2. Implement file discovery and content analysis
|
||||||
|
- [x] 2.1 Create FileDiscovery class for vault scanning
|
||||||
|
- Implement recursive directory scanning with file filtering
|
||||||
|
- Add support for excluding sensitive directories and file types
|
||||||
|
- Handle file encoding detection and content reading
|
||||||
|
- _Requirements: 8.1, 9.5_
|
||||||
|
|
||||||
|
- [ ]* 2.2 Write property test for file discovery
|
||||||
|
- **Property 8: Data preservation during processing**
|
||||||
|
- **Validates: Requirements 8.1, 8.2, 8.3, 8.5**
|
||||||
|
|
||||||
|
- [x] 2.3 Implement ContentAnalyzer class
|
||||||
|
- Create language detection using character frequency analysis
|
||||||
|
- Implement content type classification based on patterns and keywords
|
||||||
|
- Add topic extraction using keyword analysis and NLP techniques
|
||||||
|
- Build entity extraction for tools, technologies, and frameworks
|
||||||
|
- _Requirements: 5.4, 3.4, 6.1, 6.2, 6.3_
|
||||||
|
|
||||||
|
- [ ]* 2.4 Write property tests for content analysis
|
||||||
|
- **Property 5: Language detection and tagging**
|
||||||
|
- **Property 3: Content type classification**
|
||||||
|
- **Property 6: Content analysis tag generation**
|
||||||
|
- **Validates: Requirements 5.1-5.5, 3.1-3.5, 6.1-6.5**
|
||||||
|
|
||||||
|
- [x] 3. Implement tag generation system
|
||||||
|
- [x] 3.1 Create TagGenerator class
|
||||||
|
- Implement directory-based tag generation from file paths
|
||||||
|
- Build hierarchical tag creation using topic analysis
|
||||||
|
- Add tag consolidation and deduplication logic
|
||||||
|
- Create tag validation and naming convention enforcement
|
||||||
|
- _Requirements: 2.6, 4.1, 7.1, 7.2, 7.3_
|
||||||
|
|
||||||
|
- [ ]* 3.2 Write property tests for tag generation
|
||||||
|
- **Property 2: Directory-based tag mapping**
|
||||||
|
- **Property 4: Hierarchical topic tagging**
|
||||||
|
- **Property 7: Tag consistency and validation**
|
||||||
|
- **Validates: Requirements 2.1-2.6, 4.1-4.6, 7.1-7.5**
|
||||||
|
|
||||||
|
- [x] 3.3 Implement sensitive content detection
|
||||||
|
- Create pattern matching for credentials, API keys, and personal information
|
||||||
|
- Add financial and legal content detection
|
||||||
|
- Implement secure handling to avoid exposing sensitive data
|
||||||
|
- _Requirements: 9.1, 9.2, 9.3, 9.5_
|
||||||
|
|
||||||
|
- [ ]* 3.4 Write property test for sensitive content detection
|
||||||
|
- **Property 9: Sensitive content detection and protection**
|
||||||
|
- **Validates: Requirements 9.1, 9.2, 9.3, 9.5**
|
||||||
|
|
||||||
|
- [ ] 4. Checkpoint - Core functionality validation
|
||||||
|
- Ensure all core components work together correctly
|
||||||
|
- Run property tests to validate tag generation logic
|
||||||
|
- Test with sample files from different vault directories
|
||||||
|
- Ask the user if questions arise about tag hierarchies or classification rules
|
||||||
|
|
||||||
|
- [ ] 5. Implement frontmatter management
|
||||||
|
- [ ] 5.1 Create FrontmatterManager class
|
||||||
|
- Implement YAML frontmatter parsing with error handling
|
||||||
|
- Build frontmatter updating while preserving existing data
|
||||||
|
- Add validation for frontmatter structure and required fields
|
||||||
|
- Create backup functionality before file modifications
|
||||||
|
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 8.2, 8.3_
|
||||||
|
|
||||||
|
- [ ]* 5.2 Write property tests for frontmatter management
|
||||||
|
- **Property 1: Frontmatter standardization**
|
||||||
|
- **Validates: Requirements 1.1, 1.2, 1.3, 1.5**
|
||||||
|
|
||||||
|
- [ ] 5.3 Implement batch processing system
|
||||||
|
- Create BatchProcessor class for handling large-scale operations
|
||||||
|
- Add progress tracking and error handling
|
||||||
|
- Implement resume functionality for interrupted processing
|
||||||
|
- Build memory-efficient processing for large vaults
|
||||||
|
- _Requirements: 8.1, 8.2, 8.5_
|
||||||
|
|
||||||
|
- [ ]* 5.4 Write unit tests for batch processing
|
||||||
|
- Test error recovery and resume functionality
|
||||||
|
- Test memory management with large file sets
|
||||||
|
- Test progress reporting accuracy
|
||||||
|
- _Requirements: 8.1, 8.2, 8.5_
|
||||||
|
|
||||||
|
- [ ] 6. Implement Obsidian compatibility features
|
||||||
|
- [ ] 6.1 Create ObsidianCompatibility class
|
||||||
|
- Ensure tag format compatibility with Obsidian tag system
|
||||||
|
- Generate Dataview queries for hub files
|
||||||
|
- Validate tags work with graph view and common plugins
|
||||||
|
- Test tag search and filtering functionality
|
||||||
|
- _Requirements: 10.1, 10.2, 10.3, 10.4, 10.5_
|
||||||
|
|
||||||
|
- [ ]* 6.2 Write property test for Obsidian compatibility
|
||||||
|
- **Property 10: Obsidian compatibility**
|
||||||
|
- **Validates: Requirements 10.1, 10.2, 10.3, 10.4, 10.5**
|
||||||
|
|
||||||
|
- [ ] 7. Create command-line interface and configuration
|
||||||
|
- [ ] 7.1 Build CLI using argparse or click
|
||||||
|
- Add commands for full vault processing, single file processing, and validation
|
||||||
|
- Implement configuration file support for custom tag hierarchies
|
||||||
|
- Add dry-run mode for testing without file modifications
|
||||||
|
- Create verbose logging and progress reporting
|
||||||
|
- _Requirements: 8.1, 8.5_
|
||||||
|
|
||||||
|
- [ ]* 7.2 Write integration tests for CLI
|
||||||
|
- Test full vault processing workflow
|
||||||
|
- Test configuration file loading and validation
|
||||||
|
- Test dry-run mode accuracy
|
||||||
|
- _Requirements: 8.1, 8.5_
|
||||||
|
|
||||||
|
- [ ] 8. Integration and comprehensive testing
|
||||||
|
- [ ] 8.1 Wire all components together in main application
|
||||||
|
- Create main TaggingSystem class that orchestrates all components
|
||||||
|
- Implement error handling and logging throughout the system
|
||||||
|
- Add configuration validation and setup
|
||||||
|
- _Requirements: All requirements_
|
||||||
|
|
||||||
|
- [ ]* 8.2 Write end-to-end property tests
|
||||||
|
- Test complete workflow from file discovery to frontmatter update
|
||||||
|
- Validate all properties work together in integrated system
|
||||||
|
- Test with realistic vault structure and content
|
||||||
|
- _Requirements: All requirements_
|
||||||
|
|
||||||
|
- [ ] 8.3 Create comprehensive test suite
|
||||||
|
- Add performance tests for large vault processing
|
||||||
|
- Create regression tests for edge cases
|
||||||
|
- Build test data generators for various content types
|
||||||
|
- _Requirements: All requirements_
|
||||||
|
|
||||||
|
- [ ] 9. Final checkpoint and documentation
|
||||||
|
- Ensure all property tests pass with 100+ iterations each
|
||||||
|
- Validate system works with actual vault content
|
||||||
|
- Create usage documentation and configuration examples
|
||||||
|
- Ask the user if questions arise about final implementation
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Tasks marked with `*` are optional and can be skipped for faster MVP
|
||||||
|
- Each task references specific requirements for traceability
|
||||||
|
- Property tests validate universal correctness properties with randomized inputs
|
||||||
|
- Unit tests validate specific examples and edge cases
|
||||||
|
- The system preserves existing data and creates backups before modifications
|
||||||
|
- All components are designed to be modular and testable independently
|
||||||
Vendored
+2
-1
@@ -23,5 +23,6 @@
|
|||||||
"omnisearch",
|
"omnisearch",
|
||||||
"cmdr",
|
"cmdr",
|
||||||
"obsidian-tasks-plugin",
|
"obsidian-tasks-plugin",
|
||||||
"smart-connections"
|
"smart-connections",
|
||||||
|
"memos-sync"
|
||||||
]
|
]
|
||||||
Vendored
+15
-5
@@ -13,7 +13,7 @@
|
|||||||
"azureOpenAIApiVersion": "",
|
"azureOpenAIApiVersion": "",
|
||||||
"azureOpenAIApiEmbeddingDeploymentName": "",
|
"azureOpenAIApiEmbeddingDeploymentName": "",
|
||||||
"googleApiKey": "",
|
"googleApiKey": "",
|
||||||
"openRouterAiApiKey": "",
|
"openRouterAiApiKey": "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",
|
||||||
"xaiApiKey": "",
|
"xaiApiKey": "",
|
||||||
"mistralApiKey": "",
|
"mistralApiKey": "",
|
||||||
"deepseekApiKey": "",
|
"deepseekApiKey": "",
|
||||||
@@ -186,8 +186,8 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"isBuiltIn": true,
|
"isBuiltIn": true,
|
||||||
"capabilities": [
|
"capabilities": [
|
||||||
"reasoning",
|
"vision",
|
||||||
"vision"
|
"reasoning"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -245,14 +245,14 @@
|
|||||||
"name": "deepseek-ai/DeepSeek-V3",
|
"name": "deepseek-ai/DeepSeek-V3",
|
||||||
"provider": "siliconflow",
|
"provider": "siliconflow",
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"isBuiltIn": false,
|
"isBuiltIn": true,
|
||||||
"baseUrl": "https://api.siliconflow.com/v1"
|
"baseUrl": "https://api.siliconflow.com/v1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "deepseek-ai/DeepSeek-R1",
|
"name": "deepseek-ai/DeepSeek-R1",
|
||||||
"provider": "siliconflow",
|
"provider": "siliconflow",
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"isBuiltIn": false,
|
"isBuiltIn": true,
|
||||||
"baseUrl": "https://api.siliconflow.com/v1",
|
"baseUrl": "https://api.siliconflow.com/v1",
|
||||||
"capabilities": [
|
"capabilities": [
|
||||||
"reasoning"
|
"reasoning"
|
||||||
@@ -271,6 +271,16 @@
|
|||||||
],
|
],
|
||||||
"stream": true,
|
"stream": true,
|
||||||
"displayName": "kimi"
|
"displayName": "kimi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "deepseek/deepseek-v3.2",
|
||||||
|
"provider": "openrouterai",
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openai/gpt-5.1-codex",
|
||||||
|
"provider": "openrouterai",
|
||||||
|
"enabled": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"activeEmbeddingModels": [
|
"activeEmbeddingModels": [
|
||||||
|
|||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"dailyMemosHeader": "000-inbox/Memos",
|
||||||
|
"memosAPIVersion": "v0.24.0",
|
||||||
|
"memosAPIURL": "https://memos.windy.me",
|
||||||
|
"memosAPIToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6InYxIiwidHlwIjoiSldUIn0.eyJuYW1lIjoiemhpcWlhbmciLCJpc3MiOiJtZW1vcyIsInN1YiI6IjEiLCJhdWQiOlsidXNlci5hY2Nlc3MtdG9rZW4iXSwiaWF0IjoxNzY3NDA0MzY0fQ.SR4a3nn3myQUiPV3tJGLpKs_XgpFaOM_aK0i2CmNGoY",
|
||||||
|
"attachmentFolder": "Attachments"
|
||||||
|
}
|
||||||
Vendored
+23420
File diff suppressed because it is too large
Load Diff
+10
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "memos-sync",
|
||||||
|
"name": "Memos Sync",
|
||||||
|
"version": "0.5.2",
|
||||||
|
"minAppVersion": "1.5.12",
|
||||||
|
"description": "Syncing memos from a [Memos](https://github.com/usememos/memos) server to your daily note. Fully compatible with official Daily Notes plugin, Calendar plugin and Periodic Notes plugin.",
|
||||||
|
"author": "RyoJerryYu",
|
||||||
|
"authorUrl": "https://github.com/RyoJerryYu",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
This CSS file will be included with your plugin, and
|
||||||
|
available in the app when your plugin is enabled.
|
||||||
|
|
||||||
|
If your plugin does not need CSS, delete this file.
|
||||||
|
|
||||||
|
*/
|
||||||
Vendored
+69
-68
@@ -4,21 +4,21 @@
|
|||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "535cd3aee7a6c27d",
|
"id": "d21dc296bccb4add",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "e7acd6d53c22af38",
|
"id": "0ed7e2b47382c9c6",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "2025-12-29.md",
|
"file": "000-inbox/clippings/2023/03/《软件供应商手册:SBOM的生成和提供》解读 - FreeBuf网络安全行业门户.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "2025-12-29"
|
"title": "《软件供应商手册:SBOM的生成和提供》解读 - FreeBuf网络安全行业门户"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -104,17 +104,17 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "backlink",
|
"type": "backlink",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "100-project/Work/市发改委/deploy.md",
|
"file": "100-project/Infrastructure/Services/Soft Serve Git.md",
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
"extraContext": false,
|
"extraContext": false,
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
"showSearch": false,
|
"showSearch": true,
|
||||||
"searchQuery": "",
|
"searchQuery": "",
|
||||||
"backlinkCollapsed": false,
|
"backlinkCollapsed": true,
|
||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
},
|
},
|
||||||
"icon": "links-coming-in",
|
"icon": "links-coming-in",
|
||||||
"title": "Backlinks for deploy"
|
"title": "Backlinks for Soft Serve Git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -123,12 +123,12 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "outgoing-link",
|
"type": "outgoing-link",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "100-project/Work/市发改委/deploy.md",
|
"file": "100-project/Infrastructure/Services/Soft Serve Git.md",
|
||||||
"linksCollapsed": false,
|
"linksCollapsed": false,
|
||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
},
|
},
|
||||||
"icon": "links-going-out",
|
"icon": "links-going-out",
|
||||||
"title": "Outgoing links from deploy"
|
"title": "Outgoing links from Soft Serve Git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -137,13 +137,13 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Clippings/foxcode - NEW CLI.md",
|
"file": "100-project/Infrastructure/Services/Soft Serve Git.md",
|
||||||
"followCursor": false,
|
"followCursor": false,
|
||||||
"showSearch": false,
|
"showSearch": false,
|
||||||
"searchQuery": ""
|
"searchQuery": ""
|
||||||
},
|
},
|
||||||
"icon": "lucide-list",
|
"icon": "lucide-list",
|
||||||
"title": "Outline of foxcode - NEW CLI"
|
"title": "Outline of Soft Serve Git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -185,16 +185,6 @@
|
|||||||
"title": "advanced-tables-toolbar"
|
"title": "advanced-tables-toolbar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "cc04ddc44da03907",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "copilot-chat-view",
|
|
||||||
"state": {},
|
|
||||||
"icon": "lucide-ghost",
|
|
||||||
"title": "copilot-chat-view"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "e3e8a914deed352c",
|
"id": "e3e8a914deed352c",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
@@ -224,9 +214,19 @@
|
|||||||
"icon": "git-pull-request",
|
"icon": "git-pull-request",
|
||||||
"title": "Source Control"
|
"title": "Source Control"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "60e4e408e4363dc9",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "copilot-chat-view",
|
||||||
|
"state": {},
|
||||||
|
"icon": "message-square",
|
||||||
|
"title": "Copilot"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentTab": 9
|
"currentTab": 8
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
@@ -254,53 +254,54 @@
|
|||||||
"smart-connections:Smart Connections: Open random connection": false
|
"smart-connections:Smart Connections: Open random connection": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "ec72abdaaa8e91a6",
|
"active": "0ed7e2b47382c9c6",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"2025-12-29.md",
|
"000-inbox/Memos",
|
||||||
"Untitled.base",
|
"100-project/AI/Manus/Manus 简介使用.md",
|
||||||
"Untitled 1.base",
|
"conflict-files-obsidian-git.md",
|
||||||
"100-project/Personal/VPS/hk2.chans.xyz.md",
|
"tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc",
|
||||||
"000-inbox/clippings/2024/12/GitHub - DubhAdHome-AssistantConfig My Home Assistant configuration files.md",
|
"tests/__pycache__/test_models.cpython-314-pytest-9.0.2.pyc",
|
||||||
"100-project/Personal/VPS/https proxy.md",
|
"tests/__pycache__/test_interfaces.cpython-314-pytest-9.0.2.pyc",
|
||||||
"Clippings/foxcode - NEW CLI.md",
|
"tests/__pycache__/test_config.cpython-314-pytest-9.0.2.pyc",
|
||||||
"000-inbox/clippings/2024/06/机场推荐与机场评测SSRV2rayTrojan订阅(2024.6) - 机场推荐与机场评测.md",
|
"tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc",
|
||||||
"未命名 3.base",
|
"tests/__pycache__/__init__.cpython-314.pyc",
|
||||||
"未命名 2.base",
|
"tests/test_package_structure.py",
|
||||||
"100-project/Personal/VPS/us4.wsvc.info.md",
|
"tests/test_models.py",
|
||||||
"100-project/Personal/VPS/Bills.md",
|
"tests/test_interfaces.py",
|
||||||
"100-project/Personal/AI/open webui.md",
|
"tests/test_config.py",
|
||||||
"100-project/Personal/AI/local litellm.md",
|
"copilot/REMEDIATION_PLAN.md",
|
||||||
"100-project/Personal/AI/Zenmux.md",
|
"copilot/FINAL_SUMMARY_REPORT.md",
|
||||||
"100-project/Personal/AI/OpenRouter.md",
|
"copilot/CLAUDE.md",
|
||||||
"100-project/Personal/AI/Prompt/baibot.md",
|
"copilot/BATCH_4_5_CHANGE_REPORT.md",
|
||||||
"100-project/Personal/Software/AI/openrouter.md",
|
"copilot/BATCH_3_CHANGE_REPORT.md",
|
||||||
"100-project/Personal/AI/Matrix Bot.md",
|
"copilot/BATCH_2_CHANGE_REPORT.md",
|
||||||
"copilot/copilot-conversations/activeNote_把software下的ai和personal下的ai内容整理合并一下@20251205_104718.md",
|
"copilot/BATCH_1_CHANGE_REPORT.md",
|
||||||
"100-project/Personal/AI/x ai.md",
|
"README.md",
|
||||||
"100-project/Work/市发改委/维护.md",
|
"Excalidraw/Drawing 2025-12-30 19.55.02.excalidraw.md",
|
||||||
"100-project/Work/市发改委/login.md",
|
"400-archive/_duplicates/batch-2/在非原生ESIM设备上申请Giffgaff ESIM.md",
|
||||||
"100-project/Work/市发改委/production.md",
|
"400-archive/_duplicates/batch-2/better developers computers are cheap people are expensive.md",
|
||||||
"100-project/Work/市发改委/deploy.md",
|
"400-archive/_duplicates/batch-2/arc42-template-EN.md",
|
||||||
"100-project/Work/工信/处理.md",
|
"400-archive/_duplicates/batch-2/_README.md",
|
||||||
"100-project/Work/工信/Login.md",
|
"400-archive/_duplicates/batch-2/Mock Patching.md",
|
||||||
"100-project/Personal/AI/Kiro/in-memoria.md",
|
"400-archive/_duplicates/batch-2/ER-X.md",
|
||||||
"100-project/Personal/AI/Kiro",
|
"400-archive/_duplicates/batch-2/Database.md",
|
||||||
"100-project/Personal/AI/mcp.md",
|
"400-archive/_duplicates/batch-2/DNS.md",
|
||||||
"100-project/Personal/Hardware/Home Assistant",
|
"400-archive/_duplicates/batch-2/Better developers Using from X import Y in Python.md",
|
||||||
|
"400-archive/_duplicates/batch-2/2025.md",
|
||||||
|
"400-archive/_duplicates/System Architec/系统架构分析员知识体系.md",
|
||||||
|
"400-archive/_duplicates/System Architec/架构目标(Architecture Goals).md",
|
||||||
|
"400-archive/_duplicates/System Architec/决策方法.md",
|
||||||
|
"400-archive/_duplicates/System Architec/产出(Deliverables).md",
|
||||||
|
"300-resources/Personal Knowledge Management/arc42/images/arc42-logo.png",
|
||||||
|
"300-resources/Personal Knowledge Management/arc42/images/08-Crosscutting-Concepts-Structure-EN.png",
|
||||||
|
"300-resources/Personal Knowledge Management/arc42/images/05_building_blocks-EN.png",
|
||||||
|
"300-resources/Personal Knowledge Management/arc42/images/01_2_iso-25010-topics-EN.drawio.png",
|
||||||
|
"100-project/Work/工信/attachments/Pasted image 20240909145917.png",
|
||||||
|
"300-resources/Development/Architecture/arc42/images/arc42-logo.png",
|
||||||
|
"300-resources/Development/Architecture/arc42/images/08-Crosscutting-Concepts-Structure-EN.png",
|
||||||
|
"300-resources/Development/Architecture/arc42/images/05_building_blocks-EN.png",
|
||||||
|
"300-resources/Development/Architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png",
|
||||||
"ReadItLater Inbox/assets/math.png",
|
"ReadItLater Inbox/assets/math.png",
|
||||||
"ReadItLater Inbox/assets/medal.png",
|
|
||||||
"ReadItLater Inbox/assets/Code.png",
|
|
||||||
"ReadItLater Inbox/assets/Bike.png",
|
|
||||||
"ReadItLater Inbox/assets/beer.gif",
|
|
||||||
"未命名.base",
|
|
||||||
"未命名 1.base",
|
|
||||||
"Pasted image 20240909145917.png",
|
|
||||||
"100-project/Personal/resume",
|
|
||||||
"copilot/copilot-conversations",
|
|
||||||
"ReadItLater Inbox/assets/elec.png",
|
|
||||||
"ReadItLater Inbox/assets/Menu-1.png",
|
|
||||||
"ReadItLater Inbox/assets/bike-1.png",
|
|
||||||
"ReadItLater Inbox/assets/2dot6_o_demo_video_img.png",
|
|
||||||
"Untitled.canvas",
|
"Untitled.canvas",
|
||||||
"Untitled 1.canvas"
|
"Untitled 1.canvas"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"embedding_models:transformers#1766986877791": {"api_key":"","provider_key":"transformers","model_key":"TaylorAI/bge-micro-v2","dims":384,"max_tokens":512,"class_name":"EmbeddingModel","created_at":1766986877791,"key":"transformers#1766986877791"},
|
|
||||||
@@ -1,49 +1,35 @@
|
|||||||
|
"event_logs:settings:changed": {"key":"settings:changed","ct":8,"first_at":1767492337372,"last_at":1767492337447,"class_name":"EventLog"},
|
||||||
"event_logs:settings:changed": {"key":"settings:changed","ct":8,"first_at":1766986874718,"last_at":1766986874730,"class_name":"EventLog"},
|
"event_logs:event_log:first": {"key":"event_log:first","ct":4,"first_at":1767492337372,"last_at":1767492337445,"class_name":"EventLog"},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":4,"first_at":1766986874718,"last_at":1766986874729,"class_name":"EventLog"},
|
"event_logs:source:initial_scan_started": {"key":"source:initial_scan_started","ct":1,"first_at":1767492337372,"last_at":1767492337372,"class_name":"EventLog"},
|
||||||
"event_logs:source:initial_scan_started": {"key":"source:initial_scan_started","ct":1,"first_at":1766986874718,"last_at":1766986874718,"class_name":"EventLog"},
|
"event_logs:source:initial_scan_completed": {"key":"source:initial_scan_completed","ct":1,"first_at":1767492337445,"last_at":1767492337445,"class_name":"EventLog"},
|
||||||
"event_logs:source:initial_scan_completed": {"key":"source:initial_scan_completed","ct":1,"first_at":1766986874729,"last_at":1766986874729,"class_name":"EventLog"},
|
"event_logs:collection:load_started": {"key":"collection:load_started","ct":13,"first_at":1766986877733,"last_at":1767163590474,"class_name":"EventLog"},
|
||||||
"event_logs:settings:changed": {"key":"settings:changed","ct":11,"first_at":1766986874718,"last_at":1766986877791,"class_name":"EventLog"},
|
"event_logs:collection:load_completed": {"key":"collection:load_completed","ct":8,"first_at":1766986877736,"last_at":1767163590699,"class_name":"EventLog"},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":8,"first_at":1766986874718,"last_at":1766986877791,"class_name":"EventLog"},
|
"event_logs:collection:load_halted": {"key":"collection:load_halted","ct":7,"first_at":1766986877737,"last_at":1767163590473,"class_name":"EventLog"},
|
||||||
"event_logs:collection:load_started": {"key":"collection:load_started","ct":5,"first_at":1766986877733,"last_at":1766986877739,"class_name":"EventLog"},
|
"event_logs:sources:imported": {"key":"sources:imported","ct":1882,"first_at":1766986877786,"last_at":1767170791265,"class_name":"EventLog"},
|
||||||
"event_logs:collection:load_completed": {"key":"collection:load_completed","ct":2,"first_at":1766986877736,"last_at":1766986877783,"class_name":"EventLog"},
|
|
||||||
"event_logs:collection:load_halted": {"key":"collection:load_halted","ct":3,"first_at":1766986877737,"last_at":1766986877738,"class_name":"EventLog"},
|
|
||||||
"event_logs:sources:imported": {"key":"sources:imported","ct":448,"first_at":1766986877786,"last_at":1766986879408,"class_name":"EventLog"},
|
|
||||||
"event_logs:model:changed": {"key":"model:changed","ct":1,"first_at":1766986877791,"last_at":1766986877791,"class_name":"EventLog"},
|
"event_logs:model:changed": {"key":"model:changed","ct":1,"first_at":1766986877791,"last_at":1766986877791,"class_name":"EventLog"},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":11,"first_at":1766986874718,"last_at":1766986882899,"class_name":"EventLog"},
|
"event_logs:embed_model:load_failed": {"key":"embed_model:load_failed","ct":3,"first_at":1766986882626,"last_at":1767163592342,"class_name":"EventLog"},
|
||||||
"event_logs:embed_model:load_failed": {"key":"embed_model:load_failed","ct":1,"first_at":1766986882626,"last_at":1766986882626,"class_name":"EventLog"},
|
"event_logs:sources:import_completed": {"key":"sources:import_completed","ct":3,"first_at":1766986882852,"last_at":1767163592384,"class_name":"EventLog"},
|
||||||
"event_logs:sources:import_completed": {"key":"sources:import_completed","ct":1,"first_at":1766986882852,"last_at":1766986882852,"class_name":"EventLog"},
|
"event_logs:blocks:cleaned": {"key":"blocks:cleaned","ct":3,"first_at":1766986882899,"last_at":1767163592386,"class_name":"EventLog"},
|
||||||
"event_logs:blocks:cleaned": {"key":"blocks:cleaned","ct":1,"first_at":1766986882899,"last_at":1766986882899,"class_name":"EventLog"},
|
"event_logs:connections:opened": {"key":"connections:opened","ct":13,"first_at":1766986884102,"last_at":1766995048933,"class_name":"EventLog"},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":12,"first_at":1766986874718,"last_at":1766986884103,"class_name":"EventLog"},
|
"event_logs:sources:created": {"key":"sources:created","ct":598,"first_at":1766987075389,"last_at":1767170770210,"class_name":"EventLog","event_sources":{"obsidian:vault.create":598}},
|
||||||
"event_logs:connections:opened": {"key":"connections:opened","ct":2,"first_at":1766986884102,"last_at":1766986884117,"class_name":"EventLog"},
|
"event_logs:sources:modified": {"key":"sources:modified","ct":722,"first_at":1766987077711,"last_at":1767170769899,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":171,"obsidian:workspace.editor-change":551}},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":13,"first_at":1766986874718,"last_at":1766987075389,"class_name":"EventLog"},
|
"event_logs:sources:deleted": {"key":"sources:deleted","ct":357,"first_at":1766987089766,"last_at":1767170795682,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":357}},
|
||||||
"event_logs:sources:created": {"key":"sources:created","ct":1,"first_at":1766987075389,"last_at":1766987075389,"class_name":"EventLog","event_sources":{"obsidian:vault.create":1}},
|
"event_logs:sources:opened": {"key":"sources:opened","ct":43,"first_at":1766987105710,"last_at":1767170772447,"class_name":"EventLog","event_sources":{"active-leaf-change":43}},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":14,"first_at":1766986874718,"last_at":1766987077711,"class_name":"EventLog"},
|
"event_logs:sources:renamed": {"key":"sources:renamed","ct":3,"first_at":1766998541874,"last_at":1767163684484,"class_name":"EventLog","event_sources":{"obsidian:vault.rename":3}},
|
||||||
"event_logs:sources:created": {"key":"sources:created","ct":2,"first_at":1766987075389,"last_at":1766987077702,"class_name":"EventLog","event_sources":{"obsidian:vault.create":2}},
|
"event_logs:event_log:first": {"key":"event_log:first","ct":4,"first_at":1767492337372,"last_at":1767492337445,"class_name":"EventLog"},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":1,"first_at":1766987077711,"last_at":1766987077711,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":1}},
|
"event_logs:collection:load_started": {"key":"collection:load_started","ct":13,"first_at":1766986877733,"last_at":1767163590474,"class_name":"EventLog"},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":2,"first_at":1766987077711,"last_at":1766987081391,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":2}},
|
"event_logs:settings:changed": {"key":"settings:changed","ct":11,"first_at":1767492337372,"last_at":1767492342665,"class_name":"EventLog"},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":15,"first_at":1766986874718,"last_at":1766987089766,"class_name":"EventLog"},
|
"event_logs:collection:load_started": {"key":"collection:load_started","ct":17,"first_at":1766986877733,"last_at":1767492342193,"class_name":"EventLog"},
|
||||||
"event_logs:sources:deleted": {"key":"sources:deleted","ct":1,"first_at":1766987089766,"last_at":1766987089766,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":1}},
|
"event_logs:collection:load_completed": {"key":"collection:load_completed","ct":10,"first_at":1766986877736,"last_at":1767492342660,"class_name":"EventLog"},
|
||||||
"event_logs:sources:deleted": {"key":"sources:deleted","ct":2,"first_at":1766987089766,"last_at":1766987094937,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":2}},
|
"event_logs:collection:load_halted": {"key":"collection:load_halted","ct":10,"first_at":1766986877737,"last_at":1767492342193,"class_name":"EventLog"},
|
||||||
"event_logs:event_log:first": {"key":"event_log:first","ct":16,"first_at":1766986874718,"last_at":1766987105710,"class_name":"EventLog"},
|
"event_logs:sources:imported": {"key":"sources:imported","ct":2512,"first_at":1766986877786,"last_at":1767492345363,"class_name":"EventLog"},
|
||||||
"event_logs:sources:created": {"key":"sources:created","ct":3,"first_at":1766987075389,"last_at":1766987105674,"class_name":"EventLog","event_sources":{"obsidian:vault.create":3}},
|
"event_logs:model:changed": {"key":"model:changed","ct":2,"first_at":1766986877791,"last_at":1767492342665,"class_name":"EventLog"},
|
||||||
"event_logs:sources:opened": {"key":"sources:opened","ct":1,"first_at":1766987105710,"last_at":1766987105710,"class_name":"EventLog","event_sources":{"active-leaf-change":1}},
|
"event_logs:embed_model:load_failed": {"key":"embed_model:load_failed","ct":4,"first_at":1766986882626,"last_at":1767492347020,"class_name":"EventLog"},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":3,"first_at":1766987077711,"last_at":1766987133412,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":2,"obsidian:workspace.editor-change":1}},
|
"event_logs:sources:import_completed": {"key":"sources:import_completed","ct":4,"first_at":1766986882852,"last_at":1767492347250,"class_name":"EventLog"},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":7,"first_at":1766987077711,"last_at":1766987135416,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":3,"obsidian:workspace.editor-change":4}},
|
"event_logs:blocks:cleaned": {"key":"blocks:cleaned","ct":4,"first_at":1766986882899,"last_at":1767492347303,"class_name":"EventLog"},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":16,"first_at":1766987077711,"last_at":1766987140295,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":4,"obsidian:workspace.editor-change":12}},
|
"event_logs:event_log:first": {"key":"event_log:first","ct":5,"first_at":1767492337372,"last_at":1767492351211,"class_name":"EventLog"},
|
||||||
"event_logs:sources:imported": {"key":"sources:imported","ct":449,"first_at":1766986877786,"last_at":1766987142184,"class_name":"EventLog"},
|
"event_logs:plugin:new_version_available": {"key":"plugin:new_version_available","ct":1,"first_at":1767492351211,"last_at":1767492351211,"class_name":"EventLog"},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":24,"first_at":1766987077711,"last_at":1766987142109,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":5,"obsidian:workspace.editor-change":19}},
|
"event_logs:sources:created": {"key":"sources:created","ct":599,"first_at":1766987075389,"last_at":1767492820300,"class_name":"EventLog","event_sources":{"obsidian:vault.create":599}},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":34,"first_at":1766987077711,"last_at":1766987145892,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":7,"obsidian:workspace.editor-change":27}},
|
"event_logs:sources:renamed": {"key":"sources:renamed","ct":4,"first_at":1766998541874,"last_at":1767492823208,"class_name":"EventLog","event_sources":{"obsidian:vault.rename":4}},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":46,"first_at":1766987077711,"last_at":1766987150337,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":9,"obsidian:workspace.editor-change":37}},
|
"event_logs:sources:opened": {"key":"sources:opened","ct":44,"first_at":1766987105710,"last_at":1767492830312,"class_name":"EventLog","event_sources":{"active-leaf-change":44}},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":56,"first_at":1766987077711,"last_at":1766987152862,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":10,"obsidian:workspace.editor-change":46}},
|
"event_logs:sources:deleted": {"key":"sources:deleted","ct":362,"first_at":1766987089766,"last_at":1767493491926,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":362}},
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":57,"first_at":1766987077711,"last_at":1766987154420,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":11,"obsidian:workspace.editor-change":46}},
|
|
||||||
"event_logs:sources:imported": {"key":"sources:imported","ct":450,"first_at":1766986877786,"last_at":1766987156523,"class_name":"EventLog"},
|
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":58,"first_at":1766987077711,"last_at":1766987407748,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":11,"obsidian:workspace.editor-change":47}},
|
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":59,"first_at":1766987077711,"last_at":1766987408636,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":11,"obsidian:workspace.editor-change":48}},
|
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":60,"first_at":1766987077711,"last_at":1766987409752,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":12,"obsidian:workspace.editor-change":48}},
|
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":61,"first_at":1766987077711,"last_at":1766987414884,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":12,"obsidian:workspace.editor-change":49}},
|
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":62,"first_at":1766987077711,"last_at":1766987416887,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":13,"obsidian:workspace.editor-change":49}},
|
|
||||||
"event_logs:sources:imported": {"key":"sources:imported","ct":451,"first_at":1766986877786,"last_at":1766987420759,"class_name":"EventLog"},
|
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":95,"first_at":1766987077711,"last_at":1766987427062,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":14,"obsidian:workspace.editor-change":81}},
|
|
||||||
"event_logs:sources:modified": {"key":"sources:modified","ct":96,"first_at":1766987077711,"last_at":1766987428427,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":15,"obsidian:workspace.editor-change":81}},
|
|
||||||
"event_logs:sources:imported": {"key":"sources:imported","ct":452,"first_at":1766986877786,"last_at":1766987437279,"class_name":"EventLog"},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/Adding and trusting a Certificate Authority (CA) in Fedora – Antonio Maradiaga – Collection of things I'm interested in working on.md": {"path":"000-inbox/clippings/2023/03/Adding and trusting a Certificate Authority (CA) in Fedora – Antonio Maradiaga – Collection of things I'm interested in working on.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"kj2fle","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1680165620298,"size":1544,"at":1766986878359,"hash":"kj2fle"},"blocks":{"#---frontmatter---":[1,5],"##Adding and trusting a Certificate Authority (CA) in Fedora":[6,34],"##Adding and trusting a Certificate Authority (CA) in Fedora#{1}":[8,9],"##Adding and trusting a Certificate Authority (CA) in Fedora#{2}":[10,10],"##Adding and trusting a Certificate Authority (CA) in Fedora#{3}":[11,11],"##Adding and trusting a Certificate Authority (CA) in Fedora#{4}":[12,12],"##Adding and trusting a Certificate Authority (CA) in Fedora#{5}":[13,14],"##Adding and trusting a Certificate Authority (CA) in Fedora#{6}":[15,28],"##Adding and trusting a Certificate Authority (CA) in Fedora#References:":[29,34],"##Adding and trusting a Certificate Authority (CA) in Fedora#References:#{1}":[31,31],"##Adding and trusting a Certificate Authority (CA) in Fedora#References:#{2}":[32,33],"##Adding and trusting a Certificate Authority (CA) in Fedora#References:#{3}":[34,34]},"outlinks":[],"metadata":{"page-title":"Adding and trusting a Certificate Authority (CA) in Fedora – Antonio Maradiaga – Collection of things I'm interested in / working on","url":"https://ajmaradiaga.com/Adding-trusting-CA-Fedora/","date":"2023-03-30 16:40:18"},"task_lines":[],"tasks":{},"codeblock_ranges":[[17,27]]},
|
|
||||||
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/How do I install a root certificate - Ask Ubuntu.md": {"path":"000-inbox/clippings/2023/03/How do I install a root certificate - Ask Ubuntu.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"17pulqq","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1680165579340,"size":1452,"at":1766986878359,"hash":"17pulqq"},"blocks":{"#---frontmatter---":[1,5],"#":[7,62],"##{1}":[17,22],"##{2}":[23,28],"##{3}":[29,62]},"outlinks":[{"title":"\n\n![Sparky1's user avatar","target":"https://www.gravatar.com/avatar/6165bb851740276122c7ba3bf5310906?s=64&d=identicon&r=PG","line":7},{"title":"\n\n![BeastOfCaerbannog's user avatar","target":"https://i.stack.imgur.com/IRB44.jpg?s=64&g=1","line":54}],"metadata":{"page-title":"How do I install a root certificate? - Ask Ubuntu","url":"https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate","date":"2023-03-30 16:38:30"},"task_lines":[],"tasks":{},"codeblock_ranges":[[19,21],[25,27],[31,33],[37,39],[44,46],[50,52]]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/How to Install AMD OpenCL Mining Drivers on Debian 11 Bullseye.md": {"path":"000-inbox/clippings/2023/03/How to Install AMD OpenCL Mining Drivers on Debian 11 Bullseye.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"3crydx","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1679909271000,"size":4050,"at":1766986878359,"hash":"3crydx"},"blocks":{"#---frontmatter---":[1,5],"#":[6,27],"##Add Non-Free Repository Sources":[28,48],"##Add Non-Free Repository Sources#{1}":[30,48],"##Installing AMD GPU Firmware":[49,66],"##Installing AMD GPU Firmware#{1}":[51,66],"##Downloading AMD GPU OpenCL Drivers":[67,81],"##Downloading AMD GPU OpenCL Drivers#{1}":[69,81],"##Installing AMD GPU OpenCL Drivers":[82,100],"##Installing AMD GPU OpenCL Drivers#{1}":[84,100],"##Complete!":[101,105],"##Complete!#{1}":[103,105]},"outlinks":[{"title":"Rufus","target":"https://rufus.ie/en/","line":10},{"title":"Ventoy","target":"https://www.ventoy.net/","line":10},{"title":"Debian 11 Desktop installer image","target":"https://mlufdnrmzupp.i.optimole.com/w:800/h:600/q:mauto/f:avif/https://dazeb.uk/wp-content/uploads/2022/04/VirtualBox_debian_19_04_2022_00_12_15.png.webp","line":18,"embedded":true},{"title":"bottom of another guide I wrote","target":"https://dazeb.uk/how-to-install-amd-opencl-gpu-drivers-on-ubuntu-21-04-for-mining-ethereum/#corectl","line":105}],"metadata":{"page-title":"How to Install AMD OpenCL Mining Drivers on Debian 11 Bullseye","url":"https://dazeb.uk/how-to-install-amd-opencl-mining-drivers-on-debian-11/","date":"2023-03-27 17:27:49"},"task_lines":[],"tasks":{},"codeblock_ranges":[[36,47],[53,55],[59,61],[71,80],[86,88],[94,97]]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/Run an OpenWRT VM on Proxmox VE.md": {"path":"000-inbox/clippings/2023/03/Run an OpenWRT VM on Proxmox VE.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"wg7d4g","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1679935898000,"size":4394,"at":1766986878359,"hash":"wg7d4g"},"blocks":{"#---frontmatter---":[1,5],"##What is OpenWRT?":[6,9],"##What is OpenWRT?#{1}":[8,9],"##Creating the VM":[10,30],"##Creating the VM#{1}":[12,12],"##Creating the VM#{2}":[13,13],"##Creating the VM#{3}":[14,14],"##Creating the VM#{4}":[15,15],"##Creating the VM#{5}":[16,16],"##Creating the VM#{6}":[17,17],"##Creating the VM#{7}":[18,18],"##Creating the VM#{8}":[19,19],"##Creating the VM#{9}":[20,20],"##Creating the VM#{10}":[21,21],"##Creating the VM#{11}":[22,22],"##Creating the VM#{12}":[23,23],"##Creating the VM#{13}":[24,24],"##Creating the VM#{14}":[25,25],"##Creating the VM#{15}":[26,26],"##Creating the VM#{16}":[27,27],"##Creating the VM#{17}":[28,28],"##Creating the VM#{18}":[29,30],"##Setting Up the OpenWRT Disk":[31,87],"##Setting Up the OpenWRT Disk#{1}":[33,33],"##Setting Up the OpenWRT Disk#{2}":[34,34],"##Setting Up the OpenWRT Disk#{3}":[35,57],"##Setting Up the OpenWRT Disk#{4}":[37,57],"##Setting Up the OpenWRT Disk#{5}":[58,58],"##Setting Up the OpenWRT Disk#{6}":[59,59],"##Setting Up the OpenWRT Disk#{7}":[60,60],"##Setting Up the OpenWRT Disk#{8}":[61,61],"##Setting Up the OpenWRT Disk#{9}":[62,62],"##Setting Up the OpenWRT Disk#{10}":[63,63],"##Setting Up the OpenWRT Disk#{11}":[64,64],"##Setting Up the OpenWRT Disk#{12}":[65,65],"##Setting Up the OpenWRT Disk#{13}":[66,66],"##Setting Up the OpenWRT Disk#{14}":[67,67],"##Setting Up the OpenWRT Disk#{15}":[68,68],"##Setting Up the OpenWRT Disk#{16}":[69,70],"##Setting Up the OpenWRT Disk#{17}":[71,72],"##Setting Up the OpenWRT Disk#{18}":[73,73],"##Setting Up the OpenWRT Disk#{19}":[74,75],"##Setting Up the OpenWRT Disk#{20}":[76,84],"##Setting Up the OpenWRT Disk#{21}":[85,85],"##Setting Up the OpenWRT Disk#{22}":[86,86],"##Setting Up the OpenWRT Disk#{23}":[87,87]},"outlinks":[{"title":"https://en.wikipedia.org/wiki/OpenWrt","target":"https://en.wikipedia.org/wiki/OpenWrt","line":8}],"metadata":{"page-title":"Run an OpenWRT VM on Proxmox VE","url":"https://i12bretro.github.io/tutorials/0405.html","date":"2023-03-27 23:56:45"},"task_lines":[],"tasks":{},"codeblock_ranges":[[37,56]]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/SSL with self signed certificate - Drone Support - Harness Community.md": {"path":"000-inbox/clippings/2023/03/SSL with self signed certificate - Drone Support - Harness Community.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"yr7n9g","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1680167862633,"size":882,"at":1766986878359,"hash":"yr7n9g"},"blocks":{"#---frontmatter---":[1,5],"#":[7,29]},"outlinks":[],"metadata":{"page-title":"SSL with self signed certificate - Drone Support - Harness Community","url":"https://community.harness.io/t/ssl-with-self-signed-certificate/11416/3","date":"2023-03-30 17:16:40"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/Scope and Shadowing - Rust By Example.md": {"path":"000-inbox/clippings/2023/03/Scope and Shadowing - Rust By Example.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"ff64nu","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1679551268645,"size":1576,"at":1766986878359,"hash":"ff64nu"},"blocks":{"#---frontmatter---":[1,5],"##[Scope and Shadowing](https://doc.rust-lang.org/rust-by-example/variable_bindings/scope.html#scope-and-shadowing)":[6,55],"##[Scope and Shadowing](https://doc.rust-lang.org/rust-by-example/variable_bindings/scope.html#scope-and-shadowing)#{1}":[8,55]},"outlinks":[{"title":"Scope and Shadowing","target":"https://doc.rust-lang.org/rust-by-example/variable_bindings/scope.html#scope-and-shadowing","line":6},{"title":"variable shadowing","target":"https://en.wikipedia.org/wiki/Variable_shadowing","line":32}],"metadata":{"page-title":"Scope and Shadowing - Rust By Example","url":"https://doc.rust-lang.org/rust-by-example/variable_bindings/scope.html","date":"2023-03-23 13:59:16"},"task_lines":[],"tasks":{},"codeblock_ranges":[[10,30],[34,53]]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/《软件供应商手册:SBOM的生成和提供》解读 - FreeBuf网络安全行业门户.md": {"path":"000-inbox/clippings/2023/03/《软件供应商手册:SBOM的生成和提供》解读 - FreeBuf网络安全行业门户.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"jnl4cl","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1678152708000,"size":12413,"at":1766986878359,"hash":"jnl4cl"},"blocks":{"#---frontmatter---":[1,5],"##专栏·供应链安全":[6,15],"##专栏·供应链安全#{1}":[8,15],"##**摘要**":[16,19],"##**摘要**#{1}":[18,19],"##**背景解读**":[20,27],"##**背景解读**#{1}":[22,27],"##**正文解读**":[28,106],"##**正文解读**#{1}":[30,31],"##**正文解读**#**01** **以有效性为最终目标,总结了SBOM生成的工作流程**":[32,39],"##**正文解读**#**01** **以有效性为最终目标,总结了SBOM生成的工作流程**#{1}":[34,39],"##**正文解读**#**02** **以构建为阶段划分点,讨论了SBOM构造的主要方法**":[40,94],"##**正文解读**#**02** **以构建为阶段划分点,讨论了SBOM构造的主要方法**#{1}":[42,85],"##**正文解读**#**02** **以构建为阶段划分点,讨论了SBOM构造的主要方法**#{2}":[86,88],"##**正文解读**#**02** **以构建为阶段划分点,讨论了SBOM构造的主要方法**#{3}":[89,91],"##**正文解读**#**02** **以构建为阶段划分点,讨论了SBOM构造的主要方法**#{4}":[92,94],"##**正文解读**#**03** **以安全性为出发点,分析了SBOM应包含的内外依赖**":[95,100],"##**正文解读**#**03** **以安全性为出发点,分析了SBOM应包含的内外依赖**#{1}":[97,100],"##**正文解读**#**04** **以可操作性为目的,列举了SBOM验证的工具和标准**":[101,106],"##**正文解读**#**04** **以可操作性为目的,列举了SBOM验证的工具和标准**#{1}":[103,106],"##**影响及趋势预判**":[107,114],"##**影响及趋势预判**#{1}":[109,114],"##**总结及对策建议**":[115,134],"##**总结及对策建议**#{1}":[117,118],"##**总结及对策建议**#{2}":[119,121],"##**总结及对策建议**#{3}":[122,124],"##**总结及对策建议**#{4}":[125,127],"##**总结及对策建议**#{5}":[128,134]},"outlinks":[],"metadata":{"page-title":"《软件供应商手册:SBOM的生成和提供》解读 - FreeBuf网络安全行业门户","url":"https://m.freebuf.com/articles/neopoints/331333.html","date":"2023-03-07 09:30:14"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/什麼是SBOM (軟體物料清單)? - 網路安全解決方案 - 艾索科技.md": {"path":"000-inbox/clippings/2023/03/什麼是SBOM (軟體物料清單)? - 網路安全解決方案 - 艾索科技.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"qwdqbf","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1678152033000,"size":6780,"at":1766986878359,"hash":"qwdqbf"},"blocks":{"#---frontmatter---":[1,5],"##**什麼是SBOM(軟體物料清單)?**":[6,11],"##**什麼是SBOM(軟體物料清單)?**#{1}":[8,11],"##**供應鏈安全和 SBOM**":[12,19],"##**供應鏈安全和 SBOM**#{1}":[14,19],"##**經典案例:SOLARWINDS 和 LOG4SHELL**":[20,27],"##**經典案例:SOLARWINDS 和 LOG4SHELL**#{1}":[22,27],"##**美國拜登總統的網絡安全行政命令 (EO 14028) 使 SBOM 成為必要**":[28,33],"##**美國拜登總統的網絡安全行政命令 (EO 14028) 使 SBOM 成為必要**#{1}":[30,33],"##**SBOM 使用案例**":[34,55],"##**SBOM 使用案例**#{1}":[36,39],"##**SBOM 使用案例**#{2}":[40,41],"##**SBOM 使用案例**#{3}":[42,43],"##**SBOM 使用案例**#{4}":[44,45],"##**SBOM 使用案例**#{5}":[46,47],"##**SBOM 使用案例**#{6}":[48,49],"##**SBOM 使用案例**#{7}":[50,51],"##**SBOM 使用案例**#{8}":[52,53],"##**SBOM 使用案例**#{9}":[54,55],"##**數位孿生技術協助建立精準的SBOM**":[56,59],"##**數位孿生技術協助建立精準的SBOM**#{1}":[58,59],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**":[60,95],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{1}":[62,65],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{2}":[66,68],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{3}":[69,70],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{4}":[71,73],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{5}":[74,75],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{6}":[76,78],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{7}":[79,80],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{8}":[81,83],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{9}":[84,85],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{10}":[86,87],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{11}":[88,93],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{12}":[94,94],"##**艾索科技協助您進行 SBOM (軟體物料清單) 管理**#{13}":[95,95]},"outlinks":[{"title":"艾索科技聯繫","target":"https://www.aisol.com.tw/index.php?action=contact","line":90}],"metadata":{"page-title":"什麼是SBOM (軟體物料清單)? - 網路安全解決方案 - 艾索科技","url":"https://www.aisol.com.tw/index.php?action=solution&cid=23&id=197","date":"2023-03-07 09:20:31"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/关于软件物料清单(SBOM),你所需要了解的一切 - Seal软件 - 博客园.md": {"path":"000-inbox/clippings/2023/03/关于软件物料清单(SBOM),你所需要了解的一切 - Seal软件 - 博客园.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"9ca5dh","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1678152475000,"size":14046,"at":1766986878359,"hash":"9ca5dh"},"blocks":{"#---frontmatter---":[1,5],"#":[6,8],"##SBOM所包含的元素":[9,93],"##SBOM所包含的元素#{1}":[11,12],"##SBOM所包含的元素#{2}":[13,14],"##SBOM所包含的元素#{3}":[15,16],"##SBOM所包含的元素#{4}":[17,19],"##SBOM所包含的元素#{5}":[20,21],"##SBOM所包含的元素#数据字段":[22,43],"##SBOM所包含的元素#数据字段#{1}":[24,28],"##SBOM所包含的元素#数据字段#{2}":[29,30],"##SBOM所包含的元素#数据字段#{3}":[31,32],"##SBOM所包含的元素#数据字段#{4}":[33,34],"##SBOM所包含的元素#数据字段#{5}":[35,36],"##SBOM所包含的元素#数据字段#{6}":[37,38],"##SBOM所包含的元素#数据字段#{7}":[39,40],"##SBOM所包含的元素#数据字段#{8}":[41,43],"##SBOM所包含的元素#自动化支持":[44,64],"##SBOM所包含的元素#自动化支持#{1}":[46,53],"##SBOM所包含的元素#自动化支持#{2}":[54,55],"##SBOM所包含的元素#自动化支持#{3}":[56,57],"##SBOM所包含的元素#自动化支持#{4}":[58,61],"##SBOM所包含的元素#自动化支持#{5}":[62,64],"##SBOM所包含的元素#实践和流程":[65,93],"##SBOM所包含的元素#实践和流程#{1}":[67,68],"##SBOM所包含的元素#实践和流程#{2}":[69,69],"##SBOM所包含的元素#实践和流程#{3}":[70,73],"##SBOM所包含的元素#实践和流程#{4}":[74,74],"##SBOM所包含的元素#实践和流程#{5}":[75,78],"##SBOM所包含的元素#实践和流程#{6}":[79,79],"##SBOM所包含的元素#实践和流程#{7}":[80,83],"##SBOM所包含的元素#实践和流程#{8}":[84,86],"##SBOM所包含的元素#实践和流程#{9}":[87,89],"##SBOM所包含的元素#实践和流程#{10}":[90,93],"##SBOM交付格式及规范":[94,145],"##SBOM交付格式及规范#{1}":[96,101],"##SBOM交付格式及规范#SPDX":[102,115],"##SBOM交付格式及规范#SPDX#{1}":[104,106],"##SBOM交付格式及规范#SPDX#{2}":[107,107],"##SBOM交付格式及规范#SPDX#{3}":[108,108],"##SBOM交付格式及规范#SPDX#{4}":[109,109],"##SBOM交付格式及规范#SPDX#{5}":[110,112],"##SBOM交付格式及规范#SPDX#{6}":[113,115],"##SBOM交付格式及规范#SWID Tags":[116,132],"##SBOM交付格式及规范#SWID Tags#{1}":[118,119],"##SBOM交付格式及规范#SWID Tags#{2}":[120,120],"##SBOM交付格式及规范#SWID Tags#{3}":[121,121],"##SBOM交付格式及规范#SWID Tags#{4}":[122,122],"##SBOM交付格式及规范#SWID Tags#{5}":[123,125],"##SBOM交付格式及规范#SWID Tags#{6}":[126,132],"##SBOM交付格式及规范#Cyclone DX":[133,145],"##SBOM交付格式及规范#Cyclone DX#{1}":[135,139],"##SBOM交付格式及规范#Cyclone DX#{2}":[140,140],"##SBOM交付格式及规范#Cyclone DX#{3}":[141,141],"##SBOM交付格式及规范#Cyclone DX#{4}":[142,142],"##SBOM交付格式及规范#Cyclone DX#{5}":[143,145],"##谁是SBOM的目标受众?":[146,159],"##谁是SBOM的目标受众?#{1}":[148,149],"##谁是SBOM的目标受众?#安全团队":[150,154],"##谁是SBOM的目标受众?#安全团队#{1}":[152,154],"##谁是SBOM的目标受众?#开发团队":[155,159],"##谁是SBOM的目标受众?#开发团队#{1}":[157,159],"##SBOM 的应用场景":[160,169],"##SBOM 的应用场景#{1}":[162,164],"##SBOM 的应用场景#{2}":[165,165],"##SBOM 的应用场景#{3}":[166,166],"##SBOM 的应用场景#{4}":[167,169],"##全面管理 SBOM 的最佳实践":[170,198],"##全面管理 SBOM 的最佳实践#{1}":[172,198],"##借助工具生成SBOM":[199,203],"##借助工具生成SBOM#{1}":[201,203]},"outlinks":[{"title":"https://github.com/spdx/spdx-spec/tree/development/v2.2.1/schemas)","target":"https://github.com/spdx/spdx-spec/tree/development/v2.2.1/schemas%EF%BC%89","line":107},{"title":"seal.io/trail","target":"https://www.cnblogs.com/sealio/p/seal.io/trail","line":113},{"title":"https://www.iso.org/standard/65666.html","target":"https://www.iso.org/standard/65666.html","line":130}],"metadata":{"page-title":"关于软件物料清单(SBOM),你所需要了解的一切 - Seal软件 - 博客园","url":"https://www.cnblogs.com/sealio/p/16891458.html","date":"2023-03-07 09:27:54"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/关于软件物料清单(SBOM),你所需要了解的一切 - 掘金.md": {"path":"000-inbox/clippings/2023/03/关于软件物料清单(SBOM),你所需要了解的一切 - 掘金.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1atx1ve","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1679563981556,"size":14195,"at":1766986878359,"hash":"1atx1ve"},"blocks":{"#---frontmatter---":[1,5],"#":[6,7],"##SBOM所包含的元素":[8,75],"##SBOM所包含的元素#{1}":[10,11],"##SBOM所包含的元素#{2}":[12,13],"##SBOM所包含的元素#{3}":[14,15],"##SBOM所包含的元素#{4}":[16,18],"##SBOM所包含的元素#{5}":[19,20],"##SBOM所包含的元素#数据字段":[21,41],"##SBOM所包含的元素#数据字段#{1}":[23,26],"##SBOM所包含的元素#数据字段#{2}":[27,28],"##SBOM所包含的元素#数据字段#{3}":[29,30],"##SBOM所包含的元素#数据字段#{4}":[31,32],"##SBOM所包含的元素#数据字段#{5}":[33,34],"##SBOM所包含的元素#数据字段#{6}":[35,36],"##SBOM所包含的元素#数据字段#{7}":[37,38],"##SBOM所包含的元素#数据字段#{8}":[39,41],"##SBOM所包含的元素#自动化支持":[42,58],"##SBOM所包含的元素#自动化支持#{1}":[44,49],"##SBOM所包含的元素#自动化支持#{2}":[50,51],"##SBOM所包含的元素#自动化支持#{3}":[52,53],"##SBOM所包含的元素#自动化支持#{4}":[54,56],"##SBOM所包含的元素#自动化支持#{5}":[57,58],"##SBOM所包含的元素#实践和流程":[59,75],"##SBOM所包含的元素#实践和流程#{1}":[61,62],"##SBOM所包含的元素#实践和流程#{2}":[63,64],"##SBOM所包含的元素#实践和流程#{3}":[65,66],"##SBOM所包含的元素#实践和流程#{4}":[67,68],"##SBOM所包含的元素#实践和流程#{5}":[69,70],"##SBOM所包含的元素#实践和流程#{6}":[71,72],"##SBOM所包含的元素#实践和流程#{7}":[73,75],"##SBOM交付格式及规范":[76,121],"##SBOM交付格式及规范#{1}":[78,81],"##SBOM交付格式及规范#SPDX":[82,97],"##SBOM交付格式及规范#SPDX#{1}":[84,89],"##SBOM交付格式及规范#SPDX#{2}":[90,90],"##SBOM交付格式及规范#SPDX#{3}":[91,91],"##SBOM交付格式及规范#SPDX#{4}":[92,92],"##SBOM交付格式及规范#SPDX#{5}":[93,93],"##SBOM交付格式及规范#SPDX#{6}":[94,95],"##SBOM交付格式及规范#SPDX#{7}":[96,97],"##SBOM交付格式及规范#SWID Tags":[98,110],"##SBOM交付格式及规范#SWID Tags#{1}":[100,101],"##SBOM交付格式及规范#SWID Tags#{2}":[102,102],"##SBOM交付格式及规范#SWID Tags#{3}":[103,103],"##SBOM交付格式及规范#SWID Tags#{4}":[104,104],"##SBOM交付格式及规范#SWID Tags#{5}":[105,106],"##SBOM交付格式及规范#SWID Tags#{6}":[107,110],"##SBOM交付格式及规范#Cyclone DX":[111,121],"##SBOM交付格式及规范#Cyclone DX#{1}":[113,116],"##SBOM交付格式及规范#Cyclone DX#{2}":[117,117],"##SBOM交付格式及规范#Cyclone DX#{3}":[118,118],"##SBOM交付格式及规范#Cyclone DX#{4}":[119,119],"##SBOM交付格式及规范#Cyclone DX#{5}":[120,121],"##谁是SBOM的目标受众?":[122,133],"##谁是SBOM的目标受众?#{1}":[124,125],"##谁是SBOM的目标受众?#安全团队":[126,129],"##谁是SBOM的目标受众?#安全团队#{1}":[128,129],"##谁是SBOM的目标受众?#开发团队":[130,133],"##谁是SBOM的目标受众?#开发团队#{1}":[132,133],"##SBOM 的应用场景":[134,141],"##SBOM 的应用场景#{1}":[136,137],"##SBOM 的应用场景#{2}":[138,138],"##SBOM 的应用场景#{3}":[139,139],"##SBOM 的应用场景#{4}":[140,141],"##全面管理 SBOM 的最佳实践":[142,159],"##全面管理 SBOM 的最佳实践#{1}":[144,159],"##借助工具生成SBOM":[160,164],"##借助工具生成SBOM#{1}":[162,164]},"outlinks":[{"title":"1.png","target":"https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2002f823f7534b0e8f10630c84913355~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp?","line":86,"embedded":true},{"title":"github.com/spdx/spdx-s…","target":"https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fspdx%2Fspdx-spec%2Ftree%2Fdevelopment%2Fv2.2.1%2Fschemas%25EF%25BC%2589 \"https://github.com/spdx/spdx-spec/tree/development/v2.2.1/schemas%EF%BC%89\"","line":91},{"title":"seal.io/trail","target":"https://link.juejin.cn/?target=seal.io%2Ftrail \"seal.io/trail\"","line":96},{"title":"www.iso.org/standard/65…","target":"https://link.juejin.cn/?target=https%3A%2F%2Fwww.iso.org%2Fstandard%2F65666.html \"https://www.iso.org/standard/65666.html\"","line":109},{"title":"2.png","target":"https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f1e8fc7f24dd4464b071eb2de35aa749~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp?","line":164,"embedded":true}],"metadata":{"page-title":"关于软件物料清单(SBOM),你所需要了解的一切 - 掘金","url":"https://juejin.cn/post/7166054417819500580","date":"2023-03-23 17:32:57"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/如何使用微软的开源工具生成 SBOM - 知乎.md": {"path":"000-inbox/clippings/2023/03/如何使用微软的开源工具生成 SBOM - 知乎.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"4o4orq","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1678152205000,"size":6823,"at":1766986878359,"hash":"4o4orq"},"blocks":{"#---frontmatter---":[1,5],"#":[6,14],"##入门":[15,26],"##入门#{1}":[17,26],"##生成 SBOM":[27,56],"##生成 SBOM#{1}":[29,30],"##生成 SBOM#{2}":[31,32],"##生成 SBOM#{3}":[33,34],"##生成 SBOM#{4}":[35,37],"##生成 SBOM#{5}":[38,39],"##生成 SBOM#{6}":[40,41],"##生成 SBOM#{7}":[42,44],"##生成 SBOM#{8}":[45,56],"##SBOM 内容":[57,76],"##SBOM 内容#{1}":[59,64],"##SBOM 内容#{2}":[65,66],"##SBOM 内容#{3}":[67,68],"##SBOM 内容#{4}":[69,70],"##SBOM 内容#{5}":[71,73],"##SBOM 内容#{6}":[74,76],"##扫描 Docker 图像":[77,84],"##扫描 Docker 图像#{1}":[79,84],"##概括":[85,89],"##概括#{1}":[87,89]},"outlinks":[],"metadata":{"page-title":"如何使用微软的开源工具生成 SBOM - 知乎","url":"https://zhuanlan.zhihu.com/p/571994012","date":"2023-03-07 09:23:23"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/如何通过SBOM(软件物料清单)实现安全治理_墨菲安全.md": {"path":"000-inbox/clippings/2023/03/如何通过SBOM(软件物料清单)实现安全治理_墨菲安全.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"soncgo","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1678152365000,"size":9679,"at":1766986878359,"hash":"soncgo"},"blocks":{"#---frontmatter---":[1,5],"#":[6,7],"##前言":[8,11],"##前言#{1}":[10,11],"##什么是SBOM":[12,35],"##什么是SBOM#{1}":[14,17],"##什么是SBOM#{2}":[18,18],"##什么是SBOM#{3}":[19,19],"##什么是SBOM#{4}":[20,21],"##什么是SBOM#{5}":[22,35],"##SBOM的用途":[36,43],"##SBOM的用途#{1}":[38,39],"##SBOM的用途#{2}":[40,40],"##SBOM的用途#{3}":[41,41],"##SBOM的用途#{4}":[42,43],"##依赖治理":[44,53],"##依赖治理#{1}":[46,53],"##漏洞管理":[54,65],"##漏洞管理#{1}":[56,65],"##开源许可证合规":[66,75],"##开源许可证合规#{1}":[68,75],"##如何生成SBOM":[76,79],"##如何生成SBOM#{1}":[78,79],"##SCA(软件成分分析)":[80,87],"##SCA(软件成分分析)#{1}":[82,87],"##知识库数据":[88,93],"##知识库数据#{1}":[90,93],"##如何发挥SBOM的作用":[94,97],"##如何发挥SBOM的作用#{1}":[96,97],"##SBOM及时更新":[98,103],"##SBOM及时更新#{1}":[100,103],"##通过知识库关联风险数据":[104,109],"##通过知识库关联风险数据#{1}":[106,109],"##构建管理平台":[110,117],"##构建管理平台#{1}":[112,117],"##要求供应商提供SBOM":[118,121],"##要求供应商提供SBOM#{1}":[120,121],"##总结":[122,125],"##总结#{1}":[124,125],"##参考链接":[126,134],"##参考链接#{1}":[128,134]},"outlinks":[{"title":"墨菲安全","target":"https://www.murphysec.com/blog/author/chenshuang","line":6},{"title":"知识普及","target":"https://www.murphysec.com/blog/category/knowledge-popularization","line":6},{"title":"![如何通过SBOM(软件物料清单)实现安全治理","target":"https://www.murphysec.com/blog/wp-content/uploads/2023/01/asynccode-89.png","line":26},{"title":"![如何通过SBOM(软件物料清单)实现安全治理","target":"https://www.murphysec.com/blog/wp-content/uploads/2023/01/asynccode-90.png","line":30},{"title":"![如何通过SBOM(软件物料清单)实现安全治理","target":"https://www.murphysec.com/blog/wp-content/uploads/2023/01/asynccode-91.png","line":48},{"title":"https://www.ntia.gov/SBOM","target":"https://www.ntia.gov/SBOM","line":128},{"title":"https://www.ntia.gov/blog/2021/ntia-releases-minimum-elements-software-bill-materials","target":"https://www.ntia.gov/blog/2021/ntia-releases-minimum-elements-software-bill-materials","line":130},{"title":"https://linuxfoundation.org/wp-content/uploads/LFResearch\\_SBOM\\_Report\\_020422.pdf","target":"https://linuxfoundation.org/wp-content/uploads/LFResearch_SBOM_Report_020422.pdf","line":132}],"metadata":{"page-title":"如何通过SBOM(软件物料清单)实现安全治理_墨菲安全","url":"https://www.murphysec.com/blog/knowledge-popularization/4218.html","date":"2023-03-07 09:26:04"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/联想移动互联及数字家庭产品服务支持.md": {"path":"000-inbox/clippings/2023/03/联想移动互联及数字家庭产品服务支持.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1526070","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1679277532893,"size":449,"at":1766986878359,"hash":"1526070"},"blocks":{"#---frontmatter---":[1,5],"#":[6,16]},"outlinks":[],"metadata":{"page-title":"联想移动互联及数字家庭产品服务支持","url":"https://m.lenovocare.com.cn/ServiceStation.aspx","date":"2023-03-20 09:58:49"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/03/需要考虑的8种顶级SBOM工具 CN-SEC 中文网.md": {"path":"000-inbox/clippings/2023/03/需要考虑的8种顶级SBOM工具 CN-SEC 中文网.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1bc77n2","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1678152278000,"size":10868,"at":1766986878359,"hash":"1bc77n2"},"blocks":{"#---frontmatter---":[1,5],"#":[6,139],"##{1}":[24,25],"##{2}":[26,27],"##{3}":[28,29],"##{4}":[30,31],"##{5}":[32,33],"##{6}":[34,44],"##{7}":[45,46],"##{8}":[47,48],"##{9}":[49,61],"##{10}":[62,63],"##{11}":[64,65],"##{12}":[66,67],"##{13}":[68,69],"##{14}":[70,71],"##{15}":[72,73],"##{16}":[74,139]},"outlinks":[{"title":"软件供应链","target":"https://cn-sec.com/archives/tag/%e8%bd%af%e4%bb%b6%e4%be%9b%e5%ba%94%e9%93%be","line":6},{"title":"需要考虑的8种顶级SBOM工具","target":"http://mp.weixin.qq.com/s?__biz=Mzg3NjU4MDI4NQ==&mid=2247485274&idx=1&sn=f2a88efe23d60e9b22fa13b25663859f&chksm=cf315b88f846d29e713f4dc5cf4806184e3dd4de8268b586b4df42b6e6b3057ba5cf6eba2642&scene=126&sessionid=1661129128&key=42fda77b115ac87d8e8f45476ebf6fc3853c4ca79e53943c9bb46957f197f30e323f4524f5e1024d6caf03fc6e53a7c8ffd6a3e44a7f9d8a9f3c5d86518e202273511a2bd9a3f2f527672e88c0950fd53a2c1f5937d043e9cfd126d131c69708b4962163ce84361c3a97232fe0d2249b9cab1d632372630108f775f16b6e7b72&ascene=15&uin=NTY2NTA4NjQ%3D&devicetype=Windows+10+x64&version=6307051f&lang=zh_CN&session_us=gh_c2b78e839fd7&exportkey=AwGngfClmceA4%2BIRnQr6V0g%3D&acctmode=0&pass_ticket=uyfgm43O%2Bnte37Omf7S0pmG8umA%2F6CVPJp%2FegyZGM04etQwzjCVeYLTpeBxJ%2BLOq&wx_header=0&fontgear=2","line":133}],"metadata":{"page-title":"需要考虑的8种顶级SBOM工具 | CN-SEC 中文网","url":"https://cn-sec.com/archives/1247429.html","date":"2023-03-07 09:24:33"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/10 Ways to Generate a Random Password from the Linux Command Line.md": {"path":"000-inbox/clippings/2023/04/10 Ways to Generate a Random Password from the Linux Command Line.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"qwb4wl","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1682042523000,"size":5300,"at":1766986878359,"hash":"qwb4wl"},"blocks":{"#---frontmatter---":[1,5],"#":[6,97],"##{1}":[88,88],"##{2}":[89,89],"##{3}":[90,90],"##{4}":[91,91],"##{5}":[92,92],"##{6}":[93,93],"##{7}":[94,94],"##{8}":[95,97]},"outlinks":[{"title":"Command-Line Fu","target":"https://www.commandlinefu.com/commands/matching/random-password/cmFuZG9tIHBhc3N3b3Jk/sort-by-votes","line":10},{"title":"Cygwin","target":"https://www.cygwin.com/","line":10},{"title":"LastPass","target":"https://lastpass.wo8g.net/vrA3j?subid3=xid:fr1682042521aaa","line":16},{"title":":alnum:","target":":alnum:","line":45},{"title":"The Best Password Tips to Keep Your Accounts Secure","target":"https://www.howtogeek.com/103560/the-best-password-tips-to-keep-your-accounts-secure/","line":88},{"title":"The Top 10 Tips for Securing Your Data","target":"https://www.howtogeek.com/108033/the-top-10-tips-for-securing-your-data/","line":89},{"title":"How to SSH Into Your Raspberry Pi","target":"https://www.howtogeek.com/768053/how-to-ssh-into-your-raspberry-pi/","line":90},{"title":"The 20 Best How-To Geek Linux Articles of 2010","target":"https://www.howtogeek.com/39595/the-20-best-how-to-geek-linux-articles-of-2010/","line":91},{"title":"How to Add Users on Linux","target":"https://www.howtogeek.com/806104/add-a-user-to-linux/","line":92},{"title":"Acer’s New Ultrawide Monitors Have USB-C, Up to 175 Hz","target":"https://www.howtogeek.com/887057/acers-new-ultrawide-monitors-have-usb-c-up-to-175-hz/","line":93},{"title":"Acer Couldn’t Make This RTX 4090 Gaming PC Any Smaller","target":"https://www.howtogeek.com/886923/acer-couldnt-make-this-rtx-4090-gaming-pc-any-smaller/","line":94},{"title":"Netflix Is Upgrading Its Ad-Supported Plan","target":"https://www.howtogeek.com/887035/netflix-is-upgrading-its-ad-supported-plan/","line":95},{"title":"Want to know more?","target":"https://www.howtogeek.com/about/","line":97}],"metadata":{"page-title":"10 Ways to Generate a Random Password from the Linux Command Line","url":"https://www.howtogeek.com/30184/10-ways-to-generate-a-random-password-from-the-command-line/","date":"2023-04-21 10:02:01"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/5 Ways to Empty or Delete a Large File Content in Linux.md": {"path":"000-inbox/clippings/2023/04/5 Ways to Empty or Delete a Large File Content in Linux.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"ivh5op","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1681804466000,"size":6910,"at":1766986878359,"hash":"ivh5op"},"blocks":{"#---frontmatter---":[1,5],"#":[6,13],"###1\\. Empty File Content by Redirecting to Null":[14,23],"###1\\. Empty File Content by Redirecting to Null#{1}":[16,23],"###2\\. Empty File Using ‘true’ Command Redirection":[24,31],"###2\\. Empty File Using ‘true’ Command Redirection#{1}":[26,31],"#true > access.log":[32,73],"#true > access.log#{1}":[34,37],"#true > access.log##3\\. Empty File Using cat/cp/dd utilities with /dev/null":[38,67],"#true > access.log##3\\. Empty File Using cat/cp/dd utilities with /dev/null#{1}":[40,67],"#true > access.log##4\\. Empty File Using echo Command":[68,73],"#true > access.log##4\\. Empty File Using echo Command#{1}":[70,73],"#echo > access.log":[74,116],"#echo > access.log#{1}":[76,91],"#echo > access.log##5\\. Empty File Using truncate Command":[92,107],"#echo > access.log##5\\. Empty File Using truncate Command#{1}":[94,107],"#echo > access.log#If You Appreciate What We Do Here On TecMint, You Should Consider:":[108,116],"#echo > access.log#If You Appreciate What We Do Here On TecMint, You Should Consider:#{1}":[110,116]},"outlinks":[{"title":"Linux command line editors","target":"https://www.tecmint.com/linux-command-line-editors/","line":6},{"title":"Linux everything is a file","target":"https://www.tecmint.com/explanation-of-everything-is-a-file-and-types-of-files-in-linux/","line":8},{"title":"![Empty Large File Using Null Redirect in Linux","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Empty-Large-File-in-Linux.png","line":20},{"title":"![Empty Large File Using Linux Commands","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Empty-Large-File-Using-Linux-Commands.png","line":34},{"title":"cat command","target":"https://www.tecmint.com/13-basic-cat-command-examples-in-linux/","line":44},{"title":"![Empty File Using cat Command","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Empty-File-Using-cat-Command.png","line":48},{"title":"cp command","target":"https://www.tecmint.com/progress-monitor-check-progress-of-linux-commands/","line":52},{"title":"![Empty File Content Using cp Command","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Empty-File-Content-Using-cp-Command.png","line":56},{"title":"![Empty File Content Using dd Command","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Empty-File-Content-Using-dd-Command.png","line":64},{"title":"echo command","target":"https://www.tecmint.com/echo-command-in-linux/","line":70},{"title":"![Empty File Using echo Command","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Empty-File-Using-echo-Command.png","line":76},{"title":"cat command","target":"https://www.tecmint.com/13-basic-cat-command-examples-in-linux/","line":82},{"title":"echo command","target":"https://www.tecmint.com/echo-command-in-linux/","line":82},{"title":"![Empty File Using Null Redirect","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Empty-File-Using-Null-Redirect.png","line":88},{"title":"shrink or extend the size of a file","target":"https://www.tecmint.com/parted-command-to-create-resize-rescue-linux-disk-partitions/","line":94},{"title":"![Truncate File Content in Linux","target":"https://www.tecmint.com/wp-content/uploads/2016/12/Truncate-File-Content-in-Linux.png","line":100},{"title":"![Support Us","target":"https://www.tecmint.com/wp-content/uploads/2015/01/coffee.png","line":114}],"metadata":{"page-title":"5 Ways to Empty or Delete a Large File Content in Linux","url":"https://www.tecmint.com/empty-delete-file-content-linux/","date":"2023-04-18 15:54:25"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/A half-hour to learn Rust.md": {"path":"000-inbox/clippings/2023/04/A half-hour to learn Rust.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1m7fa5k","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1681118993245,"size":47084,"at":1766986878359,"hash":"1m7fa5k"},"blocks":{"#---frontmatter---":[1,5],"#":[6,1926],"##{1}":[523,523],"##{2}":[524,524],"##{3}":[525,1047],"##{4}":[1048,1048],"##{5}":[1049,1256],"##{6}":[1257,1257],"##{7}":[1258,1258],"##{8}":[1259,1918],"##{9}":[1919,1919],"##{10}":[1920,1920],"##{11}":[1921,1921],"##{12}":[1922,1926]},"outlinks":[{"title":"rust","target":"https://fasterthanli.me/tags/rust","line":6},{"title":"turbofish syntax","target":"https://turbo.fish/","line":828},{"title":"not afraid to add it","target":"https://mobile.twitter.com/fasterthanlime/status/1219601989404954624","line":1915},{"title":"The Rust Book","target":"https://doc.rust-lang.org/book/","line":1919},{"title":"Rust By Example","target":"https://doc.rust-lang.org/stable/rust-by-example/","line":1920},{"title":"Read Rust","target":"https://readrust.net/","line":1921},{"title":"This Week In Rust","target":"https://this-week-in-rust.org/","line":1922},{"title":"blog about Rust","target":"https://fasterthanli.me/tags/rust/","line":1924},{"title":"tweet about Rust","target":"https://twitter.com/fasterthanlime","line":1924}],"metadata":{"page-title":"A half-hour to learn Rust","url":"https://fasterthanli.me/articles/a-half-hour-to-learn-rust","date":"2023-04-02 09:39:44"},"task_lines":[],"tasks":{},"codeblock_ranges":[[16,19],[23,25],[29,35],[39,41],[45,49],[53,57],[61,67],[71,75],[79,84],[89,93],[98,100],[104,107],[112,114],[118,120],[124,128],[132,137],[146,150],[155,160],[164,176],[181,188],[193,199],[204,212],[217,225],[231,238],[243,249],[254,257],[263,265],[269,273],[277,287],[292,295],[300,303],[307,313],[316,318],[325,330],[333,337]]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Base64 Encode and Decode From Command Line.md": {"path":"000-inbox/clippings/2023/04/Base64 Encode and Decode From Command Line.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"bcqd5y","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1682318515688,"size":7232,"at":1766986878359,"hash":"bcqd5y"},"blocks":{"#---frontmatter---":[1,5],"#":[6,17],"##{1}":[10,10],"##{2}":[11,11],"##{3}":[12,17],"##Base64 Syntax":[18,21],"##Base64 Syntax#{1}":[20,21],"##Options":[22,33],"##Options#{1}":[24,33],"##Encoding String":[34,55],"##Encoding String#{1}":[36,55],"##Decoding String":[56,67],"##Decoding String#{1}":[58,67],"##Encoding Text File":[68,96],"##Encoding Text File#{1}":[70,96],"##Decoding Text File":[97,112],"##Decoding Text File#{1}":[99,112],"##Encoding User Input":[113,116],"##Encoding User Input#{1}":[115,116],"#!/bin/bash":[117,140],"#!/bin/bash#{1}":[118,140],"#!/bin/bash[2]":[141,159],"#!/bin/bash[2]#{1}":[142,150],"#!/bin/bash[2]#Conclusion":[151,159],"#!/bin/bash[2]#Conclusion#{1}":[153,154],"#!/bin/bash[2]#Conclusion#About the author":[155,159],"#!/bin/bash[2]#Conclusion#About the author#{1}":[157,159]},"outlinks":[{"title":"@linuxhint","target":"https://twitter.com/linuxhint","line":159}],"metadata":{"page-title":"Base64 Encode and Decode From Command Line","url":"https://linuxhint.com/base64_encode_decode_command_line/","date":"2023-04-24 14:41:54"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Creating user, database and adding access on PostgreSQL by Arnav Gupta Coding Blocks Medium.md": {"path":"000-inbox/clippings/2023/04/Creating user, database and adding access on PostgreSQL by Arnav Gupta Coding Blocks Medium.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1at3ghq","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1681885670000,"size":2539,"at":1766986878359,"hash":"1at3ghq"},"blocks":{"#---frontmatter---":[1,5],"##Creating user, database and adding access on PostgreSQL":[6,30],"##Creating user, database and adding access on PostgreSQL#{1}":[8,30],"##Creating user":[31,34],"##Creating user#{1}":[33,34],"##Creating Database":[35,38],"##Creating Database#{1}":[37,38],"##Giving the user a password":[39,43],"##Giving the user a password#{1}":[41,43],"##Granting privileges on database":[44,49],"##Granting privileges on database#{1}":[46,49],"##Doing purely via psql":[50,59],"##Doing purely via psql#{1}":[52,59]},"outlinks":[{"title":"http://digitalocean.com","target":"http://digitalocean.com/","line":10},{"title":"Coding Blocks","target":"https://cb.lk/","line":59}],"metadata":{"page-title":"Creating user, database and adding access on PostgreSQL | by Arnav Gupta | Coding Blocks | Medium","url":"https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e","date":"2023-04-19 14:27:48"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/DNS alias mode · acmesh-officialacme.sh Wiki.md": {"path":"000-inbox/clippings/2023/04/DNS alias mode · acmesh-officialacme.sh Wiki.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1nror1b","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1680756591000,"size":6109,"at":1766986878359,"hash":"1nror1b"},"blocks":{"#---frontmatter---":[1,5],"#":[6,13],"###1\\. First set domain CNAME:":[14,28],"###1\\. First set domain CNAME:#{1}":[16,26],"###1\\. First set domain CNAME:#{2}":[27,28],"###2\\. Issue a cert:":[29,39],"###2\\. Issue a cert:#{1}":[31,39],"###3\\. Share the same aliased domain:":[40,77],"###3\\. Share the same aliased domain:#{1}":[42,77],"###4\\. Specify different aliased domains for each domain.":[78,103],"###4\\. Specify different aliased domains for each domain.#{1}":[80,103],"###5\\. Mix dns alias and default dns auth":[104,120],"###5\\. Mix dns alias and default dns auth#{1}":[106,120],"###6\\. Last":[121,124],"###6\\. Last#{1}":[123,124],"###7\\. challenge-alias or domain-alias":[125,163],"###7\\. challenge-alias or domain-alias#{1}":[127,163]},"outlinks":[{"title":"DNS zone file","target":"https://en.wikipedia.org/wiki/Zone_file","line":21}],"metadata":{"page-title":"DNS alias mode · acmesh-official/acme.sh Wiki","url":"https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode","date":"2023-04-06 12:49:50"},"task_lines":[],"tasks":{},"codeblock_ranges":[[16,19],[23,25]]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/How To Acquire a Let's Encrypt Certificate Using DNS Validation with acme-dns-certbot on Ubuntu 18.04 DigitalOcean.md": {"path":"000-inbox/clippings/2023/04/How To Acquire a Let's Encrypt Certificate Using DNS Validation with acme-dns-certbot on Ubuntu 18.04 DigitalOcean.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"jc0lkm","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1680742600000,"size":12039,"at":1766986878957,"hash":"jc0lkm"},"blocks":{"#---frontmatter---":[1,5],"#":[6,7],"###Introduction":[8,21],"###Introduction#{1}":[10,21],"##Prerequisites":[22,32],"##Prerequisites#{1}":[24,25],"##Prerequisites#{2}":[26,27],"##Prerequisites#{3}":[28,30],"##Prerequisites#{4}":[31,32],"##Step 1 — Installing Certbot":[33,54],"##Step 1 — Installing Certbot#{1}":[35,54],"##Step 2 — Installing acme-dns-certbot":[55,81],"##Step 2 — Installing acme-dns-certbot#{1}":[57,81],"##Step 3 — Setting Up acme-dns-certbot":[82,130],"##Step 3 — Setting Up acme-dns-certbot#{1}":[84,130],"##Step 4 — Using acme-dns-certbot":[131,178],"##Step 4 — Using acme-dns-certbot#{1}":[133,178],"##Conclusion":[179,193],"##Conclusion#{1}":[181,186],"##Conclusion#{2}":[187,188],"##Conclusion#{3}":[189,192],"##Conclusion#{4}":[193,193]},"outlinks":[{"title":"Write for DOnations","target":"https://do.co/w4do-cta","line":6},{"title":"COVID-19 Relief Fund","target":"https://www.brightfunds.org/funds/write-for-donations-covid-19-relief-fund","line":6},{"title":"wildcard certificates","target":"https://en.wikipedia.org/wiki/Wildcard_certificate","line":10},{"title":"Let’s Encrypt","target":"https://letsencrypt.org/","line":10},{"title":"Certbot","target":"https://certbot.eff.org/","line":14},{"title":"acme-dns-certbot","target":"https://github.com/joohoi/acme-dns-certbot-joohoi","line":14},{"title":"DNS zones","target":"https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts#zone-files","line":16},{"title":"Initial Server Setup with Ubuntu 18.04","target":"https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04","line":26},{"title":"`CNAME` record(s)","target":"https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts#record-types","line":92},{"title":"A screenshot of the DigitalOcean DNS control panel, showing an example of a CNAME record for ACME DNS","target":"https://assets.digitalocean.com/articles/acme_dns_certbot_1804/CNAME.png","line":112,"embedded":true},{"title":"acme-dns-certbot repository","target":"https://github.com/joohoi/acme-dns-certbot-joohoi","line":183},{"title":"acme-dns on GitHub","target":"https://github.com/joohoi/acme-dns#acme-dns","line":187},{"title":"RFC8555 - Section 8.4","target":"https://tools.ietf.org/html/rfc8555#section-8.4","line":193}],"metadata":{"page-title":"How To Acquire a Let's Encrypt Certificate Using DNS Validation with acme-dns-certbot on Ubuntu 18.04 | DigitalOcean","url":"https://www.digitalocean.com/community/tutorials/how-to-acquire-a-let-s-encrypt-certificate-using-dns-validation-with-acme-dns-certbot-on-ubuntu-18-04","date":"2023-04-06 08:56:39"},"task_lines":[],"tasks":{},"codeblock_ranges":[[49,51],[69,72],[98,106],[120,127],[143,150],[164,175]]},
|
|
||||||
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/How to install PostgreSQL on Debian 11.md": {"path":"000-inbox/clippings/2023/04/How to install PostgreSQL on Debian 11.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1haj3wv","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1681885443000,"size":7082,"at":1766986878957,"hash":"1haj3wv"},"blocks":{"#---frontmatter---":[1,5],"#":[6,7],"##**Notable Features of PostgreSQL**":[8,23],"##**Notable Features of PostgreSQL**#{1}":[10,11],"##**Notable Features of PostgreSQL**#{2}":[12,12],"##**Notable Features of PostgreSQL**#{3}":[13,13],"##**Notable Features of PostgreSQL**#{4}":[14,14],"##**Notable Features of PostgreSQL**#{5}":[15,16],"##**Notable Features of PostgreSQL**#{6}":[17,23],"##**Method 1: How to install PostgreSQL using repository of Debian 11**":[24,61],"##**Method 1: How to install PostgreSQL using repository of Debian 11**#{1}":[26,61],"##**Method 2: How to install PostgreSQL using official repository of Debian 11**":[62,87],"##**Method 2: How to install PostgreSQL using official repository of Debian 11**#{1}":[64,87],"##**How to create database using PostgreSQL in Debian 11**":[88,119],"##**How to create database using PostgreSQL in Debian 11**#{1}":[90,119],"##**Conclusion**":[120,122],"##**Conclusion**#{1}":[122,122]},"outlinks":[],"metadata":{"page-title":"How to install PostgreSQL on Debian 11","url":"https://linuxhint.com/install-postgresql-debian/","date":"2023-04-19 14:24:01"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/How to install and run bots for the Matrix network – tmplab.md": {"path":"000-inbox/clippings/2023/04/How to install and run bots for the Matrix network – tmplab.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"18xrtde","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1681796066000,"size":8680,"at":1766986878957,"hash":"18xrtde"},"blocks":{"#---frontmatter---":[1,5],"#":[6,23],"##Deploying Maubot on a server":[24,43],"##Deploying Maubot on a server#{1}":[26,43],"##Creating your first bot":[44,61],"##Creating your first bot#{1}":[46,61],"##**Add a plugin**":[62,111],"##**Add a plugin**#{1}":[64,111],"##**Add a client**":[112,147],"##**Add a client**#{1}":[114,147],"##**Add an instance**":[148,159],"##**Add an instance**#{1}":[150,159],"##How to use your bot":[160,170],"##How to use your bot#{1}":[162,170]},"outlinks":[{"title":"Matrix","target":"https://en.wikipedia.org/wiki/Matrix_(protocol","line":6},{"title":"our riot channel","target":"https://riot.fuz.re/#/room/#tmplab:matrix.fuz.re","line":8},{"title":"a list of concerns","target":"https://github.com/privacytoolsIO/services/issues/17","line":12},{"title":"bots","target":"https://github.com/leo-lb/fuzisup","line":14},{"title":"many","target":"https://github.com/matrix-org/go-neb","line":14},{"title":"available","target":"https://github.com/matrix-org/Matrix-NEB","line":14},{"title":"maubot","target":"https://github.com/maubot/maubot","line":14},{"title":"a page dedicated to them","target":"https://matrix.org/bots/","line":14},{"title":"Tulir Asokan","target":"https://github.com/tulir","line":22},{"title":"his own implementation of the matrix api","target":"https://github.com/tulir/mautrix-python","line":22},{"title":"this git project","target":"https://git.interhacker.space/alban/maubot-installer","line":26},{"title":"lists a number of plugins","target":"https://github.com/maubot/maubot","line":64},{"title":"plugin-install.sh","target":"https://git.interhacker.space/alban/maubot-installer/raw/branch/master/plugins-install.sh","line":92},{"title":"trump plugin","target":"https://github.com/jeffcasavant/MaubotTrumpTweet","line":102},{"title":"https://riot.im/app","target":"https://riot.im/app","line":116},{"title":"dice","target":"https://github.com/maubot/dice","line":164}],"metadata":{"page-title":"How to install and run bots for the Matrix network – /tmp/lab","url":"https://www.tmplab.org/2020/04/01/how-to-install-and-run-bots-for-the-matrix-network/","date":"2023-04-18 13:34:24"},"task_lines":[],"tasks":{},"codeblock_ranges":[[34,38],[104,108]]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Introduction - Rust and WebAssembly.md": {"path":"000-inbox/clippings/2023/04/Introduction - Rust and WebAssembly.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1k3ajwb","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1680399236000,"size":2041,"at":1766986878957,"hash":"1k3ajwb"},"blocks":{"#---frontmatter---":[1,5],"#":[6,7],"##Rust 🦀 and WebAssembly 🕸":[8,15],"##Rust 🦀 and WebAssembly 🕸#{1}":[10,15],"##Who is this book for?":[16,27],"##Who is this book for?#{1}":[18,27],"##How to read this book":[28,41],"##How to read this book#{1}":[30,41],"##Contributing to this book":[42,46],"##Contributing to this book#{1}":[44,46]},"outlinks":[{"title":"\n\n## Rust 🦀 and WebAssembly 🕸\n\n","target":"https://rustwasm.github.io/docs/book/#rust--and-webassembly-","line":6},{"title":"WebAssembly","target":"https://webassembly.org/","line":12},{"title":"Rust","target":"https://www.rust-lang.org/","line":12},{"title":"\n\n## Who is this book for?\n\n","target":"https://rustwasm.github.io/docs/book/#who-is-this-book-for","line":14},{"title":"Start with *The Rust Programming Language* first.","target":"https://doc.rust-lang.org/book/","line":22},{"title":"Learn about them on MDN.","target":"https://developer.mozilla.org/en-US/docs/Learn","line":24},{"title":"\n\n## How to read this book\n\n","target":"https://rustwasm.github.io/docs/book/#how-to-read-this-book","line":26},{"title":"background and concepts","target":"https://rustwasm.github.io/docs/book/background-and-concepts.html","line":32},{"title":"the motivation for using Rust and WebAssembly together","target":"https://rustwasm.github.io/docs/book/why-rust-and-webassembly.html","line":32},{"title":"tutorial","target":"https://rustwasm.github.io/docs/book/game-of-life/introduction.html","line":34},{"title":"reference sections","target":"https://rustwasm.github.io/docs/book/reference/index.html","line":36},{"title":"\n\n## Contributing to this book\n\n","target":"https://rustwasm.github.io/docs/book/#contributing-to-this-book","line":40},{"title":"**Send us a pull request!**","target":"https://github.com/rustwasm/book","line":46}],"metadata":{"page-title":"Introduction - Rust and WebAssembly","url":"https://rustwasm.github.io/docs/book/","date":"2023-04-02 09:33:54"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Introduction Hasura Backend Plus.md": {"path":"000-inbox/clippings/2023/04/Introduction Hasura Backend Plus.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"14992lj","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1682224887000,"size":1246,"at":1766986878957,"hash":"14992lj"},"blocks":{"#---frontmatter---":[1,5],"##Introduction":[6,11],"##Introduction#{1}":[8,11],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")":[12,24],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{1}":[14,14],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{2}":[15,15],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{3}":[16,16],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{4}":[17,17],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{5}":[18,18],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{6}":[19,19],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{7}":[20,20],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{8}":[21,21],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{9}":[22,22],"##Authentication[#](https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\")#{10}":[23,24],"##Storage[#](https://nhost.github.io/hasura-backend-plus/docs/intro#storage \"Direct link to heading\")":[25,29],"##Storage[#](https://nhost.github.io/hasura-backend-plus/docs/intro#storage \"Direct link to heading\")#{1}":[27,27],"##Storage[#](https://nhost.github.io/hasura-backend-plus/docs/intro#storage \"Direct link to heading\")#{2}":[28,28],"##Storage[#](https://nhost.github.io/hasura-backend-plus/docs/intro#storage \"Direct link to heading\")#{3}":[29,29]},"outlinks":[{"title":"Hasura","target":"https://github.com/hasura/graphql-engine","line":8},{"title":"#","target":"https://nhost.github.io/hasura-backend-plus/docs/intro#authentication \"Direct link to heading\"","line":12},{"title":"Pwned Passwords","target":"https://haveibeenpwned.com/Passwords","line":23},{"title":"#","target":"https://nhost.github.io/hasura-backend-plus/docs/intro#storage \"Direct link to heading\"","line":25}],"metadata":{"page-title":"Introduction | Hasura Backend Plus","url":"https://nhost.github.io/hasura-backend-plus/docs/intro","date":"2023-04-23 12:41:26"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Learn Rust in Y Minutes.md": {"path":"000-inbox/clippings/2023/04/Learn Rust in Y Minutes.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"urtmor","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1680399543000,"size":10754,"at":1766986878957,"hash":"urtmor"},"blocks":{"#---frontmatter---":[1,5],"#":[6,29],"#\\[allow(dead\\_code)\\]":[30,37],"#\\[allow(dead\\_code)\\]#{1}":[31,37],"#\\[allow(unused\\_variables)\\]":[38,38],"#\\[allow(unused\\_assignments)\\]":[39,39],"#\\[allow(dead\\_code)\\][2]":[40,331],"#\\[allow(dead\\_code)\\][2]#{1}":[41,331]},"outlinks":[{"title":"The Rust Programming Language","target":"http://doc.rust-lang.org/book/index.html","line":327},{"title":"/r/rust","target":"http://reddit.com/r/rust","line":327},{"title":"Rust playpen","target":"http://play.rust-lang.org/","line":329},{"title":"Rust website","target":"http://rust-lang.org/","line":329},{"title":"pull request","target":"https://github.com/adambard/learnxinyminutes-docs/edit/master/rust.html.markdown","line":331},{"title":"Open an Issue","target":"https://github.com/adambard/learnxinyminutes-docs/issues/new","line":331}],"metadata":{"page-title":"Learn Rust in Y Minutes","url":"https://learnxinyminutes.com/docs/rust/","date":"2023-04-02 09:39:01","tags":["#rust"]},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Logto 开源项目:创造令人愉悦的身份体验.md": {"path":"000-inbox/clippings/2023/04/Logto 开源项目:创造令人愉悦的身份体验.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"khqhke","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1682593407000,"size":3774,"at":1766986878957,"hash":"khqhke"},"blocks":{"#---frontmatter---":[1,5],"#":[6,150]},"outlinks":[{"title":"background","target":"https://logto.io/background.eca11ad9.jpg","line":6,"embedded":true},{"title":"authentication and authorization","target":"https://logto.io/figure-1.52645119.png","line":14,"embedded":true},{"title":"\n\n阅读 API 文档\n\n","target":"https://docs.logto.io/docs/recipes/interact-with-management-api","line":38},{"title":"\n\n阅读集成文档\n\n","target":"https://docs.logto.io/docs/recipes/integrate-logto","line":46},{"title":"\n\n阅读连接器文档\n\n","target":"https://docs.logto.io/docs/references/connectors","line":54},{"title":"blurry background","target":"https://logto.io/light-blur.ba0d1a4e.png","line":64,"embedded":true},{"title":"\n\n了解更多\n\n","target":"https://docs.logto.io/docs/recipes/rbac","line":70},{"title":"illustration","target":"https://logto.io/rbac.26bb0239.png","line":76,"embedded":true},{"title":"blurry background","target":"https://logto.io/light-blur.ba0d1a4e.png","line":78,"embedded":true},{"title":"\n\n了解更多\n\n","target":"https://docs.logto.io/docs/recipes/manage-users","line":84},{"title":"illustration","target":"https://logto.io/audit-logs.814701e2.png","line":90,"embedded":true},{"title":"avatar","target":"https://avatars.githubusercontent.com/u/4348233?v=4","line":96,"embedded":true},{"title":"avatar","target":"https://avatars.githubusercontent.com/u/224910?v=4","line":102,"embedded":true},{"title":"avatar","target":"https://logto.io/reddit.91746215.png","line":108,"embedded":true},{"title":"avatar","target":"https://avatars.githubusercontent.com/u/13367662?v=4","line":114,"embedded":true},{"title":"avatar","target":"https://avatars.githubusercontent.com/u/25107942?v=4","line":120,"embedded":true},{"title":"avatar","target":"https://avatars.githubusercontent.com/u/47457170?v=4","line":126,"embedded":true},{"title":"了解更多","target":"https://docs.logto.io/about/cloud-preview/","line":134},{"title":"\n\nCloud 预览\n\n","target":"http://cloud.logto.io/?sign_up=true","line":136},{"title":"\n\n开始上手\n\n","target":"https://docs.logto.io/docs/tutorials/get-started","line":146}],"metadata":{"page-title":"Logto 开源项目:创造令人愉悦的身份体验","url":"https://logto.io/","date":"2023-04-27 19:03:26"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/MistGPU - 深度学习雾计算平台.md": {"path":"000-inbox/clippings/2023/04/MistGPU - 深度学习雾计算平台.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"mp04ij","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1682226586000,"size":698,"at":1766986878957,"hash":"mp04ij"},"blocks":{"#---frontmatter---":[1,5],"#":[6,35]},"outlinks":[],"metadata":{"page-title":"MistGPU - 深度学习雾计算平台","url":"https://mistgpu.com/","date":"2023-04-23 13:09:44"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Most Useful ChatGPT Prompts.md": {"path":"000-inbox/clippings/2023/04/Most Useful ChatGPT Prompts.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1h6gw1","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1681952212000,"size":2179,"at":1766986878957,"hash":"1h6gw1"},"blocks":{"#---frontmatter---":[1,5],"#":[6,7],"#####Write a function":[8,15],"#####Write a function#{1}":[10,15],"#####Explain Code":[16,23],"#####Explain Code#{1}":[18,23],"#####Refactor Code":[24,29],"#####Refactor Code#{1}":[26,29],"#####Debug":[30,37],"#####Debug#{1}":[32,37],"#####Write test":[38,45],"#####Write test#{1}":[40,45],"#####Write Regex":[46,50],"#####Write Regex#{1}":[48,50]},"outlinks":[],"metadata":{"page-title":"Most Useful ChatGPT Prompts","url":"https://www.explainthis.io/en/chatgpt","date":"2023-04-20 08:56:52"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/PowerDNS pdnsutil cheat sheet - Makarainen.md": {"path":"000-inbox/clippings/2023/04/PowerDNS pdnsutil cheat sheet - Makarainen.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"c6tp5b","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1681909093000,"size":2793,"at":1766986878957,"hash":"c6tp5b"},"blocks":{"#---frontmatter---":[1,5],"##PowerDNS pdnsutil cheat sheet":[6,101],"##PowerDNS pdnsutil cheat sheet#{1}":[8,11],"##PowerDNS pdnsutil cheat sheet#CREATE ZONE":[12,17],"##PowerDNS pdnsutil cheat sheet#CREATE ZONE#{1}":[14,17],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE // Let's start by adding the root A-record and AAAA for IPv6 (makarainen.net)":[18,24],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE // Let's start by adding the root A-record and AAAA for IPv6 (makarainen.net)#{1}":[20,24],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE // adding a subdomain (www)":[25,30],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE // adding a subdomain (www)#{1}":[27,30],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE // every domain needs name servers":[31,36],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE // every domain needs name servers#{1}":[33,36],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE":[37,44],"##PowerDNS pdnsutil cheat sheet#ADD DATA TO ZONE#{1}":[39,44],"##PowerDNS pdnsutil cheat sheet#MANAGE ZONES // check the information provided":[45,50],"##PowerDNS pdnsutil cheat sheet#MANAGE ZONES // check the information provided#{1}":[47,50],"##PowerDNS pdnsutil cheat sheet#MANAGE ZONES // modify the zone (if changes do not miss update serial -> UPDATE SERIAL)":[51,56],"##PowerDNS pdnsutil cheat sheet#MANAGE ZONES // modify the zone (if changes do not miss update serial -> UPDATE SERIAL)#{1}":[53,56],"##PowerDNS pdnsutil cheat sheet#MANAGE ZONES":[57,64],"##PowerDNS pdnsutil cheat sheet#MANAGE ZONES#{1}":[59,64],"##PowerDNS pdnsutil cheat sheet#DELETE A SPECIFIC ZONE":[65,70],"##PowerDNS pdnsutil cheat sheet#DELETE A SPECIFIC ZONE#{1}":[67,70],"##PowerDNS pdnsutil cheat sheet#UPDATE SERIAL":[71,76],"##PowerDNS pdnsutil cheat sheet#UPDATE SERIAL#{1}":[73,76],"##PowerDNS pdnsutil cheat sheet#UPDATE THE CONNECTED DNS SERVERS":[77,82],"##PowerDNS pdnsutil cheat sheet#UPDATE THE CONNECTED DNS SERVERS#{1}":[79,82],"##PowerDNS pdnsutil cheat sheet#START THE POWERDNS SERVER IN UBUNTU":[83,88],"##PowerDNS pdnsutil cheat sheet#START THE POWERDNS SERVER IN UBUNTU#{1}":[85,88],"##PowerDNS pdnsutil cheat sheet#Questions":[89,92],"##PowerDNS pdnsutil cheat sheet#Questions#{1}":[91,92],"##PowerDNS pdnsutil cheat sheet#Explore more":[93,96],"##PowerDNS pdnsutil cheat sheet#Explore more#{1}":[95,96],"##PowerDNS pdnsutil cheat sheet#Noteworthy deal":[97,101],"##PowerDNS pdnsutil cheat sheet#Noteworthy deal#{1}":[99,101]},"outlinks":[{"title":"PowerDNS logo","target":"https://upload.wikimedia.org/wikipedia/en/8/8d/Official_PowerDNS_logo_250_pixels.png \"PowerDNS logo\"","line":8,"embedded":true},{"title":"pdnsutil","target":"https://doc.powerdns.com/authoritative/manpages/pdnsutil.1.html","line":10},{"title":"PowerDNS Authoritative Server","target":"https://www.powerdns.com/auth.html","line":10},{"title":"PowerDNS export from MySQL to csv using command line","target":"https://makarainen.net/powerdns-export-from-mysql-to-csv-using-command-line","line":95},{"title":"Domainparkki","target":"https://domainparkki.com/","line":99},{"title":"hello@domainparkki.com","target":"mailto:hello@domainparkki.com","line":99}],"metadata":{"page-title":"PowerDNS pdnsutil cheat sheet - Makarainen","url":"https://makarainen.net/PowerDNS-pdnsutil-cheat-sheet","date":"2023-04-19 20:58:11"},"task_lines":[],"tasks":{},"codeblock_ranges":[[14,16],[20,23],[27,29],[33,35],[39,43],[47,49],[53,55],[59,63],[67,69],[73,75],[79,81],[85,87]]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Prerequisites.md": {"path":"000-inbox/clippings/2023/04/Prerequisites.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"79m8fn","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1682245220000,"size":5211,"at":1766986878957,"hash":"79m8fn"},"blocks":{"#---frontmatter---":[1,5],"##Prerequisites":[6,17],"##Prerequisites#{1}":[8,17],"##Confirm the System Has a Supported Linux Distribution Version":[18,49],"##Confirm the System Has a Supported Linux Distribution Version#{1}":[20,25],"##Confirm the System Has a Supported Linux Distribution Version#Check the Linux Distribution and Kernel Version on Your System":[26,49],"##Confirm the System Has a Supported Linux Distribution Version#Check the Linux Distribution and Kernel Version on Your System#{1}":[28,29],"##Confirm the System Has a Supported Linux Distribution Version#Check the Linux Distribution and Kernel Version on Your System#Linux Distribution Information":[30,39],"##Confirm the System Has a Supported Linux Distribution Version#Check the Linux Distribution and Kernel Version on Your System#Linux Distribution Information#{1}":[32,39],"##Confirm the System Has a Supported Linux Distribution Version#Check the Linux Distribution and Kernel Version on Your System#Kernel Information":[40,49],"##Confirm the System Has a Supported Linux Distribution Version#Check the Linux Distribution and Kernel Version on Your System#Kernel Information#{1}":[42,49],"##Confirm the System has a ROCm-Capable GPU":[50,113],"##Confirm the System has a ROCm-Capable GPU#{1}":[52,103],"##Confirm the System has a ROCm-Capable GPU#Verify Your System Has a ROCm-Capable GPU":[104,113],"##Confirm the System has a ROCm-Capable GPU#Verify Your System Has a ROCm-Capable GPU#{1}":[106,113],"##Confirm the System Has All the Required Tools and Packages Installed":[114,180],"##Confirm the System Has All the Required Tools and Packages Installed#{1}":[116,117],"##Confirm the System Has All the Required Tools and Packages Installed#Required Packages":[118,135],"##Confirm the System Has All the Required Tools and Packages Installed#Required Packages#{1}":[120,135],"##Confirm the System Has All the Required Tools and Packages Installed#Register the System to the Subscription Manager":[136,149],"##Confirm the System Has All the Required Tools and Packages Installed#Register the System to the Subscription Manager#{1}":[138,149],"##Confirm the System Has All the Required Tools and Packages Installed#Enable Additional Repositories":[150,165],"##Confirm the System Has All the Required Tools and Packages Installed#Enable Additional Repositories#{1}":[152,165],"##Confirm the System Has All the Required Tools and Packages Installed#Setting Permissions for Groups":[166,180],"##Confirm the System Has All the Required Tools and Packages Installed#Setting Permissions for Groups#{1}":[168,180]},"outlinks":[{"title":"System Requirements.","target":"https://docs.amd.com/bundle/ROCm-Installation-Guide-v5.4.3/page/Introduction_to_ROCm_Installation_Guide_for_Linux.html#d4616e529","line":36},{"title":"System Requirements.","target":"https://docs.amd.com/bundle/ROCm-Installation-Guide-v5.4.3/page/Introduction_to_ROCm_Installation_Guide_for_Linux.html#d4616e529","line":46},{"title":"https://access.redhat.com/solutions/253273","target":"https://access.redhat.com/solutions/253273","line":142},{"title":"https://documentation.suse.com/sles/12-SP5/single-html/SLES-smt/index.html","target":"https://documentation.suse.com/sles/12-SP5/single-html/SLES-smt/index.html","line":148},{"title":"https://dl.fedoraproject.org","target":"https://dl.fedoraproject.org/","line":160}],"metadata":{"page-title":"Prerequisites","url":"https://docs.amd.com/bundle/ROCm-Installation-Guide-v5.4.3/page/Prerequisites.html","date":"2023-04-23 18:20:19"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Slurm Workload Manager - Overview.md": {"path":"000-inbox/clippings/2023/04/Slurm Workload Manager - Overview.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"164wva5","at":1766986878406},"class_name":"SmartSource","last_import":{"mtime":1682226555000,"size":9445,"at":1766986878957,"hash":"164wva5"},"blocks":{"#---frontmatter---":[1,5],"##Overview":[6,9],"##Overview#{1}":[8,9],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)":[10,44],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{1}":[12,18],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{2}":[19,19],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{3}":[20,20],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{4}":[21,21],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{5}":[22,22],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{6}":[23,23],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{7}":[24,24],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{8}":[25,25],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{9}":[26,26],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{10}":[27,27],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{11}":[28,28],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{12}":[29,29],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{13}":[30,30],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{14}":[31,31],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{15}":[32,32],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{16}":[33,33],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{17}":[34,34],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{18}":[35,35],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{19}":[36,36],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{20}":[37,37],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{21}":[38,39],"##Architecture[](https://slurm.schedmd.com/overview.html#architecture)#{22}":[40,44],"##Configurability[](https://slurm.schedmd.com/overview.html#configurability)":[45,49],"##Configurability[](https://slurm.schedmd.com/overview.html#configurability)#{1}":[47,49],"#Sample /etc/slurm.conf":[50,66],"#Sample /etc/slurm.conf#{1}":[51,66],"#Node Configurations":[67,73],"#Node Configurations#{1}":[68,73],"#Partition Configurations":[74,83],"#Partition Configurations#{1}":[75,83]},"outlinks":[{"title":"accounting","target":"https://slurm.schedmd.com/accounting.html","line":8},{"title":"gang scheduling","target":"https://slurm.schedmd.com/gang_scheduling.html","line":8},{"title":"multifactor job prioritization","target":"https://slurm.schedmd.com/priority_multifactor.html","line":8},{"title":"advanced reservation","target":"https://slurm.schedmd.com/reservations.html","line":8},{"title":"resource limits","target":"https://slurm.schedmd.com/resource_limits.html","line":8},{"title":"topology optimized resource selection","target":"https://slurm.schedmd.com/topology.html","line":8},{"title":"REST API","target":"https://en.wikipedia.org/wiki/Representational_state_transfer","line":12},{"title":"**slurmrestd** (Slurm REST API Daemon)","target":"https://slurm.schedmd.com/rest.html","line":12},{"title":"Containers","target":"https://slurm.schedmd.com/containers.html","line":22},{"title":"Generic Resources","target":"https://slurm.schedmd.com/gres.html","line":24},{"title":"Job Submit","target":"https://slurm.schedmd.com/job_submit_plugins.html","line":25},{"title":"'srun'","target":"https://slurm.schedmd.com/srun.html","line":28},{"title":"Preempt","target":"https://slurm.schedmd.com/preempt.html","line":30},{"title":"Site Factor (Priority)","target":"https://slurm.schedmd.com/site_factor.html","line":35}],"metadata":{"page-title":"Slurm Workload Manager - Overview","url":"https://slurm.schedmd.com/overview.html","date":"2023-04-23 13:09:14"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/Usage of matrix-bot-sdk Matrix.org.md": {"path":"000-inbox/clippings/2023/04/Usage of matrix-bot-sdk Matrix.org.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1s55ro2","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1681796053000,"size":7229,"at":1766986878957,"hash":"1s55ro2"},"blocks":{"#---frontmatter---":[1,5],"#":[6,9],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#setup)Setup":[10,21],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#setup)Setup#{1}":[12,21],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#instantiation)Instantiation":[22,88],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#instantiation)Instantiation#{1}":[24,88],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#sync-loop)/sync loop":[89,94],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#sync-loop)/sync loop#{1}":[91,94],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#receiving-and-sending-events)Receiving and Sending events":[95,126],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#receiving-and-sending-events)Receiving and Sending events#{1}":[97,126],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#implementing-echobot-functionality)Implementing echobot functionality":[127,152],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#implementing-echobot-functionality)Implementing echobot functionality#{1}":[129,130],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#implementing-echobot-functionality)Implementing echobot functionality#{2}":[131,131],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#implementing-echobot-functionality)Implementing echobot functionality#{3}":[132,132],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#implementing-echobot-functionality)Implementing echobot functionality#{4}":[133,133],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#implementing-echobot-functionality)Implementing echobot functionality#{5}":[134,152],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#implementing-echobot-functionality)Implementing echobot functionality#{6}":[136,152],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#conclusion)Conclusion":[153,156],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#conclusion)Conclusion#{1}":[155,156],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#ps-use-typescript)PS, use TypeScript":[157,167],"##[](https://matrix.org/docs/guides/usage-of-matrix-bot-sdk#ps-use-typescript)PS, use TypeScript#{1}":[159,167]},"outlinks":[{"title":"matrix-bot-sdk","target":"https://github.com/turt2live/matrix-bot-sdk","line":6},{"title":"take a look at these instructions","target":"https://t2bot.io/docs/access_tokens/","line":33},{"title":"just the same as you'd find in the spec","target":"https://matrix.org/docs/spec/client_server/latest#put-matrix-client-r0-rooms-roomid-send-eventtype-txnid","line":125},{"title":"matrix-bot-sdk","target":"https://github.com/turt2live/matrix-bot-sdk","line":155},{"title":"very well documented","target":"https://github.com/turt2live/matrix-bot-sdk/blob/master/src/MatrixClient.ts","line":155},{"title":"matrix-bot-sdk","target":"https://github.com/turt2live/matrix-bot-sdk","line":159}],"metadata":{"page-title":"Usage of matrix-bot-sdk | Matrix.org","url":"https://matrix.org/docs/guides/usage-of-matrix-bot-sdk","date":"2023-04-18 13:34:11"},"task_lines":[],"tasks":{},"codeblock_ranges":[[14,18],[26,31],[35,38],[42,44],[50,52],[56,58],[62,64],[68,83],[99,106],[112,117],[121,123],[136,151]]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/[Pdns-users] TCP Connection Thread died because of STL error Reading data Connection reset by peer.md": {"path":"000-inbox/clippings/2023/04/[Pdns-users] TCP Connection Thread died because of STL error Reading data Connection reset by peer.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"147eait","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1681877897000,"size":6461,"at":1766986878957,"hash":"147eait"},"blocks":{"#---frontmatter---":[1,5],"#":[6,139],"##{1}":[9,9],"##{2}":[10,10],"##{3}":[11,132],"##{4}":[133,133],"##{5}":[134,134],"##{6}":[135,139]},"outlinks":[{"title":"david at craigon.co.uk","target":"mailto:pdns-users@mailman.powerdns.com?Subject=Re: [Pdns-users] TCP Connection Thread died because of STL error:\n\tReading data: Connection reset by peer&In-Reply-To=<AANLkTilZB2deCtEBractNCNUomBCPEol3VrOE-ZBZoV4@mail.gmail.com> \"[Pdns-users] TCP Connection Thread died because of STL error:\tReading data: Connection reset by peer\"","line":6},{"title":"david at craigon.co.uk","target":"http://mailman.powerdns.com/mailman/listinfo/pdns-users","line":40},{"title":"http://doc.powerdns.com/generic-mypgsql-backends.html","target":"http://doc.powerdns.com/generic-mypgsql-backends.html","line":43},{"title":"bert.hubert at netherlabs.nl","target":"http://mailman.powerdns.com/mailman/listinfo/pdns-users","line":120},{"title":"More information about the Pdns-users mailing list","target":"http://mailman.powerdns.com/mailman/listinfo/pdns-users","line":139}],"metadata":{"page-title":"[Pdns-users] TCP Connection Thread died because of STL error: Reading data: Connection reset by peer","url":"https://mailman.powerdns.com/pipermail/pdns-users/2010-May/018731.html","date":"2023-04-19 12:18:15"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/fast.ai - GPT 4 and the Uncharted Territories of Language.md": {"path":"000-inbox/clippings/2023/04/fast.ai - GPT 4 and the Uncharted Territories of Language.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"193ixke","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1681095479401,"size":7362,"at":1766986878957,"hash":"193ixke"},"blocks":{"#---frontmatter---":[1,5],"##Beyond Wittgenstein’s Walls[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#beyond-wittgensteins-walls)":[6,29],"##Beyond Wittgenstein’s Walls[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#beyond-wittgensteins-walls)#{1}":[8,29],"##I didn’t write that[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that)":[30,37],"##I didn’t write that[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that)#{1}":[32,37],"##Conclusion[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#conclusion)":[38,43],"##Conclusion[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#conclusion)#{1}":[40,43],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)":[44,61],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)#{1}":[46,49],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)#{2}":[50,50],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)#{3}":[51,51],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)#{4}":[52,52],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)#{5}":[53,54],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)#{6}":[55,60],"##I didn’t write that either[](https://www.fast.ai/posts/2023-03-20-wittgenstein.html#i-didnt-write-that-either)#{7}":[61,61]},"outlinks":[{"title":"1","target":"https://www.fast.ai/posts/2023-03-20-wittgenstein.html#fn1","line":50},{"title":"↩︎","target":"https://www.fast.ai/posts/2023-03-20-wittgenstein.html#fnref1","line":61}],"metadata":{"page-title":"fast.ai - GPT 4 and the Uncharted Territories of Language","url":"https://www.fast.ai/posts/2023-03-20-wittgenstein.html","date":"2023-04-10 10:57:57"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/04/prmpts.AI - Prompt sandbox.md": {"path":"000-inbox/clippings/2023/04/prmpts.AI - Prompt sandbox.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"p3hk6m","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1682224873000,"size":816,"at":1766986878957,"hash":"p3hk6m"},"blocks":{"#---frontmatter---":[1,5],"#":[6,11],"####Prompt":[12,23],"####Prompt#{1}":[14,23],"####Inputs":[24,27],"####Inputs#{1}":[26,27],"####Preview":[28,46],"####Preview#{1}":[30,46]},"outlinks":[{"title":"![logo","target":"https://prmpts.ai/_next/static/media/logo.72d4dbf5.svg","line":6},{"title":"Read our blog post","target":"https://prmpts.ai/blog/what-is-prompt-engineering","line":10},{"title":"![logo","target":"https://prmpts.ai/_next/static/media/logo-icon.881a4e0e.svg","line":46}],"metadata":{"page-title":"prmpts.AI - Prompt sandbox","url":"https://prmpts.ai/","date":"2023-04-23 12:41:12"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/05/Creating user accounts Dendrite.md": {"path":"000-inbox/clippings/2023/05/Creating user accounts Dendrite.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"38sh3s","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1683340555000,"size":2401,"at":1766986878359,"hash":"38sh3s"},"blocks":{"#---frontmatter---":[1,5],"##[](https://matrix-org.github.io/dendrite/administration/createusers#creating-user-accounts)Creating user accounts":[6,9],"##[](https://matrix-org.github.io/dendrite/administration/createusers#creating-user-accounts)Creating user accounts#{1}":[8,9],"##[](https://matrix-org.github.io/dendrite/administration/createusers#from-the-command-line)From the command line":[10,58],"##[](https://matrix-org.github.io/dendrite/administration/createusers#from-the-command-line)From the command line#{1}":[12,58]},"outlinks":[{"title":"Synapse documentation","target":"https://matrix-org.github.io/synapse/latest/admin_api/register_api.html","line":56}],"metadata":{"page-title":"Creating user accounts | Dendrite","url":"https://matrix-org.github.io/dendrite/administration/createusers","date":"2023-05-06 10:35:52"},"task_lines":[],"tasks":{},"codeblock_ranges":[[18,20],[26,28],[32,34],[38,40],[42,44],[50,54]]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/05/How to Set Up a Mail Server with PostfixAdmin on Debian 11.md": {"path":"000-inbox/clippings/2023/05/How to Set Up a Mail Server with PostfixAdmin on Debian 11.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1ck8k0b","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1685317835000,"size":9457,"at":1766986878359,"hash":"1ck8k0b"},"blocks":{"#---frontmatter---":[1,5],"###On this page":[6,20],"###On this page#{1}":[8,8],"###On this page#{2}":[9,9],"###On this page#{3}":[10,10],"###On this page#{4}":[11,11],"###On this page#{5}":[12,12],"###On this page#{6}":[13,13],"###On this page#{7}":[14,14],"###On this page#{8}":[15,16],"###On this page#{9}":[17,20],"##Prerequisites":[21,26],"##Prerequisites#{1}":[23,23],"##Prerequisites#{2}":[24,24],"##Prerequisites#{3}":[25,26],"##Getting Started":[27,42],"##Getting Started#{1}":[29,42],"##Install Nginx, MariaDB and PHP":[43,50],"##Install Nginx, MariaDB and PHP#{1}":[45,50],"##Create a PostfixAdmin Database":[51,68],"##Create a PostfixAdmin Database#{1}":[53,68],"##Install PostfixAdmin":[69,163],"##Install PostfixAdmin#{1}":[71,163],"##Configure Nginx for PostfixAdmin":[164,226],"##Configure Nginx for PostfixAdmin#{1}":[166,226],"##Access PostfixAdmin":[227,236],"##Access PostfixAdmin#{1}":[229,236],"##Conclusion":[237,239],"##Conclusion#{1}":[239,239]},"outlinks":[{"title":"Prerequisites","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#prerequisites","line":8},{"title":"Getting Started","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#getting-started","line":9},{"title":"Install Nginx, MariaDB and PHP","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#install-nginx-mariadb-and-php","line":10},{"title":"Create a PostfixAdmin Database","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#create-a-postfixadmin-database","line":11},{"title":"Install PostfixAdmin","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#install-postfixadmin","line":12},{"title":"Configure Nginx for PostfixAdmin","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#configure-nginx-for-postfixadmin","line":13},{"title":"Access PostfixAdmin","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#access-postfixadmin","line":14},{"title":"Conclusion","target":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/#conclusion","line":15},{"title":"![PostfixAdmin","target":"https://www.howtoforge.com/images/how_to_set_up_a_mail_server_with_postfixadmin_on_debian_11/p1.png?ezimgfmt=rs:750x425/rscb10/ng:webp/ngcb9","line":231},{"title":"![PostfixAdmin dashboard","target":"https://www.howtoforge.com/images/how_to_set_up_a_mail_server_with_postfixadmin_on_debian_11/p2.png?ezimgfmt=rs:750x390/rscb10/ng:webp/ngcb9","line":235}],"metadata":{"page-title":"How to Set Up a Mail Server with PostfixAdmin on Debian 11","url":"https://www.howtoforge.com/how-to-set-up-a-mail-server-with-postfixadmin-on-debian-11/","date":"2023-05-29 07:50:31"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/05/N26开户教程 Mutou.md": {"path":"000-inbox/clippings/2023/05/N26开户教程 Mutou.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"13hzg2a","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1685439923000,"size":2650,"at":1766986878359,"hash":"13hzg2a"},"blocks":{"#---frontmatter---":[1,5],"##一、下载N26 app":[6,15],"##一、下载N26 app#{1}":[8,15],"##二、视频验证":[16,19],"##二、视频验证#{1}":[18,19],"##1.开户确认":[20,59],"##1.开户确认#{1}":[22,59],"##2 验证护照":[60,83],"##2 验证护照#{1}":[62,83],"##3.合上护照回答个人信息":[84,103],"##3.合上护照回答个人信息#{1}":[86,103],"##4\\. 填写短信验证码":[104,106],"##4\\. 填写短信验证码#{1}":[106,106]},"outlinks":[{"title":"注册地址","target":"https://n26.com/r/haihuaw4351","line":8},{"title":"直接选NO","target":"https://files.mutou.men/2023/05/7321bd654e5f4f77731bea5178711471.png","line":10,"embedded":true}],"metadata":{"page-title":"N26开户教程 | Mutou","url":"https://www.mutou.men/posts/n26%E5%BC%80%E6%88%B7%E6%95%99%E7%A8%8B/","date":"2023-05-30 17:45:21"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/05/PostfixAmavisNew - Community Help Wiki.md": {"path":"000-inbox/clippings/2023/05/PostfixAmavisNew - Community Help Wiki.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"vk1tgf","at":1766986878042},"class_name":"SmartSource","last_import":{"mtime":1684978951000,"size":10611,"at":1766986878359,"hash":"vk1tgf"},"blocks":{"#---frontmatter---":[1,5],"##Introduction":[6,23],"##Introduction#{1}":[8,9],"##Introduction#{2}":[10,10],"##Introduction#{3}":[11,11],"##Introduction#{4}":[12,12],"##Introduction#{5}":[13,17],"##Introduction#{6}":[18,18],"##Introduction#{7}":[19,19],"##Introduction#{8}":[20,21],"##Introduction#{9}":[22,23],"##Prerequisite":[24,27],"##Prerequisite#{1}":[26,27],"##Installation":[28,43],"##Installation#{1}":[30,43],"##Configuration":[44,45],"##Clamav":[46,56],"##Clamav#{1}":[48,56],"##Spamassassin":[57,69],"##Spamassassin#{1}":[59,69],"##Amavis":[70,94],"##Amavis#{1}":[72,94],"##Postfix integration":[95,156],"##Postfix integration#{1}":[97,156],"##Test":[157,178],"##Test#{1}":[159,178],"##Troubleshooting":[179,209],"##Troubleshooting#{1}":[181,209],"##Amavis Performance":[210,217],"##Amavis Performance#{1}":[212,217],"#------------ Do not modify anything below this line -------------":[218,244],"#------------ Do not modify anything below this line -------------#{1}":[220,244]},"outlinks":[{"title":"Introduction","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Introduction","line":10},{"title":"Prerequisite","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Prerequisite","line":11},{"title":"Installation","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Installation","line":12},{"title":"Configuration","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Configuration","line":13},{"title":"Clamav","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Clamav","line":14},{"title":"Spamassassin","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Spamassassin","line":15},{"title":"Amavis","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Amavis","line":16},{"title":"Postfix integration","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Postfix_integration","line":17},{"title":"Test","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Test","line":18},{"title":"Troubleshooting","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Troubleshooting","line":19},{"title":"Amavis Performance","target":"https://help.ubuntu.com/community/PostfixAmavisNew#Amavis_Performance","line":20},{"title":"Postfix","target":"https://help.ubuntu.com/community/Postfix","line":26},{"title":"InstallingSoftware","target":"https://help.ubuntu.com/community/InstallingSoftware","line":30},{"title":"rather high memory","target":"http://unix.stackexchange.com/questions/114709/how-to-reduce-clamav-memory-usage","line":55},{"title":"\"README.postfix from amavisd-new\"","target":"http://www.ijs.si/software/amavisd/README.postfix.txt","line":149},{"title":"\"D.J.Fan\"","target":"http://www200.pair.com/mecham/spam/spamfilter20060701.html","line":149},{"title":"here","target":"http://www.ijs.si/software/amavisd/#faq-spam","line":185},{"title":"http://www.ijs.si/software/amavisd/amavisd-new-magdeburg-20050519.pdf","target":"http://www.ijs.si/software/amavisd/amavisd-new-magdeburg-20050519.pdf","line":239}],"metadata":{"page-title":"PostfixAmavisNew - Community Help Wiki","url":"https://help.ubuntu.com/community/PostfixAmavisNew","date":"2023-05-25 09:42:29","tags":["#------------"]},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/06/How we built the Tinder API Gateway by Tinder Tinder Tech Blog Medium.md": {"path":"000-inbox/clippings/2023/06/How we built the Tinder API Gateway by Tinder Tinder Tech Blog Medium.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"5fh1pc","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1685689050393,"size":14202,"at":1766986878359,"hash":"5fh1pc"},"blocks":{"#---frontmatter---":[1,5],"##How we built the Tinder API Gateway":[6,28],"##How we built the Tinder API Gateway#{1}":[8,23],"##How we built the Tinder API Gateway#{2}":[24,24],"##How we built the Tinder API Gateway#{3}":[25,25],"##How we built the Tinder API Gateway#{4}":[26,26],"##How we built the Tinder API Gateway#{5}":[27,28],"##Introduction":[29,38],"##Introduction#{1}":[31,38],"##Challenges Before TAG":[39,60],"##Challenges Before TAG#{1}":[41,50],"##Challenges Before TAG#{2}":[51,51],"##Challenges Before TAG#{3}":[52,52],"##Challenges Before TAG#{4}":[53,53],"##Challenges Before TAG#{5}":[54,54],"##Challenges Before TAG#{6}":[55,55],"##Challenges Before TAG#{7}":[56,56],"##Challenges Before TAG#{8}":[57,58],"##Challenges Before TAG#{9}":[59,60],"##Existing API Gateway Solutions":[61,71],"##Existing API Gateway Solutions#{1}":[63,64],"##Existing API Gateway Solutions#{2}":[65,65],"##Existing API Gateway Solutions#{3}":[66,66],"##Existing API Gateway Solutions#{4}":[67,67],"##Existing API Gateway Solutions#{5}":[68,69],"##Existing API Gateway Solutions#{6}":[70,71],"##Let’s Explore TAG":[72,95],"##Let’s Explore TAG#{1}":[74,77],"##Let’s Explore TAG#{2}":[78,78],"##Let’s Explore TAG#{3}":[79,79],"##Let’s Explore TAG#{4}":[80,81],"##Let’s Explore TAG#{5}":[82,87],"##Let’s Explore TAG#{6}":[88,88],"##Let’s Explore TAG#{7}":[89,89],"##Let’s Explore TAG#{8}":[90,90],"##Let’s Explore TAG#{9}":[91,91],"##Let’s Explore TAG#{10}":[92,92],"##Let’s Explore TAG#{11}":[93,93],"##Let’s Explore TAG#{12}":[94,95],"##A Deeper Look Inside TAG":[96,129],"##A Deeper Look Inside TAG#{1}":[98,103],"##A Deeper Look Inside TAG#{2}":[104,104],"##A Deeper Look Inside TAG#{3}":[105,105],"##A Deeper Look Inside TAG#{4}":[106,106],"##A Deeper Look Inside TAG#{5}":[107,107],"##A Deeper Look Inside TAG#{6}":[108,108],"##A Deeper Look Inside TAG#{7}":[109,109],"##A Deeper Look Inside TAG#{8}":[110,129],"##Real World Usage of TAG at Tinder":[130,173],"##Real World Usage of TAG at Tinder#{1}":[132,170],"##Real World Usage of TAG at Tinder#{2}":[171,171],"##Real World Usage of TAG at Tinder#{3}":[172,173],"##API Gateway at Tinder Today":[174,183],"##API Gateway at Tinder Today#{1}":[176,183],"##References:":[184,194],"##References:#{1}":[186,186],"##References:#{2}":[187,187],"##References:#{3}":[188,188],"##References:#{4}":[189,189],"##References:#{5}":[190,190],"##References:#{6}":[191,191],"##References:#{7}":[192,192],"##References:#{8}":[193,193],"##References:#{9}":[194,194]},"outlinks":[{"title":"\n\n![Tinder","target":"https://miro.medium.com/v2/resize:fill:88:88/1*hIcGX7_ZFDhlazoqjwaguQ.jpeg","line":8},{"title":"\n\n![Tinder Tech Blog","target":"https://miro.medium.com/v2/resize:fill:48:48/1*sWH63grDO1g2vl4_IAmrQA.png","line":14},{"title":"https://spring.io/projects/spring-cloud-gateway","target":"https://spring.io/projects/spring-cloud-gateway","line":186},{"title":"https://cloud.spring.io/spring-cloud-gateway/reference/html/","target":"https://cloud.spring.io/spring-cloud-gateway/reference/html/","line":187},{"title":"https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html","target":"https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html","line":188},{"title":"https://cloud.google.com/apigee/docs","target":"https://cloud.google.com/apigee/docs","line":189},{"title":"https://tyk.io/blog/what-do-we-mean-by-batteries-included/","target":"https://tyk.io/blog/what-do-we-mean-by-batteries-included/","line":190},{"title":"https://tyk.io/docs/plugins/supported-languages/","target":"https://tyk.io/docs/plugins/supported-languages/","line":191},{"title":"https://docs.konghq.com/gateway/latest/","target":"https://docs.konghq.com/gateway/latest/","line":192},{"title":"https://www.express-gateway.io/docs/","target":"https://www.express-gateway.io/docs/","line":193},{"title":"https://www.krakend.io/docs/overview/","target":"https://www.krakend.io/docs/overview/","line":194}],"metadata":{"page-title":"How we built the Tinder API Gateway | by Tinder | Tinder Tech Blog | Medium","url":"https://medium.com/tinder/how-we-built-the-tinder-api-gateway-831c6ca5ceca","date":"2023-06-02 14:57:26"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/08/Unblockit - Proxies to access your favourite blocked sites.md": {"path":"000-inbox/clippings/2023/08/Unblockit - Proxies to access your favourite blocked sites.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"15c0giu","at":1766986878043},"class_name":"SmartSource","last_import":{"mtime":1691115721769,"size":388,"at":1766986878359,"hash":"15c0giu"},"blocks":{"#---frontmatter---":[1,5],"#":[6,8]},"outlinks":[{"title":"Books","target":"https://unblockit.rsvp/#books","line":8},{"title":"Direct","target":"https://unblockit.rsvp/#ddl","line":8},{"title":"Music","target":"https://unblockit.rsvp/#music","line":8},{"title":"Sports","target":"https://unblockit.rsvp/#sports","line":8},{"title":"Streams","target":"https://unblockit.rsvp/#streams","line":8},{"title":"Torrents","target":"https://unblockit.rsvp/#torrents","line":8}],"metadata":{"page-title":"Unblockit - Proxies to access your favourite blocked sites","url":"https://unblockit.rsvp/","date":"2023-08-04 10:21:59"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/09/一张数据量很大的表,SQL分页查询特别耗时,你有什么优化方案? - 董川民.md": {"path":"000-inbox/clippings/2023/09/一张数据量很大的表,SQL分页查询特别耗时,你有什么优化方案? - 董川民.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"17r5xbz","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1693993439102,"size":3743,"at":1766986878957,"hash":"17r5xbz"},"blocks":{"#---frontmatter---":[1,5],"#":[6,112]},"outlinks":[],"metadata":{"page-title":"一张数据量很大的表,SQL分页查询特别耗时,你有什么优化方案? - 董川民","url":"https://www.dongchuanmin.com/mysql/2101.html","date":"2023-09-06 17:43:56"},"task_lines":[],"tasks":{},"codeblock_ranges":[[10,19],[25,30],[40,44],[52,57],[63,68],[86,91],[103,108]]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2023/10/用UBNT EdgeRouter X实现PPPoE拨号与IPv6 - Minaduki's Blog.md": {"path":"000-inbox/clippings/2023/10/用UBNT EdgeRouter X实现PPPoE拨号与IPv6 - Minaduki's Blog.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"1sitk0r","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1697546263000,"size":6892,"at":1766986878957,"hash":"1sitk0r"},"blocks":{"#---frontmatter---":[1,5],"##Step 0:前言":[6,15],"##Step 0:前言#{1}":[8,15],"##Step 1:光猫改桥接":[16,28],"##Step 1:光猫改桥接#{1}":[18,28],"##Step 2:配置主路由":[29,38],"##Step 2:配置主路由#{1}":[31,38],"##Step 3:配置UPnP和硬件加速":[39,92],"##Step 3:配置UPnP和硬件加速#{1}":[41,92],"##Step -1:尾声":[93,95],"##Step -1:尾声#{1}":[95,95]},"outlinks":[{"title":"再发一次友华PT622光猫里面的密码,方便外面的人查找","target":"https://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=934706#pid9110653 \"再发一次友华PT622光猫里面的密码,方便外面的人查找\"","line":27},{"title":"七海网络教学 1: EdgeRouter 启用IPv6","target":"https://www.bilibili.com/video/av90572075 \"七海网络教学 1: EdgeRouter 启用IPv6\"","line":37},{"title":"UPnP with EdgeRouter: Don’t do it! · GitHub","target":"https://gist.github.com/plembo/c7f596ce6e690c6c022a6153c674f471 \"UPnP with EdgeRouter: Don't do it! · GitHub\"","line":76},{"title":"Ubiquiti EdgeRouter 配置 UPnP2 啟用方法","target":"https://www.sakamoto.blog/ubiquiti-edgerouter-upnp2/ \"Ubiquiti EdgeRouter 配置 UPnP2 啟用方法\"","line":77},{"title":"EdgeMax – 如何开启 IP offload 进行硬件加速","target":"https://help.ui.com.cn/articles/115000117142/ \"EdgeMax - 如何开启 IP offload 进行硬件加速\"","line":90},{"title":"EdgeRouter拨号200M宽带一定务必打开PPPoE offload","target":"https://www.chiphell.com/thread-1233957-1-1.html \"EdgeRouter拨号200M宽带一定务必打开PPPoE offload\"","line":91}],"metadata":{"page-title":"用UBNT EdgeRouter X实现PPPoE拨号与IPv6 - Minaduki's Blog","url":"https://www.minaduki.cn/2022/04/16/ubnt-edgerouter-x-pppoe-and-ipv6/","date":"2023-10-17 20:37:41"},"task_lines":[],"tasks":{},"codeblock_ranges":[[50,56],[60,69],[81,86]]},
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2024/02/OpenDKIM on Postfix with virtual domains [rigacci.org].md": {"path":"000-inbox/clippings/2024/02/OpenDKIM on Postfix with virtual domains [rigacci.org].md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"dlp92q","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1706831362000,"size":7680,"at":1766986878957,"hash":"dlp92q"},"blocks":{"#---frontmatter---":[1,5],"###**−**Table of Contents":[6,7],"##OpenDKIM on Postfix with virtual domains":[8,23],"##OpenDKIM on Postfix with virtual domains#{1}":[10,23],"##Create the keys in /etc/dkimkeys/":[24,43],"##Create the keys in /etc/dkimkeys/#{1}":[26,38],"##Create the keys in /etc/dkimkeys/#{2}":[39,40],"##Create the keys in /etc/dkimkeys/#{3}":[41,43],"##Add the private key in /etc/dkimkeys/keytable":[44,49],"##Add the private key in /etc/dkimkeys/keytable#{1}":[46,49],"##Add the public key into the DNS zone":[50,57],"##Add the public key into the DNS zone#{1}":[52,57],"##Add the domain (or single sender) to be signed":[58,69],"##Add the domain (or single sender) to be signed#{1}":[60,69],"##Configure OpenDKIM":[70,77],"##Configure OpenDKIM#{1}":[72,77],"#Match a list of hosts whose messages will be signed.":[78,78],"#By default, only localhost is considered as internal host.":[79,79],"#InternalHosts refile:/etc/dkimkeys/trustedhosts":[80,81],"#Socket for the MTA connection (required).":[82,125],"#Socket for the MTA connection (required).#{1}":[83,86],"#Socket for the MTA connection (required).#Test the OpenDKIM configuration":[87,97],"#Socket for the MTA connection (required).#Test the OpenDKIM configuration#{1}":[89,97],"#Socket for the MTA connection (required).#Signing message test":[98,102],"#Socket for the MTA connection (required).#Signing message test#{1}":[100,102],"#Socket for the MTA connection (required).#Configure Postfix":[103,125],"#Socket for the MTA connection (required).#Configure Postfix#{1}":[105,125],"#Mails received via SMTP protocol are filtered with OpenDKIM;":[126,126],"#messages created using SoGO webmail go through this milter.":[127,129],"#messages created using SoGO webmail go through this milter.#{1}":[128,129],"#Filters applied (as smtpd\\_milters) to messages received via SUMBISSION/587;":[130,150],"#Filters applied (as smtpd\\_milters) to messages received via SUMBISSION/587;#{1}":[131,138],"#Filters applied (as smtpd\\_milters) to messages received via SUMBISSION/587;#Logging":[139,149],"#Filters applied (as smtpd\\_milters) to messages received via SUMBISSION/587;#Logging#{1}":[141,149],"#Filters applied (as smtpd\\_milters) to messages received via SUMBISSION/587;#Web References":[150,150]},"outlinks":[{"title":"OpenDKIM","target":"http://www.opendkim.org/ \"http://www.opendkim.org/\"","line":10},{"title":"Quick Mail Queuing Protocol","target":"https://en.wikipedia.org/wiki/Quick%20Mail%20Queuing%20Protocol \"https://en.wikipedia.org/wiki/Quick Mail Queuing Protocol\"","line":107}],"metadata":{"page-title":"OpenDKIM on Postfix with virtual domains [rigacci.org]","url":"https://rigacci.org/wiki/doku.php/doc/appunti/linux/sa/postfix_opendkim","date":"2024-02-02 07:49:12","tags":["#InternalHosts"]},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2024/07/AFTN和SITA报文简介-CSDN博客.md": {"path":"000-inbox/clippings/2024/07/AFTN和SITA报文简介-CSDN博客.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"mk3wtq","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1721482173000,"size":18180,"at":1766986878957,"hash":"mk3wtq"},"blocks":{"#---frontmatter---":[1,5],"#":[6,10],"###1.AFTN报文":[11,341],"###1.AFTN报文#{1}":[13,14],"###1.AFTN报文#{2}":[15,15],"###1.AFTN报文#{3}":[16,16],"###1.AFTN报文#{4}":[17,19],"###1.AFTN报文#{5}":[20,51],"###1.AFTN报文#{6}":[52,52],"###1.AFTN报文#{7}":[53,53],"###1.AFTN报文#{8}":[54,54],"###1.AFTN报文#{9}":[55,59],"###1.AFTN报文#{10}":[60,85],"###1.AFTN报文#1\\. PLN 飞行预报":[86,109],"###1.AFTN报文#1\\. PLN 飞行预报#{1}":[88,109],"###1.AFTN报文#2.领航计划报 FPL( filed flight plan message)":[110,134],"###1.AFTN报文#2.领航计划报 FPL( filed flight plan message)#{1}":[112,134],"###1.AFTN报文#3\\. 起飞报 DEP ( departure message)":[135,142],"###1.AFTN报文#3\\. 起飞报 DEP ( departure message)#{1}":[137,142],"###1.AFTN报文#4\\. 落地报 ARR(arrival message)":[143,150],"###1.AFTN报文#4\\. 落地报 ARR(arrival message)#{1}":[145,150],"###1.AFTN报文#5\\. 延误报 DLA( delay message)":[151,158],"###1.AFTN报文#5\\. 延误报 DLA( delay message)#{1}":[153,158],"###1.AFTN报文#6\\. 返航报 RTN(return message)":[159,168],"###1.AFTN报文#6\\. 返航报 RTN(return message)#{1}":[161,168],"###1.AFTN报文#7\\. 备降报 ALN(alternate message)":[169,178],"###1.AFTN报文#7\\. 备降报 ALN(alternate message)#{1}":[171,178],"###1.AFTN报文#8.其它电报":[179,190],"###1.AFTN报文#8.其它电报#{1}":[181,190],"###1.AFTN报文#FPL 和 RPL":[191,341],"###1.AFTN报文#FPL 和 RPL#{1}":[193,198],"###1.AFTN报文#FPL 和 RPL#1\\. 编组8:飞行规则及种类":[199,230],"###1.AFTN报文#FPL 和 RPL#1\\. 编组8:飞行规则及种类#{1}":[201,230],"###1.AFTN报文#FPL 和 RPL#2\\. 编组9航空器数目、机型和尾流等级":[231,244],"###1.AFTN报文#FPL 和 RPL#2\\. 编组9航空器数目、机型和尾流等级#{1}":[233,244],"###1.AFTN报文#FPL 和 RPL#3.编组10机载设备":[245,267],"###1.AFTN报文#FPL 和 RPL#3.编组10机载设备#{1}":[247,267],"###1.AFTN报文#FPL 和 RPL#4.编组13 起飞机场和时间(略)":[268,269],"###1.AFTN报文#FPL 和 RPL#5\\. 编组15航路":[270,289],"###1.AFTN报文#FPL 和 RPL#5\\. 编组15航路#{1}":[272,289],"###1.AFTN报文#FPL 和 RPL#6\\. 编组16目的地机场和预计经过总时间,备降机场":[290,291],"###1.AFTN报文#FPL 和 RPL#7\\. 编组18其他情报":[292,301],"###1.AFTN报文#FPL 和 RPL#7\\. 编组18其他情报#{1}":[294,301],"###1.AFTN报文#FPL 和 RPL#8.编组19补充情报":[302,341],"###1.AFTN报文#FPL 和 RPL#8.编组19补充情报#{1}":[304,341],"###2.SITA报文":[342,541],"###2.SITA报文#{1}":[344,345],"###2.SITA报文#{2}":[346,347],"###2.SITA报文#{3}":[348,352],"###2.SITA报文#{4}":[353,354],"###2.SITA报文#{5}":[355,357],"###2.SITA报文#{6}":[358,359],"###2.SITA报文#{7}":[360,360],"###2.SITA报文#{8}":[361,361],"###2.SITA报文#{9}":[362,362],"###2.SITA报文#{10}":[363,378],"###2.SITA报文#1\\. 起飞报(AD)":[379,398],"###2.SITA报文#1\\. 起飞报(AD)#{1}":[381,398],"###2.SITA报文#2\\. 降落报(AA)":[399,416],"###2.SITA报文#2\\. 降落报(AA)#{1}":[401,416],"###2.SITA报文#3\\. 延误报(DL、ED、NI)":[417,468],"###2.SITA报文#3\\. 延误报(DL、ED、NI)#{1}":[419,430],"###2.SITA报文#3\\. 延误报(DL、ED、NI)#{2}":[431,432],"###2.SITA报文#3\\. 延误报(DL、ED、NI)#{3}":[433,468],"###2.SITA报文#4\\. 取消报(CNL)":[469,480],"###2.SITA报文#4\\. 取消报(CNL)#{1}":[471,480],"###2.SITA报文#5\\. 飞行预报(PLN)":[481,541],"###2.SITA报文#5\\. 飞行预报(PLN)#{1}":[483,537],"###2.SITA报文#5\\. 飞行预报(PLN)#{2}":[538,538],"###2.SITA报文#5\\. 飞行预报(PLN)#{3}":[539,539],"###2.SITA报文#5\\. 飞行预报(PLN)#{4}":[540,540],"###2.SITA报文#5\\. 飞行预报(PLN)#{5}":[541,541]},"outlinks":[{"title":"AFTN和SITA报文简介","target":"https://blog.csdn.net/lejuo/article/details/46546191","line":532}],"metadata":{"page-title":"AFTN和SITA报文简介-CSDN博客","url":"https://blog.csdn.net/qq_35318838/article/details/88950025","date":"2024-07-16 10:30:51"},"task_lines":[],"tasks":{},"codeblock_ranges":[[88,94],[100,102],[106,108],[112,119],[125,127],[131,133],[139,141],[147,149],[155,157],[163,165],[173,175],[181,189],[367,372],[381,387],[391,397],[401,406],[410,415],[419,429],[435,441],[445,451],[455,461],[471,479],[485,493],[497,504],[520,528]]},
|
|
||||||
File diff suppressed because one or more lines are too long
-2
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
"smart_sources:000-inbox/clippings/2024/07/How to Open Port for a Specific IP Address in Firewalld.md": {"path":"000-inbox/clippings/2024/07/How to Open Port for a Specific IP Address in Firewalld.md","last_embed":{"hash":null},"embeddings":{},"last_read":{"hash":"11xyuks","at":1766986878407},"class_name":"SmartSource","last_import":{"mtime":1721914550000,"size":3990,"at":1766986878957,"hash":"11xyuks"},"blocks":{"#---frontmatter---":[1,5],"#":[6,11],"###Open Port for Specific IP Address in Firewalld":[12,20],"###Open Port for Specific IP Address in Firewalld#{1}":[14,20],"#firewall-cmd --get-zones":[21,29],"#firewall-cmd --get-zones#{1}":[23,29],"#firewall-cmd --zone=mariadb-access --add-port=3306/tcp --permanent":[30,30],"#firewall-cmd --reload":[31,39],"#firewall-cmd --reload#{1}":[33,39],"#firewall-cmd --zone=mariadb-access --add-port=3306/tcp --permanent":[40,40],"#firewall-cmd --reload[2]":[41,55],"#firewall-cmd --reload[2]#{1}":[43,50],"#firewall-cmd --reload[2]##Remove Port and Zone from Firewalld":[51,55],"#firewall-cmd --reload[2]##Remove Port and Zone from Firewalld#{1}":[53,55],"#firewall-cmd --reload[3]":[56,60],"#firewall-cmd --reload[3]#{1}":[58,60],"#firewall-cmd --reload[4]":[61,65],"#firewall-cmd --reload[4]#{1}":[63,65],"#firewall-cmd --reload[5]":[66,74],"#firewall-cmd --reload[5]#{1}":[68,74]},"outlinks":[{"title":"firewalld","target":"https://www.tecmint.com/configure-firewalld-in-centos-7/ \"CentOS Firewalld Configuration\"","line":6},{"title":"Check Firewalld Zone","target":"https://www.tecmint.com/wp-content/uploads/2020/09/reload-firewalld-settings-and-check-available-zones-again.png","line":23,"embedded":true},{"title":"Open Port for Specific IP in Firewalld","target":"https://www.tecmint.com/wp-content/uploads/2020/09/add-source-and-port-to-zone.png","line":33,"embedded":true},{"title":"View Firewalld Zone Details","target":"https://www.tecmint.com/wp-content/uploads/2020/09/view-details-of-new-zone.png","line":47,"embedded":true},{"title":"Using and Configuring firewalld","target":"https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-and-configuring-firewalld_configuring-and-managing-networking \"Using and Configuring firewalld\"","line":72}],"metadata":{"page-title":"How to Open Port for a Specific IP Address in Firewalld","url":"https://www.tecmint.com/open-port-for-specific-ip-address-in-firewalld/","date":"2024-07-25 21:35:48"},"task_lines":[],"tasks":{},"codeblock_ranges":[]},
|
|
||||||
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user