梯度下降之由来
博主的习惯是,理解任何知识之前应先理清其来龙去脉,
algorithm engineer
办公PC安装18.04后,出现了奇怪的bug:右上角没有有线网络连接的图标,显示’Wired Unmanaged’,在网络配置界面也只有VPN和无线网络的配置,实际上此时电脑已经连接网络,通过DHCP获得IP地址可以正常访问网络,可就是看不到在GUI上配置有线网络的地方。办公环境下不能配置固定IP的麻烦很多,譬如Synergy等需要配置IP的应用,所以尝试解决。
最直接搜到的办法是:方法1
修改/etc/NetworkManager/nm-system-settings.conf,将managed字段改为true,再重启network-manager服务:
1 | sudo service network-manager restart |
几乎解决了所有人的问题,但不包括我
解决了我的问题的方法:方法2
原链接说得非常明白了,18.04有两套网络管理软件:server版对应netplan,desktop版对应NetworkManager。由于大部分人是升级安装或直接安装desktop版本,所以方法1一般都有效。但由于本人的洁癖强迫症,安装系统时用了mini.iso。因此netplan的默认renderer仍然没有改成NetworkManager。
所以,解决方法就是,修改/etc/netplan/01-netcfg.yaml,将renderer字段由networkd改为NetworkManager(大小写敏感),再应用修改:
1 | sudo netplan apply |
问题解决。
查编程、算法相关资料时,经常看到很多挂载在精美的私人博客上的文章。博主过去的文章都是挂在简书上,虽然满足了撰文的基本需求,但订制属性不佳——作为一名不会按时吃药的coder,这当然是不能容忍的啦^-^
闲话少叙,本博客的第一篇文章会详细介绍搭建私人博客的三个组件和基本步骤:
Hexo: 博客框架,用于快速高效生成博客所需的前台代码
Github Pages: 免费的博客托管处(有访问量、总大小限制)
Appveyor:(可选) 在线持续集成工具,从此你只需做写文、git上传两件事
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。——Hexo官方文档
简单来说,Hexo就是帮助我们完成前台HTML生成的工具,让我们只需要专注于Markdown文档的编写。
安装前需要保证系统预装Nodejs和Git,之后可进行Hexo安装,以linux下的安装为例:
1 | npm install -g hexo-cli |
这里有两点需要留意:
1 | npm config set registry https://registry.npm.taobao.org |
1 | npm config set proxy http://your.proxy.server:port |
让我们以一个Hello World工程作为Hexo之旅的第一站,在本地环境使用Hexo生成博客内容并查看总共分三步:初始化Hexo工作目录,写文章/生成内容,启动博客后台:
1 | mkdir hexo_blog |
这一步会在指定的文件夹hexo_blog下下载建站所需的文件,下载过程需要花费一段时间,要耐心等待。
1 | cd hexo_blog |
这一步会在source/_posts/下生成一个名为hello-world.md的文件,你可以在里面编辑任意内容,完成后生成前台所有代码:
1 | hexo generate # 或 hexo g |
generate命令会生成博客前台所需的一切(HTML, CSS, JS等等)
1 | hexo server # 或 hexo s |
此步骤默认会完成建站并在本地4000端口启动server,打开浏览器输入localhost:4000,你就能看到自己的博客啦
简单说,Github Pages是Github为用户提供的用于托管个人静态网站的服务,免去了我们自己买VPS搭环境的麻烦,只需要免费注册的github账号并新建一个特定名称的项目,我们就可以获得这样一个服务了:
登陆你的github首页,选择New Repositories,项目名”username.github.io”,用你的github用户名替换username
工程创建成功,你的Github Pages服务也就有了,下一步就是在你的hexo工作路径与Github Pages之间建立关联,回到小节1的hexo_blog目录下,编辑全局配置文件_config.yml,将deploy相关内容修改成如下模样:
1 | deploy: |
仍要记得以你的用户名替换username,接下来就是deploy过程了,这一步会将你的博客内容上传到Github Pages服务上,不过在此之前,你需要装一个hexo部署到github上的插件:
1 | npm install hexo-deployer-git --save |
准备好,博客要起飞啦
1 | hexo deploy |
如无意外,现在输入username.github.io,你的个人博客和你首次见面了!
这以后,你的工作流就是:
1 | # edit your markdown file(s)... |
折腾几轮,新增了几篇博客,是不是新鲜感满满?相信我,这和开手动挡汽车一样,对于重复工作的厌烦总有一天会来到。另外,这种本地生成、上传内容的工作方式还有个问题,当你更换工作环境时,需要提前拷贝hexo目录——Github工程的master分支,和你的工作环境并不一样哦。
为解决上述两个问题,我们引入Appveyor(Travis也一样)作为持续集成工具。持续集成,简单说就是个web服务,它会一直监听某种触发信号,当监听到信号时,服务会按照提前设定好的逻辑执行一系列动作。在当前场景中,持续集成用于监听hexo源码的修改(可以把hexo工作路径作为新的github工程,以该工程的更新作为信号),并执行生成、部署活动。
首先,你需要把小节1的工作路径,即hexo_blog上传到新的git repo上,为了便于管理,我没有新建git工程,而是在username.github.io工程上新建了分支:
1 | cd hexo_blog |
git repo的根目录下要添加appveyor的hook文件appveyor.yml,为的是在appveyor和此目录建立关联:
1 | clone_depth: 5 |
配置文件中唯一需要修改的就是[your token here],这个加密token的作用就是让appveyor作为被信任用户向你的博客master分支提交内容。为了获取此token,你需要在github上生成一个token,但这个token会暴露在你的hexo分支上,你肯定不愿意谁都能用这个token往你的博客提交内容——登陆Appveyor官网,注册账号,用账号内的工具加密此token得到加密token填入appveyor.yml即可。
之后你还需要新建CI工程,定义监听哪里、执行什么操作blablabla……内容太多了,去看这里吧。
大功告成!改改博客的配置或是增删改你的博客,push到source repo上,等上几分钟就ok了~