Amon's Blog

猛猛如玉

像路遥这样通过努力摆脱农村走进城市的作家,在达成愿望之后又自觉不自觉地返回了农村,并打算一辈子写农村。“在农村的时候,总有一种本能要摆脱,等到出去了,又觉得离不开这里,又会回来。这是很多从农村走去出的人共同的心情。”王天笑说。

刚炒股时:老子都上雪球了,手握百十万资产,分分钟几千几万上下,看得上你这破100元购物券?
炒股后:哪里还有这样的活动?真香!

说起股票,我算是接触的比较晚的。就连最近的2015年大牛市与大熊市都错过了,5000点是什么?李大霄是谁?那时候的我正值事业的剧烈变动中,一心只想在事业上再攀高峰。

2017年事业稍显稳定,加上手里有点资产,开始膨胀了。因缘际会之下,我接触了股市,然后开了个户,先实盘买入第一支股票:驰宏锌锗。几天后,我成功亏损了几十元。

我开始怀疑自己了,我也许不适合做这个,我的资产亏损了几十元,好像亏损了几十万,因为这几十块的差别,导致我差几十元登上福布斯排行榜,追悔莫及。

接下来,在每天的上上下下几元十几元几十元后,我厌烦了这种几块钱的买卖,准备开始加大投入。

彼时,新能源一片火热。火热的市场环境,清晰可见的未来,加上身边随处可见的比亚迪和绿色的新能源牌照,我感觉可以在此领域开启我的巴菲特投资之路。

在深入了解新能源行业的上下游情况和相关企业后,以及查看对应龙头的相关信息,我购入了第二支股票:赣锋锂业,价格60多元。

当时赣锋锂业一路上行,炙手可热。有人觉得到顶了,有人觉得还有上升空间,各种鱼龙混杂的投资者和假先知们大行其道。站在风口上,看着每天大红的持仓和不断翻动的数字,我又膨胀地觉得自己也许就是投资的料。

赣锋锂业继续向上突破,市场依然各种情绪在波动,在泛滥,而每一天的各种情绪,都是前一天的情绪在复制,在延续。

都说懂得什么时候买入的是高手,懂得什么时候卖的是大神。而我既不懂得什么时候买,也不懂得什么时候卖。买入担心下一刻就跌,卖出又担心下一刻会涨。犹豫不决之下,买入的一直在手里憋着,且时不时忍不住又贪婪地买了一些。

站在风口,猪也能飞,看着财富一天天不断的在放大,我终于有一天开始觉得坐立不安了。我咨询了一些业界前辈和专家,问他们怎么看。他们众口纷纭,有的说涨幅已经透支了未来的潜力,接下来会回调,有的说市场长期看好。当他们问我的看好的价位是多少,我随口说:120。

鬼才信呢!我默默地把心理价位定为100,一定有很多个和我一样这样想的。那么到底是永远都到不了100呢,还是不到100就故意不到100,还是到了100也不停步继续攀登,还是100压根是个无所谓的节点?

墨菲定律说如果一件事情可能发生,那么它一定会发生。2017年9月11号,赣锋锂业最高价100元整,收盘价100元整,所有人都在盯着100元整这个价位。明天好看了!

2017年9月12日,赣锋锂业开盘突破100元,交易市场剧烈变动,最高达到103.49元,唱多者和唱空者还没来及相互打脸,然后一路下行,最低90元整,最后收盘92.3元。多军和空军只能互相抚摸肿胀的脸。

至于我?我的那些憋在手里的怎么处理的?留给大家猜想吧。不过我想说的是,你们每想到的一种操作,这个市场都有人做到了。

这就是A股,一个普通的小股民的故事,它是每一个人。

手机浏览器打开 http://chls.pro/ssl,安装相关证书即可。

部分设备安装证书后还有问题,请看下面:

On iOS 10.3: Settings > General > About (logically…) > Certificate Trust Settings > Enable Full Trust for Root Certificates

参考:

https://forums.developer.apple.com/message/212408#212408

https://forums.developer.apple.com/thread/71789

https://github.com/bumaociyuan/ios-ipa-server/issues/23#issuecomment-293828854

sjy

四季怨 🎵

樱红柳绿春光转,
山碧水墨夏意暖。
云雨秋风携冬来,
犹望美人恨生晚。

qss

青衫湿 🎵

登高车马深,
倚楼山水昏。
每见尾气起,
犹思炊烟升。
挥汗十余载,
无悔付青春。
愿求她长伴,
青衫易功勋。

中美贸易战来袭:
A股:我跌
美股:我意思一下

贸易战势头加剧:
A股:我继续跌
美股:我跟跌

贸易战恐慌:
A股:我大跌
美股:我再意思一下

双方有意磋谈:
A股:我还跌
美股:该涨了吧(一次上涨抹平跌幅)

双方会谈:
A股:我涨一点意思一下
美股:涨涨涨,创新高

特朗普出尔反尔:
A股:我暴跌(一次下跌抹平涨幅)
美股:咋回事,我涨

贸易战卷土重来:
A股:我猛跌,创新低,夭寿啦夭寿啦
美股:你冷静点,我涨了

贸易战云里雾里:
A股:我继续跌,下探底部在哪
美股:不好意思,我又创新高了

贸易战不知所终:
A股:怕了吗,信不信我还是跌
美股:来人啊!救命啊!这里有个神经病啊……

pic

妻子在给女儿换衣服,
丈夫顶着蓬松的头发四处寻找,
“梳子呢,你带走了吗?”
“嗯,在包里”
丈夫转身去行李里翻找。

妻子换罢衣服,
过来从一堆行李里利索地拿起了梳子。
丈夫接过梳子去镜前梳头发。

“你为我梳一次头发吧”
“不会”
“你梳了那么多次了,给我梳一次吧”

妻子走来走去地收拾着东西,
丈夫拿着梳子跟在后面,
拗不过,妻子拿过梳子。

这是她第一次为他梳头,
零星的白发藏在一头并不浓密的头发中间,
她用手抚握住前面的头发,
用梳子轻轻地往后梳。

等到几束头发都梳到后面,
他递上捏在手中的皮筋,
她拿起皮筋将握在手中的头发扎起来。

她欠身准备继续去忙,
他拉着她的手,
不舍放开。

他凝视着镜中的自己,
还没等她们离开,
他便有些不舍了。
他对着镜子咧嘴扭曲着五官,
想记起些什么。

他换上鞋子,准备出门。
她唤女儿,
“跟爸爸来个临别的拥抱吧”
女儿马上黏了过来,
他俯下身子抱着女儿。

“明天这个时候你们就在老家啦”
“爸爸,你不跟我们回去吗”
“爸爸在这里,等你们”

他再往下俯了些,
然后起身离去。

cover

很久没走过这趟路,村前往东南的路,一条鲜有人走的路。

它算不上一条路,因为根本没有一条路。这趟路通到东南水塘上的菜园,它需要经过稻场、穿过一条条田埂、跨过排水渠,再爬上水塘埂就到了。如果绕着水塘和边上的菜园走上半圈,翻过菜园后面的一座高土埂,就可以来到隔壁村屋后。

这趟路除了附近田地的庄稼人和菜园的主人,一个寡居老人,几无人走。加上隔壁村与我们两村之间少有来往,据我所知几无亲戚或通婚之类,所以这趟路鲜有人走,又因位置偏僻加上没有可通行的路,附近村走亲戚都路过不了这里。

二姑嫁到了隔壁村的隔壁村后,我们一家便成了这趟路的少有的过客。小时候,每逢去二姑家,翻田埂、过菜园、爬上水塘,站在村前东南高处,面朝西北回望着村庄。它像一块沉睡的石头,安静地枕在风中、睡在雨里,向回望者诉说着它的不舍。

作客归来,穿过隔壁村庄从土埂下来,又一次站在村前东南高处,遥看到村庄,她四周被田地和池塘包围着,东边是高地,西边是洼地,南边是平原田地,北边是山。她蛰伏着,默默欢迎归来的人们。

当我走进村庄,拥抱了村庄,村庄拥抱了我,将我裹进怀里,露出她的一块块肌肉和血管。“不识庐山真面目,只缘身在此山中”,村庄静静的诉说着她的不一样。


很久没有走过这条路,站在东南,面向西北望着村庄。现在我回到这里,村庄也在这里,我凝视着村庄,村庄也凝视着我。

很久不见!
很久不见。
我回来了。
你回来了。
你在等我?
你在等我。
我在外地,如何等你。
你在等我。
你知道我会回来?
你会回来。
我没有想过回来。
你会回来。
你了解我?
我了解你。
呵,你看着我从小到大十几年,应该了解我。
我了解你。
谁了解你?
我了解我。
这么多年,没人了解你?
我了解我。
我不想回来,我长大了,为了远离你,去远方,再也不回来。
你会回来。
等到落叶归根?
落叶归根。
那时你还在么?
我还在。
可能你会拆掉,重建,甚至废弃?
我还在。
一直在这里?
在这里。
现在是在哪里?在梦里?
在梦里。


我站在东塘埂上望着,东头小金家起火了,隔壁大飞门前看到了熟悉的人群,村庄有了久未拥有的热闹。我背着东西,和几人一起往东南逃离。

在梦里?小金年前已经搬去新盖的新农村楼房里,拜年时我去过,300来平的独栋三层小别墅,小金媳妇与以前住在拥挤的民房里完全不一样。大飞一家搬到镇上已有几年,大飞门前怕是多少年没有人群聚集过了。

村庄凝视着我,
你会回来,
都会回来,
我见证了你祖辈们的生老病死,你们,也不例外。


醒来时,深圳三点,外面月色渐弱,远处大楼点亮的光,路灯下偶尔疾驰的车辆。
此时村庄应该是漆黑一片,天色将明,所有一切都沉睡着,除了村庄。
哪里是梦,哪里又是现实呢。

Date Histogram时区:

遇到一个按时间统计数据不一致的bug,怀疑是时区的问题,设置下时区即可。

查询语句中:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"query": {},
"aggs": {
"dateAgg": {
"date_histogram": {
"field": "@timestamp",
"interval": "1d", //1s/1m/1h/1d/1w/1M/1q/1y
"format": "yyyy-MM-dd",
"time_zone": "+08:00" //时区设置
}
}
}
}

Java 中:

1
AggregationBuilder aggregationBuilder = AggregationBuilders.dateHistogram("dateAgg").field("@timestamp").dateHistogramInterval(DateHistogramInterval.DAY).format("yyyy-MM-dd").timeZone(DateTimeZone.forID("Asia/Shanghai"));

参考资料:官方文档


Date Histogram统计后再去重

查询语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"aggs": {
"dateAgg": {
"date_histogram": {
"field": "@timestamp",
"interval": "1d",
"format": "yyyy-MM-dd",
"time_zone": "+08:00"
},
"aggs": {
"distinctUserIdAgg": {
"cardinality": {
"field": "user_id", //去重字段
"precision_threshold": 1000 //精度,范围0-40000
}
}
}
}
}

Java中:

1
2
CardinalityAggregationBuilder userIdAggregationBuilder = AggregationBuilders.cardinality("userIdAgg").field("user_id").precisionThreshold(40000);
aggregationBuilder.subAggregation(userIdAggregationBuilder);

参考资料:官方文档


根据分数区间统计

例如要统计班级学生考试分数哪个区间的人最多。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"query": {},
"aggs": {
"scoreAgg": {
"histogram": {
"field": "score", //根据哪个字段划分区间
"interval": 10, //划分区间大小
"order": {
"_count": "desc" //排序
}
}
}
}
}

参考资料:官方文档


根据分数区间统计后再去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"query": {},
"aggs": {
"scoreAgg": {
"histogram": {
"field": "score",
"interval": 10,
"order": {
"_count": "desc"
}
},
"aggs": {
"userIdAgg": {
"cardinality": {
"field": "user_id",
"precision_threshold": 1000
}
}
}
}
}
}

Fielddata is disabled on text fields by default. Set fielddata=true on xxx in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memor

这个错误的官方解释在这里: Fielddata can consume a lot of heap space, especially when loading high cardinality text fields. Once fielddata has been loaded into the heap, it remains there for the lifetime of the segment. Also, loading fielddata is an expensive process which can cause users to experience latency hits. This is why fielddata is disabled by default.

解决方案:

1
2
3
4
5
6
7
8
9
curl -XPUT 'http://{ip}:{port}/{index_name}/_mapping/{type_name}' -d '
{
"properties": {
"{field_name}": {
"type": "text",
"fielddata": true
}
}
}'
  • type_name:ES中type的值
  • field_name:要top统计字段的名字

参考资料:官方文档

cover
换 Disqus 才一年,因为被 Q,本来就清静的博客更清静了,索性再也看不到任何评论,忧伤。

最近又看到一个讨论国内社会化评论系统的帖子,兴之所致接入 Gitment。

网上有不少教程,可以按照教程一步步操作。说说我的踩坑过程:


1. 更新主题

我的博客采用的是 hexo + hexo-theme-yilia,首先更新了hexo-theme-yilia主题。

2. 配置信息

发现hexo-theme-yilia主题自带支持Gitment,如下

1
2
3
4
5
gitment_owner: #      #你的 GitHub ID
gitment_repo: '#' #存储评论的 repo
gitment_oauth:
client_id: '#' #client ID
client_secret: '#' #client secret

创建一个 OAuth application,并获取相关信息填入其中。

3. 部署博客

进入博客文章详情,可以看到文章底部已经有评论模块了。

4. 初始化评论

可以自己点进博客手动点击初始化,也可以使用自动初始化 Gitalk 和 Gitment 评论

遇到一个蛋疼的问题是当文章链接过长的时候(超过 50 个字符),会报Validation Failed错误。

解决办法:

  • 如果是手动初始化的,可以考虑在 Gitment 配置里面用page.date代替url,这样就不会超出 50 个字符了。
  • 如果是使用自动初始化的 ruby 脚本,可以改下代码,思路有几种:
    1. 将 url 截取不超过 50 个字符
    2. 将 url md5 加密或者 Base64 编码
    3. 用时间来代替(估计比较蛋疼,涉及时间格式转换)
    4. 设置博客的permalink,保证 url 长度在 50 个字符以内
    5. 其它大胆的想法…
      我采用的是第 1 种方案。

FBI Warning! FBI Warning! FBI Warning!

因为 Issue 需要和文章对应,改完代码后,还需要在博客源码里面改下 Gitment 的配置,使两处生成的值一致。

Ruby 脚本修改一处:

1
req.body = { body: url, labels: [kind, url[0,48]], title: title }.to_json

Gitment 配置修改一处:

1
2
var gitment = new Gitment({
id: "<%= url %>".substring(0,48),

为方便还晕着的,再贴下原来的代码以便区分:

原 Ruby 脚本:

1
req.body = { body: url, labels: [kind, url], title: title }.to_json

原 Gitment 配置:

1
2
var gitment = new Gitment({
id: "<%=url%>",
5. 大功告成
6. 后续问题
  • 之前旧的评论不能导入:理论上可以实现,解析 Disqus 导出的评论文件,然后添加到文章的评论内。看有无必要了。
  • 后续每次添加新文章,都需要手动初始化下评论:同样可以使用脚本初始化,或者发布文章部署时自动调用以初始化。

参考资料:

Gitment:使用 GitHub Issues 搭建评论系统

自动初始化 Gitalk 和 Gitment 评论

Gitment评论功能接入踩坑教程

0%