顺手的插件可以提高自己的工作效率,可是想要找到自己中意的那一款也不是一件易事,Ob社区截止到目前为止一共有564款插件,不能说是良莠不齐吧,只能说这些插件有不同的使命。...而我在这一年多的使用过程中,筛选了几款可能对大家有帮助的插件 Calendar 我使用频率极高的一款插件,这款插件可以在你的工作区增加一个日历看板 鼠标点击哪天就可以跳转到哪天对应的daily notes...ps:这个面板也可以收起来 Obsidian Git 使用git实现多平台笔记同步,是官方笔记同步方案的免费解决方案,前文提到过 Kanban 在Ob内实现看板系统,很多程序员朋友们肯定对这个界面很熟悉...cMenu Ob是一个markdown友好的编辑器,但是有一部分朋友对markdown并不熟悉,或者是更喜欢富文本编辑器那种点点点就能完成样式修改的方式,cMenu就提供了这样一种可能性 使用它会在你编辑区的底部多上一排按钮...Advanced Slides 虽然Ob本身提供了幻灯片演示的功能,但是样式不太好看,而这个则是增强版,可以使用markdown制作简易的ppt,在一些非正式场合,比如内部团队分享还是可以使用的,我自己也用过一次
一个运维的朋友离职,准备寻找新的机会,因为孩子要上小学,不得不考虑户口问题; 一个客户端的朋友是数学系出生,他想走搞研究的路子,因为本身喜欢做有难度的事情,更希望自己能认可自己的所作所为; 我也经常在闲暇时会思考...iOS,做web是因为中途web开发的人离职; 看似一步步都有原因,实则是自己内心太急躁。...为何时隔三年,在工作以后,还要抽出大块的时间来训练,甚至请假参加比赛? 我自己的回答是为了找回动力,找到编程的感觉。 对比一下,曾经一起玩比赛的人们,他们又在做什么?...或许有人工资高,有人公司前景好,有人技术突破天际,但那始终在自己的可视范围内。 可是,时间是一个放大器。未来,必然是截然不同。而我的路子又在哪里? 何去何从 做什么会让我开心?...我喜欢决策,喜欢寻求最优解,喜欢用一个模型来思考问题,我喜欢循序渐进的引导和教导。 已经搞不清是因为这样喜欢的编程,还是因为编程然后变成这样。 但是,就沿着这条路子继续吧。
我曾几次提及左递归是一块绊脚石,是时候去解决它了。基本的问题在于:使用递归下降解析器时,左递归会因堆栈溢出而导致程序终止。 【这是我的 PEG 系列的第 5 部分。...这通常可以使用更强大的 PEG 特性来解决,例如分组和迭代,我们可以将上述规则重写为: expr: term ('+' term)* 实际上,这正是 Python 当前语法在 pgen 解析器生成器上的写法...我看到它适用于玩具语法中的 expr 等简单情况,也适用于更复杂的情况(例如,涉及一个备选项里可选条目背后藏着的左递归,或涉及多个规则之间的相互递归),但在 Python 的语法中,我能想到的最复杂的情况仍然相当温和...所以让我们坚持干,并展示一些真实的代码。 首先,解析器生成器必须检测哪些规则是左递归的。这是图论中一个已解决的问题。...至于下周,我打算论述在语法中添加“动作”(actions),这样我们就可以为一个给定的备选项的解析方法,自定义它返回的结果(而不是总要返回一个 Node 实例)。
首先来说下API的事情,最初版本的友链朋友圈API可以说是冰老师拍脑袋想出来的,不管从代码上还是呈现效果上都显得较为粗糙,这个和冰老师本身不是工科出身有关系,不过也正因如此,不得不让我在此佩服冰老师的强大...他总能在沉寂一段时间后学到新的东西,然后给大家一个惊喜。而我的思维却已经显得有些僵化。至少我是绝对不会突破静态博客的局限,去考虑一个将各个友链博客联动起来的友链朋友圈的。...这也使得旧版的友链朋友圈一度出现一个人刷屏霸榜的现象,不得不说,观感很差(虽然那时候霸榜最多的就是我自己,以至于被冰老师改了规则制裁)。...在开发过程中,我一开始是想到用PUG语法来处理循环输出友链文章的结构,但是这样一来就会在编译生成过程中固化友链朋友圈信息,不符合它的现势性要求,而在1.0方案中,冰老师使用到了vue的循环结构来输出,后来的...CDN方案中改用了原生js语法,3.0方案最终也是使用的原生js,得益于贰猹重写过的API,编写起来十分顺滑(在这之前我一直推阻不想写的一部分原因就是这个循环结构太麻烦了,但是真到上手的时候却很容易就克服了这个难关
有些朋友的阅读速度真是令人印象深刻,我记得在《第三行代码》刚刚发售一周不到的时间里,竟然就有人已经读到第9章了(因为公众号后台有人回复第9章里隐藏的关键字)。...但是后来,我觉得PermissionX确实可以做成一个真正用于简化Android运行时权限处理的库,它所存在的意义应该不仅限于书中的教学目的,而是可以真的应用到实际的项目当中,帮助大家解决处理运行时权限的痛点...这是一项没有什么技术含量,但是你又不得不去处理的工作,因为不处理它程序就会崩溃。但如果处理起来比较简单也就算了,可事实上,Android提供给我们的运行时权限API并不友好。...而PermissionX我是准备长期维护下去的,并会持续增加更多好用的新功能。 后记 最后,一定也会有朋友想要询问,Java语言的项目能不能使用PermissionX呢?...但是写着写着发现,如果想要兼容Java语言,需要放弃很多Kotlin的语法特性,这样PermissionX用起来就不再是那么简洁了,最终只好选择了放弃Java语言的支持。
之后 在开始今天的主题之前,我不得不先向大家简单地介绍一下Obsidian。...,而我正在使用的方案则是通过obsidian git这个插件来实现数据同步。...,后面我也会介绍一两款我自己用起来顺手的插件,当然,如果现有插件不能解决你的痛点,你也可以自己开发插件解决(大多数时候并不需要)。...: 通过回答这些问题,我就可以确保自己理解了这本书的内容,下次翻阅时,也可以知道这本书的大体情况,而模板则是将执行上述流程的复杂度大大地降低了 这两个模板里提到的问题都只是对这本书的整体评价,那么具体做笔记时我采取了怎样的流程呢...同样的,我还是创建了一个模板,模板存放在【文献笔记】文件下,内容如下: 我简单解释下这个模板 【创建日期】和【出处】使用了templater插件的语法,你可以把它们理解为两个变量,它们会根据上下文自动填充上对应的值
这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。 ...在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。 3. 在网上搜索(个人推荐google~~~)。 4. 向你身边精于此道的朋友打听。 ...如果你在使用非母语的论坛提问,你可以犯点拼写和语法上的小错--但决不能 在思考上马虎(没错,我们能弄清两者的分别) ---------------------------- 使用含义丰富...问题:我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢? 提问:我能在哪找到X程序? 回答:就在我找到它的地方啊蠢货--搜索引擎的那一头。天呐! ...蠢问题:我可以在哪儿找到关于Foonly Flurbamatic的资料? 这种问法无非想得到“STFW”这样的回答
治标不治本的办法 我是Mac,哪来的IE? 直接好家伙!很多程序员的电脑都是Mac,你让我如何从macOS系统里给你找IE浏览器出来啊?要不…再配一台Windows电脑?拉倒吧!...幸亏很多国产浏览器都提供了IE内核,也就是说你可以切换至IE内核,强行模拟IE浏览器进行调试,但这始终只是模仿呀,又不是真实环境 那只能安装一个非常占空间的虚拟机,借助它提供的Windows环境来调试...ECMAScript 新语法我一个用不了 大家用的最多的就是ES5的语法了吧,或者说在大多数人的概念里,ES5应该是很低级的语法了,然而不争气的 IE 连对ES5的兼容性也不是那么完美 那么能怎么办呢...所以我们也不得不为了兼容大部分浏览器而做各种"退化"操作,比如出了ES6的语法,而我们却用ES5的语法去实现一遍ES6的语法(偷偷问一句,很多面试题是不是就这么来的?)...还有Ajax请求的写法,IE也有它单独的方法,正常的Ajax构造函数是XMLHttpRequest,而IE则是 ActiveXObject 还好这些兼容JQuery都帮我们做了,那个时代,谁不夸一句JQuery
不到一年时间,几件事情让我的想法来了一个180度的大转弯: 在一家公司里,我写了一个模拟器,这样就可以让我的 Java 服务独立运行而无需一个全功能的网站。...使用 Python 去实现,无论程序员节省了多少时间都无法挽回失去用户的损失,因为很多用户每次不得不等上十倍的时间才可以拿到分析日志报告。...注意,这不仅适用于 Java,它也适用于任何使用单一语言的场景。 对于 Java,最大的争论在于它的语法繁琐。可能吧,但那又怎样呢?我认为真正的争论是写 Java 代码需要更长的时间。...实际节省的时间非常有限,尽管有些语法特征的确让人讨厌。 我和我的同事不得不学习和掌握另一门语言、平台以及一系列类库。...错误的工具呀!还是使用 Java 吧。如果你觉得在 shell 上运行命令显得很愚蠢,编写一个工具函数就可以解决这个问题。
从文章中提供的下载可以找到core.js,打开文件就能看到一段简单的申明 再回到上面,小RR口中说的囧囧有神,我也通过好友帮忙查找到,他确实有一款仿webQQ3.0的桌面系统,并且在贴吧上出售:http.../2012/03/12/webqq.html,连QQ号都和贴吧里留的一样,这就不得不让我认为小RR就是他口中说的囧囧有神。 ...这次我就打你丫的!!! 国内的开源氛围一直很差,就是被你这种爱秀下限的人污染了。人都是被逼得无奈才造反的。我认真做我的开源作品,你喜欢可以用,我也不收费,如果你真觉得它好,欢迎资助。...而他口中说的“在去年7,8月份就看到囧囧有神有发布过web桌面类的文章”,而我在他提供的“囧囧有神”博客里却无法找到,该博客地址:http://www.orzm.net/,而我的某位朋友却能证明该博客曾经在二级域名下挂过一个...我相信我朋友说的话,即便小RR能找到囧囧有神证明那博客是囧囧有神的,那也就证实了他已购买或者非购买的形式获得了囧囧有神的代码,并原封不动进行销售或二次销售;如果不是,那只能说明囧囧有神是他虚构出来的人物
不同的公司和人,有不同的面试策略,有的考察视野、有的深入细节、有的则是评估解决问题的能力。...朋友们和我开玩笑的时候说:“你就是爱折腾,不同地点之间、不同领域之间,说,2011 年最后两个月里,多少钱捐给铁道部了?” 下面叙述的,来自我自己的经历,或者是朋友告诉我的他/她的亲身经历。...我觉得把它放到 Linux 下执行就清楚了。Google 一下、1 分钟就清楚了的问题,这样的问题并不能反映什么。...还有这样一个令我汗颜的问题,电话面试,我已经告诉面试官我手头没有纸笔,也已回答了问题的大致解法,但他还要我把这个解法的算法一行一行代码在大脑里构想出来念给他听,这个算法是关于深度遍历的算法,我要写起来怎么也得好几十行...我把它列在第一条。这些都是最基本的细节,但是可以折射出一个颇为重要的特质——尊重。但是我经历中能这样做的公司,一只手就能数的过来。
注解解析的两种方式 关于注解,我在之前的文章里有过详细的介绍,在解释 Lombok 的原理之前,推荐你先阅读 《给编译器看的注释——「注解」》 这里主要回顾一下 Lombok 注解的解析方式。...运行时解析 这是最常见的注解解析的方式,运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样就可以通过反射拿到该注解。...,不推荐使用,JDK8 中已彻底删除,自 JDK6 开始,可以使用 Pluggable Annotation Processing API 来替换它,APT 被替换主要有 2 点原因: •相关 API...在使用 javac 的过程中,它产生作用的具体流程如下所示 1.javac 对源代码进行分析,生成了一棵抽象语法树(AST) 2.运行过程中调用实现了「JSR 269 API」的 Lombok 程序...3.此时 Lombok 就对第一步骤得到的 AST 进行处理,找到@Data 注解所在类对应的语法树(AST),然后修改该语法树(AST),增加 getter 和 setter 方法定义的相应树节点
,建议英文水平可以的朋友尽量看原版更可口。...在这篇文章里,我会通过讲解一些关于简洁代码方面的建议和原则,来求证 Kotlin 是否有助于达成这样的目的。另外,我也会指出一些我们应该谨慎注意的限制之处。...Martin 的著名书籍《 Clean Code 》里的建议和规则。我们将会发掘 Kotlin 在哪里可以帮我们写出致简代码而在哪里又不能。让我们从使用 Kotlin 能够明显提升的地方开始。...我们应该分解子程序并给他们取一个可描述性的名称。这样的话,我们的代码就会变得像一个故事。而且,我们应该从主要逻辑中辨别出细节。 Kotlin 可以帮我们做到这点吗?不行,因为这些规则是无关于语言的。...就因为你能这样做,并不意味着那一定就是个好方法。在这一点上,开发者保持整洁代码与易读性的规则是至关重要的。
而在实现几个重复的业务代码时,我发现了一个更好的方式,使用领域特定语言。 最初,我是在设计一个工作流的时候,发现自己正在使用 DSL 来解决问题。...我一想好像不太对,JavaScript 的 object 不仅仅只是数据结构,它可以将方法作为对象中的值。随后,我又找到了之前写的一个表单验证的类,也使用了类似的实现。...它们通常都需要语法解析器来进行语法分析,并且通常可以在不同的语言、平台上实现。 内部 DSL,即:指与项目中使用的通用目的编程语言(Java、C#或Ruby)紧密相关的一类 DSL。...如我之前设计用于 DDD 的 stepping 看上去就像是一个配置文件,而我是使用 Jison 写了自己的语法分析: domain: 库存子域 aggregate: 库存 event: 库存已增加 event...但是这样的 DSL,并不容易使用。为了使用它,我们需要一个数据,一个流程,两个参数。而我们面向的是开发人员,越简单地 API 也就越容易使用。
但不管怎么样,它始终是在和数据打交道,同时也应该是你的主程序中唯一可以直接和数据打交道的管道,别的部分 要想和数据有接触,首先要问问它同意不同意。...3,我知道现在可能还有一些朋友在用FLASH IDE写代码,这些朋友的执着让人钦佩,但我想任何一个熟练使用过FLEX BUDIER、FD或者FDT的朋友,都绝不会再回头使用FLASH IDE写代码了。...反正单例模式的问题到底是什么,我到现在也没完全搞 懂,主要是我们的项目没碰到过此类问题,希望碰到过的朋友能再仔细跟火山说说,我也好弄清楚问题到底出在哪里了,自己以后可以更好的避免此类问题发生。...而主UI作为用户操作界面,必须大量的向主程序的mediator提供接口,或者发送events。所以主程序和主UI之间的配合必须非常密切才行。 不同的游戏类型,可以选择的UI解决方案也不同。...而且这种代理模式可以实现一个CLASS代理不同的元件,当界面只是需要修改外观,不需要修改功能时,非常方便。那么这 些CLASS是在哪里初始化并获得它要代理的MC呢?
我目前在旧金山的Adobe XD团队里担任产品经理的工作,我热爱这种设计思考的方法,它不仅让我在每天的工作里学到很多,它时常还能被运用到日常生活中去。...你可以把自己变成渴望搞清楚每个问题的小朋友。 在访谈的过程里,你需要建立一种亲密的关系并避免提出带有引导性的语言,从而让被访问者愿意主动交流。 千万别问"这个还不错吧?",而是问"你觉得这个怎么样?"...最近在Adobe我们进行了一场内部的"用户体验马拉松",我们找来公司里的设计师,让他们使用Adobe XD,而我们则在背后默默地观察他们。...我几乎尝试了所有的设计工具和原型产品,不仅仅试图去建立使用时的思维模型,还为了像一个人类学家那样,去找出我的产品目前在其所处"群落"里的位置——我的用户们到底是不是基于别的竞品或其它已存在的某些服务,来判定是否现在去使用我的产品...是什么 当你完成了和用户建立同理心的过程,则是时候开始重新思考什么是你最初的设计挑战,如果它已经变了,那么就去重新定义。
有幸的是,我的工作正是影响并帮助客户在IT技术引起的组织变革中获得成功,而我在其中的角色便是“敏捷教练”。 ?...而我恰好是一个异类,从小喜欢文科却进入了IT行业,现在看来,这件事可以看成是组织进化中的有益突变。...我会结合IT行业的“关注点分离”与教练行业的“隐喻”技术来描述我对这个问题的理解。所谓“关注点分离”,是解决复杂问题的一种系统思维方法。说白了就是把复杂问题做合理的分解,再分别研究问题的不同侧面。...两种方法结合使用,能让我们更好地理解复杂的问题。 我认为一个好的敏捷教练应该能够根据不同的目标,戴六顶不同的帽子。它们分别是:向导、教练、教师、导师、伙伴、唤醒者。 ?...在我的经验里,服务初期,客户动作往往可以照作,但也只是形式上的照做,知其然而不知其所以然,有形无神。这其中的关键便是没有理论基础的掌握,人的理念没有发生根本性变化。
我过去使用它,因为我必须使用它,但我没有特别对待它,我并没有成为一个 Subversion 的专家。几年之后,git 出现了,只能对 Subversion 挥手拜拜。...其中有一个谜题需要运行九个半小时去寻找解决方案。在它运行的过程中,我看了一下这个问题,然后发现其中数字间的一点关系,这可以用以优化解决方案。我再次运行,这次只花了 6 分钟。...如今,我们有很多方式可以选择:可以在 StackOverflow 或者其他类似的网站上回答问题;可以在午餐时间通过叫外卖来讨论技术问题——许多年前在我所在的一家公司里,我们就通过这样的方式过了一遍”Design...随着时间地推移,它慢慢地发展。我相信,如果你观察周围,你可以找到 80 个电子邮件地址,这就是它怎么起步的。万事开头小。它发展缓慢,但是成长很稳定。...我对 VSS(Visual Source Safe:用于管理软件开发中各个不同版本的源代码和文档)毫无热情。找到一个你令你感到热爱的事情,它他应该是你下班之后非常愿意做的事。
MTP在美国、日本等世界各地都得以广泛应用,它尤其适合1-5年的管理者提升团队管理水平,从实际业务场景入手,解决最普遍、最难搞的日常管理问题,但这套体系早年并没在国内普及。...最近我分享到朋友圈里,很多朋友都报名学了,也陆续收到了一些反馈,发现大家普遍觉得3个点做得很不错: 1.课程里建立了大量真实的业务场景,我就在场景里学习如何做管理,避免纸上谈兵。...最棘手的问题解决了,我开始着手团队管理和向上管理。 我用GROW模型来引导下属自己找到解决方案,对话时适度示弱,再也不会大包大揽。...03 刘欣的成长历程让我肃然起敬,有时候不得不承认,人生就是有很多转折点,高考、毕业选择的行业、甚至是成为管理者的那刻,都能影响到未来的前途与收入。...当我把视野放长,看到百人团队、千人团队的负责人都是怎么一路从小领导成长过来后,我发现: 1.每个人都是从黑暗无知的迷茫里跌跌撞撞走出来的 2.找到系统的方法,你能够搭桥过河,少走一些弯路 你可能会说,没人想停滞不前
我当时感觉到,智能硬件如果没有人工智能的东西,就是一些电子小配件,又比手机简单,它凭什么改变我们下一个世界呢?你在一个电饭煲里或者洗衣机里装了一个智能芯片,就叫智能硬件?我觉得肯定不对。...360当时主要做了摄像头,我强烈地感觉摄像头不应该只能录视频,它需要看懂发生了什么,就像人的眼睛一样。从这个想法出发,我就想到要解决人脸识别和场景识别。...只是因为计算力的提高,原来几十年前发明的算法如今可以投入使用了。 这种人工智能学习网络必须经过监督式的学习,也就是说要给它很多预先准备好的素材,它才能够训练出一个概率判断网络。...我时常就在想能不能解决这个问题,所以很自然地就觉得,既然你不能给小孩一部手机,那我们就想能不能做一个手表?把一个手机做到手表里,这样父母可以随时定位自己的孩子。...第三步我们在手表上装了个摄像头,小孩每天在外面,他可以抓拍照片。这样我们从儿童的眼睛里可以看到他每天看到的世界。 在这个过程中,我们慢慢就会有人工智能的需求了。
领取专属 10元无门槛券
手把手带您无忧上云