写博客这个事情

写博客这个事情不是我自发进行的,成因也很有趣,是在本科贺立坚老师的指导下坚持下来的。

写博客的优点其实可以想出很多,但是于我而言,其根本原因还是:

我做了一些让我自己很得意的东西,想给大家看看

这就是我的初衷。此外,排名的上升以及一些统计数据的观察也可以给我带来许多欢乐,这是一步步坚持下来收获的。

有许多优质的博客给我带来了许多收获,我不认为那些作者,做这种事情就是“有所图谋”的,很多时候都是无私奉献的一种精神,就像是开源软件一样。认真的去做一件事,长期做一件事情是很有成就感的,也是能够收获喜悦,升华自我价值的。当然,值得一提的是,奉献是开源精神所包含的精神之一,但不是全部。

我觉得写博客是一件很好的事情,有点像是QQ空间的升级版。写博客的过程中,会对博客题目进行反思,会对自己的文字进行思考,甚至可以在这个过程中对于之前一些没怎么在意的事情有了新的看法。比如,在写这篇文章之前,我没有意识到我写博客的真正目的,而随着这篇博客慢慢的完成,我意识到了这件事情。

此外,在叙述一个不清楚的事情的时候,写博客是一个梳理思路的好方法,就如同给别人陈述一遍你的思路一样。只是,这个听众并不局限于你的地理位置,而是通过互联网广泛传播。

戒骄戒躁,继续努力。

Shell-tips

重启终端

执行命令,修改环境变量等等之后可以通过此命令来简单重启shell

exec "$SHELL"

查找文件

$ find ~ -name "*.txt" -print #在$HOME中查.txt文件并显示

locate findname

编辑变量

zsh中,编辑$HOME/.zshenv;在bash中,编辑.bash_profile

小程序开发Tips

[TOC]

这篇文章主要聊聊小程序开发。

小程序开发有几个点在文档里面没有写的很明确,在这里我更明确的提一下。

带着参数跳转

小程序之间的页面跳转携带参数的小例子:

<navigator url="" bindtap="bindViewTap">

这个navigator是一个跳转,绑定了bindViewTap方法。bindViewTap方法实现如下:

  var bindViewTap = function () {
    console.log('run search.');
    let location = {
      x: 1,
      y: 1
    };
    let keyword = 'test';
    wx.navigateTo({
      url: `../map/map?latitude=${location.x}&longitude=${location.y}&keyword=${keyword}`
    })
  }

如此一来,便携带着三个参数,就像是网页GET请求一样,跳转到../map/map页面。此时,map页面需要接收这几个参数。示例代码:

  var onLoad = function (options) {
    let that = this;
    console.log('Map load.');
    this.setData({
      markers: {
        latitude: options.latitude,
        longitude: options.longitude,
      },
      inputVal: options.keyword,
      init: true
    }, function() {
      // 完成函数后回调
      that.showInput();
    });
  }

在Page的OnLoad方法中,可以从options参数里面把传递的值拿出来,在map页面中使用。

本文后续持久更新。

全站上https

本来觉得这个https不是什么大不了的事情,但是输入密码的时候突然意识到,这个post的过程中是有危险的。危险在哪里呢?我们可以参考mozilla的相关描述

因此,我决定给我的站上一下https。上https的过程比较容易,因为之前一直都是在腾讯云捣鼓,所以直接从腾讯云走的域名以及https,因此可以直接从腾讯云一键申请【当然,还是需要填写一部分步骤】,这里就不再赘述了。另外,补充一下,申请ssl证书,即https必需品,首先需要网站进行审核,审核通过以后,才能直接申请。

因为我直接使用的是nginx作为前端,因此直接添加了一条server记录:

server {
    listen 443;
    server_name svtter.cn;
    ssl on;
    ssl_certificate 1_svtter.cn_bundle.crt;
    ssl_certificate_key 2_svtter.cn.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
  location / {
        proxy_pass http://web/;
    }
}

这个地方的域名需要换成自己申请的。其中有一个小坑是,如果你已经配置好http,希望全站都走https,那么要记得在原本的server处,添加一条语句

   rewrite ^(.*) https://$host$1 permanent;

如此一来,所有访问你网站的流量就都走https啦~看见小绿锁真开心呀;

后记

使用https以后,我发现我使用的许多图片并不是https,因此我的网站依然有被篡改的可能性。

这个不是很讲究的博客

功能列表

这个博客的雏形很早之前就写好了,但是一直没有挂上去,主要有这几个原因:一是写的不好,很多功能都没写全,写的也不太走心;二是长得有点丑,当然,这一点也可以放在功能不全这个问题里面。总而言之,就是不太讲究。这个不讲究还体现在之前的文章Latex适配没做好,等等。

完成博客的基本功能后,准备向着知识库的方向迈进一下,做成笔记形式的东西。其实做成笔记形式的东西并不难,把接口做好,然后写几个符合自己心意的前端就好了。只不过这时间上可能有点扛不太住,所以现在web方面做点事情,等以后有时间了,再去做别的。可以参考主题

关于web

说一点观点,web这个东西随着app的盛行,可能生存空间就像是原来的pc,或者说伴随着pc吧,流量会变得小很多。这也是没办法的事情,虽然不至于被逼死。但是不能说这个东西就不做了,不现实。web会以另一种形式存在,比如说我们喜欢的web-app【微信小程序,支付宝小程序】等等继续存在,当然,还有大家称的h5【react-native】等等。

现在的公众如果需要什么功能,可能在手机商店先搜索的概率更大一些,这也对某些新型的创业公司提出了挑战。这个事情可能被其他人提出很多次了,可能我发现的有点晚了。

以后写文章还是要先列个大纲,然后往里面填写内容,写到这里我已经忘记我之前想说什么了。

web开发依旧是猛如虎,虽然现在机器学习又炒的很热,我也很不能免俗的投入到机器学习的学习热潮之中。。

这个博客用的技术

Django,Docker,Bootstrap;以后再添加什么再说。当然,还有SQLite等。

其中我觉得最有必要吹一下的还是Docker,Docker可能需要耗费你一周的时间进行学习,当然,因人而异,最初的时候我学习这门”技术“大概就是用了一个周的时间,然后就开始了几次测试;最初是因为一些云服务商提供这个东西【免费】我猜逼着自己去学,学了之后发现用的不太好——我觉得这个事情云服务商还是要背锅的,具体我就不点名了,做的真的非常不友好。不如自己去找两本书学习一下,以学习一个虚拟化技术为目标去学习。

听说最近阿里推出了自己的容器技术,不过我没有精力看——有是的确应该有的。容器的好处就是你可以在本地搞好配置清单,或者抄一份配置清单,然后ssh到服务器上面部署一下,过程非常流畅,很舒服。

我更喜欢作为什么

我想了一下,我更喜欢作为一个原型开发工程师——这个名词是我自己的发明的,我也没有上网去查查有没有类似的名词。原型开发工程师的意思是做一些人们想要做的东西,但是实现起来没有必要做的非常彻底的东西。原型开发工程师是很痛苦的,尤其是在设计完之后开始写代码的过程。不是说设计完了,这个东西就实现了。

话说如果人工智能能够做到我设计完就能实现,还不用我非得用一些特别的领域设计语言来做的话,那真是虎的一批啊。

原型的最好处是不用在一个地方死抠着,做出东西更有成就感,也更容易致富一些。这个地方牵扯手艺的问题。手艺的问题应该作为另一篇博文来讲一下。

回学校的一些感想

嗯,来读研了。感觉研究生是非常有必要读的,尤其是本身作为二本院校的毕业生,很多知识的宽度与深度都是不够的。搞过的东西听过的课重新搞一遍,感觉是不一样的。对于有些东西实现没有头绪,现在来看看,收获了很多的思路,也把解决许多老旧的问题,感觉自己的开发水平应该又上了一个台阶。应该属于内功的部分吧。

BUG

  • RSS feed 存在问题【修改文章后会更改文章的时间线】
  • 目录出现小问题

这个博客应该没有多少人关注,阅读量少的可怜。但是如果你有什么想法,可以先发邮件给我。svtter#qq.com

导出hexo博客

最近自己重写了一套博客系统,打算把博客和知识库结合起来,做一套强大的玩意儿。
今天做了一些简单的工作,觉得这个导出hexo文章挺有意思,于是写在这里。

markdown + yaml 这种解析方式没有直接能够使用的,有些markdown文章中缺少---
也能进行解析,还有几个tag存在问题。因此为了能够直接使用原本博客中的相关内容,
直接使用hexo本身的parse来解析,即hexo-front-matter

可以直接从github上面找到对应的API,很简单的粗暴。

MongoDB与MySQL比较【翻译】

翻译于 https://www.mongodb.com/compare/mongodb-mysql?jmp=docs

概览

关系型数据库支持企业级应用已经有了十年之久,自从1995年MySQL释出,它已经成为最流行而低成本的选择。但是,在近几年存储以及不同类型数据的爆炸性增长,非关系型数据库,像是MongoDB,现行于市,满足新应用的需求。MongoDB既被用于新的应用,也被用于替代旧的关系型基础设施,或者在原来的基础上增加新的功能。

继续阅读“MongoDB与MySQL比较【翻译】”

快速上手编辑器

Atom因为总是需要代理来下载插件的原因,又被放弃了。一个新技术在中国的freelancer中收不收欢迎,似乎很大程度上取决于,这个东西下载的速度;很明显,Atom存在下载速度问题,然而vscode不存在;在技术栈很相似的情况下,vscode的书写体验十分的流畅,远远超过了atom,甚至不加插件的vim;

通过廖雪峰的安利我使用了vscode。一个现代的编辑器,在我看来,似乎只有那么几件事情需要注意下,既可以很愉快的开始使用了。

开始

在vscode的欢迎使用里面,我们可以看到一个很大的“自定义”部分,在其下面,可以看到工具与语言,安装键盘快捷方式等选项;这个时候,安装你需要的语言,以及你需要的快捷方式即可。

类似的,在atom里面,也有相同的页面

如果不走上面的部分,可以按照我所想的,走这个下面的通用流程:

vi-bind

放在第一点的就是vim按键的相关绑定;基本每一个编辑器都会有一个vim的绑定插件;在vscode上面,你只需要在右方package里面找到他,
然后下载使用就可以了。我们可以看到许许多多的emulation来实现vim在vscode里面的相关操作,不过就我而言,使用官方的这个·vim·插件,
就足够使用了。

安装相关的语言

然后就是搜寻相关语言的软件包;让我们搜索一下python和js。这个时候可以先学习一下cmd+p这个东西,或者是shift+cmd+p,这两个一方面是用来呼叫出命令,另一方面可以快速跳转文件。一般情况下,还可以跳转function。类似的东西,例如vim里面的ctrlp,sublime里面的ctrl-p等等。

命令行入口

每一个工程都应该有一个命令行入口,用来调试相关的命令;虽然这在yin看来,是一个非常吃人精力,而且不讨好的设计,但是我觉得还算不错;一个比较成熟的编辑器都有这一部分;使用shell的时候,只需要从cmd+p或者shift+cmd+p里面输入终端就好了。

最后

使用一个新的编辑器并不是一件困难的事情。Vim以及Emacs的确很强大,但是在配置的过程中毫无疑问的会占用许多时间,这些时间在我看来,很多时候都不一定是必要的。除非需要对于某个特性进行细细的定制,否则不需要研究的那么透彻。M$无论是编辑器还是IDE,都可以说是无可挑剔,为什么不尝试一下新的东西呢?