目录

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

    1. warning: LF will be replaced by CRLF

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

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

    $ git config core.autocrlf
    

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

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

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

    $ 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 函数

    原型:

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

    使用实例:

    my_list = ['3', '4', 'u', 9]
    my_list.sort(reverse=True)
    print my_list
    ['u', '4', '3', 9]
    
    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 函数

    原型:

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

    使用实例:

    mylist = [5, 2, 3, 1, 4]
    print sorted(mylist, reverse=True)
    [5, 4, 3, 2, 1]
    
    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] 排序。

    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:

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

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

    将 MySQL 注册为系统服务

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

    启动 MySQL

    $ net start mysql
    

    4. pymysql 替换 MySQL-python

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

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

    下面是替换方法:

    import pymysql 
    
    pymysql.install_as_MySQLdb()
    

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

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

    管理员权限, CMD 下执行:

    @"%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,内容如下:

    <?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>
    

    执行命令,安装软件:

    $ choco install packages.config -y
    

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

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