1,119 次浏览

Squirrel Framework 查询入门 (1)

从 Squirrel Framework 1.0.15 起,我们拥有了 4 种 MongoDB / Cosmos DB 的查询形式,分别是 定制封装、Linq、Lambda 及 Mongo Database Object Command。今天我们通过一个最简单的例子,来介绍一下最常规的查询模式,体验 MongoDB 可以给我们带来的便捷。

如何获取并使用?


正式开始

假设我们在 MongoDB 或者 Microsoft Azure Cosmos DB 中有一个 TestDatabase,其中的 UserCollection 表中拥有许多的用户信息,我们希望得到:

在按照年龄从大到小排序的情况下,选取前三名,18 到 27 岁的老姑娘,并且英文名字中必须带字母 “h”。

啧啧。同时,由于我们每个 User 对象的数据都非常大,出于存储成本及数据传递成本的考虑,我只希望得到她们的中文名和联系电话。

如果我们在常规的 SQL 数据库中进行查询,只需编写如下 SQL 语句。


SELECT TOP 3 
  ChineseName AS Girl,
  MobilePhone AS Tel
FROM
  UserCollection
WHERE
  EnglishName LIKE "%h%"
  AND Gender = 1
  AND Age > 17
  AND Age < 28
ORDER BY
  Age DESC

那么对于 NoSQL 类型的 MongoDB 数据库,我们又该如何基于 Squirrel Framework 进行查询呢?这次我们以 1.0.15 版本最新的 Linq 方式进行查询。


        private dynamic LinqQuery()
        {
            var userCollection = this.userRepository.AsQueryable();
            var regex = new Regex("h", RegexOptions.IgnoreCase);

            var query = from u in userCollection
                        where regex.IsMatch(u.Name)
                                && u.Gender == false
                                && u.Age > 17
                                && u.Age < 28
                        orderby u.Age descending
                        select new { Girl = u.ChineseName, Tel = u.MobilePhone };

            return query.Take(3).ToList();
        }

        // Get the result
        var json = JsonHelper.Serialize(this.LinqQuery());


版本说明

2,172 次浏览

JavaScript: HTML 内容折叠 (Html Content Ellipsis)

2018 年马上就要过去了,这一年真的经历了太多,本应该按惯例写写年终总结的,不过最近真的太忙了,总有些事情是更优先的,又赶上今天有人需要帮忙,索性就把解决这个小问题的代码讲一讲,全当作是对 2018 年的一个告别吧。

其实很久以前,在某个项目中也遇到过这个问题,我们在一个前端 Table (Grid) 中,希望显示出一个包含了 HTML 样式的富文本内容列,但是其内容很长,我们希望可以按照一个指定的字数进行截取(需要继续保留富文本的样式),并将字符串的剩余部分显示为 …

我们知道,通过 CSS ellipsis 也能设置 … 样式,但是这只能按照外围容器的 width 进行设定,无法按照字数进行处理。所以,为了庆祝新年,我们自己动手写一个吧!

Continue reading

34 次浏览
42 次浏览

头脑风暴会议

在此整理一下近期举行的头脑风暴会议(Brainstorming)的组织经验。

  1. 一定要在会前,提前把大纲整理、标记好,进行明细的分类,从而快速、极其明晰的方式进行讨论,不要当场进行整理。

 

  1. 一定要提前打印材料,并分发,不要只是指望现场的屏幕分享大家能够集中精力。

 

  1. 一定要有两个主持人,一个负责背景介绍、记录、纠偏、控制范围。另一个现场指定,(提高参与度)一个负责引导,推进(不给复杂工作,但是应该拥有组织能力或掌握组织方法),这样彼此之间可以互相约束,纠偏。

 

  1. 如果时间不够,要将任务横向的合并讨论(扩大讨论的目标范围),这也体现了会前大纲的重要性(能够极其明晰的量化讨论范围、点)。

 

  1. 让大家提建议的时候,一定要手写到便签上,不要通过发言的方式,因为大家不爱说话,或者不方便说话。要不断地给大家灵感、建议、诱导大家发言。

 

Brainstorming

1,289 次浏览

有你

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

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

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

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

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

2020.3.21 午后


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

33 次浏览

PMP 活动:让虚拟团队创造更高的绩效

讲师: 大连市项目管理协会 – 高屹

学习笔记

2020-03-20 FRI Hendry Qi

  1. 当前的客观现状和约束
    a. 我们身边有很多虚拟团队(远程团队)的存在
    b. 无法抗拒的客观约束不断催生更多的虚拟团队诞生(比如当前的疫情:处于安全、防疫的考虑)

  2. 这些客观原因导致虚拟团队(远程团队)、远程办公不断的普遍
    a. 虚拟团队的定义是:团队成员致力于同一个项目,却分布在不同的地理位置,彼此需要通过沟通技术来实现共同工作。
    b. 优势:即使团队成员(或个别专家)不在同一个办公位置,也可以通过在家办公被纳入团队。
    c. 挑战:虚拟团队的沟通成本高、成员易产生孤立感、团队效能低下、难以分享知识和经验、难以跟进项目进度和生产率、一旦出现问题,各自都倾向回避,不愿担责。
    d. 远程办公最大的问题是沟通,大家各扫门前雪,团队责任感降低。互相配合的时候经常出现南辕北辙。所以提高工作绩效的核心问题是解决沟通障碍。

    1. 任何企业问题的解决,都需要 整合式管理:针对一个问题,一个组织的上上下下都需要动起来,从不同的层次、角度,目标一致、责任清晰、各司其职、各显神通的去解决问题。

    2. 整合式管理 – 高层领导:应该做好的事情
      a. 工作目标清晰、准确
      i. 虚拟团队不能面对面沟通,必须通过工具来完成沟通,所以沟通中经常会发生的失真、变形、歧义、猜想。
      所以领导不能用“改善”、“加强”这种无法度量的描述来下达任务目标,而应采用符合 SMART 原则的描述 (S=Specific、M=Measurable、A=Attainable、R=Relevant、T=Time-bound) 的目标(可度量、明确清晰的)。

      b. 充分合理的授权
      i. 责与权的不对等,将直接导致下属的压力和低效
      下级 PM 应该准确明晰的得到授权。
      本地团队工作时可以通过多见面、多沟通来不断渐晰的任务目标。
      而虚拟团队的 PM 一定要得到明确、饱满、广而周知的书面授权,通过更多的授权来推动任务目标的明晰。

      c. 及时掌握项目状况
      i. 高级领导对于本地团队,只需要了解里程碑,而不用掌握细节。但是高级领导对于虚拟团队,一定要关注项目的推进过程,及时掌握项目的当前状况。应该定期(一天至一周)持续的进行沟通和跟踪,向团队施予一定的压力,有助于提高团队工作效率。

      d. 适度参与项目工作
      i. 高级领导参与项目一定要适度,不要过度参与。
      (比如,高级领导强行闯入了具有团队私密性的项目团队的微信群,这导致团队成员不感说话,领导也无法听不到所需的员工心声和状态,这导致团队失声,所以高级领导一定要记得自己的身份)
      虚拟团队使每位成员更加独立、个人工作环境也更加轻松,这是虚拟团队带来的优势,不要让高级领导的过渡监控影响到团队成员发挥个人的主动性。所以,领导最好不进项目群,而是增加点对点的沟通,这样激励的作用会被显著放大。

    3. 整合式管理 – 项目经理(PM):应该做好的事情 —— 项目经理是项目工作的第一责任人
      a. 项目团队的组建要正式
      i. 对虚拟团队成员的工作效率的监督很难,尤其是当一个成员拥有角色、多个任务时,(例如他既隶属于一个本地团队,又同时隶属于一个虚拟团队,线上线下并行工作的时候,成员往往会优先选择面对面的本地工作任务优先完成。
      所以要正式的给予成员任命,基于明确身份,并通知给所有相关方。有仪式感的方式,使得成员重视自身的身份,个人对工作的抵触感会显著降低,逆转看客的心态,增强自身责任感。(书面任命,增强责任感)

      b. 工作任务要明确的分解(WBS)
      i. PM 承诺的目标,不是由 PM 自己完成的,PM 要让团队每个成员各司其职,他要知人善用,要细化、分解工作。(工作细化,责任到人)要使工作目标碎片化、解体、从而分解成易于理解、易于管理,可管可控、责任明确到人(RACI)的任务。
      ii. 现实的项目经理(PM)往往只是:有经验、有能力、受领导信任的老员工,并没有行政职务,所以其硬权力不足(弱矩阵型)。因而 PM 不容易让团队成员产生敬畏感,所以 PM 并不适宜进行直接派工,所以最理想的责任到人的方式是让团队一起讨论、由员工主动认领任务(敏捷),这样每个团队成员所提供的是承诺,任务责任成功落地的可能性更高。
      iii. 而对于枯燥、困难的工作任务,则可以通过 PM 在团队公开的方式,进行任务指派。
      iv. 不要让少数人承担了过多的工作。技术专家、项目经理 往往会 一A到底、一R到底(RACI),过多的吸引任务火力,“能者多劳”的情况会导致过度承诺,应该从团队的角度提高大家整体的工作效率。

      c. 主动营造团队氛围
      i. 虚拟团队缺乏团队氛围,PM 要尽力营造氛围。团队氛围最好的体现方式是在工作之外!所以一定要通过工作以外的活动来提升团队氛围。例如,工作群里不要只发工作内容,要有娱乐,要建立氛围(新闻、红包雨、有趣的小视频等)。把虚拟群体的活跃度、参与度调动起来,让大家慢慢形成一种意识:每天早上起来愿意首先去看看项目群里看看大家有趣的事儿、项目新鲜的事儿,去关注团队群里发生了什么事情,而不是让大家去屏蔽、静音一个只有工作内容的群。

      d. 做好”仆人式”领导(敏捷)
      PM 做一个 Coach、Master,而不是 Manager。PM 为团队做好服务工作,尽力去解决问题,从而让 PM 赢得团队成员的信任。
      不要把自己当作领导,PM 是负责人,应该将权力应用于解决问题上,无论是工作中(回绝变更、屏蔽需求、创造适于工作的环境),还是工作外(解决成员遇到的实际生活问题)。
      仆人式的管理是让 PM 赢得团队成员的信任,从而使得成员能够主动的全力以赴。

    4. 整合式管理 – 团队成员:应该做好的事情
      a. 管理好自己的时间
      i. 远程的工作环境,使得自身难以自我约束,因而使得时间意识淡漠(帕金森定律 – 工作会自动地膨胀,直到占满所有的可用时间 )。所以,一定要切断自己的干扰源。如:微信、QQ、淘宝、社交媒体等。孩子、家人等。
      ii. 合理规划作息,定时、准时、端正的完成工作(管理好时间是管理效率的核心问题)

      b. 工作分级
      i. 我们每一个人,无论是谁,都很难同一段时间只做一个任务,所以一定要区分任务的轻重缓急!(抓大放小、不拖延)例如,使用时间管理—重要紧急四象限法则。

      c. 及时反馈问题
      i. 远程团队无法面对面的快速提问、交流,所以很多问题需要自己解决、调查。这会形成一种无助感、孤独感。
      一定要明确,你不是一个人在战斗,要及时求助,尽早暴露问题,千万不要积压问题。求助不是甩包袱,要坦诚及时,并说明好自己的实际需求,让别人知道怎么能帮你)。果断地依靠团队的力量,解决个人的困难。

      d. 学会体验成就感
      i. 每个人都希望自己的工作能够产生价值、获得成就感。可大部分人每天虽然很忙碌,但是却无法回想自己都干了什么。这会导致个人心情的沮丧、缺乏成就感,热情消失。所以每天工作的最好方式是,首先罗列工作列表,分清轻重缓急,每次只做一件事,减少不同任务的上下文切换。人的精力是有限的,没有规划的同时去做多个事情会影响效率和质量(丰田精益 Kanban 管理)。让自己清楚的知道自己完成了什么、没完成什么,形成良性循环、形成个人的内驱力,不用扬鞭自奋蹄。

而这一切的目的是通过优化管理行为,来提高团队或个人的工作绩效。

34 次浏览

VMware 提示与 Device/Credential Guard 不兼容

当我们在较新的 Windows 10 版本 (1909 或更新)使用 VMware Workstation(无论是 Pro 还是 Player 版本)时,会出现 WMware 与 Windows 自带的 Hyper-V 组件互不兼容的问题,从而报错:

“VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard. Please visit http://www.vmware.com/go/turnoff_CG_DG for more details.”

解决方法:

  1. 开始 – 运行 (Win + R) – 键入 cmd as admin
  2. 在命令提示符键入 bcdedit /set hypervisorlaunchtype off
  3. 重启电脑,即可。

存在的问题:

禁用 Hyper-V 将直接导致依赖于 Hyper-V 的 Docker Desktop 无法正常启用,我们可以下载体验(Edge)版的 Docker Desktop 来禁用与 Hyper-V 相关的功能,并改用 Windows Container。

相关资料:

https://stackoverflow.com/questions/50374506/vmware-workstation-cannot-run-on-windows-10-after-recent-update-to-windows-10
https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-10-Client&redirectedfrom=MSDN
https://www.cnblogs.com/ups216/p/6385663.html

583 次浏览

平静

我的心真的无法平静。
一粒种子在那里萌发,
一点点的,根枝蔓延。
我感觉到,它已经活在了我的生命,
无论是眼里,心里,脑海里,
还是子夜,拂晓,或是黄昏。

我努力倾听巴赫的悠扬,
那重复的悠扬。
我,变得更不平静。

一个世界因此诞生,
也因此被包裹。
你说,
浪漫的本质是不确定。
我说,
只要你爱它,它就是你的世界。

这仅仅是无时无刻的思念,
就是这样。
我想展开故事,
我要开始平静。

2019.09.26 晨

25,333 次浏览
1,556 次浏览