Skip to content

Instantly share code, notes, and snippets.

View lloydzhou's full-sized avatar
:octocat:
Focusing

Lloyd Zhou lloydzhou

:octocat:
Focusing
View GitHub Profile
@lloydzhou
lloydzhou / test_lark_one_click_deploy.py
Last active January 22, 2024 06:26
test_lark_one_click_deploy.py
import asyncio
import logging
import webbrowser
from urllib.parse import quote
import httpx
from uuid import uuid4
from connectai.lark.websocket import WS_LARK_PROXY_SERVER, WS_LARK_PROXY_PROTOCOL
#!/usr/bin/python3
import sys
import asyncio
import greenlet
class AsyncIoGreenlet(greenlet.greenlet):
def __init__(self, driver, fn):
greenlet.greenlet.__init__(self, fn, driver)
self.driver = driver
@lloydzhou
lloydzhou / content.md
Created September 20, 2022 03:37 — forked from baymaxium/content.md
生产环境中使用Docker Swarm的一些建议

原文:Docker

如果你在单个生产节点上用过Docker,然后发现单个节点的资源不够用,那么你会怎么做呢?我也遇到过这种情况! 关于在生产环境中使用Docker Swarm,我会为你提供一些建议,也许能够帮到你。这些都是我一年来积累的一些经验。

另外,如果你对Docker Swam不熟悉的话,可以参考我之前的博客My experience with Docker Swarm - when you may need it?(http://suo.im/1m7qW8)

1. 阅读官方文档

/**
* 1. 创建websocket连接,后端会生成对应的channel<user_id, task_id>,前端是一个固定的url
* 2. 监听创建成功事件
* 2.1 如果创建成功就将任务<source_url, title, author>通过创建好的websocket发送到服务端
* 2.2 如果创建失败,直接reject
* 3. 监听接收消息事件
* 3.1 如果收到转换成功的url,代表后端的整个转换任务成功,将url resove出去
* 3.2 收到其他任务进度消息,可以忽略
*/
export const submitTask = (
@lloydzhou
lloydzhou / Dockerfile
Created November 29, 2021 08:38 — forked from hermanbanken/Dockerfile
Compiling NGINX module as dynamic module for use in docker
FROM nginx:alpine AS builder
# nginx:alpine contains NGINX_VERSION environment variable, like so:
# ENV NGINX_VERSION 1.15.0
# Our NCHAN version
ENV NCHAN_VERSION 1.1.15
# Download sources
RUN wget "http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz" -O nginx.tar.gz && \
@lloydzhou
lloydzhou / 书籍.md
Created June 7, 2020 12:19 — forked from ckeyer/书籍.md
经典编程书籍大全

经典编程书籍大全

100+ 经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关的经典书籍。

这个列表综合了伯乐在线网站以往推荐经典书籍文章中的列表,以及在微信和微博中被广泛推荐的好书。虽然已经包括了100多本,覆盖的面也比较全。仍然有很多方面需要补充,而且相信还有很多没有被收录的好书。欢迎大家在 issues 中推荐或自荐。

计算机系统与网络

@lloydzhou
lloydzhou / redis-aggregate.lua
Last active October 9, 2020 05:53 — forked from Hidendra/redis-aggregate.lua
Aggregate values in a redis sorted set. Returns {count, sum, min, max}
local count = 0
local sum = 0
local min = 0
local max = 0
local cursor = "0"
local result = nil
local data = nil
repeat
result = redis.call("zscan", KEYS[1], cursor, "count", 100)
#!/usr/bin/env python
# http://www.rabbitmq.com/tutorials/tutorial-two-python.html
from connect import connection, pika
channel = connection.channel()
channel.exchange_declare(exchange='dlx')
result = channel.queue_declare(queue='dl')
queue_name = result.method.queue
@lloydzhou
lloydzhou / access.lua
Created May 22, 2018 06:13 — forked from mariocesar/access.lua
Nginx Lua script redis based for Basic user authentication
function password_encode(password)
local bcrypt = require 'bcrypt'
return bcrypt.digest(password, 12)
end
function check_password(password, encoded_password)
local bcrypt = require 'bcrypt'
return bcrypt.verify(password, encoded_password)
end
@lloydzhou
lloydzhou / get-old-chromium-binary.md
Created July 12, 2017 09:38 — forked from cletusw/get-old-chromium-binary.md
Download an old Chromium binary

(source)

Taking [denilson-sá's answer][2] further...

You need revision numbers to grab downloads. So first lookup the full version string from the following URL, adjusting parameters as needed:

https://omahaproxy.appspot.com/history.json?channel=stable&os=mac

For Chrome version 28 the full version string is 28.0.1500.71. Now go to https://omahaproxy.appspot.com and enter the full version string ("28.0.1500.71") into the Position Lookup box. Copy the Base Position number ("209842" in this case).