[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF

遇到这两个错误,是因为Git的换行符检查功能。

Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:

建议使用最严格的 true 选项。

假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:

 

Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:

 

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:

Tlinux 2.0 下部署Laravel 5.1

前几天在做一个小项目,本地的开发环境是vagrant+homestead,在本地测试一切OK,但是生产环境有问题,因为tlinux2.0默认php的版本是:5.4.16

001

laravel要求的php环境>=5.5.9

所以需要自己编译安装~

1. 首先安装nginx 和 mysql

(注意:CentOS 7.0中,已经使用MariaDB替代了MySQL数据库)

2. 为数据库root账户设置密码

回车,根据提示输入Y

输入2次密码,回车

根据提示一路输入Y

最后出现:Thanks for using MySQL!

MariaDB密码设置完成,重新启动 MariaDB即可.

3. 编译php前的准备

因为编译php要依赖好多扩展库,所以先安装一下:

4. 编译安装php

我安装的php版本是5.6.12,可以去官网下载,也可以执行下面的命令直接下载:

解压缩:

A. 编译安装:

B. 编辑php-fpm.conf 

C. 设置 php-fpm开机启动

D. 编辑配置文件

这样php就基本配置完成了,但是在我的使用过程中还是会有坑,mysql和php不通。

所以继续下面的操作:

E. 继续修改php配置文件

找到:mysql.default_socket=  pdo_mysql.default_socket= mysqli.default_socket=

去掉注释将等号后面的参数全部修改为: /var/lib/mysql/mysql.sock

这样在tlinux2.0下整个环境配置就完成了。

附带我的nginx配置

最后在说明一下,还要将应用的根目录用户权限修改为:nginx:nignx

因为nginx默认用户是nginx,我在php-fpm里面配置的也是nginx。

到此,整个环境搞好了,laravel应用成功上线。

Laravel系列之magration

今天深入学习magration

详见:http://laravel-china.org/docs/5.1/migrations

在开始下节学习之前,先做个笔记:

很多时候,在Laravel中,我们在创建一个model的时候都会有一些约定俗成的命名方法:

如果说我们有一个articles数据表,我们的model相对应就命名为Article;

如果说我们有一个users的数据表,我们的model对应就命名为User;

就是基本上遵守数据表复数而model单数大写就可以了。

Laravel系列之部署Vagrant与Homestead

最近在学习Laravel,需要安装各种开发环境,不想让安装的各种环境来破坏自己纯净的系统。(我的系统 osx 10.11.1)

自己用的是Parallels Desktop虚拟机,然后装ubuntu~ 但是有个特别不爽的问题就是有那个GUI界面,虽然可以隐藏起来,但是还是感觉不爽。

于是接触到了Vagrant,然后就感觉这个东西简直就是一个神器,首先我们先了解下面几个概念~

什么是Vagrant?

我是这样理解的,它就是一个管理虚拟机,快速部署虚拟机的东东, 具体点讲它就是一个中间层,它的下层是VirtualBox, VMware, Parallels Desktop, AWS或者其他provider,它的上层是provisioning工具,比如shell scripts, Chef, or Puppet等可以自动化安装和配置软件的工具。

就是不管你用什么虚拟机,我这边用相同的命令可以去控制,最主要的是可以快速的部署多台虚拟机,以及你所想要的环境。

关于Vagrant的介绍详见官方文档:https://docs.vagrantup.com/v2/

在具体的了解Vagrant的使用之前,我们先了解一个概念–BOX.

什么是BOX?

box就是你要快速创建虚拟机的模版,镜像.

你可以有不同的box,不同的box可能上面部署了不同的操作系统,不同的开发环境。

网上有许多现成的BOX可供下载,当然你也可以自己定制一个box.

这里列出了其他的一些镜像,可以根据需求来选择。 http://www.vagrantbox.es/

什么是Homestead?

Homestead是一个专门针对Laravel PHP开发,定制好的BOX,基于Ubuntu 14.04

它具体包括了一下的软件环境:

下面我们用vagrant来快速的部署我们的开发环境。

首先需要安装虚拟软件:这里我们首选 virtualbox 首先它开源的,vagrant支持较好,同时virtualbox跨平台windows linux osx。

(同时,vagrant支持vmwave 与 Parallels desktop,但是Paralleles desktop下的现成BOX不多.)

1. 下载安装 VirtualBox

virtualbox的下载地址:https://www.virtualbox.org/wiki/Downloads

2. 下载安装 Vagrant

Vagrant的下载地址:https://www.vagrantup.com/downloads.html

3. 下载BOX-homestead

官方文档给的安装方法是执行下面的命令

按照提示选择虚拟化软件

然后耐心等待下载即可。

来张图:

v-001

虽然我厂的网速百兆,无奈homestead的镜像在国外,下载还是很慢。

所以用旋风或者迅雷下载。

下载好后重名为:homestead.box

然后执行这条命令:

* Path为下载存放homestead.box文件的绝对路径。

这样就把homestead这个box注册到了vagrant,当然如果你要安装别的box和这也是一样的。

4. 克隆已有的Homestead仓库-创建虚拟机

解释一下这一步是做什么?

因为上一步 我们创建了一个BOX,现在我们要根据这个BOX来创建我们的虚拟机,vagrant是根据Vagrantfile配置文件去创建虚拟机的,这里已经写好了相关的配置,只需要git下来即可。

这时就创建好了 Homestead.yaml 配置文件。

配置文件很重要,具体请参考 http://laravel-china.org/docs/5.0/homestead

homestead相关的操作按照上面的链接操作即可。


说一下如果用的是vagrant的其它box.

接下来,从包含克隆laravel/homestead仓库的目录运行下面的命令即可。

第一次运行这个命令的时候,就会按照配置文件创建虚拟机,所以具体请参考官方文档配置。

项目目录下,运行 vagrant ssh 即可链接至刚刚创建的虚拟机。

附常见vagrant命令,以下命令需要在项目目录中执行

再介绍一下打包BOX

如果没有使用homestead这个BOX,使用的是纯净的系统,当配置好相关的环境之后,就可以将当前配置好的虚拟机打包成box,存盘备用,也可以分发给Team的其他同事,统一开发环境。


顺便说一下在整个过程中遇到的坑:

1. 安装过程中如果遇到问题可尝试删除 ~/.vagrant.d/ 这个目录重新尝试,当运行vagrant这个命令的时候会重新创建这个目录的。

2. 修改vagrantfile配置文件,切记一定要使用空格,不能使用tab键,因为语法不兼容。

3. vagrant也兼容parallels desktop,但是需要安装插件,可以执行以下命令:

4. 设置homestead环境变量的时候,官方给的教程是:

但是不管我怎么执行命令都不行,添加到.zshrc,source后还是不行。

修改为下面的OK:

(我用的是Oh-my-zsh+iterm2,不知道是不是因为这个环境影响所致)


附参考文档:
https://github.com/astaxie/Go-in-Action/blob/master/ebook/zh/01.1.md
https://github.com/astaxie/Go-in-Action/blob/master/ebook/zh/01.2.md
https://github.com/astaxie/Go-in-Action/blob/master/ebook/zh/01.3.md

由微信运动刷榜所挖掘到的

最近发现我的微信朋友圈运动排行榜,有些童鞋每天都步行6-7W步以上,占据了我的榜首,然后我的封面上就被代理广告所占据。

我绕着宝体跑了3圈,没有1W步,我都快趴了~

于是乎,想一探究竟,他们是怎么做到的?

先来看几个数据:

1. 一万步到底多少米?

10000步 x 步幅阔度= 公里数

(步幅阔度 = 可直接测量或计算 女性:0.413 x 身高,男性:0.415 x 身高)

以一步0.7米计算,一万步约合7000米,即7公里。女生大约0.5米约合5000米

2. 走一万步到底需要多长时间?

人类的正常行走平均速度为 4-7km/h,这个速度一般就是你步行上学或上班的行走速度;

结合上面的数据 7km 除以 6km/h = 1.2小时

上面的数据均来自百科。

我身边有许多跑马的同学,他们确实经常跑超过7W甚至更多,例如pengbo同学。


Google了一下”微信运动刷榜“关键字~找到约 1,430,000 条结果 (用时 0.32 秒)

wx-001

淘宝一下”微信运动刷步“:

wx-000

看到搜索的结果,我在想微信运动刷榜到底是怎么实现的,还有就是他们刷榜做什么?


如何刷榜?

其实总的总结下来就有以下4种情况。

1. 第一类IOS HealthKit介绍详见:http://www.jianshu.com/p/0fe7b5543806
介绍详见2:https://www.v2ex.com/t/214564
代码:https://github.com/beanbest/WeixinWalk

2. 第二类Android Hook
介绍详见:http://drops.wooyun.org/tips/8416
代码:https://github.com/beanbest/WechatSportCheat

3. 第三类利用第三方数据上传API
介绍详见:http://www.tantengvip.com/2015/11/python3-wechat/
python代码:https://github.com/beanbest/learn-python/blob/master/wechat-ledongli.py
nodejs代码:https://github.com/beanbest/wechat-steps

4. 第四类模拟真实运动
介绍:主要是用物理传感器模拟真实运动,找个马达什么的。


自己仿照网上的代码,做了个html的demo,感兴趣的可以试一下。

点击这里体验刷步http://www.beanbest.com/ledongli/

大家为什么会刷榜

1. 大部分人,是想减肥,靠这个做自我监督。
2. 部分人虚荣心需要得到满足,而运动的榜单可以让别人直接关注到。
3. 公益,因为微信可以捐步数,献爱心。
4. 第一名是可以在别人微信运动封面中显示自己设置的图片。

其实捐步公益做的不错赞一个~(自己够1W步,想捐的时候却发现 “来晚了,明天才来”)

wx-003

其实在这里面我想说的最重要的是第四点~

直接上图
wx-002

经常在朋友圈里可以看到各种广告,如果我看到有人在朋友圈长期发广告就直接设置不查看朋友圈,但是微信运动的榜首可以设置成不查看吗?

许多商贩,已经拿微信运动的排行榜做起了广告,并且产生了一个小型的生态圈。

不知道微信运动的同事有什么策略,来打击这些刷榜单,投放广告的行为?

ubuntu 中文乱码问题

最新补充:2015-12-14

如果cat命令查看文件不乱码,vim乱码只需在vim配置文件中加入以下的内容即可:

一般情况下 不建议修改系统的默认语言参数。


进行如下操作:

修改为以下内容:

之后执行以下命令:

或者: