V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
isno
V2EX  ›  分享创造

虽然还没有完工, 但我还是迫不及待的想“炫技”下我的项目

  •  
  •   isno · 2021-12-31 16:36:16 +08:00 · 4832 次点击
    这是一个创建于 819 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前因贴: https://www.v2ex.com/t/825525#reply0

    项目简介: 以微商城+支付营销为主体的私域 saas 项目;

    项目网址: http:www.f-space.cn:6060

    • 体验账户: 13764891668 (我的手机微信,可以加我技术交流)
    • 密码: isno1026

    可得堆一下功能

    • 概况: 订单统计、流水统计
    • 订单: 包裹分拆、合并,改价、物流、搜索、线下店铺核销
    • ** 商品**: SKU 、分类、积分、品牌、运费模板
    • ** 顾客**: 顾客信息跟踪、会员等级、积分这块
    • ** 门店**: 线下分店管理、geo 经纬度位置、门店收银机接入
    • 优惠券: 普通券、复用券、指定商品、指定会员、指定生效时间
    • 活动: 满免邮、满赠券、满折、满减 指定会员、指定生效时间
    • 系统: 管理员设置、支付设置、基本设置
    • 物流:按体积、按重量、按地区不同价、调整价等
    • 其他 等等...

    项目的经历不说了,聊聊项目技术

    技术语言及框架

    Python2.7 及 Tornado 5.1

    选型原因:

    • Python 对于创业型项目太友好了,开发速度快,简单,成熟的库太多了
    • 在很久以前,听闻豆瓣是阿北一个人,便对 Tornado 产生了兴趣,熟悉之后,开发太简单了,灵活,对项目的控制力很强

    数据库 MongoDB + MongoEngine

    选型原因:

    • 不输 NoSQL 的性能,又比 NoSQL 更多的类型支持
    • 使用 MongoEngine 可以避免 文档型数据库松散的缺点,可以让我更好的定制业务模型,好用
    • 文档型的数据库太好用了

    搜索:

    ElasticSearch

    • 没得说,搜索界的一哥
    • 配合 Elasticsearch_DSL 定义业务文档模型, 清晰明确简单
    • 配合 MongoEngine 的信号机制,监听 Document save update 事件,数据实时同步到 ElasticSearch
    • 好用的呱呱叫

    分布式任务

    Celery + Redis

    用 Python 分布式任务系统可选的不多,但能选的都是精品, 用它做短信、订单处理、搜索更新、定时任务 效率也是呱呱叫

    任务监控 Supervisor

    Python 进程、Celery 任务、数据库、等等进程全给配上,没事登录后台看下任务情况,再看看异常 log ,有问题随时解决

    后台 JS 部分

    古老的技术 Angular 1.3 (用的唯一理由:熟悉的早,那时候 vue 还没有)

    后面想用 vue ,业务改造成本已经老高了

    结合定义的各种 directives ,再写业务 controllers ,效率也不低。

    到后台看下 html 源码, 都是密密麻麻的 controllers

    小程序部分

    电商类的项目,没得用,vant 用上

    小程序后端

    暂时用 python 写写,业务先跑起来,后面有量了,找机会改成 Golang ,这块的成本不高

    第 1 条附言  ·  2021-12-31 17:11:22 +08:00
    公共 CDN 可能有问题, 后面换个私有的 CDN

    对项目或者技术有想法的回个帖呗, 指导我一下 😆
    第 2 条附言  ·  2021-12-31 18:32:35 +08:00
    我在一台 2 核 4G 的服务器上安装了:
    Nginx
    MongoDB
    ElasticSearch
    Redis
    Celery
    Supervisor
    Python 起了四个 Web 进程

    每年 1000 多块钱, 挺值
    第 3 条附言  ·  2022-02-17 16:46:49 +08:00
    [开源了] https://github.com/isno/saas
    把一些敏感信息删除了,本来想把项目美化一下,但不想搞了

    就兴趣的就看,没兴趣关,就这样。
    19 条回复    2022-01-19 13:19:36 +08:00
    smallyu
        1
    smallyu  
       2021-12-31 16:39:04 +08:00
    这可是 v2 啊(狗头)
    vophan1ee
        2
    vophan1ee  
       2021-12-31 16:48:57 +08:00
    项目什么的不多评价了,OP 真的很喜欢「呱呱叫」:)
    suyuyu
        3
    suyuyu  
       2021-12-31 16:51:30 +08:00
    jsdelivr 全挂了
    isno
        4
    isno  
    OP
       2021-12-31 16:52:43 +08:00
    @suyuyu 真是被公共 cdn 日晕了,之前用 bootcdn 挂,现在用 jsdelivr ,还是挂
    isno
        5
    isno  
    OP
       2021-12-31 17:08:22 +08:00
    @vophan1ee 老兄,op 是个什么意思
    iOCZ
        6
    iOCZ  
       2021-12-31 17:26:06 +08:00   ❤️ 1
    Python2.7 。。。。前途一片光明
    isno
        7
    isno  
    OP
       2021-12-31 17:29:13 +08:00
    @iOCZ 用久了,木得办法,先搞业务,有迭代需求了,再搞成 python3
    makelove
        8
    makelove  
       2021-12-31 17:30:09 +08:00
    新开项目为什么要用老的技术呢,py2 都快彻底淘汰了吧
    另外我做这种项目绝对不用 mongodb 而用关系数据库
    isno
        9
    isno  
    OP
       2021-12-31 17:36:59 +08:00
    @makelove
    我的电脑是 15 年 mac ,服务器也是 7 、8 年的老服务器了,改成 py3 ,成本挺高。
    MongoDB 我当成了 NoSQL 用,里面的查询基本只有 findOne, 另外我用了 MongoEngine ,定义了强结构的 Document ,再结合 Reference , 可以满足基本的数据关系

    复杂的查找我也不用 Mongo , 我用 Elastic 啊

    以上 我觉得“挺好用的啊”
    isno
        10
    isno  
    OP
       2021-12-31 17:40:37 +08:00
    再一个 Mongo 我太熟悉了,曾经用 Go 写了一个客户端,熟悉的很, 这个 DB 我太喜欢了
    JarvenI
        11
    JarvenI  
       2022-01-05 17:20:36 +08:00
    打工累了,后续想自己找个能谋生的项目,也想着用 tornado 呢,刚好参考你这个技术栈,不过我可能得基于微信小程序;
    三线城市,打工不是人干的
    meiyoumingzi6
        12
    meiyoumingzi6  
       2022-01-07 09:57:02 +08:00 via iPhone
    啊,这,不考虑用 debug 置成 false 么?


    Traceback (most recent call last):
    File "/usr/lib64/python2.7/site-packages/tornado-5.1-py2.7-linux-x86_64.egg/tornado/web.py", line 1568, in _execute
    result = self.prepare()
    File "/usr/lib64/python2.7/site-packages/tornado-5.1-py2.7-linux-x86_64.egg/tornado/web.py", line 2321, in prepare
    raise HTTPError(self._status_code)
    HTTPError: HTTP 404: Not Found
    meiyoumingzi6
        13
    meiyoumingzi6  
       2022-01-07 14:07:48 +08:00
    还有就是 真的不考虑安全么?

    添加一个站点 直接塞 js 都可以执行, 那不等着被 XSS 注入
    sewer
        14
    sewer  
       2022-01-07 14:11:45 +08:00
    @iOCZ 笑了
    craiiz
        15
    craiiz  
       2022-01-07 15:51:27 +08:00
    2.7....
    BQsummer
        16
    BQsummer  
       2022-01-10 10:15:54 +08:00
    @meiyoumingzi6 没转义?html 标签能运行?离谱...
    isno
        17
    isno  
    OP
       2022-01-10 14:03:50 +08:00
    @meiyoumingzi6 项目还没完工,所有的的 XSS 都会再检测一遍
    现在这个主要是给小程序调试用的,等正式上线了,所有的数据全部清空。
    不过也谢谢你的提醒。
    isno
        18
    isno  
    OP
       2022-01-10 15:06:35 +08:00
    @meiyoumingzi6 刚刚开启了转换,JS 注入的问题暂时不存在了
    qq1340691923
        19
    qq1340691923  
       2022-01-19 13:19:36 +08:00
    建议登录时的用户名也就是手机号码,检验登录时去一下空格
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2939 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:08 · PVG 19:08 · LAX 04:08 · JFK 07:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.