创建具有固定导航功能的滑动单页面布局网站

建立简单网页时,倾向于将内容放在同一布局中,而非多个页面。这类单页面网站非常适用于在线展示一个小型项目或者作品集。如果把内容分割为几个整洁的部分,那么访问者可以使用滑动导航以便快速浏览页面。

本教程展示如何利用jQuery建立典型的滑动导航,有多种可替代的插件都可以实现同样的功能,并且很省时。但我们这次只使用了jQuery,然后用scrollTo插件优化了性能。点击下面的链接查看在线动画演示吧。

Demo与源代码下载 

入手

首先下载jQuery的本地副本,并与其他脚本文件放在一起。还需要jQuery.scrollTo插件副本,它是一个单一的.js文件。我创建了两个替换文件index.htmlstyles.css,用于存放页面架构。我们首先来分析主要的内容。

  1. <!doctype html>
  2. <html lang=“en-US”>
  3. <head>
  4. <meta charset=“utf-8”>
  5. <meta http-equiv=“Content-Type” content=“text/html”>
  6. <title>Single Page Sliding Layout – Design Shack Demo</title>
  7. <meta name=“author” content=“Jake Rocheleau”>
  8. <link rel=“shortcut icon” href=“http://designshack.net/favicon.ico”>
  9. <link rel=“icon” href=“http://designshack.net/favicon.ico”>
  10. <link rel=“stylesheet” type=“text/css” media=“all” href=“css/styles.css”>
  11. <script type=“text/javascript” src=“js/jquery-1.10.2.min.js”></script>
  12. <script type=“text/javascript” src=“js/jquery.scrollTo.js”></script>
  13. </head>

头文件的内容应该简明扼要,不要繁琐复杂。索引文件使用HTML5文档类型,还有我们下载的样式表以及两个JS文件。显然还有其他可替代的来自定义滚动效果,但是在本教程中直接运用了插件就简单许多了。在页面HTML中我们可以看到如何设置导航。

  1. <div id=“w”>
  2. <div id=“content”>
  3. <nav id=“stickynav”>
  4. <ul id=“nav” class=“clearfix”>
  5. <li><a href=“#topbar”>Homepage</a></li>
  6. <li><a href=“#about”>About</a></li>
  7. <li><a href=“#photos”>Photos</a></li>
  8. <li><a href=“#contact”>Contact</a></li>
  9. </ul>
  10. </nav>

使用ID #w把整个页面封装,另外用div #content装饰页面的内容。在我的教程中,导航包含在页面内容里,不过你可以移动到任意合适的位置。因为导航是固定的,所以无论浏览用户处在什么位置,菜单总是随之滚动。

容器#stickynav能够保证所有内部元素一直置于页面内容顶部。我利用了CSS z-index属性和列表选项中的内部漂浮。注意HREF的值都是指向定位在页面中某一处的一个散列标志,我们通过这个值就能决定用户滑动到哪个位置。

内部内容

在关闭导航块之后我们发现一小段代码。文本中有很多额外的间距,这样你就可以看到在一个典型网页中它会如何表现。每一块容器都利用HTML5<section>元素,附带一个类的名称.section

  1. <section id=“about” class=“section”>
  2. <h2>About Us</h2>
  3. ….
  4. </section>

CSS页面设计

我想区分开一般的顶部导航栏与本文介绍的固定导航。我们可以把一个褐色附带链接的导航条固定到页面顶端,但如果这样做的话,导航栏会挡住页面布局的一小部分。取而代之,我创建了一个新的无序列表,把链接样式设定成彼此紧挨并在旁边漂浮,这样一来菜单风格将更紧凑。

  1. #topbar {
  2. background: #4f4a41;
  3. padding: 10px 0 10px 0;
  4. textalign: center;
  5. height: 36px;
  6. overflow: hidden;
  7. webkittransition: height 0.5s linear;
  8. moztransition: height 0.5s linear;
  9. transition: height 0.5s linear;
  10. }
  11. #topbar a {
  12. color: #fff;
  13. fontsize:1.3em;
  14. lineheight: 1.25em;
  15. textdecoration: none;
  16. opacity: 0.5;
  17. fontweight: bold;
  18. }
  19. #topbar a:hover {
  20. opacity: 1;
  21. }
  22. #stickynav {
  23. display: block;
  24. height: 35px;
  25. width: 100%;
  26. zindex: 9999;
  27. }
  28. #stickynav #nav { position: fixed; z-index: 9999; }
  29. #stickynav #nav li { display: inline; }
  30. #stickynav #nav li a {
  31. display: block;
  32. float: left;
  33. marginright: 8px;
  34. fontsize: 1.2em;
  35. fontweight: bold;
  36. padding: 5px 7px;
  37. background: #cce4c4;
  38. webkitborderradius: 4px;
  39. mozborderradius: 4px;
  40. borderradius: 4px;
  41. }
  42. #stickynav #nav li a:hover {
  43. textdecoration: none;
  44. background: #d8f0d0;
  45. }

观察容器#stickynav,你会发现导航将跨越整个页面宽度,在使用一个透明背景的情况下当然不会很明显,但是请记住,你可能会扩大导航宽度至更宽的外部页面包装。

在我的样式表中还有一个有趣的部分拥有表单输入域和页面容器。这些规则都是定位在文件底部的,连同字体更新。注意每个标题是如何集中在页面上,以便给旁边的导航项提供空间的。可以轻易向右调整这些标题的距离,给导航链接提供跟多的空间。

  1. form .basic {
  2. display: block;
  3. fontsize: 1.5em;
  4. color: #555;
  5. fontfamily: Arial, Tahoma, sansserif;
  6. padding: 4px 6px;
  7. marginbottom: 10px;
  8. }
  9. form .basictxt {
  10. display: block;
  11. width: 550px;
  12. height: 180px;
  13. fontfamily: Arial, Tahoma, sansserif;
  14. color: #666;
  15. padding: 5px 8px;
  16. fontsize: 1.6em;
  17. lineheight: 1.4em;
  18. }
  19. /** page structure **/
  20. #w {
  21. display: block;
  22. width: 750px;
  23. margin: 0 auto;
  24. paddingtop: 30px;
  25. }
  26. #content {
  27. display: block;
  28. width: 100%;
  29. background: #fff;
  30. padding: 25px 20px;
  31. paddingbottom: 35px;
  32. webkitboxshadow: rgba(0, 0, 0, 0.1) 0px 1px 2px 0px;
  33. mozboxshadow: rgba(0, 0, 0, 0.1) 0px 1px 2px 0px;
  34. boxshadow: rgba(0, 0, 0, 0.1) 0px 1px 2px 0px;
  35. }

我没有设置可以在某处提交的联系表单,但我确实希望它有一些体面的自定义样式。当然这也没什么特别的,不过它有重置的默认字体与颜色。而且如果你需要扩大中央内容的区域,你可以找到宽度值:附加到外部容器的750px属性。最好理解这些基本样式,虽然并不是什么非常特别的内容。

利用jQuery达到平滑滚动效果

最后一块代码内容非常简单,就算你不懂脚本。我在用于结束的</body>之前添加了一个新标签,指向固定导航锚链接。无论什么时候当用户点击这个链接,我们输出散列值并立即滚动到页面部分。

  1. $(function(){
  2. $(“#nav a”).click(function(e){
  3. e.preventDefault();
  4. $(‘html,body’).scrollTo(this.hash,this.hash);
  5. });
  6. });

jQuery .click()方法包含了一个事件处理器参数,通过这个参数我们能取消默认行为,以便浏览器不会跳转页面。jQuery scrollTo运行针对当前的链接值this.hash。

这个方法很容易掌握,因为你可以很快的实现页面内容。我肯定还有许多其他类似的jQuery scrollTo相关插件,如果你有时间都可以尝试一下。

结语

简单网页不需要复杂的菜单系统,利用本文介绍的技术可以帮助组织网页内容。我希望本教程能够帮助开发者创建简单的页面布局。jQuery是可扩展的,且很容易被扩展这个代码库到你自己的 jQuery插件中。欢迎下载我的源代码,将这个效果运用到以后的作品中。

我是原文

Bing机器翻译api申请教程

1:打开网址 https://login.live.com/ 注册帐号并登录(点击上图中的登录按钮即可),在新窗口点击下方的“立即注册”(有帐号的可以直接登录)

2:填写相关信息(推荐使用hotmail邮箱),填写完毕后点击下方的 【创建账户】 即可

PS1:国家或地区请勿选择‘中国’,否则会出现‘在你的市场中未提供’,如果已经注册了请在‘我的帐户’–》‘帐户信息’–》‘编辑’,选择其他的国家或地区及语言,订阅成功后,可将语言改回中文。 Read more “Bing机器翻译api申请教程”

美团点评SQL优化工具SQLAdvisor开源

在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务。例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率。

美团点评技术团队:http://tech.meituan.com/

介绍

在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务。例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率。

目前常用的 SQL 优化方式包括但不限于:业务层优化、SQL逻辑优化、索引优化等。其中索引优化通常通过调整索引或新增索引从而达到 SQL 优化的目的。索引优化往往可以在短时间内产生非常巨大的效果。如果能够将索引优化转化成工具化、标准化的流程,减少人工介入的工作量,无疑会大大提高DBA的工作效率。

SQLAdvisor 是由美团点评公司北京DBA团队开发维护的 SQL 优化工具:输入SQL,输出索引优化建议。 它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度、聚合条件、多表 Join 关系等最终输出最优的索引优化建议。目前 SQLAdvisor 在公司内部大量使用,较为成熟、稳定。

现在,我们非常高兴地将 SQLAdvisor 开源,项目 GitHub 地址:https://github.com/Meituan-Dianping/SQLAdvisor 。我们已经把相关开发工作全面转到 GitHub 上,开源版本和内部使用版本保持完全一致。希望与业内有类似需求的团队,一起打造一款优秀的 SQL 优化产品。

SQLAdvisor架构流程图
SQLAdvisor处理流程

SQLAdvisor使用举例

sql: SELECT id FROM crm_loan WHERE id_card = '1234567'
cmd: ./sqladvisor -h xx -P xx -u xx -pxx -d xx -q "SELECT id FROM crm_loan WHERE id_card = '1234567'"
SQLAdvisor输出: alter table crm_loan add index idx_id_card(id_card)

SQLAdvisor快速入门教程

SQLAdvisor的优点

  • 基于 MySQL 原生词法解析,充分保证词法解析的性能、准确定以及稳定性;
  • 支持常见的 SQL(Insert/Delete/Update/Select);
  • 支持多表 Join 并自动逻辑选定驱动表;
  • 支持聚合条件 Order by 和 Group by;
  • 过滤表中已存在的索引。

SQLAdvisor原理介绍

Join 处理

  1. Join语法分为两种:Join on 和 Join using,并且 Join on 有时会存在 where 条件中。
  2. 分析 Join 条件首先会得到一个 nested_join 的 table list,通过判断它的 join_using_fields 字段是否为空来区分 Join on 与 Join using。
  3. 生成的 table list 以二叉树的形式进行存储,以后序遍历的方式对二叉树进行遍历。
  4. 生成内部解析树时,right Join 会转换成 left Join。
  5. Join 条件会存在当层的叶子节点上,如果左右节点都是叶子节点,会存在右叶子节点。
  6. 每一个非叶子节点代表一次 Join 的结果。

上述实现时,涉及的函数为:mysql_sql_parse_join(TABLE_LIST join_table) mysql_sql_parse_join(Itemjoin_condition) ,主要流程图如下:
join流程

where 处理

  1. 主要是提取 SQL 语句的 where 条件。where 条件中一般由 AND 和 OR 连接符进行连接,因为 OR 比较难以处理,所以忽略,只处理 AND 连接符。
  2. 由于 where 条件中可以存在 Join 条件,因此需要进行区分。
  3. 依次获取 where 条件,当条件中的操作符是 like,如果不是前缀匹配则丢弃这个条件。
  4. 根据条件计算字段的区分度按照高低进行倒序排,如果小于30则丢弃。同时使用最左原则将 where 条件进行有序排列。

计算区分度

  1. 通过 “show table status like” 获得表的总行数 table_count。
  2. 通过计算选择表中已存在的区分度最高的索引 best_index,同时Primary key > Unique key > 一般索引。
  3. 通过计算获取数据采样的起始值offset与采样范围rand_rows:
    • offset = (table_count / 2) > 10W ? 10W : (table_count / 2)
    • rand_rows =(table_count / 2) > 1W ? 1W : (table_count / 2)
    • 使用select count(1) from (select field from table force index(best_index) order by cl.. desc limit rand_rows) where field_print 得到满足条件的rows。
    • cardinality = rows == 0 ? rand_rows : rand_rows / rows;
    • 计算完成选择度后,会根据选择度大小,将该条件添加到该表中的备选索引中。

主要涉及的函数为:mysql_sql_parse_field_cardinality_new() 计算选择度。
计算区分度流程

添加备选索引

  1. mysql_sql_parse_index()将条件按照选择度添加到备选索引链表中。
  2. 上述两函数的流程图如下所示:
    添加备选索引

Group 与 Order 处理

  1. Group 字段与 Order 字段能否用上索引,需要满足如下条件:
    • 涉及到的字段必须来自于同一张表,并且这张表必须是确定下来的驱动表。
    • Group by 优于 Order by, 两者只能同时存在一个。
    • Order by 字段的排序方向必须完全一致,否则丢弃整个 Order by 字段列。
    • 当 Order by 条件中包含主键时,如果主键字段为 Order by。 字段列末尾,忽略该主键,否则丢弃整个 Order by 字段列。
  2. 整个索引列排序优先级:等值>(group by | order by )> 非等值。
  3. 该过程中设计的函数主要有:
    • mysql_sql_parse_group() 判断 Group 后的字段是否均来自于同一张表。
    • mysql_sql_parse_order() 判断 Order 后的条件是否可以使用。
    • mysql_sql_parse_group_order_add() 将字段依次按照规则添加到备选索引链表中。
      添加group
      处理group

驱动表选择

  1. 经过前期的 where 解析、Join 解析,已经将 SQL 中表关联关系存储起来,并且按照一定逻辑将候选驱动表确定下来。
  2. 在侯选驱动表中,按照每一张表的侯选索引字段中第一个字段进行计算表中结果集大小。
  3. 使用 explain select * from table where field 来计算表中结果集。
  4. 结果集小最小的被确为驱动表。
  5. 步骤中涉及的函数为:final_table_drived(),在该函数中,调用了函数 get_join_table_result_set() 来获取每张驱动候选表的行数。

添加被驱动表备选索引

  1. 通过上述过程,已经选择了驱动表,也通过解析保存了语句中的条件。
  2. 由于选定了驱动表,因此需要对被驱动表的索引,根据 Join 条件进行添加。
  3. 该过程涉及的函数主要是:mysql_index_add_condition_field(),流程如下:
    驱动表选择

输出建议

  1. 通过上述步骤,已经将每张表的备选索引键全部保存。此时,只要判断每张表中的候选索引键是否在实际表中已存在。没有索引,则给出建议增加对应的索引。
  2. 该步骤涉及的函数是:print_index() ,主要的流程图为:
    驱动表选择

SQLAdvisor版本更新

  • Functionality Added or Changed
    • 调整架构将 SQLParser 与 SQLAdvisor 模块隔离,方便调试。
    • 重新架构多表 Join 关系的 find_join_elements() 函数,思路更加清晰。
    • 修改选定驱动表的策略,确保驱动表为小结果集。
    • 添加 where 条件中的 like 处理。
    • 优化 Order by 逻辑,忽略 Order by primary key 场景。
    • 输出索引建议前,增加判断索引是否已存在。
  • Bugs Fixed
    • 修复 SQL 无法处理中文问题。
    • 修复字段多次出现在 where 条件中从而导致多次出现在索引列中问题。
    • 修复在 find_best_index() 函数中,对 MySQL API 中的 result 对象提前 free,导致指针失效问题。

愿景

和各位同行共同打造一款企业级优秀的 SQL 优化产品,希望大家能够积极参与。
欢迎大家将需求或发现的 Bug 在 Github 上提交 issue,帮助 SQLAdvisor 逐渐壮大;也欢迎大家在 SQLAdvisor 用户交流群(QQ: 231434335)相互交流,共同学习。

SQLAdvisor手册

  1. SQLAdvisor快速入门教程.
  2. SQLAdvisor原理和架构.
  3. SQLAdvisor release notes.
  4. SQLAdvisor开发规范.
  5. FAQ.
不想错过技术博客更新?想给文章评论、和作者互动?第一时间获取技术沙龙信息?

请关注我们的官方微信公众号“美团点评技术团队”。现在就拿出手机,扫一扫:

公众号二维码

美团点评MySQL中间件DBProxy开源啦

一、介绍

随着数据量的不断增大,传统直连数据库对数据进行访问的方式已经无法满足一般公司的需求。通过数据库中间件,可以对数据库进行水平扩展,由原来单台数据库扩展到多台数据库,数据库中间件通过路由规则将数据的访问请求路由到其中一台数据库上,从而大大降低了数据访问的瓶颈和单台数据库的压力。并且通过数据库中间件可以将DBA和研发进行解耦,提升DBA运维效率。

目前美团点评内部使用的中间件DBProxy是在奇虎360公司开源的Atlas上继续开发,逐渐满足公司内部需求。

美团点评致力于将DBProxy打造成一款高可靠、高可用的一款企业级数据库中间件,选择将已经在公司内部使用的较为成熟(包括支付、外卖、团购、酒旅等)、稳定的DBProxy进行开源,github地址:https://github.com/Meituan-Dianping/DBProxy。希望与业内同样有数据库中间件需求的团队,在DBProxy基础上一起打造一款企业级优良的数据库中间件产品。

二、DBProxy的优点

  1. 支持多语言MySQL客户端
  2. 读写分离
  3. 负载均衡
  4. Slave故障感知与摘除(Master需要需要MHA等其他联动)
  5. 后端连接池
  6. 自定义SQL拦截与过滤
  7. 流量分组与控制
  8. 丰富的监控状态
  9. 支持分表(分库版本正在内测中)
  10. Client IP限制

使用DBProxy典型场景:

使用前:

1. Client端使用配置文件配置主从信息,需要业务端实现负载均衡、读写分离、分表;

2. 扩容或者主库切换时,需要DBA和业务紧密配合,DBA扩容或者切换之后,业务需要及时修改配置文件;

3. Slave故障时,需要DBA通知业务及时变更配置信息。

使用后:

1. 应用程序在连接串中设置DBProxy的地址,不需要关注整个数据库集群的拓扑结构;

2. DBProxy内部实现负载均衡,读写分离;

3. Slave上下线的操作由DBA通过Atlas Admin管理接口完成;

4. Slave故障时,DBProxy自动摘除。

这样极大的减轻了DBA和应用开发人员的工作,引入DBProxy对于系统的可管理性和便利性都有非常大的帮助。

三、DBProxy软件模块

介绍DBProxy的软件模块。软件模块分三层:

  1. 第一层是一个访问控制,包括用户处理,IP过滤等等的功能;
  2. 中间层是一个SQL处理的过程,包括SQL解析,SQL重写,和SQL执行;
  3. 第三层就是一个主要和DBA连接相关的一个模块,像读写分离,负载均衡,连接池;
  4. 另外还有三个模块是贯穿整个三层的: 第一是连接的管理,负责管理收发数据的底层连接;第二是日志的管理,第三个是监控管理。

四、DBProxy连接改进

根据我们链路比较长的特点,着重添加了对于连接异常的检测和处理,包括:

  1. DBProxy上游和MGW交互的连接检测;
  2. DBProxy下游和MySQL连接的检测;
  3. DBProxy所在机器的连接检测。

五、DBProxy SESSION级变量

SQL处理模块中增加了SESSION参数的功能: 客户端分配一个DB连接的时候,如果二者SESSION级参数不一样时,首先做一个校正,校正之后才会真正执行查询。

六、DBProxy连接池改进

连接池的管理中做了这样的修改:将链表改成Hash表,其中Hash键是用户名,Hash值是以用户身份建立的连接的一个链表。如下图把连接按用户来分,client分别会分到各自user建立的db连接,二者互不影响,既保证了查询的正确性,又保证了较高的性能。

七、DBProxy访问控制

  1. 增加了一个SQL过滤的功能:
    • 该功能由黑名单的方式实现,黑名单的形式是如下边两个语句;
    • 黑名单可以根据执行的频率,执行的时间来自动的添加,其中频率时间,都是可以根据自己的需求动态修改的,另外我们也提供了一个手动添加黑名单的功能。
  2. 根据后台db的thread running进行负载均衡,每当分配到一个后台的连接的时候,先检查后台的Thread running数,直到有一个thread running数在我阈值之内的时候才真正去分配。
  3. 用户IP限制,限制了用户的host地址,相当于进行一个权限的控制。
  4. 从库流量配置,可以指定某一个用户只能访问某几个从库,或者反过来说某几个从库只允许某几个用户访问,这样可能在一个更细的力度上对数据库的资源进行分配。

八、DBProxy监控模块

DBProxy的监控体系实现了一个从无到有的过程,目前主要监控一些DBProxy内部运行相关的一些参数:

九、DBProxy Sharding改进

对于sharding版本,做了如下的改进:

  1. 把分库变成分库分表,并且提供了5种分库分表的方式;
  2. 改进了Lemon基本上兼容MySQL语法;
  3. 有限支持单个库内部的JOIN,经过Lemon解析后,发现涉及的表都是在同一个库,那么表的JOIN是支持的;
  4. 支持单库的事务;
  5. 增加错误处理:在一个库上面执行出错的时候,会相应有一些rollback的机制,来处理一些异常情况导致的执行失败。

Q:这方面能大概讲一下怎么去改进的?

A:首先是一个语法的支持,我们就是把中间不支持语法的支持,这样的话有些复杂的查询,我们可以通过这个语法来进行一些,比如说where条件的分析,可以知道分布分表的情况,然后就是表的替换。

十、DBProxy上线现状

从2015.5上线第一个版本后到现在已经有87%的服务组接入了DBProxy, DBProxy也已经经历了5个版本的迭代。

十一、DBProxy对Atlas的改进

DBProxy在开源Atlas的基础上,我们做了以下努力和工作(截止目前:27个功能点的新增;17个bug的修复)

  • 主要增加的新功能
    • 从库流量配置

      指定查询发送到某个从库

    • 参数动态设置(完善show proxy status/variables)

      参数动态的设置: 以及支持save config,动态增加、删除分表

    • 响应时间percentile统计

      统计最近时间段DBProxy的响应时间

    • kill session

      支持DBProxy的admin接口kill session操作

    • backend平滑上下线

      支持平滑的backend上下线

    • DBProxy非root用户启动

      使用非root用户启动

    • admin账号的安全限制

      admin账号密码的动态修改及host限制

    • 增加异步刷日志的功能

      增加日志线程,异步刷日志,提高响应时间

    • 支持DBProxy平滑重启功能
    • 支持SQL过滤的黑名单功能
    • 支持对于MySQL后台的thread running限制功能

      该功能通过在DBProxy内限制每个后台MySQL的并发查询来控制对应MySQL的thread running数。

      当发向某个MySQL后台的的并发查询超过某个阈值时,会进行超时等待,直到有可用的连接,其中阈值与超时等待的时间都已经参数化,可以动态配置。

    • set backend offline不再显示节点状态
    • 支持set transaction isolation level
    • 支持use db
    • 支持set option语句
    • 支持set session级系统变量
    • 支持建立连接时指定连接属性。
    • 改进连接池的连接管理,增加超时释放机制。当连接池中的空闲连接闲置超过一定时间后,自动释放连接。由参数db-connection-idle-timeout控制。
    • 增加客户端连接的keepalive机制,避免网络异常后释放已断开的连接。
    • 完善管理日志,增加了管理命令日志、错误语句日志以及详细的错误日志。
    • 完善SQL日志信息,包含了详细的连接信息,并包含了DBProxy内部执行的隐式SQL语句。隐式SQL语句主要是连接重用时切换database、字符集的语句。
    • 增加SQL日志rotate机制,可设置日志文件最大大小和日志文件最大个数,自动清理早期的SQL日志。分别由参数sql-log-file-size和sql-log-file-num控制。
    • 增加后台MySQL版本号设置,主要影响MySQL连接协议中的server版本,客户端驱动可能依赖于server版本处理机制有所不同。由参数mysql-version控制。
    • 性能改进,将SQL词法分析从串行方式改进为并发方式;其次,在每次执行SQL前如果database相同时,不再需要执行COM_INIT_DB命令。根据测试结果,在特定环境下sysbench的QPS从7万提升至22万。
    • 增加监控统计信息,包括连接状态、QPS、响应时间、网络等统计
    • sql log动态配置
    • 改进autocommit为false时频繁连接主库的问题

新功能和Bug修复描述,详见release notes(https://github.com/Meituan-Dianping/DBProxy/blob/master/doc/RELEASE_NOTES.md)。

十二、DBProxy计划

  1. 更强大的SQL处理:
    • 增加一些SQL优化,Row cache的功能;
    • 分库分表全面的SQL支持,如聚集,排序;
    • 更全面的连接上下文信息;
  2. 监控管理要结合自动故障处理,真正把监控的信息智能化;
  3. 和我们美团点评自己的MHA融合,支持自动故障切换;
  4. 支持分布式事务。

希望和各位同行共同打造一款企业级高可用、高可靠的数据库中间件产品,希望大家能够积极参与。

欢迎大家将需求或发现的Bug在github上提交issue,帮助DBProxy的壮大;也欢迎大家在DBProxy用户交流群(QQ: 367199679)相互交流,共同学习。

WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。

WinSCP

什么是 WinSCP

WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。

这是一个简体中文版本的介绍,这里的链接大多数是英文的页面,您可以使用Google来进行翻译。

下载和安装 WinSCP

下载

安装版

请到WinSCP下载页面(英文),单击您想下载的版本所对应的“Installation package”下载安装包。然后到翻译页面(英文)选择下载简体中文(Simplified Chinese)插件,将 ZIP 包解压缩到 WinSCP 安装路径。具体情况请阅读完全指导(英文)。此软件还可以结合 putty,以方便用户的远程登录。

安装

安装版

一路单击“下一步”即可。

主要功能

文件操作

WinSCP 可以执行所有基本的文件操作,例如下载上传。同时允许为文件和目录重命名改变属性、建立符号链接和快捷方式。

两种可选界面允许用户管理远程或本地的文件。

连接到远程计算机

使用 WinSCP 可以连接到一台提供 SFTP (SSH File Transfer Protocol)SCP (Secure Copy Protocol)服务的 SSH (Secure Shell)服务器,通常是 UNIX 服务器。SFTP 包含于 SSH-2 包中,SCPSSH-1 包中。两种协议都能运行在以后的 SSH 版本之上。WinSCP 同时支持 SSH-1SSH-2。 但WinSCP不支持编码选择,也就是说,你在Windows下使用WinSCP连接一个Linux机器,因为Linux和Windows的默认编码不同,因此是无法访问上面的中文文件或者文件夹的(将看到乱码)。一种解决方法就是在打开winscp时登录中的 Advanced Options–Environment中将 “UTF-8 encoding for filenames”设为on.

程序界面

WinSCP 有两种界面可供您选择。

您可以在安装时选择喜欢的界面,也可以以后改变设置

如果您是第一次使用 WinSCP,建议选择 Windows Explorer 界面,因为 Windows 用户比较熟悉这个界面。当然,如果您习惯 Norton Commander 风格,就选择 Norton Commander 界面,它注重于方便的键盘操作,你完全可以脱离鼠标,更快地进行操作。

博客服务器换成Linode.com他们家的VPS了

从注册账号到注册个人信息都是对于英文不好的人一个大的考验啊,建议大家浏览外国网站的时候,
请使用www.google.com基本算是搞定了哦,期间会有个优惠码信息和推荐码信息,大家要注意哦,是给你省钱的哈!
这个平台注册付款是需要信用卡支付的哈,并且要支持美金付款的哦,

选购Linode界面

(选购Linode界面,已经是注册成功后的了哦)

关于如何注册账号和认证账号请移步到

Linode VPS – 稳定性、性价比最高的VPS提供商

Linode VPS购买图文教程及优惠码使用方法

优惠码获得请看点击下方链接

Linode优惠码 2016年10月优惠码 SSD VPS 优惠码

推荐码选择请看下方:

9a15efe001bcf286bfbfe82a2e06abb08e671dd6】复制这段内容到你的推荐码框里面即可。

推荐码链接:referral URL  https://www.linode.com/?r=9a15efe001bcf286bfbfe82a2e06abb08e671dd6

如何选取机房;CHINA选择如上图

20161021163103

目前,Linode一共有六个机房可供选择,分别为:London,Newark,Atlanta、Dallas、Fremont、Tokyo。(日本没货

Linode官网上提供了用户能够进行测速的链接http://www.linode.com/speedtest/,对于对速度和稳定性比较在意的用户,可以根据自己的测试结果来选择其机房。

美国南部的只有Fremont, CA, USA

使用 Laravel 快速构建网站系列 —— Laravel 官网:Laravel.com

laravel

1、简介

本项目是Laravel官网源码。

Laravel是一个语法优雅、代码美观的web应用框架,我们相信开发应该是一个享受的、富有创造力的实现过程。Laravel通过将web项目中主要的通用任务(认证路由会话队列缓存等等)加以封装,从而将开发者从重复造轮子的痛苦中解放出来。

Laravel是易于使用的,同时也是功能强大的,提供了大型稳健应用所需的各种强大工具:一个牛逼的IoC容器(服务容器)、优雅的迁移系统、紧密集成的单元测试支持,都将助力你构建任何你想要开发的应用。

2、网站

http://laravel.com

3、GitHub

https://github.com/laravel/laravel.com

4、官方文档

英文原版:http://laravel.com/docs/5.1

中文版:http://laravelacademy.org/laravel-docs-5_1

使用 Laravel 快速构建网站系列 —— 中文社区网站:PHPHub

PHPHub

1、简介

今天我们来一个基于Laravel构建的中文社区网站 —— PHPHub

PHPHub 是积极向上的 PHP & Laravel 开发者社区,基于Laravel 4.2构建。

我们是一个公益组织, 致力于推动 Laravel, php-fig 等国外 PHP 新技术, 新理念在中国的发展。

在这里没有商业广告, 没有灌水, 没有千篇一律新手问答, 有的是关于新技术的讨论和分享。

名字的灵感来自伟大的 Github, hub 有 “中心”, “集线器” 的意思, 意味着 PHPer 们齐聚一堂, 互相交换着信息流。

2、网站

https://phphub.org/

3、GitHub

https://github.com/summerblue/phphub

4、安装

系统要求:

  • PHP 5.4+
  • Laravel 4.2+

我们使用Laravel Homestead进行本地开发,请查看Homestead文档进行安装。

中文版本本地环境部署:PHPhub 开发环境部署

使用 Laravel 快速构建网站系列 —— 静态站点/博客生成器:Katana

静态站点生成器 Katana

1、简介

Katana是一个基于Laravel开发的静态站点/博客生成器,支持Markdown,并且使用了Laravel的Blade模板引擎。

2、GitHub

https://github.com/themsaid/katana

3、系统要求

  • PHP 5.5.9+
  • Apache或Nginx服务器
  • Composer

4、安装

我们使用Composer安装Katana:

composer create-project themsaid/katana my-new-site

安装完成后需要使用以下命令build站点:

php katana build

Katana自带了一些实例内容以便你快速上手,上述命名运行完成后站点会生成到/public目录下。

5、文档

完整的Katana文档参考这里:http://themsaid.github.io/katana/

6、博客生成器

Katana提供了静态博客生成器功能,你需要做的就是在/content/_blog目录下创建一个新的.blade.php文件,然后Katana会编译所有文章并将它们显示在你选择的视图中。

博客文章列表基于config.php中的配置进行分页,在所有Blade视图中还有一个$blogPosts变量包含文章数组。

7、Blade模板引擎

如果你对Blade模板引擎不熟悉, 可以参考其官方文档:http://laravelacademy.org/post/79.html

8、使用GitHub Pages

你可以在Katana中通过GitHub Pages发布网站,其原理是部署public目录作为你的GitHub Pages仓库主分支或者你项目仓库的gh-pages分支。

更多详情请参考Katana官方文档

使用 Laravel 快速构建网站系列 —— 分类聚合网站:webshowu

webshowu

简介

一个基于laravel5.2的分类目录、导航程序!这里只是简单的完善了,后续还有很多强大的功能正在完善中……

秀文档还在积极的完善中……请大家耐心等待……

是lambq一个独立开发程序、在lambq学习laravel5.2的时候有感而来……

网站地址:http://www.webshowu.com/

GitHub

https://github.com/lambq/webshowu

有哪些模块?

  • 资讯文章管理模块
  • 目录网站管理模块

有哪些功能?

  • 定时运行程序功能(cron任务调度)
  • 长耗时运行程序功能(queue队列)
  • phpquery采集器功能(语法类似jquery的dom采集操作——是我见过最不错的)
  • curl动态代理(是专门针对防止采集的)
  • 基于http反向索引外链(自动收录网站)

有那些模块和功能的组合呢?

  • 秀妹组合:基于http反向索引外链、自动收录网站并生成网站缩略图和各种数据的收集。这是一个长耗时php运行时间有可能超出60秒、所以我建立了一个队列(jobs)专门处理“秀妹抛过来的任务”。
  • 文章采集组合:建立一个采集规则表、调用cron任务调度定时每一分钟读取规则表里面的所以规则、循环抛给处理规则的队列(jobs)、然后把所有要采集的文章(标题和链接)抛给文章采集队列(jobs)。

使用了laravel哪些扩展包?

  • jenssegers/agent——轻松识别客户端信息
  • stevenyangecho/laravel-u-editor——百度编辑器
  • overtrue/laravel-lang——laravel多个国家的语言包
  • predis/predis——最好的redis-php扩展包

使用了laravel哪些服务?

  • artisan工具(Artisan Console)
  • 缓存(Cache)
  • 文件系统/云存储(Filesystem / Cloud Storage)
  • 辅助函数(Helpers)
  • 分页(Pagination)
  • 队列(Queue)
  • session
  • 任务调度(Task Scheduling)

使用了php哪些扩展?

  • fileinfo
  • openssl
  • pdo
  • mbstring
  • tokenizer
  • pcntl
  • redis
  • memcached

额外使用了哪些程序呢?

  • python的进程管理控制系统(supervisor)
  • linux的定时任务系统“只能精确的分钟”(cron/crontab)

感激

感谢以下的项目,排名不分先后

bug反馈

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

  • qq群:57176386

IPCMENBS使用BootStrap打造的原创主题

shot

主题简介

IPCMENBS使用BootStrap打造的原创主题,自动适应任何尺寸大小硬件设备。主题简洁清新明了,使用的网友需要做一些简单的修改,Header.php 主题文件根据你的网站内容修改关键字、描述等,底部因为有百度统计代码,根据自己的情况进行删改!

关于BootStrap
Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。目前,Bootstrap最新版本为3.0 。Bootstrap中文网致力于为广大国内开发者提供详尽的中文文档、代码实例等,助力开发者掌握并使用这一框架。

如果你对做主题感兴趣,可以去 Bootstrap 下载,地址:http://www.bootcss.com

这里把我制作的主题给大家共享一下,因为是第一个版本,可能会出现很多问题,希望使用后的童鞋给我反馈!

演示地址:http://ipcmen.com

主题下载:

 

phpStudy 2016 (支持PHP7)使用教程《转》

对学习PHP的新手来说,WINDOWS下PHP环境配置是一件很困难的事,就是老手也是一件烦琐的事。因此,无论你是新手还是老手,phpStudy 2016都是一个不错的选择,该程序集成Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,最新版本已集成最新的 PHP7
phpStudy 2016 (支持PHP7)使用教程

下面针对刚接触WordPress,并准备学习WordPress使用及个性化修改主题的童鞋,说一下phpStudy程序的使用方法,供大家参考。

本地搭建PHP环境并安装运行WordPress,是喜欢折腾的童鞋所必须的,特别是试用网上淘来的各式各样主题、插件的,更应该在本地环境中测试,否则很多主题、插件都会有数据留在数据库中,后患无穷。

一,下载最新版本phpStudy 2016及相关运行库

相关的VC11、VC14运行库下载:

必须安装VC运行库,否则不能运行PHP7环境。

该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有32M,有专门的控制面板。

二、安装phpStudy程序

将下载的phpStudy程序解压到某个分区的根目录中,第一次使用会提示你初始化一下:

phpStudy 2016 (支持PHP7)使用教程

之后在主控制界面点击启动即可。

phpStudy 2016 (支持PHP7)使用教程

三,新建一个数据库

在浏览器址栏中输入:http://localhost/phpmyadmin/

进入数据库管理工具登录页面,用户名及密码都是:root

phpStudy 2016 (支持PHP7)使用教程

进入数据库管理工具页面后,点击右上角的数据库,在新建数据库中输入:wp(名称可任意),整理选择:utf8_general_ci,如图:

phpStudy 2016 (支持PHP7)使用教程

四,下载安装最新WordPress程序

将下载的WordPress程序解压后,将里面的WordPress文件夹复制到 X:\phpStudy\WWW目录中。

修改WordPress文件夹中的wp-config-sample.php程序文件名称为wp-config.php,之后用专门的编辑软件(比如:Notepad++)打开并编辑其中的内容:

只需要修改这三项:

/** WordPress数据库的名称 */

/** MySQL数据库用户名 */

/** MySQL数据库密码 */

数据库名称为:wp

数据库用户名和密码都是:root

需要注意的是前后不能有空格,如图:

phpStudy 2016 (支持PHP7)使用教程

五、完成WordPress程序安装

在浏览器址栏中输入:http://localhost/wordpress/

会看到wordpress的安装界面,输入相关信息完成安装。

phpStudy 2016 (支持PHP7)使用教程

六,切换PHP版本

在phpStudy主界面上点击PHP版本,进入PHP版本及不同环境组合选择界面

phpStudy 2016 (支持PHP7)使用教程

选择之后,点击应用按钮,phpStudy会自动重启服务并切换到你选择的环境。

待续….

VPS新手指南/教程《VPS侦探》

欢迎来到VPS侦探成为VPSer的一员。如果你是VPS新手对VPS和Linux不了解(因一般主要是Linux VPS所以主要提供Linux相关的教程,Windows VPS的可视化界面,网上教程也比较多),那么请跟随下面的VPS相关教程给自己充电,高手可以直接飘过,有任何问题可以到VPS论坛提问。


【提示】由于VPS侦探的官网博客URL中http的协议修改为https了所以,本片内容的URL可能打不开,烦请自己手动修改一下;

例子:http://www.vpser.net/usa-vps/windows-vps-linux-vps.html   无法打开

修改后:https://www.vpser.net/usa-vps/windows-vps-linux-vps.html

官网地址:https://www.vpser.net/vps-howto



一、基础

1、什么是VPS?

2、Linux基础:(使用Linux VPS必须要牢记教程中的基本命令和熟练使用putty,更多的Linux相关知识可以购买Linux书籍或者电子书系统学习)

2.1、Linux VPS下SSH常用命令

2.2、如何使用Putty远程(SSH)管理Linux VPS

2.3、Windows上管理远程Linux VPS/服务器文件工具 – winscp

3、VPS选购教程:(VPS的购买流程基本上都大同小异,可以按下面的教程熟悉VPS的购买流程)

3.1、DiaHosting/DiaVPS 购买教程及基本测试

3.2、Linode 购买、安装、测试、配置教程

3.3、美国VPS推荐美国VPS主机推荐 | 10美元以下VPS

推荐遨游主机OAH新加坡VPSPhotonVPSBudgetVMLinodeVultrVPS2EZLOCVPSHostUS

3.4、VPS优惠信息photonvps遨游主机LOCVPSLinode

3.5、为什么在美国Windows VPS要比Linux VPS贵好多?

3.6、VPS/服务器选购之网络带宽基础知识篇

3.7、VPS主机选择32位还是64位?

3.8、常用VPS测试工具整理

4、VPS管理面板/控制面板使用教程: (注意区分VPS管理面板和虚拟主机管理面板,VPS管理面板是管理VPS的,虚拟主机管理面板是管理VPS上的虚拟主机的。目前常见的VPS管理面板是SolusVM、VePortal、Xensystems)

4.1、SolusVM VPS控制面板使用教程

二、Web服务器环境搭建

(网站是PHP+MySQL的话VPS上一般都是使用LNMP架构或者使用LAMP架构)

1、VPS上一般使用LNMP (占用内存少,效率高),安装教程:http://lnmp.org/install.html

1.1、LNMP/LNMPA/LAMP安装教程:http://lnmp.org/install.html

1.2、Nginx无缝升级 | lnmp一键安装包Nginx自动升级脚本

1.3、在Nginx上配置NameCheap免费SSL

1.4、Linux VPS上配置Nginx反向代理

1.5、免费SSL安全证书Let’s Encrypt安装使用教程(附Nginx/Apache配置)

1.6、LNMP一键安装包PHP自动升级脚本

2、LAMP架构:CentOS Linux VPS Kloxo/Lxadmin虚拟主机控制面板安装教程

2.1、VPS上安装 kloxo/lxadmin中文语言包

2.2、去除Kloxo(原lxadmin)域名个数限制的方法

4、CentOS上DirectAdmin安装教程

5、LNMP下Nginx 中文文件名或目录404无法访问的解决方法

三、系统管理及维护

文件目录管理:

1、Linux SSH远程文件/目录传输命令scp

2、vi(vim)编辑器使用教程

2、nano编辑器使用教程

3、什么吃掉了我的硬盘?查看目录文件大小占用情况,其他类似工具:ncdu

4、Windows上管理远程Linux VPS/服务器文件工具 – winscp

数据备份还原

1、Linux VPS/服务器 网站及数据库自动本地备份并FTP上传备份脚本

2、VPS主机上备份网站和数据库

3、Linux VPS/服务器上轻松导入、导出MySQL数据库

4、Linux VPS上自动备份文件并发送到Gmail (适用G级数据的备份)

5、Linux下重置MySQL root密码

网络管理:

1、Linux和Windows VPS/服务器上查看端口被哪个程序占用

2、Linux下进程/程序网络带宽占用情况查看工具 — NetHogs

小技巧:

1、SSH远程会话管理工具 – screen使用教程

2、Linux VPS/服务器上用Crontab来实现VPS自动化

3、CentOS/RHEL Linux安装EPEL第三方软件源

四、系统安全

1、Linux VPS上DenyHosts阻止SSH暴力攻击

2、Linux VPS禁止某个IP访问

3、DDoS deflate – Linux下防御/减轻DDOS攻击

4、用 iptables 屏蔽来自某个国家的 IP

5、SSH密钥登录让Linux VPS/服务器更安全

6、Linux上iptables防火墙的基本应用教程

五、系统优化&性能测试

1、VPS优化之添加swap交换分区

2、VPS主机上MySQL数据库的优化

3、Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程

4、UnixBench:测试Linux VPS性能

5、三款免费的PHP加速器:APC、eAccelerator、XCache比较

6、常用VPS测试工具

六、系统监控

1、监控宝 – VPS/服务器24小时免费监控 | 监控宝安装教程

2、Linux VPS流量查看/监测工具 — vnStat

3、VPS状态记录工具DVSL Ver0.01

4、VPS运行状态监控–当机/网络故障通知

5、nginx-RRD stats – Nginx图形化监控工具

6、Linux流量监控工具 – iftop (最全面的iftop教程)

7、Linux VPS内存查看命令- free

七、V+P-N等-翻#墙-应-用

因会被重置连接不再提供。

DokuWiki简介及插件推荐【DokuWiki安装方法】

DokuWiki简介

一个简洁的Wiki系统,使用PHP+文本数据库,安装配置都比较简单,基本符合「够用就好」原则。唯一感觉不爽的就是媒体管理器,很不顺手。

在以往的工作实践中,常用它来进行公司内部的交流与协作,有效保障了信息的沟通。

官网地址是 http://www.dokuwiki.org,有中文界面,可以在左侧选择。

安装

下载、解压,浏览器访问后提示 「Setup Error」,选择 「 run the installer」继续。

一般来说,如果权限没问题的话,就会进入到 安装工具 页面,右上角可以更改语言为简体中文。

填写名称、超级用户帐号、内容发布许可协议等信息后保存继续即可。

配置

简单说一下管理页:

  • 用户管理器:添加和管理用户
  • ACL管理器:修改用户/组对于页面和命名空间的权限
  • 插件管理器:可以在这里更改插件,支持远程下载安装
  • 配置设置:关于Dokuwiki的设置,如模版、显示等设置项,一些插件安装后的设置项也在这里
  • http://domino.com/install.php

模版

也就是常说的 主题,下载后解压到 lib/tpl 目录,然后在 管理 - 配置设置 中进行选择即可。

更多的主题可以在 官网的 Extensions页 找到

插件

插件可以通过 管理 - 插件管理器 进行安装,这里介绍几个个人比较喜欢的:

  • imgpaste:在编辑器直接粘贴就可以插入剪贴板中的图片,可以用来快速上传截图。
  • Note:可以在页面中插入醒目的提示文字,有几种默认图标和样式。

未完待续

对了,中文版的 Dokuwiki 语法指南 在这里。先这样~

HDWiki互动百科自定义模板的安装方法

对初学者及时间管理者来说,使用现成的套件是一个很好的主意,最近我也开始换起了现成的HDWiki模板,但是看了半天,在官网提供的下载页面中,虽然资源还算丰富但就是没有如何使用的指导及说明,上网搜寻后也没找到相应结果,也可能是关键词没有设对吧?
 
所以觉得还是有必要这边提一下方法,希望Google能帮助收录给予更多问题者提供一个支持。好了,废话又太多了,其实使用模板很简单:使用FTP上传View下的文件夹至安装源hdwiki/view,上传Style下的文件至hdwiki/style即可。
 
最后再用管理员账户登录后台,在语言/风格 – 风格设置 – 可用模板风格中点选新安张资源的默认后,刷新首页即可。