米米的博客

做了一点微小的工作

以下操作中的快捷键在 Windows 下有效,macOS 可能需要用 Command 代替 Ctrl
原始素材尽量选择人物,最好不要全身。

笔者以下面这张梅西庆祝的照片为例。

调整对比度

打开素材,Ctrl+j 复制图层;选定新图层,Ctrl+m 打开曲线,调大对比度。

阅读全文 »

如果要在网页上显示一些随机的语句,获得一些人生的经验,你会选择什么?
也许,一言是一个很好的选择,它可以提供一些动漫中的台词,或是网络上的各种小段子。
在前面的文章有趣的 Linux 命令行工具中提到的 fortune 命令或许也可以满足需求,pure-ftpd 就可以设置在连接成功时显示随机的来自 fortune 的语句。
那除此之外呢?历史上的今天是一个不错的方案。当你访问一些门户网站的首页,有时会看到这样的栏目。它也是一些百科全书网站,比如维基百科的传统。事实上,在 Mac 上就自带了一个小型的「历史上的今天」数据库,执行:

1
cat /usr/share/calendar/calendar.history

就可以看到。
这篇文章将介绍如何搭建一个提供「历史上的今天」信息的 API。

建立数据库

首先,建立 MySQL 数据库和数据表,用于存储爬取的信息。这里数据库和数据表名都以 event 为例。

1
2
3
4
5
6
7
8
9
10
CREATE DATABASE event;
USE event;
CREATE TABLE event (
id int(10) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
type int(1) DEFAULT NULL,
year varchar(6) DEFAULT NULL,
date varchar(6) DEFAULT NULL,
info text DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
QUIT;

获取数据

数据来源是维基百科,使用 Python 爬取数据,并存入数据库中。项目地址:TodayInHistory-Crawler,可以打包下载所有文件。

下载程序源码后,进入目录并安装依赖:

1
pip3 install -r requirements.txt

config.py 中的 usernamepassworddbnametablename 分别是你的登录用户名、密码、数据库名和数据表名。将它们修改成和之前创建的数据库和数据表名一致。

然后,运行 spider.py,程序将会开始爬取数据。程序会用 try except 处理特殊字符(非 UTF-8 范围)的问题,并将失败的项目记录在 failed.txt 中。

查询数据

比较简单的方式是按照 json 格式进行输出,server.py 给出了一种使用 Python 的方案,运行后就可以访问 Flask 创建的服务器了。

阅读全文 »

本文将介绍一种在 macOS 上读写 NTFS 磁盘的方法,通过它可以方便的在不同系统中传输文件。默认情况下,macOS 是无法向 NTFS 磁盘写入的 —— 这个功能由于种种原因被禁用了。我们使用一种 Hack 的方法将其启用即可。

首先,打开磁盘工具,查看 NTFS 磁盘的设备路径。例如,disk3s1 就对应了 /dev/disk3s1。也可以通过执行

1
diskutil list

来查看 NTFS 磁盘的分区名,也就是 IDENTIFIER 这一列中对应的名字,例如 /dev/disk3s1

如果 macOS 已经通过只读模式挂载了 NTFS 磁盘,还需要先卸载它。在磁盘工具中选中硬盘并将其卸载即可。

随后,根据所使用的不同系统版本,可以使用不同的工具重新挂载 NTFS 磁盘。

macOS Monterey 及更早版本

在 Monterey 和更早的 macOS 上,可以利用系统自带的 mount_ntfs 工具来挂载 NTFS 磁盘。具体方法是,执行以下命令

1
2
sudo mkdir /Volumes/disk3s1
sudo mount -t ntfs -o rw,auto,nobrowse /dev/disk3s1 /Volumes/disk3s1

/dev/disk3s1 根据实际情况替换。这里的 nobrowse 是为了避免挂载上来的还是只读模式,但是它同时会导致磁盘不可见,也就是挂载后不会在桌面和 Finder 中显示,需要手动到 /Volumes 下打开。

如果一切正常的话,就可以愉快的使用了。

macOS Ventura 及之后的版本

在 Ventura 及之后的 macOS 上,mount_ntfs 被移除了,我们需要使用第三方工具才能够实现对 NTFS 磁盘的读写。一个免费的方案是 ntfs-3g,我们可以通过 Homebrew 安装它,然后手动挂载 NTFS 磁盘。具体方法是

1
2
3
brew tap gromgit/homebrew-fuse
brew install --cask macfuse
brew install ntfs-3g-mac

然后执行以下命令

1
2
sudo mkdir /Volumes/disk3s1
sudo ntfs-3g /dev/disk3s1 /Volumes/disk3s1 -olocal -oallow_other -o auto-xattr

这里的设备名同样需要根据实际情况替换。
需要注意,ntfs-3g 第一次启动时需要安装内核拓展,需要在系统偏好设置中允许安装,并重启系统。之后就可以正常使用了。


参考文章:How to Write NTFS Drives on macOS Monterey

本文更新于 2021 年 9 月 14 日:
原先介绍的方法需要修改 /sbin/mount_ntfs,不太优美。笔者找到了一个修改 /etc/fstab 的方法,可以在 macOS Big Sur 上使用。

本文更新于 2022 年 2 月 26 日:
修改 /etc/fstab 的方法在 macOS Monterey 上又不好使了,改为手动 mount

本文更新于 2024 年 1 月 18 日:
macOS Ventura 移除了 mount_ntfs,改为使用 ntfs-3g。

准备工作

下面列出了笔者测试成功的环境,使用其它的版本可能出现不可预料的情况。

硬件

  • 显卡
    根据 Tensorflow 官网上对于 GPU 支持的描述,需要 CUDA® 计算能力为 3.5 或更高的 NVIDIA® GPU 卡。GeForce 900 系列及更新的 N 卡都能满足这一点,如果不确定的话,可以在官网上查看:CUDA GPUs。笔者使用了一块 NVIDIA GeForce RTX 2070 进行测试。

  • 其它
    其它硬件达到主流配置即可。

软件

  • Windows 系统
    由于 macOS Mojave 的 N 卡驱动迟迟没有更新(据说是苹果已经抛弃了 N 卡,未来很有可能不会再更新驱动);并且 Tensorflow 官方已经不再推出适配 macOS 的 tensorflow-gpu 了,需要自己编译;因而使用 Windows 或者 Linux 系统会是更好的选择。笔者使用的是 Windows 10。

  • 显卡驱动程序
    在连接到网络时,Windows 10 会自动下载安装显卡驱动,但可能不是最新版本。建议通过 GeForce Experience 管理驱动程序。

  • CUDA
    tensorflow-gpu 依赖于 CUDA,需要到 NVIDIA 官网上的 CUDA Zone 下载。Tensorflow 官网中会给出支持的 CUDA 版本号,下载时选择对应的版本即可(例如 v10.0),因为最新的版本可能不被 tensorflow 所支持。历史版本可以在这里查看:CUDA Toolkit Archive

  • cuDNN
    cuDNN 的全称为 NVIDIA CUDA® Deep Neural Network library,是 NVIDIA 专门针对深度神经网络(Deep Neural Networks)中的基础操作而设计基于 GPU 的加速库。这也是一个重要依赖,需要准备好。其主页是 NVIDIA cuDNN,下载需要注册账号,不过也可以选择微信快捷登陆。同样需要注意的是,要正确选择与 CUDA 对应的 cuDNN 版本。

  • Python
    笔者使用的是 Python 3.7.0。建议从 Python 官网下载安装包,安装时记得勾选将 Python 添加到环境变量中,确保能够通过 PowerShell 执行 pythonpip 即可。Microsoft Store 中也有 Python,但是安装路径太长,可能在使用 pip 时遇到问题。

  • tensorflow-gpu
    安装 tensorflow-gpu 的方法也有很多,例如 Anaconda 或者 pip。如果不想折腾环境,直接从这里找一个 wheel 就行了:tensorflow-gpu · PyPI。需要根据自己的系统和 Python 版本选择,例如 tensorflow_gpu-1.13.1-cp37-cp37m-win_amd64.whl

安装

安装 CUDA

安装过程并不复杂。运行从 NVIDIA 官网上下载的 CUDA 安装程序,将其安装在默认目录下即可。以 10.0 版本为例,安装成功后,相关组件会出现在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 目录下。

安装 cuDNN

解压 cuDNN 的安装包,会得到一个文件夹,将其打开后,可以看到名为 binincludelib 的子目录。而在前面所说的 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 目录下也有这样几个子目录。因此,直接将 cuDNN 的相关文件复制合并进对应的目录即可。

安装 tensorflow-gpu

以 PowerShell 为例,将 CUDA 相关组件添加至环境变量:

1
$Env:path=$Env:Path+";C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;"

完成后,cd 进入下载的 whl 文件所在目录,使用 pip 安装即可

1
pip install tensorflow_gpu-1.13.1-cp37-cp37m-win_amd64.whl

pip 会自动下载所需的依赖。

运行

如果一切顺利,打开 Python,执行

1
2
3
4
import tensorflow as tf
hello = tf.constant("Hello, TensorFlow!")
sess = tf.Session()
print(sess.run(hello))

不报错的话,就安装成功了。


本文更新于 2020 年 12 月 8 日:
Tensorflow 2.0 的安装方式更加简单。在安装好支持的 CUDA(现为 v10.1)和 cuDNN 后,可以直接执行

1
pip install tensorflow

测试的方法是

1
2
3
import tensorflow as tf
tf.test.is_built_with_cuda()
tf.config.list_physical_devices("GPU")

如果提示动态库加载失败,可以重启计算机或手动设置环境变量。

在 WordPress 中,文章、用户的 ID 都是通过 AUTO_INCREMENT 分配的,如果要改变其值,可以在 wp_usermetawp_users 数据表中执行:

1
2
3
ALTER TABLE `wp_usermeta`
MODIFY `umeta_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=177;
COMMIT;

以及

1
2
3
ALTER TABLE `wp_users`
MODIFY `ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
COMMIT;

AUTO_INCREMENT 根据你自己的情况,修改为当前的行数即可。

对于存储评论信息的 wp_comments 也是类似的。

0%