首页 文章 精选 留言 我的

精选列表

搜索[腾讯电子签 saas 版 ess],共10000篇文章
优秀的个人博客,低调大师

nginx 1.22.1 稳定版和 1.23.2 主线版发布

nginx 发布了两个新版本,分别是 stable 分支的 1.22.1 和 mainline 分支的 1.23.2,更新内容主要是修复安全问题。 nginx 1.22.1 安全修复:使用 ngx_http_mp4_module 模块处理特制的 mp4 文件时,可能会导致 worker 进程崩溃、worker 进程内存泄漏和损坏,也可能产生潜在的其他影响 (CVE-2022-41741, CVE-2022-41742) nginx 1.23.2 安全修复:使用 ngx_http_mp4_module 模块处理特制的 mp4 文件时,可能会导致 worker 进程崩溃、worker 进程内存泄漏和损坏,也可能产生潜在的其他影响 (CVE-2022-41741, CVE-2022-41742) 新特性:引入"$proxy_protocol_tlv_..."变量 新特性:当在"ssl_session_cache"指令中使用共享内存时,TLS 会话凭据加密密钥会自动切换 变化:"bad record type" SSL 错误的日志级别从"crit"降低到"info" 变化:当在"ssl_session_cache"指令中使用共享内存时,“无法分配新会话”的错误被记录在"warn"级别,而不是此前的"alert",并且不超过每秒钟一次。 Bugfix:修复 nginx/Windows 无法使用 OpenSSL 3.0.x 构建的问题 Bugfix:修复 PROXY 协议的日志错误 Workaround:当使用搭载 OpenSSL 的 TLSv1.3 时,来自"ssl_session_cache"指令的共享内存被用在使用 TLS 会话凭据的会话上 Workaround:当使用搭载 OpenSSL 或 BoringSSL 的 TLSv1.3 时,使用"ssl_session_timeout"指令指定的超时不起作用 下载地址

优秀的个人博客,低调大师

docker版Django

原文地址:http://kekefund.com/2017/03/30/docker-django/ (本人博客) Django的运行是基于python的环境,加上django包。在docker中运行django,实现方式是从docker下载python镜像,然后安装django运行所依赖的包。 在https://store.docker.com/images/python?tab=description 中介绍pull镜像方式有一种叫python:onbuild。 这种镜像创建方式根据项目中提供的requirements.txt文件自动pip安装依赖包。大多数情况,通过python:onbuild能创建一个满足工程所需的独立镜像。 一、编写requirements.txt 下述的目录结构是一个Django Rest Framework例子,其中项目名称为restful,app名称为api。 首先我们需要把项目所依赖的包放到requirements.txt中: Django==1.8 django-bootstrap-toolkit==2.15.0 django-filter==1.0.1 djangorestframework==3.5.4 djangorestframework-jwt==1.10.0 pandas==0.19.2 SQLAlchemy==1.1.4 MySQL-python==1.2.5 二、编写Dockerfile 本文是基于python2.7制作的,Dockerfile文件如下: FROM python:2-onbuild CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000"] CMD命令执行Django启动程序,0.0.0.0是对所有IP开放,监听端口8000。 需要说明的是CMD中的每个参数得单独分开,像这样"runserver 0.0.0.0:8000"是运行不成功的。 2.1 pip 国内镜像 先创建pip.conf文件,使用阿里云作为镜像: [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com 在创建Dockerfile: FROM python:3.5 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY pip.conf /root/.pip/pip.conf COPY requirements.txt /usr/src/app/ RUN pip install -r /usr/src/app/requirements.txt RUN rm -rf /usr/src/app COPY . /usr/src/app CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8091"] 三、构建镜像 $ docker build -t my-python-app . [cbb@number_api]$ docker build -t number_api_django:0.3 . Sending build context to Docker daemon 655.9 kB Step 1/2 : FROM python:2-onbuild # Executing 3 build triggers... Step 1/1 : COPY requirements.txt /usr/src/app/ Step 1/1 : RUN pip install --no-cache-dir -r requirements.txt ---> Running in 4711187b3011 Collecting Django==1.8 (from -r requirements.txt (line 2)) Downloading Django-1.8-py2.py3-none-any.whl (6.2MB) Collecting django-bootstrap-toolkit==2.15.0 (from -r requirements.txt (line 3)) Downloading django-bootstrap-toolkit-2.15.0.tar.gz Collecting django-filter==1.0.1 (from -r requirements.txt (line 4)) Downloading django_filter-1.0.1-py2.py3-none-any.whl (54kB) Collecting djangorestframework==3.5.4 (from -r requirements.txt (line 5)) Downloading djangorestframework-3.5.4-py2.py3-none-any.whl (709kB) Collecting djangorestframework-jwt==1.10.0 (from -r requirements.txt (line 6)) Downloading djangorestframework_jwt-1.10.0-py2.py3-none-any.whl Collecting pandas==0.19.2 (from -r requirements.txt (line 7)) Downloading pandas-0.19.2-cp27-cp27mu-manylinux1_x86_64.whl (17.2MB) Collecting SQLAlchemy==1.1.4 (from -r requirements.txt (line 8)) Downloading SQLAlchemy-1.1.4.tar.gz (5.1MB) Collecting MySQL-python==1.2.5 (from -r requirements.txt (line 9)) Downloading MySQL-python-1.2.5.zip (108kB) Collecting PyJWT<2.0.0,>=1.4.0 (from djangorestframework-jwt==1.10.0->-r requirements.txt (line 6)) Downloading PyJWT-1.4.2-py2.py3-none-any.whl Collecting pytz>=2011k (from pandas==0.19.2->-r requirements.txt (line 7)) Downloading pytz-2016.10-py2.py3-none-any.whl (483kB) Collecting numpy>=1.7.0 (from pandas==0.19.2->-r requirements.txt (line 7)) Downloading numpy-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl (16.5MB) Collecting python-dateutil (from pandas==0.19.2->-r requirements.txt (line 7)) Downloading python_dateutil-2.6.0-py2.py3-none-any.whl (194kB) Requirement already satisfied: six>=1.5 in /usr/local/lib/python2.7/site-packages (from python-dateutil->pandas==0.19.2->-r requirements.txt (line 7)) Installing collected packages: Django, django-bootstrap-toolkit, django-filter, djangorestframework, PyJWT, djangorestframework-jwt, pytz, numpy, python-dateutil, pandas, SQLAlchemy, MySQL-python Running setup.py install for django-bootstrap-toolkit: started Running setup.py install for django-bootstrap-toolkit: finished with status 'done' Running setup.py install for SQLAlchemy: started Running setup.py install for SQLAlchemy: finished with status 'done' Running setup.py install for MySQL-python: started Running setup.py install for MySQL-python: finished with status 'done' Successfully installed Django-1.8 MySQL-python-1.2.5 PyJWT-1.4.2 SQLAlchemy-1.1.4 django-bootstrap-toolkit-2.15.0 django-filter-1.0.1 djangorestframework-3.5.4 djangorestframework-jwt-1.10.0 numpy-1.12.1 pandas-0.19.2 python-dateutil-2.6.0 pytz-2016.10 Step 1/1 : COPY . /usr/src/app ---> 712a54b6b923 Removing intermediate container df33c056f7c0 Removing intermediate container 4711187b3011 Removing intermediate container 6220af43bf96 Step 2/2 : CMD python ./manage.py runserver 0.0.0.0:8000 ---> Running in 53c0cf32d840 ---> 17c97bc704d9 Removing intermediate container 53c0cf32d840 Successfully built 17c97bc704d9 [cbb@number_api]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE number_api_django 0.3 17c97bc704d9 23 seconds ago 868 MB 这样就成功创建了镜像number_api_django:0.3 四、运行容器 docker run [cbb@number_api]$ docker run -it --rm -p 8080:8000 --name api1 number_api_django:0.3 Performing system checks... System check identified no issues (0 silenced). March 30, 2017 - 07:34:03 Django version 1.8, using settings 'restful.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C. 这样就启动了django程序。

优秀的个人博客,低调大师

预算不多,校园外卖系统怎么做:先租SaaS再验订单异常

预算不多时,先向学校后勤或保卫部门确认校外餐品能否入校、能否设置校门交接点和楼栋取餐位置,再按单校或两到三个校区的小范围试运营。技术路线上,先用按年租用的标准系统跑通用户下单、商家接单、校门中转或楼栋分拣、骑手送达、退款和结算,把预算留给商家拓展、骑手组织和推广;从零自研或源码买断放到确有稳定技术团队、特殊流程和长期维护计划时再评估。 ## 一、路线选择:先租用跑通,再决定是否私有化或定制 预算有限、没有专职技术团队时,系统选型要先看上线速度和维护责任,再看功能菜单。下面三条路线可用同一套业务需求去比较,避免只比首年价格。 |路线|适用条件|首年要核对的成本|主要技术风险| | --- | --- | --- | --- | |按年租用标准系统|单校或两到三个校区试运营,无专职技术团队|软件套餐、增值模块、小程序认证、短信、云资源、支付通道、培训维护|账号主体、数据导出、支付分账开通条件、售后响应边界| |源码部署或二次开发|有技术维护人员,确有特殊流程或接口需求|许可、部署环境、域名证书、备份监控、升级维护|版本升级、漏洞修复、支付与地图接口变更、数据迁移| |完全自研|技术团队稳定,业务差异明确,能持续投入运维|产品、开发、测试、服务器、安全、运营人员|需求变更、并发高峰、退款对账、线上故障处理| ## 二、校园场景的关键不是商城页面,而是订单状态和交接点 封闭校园里,一笔订单往往要经过商家出餐、校外运输、校门交接、按楼栋分拣、校内骑手接力和送达通知。系统如果只记录“已下单、已送达”,现场少餐、错餐、跨楼栋分拣和退款时就很难定位责任。技术验收应先看订单状态机能否约束这些交接动作。 |状态|进入条件|允许下一步|核对点| | --- | --- | --- | --- | |CREATED|用户提交订单,尚未支付|PAID、CLOSED|支付超时关闭,重复提交只生成一笔有效订单| |PAID|支付回调确认成功|ACCEPTED、REFUNDING|回调幂等,金额与订单号一致| |ACCEPTED|商家接单|COOKED、REFUNDING|缺货、拒单、部分退款的处理| |COOKED|商家出餐|PICKED_UP|出餐时间、餐品标识、打印小票| |PICKED_UP|校外骑手取餐|HUB_RECEIVED|取餐拍照、骑手交接| |HUB_RECEIVED|校门交接点收餐|SORTED|单扫、连扫、录码收单,缺餐登记| |SORTED|按楼栋或宿舍分组|DELIVERED|楼栋地址预设、批量中转、批量通知| |DELIVERED|校内骑手送达|SETTLED|送达凭证、取餐通知、售后入口| |SETTLED|结算完成|—|商家应结、骑手收益、平台抽成可对账| 状态机之外,还要看三个技术边界:支付回调必须幂等,批量中转和批量送达要区分“整批完成”和“部分完成”,退款要能回到原订单和原结算记录。把这些规则先写进验收脚本,比现场只看功能演示更容易发现差异。 ## 三、预算表:把年费放进总拥有成本 低成本起步不等于只比较软件年费。预算至少分成六块,每一块都向服务商确认“包含项、不包含项、续费方式”,再用同一份需求向两到三家询价。 |费用块|首年是否发生|是否可能续费|核对材料| | --- | --- | --- | --- | |软件套餐与增值模块|是|是|模块清单、账号数、校区数、终端范围| |小程序认证、短信、云资源、支付通道|是|按年或按量|第三方计费单、支付费率、短信单价| |部署环境或定制开发|按路线|按维护约定|部署清单、备份监控、升级边界| |培训与日常维护|是|按服务约定|培训次数、响应时段、问题受理渠道| |商家、骑手与推广|是|持续发生|物料、补贴、兼职骑手结算规则| |预备资金|是|—|退款、缺餐、活动补贴、临时运力| ## 四、用一个可复现的状态机校验脚本验收 下面的示例代码用于本地校验订单状态和结算拆分,不绑定某套现网实现。它把正常流转、重复流转、跳状态和优惠超额四种输入放在一起,便于在上线前形成可复现的核对记录。 ``` const FLOW = { CREATED: ['PAID', 'CLOSED'], PAID: ['ACCEPTED', 'REFUNDING'], ACCEPTED: ['COOKED', 'REFUNDING'], COOKED: ['PICKED_UP'], PICKED_UP: ['HUB_RECEIVED'], HUB_RECEIVED: ['SORTED'], SORTED: ['DELIVERED'], DELIVERED: ['SETTLED'], REFUNDING: ['CLOSED'], SETTLED: [], CLOSED: [] }; function canMove(from, to, ctx = {}) { if (!FLOW[from] || !FLOW[from].includes(to)) return false; if (to === 'PAID' && ctx.paid !== true) return false; return true; } function money(n) { return Number(n.toFixed(2)); } function settle(order) { const base = order.goods + order.packing - order.discount; if (base ${to}:`, canMove(from, to, ctx)); } const normal = { goods: 20, packing: 1, delivery: 3, discount: 2, commissionRate: 0.08, riderFee: 4 }; console.log('normal:', settle(normal)); try { settle({ goods: 10, packing: 1, delivery: 3, discount: 30, commissionRate: 0.08, riderFee: 4 }); } catch (e) { console.log('abnormal:', e.message); } ``` 按以上示例输入,预期输出为:正常流转 true,重复流转 false,跳过 SORTED 直接送达 false,正常结算输出 userPaid 22、merchant 17.48、rider 4、platform 0.52,优惠超额时输出“优惠金额超过商品与包装金额”。这些数值只是校验样例,实际费率和字段应以项目方案、支付通道规则和保存的运行记录为准。 ## 五、上线步骤与异常验收清单 1. 先确认校方准入、校门交接位置、楼栋取餐点和骑手通行时段,形成一页场地约束说明。 1. 准备主体资料、小程序账号、支付开通材料和商家资质,明确账号管理员与财务负责人。 1. 配置校区、楼栋、宿舍、配送范围、营业时段和收费规则,统一新旧楼栋名称。 1. 录入首批商家与商品,安排商家接单、打印小票、缺货处理和售后入口培训。 1. 用一笔餐走正常订单、缺餐错餐、退款对账、支付回调重复、骑手超时和跨楼栋分组六类场景。 1. 先在小范围宿舍或单一楼栋试运行,记录交接耗时、错餐位置和退款处理结果,再逐步扩展。 ## 常见问题 **问:预算几千元够不够?** 答:先按软件套餐、第三方费用、部署维护和运营支出分项取得项目报价,再留退款、补贴和临时运力预备金。统一按总拥有成本比较,避免只看首年低价。 **问:没有技术团队能上线吗?** 答:标准系统可按上线流程配置,但小程序认证、支付开通、校方准入和日常运营仍需团队办理。技术维护范围要写进服务清单。 **问:怎么验证校门中转和楼栋分拣?** 答:让服务商按正常订单、缺餐错餐、退款、重复回调和跨楼栋分组走一遍完整链路,带上本校校门规定与楼栋图现场记录结果。 **问:先自研还是先租用?** 答:有稳定技术团队、明确特殊流程和长期维护计划时再评估自研或源码部署;预算有限且需要快速验证市场时,先用按年租用的标准系统跑通一笔餐。 下一步可把校方准入、楼栋布局、商家名单和骑手班次整理成一页需求说明,再按状态机、费用表和异常清单逐项核对演示结果。 作者:微订(上海逊柯计算机科技有限公司)。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册