alfred 每次开机运行后都提示是否允许访问通讯录

在使用破解版的时候,每次开机都要提示这个信息,实在是很烦.最终找到解决办法:
在终端输入如下命令,完美解决^_^!

sudo codesign -f -d -s - /Applications/Alfred\ 3.app/Contents/Frameworks/Alfred\ Framework.framework/Versions/A/Alfred\ Framework

Shell 脚本递归列表目录下所有文件

#!/bin/bash

if [[ -z "$1" ]] || [[ ! -d "$1" ]]; then
    echo "The directory is empty or not exist!"
    echo "It will use the current directory."
    nowdir=$(pwd)
else
    nowdir=$(cd $1; pwd)
fi
echo "$nowdir"

# 递归函数的实现
function SearchCfile()
{
    cd $1
    #这里可以修改为判断文件类型,如.c,.java等等文件类型,修改一下grep条件就可以了
    #cfilelist=$(ls -l | grep "^-" | awk '{print $9}')
    cfilelist=$(ls -l | awk '{print $9}')
    pwd=$1

    for cfilename in $cfilelist
    do
        if [[ -d "$cfilename" ]];then
            SearchCfile $cfilename
            cd ..
        else
            #echo $cfilename
            ext=${cfilename#*.}
            if [[ "$ext" == "mp4" ]];then
                pwd=$(pwd)
                echo ${pwd}/${cfilename}
            fi;
        fi;
    done;

}

SearchCfile $nowdir

有一种能力叫:心想事成

粘贴和复制是我们最常用的功能了,可是以vim下粘贴和删除总是有点不那么自然.所以我们要修修,毕竟vim我们喜欢的就是vim这个特点嘛.

先说复制:
方法一:
每次准备 copy 的时候, 先输入:set nonu, 然后再鼠标选中要复制的内容,C+c

方法二:
.vimrc文件中加入set mouse=a, 这个是不会选中行号了,可是发现C+c竟然失效了…(我们妈妈). 所以这种方法还在研究中.

再说粘贴;
粘贴就比较简单了. 直接在 .vimrc 添加

nnoremap <F2> :set invpaste paste?<CR>
imap <F2> <C-O>:set invpaste paste?<CR>
set pastetoggle=<F2>

然后在每次粘贴的时候按下F2,然后就可以C+v了.

找到程用程序Zend Studio ,右键点击图标,选择“显示包内容”, 然后到Contents/Elipse/ZendStudio.ini下把

-Dorg.eclipse.swt.internal.carbon.smallFonts

全部删除即可,重新启动eclipse字体就会正常。


function is_weixin(){ 
 if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
   return true;
 } 
 return false;
}

一个完整的项目是如何开始的

  1. 产品需求构建, 讲解
  2. 技术需求分析, 划分
  3. 资源申请
  4. 与资源申请可以同时进生的是api文档文档接口
  5. 测试环境下测试
  6. 发布线上,测试.
  1. git status
  2. git add file
  3. git commit -m “message”
  4. git branch 查看所有分支
  5. git branch -d branch-name 删除分支
  6. git checkout branch-name 切换分支
  7. git checkout -b new-branch-name 创建并切换分支
  8. git log 查看日志
  9. git rm file…删除文件
  10. git pull 拉取内容
  11. git puash origin master 发布主分支 origin:远程 master 主分支
  12. git diff file… 查看file的区别
  13. git clone git://adaaaaa.git 克隆分支
  14. git checkout — filename… 撤消修改
  15. git merge branch-name 合并分支
  16. git tag tag-name 创建标签
  17. git reset — hard HEAD^ 退回版本
  18. git config —global color.ui true 显示git颜色
  19. git config —global alias.st status 将status命令自定义为:st, 使用git st === git status
    忽略特殊文件
  20. .gitignore 文件里写
    .class .pyc

  21. 丧心病狂的查看日志的别名:
    git config —global alias.lg “log —color —graph —pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ —abbrev-commit”

OmniFocus是一个款GTD(时间管理)软件,有人甚至为了用上这款软件而购买mac系统列产品.可见这产品是有多么的牛x了.下面我们一步一步说明这款软件该如果使用.

收件箱.

这里是你收到的所有新任务,难到真的要第收到一个新任务都要手动编辑吗? 当然不用!我们可以利用OmniFocus的同步功能将收到的新任务都同步到收件箱.

设置方法如下:

  1. 先去OmniFocus(https://manage.sync.omnigroup.com/)申请个帐号,登陆帐号用有一个”Mail Drop to Inbox”生成一个邮件地址.

  1. 进入到自己的工作邮箱(比如:我的是Gamil). 设置转发功能, 将邮件转发至第一步得到的邮箱地址上.如果你的邮箱支持过滤器功能的话,那能更好的发挥这个功能.

  2. 在mac上的OmniFocus,偏好设置->同步, 选择Omni Sync Server.

ok, 至此,OmniFocus收件箱自动化设置就完成了.再有新任务就会自动同步到OmniFocus上.

一个好问题一个好的开始

很多时候,我们都是缺少一个好的切入点.所以才走了那么多的冤枉路.太封闭自己更是容易错过太多的成长机会.

如果没有高人指路,那么就多看书吧.也许可以从中体会出人生的真谛.如果你现在改变不了这个世界,那么就开始改变自己.让自己变成一个有思想的人.

有时候我们需要只把redis当作一个memcache 用.存一些可丢类型的数据,所以需要关闭持久化

1.注释掉原来的持久化规则

#save 900 1
#save 300 10
#save 60 10000

2.设置为空

save “”

重启吧!

Failed to read the project description file (.project) for 'myproject'.  
The file has been changed on disk, and it now contains invalid information.  
The project will not function properly until the description file is restored to a valid state.

早上打开Zend Studio 发现项目被关闭,无法打开.提示如上信息.

这是因为在团队开发过程,有些人会把 .project .setting之类的值都提交上来.这时自己一更新项目,就会造成上述两个文件冲突.以至于zend studio 在读取这两个文件的时候发生的错误.

[解决方案]

进入项目根目录, 找到 .project ,将冲突位置删除.并且删除.project.mine 和 .project.r12312这类的文件.然后保存.

重启Zend.一切又恢复了正常!

时常检查自己的方向是否正确.

做好每一件小事.

时刻提醒自己现在所做的每一件事都是为了实现自己的理想.

合理并正确的管理自己的时间.

  1. 了解团队的组织架构,即使有些公司并没有组织架构,但实际上还是有一些人员管理结构的.

  2. 了解项目架构

  3. 总结你所能看到的功能模块

  4. 每天争取至少画一个功能模块的流程图.很简单的就可以.哪怕是在草纸上画画.

  5. 开发功能可能是了解产品最快的手段了.

有没有人用和会不会有人用?

人类需要的是光明,可是爱迪生却给了我们灯炮! 你是否真正了解产品需求?

  1. 深刻理解业务

  2. 充分和用户沟通

  3. 具备深厚的技术背景和严谨的思维

一、让客户畅所欲言,罗列出所有的需求

二、透过现象分析潜在的需求

三、利用自然的语言描述项目模型

四、利用示意图和图表将用户的需求表现出来

五、什么人要看需求分析报告?

六、建立需求变更日志,制作新版本的需求分析报告。

七、本阶段重点工作角色

找用户最大的领导讨论项目的整体思路,然后按大领导的意见把用户需求筛选一遍,凡是和大领导思路明显冲突的一律扔到一边,把符合大领导思路的那些需求充分细化。啥叫大领导?不是什么IT部经理、信息处处长、客户项目经理之类的,而是能拍板决定和这个项目相关的业务问题的人,比如做人事系统,大领导至少是人力总监,做财务系统至少是财务总监,当然能再往上让一把手积极参与进来就更好了。和大领导讨论的过程,既是了解大领导思路的过程,也是筛选需求的过程,更重要的是,获取大领导支持的过程。有了大领导的支持,再开会的时候,底下吵吵嚷嚷,你也能气定神闲,胸有成竹。

有人可能又要嘀咕了:大领导你想见就见,你以为自己是谁啊?这就又联系到我刚才谈的第一个问题,对业务理解的深度。项目启动的时候,大领导一般例行是要接见一下项目组的,你也会给大领导留下一个印象。如果你张口闭口就是数据库、表单、Java框架什么的,大领导和你没有交集,自然懒得见你,要是你能聊到们最大的竞争对手在这个项目相关的业务领域有哪些优势劣势,国外的业务管控经验等等,你也许能经常成为大领导的座上宾。所以说,对业务理解的深度是项目成功非常关键的。

和用户的沟通有多种形式,比如需求讨论会、高层访谈、用户讨论什么的。我觉得应该先做很多的一线用户讨论,问很多问题,把所有的业务环节都彻底摸清,顺便收集一些表单和数据作为需求分析的依据。然后再去做高层访谈,了解整体思路、战略、目标一类的宏观问题。需求讨论会一般在后期开,主要是针对某些争议比较大或者定义不清晰的问题,集思广益,实际上就是一种头脑风暴方法。在这些讨论中,需求分析人员都不应该只是做一个记录者,而应该多提问题和建议,用自己的思路去启发用户,大胆设想小心求证。但也要注意尊重用户的意见,不能觉得用户不懂技术所以我随便听听就行了,怎么实现是技术的事情,和用户没多少关系,这样往往在后期会出问题。

科技发展迅速, 必须不断学习.

可是我们该如何学习新技术呢?就像我最近学习hadoop的时候,总感觉自己抓不到实质.很飘,很远.

1.概念学习,学习一样新技术,那么你必须首先知道这项技术是什么.百一下吧.
2.找到这项技术所要解决的问题.这项新技术是为了完成什么任务.达到一个什么样的目标.这一条可能在了解概念的时候就已经有所接触,但我认为这一条完全有必要单独列出来.毕竟这是也你要学习这项技术的目的.
3.找一下跟这项技术相关的坛子.这也许能让自己少走很多弯路.
4.寻找教程.这一步其实关键.教程的好坏,决定你走进这项技术的速度.这也是一个反复的过程.
5按照已找到的教程,搭建环境, 实际操作一下入门小例子.实际操作,会让你有很大成就感,增强信心.有助于快速学习.
6.反复做一些相关实验.毕竟实践出真理.
7.了解一下这项技术的缺点.
8.收集更多更加丰富和进阶资料.这时候可能应该会进入一种慢进程状态.会有学不进去的感觉.这时候不要放弃,可以多浏览一些资料,放松一下.
9.再以后就知道自己该如何学习这项技术了.

json.match("^\{(.+:.+,*){1,}\}$")
如果返回完整字符串内容了,则认为是正确的json格式字符串

CSS

/* select */
.sel_wrap{width:210px;height:26px;background:#fafafa url(img/1001v1430205172991723649_b.png) no-repeat 173px -27px;border:1px solid #ccc;border-radius:0px;cursor:pointer;position:relative;_filter:alpha(opacity=0);padding: 0px 3px 0px 3px;}
.sel_wrap span{line-height:26px;padding-left:10px;font-size:13px;z-index:2;}
.sel_wrap .select{width:210px;height:28px;z-index:4;position:absolute;top:0;left:0;margin:0;padding:0;opacity:0;cursor:pointer;}

JQuery

// select 重定义下拉框
$(function(){
 $(".sel_wrap").change(function() {

  var o;
  var opt = $(this).find('option');

  opt.each(function(i) {
   if (opt[i].selected == true) {
    o = opt[i][removed];
  }
  })
  $(this).find('span').html(o);
 }).trigger('change');
});

HTML

<div class="sel_wrap">
  <span>请从下面选择</span>
  <select name="group" class="select">
    <option value="1">jquery</option>
    <option value="2">css</option>
    <option value="3">html</option>
  </select>
</div>

效果:

在php5.2的坏境下.php json_decode 方法有bug,
{"mid":100000021431519161,"uid":10000002,"type":"2"}

上面是一个再正常不过的json字符串了.但是在经过 json_decode 以后就出现大坑了.

{
    "mid": 100000021431519170, //注意看这里.......
    "uid": 10000002,
    "type": "2"
}

正常来讲,php5.2 支持int类型的长度在18的时候是不会出现问题的.

但是经过json_decode以后就悲剧了.

  1. 备份数据库

    mysqldump 数据库名 >数据库备份名 
    mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 
    mysqldump -d -A --add-drop-table -uroot -p >xxx.sql
    
  2. 导出结构不导出数据
    mysqldump --opt -d 数据库名 -u root -p > xxx.sql

  3. 导出数据不导出结构
    mysqldump -t 数据库名 -uroot -p > xxx.sql

  4. 导出数据和表结构
    mysqldump 数据库名 -uroot -p > xxx.sql

  5. 导出特定表的结构
    mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql

  6. 导入数据

    mysql 数据库名 < 文件名.sql
    source /tmp/xxx.sql