AutonomousVehicleControlBeginnersGuide
关于自动驾驶车辆控制算法的 Python 示例代码与文档。本项目可作为技术指南书,供初学者学习这些算法与软件架构。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
AAGeek Calendar
翻译准备中
正在加载完整 README。
查看完整 README ↗A single-file, client-side events calendar that pulls events from a public Google Calendar feed — plus the NETA 65 Grapevine / La Viña events feed — and lets users filter them by class, category, venue, and day-of-week — without any server.
The app is one index.html plus a few static files that make it an installable, offline-capable app (manifest.webmanifest, sw.js, icons/, screenshots/). Drop the folder on GitHub Pages, Netlify, Cloudflare Pages, S3, or any static host. No build step.
Google Calendar gives you an event title, a start/end time, a location, and a description — but no structured way to tag events with custom labels like "this is a Speaker meeting" or "this is virtual."
The trick this app uses: the first line of every event's description carries the tags, in a fixed format:
<Class>|<Category>|<Venue>
That single tag-line is followed by <br><br>--<br> (a visual divider used by Google Calendar's rich text editor) and then the human-readable event description. Example:
AAGeek|Speaker|Virtual<br><br>--<br>
As Bill Sees It<br>
George H — Nobleton, ON (CA) & Harold L — St Louis, MO<br>
ID: 82694310797 PW: 124145<br>
https://us06web.zoom.us/j/82694310797?pwd=...
When you create or edit an event in Google Calendar, the first line of the Description must be exactly the three pipe-separated tags. The rest of the description is whatever you'd normally write.
| Dimension | Allowed values |
|---|---|
| Class | AAGeek · NETA65 · AAWSNY |
| Category | Study · Seminar · Speaker · Series · Story · Service · Session |
| Venue | Virtual · Physical · Hybrid |
Tags are case-insensitive in the parser, but please write them in the canonical form above so the calendar stays consistent. Order doesn't matter — Virtual|AAGeek|Speaker is parsed identically to AAGeek|Speaker|Virtual.
ICS_URL near the top of the <script> block).RRULE), exception dates (EXDATE), recurrence overrides (RECURRENCE-ID), and time zones (TZID).description property — which Google delivers as HTML (<br>, <a href>, entities like & and ').<br>, </p>, or newline to isolate the tag-line.& becomes &), then splits on | and trims each piece.-- separator from the description body so users see clean text in the event details dialog.<br>, <a>, <p>, <strong>, <em>, <ul>/<ol>/<li>, etc.) and validates link schemes (only http, https, mailto, tel, zoommtg, zoomus, webcal are allowed — everything else gets unwrapped, preventing javascript: injection).If an event's first line doesn't include |, or doesn't match any known tag, that event simply ends up with no tags — it'll show up under "All" filters but disappear from any specific filter.
Everything on the NETA 65 Grapevine / La Viña events page comes into the app on its own, from that site's calendar feed (https://grapevine.neta65.org/events.ics). Don't also add those events to Google Calendar — they would show up twice.
Those events have no tag line, so the app gives each one the line a hand-entered event would have, NETA65|Service|<Venue>, before the normal parser sees it:
| The event has… | Venue |
|---|---|
| a web link (Zoom, etc.) as its location | Virtual |
| a street address, and an online-meeting link in its description | Hybrid |
| a street address, or no location yet ("venue to be announced") | Physical |
| no location, but an online-meeting link in its description | Virtual |
Image attachments on those events (the flyers, usually Google Drive images) become IMG: lines, so they show in the event dialog like any other event image. The feed lists each date of a monthly event separately; dates of the same event are grouped back together, so they get the 🔁 badge and a summary such as "Monthly · third Wednesday".
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗