2012年12月

JSONKit杂记

记录

写程序时遇到的几个问题,记录一下。

  • 加到project里面的时候不能加在子目录下
  • 编译的时候需要指定JSONKit.m的compiler flags "-fno-objc-arc"

吐槽

object-c的函数长度真心是伤不起的,截图留念!

sublime text2 svn sftp plugin keygen

第一次写object-c程序,写了好几个小时才写出来这么个小东西。

  1. 反编译pyc文件,查看算法
  2. 写出key生成的算法
  3. 将python嵌入Object-C,得到最终的程序

将email和生成的key写入插件目录下的sublime-setting文件。

"email": "your email",
"product_key": "the key",

下载地址:svn-sftp-keygen.app.zip

2013-03-19 增加 邮件获取注册码

发送任何邮件到 bot[at]tool.lu, 系统会自动生成注册码,并回复到你的发件邮箱

2013-04-24 增加 osx10.7支持,优化算法机

QQ20130424-1.png
下载地址:svn-keygen.app.zip

mac chrome下input submit样式

input submit指定样式不起作用

QQ20121209-1.png

There will be three new appearance constants for buttons. They are push-button, bevel-button and button. input will be using push-button by default. This constant maps to the Aqua system button. When this appearance constant is specified, the only way to disable the Aqua look will be by setting the appearance constant to none (which will give you a completely blank slate on which to build your own button look) or by specifying your own background and border properties. Specifying the background/border will result in the Aqua appearance being disabled and a more platform-neutral look being used.

来自:https://www.webkit.org/blog/28/buttons/

解决办法

/* 指定border或者background就可以了 */
input[type=submit] {
	border: 1px solid #CCC;
	/* background: red; */
}

自动禁用连接数高的IP

python代码

由于最近服务器受到大流量的攻击,于是写了该脚本。

#! /usr/bin/env python
# encoding: utf-8

import os, time

command = "/bin/netstat -antp|grep :80|awk ' ''{print $5}'|awk -F: '{print $1}'|sort -r|uniq -c|sort -n -k1 -r"
maxconn = 150

handle = os.popen(command)
for line in handle:
	fields = line.strip().split(' ')
	if len(fields) != 2:
		continue
	conn, ip = fields
	# 由于我们使用的是nginx作为反向代理,访问apache,所以这里要加上127.0.0.1
	if int(conn) > maxconn and ip != '127.0.0.1':
		print(time.strftime('%Y-%m-%d %X'), conn, ip)
		# 这里只会临时将ip拒绝,当重新启动iptables服务的时候失效
		os.system('/sbin/iptables -I INPUT -s %s/24 -j DROP' % ip)
handle.close()

定时执行

将python文件加入crontab中即可。

SimpleIni修改my.cnf

为了实现自动化修改mysql的配置文件,使用C++程序对改ini样式的文件进行修改

#include "SimpleIni.h"
int main(int argc, char* argv[]) {
	CSimpleIniA ini;
	const char* filename = "/etc/my.cnf";
	ini.SetUnicode();
	ini.LoadFile(filename);
	ini.SetValue("mysqld", "server-id", "1");
	ini.SetValue("mysqld", "binlog-do-db", "mydb");
	ini.SaveFile(filename, false);

	return 0;
}