作者归档:admin

YOURLS[短网址]的安装和配置

YOURLS的安装和配置

YOURLS 是 Your Own URL Shortener 的简写,YOURLS 是一个开源的 PHP 的程序,让你可以运行自己的 URL 缩短服务。

YOURLS 功能非常强大,你可以用来做跳转链接管理和统计,也可以开放出来给大家使用,并且它还有自己的 API,将它集成到其他服务当中去。

YOURLS 的主要功能
可以公开(任何人都可以用它创建短连接)或者私有(只能你自己使用)
可以随机,顺序或者自定义 URL 关键字
详细的点击统计报表:历史点击,来源,地理位置
整洁的 AJAX 化的界面
支持开放 API

安装和配置:
1. 下载 YOURLS,解压缩
https://github.com/YOURLS/YOURLS/archive/master.zip

2.进入user/ 目录,复制文件config-sample.php为:config.php
下载中文语言包:http://yourls.org/translations 放到 user/language下

3.修改config.php
define( 'YOURLS_DB_USER', '用户名' );
define( 'YOURLS_DB_PASS', '密码' );
define( 'YOURLS_DB_NAME', '数据库名' );
define( 'YOURLS_DB_HOST', 'localhost:3306' );
define( 'YOURLS_DB_PREFIX', 'dwz_' );
define( 'YOURLS_SITE', 'http://scon.me' );
define( 'YOURLS_HOURS_OFFSET', 0 );
define( 'YOURLS_LANG', 'zh_CN' );
define( 'YOURLS_UNIQUE_URLS', true );
define( 'YOURLS_PRIVATE', true );
define( 'YOURLS_COOKIEKEY', 'scon.me.cookie' );
$yourls_user_passwords = array(
'admin' => 'admin'
);
define( 'YOURLS_DEBUG', false );
define( 'YOURLS_URL_CONVERT', 36 );
$yourls_reserved_URL = array(
'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick', 'gay',
);

4.在浏览器地址栏输入:http://IP或域名/admin/install.php 进行安装

5.添加rewrite规则
nginx直接加入配置文件中即可: rewrite ^/([0-9A-Za-z]+)/?$ /yourls-go.php?id=$1 last;
rewrite ^/([0-9A-Za-z]+)\+/?$ /yourls-infos.php?id=$1 last;
rewrite ^/([0-9A-Za-z]+)\+all/?$ /yourls-infos.php?id=$1&all=1 last;

PHP访问MySQL数据库的常用方法

PHP访问MySQL数据库可以使用三种接口:

一.pdo_mysql(推荐)

连接:

$dsn = "mysql:host=localhost;dbname=test";
$username = 'root';
$password = '123456';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);

$pdo = new PDO($dsn, $username, $password, $options);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

增:
方法1: 绑定关联数组

$str=$pdo->prepare("INSERT INTO `user` (`username`, `password`) VALUES (:username,:password)");
$str->execute(array(":username"=>"test", ":password"=>"passwd"));

方法2: 绑定索引数组

$str=$pdo->prepare("INSERT INTO `user` (`username`, `password`) VALUES (?,?)");
$str->execute(array("test", "passwd"));

删:

$str=$pdo->prepare("delete from user where id > 3");
$str->execute();

改:

$str=$pdo->prepare("UPDATE `user` SET username=:username,password=:password where id=:id");
$str->execute(array(":username"=>"test", ":password"=>"passwd", ":id"=>"3"));

查:
方法1: 单个取出,循环遍历,返回到数组

$str=$pdo->prepare("select * from user where id > :id  order by id");
$str->execute(array(":id"=>2));
$str->setFetchMode(PDO::FETCH_ASSOC);
//共三种:1.PDO::FETCH_BOTH(默认) 2.FETCH_ASSOC 3.FTECH_NUM

while($data=$str->fetch()){
print_r($data);
echo '
';
}

方法2: 全部取出,返回到二维数组

$str=$pdo->prepare("select * from user order by fid");
$str->execute();
$data=$str->fetchAll(PDO::FETCH_NUM);
print_r($data);

方法3:单个取出,循环遍历,绑定字段名到变量

$str=$pdo->prepare("select fid,username,password from user order by id");
$str->execute();

$str->bindColumn("id",$id);
$str->bindColumn("username",$username);
$str->bindColumn(3,$password);

while($str->fetch()){
echo "$id | $username | $password
";
}
echo "总记录数:".$str->rowCount()."
";
echo "总字段数:".$str->columnCount()."
";

二.mysqli

	$mysqli=new mysqli("localhost", "root", "123456", "test");
$sql="select * from user order by id";
$result=$mysqli->query($sql);
echo '';
while($row=$result->fetch_assoc()){
echo '';
foreach($row as $col){
echo '';
}
echo '';
}
echo '
'.$col.'
';
$mysqli->close();

三.mysql

$conn=mysql_connect("localhost", "root", "123456") or die("数据库连接失败");
mysql_select_db("test") or die("选择数据库失败");;
$sql="select * from user";
$data=mysql_query($sql);
echo ''
while($row=mysql_fetch_assoc($result)){
echo '';
foreach($row as $col){
echo '';
}
echo '';
};
echo '
'.$col.'
';
mysql_close();

自助建站服务商 Weebly 获腾讯与红杉3500万美元联合投资,估值达4.55亿美元

 

 

近日,自助建站服务提供商 Weebly 获得一笔总额为3500万美元的投资,估值至此达到4.55亿美元;腾讯与红杉资本参与本轮融资。

Web 诞生早期,互联网出版工具就一直相伴左右,彼时,GeoCities 与 Angelfire 因为提供简单易用的服务而独领风骚。包括 Weebly、Squarespace 和 Wix 等最近一代的建站服务提供商,则让人们摆脱了对编程的依赖,借助拖拽工具让数以百万计的中小企业充分搭上互联网这辆“顺风车”,为自家业务谋取多样化的生 存之道。

Weebly 由3位宾州州立大学的学生于2006年创立,目前已为逾2000万个站点提供托管服务,而这些网站每月可带来1.75亿次的访问量。为获得更多高级功能,创业者通常都会向 Weebly 支付额外费用;这些人中就包括 Ceasar Chu,他是一家名为“Whiskey Ball”的电商网站的创始人。因为在 Weebly 上建设自己的网站,Ceasar 不仅令其产品获得了更高的曝光度,而且还与 Amazon.com 建立了合作关系。

Weebly CEO David Rusenko 在接受采访时称,公司现已实现盈利,并且现金非常充足。

本 轮融资助力 Weebly 全球扩张地同时,将助其与对手进行更好地竞争。上周,Squarespace 宣布已完成一笔总额为4000万美元的融资;另一方面,Wordpress 母公司 Automattic 目前也正在寻求新一轮融资,预计金额会达到1.5亿美元。更有消息称,以色列公司 Wix 将于年底进行 IPO。

“互联网正在改变企业的未来。”在声明中,腾讯美国主席 David Wallerstein 这样说道:“Weebly 则在将这种过渡推至集成简易操作平台,并以移动为驱动力的电商世界。”

通过投资优质的创业公司,腾讯正疯狂扩张着其版图。除了 Weebly,被腾讯投资过的公司包括:闪购电商网站 Fab、阅后即焚 App Snapchat、移动游戏制作商 Plain Vallina 等。

接近5亿美元的估值,意味着 Weebly 从此也步入了最具价值创业公司的行列。Weebly 是硅谷孵化器 Y Combinator 2007年的入选公司,值得一提的是,同年进入 YC 的另一家公司 Dropbox 则已经迈入“百亿美元俱乐部”。

来源:WSJ.D

jQuery 之父:坚持每天写代码

写代码

去年秋天我的支线代码项目 遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工作的前提下)。

我主要在周末进行我的支线,当然有时候也在晚上进行。这个方法对我而言效果不佳。我 的压力太重了,我需要在周末努力完成尽可能多的工作(如果没做 到,我会为此感到挫败)。还有一个问题是我无法保证每个周末都有空,而且我也不想把周末所有的时间都花在编程上(失去一切放松娱乐的机会)。

此外,每隔一周进行编码的话,间隙太长了。太容易忘记你正在做什么,或者你还需要做什么了(即使你有笔记)。如果你错过了一个周末的话,问题就更严重了,间隔一下子变成两周了。多周的上下文切换可能是致命的(我有很多支线项目因为这类注意力缺乏而死亡了)。

Jennifer Dewalt 去年通过在 180 天创建 180 个网站的方式来自学编程,她的做法启发了我。我决定采用一个简单的策略:每天编码。 继续阅读

MySQL优化

查看设置:
mysql> SHOW VARIABLES LIKE 'query_cache%';
+——————————+———-+
| Variable_name | Value |
+——————————+———-+
| query_cache_limit | 1048576 | 超过此大小的查询将不缓存
| query_cache_min_res_unit | 4096 | 缓存块的最小大小
| query_cache_size | 67108864 | 查询缓存总大小
| query_cache_type | ON | Query Cache 功能的开关
| query_cache_wlock_invalidate | OFF | 当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返回cache结果还是等写操作完成再读表获取结果。
+——————————+———-+

查看状态
mysql> SHOW STATUS LIKE 'qcache%';
+————————-+———-+
| Variable_name | Value |
+————————-+———-+
| Qcache_free_blocks | 3 | 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。
| Qcache_free_memory | 63319944 | 缓存中的空闲内存。
| Qcache_hits | 854 | 每次查询在缓存中命中时就增大
| Qcache_inserts | 386 | 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。
| Qcache_lowmem_prunes | 0 | 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个 数字在不断增长,就表示可能碎片非常严重,或者内存很少。
| Qcache_not_cached | 14 | 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
| Qcache_queries_in_cache | 290 | 当前缓存的查询(和响应)的数量。
| Qcache_total_blocks | 630 | 缓存中块的数量。
+————————-+———-+

query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果查询都是小数据查询,就容易造成内存碎片和浪费。

查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
查询缓存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%
查询缓存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果查询都是小数据量的话。
查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。
示例服务器 查询缓存碎片率 = 20.46%,查询缓存利用率 = 62.26%,查询缓存命中率 = 1.94%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。

相关经验:
如果Qcache_lowmem_prunes 值比较大,表示查询缓存区大小设置太小,需要增大。
如果Qcache_free_blocks 较多,表示内存碎片较多,需要清理,flush query cache
根据我看的 《High Performance MySQL》中所述,关于query_cache_min_res_unit大小的调优
,书中给出了一个计算公式,可以供调优设置参考:
query_cache_min_res_unit = (query_cache_size – Qcache_free_memory) / Qcache_queries_in_cache