主要记录最近遇到的一些开发问题,解决方法。
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
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。