HashFlare
Authors Posts by lyhistory

lyhistory

29 POSTS 0 COMMENTS

0 431

在台北市,

有这样一座大楼。

看起来普普通通,

和一般的时尚大厦并无二致。

但是仔细一看,

这座9层楼高的建筑,

墙体上的每一块“砖”,

居然都是一个塑料瓶!

这座环生方舟(EcoArkPavilion)

的设计者黄谦智,

自己也没想到,

这座150万个塑料瓶

搭成的轻飘飘大房子,

原计划一年拆除,

结果两年、三年……八年过去了,

依然坚固如初。

还让他捧回了2010年

英国金融时报的“地球奖”,

2011年华尔街日报的“亚洲创新奖”。

这种让回收材料重获新生的新技术,

震惊了全世界。

第一个吃螃蟹的人,

总要经历更多的磨难。

2004年就拿到哈佛建筑学硕士学位,

黄谦智本该成为一位建筑学教授。

当他在课堂上讲起

“垃圾也可以作为建筑材料”时,

学生们表示“听不懂”。

因为当时,

还没有人做过这样的尝试。

一方面技术上迟迟没有突破。

另一方面,

全世界每年的塑料瓶生产量,

已经达到了5000亿个。

每年有超过3亿吨塑料垃圾流入环境,

(OECD2018年8月报告)。

连深海鱼

都逃不过塑料微粒的魔爪。

解剖一只迁徙途中死去的鸟,

肚里竟是触目惊心的塑料垃圾。

摄影:Chris Jordan

西藏高原上的牦牛,

正在垃圾堆里觅食。

人们总以为,

我们不是已经在做

垃圾分类回收了吗?

其实,你永远不知道

你满怀善意放进回收箱里的物品,

是被相关部门回收再销毁,

还是被某些商人回收再盈利。

这样的商人,

曾向黄谦智发出过死亡威胁。

却没能阻止他

用技术改变世界的决心。

许多人费了大劲去降解塑料,

让大自然更好“消化”这些垃圾。

黄谦智却反其道而行之,

他想做的,

是让每一块“垃圾”,

被使用得久一点、再久一点。

一个塑胶咖啡杯,

在你手上的时间可能只有10分钟,

但是回收后改造成衣物,

便能使用1年。

衣物再次回收改造成家具,

便能使用10年。

家具再次回收改造成建筑,

便能使用50年。

我们很难在短时间内,

过上“无塑料”生活,

却能让每一个垃圾

回归自然的时间,无限延长。

环生方舟就是最好的例子。

黄谦智下定决心,要做一个

100%回收材料的环保建筑。

它没有一砖一瓦,

墙体材料都是市民们募捐的垃圾,

做成的塑料瓶。

价格是玻璃帷幕的1/4,

隔热效果却要好4倍。

它没有粘合剂。

因为大部分粘合剂,

本身就是不环保的,

还是得从老祖宗的智慧里汲取营养。

就像古代的孔明锁,

利用卡榫构造互相扣合,

形成钢构锁点。

不仅不需要胶水,

还可以自由拆装。

连屏幕的供电,

都使用了最环保的太阳能。

这座全世界最轻最大的塑料房子,

通过了全世界的建筑法规,

防火、防水、放焰完全合格。

这让路透社、纽约时报、

BBC等重量级媒体都兴奋不已,

国家地理甚至

专门为他拍摄了一部纪录片:

“他就是这个时代的英雄,环保英雄!”

正是这部纪录片,

让成龙找上了黄谦智:

你有办法让青藏高原上的垃圾,

也变成建筑材料吗?

高寒的气候,

脆弱的生态,

让高原上的垃圾难以自然降解。

要在这样的环境里回收垃圾,

还要做成环保再生材料,

谈何容易。

黄谦智带领团队苦苦钻研,

终于做出了这样一个回收系统:

在第一个机器里,

一扔、一磨、一洗、一烘,

塑料瓶就变成了塑料碎片。

接着把塑料碎片放进模具,

在第二个机器里烘烤40分钟,

就能烤出环保再生砖。

5个瓶子=1块环保砖,

1个小时=184块环保砖。

看似方便的系统,

经历了无数被否定的方案,

耗上了整整两年做研发。

这些回收塑料做成的环保砖

可以像普通瓷砖一样,

被砌到室内室外的墙面和地板,

而且更防水、更轻便。

重要的是,它证明了

我们每天都在制造的垃圾,

真的可以变废为宝!

而不是在海洋和土地里,

等上数百年去降解。

可是怎么把这套回收系统,

搬到高原上呢?

黄谦智灵机一动:

微型化后用车载不就好了!

就这样,

环生零耗机(Trashpresso)诞生了!

成龙打趣道:

“就叫垃圾车吧,简单好记。”

黄谦智却说:

“就是要取个酷炫的名字。”

缺氧低温的高原环境,

夜晚没有太阳能供应,

供电系统被意外切断,

重型机器压坏了底板…

经历了重重困难,

环生零耗机

终于能在高原独立运作了。

零排放、零垃圾,

连清洗用水都是100%循环利用的。

黄谦智和成龙,

带着小朋友们一起捡垃圾,

体验垃圾变成时尚的砖块,

这种变魔术般的感觉。

有小朋友问黄谦智:

“大哥哥,我要怎样

才能像你一样做这些事?”

小朋友们的单纯和善良

让所有人动容。

孩子们不想太多,

只要是好的事,就会去做,

尽管前路艰险重重。

大家在环保砖上写下了祝愿。

成龙还一字一句地,

教小朋友们念:

“爱世界、爱地球。”

现在,环生零耗机

正在环游世界。

来到了北京成龙训练中心、

上海地球日、

伦敦设计节、

米兰设计周。

只要有环生零耗机在的地方,

垃圾就不只是被放弃的废品,

而是可以再次被利用的原料。

它向这个全世界宣告着:

垃圾,真的可以被拯救,

垃圾,真的可以很性感!

黄谦智还有诸多奇思妙想。

他用废弃的DVD

给成龙造了一座训练中心。

他用塑料瓶,

堆了一个机场转运站。

他用回收的旧鞋,

给Nike造了一个旗舰店,

他把酿啤酒的废弃物,

做成了椅子。

他把废弃的烟头,

做成了空气净化器。

看似并不相关的

垃圾与建筑,

在这位环保魔术师的手下,

变成了环保的艺术。

我们总以为,

环保离我们很远。

其实,我们吃的每粒米,

都在加工的过程中产生了垃圾。

我们喝的每瓶饮料,

都有可能给自然造成负担。

但是几乎没有人,

会在把垃圾丢进垃圾桶时,

想一想它们将去向何方。

更没有人,

在丢弃它们之前,

想一想能否动手改造、变废为宝。

黄谦智的奇妙设计,

让人们相信了,

垃圾可以变成衣服、家具、建筑,

甚至可以用来造飞机,

参与最高级复杂的产品工程。

人类的思考,

技术的进步,

真的能让这个地球,

好一点、再好一点。

而垃圾,

本就是放错了位置的资源。

只要有艺术的巧思、实干的双手,

垃圾的去处绝不止废弃桶,

反而能化身成美,

点亮我们的生活。

0 645

星云链开启了开发者奖励计划,赶紧

点击这里注册开发者,

加群区块链时代 621985033,然后再群里@群主,我可以免费送你点NAS用来部署合约到主网

所有的DAPP都在这里:https://dapp.review/explore/nas,如果不会参考学习,可以扫描文末的二维码加群找我一对一指导


##2018.05.13

我花了两天晚上写了一个小程序,已经通过审核,顺利拿到了100NAS,价值900美金

最近虽然跌了点还是差不多一个NAS 8美金左右

有兴趣的可以玩一下我写的DAPP:

http://nas.lyhistory.com/

懂JS就可以过来撸钱,如果是区块链开发方面有问题,可以加我星球一对一咨询,让你能少踩坑,少走弯路

我正在写第二个,即将完成


##2018.05.15

又经过了一晚撸代码,新的dapp又提交了


                                                 加入区块链开发者组织

official website: press.one

blog: https://blog.press.one

explain:

你该如何证明你是你? https://mp.weixin.qq.com/s/f9I7d2mGKyWLstp-WOYPEA

https://press.one/p/address/v?s=02112035d679bc6ab479f1bed0fe83783c1ca1ab3f4a742fa1b1fa00c9b0e0ccfc747334bac858399573c7f8705b6b3df6f42dc96960618ed5032a347f393cbe0&h=c8a2c4fdc2df9b762b0c7bc4377066744db5aadc10c66b741bf8a1c9c9125cd0&a=20984de7c9c35174eb8cef497174ecb0b36fe687&f=P1&v=2

 

1 1144

Scam 1# Banc de Binary – binary option

The U.S. Securities and Exchange Commission (SEC) and Commodity Futures Trading Commission (CFTC) have issued a joint warning to American investors regarding unregulated binary options.[4] and have forced a major operator, Banc de Binary, to cease operations in the US and pay back all customer losses. Many binary option “brokers” have been exposed as questionable operations. With such binary option brokers, there is no real brokerage; the customer is betting against the broker, who is acting as a bucket shop. Manipulation of price data to cause customers to lose is common. Withdrawals are regularly stalled or refused by such operations.

— https://en.wikipedia.org/wiki/Binary_option

in case these bad guys go to edit it, I make a screenshot for evidence

binary option

 

keep updating…

 

Link:
US: Stop Scams Frauds 
SG: Scam Alert 

0 1285
bailong elevator
  1. Shanghai television tower – Oriental Pearl Tower with China Red @2016.8.18。 shanghai
  2. Bailong Elevator, 326m high, the highest outdoor elevator in the world @2016.4.21bailong elevator
  3. , Zhangjiajie, Hunan province, China
    1. Tianmen Mountain National Park @2016.1.21zhangjiajie
    2. The world’s longest and highest glass bridge, Grand Canyon Glass Bridge@2016.8.20glass bridge
  4. BeiJing Labagoumen National Forest Park, autumn, @2016.10.18beijing

from: http://cul.qq.com/a/20161117/003884.htm?pgv_ref=aio2015&ptlang=2052#p=4

origin: http://www.xinhuanet.com/photo/zhuanti/20161115/hpjj1/index.htm

0 1136

一般人只看到他的英俊和冷淡,对荣与辱一律反应漠然,看不到他内心背负的沉重家庭记忆和对生命的彻底悲观。在光鲜荣耀的明星外壳下,是一个充满自毁倾向的孤独灵魂。

≮2005年2月2日,香港赤腊角机场≯

考虑到基努.李维斯的泛亚洲面孔及其在亚洲的人气,为了给他的新片《康斯坦丁》造势,好莱坞把该片的全球首映放在了香港,比美国国内的首映整整早了10天。

在影迷的尖叫声和记者的闪光灯下,李维斯步出了闸口。一般国际明星喜欢乘坐私人飞机以示气派,但基努只选择坐普通飞机,虽有十多个工作人员随行,他还是自己手提行李出闸。不知是否因为长途旅行所带来的疲惫,1米85的李维斯看起来非常苍老。比照他在《生死时速》中英气逼人的样子,不由让人心生颇多感慨。想起了他去年接受一家媒体采访是说过的一句话:“青春绝对在39岁就结束了。当你弯腰时发出声音,早上去卫生间撒第一泡尿,你就意识到这一点。”

这个40岁的男人终于发现人生很短,就象萨特所说的:“我一手扶着摇篮,一手摸着坟墓。”但是他仍然困惑,他说:“那些40岁男人的电性的杞人忧天症状一下子都冒出来了!‘我现在身在何处’、‘我从哪里来’、‘什么才是重要的’……各种疑问围绕着我,促使我重新审视自己的日常行为和价值观。”

在好莱坞的众多影星中,李维斯除了一个个角色,他留给世人的似乎只是一个消瘦而落寞的背影,还有那种英俊而冷漠的脸,在很多时候,只是毫无表情,安静地面对着镜头,面对着世人的崇拜或指责,他如同置身事外,无动于衷。虽然他已经是好莱坞薪酬最高的明星,但是对他来说,好莱坞却是个陌生的地方,那里上演着太多亦真亦假的娱乐。他有自己的世界,那个世界与好莱坞无关。

≮动荡家庭成终身阴影≯

曾经与一个美国朋友说起李维斯,他用“exotic”(异国情调的)这个词来形容他对李维斯的感觉,不仅仅是指他的外貌,也指他的气质。

其实,从基努.李维斯这个名字,我们就可以猜到他身上应该有非西方的血统。的确,李维斯的父亲塞缪尔.李维斯是个有一半夏威夷血统和一半中国血统的地质学家,而母亲帕特丽夏则是英国人。塞缪尔在贝鲁特的一家酒吧里遇见了在这家酒吧做歌舞女郎的帕特丽夏,两人一见钟情,很快就有了基努.李维斯。那是1964年。基努.李维斯的全名叫Keanu Charles Reeves,“Keanu”(念做Key-ah-nu)在夏威夷话里是“Cool breeze over the mountains”(吹过山峦的凉爽微风)的意思。

李维斯出生后,全家人搬到澳大利亚住了一年。在那里,他的妹妹Kim于1966年诞生了。在所有的家庭成员中,李维斯与她的感情最要好。在Kim出生后不久,塞缪尔离家出走回到夏威夷,帕特丽夏则带着李维斯和妹妹Kim来到纽约。在纽约,李维斯的母亲改嫁给导演保罗.艾伦。婚后,艾伦一家人搬到加拿大的多伦多居住。在这里,李维斯成为加拿大公民,直到今天都是如此。然而一年后,李维斯的母亲和继父也分道扬镳了。之后他的母亲另外嫁了两次,为李维斯再添了一个妹妹Karina。

辗转不停的搬家和动荡不安的童年生活给李维斯在心理上留下了很重的阴影,造成了他忧郁的性格,使他不相信爱情、不相信婚姻。日后他竟养成了以旅馆为家的习惯,宁住豪华酒店不置豪宅,也和这种家庭环境有很大的关系。李维斯承认他私下爱拿着莎士比亚的文学名著《哈姆雷特》大声朗读,因为字句中蔓延的忧郁感让他觉得感同身受。

李维斯最后一次见到他的生父塞缪尔是在他13岁的时候。2002年,塞缪尔在接受美国有线电视网访问时,在镜头前失声痛哭,他说自己一身是病,没多少时间了,希望分离25年的儿子基努能回来见他一面,这样他死也无憾了。塞缪尔说,自己不要求儿子给他任何东西,只要求基努的爱与宽恕。但李维斯认为,在他成长期间,父亲从来不在他的身边,断然拒绝了与他重聚的要求。阔别经年,那个男人对于他来说已经毫无意义。但血缘是如此神奇的一样东西,李维斯脸上不经意流露的矜持与羞涩,他眼中无法掩饰的戒备与固执,竟真的仿佛来自于远方那个古老的国度,那淡淡的忧郁与神秘,是宿命里他抹不去的胎记。

≮自己拆穿明星假面≯

李维斯最吸引人的不仅是他眉宇间那一点点茫然和忧郁,或许更来自高傲的寂寞和灵魂的封闭。在好莱坞的电影史上,李维斯能被提上一笔的片子,到目前为止只有《生死时速》和《黑客帝国》系列,而且都是因为票房,而不是因为他的演技。因此,有影评人说他最好的影片不过是二流的爱情片和一流的动作片。

现实的好莱坞根本不会在乎李维斯是不是能背整出的《哈姆雷特》,他们只要他扮酷。于是电影史上便有了最酷的镜头:在《黑客帝国》里,他的长腿横扫千军,所向无敌。没有一个男人像他那样,泛着冷兵器的光芒。但李维斯的梦想显然不止于此。他说:“在好莱坞,有一件事大约是没什么商量的,那就是一旦你在一部影片中挣了大钱,你就立马会拥有权势。我不想要太多的权势。我不想象埃迪.墨菲那样,他已不再适宜做演员了。但我很想有足够的成就,只有这样,人们才不会对你失去兴趣。我想拥有发言权,而不是面壁陈词。”

李维斯几乎毫无疑问地被归为“偶像明星”,但是他的言行举止与选片方向,却往往出人意表地“拆除”自己好不容易建立的形象,让观众又着迷又错愕。这到底是一种矛盾或挣扎呢?还是他自己的另类经营之道?这种不断拆穿自己明星假面却令人愈加无法辨识其真面目的作风,已经成为基努.李维斯的一项鲜明标记。

也许是因为对人生的感悟较为深刻,基努.李维斯特别喜欢饰演一些比较黑暗或颓废的人物,比如问题青年、脱线杀手、同性恋者等等。在《生死时速》使它成为好莱坞一线男星之后,李维斯并没有再接再励,在好莱坞的主流电影中继续捞金,而是接拍了大量独立制作的小成本电影。但观众对他的反应却不太热烈。跟汤姆.克鲁斯和布拉德.皮特一样,那张漂亮的脸孔成为一把双刃利器,虽然可以演主角,但在观众心目中,他们永远都是男花瓶,再多的努力都被一张脸所掩盖。

≮从自毁中获取快感≯

显然,这个时候的李维斯的事业陷入了低潮,他甚至被评为好莱坞最需要拯救的人。但李维斯依然有他自己的快乐,他组织了一个名为“天狼星”的乐队。

天狼星乐队实在是已经烂到一定水平的乐队,所有的新闻都说,只要基努.李维斯一登台,下面就欢呼尖叫响成一片;可音乐一响起,西红柿、烂苹果、杯子、酒瓶、内衣、内裤……全部飞上台来。大家都说他没什么音乐才华,但他还是坚持,因为快乐,哪怕是为一杯免费啤酒演出。在完成了《黑客帝国》系列之后,他还带着这支乐队到日本和泰国演出。

现在,李维斯又组织了一支新乐队,叫贝奇。在谈到这支乐队和天朗星乐队的区别时,他说贝奇有一个女主唱,而曲风更摇滚一些。

也许是因为孤傲而反叛,所以他特别喜欢在深更半夜飙车,而且不遵守交通规则、不带安全帽、酒醉超速。虽然玩得痛快,可基努.李维斯也因此经常光顾医院与警察局之间,难怪影迷们曾经多次看到自己心目中的大偶像戴着颈托,还拄着双拐.其实基努.李维斯之所以选择这么危险的方法放松心情,也是因为他性格中自毁的倾向过于严重。

≮洞悉生命的荒凉本质≯

《黑客帝国》系列可以说是他演艺事业的第二个转折点。尽管李维斯常常被影评人批评“木讷、呆板、演戏不得要领”,甚至有人刻薄地说:“基努总算找到了他所适合的角色:穿着黑风衣戴墨镜一言不发”,但这个系列的高票房巩固了他作为好莱坞一线明星的地位。

其实,与其说《黑客帝国》成就了李维斯的事业,不如说是李维斯成就了《黑客帝国》。你实在找不出在好莱坞还有哪位男明星的气质与尼奥如此贴近:同样困惑于自身的命运,同样对生活充满了不解,同样努力寻求生存的答案。

《黑客帝国》带给李维斯的不仅仅是事业上的成功。在拍摄《黑客帝国》第一集的时候,李维斯结识了其中一名特技替身演员詹妮弗.西姆,两人很快坠入爱河。不久,詹妮弗就发现自己有了身孕。就在李维斯为了即将成为父亲而高兴时,詹妮弗却因为吸毒而流产。之后,詹妮弗又因为车祸丧生。从此,李维斯脸上的落寞更深了,再八卦的小报上,也看不到他的绯闻。曾有记者请他谈自己的感情生活,李维斯的回答充满了苍凉:“看着我的脸,你不问自知。”

在李维斯的生命中,有两个女人占据着非常重要的位置,一个是他的母亲,另一个就是他的妹妹Kim。Kim患有血癌,为了照顾她,从来只住酒店不买房子的李维斯在好莱坞买下豪宅,并在家中安装了整套的急救设备,还聘请医学专家24小时照顾Kim。

钱有什么用,名有什么用?生命买不来,荣耀无人分享,反成凄凉。这正是李维斯的悲哀。李维斯把《黑客帝国》系列7500万美元的票房分红分给了这部系列电影的特技人员和其他工作在一线的普通的剧组人员。这种行为本身已是少见,而如此庞大的数目更是创下了好莱坞的记录。但这不是他唯一的一次:当电影公司抱怨阿尔.帕西诺过于昂贵的时候,他主动自掏腰包为《魔鬼代言人》捐助100多万美元;在《替补队员》中为了请吉恩.哈克曼出演也做过相同的事情。李维斯打破了人们对明星的模式化认知。

米兰.昆德拉说过,生命赋予我们的意义是一个没有分量却有无法承担的责任。幸福何堪?苦难何重?或许生活早已注定了无所谓幸与不幸。我们只是被各自的宿命局限着,茫然地生活,苦乐自知。基努.李维斯用他的一双冷眼,看过了生死离别,看穿了命运无常,看到了繁花落尽,所以他用掩饰的姿态来表现自己拒绝的态度。

19世纪70年代,法国诗人兰波曾经激昂地写道:“看透了。形形色色的嘴脸一览无余。受够了。城市的喧嚣,黄昏与白昼,日复一日。见多了。人生的驿站。噢,喧嚣与幻象!出发,到新的爱与新的喧闹中去!”兰波为此过早地耗尽了年轻的生命。李维斯说他一直有个心愿,就是在银幕上扮演兰波。

也许,他跟兰波一样,已经看透了一切,终有一天会悄然归去。

 

origin: http://blog.sina.com.cn/s/blog_59dfda350100c4f2.html

0 1327

徐树铮(1880年11月11日-1925年12月30日),字又铮、幼铮,号铁珊,自号则林,人称“小扇子”,江苏省徐州府萧县(今属安徽省)官桥镇醴泉村人,北洋军阀皖系将领。

出生1880年11月11日  大清江苏省徐州府萧县官桥镇醴泉村 逝世	1925年12月30日 (45岁) 中华民国 中华民国京兆特别区廊坊
出生 1880年11月11日
大清江苏省徐州府萧县官桥镇醴泉村
逝世 1925年12月30日 (45岁)
中华民国 中华民国京兆特别区廊坊
早年

徐树铮于1880年11月11日(光绪六年十月九日)出生,3岁识字,7岁能诗,13岁中秀才,17岁补廪生。

1901年,徐树铮弃文从武,到济南上书山东巡抚袁世凯,陈述经武之道,未得赏识,后被推荐为段祺瑞记室。1905年,被段保送到日本陆军士官学校就读。

经历

1910年,第七期步科毕业,回国后在段祺瑞的部队任清朝第六镇军事参议。1911年,任段祺瑞第一军总参谋。

1912年至1914年,徐树铮位居要津,叱咤风云。先后任军学司司长、军马司司长、将军府事务厅长等职。1914年5月,徐树铮任陆军部次长,年仅34岁,为次长中最年轻者。袁世凯称帝时,因其劝段祺瑞抵制,遭袁世凯罢免,在北京创办北京私立正志中学。

1916年6月,袁世凯死后,黎元洪继任总统,段祺瑞为国务院总理,徐树铮复任陆军次长兼国务院秘书长。因常对黎元洪蛮横无理,在府院之争中被革职。1917年,徐策动张勋赶走黎元洪的张勋复辟事件。事后又策划了讨伐张勋的讨逆军行动,后任陆军总次长,主张武力统一中国,消灭陆荣廷、孙中山的南方护法军。

1917年11月第二次府院之争,段祺瑞辞职。之后,徐幕后策划督军团对冯国璋施加压力,策动奉天张作霖入关抢夺军火,迫使冯国璋再度启用段祺瑞组阁。后段祺瑞复任总理兼陆军总长,徐树铮任陆军次长兼西北筹边使,升为上将。在冯段之争中,徐为段穿梭奔波,他一方面假借参加第一次世界大战为名,向日借得巨款,编参战军,为段扩兵争雄;一方面组织安福俱乐部,包办选举,成立安福国会,以巩固段之政权。

1918年3月,徐树铮任奉军副司令。6月15日,徐树铮以(驻津)奉军司令部名义,请冯玉祥姑父陆建章在天津吃饭。段祺瑞拿奉天司令部名义,把陆建章请来,就在奉军司令部把他枪毙。8月,张作霖解除徐树铮副司令职务,派孙烈臣当奉军副司令。1919年,任西北筹边使兼西北边防军总司令。1919年10月,率西北边防军第一师进入外蒙古,迫使外蒙古在在1919年11月17日正式取消自治,回归中国。孙中山电贺其成就可与傅介子、班超相比。

贴图对比一下,貌似还是军阀更爱国

waimeng

1920年,直皖两系军阀斗争激烈,徐树铮被免职,任远威将军,留北京代职。直皖两派最终爆发直皖战争,徐任皖系定国军副总司令兼参谋长。战败后,段祺瑞下台,徐被指控为“十大祸首”之最而遭通缉拿办,借日本使馆之助逃到天津,后潜入上海公共租界内匿居。

1921年,直奉两系矛盾日趋尖锐,孙中山孙中山以非常大总统名义在桂林组织大本营,计划联合段祺瑞、张作霖组成三角同盟,北伐讨直。徐树铮代表段祺瑞于次年初赴桂林与孙中山晤谈,主张孙、段、张三方联合成立全国政权,反对直系军阀政府。。

1924年9月,盘距在江苏的直系军阀齐燮元为夺取被浙江的皖系军阀卢永祥控制的上海,江浙战争爆发,徐任皖系浙沪联军总司令。皖系再次失败,他在英租界寓所内被支持直系的英国人拘捕,并强迫他乘英轮去欧洲。在途经香港时,第二次直奉战争结束,段祺瑞被推为临时执政,徐获得自由,被任命为考察欧美日本各国政治专使。遂率考察团15人,先后考察法国、英国、瑞士、意大利、德国、苏联、波兰、捷克斯洛伐克、比利时、荷兰、美国、日本等12个国家。在考察法国期间,孙中山在北京逝世,徐电致挽联。


xushuzheng1xushuzheng2xushuzheng3

1925年12月11日,徐树铮考察结束回到上海,段祺瑞以京津局面混乱电嘱其暂缓赴京,但他认为考察回国,理应复命,19日即动身赴京。复命后,于12月29日晚乘专车离开北京南下,途经京津间廊坊车站,被冯玉祥部下张之江劫持,于30日凌晨杀害复仇,时年四十五岁。翌年,归葬故里。冯玉祥的夫人是当年被徐杀死的陆建章的侄女。

人物评价
正面评价
1919年,在外蒙古撤消自治已具备相当有利的客观条件的前提下,徐树铮抓住有利契机,迅速和平地完成了撤治使命,使外蒙古最终于1919年11月17日正式呈请政府“情愿撤消自治”。徐树铮在撤治过程中发挥了巨大作用。外蒙古的回归,保证了中华民国的领土完整与主权统一。徐树铮的外蒙古治理政策对外蒙古的政治稳定、经济文化的恢复和发展均产生了一定的促进作用。孙中山对徐树铮收复外蒙古做出了极高的评价:“比得来电,谂知外蒙回心内向。吾国久无班超傅介子其人,执事(指徐)于旬日间建此奇功,以方古人,未知孰愈?外蒙纠纷,亦既七年,一旦归复,重见五族共和之盛,此宜举国欢欣鼓舞者也!”

1914年12月,中华民国北洋政府陆军次部长、西北筹边使兼西北边防军总司令徐树铮与粤东学堂总理梁士诒订立合同租赁校舍创办’正志中学(现在首都师范大学附属中学的前身)

负面评价

徐树铮极力推行段祺瑞的武力统一政策,直接和间接发动了直皖战争和第一次直奉战争,频繁的战乱使国家疮痍满目,士兵尸横累累,人民流离失所。而造成国家这样的乱局,徐树铮起到了很恶劣的作用,难辞其咎。

徐树铮是段祺瑞的灵魂,有极强才干,但锋芒毕露,过于骄狂,胆大敢干,树敌太多。 袁世凯曾这样评论徐树铮:“又铮其人,亦有小才,如循正轨,可期远到。但傲岸自是,开罪于人特多”。冯玉祥杀徐树铮,有政敌的原因,但徐树铮杀了冯玉祥原配妻子的姑父兼大恩人陆建章,也为自己埋下了祸根。

1.Test Task Async DeadLocks

Demo Code  (I am using winform app to demonstrate deadlocks which also happens on asp.net, but Console app don’t have such problem, even without calling Task.ConfigureAwait(false),codes that being ‘await’ will executed in new thread)

different between Task and Thread:

a.Task has return value (**Task.Result / **Task.GetAwaiter().GetResult())

b.Task run on created (Run/StartNew), Thread need Start after New

c.Task accept delegate/lamda, Thread accept object

d.Task can catch exception(after call ***Task.Wait() / ***Task.Result), Thread can not

Task.Run vs Task.Factory.StartNew

Task.Run Etiquette Examples: Don’t Use Task.Run in the Implementation

 

2.async await

Async Return Types

.Result and await block main Thread, ContinueWith doesn’t

 

await Task vs (Task<T> AsyncMethod).Result

async Task VS async Void  VS async Task<T>

A Tour of Task, Part 6: Results In short, await should be your go-to option for retrieving task results. The vast majority of the time, await should be used instead of Wait, Result, Exception, or GetAwaiter().GetResult().

 

Await on a completed task same as task.Result?

warning: warning CS1998: This async method lacks ‘await’ operators and will run synchronously. Consider using the ‘await’ operator to await non-blocking API calls, or ‘await Task.Run(…)’ to do CPU-bound work on a background thread.

http://stackoverflow.com/questions/13243975/suppress-warning-cs1998-this-async-method-lacks-await

Error: An asynchronous operation cannot be started at this time. Asynchronous operations may only be started within an asynchronous handler or module or during certain events in the Page lifecycle. If this exception occurred while executing a Page, ensure that the Page is marked <%@ Page Async=”true” %>.

http://stackoverflow.com/questions/13647346/calling-async-method-in-controller

Error: DeadLocks

[box title=”Don’t Block on Async Code”]

from http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html

// My “library” method.
public static async Task<JObject> GetJsonAsync(Uri uri)
{
using (var client = new HttpClient())
{
var jsonString = await client.GetStringAsync(uri);
return JObject.Parse(jsonString);
}
}
// My “top-level” method.
public void Button1_Click(…)
{
var jsonTask = GetJsonAsync(…);
textBox1.Text = jsonTask.Result;
}

The top-level method calls GetJsonAsync (within the UI/ASP.NET context).
GetJsonAsync starts the REST request by calling HttpClient.GetStringAsync (still within the context).
GetStringAsync returns an uncompleted Task, indicating the REST request is not complete.
GetJsonAsync awaits the Task returned by GetStringAsync. The context is captured and will be used to continue running the GetJsonAsync method later. GetJsonAsync returns an uncompleted Task, indicating that the GetJsonAsync method is not complete.
The top-level method synchronously blocks on the Task returned by GetJsonAsync. This blocks the context thread.
… Eventually, the REST request will complete. This completes the Task that was returned by GetStringAsync.
The continuation for GetJsonAsync is now ready to run, and it waits for the context to be available so it can execute in the context.
Deadlock. The top-level method is blocking the context thread, waiting for GetJsonAsync to complete, and GetJsonAsync is waiting for the context to be free so it can complete.

Preventing the Deadlock

There are two best practices (both covered in my intro post) that avoid this situation:

In your “library” async methods, use ConfigureAwait(false) wherever possible.
Don’t block on Tasks; use async all the way down.

Consider the first best practice. The new “library” method looks like this:

public static async Task<JObject> GetJsonAsync(Uri uri)
{
using (var client = new HttpClient())
{
var jsonString = await client.GetStringAsync(uri).ConfigureAwait(false);
return JObject.Parse(jsonString);
}
}

This changes the continuation behavior of GetJsonAsync so that it does not resume on the context. Instead, GetJsonAsync will resume on a thread pool thread. This enables GetJsonAsync to complete the Task it returned without having to re-enter the context.

Consider the second best practice. The new “top-level” methods look like this:

public async void Button1_Click(…)
{
var json = await GetJsonAsync(…);
textBox1.Text = json;
}

public class MyController : ApiController
{
public async Task<string> Get()
{
var json = await GetJsonAsync(…);
return json.ToString();
}
}

This changes the blocking behavior of the top-level methods so that the context is never actually blocked; all “waits” are “asynchronous waits”.

Note: It is best to apply both best practices. Either one will prevent the deadlock, but both must be applied to achieve maximum performance and responsiveness.

[/box]

Calling async method synchronously

void Func(){

Task<string> sCode = Task.Run(async () =>
{
string msg =await GenerateCodeAsync();
return msg;
});

}

3.Threading.Timer run Async Task

Sometimes you may encounter such a requirement that you have a timer, and you have to do a async operation inside timer’s callback which is a sync method.

(in Java they have TimerTask, but seems in C# we don’t have the equivalent class)

a.try Nito.AsyncEx – https://github.com/StephenCleary/AsyncEx

How to call asynchronous method from synchronous method in C#?

Explicitly use a Func for asynchronous lambda function when Action overload is available

b.Task based timer implement:

Is there a Task based replacement for System.Threading.Timer?

How to implement Task Async for a timer in C#?

c.I found this alternative ‘solution’, but this approach is proved not reliable.

var t = new System.Threading.Timer(async (object state) =>
{
await aysncOperation();
Console.WriteLine(“Tmr Callback on: ” + Thread.CurrentThread.ManagedThreadId);
});

here is why this approach can not work as we expect: Potential pitfalls to avoid when passing around async lambdas

 

references:

All about .NET Timers – A Comparison

MSDN:Asynchronous Programming with Async and Await (C# and Visual Basic)

Best Practices in Asynchronous Programming

Task-based Asynchronous Pattern

async & await 的前世今生

走进异步世界-犯傻也值得分享:ConfigureAwait(false)使用经验分享

C#中async编程完全代替了Task了吗

#############

System.Timers.Timer “single-threaded” usage

System.Timers.Timer t;
 
void StartTimer()  {
  t = new System.Timers.Timer();
  t.Interval = 500;
  t.AutoReset = false;
  t.Elapsed += TimerProc;
  t.Enabled = true;
}
 
void TimerProc(object sender, System.Timers.ElapsedEventArgs e) {
  Task();
  t.Enabled = true;
}
 
void Task() {
}
https://www.codeproject.com/Questions/405564/Syste-Timers-Timer-single-threaded-usage

###############

4. k__backingfield

Use DataContract DataMember, add reference System.Runtime.Serialization

 

5.there is already datareader associated with this command

http://devproconnections.com/development/solving-net-scalability-problem

6. Iterate Datetime beware of your datetime string, especially when the source is from excel

string dateStr=”2016-01-01 11:59:59″;

DateTime.ParseExtrat(dateStr,”yyyy-MM-dd”,null)  ,  result is 2016-01-01 00:00:00 (12:00:00 am)

string dateStr=”27/1/2011  11:27:19 AM”;

DateTime.TryParseExact(***, “d/M/yyyy h:m:s tt”, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)

string myValue = “12:00:00.000”;

DateTime myDate = DateTime.ParseExact(myValue, “HH:mm:ss:fff”);

C# DateTime Format: A Concise Explanation for Beginners

https://blog.udemy.com/c-sharp-datetime-format/

7.network folder

Unhandled Exception: System.ArgumentException: The UNC path should be of the form \server\share.

http://stackoverflow.com/questions/3567063/get-a-list-of-all-unc-shared-folders-on-a-local-network-server

//
// Enumerate shares on local computer
//
Console.WriteLine("\nShares on local computer:");
ShareCollection shi = ShareCollection.LocalShares;
if (shi != null)
{
foreach(Share si in shi)
{
Console.WriteLine("{0}: {1} [{2}]",
si.ShareType, si, si.Path);

// If this is a file-system share, try to
// list the first five subfolders.
// NB: If the share is on a removable device,
// you could get “Not ready” or “Access denied”
// exceptions.
if (si.IsFileSystem)
{
try
{
System.IO.DirectoryInfo d = si.Root;
System.IO.DirectoryInfo[] Flds = d.GetDirectories();
for (int i=0; i < Flds.Length && i < 5; i++) Console.WriteLine(“\t{0} – {1}”, i, Flds[i].FullName); Console.WriteLine(); } catch (Exception ex) { Console.WriteLine(“\tError listing {0}:\n\t{1}\n”, si, ex.Message); } } } } else Console.WriteLine(“Unable to enumerate the local shares.”); // // Resolve local paths to UNC paths. // Console.WriteLine(“{0} = {1}”, fileName, ShareCollection.PathToUnc(fileName));

 

8.Serialize De-serialize dynamic objects

Deserialize JSON into C# dynamic object?

http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object

Quick JSON Serialization/Deserialization in C#

 

9.Email attachment

10.OpenXML for excel

https://msdn.microsoft.com/en-us/library/bb448854.aspx

Stylizing https://blogs.msdn.microsoft.com/chrisquon/2009/11/30/stylizing-your-excel-worksheets-with-open-xml-2-0/

Set Column Width https://social.msdn.microsoft.com/Forums/en-US/37419b3b-fc97-47a4-a52f-fba62a9dcabf/how-to-open-an-existing-excel-worksheet-and-set-column-width-to-best-fit-using-openxml-sax-in-c-?forum=oxmlsdk

Open XML SDK: get “Unreadable content” error when trying to populate more than 25 columns

http://stackoverflow.com/questions/14525573/open-xml-sdk-get-unreadable-content-error-when-trying-to-populate-more-than-2

11.Unable to find manifest signing certificate in the certificate store

http://stackoverflow.com/questions/11957295/unable-to-find-manifest-signing-certificate-in-the-certificate-store-even-wh

12. Reflection


public class ObjectB
{
public int Id { get; set; }
public string Name { get; set; }
}

public class ObjectA
{
public int Id { get; set; }
public string Name { get; set; }
public ObjectB Child { get; set; }
}

a. Grap a property of ObjectB obj.GetType().GetProperty(“Name”).GetValue(obj, null);

b. Sum Of a column of generic list by passing column name anonymously List list:list.Sum(x => x.GetType().GetProperty(columnName).GetValue(x, null)).ToString();

c. Get Property Value of Nested Classes

public static class ReflectionHelper
{
public static Object GetPropValue(this Object obj, String propName)
{
string[] nameParts = propName.Split('.');
if (nameParts.Length == 1)
{
return obj.GetType().GetProperty(propName).GetValue(obj, null);
}

foreach (String part in nameParts)
{
if (obj == null) { return null; }

Type type = obj.GetType();
PropertyInfo info = type.GetProperty(part);
if (info == null) { return null; }

obj = info.GetValue(obj, null);
}
return obj;
}
}

13. SMTP

Gmail

pro#1: unable to read data from the transport connection net_io_connectionclosed

change port 465 to 587, EnableSsl = true, The .NET SmtpClient only supports encryption via STARTTLS. If the EnableSsl flag is set, the server must respond to EHLO with a STARTTLS, otherwise it will throw an exception.

pro#2: he SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required.

it may not be your code issue but high possibility is that your gmail account may encounter security blocking, simpliest way is to check whether you have rececived an email like this:

gmail_smtp_blocked_signin

then click ‘allowing access to less secure apps

if still cannot , try this https://accounts.google.com/DisplayUnlockCaptcha, unlock it

see more at http://stackoverflow.com/questions/20906077/gmail-error-the-smtp-server-requires-a-secure-connection-or-the-client-was-not

14.Compile error

1.for xml/ config file, some times got “Severity Code Description Project File Line Suppression State Error Invalid token ‘Text’ at root level of document”

right click- properties – Build Action – choose None.

2.Parser Error Message: Only one <configSections> element allowed per config file and if present must be the first child of the root

15.Quartz.Net

TimeZone problem https://forums.asp.net/t/2001087.aspx?Quartz+NET+scheduling+jobs+in+mvc+on+windows+azure

How to create a multi-task Azure Worker Role with Quartz.net

http://knightcodes.com/.net/2016/08/15/xml-configuration-for-quartz-net.html

 

16. RUN PYTHON IN .NET

Running Python script from C# and working with the results https://medium.com/@dpursanov/running-python-script-from-c-and-working-with-the-results-843e68d230e5

http://devcenter.wintellect.com/jrobbins/pdb-files-what-every-developer-must-know

WorkingDirectory

rocessStartInfo start = new ProcessStartInfo();rocessStartInfo start = new ProcessStartInfo();start.FileName = “C:\\Python27\\python.exe”;Console.Write(args.Length);// arg[0] = Path to your python script (example : “C:\\add_them.py”)// arg[1] = first arguement taken from  C#’s main method’s args variable (here i’m passing a number : 5)// arg[2] = second arguement taken from  C#’s main method’s args variable ( here i’m passing a number : 6)// pass these to your Arguements property of your ProcessStartInfo instance
start.Arguments = string.Format(“{0} {1} {2}”,args[0],args[1],args[2]);start.UseShellExecute = false;start.RedirectStandardOutput = true;using (Process process = Process.Start(start)){ using (StreamReader reader = process.StandardOutput) { string result = reader.ReadToEnd(); // this prints 11 Console.Write(result); }}

 

mvc ajax get empty data:
By default, the asp.net mvc does not allow an HTTP GET request with a JSON payload. You need to explicitly allow the behavior by using JsonRequestBehavior.AllowGet as the second parameter to the Json method like following.

return Json(returnObj, JsonRequestBehavior.AllowGet);

 

JSON decoding: Unexpected token: StartArray

the value starts from the exception position should be deserialized as an object, not a string

 

small ticks

int a = 42;
int b = 23;
double result = (double)a / b;
 string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);

 

#issues: An asynchronous module or handler completed while an asynchronous operation was still pending

https://stackoverflow.com/questions/28805796/asp-net-controller-an-asynchronous-module-or-handler-completed-while-an-asynchr/28806198

That’s because Task.Factory.StartNew does something dangerous in ASP.NET. It doesn’t register the tasks execution with ASP.NET. This can lead to edge cases where a pool recycle executes, ignoring your background task completely, causing an abnormal abort. That is why you have to use a mechanism which registers the task, such as HostingEnvironment.QueueBackgroundWorkItem.

 

Key Word: Long connection, short connection, connection pool, connection time out,thread safe

DTO, DAO, Repository, ORM,

leaky abstraction,code duplication,abstraction inversion

shows how the data layer fits into a typical application architecture

 

Concerns: resource consuming(frequency of opening/closing connection), too many calculation logic in DB(SP) may cause time out issue, concurrency issue,avoid sharing connections between threads(seems no need to concern this,connection drivers already handle it very well)

leaky abstraction(The SQL language abstracts away the procedural steps for querying a database, allowing one to merely define what one wants. But certain SQL queries are thousands of times slower than other logically equivalent queries. On an even higher level of abstraction, ORM systems, which isolate object-oriented code from the implementation of object persistence using a relational database, still force the programmer to think in terms of databases, tables, and native SQL queries as soon as performance of ORM-generated queries becomes a concern.)

Tools: DB Profile, db connector

Framework:

ORM: ORMLite, Asp.Net Entity Framework, Comparison of object-relational mapping software

Common Data Access Layer: ClownFish MySQL Connector/Net

 

Design Guidelines&Patterns:

Chapter 8: Data Layer Guidelines

Appendix C: Data Access Technology Matrix

Writing a Portable Data Access Layer

Mapping Objects to Relational Databases: O/R Mapping In Detail

Decisions on DAO pattern VS Repository(+unitOfWork) pattern
My previous school assignment was using DAO pattern.
JSP Servlets send http request, controllers process request, forward to other controllers if needed, controllers call delegates which will invoke relevant services,
services call dao(dao interface implemented by daoImpl), dao will do the crud operation.

DAO would be considered closer to the database, often table-centric. Repository would be considered closer to the Domain, dealing only in Aggregate Roots. A Repository could be implemented using DAO’s, but you wouldn’t do the opposite.
–quotes from stackoverflow
Datalayer Decisions (Repository, DAO, Services) in Domain-Driven-Design Applications

 

DB Features:

MongoDB: Support asynchronous connection

 

references:

SQL Server Connection Pooling (ADO.NET)

Go’s Connection Pool, Retries, and Timeouts

ClownFish:比手写代码还快的通用数据访问层

some misunderstanding and arguments:

DAO vs ORM(hibernate) pattern

Target:http://reg.***.com/

Crack Process demonstrated by GIF:

crack ** site reg location by LIU YUE
crack ** site reg location by LIU YUE

registration


document.domain = "**.com";
var imwebReg = {ver: 10016,inited: !1,isSeaPhone: $("imweb_phoneArea") ? !0 : !1,switchToSeaPhone: !1,cellphone: "",checkPhoneMap: {},phoneCheck_clock: 0,defaultValue: {countryId: "1",provinceId: "11",cityId: "1",country: "China",province: "Beijing",city: "Dongcheng",yearType: "0",year: "0",month: "0",day: "0"},key:
********************************************************
********************************************************
setTimeout(function() {
$.http.loadScript(imwebReg.url.ver + "?v=" + Math.random())
}, 1E3);
document.body.onmouseover = function() {
imwebReg.init();
document.body.onmouseover = null
};
function initLocation(a) {
imwebReg.loadLocation(a)
}

 

http://*****/iframe/0/en/js/location_en.js

initLocation({AFG:{n:"Afghanistan","0":{n:"",HEA:{n:"Herat"},KBL:{n:"Kabul"},KDH:{n:"Kandahar"},MZR:{n:"Mazar-iSharif"}}},ALA:{n:"Alandlslands","0":{n:"","0":{n:""}}},ALB:{n:"Albania","0":{n:"",BR:{n:"Berat"},DI:{n:"Diber"},DR:{n:"Durres"},EL:{n:"Elbasan"},FR:{n:"Fier"},GJ:{n:"Gjirokaster"},KO:{n:"Korce"},KU:{n:"Kukes"},LE:{n:"Lezhe"},SH:{n:"Shkoder"},TR:{n:"Tirane"},VL:{n:"Vlore"}}},DZA:{n:"Algeria","0":{n:"",ADR:{n:"Adrar"},ADE:{n:"AinDefla"},ATE:{n:"AinTemouchent"},ALG:{n:"Alger"},AAE:{n:"Annaba"},
BAT:{n:"Batna"},BEC:{n:"Bechar"},
********************************************************************************
*********************************************************************************
,MV:{n:"Masvingo"},MN:{n:"Matabeleland North"},MS:{n:"Matabeleland South"},MD:{n:"Midlands"}}}});

$.http.loadScript(imwebReg.url.location);

I decide to export all location data as sql script

first, get json data:

tencent registration

tencent registration

TIPS:
convert string and json format might be tricky, remember replace double quotes with \” before conversion.

by digging into data structure,
Here is my code snippets to generate sql script from the data

$.each(countryList, function(key, country) {

if (country.hasOwnProperty('n')&&country['n']!=null&&country['n']!=undefined&&country['n']!='') {
var countryCode='NULL';
var provinceCode='NULL';
var cityCode='NULL';
var countryName='NULL';
var provinceName='NULL';
var cityName='NULL';

countryCode=key;
countryName=country['n'];
$.each(country,function(key,province){
if(province.hasOwnProperty('n')&&province['n']!=null&&province['n']!=undefined&&province['n']!=''){
provinceCode=key;
provinceName=province['n'];
$.each(province,function(key,city){
if(city.hasOwnProperty('n')&&city['n']!=null&&city['n']!=undefined&&city['n']!=''){
cityCode=key;
cityName=city['n'];
}
if(key!='n'){
console.log("insert into locationEN(countryCode,provinceCode,cityCode,country,province,city) values("+countryCode+","+provinceCode+","+cityCode+","+countryName+","+provinceName+","+cityName+")");
}
});
}else{
if(key!='n'){
console.log("insert into locationEN(countryCode,provinceCode,cityCode,country,province,city) values("+countryCode+","+provinceCode+","+cityCode+","+countryName+","+provinceName+","+cityName+")");
}
}
});
}
});

RANDOM POSTS

0 2433
Lee Kuan Yew: Founder Of The Nation Time Nor Tide, Remembering Lee Kuan Yew Part 1 Part 2 rememberingleekuanyew channelnewsasia rememberingleekuanyew