- 博客(93)
- 收藏
- 关注
原创 一系列Python asyncio tasks调用中的contextvars
在Python中,contextvars某种程度上类似于线程的thread local,但主要用于协程。但是在一系列asyncio tasks调用中,上下文本身是否会保持一致呢?让我们来探究一下。
2024-08-11 20:59:39
359
原创 如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
但是直接使用pm2-runtime,因为没有pm2的驻留进程,所以pm2-runtime会找错路径,比如在pm2.json/这个路径下面去找build好的文件。所以需要先启动一下pm2的进程,然后再用pm2-runtime执行,这个方法如下。在docker中,我们需要使用pm2-runtime而不是pm2来启动,这是因为pm2启动目标进程后会damonize,这样docker容器就结束了。不过在实际的使用中,面对更大的访问压力,通过多进程的方式来部署next.js呢?看到多个next的进程。
2024-07-21 14:58:54
541
原创 一个用于在虚拟桌面下跑chrome的docker镜像
制作了一个用于跑chrome的docker镜像,主要是为了支持能够通过xvfb或者wayland,给chrome提供一个虚拟的桌面环境。这个容器可以通过如下方式获取(tag即为chrome的版本号)
2024-07-09 07:28:44
590
原创 调用asyncio.to_thread后上下文依然一致吗
使用Python的asyncio时,可以把一个同步的函数放到线程池中执行从而避免这个函数阻塞asyncio自身的事件循环。方法就不会造成asyncio的阻塞,反而下面这样直接调用一个下面这样把requests.get简单包在一个async函数里则会造成的协程的阻塞。来执行的函数,与调用方的context是一致的,可以放心的把一些需要获取contextvars的工作放在里面跑。函数时,我们需要注意一点,即asyncio的上下文,也就是通过contextvars来保存的内容通过。来执行时与调用者否是一致的?
2024-07-04 22:08:45
261
原创 在nginx中设置相对路径跳转的方式
虽然写的是相对路径,但是nginx依然会补齐url的前缀,这样在实际的HTTP请求中会看到Location header中依然是绝对路径的跳转。如果nginx中listen的域名不是最终的域名,这样还可能会造成跳转不成功的问题。在nginx中的location中,设置301或302的跳转的方式一般是这样的。如果需要设置相对路径的跳转,可以考虑以下两种方法。第二种,在跳转的路径前面加一个空格(放在引号里)。以上这两种方法都可以获得相对路径的跳转。指令,这样就直接关掉了的绝对路径跳转。
2024-07-02 17:44:09
445
原创 在Python asyncio中如何识别协程是否被block了
现在asyncio在Python中的使用越来越广泛了,但是很多人对于协程(corotine)的一些使用方式还不太熟悉。在这篇文章中,我将会介绍如何识别协程是否被block了,并以常用的HTTP网络库requests/httpx为例来说明如何避免协程被block的问题。
2024-07-02 17:43:08
472
原创 使用mongorestore时no reachable servers错误的解决
首先卸载掉使用的mongo-tools,然后从mongodb的官网下载最新版本的mongo-database-tools(这个是官方最新的叫法)并安装。官方地址是 https://www.mongodb.com/try/download/database-tools。而此时mongosh,或者mongo命令本身是可以连接到mongodb 的数据库的。,会发现mongorestore不报错但是一直没有反应。
2024-05-31 12:59:05
427
原创 使用docker直接运行不同版本nodejs命令
通过docker管理node版本好处是依赖完整,不会出现上面的依赖没有匹配的错误,比nvm等管理器会更加方便。
2024-05-31 11:59:00
689
原创 在Javascript中对emoji字符操作的方式
对于含有emoji的字符串,Javascript是不能直接完成正确的随机访问的。比如对`s = '😀😃😄😁🙂’来说,我可以看到下面的结果也就是说,对于含有emoji的字符串,直接通过默认的字符串操作机制来访问可能会导致一些问题。为了避免出现这些问题,我们可以考虑采用一些方法先把字符串转换成一个Array,Array的每个元素都是一个unicode。
2024-05-17 17:46:18
337
原创 实现一个带有存储状态的Python函数
方法作为函数的入口,并且可以在这个方法里访问和操作类的属性,从而就通过一个类的来模拟了一个带有状态的函数。
2024-05-16 10:19:16
187
原创 人大金仓(KingbaseES V9)的Python环境的配置和基本使用
为了简化这些操作,我写一个脚本对自动化整个过程,并且把相关的文件都放在人大金仓(KingbaseES V9)提供了Python的驱动,可以通过Python来访问人大金仓数据库,不过这个配置并不算十分友好。
2024-04-25 22:36:59
750
原创 MySQL中like关键字与索引的使用
使用like进行查询的逻辑其实非常符合我们的直接的认知。就像在bash中使用grep来筛选命令行的结果和like其实是同样的逻辑。只是如果数据库中的数据很多时,我们需要通过其他的方法来缩减直接应用like的范围而已。
2024-04-24 22:59:31
672
原创 在WSL中基于命令行打开Windows资源管理器
WSL中最方便的地方就是提供了可以方便的和Windows宿主之间进行交互。本文介绍一下如何在WSL中打开Windows的资源管理器,并且把目录定位在WSL的shell所在的目录。如果需要指定相对目录也可以的,注意需要使用反斜杠。这样既可以比较方便在命令行打开资源管理器了。
2024-04-24 16:05:53
328
1
原创 WSL中重定向到剪切板时中文内容的处理
不过直接重定向到clip.exe有个局限,就是系统默认的code page不是65001(UTF-8)时会出现编码问题。那么需要通过两步的处理,并且解除powershell来解决这个问题。然后是通过powershell来执行clip.exe,可以创建一个脚本。首先是设置powershell的profile(可以通过。来把WSL中的运行结果直接复制到Windows的剪贴板了。之前有说过在WSL中重定向脚本输出到剪切板可以。来编辑这个文件),写入内容。这样以后就可以通过重定向到。
2024-04-20 23:42:13
203
原创 通过Docker安装KingbaseES V9并激活开发License
简单介绍一下在Docker中安装人大金仓(KingbaseES V9)的过程,以及如何更换默认的License为官方提供的365天有效期的开发License。下面的安装过程都是在WSL2中完成的。
2024-04-20 00:55:22
677
原创 只用Mysql搞一个分布式锁
在web开发中,分布式的锁的应用场景甚多,我们可以通过分布式锁来进行一些仅依赖于数据库的事务很难直接保证原子性的操作,比如多种不同数据源的访问,网络通信等等。下面介绍一个仅依赖Mysql来完成分布式锁的方式,如果项目比较小且主要使用的数据库是Mysql,那么就不需要引入额外的架构上的依赖了。
2024-01-20 19:21:42
633
原创 如何在死掉后彻底重启wsl2
wsl2(Windows Subsystem Linux 2) 给在Windows上的开发带了非常多的便利,不过wsl2莫名奇妙死掉的情况还是很多的,比如当Windows从休眠状态恢复之后。上面的方法一些方法在更老的版本可以工作,目前来说,在wsl2死掉之后最为有效的重启方法是在Admin模式的powershell下执行下面的命令。
2024-01-20 15:39:35
2196
3
原创 开发与运维中常用的各种ssh的技巧汇总
ssh是开发、运维以及各种日常任务中最经常用到的工具之一,通过ssh可以完成的事情也非常多,当然使用起来确实有时候也有一些费解。这篇文章是一个文章指针,主要是把介绍ssh各种使用场景的文章汇集起来,在需要的时候随时查阅使用。通过公钥私钥和进行登录通过公钥和私钥登录服务器是一种比密码安全很多的方式,相关的介绍性文章如下:查看本机ssh公钥,生成公钥使用ssh公钥实现免密码登录使用ssh agentssh agent可以避免把自己的私钥拷贝到远程服务器中,也是一种比较好的安全实践。ssh a
2020-05-27 19:21:38
521
原创 一些常用软件的镜像的更换方法汇总
假设镜像的地址为mirror_url,下面列举一些主要平台的镜像地址平台方法备注nvmNVM_NODEJS_ORG_MIRROR=<mirror_url> nvm install <version>npmnpm --registry <mirror_url> install <package> npm config set registry <mirror_url>yarnyarn config s
2020-05-13 20:38:29
417
1
原创 把wsl的命令行输出直接定向到剪贴板
在Windows Subsystem Linux中,可以调用到windows路径中的exe文件,也就可以直接调用clip.exe来把输出复制到剪贴板。比如python program.py | clip.exe就可以吧program.py的输出拷贝到剪贴板,就可以在wsl之外的地方粘贴使用了。...
2020-03-13 19:30:57
962
1
原创 通过rclone结合阿里云OSS或者AWS S3发布和上线代码
在进行项目的开发时,在多数测试和上线操作的场景中,我们总是需要把代码或者打包好的代码部署到一个中间的服务器或者存储上。在不同给的情况下,尤其是在很多人合作的情形下,我们就会或多或少的遇到下面的问题:如果大家都在同一个办公场地,代码部署到一个内部的服务器中会很方便(或者以专用网络的形式的访问公司的数据中心),但是在远程办公的条件下(比如在疫情期间),就会存在很多安全性的问题。而且,在家办公的场景...
2020-03-11 17:10:55
1779
1
原创 在Python中以"foo.bar.baz"的方式访问嵌套dict中的内容
我们首先举一个多级嵌套的dict的例子,后面也会用这个例子来结合代码说明:obj = { "foo": { "bar": { "baz": 5 } }}javascript中,可以通过lodash的get方法来获取上面的object中形如"foo.bar.baz"的路径所对应的值,比如_.get(obj, "foo.bar.baz")。那么在Python...
2020-03-03 08:04:02
281
原创 在Windows下通过Python脚本来阻止屏幕关闭
在Windows下可以在系统中设置自动关闭屏幕的时间,在一些场合下,我么可能会想临时的阻止Windows自动关闭屏幕,但是又不想改变系统设置(比如在疫情里面宅在家里远程办公的时候,检查完孩子作业之后回来)。我们可以通过简单的Python脚本来达到这个目标。在Windows中,可以通过SetThreadExecutionState方法来设置应用运行的状态,来设置应用是否需要关闭屏幕,是否可以阻止进...
2020-02-24 11:27:24
3332
2
原创 京东联盟的开放平台的Python客户端封装
我们可以通过requests来实现一个京东联盟开放平台API Client。因为京东联盟开放平台的API都有一个统一的形式和签名方法,所以可以通过一个比较简单的实现来编写一个通用的client,可以比较简单的根据开放平台的文档中的方法名和业务参数来直接进行实际的调用。相关的代码实现如下(也可以在https://gist.github.com/socrateslee/76e91cb7beef6e0...
2020-02-10 19:16:07
2074
原创 从“四舍五入”到“奇进偶舍”
处理取整时,大概下意识的可以想到的方法,都是“四舍五入”吧?不过我们可以先看两个例子,在Python 3中,round(4.5) == 4,而在mongodb 以上的版本中,{$round: 4.5}的结果也是4。对于习惯了只存在“四舍五入”这一种舍入方法的同学们来说,估计是要去怀疑这是不是代码的bug了。其实,这里舍入的方法并不是“四舍五入”,而是采用了所谓的“奇进偶舍”或者“四舍六入五成双”的...
2020-02-03 11:26:08
3648
原创 为什么在Python代码中使用局部变量会更快
在Python开发中,一个常见的效率优化方法就是在进入循环之前,使用局部变量来替代全局变量。具体的,可以对比下面的两个函数:g = 2def local_var(): global g l = g for i in range(100000000): i % l i + ldef global_var(): global g...
2020-01-19 11:22:55
518
原创 在语雀中输入汉语拼音
在语雀中,无法使用HTML中的<ruby>标签来输入拼音,但是语雀可以支持latex公式块的插入,所以我们可以借助公式中的latex来做汉语拼音的输入,具体来说也就是通过latex中的overset指令来输入上下并排的字符。先举一个简单的例子\overset{bái}{白}\overset{rì}{日}\overset{yī}{依}\overset{shān}{山}\overset...
2020-01-19 11:19:03
992
原创 和Windows Terminal配置相关的一些tips
最近,微软的Windows Terminal的预览版可以在Microsoft Store上直接下载安装了。Windows Terminal的整体体验还是相当不错的,在安装之后,除了cmd,powershell之外,自动创建了系统内已经安装的各种wsl(Windows Subsystem Linux)的入口profile,甚至包括Azure Cloud Shell的入口profile也创建了。Win...
2020-01-17 10:23:12
349
原创 调整css让语雀在更宽的屏幕上展示和编辑
在使用蚂蚁金服的语雀文档的过程中,发现文档展示和编辑时的宽度是不能调整的,所以会在一些特殊情况下遇到一代呢人麻烦。比如在使用markdown时,代码段中的内容如果稍微长一些就看不到后面的代码,稍宽一些的表格也会展示的很挤。所以,我针对语雀的css进行了一些调整,让语雀在编辑和展示时可以使用更宽的空间,这即使是一些字段超多的markdown表格,只要有带鱼屏,也可以展示和编辑的很舒服了。这些css...
2020-01-10 19:01:51
1299
1
原创 在Ubuntu Linux Server上使用奔图P2206NW打印机
由于奔图提供的和Linux有关的文档和帮助实在太少了,本文会针对奔图P2206NW来说明一下如何在Ubuntu Linux Server的命令行中安装这台激光打印机的驱动和以及如何打印文档。首先,需要安装cups:sudo apt install cups-bsd可以通过下面的命令来检查一下系统中已经支持的打印机类型是否包括奔图的相关机型:sudo lpinfo -m |grep Pan...
2020-01-06 12:21:40
5070
3
原创 一个用于让国家统计局数据展示的稍微友好一些的Tampermonkey脚本
国家统计局的数据展示也就是国家数据(http://data.stats.gov.cn),在直接展示数据时,采用的样式太窄了,两边的空白都不能利用,很不方便阅读,比如很多表头都不能展示全。所以我简单写了一个脚本,可以通过Tampermonkey在Chrome加载使用,让数据在现代的比较宽的屏幕上可以稍微舒服一些的展示出来。这个脚本可以直接从https://gist.github.com/soc...
2019-05-06 23:01:45
290
原创 对mongodb导出的.bson文件直接进行查询
如果要查询通过mongodb的mongodump导出的.bson文件(比如历史备份),是一件比较麻烦的事情。简单写了一个工具sonq,可以针对.bson文件直接进行查询。首先可以通过pip进行安装sudo pip install sonq然后就可以通过sonq这个命令行工作对.bson文件进行查询了,下面举几个例子。直接输出source.bson文件中的内容,不做过滤:so...
2018-07-23 23:02:31
4702
2
原创 在Windows平台上运行Cassandra
Cassandra通过Java实现,所以可以运行在各种支持JRE的平台上。下面介绍一下如何在Windwos平台上运行Cassandra。1. 下载Cassandra,并解压到一个子目录中(我采用了d:/home/Codes/cassandra)。2. 设定JAVA_HOME和CASSANDRA_HOME这两个系统环境变量。JAVA_HOME定向到JRE所在的目录,比
2010-04-09 13:59:00
861
原创 在Moto XT800上获得root权限和安装Android市场等软件
对于定制版本Moto XT800,比如中国联通定制版本,如需要获得root权限,并且安装Android Market/Gtalk/Gmail(Google GMS)等,需要通过安装两个update包来实现。 安装update包的方法如下:1. 把update包更名为update.zip2. 一直按住搜索+相机+开机键开机直到屏幕出现叹号3. 按增大音量+相机键键入recovery模式
2010-03-22 15:04:00
1612
原创 在Vmware下安装Fedora Core 12 Live CD
用Fedora Core 12 Live CD在Vmware下安装系统时,会发现无法启动硬盘安装程序(Install Fedora to HDD,就是liveinst这个程序),安装程序只是闪了一下便关闭了。 在网上搜了一下原因是内存不够,把Vmware的内存调大即可(512M以上)。
2010-03-21 15:17:00
1143
原创 解决安装pytc后的一个ImportError
在安装Tokyo Cabinet的python接口pytc后,在import pytc时,遇到了下面的问题 Traceback (most recent call last): File "", line 1, in File "build/bdist.linux-x86_64/egg/pytc.py", line 7, in File "build/bdist.linux-x8
2010-03-03 14:13:00
881
原创 mysql的slow-query中的一个现象
在mysql的slow query log中,可能存在类似这样的特殊记录: # Time: 100127 23:17:01# User@Host: root[root] @ [127.0.0.1]# Query_time: 18446744073709.351562 Lock_time: 0.000129 Rows_sent: 1 Rows_examined: 11030
2010-01-28 15:49:00
657
原创 通过CouchDB-Python连接带有用户名/密码验证的数据库
在CouchDB-Python中,连接带有basic HTTP验证的数据库(比如cloudant)有点儿麻烦,因为用Server或者Database不能直接打开类似于 http://username:password@servername:5984/dbname/ 这样的URI。 我们需要采取下面的方法才能完成:from couchdb import *#connect to a
2009-12-08 20:36:00
1800
原创 在Python中动态绑定property
在Python中可以把property动态的绑定的object的继承类中,并且可以定义带有参数的get和set方法。比如,我们定义了全局变量g,然后通过两个方法来存取g的内容def get_g(self): return gdef set_g(self, _g): global g g = _g定义一个object的继承类A:
2009-11-14 22:41:00
840
关键词搜索广告文案数据集(jsonl文件,firefly pretrain格式)
2024-05-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人