标题 CodeSky 代码之空
域名 www.codesky.me   
分类 PHP HTML CSS
源码下载 暂无下载 选择定制
更新时间 2019-09-14
简介 随手记录自己的学习过程
详情
  • 图片预览
  • 源码预览
  • 文章评论
  • 使用说明
                                     <!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>CodeSky 代码之空</title>
<link rel="stylesheet" href="//cdn.staticfile.org/normalize/2.1.3/normalize.min.css">
<link rel="stylesheet" href="https://www.codesky.me/usr/themes/default2/grid.css">
<link rel="stylesheet" href="https://www.codesky.me/usr/themes/default2/style.css">
<!--[if lt IE 9]>
    
    


    <![endif]-->

<meta name="description" content="随手记录自己的学习过程" />
<meta name="keywords" content="PHP,HTML,CSS,Linux, C,Javascript,SQL" />
<meta name="generator" content="Typecho 1.2/18.1.29" />
<meta name="template" content="default2" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.codesky.me/action/xmlrpc?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://www.codesky.me/action/xmlrpc?wlw" />
<link rel="alternate" type="application/rss+xml" title="CodeSky 代码之空 &raquo; RSS 2.0" href="https://www.codesky.me/feed/" />
<link rel="alternate" type="application/rdf+xml" title="CodeSky 代码之空 &raquo; RSS 1.0" href="https://www.codesky.me/feed/rss/" />
<link rel="alternate" type="application/atom+xml" title="CodeSky 代码之空 &raquo; ATOM 1.0" href="https://www.codesky.me/feed/atom/" />
<link rel="stylesheet" type="text/css" href="https://www.codesky.me/usr/plugins/GoogleCodePrettify/src/github.css" /></head>
<body>
<!--[if lt IE 8]>
    <div class="browsehappy" role="dialog">当前网页 <strong>不支持</strong> 你正在使用的浏览器. 为了正常的访问, 请 <a href="http://browsehappy.com/">升级你的浏览器</a>.</div>
<![endif]-->
<header id="header" class="clearfix">
<div class="container">
<div class="row">
<div class="site-name col-mb-12 col-9">
<a id="logo" href="https://www.codesky.me/">
CodeSky 代码之空 </a>
<p class="description">随手记录自己的学习过程</p>
</div>
<div class="site-search col-3 kit-hidden-tb">
<form id="search" method="post" action="./" role="search">
<label for="s" class="sr-only">搜索关键字</label>
<input type="text" name="s" class="text" placeholder="输入关键字搜索" />
<button type="submit" class="submit">搜索</button>
</form>
</div>
<div class="col-mb-12">
<nav id="nav-menu" class="clearfix" role="navigation">
<a class="current" href="https://www.codesky.me/">首页</a>
<a href="https://www.codesky.me/resume.wind" title="简历">简历</a>
<a href="https://www.codesky.me/donate.wind" title="赞助">赞助</a>
<a href="https://www.codesky.me/code-editor.wind" title="软件">软件</a>
<a href="https://www.codesky.me/about.wind" title="关于">关于</a>
</nav>
</div>
</div>
</div>
</header>
<div id="body">
<div class="container">
<div class="row">
<div class="col-mb-12 col-8" id="main" role="main">
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/config-drive-dev.wind">使用配置进行你的开发</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2020-03-07T20:30:00+08:00" itemprop="datePublished">March 7, 2020</time></li>
<li>分类: <a href="https://www.codesky.me/category/other/">Other</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/config-drive-dev.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>在开发中,我很经常的将很多功能设置成可配置的,这里不仅仅说的是应急的开关,而是包括了一些文本在内的信息。这篇文章也就是说说为什么我要这么做,以及这么做到底有什么好处。</p><h3>从最简单的说起:配置开关</h3><p>最简单,大家也最常用的是在后台配置一些开关,这些开关不用发布,只需要轻轻一点就能切换某些功能的状态,这也是大家通常会做的「基于配置」的开发的处理,毕竟发版的时间实在太漫长了,因此大部分后端都有有意识的将一些开关放在后台而不是开发写的配置文件中。</p><p class="more"><a href="https://www.codesky.me/archives/config-drive-dev.wind" title="使用配置进行你的开发">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/graphql-intro.wind">GraphQL 从入门到入土</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2020-01-24T21:10:41+08:00" itemprop="datePublished">January 24, 2020</time></li>
<li>分类: <a href="https://www.codesky.me/category/other/">Other</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/graphql-intro.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>在入职之后用了很久的 GraphQL,之前总是得其形而不得其神,在这次 API 设计失误之后,我总算领悟到了一点 GraphQL 的设计思想,所以来随便的总结一下。</p><h3>GraphQL 到底是什么</h3><blockquote>GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。<br>——官方说明</blockquote><p class="more"><a href="https://www.codesky.me/archives/graphql-intro.wind" title="GraphQL 从入门到入土">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/dark-mode-dev-and-debug.wind">Dark Mode 开发与 Debug 指南</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-12-23T23:25:39+08:00" itemprop="datePublished">December 23, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/css/">CSS</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/dark-mode-dev-and-debug.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<h2>Dark Mode 的判断</h2><p>media 中有一个属性 <code>prefers-color-scheme</code> ,用 <code>matchMedia()</code> 来检测 <code>(prefers-color-scheme: dark)</code> 是否存在就可以了。</p><h2>Dark Mode Debug</h2><p>截止2019年11月15日,目前经过测试可以直接 Debug DarkMode 的浏览器(以最新版为准):</p><ul><li>Safari</li><li>Chrome 金丝雀版</li></ul><p>其中 Firefox 可以通过安装插件实现 Dark Mode Debug(兼容性不是很好)。</p><p class="more"><a href="https://www.codesky.me/archives/dark-mode-dev-and-debug.wind" title="Dark Mode 开发与 Debug 指南">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/django-allauth-summary.wind">从 Django Allauth 中进行登录改造小结</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-12-17T22:51:47+08:00" itemprop="datePublished">December 17, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/python/">Python</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/django-allauth-summary.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>大概来介绍一下 Django Allauth 改造的期间遇到的一些问题和改造方法,在此之前我只想说——Django Allauth 是屑。</p><h3>为什么我说 Django Allauth 是屑</h3><p>入职之初我就接到了一些第三方登录的任务,然而 Django Allauth 将内部封装的太好,暴露的 API 不足,更新又慢,issue 和 PR 很少有人处理,当你需要扩展时,很多情况下你只能用一些 hack 的手段去解决问题,非常蛋疼,所以当时就决定慢慢的切到自己的一套 Auth 体系中。</p><p class="more"><a href="https://www.codesky.me/archives/django-allauth-summary.wind" title="从 Django Allauth 中进行登录改造小结">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/knowledge-exchange.wind">知识迁移——工程师多向发展的优势</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-12-16T21:23:00+08:00" itemprop="datePublished">December 16, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/other/">Other</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/knowledge-exchange.wind#comments">1 条评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<blockquote>From:「GDG DevFest 2019」<br>这是由演讲 PPT 汇集而成的内容,可能与演讲内容有所差异,并非演讲稿,望悉知。</blockquote><h3>知识迁移?</h3><p>首先得提出一个问题,到底什么是知识迁移,在 <a href="https://zh.wikipedia.org/wiki/%E5%AD%A6%E4%B9%A0%E8%BF%81%E7%A7%BB">wiki</a> 上有这样一段解释。</p><blockquote>在一个地方所学的技能、知识与态度对另一个学习的影响,它可以加快学习的速度。<br>——艾尔德</blockquote><p class="more"><a href="https://www.codesky.me/archives/knowledge-exchange.wind" title="知识迁移——工程师多向发展的优势">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/z-index-render-rules.wind">z-index 层叠上下文的渲染规则</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-12-06T18:26:44+08:00" itemprop="datePublished">December 6, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/css/">CSS</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/z-index-render-rules.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>最近我在 Element 里看到了一个 issue:<a href="https://github.com/ElemeFE/element/issues/17962">el-image preview bug</a>。之所以导致了这个 Bug,我觉得某种意义上来说就是因为 image 组件的 <code>viewer</code>(蒙版)模块开发时,没有充分理解 <code>z-index</code> 到底是怎么起作用的。</p><p>在此之前,我们先来看一下下面这个例子:</p><p class="more"><a href="https://www.codesky.me/archives/z-index-render-rules.wind" title="z-index 层叠上下文的渲染规则">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/how-to-write-a-certbot-plugin.wind">如何写一个 certbot 的插件</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-10-29T22:11:00+08:00" itemprop="datePublished">October 29, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/python/">Python</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/how-to-write-a-certbot-plugin.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>目前白嫖 HTTPS 的主流途径依旧是 LetsEncrpyt,certbot 似乎是官方主要推荐的一个申请方式,关于用途和用法,这里不多介绍,总之,是一个品种齐全,种类多样的 cli 工具:<a href="https://certbot.eff.org/">https://certbot.eff.org/</a></p><p>这里由于我的 NAS 希望签 HTTPS,但是电信开外网是不允许开 80 和 443 端口的,所以无法用 HTTP 协议去校验,只能选择 DNS,如果没有 DNS 插件,那么只能用 Manual 的方式,非常麻烦。</p><p>于是,我开始了面向源代码编程——</p><p class="more"><a href="https://www.codesky.me/archives/how-to-write-a-certbot-plugin.wind" title="如何写一个 certbot 的插件">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/javascript-window-close.wind">还记得历史长河中的 window.close 么</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-10-02T20:08:00+08:00" itemprop="datePublished">October 2, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/javascript/">Javascript</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/javascript-window-close.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>这次有一个需要关闭页面的需求,于是自然而然想到了经久不衰的 <code>window.open</code> 兄弟款:<code>window.close</code>。在 MDN 中,对于 window.close 的描述也相当简单:<a href="https://developer.mozilla.org/zh-CN/docs/Web/API/Window/close">window.close</a></p><p>然而我们需要注意的是下面这句话:</p><blockquote>Firefox 35.0.1:脚本不能关闭不是他打开的窗口</blockquote><p class="more"><a href="https://www.codesky.me/archives/javascript-window-close.wind" title="还记得历史长河中的 window.close 么">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/nas-docker.wind"> 群晖 Docker 服务使用心得</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-10-01T20:54:07+08:00" itemprop="datePublished">October 1, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/other/">Other</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/nas-docker.wind#comments">5 条评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>这次趁着换新电脑折腾了一波,于是把 NAS 里的服务都容器化了,去掉了虚拟机,大概也就释放了 2-3G 的内存(一本满足)。</p><p>之前一直觉得群晖的 Docker 不太好用,其实目前我还是这个态度,不过总的来说……又不是不能用。</p><p>群晖 Docker 最大的缺点是:除了 Hub 安装镜像的方式,所谓的自己上传镜像到底应该上传什么,至少我 Google 了半天都没有搜到,将 Dockerfile 和 image save 之后的文件包都进行了一波上传操作,结果都是不支持的文件格式。</p><p class="more"><a href="https://www.codesky.me/archives/nas-docker.wind" title=" 群晖 Docker 服务使用心得">- 阅读剩余部分 -</a></p> </div>
</article>
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 class="post-title" itemprop="name headline"><a target="_blank" itemtype="url" href="https://www.codesky.me/archives/websocket-rate-limit.wind">WebSocket 限流的研究</a></h2>
<ul class="post-meta">
<li itemprop="author" target="_blank" itemscope itemtype="http://schema.org/Person">作者: <a itemprop="name" target="_blank" href="https://www.codesky.me/author/1/" rel="author">敖天羽</a></li>
<li>时间: <time datetime="2019-09-27T13:33:00+08:00" itemprop="datePublished">September 27, 2019</time></li>
<li>分类: <a href="https://www.codesky.me/category/javascript/">Javascript</a></li>
<li itemprop="interactionCount"><a target="_blank" itemprop="discussionUrl" href="https://www.codesky.me/archives/websocket-rate-limit.wind#comments">评论</a></li>
</ul>
<div class="post-content" itemprop="articleBody">
<p>关于 WebSocket,在四年前做实验室习题时第一次接触,当时基本上没怎么介绍 WebSocket,只贴了一份链接,而恰巧这次做了一些 WebSocket 上的工作,所以会从头开始介绍一下 WebSocket。</p><h3>WebSocket 的原理</h3><p>在 WebSocket 以前,Web 工作人员已经探索过好多种方法了,由于我没有生在那个时代,所以除了 ajax 轮询之外的方法,我完全都没有记住,不过 WebSocket 确实是站在了巨人的肩膀上,终于成为了一套事实方案,而其维护成本和原理也比 TCP 的 socket 链接要简单不少。</p><p class="more"><a href="https://www.codesky.me/archives/websocket-rate-limit.wind" title="WebSocket 限流的研究">- 阅读剩余部分 -</a></p> </div>
</article>
<ol class="page-navigator"><li class="current"><a href="https://www.codesky.me/page/1/">1</a></li><li><a href="https://www.codesky.me/page/2/">2</a></li><li><a href="https://www.codesky.me/page/3/">3</a></li><li><a href="https://www.codesky.me/page/4/">4</a></li><li><span>...</span></li><li><a href="https://www.codesky.me/page/48/">48</a></li><li class="next"><a href="https://www.codesky.me/page/2/">后一页 &raquo;</a></li></ol></div>
<div class="col-mb-12 col-offset-1 col-3 kit-hidden-tb" id="secondary" role="complementary">
<section class="widget">
<h3 class="widget-title">分类</h3>
<ul class="widget-list">
<li><a href="https://www.codesky.me/category/html/">HTML</a> (29)</li><li><a href="https://www.codesky.me/category/css/">CSS</a> (65)</li><li><a href="https://www.codesky.me/category/javascript/">Javascript</a> (129)</li><li><a href="https://www.codesky.me/category/php/">PHP</a> (76)</li><li><a href="https://www.codesky.me/category/linux/">Linux/OS X</a> (60)</li><li><a href="https://www.codesky.me/category/c/">C</a> (71)</li><li><a href="https://www.codesky.me/category/sql/">SQL</a> (18)</li><li><a href="https://www.codesky.me/category/python/">Python</a> (13)</li><li><a href="https://www.codesky.me/category/Java/">Java</a> (15)</li><li><a href="https://www.codesky.me/category/ruby/">Ruby</a> (9)</li><li><a href="https://www.codesky.me/category/other/">Other</a> (50)</li> </ul>
</section>
<section class="widget">
<h3 class="widget-title">标签列表</h3>
<ul class="widget-list">
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E7%9F%A5%E8%AF%86/">知识</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E8%AF%AD%E6%B3%95/">语法</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E4%BB%A3%E7%A0%81%E6%AE%B5/">代码段</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%BA%90%E7%A0%81/">源码</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E9%A2%98%E7%9B%AE/">题目</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%88%90%E5%93%81/">成品</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E4%BD%BF%E7%94%A8/">使用</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E5%91%BD%E4%BB%A4/">命令</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/centos/">centos</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E5%AE%89%E8%A3%85/">安装</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/jQuery/">jQuery</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/node-js/">node.js</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/OS-X/">OS X</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E7%AE%97%E6%B3%95/">算法</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Vue/">Vue</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E5%AD%98%E7%96%91/">存疑</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Rails/">Rails</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/html5/">html5</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/AngularJS/">AngularJS</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/git/">git</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/ubuntu/">ubuntu</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/CodeIgniter/">CodeIgniter</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/mongodb/">mongodb</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/canvas/">canvas</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E5%86%99%E4%BD%9C/">写作</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/http/">http</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/bootstrap/">bootstrap</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/markdown/">markdown</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/jade/">jade</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/WebSocket/">WebSocket</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Vagrant/">Vagrant</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/mysql/">mysql</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E8%AE%BE%E8%AE%A1/">设计</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Chrome%E6%8F%92%E4%BB%B6/">Chrome插件</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/nginx/">nginx</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/docker/">docker</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/NAS/">NAS</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E7%A4%BE%E5%9B%A2/">社团</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/htaccess/">.htaccess</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E4%BB%A3%E7%A0%81%E7%BC%96%E8%BE%91%E5%99%A8/">代码编辑器</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%BA%90%E4%BB%A3%E7%A0%81/">源代码</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/sublime-text/">sublime text</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E5%BF%AB%E6%8D%B7%E9%94%AE/">快捷键</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/coffeescript/">coffeescript</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/stylus/">stylus</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/selenium/">selenium</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Xcode/">Xcode</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E5%8E%9F%E7%90%86/">原理</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%A0%87%E5%87%86/">标准</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Chrome/">Chrome</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/typescript/">typescript</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/koa/">koa</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/react/">react</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/CDN/">CDN</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Grafana/">Grafana</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%8F%92%E4%BB%B6/">插件</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/https/">https</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E7%BF%BB%E8%AF%91/">翻译</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/OSS/">OSS</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%BC%94%E8%AE%B2/">演讲</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E7%BB%8F%E9%AA%8C/">经验</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/Devops/">Devops</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E8%BF%90%E7%BB%B4/">运维</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E9%85%8D%E7%BD%AE/">配置</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/MQ/">MQ</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%95%B0%E5%AD%A6/">数学</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/JavaScript/">JavaScript</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E5%89%8D%E7%AB%AF/">前端</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/%E6%B5%8B%E8%AF%95/">测试</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/certbot/">certbot</a>
</li>
<li class="tags">
<a rel="tag" href="https://www.codesky.me/tag/GraphQL/">GraphQL</a>
</li>
</ul>
</section>
<section class="widget">
<h3 class="widget-title">归档</h3>
<ul class="widget-list">
<li><a href="https://www.codesky.me/2020/03/">March 2020</a></li><li><a href="https://www.codesky.me/2020/01/">January 2020</a></li><li><a href="https://www.codesky.me/2019/12/">December 2019</a></li><li><a href="https://www.codesky.me/2019/10/">October 2019</a></li><li><a href="https://www.codesky.me/2019/09/">September 2019</a></li><li><a href="https://www.codesky.me/2019/08/">August 2019</a></li><li><a href="https://www.codesky.me/2019/04/">April 2019</a></li><li><a href="https://www.codesky.me/2019/03/">March 2019</a></li><li><a href="https://www.codesky.me/2019/02/">February 2019</a></li><li><a href="https://www.codesky.me/2019/01/">January 2019</a></li><li><a href="https://www.codesky.me/2018/11/">November 2018</a></li><li><a href="https://www.codesky.me/2018/10/">October 2018</a></li><li><a href="https://www.codesky.me/2018/09/">September 2018</a></li><li><a href="https://www.codesky.me/2018/08/">August 2018</a></li><li><a href="https://www.codesky.me/2018/07/">July 2018</a></li><li><a href="https://www.codesky.me/2018/05/">May 2018</a></li><li><a href="https://www.codesky.me/2018/04/">April 2018</a></li><li><a href="https://www.codesky.me/2018/03/">March 2018</a></li><li><a href="https://www.codesky.me/2018/02/">February 2018</a></li><li><a href="https://www.codesky.me/2018/01/">January 2018</a></li><li><a href="https://www.codesky.me/2017/12/">December 2017</a></li><li><a href="https://www.codesky.me/2017/11/">November 2017</a></li><li><a href="https://www.codesky.me/2017/10/">October 2017</a></li><li><a href="https://www.codesky.me/2017/07/">July 2017</a></li><li><a href="https://www.codesky.me/2017/06/">June 2017</a></li><li><a href="https://www.codesky.me/2017/05/">May 2017</a></li><li><a href="https://www.codesky.me/2017/04/">April 2017</a></li><li><a href="https://www.codesky.me/2017/03/">March 2017</a></li><li><a href="https://www.codesky.me/2017/02/">February 2017</a></li><li><a href="https://www.codesky.me/2017/01/">January 2017</a></li><li><a href="https://www.codesky.me/2016/12/">December 2016</a></li><li><a href="https://www.codesky.me/2016/11/">November 2016</a></li><li><a href="https://www.codesky.me/2016/10/">October 2016</a></li><li><a href="https://www.codesky.me/2016/09/">September 2016</a></li><li><a href="https://www.codesky.me/2016/08/">August 2016</a></li><li><a href="https://www.codesky.me/2016/07/">July 2016</a></li><li><a href="https://www.codesky.me/2016/06/">June 2016</a></li><li><a href="https://www.codesky.me/2016/05/">May 2016</a></li><li><a href="https://www.codesky.me/2016/04/">April 2016</a></li><li><a href="https://www.codesky.me/2016/03/">March 2016</a></li><li><a href="https://www.codesky.me/2016/02/">February 2016</a></li><li><a href="https://www.codesky.me/2016/01/">January 2016</a></li><li><a href="https://www.codesky.me/2015/12/">December 2015</a></li><li><a href="https://www.codesky.me/2015/11/">November 2015</a></li><li><a href="https://www.codesky.me/2015/10/">October 2015</a></li><li><a href="https://www.codesky.me/2015/09/">September 2015</a></li><li><a href="https://www.codesky.me/2015/08/">August 2015</a></li><li><a href="https://www.codesky.me/2015/06/">June 2015</a></li><li><a href="https://www.codesky.me/2015/05/">May 2015</a></li><li><a href="https://www.codesky.me/2015/04/">April 2015</a></li><li><a href="https://www.codesky.me/2015/03/">March 2015</a></li><li><a href="https://www.codesky.me/2015/02/">February 2015</a></li><li><a href="https://www.codesky.me/2015/01/">January 2015</a></li><li><a href="https://www.codesky.me/2014/12/">December 2014</a></li><li><a href="https://www.codesky.me/2014/11/">November 2014</a></li><li><a href="https://www.codesky.me/2014/10/">October 2014</a></li><li><a href="https://www.codesky.me/2014/09/">September 2014</a></li><li><a href="https://www.codesky.me/2014/08/">August 2014</a></li><li><a href="https://www.codesky.me/2014/07/">July 2014</a></li><li><a href="https://www.codesky.me/2014/06/">June 2014</a></li><li><a href="https://www.codesky.me/2014/05/">May 2014</a></li><li><a href="https://www.codesky.me/2014/04/">April 2014</a></li><li><a href="https://www.codesky.me/2014/03/">March 2014</a></li><li><a href="https://www.codesky.me/2014/02/">February 2014</a></li><li><a href="https://www.codesky.me/2014/01/">January 2014</a></li> </ul>
</section>
<section class="widget">
<h3 class="widget-title">最新文章</h3>
<ul class="widget-list">
<li><a href="https://www.codesky.me/archives/config-drive-dev.wind">使用配置进行你的开发</a></li><li><a href="https://www.codesky.me/archives/graphql-intro.wind">GraphQL 从入门到入土</a></li><li><a href="https://www.codesky.me/archives/dark-mode-dev-and-debug.wind">Dark Mode 开发与 Debug 指南</a></li><li><a href="https://www.codesky.me/archives/django-allauth-summary.wind">从 Django Allauth 中进行登录改造小结</a></li><li><a href="https://www.codesky.me/archives/knowledge-exchange.wind">知识迁移——工程师多向发展的优势</a></li><li><a href="https://www.codesky.me/archives/z-index-render-rules.wind">z-index 层叠上下文的渲染规则</a></li><li><a href="https://www.codesky.me/archives/how-to-write-a-certbot-plugin.wind">如何写一个 certbot 的插件</a></li><li><a href="https://www.codesky.me/archives/javascript-window-close.wind">还记得历史长河中的 window.close 么</a></li><li><a href="https://www.codesky.me/archives/nas-docker.wind"> 群晖 Docker 服务使用心得</a></li><li><a href="https://www.codesky.me/archives/websocket-rate-limit.wind">WebSocket 限流的研究</a></li> </ul>
</section>
<section class="widget">
<h3 class="widget-title">友情链接</h3>
<ul class="widget-list">
<li><a href="https://codehut.me" target="_blank">codehut</a></li>
<li><a href="https://codelover.link" target="_blank">codelover</a></li>
<li><a href="https://www.cmder.info" target="_blank">Cmder</a></li>
</ul>
</section>
<section class="widget">
<h3 class="widget-title">其它</h3>
<ul class="widget-list">
<li class="last"><a href="https://www.codesky.me/admin/login.php">登录</a></li>
<li><a href="https://www.codesky.me/feed/">文章 RSS</a></li>
<li><a href="https://www.codesky.me/feed/comments/">评论 RSS</a></li>
<li><a href="http://www.typecho.org">Typecho</a></li>
</ul>
</section>
</div>
</div>
</div>
</div>
<footer id="footer" role="contentinfo">
&copy; 2020 <a href="https://www.codesky.me/">CodeSky 代码之空</a>.<a href="http://www.beian.miit.gov.cn">沪ICP备16034918号-1</a>
由 <a href="http://www.typecho.org">Typecho</a> 强力驱动 <a class="upyun" href="http://upyun.com"></a>.
</footer>



</body>
</html>
                                    

[ 吴志华 ] 从DjangoAllauth中进行登录改造小结

大概来介绍一下 Django Allauth 改造的期间遇到的一些问题和改造方法,在此之前我只想说——Django Allauth 是屑。为什么我说 Django Allauth 是屑入职之初我...

[ 陈炅 ] 知识迁移——工程师多向发展的优势

From:「GDG DevFest 2019」这是由演讲 PPT 汇集而成的内容,可能与演讲内容有所差异,并非演讲稿,望悉知。知识迁移?首先得提出一个问题,到底什么是知识迁移,在 wiki 上有...

[ 褚孝挺 ] z-index层叠上下文的渲染规则

最近我在 Element 里看到了一个 issue:el-image preview bug。之所以导致了这个 Bug,我觉得某种意义上来说就是因为 image 组件的 viewer(蒙版)模块...

[ 蒋志桦 ] 如何写一个certbot的插件

目前白嫖 HTTPS 的主流途径依旧是 LetsEncrpyt,certbot 似乎是官方主要推荐的一个申请方式,关于用途和用法,这里不多介绍,总之,是一个品种齐全,种类多样的 cli 工具:h...



模板使用前提是遵循《吉山数据服务协议》,图片预览只作为样例举例展示,具体定制以商谈需求为准。


如需要模板/网站开发服务,主按照以下步骤:

1、构思好需求,最好能把需求文档写清楚,以便客服人员快速理解对接。

2、把需求文档通过邮箱(service@jsanai.com)或者QQ(526713444)发送给我们的客服。

3、客服分析完需求后会与你进一步对接。

 
QQ在线咨询