<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web on Sawyer Zheng's Blog</title><link>https://elated-raman-42e0c2.netlify.app/tags/web/</link><description>Recent content in Web on Sawyer Zheng's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 24 Sep 2025 14:10:50 +0800</lastBuildDate><atom:link href="https://elated-raman-42e0c2.netlify.app/tags/web/index.xml" rel="self" type="application/rss+xml"/><item><title>Server</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/server/</link><pubDate>Tue, 10 Oct 2023 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/server/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
cgi, wsgi, uwsgi, asgi 辨析
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://baijiahao.baidu.com/s?id=1718367047580754624&amp;amp;wfr=spider&amp;amp;for=pc"&gt;https://baijiahao.baidu.com/s?id=1718367047580754624&amp;amp;wfr=spider&amp;amp;for=pc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
概念
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;web 服务器&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;web 框架&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Web in python</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/web/</link><pubDate>Wed, 22 Feb 2023 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/web/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
工具收集
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;连接重试工具&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tenacity: &lt;a href="https://github.com/jd/tenacity"&gt;GitHub - jd/tenacity: Retrying library for Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
MVC 架构
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;demo 项目&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.rockdata.net/zh-cn/tutorial/spring-boot-spring-data-jpa/"&gt;PostgreSQL 教程: 在 Spring Boot 中使用 Spring Data JPA - Redrock Postgres&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;层的功能解释：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;java 中的 MVC 和 python 中的东西注意对应关系&lt;/li&gt;
&lt;li&gt;MVC: Model, View, Controller&lt;/li&gt;
&lt;li&gt;Model: 数据库 model&lt;/li&gt;
&lt;li&gt;View: html 模板渲染&lt;/li&gt;
&lt;li&gt;Controller: 外部的 http 请求路由转换成 内部的函数调用， 即： routers&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Service: 服务层包含业务逻辑&lt;/p&gt;</description></item><item><title>Web ---- 网络知识基础</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/web/</link><pubDate>Wed, 13 Jul 2022 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/web/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
RESTful API
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方： &lt;a href="https://restfulapi.net/"&gt;What is REST - REST API Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/en/topics/api/what-is-a-rest-api"&gt;What is a REST API?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.csdn.net/qq_41378597/article/details/85248848?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165769454716782246414888%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=165769454716782246414888&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-85248848-null-null.142^v32^new_blog_pos_by_title,185^v2^control&amp;amp;utm_term=restful%20api&amp;amp;spm=1018.2226.3001.4187"&gt;什么是RESTful API?_Evan Wang的博客-CSDN博客_api restful&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;REST&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它是一套架构约束&lt;/li&gt;
&lt;li&gt;不是协议或标准&lt;/li&gt;
&lt;li&gt;采用 http 协议&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;约束：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;前后端分离&lt;/p&gt;</description></item><item><title>GraphQL ---- better than REST for complicated API</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/graphql/</link><pubDate>Tue, 12 Jul 2022 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/graphql/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
参考
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://segmentfault.com/a/1190000005766732"&gt;GraphQL初探:从REST到GraphQL，更完善的数据查询定义 - SegmentFault 思否&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;python 的 GraphQL 实现框架&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://graphql.org/code/#python"&gt;GraphQL Code Libraries, Tools and Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;straberry 支持 typing&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/strawberry-graphql/strawberry"&gt;GitHub - strawberry-graphql/strawberry: A GraphQL library for Python that lev…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
功能特点
&lt;/h2&gt;
&lt;/div&gt;</description></item><item><title>Starlette</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/starlette/</link><pubDate>Mon, 11 Jul 2022 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/starlette/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
参考
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;相关项目&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;python-multipart&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;form parsing 用于表单解析&lt;/li&gt;
&lt;li&gt;&lt;a href="https://andrew-d.github.io/python-multipart/"&gt;Python-Multipart — python-multipart 0.0.1 documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>TLS/SSL ---- https, secure socket layer</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/linux/ssl/</link><pubDate>Mon, 07 Mar 2022 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/linux/ssl/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
acme.sh
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
在 nginx 上设置 acme.sh
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;教程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 ubuntu 上使用： &lt;a href="https://www.cyberciti.biz/faq/how-to-configure-nginx-with-free-lets-encrypt-ssl-certificate-on-debian-or-ubuntu-linux/"&gt;how to config on ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;启用配置：&lt;/p&gt;
&lt;div class="src src-conf"&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # listen 80 default_server;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # listen [::]:80 default_server;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # SSL configuration
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # 启用 ssl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; listen 443 ssl default_server;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # ssl_certificate /home/sawyer/.acme.sh/docker.zhenglei.site/docker.zhenglei.site.cer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ssl_certificate /home/sawyer/.acme.sh/docker.zhenglei.site/fullchain.cer;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ssl_certificate_key /home/sawyer/.acme.sh/docker.zhenglei.site/docker.zhenglei.site.key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;为什没要用 fullchain.cer&lt;/p&gt;</description></item><item><title>DDNS</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/linux/ddns/</link><pubDate>Thu, 10 Feb 2022 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/linux/ddns/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
工具
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
ddns
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;个人域名实现 ddns&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/NewFuture/DDNS"&gt;GitHub - NewFuture/DDNS: 自动更新域名解析到本机IP(支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM…)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
ddns 内网
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;对于内网主机，要把连接的网络设为公用网络&lt;/li&gt;
&lt;li&gt;切记，设为专用网络会连不上&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-2"&gt;
&lt;h2 id="headline-4"&gt;
ddns config
&lt;/h2&gt;
&lt;div id="outline-text-headline-4" class="outline-text-2"&gt;
&lt;p&gt;newfuture/ddns 软件配置&lt;/p&gt;</description></item><item><title>Python Game Frameworks</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/game/</link><pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/game/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
框架
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;Panda3D&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;专业级工具&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;推荐入门框架工具：&lt;a href="https://www.alice.org/get-alice/alice-3/"&gt;Alice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pyglet&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;参考&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pyglet.readthedocs.io/en/latest/index.html"&gt;pyglet Documentation — pyglet v1.5.21&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Nginx Notes</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/linux/nginx/</link><pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/linux/nginx/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
概述
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
正则语法
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;使用 perl 正则语法&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
Nginx 三种代理模式
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;参考：&lt;a href="https://www.cnblogs.com/gbq-dog/p/10653054.html"&gt;Nginx代理的几种模式 - 柴犬砍柴 - 博客园&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;官方高级教程： &lt;a href="https://docs.nginx.com/nginx/admin-guide/web-server/web-server/"&gt;Configuring NGINX and NGINX Plus as a Web Server | NGINX Plus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-2"&gt;
&lt;h2 id="headline-4"&gt;
反向代理
&lt;/h2&gt;
&lt;div id="outline-text-headline-4" class="outline-text-2"&gt;
&lt;p&gt;参考： &lt;a href="https://www.cnblogs.com/ysocean/p/9392908.html"&gt;Nginx（三）——nginx 反向代理 - YSOcean - 博客园&lt;/a&gt;&lt;/p&gt;</description></item><item><title>tornado ---- a python web app framework</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/tornado/</link><pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/tornado/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
处理异常
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nanvel.name/2014/12/handle-errors-in-tornado-application"&gt;参考&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
步骤
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;ol&gt;
&lt;li&gt;自定义异常类，继承 tornado 异常类 &lt;code&gt;tornado.web.HTTPError&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;修改 http header, 重载 &lt;code&gt;tornado.web.RequestHandler::write_error&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在自己的 handler 中抛出自定义异常类&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Curl</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/linux/curl/</link><pubDate>Thu, 25 Feb 2021 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/linux/curl/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
教程
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;curl 发送 POST 请求&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://linuxize.com/post/curl-post-request/"&gt;https://linuxize.com/post/curl-post-request/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
POST 请求
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;参考&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://linuxize.com/post/curl-post-request/"&gt;https://linuxize.com/post/curl-post-request/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;参数&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;-X, –request&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可选值： POST, GET, …&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;-F, –form&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;背后机制：设置 Content-Type:multipart/format&lt;/li&gt;
&lt;li&gt;格式： -F &amp;#39;key=value&amp;#39;&lt;/li&gt;
&lt;li&gt;用途： 发送请求字段&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;-d, –data&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;背后机制：设置 Content-Type=application/x-www-form-urlencoded&lt;/li&gt;
&lt;li&gt;格式：&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;-d &amp;#39;key=value&amp;#39; -d &amp;#39;key01=value01&amp;#39; –&amp;gt; 一次制定一个字段&lt;/li&gt;
&lt;li&gt;-d &amp;#39;key01=value01&amp;amp;key02=value02&amp;#39; –&amp;gt; 多个字段&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;-H, –header&lt;/p&gt;</description></item><item><title>sgml notes</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/sgml/</link><pubDate>Wed, 30 Dec 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/sgml/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Sgml entity list
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://xmlink.kr/src/sgml-entity-list.html"&gt;PubMed Data Provider Documentation: SGML Entity List&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>flask</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/flask/</link><pubDate>Fri, 07 Aug 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/flask/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
教程
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;快速入门&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flask.palletsprojects.com/en/1.1.x/quickstart/#a-minimal-application"&gt;Quickstart — Flask Documentation (1.1.x)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tedboy.github.io/flask/index.html"&gt;Flask, WerkzeugAPI — Flask API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cnblogs.com/xingxingnbsp/p/12397155.html"&gt;Flask入门教程 - 菜鸟程序员_python - 博客园&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;高级教程&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/realpython/discover-flask"&gt;GitHub - realpython/discover-flask: Full Stack Web Development with Flask.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;样版代码 boilerplate&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/realpython/flask-boilerplate"&gt;GitHub - realpython/flask-boilerplate: Boilerplate template for a Python Flas…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
实战项目教程
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mjhea0/flaskr-tdd"&gt;GitHub - mjhea0/flaskr-tdd: Flaskr: Intro to Flask, Test-Driven Development (…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
工具 list
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
工具列表
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;awesome-flask&lt;/p&gt;</description></item><item><title>Css</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/css/</link><pubDate>Mon, 27 Jul 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/css/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
CSS 样式继承
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.runoob.com/css/css-howto.html"&gt;CSS 创建 | 菜鸟教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.runoob.com/w3cnote/css-style-priority.html"&gt;CSS 样式优先级 | 菜鸟教程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有具体指出的属性，使用具体指出的&lt;/li&gt;
&lt;li&gt;其它使用优先级，推导给定的&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
总结
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;越近的优先级越高&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
优先级
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;内联 &amp;gt; 内部 &amp;gt; 外部 &amp;gt; 浏览器默认值&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
破除继承和优先级关系
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;使用“!important”&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-2"&gt;
&lt;h2 id="headline-5"&gt;
背景 Background
&lt;/h2&gt;
&lt;div id="outline-text-headline-5" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-6" class="outline-3"&gt;
&lt;h3 id="headline-6"&gt;
background-color
&lt;/h3&gt;
&lt;div id="outline-text-headline-6" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;颜色&lt;/p&gt;</description></item><item><title>svg 图片</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/svg/</link><pubDate>Tue, 21 Jul 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/svg/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Tutorial
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;svg, js and html&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.petercollingridge.co.uk/tutorials/svg/interactive/javascript/#:~:text=To"&gt;http://www.petercollingridge.co.uk/tutorials/svg/interactive/javascript/#:~:text=To&lt;/a&gt;%20create%20elements%2C%20you%20need,methods%20of%20an%20SVG%20element.&lt;/li&gt;
&lt;li&gt;示例代码：&lt;a href="https://github.com/petercollingridge/code-for-blog/tree/master/svg-interaction/svg-and-js"&gt;code-for-blog/svg-interaction/svg-and-js at master · petercollingridge/code-f…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nhooo.com/svg/svg-tutorial.html"&gt;SVG 教程 - 基础教程在线&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
在网页中使用 svg
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
插入方式
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;inline&lt;/li&gt;
&lt;li&gt;external&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
SVG + JS
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;div id="outline-container-headline-5" class="outline-4"&gt;
&lt;h4 id="headline-5"&gt;
inline SVG
&lt;/h4&gt;
&lt;div id="outline-text-headline-5" class="outline-text-4"&gt;
&lt;p&gt;SVG 直接写在 html 中&lt;/p&gt;</description></item><item><title>Vue</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/vue/</link><pubDate>Thu, 16 Jul 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/vue/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Purpose
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;Notes for Vue&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
教程
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vuetifyjs.com/zh-Hans/components/alerts/"&gt;https://vuetifyjs.com/zh-Hans/components/alerts/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuetifyjs.com/en/components/alerts/"&gt;https://vuetifyjs.com/en/components/alerts/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
分割线
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
v-divider
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;p&gt;水平分割线，上下分割&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-3"&gt;
&lt;h3 id="headline-5"&gt;
v-seperator
&lt;/h3&gt;
&lt;div id="outline-text-headline-5" class="outline-text-3"&gt;
&lt;p&gt;竖直分割线，左右分割&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-6" class="outline-2"&gt;
&lt;h2 id="headline-6"&gt;
v-if
&lt;/h2&gt;
&lt;div id="outline-text-headline-6" class="outline-text-2"&gt;
&lt;p&gt;参考： &lt;a href="https://www.runoob.com/vue2/vue-if.html"&gt;https://www.runoob.com/vue2/vue-if.html&lt;/a&gt;
作用： 控制可见性，是否插入对应的标签&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;相关指令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;v-else&lt;/li&gt;
&lt;li&gt;v-else-if&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;相似指令&lt;/p&gt;</description></item><item><title>Javascript</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/js/</link><pubDate>Mon, 13 Jul 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/js/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
教程
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/js/default.asp"&gt;https://www.w3schools.com/js/default.asp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide"&gt;JavaScript 指南 - JavaScript | MDN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
变量作用域
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
作用域类型
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;全局 Global Scopes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;let 不属于 window&lt;/li&gt;
&lt;li&gt;undefined 属于 window&lt;/li&gt;
&lt;li&gt;var 声明 属于 window&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;局部 Local Scopes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;函数 Function Scopes&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;块 Block Scopes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 let 或者 const&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;let 声明普通变量&lt;/li&gt;
&lt;li&gt;const 声明“引用”不便类型&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-2"&gt;
&lt;h2 id="headline-4"&gt;
特殊变量
&lt;/h2&gt;
&lt;div id="outline-text-headline-4" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-5" class="outline-3"&gt;
&lt;h3 id="headline-5"&gt;
null VS. undefined
&lt;/h3&gt;
&lt;div id="outline-text-headline-5" class="outline-text-3"&gt;
&lt;p&gt;参考：&lt;a href="https://codeburst.io/javascript-whats-the-difference-between-null-undefined-37793b5bfce6"&gt;JavaScript — What’s the difference between Null &amp;amp; Undefined? | by Brandon Mor…&lt;/a&gt;&lt;/p&gt;</description></item><item><title>yarn</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/yarn/</link><pubDate>Fri, 10 Jul 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/yarn/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
安装 sqlite3 失败
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;yarn config set registry &lt;a href="https://registry.npm.taobao.org/"&gt;https://registry.npm.taobao.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
 npm install -g node-pre-gyp
 npm install -g node-gyp
 来源：&lt;a href="https://stackoverflow.com/a/58073812"&gt;https://stackoverflow.com/a/58073812&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
 下面的没试过
 npm config set user 0
 npm config set unsafe-perm true
 &lt;a href="https://github.com/jansmolders86/mediacenterjs/issues/191#issuecomment-317437604"&gt;https://github.com/jansmolders86/mediacenterjs/issues/191#issuecomment-317437604&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>aiohttp ---- Async IO Web Framework</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/aiohttp/</link><pubDate>Mon, 01 Jun 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/aiohttp/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Client
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
ClientSession
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;div id="outline-container-headline-3" class="outline-4"&gt;
&lt;h4 id="headline-3"&gt;
response
&lt;/h4&gt;
&lt;div id="outline-text-headline-3" class="outline-text-4"&gt;
&lt;ul&gt;
&lt;li&gt;resp.status&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-4" class="outline-5"&gt;
&lt;h5 id="headline-4"&gt;
一次性读取内容
&lt;/h5&gt;
&lt;div id="outline-text-headline-4" class="outline-text-5"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;resp.text()&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文本 str 类型&lt;/li&gt;
&lt;li&gt;resp.text(encoding=&amp;#39;gbk&amp;#39;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;resp.read()&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bytes 类型&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;resp.json()&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提取 json&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-5"&gt;
&lt;h5 id="headline-5"&gt;
流模式读取 Streaming Response Content
&lt;/h5&gt;
&lt;div id="outline-text-headline-5" class="outline-text-5"&gt;
&lt;ul&gt;
&lt;li&gt;resp.content.read(10)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-6" class="outline-4"&gt;
&lt;h4 id="headline-6"&gt;
request
&lt;/h4&gt;
&lt;div id="outline-text-headline-6" class="outline-text-4"&gt;
&lt;ul&gt;
&lt;li&gt;session.get&lt;/li&gt;
&lt;li&gt;session.put&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-7" class="outline-5"&gt;
&lt;h5 id="headline-7"&gt;
关键字参数 arguments
&lt;/h5&gt;
&lt;div id="outline-text-headline-7" class="outline-text-5"&gt;
&lt;div id="outline-container-headline-8" class="outline-6"&gt;
&lt;h6 id="headline-8"&gt;
params
&lt;/h6&gt;
&lt;div id="outline-text-headline-8" class="outline-text-6"&gt;
&lt;ul&gt;
&lt;li&gt;格式：&lt;a href="http://hello.com?key=value&amp;amp;key1=vale1"&gt;http://hello.com?key=value&amp;amp;key1=vale1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;session.get(&lt;a href="http://hello.com,"&gt;http://hello.com,&lt;/a&gt; params=params)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-9" class="outline-6"&gt;
&lt;h6 id="headline-9"&gt;
json
&lt;/h6&gt;
&lt;div id="outline-text-headline-9" class="outline-text-6"&gt;
&lt;ul&gt;
&lt;li&gt;session.post(url, json={&amp;#39;test&amp;#39;: &amp;#39;value&amp;#39;})&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-10" class="outline-4"&gt;
&lt;h4 id="headline-10"&gt;
Post 请求
&lt;/h4&gt;
&lt;div id="outline-text-headline-10" class="outline-text-4"&gt;
&lt;p&gt;sesson.post
&lt;a href="https://docs.aiohttp.org/en/stable/client_quickstart.html#more-complicated-post-requests"&gt;https://docs.aiohttp.org/en/stable/client_quickstart.html#more-complicated-post-requests&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Network ---- 计算机网络基础知识</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/network/summary/</link><pubDate>Tue, 26 May 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/network/summary/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
名词辨析
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
localhost 与 127.0.0.1
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/a/7382629"&gt;https://stackoverflow.com/a/7382629&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;localhost 是域名，类似 baidu.com&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 localhost, 程序会再查询 localhost 对应的 ip&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有可能，用户自定义了配置，导致 localhost 对应到别的 ip&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;127.0.0.1 直接都应 ip，不需要查询&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
网络模型
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;p&gt;&lt;a href="https://blog.csdn.net/lianghe_work/article/details/45169815"&gt;https://blog.csdn.net/lianghe_work/article/details/45169815&lt;/a&gt;&lt;/p&gt;</description></item><item><title>http 协议</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/network/http/</link><pubDate>Sun, 24 May 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/network/http/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Tutorials
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.runoob.com/http/http-intro.html"&gt;https://www.runoob.com/http/http-intro.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
工作原理
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
本质
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;p&gt;一个基于 TCP/IP 通信协议传递数据（图片，文本，等等）的协议&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
特点
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;无连接&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完成，单次请求和响应就会断开-&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;媒体独立&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只约定文件的打开类型 MIME-type, 对方怎么处理不管&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无状态&lt;/p&gt;</description></item><item><title>urllib ---- python url library</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/urllib/</link><pubDate>Mon, 04 May 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/urllib/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Tutorials
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;&lt;a href="https://python3-cookbook.readthedocs.io/zh_CN/latest/c11/p01_interact_with_http_services_as_client.html"&gt;https://python3-cookbook.readthedocs.io/zh_CN/latest/c11/p01_interact_with_http_services_as_client.html&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
url 构成
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;ol&gt;
&lt;li&gt;地址&lt;/li&gt;
&lt;li&gt;查询参数&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
urllib
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
基本概念
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;请求 Request&lt;/li&gt;
&lt;li&gt;响应 Response&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-3"&gt;
&lt;h3 id="headline-5"&gt;
请求
&lt;/h3&gt;
&lt;div id="outline-text-headline-5" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;原料&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>xml</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/xml/</link><pubDate>Wed, 19 Jun 2019 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/xml/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
语言特性
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;&lt;a href="https://www.runoob.com/xml/xml-intro.html"&gt;https://www.runoob.com/xml/xml-intro.html&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;目的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;传输数据，不是显示数据&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XML 被设计用来结构化、存储以及传输信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标签没有预定义，需要自定义&lt;/li&gt;
&lt;li&gt;Extensible markup language 可扩展标记语言&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
table
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
&amp;lt;tgroup&amp;gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://eadiva.com/tgroup/"&gt;http://eadiva.com/tgroup/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-2"&gt;
&lt;h2 id="headline-4"&gt;
xml 编辑
&lt;/h2&gt;
&lt;div id="outline-text-headline-4" class="outline-text-2"&gt;
&lt;p&gt;python3&lt;/p&gt;</description></item><item><title>Apache Web Server</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/apache/</link><pubDate>Thu, 30 May 2019 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/apache/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
配置 cgi-bin
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;&lt;a href="https://blog.csdn.net/typ2004/article/details/59174162"&gt;https://blog.csdn.net/typ2004/article/details/59174162&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
 一个比较全面的教程&lt;/p&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
注意
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;div id="outline-container-headline-3" class="outline-4"&gt;
&lt;h4 id="headline-3"&gt;
配置 cgi-bin 目录权限
&lt;/h4&gt;
&lt;div id="outline-text-headline-3" class="outline-text-4"&gt;
&lt;div class="src src-sh"&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ScriptAlias /cgi-bin/ /home/sawyer/web/cgi-bin/ &lt;span class="c1"&gt;# 注意： 这里不可以忽略最后的“/”&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Directory &lt;span class="s2"&gt;&amp;#34;/home/sawyer/web/cgi-bin/&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; AllowOverride None
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Require all granted
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; allow from all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-4"&gt;
&lt;h4 id="headline-4"&gt;
启用 cgi 模块
&lt;/h4&gt;
&lt;div id="outline-text-headline-4" class="outline-text-4"&gt;
&lt;p&gt;&lt;a href="https://blog.csdn.net/a623891391/article/details/47170355"&gt;https://blog.csdn.net/a623891391/article/details/47170355&lt;/a&gt;&lt;/p&gt;</description></item><item><title>html</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/web/html/</link><pubDate>Wed, 20 Mar 2019 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/web/html/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
尺寸单位
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;html 中只有一种单位： px&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;px 是一个相对单位， 原因：相同屏幕，dpi 不同 px 代表的实际长度不同&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
Table 表格
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
&amp;lt;table&amp;gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;border=&amp;#34;2&amp;#34; attribute 边界&lt;/li&gt;
&lt;li&gt;cellpadding=&amp;#34;10&amp;#34; attribute 单元格内边距，单元格框线与内容间距&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cellspacing=&amp;#34;10&amp;#34; attribute 单元格外边距，单元格框线与框线间距&lt;/p&gt;</description></item></channel></rss>