Python3输出中文错误

January 6, 2020 0 条评论 2.13k 次阅读 0 人点赞

python3中输出中文,可能出现如下错误 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) 代码如下 s="中文" print(s) 解决此类问题,添加如下代码即可: import sys, locale, os utf8_stdout = os.fdopen(sys.stdout.fileno(), mode='w', encoding='utf-8', closefd=False) sys.stdout = utf8_stdout

小程序图片预览黑屏问题解决

June 9, 2019 0 条评论 6.25k 次阅读 2 人点赞

最近在做微信小程序,过程中遇到一个奇怪的问题,在使用小程序的图片预览功能的时候,发现在开发工具中正常,IOS手机正常,Android手机黑屏。 代码如下: ontap: function(e) { wx.previewImage({ urls: [e.currentTarget.dataset.url], }) }, 小程序图片预览API的wiki如下: https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html 刚开始考虑到是机型兼容性问题,看网上有不少关于此类问题的讨论,尝试了各种办法也不能奏效。今天无意间发现,后端返回的url是http,起原因是因为我的后端server是用nginx做了一层反向代理,而上传图片后生成url的代码如下: url = request.host_url + "static/" + filename 那么就会导致request.host_url取到的并非真实外网地址(https),而小程序的后台请求只支持https,猜测这可能是导致黑屏的直接原因,基于此猜测,修改后台代码,将返回的图片url替换为https url = request.host_url + "static/" + filename url = url.replace("http:", "https:") 果然可以正常预览了。 至此,问题是解决了,那么,为何在开发工具、IOS手机上可以正常预览呢?谈一谈自己的没有考证的猜测。 先说开发工具,在工具中有个配置是否校验合法域名的开关,即便关闭不校验域名的功能,依然能正常预览。猜想可能是因为开发工具的模拟器与微信客户端的实现并不完全一致。 再说IOS手机,IOS早在2017年就开始限制http的使用。在这里通过后台抓包看,即使server返回的是http的图片url,当预览图片时,后台收到的资源请求地址也是https,也就说要么是微信要么是IOS系统自动做了http转https的操作,猜测可能是微信迎合苹果的官方规定,自动将http转换成https所致。 以上两点都是猜测,希望有知情的网友一起讨论交流哈~ 最后的最后,附上小程序二维码,这是一个记录小区车辆违停情况的小程序,支持自动识别车牌号、各类排行榜,专治乱停乱放之乱象,欢迎捧场和转发~

Android Studio菜单消失Generate Signed Bundle / APK

May 30, 2019 0 条评论 4.84k 次阅读 0 人点赞

今天在使用Android Studio导入工程后,发现【build】下的【Generate Signed Bundle / APK】菜单不见了,折腾了好一会儿,最后通过如下方法解决,在此记录一下。方法如下: 在【File】菜单中点击【Sync Project with Gradle Files】,登上几分钟,重启Android Studio后即可。

Hive定位数据文件路径的方法

May 30, 2019 0 条评论 2.46k 次阅读 0 人点赞

在hive中排查数据错位、脏数据时,需要知道数据的具体文件,可以通过虚拟列来帮助诊断定位。 * INPUT__FILE__NAME map任务读入的文件全路径 * BLOCK__OFFSET__INSIDE__FILE 如果是RCFile或者是SequenceFile块压缩格式文件则显示Block file Offset,也就是当前快在文件的第一个字偏移量,如果是TextFile,显示当前行的第一个字节在文件中的偏移量 * ROW__OFFSET__INSIDE__BLOCK RCFile和SequenceFile显示row number, textfile显示为0 譬如有表a,我们需要找到异常数据的具体位置,代码如下: select *,INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE from a where ds=2019052901 and imei1='460017684629873' 得到如下结果: 拿到文件路径下载下来,就可以定位到具体的问题原因了

LDA2Vec介绍

April 6, 2018 4 条评论 6.25k 次阅读 0 人点赞

word2vec捕捉单词之间强大的关系,但生成的向量基本上是不可解释的,并不代表文档。而LDA很容易被人类解读,但并不像word2vec那样建立局部词关系。lda2vec正是将word2vec和LDA各自的优点混合到一起,所形成的一个新的算法。 [pdf-embedder url="http://www.lichzhang.net/wp-content/uploads/2018/04/word2vec2CLDA2Candintroducinganewhybridalgorithm-lda2vec.pdf"] 其他资料: Github:https://github.com/cemoody/lda2vec When LDA meets word2vec:https://www.datasciencecentral.com/profiles/blogs/a-tale-about-lda2vec-when-lda-meets-word2vec?xg_source=activity

分享两篇关于区块链技术的文章

February 28, 2018 0 条评论 2.28k 次阅读 0 人点赞

英国发布的区块链白皮书: [pdf-embedder url="http://www.lichzhang.net/wp-content/uploads/2018/02/gs-16-1-distributed-ledger-technology.pdf"] 区块链: [pdf-embedder url="http://www.lichzhang.net/wp-content/uploads/2018/02/blockchain.pdf"]

WordPress上传文件HTTP错误解决方案

February 28, 2018 33 条评论 19.06k 次阅读 0 人点赞

使用WordPress上传文件时提示HTTP错误 首先查看php的错误日志,发现并无错误日志打出,说明请求很可能没有到php这一层。我是通过nginx做php的反向代理,查看nginx日志,错误日志如下: 2018/02/28 16:42:29 [error] 32515#32515: *19 client intended to send too large body: 1242809 bytes, client: 14.17.22.49, server: lichzhang.net, request: "POST /wp-admin/async-upload.php HTTP/1.1", host: "www.lichzhang.net", referrer: "http://www.lichzhang.net/wp-admin/post-new.php" 看日志提示就比较明朗了,请求body太大了,我们调整nginx的请求包体长度即可。 vim /etc/nginx/nginx.conf 添加/修改配置如下: client_max_body_size 128M; keepalive_timeout 300; 这里这是包体长度为128M,同时设置链接保持时长为300秒。重启nginx后问题解决了。

如何在SVN中使用外链

February 27, 2018 0 条评论 3k 次阅读 0 人点赞

笔者在工作中遇到需要在SVN的一个仓库中使用另一个SVN仓库中的文件,刚开始通过拷贝文件,刚开始还感觉比较方便,但是久而久之维护成本越来越高,经常会因为两边文件不一致导致的各种问题。为了解决文件同步的问题,这里使用了SVN的外链。 SVN外链是建立引用指向仓库内或者其他仓库的文件或者文件夹。譬如有A、B两个仓库,A仓库中有大量协议描述文件,B仓库需要用到A中的描述文件,那么我们就可以在B仓库建立一个外链指向A仓库的指定文件夹,当A仓库中的文件更新后,只需要update B仓库就可以自动更新了。外链的类型分为外部文件夹和外部文件之分。 外部文件夹 在需要建立外部文件夹的目录中之行如下指令: svn propedit svn:externals . 进入外链编辑,按照如下格式输入: #[name URI] 譬如: lib https://svn.example.com/Framework/trunk/lib 保存后,执行: svn up 即可将https://svn.example.com/Framework/trunk/lib文件夹同步到当前目录下的lib下 外部文件 同步文件夹粒度毕竟有些粗糙,很多时候我们只希望引用指定目录下的某几个文件而不是全部文件夹,此时外部文件就可以派上用场了。外部文件的用法和外部文件夹一样的,只是URI使用的是指定文件的URI。 外部文件在SVN1.6版本以后才支持,同时,只能引用相同仓库的文件,也就是说我们没法直接引用一个外部仓库的指定文件。 那么如何引用外部仓库的单个文件呢?这里将外部文件夹和外部文件结合起来就可以很好解决该问题了。 在A仓库中新建一个extern文件夹 在extern文件夹下分别建立引用,指向需要共享的文瑾啊 在B仓库中需要使用共享文件的地方,建立引用指向A仓库中的extern文件夹即可

机器学习入门之朴素贝叶斯

February 26, 2018 0 条评论 2.19k 次阅读 0 人点赞

[embeddoc url="http://www.lichzhang.net/wp-content/uploads/2018/02/朴素贝叶斯法.pptx" viewer="microsoft"] 使用scikit-learn做游戏流失用户预测 在scikit-learn中,朴素贝叶斯有如下三种类型: 高斯朴素贝叶斯 一般用于连续型特征预测模型 多项式朴素贝叶斯 一般用于离散型特征预测模型 伯努利朴素贝叶斯 一般用于二项分布的特征预测模型 以下是这三种模型的用法 from sklearn.naive_bayes import GaussianNB from sklearn.naive_bayes import MultinomialNB from sklearn.naive_bayes import BernoulliNB # 构造特征值 x # 构造标注数据 y clfG = GaussianNB().fit(x, y) clfM = MultinomialNB().fit(x, y) clfB = BernoulliNB().fit(x, y) 下面举一个具体的使用案例,利用朴素贝叶斯来预测游戏的流失用户。首先是准备用样本数据,根据对游戏的理解,选取了如下特征: #文件说明 # 统计日期 # appid # 用户标识 # 流失标识 # 前两周活跃天数 # 前两周累计登陆次数 # 前两周累计游戏时长 # 前一周活跃天数 # 前一周累计登陆次数 # 前一周累计游戏时长 # 最后登录日期 # 用户游戏生命天数 # 8 * 前一周累计登陆天数/用户游戏生命天数 # 活跃天数趋势 # 登陆次数周趋势 # 游戏时长周趋势 # 前两周累计付费天数 # 前两周累计付费 # 前两周累计付费次数 # 前两周累计付费天数 # 前两周累计付费 # 前两周累计付费次数 # 付费天数周趋势 # 付费金额周趋势 下面开始读入数据 import pandas as pd from matplotlib import pyplot as plt %matplotlib inline df=pd.read_table("lost_user_sample", header = None) 构造样本数据 y=df[3] print y.values x=df[[4,7, 5,8, 6,9, 18,21, 19,22, 20,23, 15,16,17, 24,25]] print x.values 分别使用高斯朴素贝叶斯、多项式朴素贝叶斯来做预测 from sklearn.naive_bayes import GaussianNB from sklearn.naive_bayes import MultinomialNB from sklearn.cross_validation import train_test_split from sklearn import metrics print "总样本数:",len(y) x_data_train,x_data_test,y_data_train,y_data_test = train_test_split(x, y, test_size=0.2, random_state=1)…

关于setuid、setgid的区别

February 26, 2018 0 条评论 2.91k 次阅读 0 人点赞

首先说明三个用户ID 实际用户ID:当前登陆用户的ID 有效用户ID:当前程序以哪个用户身份来运行的,和实际用户ID可能一样,也可能不一样 保存的设置用户ID:是有效用户的副本 关于setuid函数,其作用如下: 如果进程具有超级用户权限,则setuid将实际用户id、有效用户id和保存的设置用户id都设置为指定uid 如果进程没有超级用户权限,但是uid等于 实际用户id 或者 保存的设置用户id,则setuid将 有效用户ID 设置为uid 否则,则返回错误,errno设置为EPERM 另外,关于linux可执行文件的权限s,说明如下: s权限可以作用于用户、用户组 如果作用在用户上,则表示其他用户在执行该程序时,其有效用户ID会被设置为文件的所有者 如果作用在用户组上,则表示其他用户在执行该程序时,其有效用户组被设置为文件的所有组 可以通过chmod来添加、删除s权限,具体如下: 添加用户s权限: chmod u+s xxxx 添加用户组s权限: chmod g+s xxxxx 删除用户s权限: chmod u-s xxxxx 删除用户组s权限: chmod g-s xxxxx

加载更多