Giter Site home page Giter Site logo

jackpopc / devweekly Goto Github PK

View Code? Open in Web Editor NEW
1.7K 111.0 135.0 292 KB

每周五发布,精选优质开发者内容,包括开源项目、工具资源、技术文章等方面。

github python collections resource-list developer-tools development go java javascript

devweekly's Introduction

高考志愿考研保研副业赚钱职业规划简历优化,微信欢迎加入《猴哥成长营》

DevWeekly

GitHub stars GitHub watchers GitHub watchers GitHub forks

DevWeekly收集整理每周优质开发者内容,包括开源项目工具资源技术文章等方面。

每周五定期发布,同步更新到 知乎:Jackpop公众号:平凡而诗意

欢迎大家投稿,提交issue,推荐或者自荐开源项目/资源/工具/文章~

订阅方式

  1. Star并收藏项目DevWeekly
  2. 关注 知乎:Jackpop
  3. 关注并星标公众号:平凡而诗意

进阶技术,优质资源,实用工具,欢迎关注公众号平凡而诗意

# 2023年

10月

⭐️第37期:当打开终端并输入“ls”时会发生什么?

9月

⭐️第36期:CLI比 IDE 更高效!

8月

⭐️第35期:为什么程序员都喜欢开源的软件?

7月

⭐️第34期:是什么让 Git 如此难用?

6月

⭐️第33期:BeOS虽然失败,但是它依然可圈可点

5月

⭐️第32期:CRDT 速度提高 5000 倍

4月

⭐️第31期:有什么理由从vim8切换成neovim吗?

3月

⭐️第30期:为什么水电如此绿色,却无法大规模应用?

⭐️第29期:作为开发人员,如何提升沟通效率?

⭐️第28期:“Hello, World!”

2月

⭐️第27期:构建自己的文本图像生成模型

⭐️第26期:禁止所有cookie会发生什么?

1月

⭐️第25期:无密码的工作原理

⭐️第24期:怎么找出影响软件性能的根本原因?

2022年

12月

⭐️第23期:Windows命令行到底有多强大?

⭐️第22期:微服务并不是万能解药!

⭐️第21期:如何选择合适的哈希算法?

11月

⭐️第20期:我们生命中和谁在一起花费的时间最多?

⭐️第19期:在浏览器中运行Python

⭐️第18期:从零创建一个Python工具包

⭐️第17期:一个专业程序员的10年

10月

⭐️第16期:用于执行 Jupyter Notebook三种工具

⭐️第15期:为什么麦当劳的自助点餐机器如此容易破解?

⭐️第14期:广告商会渗入我们的梦吗?

⭐️第13期:当你在终端上按下一个键时会发生什么?

9月

⭐️第12期:一个关于 "yes"的小故事

⭐️第11期:Java的7种垃圾回收方式

⭐️第10期:像专家一样处理Python日志

⭐️第9期:没有IDE,该怎么Debug?

⭐️第8期:为什么这么多品牌迫切想要改变Logo?

8月

⭐️第7期:数据科学必备的10个Python工具

⭐️第6期:Linux的susudo:有什么区别?

⭐️第5期:彻底搞懂操作系统

⭐️第4期:为什么互联网大厂在不停的招聘?

7月

⭐️第3期:为什么不能使用If-Else?

⭐️第2期:重构代码的10个最佳实践

⭐️第1期:什么是时间复杂度?


大家好,在2020年到我曾经整理过28期内容,由于种种原因而停更了,这次DevWeekly在原来的基础上进行了全新的改版,更加用心、更多精品。如果对历史内容感兴趣,我也也整理放在这里了,感兴趣的同学可以看一下!


⭐️第28期 ⭐️第27期 ⭐️第26期 ⭐️第25期 ⭐️第24期 ⭐️第23期
⭐️第22期 ⭐️第21期 ⭐️第20期 ⭐️第19期 ⭐️第18期 ⭐️第17期
⭐️第16期 ⭐️第15期 ⭐️第14期 ⭐️第13期 ⭐️第12期 ⭐️第11期
⭐️第10期 ⭐️第9期 ⭐️第8期 ⭐️第7期 ⭐️第6期 ⭐️第5期
⭐️第4期 ⭐️第3期 ⭐️第2期 ⭐️第1期

devweekly's People

Contributors

jackpopc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

devweekly's Issues

【开源自荐】轻快图床:基于Koa2 + Vue3.x + Vite3.x + typescript开发的轻量级快捷图片管理系统、图床系统

  • 项目名称:轻快图床
    基于Koa2 + Vue3.x + Vite3.x + typescript开发的轻量级快捷图片管理系统、图床系统

  • 项目地址:

  • 项目简介 (100 字以内):
    程序员日常就是写博客,当然写博客时就会涉及到在博文中插入图片,所以往往会使用图床来进行图片资源管理,市面上较流行的图床系统是PicGo,是使用electron-vue开发的桌面应用程序,每次换电脑或者重装系统后都需要重新下载安装并配置图床,比较麻烦。所以开发了这款轻快图片管理系统,是基于vue3.x + typescript + vite + koa + mysql开发的前后端分离图床系统,使用该系统可以不需要每次都配置图床。

  • 项目截图 (6张以内):

    • 上传区
      202211101718307.png
    • 图片管理
      202211101719274.png
    • 存储桶管理
      202211101719413.png
    • 字典管理
      202211101725334.png
    • 相册管理
      202211101720094.png
    • 存储桶插件开发
      202302201023375.png

【开源自荐】 PrimiHub - 开源隐私计算平台

  • 项目名称:PrimiHub

  • 项目地址:https://github.com/primihub/primihub

  • 项目简介 (100 字以内):PrimiHub 从密码学等底层技术确保了数据在计算过程中不回被泄漏,支持多方计算、联邦学习、隐私求交(PSI)、隐私查询(PIR)等特性,支持数据源接入、数据消费、接入应用、语法、语义、安全协议多方面的扩展。

  • 项目截图 (6张以内):

image

image

【开源自荐】Spring应用启动优化

项目地址:https://github.com/linyimin0812/spring-startup-analyzer

Spring Startup Ananlyzer

Spring Startup Ananlyzer 采集Spring应用启动过程数据,生成交互式分析报告(HTML),用于分析Spring应用启动卡点,支持Spring Bean异步初始化,减少优化Spring应用启动时间。

核心能力

Spring Bean初始化详情信息,支持初始化耗时/beanName搜索、Spring Bean初始化时序图方法调用次数及耗时统计(支持自定义方法)、应用未加载的jar包(帮助fatjar瘦身)及应用启动过程线程wall clock火焰图,帮助开发者快速分析定位应用启动卡点

  • Spring Bean初始化详情
    Spring Bean Initialization

  • Spring Bean初始化时序图
    Spring Bean Timeline

  • 方法调用次数、耗时统计(支持自定义方法)
    Details of Method Invoke

  • 应用未加载的jar包(帮助fatjar瘦身)
    Unused Jars

  • 应用启动过程线程wall clock火焰图(支持指定线程名称,不指定则采集全部线程)
    Flame Gragh

【开源自荐】SolidUI 一句话生成任何图形

本人介绍

本人从事十年年大数据相关工作,做过用户增长,BI,大数据中台,知识图谱,AI中台,擅长大数据AI相关技术栈。在CSDN输出很多专栏,是CSDN博客专家,CSDN大数据领域优质创作者,2018年参与共建WeDataSphere开源社区,社区属性是数据相关综合社区,共建过DataSphereStudio(开发管理集成框架),Exchangis(数据交换工具),Streamis(流式应用开发管理系统),Apache Linkis (计算中间件) 。个人发起SolidUI数据可视化社区。Apache Asia 2022 讲师 ,Hadoop Meetup 2022 讲师,WeDataSphere Meetup 2022讲师。Apache Linkis Committer , EXIN DPO (数据保护官)。

2023年2月开始创业,全职运营SolidUI。

SolidUI介绍

一句话生成任何图形。

随着文本生成图像的语言模型兴起,SolidUI想帮人们快速构建可视化工具,可视化内容包括2D,3D,3D场景,从而快速构三维数据演示场景。SolidUI 是一个创新的项目,旨在将自然语言处理(NLP)与计算机图形学相结合,实现文生图功能。通过构建自研的文生图语言模型,SolidUI 利用 RLHF (Reinforcement Learning Human Feedback) 流程实现从文本描述到图形生成的过程。

SolidUI Gitee https://gitee.com/CloudOrc/SolidUI
SolidUI GitHub https://github.com/CloudOrc/SolidUI
SolidUI 官网地址 https://cloudorc.github.io/SolidUI-Website/
Discord https://discord.gg/NGRNu2mGeQ
CSDN https://limeng.blog.csdn.net/
SolidUI v0.2.0 发版文章 https://mp.weixin.qq.com/s/LikYVv_4O-Gv43wecw-b3w
SolidUI v0.2.0 功能介绍文章 https://mp.weixin.qq.com/s/2wyBmmYxeoNI9NdSM94oFw
SolidUI v0.2.0 教程视频 https://www.bilibili.com/video/BV1C8411R75D
SolidUI v0.2.0 概念视频 https://www.bilibili.com/video/BV11G411Z7Q4
SolidUI v0.2.0 演示环境 http://www.solidui.top/ admin/admin

【工具自荐】一个灵活的 nodejs 爬虫库 —— x-crawl

x-crawl · npm GitHub license

x-crawl 是一个灵活的 Node.js 多功能爬虫库。灵活的使用方式和众多的功能可以帮助您快速、安全、稳定地爬取页面、接口以及文件。

如果你也喜欢 x-crawl ,可以给 x-crawl 存储库 点个 star 支持一下,感谢大家的支持!

GitHub:https://github.com/coder-hxl/x-crawl

特征

  • 🔥 异步同步 - 只需更改一下 mode 属性即可切换异步或同步爬取模式。
  • ⚙️ 多种用途 - 可爬页面、爬接口、爬文件以及轮询爬,满足各种场景需求。
  • 🖋️ 写法灵活 - 同种爬取 API 适配多种配置,每种配置方式都非常独特。
  • ⏱️ 间隔爬取 - 无间隔、固定间隔以及随机间隔,产生或避免高并发爬取。
  • 🔄 失败重试 - 避免因短暂的问题而造成爬取失败,自定义重试次数。
  • ➡️ 轮换代理 - 配合失败重试,自定义错误次数以及 HTTP 状态码自动轮换代理。
  • 👀 设备指纹 - 零配置或自定义配置,避免指纹识别从不同位置识别并跟踪我们。
  • 🚀 优先队列 - 根据单个爬取目标的优先级可以优先于其他目标提前爬取。
  • ☁️ 爬取 SPA - 爬取 SPA(单页应用程序)生成预渲染内容(即“SSR”(服务器端渲染))。
  • ⚒️ 控制页面 - 可以表单提交、键盘输入、事件操作、生成页面的屏幕截图等。
  • 🧾 捕获记录 - 对爬取进行捕获记录,并在终端使用彩色字符串提醒。
  • 🦾 TypeScript - 拥有类型,通过泛型实现完整的类型。

示例

以每天自动获取世界各地的经历和房间的一些照片为例:

// 1.导入模块 ES/CJS
import xCrawl from 'x-crawl'

// 2.创建一个爬虫实例
const myXCrawl = xCrawl({ maxRetry: 3, intervalTime: { max: 3000, min: 2000 } })

// 3.设置爬取任务
// 调用 startPolling API 开始轮询功能,每隔一天会调用回调函数
myXCrawl.startPolling({ d: 1 }, async (count, stopPolling) => {
  // 调用 crawlPage API 来爬取页面
  const res = await myXCrawl.crawlPage({
    targets: [
      'https://www.airbnb.cn/s/experiences',
      'https://www.airbnb.cn/s/plus_homes'
    ],
    viewport: { width: 1920, height: 1080 }
  })

  // 存放图片 URL 到 targets
  const targets = []
  const elSelectorMap = ['._fig15y', '._aov0j6']
  for (const item of res) {
    const { id } = item
    const { page } = item.data

    // 等待页面加载完成
    await new Promise((r) => setTimeout(r, 300))

    // 获取页面图片的 URL
    const urls = await page!.$$eval(
      `${elSelectorMap[id - 1]} img`,
      (imgEls) => {
        return imgEls.map((item) => item.src)
      }
    )
    targets.push(...urls)

    // 关闭页面
    page.close()
  }

  // 调用 crawlFile API 爬取图片
  await myXCrawl.crawlFile({ targets, storeDir: './upload' })
})

运行效果:

注意: 请勿随意爬取,爬取前可查看 robots.txt 协议。这里只是为了演示如何使用 x-crawl 。

更多

更多内容可查看:https://github.com/coder-hxl/x-crawl

【开源自荐】基于nextjs14,良好的体验、响应式、编码设计,开源了C-Shopping开源电商平台

老师您好,这是我第一次开源项目,有很多不足,但是是我花了晚上休息的时间,精心打磨的,希望自己能有高质量的输出,也希望能帮助到更多的人。

嗨,大家好!欢迎来到C-Shopping,这是一场揭开科技面纱的电商之旅。我是C-Shopping开源作者“继小鹏”,今天将为你介绍一款基于最新技术的开源电商平台。让我们一同探索吧!

项目在线演示地址:

项目传送门:https://github.com/huanghanzhilian/c-shopping

如果你觉得有帮助,请给我一个Star,这会给我更大的鼓励。


项目背景

背景:

  • 一直以来前端UI框架被固定形式占据(受限于传统的UI框架),导致视觉疲劳,在开发一些高度自定义的项目时,往往力不从心;
  • 多设备适配的web优秀项目很少,学习和维护成本较高;
  • 当项目复杂后,在组件需要调用多个 api 时会变得复杂起来,比如需要管理多个 loading 和 error 状态,这会导致产生非常多的 state 声明,还有请求取消、请求竞态等可能存在的问题也容易被忽略;
  • 随着项目复杂,样式的开发与维护变得庞大且臃肿;

意图:

改进背景中提到的问题。

目的:

打造一个完整的,适合web端的良好生态。


首先,让我们了解一下C-Shopping的技术背后。我采用了一系列最前沿的技术,包括Next.js、Tailwind CSS、Headless UI、Redux-Toolkit-RTK Query、JWT和Docker等。这确保了此项目不仅高效,而且具备强大的可扩展性。我们致力于解决传统电商平台的一些痛点:不美观、不适配不同设备、界面单一,等等。C-Shopping通过采用最新的技术和设计理念,为用户打造了一场全响应式技术开发体验。

C-Shopping关注用户体验。我们的界面不仅仅美观,更是响应式设计,让用户可以在任何设备上轻松愉悦地购物。个人中心和订单管理功能也让你的购物更加个性化和方便。


项目亮点

C-Shopping的亮点之一是我们采用了一系列先进的技术,包括Next.js、Tailwind CSS、Headless UI、Redux-Toolkit-RTK Query等,为用户提供了极致的性能和体验。不仅注重美观,更追求技术上的卓越。

Next.js 驱动的极速体验

C-Shopping采用了 Next.js,这不仅意味着网页加载速度飞快,而且还支持服务端渲染,让你体验到前所未有的流畅度。

🎨 Tailwind CSS 的时尚设计

采用 Tailwind CSS,为 C-Shopping 注入了时尚感。每一次的界面都如同艺术品般精致,让购物成为一场视觉的盛宴。

🔧 Headless UI 自由而灵活

C-Shopping 选择了 Headless UI 风格,让用户可以在购物过程中拥有更多自由。不再受限于传统的UI框架,为你打开了更多定制的大门。

🔐 JWT 安全无忧

安全至上!采用 JWT 进行用户身份验证,为你的购物行为提供了最强有力的保障,让你可以放心尽情购物。

🐳 Docker 容器化的完美部署

C-Shopping 拥抱 Docker,使得项目的部署变得前所未有的简单。容器化技术让整个项目在不同环境中都能如鱼得水地运行。

🔄 Redux Toolkit 和 RTK Query 的状态管理艺术

C-Shopping 使用 Redux Toolkit 和 RTK Query,让状态管理变得更加轻松愉快。你可以更好地追踪应用中的数据流,确保购物体验的稳定性。


功能演示

现在,让我们来看看C-Shopping的一些基本功能。从清晰的导航和商品展示,到方便的搜索和购物车功能,每一个细节都经过精心设计,为用户提供愉悦的购物体验。

用户端

模块 Desktop devices Mobile devices
首页
二级分类
三级分类
商品详情
登录
注册
搜索
购物车
支付页
个人中心
我的订单
我的评论
地址管理
近期访问

管理端

模块 Desktop devices Mobile devices
登录
管理中心
用户管理
分类管理
分类管理树状
规格管理
商品管理
订单管理
评论管理
滑块管理
banner管理

项目结构

🏗️ C-Shopping 项目结构:

📂 c-shopping
  ├── 📁 app
  │   ├── 📁 main
  │   │   ├── 📁 client-layout
  │   │   ├── 📁 empty-layout
  │   │   ├── 📁 admin
  │   │   ├── 📄 layout.js
  │   │   └── 📁 profile
  │   ├── 📄 StoreProvider.js
  │   ├── 📁 api
  │   │   ├── 📁 auth
  │   │   ├── 📁 banner
  │   │   ├── 📁 category
  │   │   ├── 📁 details
  │   │   ├── 📁 order
  │   │   ├── 📁 products
  │   │   ├── 📁 reviews
  │   │   ├── 📁 slider
  │   │   ├── 📁 upload
  │   │   └── 📁 user
  │   ├── 📄 layout.js
  │   └── 📄 not-found.js
  ├── 📄 commitlint.config.js
  ├── 📁 components
  ├── 📄 docker-compose.yml
  ├── 📁 helpers
  │   ├── 📁 api
  │   ├── 📄 auth.js
  │   ├── 📁 db-repo
  │   ├── 📄 db.js
  │   ├── 📄 getQuery.js
  │   └── 📄 index.js
  ├── 📁 hooks
  ├── 📄 jsconfig.json
  ├── 📁 models
  ├── 📄 next.config.js
  ├── 📄 package-lock.json
  ├── 📄 package.json
  ├── 📄 postcss.config.js
  ├── 📂 public
  ├── 📁 store
  ├── 📁 styles
  ├── 📄 tailwind.config.js
  └── 📁 utils

主要结构解释:

  • 📁 app: 应用程序的主要代码

    • 📁 main: 主要应用程序组件
      • 📁 client-layout: 用户端通用布局页面
      • 📁 empty-layout: 通用空白布局页面
      • 📁 admin: 管理端页面
      • 📄 layout.js: 主要布局配置
      • 📁 profile: 用户个人资料页面
    • 📄 StoreProvider.js: 全局状态管理提供者
    • 📁 api: API 请求相关路由
      • 📁 auth: 用户认证 API
      • 📁 banner: 广告横幅 API
      • 📁 category: 商品分类 API
      • ...
  • 📁 components: 可复用的 React 组件

  • 📁 helpers: 辅助函数和工具

    • 📁 api: API 请求相关的辅助函数
    • 📄 auth.js: 用户认证相关的辅助函数
    • ...
  • 📁 hooks: 自定义 React hooks

  • 📁 models: 数据模型定义

  • 📁 public: 静态资源,如图片、字体等

  • 📁 store: Redux 状态管理相关配置

    • 📁 services: RTK Query
    • 📁 slices: Redux Toolkit
  • 📁 styles: 样式文件

  • 📁 utils: 通用工具

  • ...

这个结构旨在使项目组织有序,易于维护和扩展。每个部分都按照功能和职责进行划分,使团队成员更容易理解和协作。


部署与使用

开发环境

  1. 通过在终端运行以下命令克隆或下载存储库:

    git clone https://github.com/huanghanzhilian/c-shopping.git
    
  2. 使用npm或yarn安装项目依赖项:

    npm install
    

    or

    yarn
    
  3. 修改.env的文件,在项目根目录,定义所需的环境变量。这个步骤是重要的(图片上传OSS):

    NEXT_PUBLIC_ALI_REGION=<your ali endpoint>
    NEXT_PUBLIC_ALI_BUCKET_NAME=<your ali bucket name>
    NEXT_PUBLIC_ALI_ACCESS_KEY=<your ali access key>
    NEXT_PUBLIC_ALI_SECRET_KEY=<your ali secret key>
    NEXT_PUBLIC_ALI_ACS_RAM_NAME=<your ali acs:ram name>
    NEXT_PUBLIC_ALI_FILES_PATH=<your ali files pathname>
    
  4. 在本地机器上安装MongoDB

  5. 运行项目

    npm run dev 
    
  6. 注册一个账户

    http://localhost:3000/register
    
  7. 创建帐户后,在数据库中找到您的帐户,并将root字段修改为true。role字段修改为admin,这将授予您访问所有管理仪表板功能的权限

    http://localhost:3000/admin
    
  8. 操作MongoDB,创建根分类

    mongo
    
    use choiceshop
    
    db.categories.insert({
    	"name" : "精选好物",
    	"slug" : "choiceshop",
    	"image" : "http://huanghanzhilian-test.oss-cn-beijing.aliyuncs.com/shop/upload/image//icons/zHle_bmdM_dhu2K938MMM.webp",
    	"colors" : {
    		"start" : "#EF394E",
    		"end" : "#EF3F55"
    	},
    	"level" : 0
    })
    

docker 部署

项目根目录已经配置好docker compose,在安装docker环境后,直接运行部署

docker compose up -d --build

公众号

关注公众号获得更多资讯,有任何意见或建议都欢迎提issue,或者到公众号。

继小鹏公众号


许可证

Apache License 2.0

MIT License

Copyright (c) 2024 Jipeng Huang


呼吁行动

C-Shopping是一个开源项目,欢迎更多的开发者加入我们的社区。你可以在我们的GitHub仓库中找到项目源码,提出建议或者一同参与开发。

如果你对项目感兴趣,欢迎加入我们的社区,一同为项目添砖加瓦。

自荐项目,SQL 语法增强工具,Sqlx

项目推荐

  • 项目地址:https://github.com/taojy123/sqlx

  • 类别:其它(sql)

  • 项目后续更新计划:
    目前语法还不支持 if 嵌套和 for 循环嵌套,后续会开发支持嵌套语法;另外目前 sqlx 已经做了 Sublime Text 插件,后续可能还会开发 VS Code 插件。

  • 项目描述:
    强大的 SQL 语法拓展,目标是打造 "易读易写 方便维护" 的 sql 脚本,sqlx 意为 SQL Extension

  • 推荐理由:
    适用于经常需要写复杂的 sql 查询做统计的同学,其实这也是本人在工作中的痛点,所以做了此工具,并希望同遇到相同困惑的同学分享。

  • 插件支持:
    sqlx 已被 Sublime Text 官方收录,使用 Sublime Text 的同学可以直接搜索安装 Sqlx Builder 插件,并通过编辑器的 build 操作快捷的编译 sqlx 脚本。

假设有一张商品价目表(product),每天价格变动的商品都会更新报价。

例如,苹果的最新价格为 10 元, 因为苹果最新的一次报价是在 20191211, 当时价格为 10 元。

name(商品名称) price(价格) date(报价日期)
苹果 15 20191208
香蕉 18 20191208
橘子 12 20191208
香蕉 16 20191209
橘子 11 20191209
苹果 11 20191210
橘子 13 20191210
苹果 10 20191211
香蕉 22 20191211
橘子 14 20191212

现在要求通过 sql 统计出 20191212 这天的平均价格 比 20191209 那天涨了多少 ?

正常情况下我们可能会写出这样的 sql

SELECT
    a1.avg_price AS `20191209 平均价格`,
    a2.avg_price AS `20191212 平均价格`,
    (a2.avg_price - a1.avg_price) AS `涨价金额`
FROM
    (
        -- 求出各类别 20191209 前最后一次报价的平均价格
        SELECT
            avg(product.price) AS avg_price
        FROM
            (
                -- 求出各商品在 20191209 前最后一次报价的日期
                SELECT
                    name,
                    max(date) AS max_date
                FROM
                    product
                WHERE
                    date <= '20191209'
                GROUP BY
                    name
            ) AS t1
        LEFT JOIN product
        ON t1.name = product.name AND t1.max_date = product.date
    ) AS a1
LEFT JOIN
    (
        -- 再求出各类别 20191212 前最后一次报价的平均价格
        SELECT
            avg(product.price) AS avg_price
        FROM
            (
                -- 先求出各商品在 20191212 前最后一次报价的日期
                SELECT
                    name,
                    max(date) AS max_date
                FROM
                    product
                WHERE
                    date <= '20191212'
                GROUP BY
                    name
            ) AS t2
        LEFT JOIN product
        ON t2.name = product.name AND t2.max_date = product.date
    ) AS a2
ON true

得到统计结果如下:

20191209 平均价格 20191212 平均价格 涨价金额
14.0000 15.3333 1.3333

传统做法虽然得到的结果是正确的,但同时暴露出以下问题:

  1. 子查询多层嵌套,代码可读性极低
  2. t1 t2 两个子查询内容基本一致,也就说我们要维护两处相同的代码
  3. a1 a2 两个子查询也基本一致,并且其中相同的注释我们要写两遍,感觉太"蠢"了
  4. 这只是个很简单的示例,在实际工作中,针对更复杂的统计需求,代码的复杂度将会以指数形式递增

下面看看如何使用 sqlx 来解决上述问题:

func product_max_date(day)
    -- 子查询: 统计出各个商品在 {day} 前最后一次报价的日期
    (
        SELECT
            name,
            max(date) AS max_date
        FROM
            product
        WHERE
            date <= '{day}'
        GROUP BY
            name
    )
end

func date_avg_price(day):
    -- 子查询: 统计出 {day} 这天各个类别的平均价格
    (
        SELECT
            avg(product.price) AS avg_price
        FROM
            {product_max_date($day)} AS t1
        LEFT JOIN product 
        ON t1.name = product.name AND t1.max_date = product.date
    )
end

SELECT
    a1.avg_price AS `20191209 平均价格`,
    a2.avg_price AS `20191212 平均价格`,
    (a2.avg_price - a1.avg_price) AS `涨价金额`
FROM
    {date_avg_price(20191209)} AS a1
LEFT JOIN 
    {date_avg_price(20191212)} AS a2
ON true

优势非常明显:

  1. 核心代码是一段短小的 SELECT,外加加上两个子查询的定义就搞定了,代码逻辑清晰,可读性高
  2. a1 a2 使用类似 函数 的概念进行封装,通过传入不同的参数来生成不同的子查询内容
  3. 相同逻辑的代码片段只需要写一遍,大大降低了代码维护的工作量
  4. 使用 sqlx 提供的编译工具或插件,可快速编译成 sql 代码,在数据库中执行结果一致

【开源自荐】定制**传统节日头像

定制**传统节日头像

预览

  • 项目地址:https://github.com/xiaoli1999/custom-avatar

  • 项目预览
    主站地址✈️
    github pages✈️

  • 类别:JS

  • 项目标题:定制头像;有中秋节、国庆节、春节等多种节日主题可供选择。

  • 项目描述:该项目是基于vue3、typescript、Element UI、fabric.js的一款定制头像工具。当前版本为2.0,在1.0(定制春节头像)上迭代。推出定制中秋节、国庆节、春节等多风格头像定制, 内置诸多精美贴纸可供选择。用户上传头像即可快速得出专属头像,支持保存、以海报的形式分享。开设头像墙区域,用户定制过的头像都会保留在头详墙上。

  • 项目初衷:在娱乐的同时弘扬**传统节日文化,用户定制了精美的头像,在使用过程中会被更多的人们看到,吸引大家都来定制自己专属的**传统节日头像,潜移默化的加深人们对于传统节日的印象!

  • 项目特点:使用最新的语言及工具,代码质量高,扩展性强,可玩度高;该工具轻量、灵活、自由,用户体验感较好。

  • 2.0更新内容

    • 仓库名由 custom-rabbitImage 改为 custom-avatar
    • 重构页面整体风格,兼容pc、移动端;移动端头像墙采用瀑布流
    • 用户上传的原图做短边适配,保证不变形
    • 增加多节日主题风格,增加贴纸效果,可多选、可删除
    • 增加快速切换头像框功能
    • 增加分享海报功能
    • 增加头像墙功能,用户可预览他人定制的头像

版权/协议

本项目采用 MIT License,请随意使用。若你喜欢或对你有所帮助,请点个⭐。

兼容

兼容pc、移动端等

计划

  • 修复项目问题
  • 根据用户意见、建议优化完善项目

【开源自荐】pcl.js - 在浏览器处理点云数据

image

一个将大型 C++ 库 Point Cloud Library (PCL) 编译为 WebAssembly,运行在浏览器中,并提供易于使用的 JavaScript 接口的开源库。Point Cloud Library (PCL) 是一个独立、大型、开源的 2D/3D 图像和 点云 处理库。

  • 在线体验:

去除异常值:https://kl2zjs.csb.app/
识别关键点:https://3l6tfj.csb.app/

  • 动机:

在浏览器里处理 点云 数据,可以用于自动驾驶、机器人、逆向工程、算法验证等场景。

  • 未来规划:

✨ 目标是加入 Point Cloud Library (PCL) 中的所有 API,并提供一个在线的 点云 处理编辑器。

【开源自荐】基于openresty的API网关

项目地址:https://github.com/iamtsm/tl-ops-manage

类别:Lua

项目标题:轻量API网关

项目描述:支持负载均衡,健康检查,服务熔断,服务限流,waf过滤,黑白名单,动态SSL证书,自定义插件,多级缓存,可视化管理,动态配置,数据统计,数据展示,等等

体验demo : https://tlops.iamtsm.cn/tlopsmanage/tl_ops_web_index.html

后续更新计划:扩展插件市场,开发官网,完善使用/开发文档

bamboolib问题

bamboolib 好像需要执照才能用啊[申请了执照之后 不知道后期需不需要付费], 有破解版的吗, 提供一下 , 感谢感谢

自荐项目 KeymouseGo

项目推荐

  • 项目地址:https://github.com/taojy123/KeymouseGo

  • 类别:Python

  • 项目后续更新计划:
    目前开发的功能已较为稳定,之后会根据收集 issues 修正和改进功能

  • 项目描述:
    记录用户的鼠标键盘操作,通过触发按钮自动执行之前记录的操作,可设定执行的次数,可以理解为精简绿色版的 按键精灵

  • 推荐理由:
    在进行某些操作简单、单调重复的工作时,使用本软件就可以很省力了。自己只要做一遍,然后接下来就让电脑来做。目前 github 上攒了 200+ 星,算是个关注度还不错的项目。

  • 使用方法:
    详见项目文档 http://taojy123.github.io/KeymouseGo

  • 截图:

【播客推荐】开源面对面 - 一档从嘉宾邀请、内容、节目录制、后期都在以开源模式运作的播客

《开源面对面》是一个系列的访谈节目,旨在通过采访不同行业、岗位的开源参与者的亲身经历、心得体会,让更多的从业人员看到参与开源是一种积极的趋势与良好的职业发展方向,认识到任何人都可以参与开源,并在开源的世界里体现自己的价值。

一年多的时间内,目前录制了 25 集,小宇宙上有 1427 个订阅。

官网:https://osf2f.net/
协作仓库:https://github.com/opensource-f2f/episode/

不再继续更新了吗?

很喜欢这种精选/周刊之类的项目
GitHub 上有很多好的开源工作,但是并不总能遇到
而有了一个汇总就可以开拓视野,看到一些自己可能没遇到的项目
所以如果不更新了就感觉还挺遗憾的 :0

【开源自荐】腾讯零代码接口和文档 ORM 库

项目地址:https://github.com/Tencent/APIJSON
类别:Java
项目标题:腾讯零代码接口和文档 ORM 库
体验 Demo:http://apijson.cn/api
后续更新计划:增强功能、完善文档、丰富生态

项目简介 (100 字以内):
APIJSON 零代码接口和文档 ORM 库为各种增删改查提供了完全自动化的万能 API,零代码实时满足千变万化的各种新增和变更需求。 能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。被 腾讯、华为、百度、SHEIN、快手等各大知名厂商广泛用于各类项目。

项目截图 (6张以内):
image
image
image
image
image
image

【开源自荐】 Tailchat - 插件化即时通讯应用

Tailchat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。

前端微内核架构 + 后端微服务架构 使得 Tailchat 能够驾驭任何定制化/私有化的场景

特性

  • 完整的即时通讯基础能力
  • 插件化架构的赋予的自由拓展能力
  • 微服务架构赋予的水平拓展能力

项目地址: https://github.com/msgbyte/tailchat

官方文档: https://tailchat.msgbyte.com/

在线演示: https://nightly.paw.msgbyte.com/

image

image

rss支持

是否支持rss输出的方式,如果没有,可以考虑添加吗

【开源自荐】DB3 Network

项目地址:https://github.com/dbpunk-labs/db3
类别:Rust
项目标题:web3领域里去中心化数据库
项目描述:这是一个web3领域的去中心化数据库,类似firestore的开源替代品,可以帮助前端开发者直接使用typescript快速搭建一个去中心化应用,而无需搭建一个复杂的后端。
亮点:去中心化数据库,让web2开发者快速学习切入web3领域,和区块链进行数据交互

示例代码:

|----------------------------|
| use db3js open a database  |
|----------------------------|
*/

// build sign function
const sign = await getSign()

// build database factory
const dbFactory = new DB3Factory({
    node: 'http://127.0.0.1:26659',
    sign,
    nonce
})

// open mydatabase
const db = dbFactory.open("mydatabase")`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.