分类 Windows 下的文章

修改注册表解决Windows 2008 R2 系统默认80端口被系统占用

安装好Windows2008R2企业版以后,默认80端口被占用,检查方法如下:

netstat -ano | findstr :80

80.png

任务管理器查看进 pid 为4
 映像名称   pid  描述
 system    4    NT kernel&System

4.png
修改注册表解决:

regedit
 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP'右边有一个'start'的DWORD的值将'3'改为'4'

regedit.png
最后重启即可。

CentOS安装VMware Tools

vmtools有以下功能:

正常执行虚拟机的电源操作。
在执行各种电源操作期间在客户机操作系统中运行 VMware 提供的脚本或用户配置的脚本。
在客户机操作系统中运行应用程序、命令和文件系统操作,以增强客户机自动化。
针对客户机用户操作进行身份验证。
定期从客户机收集网络、磁盘和内存使用情况信息。
生成从客户机操作系统到主机的检测信号,以便 VMware High Availability 可以确定客户机操作系统的可用性。
在客户机操作系统与主机或客户端桌面之间同步时钟。
使客户机文件系统进入静默状态,以便主机可以捕获与文件系统一致的客户机快照。
在使客户机文件系统进入静默状态时,运行 pre-freeze-script.bat 和 post-thaw-script.bat。
打开虚拟机电源后立即自定义客户机操作系统。
在 VMware Workstation 和 VMware Fusion 上,在主机文件系统与客户机文件系统之间启用“共享文件夹”。
支持在客户机操作系统与主机或客户端桌面之间复制和粘贴文本、图形和文件。
没有安装vmtools的虚拟机,通过vsphere client查看虚拟机信息时,是看不到虚拟机IP地址与hostname.

VMware Tools安装步骤:
1、登录vsphere控制台在要安装的虚机上,更改配置,将光驱设置为客户端设备。
1.png
2、右键客户机操作系统--安装VMware Tools
3、ssh登陆要安装的虚机,挂载vmtools镜像

mkdir /root/cdrom
mount /dev/cdrom /root/cdrom

4、解压

cd /root/cdrom
tar zvxf VMwareTools-10.2.1-8267844.tar.gz -C /root/

5、开始安装:

yum install perl -y  #安装perl包
cd /root/cdrom/VMwareTools
./vmware-install.pl 
# 询问是否继续安装,默认为否
open-vm-tools packages are available from the OS vendor and VMware recommends 
using open-vm-tools packages. See http://kb.vmware.com/kb/2073803 for more 
information.
Do you still want to proceed with this installation? [no] yes
 
# 安装路径,默认即可
Creating a new VMware Tools installer database using the tar4 format.
 
Installing VMware Tools.
 
In which directory do you want to install the binary files? 
[/usr/bin] 
 
# 自动启动文件路径,默认即可
What is the directory that contains the init directories (rc0.d/ to rc6.d/)? 
[/etc/rc.d] 
 
# init文件夹路径,默认即可
What is the directory that contains the init scripts? 
[/etc/rc.d/init.d] 
 
# sbin文件夹路径,默认即可
In which directory do you want to install the daemon files? 
[/usr/sbin] 
 
# vmware-tools库目录路径,默认即可
In which directory do you want to install the library files? 
[/usr/lib/vmware-tools] 
 
# vmware-tools库目录不存在,需要创建,默认即可
The path "/usr/lib/vmware-tools" does not exist currently. This program is 
going to create it, including needed parent directories. Is this what you want?
[yes] 
 
# agent library文件夹路径,默认即可
In which directory do you want to install the common agent library files? 
[/usr/lib] 
 
# agent transient文件夹路径,默认即可
In which directory do you want to install the common agent transient files? 
[/var/lib] 
 
# 帮助文档路径,默认即可
In which directory do you want to install the documentation files? 
[/usr/share/doc/vmware-tools] 
 
# 帮助文档文件夹并不存在,需要创建,默认即可
The path "/usr/share/doc/vmware-tools" does not exist currently. This program 
is going to create it, including needed parent directories. Is this what you 
want? [yes] 
 
# 执行configure脚本,默认即可
Before running VMware Tools for the first time, you need to configure it by 
invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want 
this program to invoke the command for you now? [yes] 
 
# 是否启用文件文件夹共享,esxi环境无法使用,默认即可
The VMware Host-Guest Filesystem allows for shared folders between the host OS 
and the guest OS in a Fusion or Workstation virtual environment.  Do you wish 
to enable this feature? [no] 
 
# vmblock,不支持esxi环境,默认即可
The vmblock enables dragging or copying files between host and guest in a 
Fusion or Workstation virtual environment.  Do you wish to enable this feature?
[no] 
 
# 是否启用VMware automatic kernel modules,默认即可
Would you like to enable VMware automatic kernel modules?
[yes] 
 
# 是否启用vgauth,默认即可
Do you want to enable Guest Authentication (vgauth)? Enabling vgauth is needed 
if you want to enable Common Agent (caf). [yes] 
 
# 是否启用Common Agent,默认即可
Do you want to enable Common Agent (caf)? [no] 
No X install found.

开始安装:

Creating a new initrd boot image for the kernel.
Generating the key and certificate files.
Successfully generated the key and certificate files.
manageSELinux install: The 'semanage' utility was not found.
There was an error configuring the SELinux security context for VMware Tools.  
Please make certain that SELinux is configured correctly.
 
The configuration of VMware Tools 10.2.1 build-8267844 for Linux for this 
running kernel completed successfully.
 
You must restart your X session before any mouse or graphics changes take 
effect.
 
To enable advanced X features (e.g., guest resolution fit, drag and drop, and 
file and text copy/paste), you will need to do one (or more) of the following:
1. Manually start /usr/bin/vmware-user
2. Log out and log back into your desktop session
3. Restart your X session.
 
Enjoy,
 
--the VMware team
 
Found VMware Tools CDROM mounted at /root/cdrom. Ejecting device /dev/sr0 ...

安装完成后会自动卸载cdrom.
6、删除安装包:

rm /root/cdrom /root/VMwareTools -rf

7、查看vmtools服务状态:

systemctl status vmware-tools

参考文档:
https://www.vmware.com/files/cn/pdf/vmware-tools-installation-configuration.pdf
https://ngx.hk/2018/08/22/vmware-tools%E7%AE%80%E4%BB%8B%E4%B8%8E%E5%AE%89%E8%A3%85.html

Windows修改端口连接数范围及快速释放time_wait

查看当前端口范围:(win10/win2008/win2012默认是一致的)

C:\Users\Administrator>netsh int ipv4 show dynamicportrange tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

C:\Users\Administrator>netsh int ipv4 show dynamicportrange udp

协议 udp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

C:\Users\Administrator>netsh int ipv6 show dynamicport tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

C:\Users\Administrator>netsh int ipv6 show dynamicport udp

协议 udp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

调整此范围:
netsh int < ipv4 | ipv6 > 设置动态 < tcp | udp > 开始数数 = =范围

netsh int ipv4 set dynamicport tcp start=2000 num=63000
netsh int ipv4 set dynamicport udp start=2000 num=63000
netsh int ipv6 set dynamicport tcp start=2000 num=63000
netsh int ipv6 set dynamicport udp start=2000 num=63000

time_wait超时时间调整

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
“MaxUserPort”=dword:0000fffe
“TcpTimeWaitDelay”=dword:0000005 (缩短为5秒)

重启生效。
via: https://support.microsoft.com/zh-cn/help/929851/the-default-dynamic-port-range-for-tcp-ip-has-changed-in-windows-vista
http://www.361way.com/win-dynamic-port-timewait/5255.html

SQL Server2008R2日志文件过大 大日志文件清理方法 不分离数据库

SQL Server日志文件过大    大日志文件清理方法 ,网上提供了很多分离数据库——〉删除日志文件-〉附加数据库 的方法,此方法风险太大,过程也比较久,有时候也会出现分离不成功的现象。下面的方式是不需要做数据库分离和附加操作的。

SQL 2008收缩清空日志方法:

1.在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库就不支持时间点备份了。
1).选择数据库–属性—选项—恢复模式–选择简单。
2).收缩数据库后,再调回完整。
2.可以用命令直接操作

USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE      --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY)  --设置压缩后的日志大小为2M,可以自行指定
GO
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL   --还原为完全模式
GO

OneDrive 一直显示"正在处理更改"的解决方法

OneDrive 一直显示"正在处理更改",能打开OneDrive网站查看,确认网络正常没被墙,解决方法如下:

1. 按下 Windows 按键 + R ,

2. 在弹出的运行/ Run视窗输入:%localappdata%\Microsoft\OneDrive\onedrive.exe /reset

3. 然后请点击OK (桌面右下角的OneDrive系统小图标将消失并在大约1-2分钟后再次出现)

4. 若桌面右下角的OneDrive系统小图标在数分钟后并没有再次出现,请再运行/ Run视窗并输入:%localappdata%\Microsoft\OneDrive\onedrive.exe

5.操作完成之后,再查看。

via:https://answers.microsoft.com/zh-hans/windows/forum/windows_10-files/onedrive/83687705-a43e-4b79-8db2-bed56abfbadf

WINDOWS SERVER 2008/R2/2012最大内存支持及版本升级方法

Windows Server 2008 最大内存限制:

Windows Server 2008 x86
Windows Server 2008 标准版,支持最大 4GB 内存
Windows Server 2008 企业版,支持最大 64GB 内存
Windows Server 2008 数据中心版,支持最大 64GB 内存

Windows Server 2008 x64 with 或 without Hyper-V Role Enable
Windows Server 2008 标准版,支持最大 32GB 内存
Windows Server 2008 企业版,支持最大 1TB 内存
Windows Server 2008 数据中心版,支持最大 1TB 内存

Windows Server2008 R2 最大内存限制:
Windows Server 2008 R2 with Hyper-V Role Enable
Windows Server 2008 R2 标准版,最大支持 32GB 内存
Windows Server 2008 R2 企业版,最大支持 1TB 内存
Windows Server 2008 R2 数据中心版,最大支持 1TB 内存
Windows Server 2008 R2 without Hyper-V Role Enable
Windows Server 2008 R2 标准版,最大支持 32GB 内存
Windows Server 2008 R2 企业版,最大支持 2TB 内存
Windows Server 2008 R2 数据中心版,最大支持 2TB 内存

Windows Server 2012 Standard
Windows Server 2012 Datacenter

Windows Server 2012支持以下最大的硬件规格
64个物理处理器
640个逻辑处理器(关闭Hyper-V,打开就支持320个)
4TB内存

2008R2标准版操作系统升级到企业版。不想重装系统只能用升级命令是DISM.exe。需在线升级。

升级步骤:  

第一步:停用此台服务器上所有正在运行的应用程序,把应用程序服务由自动改为手动 。 

第二步:获取当前操作系统版本信息,dism /online /Get-CurrentEdition

第三步:检查当前操作系统可升级的版本  dism/online /Get-TargetEditions

第四步:输入操作系统升级命令,目标版本和序列号。安装完成后第1次重启系统  

dism /online /Set-Edition:ServerEnterprise/productkey:XXXXX XXXXX - XXXXX - XXXXX - XXXXX

第一个参数是edition ID, 也就是第二步中查询到的目标版本; 第二个参数是ProductKey,25个字符的目标系统版本的产品密钥。

第五步:系统重新启后进行版本升级的系统配置,当配置完成后第2次重启系统。

第六步:第2次重启完成后,登录操作检查操作系统的版本、系统激活状态。

如果开始出现了一次语法错误报87,又出现了产品密钥不符报1605,总之这个密钥一定要对。待到成功后会提示重启,一共是两次重启吧,最终Windows Server 2008 R2 标准版升级到企业版大功告成,系统登陆时就能看到的。

JS实现页面打印

方式一:window.print()
整体打印

<a href="javascrīpt:window.print()" target="_self">打印</a>

现在就轻松实现了页面的打印,但是这种方式会将整个页面打印,如果想要实现指定区域的打印需要通过下面的设置
局部打印
首先,在html中,通过star和end来标记打印区域

<h1>这块内容不需要打印</h1>
<!--startprint-->
<div class="content">
    这里是需要打印的内容
        .....
</div>
<!--endprint-->
<h1>这块内容不需要打印</h1>

然后,在点击事件中添加如下代码

function doPrint() {      
        bdhtml=window.document.body.innerHTML;      
        sprnstr="<!--startprint-->";      
        eprnstr="<!--endprint-->";      
        prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);      
        prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));      
        window.document.body.innerHTML=prnhtml;   
        window.print();      
}

过滤打印区域的内容
例如

<!--startprint-->
<div class="content">
    <button class="noprint">预览</button>
    <button class="noprint">打印</button>
      这里是需要打印的内容
        .....
    </div>
<!--endprint-->

上面的预览和打印按钮不希望打印,如果要过滤的话可以做下面的样式设置

        <style type="text/css">
            @media print {
                .noprint{
                    display: none;
                }
            }
        </style>
or

        <style type="text/css" media="print">
            .noprint{
                display: none;
            }
        </style>

两种写法任选其一

分页打印
使用 window.print() 打印时,如果内容超出会自动分页。但是我们如果需要自定义分页范围,如碰到表格分页打印,可以进行如下设置:

<table width="100%"  border="0" cellpadding="0" cellspacing="0"  style="page-break-after:always" > 
</table>

方式二、jqprint()
jqprint是一个基于jQuery编写的页面打印的一个小插件,但是不得不承认这个插件确实很厉害,最近的项目中帮了我的大忙,在Web打印的方面,前端的打印基本是靠window.print()的方式进行打印的,而这个插件在其基础上进行了进一步的封装,可以轻松实现打印网页上的某个区域,这是个亮点。

请注意!很多朋友遇到 Cannot read property 'opera' of undefined 错误问题是juqery版本兼容问题
解决方法:加入迁移辅助插件 jquery-migrate-1.0.0.js可解决版本问题

引入

<script language="javascript" src="jquery-1.4.4.min.js"></script>
<script language="javascript" src="jquery.jqprint-0.3.js"></script>
<script language="javascript">
function  a(){
        $("#ddd").jqprint();
    }
</script>
<div id="ddd">
    <table>
        <tr>
            <td>test</td>
            <td>test</td>
            <td>test</td>
            <td>test</td>
            <td>test</td>
        </tr>
    </table>
</div>
<input type="button" onclick=" a()" value="打印"/>

设置模板打印

$("#printContainer").jqprint({
     debug: false, //如果是true则可以显示iframe查看效果(iframe默认高和宽都很小,可以再源码中调大),默认是false
     importCSS: true, //true表示引进原来的页面的css,默认是true。(如果是true,先会找$("link[media=print]"),若没有会去找$("link")中的css文件)
     printContainer: true, //表示如果原来选择的对象必须被纳入打印(注意:设置为false可能会打破你的CSS规则)。
     operaSupport: true//表示如果插件也必须支持歌opera浏览器,在这种情况下,它提供了建立一个临时的打印选项卡。默认是true
});

附言
另外还可以使用html 标签<object>引入Webbrowser控件(只兼容IE)或者调用windows底层打印,报安全警告,不建议使用(不支持局部打印)
用户在打印网页的时候,页面上会出现网页的名字,页码,链接地址和打印时间,如果用户不需要这些信息,则需要设置用户的网页设置:
具体如下:文件-》页面设置-》将页眉页脚中的代码删除即可。打印出来的文档没有页码信息和链接地址信息
附件为用到的js文件下载。
jquery.jqprint-0.3.js
jquery-2.1.4.min.js
jquery-migrate-1.2.1.min.js

javascripts.zip

关闭win10中IPV6隧道

在cmd命令提示符上点右键,以管理员运行,使用以下3条命令把IPv6的接口关闭即可:

netsh interface teredo set state disable

netsh interface 6to4 set state disabled

netsh interface isatap set state disabled

想要还原IPv6隧道则用以下命令:

netsh interface teredo set state default

netsh interface 6to4 set state default

netsh interface isatap set state default

也可以在网络连接中去掉IPV6的选项,如下图,并重启电脑:
ipv6.png

使用taskkill强制结束进程

在windows系统中有时候会进程卡住、僵死、死锁等用任务管理器无法结束掉程序或进程,可以使用taskkill命令强制结束:
taskkill 命令示例用法:
例如:

    TASKKILL /F /IM cmd.exe /T
    TASKKILL /PID 1000 /T /F
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITYSYSTEM" /IM notepad.exe
    TASKKILL /S system /U domainusername /FI "USERNAME ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
Taskkill /?运行结果:
TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:

使用该工具按照进程 ID (PID) 或映像名称终止任务。
参数列表:
/S        system               指定要连接到的远程系统。
/U       [domain]user     指定应该在哪个用户上下文执行这个命令。
/P        [password]        为提供的用户上下文指定密码。如果忽略,提示输入。
/FI       filter                   应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*
/PID    processid           指定要终止的进程的 PID。使用 TaskList 取得 PID。
/IM     imagename        指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。
/T                                  终止指定的进程和由它启用的子进程。
/F                                  指定强制终止进程。
/?                                  显示帮助消息。

Apache中 Win32DisableAcceptEx 与MaxRequestsPerChild及参数设置

win系统下apache环境,mpm_winnt.c模式,优化参数:
ThreadsPerChild 说明:每个子进程建立的线程数,默认值:64,最大值:1920。网上查询资料建议设置在100-500之间。如服务器性能高,可设置更大值。
MaxRequestsPerChild 说明:每个子进程在其生存期内允许伺服的最大请求数量,也就是最大线程。如果超过限制,子进程会结束。默认值:0。
推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程式在什么时候会出错导致内存泄漏。

线程设置也不是越大越好,太大会导致产生新的子进程后长期空闲,并非最佳优化。要根据服务器的硬件配置、系统环境、访问流量等调试设置。
如果值太小,也会造成apache频繁重启性能降低,在日志中会出现这样的提示:

Process exiting because it reached MaxRequestsPerChild. Signaling the parent

Win32DisableAcceptEx
使用accept()代替AcceptEx()接受网络链接。AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。
如果apache的error.log里面有类似报错,

[warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.

可以直接禁用AcceptEx,重启 Apache

<IfModule mpm_winnt.c>
  Win32DisableAcceptEx
  ......
</IfModule>

设置SQL Server最大内存使用量

SQLServer2008版本默认安装以后内存最大使用量为2147483647,基本会把系统内存耗尽,查看当前内存使用情况:

SELECT 
  physical_memory_in_use_kb/1024 AS sql_physical_memory_in_use_MB, 
    large_page_allocations_kb/1024 AS sql_large_page_allocations_MB, 
    locked_page_allocations_kb/1024 AS sql_locked_page_allocations_MB,
    virtual_address_space_reserved_kb/1024 AS sql_VAS_reserved_MB, 
    virtual_address_space_committed_kb/1024 AS sql_VAS_committed_MB, 
    virtual_address_space_available_kb/1024 AS sql_VAS_available_MB,
    page_fault_count AS sql_page_fault_count,
    memory_utilization_percentage AS sql_memory_utilization_percentage, 
    process_physical_memory_low AS sql_process_physical_memory_low, 
    process_virtual_memory_low AS sql_process_virtual_memory_low
FROM sys.dm_os_process_memory;  

SQL.png
设置当前最大内存使用量为16G

sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'max server memory', 16384;  
GO  
RECONFIGURE;  
GO

直接在SQL查询器里面执行即可,一般根据系统内存大小设置,至少保留2--3G内存给操作系统使用;
参考:https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2017
也可以在登陆SQLServer以后,右键服务器属性--内存,选择使用AWE分配内存、最小服务器内存、最大服务器内存等参数,如下图,最后确定即可;
memery.png

SVN数据迁移Linux到Windows机器

VN版本信息:
Linux: Subversion版本 1.6.11 (r934486)

Windows : VisualSVN Server Manager 2.7.6

使用工具
Putyy
WinScp

1.从Linux系统备份仓库

使用Putty连接到Linux,进入到SVN仓库目录,

执行命令进行备份:

svnadmin dump /home/subversion/repos > svnback20141114
/home/subversion/repos 要备份的仓库
svnback20141114 备份文件名

备份过程需要等待一会。

2.将仓库备份导入到Windows
备份完成以后使用WinScp将备份文件(svnback20141114)拷贝到Windows中。
打开cmd,进入仓库目录
执行命令创建新仓库:

svnadmin create 200SVN

执行命令将备份导入新仓库:
svnadmin load 200SVN < c:\svnback20141114

200SVN 导入的仓库名

c:ssvnback20141114 备份文件
漫长的等待后迁移完毕!
一般或者说大部分都是Windows到Linux,但是也有部分奇葩,是从L到W;
VIA: https://my.oschina.net/calvin6/blog/344693

sublime2/3 安装package control

sublimetext官网地址https://www.sublimetext.com,下载安装后启动,默认没有安装Package Control即包管理器,安装步骤如下:
直接按Ctrl+` 键,在控制台输入:如下代码,回车,会自动安装Package Control
sublimetext2:

import urllib2,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')

sublimetext3:

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

如果安装失败,可以用下面这个方法:
下载这个文件

https://packagecontrol.io/Package%20Control.sublime-package

将下载回来的文件重命名为 Installed Packages
复制文件到Sublime的插件目录
一般目录地址为

C:\Users\username\AppData\Roaming\Sublime Text 3\Packages

最后重启Sublime即可;

Navicat链接SQLServer时注意事项

Navicat连接远程sqlserver数据库需要安装sqlserver客户端,不过navicat会自动从sqlserver服务器上去下载安装软件,安装过程也是一直点下一步即可,其中“主机名”中要注意了。我们可以填写:IP,端口号的形式也可以直接填写IP。
如果SQLServer修改了端口号,就要以 IP,端口号 的形式链接,默认SqlServer 的1433端口可以不用带;
如下图示:
linke.png
IP后面跟端口号,中间用逗号链接相连,切记。

Windows2008安装SVN报错“Сertificate key usage violation in Subversion clients built against GnuTLS VisualSVN”

Windows2008安装SVN报错“Сertificate key usage violation in Subversion clients built against GnuTLS VisualSVN”解决办法:
修改注册表键值:
Add the following registry value to the Windows registry:
for 32-bit system:

[HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Server]
"CreateGnuTLSCompatibleCertificate"=dword:00000001

for 64-bit system:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VisualSVN\VisualSVN Server]
"CreateGnuTLSCompatibleCertificate"=dword:00000001

Start VisualSVN Server Manager.
Go to Action | Properties | Certificate.
Click Change certificate... and follow the wizard instructions to generate a new self-signed certificate.
The certificate will be generated without the 'Key Usage' extension and will be compatible both with GnuTLS and OpenSSL.

VIA:https://www.visualsvn.com/support/topic/00056/

Google Fonts替换为中科大加速

fonts.googleapis.com 在国内访问不稳定,360之前曾经提供过加速,但是后来下线了,鄙视下,对应关系如下:
fonts.gstatic.com fonts-gstatic.proxy.ustclug.org
fonts.googleapis.com fonts.proxy.ustclug.org
ajax.googleapis.com ajax.proxy.ustclug.org
themes.googleusercontent.com google-themes.proxy.ustclug.org
secure.gravatar.com gravatar.proxy.ustclug.org
直接替换即可。

wget下载中文文件名乱码解决

引起乱码的原因主要是因为编码的问题,中文文件名有些编码是GBK或者gb2312,在linux下载下来以后就乱码了,
1.jpg
下载的时候带上参数--restrict-file-name=ascii或--restrict-file-names=nocontrol

用下面的py脚本转换下,在windows下就能正常显示中文了

import os, urllib, sys, getopt
 
class Renamer:
 
    input_encoding = ""
    output_encoding = ""
    path = ""
    is_url = False
 
    def __init__(self, input, output, path, is_url):
        self.input_encoding = input
        self.output_encoding = output
        self.path = path
        self.is_url = is_url
 
    def start(self):
        self.rename_dir(self.path)
 
    def rename(self, root, path):
        try:
            if self.is_url:
                new = urllib.unquote(path).decode(self.input_encoding).encode(self.output_encoding)
            else:
                new = path.decode(self.input_encoding).encode(self.output_encoding)
            os.rename(os.path.join(root, path), os.path.join(root, new))
        except:
            pass
 
    def rename_dir(self, path):
        for root, dirs, files in os.walk(path):
            for f in files:
                self.rename(root, f)
 
            if dirs == []:
                for f in files:
                    self.rename(root, f)
            else:
                for d in dirs:
                    self.rename_dir(os.path.join(root, d))
                    self.rename(root, d)
def usage():
    print '''This program can change encode of files or directories.
    Usage:   rename.exe [OPTION]...
    Options:
        -h, --help                  this document.
        -i, --input-encoding=ENC    set original encoding, default is UTF-8.
        -o, --output-encoding=ENC   set output encoding, default is GBK.
        -p, --path=PATH             choose the path which to process.
        -u, --is-url                whether as a URL
    '''
 
 
def main(argv):
    input_encoding = "utf-8"
    output_encoding = "gbk"
    path = ""
    is_url = True
 
    try:
        opts, args = getopt.getopt(argv, "hi:o:p:u", ["help", "input-encoding=", "output-encoding=", "path=", "is-url"])
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage()
            sys.exit()
        elif opt in ("-i", "--input-encoding"):
            input_encoding = arg
        elif opt in ("-o", "--output-encoding"):
            output_encoding = arg
        elif opt in ("-p", "--path"):
            path = arg
        elif opt in ("-u", "--is-url"):
            is_url = True
 
    rn = Renamer(input_encoding, output_encoding, path, is_url)
    rn.start()
 
if __name__ == '__main__':
    main(sys.argv[1:])

运行脚本:
xxx.py -i utf-8 -o gbk -p PATH -u
运行以后就可以批量更改PATH目录下面的文件名了;
或者用RenamePro.zip Rename Pro更名工具批量操作下·

让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap 提高兼容性

一些挺好看的H5模板和Bootstrap模板在Chrome/Firefox/Safari下都正常,但是在IE下浏览面目全非,整理了下解决方法:

一、引入依赖的Javascript:

https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.js
https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js

这2个Javascript 是在本站开放CDN 上,您可以复制地址直接使用,安全和稳定性不用担心。如果担心的,本博客下附件可以下载,另外要引用 Jquery,根据版本引入

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>

http://www.bootcdn.cn/jquery/这里有各版本的jquery

---阅读剩余部分---

Windows下查看端口对应的进程及kill

查看所有进程占用的端口
netstat –ano 查看所有进程

查看占用指定端口的程序
netstat –ano|findstr "指定端口号"

通过任务管理器杀死相关的进程
方法一:使用任务管理器杀死进程
打开任务管理器->查看->选择列->然后勾选PID选项,回到任务管理器上可以查看到对应的pid,然后结束进程

方法二:使用命令杀死进程
1>首先找到进程号对应的进程名称
tasklist|findstr 进程号
如:tasklist|findstr 80

2>然后根据进程名称杀死进程
taskkill /f /t /im 进程名称
如:taskkill /f /t /im /qq.exe

最新

分类

归档

评论

  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...
  • aliang: 默认不屏蔽估计开发团...
  • 山野愚人居: PHP既然允许直接使...
  • aliang: 最下面有github地址·

其它