<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Brizen的博客</title><description>Brizen Blog</description><link>https://fuwari.vercel.app/</link><language>zh_CN</language><item><title>浅谈解锁bootloader与背后的原理</title><link>https://fuwari.vercel.app/posts/tech_share/unlocked_bl_sh/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/tech_share/unlocked_bl_sh/</guid><description>讲讲我们俗称&quot;解bl&quot;的背后原理</description><pubDate>Fri, 29 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Boot Rom&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://img.cdn1.vip/i/68b1859c50416_1756464540.webp&quot; alt=&quot;高通平台启动流程&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;center&amp;gt;高通平台启动流程&amp;lt;/center&amp;gt;&lt;/p&gt;
&lt;p&gt;根据流程图可以看见，在设备通电后，会首先运行PBL(Primary Boot Loader)。此时CPU会从固定地址(如ROM)执行Boot Rom代码[^1]，初始化最低级的硬件(如时钟,CPU核心等)。之后他会加载SBL(Secondary Boot Loader)到SRAM，并使用Root of trust公钥来验证SBL的签名。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;PBL(XBL或者SBL)&lt;/h2&gt;
&lt;p&gt;这部分便是今天要讲的重点——Bootloader。他主要的流程如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;读取Boot Mode-&amp;gt;
初始化启动接口(UFS,USB,eMMC,NAND)-&amp;gt;
读取下一阶段镜像-&amp;gt;
验证数字签名(RSA+SHA-256)-&amp;gt;
├─ 验证通过 → 加载 SBL 并跳转 
└─ 验证失败 → 进入 Download Mode（刷机接口）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;显而易见，PBL的目标是最大化保护设备的安全，以下简单讲几个有关的安全机制:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;签名验证(&lt;strong&gt;Signature Verification&lt;/strong&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让所有要启动的 Next-stage Bootloader (SBL/XBL) 都必须经过OEM Key的签名验证&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;防回滚(&lt;strong&gt;Rollback Protection&lt;/strong&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;防止刷入低于eFuse记录版本的固件
这也是为什么，即使你有官方签名的旧版本固件，也无法手动刷入。这是因为其版本号低于eFuse中记录的版本，PBL拒绝了该镜像的加载&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安全模式入口(EDL/Download Mode)限制&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大多OEM厂商都会限制安全模式入口。限制后，新版设备可能需要配合授权服务器（如 Mi Auth、Samsung KNOX）才能刷机，PBL 会要求 PC 工具和 OEM 服务器握手，验证授权 Token。&lt;/li&gt;
&lt;li&gt;这也是为什么售后能帮你刷机降级。员工会使用公司提供的PC工具，验证其员工身份，得到授权后可以进入该模式进行刷机。但由于内部内鬼等原因，时不时会有内部Token放出来出售(点名表扬小米😅)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你会发现，在流程中，他会验证镜像是否经过OEM/厂家的签名认证。&lt;/p&gt;
&lt;p&gt;这意味着——无论你使用什么刷机工具(Fastboot、MiFlash等)去刷入固件，最终能否启动，取决于PBL是否认可该镜像的签名。&lt;/p&gt;
&lt;p&gt;这也是为什么你要在解锁Bootloader后，才能刷入第三方ROM。&lt;/p&gt;
&lt;h3&gt;PBL与Bootloader锁&lt;/h3&gt;
&lt;p&gt;Bootloader的锁定状态是由eFuse/OTP(One-Time Programmable Memory)记录，在PBL启动时会读取这些硬件熔丝位(Fuse Bits)&lt;/p&gt;
&lt;p&gt;在寄存器中一般会记录一下信息:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BOOT_UNLOCK&lt;/code&gt;:表示当前解锁状态(0 = Locked, 1 = Unlocked)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OEM_KEY_HASH&lt;/code&gt;:厂商公钥的哈希值，用于签名验证&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ANTI-ROLLBACK_VER&lt;/code&gt;:防回滚版本号。用于验证镜像版本，确保镜像版本 ≥ eFuse版本，防止降级到存在漏洞的固件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;解锁Bootloader流程&lt;/h4&gt;
&lt;p&gt;以 Android + Qualcomm SoC 为例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户通过 &lt;code&gt;fastboot oem unlock&lt;/code&gt; 发送解锁命令。&lt;/li&gt;
&lt;li&gt;Fastboot 模式下的 &lt;strong&gt;Secondary Bootloader（SBL/XBL）&lt;/strong&gt; 会请求用户确认（擦除数据）。&lt;/li&gt;
&lt;li&gt;SBL/XBL 向 &lt;strong&gt;Qualcomm Secure Execution Environment（QSEE, TrustZone）&lt;/strong&gt; 发送解锁请求。&lt;/li&gt;
&lt;li&gt;QSEE 调用 &lt;strong&gt;PBL 对接的安全熔丝编程接口&lt;/strong&gt;（OEM 控制）烧录 &lt;code&gt;BOOT_UNLOCK=1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;解锁完成， PBL 在启动链中会跳过 OEM Key 验证，或者采用开发者密钥（用于允许第三方镜像）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::note
PBL 自身不会被修改，但它的行为会因熔丝位（Fuse Bit）的状态而改变。
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;熔断机制&lt;/h2&gt;
&lt;p&gt;个人觉得熔断机制挺有趣的，简单讲讲:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在硅片集成电路内部，设计了由薄金属或多晶硅工艺实现的特殊可控连线。这条连线在出厂时是导通的，芯片运行时可通过高电压/电流或激光能量将其永久断开（或改变其物理状态），从而记录一个“1”或“0”的状态。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;基于其是在物理层面的熔断，因此无法恢复。
比如&lt;strong&gt;Samsung Knox&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Samsung Knox&lt;/h3&gt;
&lt;h4&gt;流程&lt;/h4&gt;
&lt;p&gt;以Bootloader解锁为例:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;用户在 &lt;strong&gt;Download Mode&lt;/strong&gt; 下选择 “OEM Unlock” 并确认&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当前运行在 SBL（或 ABL）阶段的 Bootloader 向 TrustZone Secure Monitor 发起 &lt;strong&gt;SMC（Secure Monitor Call）&lt;/strong&gt; 请求：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;`smc_call(SMC_CMD_BLOW_FUSE, KNOX_WARRANTY_BIT_ID);`
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TrustZone 内的安全固件（TZSW）通过 &lt;strong&gt;eFuse Controller&lt;/strong&gt; 选中对应的熔丝行列地址&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;硬件打开 &lt;strong&gt;VPP 高压电源轨&lt;/strong&gt;（通常在芯片设计时是隔离状态，只在安全状态下可用，防止自己电自己）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在一个很短的时间内向该熔丝单元施加大电流/高压&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;熔丝链路永久断开（熔断），逻辑状态从 0 → 1&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;把新状态Latch到一个只读寄存器（Boot ROM 在每次启动时读取）&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;恭喜你！你的手机将会....&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Samsung Pay/Samsung Pass 永久不可用&lt;/li&gt;
&lt;li&gt;安全文件夹功能无法使用&lt;/li&gt;
&lt;li&gt;保修失效
...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::note
理论上可以烧写另一个位表示重新锁定（部分 SoC 采用双位方案 LOCK/UNLOCK），但是我不懂捏
:::&lt;/p&gt;
&lt;p&gt;:::important
如果你打算购入Samsung的二手机，需要注意这一点，以免一失足成千古恨。
:::&lt;/p&gt;
&lt;p&gt;end~😌&lt;/p&gt;
&lt;p&gt;[^1]: 这段Boot Rom代码写死在SoC内部的Mask Rom里，无法更改。&lt;/p&gt;
</content:encoded></item><item><title>我的学习笔记</title><link>https://fuwari.vercel.app/posts/just-talk/learn-share_25827/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/just-talk/learn-share_25827/</guid><description>记录学习心得与趣事</description><pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;今日学习内容&lt;/h1&gt;
&lt;p&gt;今天学习了域名备案问题以及lim解法:&lt;/p&gt;
&lt;h4&gt;1.域名备案&lt;/h4&gt;
&lt;p&gt;对于网站在内地无法访问的问题，我显示尝试了CDN测速，测速结果显示除&lt;strong&gt;中国移动&lt;/strong&gt;运营商外，其余两家运营商均可以访问，但实际操作中仍无法开启。理论上Cloudflare支持内地访问，暂时归类为未备案导致被阻断链接。&lt;/p&gt;
&lt;h5&gt;暂时想到的解决思路&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;购买国内CDN-&amp;gt;透过内地CDN进行加速&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将域名改为内地服务商解析，并进行备案&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;过几天再研究下&lt;/p&gt;
&lt;h4&gt;2.数学&lt;/h4&gt;
&lt;p&gt;关于lim的解法问题，之前学的时候是背公式，like:&lt;/p&gt;
&lt;p&gt;$$\lim\limits_{x\rightarrow\infty}\frac{e^x-1}{x}=1$$ or $$\lim\limits_{x\rightarrow\ 0}\frac{sin x}{x}=1$$&lt;/p&gt;
&lt;p&gt;以第一条为例，常规解法我们会直接代公式得到答案=1&lt;/p&gt;
&lt;p&gt;但其实可以利用洛必达法则(L&apos;Hôpital&apos;s rule)来解题&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;ちょっと待って，这是什么东西?&lt;/p&gt;
&lt;p&gt;简单来说，当x趋向于a，且f(x)=g(x)=0时：&lt;/p&gt;
&lt;p&gt;$\frac{f(x)}{g(x)}=\frac{f&apos;(x)}{g&apos;(x)}$&lt;/p&gt;
&lt;p&gt;以第二条为例，我们将分子看作&lt;em&gt;f(x)&lt;/em&gt;，分母看作&lt;em&gt;g(x)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;你会发现，当x趋近于0时，整条公式会变成&lt;/p&gt;
&lt;p&gt;$\frac{sin(0)}{(0)}=\frac{0}{0}$&lt;/p&gt;
&lt;p&gt;利用法则&lt;/p&gt;
&lt;p&gt;$d(sin x)=cosx$   和 $d(x)=1$&lt;/p&gt;
&lt;p&gt;得到&lt;/p&gt;
&lt;p&gt;$\frac{cosx}{1}=\frac{cos0}{1}=1$&lt;/p&gt;
&lt;p&gt;~&lt;/p&gt;
</content:encoded></item><item><title>Fuwari部署Twikoo过程分享</title><link>https://fuwari.vercel.app/posts/tech_share/twikko/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/tech_share/twikko/</guid><description>此文章记录Twikoo部署过程，仅供参考</description><pubDate>Tue, 26 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Twikoo — &quot;一个简洁、安全、免费的静态网站评论系统&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;本站原本使用Giscus的评论功能&lt;/p&gt;
&lt;p&gt;但考虑到必须要Github账户的局限性&lt;/p&gt;
&lt;p&gt;为了更方便评论，我决定放弃前者，毅然加入更权威的代表—‘Twikoo’&lt;/p&gt;
&lt;p&gt;本文参考官方教程，也可以按照官方的来，大差不差~&lt;/p&gt;
&lt;h2&gt;搭建后端&lt;/h2&gt;
&lt;p&gt;首先，你需要注册一个&lt;a href=&quot;https://account.mongodb.com/account/login&quot;&gt;MongoDB&lt;/a&gt;账号以获取一个免费的数据库&lt;/p&gt;
&lt;p&gt;::link-card{url=&quot;https://twikoo.js.org/mongodb-atlas.html&quot; title=&quot;MongoDB Atlas | Twikoo 文档&quot; description=&quot;一个简洁、安全、免费的静态网站评论系统&quot;}&lt;/p&gt;
&lt;p&gt;区域选择: Region优先选择离主机近的站点，一般默认的就是。如果使用云主机就按其地理位置为准。
设置好后，你将会得到类似的代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mongodb+srv://&amp;lt;db_username&amp;gt;:&amp;lt;db_password&amp;gt;@cluster0.xxx.mongodb.net/?retryWrites......Cluster0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
请牢记在 Password Authentication 下设置数据库用户名和密码!!!
:::&lt;/p&gt;
&lt;h2&gt;部署数据库&lt;/h2&gt;
&lt;p&gt;使用你的Github账户来登录Vercel&lt;/p&gt;
&lt;p&gt;::link-card{url=&quot;https://vercel.com/signup&quot; title=&quot;Dashboard&quot; icon=&quot;https://assets.vercel.com/image/upload/front/vercel/twitter-card.png&quot;}&lt;/p&gt;
&lt;p&gt;再点击下面的链接来快速部署&lt;/p&gt;
&lt;p&gt;::link-card{url=&quot;https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fimaegoo%2Ftwikoo%2Ftree%2Fmain%2Fsrc%2Fserver%2Fvercel-min&amp;amp;teamSlug=brizens-projects&quot; title=&quot;New Project – Vercel&quot;  icon=&quot;https://assets.vercel.com/image/upload/front/import/og.png&quot;}&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Git Providers&lt;/code&gt;选择&lt;code&gt;Github&lt;/code&gt;，&lt;code&gt;Git Scope&lt;/code&gt;选择自己的账户，&lt;code&gt;Private Repository Name&lt;/code&gt;为你的库命名。&lt;/p&gt;
&lt;p&gt;若是一切顺利，你会看见这样的画面
&lt;img src=&quot;https://img.cdn1.vip/i/68ac9f5575e4b_1756143445.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这时你还不会有Domain位址&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;选择&lt;code&gt;Settings&lt;/code&gt; - &lt;code&gt;Environment Variables&lt;/code&gt;,填写以下变量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Key:MONGODB_URI
Value:mongodb+srv://&amp;lt;db_username&amp;gt;......&amp;lt;此处需要更改为你上面获取到的链接字符&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;随后点save&lt;/p&gt;
&lt;p&gt;此时再选择&lt;code&gt;Deployments&lt;/code&gt;,点击任意一个项目后面的三个点，再选择&lt;code&gt;Redeploy&lt;/code&gt;，再选择下方的&lt;code&gt;Redeploy&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这时回到&lt;code&gt;Overview&lt;/code&gt;,会发现&lt;code&gt;Domain&lt;/code&gt;处已分配了一个域名,复制下该域名。&lt;/p&gt;
&lt;h2&gt;参数设置&lt;/h2&gt;
&lt;p&gt;可以跟随其他大大的教程设置本地文件，伟大无需多言&lt;/p&gt;
&lt;p&gt;::link-card{url=&quot;https://blog.qqquq.com/posts/fuwari-twikoo-comments/&quot; title=&quot;给你的 Fuwari 接入 Twikoo 评论 - 咸鱼小窝&quot; description=&quot;Fuwari 博客接入 Twikoo 评论&quot; image:=&quot;https://blog.qqquq.com/favicon/favicon-light-32.png&quot;}&lt;/p&gt;
&lt;p&gt;其中，请将上面复制的域名复制到&lt;code&gt;envID&lt;/code&gt;,并将&amp;lt;username&amp;gt;,&amp;lt;password&amp;gt;修改成你设置的账号和密码。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export const commentConfig: CommentConfig = {
  twikoo: {
    envId: &apos;这里替换为你的 envId&apos;,
  },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后在终端输入&lt;code&gt;pnpm dev&lt;/code&gt;即可本地预览，enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Simple Guides for Fuwari</title><link>https://fuwari.vercel.app/posts/guide/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/guide/</guid><description>How to use this blog template.</description><pubDate>Mon, 01 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Cover image source: &lt;a href=&quot;https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/208fc754-890d-4adb-9753-2c963332675d/width=2048/01651-1456859105-(colour_1.5),girl,_Blue,yellow,green,cyan,purple,red,pink,_best,8k,UHD,masterpiece,male%20focus,%201boy,gloves,%20ponytail,%20long%20hair,.jpeg&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This blog template is built with &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt;. For the things that are not mentioned in this guide, you may find the answers in the &lt;a href=&quot;https://docs.astro.build/&quot;&gt;Astro Docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Front-matter of Posts&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;---
title: My First Blog Post
published: 2023-09-09
description: This is the first post of my new Astro blog.
image: ./cover.jpg
tags: [Foo, Bar]
category: Front-end
draft: false
---
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The title of the post.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;published&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The date the post was published.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A short description of the post. Displayed on index page.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The cover image path of the post.&amp;lt;br/&amp;gt;1. Start with &lt;code&gt;http://&lt;/code&gt; or &lt;code&gt;https://&lt;/code&gt;: Use web image&amp;lt;br/&amp;gt;2. Start with &lt;code&gt;/&lt;/code&gt;: For image in &lt;code&gt;public&lt;/code&gt; dir&amp;lt;br/&amp;gt;3. With none of the prefixes: Relative to the markdown file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The tags of the post.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The category of the post.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If this post is still a draft, which won&apos;t be displayed.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Where to Place the Post Files&lt;/h2&gt;
&lt;p&gt;Your post files should be placed in &lt;code&gt;src/content/posts/&lt;/code&gt; directory. You can also create sub-directories to better organize your posts and assets.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src/content/posts/
├── post-1.md
└── post-2/
    ├── cover.png
    └── index.md
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Markdown Example</title><link>https://fuwari.vercel.app/posts/markdown/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/markdown/</guid><description>A simple example of a Markdown blog post.</description><pubDate>Sun, 01 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;An h1 header&lt;/h1&gt;
&lt;p&gt;Paragraphs are separated by a blank line.&lt;/p&gt;
&lt;p&gt;2nd paragraph. &lt;em&gt;Italic&lt;/em&gt;, &lt;strong&gt;bold&lt;/strong&gt;, and &lt;code&gt;monospace&lt;/code&gt;. Itemized lists
look like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;this one&lt;/li&gt;
&lt;li&gt;that one&lt;/li&gt;
&lt;li&gt;the other one&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that --- not considering the asterisk --- the actual text
content starts at 4-columns in.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Block quotes are
written like so.&lt;/p&gt;
&lt;p&gt;They can span multiple paragraphs,
if you like.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Use 3 dashes for an em-dash. Use 2 dashes for ranges (ex., &quot;it&apos;s all
in chapters 12--14&quot;). Three dots ... will be converted to an ellipsis.
Unicode is supported. ☺&lt;/p&gt;
&lt;h2&gt;An h2 header&lt;/h2&gt;
&lt;p&gt;Here&apos;s a numbered list:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;first item&lt;/li&gt;
&lt;li&gt;second item&lt;/li&gt;
&lt;li&gt;third item&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note again how the actual text starts at 4 columns in (4 characters
from the left side). Here&apos;s a code sample:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Let me re-iterate ...
for i in 1 .. 10 { do-something(i) }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you probably guessed, indented 4 spaces. By the way, instead of
indenting the block, you can use delimited blocks, if you like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;define foobar() {
    print &quot;Welcome to flavor country!&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(which makes copying &amp;amp; pasting easier). You can optionally mark the
delimited block for Pandoc to syntax highlight it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import time
# Quick, count to ten!
for i in range(10):
    # (but not *too* quick)
    time.sleep(0.5)
    print i
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;An h3 header&lt;/h3&gt;
&lt;p&gt;Now a nested list:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, get these ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;carrots&lt;/li&gt;
&lt;li&gt;celery&lt;/li&gt;
&lt;li&gt;lentils&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boil some water.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dump everything in the pot and follow
this algorithm:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; find wooden spoon
 uncover pot
 stir
 cover pot
 balance wooden spoon precariously on pot handle
 wait 10 minutes
 goto first step (or shut off burner when done)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Do not bump wooden spoon or it will fall.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Notice again how text always lines up on 4-space indents (including
that last line which continues item 3 above).&lt;/p&gt;
&lt;p&gt;Here&apos;s a link to &lt;a href=&quot;http://foo.bar&quot;&gt;a website&lt;/a&gt;, to a &lt;a href=&quot;local-doc.html&quot;&gt;local
doc&lt;/a&gt;, and to a &lt;a href=&quot;#an-h2-header&quot;&gt;section heading in the current
doc&lt;/a&gt;. Here&apos;s a footnote [^1].&lt;/p&gt;
&lt;p&gt;[^1]: Footnote text goes here.&lt;/p&gt;
&lt;p&gt;Tables can look like this:&lt;/p&gt;
&lt;p&gt;size material color&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;9 leather brown
10 hemp canvas natural
11 glass transparent&lt;/p&gt;
&lt;p&gt;Table: Shoes, their sizes, and what they&apos;re made of&lt;/p&gt;
&lt;p&gt;(The above is the caption for the table.) Pandoc also supports
multi-line tables:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;keyword text&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;red Sunsets, apples, and
other red or reddish
things.&lt;/p&gt;
&lt;p&gt;green Leaves, grass, frogs
and other things it&apos;s
not easy being.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;A horizontal rule follows.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here&apos;s a definition list:&lt;/p&gt;
&lt;p&gt;apples
: Good for making applesauce.
oranges
: Citrus!
tomatoes
: There&apos;s no &quot;e&quot; in tomatoe.&lt;/p&gt;
&lt;p&gt;Again, text is indented 4 spaces. (Put a blank line between each
term/definition pair to spread things out more.)&lt;/p&gt;
&lt;p&gt;Here&apos;s a &quot;line block&quot;:&lt;/p&gt;
&lt;p&gt;| Line one
| Line too
| Line tree&lt;/p&gt;
&lt;p&gt;and images can be specified like so:&lt;/p&gt;
&lt;p&gt;Inline math equations go in like so: $\omega = d\phi / dt$. Display
math should get its own line and be put in in double-dollarsigns:&lt;/p&gt;
&lt;p&gt;$$I = \int \rho R^{2} dV$$&lt;/p&gt;
&lt;p&gt;$$
\begin{equation*}
\pi
=3.1415926535
;8979323846;2643383279;5028841971;6939937510;5820974944
;5923078164;0628620899;8628034825;3421170679;\ldots
\end{equation*}
$$&lt;/p&gt;
&lt;p&gt;And note that you can backslash-escape any punctuation characters
which you wish to be displayed literally, ex.: `foo`, *bar*, etc.&lt;/p&gt;
</content:encoded></item></channel></rss>