帐前卒专栏

code, software architect, articles and novels.
代码,软件架构,博客和小说

用git的人非常鄙视用svn的。因为要不断的开分支。而且也没有本地的分支这个概念。

但是git 作为一项技术,是一定可以被svn替代的。当然替代的方法是否繁琐另当别论,但一定是能被替代。svn同样也能被git替代。大概所有的技术都是一样。都
能相互替代,只是你要为替代本身花费多长时间。

git作为一种同步工具好用吗?其实真不好用。我梦想的工具一定是可以帮我自动完成merge过程的,永远不用开分支,永远不用告诉我链表头在哪里,以及怎么rese
t, 什么时候rebase, 什么时候打tag.
一个工具让使用者一直在思考,那一定不是好工具。我那锤子砸钉子的时候也没有先按几个按钮。当然svn也不是啥好工具。

所以本文的观点是站在我们开发的场景中从一种不好用的工具向着另外一种不好用的工具迁移。如同砸钉子的时候,始终没有找到锤子,只找到了瑞士军刀和扳手。没办法还是要
砸。

svn 迁移到git上遇到非常多的坑。大家要是开发任务紧急,就等不急的时候再迁移吧。

这里也不在意你到底使用的gerrit还是gitlab还是github. 反正都不好迁移。

一般使用的命令

1
2

git svn clone [某分支] --authors-file=users.txt --no-metadata -s (这里的分支是/trunk的上一层)

另外还可以是:

1
2

git svn clone -r383874:HEAD [你的分支] --authors-file=users.txt --no-metadata --trunk=trunk --tags=milestones --branches=branches

第二条命令是带上版本号的。也可以指定什么分支会变成git的trunk,什么分支会变成git的tag等等。
这里的users.txt内容是:
[svn的名字] = [git上的名字] <[git上的email]>
例如:
aa=bb[email protected]
tt=ee[email protected]
细数一下我自己遇到的问题:

1. ** Can’t locate Term/ReadKey.pm in @INC ** 。 不要听网上说的装什么cpan,
也不要装什么其他的软件。直接执行 svn co [一个分支]。 输入以下自己的用户名密码,然后这个问题就不存在了。

1.1 如果输入密码后,还是不行。 删除这个文件 $HOME/.subversion/auth/svn.simple/* 。 然后再 svn co , 再
git svn clone.
2. ** Do not be alarmed at the above message git-svn is just searching
aggressively for old history. ** 遇到这个提示…这个提示是吓唬你的.

3. ** Author: xx not defined in users.txt file **
这是你的users.txt里面没有某些用户。可能这些用户过于久远,你忘记加入了。

4.系统文件没有找到条目。会有下面的错误:

1
2
3
4
5
6

Initializing parent: refs/remotes/origin/trunk@22086
W: Ignoring error from SVN, path probably does not exist: (160013): 文件系统没有条目: 找不到路径 “/xxx/ooo/101”: 额外错误:: File not found: revision 101, path '/txx/slsl/'
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories

这说有些 svn 版本信息太古老了。实在没有找到对应的diff啥的。也可能被svn管理员早就删除了。所以执行 git svn clone的时候最好带上
-r[A version]:[B version]

1
2

git svn clone -r20202:HEAD [某分支] --authors-file=users.txt --no-metadata -s

5. ** Use of uninitialized value $u in substitution (s///) ** 某些git
svn版本代码写的搓。只好手工改代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

vi /usr/lib/perl5/vendor_perl/5.14/Git/SVN.pm
修改
$u =~ s!^\Q$url\E(/|$)!! or die
"$refname: '$url' not found in '$u'\n";

改成:
if(!$u) {
$u = $pathname;
}else {
$u =~ s!^\Q$url\E(/|$)!! or die
"$refname: '$url' not found in '$u'\n";
}
然后重新运行。

6. git svn clone 结束后, 执行一下 git branch -a, 发现没有一些之前开的分支。例如我们的milestone分支都叫
/milestoneXXX. 是之前git svn clone的命令的问题。 应该改为:

1
2

git svn clone -r383874:HEAD [你的分支] --authors-file=users.txt --no-metadata --trunk=trunk --tags=milestones --branches=branches

另外 git TAG和 svn开一个tag的性质不是很一致。 git tag依附于某一个commit. 而且是不变化的,从这个点开出来的所有分支,都从属于这
个TAG。svn的tag就是开了分支,可以从这个分支随意提交代码。从svn的这个TAG开出来的所有分支和这个svn TAG毛关系都没有。

好吧。说了这么多,其实我们项目就像钉子,而svn/git都不是锤子。虽然是钉子,但是钉子数目很多。遇到以上坑的,看到这篇文章希望能很快的跳过坑去~~

参加了第五届CSA云安全联盟讨论会。人实在是太多,所以又没有找到座位。站了很久,弥补了长时间坐着办公的不足,一次补了回来。首先先介绍一下信用云,其实是分开的

信-用-云

1. 信-用-云

什么是信用云。就是可信,可用,云服务。可信是安全的子集,可用就是可用性,云计算就是弹性可伸缩。

2. 信

徐博士&胡老师。各自对信做了解释。胡老师讲:信基于两种,经验 or TCG(Trust Computing Group)。而徐博也讲:信是一种依赖本身可信的
源头,由此源头推倒出来一切可信。我个人觉得对于可信计算模型的构建其实分两种:一种是乐观可信,包括胡老师讲的规则,TCG, 也包括徐博讲的公式定理。还有一种就
是以不信为基础构建的悲观信任模型,认为一切都是不可信的。包括自己的程序、规则、以及动态生成的程序。对于第一种模型,人定下的规则权重最高。对于第二种模型,人定
的规则和机器生成的规则权重一致,甚至比生成的权重更低。

第一种模型是可控模型,而第二种模型是不可控模型,如果第二种模型能拥有智能,那终将成为无法攻破的模型。

3. 用

在可用性方面,各个云都做的不错。除了所谓的云震,可靠性等方面都比较正常。但是性能上,以虚拟机和OpenStack为代表的虚拟os云永远比单机性能差。这是必然
的。虚拟层做多了,就会和用360软件一样,把高性能都消耗在了自己身上。

4. 云

所谓云,水平扩展性好。当然可能和弹性无关,因为只能延展不能收缩。例如已经有上千台虚拟机部署了大量的应用的云平台,现在请缩减1/3的实体机器。可能资源上也够用
,但是CPU等开销绝对猛增。收缩后可能部分的虚拟机就挂掉了,因为资源不可能真正的平均分配,也因为云平台不能真正的预测到各个云服务的动态特征。

根据上面的几点,我给出我心中的信用云的几点特征:

1. APP之间的隔离。App A不应影响App B。

2. 一切都是不可信的。一切也都是不可靠的。

3. 资源量远超需求量时可以做到平均分配。

4. 云自身损耗性能的代价远小于创造价值的利润。

5. 系统的可靠性由异构的节点+备份的数据+迁移的能力保障。
6. 有良好的扩展性和较长的生命力。

云email安全问题

email加密群发,群转发,云中检索和反垃圾
其实关键点就在于 信息可以被加密的双方完全查看外,还可以被授权的第三方
完全或者部分查看。对称密钥解决不了这个问题,非对称密钥也解决不了。另外还应该让非用户授权的第三方通过某种方式部分查看,例如反垃圾等。

云对抗

大潘说数据都是有结构的,这观点我很赞同。数据也是没有结构的,这观点我也赞成。因为以现在人类的观点划分数据,可能并不科学。是混沌的,还是泾渭分明的。如果利用数
据特性进行优化和改造,就应该承认数据是有结构的。如果抽象数据以包容一切,那就应该是没有结构的。

大潘看上去大太多。嗯,叫老潘比较合适。不过可能老这个词很不中听。所以还是大比较合适。
ADosA 这是一个抗DDos的联盟。就是希望集群的攻击能够狙击到发起的地方。用集群对抗集群,才是解决之道。头一次听说这个联盟的存在。

总结

这次云安全联盟会议,大都是讲的云平台的安全问题。而我个人更加关注云中系统的安全问题。不算是对路,所以前几个对于云网络的防御和云层次的安全没有细细琢磨。不过扩
大一下知识面也总没有坏处。想扩大知识面的可以抽空看一下GB/T27000安全协议簇和CCM 矩阵。

这是在杭州的最后一天。这篇文章应该很久之前就写的。嗯。现在补上。

这天其实也没有什么好说的。最主要的是就赶火车。以及如何赶火车。

为了买味千拉面,差点就没有赶上火车。

晚上,有LP做的丰盛的晚餐等着。

嗯。也就这么多

其实也不是在写面试经历和过程,其实最注重的是吃。因为要解决温饱问题。

另外面试也没有什么特殊的技巧,我摸索出来的最重要的技巧就是:靠运气。

请点赞~

pd为了装修他的巢,今天一早就回京了。

觅食

今天的蛋黄花卷不错。挺好吃的。因为去的太早,也没有等到肉包子。不管什么加上腐乳都不错。这几天没有吃别的。还是一直在吃腐乳。

面试

今天面试的人比较少。大部分是二面。拒绝和pending的人数较多。不管是过的,被拒的,还是pending的。你们都应该在内心里觉得自己是最优秀的才对。底气和
自信是非常重要的。题目的对错也不是那么的重要,重要的是你通过面试学到了什么。

不管面试者学到了什么。我反正学到了一些新的算法,一些新的出题模式。听了一些面试者讲述的项目,又为自己增加了点学术气息。这里学术派的居多,很少见代码写的漂亮的
,能写出注意各种细节的工程代码的人更加少之又少。

骑车夜行

在杭州骑车真不错。除了有些路段自行车道太窄,加上某些车主素质太低,骑得很不容易外,一切都还好。江边的风吹得呼呼的。。我现在脸上还有些残留着一些风。不过九溪一
般般,还是不如江面好看。今天骑行顺便还看了雷锋夕照。就是在二桥上不能停留,所以也没有拍下什么照片。

宵夜

今天还要继续吃吗?好吧,先看一下菜单。。。

再不觅食就要饿死星人

这种人要吃三顿饭。pd终于吃上了肉包,吃了三个,变身成PD. 如果吃包子能长点脑子,大概能变身成PHD.

面试

今天面的是求树中两个不同节点之间的距离。n多人没有写出来。或者写的太慢,或者写的太复杂,或者写的太丑。然后是环形dp,同样有一大波坑在此处。发现单纯设计题好
难刷人。以后是不是应该设计一个更好用设计题刷人呢?

另外面试之前一定要吃口香糖。谢谢。

pd每次给我薄荷糖,都给我1.5颗。 我严重怀疑,那半颗他自己嗑了。

今天拒掉和pending了很多人。每天面试其实是按照笔试成绩是从上而下排的,看来笔试成绩有相当好的过滤效果。

晚宴

今天晚上是犒劳餐。去新白鹿吃的。走路大概10分钟左右。大家都说吃饱了。我也吃饱了,吃的很饱。但不知道为什么还是想回寝室吃个蛋,然后再去吃个宵夜。pd好说歹说
才一起去吃夜宵。然后pd越吃越饿,越饿越吃。终于吃成了PD.

夜里pd搬运出一堆网易箱子。pd自嘲自己像干IT的…干IT的请揍他。不谢

夜里我烧上一壶开水,看着pd的脸。发现毁容前和毁容后竟然一个样。脸上还少了很多褶子。开水效果真赞~

有道面试

觅食

如同《饥荒》,觅食是最大的问题,解决了之后,才能解决更大的问题。顺便说,今天又没有吃上肉包,pd又捡回一条命。生怕像昨天一样,又没有午餐,所以早晨我偷偷藏了
一个鸡蛋带出食堂。

面试

今天考察的是什么,貌似是树,dp 以及优先队列。发现第一天用过一次的题目,第二天就不能继续用了。链表排序,K逆转啥的都不能出了。也可能是太简单导致的。大家的
学习能力都很强。真心赞。你们能把这点学习能力用到平时,我觉得也不会像现在这样答题如此困难。另外面了singleston,今天仍然没有人没写对。我觉得…杭
州的小朋友都没有好好的复习。c++和java的各种基本知识都没有怎么复习呀。

想想就应该那自己当年的水平和这群家伙做判断。强的就过,弱的就拒。这样大概就不会迷茫了。

今天吐槽都懒得吐了。总有面试者对问题进行重新诠释,设计题,总是在问我:是想这样设计?你是希望有这个东西?眼神里充满要一个确定答案的渴望。为什么非要面试官对该
设计中存在的问题回答是否。自己不应该处理一下这两种情况给面试官听一下,以显示自己思考全面吗?

就先这样结束吧。

在这样面下去,面试题都不知道该出什么了。

今天懒得黑PM了。准备睡觉了。。。

有道面试

觅食

觅食是非常重要的活动,每天都必不可少。除了觅食,还有睡觉。当然对于某些人吃屎拉翔也是非常重要的。

面试

一顿吃后,为了皮带不勒死我,我少吃了一点。pd因为早上没有肉包,也捡回了一条命。我和小伙伴们怀着忐忑不安又愉悦的心情一起走进了面试厅。准备面试。要想先拉屎,
首先得有纸。于是Hr给我们找了一叠白纸。这纸有点粗糙,擦起来很不顺手的样子。另外没有纸篓,擦完的纸都不知道丢哪里。我和pd一起找着纸篓。嗯还是没有找到。

上午3面,下午5面。累得跟pd似的。也没有啥休息时间。因为中午有人答题较慢,结果中饭都没有赶上。。。慌忙之下,猛摇售货机,吐出两个蛋。匆匆吃下填了肚子。

面试完毕,总结出来:1,笔试完之后,大家就开心的玩了,也不想一下笔试题都有什么问题。2,总是在问,这个思路对不对呀,那个解法是否正确。你们就没有点自己的主见
吗? 听到这种问法,真想直接干掉。二面的面试官小伙伴放心,这样的同学,我在一面已经干掉多个了。
另外我已经成功拒掉多个mm,请叫我mm杀手。面了这么多mm,感觉还是第一个mm思路清晰。我准备从拒掉的名单中再捞回来丢给二面。真不行就转PM岗吧。做研发的都
认为做PM是莫大的侮辱,其实PM挺好的。在脑子里转一下,也不管是真转了还是假转了,反正需求就改完了。你研发用脑子转一下,不用动手代码就改完了试试?

中午都没有补一觉。下午我比面试者都困。真想出一道30分钟做不出来的题,我先睡一下,再让面试者叫醒我。

下午hr叫来外卖,抽空还补吃了一下。感觉筷子的质量还是有问题。嗯,说话总是抓不住重点。

那天面了啥题呢?删除排序二叉树结点,深度优先遍历,优先队列,没有一个面试者答出拓扑排序让我很失望。Dij最短路,还有那啥…忘记了。反正题太多了,自己
都记不得了。

晚上

实在困得不行。先睡了两个小时。也不知道为什么,面试的时候电话这么多。晚上了吧,就没有人给我打电话了。pd摇着陌陌就上床了。不好,他戴上眼罩了。嗯,我又得准备
开水了。
blog 总是晚了一天…加工改造越来越没有时间了…这就是南派三叔写的:快没有时间了。嗯,其实真的快没有时间写blog了。大概是这个意思。

改有道笔试题

觅食

感觉一天除了吃也就只是吃了。清晨洗漱完毕,继续开始吃。Pd抱怨今天食堂没有肉包。不过鸡蛋可以拿多个,这个很人性化。今天的腐乳多加了几块,我又手贱的拿了一块吃
。吃完回窝,开始改昨天小朋友们做的笔试题。参加笔试的人真多。

改卷

首先先扫了一眼笔试题。然后我就开启了吐槽模式。这是谁出的试题,不让笔试者舒服不说,也不让改卷者舒服。编程题第一题这么基础。编程第二题如此变态。所以总结起来就
是第一题太基础懒得做,第二题太麻烦不愿做,第三题太难不会做。第二题这么多判断条件,又是x1,x2,改卷看的眼睛都花了。看到有些笔试者三道大题都没有写。笔试者
果然很鄙视的样子。嗯,我也很鄙视。让我再次笔试,估计也空三道。

看完试题,看正确答案,发现两个答案有问题…出题需严谨,首先要学语文。自从进入了挑刺模式后,发现试题都是稀烂的。下次应该给笔试者一张白纸,然后要求笔
试者写出至今见过的一段最诡异最优雅的算法代码。然后改卷者依据心情给分。

吐槽吐出东西太多,然后就饿了。又准备觅食。每天三食方省吾身。看着试卷,才改了4份。还有50多份。饥饿的心情瞬间陡增,和pd楼下觅食去了。

午餐

纳尼,这不是午餐,这是昨晚剩菜。应该叫晚剩午热餐。看着这菜,心中千万问候语在奔腾。看着食堂的广告,还是很平静的吃完了午餐。食堂开始运营至今已经n年了,善始者
实繁,克终者盖寡。耳边响起阴魂不散的声音…我用词永远都是那么恰当。嗯!

再改卷

或许吃饱喝足,又回到了桌前改卷。卷子上的答案总是那么喜人。做完研发的试卷,pd又让我看了一下PM的试卷。第一题抄题目都没有抄全,明明是 5, ( ),
39, 60, 105,好不好。结果漏掉了5. 我说那我给答案30, 你也不能算我错呀!

好了,下午pd开启了吐槽模式。说明明试卷上是 “脉脉”, 为啥都答“陌陌” ? 为啥还有在答题的时候,有鄙视者纠正这题出错了,就应该是“陌陌”。杭州的同学们
,你们是多么喜欢用陌陌。虽然pd用陌陌能摇出租车,也不代表你们答陌陌也给分呀。陌陌不是万能的,离开了陌陌,我不知道你们是不是万万不能。下次出题,应该出一题“
写出你有多了解陌陌,并留下陌陌号”。

然后就是估算题。竟然发现有两个笔试者用电饭煲估算家庭数的小朋友。一男一女,嗯,你们要不是情侣的话,可以介绍你们认识。牵线搭桥,红娘月老。

睡觉

自从养成了习惯,改卷也改了一半,困意起。于是去床上躺着了。睡了半个小时。

继续改卷

已经无力吐槽了。吐太多了。杭州的小朋友都不好好看书的吗?出的题目多基础呀…算了,反正我也不好好看书。

继续觅食

pd去了新白鹿餐厅,吃回来比猪还大上一圈。不错,能卖好价钱。我去了食堂,继续吃腐乳。

再次改卷

晚上回来很困,通过率明显高了些。pd说应该是我烦了。我觉得应该是我困了。改完试卷,又烧上一壶热水,开始睡觉了。晚上被鼾声吵醒的时候,热水应该就烧好了。

行程

早上坐动车历经K个小时到达杭州。下动车买杭州地铁票,票价5元到滨和路,C口出。pd用陌陌摇到了出租车。天公作美,下起了大雨。上车走起,没几分钟就到了NETE
ASE公司楼下,然后看到大家都鱼贯似的从公司出来觅食。Pd带领我们进入公寓,六层check in.
六层阿姨询问完各种事情之后,就发给了我们钥匙。钥匙很厚重,但是看起来也不防盗。pd说不用钥匙开门也就是分分钟就搞定的事。

觅食

check in 之后。放下行李和包裹。因为pd不用钥匙分分钟开门的缘故,大家都带上了贵重物品出发觅食去了。网易的食堂在工作日是17:00-19:00。我们
赶得正是时候,再晚几分钟就得去网易楼下的水池捞鱼吃了。第一次食堂饭菜给我的感觉很新鲜,感觉很高大上。有自己的食堂感觉真好。竟然还有免费的汤喝。另外还有腐乳,
嗯,还剩下最后一块,我四下看着没有人动,我就把它捞走了。吃饱喝足之后,继续回宿舍休息。

继续吃

洗漱完毕,百无聊赖。玩着饥荒游戏。pd问我是什么游戏。我说这就是饿了就吃,困了就睡的一款游戏。说着说着肚子就饿了。听说公司还有夜宵,然后就俩人一起下去继续觅
食。到了食堂发现没有开饭。工作日夜宵时间:23:00-01:00, 节假日: 23:30-00:30。这明明是工作日的夜宵,难道因为第二天休假,过了工作时间
就变成了节假日夜宵了?一边回住处一边抱怨厨师们太偷懒。在宿舍又呆了半个小时,继续出来找吃的。这次终于有夜宵了。一看…竟然是晚上没有吃完的菜。嗯,夜里继续
吃。宵夜宵夜,早上没吃完的,拿到夜里继续吃。不过烤出来的面包不错。我想如果今天晚上夜宵还没有吃完,会不会第二天继续吃。果真,我猜中了答案:第二天继续吃。直到
吃完才上新菜。

睡了吧

再次吃饱喝足。可能因为晚上吃了最后一块腐乳。肚子受不了,蹲厕所。嗯,下次还是抢新鲜的吃。pd老人家了,睡去了。睡得鼾声打的我戴耳塞都没管用。后来我烧了壶热水
倒在了他头上,瞬间就没有鼾声了,这一招真管用。嗯,这一夜睡得真好。

明天继续写今天改笔试题的事情吧。

嗯,再多说一句:pd还活着,大家不用担心。

想想从之前面试有道,到现在代表有道面试其他人。也是算是成长。

我面了许多人,只拒掉了一个。还有一个缓过。后来想想把缓过的也放行了。拒人让lead那边拒吧。

我个人放行通过的四大原则:

1. 算法ok

2. 写过代码

3. 反应灵活,思维缜密

4. 见多识广

当然这是针对二面。对于一面还是较为心狠手辣…通过率较低。

如果一道算法题不会做,一般我会再加问几道,真心不想拒人。然后工程题,嗯,从这次面试的经历看,大家都没怎么做过正规的项目。也不好拒。唉…让lead拒
吧。
给来面试者的建议:
1. 如果问啥啥都不知道,但是算法还算好,我一般会交给下一面拒掉。因为可能我知道的知识和面试者知道的知识有所不同,让下一面再试试底。另外如果简历上的写的x
xx算法都不知道原理、复杂度以及适用范围,我觉得还是不要写了,只能减分。

2. 另外会c又会一点皮毛c的,就不要说自己会面向对象编程了,因为怎么看都是像面向过程的。简历上最好就只写c吧。另外c有很多奥妙的语法和注意事项,
光靠看书和记忆是不行的。

3. 来面试的就不要自带笔纸了,除非你想拿走自己的答案改进。如果面的好,会被理解为改进。面的不好,就被认为是偷题了。

4. 某些同学见风使舵的本领还是非常厉害的。但是我真心不是为自己招兵的…其实我也只是个兵。
给有道这边的建议:

1. 面试的地方真憋屈。办公的地方不收拾一下,然后去面试,实在是脏乱差,我都想吐槽。不,是想吐。

2. 面试题大家都是临时才知道,准备的非常不充分。

3. 面试题其实就放在打印机上…我不知道是否有不自觉的小朋友拿走了。

4. 大家都在不知道简历的情况下面试。除了每面有一道统一题,基本上面不出所以然。当然也不知道他们简历上的写的这模型,那算法,这框架,那应用是个啥。嗯,还是
交给后面的人拒掉吧。

5. 吃上可口的饭的运气只有1/3. 我真心想都试吃一下,后来还是忍了。

嗯嗯,LP大人说很久都没有写blog了…嗯,补一篇吧。

0%