Windows效率工具

工具列表

快速启动
Wox
launchy

本地磁盘搜索
Everything
Listary

文件资源管理器
Total Commander
Clover
FreeCommander

剪贴板管理
1clipboard
Ditto(Windows 增强版剪贴板工具)
Clibor – 来自日本的剪贴板辅助工具

远程控制工具
Teamviewer

系统垃圾清理
CCleaner
Wise Care 365

文件恢复
Recuva
diskgenius

文本编辑器
Vim
VS Code

知识库管理
为知笔记

源码阅读
Source insight

文件比较
Beyond Compare

在线工具
开源在线工具
DevDocs API

命令行
cmder

源码管理
Git

网盘资源搜索
网盘搜索工具

输入法
小狼毫
搜狗

翻译工具
灵格斯

其它
F.lux(屏幕颜色自动调整工具)
Auto Hot Key(快捷键管理工具)
PicPick(截屏)
LICEcap(屏幕录制生成gif动态图工具)
ScreenToGif(强大的gif录制/剪辑工具)
Autoruns(开机自启动项的照妖镜)

Chocolatey (软件包管理器)

Chocolatey 类似于osx平台的 homebrew

安装

在 Cmd.exe 上安装 Chocolatey

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin

在 Powershell 上安装 Chocolatey

iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

如果是在 Powershell 下面安装 Chocolatey 之前,先修改一下 Powershell 的执行策略,不然会出现 “此系统中禁止执行脚本” 这样的错误,
解决的方法是执行下面的命令,意思就是把执行的策略设置成不限制

Set-ExecutionPolicy unrestricted

升级

choco upgrade chocolatey

卸载

C:ProgramDatachocolatey

环境变量

  • ChocolateyInstall
  • ChocolateyBinRoot
  • ChocolateyToolsLocation
  • PATH (will need updated to remove)

chocolatey 的默认安装路径是:

C:ProgramDataChocolatey

自定义安装路径:

在 系统环境变量 中增加 ChocolateyInstall:

使用

Install Package

cinst package_name

安装路径
portable 默认安装路径是 $env:ChocolateyInstalllib

installable一些包是安装在 ChocolateyInstalllib,一些特定的基于 windows installers (.msi) 的软件是安装在原始安装程序的默认路径(绝大部分在 Program Files)
还有一些包,你可以定制安装路径,通过添加环境变量 ChocolateyBinRoot 指定安装路径,如果这个环境变量不存在,它将被安装在 c:tools,以包名作为子目录

搜索(List/Search)

choco list <keyword>Y
choco list --local-only
choco list -li
choco list -lai

choco search <keyword>
choco search git
choco search git -s "'https://somewhere/out/there'"
choco search bob -s "'https://somewhere/protected'" -u user -p pass

包的类型

  • *(例:nodejs,git)
  • *.install (例:nodejs.install,git.install)
  • *.portable(例:putty.portable)
  • *.commandline(例:nodejs.commandline,未来会被抛弃)

.install 后缀的包,这个包会出现在系统控制面板里的 卸载或更改程序 里面,你可以把 .install 的包想成是通过安装程序(msi)安装的包。

.commandline(未来会被抛弃) 与 .portable 后缀的包是压缩包(zip),安装这种后缀的包,你不能在 卸载或更改程序 里找到它们。

你也可以选择不带后缀的包,这样如果系统中已经安装了这个包,就会跳过去,如果没安装,Chocolatey 就会为你安装一个,默认安装的这个包的类型应该就是 .install 后缀的包

Babun

Babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令。
特点

  • 使用babun无需管理员权限
  • 先进的安装包管理器(类似于linux上面的apt-get或yum)
  • 预先配置了Cygwin和很多插件
  • 拥有256色的兼容控制台
  • HTTP(S)的代理支持
  • 面向插件的体系结构
  • 可以使用它来配置你的git
  • 集成了oh-my-zsh
  • 自动升级
  • 支持shell编程,内置VIM等

安装

下载:http://babun.github.io/

默认安装
下载完成之后解压babun,直接双击目录中install.bat脚本(需管理员权限)进行安装。默认会被安装在%userprofile%.babun目录下。

自定义安装位置
通过cmd命令行在执行install.bat时指定参数/t或/target指定安装的目录。

babun.bat /t c:babun

安装好之后会在c:babun目录下生成一个.babun的目录,babun所有文件都在这个目录中。注意安装目录不要有空格,这是cygwin要求的。

测试安装成功
安装完毕后,一般需要以下两个命令检查

babun check(用于判断环境是否正确)
babun update(用于判断是否有新的更新包)

Babun配置

源镜像
鉴于大陆的网络环境,建议将软件仓库地址改为163或者中科大的源,具体方法为用你最喜欢的文本编辑器打开 ~/.pact/pact.repo, 替换如下行为:

#PACT_REPO=http://mirrors.kernel.org/sourceware/cygwin/
PACT_REPO=http://mirrors.163.com/cygwin/

除此之外你还可以设置终端为半透明效果和代理等。另外为了更好地利用 babun 终端,你可能需要将其全屏,Full Screen – Alt + F11.

和 Windows 共享配置
添加环境变量 HOME,值为 Windows 的用户目录 C:Users%USERNAME%
启动 babun,执行 babun install,重启 babun

默认根目录

%userprofile%.babuncygwinhomeMike

windows cmd内置命令显示中文
babun默认编码是UTF-8的,而windows的cmd命令输出是GBK编码的,所以在Babun里面运行ipconfig等windows命令时,中文会是乱码。

解决:在babun自带的shell(mintty)右上角右键options-text,在character set选择GBK,之后执行cmd内置的命令时就正常显示中文了。
但是,如果把Babun的编码改成GBK的话,命令的中文输出倒是正常了,PS1却会出现一个乱码字符

去掉命令提示符乱码
babun内置两个shell,默认是zsh,另一个是bash,设置成中文后命令提示符最后会有一个乱码字符,要修改PS1变量去掉。把乱码字符替换为:>>

bash

vi /usr/local/etc/babun.bash
PS1="[33[00;34m]{ [33[01;34m]W [33[00;34m]}[33[01;32m] $( git rev-parse --abbrev-ref HEAD 2> /dev/null || echo "" ) [33[01;31m]>>[33[00m]"

zsh

vi ~/.oh-my-zsh/custom/babun.zsh-theme

PROMPT='%{$fg[blue]%}{ %c } 
%{$fg[green]%}$( git rev-parse --abbrev-ref HEAD 2> /dev/null || echo "" )%{$reset_color%} 
%{$fg[red]%}%(!.#.>>)%{$reset_color%} '

这样改好后命令提示符就变成: { ~ } >>

注:将编码修改成GBK后,ls命令中文文件名的会出现乱码。最好在Babun环境中使用UTF-8编码,ipconfig等cmd内置的命令用cmder或默认cmd执行就行了。

将Babun整合到cmder

在cmder窗口右上角右键Settings>Startup>Tasks,点+号添加一个新task,命名为babun。

在Task parameters中填入

/icon "%userprofile%.babuncygwinbinmintty.exe" /dir "%userprofile%"

在Commands中填入以下任意一种都可以

#默认使用ZSH
%userprofile%.babuncygwinbinmintty.exe /bin/env CHERE_INVOKING=1 /bin/zsh.exe

#使用自定义mintty配置
%userprofile%.babuncygwinbinmintty.exe -t "%userprofile%.babuncygwinetcminttyrc"

保存后,建立一个新终端时选Babun就可用了。

配置个性化的mintty

vim ~/.minttyrc

CursorType=block
Term=xterm-256color
Font=Source Code Pro Semibold
FontHeight=10

包管理

babun提供一个叫pact包管理工具,类似于linux上面的apt-get或yum的包管理工具。

Usage:

"pact install <package names>" to install given packages
"pact remove <package names>" to remove given packages
"pact update <package names>" to update given packages
"pact show" to show installed packages
"pact find <patterns>" to find packages matching patterns
"pact describe <patterns>" to describe packages matching patterns
"pact packageof <commands or files>" to locate parent packages
"pact invalidate" to invalidate pact caches (setup.ini, etc.)

Options:

--mirror, -m <url> : set mirror
--invalidate, -i : invalidates pact caches (setup.ini, etc.)
--force, -f : force the execution
--help
--version

开发环境配置

pip
babun内置了Python、Perl等解释器。cygwin自带的python没有pip,需手动安装。

wget https://bootstrap.pypa.io/get-pip.py -O - | python

有了pip就可以自由的安装诸如ipython之类的东西

常用软件安装

#安装tmux
pact install tmux

#安装screen
pact install screen

#安装zip
pact install zip

#安装svn
pact install subversion

#安装lftp命令
pact install lftp

#安装p7zip命令
pact install p7zip

#基于openssh的socks https代理
pact install connect-proxy

#安装linux基础命令行工具more/col/whereis等命令
pact install util-linux

#安装dig命令
pact install bind-utils

#安装Telnet等常用网络命令
pact install inetutils

#安装python环境
pact install python
pact install python-crypto

BoxStarter

BoxStarter一键装机

gist

Set-ExplorerOptions -showHiddenFilesFoldersDrives -showProtectedOSFiles -showFileExtensions
Enable-RemoteDesktop
Set-CornerNavigationOptions -EnableUpperRightCornerShowCharms -EnableUpperLeftCornerSwitchApps -EnableUsePowerShellOnWinX

# core
cinst dotnet4.5

# VCS
cinst git
cinst sourcetree

# Programming Language
cinst nodejs
cinst golang
cinst jdk8
cinst groovy
cinst php
cinst python
choco pip
cinst ruby
cinst redis
cinst unity
cinst android-sdk

# Containers & DevOps
cinst docker
cinst vagrant
cinst virtualbox
cinst vmwareplayer

# Build & CI
cinst gradle
cinst maven
cinst jenkins

# Database
cinst mysql
cinst mongodb
cinst sqlite

# Server
cinst tomcat
cinst nginx

# Terminal
cinst babun
cinst cmder
cinst gow
cinst clink

# Text Editor & IDE
cinst visualstudiocode
cinst vim
cinst vim-x64
cinst androidstudio
cinst eclipse
cinst intellijidea-ultimate
cinst pycharm
cinst phpstorm

# productive
cinst chocolateygui
cinst autohotkey
cinst launchy
cinst wox
cinst everything
cinst listary
cinst clover
cinst ditto

# Others
cinst googlechrome
cinst autoruns
cinst diffmerge
cinst xmind
cinst f.lux
cinst zoomit
cinst synergy
cinst keepassx
cinst googlejapaneseinput
cinst licecap
cinst screentogif
cinst picpick.portable
cinst sharex
cinst gimp
cinst inkscape
cinst paint.net
cinst foxitreader
cinst rufus
cinst freefilesync
cinst bleachbit
cinst freedownloadmanager
cinst line
cinst ultraiso
cinst fiddler4
cinst potplayer
cinst foobar2000
cinst winscp
cinst filezilla

安装

BoxStarter提供了web安装

http://boxstarter.org/package/nr/url?https://gist.githubusercontent.com/liwei-box/421b12e37139d1bb67e1c4190938c9c2/raw/8abc421eb758e05027d7f7931d874fcdfe48f983/liwei-boxstarter.config

原文

表单的操作

序列化

    $.fn.serializeObject = function()
    {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name] !== undefined) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };

回填

$.fn.formFieldValues = function (data) {
        var els = this.find(':input').get();

        if (arguments.length === 0) {
            // return all data
            data = {};

            $.each(els, function () {
                if (this.name && !this.disabled && (this.checked
                        || /select|textarea/i.test(this.nodeName)
                        || /text|hidden|password/i.test(this.type))) {
                    if (data[this.name] == undefined) {
                        data[this.name] = [];
                    }
                    data[this.name].push($(this).val());
                }
            });
            return data;
        } else {
            $.each(els, function () {
                if (this.name && data[this.name]) {
                    var names = data[this.name];
                    var $this = $(this);
                    if (Object.prototype.toString.call(names) !== '[object Array]') {
                        names = [names]; //backwards compat to old version of this code
                    }
                    if (this.type == 'checkbox' || this.type == 'radio') {
                        var val = $this.val();
                        var found = false;
                        for (var i = 0; i < names.length; i++) {
                            if (names[i] == val) {
                                found = true;
                                break;
                            }
                        }
                        $this.attr("checked", found);
                    } else {
                        $this.val(names[0]);
                    }
                }
            });
            return this;
        }
    };

ThinkPHP框架开发的应用的标准执行流程

  1. 用户URL请求
  2. 调用应用入口文件(通常是网站的index.php)
  3. 载入框架入口文件(ThinkPHP.php)
  4. 记录初始运行时间和内存开销
  5. 系统常量判断及定义
  6. 载入框架引导类(ThinkThink)并执行Think::start方法进行应用初始化
  7. 设置错误处理机制和自动加载机制
  8. 调用ThinkStorage类进行存储初始化(由STORAGE_TYPE常量定义存储类型)
  9. 部署模式下如果存在应用编译缓存文件则直接加载(直接跳转到步骤22)
  10. 读取应用模式(由APP_MODE常量定义)的定义文件(以下以普通模式为例说明)
  11. 加载当前应用模式定义的核心文件(普通模式是 ThinkPHP/Mode/common.php)
  12. 加载惯例配置文件(普通模式是 ThinkPHP/Conf/convention.php)
  13. 加载应用配置文件(普通模式是 Application/Common/Conf/config.php)
  14. 加载系统别名定义
  15. 判断并读取应用别名定义文件(普通模式是 Application/Common/Conf/alias.php)
  16. 加载系统行为定义
  17. 判断并读取应用行为定义文件(普通模式是 Application/Common/Conf/tags.php)
  18. 加载框架底层语言包(普通模式是 ThinkPHP/Lang/zh-cn.php)
  19. 如果是部署模式则生成应用编译缓存文件
  20. 加载调试模式系统配置文件(ThinkPHP/Conf/debug.php)
  21. 判断并读取应用的调试配置文件(默认是 Application/Common/Conf/debug.php)
  22. 判断应用状态并读取状态配置文件(如果APP_STATUS常量定义不为空的话)
  23. 检测应用目录结构并自动生成(如果CHECK_APP_DIR配置开启并且RUNTIME_PATH目录不存在的情况下)
  24. 调用ThinkApp类的run方法启动应用
  25. 应用初始化(app_init)标签位侦听并执行绑定行为
  26. 判断并加载动态配置和函数文件
  27. 调用ThinkDispatcher::dispatch方法进行URL请求调度
  28. 自动识别兼容URL模式和命令行模式下面的$_SERVER[‘PATH_INFO’]参数
  29. 检测域名部署以及完成模块和控制器的绑定操作(APP_SUB_DOMAIN_DEPLOY参数开启)
  30. 分析URL地址中的PATH_INFO信息
  31. 获取请求的模块信息
  32. 检测模块是否存在和允许访问
  33. 判断并加载模块配置文件、别名定义、行为定义及函数文件
  34. 判断并加载模块的动态配置和函数文件
  35. 模块的URL模式判断
  36. 模块的路由检测(URL_ROUTER_ON开启)
  37. PATH_INFO处理(path_info)标签位侦听并执行绑定行为
  38. URL后缀检测(URL_DENY_SUFFIX以及URL_HTML_SUFFIX处理)
  39. 获取当前控制器和操作,以及URL其他参数
  40. URL请求调度完成(url_dispatch)标签位侦听并执行绑定行为
  41. 应用开始(app_begin)标签位侦听并执行绑定行为
  42. 调用SESSION_OPTIONS配置参数进行Session初始化(如果不是命令行模式)
  43. 根据请求执行控制器方法
  44. 如果控制器不存在则检测空控制器是否存在
  45. 控制器开始(action_begin)标签位侦听并执行绑定行为
  46. 默认调用系统的ReadHtmlCache行为读取静态缓存(HTML_CACHE_ON参数开启)
  47. 判断并调用控制器的_initialize初始化方法
  48. 判断操作方法是否存在,如果不存在则检测是否定义空操作方法
  49. 判断前置操作方法是否定义,有的话执行
  50. Action参数绑定检测,自动匹配操作方法的参数
  51. 如果有模版渲染(调用控制器display方法)
  52. 视图开始(view_begin)标签位侦听并执行绑定行为
  53. 调用ThinkView的fetch方法解析并获取模版内容
  54. 自动识别当前主题以及定位模版文件
  55. 视图解析(view_parse)标签位侦听并执行绑定行为
  56. 默认调用内置ParseTemplate行为解析模版(普通模式下面)
  57. 模版引擎解析模版内容后生成模版缓存
  58. 模版过滤替换(template_filter)标签位侦听并执行绑定行为
  59. 默认调用系统的ContentReplace行为进行模版替换
  60. 输出内容过滤(view_filter)标签位侦听并执行绑定行为
  61. 默认调用系统的WriteHtmlCache行为写入静态缓存(HTML_CACHE_ON参数开启)
  62. 调用ThinkView类的render方法输出渲染内容
  63. 视图结束(view_end)标签位侦听并执行绑定行为
  64. 判断后置操作方法是否定义,有的话执行
  65. 控制器结束(action_end)标签位侦听并执行绑定行为
  66. 应用结束(app_end)标签位侦听并执行绑定行为
  67. 执行系统的ShowPageTrace行为(SHOW_PAGE_TRACE参数开启并且不是AJAX请求)
  68. 日志信息存储写入