The Mirages

樱桃沟夹事

之前搞定了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.”

这个花了2个小时迅速的看完的。突然有点狠感慨。然后就想到《梦醒时分》这首歌了。

球子让我复述下为什么感慨,可又说不上来,复述能力太差。

简单来说分为3段。

第一段6岁开始,在那个衣柜里的懵懂和13岁时候的幻想。

然后接着寻找故居的时候,友人为了不让他对于没好幻想的破灭,而没有让他见哪位13岁时候天天幻想的女孩。不然这美好的回忆不就糟践了。

我们怀念的是那段“青春期”中的青春,青春不论放在哪里都是人生中最光彩的一段时间;青春期即使“无奈”,到了老年也会渐渐变得“无悔”。

阅读全文 »

这本书是著名的威尔·杜兰特写的。本书也实在是太出名了,可也是最近才看。

重点看的是经济与历史,社会主义与历史,政府与历史。很多东西跟我们的历史教材有很大的出入。

经济与历史

比如法国大革命的到来之时因为中产阶级已经上升到经济的领导地位,为了他们的企业和贸易,他们需要立法的自由,渴望得到社会的认可和政治权利。

而这些大革命的动机往往是被隐藏起来的,但是结果却是取决于群众的情绪。也就是勒庞说的那些乌合之众的情绪。

而从经济角度来看,历史总是会通货膨胀的。就是这个度的问题,很难有政府会约束好自己,肯定都是想着多发币来解决。所以对于普通民众来保有商品总是正确的,至于是不是商品期货就不是一般人能玩的了。

阅读全文 »

《第56号教室的奇迹》本书核心内容就是寻找六个阶段。

  1. 我不想惹麻烦
    我们要孩子们有良好行为表现的最终目的,是让他们相信这么做是对的,不是因为害怕惩罚才去做。因此实际中我们是要跟孩子成为朋友,让他信任你。
  2. 我想要奖赏
    我们要让孩子知道,行为得宜是应该的,不需要给予奖赏。
  3. 我想取悦某人
    这样的孩子长大后就会倍感沮丧、厌恶工作的人。
  4. 我要遵守规则
    带着孩子一起来进行规范设计,参与指定规范的孩子比较愿意遵守规定。规则固然有其必要性,然而在我们最敬仰的英雄大众,有许多人之所以成就伟业,正是因为他们不守规则。因此需要看这个是否真正发自内心真诚的。
  5. 我能体贴别人
    能帮助孩子对周围的人产生同情心是非常了不起的成就。
  6. 我有自己的行为准则并奉行不悖
    行为准则存在于个人的灵魂中,其中还包括了一份健全的人格在内。这种做事方法的人永远都有自己的目的性,而不在乎外面怎么看。比如《肖申克的救赎》里的瑞德一样。
    他的行为不是取决于恐惧、取悦他人,或是规则:他已经有自己的一套规则

后面讲的方法就感觉没有重点,感觉作者也是对于美国教育一顿批判,批判主要是太注重分数,而不关注实际的能力。

而作者本人对于阅读和写作是最重视的。其他就是德智体美劳全面发展了。

阅读不是一门科目,它是生活的基石。因此要跟孩子一起读书,去图书馆一起看书等等。

同时作者对于艺术也很推崇。接触艺术教育的孩子学到的,远远超过他们所学的艺术本身。比如加入管弦乐队的孩子不只学到了如何拉小提琴或者吹单簧管,也学到了纪律、责任、牺牲、练习、更正错误、倾听、以及时间管理。
可见团体艺术教育的培养对于孩子很有很出,从这看来什么钢琴十级这种都不重要的,重要的是在集体中。这样前面6个阶段的前面5个可能会更容易达到。

阅读全文 »

原先一直是用的let’sEncrypt的ssl证书。现在由于换到cloudflare了,按正常逻辑就得上传ssl证书才能整个CDN都用上https。但是现在也都不需要了。这个到底是怎么实现的呢?它背后的校验原理是怎么样的?

当我们访问https://mirages.tech 的时候证书是什么,看到这个证书是颁发给 sni.cloudflaressl.com 的,跟我域名完全没关系啊。

那就拿ssl工具先看下吧,正常情况下,浏览器肯定会报错的。

这里出现了

阅读全文 »

概要

本文主要是说一下中小企业的微服务化的过程和实践。具体内容会在具体部分进行展开。每个部分都展开说的话都是洋洋洒洒的。

什么是微服务

在nginx blog里有一篇文章整体概要了这个。https://www.nginx.com/blog/introduction-to-microservices/

简单来说将单体式服务拆分成各个单元。比如将一个jira的应用拆分成,用户管理,issue管理,附件管理,登录认证这些模块。而微服务一直鼓吹的优势就是如下了:

  • 方便升级,每个模块都可以独立升级。而不会影响到其他模块。(但是有前提哦,这个下面说)
  • 研发接手快。不用看完整的代码,只要单一小模块的。(可这样是真的好吗?并不觉得只看很小的一块是一个合格的开发。)而且很多本来就是模块化的。
  • 不限语言。你只要符合对外暴露的API规范,不需要管你内部是什么语言开发的。
阅读全文 »

邢亚杰老师是青少年心理教育专家,团体心理培训师,高级心理咨询师,中科院心理所发展心理学研究生,中国科学院心理所组织与员工促进(EAP)中心团体培训师,北京金色雨林学习能力研究中心专家顾问。

上面是网上摘录的,考证下下中科院心理所EAP讲师这个是真的,金色雨林专家当然也是真的。 前面几个就无法考证了,不过我想也应该是真的。

因为停车原因去的晚了,就在后面找了个位置坐了,总共大概10来个人。

之前应该一直说的是卡尔威特的故事,这人也是从《哈佛女孩刘亦婷》里写的,结果这东西也就是在中国才有的,在德国当地根本就没有。

这位老师基于一个错误的理论是否能得到一个正确的结果呢? 我想很难吧,负负得正不是那么容易的。

但是当中有些东西还是觉得挺好的。

阅读全文 »
0%