zhangnew

认真你就赢了

世界上很多非常聪明并且受过高等教育的人,无法成功。就是因为他们从小就受到了错误的教育,他们养成了勤劳的恶习。很多人都记得爱迪生说的那句话吧:天才就是99%的汗水加上1%的灵感。并且被这句话误导了一生。勤勤恳恳的奋斗,最终却碌碌无为。其实爱迪生是因为懒的想他成功的真正原因,所以就编了这句话来误导我们。
很多人可能认为我是在胡说八道,好,让我用100个例子来证实你们的错误吧!事实胜于雄辩。
世界上最富有的人,比尔盖茨,他是个程序员,懒的读书,他就退学了。他又懒的记那些复杂的dos命令,于是,他就编了个图形的界面程序,叫什么来着?我忘了,懒的记这些东西。于是,全世界的电脑都长着相同的脸,而他也成了世界首富。
世界上最值钱的品牌,可口可乐。他的老板更懒,尽管中国的茶文化历史悠久,巴西的咖啡香味浓郁,但他实在太懒了。弄点糖精加上凉水,装瓶就卖。于是全世界有人的地方,大家都在喝那种像血一样的液体。

阅读全文 »

原文地址。这是开发者所写的,可以说是官方开发指南。文章讲述了Xposed的原理,以及怎么开发Xposed框架的模块。头一次翻译技术文档,有错误的话请多包涵。

好了,你想学习怎么为Xposed开发新的模块么?那么读读这篇教程(或者我们可以称他为”泛读短文”)学着怎么去做。这不仅包括“创建这个文件然后插入…”这类的技巧,也包括这些技巧背后的思想。这些思想正是创造价值的步骤以及你真正需要了解你做了什么和为什么这么做的原因。如果你觉得本文“太长,不想读”,那么你可以只看最后的源代码和阅读“使工程成为Xposed模块“部分。但是如果你读了整篇文章你就会有更好的理解。你之后会节省出来阅读这个的时间,因为你不必凭自己弄清楚每件事。

阅读全文 »

实现方法

修改 Tincetion 主题的模板函数 functions.php 修改下面这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 文章图片添加 Lightbox 类,用于图片暗箱
/* -------------------------------- _/
function lightbox_gall_replace ($content){
global $post;

$pattern = "/<a(._?)href=('|\")([^>]_).(bmp|gif|jpeg|jpg|png)('|\")(._?)(._?)<\/a>/i";
$replacement = '&lt;a$1href=$2$3.$4$5 class="prettyPhoto_gall" rel="prettyPhoto[gallery1]"$6>$7</a>';
$content = preg_replace($pattern, $replacement, $content);
// $pattern2 = "/&lt;img(._?)src=('|\")([^>]_).(bmp|gif|jpeg|jpg|png)('|\")(._?)&#62;/i";
// $replacement2 = '[&lt;img$1src=$2$3.$4$5 $6>]($2$3.$4$5 class=)';
// $content = preg_replace($pattern2, $replacement2, $content);
return $content;
}
add_filter('the_content', 'lightbox_gall_replace', 98);

改为如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* 文章图片添加 Lightbox 类,用于图片暗箱
/* -------------------------------- _/
function lightbox_gall_replace ($content){
global $post;

if(preg_match("/gallery-1/i", $content)){
return $content;
}
$pattern = "/&lt;a(._?)href=('|\")([^>]_).(bmp|gif|jpeg|jpg|png)('|\")(._?)(._?)&lt;\/a>/i";
$replacement = '&lt;a$1href=$2$3.$4$5 class="prettyPhoto_gall" rel="prettyPhoto[gallery1]"$6>$7</a>';
$content = preg_replace($pattern, $replacement, $content);
// $pattern2 = "/&lt;img(._?)src=('|\")([^>]_).(bmp|gif|jpeg|jpg|png)('|\")(._?)&#62;/i";
// $replacement2 = '[&lt;img$1src=$2$3.$4$5 $6>]($2$3.$4$5 class=)';
// $content = preg_replace($pattern2, $replacement2, $content);
return $content;
}
add_filter('the_content', 'lightbox_gall_replace', 98);

即只需添加一个简单的判断,如果匹配到「gallery-1」就不使用主题的 Lightbox 灯箱。

这样就可以使用 Fast Gallery 的相册,又可以给普通的图片使用主题自带的 Lightbox 灯箱。

阅读全文 »

作曲 : 逃跑计划 作词 : 逃跑计划 夜空中最亮的星 能否听清 那仰望的人 心底的孤独和叹息 夜空中最亮的星 能否记起 曾与我同行 消失在风里的身影 我祈祷拥有一颗透明的心灵 和会流泪的眼睛 给我再去相信的勇气 越过谎言去拥抱你 每当我找不到存在的意义 每当我迷失在黑夜里 夜空中最亮的星 请指引我靠近你
阅读全文 »

使用场景

外网访问一台内网的机器,由于内网机器没有公网IP,无法直接连接,通过SSH,需要使用一台VPS做跳板。
也就是说有三台机器:内网机器,VPS,自己的机器。
目的是自己的机器通过有公网IP的VPS来访问内网的机器。

ssh远程端口转发示意图

阅读全文 »

不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式。我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂。正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅读这部分,也可以晚点阅读这部分,这完全取决于你自己。

既然已经读到这了,就让我们开始吧。首先要弄明白一点,从根本上来讲 Git 是一套内容寻址 (content-addressable) 文件系统,在此之上提供了一个 VCS 用户界面。马上你就会学到这意味着什么。

早期的 Git (主要是 1.5 之前版本) 的用户界面要比现在复杂得多,这是因为它更侧重于成为文件系统而不是一套更精致的 VCS 。最近几年改进了 UI 从而使它跟其他任何系统一样清晰易用。即便如此,还是经常会有一些陈腔滥调提到早期 Git 的 UI 复杂又难学。

内容寻址文件系统层相当酷,在本章中我会先讲解这部分。随后你会学到传输机制和最终要使用的各种库管理任务。

阅读全文 »

世界不是完美的。大多数时候,将所有接触到的项目全部转向 Git 是不可能的。有时我们不得不为某个项目使用其他的版本控制系统(VCS, Version Control System ),其中比较常见的是 Subversion 。你将在本章的第一部分学习使用 git svn ,Git 为 Subversion 附带的双向桥接工具。

或许现在你已经在考虑将先前的项目转向 Git 。本章的第二部分将介绍如何将项目迁移到 Git:先介绍从 Subversion 的迁移,然后是 Perforce,最后介绍如何使用自定义的脚本进行非标准的导入。

Git 与 Subversion

当前,大多数开发中的开源项目以及大量的商业项目都使用 Subversion 来管理源码。作为最流行的开源版本控制系统,Subversion 已经存在了接近十年的时间。它在许多方面与 CVS 十分类似,后者是前者出现之前代码控制世界的霸主。

Git 最为重要的特性之一是名为 git svn 的 Subversion 双向桥接工具。该工具把 Git 变成了 Subversion 服务的客户端,从而让你在本地享受到 Git 所有的功能,而后直接向 Subversion 服务器推送内容,仿佛在本地使用了 Subversion 客户端。也就是说,在其他人忍受古董的同时,你可以在本地享受分支合并,使暂存区域,衍合以及 单项挑拣等等。这是个让 Git 偷偷潜入合作开发环境的好东西,在帮助你的开发同伴们提高效率的同时,它还能帮你劝说团队让整个项目框架转向对 Git 的支持。这个 Subversion 之桥是通向分布式版本控制系统(DVCS, Distributed VCS )世界的神奇隧道。

git svn

Git 中所有 Subversion 桥接命令的基础是 git svn 。所有的命令都从它开始。相关的命令数目不少,你将通过几个简单的工作流程了解到其中常见的一些。

值得警戒的是,在使用 git svn 的时候,你实际是在与 Subversion 交互,Git 比它要高级复杂的多。尽管可以在本地随意的进行分支和合并,最好还是通过衍合保持线性的提交历史,尽量避免类似与远程 Git 仓库动态交互这样的操作。

避免修改历史再重新推送的做法,也不要同时推送到并行的 Git 仓库来试图与其他 Git 用户合作。Subersion 只能保存单一的线性提交历史,一不小心就会被搞糊涂。合作团队中同时有人用 SVN 和 Git,一定要确保所有人都使用 SVN 服务来协作——这会让生活轻松很多。

阅读全文 »