2024年12月24日星期二

python install e . 报错

 尝试 python setup.py clean。然后遇到最新的错误,一个个解决,每次重新 install 前,都 clean 清一下环境。

2020年10月19日星期一

@Transactional导致的问题

 https://groups.google.com/g/mybatis-user/c/cat2sbCD3rI?pli=1

spring项目中使用了@Transactional,导致了insert语句执行完之后,无法select查询到结果。需要将insert和select分开成两个事务才能解决。

2020年7月9日星期四

操作系统的coredump

apt-get install systemd-coredump 安装coredump工具,这样应用程序有coredump的时候就会产生coredump文件了。

man coredump.conf,查看修改coredump相关配置,修改完后 systcl -p 生效配置。

coredump生成主要有两种方式。一种是external,文件生成在/var/lib/systemd/coredump下。另一种是journal,可以通过 man journald.conf 查看相关配置。

2020年4月28日星期二

python datetime计算时间差

from datetime import datetime
begin = datetime.strptime('00:01:00.000', '%H:%M:%S.%f')
end = datetime.strptime('00:01:00.002', '%H:%M:%S.%f')
duration = begin - end
duration.total_seconds()  // duration.seconds只计算秒的部分,duration.microseconds只计算毫秒的部分。计算时间差使用total_seconds

2020年2月19日星期三

Python PIP Install throws TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

参考 https://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry/46970344#46970344

apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py

如果运行get-pip.py很慢,修改文件中的args = ["install", "--upgrade", "--force-reinstall", "-i", "https://pypi.douban.com/simple"] + args,新增了pip源即可。

2020年1月13日星期一

bazel 2.0.0新版本问题

更新了最新的bazel,报错:
name 'maven_server' is not defined
name 'maven_jar' is not defined

新版本不支持这些了,需要切换到旧版本的bazel,参考:https://github.com/google/mediapipe/issues/337

mac系统如何降级bazel,参考https://github.com/bazelbuild/homebrew-tap/issues/39

2019年12月20日星期五

统计文件夹中所有wav的时长

ls | xargs -i sox {} -n stat 2>&1 | grep Length | awk '{print $3}' | awk '{sum+=$1} END {print sum}'

2019年12月13日星期五

大量http连接TIME_WAIT

netstat -alntp | grep 38080,发现大量的TIME_WAIT,不确定是否正常。

参考了https://cloud.tencent.com/developer/article/1038071,修改/etc/sysctl.conf,增加三行:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

/sbin/sysctl -p 使配置生效。

不确定是否能解决问题,待观察。

2019年11月27日星期三

pip install openpyxl问题解决

使用python2安装openpyxl时一直遇到一个问题:
Collecting openpyxl
  Using cached https://files.pythonhosted.org/packages/f4/5f/fb8706fba43b46716e252fdd3ffdfe801a63a0f4663b80b6f3421d85ab70/openpyxl-3.0.2.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-qUECOe/openpyxl/setup.py", line 28, in <module>
        from importlib.util import module_from_spec, spec_from_file_location
    ImportError: No module named util

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qUECOe/openpyxl/

发现装3.x版本都不行,pip install pip install openpyxl==2.6.4,换成旧版本之后,解决问题。

2019年11月20日星期三

修改brew update镜像源

替换brew.git:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

替换homebrew-core.git:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

SSL connection error: SSL_CTX_set_tmp_dh failed错误

使用conda list查看到openssl的版本是1.1.1d,将openssl降级,问题解决:
conda install openssl=1.0.2r
参考https://github.com/ContinuumIO/anaconda-issues/issues/10646

conda install遇到PackagesNotFoundError

conda install pydub,无法安装,PackagesNotFoundError: The following packages are not available from current channels

解决:conda install -c conda-forge pydub

2019年11月8日星期五

gson序列化变成unicode编码的问题

gson序列化默认会把<和>变成unicode的编码,在new GsonBuilder()之后需要调用disableHtmlEscaping(),禁止转义html标签。参考https://stackoverflow.com/questions/4147012/can-you-avoid-gson-converting-and-into-unicode-escape-sequences

2019年11月7日星期四

记录一个logback奇怪的问题

我在logback中设置了两个appender,一个是console,另一个是file。root的loglevel是INFO,由于INFO级别的日志很多,所以我想将console中log的级别提升为WARN(docker中处理特别多的console log会极大拖慢机器速度),所以在console log的配置中增加了:
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>WARN</level>
    </filter>

设置console的loglever变成了WARN,只有WANR及以上的日志才回输出到console。文件日志还是INFO及以上的日志。加完后有一个新的问题,日志中行号都变成了问号。

解决:在AsyncAppender的配置项里增加 <includeCallerData>true</includeCallerData> 即可。


2019年11月1日星期五

python2 flask get argument处理url编码

import urllib
urllib.unquote(arg.encode('utf-8'))

python2 flask返回结果编码问题

f.jsonify默认是unicode编码,不会出现什么问题,如果想返回改为utf-8编码的话,需要同时设置:
app.config['JSON_AS_ASCII'] = False
app.config['JSONIFY_MIMETYPE'] = 'application/json;charset=utf-8'

不仅需要设置了JSON_AS_ASCII,返回的头也要设置成utf-8。

2019年7月3日星期三

将文件夹中所有文件软链接到另一个文件夹

从A文件夹链接到B文件夹:
cd A
ls | sed "s:^:`pwd`/:" | xargs -i ln -s {} B

后来发现其实有一个最简单的方法:cd B & ln -s A/* .

2019年6月27日星期四

docker写日志导致压测过程中耗时严重问题

今天在用ab做服务的压测,发现用java直接启动,并发数为1、2、3差不多(30ms以内),并发数加到4、5之后性能才有一定下降(50~60ms)。用docker启动服务,并发请求数为1、2、3、4、5时,每次递增时延都有增加,从50ms一直升到了150ms。docker启动的服务性能远差于java直接启动的服务。
检查发现因为我的服务写日志比较多,docker会写/var/lib/docker/containers/container_id/xxx.json这个json格式的日志文件,加上原来java自己的日志文件,写了双份,同时docker会把日志转为json格式。这一过程特别消耗资源。
测试结果显示,关闭log后,并发数为5时,p95的性能直接降到了4ms,效果惊人。

补充:原来设置了两个日志,一个是同步的console日志,一个是异步的文件日志。docker会收集命令行的日志作为自己的日志存成json文件的log。试了下,关了console的日志,保留文件日志,就没有影响了。