define('__TYPECHO_DEBUG__',true);
打开 Debug 模式
define('__TYPECHO_SECURE__', true);
强制SSL
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://myavatar.com/avatar');
Avatar 前缀
define('__TYPECHO_DEBUG__',true);
打开 Debug 模式
define('__TYPECHO_SECURE__', true);
强制SSL
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://myavatar.com/avatar');
Avatar 前缀
为什么要看腾讯的视觉设计方案?
体系化的品牌设计对于你做自己的品牌设计有一定的帮助。
都是来自于 Confluence 的模板,供写作参考。
这些模板我提供的都是图片,而非文本,一方面是其内容并非简单的通过一个文本就可以展示。对于真实的使用场景,可能你依然需要使用诸如 Notion、Coda、Evernote 之类的工具来展现。另一方面,这个模板更多是帮助你思考,如果我在做类似的事情的时候,可以加入哪些模板。
此外, Notion 也提供了不少的 Template ,值得你在使用的时候参考。
关键词表
实际上,Confluence 中还有大量的模板,不过我发现, Confluence 可以免费使用,所以,just register it,and use it。
最近我在开发一个 Hexo 插件,在开发的过程中,遇到了一些小的问题:插件的代码发生了修改,但运行hexo 的时候却没有实时刷新出来。
在对代码进行分析后发现,hexo 的 tag filter 的结果会缓存在数据库中,由于缓存了,所以我使用的 generator ,所以也会被缓存。
在预览前,删除 db.json
即可让 hexo 重新开始生成
为了方便,我在 npm 的 scripts 中加入了一个自定义的配置
{
...
"scripts":{
...
"s": "rm db.json && hexo server"
...
}
...
}
Code language: JavaScript (javascript)
最近在参与 WavPub 的开发,在开发的过程中,需要调整 XML 的结构,因此,需要为一些字段加入 CDATA 的支持。
在阅读了 eduncan911/podcast 中的代码后发现,这个包在生成 XML 的时候,使用的是 Golang 核心库中的 encoding/xml 包,而这个包在使用的时候有一个问题,你可以给其字段加入 ,cdata 来完成加入 cdata 的标签,但问题在于,他的实现是,在你的字段外部加标签,而不是内部加标签。举个例子来说,就是,如果你定义了字段为 xml:”category,cdata” 你得到的会是
<![CDATA[ somecode ]]>
Code language: HTML, XML (xml)
而非我们想要的
<category> <![CDATA[ xxx ]]> </category>
Code language: HTML, XML (xml)
想要解决这个问题,就需要你在你的字段中实现一层包裹,在其自动生成的 CDATA 外层加入一层 XML ,这样就可以实现我们想要的效果,比如说我上面的效果可以通过定义一个新的 Description 的 Struct 来实现
package podcast
import "encoding/xml"
// Description represents text inputs.
type Description struct {
XMLName xml.Name `xml:"description"`
Text string `xml:",cdata"`
}
Code language: JavaScript (javascript)
然后,再在需要的地方,加入相应的引用就好
type Podcast struct {
XMLName xml.Name `xml:"channel"`
...
Description *Description
...
}
Code language: JavaScript (javascript)
倒计时进入 2 位数阶段,开始为 Next Stage 做准备。
此外,这个月做了一些优化效率的工作:
运营工作越来越熟练,努力成为一个更好的运营。工作的关系,现在我也需要产品相关 & 研发相关的工作,工作的内容慢慢超越了岗位的范畴。是好也是坏。
工作中开始出现一些乱象,值得我警惕。
比如,因为自己的一个失误,导致损失了 1000 多块钱。不过,这个事情也让我突然发现
1. 你工作中的失误导致的损失可能没有你想象中的那么多。
2. 人心其实很便宜,应该避免自己被小恩小惠所感动。
白宦成
工作中开始试图培养没有那么专业的同事,让他也变的更好~
生活中没有太多的变化,但是生活习惯不太好。六月需要做一些切实的事情去优化生活习惯。
五月生活相关的总结,会在明天发出,另开一篇文章来写。
这个月启动了一个新的 Side Project —— WXmarkdown
WXMarkdown 在运行了一段时间后,目前的数据如下
六月希望可以将数据调整到日 PV 能在 300 ,需要加把劲了。
此外,在教程方面,重新启动了云计算基础课程,目前在公众号连载,希望这一次能圆满做完。
本月因为推广 WXMarkdown 开始写了一些文章,但是总体来说,量还是不够, 这部分还有待优化。
此外,也基于 WXMarkdown ,开了一个新的 GitChat, 记录自己的所得
当然,因为我一贯的脱稿习惯和遇到了一些坑。。还欠了一些稿件。。。
此外,五月写了14篇日记,还是有待提升的。
本月在教育方面投入较高,总体支出近 2000 元,但目前购买的一些资源还没有开始看,需要注意。是否需要尽快开始消化,优化工作和生活。
本月在数字产品上有较高的投入,达到了近 1500 元,域名消耗依然是大头。其次,本月购买了一个新的电子产品——手写板。打算平时在其上勾勾画画。
一年学习 54 门课程,本月进度 1 门;全年进度2 /54;
一年读书 54 本,本月进度 1 本;全年进度 15/54
一年观看 54 部电影,本月进度 5 部;全年进度 7/54
在某些场景下,需要根据给定值,返回一批特定的结果,在这种情况下,需要返回切片中的某一个特定的值。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
userAgentSlice := []string{
"Podcasts/1430.46+CFNetwork/1125.2+Darwin/19.4.0",
"Spotify/1.0",
"PocketCasts/1.0+(Pocket+Casts+Feed+Parser;++http://pocketcasts.com/)",
"iTMS",
"AirPodcasts/1440.4+CFNetwork/1126+Darwin/19.5.0",
"Tentacles,+Like+iTunes",
}
rand.Seed(time.Now().Unix())
fmt.Println(userAgentSlice[rand.Intn(len(userAgentSlice))])
}
Code language: JavaScript (javascript)
两会期间,各种工具的效果都会大幅度下降。在这种情况下,作为翻译组,想要好好干活也是挺麻烦的,于是,便写了一些简单的工具,来解决这种特殊情况下的尴尬问题。
在翻译组,我们有专门的机器来负责内容抓取 & 转化成为 markdown,但同时,文章中会有一些图片,种种原因,会导致这些图片无法访问。在翻译的时候,我们需要对这些图片进行下载,在这种情况下,就会很麻烦。我们需要一个更加简单的方式,来完成文件的下载。
Simple Proxy 就是来解决这个问题的,他可以让你很方便的完成外网的文件下载(当然,前提是你的 Proxy Server 可以访问到这个文件。
使用方法:
在实际的使用过程中,我给你的建议是,
这样可以让你的使用体验达到最佳。
参考:https://github.com/bestony/simple-proxy
Simple Proxy 的代码十分简单,加入了大量的注释,也不过 51 行。
最为核心的代码源自于其中的
res.set({
'Content-Disposition': `attachment; filename=${filename}`
})
Code language: JavaScript (javascript)
这段代码的用户是为返回值设定 Header ,其中用到的 Header Content-Disposition
是 HTTP 协议早期定义的 Header 规范。
如果你将其值设置为 inline
,其内容将会直接展示在界面中;
其值设置为 attachment
则可以启动系统浏览器自带的下载功能。
其值中加入 filename
则可以更进一步,在下载时,指定下载的名称,在本次的项目中,就借助了这样的功能,让下载的文件名不发生改变。