Chenfan Blog

Do cool things that matter.

0%

事情的起源是这样的:

想把笔记本上的 1060 用起来,但是 Windows 下 Cuda 的 nvcc 只跟 VS 的编译器绑定,没法换成 Mingw,这就很不开心了。虽然实在为了在 Windows 下跑程序方便,还是把 VS 2015 装上了(吃了我整整几十个 G 的空间,心疼),但是用起来仍然是非常不爽。
虽说以前也经常折腾 Win + Linux 的双系统,这次换完笔记本之后觉得破坏原本的分区引导什么的贼不清真 ╮(╯_╰)╭ 然后并不想装。

那最后还是要用啊,怎么办,好烦。

后来终于有了个(自己觉得)特别 6 的想法。我搞个 U 盘装上就好了哇!用 Linux 的时候插上,不用拔了,特别清真!

然后。。。晚上下了个单,第二天 U 盘就到啦。。。(还特意买个新 U 盘。。。主要是老 U 盘容量都太小)。

然后。。。就没有然后了,中间一直坑。

Read more »

关于 Node.js 的异步编程之前已经稍微了解过了,再来继续深入研究一下用来支持它异步能力的底层事件库 —— Libuv。

这个标志还是很霸气的,也象征了这个库简单粗暴又高效的特点。

Read more »

嗯,在杭州待了半个月,想了想还是把一个月前的这篇从草稿堆里面恢复出来了。

被老板外派出去参与健培公司的合作项目,正常的话,大概今年8月就能在央视的节目上看到我们的工作啦 ^0^/

这篇日志里面记录的都是网上的开源资料,主要来源于 Kaggle。

参考资料:

Read more »

Node.js 现在已经发展成一个很强大的框架了,像 Hexo 这样的博客系统、Visual Studio Code 这样的文本编辑器、甚至Steam客户端(?)等等都是用这个写的。还有一堆,哪哪都是 Node。

很早就想学一下这玩意,结果各种事情一直拖着。

考完试终于有时间可以瞎折腾了。

记一下学 Node 的时候遇到的一些坑点。

Read more »

话说最近很长一段时间都是在看别人的代码和改别人的代码比较多,自己从头开始写东西好像已经是很久前才有过的事情了。改 TensorFlow 的过程中也学到不少东西,准备平时想到啥了就随便写着玩。

内存池简单地讲就是我自己首先用 malloc 向系统申请一大块内存,然后接下来再用到内存的时候手动从这大块内存中划,不用了还回去。这个之后申请、释放内存都是手动实现的,自己写个内存池的 mallocfree 来完成就好了。

具体用内存池的好处,网上好多人都有说,其实一般情况下自己手写的东西都还是比不上人家造好的轮子的,但在某些特殊的应用场景下手写会有很多好处。例如 Nginx 就有个自己的内存池,用来应对频繁的小块内存申请等等。

我之前遇到的场景主要是 RDMA 在发送数据前需要往 IB 卡上绑定内存,这个过程相当耗时,所以有个想法是开头申请一大块内存出来,之后收发数据时用的 buffer 都从内存池里面划,就能省去很多的时间了。

Read more »

半路上车,Deep Learning 这块还在断断续续地慢慢学,但是由于现在测 TensorFlow 性能的需要,所以来学一下 AlexNet(额,听说 CNN 的计算量不少)。

AlexNet 是 2012 年 ImageNet 竞赛冠军获得者 Alex Krizhevsky 设计的,所以叫这个名字,这个也一直是入门 CNN 的经典模型。

参考的材料有这里,以及从这里盗了张图:

Alexnet Architecture

Read more »

Talk is cheap, show me the code.

开始接触深度学习。

虽然 TensorFlow 是很早就开始折腾了,不过做的基本是研究它的底层实现方面的工作,真正上层应用方面的原理了解的很少。但是之后的工作需要用到这方面的知识了,因此学习一下。

看了不少教程,觉得最好的方法还是跟着个 C 的裸程序走一遍会印象深刻些~

Read more »

读代码的时候遇到了一些新东西,以前从没见过的语句和使用方式,惊觉 C++ 标准都扩展到 C++17 了,然而我以前写 ACM 的时候甚至连 STL 都很少用。

后来倒是陆续用过 queue 和 bitset 这样的黑科技。

这里陆续补充一点新东西的学习记录吧。

Read more »

SWIG is used with different types of target languages including common scripting languages such as Javascript, Perl, PHP, Python, Tcl and Ruby. The list of supported languages also includes non-scripting languages such as C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), D, Go language, Java including Android, Lua, Modula-3, OCAML, Octave, Scilab and R.

上面那段是 SWIG 的官网介绍,简单地说,SWIG 是一个用于 C/C++ 和高层脚本语言交互的工具。脚本语言在 SWIG 的辅助下可以直接调 C/C++ 的程序。

简单试了一下 SWIG 在 Python 里面的用法,然后测试了一下 gdb 以及 VS 的远程调试(红红火火恍恍惚惚,其实想记录的重点是这个)。

Read more »