- 博客(274)
- 资源 (5)
- 收藏
- 关注
原创 谈谈DDD(领域驱动设计)
前段时间组织了小红花的新一期分享快速搞定数字化项目——采用领域驱动设计(DDD)建设一个电商平台,听完池总的这个分享之后,我终于是把这两年重新热起来DDD(以下称为现代DDD)和我十几年前熟悉的DDD(以下称为古典DDD)对应起来了,在这里谈一谈。DDD当然不是什么新概念,该思想源于2003年 Eric Evans编写的“Domain-Driven Design领域驱动设计”简称DDD,Evans DDD是一套综合软件系统分析和设计的面向对象建模方法。从Wiki来看,领域模型是对业务模型的抽象,DDD是把业
2022-07-03 11:05:36
749
原创 Python虚拟环境教程:使用Virtualenv和Poetry
因为觉得有参考价值,一直打开许多页面没有关闭,浏览器的 tab 都差不多上百了,决心把一些有意义的内容通过翻译、摘录和重编的形式把核心内容快速统一到博客上来,方便后续检索,也好关掉一些浏览器窗口。本文是Python Virtual Environments tutorial using Virtualenv and Poetry的翻译、摘录和重编,原作者Dmitriy Zub,我去掉了IDE的部分,加入了一些其它内容,让它更加顺畅内聚。首先这是篇向大家介绍虚拟环境和和小教程,专注在这三个方面:简而言之,就是
2022-07-02 22:13:42
1673
1
原创 把Github用作Pypi Server
本文是 How to use GitHub as a PyPi server的翻译、摘录和重编,原作者cedd burge,我加入了一些配置和网页源码之类的内容,让它更加顺畅和完整。首先是有很多私有 Pypi Server 方案,但需要自己架设,cedd哥不想干这事,只想白嫖,最后他成功了,本文就是他的方案。首先,是可以从里安装程序包的,比如cedd哥在github托管了一个的项目,这个项目的代码结构是符合Python包规范的,那么就可以通过以下命令把这个包安装到电脑:因为这个项目是开源(公开)的,谁都可
2022-07-02 21:14:22
608
原创 比较 REST、JSON:API 和 GraphQL
首先,这篇文章是从请求效率、运维的简单性、API 可发现性、数据写入等来比较 REST、JSON:API 和 GraphQL,其中这里的 REST 就是指 RESTful 风格的 HTTP API 接口,一个接口一个接口写出来的那种,而不是类似那种设计和规范的框架做出来的。然后定义比较的指标:作者做了个表来比对:所以Dries哥态度是很明确的,他选JSON:API。接下来从这4个方面分别展开说。这里其实分了两部分内容,一部分是类似外键或引用的处理方式,另一部分是对响应体的裁剪能力。我们先来看第一部分,Dri
2022-07-02 16:27:27
1738
原创 Nginx截断uwsgi+Django(Flask)大响应体的问题及解决
昨天一个一直续费的老客户,说网站出问题了。他的网站只是简单的展示型公司官网,用 Django 做的,日常做放放产品,连交易都没有,是2016年做好一直没有动过的。年年续费很积极的优质客户反馈问题,赶紧问他咋了,他发了张图过来,说今天他编辑商品详情,发现保存按钮没有了,如下图:可以看到这个页面已经结束了,但底部的保存按钮不见了。正常的Django Admin管理后台商品编辑界面,下面有一排操作按钮。这很奇怪,为什么没改代码会突然这样。按我们程序员的思维,如果代码没改,那肯定是客户做了什么操作,问他,只是
2022-06-30 17:55:37
1181
原创 讲清楚POST和PUT的区别
在RESTful概念里,HTTP Method代表不同的语义,GET/PATCH/DELETE没有太多的困惑,但是POST/PUT经常让人分不清楚。有说POST用来创建,PUT用来修改的;也有PUT用来创建,POST用来修改的。各种一词,抛到微信群里能瞬间吵起来。其实都不对,POST和PUT都能用来创建。它们最重要的区别是由它们最基础的概念决定的,那就是PUT要实现为幂等的。所谓的幂等,就是:在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。所以在实现中,POST用来
2022-04-25 15:06:35
5005
转载 纯MongoDB实现中文全文搜索
MongoDB在2.4版中引入全文索引后几经迭代更新已经比较完美地支持以空格分隔的西语,但一直不支持中日韩等语言,社区版用户不得不通过挂接ElasticSearch等支持中文全文搜索的数据库来实现业务需求,由此引入了许多业务限制、安全问题、性能问题和技术复杂性。作者独辟蹊径,基于纯MongoDB社区版(v4.x和v5.0)实现中文全文搜索,在接近四千万个记录的商品表搜索商品名,检索时间在200ms以内,并使用Change Streams技术同步数据变化,满足了业务需要和用户体验需求。本文首先描述遇到的业务需
2022-04-24 23:26:15
2562
1
原创 当__getattr__()遇上@property,坑倒Python老司机
今天同事反馈说我写的一个基础库有一个bug,大概就是自己写的类明明有属性foo,但会抛个类似下边的异常出来,AttributeError: 'A' object has no attribute 'foo'这很让人困惑啊,因为抛出异常的函数是基类的__getattr__()方法,所以他就找我来解决了。我看代码也是一脸懵,这个foo就摆在那里,这个bug给了我一个眼见不为实的错觉,一时找不到方向。突然我发现这个foo上面顶着个@property的帽子(装饰器),咦,会不会和这个有关系呢?于是搜索一下,就
2021-04-08 23:23:43
930
原创 从redis list中获取多个元素
因为redis服务器和计算服务器有比较长的通信时间,发现取多个元素的时候,有很多IO等待,影响了并发效率。放狗去搜,很快发现redis的lpop支持count参数,见:https://redis.io/commands/lpop可细看之下,发现是6.2版本才加入的新特性,而我们使用的是6.0版本,暂时没办法用上了。再去找资料,发现redis pipeline可以加速redis查询,见:https://redis.io/topics/pipelining整体的原理就是pipeline是执行的时候一次
2021-02-28 10:37:05
3310
原创 mongodb的部分索引和稀疏索引
部分索引(partial index)是稀疏索引(sparse index)的超集,也就是说,能用稀疏索引完成的事,用部分索引也能完成。部分索引理论上可以让索引的尺寸(内存和硬盘占用)更小,另外也可以优化写操作的性能。部分索引可以根据不同的业务需求在同一个字段上建立不同的索引,可以达到最佳性能。而稀疏索引只能利用字段是否存在来决定是否索引该文档,灵活性上也差了一截。部分索引和稀疏索引都有可能不被查询器选用,所以要在确定使用某一个部分索引或稀疏索引的查询上用hint指定使用的索引。建立部分索引或稀疏.
2021-02-19 09:52:13
894
原创 mongodb复合索引的ESR原则
For compound indexes, this rule of thumb is helpful in deciding the order of fields in the index:First, add those fields against which Equality queries are run.The next fields to be indexed should reflect the Sort order of the query.The last fields re.
2021-02-16 22:38:41
1603
原创 用80行代码数1000个孔——《Python也可以》之四
年前在狗东新买了一个茶滤,店家号称有921个孔,我觉得好像有点“夸张”,总想证实一下。肉眼肯定是数不过来了,所以我就想着要不写个程序来数吧,就拍了张照片放着。年前太忙了,然后又是过年,昨天终于有空了,便写了个80行的小脚本数了一下。预处理因为是白瓷,所以洞孔最好全黑,于是拍照的时候我就在下面放了个黑色的无纺布袋子,拍出来的效果还可以。用微信传到电脑上,然后简单地用macOS自带的图像app处理一下,主要是去掉边缘无关元素和调整明暗。预处理完成以后如下图:概述总体来说,这是一个很简单的任
2021-02-15 12:25:37
826
原创 最容易的编译webrtc方案
怎么编译webrtc,在网上可以说是一搜一大把,基本上结合几篇文章,肯定能编译出来了。真正的麻烦在于构建编译环境,简单来说,就是要有一台稳定地访问webrtc代码库的编译机器:因为webrtc的git仓库是难以访问的。好久以前折腾过一次这件事情,后来就放下了也没有说,最近有朋友又问到我,我就在这里记一下吧。简单来说,买一台海外服务器,装windows系统,然后用remote desktop连...
2020-04-13 10:08:10
1125
1
原创 macOS brew 更新后Python 2找不到md5
前几天,不知道干了啥,比较值得怀疑的是当时执行brew install supervisor更新了一堆应用程序,然后只要cd ~或者回车一下,就会吐出一堆错误来。ERROR:root:code for hash md5 was not found.Traceback (most recent call last): File "/usr/local/Cellar/python@2/2.7....
2020-04-12 21:38:27
6089
1
原创 在macOS上用supervisor构建稳定的SSH转发
之前一直使用SSH指定端口转发请求,一直能用,但是很烦。因为每次都要输入密码之类的,而且经常会断开,断开后又输密码,神烦。前几日决心解决这个问题,作为一名Python开发者,首先想到的就是supervisor,最后也证明这个想法行得通。先brew install supervisor把它安装上,然后运行brew service start supervisor运行起来。打开/usr/local/...
2020-04-12 00:50:09
969
原创 当webrtc遇上_ITERATOR_DEBUG_LEVEL
编译webrtc就挺困难的,因为要访问的工具、代码仓库等等都很不容易,编译完成后,拿webrtc.lib到项目里一集成,你可能就会遇到这个问题:error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj如果用的是中文版的VC++,如错信息...
2020-03-01 11:36:01
1628
4
原创 公司网络配置2020
真的是年纪大了,很多东西都很快很快就忘记了,还是要找个地方起来。今天修改了公司的网络配置,应该能够解决问题吧,在此记一下。before因为租的是装修好的办公室,所以不会重新去布置有线网络,公司全部无线上网。虽然公司人不多,但是每人一台电脑,有些还是两台,再加上一两台手机,再加上测试设备,上上下下连网设备可能也要三十四台了。最最初的时候,是一台古老的家用路由器,后来换成了大一点的家用路由器...
2020-02-29 14:15:19
1760
2
原创 RtAudio与DirectSound、ASIO和WASAPI
之前写过一篇文章,谈到我在折腾 RtAudio 5.0 版本。它支持 DirectSound、ASIO和WASAPI 三种底层,最初的时候,使用 DS 肯定是最省事了,上篇文章也实现了这个功能。但它的问题是,如果每次“喂”给DS的音频流只有 96 个 samples,就会因为太短而导致声音支离破碎。使用 ASIO、WASAPI 几乎不需要修改代码,可以解决这个问题。但需要注意几个点。DS、A...
2019-01-02 11:04:59
8250
1
原创 RtAudio与QT
这几年一直在折腾一个网络+实时音频相关的项目,因为对实时性的要求太高了,所以一直在想各种办法去优化。最近优化到了音频播放的层面,了解到RtAudio这个实时音频库,决定用它来替代QT中对网络音频流的播放。毕竟是开源项目,打开官网,拿到例子,就开始往上怼呗。最初当然是要初始化一下,所以直接 COPY 代码就上 RtAudio adc; if ( adc.getDeviceCount(...
2018-11-07 09:46:58
2455
1
原创 多线程Django程序耗尽数据库连接的问题
Django的ORM是非常好用的,哪怕不是做Web项目也值得一用,所以网上也可以找到不少使用 Django 开发非Web项目的资料,因为除了ORM之个,命令行、配置文件等组件也非常好用。最近用这种方式开发了一个非Web项目,而且是多线程的。一个线程从DB中获取jobs,然后有N个工作线程,并把结果写回DB。简单来说就是这样。项目运行一段时间后,发现数据库连接耗尽了,幸好内存大,然后一直往上调,...
2018-10-07 17:02:22
6310
原创 节省微小型云服务器的内存
大家一般都买个 vps 来放个主人主页、公司官网什么的,内存一般都不大,比如 1GB 什么的。估计总是发现装完 LAMP 就基本上内存全用光了。在这里分享两个小 tips.mysql在 my.conf 中加入以下配置,关掉性能优化。嗯,反正官网一天也来不了几十个UV,关了没点问题。[mysqld]performance_schema=off这样能节省三四百兆内存。apacheapache 会预启动
2017-04-28 18:22:58
9991
原创 在windows 2008 server 的IIS 7上运行 django 1.11 + python 3.6
缘起使用django开发了一个项目,客户的技术体系是全栈window的,所以要求我们提供把项目部署到windows服务器的服务。写这个原因是旧的在 windows 上运行python网站程序的文档,基本上全过时了。从macOS登陆windows服务器嗯,需要安装 Microsoft Remote Desktop,版本是 8.0.x。需要注意的是微软官网的下载链接是直接链接到app store,而该A
2017-04-19 18:33:27
23082
19
原创 记一次MySQL删库的数据恢复
昨天因为不可描述的原因,数据库直接被 drop database删除。在第一时间停止数据库服务和Web服务,备份MySQL数据目录下的所有文件之后,开始走上数据恢复之路。第一次干这种事,各种不得法。因为我们既没有备份,也没有开启binlog,连innodb_file_per_tabe_也没有。一番折腾后向万能的朋友圈求救,朋友给了两个链接,最终救了一下命。以下先按编号记下 URL,后续引用之。ht
2016-11-25 21:43:49
23434
1
原创 谈谈口袋助理
我使用口袋助理这个App并不早,这个应该从我注册自己的公司账号是9万多可以看出来。反正那个时候,它已经获得了深信服的2亿投资了。 最初的时候,他是我在jobui.com的朋友Ken介绍给我。其实确切来讲,应该不算介绍,他发到一个私密群里,然后我去了解一下,一见倾心,然后就用了。 用了以后,Ken和其他好友问我为什么选择了它,之前的一些应用又不用呢?我跟他们说,我感觉这是一款以老板(或领导)的视角
2016-06-21 19:19:04
23376
10
原创 Make things beautiful again !
在知乎一个问题:如何让大脑休息放松?我曾回答说:整理凌乱的文件夹(电脑的)。其实最近特别烦恼,似乎所有人都不按常理出牌,似乎所有事都不按套路发展。经营一个企业的压力,加上长期没有来自“成功”的激励,如果不是身上背着的责任:那些已经陷入焦油坑的项目、那些巴望着发工资的同事、那些全力支持自己的亲朋好友,恐怕已经说了放弃。公司门厅的绿植,因为疏于打理,甚至缺肥少水,已经出现败状:叶子发黄,甚至干枯,却又从
2016-05-30 18:40:38
13841
原创 敢想,是一切可能的开始。
经常会跟同行一起喝咖啡、喝酒,吃喝只是借口,吐槽是真实需求。吐槽是表现形式,内涵是各种郁闷。这郁闷当中,大概又是以事物的发展不遂心愿为主罢,虽然不幸各有不同,彼此分析缘由,由衷给出建议,却又发自真心。比如我,就经常被批胆子太大,步子太快。这个,我虚心接受。但也感受到江山易改,本性难移,大概这辈子也没法改了。我向以敢想著称。二三年级的时候,就拿个本子,模仿古诗,写所谓的诗集。三四年级的时候,把几节小电
2016-02-14 21:55:47
13452
3
原创 可能外包的代码质量更好。
在程序员的鄙视链里,大概外包是最最底端的一环。如果你找一个程序员咨询做出一个IT项目的方法,哪怕他有一万种方法,他也会加一句说,千万别找外包。他的理由大概是外包的代码质量很差。在以前,可能真的是这样。我也见识过拿DedeCMS强撸电商和OpenCart强撸门户的代码……醉得我不要不要的。感谢移动开发时代的到来,毕竟是全新的平台,之前的随便拿套开源的PHP代码强行二次开发的时代基本上过去了。在我创业开
2016-02-11 23:25:17
17159
3
原创 2015,刺激、快乐与煎熬
虽然明天才是春节前最后一天,但包括我,心已经飞上了回家的路。晚上八点一刻,公司只剩下我一个人,正好留下来回顾2015年,写一写这一年的一点感受、感想。2013、2014,都没有写总结。2013年脱离了网游业,做彩票行业信息化相关的工作。第一次以传统软件工程的方式去做开发,细细地规划,然后组建团队,执行计划。感受到了专业与科学的开发之美。2014年,继续在彩票行业摸爬滚打,但加入了互联网因素,我们做了
2016-02-04 21:01:44
13139
1
原创 一种新的人才合作形式
几个月前,写过一篇博客:一种新的人才流动形式 。在那里,我提到通过收购技术型公司获得技术人才的新的流动方式,再观察了几个月下来,发现还是有一些问题的。一方面”大公司“似乎并没有那么强烈的获得人才的意愿,另一方面,国内的技术型公司也不够突出,核心竞争力似乎也不是那么强。当然,有一些很特别的领域的公司,比如人脸识别等技术的,已经被巨头收了,也算是例证。 但是总体来说,大部分公司都处在这样的一个尴尬位置
2015-07-10 10:51:54
12888
原创 在 Mac OS X 10.10 安装 pyenv 的一个小坑
小记一下。 因为全面转向 Python 3.4 作为主力开发版本,但是手上的 Mac OS X 和服务器上用的都是 Python 2.7,所以需要安装 pyenv。 按其 github 页面的说明,使用 homebrew 安装brew updatebrew install pyenv安装完成后出现:[apple@/Users/apple]$ brew install pyenv==> Ins
2015-06-03 13:08:54
20857
3
原创 关于标签系统的又一点想法。
前段时间,写过一篇《关于标签系统的一点想法。》。但其实没有谈到里面的内容,是有一部分来自与刘鑫老师的聊天,当时他给了我许多肯定,也是让我觉得记录下来很有必要的原因。前一篇里没有提到,我跟刘老师谈到一个更加深入一点的、关于标签系统的想法。主要原因是因为我尚不肯定这是否也属于标签系统。直到最近disylee 送了一本标签 : 标记系统设计实践给我,里面的一个小节让我为自己的想法找到了理论依据。 很不
2015-05-05 18:25:45
13468
2
原创 101个评价
我合著的《 编写高质量代码:改善Python程序的91个建议 》,上市已经差不多一年了,终于也在豆瓣 攒够了101个评价。这么久以来,我一直不在自己的博客上推广这本书,因为我觉得自己说好是没有意义的,太小的样本也是没有意义的。一直在等豆瓣上的评论上百的一这天。终于在今天等到。到目前(2015年4月13日)为止,网络上各处可以评价的评分如下: 网站 打分数量 评分 总分 豆瓣 1
2015-04-13 21:13:57
14211
2
原创 关于标签系统的一点想法。
我跟几个人谈到过我这个标签系统。标签系统,tagging,在 web 2.0 时代大行其道,特别是 del.icio.us 大量应用而广受关注。但如今,随着 del.icio.us 的消逝鲜有人关注了。但,标签系统是一个极具扩展力的系统,作为一种“元数据”信息,可应用的场景其实非常多样化。因为开展了开发外包业务,接触了几个需求以后,愈加觉得如此。比如有如下需求: 有一个订餐系统,类似“饿了么”,
2015-04-13 14:06:08
13613
5
原创 一种新的人才流动形式
随着移动互联网的成熟,越来越多人进入了这个领域,只要你在北上广深的地铁上站上两站,就能听到旁边的人在谈他参与的移动互联网创业。随着“大众创业、万众创新”这把加在烈火的上干柴落实下来,作为珠三角技术沙龙 的组织者,越来越觉得下面的情况已经成为了事实: 创业者太多,程序员不够用了。是的,随便加入哪个程序员的QQ群、微信群,甚至你都不用加入,每天都有不同的猎头会加你的QQ、微信或在 linkedin
2015-04-07 23:57:56
12468
1
原创 两个新事物
这个新事物的意思是对我而言。Uber身边的朋友之前一直在用 Uber,但我停留在之前的印象中:豪车、高价。最近经常跟甘果移动(http://ganguo.io/)的老甘一起出入,老甘带我装X带我飞,也带我打 Uber,了解到其实现在 Uber 比打的还要便宜(广州),而且外勤多了很多,就用了。几天用下来,在广州的体验还是比较可以接受的。主要体现在以下几方面。便宜。之前打的去公司,大概是35元,现在
2015-03-31 10:18:58
11709
原创 两个新认识
前几天,跟朋友小聚吹牛,才知道 leancloud 是所谓的 Baas,而它的榜样 parse 是早已经知道的,但一直没有真正关注过,深感这几年技术已经荒废太多。联想到之前的一些反省,觉得要再开始写一下东西了。Baas 大概是新提出来的概念罢,它让可视化的后端开发成为可能,应该是移动互联网的新利器。leancloud 和 parse 大有前途,想想真是佩服那些有远见的人。大概在半年前,因为朋友的一个
2015-02-10 15:45:32
12726
2
原创 关于Python编程的一些问答
导语大约1个月前,oschina.net和华章图书一起合作做了一个活动:OSC第51期高手问答——聊聊python那些事,来推广我参与撰写的书《编写高质量代码:改善Python程序的91个建议》(豆瓣链接)。在回答问题的过程中,我看到有若干问题是好几个人都问了的,就萌发了在事后把这些问答整理整理的想法,以下内容就是来自那一次的问答。为简化整理,已经去掉了提问人的昵称,并做了简单的分类。纠结的Py2
2014-09-01 20:31:34
20529
2
原创 关于“设计模式”和“设计程序语言”的一些闲话
引子:2013 年的 Python Conference China 珠海场,我做了一个《论 Python 与设计模式》的分享,组织者知名的社区大妈 ZoomQuiet 给我分享了一篇文章,讨论由这篇文章而起。后觉得这个讨论对我来说是很有意思的,所以整理了聊天记录,征得 ZQ 同意后发布到这里,当作是我思想的印迹保存下来,非为分享,觉得有帮助有启发可以留言感谢,觉得要说服我、教育我,可以省点力气多
2014-01-09 10:57:19
16171
2
RC++ a rule-based language for game AI
2010-05-01
graphviz-2.24
2010-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人