My Essential Firefox Extensions

Access Flickr!
Bypasses the flickr.com fliter in Iran & …

Adblock Plus
Get grid of ads.

CacheViewer
This extenion is GUI Front-end of “about:cache”.
Allows searching and sorting memory and disk cache files.

CHM Reader
An extension make firefox support CHM file reading.

DownThemAll!
DownThemAll is all you can desire from a download manager: it features an advanced accelerator that increases speed up to 400% and it allows you to pause and resume downloads at any time.

Firebug
Web Development Evolved.

Foxmarks Bookmark Synchronizer
If you use Firefox on more than one computer, you’ll want Foxmarks. Install Foxmarks on each computer, and it will work silently in the background to keep your bookmarks synchronized.

Greasemonkey
Allows you to customize the way a webpage displays using small bits of JavaScript.

SingletonFox
Use only one instance of Firefox to handle all the URL requests.

SwitchProxy Tool
A tool that allow you to manage and switch between multiple proxy configurations quickly and easily.

我的公钥

—–BEGIN PGP PUBLIC KEY BLOCK—–
Version: GnuPG v1.4.6 (GNU/Linux)

mQGiBEiaUa4RBACg8VXxnHN8vTyUpcqH9pPeUmY4xBqLXirqlSE++vDGmWPRFtGe
v+KU8TC1gH8Y7OO5j5oHrHZuJZOReTXpPfPG70T4psYW+jE3R6voiinYlt2/eEk1
CyKhuIC+W9jwKl4frKmvWo2cVhXJWriaF9MhwCv4oAs28IUwVFMx8DQRXwCg6Abn
8DRkqWINjSREL69ybAIUMuUD+wUM+rpKQUrAv4GK6TqXLSmjvVwPkAE+2CxS4He/
S/Tm84uhXqWWg26+oxLsPX4PY6nxeOg/oLCP8RdtbH/D1Vgb3YjFk/0X2/dUkEr8
dDHCNb3y9q36GfiHe8eVOKw6NVz4m09YaJKGREulxky0T5SeAsyI3yA5zT76hA/u
DGLOBACTx1fvbgRis4j6JSVFtnAWce9UZESCWrygHmqg0jOuTXjtD5RW7GAY3utl
8n493li9vNK9oQrwQeQJpKHi+jMIJ4SCEgyb5zr+y1hisvIScPUgb+LmeKEt179G
TlKV31uJljdJBeksZEXj23b6k5p/uVBVAmDghyVHwgp154FTILQfVmF5biBUc2Fp
IDxkZXJhbXgwMDdAZ21haWwuY29tPohgBBMRAgAgBQJImlGuAhsDBgsJCAcDAgQV
AggDBBYCAwECHgECF4AACgkQZOc0QlqRhmDFUwCeOWn0ScO9sOla1QzgcYkIq2k3
tCYAnRpLPxc1Ys6kvpOk4DGTro10/QR0uQENBEiaUa4QBAC+RKTwO9bG2C5Ij6+D
TdaUs+iE0JDp+TiDM2arayweB/UuRDn2aJen5WNgIgBh+I8xCEOB1bVLPFQvg2xc
3SmIAaJIw4DIfrHJywwOa0pYy0c4mXgV6IFLbGF1ID+HVavBvSeCVmoyx+Vw6fJz
YFUtF83pXaswFmMCKbXO5DyfUwADBgP8DeoydEj3ALSvCOeQV2+FnQmXDn9HIwgt
ILRUiRlBw0UHaFqVVWoubzmFg/hF7miSgETyOimStA4OEmAbjhowZ0FFdfG5g2ms
NOlJhOpw+RHOUSd5Cat0QvsPBilwVLx0FLkKT4HDrhFonTfDwiOgrq83+RfFkZxW
axrJRaEeORqISQQYEQIACQUCSJpRrgIbDAAKCRBk5zRCWpGGYEVsAKDKXCW7i0Ra
XrRhEGnPmMCGYr4ImQCeO3Y4NFwhB6JOLEHApj8kc/lK5Io=
=U0bF
—–END PGP PUBLIC KEY BLOCK—–

欢迎发送加密函件 :mrgreen:

PHP Day 9

LOAD DATA INFILE
LOAD DATA INFILE “filename.txt” INTO TABLE tablename;
字段包括在单引号内,用 tab 键进行间隔,每行由 \n 换行,特殊字符用 \ 转义。

存储引擎
MyISAM(MySQL 默认)
ISAM
MEMORY
MERGE
BDB
InnoDB

用 ALTER TABLE 语句转换,比如:
alter table tablename type=innodb;

事务安全性的四个需求(ACID 原则):Atomicity, Consistency, Isolation, Durability。

MySQL 默认为 autocommit 模式。
mysql>set autocommit=0; #关闭 autocommit
在自动提交打开前提下开始事务:
mysql>start transaction;
完成后手动提交:
mysql>commit;
回滚:
mysql>rollback;

InnoDB 支持强制使用 foreign key。

创建存储过程 create procedure
设置分隔符 delimiter …
调用过程 call procedurename(@t);
查看该变量 select @t;

创建函数 create function

局部变量 declare variablename

游标(cursor)

控制结构

声明句柄

PHP Day 8

EXPLAIN

id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra

关联优化器
$myisamchk –analyze pathtomysqldatabase/table
$myisamchk –analyze pathtomysqldatabase/*.MYI
$myisamchk –analyze pathtomysqldatabase/*/*.MYI
mysql>analyze table tablename1, tablename2, …;

将列创建为索引
ALTER TABLE table ADD INDEX (column);

表的优化
mysql>OPTIMIZE TABLE tablename;
$myisamchk -r table
$myisamchk –sort-index –sort-records=1 pathtomysqldatabase/*/*.MYI

备份数据库
1. LOCK TABLES table lock_type [, table lock_type ...]
锁定类型 READE / WRITE,备份之前必须执行 FLUSH TABLES。
*******没明白*******
以文件方式备份

2. $mysqldump –opt –all-databases > backup-file.sql
再,停止 mysqld 进程,通过 –log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。
*******还是没明白*******

3. $mysqlhotcopy database /path/for/backup
再,停止 mysqld 进程,通过 –log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。
*******模模糊糊*******

恢复 MySQL 数据库
使用了方法 1,可将数据文件重新复制到安装 MySQL 的相同位置。
使用了方法 2,首先在导出文件中运行查询(???)从而将数据库重新构建至导出时的状态,接着将数据库更新至保存在二进制日志文件中的状态 —— $mysqlbinlog hostname-bin.[0-9]* | mysql
*******没明白*******
先 $mysql db_name < backup-file.sql 将转储文件读回到服务器,然后再更新。

设置主服务器和从服务器,略过

--eof--

p.s. 这一章基本没怎么看懂 :sad:
p.s.2 貌似小站被墙了 :shock:
意外发现 WordPress 彩蛋,已经有人发现了 http://www.youtube.com/watch?v=gkF4WLSkz-U

PHP Day 7

抽象类(abstract class): 不能被实例化.
抽象方法(abstract operation): 只提供了一个方法的声明, 但是不提供方法的具体实现.
包含抽象方法的任何类自身必须是抽象的.

使用 PEAR::DB 抽象类与数据库进行交互

安装: $sudo apt-get install php-pear
检查最新版本: $pear list-upgrades
升级 DB: $sudo pear upgrade DB

require_once(’DB.php’); # set for using PEAR DB
$dsn = “mysqli://$user:$pass@$host/$db_name”; # set up DSN
$db = $DB::connect($dsn); # connect to database

与实例化 mysqli 类连接数据库相比其实都差不多.

Prepared 语句向 MySQL 发送需要执行的查询模板, 再单独发送数据.
$query = “insert into table values(?, ?, …)”;
$stmt = $db->prepare($query);
$stmt->bind_param(”sssd”, $value1, $value2, …);
$stmt->execute();
$stmt->affected_rows;

除了 bind_param()[insert?] 还有 bind_result() [select?] 函数.

注意! 一定要细心! 下面使用上面的变量, 拼写要正确, 不要想当然 :mrgreen:

PHP Day 6

设计 Web 数据库

列(Column), 又称域或属性.

行(row), 也称为记录.

表中的标志列称为键(key), 一个键可以由不止一列组成. 主键(primary key)和外键(foreign key). 考虑要建模的实际对象, 避免保存冗余数据(避免 3 种更新不规则: 修改, 插入, 删除). 使用原子列值, 每行的每个属性只储存一个数据. 确认所选择的键是唯一的, 要有意义, 事先考虑需要询问数据库的问题. 避免空属性的设计.

Web 数据库架构, 暂不讨论.

—————————————————————

创建 Web 数据库(仅学习 MySQL 数据库)

登录 MySQL Monitor: $mysql -h hostname -u username -p

-h 希望连接的主机, 默认为本机(localhost)
-u 登录时的用户名(可以不是 root)
-p 提示需要密码

创建 root:
$mysql -u root
mysql> SET PASSWORD FOR ”@’localhost’ = PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR ”@’host_name’ = PASSWORD(’newpwd’);

删除匿名用户:
mysql> DELETE FROM mysql.user WHERE Host=’localhost’ AND User=”;

创建数据库: mysql> create database dbname;
(注意, 不能忘记分号!)

创建用户(最少权限原则):
GRANT privileges [columns]
ON item
TO user_name [IDENTIFIED BY 'password']
[REQUIRE ssl_options]
[WITH [GRANT OPTION | limit_options] ]

用户权限(PMWD3rd P164), 管理员权限(PMWD3rd P164), 特别权限(ALL, USAGE).

收回权限:
REVOKE privileges [columns]
ON item
FROM user_name

使用指定数据库:
mysql> use dbname;
或者
$mysql -D dbname -h hostname -u username -p

—————————————————————

创建数据库表, 略过. :mrgreen:

—————————————————————

插入数据(INSERT):
INSERT LOW_PRIORITY DELAYED IGNORE [INTO] table [(column1, ...)] VALUES (value1, …);

注意: 会按顺序插入数据.
向指定列插入数据:
insert into tablename (column1, column2, …) values (’value1′, ‘value2′, …);
或者
insert into tablename set column1=’value1′, column2=’value2′, …;

将脚本插入数据库:
$mysql -h host -u username -p < name_insert.sql

—————————————————————

获取数据(SELECT):
略过. :mrgreen:

—————————————————————

更新数据库记录:
UPDATE

创建后修改表:
ALTER TABLE

删除:
DELETE
DROP

–eof–

Dict in Ubuntu

最近经常上英文网站,本来一直使用 Baidu 内嵌的 Dr.eye,后来发现不太方便于是安装了 dict.cn 的网页划词。但这两天 dict.cn 的服务器似乎有问题,老是查不到词汇(而且使用在线划词会把 firefox 搞死……)。于是乎上网查了一下,发现在 Linux 上可以用 terminal 查单词,除了没发音该有的都有。

实际上用的是 dict 开放协议。

$sudo apt-get install dict #客户端 (在 /etc/dictd/dict.conf 注释掉服务器,让其只使用本地读字典)
$sudo apt-get install dictd #服务器端
$sudo apt-get dict-xdict dict-stardic dict-gcide #三个字典文件

最后使用 $dict word 就可以查单词了,退出按 Q 键。

参考:http://blog.cathayan.org/item/1715

p.s. 今早遇到件特不愉快的事