<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[anguuan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/anguuan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; anguuan]]></copyright><item><title><![CDATA[解决用 VirtualBox 虚拟 Ubuntu 无法使用共享粘贴板的问题]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/105015612</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/105015612</guid><author>anguuan</author><pubDate>Sat, 21 Mar 2020 19:30:50 +0800</pubDate><description><![CDATA[VirtualBox 有一个共享粘贴板功能，理论上安装了增强功能后就可以使用，但是我测试发现，尽管服务已启动，依然无法正常使用。后来在这里找到了解决方法。

在虚拟机里安装以下软件包后，重启即可：

virtualbox-guest-utils
	virtualbox-guest-x11
	virtualbox-guest-dkms
...]]></description><category></category></item><item><title><![CDATA[Windows 下使用 mklink 命令建立软链接]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/105013882</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/105013882</guid><author>anguuan</author><pubDate>Sat, 21 Mar 2020 17:52:12 +0800</pubDate><description><![CDATA[众所周知，Linux 下可以使用 ln -s 来创建软链接。Windows 的 cmd 提供了一个类似功能的命令：mklink。这个命令的官方说明如下：


MKLINK [[/D] | [/H] | [/J]] Link Target

 /D 创建目录符号链接。默认为文件
 符号链接。
 /H 创建硬链接而非符号链接...]]></description><category></category></item><item><title><![CDATA[使用 VirtualBox 安装 Ubuntu]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104865193</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104865193</guid><author>anguuan</author><pubDate>Sat, 14 Mar 2020 18:41:26 +0800</pubDate><description><![CDATA[下载

由于官方网站的服务器在境外，国内访问可能比较慢，可以到清华大学的镜像上下载。这里我下载的文件有：

VirtualBox-6.1.4-136177-Win.exe （VirtualBox 安装包）

Oracle_VM_VirtualBox_Extension_Pack-6.1.4-136177.vbox-extpack（VirtualBox 扩展包）

ubuntu-19.10-desk...]]></description><category></category></item><item><title><![CDATA[Python socket 编程入门]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104801329</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104801329</guid><author>anguuan</author><pubDate>Wed, 11 Mar 2020 18:44:24 +0800</pubDate><description><![CDATA[什么是 socket？

可以简单地认为，socket 就是操作系统对于 TCP 连接的封装。通过 socket，我们可以进行简单可靠的网络传输。

目标

我们打算编写这么一个简单的程序：

客户端与服务端建立连接，端口为6666。
	服务端发送信息，询问名字。
	客户端发送名字信息。
	服务端发送欢迎信息。
	断开连接，客户端退出。
编写客户端

客户端的代码比较简单。

client.py
...]]></description><category></category></item><item><title><![CDATA[用 VS Code 进行 Python 单元测试]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104782857</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104782857</guid><author>anguuan</author><pubDate>Tue, 10 Mar 2020 20:55:36 +0800</pubDate><description><![CDATA[配置

首先，你的 VS Code 要安装 Python 的插件，单元测试功能默认是关闭的，需要在 settings.json 里面添加一行："python.testing.pytestEnabled": true。这里我使用的是第三方的 pytest 模块，你也可以使用标准库里的 unittest："python.testing.unittestEnabled": true 或者另外一个第三方模...]]></description><category></category></item><item><title><![CDATA[用 Python 实现设计模式（1）：单例模式]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104755766</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104755766</guid><author>anguuan</author><pubDate>Mon, 09 Mar 2020 17:10:40 +0800</pubDate><description><![CDATA[简介

顾名思义，单例（singleton）就是只有一个实例。单例模式的要点是：一个类只能有一个实例，这个实例在第一次调用的时候创建，在程序退出的时候销毁。

实现

我们可以利用 Python 的 __new__ 方法轻松实现单例模式。__new__ 方法在 __init__方法之前调用，并且 __init__ 方法的 self 参数就是 __new__ 方法的返回值，其他参数与 __new__...]]></description><category></category></item><item><title><![CDATA[Python 的 with 语法糖]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104747556</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104747556</guid><author>anguuan</author><pubDate>Mon, 09 Mar 2020 15:24:56 +0800</pubDate><description><![CDATA[Python 内置了 sqlite3 模块，可以方便地调用 SQLite 数据库。


import sqlite3

conn = sqlite3.connect('test.db')
cur = conn.cursor()
cur.execute('CREATE TABLE students (id BIGINT PRIMARY KEY NOT NULL, name VARCHAR(10) N...]]></description><category></category></item><item><title><![CDATA[用暴力手段解决电脑关机后自动重启的问题]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104722560</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104722560</guid><author>anguuan</author><pubDate>Sat, 07 Mar 2020 21:23:18 +0800</pubDate><description><![CDATA[我的电脑有个顽疾：经常关机后会自动重启，带来很多不便。后来，我发现，自动重启的现象与电脑使用时间有关，只要不用太久，就不会有这个问题，所以，我就写了一个简单的 Python 脚本，来应付这个问题。源代码如下：


import wx
import time
import os
from queue import Queue
from threading import Thread

class T...]]></description><category></category></item><item><title><![CDATA[解决 Firefox 开机自动启动的问题]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104717312</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104717312</guid><author>anguuan</author><pubDate>Sat, 07 Mar 2020 16:48:07 +0800</pubDate><description><![CDATA[在 Windows 10 下，如果关机时，Firefox 没有正常关闭，重启后，Firefox 会自动开启。这似乎是 Windows 10 的一个特性，可以通过调整 Firefox 的设置解决，具体方法参见：https://support.mozilla.org/zh-CN/kb/%E9%87%8D%E5%90%AF%20Windows%20%E5%90%8E%20%20Firefox%20%E8...]]></description><category></category></item><item><title><![CDATA[Git 的基本操作]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104698636</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104698636</guid><author>anguuan</author><pubDate>Fri, 06 Mar 2020 16:58:38 +0800</pubDate><description><![CDATA[安装 Git

Linux 用户可以自行解决。

Windows 用户可以在这个网页上下载，要使用 Git 时，打开项目所在文件夹，右键菜单选择“Git Bash Here”，在弹出的控制台里操作，最好事先了解一下 Linux 的常用命令，这里不赘述。

创建仓库

要创建一个仓库很简单，在项目所在目录里，输入 git init 即可。输入 ls -a，你会看到文件夹里多了一个 .git 文件夹，...]]></description><category></category></item><item><title><![CDATA[解决 selenium 加载网页阻塞的问题]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104685099</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104685099</guid><author>anguuan</author><pubDate>Thu, 05 Mar 2020 21:55:28 +0800</pubDate><description><![CDATA[selenium 的 webdriver 对象有一个 get 方法，可以打开指定的 URL，但是它是阻塞的，除非整个网页都加载完，否则不会返回。这样有两个弊端：一、很多时候，我们不需要整个网页都加载出来。二、如果网页因某种原因卡住，我们的程序也会卡住。解决这个问题的方法，就是用 set_page_load_timeout 函数和 WebDriverWait。

set_page_load_time...]]></description><category></category></item><item><title><![CDATA[Python selenium库的基本使用]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104669471</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104669471</guid><author>anguuan</author><pubDate>Thu, 05 Mar 2020 10:52:31 +0800</pubDate><description><![CDATA[selenium 最初是一个用于自动化调试网页的工具，但是后来人们发现，这东西可以用来做爬虫，抓取需要 js 脚本的网页。我们可以使用 pip 直接安装 selenium：pip install selenium。

selenium 必须和浏览器配合使用，我喜欢 Firefox，所以这里我以 Firefox 作为例子，其他浏览器操作类似。

准备材料

https://portableapps....]]></description><category></category></item><item><title><![CDATA[用Python实现柯里化（currying）]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104655217</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104655217</guid><author>anguuan</author><pubDate>Wed, 04 Mar 2020 15:52:57 +0800</pubDate><description><![CDATA[学过Haskell等函数式编程语言的人，应该对于柯里化不陌生，简单地说，柯里化就是把多元函数化成一元函数。比如，下面的 add 函数是二元函数。


def add(a, b):
    return a + b

我们可以换一种写法：


def add2(a):
    def g(b):
        return a + b
    return g

# 输出7
print(add(3...]]></description><category></category></item><item><title><![CDATA[Python的闭包与函数装饰器]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104648093</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104648093</guid><author>anguuan</author><pubDate>Wed, 04 Mar 2020 10:34:57 +0800</pubDate><description><![CDATA[闭包

所谓闭包，简单的说就是在函数 f 里面定义另一个函数 g，然后把 g 作为 f 的返回值。由于 Python 里面函数是一等公民（可以看作对象，随意赋值），所以我们可以很方便地实现闭包：


def multiply(a):
    def f(b):
        return a * b
    return f

l = (1, 2, 3, 4, 5)
// 输出(2, 4, 6,...]]></description><category></category></item><item><title><![CDATA[一个脑洞：谁说Python的缩进问题没有解决办法呢？]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104640925</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104640925</guid><author>anguuan</author><pubDate>Tue, 03 Mar 2020 20:48:12 +0800</pubDate><description><![CDATA[众所周知，Python用缩进的方式表示代码块，这带来了诸多不便，但是，这个问题真的没有解决的办法吗？我想，这么做可能可以缓解这个问题。


end = None

def main():
    for i in range(10):
        print(i)
    end
end

if __name__ == '__main__':
    main()
end


只需要在开头加一...]]></description><category></category></item><item><title><![CDATA[用Visual Studio 2017创建dll文件]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104640541</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104640541</guid><author>anguuan</author><pubDate>Tue, 03 Mar 2020 20:40:16 +0800</pubDate><description><![CDATA[首先打开VS 2017，新建一个“动态链接库（DLL）”项目。



创建完之后，我们可以看见默认有这些文件：



这些我们暂时都不用管，保持原样就好。我们再创建一个.h和.cpp文件（这里我命名为dll.h和create_dll.cpp）

dll.h


#pragma once

// 创建DLL项目的时候，VS会默认添加一个“&lt;你的项目名称&gt;_EXPORTS”的预处理器头，
...]]></description><category></category></item><item><title><![CDATA[解决Windows开启高DPI缩放后，wxPython程序显示模糊的问题]]></title><link>https://blog.youkuaiyun.com/anguuan/article/details/104640210</link><guid>https://blog.youkuaiyun.com/anguuan/article/details/104640210</guid><author>anguuan</author><pubDate>Tue, 03 Mar 2020 20:21:25 +0800</pubDate><description><![CDATA[最近用wxPython编写了一个简单的GUI程序，由于我用的是1080p的显示器，所以Windows 10默认开启了150%的缩放，结果打开程序后，界面大小正常，但是很模糊（如下图），我原本以为是wxPython不支持高DPI，但是后来发现其实是Windows 10的问题。



解决方法：把程序用Pyinstaller打包成可执行文件，然后右键，在设置里开启由“应用程序”控制缩放即可。如果不打包...]]></description><category></category></item></channel></rss>