技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

05 2013 档案

Crontab的格式
摘要:第1列分钟1~59第2列小时1~23(0表示子夜)第3列日1~31第4列月1~12第5列星期0~6(0表示星期天)第6列要运行的命令下面是crontab的格式:分 时 日 月 星期 要运行的命令这里有crontab文件条目的一些例子:30 21 * * * /usr/local/apache/bin/apachectl restart上面的例子表示每晚的21:30重启apache。45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart上面的例子表示每月1、10、22日的4 : 45重启apache。10 1 * * 6,0 /usr/l 阅读全文

posted @ 2013-05-31 19:37 codestyle 阅读(229) 评论(0) 推荐(0) 编辑

55最佳实践系列:Logging最佳实践
摘要:http://www.cnblogs.com/zhengyun_ustc/archive/2012/12/15/logging_bp.html#意识ASAP (As Soon As Possible)原则当线上出现诡异问题,当你意识到靠现有的日志无法定位问题时,当现象难以在你的开发环境重现时,请不要执著于枯坐肉眼看代码,因为:一)不一定是你代码逻辑问题,可能是脏数据造成的,是老业务数据造成的,是分布式环境造成的,是其他子系统造成的;二)线上业务处于不稳定中,条件不允许问题定位无限期。此时,请立即在问题相关的调用链条上,一次性:在函数的入口和出口打印日志,同时打印输入、输出参数catch(){… 阅读全文

posted @ 2013-05-29 16:35 codestyle 阅读(277) 评论(0) 推荐(0) 编辑

转:Logging 日志记录最佳实践
摘要:http://www.oschina.net/question/12_44624http://www.oschina.net/question/12_44624介绍本文解释应用程序中的错误和调试日志的最佳实践。应用日志是一个非常重要的“工具”用来帮你查明具问题。如果有一个基础架构用来记录应用中的日志和事件,那么调试和问题的解决就会变得很简单。在开始文章之前,我们要介绍两个相关的工具:Logstash-http://www.oschina.net/p/logstashGraylog2-http://www.oschina.net/p/graylog2不同的日志含义日志 Logging 可以代表不 阅读全文

posted @ 2013-05-29 11:49 codestyle 阅读(340) 评论(0) 推荐(0) 编辑

转:加强debug能力来提高工作效率
摘要:原地址:http://yaocoder.blog.51cto.com/2668309/1210546以我的观点来看:做出一个业务功能是件很简单的事,做好则有难度,高效的做好则是难上加难。抛开前期的架构设计、技术方案的制定不谈,单单是写好代码这一阶段就给我们每个人带来了不同程度的挑战。之前还写过一篇关于代码编写阶段的文章《提高工作效率的工具“类”》,下面我就主要从代码debug的角度来谈谈我的看法。尽量写代码时避免bug,减少调试对于任何问题,先以预防为主。在团队中常常可以遇见这样的同事,代码写的非常快,可是天马行空的代码之后却让自己陷入了无尽debug的沼泽。我会给这样的同事建议:多花点时间做 阅读全文

posted @ 2013-05-29 10:02 codestyle 阅读(278) 评论(0) 推荐(0) 编辑

mac快捷键
摘要:http://support.apple.com/kb/HT1343?viewlocale=zh_CN&locale=zh_CNOS X键盘快捷键摘要了解有关常见 OS X 键盘快捷键的信息。键盘快捷键是通过按下键盘上的组合键来调用 OS X 功能的一种方式。受影响的产品Mac OS X 10.2, Mac OS X 10.3, Mac OS X 10.4, Mac OS X 10.5, Mac OS X 10.6,OS X Lion,OS X Mountain Lion若要使用键盘快捷键或按键组合,您可以同时按修饰键和字符键。例如,同时按下 Command 键(标有符号的按键)和“c 阅读全文

posted @ 2013-05-29 00:49 codestyle 阅读(714) 评论(0) 推荐(0) 编辑

转:做计划比计划更重要 -- 敏捷进度把握
摘要:http://blog.sina.com.cn/s/blog_5effa8f10100di68.html项目经理被问到最多的问题就是,“这个项目什么时候才能完成?”被问的时候,可能项目才定下来,仅仅知道大概的功能模块,非功能性需求还模糊不清,甚至团队成员都没到位。但是上级、销售、客户急切地要知道,这个项目什么时候才能完成?被问的时候,也可能项目已临近结束,或者说临近当初计划的交付日期。然而待完成的功能还有一堆,测试出来的bug有一大堆,客户又提出了新的需求,团队正有人要离职…。但是上级、销售、客户非常急切地要知道,这个项目到底什么时候才能完成?这还不算糟糕。更头疼的问题是:“再有三周,项目应该 阅读全文

posted @ 2013-05-27 15:18 codestyle 阅读(236) 评论(0) 推荐(0) 编辑

awk新风格(模块化)的业务代码
摘要:main.sh (程序入口代码)参数DEBUG会决定logging模块的debug函数是否输出日志以方便调试,这其实是我目前形成的理念之一:一旦我决定在这里写下一个输出语句方便调试,那么这个语句我就不会再删除了我见过很多的研发人员(包括以前的我自己)喜欢在程序里加上一堆输出语句(alert,printf,MessageBox)打印一堆没有什么含义的语句(例如ssssssss,111111)以及变量的值,之后再删掉,删掉之后在添加,添加之后再删除。。。其实,他们是为了确定程序状态,看看程序有没有运行到添加输出语句的位置,或者想想看看程序在那个时刻的值到底是啥,但是他们觉得这些日志语句不属于业务逻 阅读全文

posted @ 2013-05-26 19:53 codestyle 阅读(412) 评论(0) 推荐(0) 编辑

一些可能用的上的资源
摘要:http://www.csdn.net/article/2013-05-21/2815373-stremor-releases-liquid-helium-apis 阅读全文

posted @ 2013-05-24 11:39 codestyle 阅读(114) 评论(0) 推荐(0) 编辑

一个BUG的发现过程
摘要:首先是项目代码:statAd是我的功能模块API,他的功能定义是累加某个广告在某个投放位置的pv和uv(存到一个全局数组LIST里)详细说明:pv的概念大家很清楚就是浏览广告的人次,uv的概念则是某个时间段内,浏览过的人数(非人次,一人浏览多次算多个PV但只算一个UV);输入其实是已经经过初步计算的数据,它标识了一个人在某个页面浏览过某过个广告的次数,但是一个广告可以投放到多个页面,所以一个人可以在不同页面浏览相同的广告,这在输入数据里就会被当做多笔输入;下面是这个API的输入输出定义输入:userid(用户身份),adid(广告标示),adflag(广告投放位置),pv(该人已在此广告位置浏 阅读全文

posted @ 2013-05-22 20:16 codestyle 阅读(1393) 评论(1) 推荐(1) 编辑

go语言的“MSDN”(ubuntu12 && 通过apt-get安装的go语言)
摘要:环境:ubuntu12 && 通过apt-get安装的go语言之前了解了python查看帮助文档的方式,感觉go也应该有他自己的帮助文档,就尝试打开它的文档,发现有godoc命令。运行之,命令提醒,可以这样运行文档godoc -http=:6060但是提示我文档不存在(不存在某个HTML文件)我就想起来上次是通过apt-get安装的,很可能安装程序的时候没有下载文档,那么只好先找找ubuntu的源里有没有godoc的相关信息,发现还真的有,那么安装下载,之后就可以用了godoc -http=:6060# no filessudo apt-cache search godoc#o 阅读全文

posted @ 2013-05-19 18:37 codestyle 阅读(471) 评论(0) 推荐(0) 编辑

python的MSDN
摘要:两种方式,第一种在python交互环境里使用help查询,第二种方式启动启动python doc server(ubuntu下试验,可以使用)pydoc -p 8000打开浏览器,访问http://localhost:8000即可查看文档,与windows类似。 阅读全文

posted @ 2013-05-19 18:02 codestyle 阅读(318) 评论(0) 推荐(0) 编辑

我很高兴找了一张可以说明:为什么软件开发那么困难的图
摘要:出自《编程匠艺》p467页 阅读全文

posted @ 2013-05-17 01:02 codestyle 阅读(195) 评论(0) 推荐(0) 编辑

awk一些很恐怖的特性
摘要:使用也可以产生值echo "" | awk 'END{a[1]=1;x = a[2];print length(a);print a[3];print length(a)}'打印结果是:2 空行 3这个awk的数组元素居然是3!!就是说使用数组也是定义数组!!!这很恐怖,一不小心代码就会混入bug,而且会虚耗内存那么在使用数组时必须这样if (key in array) a = array[key]awk只有参数列表里出现的变量会被当做局部变量#!/bin/shecho "" | awk 'function test(s){ pr 阅读全文

posted @ 2013-05-15 13:22 codestyle 阅读(161) 评论(0) 推荐(0) 编辑

转:談談gawk 裡的 igawk
摘要:http://bbs.chinaunix.net/thread-1450345-1-1.html我們寫腳本,很多情況下是一次性的,所以傾向寫一些常用的函數掉用,例如我的$HOME/lib/awk 就寫了一些函數, 然而怎樣掉用這些函數,不成每用一次就複製到腳本上,我在命令列又如何掉用呢?鑑於這種需求,Gnu awk為使用者提供了一個變量,和一個可以包含你寫的函數的命令,他們就是 AWKPATH 和 igawkAWKPATH 這個變量內定的路徑為 , 手冊上答案是.:/usr/local/share/awkhttp://www.gnu.org/manual/gawk/html_node/AWKP 阅读全文

posted @ 2013-05-15 01:22 codestyle 阅读(381) 评论(0) 推荐(0) 编辑

awk的模块化方案,在这公司苦逼很久以后想到的
摘要:test.sh#!/bin/shecho demos | igawk -f test.awktest.awk#!/usr/bin/igawk -f@include common.awk{ filename = $0 makeArray(filename,array) printArray(array) makeInsertSQL("aaa",array,"test.sql")}common.awkfunction sayHello(s,_ARGVEND_){ print "hello "s}function makeArray(fil 阅读全文

posted @ 2013-05-14 20:15 codestyle 阅读(448) 评论(6) 推荐(0) 编辑

go:数组
摘要:package mainimport "fmt"import "unsafe"type Employee struct{name string; age int} func displayName(e *Employee){ fmt.Printf("employee name is %s ,age is %d\n",(*e).name,(*e).age)}func main() { var e = [2]Employee{{"shujun.li",30},{"qiuming.tan",30}} 阅读全文

posted @ 2013-05-14 12:26 codestyle 阅读(164) 评论(0) 推荐(0) 编辑

go:指针初步
摘要:package mainimport "fmt"type Employee struct{name string; age int} func displayName(e *Employee){ fmt.Printf("employee name is %s ,age is\n",(*e).name)}func main() { var e1 Employee e1.name = "shujun.li" e1.age = 30 displayName(&e1) e2 := Employee{"tan qiu ming 阅读全文

posted @ 2013-05-14 12:15 codestyle 阅读(140) 评论(0) 推荐(0) 编辑

mac上安装go语言
摘要:我将在mac os x的开发机器上安装go语言的开发环境。go语言运行包下载地址:http://code.google.com/p/go/downloads/list这里我选择安装go1.0.3.darwin-amd64.pkg在mac上点击安装,运行包自动安装到/usr/local/go中,这样在命令终端就可以运行go命令了这里,我把go编辑器安装到我的xcode应用程序中,由于我的xcode装的是4.x以上在/usr/local/go/misc中,可以看到有很多编辑器版本,这里找到xcode目录,里面进入4,有个go4xcode.sh在终端中输入:sudosh./go4xcode.sh也许 阅读全文

posted @ 2013-05-13 22:48 codestyle 阅读(361) 评论(0) 推荐(0) 编辑

转载:网站的分布式架构
摘要:http://www.cnblogs.com/sharpxiajun/archive/2013/05/11/3072798.html 互联网的网站和大部分企业管理软件一样都是使用B/S架构模型,但是大型的公共网站B/S架构会更加复杂,对架构人员的要求更高,今天我想在自己博客里聊聊我设计的网站的B/S技术架构。 不管是B/S架构的企业管理系统还是网站技术架构可以抽象为如下简图: 在传统B/S架构的企业管理系统里,技术架构往往就是一个工程项目,各个逻辑分层都是该工程的业务逻辑模块。但是作为提供公共服务的网站,由于用户群比较庞大,网站并发量高,需求变化大,变更频繁以及网站出于对安全的考虑,以上... 阅读全文

posted @ 2013-05-13 19:35 codestyle 阅读(240) 评论(0) 推荐(0) 编辑

go : 结构
摘要:1 package main 2 3 import "fmt" 4 5 type Employee struct{name string; age int} 6 //我在这里晕了一下,还认为是逗号分隔的 7 8 9 func displayName(e Employee){10 //函数参数里的变量不需要var,且{写在定义行里11 12 fmt.Printf(e.name + "\n")13 }14 15 func main() {16 var e1 Employee17 e1.name = "shujun.li"18 e1.age 阅读全文

posted @ 2013-05-13 17:30 codestyle 阅读(187) 评论(0) 推荐(0) 编辑

C#: GC
摘要:1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data; 6 using System.Data.SqlClient; 7 8 namespace FreeResource 9 {10 class TestConn11 {12 public void openConn(int i)13 {14 string connstr = "server=(lo... 阅读全文

posted @ 2013-05-11 20:52 codestyle 阅读(318) 评论(0) 推荐(0) 编辑

scrum的开发时间的预估
摘要:首先,在scrum里,开发任务被分成很多用户故事,每个用户故事需要根据实现的难易分配点数,于是,一个团队聚集在白板前开始估计故事的点数(点数是一个斐波那契数:1,2,3,5,8...)每个人从一堆故事里挑出他(她)觉得点数最小(最容易)的故事贴在白板上,下一个人继续,直到一轮结束或者没有更多的用户故事,接下来,团队会对白板上已经排列的故事进行调整,例如故事X,有人会觉得简单。有人觉得难,这个过程需要充分交流。大家必须说出自己觉得难或者简单的原因。在交流中达成共识(可能觉得难的人发现没那么难,又或者觉得简单的人发现没那么简单)现在,团队挑一个最简单的故事进行开发,假设一个点数为1的用户故事开发了 阅读全文

posted @ 2013-05-02 10:22 codestyle 阅读(406) 评论(0) 推荐(0) 编辑

错误处理
摘要:仗剑独行(58****82)10:37:35void main(){ FILE *fp = open(); //假定fp是有效的 char *p = malloc(100); //假定也获得了内存 if(test()==error) { //这里的错误处理其实就是放掉资源 //关闭句柄,放掉之前申请的内存之类 fclose(fr); free(p); } ...} 仗剑独行(58****82)10:38:00你们公司的错误处理是这个意思吧 SH_漫总#MM(2*****48)10:38:35fopen? 一看就不是我们写的... 阅读全文

posted @ 2013-05-01 19:32 codestyle 阅读(244) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示