2020-12-17 15:35:27    13    0    0

1、进入容器
docker exec -it php /bin/bash

2、查看php当前模块
php -m

3、安装依赖包
apt-get install libwebp-dev libjpeg-dev libpng-dev zlib1g-dev libfreetype6-dev libjpeg62-turbo-dev

4、添加GD库编译选项
docker-php-ext-configure gd --with-jpeg-dir=/usr/include/

5、安装gd、exif模块
docker-php-ext-install gd

6、安装exif模块
docker-php-ext-install exif

7、重启容器
exit
docker restart php
docker restart nginx

8、查看phpinfo
出现gd模块,并且有:
JPEG Support:enabled
libJPEG Version:6b

2020-12-17 11:10:03    110    0    0

作为一款网红编程语言,Go语言还十分年轻,很多程序员无法及时了解到Go语言的框架、库和软件应用。近日,Github用户avelino分享了一张非常完整且庞大的表单,包括命令行、数据库、Web框架、机器学习、自然语言处理......以下是部分内容截取,感谢avelino的分享。

标准CLI

用于构建标准或基本命令行应用程序的库。

  • argv - 使用bash语法将库命令行字符串拆分为参数数组。
  • cli - 基于golang的功能丰富且易于使用的命令行程序包。
  • cli-init - 开始构建Golang命令行应用程序的简单方法。
  • climax - 具有“human face”的替代CLI。
  • cobra - CLI交互指挥官。
  • complete - 在Go + Go命令bash完成中写入bash完成。
  • docopt.go - 命令行参数解析器。
  • drive - Google Drive客户端命令行。
  • env - 基于标签的结构环境配置。·
  • flag - 简单而强大的命令行选项解析库支持Go子命令。
  • go-arg - 在Go中基于结构的参数解析。
  • go-flags - go命令行选项解析器。
  • kingpin - 支持子命令的命令行和标志解析器。
  • liner - 用于命令行接口的类似于readline的库。
  • mitchellh/ cli - 用于实现命令行界面的库。
  • mow.cli - 用于构建具有复杂标志和参数解析验证的CLI应用程序库。
  • pflag - 替换Go的flag包,实现POSIX/GNU-style --flags。
  • readline - 纯Golang实现,在MIT许可下提供GNU-Readline中的大部分功能。
  • sflags - 基于结构的标志生成器,用于flag, urfave/cli, pflag, cobra, kingpin和其他库。
  • ukautz/ clif - 小型命令行界面框架。
  • urfave/ cli - 在Go(以前的codegangsta / cli)中构建命令行应用程序的简单,快速和有趣的包。
  • wlog - 支持跨平台颜色和并发性的简单日志记录界面。
  • wmenu - 易于使用的菜单结构,用于提示用户进行选择的cli应用程序。



高级控制台UI

用于构建控制台应用程序和控制台用户界面的库。

  • aurora - 支持fmt.Printf / Sprintf的ANSI终端颜色。
  • chalk - 直观的包
2020-12-08 19:50:05    126    0    0

在docker里面用strace -p pid 查看进程当前调用栈报错

$ strace -p 7
ptrace(PTRACE_ATTACH, ...): Operation not permitted   //报错信息

I would like to add that I needed --security-opt apparmor=unconfined along with the options that @wisbucky mentioned. This was on Ubuntu 18.04 (both Docker client and host). Therefore, the full invocation for enabling gdb debugging within a container is:
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --security-opt apparmor=unconfined
摘自 How to solve “ptrace operation not permitted” when trying to attach GDB to a process?

docker 官方解析

The solution for enabling of ptrace and PTRACE_ATTACH in Docker Containers

2020-12-04 10:34:03    54    0    0

自从微软在 Windows 10 v1809 中正式引入 Windows Subsystem for Linux (WSL)之后,我们终于可以以非虚拟机的形式在 Windows 上使用 Linux。同样也进一步地扩展了 Windows 10 的生产力优势,使得在 Windows 10 直接针对 Linux 环境进行项目开发也成为可能。

关联阅读:不用装双系统,直接在 Windows 上体验 Linux:WSL

虽说目前的 WSL 在 Windows 10 生态中已经越发成熟,但在实际使用中依旧存在一些不足之处,比如目前 WSL 的 Linux 发行版必须通过 Windows Store 或者旁加载安装包的形式安装到系统中。另外市面上 WSL 发行版也只有寥寥几款,且 WSL 只能默认安装到系统盘中,如果原本系统盘容量较小,就很容易造成 Windows 的系统盘空间不足。再加上羸弱的 WSL 官方命令行管理工具,实际使用起来也非常不方便。显然如果想要在 Windows 10 上让 WSL 可能还真的需要一些「新手段」。

仅仅两个文件,让 WSL 比以往更好用

这个新手段就是 WSL 的第三方工具 LxRunOffline,这个由国人开发的 WSL 工具可以弥补 WSL 官方工具的不足,比如说他可以实现将任何发行版的 Linux 以 WSL 形式安装到 Windows 10 中,增强 WSL 发行版管理功能,甚至可以实现 WSL 系统备份和恢复,这样无论是学习 Linux 还是进行开发工作都要比以往操作更为方便。

LxRunOffline 与其说是软件,实际上只有两个文件,安装方式可以使用类似 choco 或者 scoop 这样的 Windows 包管理系统进行安装:

scoop 安装:

scoop bucket add extras

scoop install lxrunoffline

choco 安装

choco install lxrunoffline

当然最为简单的安装办法则是直接在其 GitHub 上下载安装,文件下载并解压缩之后,直接拷贝到 C:\Windows\System32即可,如果需要未来可以通过右键菜单功能执行某些功能操作,则需要以管理员权限打开终端,再执行regsvr32 LxRunOfflineShellExt.dll ,完成功能注册。

LxRunOffline 同样

2020-12-02 10:44:46    74    0    0

1:提示找不到gdbm.h头文件

/alidata/QConf/agent/qconf_dump.cc:1:18: fatal error: gdbm.h: No such file or directory
compilation terminated.
agent/CMakeFiles/qconf_agent.dir/build.make:206: recipe for target 'agent/CMakeFiles/qconf_agent.dir/qconf_dump.cc.o' failed
make[2]: *** [agent/CMakeFiles/qconf_agent.dir/qconf_dump.cc.o] Error 1
CMakeFiles/Makefile2:85: recipe for target 'agent/CMakeFiles/qconf_agent.dir/all' failed
make[1]: *** [agent/CMakeFiles/qconf_agent.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

  解决方法:

安装一个gdbm库
$ apt install libgdbm-dev 

2  invalid conversion from ‘const char*’ to ‘char*’

QConf/agent/qconf_dump.cc:63:50: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
     _qconf_dbf = gdbm_open(_qconf_dump_file.c_str(), 0, flags, mode, NULL);
                                                  ^
In file included from /root/QConf/agent/qconf_dump.cc:1:0:
/usr/include/gdbm.h:85:18: note:   initializing argument 1 of ‘<anonymou
2020-12-01 10:40:06    163    0    0

wsl centos7: Failed to get D-Bus connection Operation not permitted

即然是 CentOS 那如果不能运行 service systemctl 那不是等于是残了嘛.

在Windows下能安装linux子系统 CentOS 7 感觉挺好的, 心里暗爽, 然就开始折腾了. 

安装 PostgreSQL 配置完了以后就准备 service postgresql start 的时候就提示了错误:

Failed to get D-Bus connection Operation not permitted
  • 1

查了一下,意思就是 wsl 并不支持。不过 github 上有人解决了这个问题, 这里
大概就是这样:使用Python脚本替换了systemctl 传送门

mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://github.com/gdraheim/docker-systemctl-replacement/blob/master/files/docker/systemctl.py > /usr/bin/systemctl
chmod +x /usr/bin/systemctl​
2020-11-30 11:38:29    61    0    0

1. 打开 WSL,没啥好说的

使用管理员权限打开 powershell,执行 

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

或者在程序和功能选中 WSL。

2.  下载 Centos 7 的docker 镜像

可以参考 https://github.com/RoliSoft/WSL-Distribution-Switcher  来下载。

或者直接下载 下面的链接给出的镜像。

https://raw.githubusercontent.com/CentOS/sig-cloud-instance-images/a77b36c6c55559b0db5bf9e74e61d32ea709a179/docker/centos-7-docker.tar.xz

3. 安装 chocolatey

参考 :https://chocolatey.org/install

使用管理员权限打开 powershell,执行 

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

4.  安装LxRunOffline

choco install lxrunoffline

5. 使用 LxRunOffline 部署 Centos 到WSL

  1.  
    LxRunOffline.exe install -n centos -d E:\ProgramData\Microsoft\Windows\WSL\CentOS -f E:\Progra
  2.  
    mData\Microsoft\Windows\WSL\centos-7-docker.tar.xz

其中 -d 后面是要安装到的目录,-f 是前面下载的镜像, -n 用来指定名称。

然后使用  LxRunOffine 来开启 Centos

 LxRunOffline  run  -n centos

当然,如果你只安装了这一个WSL,那直接输入bash 也可以进行WSL.

百度盘下载地址:

https://pan.baidu.com/s/1fkM8DlEf2

2020-11-17 10:22:31    21    0    0

编辑导读:亚马逊作为一个知名的电商平台,它的成功背后却有一个很难让人理解的设计逻辑:成功的设计不一定是美观的。为什么会这么说呢?本文将从四个维度展开分析,希望对你有帮助。

亚马逊的成功,印证了一个非常简单、但有时让人难以接受的原则:成功的设计不一定是美观的(Successful design is not necessarily beautiful.)。

亚马逊(Amazon.com)无疑是数字化商业转型中最重要的力量。据估计,44%的在线销售额是在亚马逊上完成的,超过三分之一的美国人是亚马逊的 Prime 会员。该公司去年的收入达到 56 亿美元。95% 现有的 Prime 会员表示,他们“肯定”或“很可能”再次续订会员服务。然而,很少有人认为“设计”对公司的成功起到了作用。如果你读过亚马逊著名的领导力原则,你会发现只有两种:“顾客至上(Customer Obsession)”和“创造与简化(Invent and Simplify)”,它们与设计开发产品和服务的方式相关,根本没有明确地谈论设计。

从美学的角度来看,简单(simple)和美观(beautiful)是我们期望优秀的设计要体现出的两个特征,而亚马逊的网站既不简单也不美观。相反,它侧重于体验、过程和功能的简化。对于许多设计师来说,这种复杂的视觉体验能够取得成功,有些令人困惑。那么,应该如何看待并理解亚马逊超出美学范畴的设计方法论呢?

亚马逊的设计之所以成功,是因为它利用了所有优秀的购物体验需要的四个关键原则——无论是线上还是线下,奢侈还是廉价。在他们的心中,优秀的购物体验是:

01 透明的(TRANSPARENT)

优秀的购物体验使定价和购买过程清晰易懂。

乍看上去,亚马逊的购物体验似乎不是很透明。考虑到它的动态定价模式:类似于Uber(滴滴)的动态定价,或者是让旅行者头疼的机票和酒店动态定价。亚马逊一直因为缺乏透明度而受到批评,甚至被罚款。虽然消费者不喜欢动态定价,但是他们也会自己去调查,货比三家,确保买的最划算;而且动态价格并不是亚马逊独有的。

为什么用户会给亚马逊动态定价的机会呢?一个可能的原因是,亚马逊通过其Prime 会员服务,解决了网上购物的两个主要障碍:消除了隐性运输成本,以及认为“网上购物比零售购物慢”的看法。Prime 的成功源于其易理解的心智模型设计:支付一次年费,可以享受包邮和两天到货(另外还可以免

2020-11-12 17:16:03    21    0    0

编辑导语:风控模型的应用场景非常广泛,只要牵扯互联网金融的行业就少不了风控,风控模型建好后还要映射到信用分数空间,才能呈现给用户;本文作者分享了详细的建模方法,教你如何建立模型分数,我们一起来看一下。 

目前在个人信用风控建模领域主要使用的模型有两种:

  1. 基于线性回归分析的评分卡模型,常见于银行背景的放贷机构;
  2. 基于大数据的机器学习模型,如随即森林、XGBoost等,常见于互联网金融领域。

这两种建模方法无论哪种都需要将模型结果映射到信用分数空间,最终呈现给用户一个能够表征信用的分数,比如国内的芝麻分、美国的FICO分。

那么问题来了,模型结果和分数同样都是数值,为什么不直接呈现模型结果?为什么还要进一步转化为分数?为什么使用分数校准?

本文的目的就是要让你知其然也知其所以然。

深入到业务中,带你一步步搞懂分数映射产生的背景以及分数校准背后的业务需求;在了解了业务之后,你就会发现分数的意义和映射方法的内在逻辑。

一、分数映射的产生——一款产品一个模式

先从最简单的情况入手,假设我们现在成立了一家小信贷公司,推出一款借贷产品,详情如下:

(该产品数值仅作示意,不代表真实情况)

此时我们要解决的第一个问题是:如何让这款产品盈利?

信贷业务能够盈利的关键是还款人的利息能够覆盖坏账损失(不能收回的各种应收款项)。

也就是说要尽可能的把钱借给信用良好、按时还款的用户以保证产品盈利。

在产品参数确定后,逾期率是保证产品盈利的唯一影响因素。

这里要提一下关键的一点:如何定义逾期率?

在信贷领域通常逾期超过60天的用户基本上就不会再还钱了,自然的我们就可以通过逾期超过60天的比例来衡量用户的好坏程度。

在机器学习建模时,有时为了增加坏账样本的数量,也会将逾期超过30天的比例定义为逾期率。

1. 逾期率多久可以忍受

根据信贷业务盈利的逻辑,我们可以得到下面这个盈亏平衡的公式:

其中:

  • L —— 表示额度;
  • InterestRate —— 表示贷款年化利率;
  • FundsRate —— 表示资金成本年化利率;
  • pd 表示逾期率(Probability of Default);
  • OperatingCost —— 表示运营成本;
  • NewCost —— 表示拉新成本,指获取单个新客户所支付的金额(拉新成本的定价要结合营销方案具体问题具体分析)。

举个简单的例子,若从渠道购买流量,购买金额除以该渠道的新客户数量就是该渠道的新客成本。

再比如举办拉新奖励

2020-11-12 17:16:02    30    0    0

编辑导语:风控模型的应用场景非常广泛,只要牵扯互联网金融的行业就少不了风控,风控模型建好后还要映射到信用分数空间,才能呈现给用户;本文作者分享了详细的建模方法,教你如何建立模型分数,我们一起来看一下。

承接上文《》本文开头告诉大家怎样更合理的向客户展示信用评估结果。把模型预测值映射到一个分数区间,比如350~950,分数越高信用越好。

很自然的我们就走到了这个最佳选择,至于分数为什么定义在这个区间,我个人理解一是为了跟国际上主流的个人信用评分区间接轨;二是为了拉开用户之间的分数差距。

4. 如何映射分数

最简单最容易想到的是采用尺度变化,将模型预测结果线性的映射到350~950,然后找到cutoff 对应的分数X,告诉用户分数高于X就可以拿到贷款。

等一下!如果过段时间模型更换了怎么办?

模型换了,cutoff随之变化,分数X也跟着变了。这时就会有一部分用户疯狂的呼叫客服问“为啥我的评分变高了,反而不能贷款?”

同时每次更换模型,后台、前端都需要进行相应的逻辑、页面修改,每次模型发布需要多个环节协作完成,是一种高耦合的工作方式。

于是你赶紧召集团队成员讨论解决方案,有人提出一个又简单又好用的方案:分段尺度变换,将cutoff 固定为 680分(本文假定的)然后分成两段作尺度变换。

总结分段尺度变换的优点:

模型切换用户无感。无论模型的cutoff如何调整,用户感知不到差别,只要分数超过680都可以成功申请到贷款;解耦了模型团队与开发团队。也就是说当模型人员校准好评分后,后台开发只需要设定680分通过,从此以后无论模型人员怎么更换模型,后台开发都不用再重新修改代码。“`pythonpredict_desc = table.describe[‘predict’]# 这里用几倍标准差确定上下界根据经验设定,是为了避免outlier值使得分数过于集中在某个范围upper = min(predict_desc[‘mean’] + 5 * predict_desc[‘std’], 1)lower = max(predict_desc[‘mean’] – 3 * predict_desc[‘std’], 0)def get_score_linear(predict, upper, lower, cutoff):“””将模型打分结果尺度变换到350~950的分数区间:param predict: fl

7/155