惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Schneier on Security
Schneier on Security
C
Cisco Blogs
Help Net Security
Help Net Security
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
Know Your Adversary
Know Your Adversary
Hacker News: Ask HN
Hacker News: Ask HN
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
WordPress大学
WordPress大学
小众软件
小众软件
Jina AI
Jina AI
量子位
T
Threatpost
Forbes - Security
Forbes - Security
L
LINUX DO - 最新话题
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cyber Attacks, Cyber Crime and Cyber Security
有赞技术团队
有赞技术团队
博客园_首页
T
Threat Research - Cisco Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
The Exploit Database - CXSecurity.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Scott Helme
Scott Helme
博客园 - 【当耐特】
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Last Watchdog
The Last Watchdog
Attack and Defense Labs
Attack and Defense Labs
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
The Cloudflare Blog
S
Schneier on Security
爱范儿
爱范儿
N
News and Events Feed by Topic
NISL@THU
NISL@THU
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

Stonecharioteer on Tech

I Traced My Traffic Through a Home Tailscale Exit Node What Was I Reading Last? In Three Not-So-Easy Pieces Dogfooding Is Hard Code blocks in your books, finally GoForGo v0.9.0 Merrilin - We built an app to read books I use a Macbook now Data Structures & Algorithms - Preparing for Interviews Using a local DNS namespace for local service discovery Direction KOllector - Publishing KOReader Highlights gbt: branches touched in the last 24 hours A Soiree into Symbols in Ruby Some Smalltalk about Ruby Loops Ruby Blocks Returning from Ruby Blocks, Procs and Lambdas My Linux Laptop Finally Works: How Claude Helped Me Fix Years of Annoyances TIL: Watchexec - Modern File Watching for Development Workflows A Less Busy Mind GoForGo - Learn Go through live examples Migrating My Old Blog to Hugo with Claude The Qtile Window Manager: A Python-Powered Tiling Experience Read the RFCs that Built the Internet Py-x-Protobuf - Or How I Learned to Stop Worrying and Love Protocol Buffers Python Reverse a List New Beginnings Leaving ChainSafe Systems Screen Lock for Cinnamon Desktop using Zenity and Terminal Commands Crews Not Teams A System for Getting Better at LeetCode So Far So Rust Retrying HTTP Requests with Rust A Primer on Control Charts Learning Rust Explicit is Better than Implicit: Rust for Pythonistas Using Custom Delimiters in Jinja Templates TIL: Creating Fixed Length Iterables in Python Documentation Without Assumption Vagrant Python - A Reflection in 2022 Learning Golang No, A Virtual Machine Is Not Enough: Why Developers Need Native Linux Empathy in Tech For Those Who Came in Late A Weekend With PostgreSQL TIL: Gooey and Python Fire for Quick GUIs and CLIs TIL: 2ality - Dr. Axel Rauschmayer's JavaScript Blog TIL: MassDNS - High-Performance Bulk DNS Lookups TIL: Matomo Analytics, Google Tech Writing, Memory Programming, and NES TV Signals TIL: MontyDB - MongoDB Implemented in Python Returning to the Craft of Programming TIL: CPUFetch, OneFetch, and Learn CSS TIL: DNS Performance Testing and Pi-hole with Unbound TIL: Eli Bendersky's Blog, Awesome By Example, NoCoDB, and Martin Kleppmann TIL: CRDTs, Extreme HTTP Performance, and BYTEPATH Game TIL: AutoInvent, ASGI, Python Packaging, RAPIDS GPU Computing, and FlaskCon TIL: MangaDesk - Terminal Client for MangaDex TIL: McFly - Smart Shell History Search TIL: Siege Load Testing and Awesome FastAPI Resources TIL: Ventoy Bootable USB and Justniffer Network Analysis TIL: CLI Code Review, Git Split Diffs, and Internal Combustion Engine TIL: Benford's Law, Web Security Headers, Event Sourcing, and Mozilla Security Guidelines How to Write Documentation - The README.md File The Importance of Documentation TIL: NNgroup UX Research, SponsorBlock, and Labella Python Library TIL: The Little Book of Rust Macros and Rust Performance Book TIL: Git-Bug Distributed Issue Tracker and Omni Kubernetes Monitoring TIL: Zellij - Modern Terminal Multiplexer TIL: How Discord Handles 2.5 Million Concurrent Voice Users TIL: Volumio - The Audiophile Music Player TIL: Areopagitica - Milton's Defense of Free Speech TIL: Fast Node Manager, Zoxide Smart CD, Technical Writing, PyO3, and Qubes OS TIL: Slurm Workload Manager for HPC Clusters TIL: Data Visualization Guide and Oso Authorization Academy TIL: CORS Deep Dive, Piku Tiny PaaS, Rust Strings, and Deno Standard Library TIL: Raspberry Pi OS Development, Vim Beginner Guide, Password Management, and QueryBook TIL: uBlock Origin Performance Optimization on Firefox TIL: Breaking PostgreSQL at Scale and LeetCode Problem Patterns TIL: Awesome Tmux Resources for Terminal Multiplexing TIL: Grit - A Multitree-Based Personal Task Manager TIL: Lens 4.2 Kubernetes IDE, Shell Scripting Guide, and Dark HTTP Server Do The Job You Hate So You Won't Hate The Job You Love TIL: Innernet VPN Solution and NoteCalc Calculator App TIL: Argo CD for GitOps and Lens Kubernetes IDE TIL: Modern Rust CLI Tools - System Monitoring, HTTP Requests, and DNS TIL: tz - A Time Zone Helper Tool TIL: Distributed Systems Education, Fallacies, and Self-Hosted Internet Archiving TIL: Real-Time Voice Cloning Technology TIL: ChartMuseum for Helm, AMD's Corporate Journey, and Kubernetes Pod Scaling TIL: Docker and Kubernetes Tools - Whaler, Descheduler, and Dive TIL: Post-Mortem Collection, Terminal Plotting, and Technical Twitter TIL: Dark Mode Toggle Web Component by Google Chrome Labs TIL: Python eval(), exec(), and compile() Functions TIL: Camelot PDF Tables, PostgreSQL Row Level Security, Zerodha Varsity, and Write Yourself a Git TIL: fuser Command for Process and File Investigation TIL: i Hate Regex - The Ultimate Regex Cheat Sheet TIL: Dolt - Git for Data and Database Version Control TIL: x86 Assembly Programming and SafeEyes Break Reminder TIL: Comprehensive Distributed Systems Reading List TIL: Cosmopolitan C Library, Distributed Systems Book, High Performance Browser Networking, and Rust Roguelike Tutorial
TIL: ABlog for Sphinx - Documentation as a Blog Platform
2021-02-25 · via Stonecharioteer on Tech

ABlog for Sphinx — ABlog

Sphinx extension that adds blogging capabilities to documentation sites:

What is ABlog:

  • Sphinx Extension: Extends Sphinx documentation generator with blog features
  • Documentation + Blog: Combine technical documentation with blog posts
  • Static Site Generation: Creates fast, secure static websites
  • reStructuredText: Uses Sphinx’s native markup for content creation

Core Features:

Blog Functionality:

  • Post Organization: Chronological organization with archives
  • Categorization: Tags and categories for content organization
  • RSS/Atom Feeds: Automatic feed generation for subscribers
  • Archive Pages: Automatic generation of date-based archives

Sphinx Integration:

  • Cross-References: Link between blog posts and documentation
  • Extensions: Use other Sphinx extensions (math, diagrams, code highlighting)
  • Themes: Compatible with existing Sphinx themes
  • Search: Built-in search functionality

Content Creation:

Blog Post Structure:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
My First Blog Post
==================

:date: 2021-02-25
:tags: python, sphinx, blogging
:category: tutorials
:author: Your Name

This is the content of my blog post written in reStructuredText.

Code blocks work great:

.. code-block:: python

    def hello_world():
        print("Hello from ABlog!")

You can also include:

* Lists and tables
* Math equations via MathJax
* Cross-references to other posts
* Images and figures

Directive Usage:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
.. post:: 2021-02-25
   :tags: python, documentation
   :category: tutorials
   :author: Author Name

   Post content goes here...

.. postlist:: 5
   :category: tutorials
   :format: {title} - {date}

Configuration:

Blog Settings:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# conf.py
extensions = ['ablog']

# Blog settings
blog_title = 'My Technical Blog'
blog_baseurl = 'https://myblog.com'
blog_authors = {
    'author1': ('Full Name', 'https://example.com')
}
blog_default_author = 'author1'
blog_feed_fulltext = True  # Include full content in feeds

Post Templates:

1
2
3
4
# Automatic post templates
blog_post_pattern = 'posts/*/*'
post_auto_image = 1  # Auto-extract first image
post_auto_excerpt = 2  # Auto-generate excerpt

Advanced Features:

Archive Generation:

  • Year Archives: /2021/ shows all posts from 2021
  • Month Archives: /2021/02/ shows posts from February 2021
  • Tag Pages: /tag/python/ shows all Python-related posts
  • Category Pages: /category/tutorials/ shows tutorial posts
  • Disqus Integration: Add comments to blog posts
  • Social Sharing: Share buttons for popular platforms
  • Google Analytics: Track blog traffic and engagement
  • SEO Optimization: Meta tags and structured data

Use Cases:

Technical Blogs:

  • Developer Blogs: Personal or company technical blogs
  • Project Documentation: Combine API docs with tutorials and announcements
  • Research Journals: Academic or scientific content with proper citations
  • Open Source Projects: News, tutorials, and community updates

Content Types:

  • Tutorials: Step-by-step technical guides
  • Release Notes: Project updates and changelog posts
  • Technical Insights: Deep dives into technical topics
  • Community Content: User-contributed articles and guides

Advantages over Traditional Blogging:

Technical Content:

  • Code Syntax Highlighting: Superior code presentation
  • Mathematical Notation: LaTeX math rendering via MathJax
  • Cross-References: Link between different parts of documentation
  • Version Control: Blog content in Git with docs

Performance and Security:

  • Static Files: Fast loading, easy to cache
  • No Database: Reduced attack surface
  • CDN Friendly: Easy deployment to CDNs
  • Version Control: Track changes to blog content

Deployment Options:

Hosting Platforms:

  • GitHub Pages: Free hosting with automatic builds
  • Netlify: Advanced features like form handling
  • Read the Docs: Specialized for technical documentation
  • Custom Servers: Self-hosted solutions

Build Process:

1
2
3
4
5
6
# Local development
sphinx-build -b html . _build/html
ablog serve

# Automated deployment
ablog deploy --github-pages

Themes and Customization:

Theme Compatibility:

  • Alabaster: Clean, minimal theme
  • ReadTheDocs: Popular documentation theme
  • Bootstrap: Responsive, modern themes
  • Custom Themes: Create branded experiences

Template Customization:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<!-- Custom post template -->
<article class="blog-post">
  <h1>{{ post.title }}</h1>
  <div class="post-meta">
    Posted on {{ post.date }} by {{ post.author }} in {{ post.category }}
  </div>
  <div class="post-content">{{ post.body }}</div>
  <div class="post-tags">
    {% for tag in post.tags %}
    <span class="tag">{{ tag }}</span>
    {% endfor %}
  </div>
</article>

ABlog bridges the gap between technical documentation and blogging, providing a powerful platform for developers and technical writers who want the best of both worlds - the rigor of documentation tools with the accessibility of blog platforms.