MySQL

使用参数化查询

参数化查询(prepared statement / parameterized statement)的意义主要有两点,一是可以有效防止 SQL 注入攻击,二是可以减少每次执行 SQL 语句的所需要的解析语句开销。 关于第一点的理解,很多人认为是语句在传给数据库服务器之前,客户端将语句里的参数转义并发送,虽然这样可以有效防止 SQL 注入,但这并不是真正的参数化查询。 参数化查询是指数据库服务器在解析语句时,只解析非参数部分,参数部分采用模板参数占位的形式,在每次执行语句时,将某些常量值替换至相应的模板参数位置。 这样一来,数据库服务器不会将参数的内容视为 SQL 的一部分来处理,而是在数据库完成 SQL 编译后,才将参数套用并运行。解析器编译执行相同的语句时,

  • Kickshaw
    Kickshaw
3 min read
Flask

Flask 上下文机制解析

在用 Flask 写视图代码的时候经常会用到诸如 request、session 和 g 这类看上去是全局变量的东西,这些变量往往带有处理请求需要用到的比如请求对象、会话参数等信息,允许我们访问一些请求信息或者全局的信息。而实现这些的就是 Flask 特殊的 Context(上下文)机制。 本地上下文 from flask import Flask, request app = Flask(__name__) @app.route('/', methods=['GET']) def

  • Kickshaw
    Kickshaw
6 min read
Kernel

迫于 Meltdown, 升级内核

转自 Solidot:Google Project Zero 和奥地利格拉茨技术大学等机构的研究人员披露了三个处理器高危漏洞,分别编号为 CVE-2017-5753(Variant 1)、CVE-2017-5715(Variant 2)和 CVE-2017-5754(Variant 3),前两个漏洞被称为 Spectre,后一个漏洞被称为 Meltdown,Spectre Variant 1 影响 AMD,英特尔和 ARM 处理器,而所有三个漏洞都影响英特尔处理器,研究人员已经开发出了概念验证的漏洞利用。AMD 和

  • Kickshaw
    Kickshaw
2 min read
Linux

在 Linux 上使用 Tshock 搭建 Terraria 服务器

WARNING: 当心沉迷挖矿不可自拔!为什么要使用独立服务器?当然是为了能够多人同时在线游戏,并且让服务器永远在线,减轻本地计算机负担,也不用担心管理员下线后其他人就玩不了了。运行前准备官方给出的内存要求是 2GB,并且是单独给予 Tshock 而不是服务器总值,但实测 swap 也可以,不过至少也需要 1GB,否则创建大型世界时内存有泄漏的 Bug。另外为了 Tshock 进程在后台运行,可以使用 tmux 或 screen 等工具,这里不再赘述。接着在这里下载最新版本的 Tshock 压缩包至服务器并解压。由于 Tshock

  • Kickshaw
    Kickshaw
4 min read
Domain

失而复得的域名

把之前在 DO-SFA 的 VPS 换到 ConoHa-Tokyo 了,顺带捎两手准备把过期一个月的域名给续了,也没仔细看 Namecheap 的写的是什么就直接点交钱续一年了,没想到点的是一个 Transfer in 转入域名,要求我提供上家注册商的 Auth code,懵了。难道过期了一个月就被别人注册了吗?但是域名显示注册商还是 NC,遂找人工客服,被告知被人注册,还问我是否有其他帐号…… 本想算了换个域名吧,但是一查 Whois 信息显示是我的信息,原来的 Whois guard 也没有了,

  • Kickshaw
    Kickshaw
1 min read