- 博客(42)
- 资源 (2)
- 收藏
- 关注
原创 GTLC非官方“服用”指南
缘起:与 GTLC 的相识GTLC,全称全球技术领导力峰会,我至今报名参加了3次,昨天在广州的一场是第3次,而去年3月也是在广州,是第一次。至于说起从哪了解到 GTLC 的,已经不记得了,只依稀记得去年看到广州场的活动宣传之后没多久就决定付费报名了,主要动机也是考虑自己刚到技术管理岗位半年,想要去学习别人的管理,学学什么是技术领导力...
2020-11-02 00:00:00
427
原创 《Paxos Made Simple》中文翻译:Paxos 如此简单
写在前面个人在学习理解 Paxos 算法的过程中,花了比较多的时间,从最开始直接查看中文博客资料,感觉都是看完不知所以然或者有很多疑问,于是决定死磕《Paxos Made Simple》论文原文。但是由于有些英文的意思我自己理解起来还是有点困惑,于是过程中遇到无法理解的内容,一方面是会翻阅前辈...
2020-10-28 08:29:00
959
原创 谨防猴子补丁以及Python中排查技巧
背景前两天晚上线上系统突发故障,在立马打开线上错误日志之后,却只能得到一堆毫无意义的程序调用栈(traceback)的输出,于是团队成员陷入漫长而又抓瞎的问题排查过程中。问题很幸运地得到了解决,但是我一直想不明白为什么日志里打印的调用栈毫无意义,按照经验,它应该打印的是异常产生过程中的调用...
2019-09-22 00:00:00
206
原创 Mac OS 环境 Rails 6.0 下 webpack-dev-server wrong version 问题解决方案
错误信息昨天装上了 Ruby on Rails 6.0,满心欢喜初始化项目并且按照指引安装了 webpacker 之后,执行熟悉无比的 rails c 命令,却给了一个报错:# 错误信息片段yarn check v1.7.0success Folder in sync.Done ...
2019-09-06 00:00:00
191
原创 pymysql 开启调试模式
今天在排查线上一个奇怪的数据库连接问题,所以打开了 pymysql 的源码在阅读,发现 pymysql 在其 connections 模块里内置了一个 DEBUG 变量用于控制是否开启调试模式,是的话,会将当前连接的操作以及报文内容都打印到控制台。使用方法在你的服务器初始化代码里,加上对...
2019-08-18 00:00:00
250
原创 django 快速启动数据库客户端程序
实际工作经历中,免不了有时候需要连接数据库进行问题排查分析的场景,之前一直习惯通过 mysql -uxxx -hxxxx -P1234 ... 这样的方式来启动命令行形式的 MySQL 数据库客户端程序,只是用起来比较麻烦,每次都要拷贝各个配置参数,还要记得不要在命令里显式打...
2019-08-15 00:00:00
114
原创 不严谨的不同语言下大 Excel 文件写入的性能比较
背景去年因为线上系统需要导出大量数据(大概是 11 万行)到 Excel,代码是 Python 2.7 写的,除去数据库查询耗时,整个的 Excel 文件生成也还要耗费几十秒的时间,这听起来真是一个非常夸张的事情。后来为其更换了号称性能表现最好的 pyexcelerate 库,性能确实有提...
2019-03-23 00:00:00
335
原创 利用 Postman Chrome app 和 Chrome 浏览器共享网站 cookie
背景作为一个Web工程师,最熟悉的日常工作莫过于后台接口开发与联调测试,而在接口测试上,大家最喜爱的工具清单里,必然少不了 Postman 这一利器。然而,有时接口测试需要准备好登录态,或者其他状态数据,而这些数据往往就存在浏览器 Cookie 里边。结合本文介绍的工具,便可以无缝在 Po...
2019-01-14 00:00:00
502
原创 记一次Redis数据库配置导致的连接数泄露的问题
问题背景去年圣诞节当天,突然收到一个我经手过的项目的告警邮件,错误消息显示“Redis::CommandError: ERR max number of clients reached”。什么情况?难道这个项目翻车了?第一反应是这台服务器运行着自建的 Redis 数据库,但是客户端只有同...
2018-02-10 00:00:00
290
原创 动态密码算法介绍与实现
动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二步验证机制,那么,技术运用,既要知其然,更要知其所以然,动态密码算法是怎样的?读前指引...
2017-02-18 00:00:00
514
原创 周末到了,来段代码压压惊
最近一段时间,写了两篇关于 sidekiq 的源码分析,但是一直想要补充的一段 sidekiq 里边的代码其实是挺有趣也挺逗的,所以这个星期就不要长篇大论的源码分析,来点轻松点的吧。这个代码是这样的 o(╯□╰)o:# https://github.com/mperham/sidekiq...
2016-11-26 00:00:00
131
原创 Sidekiq 信号处理源码分析
引言在之前的文章《Sidekiq任务调度流程分析》中,我们一起仔细分析了 Sidekiq 是如何基于多线程完成队列任务处理以及调度的。我们在之前的分析里,看到了不管是 Sidekiq::Scheduled::Poller 还是 Sidekiq::Processor 的核心代码里,都会有一个...
2016-11-20 00:00:00
92
原创 sidekiq任务调度流程分析
sidekiq是 Ruby 中一个非常优秀而且可靠的后台任务处理软件,其依赖 Redis 实现队列任务的增加、重试以及调度等。而 sidekiq 从启动到开始不断处理任务、定时任务以及失败任务的重试,都是如何调度的呢?遇到问题的时候,又该如何调优呢?注意今天的分析所参考的 sideki...
2016-10-29 00:00:00
433
原创 [Ruby on Rails] 嘿,小心你的双等号==
前两天在写代码的时候,突然收到警告说项目代码中存在 XSS 漏洞,遂立即根据报告的 URL 排查页面代码,虽然很快就修复了,而且同样问题的讨论两年前就有了,看《别用 raw 和 html_safe》,一般来说相对有经验的同学也应该都知道这个点,但是还是觉得有必要写出来,再次提醒一下其他小伙伴...
2016-01-17 00:00:00
70
原创 谨防 ActiveSupport::Cache::Store 缓存 nil 值
Rails 中的 active_support 组件主要基于 Rails 需要提供了很多非常有用的基础工具以及对 Ruby 内置类进行扩展。其中的 cache 模块主要提供了 Rails 中底层缓存的定义以及简单实现。今天要跟大家探讨的是之前在使用此模块所遇到的一个坑,有兴趣学习其基本用法的...
2015-10-30 00:00:00
188
原创 使用 Chinese_pinyin + Friendly_id 为中文标题生成 Slug
在许多项目中,我们可能都会遇到需要为数据生成 slug 的场景,这些场景类似于:基于商品名称生成 slug基于文章标题生成 slug至于为什么需要生成 slug,而不是使用比如 Rails 中默认自增的主键也就是数据的 id,原因其实很简单:使用自增 id 容易暴露数据,比如通...
2015-10-21 00:00:00
401
原创 MySQL in 查询,并通过 FIELD 函数按照查询条件顺序返回结果
从示例讲起我们都非常习惯通过 MySQL 的 IN 函数来查询特定集合的数据,比如为了在 books 表中找出李雷、韩梅梅和安华写的书,我们可以有如下的 SQL:SELECT * FROM books WHERE `books`.`author` IN ('李雷','韩梅梅','安华')...
2015-09-13 00:00:00
241
原创 Apdex——衡量服务器性能的标准
日常工作中,我们总是习惯于通过量化的标准去衡量我们对事物的评价,比如美食点评的星级、酒店的星级、每个个人的信用评分等等。而作为一个 Web 工程师,我们也总是在意于我们网站的性能,因为网站的性能会最直接地影响用户的体验。今天要介绍的就是一种同样能够帮助工程师对应用性能进行量化评估的标准 ——...
2015-08-30 00:00:00
606
原创 申请以及集成 Stripe 的 Alipay 支付方案
最近在一个项目需要支持人民币支付,并且客户要求希望能够收完款后的结算是用美元,所以就想到了去年 Stripe 宣布已经跟支付宝达成合作意向,所以经过一番咨询跟集成,终于把 Stripe 集成进来,并且启用了支付宝收款。这篇文章介绍功能申请以及集成的完整过程。功能申请...
2015-03-29 00:00:00
860
原创 How do I fix Passenger application startup problem
Recent days I was working on deploying one of my Rails project on a complete new VPS. I had operated according to my experience for deploying site...
2015-01-10 00:00:00
105
原创 在 coding.net 上部署 Jekyll 博客 (此方式已过期,coding 官方已直接支持 jekyll)
自从 coding 推出 PaaS 演示平台以及开放自定义域名之后,很多人开始尝试在 coding 上部署自己的博客,其中就有 jekyll,coding 上就有官方推荐的 jekyll-demo。但是因为这个 Demo 的 README 文档中只是简单介绍配置步骤而已,没有详细介绍原理以及...
2014-12-20 00:00:00
104
原创 RAILS中利用YAML文件完成数据对接
最近在做的Ruby on Rails项目中,需要将远程数据库中的数据对接到项目数据库中,但是远程的数据不仅数据表名跟字段命名奇葩,数据结构本身跟项目数据结构出入比较大,在数据导入过程中代码经历了几次重构,最后使用了YAML文件解决了基本数据1对接的问题。在此写一篇博文,我会尽量重现一路过来的...
2014-11-13 00:00:00
113
原创 Spree 2.3.0已经发布
声明:原文来自Spree官方博客Spree 2.3.0 Released,原文发布日期是2014-06-30,本文仅作翻译。简要介绍:Spree是一个基于Ruby on Rails开发的开源在线商城框架,提供了从商品展示购买、下单支付到库存管理以及订单管理等一系列基本功能,并且支持通过第...
2014-11-05 00:00:00
58
原创 在Ruby中使用WebSocket
声明: 此文翻译自WebSockets in Ruby, 限于本人才疏学浅,其中有翻译不当之处,敬请指出,感激不尽!在我的主要工作中,需要构建一个一直占用相当大CPU时间片的数据系统。这个任务主要用于在地理编码以及local reference system(本地地理系统?)之间进行编码...
2014-11-05 00:00:00
211
原创 解读Rails - 属性方法
此文翻译自Reading Rails - Attribute Methods,限于本人水平,翻译不当之处,敬请指教!在我们上一篇的探讨中,我们已经看到了Rails在跟踪属性变更中使用到的属性方法(attribute methods)。有三种类型的属性方法:前缀式(prefix)、后缀式(...
2014-11-05 00:00:00
89
原创 解读Rails - 处理异常
此文翻译自Reading Rails - Handling Exceptions,限于本人水平,翻译不当之处,敬请指教!我们今天开始会读一些Rails的源码。我们有双重的目的,先通过学习(Rails)如何处理异常,再扩展到整个Ruby中基础知识的学习。Rails通过让你使用rescu...
2014-11-05 00:00:00
114
原创 Track Original Repo When Fork
git remote add --track master upstream git://github.com/upstreamname/projectname.gitgit fetch upstreamgit merge upstream/master ...
2014-11-05 00:00:00
52
原创 解读Rails - 适配器模式
本文翻译自Reading Rails - The Adapter Pattern,限于本人水平有限,翻译不当之处,敬请指教!今天我们暂时先放下具体的代码片段,我们将要对Rails中所实现的一个比较常见的设计模式进行一番探索,这个模式就是适配器模式(Adapter Pattern)。从一定...
2014-11-05 00:00:00
119
原创 Split logs automatically every day
Related resource(s):"linuxcommand: logrotate":http://linuxcommand.org/man_pages/logrotate8.htmlX42Xlogrotate is designed to ease administratio...
2014-11-05 00:00:00
110
原创 Ruby中Hash的7个日常使用范例
此文翻译自7 daily use cases of Ruby Hash,限于本人水平,翻译不当之处,敬请指教!每一天,你都需要跟Hash相处。创建一个新的Hash或者是通过它的某一个键去检索其中的元素这样的工作,都是常见也是非常简单的。但是当你需要合并两个嵌套的Hash或者是从某一个Ha...
2014-11-05 00:00:00
95
原创 Gemfile指定gem来源的四种方式
Gemfile的作用无非就是告诉bundler你的项目具体都需要哪些gem,这些gem都需要哪些版本,以及从哪获取这些gem。其实你的问题应该就是跟第三点有关,总的来说,gem的来源可以有四种:1. 从镜像源安装这个是最直接的,通过这种方式指定的gem,bundler会从文件开头的s...
2014-11-05 00:00:00
640
原创 Export/import Datas To/from a Csv File
今天需要给客户的网站做支持产品数据导出并且更新的功能,所以就涉及到了数据的导入导出了。在经过一番对比之下,果断使用csv格式文件作为数据导入导出的载体。导出csv文件与csv文件主要相关的类是CSV,此类在ruby的标准库中被定义,所以只要在代码开头引入相关文件即可:requir...
2014-11-05 00:00:00
139
原创 DIY an Timer Through Terminal-notifier
Today I will show you how to DIY an intersting notifier automatically running per hour under the Mac OS X 10.8 and higher, all we need are a termi...
2014-11-05 00:00:00
69
原创 跟踪model中属性(值)的变更
此文翻译自Reading Rails - Change Tracking,限于本人水平,翻译不当之处,敬请指教!我们今天来看看Rails是如何追踪model里边属性的变更的。person = Person.find(8)person.name = "Mortimer"person...
2014-11-05 00:00:00
64
原创 Rails HTTP Status Code to Symbol Mapping
Sometimes you might need to set the HTTP response head with different status to specify the different handled results. You can do this in Rails by...
2014-11-05 00:00:00
61
原创 sublime text 2基于语法的配置文件
最近在学习Python编程语言,但是遇到一个小小的问题,就是原来Ruby的编码规范是用2个空格缩进的,所以以前在Sublime的全局用户配置中设置了"tab_size": 2,所以在编辑Python文件的时候就每次都要从菜单中设置tab_size的大小为4。后来经过搜索,发现Sublime ...
2014-11-05 00:00:00
67
原创 Write Css Codes Distinct From Different Pages
In rails, there is normally a view corresponding to an action. So if you want to do some special styles based on different pages, you can render c...
2014-11-05 00:00:00
74
原创 Delete multiple git remote branches by prefixing colon
git push origin :branch-1 :branch-2 [:other-branches]Remember the colon :
2014-11-05 00:00:00
69
原创 注意Rake Task中invoke方法跟execute方法的不同
平时如果跟Rake Task有过接触的同学都会知道,当我们需要在一个Task里边调用另一个Task的时候,我们可以使用Rake::Task['task_name'].invoke的方式。但是在今天的实践中,才知道Rake::Task#invoke在默认情况下在整个运行过程中将只会被调用一次而...
2014-11-05 00:00:00
99
原创 Run a Shell Script Auto-matically When Entering/cd a Directory
I don't know if it is common that you need to run some shell scripts which are used under only some directories, such as, one of your Rails proje...
2014-11-05 00:00:00
85
1900-2049年农历信息
2011-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人