突突唧之家

我的疑问 & 我的解决方案

问题

源代码

采用居中对齐,如左图

print('{:^9}\t'.format(string_var), end = '')

采用左对齐,如右图

print('{:<9}\t'.format(string_var), end = '')

运行结果

未能正确对齐。

阅读全文 »

Vue.js 路由 history mode 中页面无法渲染的原因

用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。

一般开发的单页应用的 URL 都是带有 # 号的 hash 模式,因为整个应用本身而言就只有一个 HTML ,其他的都是通过 router 来渲染。如果因为业务需要,或者单纯是觉得带 # 号不美观,那么可以使用 history 模式,简单而言就是在 router 的配置文件 index.js 中添加如下一行代码

mode: 'history'

没错,这样 URL 不再会有 # 号,你会发现整个地址栏回到了你熟悉的那个样子,不过接下来介绍的就非常的重要了。

404 错误

在 history mode 下,如果直接通过地址栏访问路径,那么会出现 404 错误,这是因为调用了 history.pushState API 所以所有的跳转之类的操作都是通过 router 来实现的。要解决这个问题很简单,只需要在后台配置如果 URL 匹配不到任何静态资源,就跳转到默认的 index.html 。以 Apache2 为例,具体配置如下

1
2
3
4
5
6
7
8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

每次点击链接都要刷新页面的问题

众所周知,开发单页应用就是因为那丝般顺滑的体验效果。出现这个的原因是因为使用了 window.location 来跳转,只需要使用使用 router 提供的方法,就能够解决这个问题:

main.js 中配置中将 router 绑定到全局

Vue.prototype.router = router

之后都使用如下的方式来控制跳转

this.router.push('xxx')

PyPI 镜像在每次同步成功后间隔 5 分钟同步一次。

临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

注意,simple 不能少, 是 https 而不是 http

设为默认

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果您到 pip 默认源的网络连接较差,临时使用镜像站来升级 pip:

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip

该文章内容已过期不再适用

npm 现在的下载速度已经足够快,无需再使用镜像源。

淘宝 npm 地址

有很多方法来配置 npm 的 registry 地址,下面根据不同情境列出几种比较常用的方法。以淘宝 npm 镜像举例。

临时使用

npm --registry https://registry.npm.taobao.org install xxx

持久使用

npm config set registry https://registry.npm.taobao.org

配置后可通过下面方式来验证是否成功

npm config get registry

通过 cnpm 使用

npm install -g cnpm --registry=https://registry.npm.taobao.org

该文章内容已过期不再适用

尽量不要使用数据库 root 用户。建议为每个数据库应用建立单独的用户。

在使用 MySQL/MariaDB 时,如果使用的是系统 root 用户,可以直接在控制台中输入

mysql

免密码使用数据库 root 用户登录数据库。

原因

user 表中有一列叫做 plugin

select user, authentication_string, plugin from user;
1
2
3
4
5
6
+------+-----------------------+-------------+
| user | authentication_string | plugin |
+------+-----------------------+-------------+
| root | * | auth_socket |
+------+-----------------------+-------------+
1 rows in set (0.00 sec)

其中的 auth_socket 让你能方便地作为 root 用户从控制台免密码登录。但这同时也禁用了密码登录,而且你不能使用其它客户端进行登录。

阅读全文 »

该文章内容已过期不再适用

建议使用 Conda 安装任意版本的 Python。

系统准备

安装一些必要的依赖包

apt install libffi-dev libbz2-dev libssl-dev
apt install libreadline7 libreadline-dev libsqlite3-dev
apt install libncurses5 libncurses5-dev libncursesw5
apt install libgdbm-dev liblzma-dev uuid-dev zlib1g-dev

如果 lib 名称不确认的话,可以使用

apt-cache search

查找。

另外可能还需要安装 git, g++, make

apt install git g++ make
阅读全文 »

该文章内容已过期不再适用

建议使用 Conda 安装任意版本的 Node.js。

卸载已安装的软件包

如果以前安装过老版本的 nodejs 和 npm ,先进行卸载。

apt remove npm nodejs --purge

进入 /usr/local/bin/usr/bin 目录中,若有 node 或者 npm 文件,全部删除。

使用 NodeSource 在线安装

NodeSource 仓库地址

Node.js v13.x:

curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -

为了加快安装速度,可以切换成清华源(此步可跳过)。

sudo nano /etc/apt/sources.list.d/nodesource.list

将内容修改为:

deb https://mirrors.tuna.tsinghua.edu.cn/nodesource/deb_13.x bionic main
deb-src https://mirrors.tuna.tsinghua.edu.cn/nodesource/deb_13.x bionic main

其中, Ubuntu 的版本 bionic 请自行根据实际修改。

最后安装 nodejs :

sudo apt update
sudo apt install -y nodejs

首先编译一个 release 版本,然后把生成的可执行文件拷贝到一个新的文件夹下面。

接着找到你的 windeployqt.exe 文件,例如 C:\Qt\5.9.6\mingw53_32\bin\windeployqt.exe

将 MinGW 添加到环境变量,例如路径 C:\Qt\Tools\mingw530_32\bin

打开命令行窗口,然后进入存放你的可执行文件的文件夹,执行命令:

C:\Qt\5.9.6\mingw53_32\bin\windeployqt.exe <可执行文件的文件名> --release

这样必要的文件就被放进了该文件夹。

以下步骤均基于文件无冲突的情况,如果出现冲突,需要先解决冲突才能继续。

添加上游仓库:

git remote add upstream <上游仓库 URL>

拉取上游仓库(可选使用 rebase 参数):

git pull --rebase upstream master

将本地仓库上传到个人远程仓库:

git push origin master