最近在给朋友做一个项目,要求将涉及到的算法内容整理成一个单独的 framework,这样可以隐藏算法细节,方便交付。这个需求可以很容易地通过Cocoa Touch Framework实现。不过在交付的时候存在一个头疼的问题:默认情况下,Xcode 在编译 Cocoa Touch Framework 时只会编译出支持模拟器或者真机的 Framework,而无法编译出同时支持模拟器和真机的 Framework,即 Universal(Fat) Framework。这一需求还需要进一步地利用一些系统脚本来实现。
2019
这里我们讨论的图像截取部分是指从一个完整的大图中截取一小部分出来。当然,使用 js 实现。
转载自 BIGD 团队。
在学校里看剧、电影,下载破解游戏基本都靠北邮人。一方面资源比较全,另一方面是走 IPv6,不需要走计费的校园网 IPv4 流量。不过由于北邮人只支持 IPv6,而国内 IPv6 基本只有校园网有。问题来了,怎么在校外的纯 IPv4 环境下使用 IPv6 Only 的北邮人呢?
目前已经有一些运行商为家庭网络提供了 IPv6,但是北邮人这种教育网 IPv6 资源站点常常封禁了这些家庭 IPv6 网络。
最近墙又双叒叕加高了。在春节前就发现自己的 VPS 无法连接,后来发现还好只是端口被封禁,换成其他的端口就能使用了。不过这才撑了半个月新的端口访问又不太稳定了。如果再换端口,或许也可以。但是不是长久之计。不过我的 VPS 是支持 IPv6 的,一般来说,墙对于 IPv6 流量的拦截比较弱。或许可以想办法先把自己的流量转换成 IPv6 然后再出去。
我是一个无人机集群技术的研究者,从最近开始我打算集中整理发布一些无人机,尤其是无人机集群技术的新进展以及评论文章。
网络资源的分享是非常重要的,而建立起一个网关来进行网络分享是一个比较好的解决方案。在 Linux 系统中创建和设置网关非常简单,成本低廉,而且性能可靠。
2018
最近实验需要在树莓派上搭建一个简单的视频服务,而且,希望画质一定的情况下,消耗的带宽越少越好。关于带宽的问题,其实开始并没有考虑太多,但是在尝试用uv4l
工具创建 mpeg 流的时候发现,尽管分辨率很低(720p)不到,需要的数据率却达到了大约 5MB/s。我们待测试的通信层不具备这样高的传输传输能力。因此需要想办法把数据率降下来。综上,我们需要产生一个编码后的视频流,如 H264。
在上一篇文章中我们初步讨论的 Dependency Injection 的一些理念。在这篇文章中,我翻译了 awilix 模块的作者 Jeff Hansen 的文章:Dependency Injection in Node.js - 2016 edition。原文包含三个部分,我在这里直接整理成为一篇完整的文章。
Dependency Injection 这个概念是我之前在实习的时候做 Java 开发的时候接触的。Dependency Injection 可以大大降低模块之间的耦合度,提高系统的可扩展性和鲁棒性,不过这个概念对于新人来说理解起来还是存在比较大的障碍。由于当时实习的时间比较短,对于这个概念我并没有吃透。这次学习 Node.js 的时候,又在 awilix 这个库里面遇到了这个概念。以此为契机就来好好学习一些 Dependency Injection 和其后的设计逻辑与方法。
下面的内容翻译自:Dependency Injection in Node.js。这篇文章浅显地介绍了 Dependency Injection 的基本理念。选择这篇文章是因为我在阅读 awilix 模块作者关于 Dependency Injection 的系列文章中时,作者在开篇提议阅读此文。
不过这篇文章毕竟是 2015 年的文章,在 js 的一些语法和模块细节上和今时今日的有些不同,但是并不妨碍我们对于其核心理念的理解。
GitLab 由乌克兰程序员 Dmitriy Zaporozhets 和 Valery Sizov 开发,它由 Ruby 写成。后来,一些部分用 Go 语言重写。截止 2018 年 5 月,该公司约有 290 名团队成员,以及 2000 多名开源贡献者。 GitLab 被 IBM,Sony,Jülich Research Center,NASA,Alibaba,Invincea,O’Reilly Media,Leibniz-Rechenzentrum (LRZ),CERN,SpaceX 等组织使用。
网络数据包如果一次发送太多,就会造成网络拥堵;如果发送太少,就浪费了带宽,延长了通信时间。TCP 协议有一个拥堵窗口机制,负责动态调整每次发送数据包的数量。本文通俗地解释了这种算法的细节。
Make 一般是在 Unix 环境下使用的自动化编译工具。他本身不是编译器,而是将众多 C/C++源文件组织起来,确定其编译方式和编译顺序的工具。一旦我们写好的 Makefile 配置文件,那么无论多么复杂的工程我们都可以用一条 make 命令来解决。事实上,尽管通常和 C/C++搭配起来使用,make 也能应用到其他的编程语言之中。
在使用 make 过程中的第一个核心问题是处理文件依赖的问题。例如:
1 | foo.o : foo.c defs.h # foo模块 |
这里 foo.o
依赖于 foo.c
和 defs.h
。当后面两个文件发生变化时,make 会自动运行 cc -c -g foo.c
命令更新 foo.o
文件。但是,随着项目扩大。这种文件之间的依赖关系会变得非常复杂,一个小的改动可能会涉及到众多依赖关系的修改。因此有必要在项目的开始就引入自动构建依赖关系的工具链。
今天在朋友们的群里又看到有朋友在谈论吃酵素的事情。这让我想到了 2017 年二月,我去东京交流访问,参观了日本最大的酵素生产商之一:中原株式会社。有意思的是,这家公司虽然是日本的公司,却是中国人创立的。之所以公司的名字叫做中原,是因为创始人是郑州人。当时接待我们的人中,有一个负责做产品研发的生物博士,筑波大学毕业,也是中国人。他带我们参观了公司总部顶楼的一个小型的检测间。有一个随行的朋友很实诚地问道:“酵素这个东西到底有没有用。”那名生物学博士倒也没直接回答,而是笑着说:”大家都是学工科的,都懂“。