The Mirages

樱桃沟夹事

Here's something encrypted, password is required to continue reading.
阅读全文 »

「Trillion Dollar Coach」是Eric Schmidt, Jonathan Roseberg, Alan Eagle 三人写的关于硅谷传奇人物Bill Campbell的一本传记。

国内没有还,于是就先下了Eric Schmidt写的一个ppt先看看,又下好了电子书,等出了中文版收藏下再。

ppt里总共列了33点。第一点就振聋发聩。

  1. Your title makes you a manager, your people make you a leader.
    就是要成为一个优秀的领导者就首先必须是一个卓越的管理者。
  2. It’s the people
    对于任何管理者来说最高优先级的事情就是让他的下属幸福和成功。
  3. Strart with trip reports
    为了在组员之间建立良好和谐的关系,可以在团队会议开始的时候说一点旅游的事情等等其他非工作的事情。
  4. 5 Words on a white board
    进行一对一的谈话,并且要提前准备好,这是帮助他们更有效率和成长的最好方法。(这里没看懂前后有什么关系,等看完书再说吧)
  5. Best idea, not consensus
    管理者的工作是制定流程来听到和考虑到所有的观点,如果有必要再进行决策。
  6. Lead based on first principles
    给每个情况定义首要原则,对于公司或者产品这个原则是不可改变的。同时作为讨论其他原则的指导。
  7. Manage the Abberrant Genius
    超长天才通常都有很好的表现,但又困难的团队成员,是需要容忍甚至要保护好他们。只要他们的行为不是不道德的和没有动粗。他们的价值超过他们所带来的管理上的不利。
  8. Money’s not just about the money.
    对于跟公司目标有强烈的联系和担当的行为需要进行补偿。
  9. Innovation is where the crazy people have stature
    一个公司的目标应该是给生活带来没好。 所有其他部分都应该服务这个产品。
  10. Build an envelope of trust
    仔细倾听,公正处理,传递勇气,相信别人胜过相信自己。(这个有点难啊。)
  11. only coach the coachable
    一个值得教的人应该是拥有诚实和谦逊品质以及坚忍,热爱工作和持续学习的。
  12. Practice free-form listening
    全神贯注的倾听,不要想下一步要说什么,和问问题。
  13. No gap between statements and fact
    要坦诚相待,把消极的反馈和关心结合起来,尽快给出反馈,如果反馈是消极的,就私下里提供。
  14. Non’t stick it in their ear
    不要告诉他们应该做什么,而是应该给他们讲故事来帮助他们自己做最好的选择。
  15. Be the evangelist for courage
    相信他们胜过他们相信自己,同时推动他们更勇敢。
  16. Full identity front and center
    当人们认同工作和自我实现会让他们更有效率。
  17. Team first
    团队至上,从团队第一的角度来看每一个人。
  18. Work the team, then the problem
    碰到问题或者机会时,需要从团队的角度来看是否适当。
  19. Pick the right players
    选择队友的最高准则是寻找聪明人和有心人:快速学习、自愿努力工作,正直,坚忍,共鸣,团队优先的态度。
  20. Pair people
    成员之间的关系是关键的也是容易被忽视的, 所以寻找机会来结对工作或者讨论。
  21. Get to the table(没看懂)
    赢需要依靠最好的团队,最好的团队有更多的女性。(真的吗?)
  22. Solve the biggest problem
    处理最大的问题,大问题需要被放到前台和中心来优先处理
  23. Don’t let the bitch sessions last
    不要讨论无聊的问题,尽快转移。
  24. Winning right
    力争赢,但也要正确的的赢。 以承诺,团队工作和正直来赢的胜利。
  25. Leads lead
    当问题变差的时候,团队希望他们的领导者能够更加忠诚、有担当和果断。
  26. Fill the gaps between people
    通过倾听,观察和沟通来理解之间的分歧。
  27. It’s OK to love
    当你打破职业与人性之间的隔阂,用爱拥抱整个人时,团队就会变得更加强大.
  28. To care about people you have to care about people
    询问他们工作以外的生活,了解他们的家庭。
  29. Cheer demonstably for people and their success
    不要坐在那里,站起来向他们展示对他们所做工作的热爱。用力鼓掌,吹哨和喝彩。激励人们并且使他们保持动力。
  30. Always build community
    在工作中和工作之外建立社团, 人与人之间的管理会更加紧密。
  31. Help people
    你的时间,关系和其他资源都要大方的提供出来帮助大家。
  32. Love the founders
    对公司有远景和激情的人要给与尊重和保护
  33. Build relationships whenever you can
    当你坐电梯,穿过走廊,或者在自助餐厅碰到你的组员都可以停下来跟他们进行交谈。

最后大家可以访问 https://www.trilliondollarcoach.com

对于ToB系统一般都是销售很重的事情,因为涉及到预算会非常多,因此大家都是比较小心的。

而很多时候我们的计费方式比较粗犷,没有做到精细化控制。因为我们的模式还是销售产生订单的模式。而这样的问题就是每个客户都需要销售去谈一个价格,根本没法进行裂变。

所谓裂变的含义是客户自己来帮你推广,也可以增加你的日活月活等等。

而无论是saas还是paas的服务,如果能够做到精细化的计费方式,那我们可玩的方式就很多了。精细化的计费前提很多都需要有精细化的控制方式。

还是以贵司的客服系统为例。

现在是每个坐席每年假设收2000元钱。 那每年卖1万个就是2000万的水平,加上各种打折,估计也就剩下1200万吧。平均到一个月就是100万收入的水平。

阅读全文 »

先说线路吧。我们选的是草原天路桦皮岭进,野狐岭出。

北京段是G7转G6. 然后在河北路段是G6转7环。但是我们的线路是G6出了北京后直接从怀来下,然后走S241往赤城方向走,到了赤城可以修整一下,然后走S345往桦皮岭方向。

好处是高速费用从125元降低到46元,另外一点是可以在赤城吃点不错的,同时时间上也就差20分钟左右。因为这两段省道几乎没什么车。等京礼高速河北段通车后可以直接走这个。

回来因为我们还去张北县城吃了点饭,所以是从张北县城走的,不过也很好走,但是这段路基本都是下坡路段,小心躲着点大车,路上就碰到大车装的树干还都掉下来的。

回来就是海张高速(原张石高速)转G7转S32到G6,重点来了,从G6的东花园下,因为要避开延庆康庄的进京检查站,从东花园下,走X415和X457,同样过进京检查站,然后到康张路继续上G6,但是注意了,这一段G6只有一个车道到营城子桥上京礼高速。后面就是北六环和G7了。

阅读全文 »

之前把域名解析放到了cloudflare上,然后手贱开了dnssec。 一直也都好好的。可突然有一天发现域名无法解析了。

使用root-server.net发现也不行。然后过会是有时候行,有时候不行。

tcpdump后发现还是dnssec的问题。于是就把dnssec关了。可过了几天又发现无法解析了。

然后查了下cf的dns server还有dnssec的信息,这个它们缓存难道一直都存在的,这都快一周过去了。

想着可能cf为了降低请求,很多东西做了cache了。虽然它们的dns速度确实快(anycast),可这个也挺闹心的。而且以大宋的德性可能哪天就把cf的都毙了也未尝不可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$ dig +trace @8.8.8.8 mirages.tech

; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> +trace @8.8.8.8 mirages.tech
; (1 server found)
;; global options: +cmd
. 158841 IN NS j.root-servers.net.
. 158841 IN NS a.root-servers.net.
. 158841 IN NS i.root-servers.net.
. 158841 IN NS f.root-servers.net.
. 158841 IN NS b.root-servers.net.
. 158841 IN NS e.root-servers.net.
. 158841 IN NS h.root-servers.net.
. 158841 IN NS g.root-servers.net.
. 158841 IN NS m.root-servers.net.
. 158841 IN NS k.root-servers.net.
. 158841 IN NS d.root-servers.net.
. 158841 IN NS c.root-servers.net.
. 158841 IN NS l.root-servers.net.
. 158841 IN RRSIG NS 8 0 518400 20190909170000 20190827160000 59944 . EFpGhBQQSuo6SS3+ItlYJq7XcSH8Vu93qxd9NOwRt4shL9mbFoyB9kju ewKw0QatndXOsiWUSNQ/sE7QJs5UbK8r7OnbqHO244yCt7/eRHUKkAdh zo7jtoGLsTvCZghkKY5zEnv2guI4CaGZszFGAt7sagHVxpReqz/Y+Io1 FfeilPd8j+zll1LnELFRaEY76Y07rq6kteW3zeQaKZJK0coL0eGw5lSa MUkYv1lLZCByblRdj9ZLAgFMyc++45A7oaqjrImDeMGhLFoQHlQgmfDs GaJPq+jY5BDAs9IBEB21y7fI1hcjC+9LLqfxDhSDIpYh9AqtYDZaVAoj d1dXMw==
;; Received 525 bytes from 8.8.8.8#53(8.8.8.8) in 2 ms

tech. 172800 IN NS c.nic.tech.
tech. 172800 IN NS a.nic.tech.
tech. 172800 IN NS b.nic.tech.
tech. 172800 IN NS d.nic.tech.
tech. 86400 IN DS 50095 8 1 82F72F2462DEE25B99DA2470535AD0A7D131F1EB
tech. 86400 IN DS 50095 8 2 83F40D01141484D8F07305E5D2E44AC5663149054C598D6E9D993C66 1686C6EE
tech. 86400 IN RRSIG DS 8 1 86400 20190910200000 20190828190000 59944 . aiemKphEAyci7O+fz2CQyxFy2KfTzl+oPn+NxgT2cNHh/DDiuu3Go3EK HENZTeiT/tPu35W46bppO038X61KMdQSZsrXplQRVVMcO9Jpq42o+eOY DNF194P2WaVSTBV8q7btolQ+zu/JOs80X4dlTVR385DcF1jx30VVjKkn 2j5e1ovrT2aBNhQl/GwV2wfGRPGWZqfdLn2kW+C8RHsiZSw60JH65m0P BbTNPFfOmxlNLAdhQ6TDiSRZdY+QuMWgG2dp+DFnsp/6J1OLxHGUur6a 7uqxN+1KBAZWXaTyhW6dZDIPhRiTfSc0gWrnwAh9n4RPQpNaPeaxz41i g+lOVQ==
;; Received 656 bytes from 199.9.14.201#53(b.root-servers.net) in 160 ms

mirages.TECH. 3600 IN NS ada.ns.cloudflare.com.
mirages.TECH. 3600 IN NS ajay.ns.cloudflare.com.
9btf69hmd3n6368rdfnvtq09vgqbb2th.TECH. 3600 IN NSEC3 1 1 1 - 9CGN7IGB27MOH4RP0I7GC83KQLRBT0HF NS SOA RRSIG DNSKEY NSEC3PARAM
9btf69hmd3n6368rdfnvtq09vgqbb2th.TECH. 3600 IN RRSIG NSEC3 8 2 3600 20190920004611 20190821054820 22663 tech. A6sp04y1j3qTpuw+zw96erFS5eG8A+TJdNAe/GPdFtVqM0Q6j7dSPu8d 0s/OdB/cXWA4k1OuekhADw14Fp+aX4UiwNzq1/P2QNtyBw9J7vSnaQAs gtmVVMNG9zSuXh9G+L4yMHEc4HYIpWpg+/uKjgpIR3AcP7GK560QeIcy bL4=
qbbjqiak5v5p87kiq7o7cicsc74tfr6c.TECH. 3600 IN NSEC3 1 1 1 - QBJ1KGVM7SU62KD6TGDEFM8GT4KC22NB NS DS RRSIG
qbbjqiak5v5p87kiq7o7cicsc74tfr6c.TECH. 3600 IN RRSIG NSEC3 8 2 3600 20190925002624 20190826011721 22663 tech. U1hRPv+RSFOdGPyM8qemhZNLiB+S0FyZ15ouxIW4dGl5j8cP/yLr1fE8 JJdc8yBA4swxYgRLFHTR/Vcn8OapiVZEQ8uRGXUFFO5t7v4v+mcmx+cX ArF5BHdEZ/pli6CMmlZ4uAGbQli2qSepoZ7DaGzRIpVDm6I9YzQyTgY8 qfE=
;; Received 594 bytes from 108.59.161.6#53(d.nic.tech) in 4 ms

mirages.tech. 300 IN A 128.199.68.155
mirages.tech. 300 IN RRSIG A 13 2 300 20190830044112 20190828024112 34505 mirages.tech. TC8TpuAHCWpUHUltic8X5Sq329XqBNQNtJhAUjl2rHEk4gTLYSqj+9sX ggW8mslyTl/RapSweCoEwz/PxB62Og==
;; Received 165 bytes from 173.245.58.54#53(ada.ns.cloudflare.com) in 2 ms
阅读全文 »

从两岁半开始,孩子开始产生了“自我”的概念。在刚出生的时候是没有的,成长过程就是一个自我构建的过程。

最初儿童是通过占用属于自我的东西来区分自己合他人的。当儿童占有了自己的东西,当这个东西完全属于他时,儿童才能够感觉到“我”的存在,这也是儿童的自我诞生的标志。

而作为父母应该满足儿童的这个要求,更不要去谴责这些行为,给予一个良好的成长环境,因为这是构建自我的开端。

有些父母可能会担心这种行为是自私的表现,其实大可不必担心,因为到了4,5岁的时候,分享的敏感期就到来了。

0-6岁的儿童几乎将他所有的热情和注意力集中在自我的构建中。没有自我,就等于混同他其他人,并在人群中消失。我们所期望的创造力、幸福感、独立性、意志就无法出现我们的身上。

在两岁半开始,儿童的秩序敏感期就会来了。分为了三个阶段:

阅读全文 »

之前搞定了jira和confluence的账号同步,可是又出现了新问题。jira的邮件通知又不没效果了。

验证了下,手动发送也都没问题,那看来问题不是在邮件上了,而应该是调度上了。

先看看日志

1
Exception when evaluating if child issues panel should be displayed.

这个日志可真没什么用啊,这个是由于插件太多导致的一些兼容性问题,而且都是warn。

去Scheduler Administration看看,发现居然报500错误了,看来问题很严重,所有的调度看来都不行了。报的错误是:

阅读全文 »

本文参考了:
https://www.infoq.cn/article/raft-paper (raft paper的中文翻译)
http://www.calvinneo.com/2019/03/12/raft-algorithm/

学习任何一个新知识点我们都要先问下自己这个主要是解决什么问题的,它的优点是在哪里。

前提

首先我们要知道这个算法里都有哪些角色:

  1. Leader: 领导者
  2. Candidate: 候选者
  3. Follower: 跟随者
  4. State Machine: 状态机(就是将本地日志里的内容按顺序进行,最终得到的结果应该是一样的)

这些角色都带有哪些属性呢?

阅读全文 »

自从上次把2个confluence进行合并(space导出再导入)后。就突然发现confluence和jira之间的账号同步就生效了。老是让你看日志。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2019-XX-XX 02:53:32,298 ERROR [scheduler_Worker-7] [atlassian.crowd.directory.DbCachingDirectoryPoller] pollChanges Error occurred while refreshing the cache for directory [ 131073
].
com.atlassian.crowd.exception.OperationFailedException: javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 54610; An invalid XML character (Unicode: 0x8) was found in the element content of the document.]
at com.atlassian.crowd.integration.rest.service.RestExecutor$MethodExecutor.andReceive(RestExecutor.java:497)
at com.atlassian.crowd.integration.rest.service.RestCrowdClient.searchUsers(RestCrowdClient.java:557)
at com.atlassian.crowd.directory.RemoteCrowdDirectory.searchUsers(RemoteCrowdDirectory.java:371)
at com.atlassian.crowd.directory.ldap.cache.RemoteDirectoryCacheRefresher.findAllRemoteUsers(RemoteDirectoryCacheRefresher.java:55)
at com.atlassian.crowd.directory.ldap.cache.RemoteDirectoryCacheRefresher.synchroniseAllUsers(RemoteDirectoryCacheRefresher.java:90)
at com.atlassian.crowd.directory.ldap.cache.AbstractCacheRefresher.synchroniseAll(AbstractCacheRefresher.java:89)
at com.atlassian.crowd.directory.ldap.cache.EventTokenChangedCacheRefresher.synchroniseAll(EventTokenChangedCacheRefresher.java:67)
at com.atlassian.crowd.directory.DbCachingRemoteDirectory.synchroniseCache(DbCachingRemoteDirectory.java:1122)
at com.atlassian.crowd.manager.directory.DirectorySynchroniserImpl.synchronise(DirectorySynchroniserImpl.java:76)
at com.atlassian.crowd.directory.DbCachingDirectoryPoller.pollChanges(DbCachingDirectoryPoller.java:50)
at com.atlassian.crowd.manager.directory.monitor.poller.DirectoryPollerJobRunner.runJob(DirectoryPollerJobRunner.java:93)
at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:135)
at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:101)
at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:80)
at com.atlassian.scheduler.quartz1.Quartz1Job.execute(Quartz1Job.java:32)
at org.quartz.core.JobRunShell.run(JobRunShell.java:223)
at com.atlassian.confluence.schedule.quartz.ConfluenceQuartzThreadPool.lambda$runInThread$46(ConfluenceQuartzThreadPool.java:19)
at com.atlassian.confluence.schedule.quartz.ConfluenceQuartzThreadPool$$Lambda$95/1449220024.run(Unknown Source)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 54610; An invalid XML character (Unicode: 0x8) was found in the element content of the document.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:190)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:241)
at com.atlassian.crowd.integration.rest.service.RestExecutor$MethodExecutor.andReceive(RestExecutor.java:489)
... 18 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 54610; An invalid XML character (Unicode: 0x8) was found in the element content of the document.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
... 21 more

贵司用的版本是5.8.10, 说是XML里有 Unicode: 0x8 字符。 查了下char这个字符是退格键。 这可麻烦了。找了一圈文件里好像也没有。 放狗搜索出来的也不对。那就死马当做活马医了。

先把jira和confluence都停了。然后导出2个服务的的数据文件,进行全局替换, 再导入就齐活了。 以后再报这样的问题就明白了吧。

1
2
3
4
5
6
7
8
9
10
11
$ ./stop-confluence.sh
$ ./stop-jira.sh
$ mysqldump -hxxxx -ujira -pyyyy jira > jira.sql
$ mysqldump -hxxxx -uconfluence -pyyyy confluence > confluence.sql
$ CHAR=$(python -c 'print u"\u0008".encode("utf8")')
$ sed 's/['"$CHAR"']//g' jira.sql > jira.txt
$ sed 's/['"$CHAR"']//g' confluence.sql > confluence.txt
$ mysql -hxxxx -ujira -pyyyy jira < jira.txt
$ mysql -hxxxx -uconfluence -pyyyy confluence < confluence.txt
$ ./start-confluence.sh
$ ./start-jira.sh

替换完我们回头看看2个文件还是有差异的

阅读全文 »

豫峰是我的一个同事,也是我的一个朋友。
共事有1年多,后来跟XXX一样去了头条。
由于离得近,所以也经常联系。

但是没想到居然得了肺腺癌,还是到了转移的阶段了。看过《众病之王》的我知道这意味着什么。

但是我想告诉你的是,人生难免有波折,接受这个现实,但是并不等于放弃希望。

既然现在无解,那就按照自己的方式来过好每一天吧。

就跟《肖申克的救赎》里说的“Hope is good thing, maybe the best of things. And no good thing ever dies.”

0%