Please enable Javascript to view the contents

开发 Tips(1)

 ·  ☕ 3 分钟

主要记录最近遇到的一些开发问题,解决方法。

1. warning: LF will be replaced by CRLF

Windows、Linux 和 Mac 在处理文件换行时,标示符是不一致的。Windows 使用 CRLF 作为结束符,而 Linux 和 Mac 使用 LF 作为结束符。

对待换行符,Git 有两种模式。查看 Git 配置。

1
git config core.autocrlf

如果显示为 true,则每一次当你 git commit 时,如果存在文本文件,那么 git 会自动帮你将末尾的换行符改为 CRLF,省去了烦心的转换工作。

如果显示为 false,则 git 不会对换行符进行修改,保持原始的内容。

Linux 和 Mac 开发者,这个配置应当为 false,而 Windows 开发者,则应当设置为 true。

1
git config --global core.autocrlf  false

2. Python 可迭代对象的排序

可迭代对象 iterable 主要包括 3 类:

  • 全部序列类型,比如 list(列表)、str(字符串)、tuple(元组)
  • 部分非序列类型,比如 dict(字典)、file(文件)
  • 包含 __iter__()__getitem__() 方法的对象

sort 是 list 对象的一个方法,sorted 可以对所有可迭代的对象进行排序操作。不同的是 sort 在原位重新排列列表,而 sorted() 是产生一个新的列表。有关排序的基本概念:

  • iterable
    可迭代对象
  • cmp
    比较函数,需要两个参数
  • key
    比较的元素,只有一个参数
  • reverse
    排序规则,reverse = True 降序 , reverse = False 升序

2.1 sort 函数

原型:

1
list.sort(cmp=None, key=None, reverse=False)

使用实例:

1
2
3
4
my_list = ['3', '4', 'u', 9]
my_list.sort(reverse=True)
print my_list
['u', '4', '3', 9]
1
2
3
4
5
6
def takeSecond(elem):
    return elem[1]
mylist = [(2, 2), (3, 4), (42, 1), (41, 1), (1, 3)]
mylist.sort(key=takeSecond)
print mylist
[(42, 1), (41, 1), (2, 2), (1, 3), (3, 4)]

2.2 sorted 函数

原型:

1
sorted(iterable, cmp=None, key=None, reverse=False)  

使用实例:

1
2
3
mylist = [5, 2, 3, 1, 4]
print sorted(mylist, reverse=True)
[5, 4, 3, 2, 1]
1
2
3
mylist = [('b', 2), ('a', 1), ('c', 3), ('d', 4)]
print sorted(mylist, cmp=lambda x, y: cmp(x[1], y[1]))
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

指定多个排序关键字,先按照 x[1],再按照 x[0] 排序。

1
2
3
mylist = [('d', 2), ('a', 4), ('b', 3), ('c', 2)]
print sorted(mylist, key=lambda x: (x[1], x[0]))
[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

3. 如何启动 Windows 下的免安装版 MySQL

修改配置文件 my.ini:

1
2
3
4
5
[mysqld]
port=3306
basedir=C:\\tools\\mysql\\current
datadir=C:\\ProgramData\\MySQL\\data
skip-grant-tables 

新增 skip-grant-tables 用于跳过权限表的限制,不用验证密码,直接登录。

将 MySQL 注册为系统服务

1
"C:\tools\mysql\current\bin\mysqld"  --install MySQL --defaults-file="C:\tools\mysql\current\my.ini"

启动 MySQL

1
net start mysql

4. pymysql 替换 MySQL-python

MySQL-python 已停止更新,只支持 Python2,不支持 Python3 ,并且依赖复杂,安装麻烦。

pymysql 为替代 MySQL-python 而生,纯 Python 编写,接口与 MySQL-python 兼容,安装方便,支持 Python3。

下面是替换方法:

1
2
3
import pymysql 

pymysql.install_as_MySQLdb()

5. Windows 下快速搭建开发环境

将工作 PC 的操作系统升级到 Windows 10,下面是我快速搭建 Python 开发环境的步骤:

管理员权限, CMD 下执行:

1
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

新建文件 packages.config,内容如下:

 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
<?xml version="1.0" encoding="utf-8"?>
<packages >
  <package id="foxitreader" />
  <package id="googlechrome" />
  <package id="winrar" />
  <package id="everything" />

  <package id="notepadplusplus" />
  <package id="vscode" />
  <package id="msys2" />
  <package id="conemu" />
  

  <package id="git" />
  <package id="tortoisesvn" />
  <package id="hg" />

  <package id="python2" />
  <package id="pip" />
  <package id="vcpython27" />

  <package id="jdk8" />
  <package id="nvm" />

  <package id="redis-64" />
  <package id="mysql" />
  <package id="rabbitmq" />
  <package id="docker-for-windows" />
</packages>

执行命令,安装软件:

1
choco install packages.config -y

C:\tools\msys64\usr\bin 目录加入 PATH,从 gist 上下载 VS Code 的配置,这样基本开发软件就全都有了。

主要使用的 Console 是 Powershell,执行 bash 可以进入 msys2。


微信公众号
作者
微信公众号