Skip to content

Instantly share code, notes, and snippets.

View daog1's full-sized avatar
🏠
Working from home

xiaodao daog1

🏠
Working from home
View GitHub Profile
@ndarville
ndarville / secret-key-gen.py
Created August 24, 2012 17:01
Generating a properly secure SECRET_KEY in Django
"""
Two things are wrong with Django's default `SECRET_KEY` system:
1. It is not random but pseudo-random
2. It saves and displays the SECRET_KEY in `settings.py`
This snippet
1. uses `SystemRandom()` instead to generate a random key
2. saves a local `secret.txt`
@eagleon
eagleon / tree.sql
Created June 14, 2013 07:41
机构树示例SQL
select distinct (dept.DEPART_ID) DEPART_ID,
dept.DEPART_CODE,
dept.DEPART_NAME,
dept.ORDER_NO,
dept.DEPART_CODE || '|' || dept.DEPART_NAME DEPART_TEXT,
dept.PARENT_DEPART_ID,
dept.DEPART_FRAME,
dept.AREA_CODE,
decode(childs.NODE_COUNT, null, 0, childs.NODE_COUNT) NODE_COUNT,
decode(childs.NODE_COUNT, null, 0, 1) EXPAND_NODE
@eagleon
eagleon / zuzhi.sql
Created June 25, 2013 23:41
查询组织结构
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([modeid] int,modename varchar(20),parentid int)
insert [tb]
select 100 ,'商品管理', 0 union all
select 101 ,'定单管理', 0 union all
select 102 ,'用户管理', 0 union all
select 104 ,'学院广告', 0 union all
select 105 ,'系统设置', 0 union all
select 106 ,'附件管理', 0 union all
@eagleon
eagleon / 经典sql.sql
Created June 25, 2013 23:50
经典sql代码--按年龄段、品牌分类进行分组统计
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([姓名] varchar(1),[部门] varchar(4),[学历] varchar(4),[出生年月] datetime)
insert [tb]
select 'A','后勤','高中','1986-1-1' union all
select 'B','后勤','初中','1984-3-7' union all
select 'C','管理','本科','1987-2-1' union all
select 'D','操作','专科','1976-2-1' union all
select 'E','操作','专科','1943-2-1'
@xishuixixia
xishuixixia / gist:703ecf5d26597e1be032
Last active January 15, 2016 09:38
有关微服务架构的争论:更简单还是更复杂?

随着DevOps、持续交付等理念的深入人心,微服务(Microservices)架构开始走进我们的视野。微服务是用一组小服务的方式来构建一个应用,服务独立运行在不同的进程中,服务之间通过轻量的通讯机制(如RESTful接口)来交互,并且服务可以通过自动化部署方式独立部署。正因为微服务架构中的服务之间是相互独立的,所以不同的服务可以使用不同的语言来开发,或者根据业务的需求使用不同类型的数据库。3月底,来自ThoughtWorks的James Lewis和Martin Fowler分享了他们对微服务架构的理解以及看法。文章中作者详细介绍了微服务的特点以及相对于传统架构的微服务架构的优势。

在James看来,传统的整体风格的架构在构建部署和扩展伸缩方面有很大的局限性,传统的整体(monolithic)风格的架构一般分为三部分:客户端用户界面(HTML页面和JavaScript程序)、数据库、服务端应用程序。服务端程序负责处理HTTP请求、执行业务逻辑、加载和更新数据库数据、查询和填充HTML页面,这个服务端应用就像是一块铁板,笨重且不可拆分,系统中任何程序的改变都需要整个应用重新构建和部署新版本。另外传统的整体风格的架构在进行水平扩展时也只能整个系统扩展,而不能针对某一个功能模块进行扩展。而微服务架构可以完美的解决统一风格架构所遇到的种种问题。微服务架构将系统以组件化的方式分解为多个服务,服务之间相对独立且松耦合,单一功能的改变只需要重新构建部署相应的服务即可。 传统风格架构与微服务架构在扩展性方面的对比

传统的开发模式在分工时往往以技术为单位,比如UI团队、服务端团队和数据库团队,这样的分工可能会导致任何功能上的改变都需要跨团队沟通和协调。而微服务则倡导围绕服务来分工,不同的服务可以采用不同的技术来实现,一个团队中应该包含开发所需的所有技能,比如用户体验、数据库、项目管理。 团队对比

传统的软件开发常常以项目为周期,一旦项目开发完成即交付给运维部门,而在微服务架构中,一个团队应该去把控产品的整个生命周期,而不只是开发,这其实也是DevOps的核心理念,所以微

@burgalon
burgalon / AccountAuthenticator.java
Last active July 15, 2023 08:29
Implementing OAuth2 with AccountManager, Retrofit and Dagger
public class AccountAuthenticator extends AbstractAccountAuthenticator {
private final Context context;
@Inject @ClientId String clientId;
@Inject @ClientSecret String clientSecret;
@Inject ApiService apiService;
public AccountAuthenticator(Context context) {
super(context);
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
git config --global --unset http.proxy
git config --global --unset https.proxy
npm config delete proxy
@binderclip
binderclip / flask-mail-qq.py
Created August 4, 2015 07:48
用 Flask-Mail 通过 QQ 邮箱发送邮件
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config.update(
#EMAIL SETTINGS
MAIL_SERVER='smtp.qq.com',
MAIL_PORT=465,
MAIL_USE_SSL=True,