-
PYTHON替代MATLAB在线性代数学习中的应用前言MATLAB一向是理工科学生的必备神器,但随着中美贸易冲突的一再升级,禁售与禁用的阴云也持续笼罩在高等学院的头顶。也许我们都应当考虑更多的途径,来辅助我们的学习和研究工作。虽然PYTHON和众多模块也属于美国技术的范围,但开源软件的自由度毕竟不是商业软件可比拟的。本文是一篇入门性文章,以麻省理工学院(MIT) 18.06版本线性代数课程为例,按照学习顺序介绍PYTHON在代数运算中的基本...
-
华为ARM64服务器上手体验背景中美贸易冲突以来,相信最大的感受,并不是我对你加多少关税,而是我有,可我不卖给你。“禁售”成了市场经济中最大的竞争力。相信也是因为这个原因,华为“备胎转正”的鲲鹏系列芯片,一经推出,就吸引了业界的眼球。经过漫长的等待,基于鲲鹏920,代表高端计算能力的华为服务器已经开始大量出货。不过,限于专业壁垒,服务器用的芯片,无论如何也比不上5G和MATE30更令人瞩目。今天偶然发现,华为云上正在进...
-
Rocket框架多文件上传不知道你的体会是什么,我从C切换到Rust以来,最大的感受并不是语法方面的—那些方面已经有足够多人抱怨而又享受着了。我最大的感受是终于把Web编程工具,同系统编程工具统一了起来。C/C++其实也有很多不错的Web编程框架,只是依然总感觉味道不对。所以平常Node.Js / Golang /Python都会穿插在工作中。无论是开发效率,还是维护的方便程度,C/C++在Web开发方面还是弱项。R...
-
Rust到底值不值得学前言其实我一直弄不明白一点,那就是计算机技术的发展,是让这个世界变得简单了,还是变得更复杂了。 当然这只是一个玩笑,可别把这个问题当真。然而对于IT从业者来说,这可不是一个玩笑。几乎每一次的技术发展,都让这个生态变得更为复杂。“英年早秃”已经成为一种很普遍的现象。Rust是近两年呼声比较高的一种新型开发语言。市场占有量并不大,但增长速度极为迅猛。有人统计过,在计算机行业,平均每33.5天就有...
-
cURL无法访问TLS网站故障解决大多数人都厌烦使用老旧的系统,无论软件还是硬件。但有的时候又不得不困守其中,坚持延续着系统的寿命,或者还需要点几柱香,祈求神佛的护佑。Linux是一个模块化极好的操作系统,得益于此,当其中有组件落伍之时,大多数情况下,还能通过下载源码,手工编译来升级组件,从而保证系统的可用性。在这个过程中,cURL工具是必不可少的,特别很多常用的开发平台,都使用了libcurl库作为下载的基础工具。比如PH...
-
MySQL数据库文件的移动新型数据库层出不穷,MySQL一幅日薄西山的样子。其实还有很多人或者偏爱、或者使用以前遗留的系统,仍然生活在MySQL的世界。我也是有很久不用了,这个很久超过十年。不过前几天有个朋友让我帮忙为他们升级服务器,才发现,老革命居然碰到个新问题。因为是个用了很久的系统,所以不考虑变更数据库系统了。只是把当前数据库迁移到新的设备上,这应当是很简单的事情。按理说,数据文件大点,拷贝要时间,也超不过20...
-
win10配置linux子系统使用python绘图并显示默认情况下,Win10的linux子系统(WSL)是只能使用命令行程序的。所有图形界面的程序都无法执行。通过为Win10安装XWindows协议的终端应用,可以让Win10成为一台XWindow终端,从而接受Linux的XWindow显示输出。这样的终端应用有挺多,Xming和VcXsrv是其中著名的两个。下载安装就可以,我因为一些习惯上的原因使用了后者。安装设置都使用默认即可,其中在显示端...
-
正确设置越狱版ios的终端编码本文是针对越狱版iPhone手机的,手机没有越狱就别看了,看了也没办法用。越狱版的iPhone当然是为了跟电脑一样做各种有趣的事情的。但通常越狱的iPhone在命令行都无法处理中文,比如你的播放器里面的中文歌曲名,列出来全部是乱码的样子。类似下面的图:输入中文也做不到,在终端窗口输入中文,只会收到一串的警告音,什么也输入不上去或者同样是一串乱码显示。这样很多强大的命令行工具也不能用了,比如f...
-
梯度下降法公式推导过程前面一篇就是基础性的推导过程。从反馈的情况看,总体还是讲明白了。但是在导数的部分,仍有不少的存疑。其实在数学方面,我也是学渣。所以尽我所能,希望再次的补充能讲的明白。若有谬误,期盼指正。基础公式所需基础公式抄录于下,不明白的请至上篇查看详解。假设函数$$y' = h_θ(x) = \sum_{i=0}^nθ_ix_i$$均方差损失函数$$J(θ) = \frac1{2m}\sum_{i=1}...
-
梯度下降法基本推导仍然是一篇入门文,用以补充以前文章中都有意略过的部分。之前的系列中,我们期望对数学并没有特别喜好的程序员,也可以从事人工智能应用的开发。但走到比较深入之后,基本的数学知识,还是没办法躲过的。导言所有的深度学习,始于一个最简单的公式:$$ y=ax+b $$如果不理解的,可以去看一下房价预测的例子。简单说:y是要预测的房价,x是房子的平米数。a是每平米的房价,b是基本费用。这个公式每当有一个房...
-
给图片加水印前言加水印是为图片声明版权出处的一种常用方法。平常都是写技术文章,文章的重点在技术本身,照片往往不需要加水印,或者需要加也不多,祭出神器PhotoShop很快就能完成。前一段趁着夏天还不很热的时候出去游荡,回来应约写了游记,其实是给别人当做攻略来用。游记可就不同了,照片成为了主体,并且量很大。随便一个景区的流程,十几副照片总是免不了的。这个时候,还用PhotoShop来加水印,当然不是不行,...
-
Android程序中,内嵌ELF可执行文件前言都知道的,Android基于Linux系统,然后覆盖了一层由Java虚拟机为核心的壳系统。跟一般常见的Linux+Java系统不同的,是其中有对硬件驱动进行支持,以避开GPL开源协议限制的HAL硬件抽象层。 大多数时候,我们使用JVM语言进行编程,比如传统的Java或者新贵Kotlin。碰到对速度比较敏感的项目,比如游戏,比如视频播放。我们就会用到Android的JNI技术,使用NDK...
-
TensorFlow从1到2(十五)(完结)TensorFlow的Javascript版TensorFlow一直努力扩展自己的基础平台环境,除了熟悉的Python,当前的TensorFlow还实现了支持Javascript/C++/Java/Go/Swift(预发布版)共6种语言。越来越多的普通程序员,可以容易的在自己工作的环境加入机器学习特征,让产品更智能。在Javascript语言方面,TensorFlow又分为两个版本。一个是使...
-
TensorFlow从1到2(十四)三种开发模式使用TensorFlow 2.0完成机器学习一般有三种方式: 使用底层逻辑这种方式使用Python函数自定义学习模型,把数学公式转化为可执行的程序逻辑。接着在训练循环中,通过tf.GradientTape()迭代,使用tape.gradient()梯度下降,使用optimizer.apply_gradients()更新模型权重,逐次逼近,完成模型训练。 使用Keras高层接口...
-
TensorFlow从1到2(十三)风格迁移《从锅炉工到AI专家(8)》中我们介绍了一个“图片风格迁移”的例子。因为所引用的作品中使用了TensorFlow 1.x的代码,算法也相对复杂,所以文中没有仔细介绍风格迁移的原理。今天在TensorFlow 2.0的帮助,和新算法思想的优化下,实现同样功能的代码量大幅减少,结构也越发清晰。所以今天就来讲讲这个话题。“风格迁移”指的是将艺术作品的笔触、技法等表现出来的视觉效果,应用在普...
-
TensorFlow从1到2(十二)生成对抗网络的概念上一篇中介绍的VAE自动编码器具备了一定程度的创造特征,能够“无中生有”的由一组随机数向量生成手写字符的图片。这个“创造能力”我们在模型中分为编码器和解码器两个部分。其能力来源实际上是大量样本经过学习编码后,在数字层面对编码结果进行微调,再解码生成图片的过程。所生成的图片,是对原样本图的某种变形模仿。今天的要介绍的生成对抗网络(GAN)也具备很类似的功能,所建立的模型,能够...
-
TensorFlow从1到2(十一)基本概念“变分自动编码器”(Variational Autoencoders,缩写:VAE)的概念来自Diederik P Kingma和Max Welling的论文《Auto-Encoding Variational Bayes》。现在有了很广泛的应用,应用范围已经远远超出了当时论文的设想。不过看起来似乎,国内还没有见到什么相关产品出现。作为普及型的文章,介绍“变分自动编码器”,要先从编码...
-
TensorFlow从1到2(十)基本概念机器翻译和语音识别是最早开展的两项人工智能研究。今天也取得了最显著的商业成果。早先的机器翻译实际脱胎于电子词典,能力更擅长于词或者短语的翻译。那时候的翻译通常会将一句话打断为一系列的片段,随后通过复杂的程序逻辑对每一个片段进行翻译,最终组合在一起。所得到的翻译结果应当说似是而非,最大的问题是可读性和连贯性非常差。实际从机器学习的观点来讲,这种翻译方式,也不符合人类在做语言翻译时所做的...
-
TensorFlow从1到2(九)迁移学习基本概念迁移学习是这两年比较火的一个话题,主要原因是在当前的机器学习中,样本数据的获取是成本最高的一块。而迁移学习可以有效的把原有的学习经验(对于模型就是模型本身及其训练好的权重值)带入到新的领域,从而不需要过多的样本数据,也能达到大批量数据所达成的效果,进一步节省了学习的计算量和时间。MobileNet V2是由谷歌在2018年初发布的一个视觉模型,在Keras中已经内置的并使用I...
-
TensorFlow从1到2(八)《从锅炉工到AI专家(6)》一文中,我们把神经网络模型降维,简单的在二维空间中介绍了过拟合和欠拟合的现象和解决方法。但是因为条件所限,在该文中我们只介绍了理论,并没有实际观察现象和应对。现在有了TensorFLow 2.0 / Keras的支持,可以非常容易的构建模型。我们可以方便的人工模拟过拟合的情形,实际来操作监控、调整模型,从而显著改善模型指标。从图中识别过拟合和欠拟合先借用上一篇的两...
-
TensorFlow从1到2(七)线性回归模型“回归”这个词,既是Regression算法的名称,也代表了不同的计算结果。当然结果也是由算法决定的。不同于前面讲过的多个分类算法或者逻辑回归,线性回归模型的结果是一个连续的值。实际上我们第一篇的房价预测就属于线性回归算法,如果把这个模型用于预测,结果是一个连续值而不是有限的分类。从代码上讲,那个例子更多的是为了延续从TensorFlow 1.x而来的解题思路,我不想在这个系列的...
-
TensorFlow从1到2(六)结构化数据的预处理前面所展示的一些示例已经很让人兴奋。但从总体看,数据类型还是比较单一的,比如图片,比如文本。这个单一并非指数据的类型单一,而是指数据组成的每一部分,在模型中对于结果预测的影响基本是一致的。更通俗一点说,比如在手写数字识别的案例中,图片坐标(10,10)的点、(14,14)的点、(20,20)的点,对于最终的识别结果的影响,基本是同一个维度。再比如在影评中,第10个单词、第2...
-
TensorFlow从1到2(五)Keras内置的预定义模型上一节我们讲过了完整的保存模型及其训练完成的参数。Keras中使用这种方式,预置了多个著名的成熟神经网络模型。当然,这实际是Keras的功劳,并不适合算在TensorFlow 2.0头上。当前TensorFlow 2.0-alpha版本捆绑的Keras中包含: densenet inception_resnet_v2 inception_v3 mobilen...
-
TensorFlow从1到2(四)Fashion Mnist — 一个图片识别的延伸案例在TensorFlow官方新的教程中,第一个例子使用了由MNIST延伸而来的新程序。这个程序使用一组时尚单品的图片对模型进行训练,比如T恤(T-shirt)、长裤(Trouser),训练完成后,对于给定图片,可以识别出单品的名称。程序同样将所有图片规范为28x28点阵,使用灰度图,每个字节取值范围0-255。时尚单品的类型,同样也是分为1...
-
TensorFlow从1到2(三)数据集及预处理从这个例子开始,相当比例的代码都来自于官方新版文档的示例。开始的几个还好,但随后的程序都将需要大量的算力支持。Google Colab是一个非常棒的云端实验室,提供含有TPU/GPU支持的Python执行环境(需要在Edit→Notebook Settings设置中打开)。速度比不上配置优良的本地电脑,但至少超过平均的开发环境。所以如果你的电脑运行速度不理想,建议你尝试去官方文...
-
TensorFlow从1到2(二)图片样本可视化原文第四篇中,我们介绍了官方的入门案例MNIST,功能是识别手写的数字0-9。这是一个非常基础的TensorFlow应用,地位相当于通常语言学习的”Hello World!”。我们先不进入TensorFlow 2.0中的MNIST代码讲解,因为TensorFlow 2.0在Keras的帮助下抽象度比较高,代码非常简单。但这也使得大量的工作被隐藏掉,反而让人难以真正理解来龙去脉。...
-
TensorFlow从1到2(一)引言原来引用过一个段子,这里还要再引用一次。是关于苹果的。大意是,苹果发布了新的开发语言Swift,有非常多优秀的特征,于是很多时髦的程序员入坑学习。不料,经过一段头脑体操一般的勤学苦练,发现使用Swift做开发,不仅要学习Swift,还要学习Swift2、Swift3、Swift4…后来我发现,这个段子很有普遍性,并非仅仅苹果如此,今天的TensorFlow 2.0也有点这样的趋势。以至于...
-
从一到万的运维之路摘要:本文从单机真机运营的历史讲起,逐步介绍虚拟化、容器化、Docker、Kubernetes、ServiceMesh的发展历程。并重点介绍了容器化阶段之后,各项重点技术的安装、使用、运维知识。可以说一文讲清楚服务器端运维的热点技术。序文章的名字起的有点纠结,实际上这是一篇真正从基础开始讲解,并试图串联起来现有一些流行技术的入门文章。目前的企业级运营市场,很有点早几年前端工程师所面临的那...
-
解决mac上每次升级nodejs都要重新安装扩展包的问题虽然有了一些新生派竞品比如yarn,但使用或者习惯了npm的开发者仍然大有人在。以前用起来没注意到这个现象,最近一段时间发现,每次随着使用brew upgrade自动升级了nodejs版本,原来安装的nodejs扩展包就不起作用了,还需要重新安装一遍。再加上一些扩展包存储网站被墙的问题,这个过程真是令人痛不欲生。今天比较闲了研究了一下,发现原来的扩展包都是通过npm安装到/usr/local...
-
拼音转换小工具试过的人都知道,电脑输入拼音很麻烦,特别是再加上音调。网上搜一搜,帮助输入拼音工具很多,最简单的是直接汉字查拼音,可惜多音字或者断句容易有歧义的情况下,电脑的人工智能往往会给出错误的答案。这个小工具没有那么高的智能,仍然要求输入拼音的英文简写,但不会出现上面说的错误。对输入效率也有明显提升。使用方法: 直接使用英文字母来表示拼音。 如果想输入“ü”,使用字母“v”。 一个汉字的完整拼音...
-
《写字练习》词库制作说明《写字练习》是根据make me hanzi等开源项目资源制作的,提供给非汉语母语学习者或者低年级儿童学习汉字书写的有效工具。练习的有效性,非常取决于学习时的词库针对性。假设一个场景,对于一个一年级学生,正在学习第三课的生词。那当前的练习,当然最好就是本课的内容,适当添加前两课的生词,才能得到较好的学习效果。如果出现的生词同本课无关,或者其它尚未学习的生词,那这种练习,往往会让学生丧失学习信...
-
从零开始学习PYTHON3讲义(十六)(连载完)《从零开始PYTHON3》学习资源包下载课程连载已经完全结束。经过整理校对,这里把在课程中出现过的源码和练习答案示例源码全部打包提供下载:https://pan.baidu.com/s/1Ljzu_uKrgygUZ5eRe1ldfg提取码:f3r6压缩包解压密码:https://formoon.github.io资源包中还包含了64位Windows版本的Python3安装包,是验证可用的版本...
-
从零开始学习PYTHON3讲义(十五)《从零开始PYTHON3》第十五讲虽然看起来绘图和音乐并不相关,但是听过了上一讲的内容你一定知道,这是游戏编程中四个需要处理内容的两部分,这两部分必须同时、并行的处理,不能因为某一项计算的拖延,导致另外一方程序的停滞。要知道人对声音的断续和游戏的卡顿是很敏感的。在Pygame中进行并行处理的主要手段,一是Pygame中的各种函数,大多是不等待工作完成,只要工作开始进行,就返回主程序,等待下一...
-
从零开始学习PYTHON3讲义(十四)《从零开始PYTHON3》第十四讲通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏。随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作。大多应用是利用Python开发效率高的特点,进行游戏原型验证,或者在大的游戏系统中,使用Python进行地图、场景等定制。还有就是使用游戏开发的技术和理念,将Python用于商业视觉展示、工程效果展示。 原...
-
从零开始学习PYTHON3讲义(十三)《从零开始PYTHON3》第十三讲网络编程的火热和重要性这里就不多说了,我们直接来看看Python在互联网编程方面的表现。Python有很多网络编程的第三方扩展包,这里推荐一个我认为最易用的:Flask。安装方法跟其它的包一样:#首先使用管理员模式执行cmd命令行,然后执行:pip install flask #某些系统是pip3 install flask网络编程基本知识我们直接以一个示...
-
从零开始学习PYTHON3讲义(十二)(内容需要,本讲使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客。)《从零开始PYTHON3》第十二讲上一节课我们主要讲解了数值计算和符号计算。数值计算的结果,很常用的目的之一就是用于绘制图像,从图像中寻找公式的更多内在规律。Python科学绘图科学绘图是计算机图形学的一个重要分支。同其它绘图方式相比,更简单易用,能让使用者把工作的主要精力集注在公式和算法上而不...
-
从零开始学习PYTHON3讲义(十一)(内容需要,本讲中再次使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客。)《从零开始PYTHON3》第十一讲第二讲的时候,我们通过Python的交互模式来入门Python基本知识。当时把Python当成了一个计算器使用。随后从第三讲开始,一直到第十讲,我们进入了编程的方式,并且不断的深入,到第九讲,我们已经完成了Python基本语言、语法部分的学习。每一讲都有大...
-
从零开始学习PYTHON3讲义(十)《从零开始PYTHON3》第十讲截至上一讲,我们已经完成了Python语言的基本部分。我们用了三讲来讨论Python语言的控制结构,用了两讲来介绍Python的基本数据类型。可以说仅就语法和语言关键字的部分来讲,当前所学已经足以完成大多数工作。由本讲开始,我们开始讲述一些经典的Python语言应用场景。以案例的形式为引导,学习如何使用Python解决具体问题。我们之前讲过的程序中,所有的操作...
-
从零开始学习PYTHON3讲义(九)《从零开始PYTHON3》第九讲第六讲、上一讲我们都介绍了列表类型。列表类型是编程中最常用的一种类型,但也有挺明显的缺陷,比如:data = [5,22,34,12,87,67,3,43,56,23]还记得让程序更友好的概念吗?上一条语句所定义的列表,我们没办法很容易的知道这些值代表什么、有什么用、附加什么样的操作对这个列表来说才有意义。在现实的场景中,往往应当是类似这样的情形,比如有一份学...
-
从零开始学习PYTHON3讲义(八)《从零开始PYTHON3》第八讲前面我们见过了不少的小程序,也见过了不少不同类型的变量使用的方法。但目前我们涉及到的,还都是单个的变量和单个的立即数。以变量来说,目前我们见到的,基本都属于“临时性”的使用。实际如果想发挥计算机的速度优势,还需要批量处理数据,这就需要有批量处理能力的变量类型,这就是我们下面要学习的列表类型。列表类型列表类型属于我们学习的Python基本数据类型中的第3种,...
-
从零开始学习PYTHON3讲义(七)《从零开始PYTHON3》第七讲人生是由无数个选择组成,每个选择都有不同的限定条件。现在来说人生有点早是吧:)不过事实的确是这样的。程序也充满着选择,满足不同的条件,则运行不同的运算。这些对不同运算的选择,则被称为分支,或者叫“条件分支”。在Python中,最简单的条件分支是这个样子(伪代码):if 条件: 满足条件时执行的分支条件不满足时,或者条件满足、执行完分支之后,会继续从这里开...
-
从零开始学习PYTHON3讲义(六)《从零开始PYTHON3》第六讲几乎但凡接触过一点编程的人都知道for循环,在大多数语言的学习中,这也是第一个要学习的循环模式。但是在Python中,我们把for循环放到了while循环的后面。原因是,Python中的for循环已经完全不是你知道的样子了。for循环以c语言为例,for循环几乎是同while循环完全相同的功能。在Python中,for循环经过全新的设计,实际只支持一个功能,当...
-
从零开始学习PYTHON3讲义(五)《从零开始PYTHON3》第五讲上一节课重点学习了字符串,并且传递了一个重要的理念,就是程序要对开发人员自己和用户都足够友好。在这个过程中,利用字符串给出充分、完整、准确的提示是非常重要的一部分。在Python可以处理的不同数据类型中,每种数据类型都有自己特色的运算方式,比如我们上一节课对比过的数字类型和字符串类型的运算:#数值的运算>>> 123*3369#字符串的运...
-
从零开始学习PYTHON3讲义(四)《从零开始PYTHON3》第四讲先看看上一讲的练习答案。程序完成的是功能,功能来自于“程序需求”(“需求”这个词忘记了什么意思的去复习一下第二讲)。练习的程序需求当然就是练习题本身。所以编程类的练习题通常并没有所谓标准答案,只要能完成功能,都应当是正确的。下面是一个参考:def speedXY(t): y=((12*4.5-t)/(4.5*5/3-2.5)) x=((t-5*y)...
-
从零开始学习PYTHON3讲义(三)《从零开始PYTHON3》第三讲 本页面使用了公式插件,因博客主机过滤无法显示的表示抱歉,并建议至个人主页查看原文。 我见过很多初学者,提到编程都有一种恐惧感,起源是感觉编程太难了。其实,难的也不过是开头第一步,所以中国有古话说,万事开头难。 一个人想得到别人的帮助,通常是同别人沟通,请求对方伸出援手。沟通的工具当然是语言,甚至可能还要加上晓之以理、动之以情的表情、手势。比较而言,请计...
-
从零开始学习PYTHON3讲义(二)《从零开始PYTHON3》第二讲上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3。Windows则从开始菜单中去寻找IDLE程序的图标。上一讲我们还见到了Python的两种工作模式,交互模式和程序模式。通常在一个大型的系统中,程序模式是必然的选择。因为一个完整的项目,都需要大量的准备工作。为很多运算的必要条件准备最初的值(专有...
-
从零开始学习PYTHON3讲义(一)课程名称 从零开始PYTHON3 课程长度 15讲 适用年龄 15-20岁(初三-大一) 本讲名称 认识Python 时长 90分钟 教学内容分析 ...
-
Angular7那些不得不说的事故题外话 最近简直要忙死,所以停更了很久,你们会不会以为我人间蒸发了? 正文之前,请允许我先跑个题,就是关于忙的问题。 做了Freelance,每天过的比上班还累,这完全不是我想要的生活啊?所以痛定思痛,需要检讨一下自己: 首先仍然是目标,工作需要确定目标,生活也是一样的。如果你的目标是做一番事业,那不得不说,忙才是正常的状态。如果觉得累了,希望生活和工作能有一个平衡,那就要下决心改变...
-
Python和C++的混合编程想要享受更轻松愉悦的编程,脚本语言是首选。想要更敏捷高效,c++则高山仰止。所以我一直试图在各种通用或者专用的脚本语言中将c++的优势融入其中。原来贡献过一篇《c++和js的混合编程》也是同样的目的。 得益于机器学习领域的发展,Python最近一直维持热度,但Python的速度,比node.js都差距不小,所以使用c++来提高一些速度更有必要。 编写Python的扩展模块已经有不少的...
-
为OPENCV添加freetype支持并显示中文字符在mac电脑上管理这些gnu的库一般都使用Homebrew,但总有一些你个性化的需要是官方的Homebrew配方无法满足的。比如在屏幕的输出中使用中文字符。 在OPENCV中输出UTF8字符集早已经有人完成过类似的工作,方法是使用freetype的支持,程序中选择使用的字库,从而在屏幕上输出任意的字符。但官方的Homebrew OPENCV的配方中,并不包含freetype的支持。这时...
-
OpenProject基础使用介绍所有的活动都可以看做一个项目来管理。在企业中更是这样。 所以项目管理平台,对于任何一个高科技企业来讲都是必不可少的。 OpenProject(以下简称OP)就是一个不错的项目管理平台,软件开源,文档齐备。对于大多中小型公司来讲,免费版也已经足以满足工作要求。最新版本的OP还对手机小屏幕的浏览进行了优化,完全可以做到使用手机对项目进行管理。建立账号 作为企业管...
-
小经验:macOS上VPN无效的处理首先声明哈,VPN是一种很规范的应用方式,在很多企业应用中都必不可少,我这里可不是教你翻墙的意思。某日到一个客户公司去办事,客户的公司上网控制非常严格,上外网都需要拨号到给定的VPN才允许。但在我的苹果本上设置正常、拨号正常、各项网络测试也正常,仍然上不了外网。打开终端,命令行使用netstat -r查看,得到类似如下信息:macbookpro13 ~> netstat -rRouti...
-
在越狱的iPhone上安装自开发环境自开发跟自编译意思一样,后者表示一个开发语言的开发能力成熟度;前者则表示一个开发平台的开发能力成熟度。iPhone跟iPad面世这么多年,一直无法摆脱“娱乐”工具的宿命。Apple曾经希望通过iPad Pro为平台增添“生产力工具”的特征,但看起来成效不大。而竞争对手的Surface Pro,虽然娱乐性不足,但没有人否认Surface Pro是一个优良的生产力工具。在实用上,iPad跟Sur...
-
把路由器改装成git服务器在单位中,通常都标配了git服务器用来管理代码。对于家庭或者小办公室,这种方式有点不经济。当然如果是开源项目就简单了,刚刚被微软收购的github是理想选择。但如果没有打算开源,我今天的话题可能对你有用。我就属于喜欢在家中干活的那一类,以前常年开着一台电脑做下载,最近改了这个坏习惯。但是没有了长期开机的设备,也就没有了git server。趁着周末,把一台老的路由器改了改,当成git ser...
-
解决vs-code高cpu占用率问题免费的vs-code现在已经成为mac/linux平台的码农新宠,毕竟从windows平台开发virsul studio多年的经验积累不是白给的。我也从诸多的代码编辑器环境,逐渐迁移、统一到了vs-code。最近发现一启动vs-code,风扇就呼呼转,才开始还没注意,以为微软的Windows中二病做派再次发作了。后来逐渐感觉系统响应速度严重下降,仔细检查发现是一个进程CPU占用高企不坠:mi...
-
简单上手nodejs调用c++因为项目的原因,最近经常使用node.js搭RESTful接口。性能还是很不错啦,感觉比Spring Boot之类的要快。而且在不错的性能之外,只要程序结构组织好,别让太多的回调把程序结构搞乱,整体开发效率比Java快的就太多了。如果想进一步提高效率,使用c++来优化部分模块是不错的选择。尤其可贵的是nodejs对于同c++的混合编程支持的很好,个人感觉跟写Python的扩展模块处于同样的易...
-
代理自动配置文件PAC的使用方法我通常上网使用两个浏览器,safari用于一般上网;Chrome安装SwitchyOmega插件,在不同的代理中切换,来保证某些网站的上网速度。但是这种方式到了手机上就有点懵,几乎所有的iPhone浏览器都不支持代理的自动切换和设置,所以只能选一个相对兼容性比较好的网络方式一直用下去。很不爽利。。。后来发现代理自动配置文件PAC是个好东西,跟SwitchyOmega类似,能够比较智能的切换所...
-
给apt设置代理的正确姿势为什么设置代理,你懂得。有很多第三方工具可以用,比如proxychains,非常好用,不过今天这不是正题。因为有可能没有代理,上网你都做不到,更别提下载软件了。想一想方法还是告诉你,免得你万一必须用:sudo apt install proxychains通常有三种办法为apt设置代理,有了代理能上网之后,apt才能为你带来其它软件的帮助。 设置环境变量,如果想为所有用户设置,可以编辑/e...
-
让我来为“区块链”添把火1这次我不是来灭火的,我觉得现在为炙手可热的区块链添一把柴正是时候。在大多数人的概念中,区块链就是比特币。了解多一点的,可能还会说起来现在充斥于各交易所形形色色的虚拟货币。然后接下来一句可能就是:暴跌啊,惨不忍睹…如果仍然只是把“区块链”跟“虚拟货币”联系在一起,我想你对区块链的认知,不过还停留在入门阶段。 先说结论,区块链的技术,和技术即将带来对业界的冲击,将会是互联网出现以来最大的一次...
-
Metal并行计算本来Cuda用的挺好,为了Apple,放弃Cuda,改投OpenCl。好不容易OpenCl也算熟悉了,WWDC2018又宣布了Metal2,建议大家放弃OpenCl,使用Metal Performance Shaders。Apple是一个富有“革命性”创新力的公司,很多创新,会彻底的放弃原有的积累。不断带来新能力的同时,也让人又爱又恨。下面是一个例子,用于演示如何使用Metal+Shader...
-
《连连看》算法c语言演示(图片是游戏的示意图,来自互联网,与本文程序无关)看题目就知道是写给初学者的,没需要的就别看了,自己都觉得怪无聊的。很多游戏的耐玩性都来自精巧的算法,特别是人工智能的水平。比如前几天看了著名的Alpha GO的算法,用了复杂的人工智能网络。而最简单的,可能就是连连看了,所以很多老师留作业,直接就是实现连连看。连连看游戏的规则非常简单: 两个图片相同。 两个图片之间,沿着相邻的格子画线,中...
-
Grapher--寂寞无名的神器承自上一篇中的函数图形,有人问,能不能别把画个图搞那么复杂,我说当然,只要你有一台mac。话说出来很潇洒的样子,充斥着一股迷之自信。可能这就是mac用户典型的特征,尽管也许并没有那么值得骄傲。其实在上一篇中我见到照片的时候就看出来用的是什么软件了,mac内置的grapher。grapher的诞生还有一段荡气回肠的“硅谷往事”,是一个令我汗颜而又激励我努力的故事。故事英文原文请看:http:/...
-
就算会用python画颗心,可你依然还是只单身狗:) 标题是开玩笑的,千万别认真。随着AI的飞速发展,有志于此行的码农也是急剧的增加,带来的就是大家对算法、数学的兴趣也格外升高。本文的来历是这样,今天某老同事在朋友圈发了一张屏拍,求公式。看了一下还是难度不大,上半部分基本是两个半圆,下半部分是两个旋转了的反余弦函数。不过我的数学也比较渣,看到这个步骤后面也就倒腾不清了,不过到这种程度在互联网上搜一搜找到答案还是不难的,很快就找到了正确的公...
-
一条命令解决mac版本python IDLE无法输入中文问题安装完Python通常自动就有了一个简易的集成环境IDLE,但在mac上,无法在IDLE中使用中文。通常故障有两种情况: 在IDLE中,中文输入法根本无法工作,不会弹出输入框,所有的输入都被当做英文对待。这种情况是由于IDLE使用了Tkinter 图形库,Tkinter使用的依赖库Tcl/Tk,在macOS中已经有了一个较低的内置版本,这造成了中文无法输入的问题,解决办法可以重新安装使用高...
-
RS232串口的Windows编程纪要再次是一篇入门文,各路神仙退散。直接进入主题,又不是历史课,关于RS232那些前世今生的故事就不摆了。硬件链接首先以9针小口为例(大口应当只能去博物馆看了吧)看一下管脚排布,其实RS232本身没进博物馆都已经够让我惊讶了。(图片来自互联网)通常使用的接线图:(图片来自互联网)硬件接口部分的重点: 绝大多数情况下,我们只需要接2号、3号、5号,RXD/TXD/SG三根线就能正常工作。(顺便多...
-
在龙芯小本上安装Debain8.10(图片是LEMOTE8089D笔记本,来自互联网)YX原来送了一个LEMOTE笔记本给我。CPU是首款真正的国产,龙芯2F,兼容mips的指令集。笔记本原来的操作系统是Debian6,后来升级到了7,随后一直是当做玩具放着。最近因为中兴受制裁的事件又想了起来,拿出来尝试看能做点什么。首先做了常规升级,结果完成后重启动,笔记本直接挂了。随后只好重新安装,因为笔记本出品时间比较长了,厂家似乎也业...
-
NMF学习练习:做电影推荐NMF是很久以前学的,基本快忘没了,昨天YX提出来一个关于NMF(同音同字不同义)的问题,才又想起来。自己的学习笔记写的比较乱,好在网上资料多,摘了一篇,补充上自己笔记的内容,留此助记。NMF概念出现的比较早,差不多在电脑还没有开始繁荣起来,NMF及相关的一些算法已经很成熟了。NMF用在电影推荐、商品推荐也并不是很适合,现在大多使用SVD之类的算法。不过这篇只是学习的记录,有个例子总比枯燥的...
-
mac用户丢失管理员身份急救用了这么久mac,发现居然还存在这么大一个bug。就是如果你曾经编辑mac电脑默认用户资料,比如试图改用户名、试图改HOME路径之类的,有很高比率可能导致该用户丧失管理员权限。随后悲剧就开始了,所有需要管理员权限认证的地方,比如安装了一个新软件,在弹出的认证窗口中,无论如何输入用户名和密码,都无法授权通过。此时在系统设置->用户及用户组中,会发现该用户选项卡中“允许用户管理这台电脑”前...
-
mac电脑进行可见光通信实验要点lifi作为一个入门门槛低、涉及范围广的实验,在理工高校中还是比较流行的。通常实验分成3个部分,字符数据传输实验、音频传输实验、视频传输实验。在官方的实验指南中指定使用win7x64或者win xp来进行。老话题,这里说在mac怎么进行实验。音频传输、视频传输实际跟电脑没关系,只要保证usb供电即可,找两个手机的usb充电器就足够了。第一部分的实验则是使用了usb转串口卡,这个重点是安装ma...
-
python scrapy 入门在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫。的确,有着丰富第三方库的python很适合干这种工作。Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍然有很多爬虫需要自己编写大量的代码,但能够有一个相对全面均衡的基础框架,工作还是会少许多。框架安装不好意思用别人网站作为被爬取的例子,下面从头开始,以本站为例,开始一个简单的爬虫之旅。因为习惯原因...
-
大恒工业相机多实例使用工作环境比较恶劣并且有较多干扰源的环境做视觉识别一般都使用工业相机,大恒水晶相机是比较常用的一种。比起来进口相机,虽然用起来会更麻烦,但好在价格便宜,各项指标也不低。大恒水晶相机是提供SDK的方式跟OPENCV类的系统做集成,还做不到像很多进口相机一样直接就有了系统级的驱动,这方面的资料还是不少的,下面是在网上摘的一个例子:(来源)// test.cpp : 定义控制台应用程序的入口点。//...
-
图像识别基本算法之SURF图像识别、人脸识别可行的算法有很多。但是作为学习,如果能理清这个问题研究的历程及其主线,会对你深入理解当前研究最新的发展有很多帮助。本文是自己在学习过程中的笔记,大多内容来自于网络,出处请参考最后的引文部分。Sift算法Sift算法是David Lowe于1999年提出的局部特征描述子,并于2004年进行了更深入的发展和完善。Sift特征匹配算法可以处理两幅图像之间发生平移、旋转、仿射变换情...
-
macOS的OpenCL高性能计算随着深度学习、区块链的发展,人类对计算量的需求越来越高,在传统的计算模式下,压榨GPU的计算能力一直是重点。NV系列的显卡在这方面走的比较快,CUDA框架已经普及到了高性能计算的各个方面,比如Google的TensorFlow深度学习框架,默认内置了支持CUDA的GPU计算。AMD(ATI)及其它显卡在这方面似乎一直不够给力,在CUDA退出后仓促应对,使用了开放式的OPENCL架构,其中对C...
-
量子计算及量子计算的模拟IT是一个繁荣的行业,寄托着无数人的梦想,充斥着无数的造梦神话。IT是一个悲催的行业,层出不穷的新概念让人应接不暇,几乎只要有一天不学习,都可能让你寝食不安。量子计算机是一个炒的比较热的概念,目前还处于上升期,感觉上已经到了爆发的边缘,似乎随时可以呼之欲出。通常对于量子计算机的理解就是,因为量子计算机的存储特征,可以处理很大的数据,而不是像传统计算机那样只是处理1、0二进制数,因此计算效率更...
-
iPhone多次输入错误密码锁机后恢复这个操作会完全丢失手机当前存储的资料,已经备份到iTunes的内容,将来可以通过iTunes恢复。已经被自动备份到iCloud的内容,比如通讯录,将来可以自动从iCloud恢复。以前没有备份过的资料,现在已经无法再备份。 如果有发票,只是丢失了包装,还是可以尝试网上预约苹果店天才吧尝试官方恢复。主要是尽力证明手机确实是自己的,不是捡的、不是偷的。 再次说明,手机刷机后原内容会丢失,确...
-
Mac版AppStore无法下载、升级错误处理在mac版本AppStore下载软件的时候,有时会出现“This item is temporarily unavailable, Try again later”错误提示,当然等一会儿或者不断重新尝试都是无法下载的。StackOverFlow上找到一个解法:Mac App Store –> Store –> Check for Unfinished Downloads…通常是因...
-
在Mac上使用vs-code快速上手c语言学习天下事,合久必分、分久必合,你肯定想不到当你逃离到Mac平台这么多年之后,有一天你会再用微软的产品来写代码 :)其实微软的产品虽然用户体验总是做不到最好,但整体上的确拉低了行业的进入门槛,对于编程也是这样的。Seven的c语言课程,老师选择的是vc6,但总不能为了使用vc6,又回到那个我们曾经无爱的世界。其实Xcode已经足够好了,足以支撑从入门到专家各个阶段的需求。不过对于入门者来说,还是...
-
在Mac上使用远程X11应用XWindows太老了,历史比Windows和Linux的开发时间都长,以至于很多人每天实际在用,但已经不知道它的存在。XWindows目前是Linux/类Unix系统上的标准显示配置,QT/GTK等架构也是基于XWindows的。所以通常也有很多人只关注占领桌面市场的Windows,对于败退在边缘的XWindows完全嗤之以鼻。其实只从GUI层面上来对比Windows和XWindows是不...
-
Docker for mac上使用Kubernetes本文成文较早,当前已经有更好的解决办法,请参考:https://github.com/AliyunContainerService/k8s-for-docker-desktop(此下为原文)通常开发都是使用单机版的Docker环境,不太操心Docker集群的事情。而在这种单机环境下,命令行操作Docker觉得很好用了,如果碰到解决不了的问题,还有脚本,如果说有什么事是一个脚本解决不了的。。。...
-
那些令人惊艳的TensorFlow扩展包和社区贡献模型随着TensorFlow发布的,还有一个models库(仓库地址:https://github.com/tensorflow/models),里面包含官方及社群所发布的一些基于TensorFlow实现的模型库,用于解决各式各样的机器学习问题。很多任务,在其中都能找到相同或者近似功能的实现,这时候无需编程或者只要很少的编程,就可以在已有模型的基础上建立自己的人工智能应用。而且models的更新...
-
swift异步调用和对象间互动修改原来一个程序的时候,需要从定义于另外一个类中的后台进程调用回AppDelegate类中的一个方法,然后方法中调用evaluateJavaScript来通知JS子程序做页面的变化处理。功能很简单,但实现后到调用evaluateJavaScript的时候总会出现崩溃,而这个功能以前肯定是正常的。首先想到在后台进程中偷懒使用了AppDelegate().methodName()这种方式,虽然通...
-
将dylib库嵌入macOS应用的方法![]/attachments/201802/sun1.jpg)写作是一种习惯,稍微松懈,也许失去的就很多。过了一个年,居然很多天都没有更新,幸福的代价吧:)标题的问题其实以前碰到过,不过当时在iOS,所以随手处理了没有重视。而这次是在macOS,所使用的库,本身已经用brew安装过,所以本机调试没有发现这个问题。等到拷贝到用户的机器上,突然发现程序无法启动,查看log才发现库没有找到。而实...
-
macOS使用内置驱动加载可读写NTFS分区macOS插入NTFS格式的U盘,都会自动加载为只读格式,拷贝文件出来没有问题,写文件就不允许了。流行有两个商业软件可以将NTFS格式的U盘加载为读写模式,它们是:Paragon NTFS for Mac和Tuxera NTFS for Mac,很像的两个软件,很好用,但也都是收费的商业软件。实际上macOS的内置NTFS驱动支持读写模式,只是容错性不佳,网上有过在macOS读写NTFS分区...
-
mac应用启动时卡死在“验证...”macOS的应用安装很简单,通常是把.app应用拷贝到/Applications文件夹就算安装完成。但也经常有几个小坑,最常见的要数无法启动或者报错应用已损坏再不就是闪退。在10.13版本以后通常在系统设置->安全设置->通用中,最下面会有一个选项允许xxx.app运行,确认允许即可。在10.12以前的版本,则是有三个选项,允许运行来自:App Store/可识别的开发者/任意来...
-
CrossOver和wine不同于Docker和虚拟机,诞生于Windows尚且一家独大的年代,wine是一个在Linux/Mac上面运行Windows应用的选择。当然从诞生开始,对wine的诟病就不曾中断,主要来自于较低的运行效率和不良的兼容性。事实上,wine是一个天才的项目和被严重低估的产品。在官网的说明中,wine是“Wine Is Not an Emulator” 的递归缩写。其实这已经把wine的出身说的很...
-
MarkTo be aware of awareness is the way to Heaven.
-
GreenPlum无法远程访问解决通常GreenPlum都是安装在Centos上,结果安装完发现远程无法连接,在本地是可以正常访问的。测试是否可以连接可以使用psql工具:psql -h 192.168.1.200 -p 5432 -d dw_oems -U gpadmin -W #默认密码一般也是gpadmin或者admin如果不能连接,可以先使用netstat测试一下:#列出当前主机所有tcp监听端口netstat...
-
rinetd:轻量级Linux端口转发工具新的微服务理念下,网络端口映射从来没有像今天一样被如此频繁的应用。在正式的生产环境中,HAPROXY或者NGNIX反向代理基本已经成为软件方案中事实上的工业标准,硬件路由器的NAT方式则是硬件方案中的普及应用。但是在开发环境中,这些通常的工具还是太重了,维护起来也有些麻烦。rinetd是一个好选择,安装容易,配置简单,兼容性也还不错。我在使用中只发现过碰到上G的大文件直接sftp协议传输碰到...
-
Ubuntu16包依赖故障解决Linux一个令人赞叹的优点就是浩如烟海的开源软件。工作中碰到的大多数问题,往往都能找到一个优秀的开源软件包来解决,从而节省了自己从头开发的时间和金钱。然而也带来了一个附加问题,大量依赖前人成果的后续开发,导致层层叠叠俨如梦魇的包依赖,很多初入门的Linux新手折戟于此。当前已经有很多的的包管理工具来简化这一切,比如Centos中的yum,又比如Ubuntu中的apt。都已经默认就安装在各自...
-
iNode环境Windows 10配置固定IP地址搬家之后,上网有了一个安全认证,使用的是H3C的iNode。软件是个好软件,不过功能上做的比较死板。比如说,已经不支持静态IP。对于通常的办公室没有问题的,对于研发类的员工就费劲了,每次重启都要修改一堆的设置,来保证多台实验设备之间的互联。这事儿也赖MicroSoft,系统设置中本来是支持多个IP地址设定的,但只要使用了DHCP就不再支持多IP的工作方式。所以就跟通常一样,Linux/Mac...
-
Ubuntu 16.04.03 LTS 安装CUDA/CUDNN/TensorFlow+GPU流水账安装CUDA和CUDNN重要的事情先说: CUDA对内核各版本依赖度非常高,随后的TensorFlow等编译时间也比较长,所以建议先安装本设备需要的其它软件系统。之后就关闭apt的自动更新,避免系统更新后CUDA不能使用。以当前cuda_9.1.85_387.26为例,经测试只能支持到内核版本4.10.0-28-generic。已经升级到新版本的,请使用apt卸载,比如: sudo ...
-
resource fork, Finder information, or similar detritus not allowedXcode编译swift项目报如题错误。 网上有介绍是使用photoshop等软件处理的图片附加了Xcode不识别的信息,可以在终端中查看,比如如下: $ ls -alF@ *-rw-r--r--@ 1 andrew staff 179578 Jan 29 10:07 hsk_slpah.png com.apple.FinderInfo 32 com.apple.las...
-
macOS webview编程好像是macOS10.10之后,以及iOS8之后,新出现的WKWebview组件就迅速的替代了Webview及UIWebView。后者的确存在一些无法解决的bug,诸如架构导致的速度缓慢和内存泄漏。但无法避免的问题总是有的,比如有些客户端软件,仍然要求兼容老版本的系统,这时候,很不想使用,但也不得不仍然把Webview塞到自己的代码中。互联网是个喜新厌旧的圈子,网上搜索,几乎只有两类。一是W...
-
新麦装机问题汇虽然是mac老司机,但每次装机总会碰到一些小问题需要临时上网搜索一下解决方案,所以留下些文字备忘一下: 研发用的新机最好选择语言用英文版,中文版通常的使用没问题,但很多的地方的翻译都不准确,而且有一些测试不充分的BUG。比如我曾经碰到过配置IP地址,多个IP地址之间应当是用英文分号分割,结果也变成了中文分号,新版本虽然修改了这个BUG,但类似小问题经常还是会有。 Xcode优先安装,后面...
-
比特币核心算法ECDSA电子签名在线演示上一篇中说过,ECDSA是BITCOIN的安全性核心,保证了任何人发布的信息不可篡改。而区块链,只是保证了每个人发布合法信息的权利。电子签名说了这么久,很多人也在无意识间使用过,但仍然不知道电子签名到底是怎么回事,这个页面就做一个真正、实际上的ECDSA签名算法的演示。电子签名算法有很多种,ECDSA并不是最先进的,只是随着比特币和区块链一起沾光走红而已。==================...
-
从锅炉工到AI专家(11)(END)语音识别TensorFlow 1.x中提供了一个语音识别的例子speech_commands,用于识别常用的命令词汇,实现对设备的语音控制。speech_commands是一个很成熟的语音识别原型,有很高的正确率,除了提供python的完整源码,还提供了c/c++的示例程序,方便你移植到嵌入设备及移动设备中去。官方提供了关于这个示例的语音识别教程。不过实际就是一个使用说明,没有对代码和原理做...
-
gem update 升级错误解决挺少用gem update,因为我基本不怎么用ruby,本博的维护使用jekyll,似乎就躲不开了。今天运行sudo gem update --system得到报错信息:ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)ERROR: You must add /O=Di...
-
比特币核心概念及算法bitcoin项目地址位于github仓库,当前各种“币”,基本都是从抄写bitcoin代码开始起步的。想要深度研究,从看源码开始不可避免。 P2P:电骡、迅雷、BT,在中国网络影视的发展让大家对P2P很熟悉,可能已经没有人记得比特币实际上是第一批P2P的实践者。所有交易记录在全网通过P2P的方式广播,每个人都保存一份完整的交易记录。所以也叫去中心化。 去中心化:bitcoin的去中心化...
-
从锅炉工到AI专家(10)RNN循环神经网络(Recurrent Neural Network)如同word2vec中提到的,很多数据的原型,前后之间是存在关联性的。关联性的打破必然造成关键指征的丢失,从而在后续的训练和预测流程中降低准确率。除了提过的自然语言处理(NLP)领域,自动驾驶前一时间点的雷达扫描数据跟后一时间点的扫描数据、音乐旋律的时间性、股票前一天跟后一天的数据,都属于这类的典型案例。因此在传统的神经网...
-
Python2中文处理纪要python2不是以unicode作为基本代码字符类型,碰到乱码的几率是远远高于python3,但即便如此,相信很多人,也不想随意的迁移到python3,这里就总结几个我平常碰到的问题及解法。 文件中无法使用中文注释处理方法:在代码中增加# -*- coding=UTF-8 -*-,一般加在文件头部第一行,如果第一行是脚本标志,则放在第二行(实际仍然是python正本的第一行)。随...
-
从锅炉工到AI专家(9)无监督学习前面已经说过了无监督学习的概念。无监督学习在实际的工作中应用还是比较多见的。从典型的应用上说,监督学习比较多用在“分类”上,利用给定的数据,做出一个决策,这个决策在有限的给定可能性中选择其中一种。各类识别、自动驾驶等都属于这一类。无监督学习则是“聚类”,算法自行寻找输入数据集的规律,并把它们按照规律分别组合,同样特征的放到一个类群。像自然语言理解、推荐算法、数据画像等,都属于这类(...
-
从锅炉工到AI专家(8)ImageNet基础部分完成,从本篇开始,会略微的增加一些难度。通常说,在解决问题的时候,大多程序员都会在网上搜索,寻找一些相似相近的案例作为参考。这个方式在机器学习领域同样有效。可惜早期的时候,各公司的保密还是做的比较严格,时至今日有了很大改善,但在整个IT行业中,机器学习领域,各公司的研发成果保密仍然是最严重的。因此,ImageNet对机器学习的推动更是难能可贵和功不可没。在机器学习尚处...
-
从锅炉工到AI专家(7)说说计划不知不觉写到了第七篇,理一下思路: 学会基本的概念,了解什么是什么不是,当前的位置在哪,要去哪。这是第一篇希望做到的。同时第一篇和第二篇的开始部分,非常谨慎的考虑了非IT专业的读者。希望借此沟通技术人员和产品人员,甚至管理和销售人员。我信服“上下同欲者胜”,所以也非常害怕因为大家对概念完全不同的理解而影响到团队的合作。 从最简单的部分入手,由概念到代码,完成技术破冰。这是第二、三...
-
从锅炉工到AI专家(6)欠拟合和过拟合几乎所有的复杂方程都存在结果跟预期差异的情况,越复杂的方程,这种情况就越严重。这里面通常都是算法造成的,当然也存在数据集的个体差异问题。所以”欠拟合“和”过拟合“是机器学习过程中重要的调优指标之一。如图所示:以篇(2)中房价的程序为例,上图中间的那幅图,是比较满意的一种结果。对于我们给出的所有样本,模型的预测结果同实际房价比较贴切的“拟合”。左图则是“欠拟合”,有些样本和房价能...
-
从锅炉工到AI专家(5)图像识别基本原理从上一篇开始,我们终于进入到了TensorFlow机器学习的世界。采用第一个分类算法进行手写数字识别得到了一个91%左右的识别率结果,进展可喜,但成绩尚不能令人满意。结果不满意的原因,当然还是算法太简单了。尽管我们都已经接受了“所有问题都可以用数学公式来描述”这个观点,但直接把一幅图片展开的784个数字作为方程式参数进行一个线性运算+非线性分类器就叫做“人工智能”怎么都感觉那...
-
从锅炉工到AI专家(4)手写数字识别问题图像识别是深度学习众多主流应用之一,手写数字识别则是图像识别范畴简化版的入门学习经典案例。在TensorFlow的官方文档中,把手写数字识别“MNIST”案例称为机器学习项目的“Hello World”。从这个案例开始,我们的连载才开始有了一些“人工智能”的感觉。 问题的描述是这样:有一批手写数字的图片,对应数字0-9。通过机器学习的算法,将这些图片对应到文本字符0-9。用通...
-
Octave Fontconfig报错解决mac系统Octave运行一直挺好,今天执行一个程序的时候出现警告信息:Fontconfig warning: ignoring UTF-8: not a valid region tag检查运行情况,发现是程序中的绘图部分没有出来,并且给出了这个警告信息。Octave的绘图使用gnuplot,从报错提示上看应当是绘图时字体的渲染部分,因为mac上语言代码设置使用了UTF-8不能正常识别导致...
-
5分钟搭建一个quic服务器副标题是不是好气人啊:)其实没有歧视linux的意思,在Mac上的确5分钟可以搭建一个quic服务器。在Linux环境配置略微麻烦,10分钟也够了,五十步跟百步的区别。QUIC协议不多解释了,网上搜有很多资料,被认为是下一代的主流互联网访问协议。你需要记住的只有一个字:“快”。使用Chromium的quic插件编译一个服务器端很啰嗦,因为它自己以及很多的依赖包都是被墙掉的,下载会让你愁白几根...
-
从锅炉工到AI专家(3)剖析第一个例子学习《机器学习》,很多IT高手是直接去翻看TensorFlow文档,但碰壁的很多。究其原因,TensorFlow的文档跨度太大了,它首先假设你已经对“机器学习”和人工智能非常熟悉,所有的文档和样例,都是用于帮助你从以前的计算平台迁移至TensorFlow,而并不是一份入门教程。所以本文尽力保持一个比较缓慢的节奏和阶梯,希望弥合这种距离。本文定位并非取代TensorFlow文档,...
-
从锅炉工到AI专家(2)大数据上一节说到,大多的AI问题,会有很多个变量,这里深入的解释一下这个问题。比如说某个网站要做用户行为分析,从而指导网站建设的改进。通常而言如果没有行为分析,并不需要采集用户太多的数据。比如用户注册,最少只需要用户名、用户密码就够了。随后比如为了当用户过生日的时候,自动给用户发送一封贺卡(潜台词,我们可能需要给用户推送广告),我们再增加两项生日日期和邮箱地址。再下来国家规定网站注册必须实名...
-
从锅炉工到AI专家(1)序言标题来自一个很著名的梗,起因是知乎上一个问题:《锅炉设计转行 AI,可行吗?》,后来就延展出了很多类似的问句,什么“快递转行AI可行吗?”、“xxx转行AI在线等挺急的”诸如此类。其实知乎原文是个很严肃的问题,很多回答都详尽、切题的给出了可行的方案。AI的门槛没有很多人想象的那么高,关键在于你是满足于只是看几个概念就惊呼“人工智能将颠覆xxxx行业,xxxx人将失去工作”、“人工智能将会...
-
解决本博客在手机浏览器拖动卡顿问题(图文无关)本博使用了从网上分享的模板,一直还是很满意的。为了增加功能,中间经过了几次小的修补,这不,这就又来了一次。起因是在微信上给朋友分享了一篇博文,自己看的时候,博文挺好,模板页面一看就专门考虑了小尺寸屏幕的适配,基本是尽力保持了看上去优雅的设计。但是到了首页就碰到了麻烦,因为屏幕尺寸,所以每一行只能显示一个博文块,向上拖动滚屏的时候,总是卡,也就是手指在页面上拖动操作,页面并没有产生...
-
OpenCV中的照片剪裁照片处理的三大基本操作中,照片剪裁是这系列三篇博文中的最后一篇,但是图像处理中应当首先要做的操作。原因很简单,随着数码相机、摄像机分辨率的增加,现在一张照片几十M的容量已经很常见,先进行裁剪,剩下的部分就会小,后续的处理就能快一些。换一个说法,画面中有一些部分无论如何是你不想要的,那还对那些无用的部分做很多处理干啥?关于照片处理三大基本操作的说法,很久之前我有一篇文章《简单2步,P出美图》,...
-
OpenCV中的亮度对比度调整及其自动均衡问题亮度对比度的调整是视频、图像处理中另外一种常用的基本操作。通常的情况是,无论原图多么好,习惯上,总是会亮度、对比度调整一下,看看是不是会更满意。其实这带出了一个基本问题,那就是,亮度对比度调整有没有依据?到什么样算好?作为一个码农最常见的方式是直接把代码贴到这里就算完成了。但是我一向认为,“知其所以然”可能更重要,因此请稍等,让我把原理先解释一下,现在耽误一点时间,将来也许你会跑得更快。...
-
Mac电脑C语言开发的入门帖本文是写给Mac电脑开发新手的入门帖,诸神请退散。C语言C语言可说是电脑环境中的“镇国神器”,从发明至今,虽然C语言的使用者缓慢的减少,但从当前市场应用情况看,尚无一台电脑能够摆脱C语言的支撑而生存。此外由于大多数主流操作系统都主要使用C语言编写,使得C语言跟操作系统结合最为紧密,从而更容易对整体电脑深入了解。所以对电脑相关类专业的学生,C语言仍然是必修课。最后就是近几年,随着物联网、嵌入式...
-
如何看到微信小程序的源码首先要说,按照中华人民共和国著作权法,逆向工程看别人源码是不合法的,所以请仅限于个人学习。另外一个角度来说,HTML/JS本身的开源特质,也是在鼓励大家互相交流、沟通和共同的进步。从这个角度上说,非技术限制所导致的人为对源码进行封装、隐藏网页源码,似乎也不那么令人信服。如题,这件事情要分为两步:1.拿到小程序软件包。有两种方法可以建议,一是使用抓包工具获取网络数据记录,所有的软件包应当是ht...
-
使用人工辅助点达成更优白平衡图像处理中,白平衡是最常用的一种手段。原因无非是使用数码摄影之后,CCD或CMOS的成像因为与生俱来的电初始化特征,缺少了胶片成像的中立性。即便是胶片成像,因为环境色温的不同,也会对最后的成像有很多颜色方面的影响。一般在数码相机和常见的图像处理软件中,都提供了自动白平衡功能,用于自动化的把照片进行校色,使得最终的成像颜色更接近自然。而这些算法中,最多采用的是平均测光白平衡算法。也就是遍历整个...
-
不使用插件建立jekyll网站sitemap作为一个网站,加强搜索引擎的优化,俗称SEO优化总是很重要的事情。而重要手段之一就是建立自己网站的sitemap.xml。原本jekyll有一个插件:jekyll-sitemap,但到了jekyll3.5版本以后,居然取消了,我还曾经奇怪为什么。直到后来发现,的确这个插件也没有什么太大的必要。其实建立自己的sitemap.xml非常容易,不过就是在根目录增加一个sitemap.xml文件,其...
-
safari11如何访问自签名https网站从Safari11开始,无法访问自签名的HTTPS网站了。原来访问这样的网站,会弹出来一个警告页面,大意是这个网站签名证书无法验证,有安全风险,然后用户可以选择继续访问这个不安全的站点,从而访问自签名的HTTPS网站。但是自从Safari升级到11之后,访问此类https网站只会报错说无法建立可靠连接,网页内容已经无法访问。尚不知道这是Safari的BUG还是苹果有意为之,从IOS的发展上看...
-
赶个时髦,给自己的博客添加一个微信二维码现在用的这个JellyBlog模板在最下面有自己的联系方式,原来是三个:EMail/Github主页/微博,现在微信这么火,计划增加一个微信的联系方式,想到就动手吧。微信不像别的社交软件联系方式,直接给出个账号来让用户输入肯定是体验太差,所以比较好的办法,扫码加微信。而二维码小了影响用户拍照扫描,大了,会影响屏幕紧张的空间。所以点击微信图标后,弹出一个对话框,对话框中有大尺寸的微信二维码供用...
-
被Docker/VMWare宠坏的孩子们,还记得QEMU吗?这是一个云端的年代,这是一个虚拟化的年代。当我们幸福的置身其中的时候,也不得不痛苦的怀疑自己的感官和思想,真和假,虚和实,谁又能分得清。时至今日,几乎没有一台服务器不是用虚拟化的方式管理和维护了。每个人的电脑上,VMware虚机或者Docker组成的诸多大大小小、错综复杂的微服务容器已经充斥生活。还有人记得QEMU吗?QEMU是虚机鼻祖式的应用,正是从QEMU开始,虚拟化、云服务才一日紧似一...
-
在网页显示数学公式网页显示数学公式不是一个大问题,问题的关键是要易用、兼容性好。兼容性好有两个评价标准,一个是支持常见浏览器,另外一项则是支持业界文档最常用没有之一的Latex语法。这里推荐的MathJax就算不错的选择,官网地址:https://www.mathjax.org。使用方法首先引入js库:<script src="https://cdn.bootcdn.net/ajax/libs/math...
-
使用SDL2显示一张图片SDL全名Simple DirectMedia Layer,是一个跨平台的底层音频、视频、键盘、鼠标操作库,操作实际通过更底层的OpenGL/Direct3D完成,在保留跨平台的兼容性之外提供了非常高的效率,所以广泛的应用在多种游戏和对速度敏感的应用中,比如鼎鼎大名的steam平台/ffmpeg/qemu/模拟器等,当前的版本是2.0。更详细的资料可以访问官网:https://www.lib...
-
如何规范的把进程放到Linux后台运行作为业界多用户操作系统的代表,linux中把一个程序放到后台运行的办法估计连一个只学过3天linux的菜鸟都非常熟悉:$ ./myApp &程序已经在前台运行了也没关系,快捷键CTRL-Z,然后键入命令:bg,程序就放入后台执行了。使用jobs可以列出所有正在后台运行的任务,必要的话,还可以使用fg [pid]把放入后台的任务调度到前台来继续执行。这样正确吗?没错,至少unix类系统...
-
两种方法操作其它mac应用的窗口(图文基本无关)如果单纯说简单方便,其使用AppleScript更好,特别是现在有了JS的加入,比如:(*This Apple script will resize any program window to an exact size and the window is then moved to the center of your screen.Specify the program ...
-
自己动手,装一个液晶电视又是一篇老文,我屈指算了算,大概是14年前,也就是2003年写的:D。这么多年过去,文章本身其实已经没有了什么参考价值,在这个纯技术的博客中,这算另类。只是偶尔重读起来,感觉,自己当年居然还曾经那么逗比。生活是一把杀猪刀……啊还有,你是否注意到了照片上的水印,都已经不记得什么时候变成了现在的样子。————————————————————————————————————————————最近IT...
-
半小时完成一个湿度温度计这是几年前写的一个笔记,估计Seven会用得到,所以翻出来重新贴上。很多人学习电脑其实都是从单片机开始的,单片机结构简单,又五脏俱全,所以学习单片机入门,应当能够更容易的让初学者具备电脑的整体观。相信Z80/C51时候训练的习惯,很可能会伴随某些人整个技术生涯吧。 而随着IOT再次活跃起来的单片机,跟C51这些传统上的单片机相比变化不小。集成度更高、速度更快、外围接口和外围传感器更完善,编程...
-
MacPro4,1升级到MacPro5,1收了一台老MacPro,2009年版本,准确型号是“MacPro4,1”。机器很好,美中不足的是,太老了。硬件还好说,很多部件都可以单独采购升级,特别是有了淘宝,几乎只要有的东西,都可以买到。软件就麻烦了,macOS sierra已经不支持,更别说high sierra。而如果不能用最新的系统,对于研发人员来讲,MacPro的价值将大大降低,因为从开发系统到测试环境,都是非常严格的版本相关的...
-
CameraBox个人讲台客户端使用说明简介网络远程教育发展以来,老师个人在网上授课的形式,经历了几代的演变。最早,各学校的录播室,配合上后期的制作,形成了统治市场长达10多年的三分屏课件。远程学习,就是网上看课件。那个时代,多种课件制作软件各显身手,互不相容。逐渐的,因为智能手机、网络电视的兴起,以及HTML5技术的流行,课件逐渐演变统一为纯视频的方式。文科的课程,教师授课的画面会是主体;理科方面,讲义PPT或者操作的界面是主体...
-
一段使用Educast抠像混屏直播的视频展示以下视频使用Educast定制抠像版制作,特色: 源视频可以使用绿箱(或者蓝箱、粉箱)来拍摄 源视频可以实时抠像、实时直播,无需人工处理 抠像效果同专业后期软件没有区别,支持高清,但重要的是实时处理无需人工干预 演示视频所用素材为网上资源,仅供演示,请勿传播使用 需要支持HTML5的浏览器观看视频。
-
七牛对象存储的使用Jekyll个人网页是个好技术,github.com是个好网站,不过存储容量和流量的限制是个头痛的事情,当然,也在情理之中。好在我们生于“云”的时代,有很多办法来扩展我们的世界。在引用图片方面,主要的要求就是服务商可以提供外链。由于在国内,我们的选择少了一些,不过还是有几个优选的: 百度图片,网址是https://timgsa.baidu.com,图片可以外链,缺点是路径太长,在Markd...
-
Educast视频直播控制台使用说明简介Educast是一个以教育行业为主要应用方向,兼顾其他业务的专业视频直播、控制系统。专业视频系统一般至少在以下几个方面同普及型系统有明显区分: 专业视频系统一般可以自主设定分辨率、码流等参数,保证在允许条件下尽可能高清的完成直播;普及型系统一般只有官方给定的一个或者几个固定的参数设置。 专业视频系统虽然也允许手机等业余设备进行直播,但主要面向专业硬件设备,特别是可以兼容影棚、大规模专...
-
批量自动重命名音乐文件有个不好意思的坏习惯,经常在网上下载一些MP3音乐,大家可别学我,请努力支持正版。很多不同时间、不同来源的MP3,一般采用了不同的命名规则,或者干脆就是混乱的命名,比如一串谁也看不懂的数字,感觉这些起名字的人实在是不走心。但管理起来或者欣赏起来,这些杂乱的名字就实在太令人恼火了。自己写了一个小程序,读取MP3音乐中的标签(Taginfo)信息,这些信息一般是压制MP3的时候直接从CD中得到并...
-
把Markdown文本发布到微信公众号文章估计很多人都是这样,平常工作在github,等到有成果要发布,又要写微信公众号。github用Markdown,微信公众号,至少截止今天,还是沿用富文本的方式。不是说富文本不好,但每次精心撰写的内容,重新排一遍版,还真是怪烦的。如果在github是使用jekyll相对会容易一点,在页面上拷贝、到微信粘贴一下,大多内容都会差不多。否则就只好转换成html显示在浏览器,然后再拷贝粘贴。Markd...
-
Javascript已加入AppleScript全家桶因为工作环境基本是以跨平台为主,所以纯mac本地化的AppleScript一直关注是不够的,前几天找资料发现AppleScript也在迅速的进步着,目前已经对Javascript做了比较好的支持——当然早就支持,现在只是感觉上更好了。这项技术的全称是JavaScript for Automation,算一项比较新的技术,简称JXA。本博不是学术研究性的,因此完全从实用出发,力求给出自己的实用...
-
分享一个很通用的Makefile编写Makefile是一个苦乐交织的事情,快乐是因为从一堆需要手工逐个处理的编译过程,进步到一条命令完成,看着代码顺畅的在屏幕上滚动,编译为最终的产品,那个过程无比愉悦;而痛苦则是,写代码已经很累了,写完代码还要编写Makefile,这多出来的一点工作,很有点最后一根稻草的感觉。最近整理手头的几个项目,把C语言类的Makefile抽象、合并了一下,形成了一个比较通用的编译脚本,这里分享一下:...
-
golang子进程的启动和停止今天接到一个任务是将原来运行在mac的应用移植到linux,原因当然是因为客户那边当前是linux环境,也不想再采购mac电脑。通常来说,这个工作并不难,因为我选用的服务器端技术是c或者golang,这两种技术具有很好的可移植性,而且大多是重新编译即可运行,所以接到任务的开始并没有把这个当一回事。跟想象中的也差不多,搭建好linux测试服务器,在mac上把运行很久的应用重新交叉编译了一遍,部...
-
Ubuntu16.04LTS appstreamcli报错的处理
“”
某台机重装两次ubuntu16.04 LTS版本都有开机报错,但一闪而过难以看清,后来尝试apt update,在下载完更新索引之后报错,从而确定了报错信息:Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'尝试强制重新安装appstreamcli之后故障消失,但不知道造成的原因是什么:#先停止当前的运行sudo pkill -KILL appstreamcli#下载主程序和库的软件包wget...
-
AngularJS2+调用原有的js脚本昨天一个话题说关于AngularJS2以后版本的两个小技巧,不料引出了另外一个话题,话题起始很简单:“很多的前端框架并不复杂,比如JQuery,引入即用,实时看到效果,多好。到了Angular2一直到现在的版本5,一点改进没有,还要编译,还要部署,原有的JS脚本也不能用了。”细想起来,这个话题的帽子并不小,至少牵扯出来一个关键,AngularJS2及以后的版本,其框架之下的JS代码,跟HTM...
-
在国内使用golang的小技巧(图文无关)go是一种好语言,从业几十年,接触到go语言就有一种“众里寻他千百度,眸然回首,那人就在灯火阑珊处”的感觉。然而其实就是从最近开始,使用golang碰到两个大麻烦,每天几乎都有很多痛苦加身,一个麻烦是下载各种组件包,另一个麻烦是查阅文档手册,为什么是从最近开始就不解释了。这两个麻烦归根结底的根源其实是一个,都来自于我们那个伟大的防火墙。问题1,下载组件包,最大量的组件包都来自于官...
-
Angular2+的两个小技巧Angular2以后已经非常充分的面向对象化,所以很多原来在javascript中积累的技巧,都需要做出相应的调整。检测当前浏览器类型、版本及设备类型,推荐使用:https://github.com/KoderLabs/ng2-device-detector。github页面的介绍已经写的很详细,请直接阅读原文文档。这里只讲几个重点:1.当前的AngularJS版本已经是5,已经有人对上面的...
-
Unix程序员的Win10二三事macOS延续自BSD Unix, Linux则是从内核开始重新编写但延续Unix使用方式的Unix。所以mac还有linux程序员,一般都算是*nix程序员,尽管其中还有不少的区别。Windows从版本10开始做出的最大改变,可能就是内置的linux子系统,原本的安装方式很简单,网上很多介绍,一般就是三步:1.设置中打开开发人员模式;2.windows组件中安装linux子系统;3.在DO...
-
在Ubuntu上搭建kindle gtk开发环境某个角度上说,kindle很类似android,同样的Linux内核,同样的Java用户层。不过kindle更注重简单、节能、稳定。Amazon一向认为,功能过多会分散人们阅读时候的注意力。Kindle底层的Linux比Android保持了更多的linux兼容性,可以使用GTK或者QT编写程序。QT适合编写大的、独占界面性的应用,比如多看就曾经发布过一个Kindle之上的版本,现在还有很多人...
-
苹果手机上下载的文件在哪里?(图文无关)昨天在微信收到一个大文件,73M,突然意识到,微信升级,终于冲过了30M的文件传输限制。接下来的问题,这是一个开发工程文件,要在电脑开发环境使用,怎么把这个文件传输到电脑?正常的方式是在电脑登陆电脑版微信,然后手机上转发到“文件传输助手”,电脑上就可以收到,然后重新下载。——不过这里有两个小障碍,如果这时候没有外网怎么办?如果网速很慢怎么办?如果是规范的文件,比如视频,比如图片,...
-
使用Jekyll和github搭建自己的个人博客(图文无关)如你所见,终于用Jekyll在github搭建了自己一个新的栖身空间。独乐乐不如众乐乐,这里把相关的环节、技术、注意事项等做一个总结,希望能帮助更多人顺利上手。相关资源首先是几个推荐链接:jekyll中文官方网站,官方网站的介绍还是最全面也是最权威的,无论如何,你都应当在这里花费你最多的时间。当然,官方的介绍比较系统,但可能还是太细致了,如果你耐心不够,也可以从下面一些文章入手:...
-
使用ffmpeg做简单的音视频剪辑(图文无关)说是”简单”的音视频剪辑,其实在日常的音视频工作中,也应当是最常用的功能。使用ffmpeg做音视频的剪辑,缺点当然显而易见,就是使用命令行操作,操作繁琐,大多数人都不适应。但是也有至少两个优点是用其它方法甚至专业视频处理软件所不能比的:1.程序小,运行速度快。2.操作是在原文件基础上直接处理,不经过传统视频处理软件的再次渲染环节,没有质量损失。3.对技术人员来说,可控性强,可以用...
-
安装Homebrew
“The missing package manager for macOS”
很多人问过我为什么选择苹果电脑,一个糙老爷们,又不是爱炫的小姑娘。其实用苹果电脑的人,特别是在中国,“码农”占了很大一部分。能够使用庞大的开源社区资源比如GNU并从中汲取营养,是“码农”们重要的工作模式。而使用GNU资源,或者使用LINUX系统,或者,也就只有Mac电脑可选了。而且作为一个有大厂支持的操作系统,在选择商业软件、高水平工具的方面,比LINUX又有了不少优势。其实最近微软WINDOWS阵营也做了不少改变来应对这种情况,包括virsual studio系统支持Linux/Mac多种平台,Win10x64中支持内置的LINUX子系统,不过想达到Mac与生俱来的GNU亲和能力,恐怕还需要不短的时间。Homebrew安装非常简单,请访问Homebrew官方网站查看最新的信息。一般情...
-
在Mac上安装ffmpeg
“”
ffmpeg是目前开源社区最牛逼的视、音频处理工具,没有之一。ffmpeg的使用文档、开发文档浩如烟海,那不是简单能说清的,到官方网站啃文档无论如何你也躲不过去,真需要的话,还是早点开始吧。这里只说在Mac电脑的安装,假设你已经安装好了Homebrew,打开终端在命令行执行:brew install ffmpeg这就完成了最基本的安装,应当能应对大多数人的需求。进阶安装:brew install ffmpeg --with-chromaprint --with-fdk-aac --with-fontconfig --with-freetype --with-frei0r --with-game-music-emu --with-libass --with-libbluray --wit...
-
Hello World世界你好。流浪已久,终于,再次有了一个可以栖身的空间。感谢github,让我们的视野更开阔,并且再次的栖身之处。感谢Jekyll,提供网页技术支持。感谢WngLMng(王立明),提供网页模板。