动态绑定浏览器插件弹出窗口内容 (soulteary.com)
诉求起源:
在编写的插件的时候,我们经常会出现仅允许在某些情况下才可以弹出插件窗口的需求,如:用户打开了非插件页面、书签页面甚至是其他的插件页面。 chrome允许我们在manifest指定browseraction和pageaction,但是假如我们直接在manifest文件中指定了这两个json字段的内容,那么弹出窗的内容将会被『锁死』。

解决方案:
browseraction和pageaction都包含一个叫做setPopup的API,允许我们动态的设置插件的弹出窗内容,解决问题的关键点之一也就是这个API了。 而在何时执行setPopup,怎么执行setPopup是另外一个关键点,执行过早,插件交互一样会如同诉求起源的问题一样,『锁死』弹出内容。 下面分别以两种类型的插件为例,这两种类型的插件互斥,manifest仅允许存在其中之一(仅简单描述插件的形式区别,暂不展开描述)
by @技术头条 2017-10-15 10:26 查看详情
用 NMAP 探测操作系统 (linux.cn)
有时,能够知道一个网络里的机器的操作系统(OS)是有一定好处的。当你知道一台机器的操作系统后,因为你可以在网上搜索专门针对该系统的安全漏洞,所以入侵系统也会更加容易。当然,安全漏洞通常都会很快被修补,但安全漏洞存在时你需要知道。

对你自己的网络进行扫描以便发现操作系统类型可以帮助你了解黑客将如何侵入你的网络。
by @技术头条 2017-10-15 10:25 查看详情
常用开源框架中设计模式使用分析 (ifeve.com)
说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻辑开起来清晰,或者对功能扩展很方便…。

设计模式按照使用场景可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。


创建型模式(Creational Patterns)
对对象的实例化过程进行抽象,这使得一个系统可以不用关心这些对象是如何创建,组合,呈现的,对于类创建模式来说通过使用继承改变实例化的类,对于对象创建模式来说通过使用代理来实例化所需要的对象。
结构型模式(Structural Patterns)
通过对多个类和对象进行组合得到复杂结构的类,一般使用继承继承或者成员变量引用形式来实现。
行为型模式(Behavioral Patterns)
行为模式不仅表达了对象和类,还表达了他们之间的交互,涉及到了对象和算法的分配。
image.png

下面就带大家看下开源框架框架中是如何应用这些经典设计模式的。
by @技术头条 2017-10-15 10:24 查看详情
uCareSystem:Ubuntu/Linux Mint 的一体化系统更新和维护工具 (linux.cn)
uCareSystem Core 是一种能够自动执行基本的系统维护活动的轻型实用程序,另一方面它可以通过多种方式减少系统管理员的任务,节省大量时间。它没有任何 GUI,并提供纯粹的命令行界面来执行活动。

Ubuntu 中有几种实用程序来执行系统维护活动。每种工具有它们相应的独特功能和设计。你可以添加一个 cron 任务来自动化这些任务。

uCareSystem Core 会自动刷新发行版仓库、更新可用包列表、卸载包(过期包、孤儿包和旧的 Linux 内核)以及清理取回的包来节省系统磁盘空间。
by @技术头条 2017-10-15 10:24 查看详情
UML建模图实战笔记 (ifeve.com)
UML:Unified Modeling Language(统一建模语言),使用UML进行建模的作用有哪些:

可以更好的理解问题
可以及早的发现错误或者被遗漏的点
可以更加方便的进行组员之间的沟通
支持面向对象软件开发建模,可以更好的描述显示编程的情景。
对于复杂的系统来说,如果概要模型做的好,那么整个系统的模型也就很清晰明了。
by @技术头条 2017-10-15 10:24 查看详情
优化网站打印(阅读)模式 (soulteary.com)
作为一只深度“网瘾少年”,偶尔看到喜欢的网页内容,除了会选择使用笔记工具收藏、浏览器收藏夹库加star外,偶尔还会使用纸质打印保存,或者使用浏览器提供的网页转PDF功能留个备份。然而提到打印,多数网页并不是都适合打印的。
by @技术头条 2017-10-15 10:23 查看详情
优化策略路由的Tips (soulteary.com)
最近一直在优化家庭网络体验,还特意组装了一台新的小主机(N3700),除了兼顾软路由和NAS的需求之外,还提供了代码仓库等功能,具体经验之后会慢慢写出来。先聊其中一个细节吧,关于使用“策略路由优化上网体验”。
by @技术头条 2017-10-15 10:23 查看详情
Petya变种样本技术分析 (blog.nsfocus.net)
2017年6月27日晚,多个企业遭遇勒索软件,导致业务中断。此次事件最初在乌克兰发现,后来逐步扩大,包括巴西、德国、俄罗斯、美国等多个国家。此次事件影响范围极广,造成的影响极大,绿盟科技对此次事件进行了高度关注,并在第一时间获取样本进行分析。

通过分析发现,此次样本可判定为petya病毒的升级版本,但在MBR加密时使用了不同的加密key,同时此次样本使用了微软提供的API,使用AES-128加密算法对全磁盘指定格式文件进行了加密。加密重启后显示勒索软件的通知信息。
by @技术头条 2017-10-15 10:21 查看详情
基于Android Architecture Components的应用架构指南 (cdc.tencent.com)
这是一篇 Android Architecture Components 的简单使用指南,目的是向大家介绍这么一种新的架构方案。Android Architecture Components 是一个由官方推出的新库,它能够帮助你去构建一个健壮,易测,可维护的应用。目前它还未正式发布(Now available in preview)。所以抱着强烈的好奇心去了解了一下。
本文译自 Guide to App Architecture,并结合自己的理解后记录下来。链接中有更多的细节可以参考。如果有认识错误的地方欢迎指出以修正。
by @技术头条 2017-10-15 10:21 查看详情
新人必看的开源指南:如何参与并做贡献 (linux.cn)
为何要为开源做贡献?

在 freenode 的工作使我学到了很多技能,后来我将它们运用到我的大学学习和实际工作中。我认为在开源项目中的工作对我的帮助和它对项目本身的帮助一样大!— @errietta,《为什么我热爱为开源软件做贡献》
为开源做贡献是学习、教学和在你能想象的任何技能上积累经验的有益途径。
为什么人们为开源做贡献?有许多理由!
by @技术头条 2017-10-15 10:20 查看详情
极客漫画:Web 服务器中的生活 (linux.cn)
Web 服务器总是忙忙碌碌的,从不下班,这似乎比运维工程师还要辛苦。
每一个线程都在忙着,然而也有不太一样的,比如那个被数据库操作拖在那里的,就只能发呆;而那个被糟糕的代码搞得堆栈溢出的,看起来已经要崩溃了。
处理完请求之后,Web 服务器会给出生成的页面和 Cookie(饼干),如果下次带着这些饼干的编号来,那就可以很快地找到你要的饼干——这就是用饼干保存的会话。
这就是 Tomcat Web 服务器里面的生活。
by @技术头条 2017-10-15 10:19 查看详情
在 Linux 中使用 shell 脚本自动创建/移除并挂载交换文件 (linux.cn)
几天前我们写了一篇关于在 Linux 中 3 种创建交换文件的方法,它们是常见的方法,但是需要人工操作。

今天我发现了一个 Gary Stafford[1] 写的 shell 小脚本(两个 shell 脚本,一个用于创建交换文件,另外一个用于移除交换文件),它可以帮助我们在 Linux 中创建/移除并且自动挂载交换文件。

默认这个脚本创建并挂载 512MB 的交换文件。如果你想要更多的交换空间和不同的文件名,你需要相应地修改脚本。修改脚本不是一件困难的事,因为这是一个容易上手而且很小的脚本。
by @技术头条 2017-10-15 10:19 查看详情
使用lombok简化代码 (www.javaranger.com)
lombok是一款可以精减java代码、提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码。减少了代码行数,不会看到一大堆的get、set干扰视线
by @技术头条 2017-10-15 10:19 查看详情
我为什么使用 JavaScript Standard Style(JavaScript 标准编码风格),而且你应该使用 (www.css88.com)
让我们看一看 @feross 的 JavaScript 标准风格 ,这是一个流行的 JavaScript 风格指南。它可以帮助你减少团队之间的摩擦,增加程序员的幸福感。

这是 一组规则 ,可以使 JavaScript 代码更加一致 ,并且可以防止类似于 tabs缩进 和 空格缩进优缺点这一类无聊的话题讨论。你可以采用多种风格之一,并且与其他 (如 JSLint , JSHint 和 ESLint )是同一种类型的 JavaScript 检测器。

如果你还不知道什么是linter (检查工具),或者为什么需要,请查看我们对 JavaScript 检查(Linting)工具的比较。
by @技术头条 2017-10-15 10:18 查看详情
并发队列中迭代器弱一致性原理探究 (ifeve.com)
并发队列里面的Iterators是弱一致性的,next返回的是队列某一个时间点或者创建迭代器时候的状态的反映。当创建迭代器后,其他线程删除了该元素时候并不会抛出java.util.ConcurrentModificationException异常,能够保持创建迭代器后的元素一定被正确的next出来。
by @技术头条 2017-10-15 10:18 查看详情
极客漫画: 一场 Java 惊魂之旅 (linux.cn)
周末带着儿子去了一个不一样的迪尼斯乐园——Java 大世界。

公园的门口,有两个 Java 吉祥物 Duke,只是左边那个好像是戴着发带的女 Duke。看见没有,公园大门最顶部的标志是著名的咖啡杯——基本上是公众所熟知的 Java 语言的形象了,相对来说,Duke 的知名度不如咖啡杯。公园门口的标语上写着“堆”满了乐趣(“堆”,即 heap,是一种 Java 等语言用于操作数据的内存结构)。
by @技术头条 2017-10-15 10:16 查看详情
JavaScript 模块简史 (www.css88.com)
你是否是 JavaScript 新手?并且对模块,模块加载器和模块打包器感到困惑吗?或者你已经编写了一段时间的 JavaScript ,但是没法掌握模块的一些术语?你是否听过 CommonJS、AMD、Browserify、SystemJS、Webpack、JSPM 等等术语,但是不理解我们为什么需要它们?

我会试着解释他们是什么,他们试图解决什么问题,以及他们如何解决这个问题。
by @技术头条 2017-10-15 10:16 查看详情
小tip:JS前端创建html或json文件并浏览器导出下载 (www.zhangxinxu.com)
我们使用JS创建了一个动态的JSON数据,希望可以保存为JSON文件到本机系统,传统做法可能需要复制粘贴,而实际上,我们可以直接使用JS直接创建对应的JSON文件并让浏览器下载,而且代码和原理都出乎意料的简单。
by @技术头条 2017-10-15 10:11 查看详情
为 Progressive Web App 提供的 Webpack 加载器和插件 (www.css88.com)
我假设你已经知道什么是 Webpack ,为什么它真棒,它是如何工作的,所以让我们开始:

可能你已经知道了 Webpack 的这些常用的工具,比如: style-loader ,html-webpack-plugin ,extract-text-webpack-plugin ,file-loader 和其他流行的一些加载器或插件。
by @技术头条 2017-10-15 10:10 查看详情
Java中调度线程池ScheduledThreadPoolExecutor原理探究 (ifeve.com)
前面讲解过Java中线程池ThreadPoolExecutor原理探究,ThreadPoolExecutor是Executors中一部分功能,下面来介绍另外一部分功能也就是ScheduledThreadPoolExecutor的实现,后者是一个可以在一定延迟时候或者定时进行任务调度的线程池。
by @技术头条 2017-10-15 10:10 查看详情