Author: Hendry

有你

有你,就像喧闹街边的那株新芽
是丛中一点非凡的绿

有你,就像匆忙表盘上的时针
是凌乱纷杂的时间里片刻的安宁

你是蛋糕夹心的薄荷与草莓
完整了酸甜

在海岸的石头堤坝上,
在狂乱暴虐的风雨下,
指尖相触
我们的脚下是无限的坚定
我们的背后是一片安宁

我想与你,去看每一片海
你是看得见的心
我们是看不见的盘根

2018.4.30 午后


阿尔伯特·奥布莱(Albert Aublet),《在海岸石头堤坝》(Sur Les Galets)

如何在 Nuget 发布自己的类库包

我们可以将自己实现的类库发布到 Nuget 上,方便在未来开发应用程序时,对已有代码或结构进行复用。以下是在 Nuget 发布自己类库的一个简单介绍。

1. 首先,我们需要到 nuget.org 注册并 获取 API key

2. 随后,下载 Nuget 命令行工具,建议将 nuget.exe 注册到系统的环境变量中,方便后续步骤的操作
Continue reading

最佳实践:根据条件获取集合的部分结果

很多场景下,我们需要根据一个条件判定某一集合中是否存在从中选取部分符合条件的元素用于后续操作。我们有很多方式可以实现这种需求,比如 纯手工对集合进行遍历,yield return,Any(),Count() 或 Count 属性,那么,这些实现方式对效率的影响如何?哪种实现效率较优呢?

我们来做一次实验。

首先我们定义一个类,并初始化包含有 1 万个该类型实例的集合。

    public class Item
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public bool Gender { get; set; }
        public int Age { get; set; }
        public DateTime Birthday { get; set; }
        public string Address { get; set; }
        public string Email { get; set; }
    }

Continue reading

如何将 XML 的 XSD 定义转换为 C# 类

当我们将一些配置数据存储在 XML 文档中,或希望自定义某种 XML 格式的文档时,最好先去定义 XML 对应的 XSD 规范。定义 XSD 后,我们不仅可以在 VS 等 IDE 中对相应的 XML 文件的语法进行自动检查或属性匹配,同时也可以自动生成对应的实体类,简化 XML 的创建、修改以及读取。

打开 VS,在 XSD 文件上点击鼠标右键,点选 Open Command Prompt

Continue reading

Dynamics 365: Three way to get organization unique name

We have three ways to get organization unique name in Microsoft Dynamics 365.

A. Just click on the top right corner of the user avatar, and right here (org64e4ed31).

B. Get it with PowerShell, At first, you need to download the Dynamics 365 SDK to local, and then Run the PowerShell as administrator, cd to the SDK folder, and run .\RegisterXRMTooling.ps1

Add-PSSnapin Microsoft.Xrm.Tooling.Connector
Add-PSSnapin Microsoft.Xrm.Tooling.PackageDeployment

$Cred = Get-Credential
Get-CrmOrganizations -Credential $Cred -DeploymentRegion NorthAmerica –OnlineType Office365

C. Get it from the settings page of the Dynamics 365

Click Settings -> Customization -> Developer Resources -> Unique Name

Quick Tips: Open CMD here | 在当前位置打开命令行


We can right-click the mouse with Shift key to find the "Open command here" or "Open PowerShell window here" item to open the command line at current location.

But we often need to run the command line as an administrator, so you could register the following value to Windows Register to add a new item "Open command (as Admin) here" to Windows Explorer right-click menu.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas]
"Icon"="c:\\windows\\system32\\cmd.exe"
"MUIVerb"="Open command (as Admin) here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\folder\shell\runas]
"Icon"="c:\\windows\\system32\\cmd.exe"
"MUIVerb"="Open command (as Admin) here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\folder\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

Open the Notepad and paste the text of above, save the file as OpenCMDHere.reg, and then double click this file, and click the "Yes" button in the message box.

The meaning of the above code is that we will create a new Windows shell item called "runas" at folder and the empty space in a folder, and set the Icon and propmt text.

HKEY_CLASSES_ROOT\Directory\shell, the context menu when you right-click on a folder
HKEY_CLASSES_ROOT\Directory\background, the context menu when you right-click on the "background" empty space while in a folder 

Then to define the running command of "runas" item:

cmd.exe /s /k pushd \"%V\"

That means to run the cmd.exe at the current working folder, the /k carries out the command specified by the following string so it executes the command pushd %V and since the only argument pushd accepts is a path it follows that %V a variable delivered by explorer that contains the path of the folder right clicked.

See more:
cmd command, https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490880(v%3dtechnet.10)
Pushd command, https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490978(v=technet.10)


我们可以在 Windows 的任意位置,通过 按下 Shift + 鼠标右键,来在当前位置启动 CMD 或 PowerShell。

但是,我们经常需要以管理员身份取运行 CMD,所以我们可以通过加载上述的值到注册表,来为右键菜单添加一个新的选项。将上述值保存到一个记事本中,并保存为 .reg 文件,然后双击运行,在后续提示中都选择 是,即可。

SQL Server 下 K-V 形式存储 1亿条 数据对于查询效率的影响

这是一篇2年多以前带过的实习生 Peflapos 所整理的小文,拿出来缅怀下,也希望他在新的公司一切顺利。


对1亿条 K-V 型记录查询效率的验证

关于 K-V 型存储

1. 为什么考虑 K-V 存储形式?

假设有一个 Request 类如下:

	public class Request
	{
		public Guid RequestId {get; set;};
		public string RequestName {get; set;};
		public string RequestOwner {get; set;};
	}
	

我们可以按照如下的结构把它存入数据库:

Continue reading

JavaScript: 注册粘贴事件,将剪切板中的内容去除HTML标签,并粘贴到光标位置

$("#Subject").bind('paste', function (e) {
        var pasteData = "";
        if (e.originalEvent.clipboardData) {
            pasteData = e.originalEvent.clipboardData.getData('text');
        } else {
            // for IE
            pasteData = window.clipboardData.getData("Text");
        }
        var self = this;

        // 在等待一段时间后,在当前光标位置,粘贴处理后的文本
        setTimeout(function () {
            var selection = document.getSelection();
            var cursorPos = selection.anchorOffset;
            var oldContent = selection.anchorNode.nodeValue;
        // 通过 Jquery的text() 去除所有样式
            var toInsert = $("<div>" + pasteData + "</div>").text();
            var newContent = oldContent.substring(0, cursorPos) + toInsert + oldContent.substring(cursorPos);
            selection.anchorNode.nodeValue = newContent;            
        }, 200);
        return false;
    });

2016 年度总结

这是我入职第四年的年终总结(2016年,有删节,项目及公司敏感信息已隐去),这一年真的很精彩。

 2016 年度总结

2017年1月6日

感谢 2016

2016年对于我来说是不平凡的。

2016年一切都是新的。我作为一个新人,带着一批更新的人,面对新的DEV 8。然后一起学习新的技术、新的项目、新的合作环境。

2016年一切都是陌生。面对新的部门,我不敢怠慢却又对如何才能让它拥有执行力、凝聚力而担忧、疑惑。面对新的项目,我们又该如何与别人有效、友好的合作、相处?2016年一切都是责任。作为部长、作为学长、作为兄长,是否应该无尽地扮演一名保护者的角色?泛滥的负责会不会反而成为一种不负责任呢?我又怎样才能变化自己?

2016年一切都是坚持。面对XX项目的任务,如何同大家一块儿在学习如何开发的同时,按时完成我们的开发任务?如何面对压力、如何权衡度量?当异常紧张的工作逐渐舒缓以后,我们又该如何面对自己?

“能得到锻炼能力的机会”本身就是一项极其稀缺的资源。对我自己而言,我只想用无比幸运来形容这一年,我得到了那么多的机会,然后由此或为此去尝试改变,这是最难得的经历。

Continue reading

伏案的夜

晨夏,风吹着身旁的窗户,嗒嗒作响。
我伏案而息,回想着昨夜的梦 —— 那个人,到哪里了?

风会拂去我的疲倦与困怠,一点点地,也会拂去我的年轮和腐败。
这一切都是无声的。

我看见了湖边在春日下嬉戏的孩子,柳叶飘荡。
风从山坡吹向湖边,我们背对城市广厦,只见眼前光景。

我希望风能让我变得清澈,
我希望能变成那个追风者 —— 投入你在夏的怀抱。

2017.4.27 晨

一个报了 加班 却又无心 加班 的八点三十

以前,生活充满色彩。
那时候的它就像铺满花瓣的画板,
我只是静下心,留出一抹空白,
然后随心书写那CSS的自由。

后来,他们都离去了。
我就是孤独的堂吉诃德。
保卫着身旁的幻想,
守护着四望的断壁残垣。
而生活,就像Down掉的Timer,
时间依然流逝,
可逻辑却无法执行。

我看着他,
仿佛他也看到了我一样。
他高呼理解万岁,然后独自悲伤。

生活永远不能带给我们可以备份的明天,
也无法带来能够重放的过去。
这世界无论是同步的还是异步的,
它们都已发生,唯有能做的,
就是感谢有你。

我走开,然后继续加班。

2016.6.2 一个报了加班却又无心加班的八点三十

(整理) 需求层次

整理自:http://www.cnblogs.com/zhuweisky 及 其它资料。

需求层次 理论(Maslow’s hierarchy of needs)由美国犹太裔人本主义心理学家亚伯拉罕·马斯洛(Abraham Maslow)1943年提出,是研究组织激励(motivation)时应用最广泛的理论。

马斯洛的需求金字塔分为以下几个层次。
自我实现
尊重
爱和归属感
安全需求
生理需求
Continue reading

推荐9本无码好书

向各位程序猿 推荐9本无码好书 (基本上没有代码),既可以修炼内功又可以打发时间,都非常值得阅读。

1. 《全球通史》
“欲知大道,必先为史”,这本书分为上下两册,是很多学校历史系新生的初级读物,读后发现,本书真的不枯燥,绝不是简单的历史教材,里边有很多对于具体历史问题的比对和思考,文字很生动,很耐读。

2. 《程序员修炼之道》
这本书其实很多内容在《代码大全》中都有提及,不过个人感觉算是初级讲道理读物中比较容易阅读,且容易产生共鸣的。很适合大三、大四的同学在工作、实习前阅读下,也能初窥下未来的职业发展道路。不过这种书都是最好多读几遍的,隔段时间重现再翻看下,一定会有新的收获和感悟。

3. 《编程珠玑》
这本书特别适合大二、大三同学的纠结各种算法阶段最适合的读物了,可以很好的树立初期的编程思维。这类书籍还是比较多的,另外推荐一本当年Google研究院吴军编写的《数学之美与浪潮之巅》,也算是计算机同学的必读书面了。

4. 《写给大家看的设计书》
如果你是一个前端开发(或者你是全栈开发者)想搞点艺术,那么这门就是最好的入门读物了,阅读后,你将开始重视自己代码或产品逻辑与配色、视图与用户体验的关系。
Continue reading

通过 Excel 使用 VBA 计算协方差

作为一名执著的 C# 程序员,当一位学经济的老友从国外找来,让我帮他写完 VBA 作业的时候,一开始,其实我是拒绝的。
各路VB大神,不要嘲笑在下啊,我可是足足用了一个小时才在 Excel 里到了编写 VB 代码的地方 (默认 Office 2013 的那个开发者选项是隐藏的…)
我把一夜写的代码在这里Mark一下,万一以后再有类似的VB任务也不至于抓瞎,哈哈,我是一晚上没睡觉活活憋出来的,以下代码在Excel里计算协方差。
不过话说话来,感觉各种语言都是相同的,学会一种,换成另一种也不会太恐怖。

下载这个 Excel VBA 文件:Spreadsheeting assi
Continue reading

(转载) 《火星救援》中你应该知道的5个 高可用系统故障恢复 原则

原文: http://timyang.net/architecture/martian-failure-recovery-rules/

《火星救援》是最近一部受到广泛关注的片子,讲述在一次人类登陆火星的任务中,宇航员马克·沃特尼经历了一场恶劣的风暴后,与他的机组成员失联,所有人都认为他在这次任务中丧生。然而,马克却幸运地活了下来,然而他发现自己孤单地置身于异星球。面对贫乏的生命补给,马克必须用他的聪明才智和顽强的精神存活下来,并如何寻求求救的故事。

大部分互联网系统也面临各种临时突发的故障,技术负责人及相关工程师需要及时响应故障,采取合适的手段来解决问题。因此火星救援中体现的很多原则,做法和高可用系统故障恢复是同理。

1. 故障信息的透明性原则

martian-1
Continue reading

苹果

苹果,
还剩下那被牙齿肢解后的
半个。
可能是太酸了,所以
她被人遗弃。

慢慢地,
白色果肉开始泛黄,
那黄色竟不如枯叶,
没有纹理,只有斑驳。

果皮依旧是那鲜艳的红,
可它曾包裹着的是那诱人的果香,
如今,那味道变得腐朽,
谁还愿靠近?

我不知道她今天会去哪,
但是,她的核依旧在那。
她对我说,
既然我是果实,那我一定是为了
等待下一次的新生。

An apple

2015 年度总结

时光荏苒,如果从大三时候在北京开始实习算起,这已经是我作为一个程序员的第四个年头了。重读加入现在公司以来的年终总结,感受自己的变化还是挺大的。在这里晒晒自己的心路历程,欢迎吐槽。

这是我入职第三年(刚刚过去这年的)总结(2015,有删节),2016我会更努力的成长。

 

2015 年度总结

2016年1月6日

 

从加入公司到今天,刚好是两年零五个月,时间过的很快但很充实。相比往年年终对于一年一年逝去的感慨,今年倒是更多了些平静。在一个较短的时间内,回顾这一年所发生的过往,在回忆转化为文字的过程中加以简单思考,就是下文的目的。

今年上半年,我主要在迭代和客户问题这两个方向上同时学习和工作。8月,脱离迭代开发后,专职从事客户问题和POC的处理工作。12月中旬开始,全职参加GG 2.0的初期准备工作。这一年,也尽力为Team培训了几位新人,ZZ、HH、GG、YY和SS,简单地协助其他同事辅导了TT等新人。

Continue reading

2014 年度总结

时光荏苒,如果从大三时候在北京开始实习算起,这已经是我作为一个程序员的第四个年头了。重读加入现在公司以来的年终总结,感受自己的变化还是挺大的。在这里晒晒自己的心路历程,欢迎吐槽。

这是入职第二个年头的总结(2014)。

 

2014 年度总结

201515

站在2014的年尾,回望这一年所经历过的一切,可以说,还是对得起毕业后的第一年的。这一年是我真正进入工作状态的第一年,这一年我学到了很多,无论是开发技术上、业务逻辑上,还是对工作、对自己的理解和认识上。在此,我对2014年所经历过的一些事情和感触做下总结,为的是重拾那些已经遗忘了的经历与过错,并更多的期待2015这个新的开始,这份总结写给别人,更是写给自己。

Continue reading