2020-08-19 blog
想了一下,还是得给布可也加上备案信息
但是wiki.js本身并没有提供修改footer的地方
但是在主题页提供了一个html注入的地方,所以自己尝试写了一下js脚本
然后很成功地把原本的power by wiki.js改成了备案信息
开心
另外其实也看到了一篇知乎文章。似乎我很有必要去补一下Jupyter的课了。
唉,怎么又是开坑。。。
看来得赶快弄好博客里面的填坑区。
看到了之前尝试重新使用高中时期非常高效的,在手账本上面的打卡。当时确实是能非常有效地督促自己完成各种任务。但是不知道为什么,现在比以前更方便了,反而不能坚持打卡了。虽然现在也能坚持写blog了。
补一下前几天忘记写的,关于Deep Go的设计的问题
接触到语义化版本控制规范之后,我才发现其实Deep Go根本就不能算是X.Y.Z,只能算是0.Y.Z。
另外在学习了一些编程设计模式之后,也发现其实以前的写法,有点支离破碎。所以干脆再次重构,从新开始写。
所以,这次重写,版本号从0.1.0开始,并且取了一个版本代号:Aiur。也就是艾尔。
在我学了操作系统原理以及编程设计模式之后,其实对于一个框架不应该怎么写,也有了一些概念和理解。
然后我也会反思我以前写python代码的方式。明明是面向对象编程的语言,结果我总是写得很面向过程。所以目前也开始慢慢学着用面向对象的方式来编程了。
另外,Deep Go架构经过几代演变,其实已经开始变得有点像框架了。现在回想之前,最开始的HAT1,说句难听的,其实不过就是把几个图像识别的任务放到了一起,然后共享了公共函数而已。
目前新的Deep Go的设计,部分参照了操作系统的一些理念,就是分为两个最基本的态,一个是内核态,一个是用户态。内核态负责进行作业、调度、配置、保障安全,而用户态,则提供用户接口,并且尽可能轻量级,尽可能快速。也就是说,用户调用dp的接口所定义的变量和函数,其实并不是实际执行的,而是一个请求,只有执行了Session的运行方法之后,才转到内核态,提交到作业队列实际执行。
不过这也意味着,需要自己仿照Keras提供的接口,自己定义一个可以用来构建出模型定义的用户类。甚至可能并不是完全使用Keras的接口,而是自己定义一套接口标准,然后转译成Keras接口,甚至是调用tf的底层原始函数。
另外就是,为了让Deep Go足够的Go,我也想了很多办法来让它尽可能地轻量化。比如说使用单例模式来减少重复Object,使用LazyLoader来统一管理第三方库的加载,并且尽可能推迟加载,等等。
或许之后我还会尝试做一些其他的Python项目,或者Java项目。可能这一次开发,能让我培养好OOP编程的思维和习惯吧。
Deep Go 笔记
一个想法。之前做过一个实验,是自己写一个类来接管Stream Output的。是否可以建立一个单例类,通过Flags里面读取到的配置信息,决定是否接管。然后如果接管了,其实也就是拦截到了python里面所有的print函数,那么就可以把它转发到Logger,从而实现print也能变成日志。
深度学习笔记
一个想法。突然想到,其实最原本的,最复杂的TensorFlow的模型的构建,其实自己多琢磨琢磨,是可以实现出一个可增长的模型的!
但是,可能实现起来会比较(非常)复杂,而且也不确定效果如何。所以可能优先级暂时不那么高,但是可以先Mark起来!
目前的一个想法是,即便是可以增长(即记忆),也需要控制一下增长的“东西”,不可能说一次增长一个很大的权重,也不可能说一次就增加一个node。应该是一个基于Graph网络的模型,然后每次增长,是一个Mini-Graph。
看到了以前的blog里面说到,blog里面写的东西太多太杂,也没有标签和分类什么的。
其实,在blog里面的搜索,本来就是为了解决这个问题的啊。我突然想起来一个什么东西,可能以前做过笔记的话,我就直接搜关键字,可能一下就找到位置了。
其实不仅仅是在WP,在之前基于hexo搭建的静态blog里面,我也用过next主题里面内嵌的第三方的搜索功能。确实是很方便,比如说我忘记了git怎么清除掉忘记ignore的文件,我直接一搜git,就找到了。