- 博客(280)
- 资源 (5)
- 收藏
- 关注
原创 Django老项目升级到新版本
手上有个 Django 老项目,一直跑得好好的,好几年没动过了,维护费收得正爽,没想到客户来了个新的运营人员,丢了个改动需求过来。我一看也没啥大改,大意了,就答应了。
2024-04-21 00:28:30
996
原创 安卓(Android)安装 Microsoft Authenticator 搞定 2FA 验证
但是,在国内如果你用苹果手机还好,如果是用安卓(Android)手机,因为没有 Google Play Store,而 Microsoft Authenticator 又不上架国内的应用商店,是没有办法安装的。在很长一段时间里,我不得不用我的一台旧苹果手机作为 2FA 专用机,有时候忘记充电了,还很长时间无法登陆。现在越来越多网站强制 2FA 验证了,Microsoft Authenticator 是一个兼容性很强的 2FA 应用 app,如果能够安装它,可以解决绝大部分的 2FA 验证问题。
2024-04-20 13:41:00
4710
3
原创 在网址URL中隐藏数据的一些方案
比如数据库主键自增ID,UUID,MongoDB 的ObjectId等,你不希望用户看到。可以使用sqids。它可以通过自定义字母表来达到别人无法破解你的数据。只要使用不同的的alphabet就可以了,在它的页面下方有个小工具,可以随机生成一个独特的字母表,刷新一下,然后复制到你的代码里,就谁也猜不透你的小心思。这个很有用,比如你的数据表使用自增 ID,那么使用sqids加密以后,1就可能变成了Uk(注:不同的字母表会不同),而2则是gb,小的数字变化结果差异还非常大。
2024-01-07 10:20:16
1106
原创 GetSimple CMS 忘记密码
GetSimple是一款基于XML存储数据的开源内容管理系统,且易于安装和定制,无需MySQL支持。它号称是最简单的内容管理系统,因为只使用简单的 XML 文件来存储数据,连 MySQL 这样的数据库都不需要,所以版本基本上不怎么更新。一般使用它建的网站也不怎么更新,所以久了可能会忘记密码。如果你也和我一样,可以进入网站目录,在里面找到。是一个超简单的 CMS,适合建立个人网站等只需要极少数页面的网站。然后就可以用新密码登陆了,记得登陆以后要把密码改回你容易记的哈。之类的工具打开它,把它的。
2023-11-13 01:08:24
410
原创 MongoDB 备忘
查看有没有启动看看是否能够登录mongo查询当前所在的数据库db切换或创建数据库查看所有数据库show dbs查看所有数据集合(表)
2023-11-08 11:48:33
1061
原创 如何解决MidJourney错过付费后被暂停
假定你已经成功订阅购买了 MidJourney 一段时间,下个月扣费周期到了。如果你卡里余额不足,卡被封或失效了,或者你想着最近没啥用得上 MidJourney 的地方先省着不续费,等要用的时候就用不了。如果想要去官网的,点击「订阅」,你会看到一个弹窗,大意就是已经有一个的错误,但没有任何链接可以解决掉这个问题。而去到 discord 给一个/info命令下去,可以看到你的订阅已经被暂停状态。这个时候就很操蛋,你没有地方付账单。
2023-10-12 16:03:58
1437
2
原创 谈谈DDD(领域驱动设计)
前段时间组织了小红花的新一期分享快速搞定数字化项目——采用领域驱动设计(DDD)建设一个电商平台,听完池总的这个分享之后,我终于是把这两年重新热起来DDD(以下称为现代DDD)和我十几年前熟悉的DDD(以下称为古典DDD)对应起来了,在这里谈一谈。DDD当然不是什么新概念,该思想源于2003年 Eric Evans编写的“Domain-Driven Design领域驱动设计”简称DDD,Evans DDD是一套综合软件系统分析和设计的面向对象建模方法。从Wiki来看,领域模型是对业务模型的抽象,DDD是把业
2022-07-03 11:05:36
1063
原创 Python虚拟环境教程:使用Virtualenv和Poetry
因为觉得有参考价值,一直打开许多页面没有关闭,浏览器的 tab 都差不多上百了,决心把一些有意义的内容通过翻译、摘录和重编的形式把核心内容快速统一到博客上来,方便后续检索,也好关掉一些浏览器窗口。本文是Python Virtual Environments tutorial using Virtualenv and Poetry的翻译、摘录和重编,原作者Dmitriy Zub,我去掉了IDE的部分,加入了一些其它内容,让它更加顺畅内聚。首先这是篇向大家介绍虚拟环境和和小教程,专注在这三个方面:简而言之,就是
2022-07-02 22:13:42
3824
2
原创 把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
751
原创 比较 REST、JSON:API 和 GraphQL
首先,这篇文章是从请求效率、运维的简单性、API 可发现性、数据写入等来比较 REST、JSON:API 和 GraphQL,其中这里的 REST 就是指 RESTful 风格的 HTTP API 接口,一个接口一个接口写出来的那种,而不是类似那种设计和规范的框架做出来的。然后定义比较的指标:作者做了个表来比对:所以Dries哥态度是很明确的,他选JSON:API。接下来从这4个方面分别展开说。这里其实分了两部分内容,一部分是类似外键或引用的处理方式,另一部分是对响应体的裁剪能力。我们先来看第一部分,Dri
2022-07-02 16:27:27
2330
原创 Nginx截断uwsgi+Django(Flask)大响应体的问题及解决
昨天一个一直续费的老客户,说网站出问题了。他的网站只是简单的展示型公司官网,用 Django 做的,日常做放放产品,连交易都没有,是2016年做好一直没有动过的。年年续费很积极的优质客户反馈问题,赶紧问他咋了,他发了张图过来,说今天他编辑商品详情,发现保存按钮没有了,如下图:可以看到这个页面已经结束了,但底部的保存按钮不见了。正常的Django Admin管理后台商品编辑界面,下面有一排操作按钮。这很奇怪,为什么没改代码会突然这样。按我们程序员的思维,如果代码没改,那肯定是客户做了什么操作,问他,只是
2022-06-30 17:55:37
1824
1
原创 讲清楚POST和PUT的区别
在RESTful概念里,HTTP Method代表不同的语义,GET/PATCH/DELETE没有太多的困惑,但是POST/PUT经常让人分不清楚。有说POST用来创建,PUT用来修改的;也有PUT用来创建,POST用来修改的。各种一词,抛到微信群里能瞬间吵起来。其实都不对,POST和PUT都能用来创建。它们最重要的区别是由它们最基础的概念决定的,那就是PUT要实现为幂等的。所谓的幂等,就是:在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。所以在实现中,POST用来
2022-04-25 15:06:35
6432
转载 纯MongoDB实现中文全文搜索
MongoDB在2.4版中引入全文索引后几经迭代更新已经比较完美地支持以空格分隔的西语,但一直不支持中日韩等语言,社区版用户不得不通过挂接ElasticSearch等支持中文全文搜索的数据库来实现业务需求,由此引入了许多业务限制、安全问题、性能问题和技术复杂性。作者独辟蹊径,基于纯MongoDB社区版(v4.x和v5.0)实现中文全文搜索,在接近四千万个记录的商品表搜索商品名,检索时间在200ms以内,并使用Change Streams技术同步数据变化,满足了业务需要和用户体验需求。本文首先描述遇到的业务需
2022-04-24 23:26:15
3486
1
原创 当__getattr__()遇上@property,坑倒Python老司机
今天同事反馈说我写的一个基础库有一个bug,大概就是自己写的类明明有属性foo,但会抛个类似下边的异常出来,AttributeError: 'A' object has no attribute 'foo'这很让人困惑啊,因为抛出异常的函数是基类的__getattr__()方法,所以他就找我来解决了。我看代码也是一脸懵,这个foo就摆在那里,这个bug给了我一个眼见不为实的错觉,一时找不到方向。突然我发现这个foo上面顶着个@property的帽子(装饰器),咦,会不会和这个有关系呢?于是搜索一下,就
2021-04-08 23:23:43
1315
原创 从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
3859
原创 mongodb的部分索引和稀疏索引
部分索引(partial index)是稀疏索引(sparse index)的超集,也就是说,能用稀疏索引完成的事,用部分索引也能完成。部分索引理论上可以让索引的尺寸(内存和硬盘占用)更小,另外也可以优化写操作的性能。部分索引可以根据不同的业务需求在同一个字段上建立不同的索引,可以达到最佳性能。而稀疏索引只能利用字段是否存在来决定是否索引该文档,灵活性上也差了一截。部分索引和稀疏索引都有可能不被查询器选用,所以要在确定使用某一个部分索引或稀疏索引的查询上用hint指定使用的索引。建立部分索引或稀疏.
2021-02-19 09:52:13
1052
原创 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
2097
原创 用80行代码数1000个孔——《Python也可以》之四
年前在狗东新买了一个茶滤,店家号称有921个孔,我觉得好像有点“夸张”,总想证实一下。肉眼肯定是数不过来了,所以我就想着要不写个程序来数吧,就拍了张照片放着。年前太忙了,然后又是过年,昨天终于有空了,便写了个80行的小脚本数了一下。预处理因为是白瓷,所以洞孔最好全黑,于是拍照的时候我就在下面放了个黑色的无纺布袋子,拍出来的效果还可以。用微信传到电脑上,然后简单地用macOS自带的图像app处理一下,主要是去掉边缘无关元素和调整明暗。预处理完成以后如下图:概述总体来说,这是一个很简单的任
2021-02-15 12:25:37
1072
原创 最容易的编译webrtc方案
怎么编译webrtc,在网上可以说是一搜一大把,基本上结合几篇文章,肯定能编译出来了。真正的麻烦在于构建编译环境,简单来说,就是要有一台稳定地访问webrtc代码库的编译机器:因为webrtc的git仓库是难以访问的。好久以前折腾过一次这件事情,后来就放下了也没有说,最近有朋友又问到我,我就在这里记一下吧。简单来说,买一台海外服务器,装windows系统,然后用remote desktop连...
2020-04-13 10:08:10
1297
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
6708
1
原创 在macOS上用supervisor构建稳定的SSH转发
之前一直使用SSH指定端口转发请求,一直能用,但是很烦。因为每次都要输入密码之类的,而且经常会断开,断开后又输密码,神烦。前几日决心解决这个问题,作为一名Python开发者,首先想到的就是supervisor,最后也证明这个想法行得通。先brew install supervisor把它安装上,然后运行brew service start supervisor运行起来。打开/usr/local/...
2020-04-12 00:50:09
1116
原创 当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
2103
5
原创 公司网络配置2020
真的是年纪大了,很多东西都很快很快就忘记了,还是要找个地方起来。今天修改了公司的网络配置,应该能够解决问题吧,在此记一下。before因为租的是装修好的办公室,所以不会重新去布置有线网络,公司全部无线上网。虽然公司人不多,但是每人一台电脑,有些还是两台,再加上一两台手机,再加上测试设备,上上下下连网设备可能也要三十四台了。最最初的时候,是一台古老的家用路由器,后来换成了大一点的家用路由器...
2020-02-29 14:15:19
2125
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
9260
1
原创 RtAudio与QT
这几年一直在折腾一个网络+实时音频相关的项目,因为对实时性的要求太高了,所以一直在想各种办法去优化。最近优化到了音频播放的层面,了解到RtAudio这个实时音频库,决定用它来替代QT中对网络音频流的播放。毕竟是开源项目,打开官网,拿到例子,就开始往上怼呗。最初当然是要初始化一下,所以直接 COPY 代码就上 RtAudio adc; if ( adc.getDeviceCount(...
2018-11-07 09:46:58
2774
1
原创 多线程Django程序耗尽数据库连接的问题
Django的ORM是非常好用的,哪怕不是做Web项目也值得一用,所以网上也可以找到不少使用 Django 开发非Web项目的资料,因为除了ORM之个,命令行、配置文件等组件也非常好用。最近用这种方式开发了一个非Web项目,而且是多线程的。一个线程从DB中获取jobs,然后有N个工作线程,并把结果写回DB。简单来说就是这样。项目运行一段时间后,发现数据库连接耗尽了,幸好内存大,然后一直往上调,...
2018-10-07 17:02:22
6787
原创 节省微小型云服务器的内存
大家一般都买个 vps 来放个主人主页、公司官网什么的,内存一般都不大,比如 1GB 什么的。估计总是发现装完 LAMP 就基本上内存全用光了。在这里分享两个小 tips.mysql在 my.conf 中加入以下配置,关掉性能优化。嗯,反正官网一天也来不了几十个UV,关了没点问题。[mysqld]performance_schema=off这样能节省三四百兆内存。apacheapache 会预启动
2017-04-28 18:22:58
10075
原创 在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
23354
19
原创 记一次MySQL删库的数据恢复
昨天因为不可描述的原因,数据库直接被 drop database删除。在第一时间停止数据库服务和Web服务,备份MySQL数据目录下的所有文件之后,开始走上数据恢复之路。第一次干这种事,各种不得法。因为我们既没有备份,也没有开启binlog,连innodb_file_per_tabe_也没有。一番折腾后向万能的朋友圈求救,朋友给了两个链接,最终救了一下命。以下先按编号记下 URL,后续引用之。ht
2016-11-25 21:43:49
23708
1
原创 谈谈口袋助理
我使用口袋助理这个App并不早,这个应该从我注册自己的公司账号是9万多可以看出来。反正那个时候,它已经获得了深信服的2亿投资了。 最初的时候,他是我在jobui.com的朋友Ken介绍给我。其实确切来讲,应该不算介绍,他发到一个私密群里,然后我去了解一下,一见倾心,然后就用了。 用了以后,Ken和其他好友问我为什么选择了它,之前的一些应用又不用呢?我跟他们说,我感觉这是一款以老板(或领导)的视角
2016-06-21 19:19:04
23610
10
原创 Make things beautiful again !
在知乎一个问题:如何让大脑休息放松?我曾回答说:整理凌乱的文件夹(电脑的)。其实最近特别烦恼,似乎所有人都不按常理出牌,似乎所有事都不按套路发展。经营一个企业的压力,加上长期没有来自“成功”的激励,如果不是身上背着的责任:那些已经陷入焦油坑的项目、那些巴望着发工资的同事、那些全力支持自己的亲朋好友,恐怕已经说了放弃。公司门厅的绿植,因为疏于打理,甚至缺肥少水,已经出现败状:叶子发黄,甚至干枯,却又从
2016-05-30 18:40:38
13917
原创 敢想,是一切可能的开始。
经常会跟同行一起喝咖啡、喝酒,吃喝只是借口,吐槽是真实需求。吐槽是表现形式,内涵是各种郁闷。这郁闷当中,大概又是以事物的发展不遂心愿为主罢,虽然不幸各有不同,彼此分析缘由,由衷给出建议,却又发自真心。比如我,就经常被批胆子太大,步子太快。这个,我虚心接受。但也感受到江山易改,本性难移,大概这辈子也没法改了。我向以敢想著称。二三年级的时候,就拿个本子,模仿古诗,写所谓的诗集。三四年级的时候,把几节小电
2016-02-14 21:55:47
13521
3
原创 可能外包的代码质量更好。
在程序员的鄙视链里,大概外包是最最底端的一环。如果你找一个程序员咨询做出一个IT项目的方法,哪怕他有一万种方法,他也会加一句说,千万别找外包。他的理由大概是外包的代码质量很差。在以前,可能真的是这样。我也见识过拿DedeCMS强撸电商和OpenCart强撸门户的代码……醉得我不要不要的。感谢移动开发时代的到来,毕竟是全新的平台,之前的随便拿套开源的PHP代码强行二次开发的时代基本上过去了。在我创业开
2016-02-11 23:25:17
17407
3
原创 2015,刺激、快乐与煎熬
虽然明天才是春节前最后一天,但包括我,心已经飞上了回家的路。晚上八点一刻,公司只剩下我一个人,正好留下来回顾2015年,写一写这一年的一点感受、感想。2013、2014,都没有写总结。2013年脱离了网游业,做彩票行业信息化相关的工作。第一次以传统软件工程的方式去做开发,细细地规划,然后组建团队,执行计划。感受到了专业与科学的开发之美。2014年,继续在彩票行业摸爬滚打,但加入了互联网因素,我们做了
2016-02-04 21:01:44
13214
1
原创 一种新的人才合作形式
几个月前,写过一篇博客:一种新的人才流动形式 。在那里,我提到通过收购技术型公司获得技术人才的新的流动方式,再观察了几个月下来,发现还是有一些问题的。一方面”大公司“似乎并没有那么强烈的获得人才的意愿,另一方面,国内的技术型公司也不够突出,核心竞争力似乎也不是那么强。当然,有一些很特别的领域的公司,比如人脸识别等技术的,已经被巨头收了,也算是例证。 但是总体来说,大部分公司都处在这样的一个尴尬位置
2015-07-10 10:51:54
12951
原创 在 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
20951
3
原创 关于标签系统的又一点想法。
前段时间,写过一篇《关于标签系统的一点想法。》。但其实没有谈到里面的内容,是有一部分来自与刘鑫老师的聊天,当时他给了我许多肯定,也是让我觉得记录下来很有必要的原因。前一篇里没有提到,我跟刘老师谈到一个更加深入一点的、关于标签系统的想法。主要原因是因为我尚不肯定这是否也属于标签系统。直到最近disylee 送了一本标签 : 标记系统设计实践给我,里面的一个小节让我为自己的想法找到了理论依据。 很不
2015-05-05 18:25:45
13542
2
原创 101个评价
我合著的《 编写高质量代码:改善Python程序的91个建议 》,上市已经差不多一年了,终于也在豆瓣 攒够了101个评价。这么久以来,我一直不在自己的博客上推广这本书,因为我觉得自己说好是没有意义的,太小的样本也是没有意义的。一直在等豆瓣上的评论上百的一这天。终于在今天等到。到目前(2015年4月13日)为止,网络上各处可以评价的评分如下: 网站 打分数量 评分 总分 豆瓣 1
2015-04-13 21:13:57
14283
2
RC++ a rule-based language for game AI
2010-05-01
graphviz-2.24
2010-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人