<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>思诚之道</title>
    <link>http://www.bjhee.com/</link>
    <description>Recent content on 思诚之道</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 03 May 2020 03:30:00 +0000</lastBuildDate>
    
	<atom:link href="http://www.bjhee.com/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>使用gRPC和Proto Buffers来实现PRC调用</title>
      <link>http://www.bjhee.com/grpc.html</link>
      <pubDate>Sun, 03 May 2020 03:30:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/grpc.html</guid>
      <description>上一篇写了Thrift，这篇就把当下比较流行的跨语言服务调用框架gRPC一起介绍下。gRPC来自Google（所以要好好学习，就需要ti子了），如果你了解过Thrift，那gRPC跟其很类似，也是一个RPC的框架。gRPC采用Protocol Buffers</description>
    </item>
    
    <item>
      <title>使用Thrift来实现跨语言的方法调用</title>
      <link>http://www.bjhee.com/thrift.html</link>
      <pubDate>Sat, 02 May 2020 02:30:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/thrift.html</guid>
      <description>有时遇到10多年历史的C++写的老代码，对于不熟悉C++开发的团队来说，最好的方式是不去改它。但是，你却有需求从Web（比如PHP的站点）来调用老代码的库。怎么办？传统的方式是用COM组件，但这就限制在Windows平台上了。要做到完全跨平台，跨各种语言。</description>
    </item>
    
    <item>
      <title>用Grafana和Prometheus搭建监控系统</title>
      <link>http://www.bjhee.com/grafana-prometheus.html</link>
      <pubDate>Tue, 17 Mar 2020 16:00:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/grafana-prometheus.html</guid>
      <description>上一篇介绍了如何用Grafana+InfluxDB+Telegraf来搭建监控平台，趁热打铁，这一篇我们采用Grafana+Prometheus来搭建监控平台，似乎现在应用Prometheus来搭建监控系统的更广泛。为了方便部署，本篇直接使用Docker C</description>
    </item>
    
    <item>
      <title>用Grafana、InfluxDB和Telegraf搭建监控系统</title>
      <link>http://www.bjhee.com/grafana-influxdb.html</link>
      <pubDate>Sat, 14 Mar 2020 11:46:13 +0000</pubDate>
      
      <guid>http://www.bjhee.com/grafana-influxdb.html</guid>
      <description>记录下监控系统的搭建，现在平台监控是必须的，不然出了问题全靠猜。我们先用Grafana+InfluxDB+Telegraf来搭一个。为了方便，全部用Docker部署，Docker的知识就不介绍了。 搭建InfluxDB 监控数据的特点是采样频率高，每个数据点都</description>
    </item>
    
    <item>
      <title>PHP编写扩展来调用动态链接库</title>
      <link>http://www.bjhee.com/php-ext.html</link>
      <pubDate>Fri, 13 Mar 2020 14:47:13 +0000</pubDate>
      
      <guid>http://www.bjhee.com/php-ext.html</guid>
      <description>几年前曾写过Java如何调用动态链接库，这次的任务是用PHP来调用本地动态链接库，这篇收录下方法，主要针对Linux系统。话不多说，快速进入主题。 准备动态链接库 具体可以参考这篇文章，这里不多说了。为了简便，这次我们写一个提供整数加法功能的库。 创建&amp;rdqu</description>
    </item>
    
    <item>
      <title>博客从迁移Wordpress到Hugo</title>
      <link>http://www.bjhee.com/wordpress-to-hugo.html</link>
      <pubDate>Sun, 28 Jul 2019 10:28:34 +0800</pubDate>
      
      <guid>http://www.bjhee.com/wordpress-to-hugo.html</guid>
      <description>静态博客越来越流行了，而且用Markdown写文章也便于管理维护，搞得我也蠢蠢欲动。在工具上，我从Jekyll，Hexo和Hugo中选了Hugo，没什么特别理由，无非就是Ruby，Node和Go中选了Go罢了。不过在转博客过程中，确实遇到不少坑，挺折腾的。</description>
    </item>
    
    <item>
      <title>轻量级压力测试工具http_load</title>
      <link>http://www.bjhee.com/http-load.html</link>
      <pubDate>Sat, 27 Jul 2019 19:17:07 +0800</pubDate>
      
      <guid>http://www.bjhee.com/http-load.html</guid>
      <description>无意中发现了这个工具&amp;rdquo;http_load&amp;rdquo;，又轻巧又简便，整个安装包就10几K。它可以快速用来对网站或者Web API进行压力测试。而且功能还挺强大的，特别是在架构验证过程中，测试某个平台的并发和响应时间相当的管用。 安装http_lo</description>
    </item>
    
    <item>
      <title>用JointJS做一个简单的功能控制图</title>
      <link>http://www.bjhee.com/jointjs.html</link>
      <pubDate>Wed, 30 Jan 2019 11:48:14 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jointjs.html</guid>
      <description>继上一篇介绍了GoJS之后，继续研究JS的绘图工具，毕竟GoJS有些小贵。这次选择了JointJS，完全开源，它还有一个商业版本叫Raddit，功能更强大。不过就我的需求场景，开源的Joint就足够了。接下来，我们看看它是怎么使用的。 JointJS是基于B</description>
    </item>
    
    <item>
      <title>前端交互式图表绘制库GoJS介绍</title>
      <link>http://www.bjhee.com/gojs.html</link>
      <pubDate>Tue, 15 Jan 2019 00:40:29 +0000</pubDate>
      
      <guid>http://www.bjhee.com/gojs.html</guid>
      <description>经人介绍看了下前端的图形绘制库GoJS，感觉挺强大的，特别适合来制作图形绘制工具。因为有需求要提供一个基于Web的图形编程工具，用它当前端看来是个不错的选择。唯一需要注意的是这东东不是免费的，而且还有些小贵，单应用单域名永久授权就要7千美刀，大伙们看情况使</description>
    </item>
    
    <item>
      <title>对于Ubuntu上安装LNMP的更新</title>
      <link>http://www.bjhee.com/lnmp-ex.html</link>
      <pubDate>Mon, 14 Jan 2019 18:07:01 +0000</pubDate>
      
      <guid>http://www.bjhee.com/lnmp-ex.html</guid>
      <description>好久没更博了，垃圾评论一大堆，没时间搞反垃圾插件，先加上了评论审核吧，想留言的朋友们抱歉了。 最近重装了系统的LNMP环境，参考了之前的这篇文章。发现很多变化，在此记录一下，也避免其他人趟坑。 MySQL 5.7以上的Root账号 过去MySQL安装完，root账号都是默</description>
    </item>
    
    <item>
      <title>谈一谈Python的上下文管理器</title>
      <link>http://www.bjhee.com/python-context.html</link>
      <pubDate>Mon, 28 Nov 2016 15:35:36 +0000</pubDate>
      
      <guid>http://www.bjhee.com/python-context.html</guid>
      <description>经常在Python代码中看到with语句，仔细分析下，会发现这个with语句功能好强，可以自动关闭资源。这个在Python中叫上下文管理器Context Manager。那我们要怎么用它，什么时候用它呢。这里我们就来聊一聊。 上下文管理器的作用 很多情况，当我们</description>
    </item>
    
    <item>
      <title>Linux上的后台进程管理工具Supervisor</title>
      <link>http://www.bjhee.com/supervisor.html</link>
      <pubDate>Sun, 27 Nov 2016 15:12:26 +0000</pubDate>
      
      <guid>http://www.bjhee.com/supervisor.html</guid>
      <description>当你的系统上有许多工作进程在跑，你想要一个统一的入口来管理这些进程，包括状态检查，启动和关闭，出错时警告，及自动重启等。那你就需要一个进程管理工具来帮助你。Supervisor就是其中一个简单而又强大的工具。虽说标题写了Linux，其实它可以用在大部分Un</description>
    </item>
    
    <item>
      <title>分布式任务队列Celery的介绍</title>
      <link>http://www.bjhee.com/celery.html</link>
      <pubDate>Sat, 26 Nov 2016 14:30:04 +0000</pubDate>
      
      <guid>http://www.bjhee.com/celery.html</guid>
      <description>在程序运行过程中，要执行一个很久的任务，但是我们又不想主程序被阻塞，常见的方法是多线程。可是当并发量过大时，多线程也会扛不住，必须要用线程池来限制并发个数，而且多线程对共享资源的使用也是很麻烦的事情。还有就是前面几篇介绍过的协程，但是协程毕竟还是在同一线程</description>
    </item>
    
    <item>
      <title>基于协程的Python网络库gevent介绍</title>
      <link>http://www.bjhee.com/gevent.html</link>
      <pubDate>Sun, 06 Nov 2016 14:59:15 +0000</pubDate>
      
      <guid>http://www.bjhee.com/gevent.html</guid>
      <description>继续Python协程方面的介绍，这次要讲的是gevent，它是一个并发网络库。它的协程是基于greenlet的，并基于libev实现快速事件循环（Linux上是epoll，FreeBSD上是kqueue，Mac OS X上是select）。有了gevent，协程</description>
    </item>
    
    <item>
      <title>用greenlet实现Python中的并发</title>
      <link>http://www.bjhee.com/greenlet.html</link>
      <pubDate>Sun, 16 Oct 2016 07:14:56 +0000</pubDate>
      
      <guid>http://www.bjhee.com/greenlet.html</guid>
      <description>在上一篇介绍生成器时，我们讲到了协程（Coroutine），它也被称为微线程。回顾一下，协程可以在一个函数执行过程中将其挂起，去执行另一个函数，并在必要时将之前的函数唤醒。在Python的语言环境里，协程是相当常用的实现&amp;rdquo;并发&amp;rdquo;的方</description>
    </item>
    
    <item>
      <title>谈谈Python的生成器</title>
      <link>http://www.bjhee.com/python-yield.html</link>
      <pubDate>Thu, 18 Aug 2016 02:00:57 +0000</pubDate>
      
      <guid>http://www.bjhee.com/python-yield.html</guid>
      <description>第一次看到Python代码中出现yield关键字时，一脸懵逼，完全理解不了这个。网上查下解释，函数中出现了yield关键字，则调用该函数时会返回一个生成器。那到底什么是生成器呢？我们经常看到类似下面的代码 def count(n): x = 0 while x &amp;lt; n: yield x x += 1 for i in count(5): print i 这段代码执行</description>
    </item>
    
    <item>
      <title>关于Python的Mixin模式</title>
      <link>http://www.bjhee.com/python-mixin.html</link>
      <pubDate>Fri, 27 May 2016 04:00:15 +0000</pubDate>
      
      <guid>http://www.bjhee.com/python-mixin.html</guid>
      <description>像C或C++这类语言都支持多重继承，一个子类可以有多个父类，这样的设计常被人诟病。因为继承应该是个&amp;rdquo;is-a&amp;rdquo;关系。比如轿车类继承交通工具类，因为轿车是一个(&amp;ldquo;is-a&amp;rdquo;)交通工具。一个物品不可能是多种不同的</description>
    </item>
    
    <item>
      <title>探讨下Javascript中的Promise模式</title>
      <link>http://www.bjhee.com/js-promise.html</link>
      <pubDate>Wed, 25 May 2016 01:51:47 +0000</pubDate>
      
      <guid>http://www.bjhee.com/js-promise.html</guid>
      <description>Javascript最令人称道的就是它的事件回调模式，因此即使只有一个执行线程，它也能支持异步高并发。不过回调写多了，代码就会非常复杂难懂，因为回调不像同步代码，执行顺序是从上至下，读回调代码必须跳来跳去，思考什么情况下到底跳到了什么地方，很辛苦，这种情况</description>
    </item>
    
    <item>
      <title>CSS样式选择优先级</title>
      <link>http://www.bjhee.com/css-priority.html</link>
      <pubDate>Tue, 24 May 2016 03:39:57 +0000</pubDate>
      
      <guid>http://www.bjhee.com/css-priority.html</guid>
      <description>记录一下之前看到过的CSS样式优先级计算方法。 CSS的样式优先级由一个4位数字权重表示，对于同一个文档元素，如果存在多个样式，就比较每个样式4位数的优先级权重，然后选择值较大的那个。那么这4位数权重是怎么计算的呢？ 一般我们添加样式有以下几种方法： 内联样式 通</description>
    </item>
    
    <item>
      <title>Flask补充系列–将应用部署在Heroku上</title>
      <link>http://www.bjhee.com/flask-heroku.html</link>
      <pubDate>Fri, 20 May 2016 13:23:53 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-heroku.html</guid>
      <description>之前曾经介绍过如何将Flask应用部署在自己的服务器上，对于手头并不宽裕的程序员来说，购置一台托管服务器还是一笔不小的开销。即便现在有公有云服务器可以买，不过如果你只是以学习为目的，这笔开销还是能省则省了。另外，如果你的应用中需要访问国外被河蟹掉的资源，在</description>
    </item>
    
    <item>
      <title>云平台及OpenStack简介</title>
      <link>http://www.bjhee.com/cloud.html</link>
      <pubDate>Fri, 20 May 2016 03:09:48 +0000</pubDate>
      
      <guid>http://www.bjhee.com/cloud.html</guid>
      <description>贴上一篇两年前写的文章，为了后面写云相关主题服务。 曾几何时，&amp;rdquo;云&amp;rdquo;还是指天上飘的那一朵朵白色的雾团，现在互联网上家家都说自己是&amp;rdquo;xx云&amp;rdquo;。 &amp;ldquo;云&amp;rdquo;这个词，已经被赋上了新的含义。其实真正在</description>
    </item>
    
    <item>
      <title>Flask扩展系列–自定义扩展</title>
      <link>http://www.bjhee.com/flask-ext.html</link>
      <pubDate>Thu, 19 May 2016 01:56:30 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext.html</guid>
      <description>介绍了那么多Flask扩展，该讲下如何写自己的扩展了。你可以写个扩展给自己的项目用，也可以发起审核申请，审核通过的扩展会显示在官方扩展列表中。本篇中，让我们创建一个为视图访问加日志的扩展Flask-Logging，并从中了解到写Flask扩展的规范。 系列文</description>
    </item>
    
    <item>
      <title>Flask扩展系列(九)–HTTP认证</title>
      <link>http://www.bjhee.com/flask-ext9.html</link>
      <pubDate>Wed, 18 May 2016 02:35:37 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext9.html</guid>
      <description>上一篇中，我们介绍了用户会话管理和登录验证，那么对于HTTP请求上的认证，比如Restful API请求的认证要怎么做呢？因为Restful API不保存状态，无法依赖Cookie及Session来保存用户信息，自然也无法使用Flask-Login扩展来实现用</description>
    </item>
    
    <item>
      <title>Flask扩展系列(八)–用户会话管理</title>
      <link>http://www.bjhee.com/flask-ext8.html</link>
      <pubDate>Fri, 29 Apr 2016 07:00:12 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext8.html</guid>
      <description>在入门系列第四篇中，我们曾介绍过如果使用会话Session保存用户登录状态，同时在进阶系列的第四篇中，我们演示了如何写一个视图装饰器来验证当前请求的用户是否已登陆。其实这些用户登录及会话管理功能基本上是每个应用都必须有的，因此自然会存在一个Flask的扩展</description>
    </item>
    
    <item>
      <title>Flask扩展系列(七)–表单</title>
      <link>http://www.bjhee.com/flask-ext7.html</link>
      <pubDate>Wed, 23 Mar 2016 15:50:11 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext7.html</guid>
      <description>表单Form，在Web应用中无处不在。在介绍Flask入门时，我们曾经做过一个非常简单的用户登录表单。其实所有的表单项都有共性，比如有文字输入框，单选框，密码输入框等；此外表单的验证也有共性，比如有非空验证，长度限制，类型验证等。如果有个框架，能把这些共性</description>
    </item>
    
    <item>
      <title>Flask扩展系列(六)–缓存</title>
      <link>http://www.bjhee.com/flask-ext6.html</link>
      <pubDate>Wed, 23 Mar 2016 02:42:23 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext6.html</guid>
      <description>如果同一个请求会被多次调用，每次调用都会消耗很多资源，并且每次返回的内容都相同，大家第一个反应就是该使用缓存了。的确对于大规模互联网应用，缓存是必不可少的，一个好的缓存设计可以使得应用的性能几何级数地上升。本篇我们将阐述如何缓存Flask的请求，并同时介绍</description>
    </item>
    
    <item>
      <title>Flask扩展系列(五)–MongoDB</title>
      <link>http://www.bjhee.com/flask-ext5.html</link>
      <pubDate>Tue, 22 Mar 2016 03:14:52 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext5.html</guid>
      <description>MongoDB是一个文档型数据库，它灵活的Schema，多层次的数据结构和JSON格式的文档使得其已经成为了NoSQL阵营的领头羊。Flask的MongoDB扩展有很多，比如Flask-MongoAlchemy，基于MongoAlchemy实现，非常类似于</description>
    </item>
    
    <item>
      <title>Flask扩展系列(四)–SQLAlchemy</title>
      <link>http://www.bjhee.com/flask-ext4.html</link>
      <pubDate>Mon, 21 Mar 2016 08:01:35 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext4.html</guid>
      <description>熟悉Java的朋友们一定使用过Hibernate或MyBatis吧，这类的框架称为对象关系映射ORM框架，它将对数据库的操作从繁琐的SQL语言执行简化为对象的操作。Python中也有类似的ORM框架，叫SQLAlchemy。本篇我们将介绍Flask中支持S</description>
    </item>
    
    <item>
      <title>Flask扩展系列(三)–国际化I18N和本地化L10N</title>
      <link>http://www.bjhee.com/flask-ext3.html</link>
      <pubDate>Sat, 19 Mar 2016 16:13:14 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext3.html</guid>
      <description>在Jinja2系列中，我们曾经介绍过Jinja2模板的i18n扩展，它可以实现模板中内容的本地化翻译。这里，我们要介绍一个Flask扩展，Flask-Babel。它同Jinja2的i18n扩展一样，可以翻译Jinja2模板中的内容，以及Flask代码中的文</description>
    </item>
    
    <item>
      <title>Flask扩展系列(二)–Mail</title>
      <link>http://www.bjhee.com/flask-ext2.html</link>
      <pubDate>Sat, 19 Mar 2016 09:02:12 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext2.html</guid>
      <description>继续介绍Flask常用的扩展，很多站点都需要发送邮件功能，比如用户注册成功邮件，用户重置密码邮件。你可以使用Python的smtplib来发邮件，不过Flask有个第三方扩展Flask-Mail，可以更方便的实现此功能。这里我们就来介绍下这个Flask-M</description>
    </item>
    
    <item>
      <title>Flask进阶系列(八)–部署和分发</title>
      <link>http://www.bjhee.com/flask-ad8.html</link>
      <pubDate>Tue, 15 Mar 2016 15:40:18 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad8.html</guid>
      <description>到目前为止，我们启动Flask应用都是通过app.run()方法，在开发环境中，这样固然可行，不过到了生产环境上，势必需要采用一个健壮的，功能强大的Web应用服务器来处理各种复杂情形。同时，由于开发过程中，应用变化频繁，手动将每次改动部署到生产环境上很是繁</description>
    </item>
    
    <item>
      <title>使用Nginx和uWSGI来运行Python应用</title>
      <link>http://www.bjhee.com/nginx-uwsgi.html</link>
      <pubDate>Thu, 10 Mar 2016 15:36:10 +0000</pubDate>
      
      <guid>http://www.bjhee.com/nginx-uwsgi.html</guid>
      <description>&amp;ldquo;uWSGI&amp;rdquo;是一个Web应用服务器，它具有应用服务器，代理，进程管理及应用监控等功能。它支持WSGI协议，同时它也支持自有的&amp;rdquo;uWSGI&amp;rdquo;协议，该协议据说性能非常高，而且内存占用率低，为&amp;rdquo;mod</description>
    </item>
    
    <item>
      <title>在Apache中运行Python WSGI应用</title>
      <link>http://www.bjhee.com/apache-wsgi.html</link>
      <pubDate>Wed, 09 Mar 2016 15:56:57 +0000</pubDate>
      
      <guid>http://www.bjhee.com/apache-wsgi.html</guid>
      <description>在生产环境上，一般会使用比较健壮的Web服务器，如Apache来运行我们的应用。如果我们的Web应用是采用Python开发，而且符合WSGI规范，比如基于Django，Flask等框架，那如何将其部署在Apache中呢？本文中，我们就会介绍如何使用Apac</description>
    </item>
    
    <item>
      <title>Python打包分发工具setuptools简介</title>
      <link>http://www.bjhee.com/setuptools.html</link>
      <pubDate>Thu, 03 Mar 2016 14:49:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/setuptools.html</guid>
      <description>作为Python标准的打包及分发工具，setuptools可以说相当地简单易用。它会随着Python一起安装在你的机器上。你只需写一个简短的setup.py安装文件，就可以将你的Python应用打包。本文就会介绍下如何编写安装文件及如何打包分发。 首先，如果</description>
    </item>
    
    <item>
      <title>Python远程部署利器Fabric详解</title>
      <link>http://www.bjhee.com/fabric.html</link>
      <pubDate>Tue, 01 Mar 2016 07:48:34 +0000</pubDate>
      
      <guid>http://www.bjhee.com/fabric.html</guid>
      <description>Fabric是一个Python的库，它提供了丰富的同SSH交互的接口，可以用来在本地或远程机器上自动化、流水化地执行Shell命令。因此它非常适合用来做应用的远程部署及系统维护。其上手也极其简单，你需要的只是懂得基本的Shell命令。本文将为大家详细介绍F</description>
    </item>
    
    <item>
      <title>Flask进阶系列(九)–测试</title>
      <link>http://www.bjhee.com/flask-ad9.html</link>
      <pubDate>Mon, 29 Feb 2016 10:02:50 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad9.html</guid>
      <description>测试是每个应用系统发布前必须经历的步骤，自动化测试对测试效率的提高也是毋庸置疑的。对于Flask应用来说，当然可以使用Web自动化测试工具，比如Selenium等来测。Flask官方推荐的自动化测试方法是一种白盒测试，它依赖于Werkzeug的Client</description>
    </item>
    
    <item>
      <title>Flask进阶系列(五)–文件和流</title>
      <link>http://www.bjhee.com/flask-ad5.html</link>
      <pubDate>Fri, 26 Feb 2016 19:32:45 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad5.html</guid>
      <description>当我们要往客户端发送大量的数据，比如一个大文件时，将它保存在内存中再一次性发到客户端开销很大。比较好的方式是使用流，本篇就要介绍怎么在Flask中通过流的方式来将响应内容发送给客户端。此外，我们还会演示如何实现文件的上传功能，以及如何获取上传后的文件。 系列</description>
    </item>
    
    <item>
      <title>Flask进阶系列(七)–应用最佳实践</title>
      <link>http://www.bjhee.com/flask-ad7.html</link>
      <pubDate>Fri, 26 Feb 2016 13:59:03 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad7.html</guid>
      <description>一个好的应用目录结构可以方便代码的管理和维护，一个好的应用管理维护方式也可以强化程序的可扩展性。在Flask的官方文档，和一些网上资料中都给出了Flask大型应用最佳实践的建议，虽然各有不同，但是宗旨还是类似的。本篇就按我个人的总结，跟大家聊聊Flask应</description>
    </item>
    
    <item>
      <title>Flask进阶系列(六)–蓝图(Blueprint)</title>
      <link>http://www.bjhee.com/flask-ad6.html</link>
      <pubDate>Thu, 25 Feb 2016 07:01:29 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad6.html</guid>
      <description>写进阶系列比入门系列累不少啊，很多地方都需要自己去反复验证，必要时还要翻翻源码，上一个视图写着写着就发现篇幅很长了。还好蓝图比较简单，这篇应该会比较简短，读者们请放心^_^ 我们的应用经常会区分用户站点和管理员后台，比如本博客所使用的WordPress，就有</description>
    </item>
    
    <item>
      <title>Flask进阶系列(四)–视图</title>
      <link>http://www.bjhee.com/flask-ad4.html</link>
      <pubDate>Wed, 24 Feb 2016 14:24:35 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad4.html</guid>
      <description>终于结束了Jinja2的模板引擎之旅，让我们回到Flask中来。在一开始介绍Flask模板时，我们曾说过它是处在MVC模型中的View层，其实更确切的说，应该是模板渲染后的返回内容，才是真正的View，也就是视图。可以理解为，视图就是最终会显示在浏览器上的</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(八)–自定义扩展</title>
      <link>http://www.bjhee.com/jinja2-extension.html</link>
      <pubDate>Mon, 22 Feb 2016 15:57:04 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-extension.html</guid>
      <description>说实话，关于自定义扩展的开发，Jinja2的官方文档写得真心的简单。到目前为止网上可参考的资料也非常少，你必须得好好读下源码，还好依然有乐于奉献的大牛们分享了些文章来帮助我理解怎么开发扩展。本文我就完全借鉴网上前人的例子，来给大家演示一个Jinja2的自定</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(七)–本地化</title>
      <link>http://www.bjhee.com/jinja2-i18n.html</link>
      <pubDate>Mon, 22 Feb 2016 15:19:13 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-i18n.html</guid>
      <description>一个强大的工具一般都支持扩展或插件的开发功能，来允许第三方通过开发新扩展或插件，扩充工具本身功能，并可以贡献给社区。Jinja2也不例外，Jinja2本身提供了一部分扩展，你可以在程序中启用。同时，你还可以创建自己的扩展，来扩充模板引擎功能。本篇会先介绍J</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(六)–块和宏</title>
      <link>http://www.bjhee.com/jinja2-block-macro.html</link>
      <pubDate>Sun, 21 Feb 2016 14:16:53 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-block-macro.html</guid>
      <description>考虑到模板代码的重用，Jinja2提供了块 (Block)和宏 (Macro)的功能。块功能有些类似于C语言中的宏，原理就是代码替换；而宏的功能有些类似于函数，可以传入参数。本篇我们就来介绍下块和宏的用法。 系列文章 Flask中Jinja2模板引擎详解(一)-控</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(五)–全局函数</title>
      <link>http://www.bjhee.com/jinja2-global.html</link>
      <pubDate>Mon, 08 Feb 2016 14:49:11 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-global.html</guid>
      <description>介绍完了过滤器和测试器，接下来要讲的是Jinja2模板引擎的另一个辅助函数功能，即全局函数Global Functions。如果说过滤器是一个变量转换函数，测试器是一个返回布尔值的函数，那全局函数就可以是任意函数。可以在任一场景使用，没有输入和输出值的限制。</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(四)–测试器</title>
      <link>http://www.bjhee.com/jinja2-test.html</link>
      <pubDate>Sun, 07 Feb 2016 15:20:43 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-test.html</guid>
      <description>Jinja2中的测试器Test和过滤器非常相似，区别是测试器总是返回一个布尔值，它可以用来测试一个变量或者表达式，你需要使用&amp;rdquo;is&amp;rdquo;关键字来进行测试。测试器一般都是跟着if控制语句一起使用的。下面我们就来深入了解下这个测试器。 系列文</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(三)–过滤器</title>
      <link>http://www.bjhee.com/jinja2-filter.html</link>
      <pubDate>Sun, 07 Feb 2016 14:45:36 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-filter.html</guid>
      <description>我所了解的模板引擎大部分都会提供类似Jinja2过滤器的功能，只不过叫法不同罢了。比如PHP Smarty中的Modifiers（变量调节器或修饰器），FreeMarker中的Build-ins（内建函数），连AngularJS这样的前端框架也提供了Filt</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(二)–上下文环境</title>
      <link>http://www.bjhee.com/jinja2-context.html</link>
      <pubDate>Sat, 06 Feb 2016 03:09:21 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-context.html</guid>
      <description>Flask每个请求都有生命周期，在生命周期内请求有其上下文环境Request Context。我们在Flask进阶系列第一篇中有详细介绍。作为在请求中渲染的模板，自然也在请求的生命周期内，所以Flask应用中的模板可以使用到请求上下文中的环境变量，及一些辅助</description>
    </item>
    
    <item>
      <title>Python通过ctypes调用C程序实例</title>
      <link>http://www.bjhee.com/python-ctypes.html</link>
      <pubDate>Fri, 05 Feb 2016 06:47:03 +0000</pubDate>
      
      <guid>http://www.bjhee.com/python-ctypes.html</guid>
      <description>在做复杂计算时，Python的执行效率是无法同C比的。而且有些算法已经有开源的C库了，我们也没必要用Python重写一份。那Python怎么调用C语言写的程序库呢？答案就在Python提供的ctypes库，它提供同C语言兼容的数据类型，可以很方便地调用C语</description>
    </item>
    
    <item>
      <title>Flask中Jinja2模板引擎详解(一)–控制语句和表达式</title>
      <link>http://www.bjhee.com/jinja2-statement.html</link>
      <pubDate>Thu, 04 Feb 2016 06:46:43 +0000</pubDate>
      
      <guid>http://www.bjhee.com/jinja2-statement.html</guid>
      <description>让我们开启Jinja2模板引擎之旅，虽说标题是Flask中的Jinja2，其实介绍的主要是Jinja2本身，Flask是用来做例子的。如果对Flask不熟悉的朋友们建议将本博客的入门系列先看下。怎么，不知道什么是模板引擎？你可以将模板比作MVC模式中的Vi</description>
    </item>
    
    <item>
      <title>Flask进阶系列(三)–Jinja2模板引擎</title>
      <link>http://www.bjhee.com/flask-ad3.html</link>
      <pubDate>Mon, 01 Feb 2016 15:26:22 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad3.html</guid>
      <description>其实我们在入门系列第三篇中已经介绍了模板，包括如何渲染模板，表达式和控制语句，模板继承，还有HTML转义。我们也知道了Flask模板是基于Jinja2实现的。其实Jinja2的模板功能远不止这些，想了想，还是决定在进阶系列中，更深入地介绍Jinja2模板引</description>
    </item>
    
    <item>
      <title>Flask进阶系列(二)–信号</title>
      <link>http://www.bjhee.com/flask-ad2.html</link>
      <pubDate>Sun, 31 Jan 2016 12:54:36 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad2.html</guid>
      <description>信号(Signal)就是两个独立的模块用来传递消息的方式，它有一个消息的发送者Sender，还有一个消息的订阅者Subscriber。信号的存在使得模块之间可以摆脱互相调用的模式，也就是解耦合。发送者无需知道谁会接收消息，接收者也可自由选择订阅何种消息。这</description>
    </item>
    
    <item>
      <title>Flask进阶系列(一)–上下文环境</title>
      <link>http://www.bjhee.com/flask-ad1.html</link>
      <pubDate>Sat, 30 Jan 2016 12:58:34 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ad1.html</guid>
      <description>Flask目前最新的版本是0.10.1，在其版本更新过程中，Flask也在不断增加新的、炫酷的功能。我们在入门系列中介绍一些的基本功能，现在让我们开始更深入地了解Flask。 系列文章 Flask进阶系列(一)-上下文环境 Flask进阶系列(二)-信号 Flas</description>
    </item>
    
    <item>
      <title>Python中的装饰器介绍</title>
      <link>http://www.bjhee.com/python-decorator.html</link>
      <pubDate>Tue, 12 Jan 2016 16:28:30 +0000</pubDate>
      
      <guid>http://www.bjhee.com/python-decorator.html</guid>
      <description>装饰器模式Decorator可以动态的扩充一个类或者函数的功能，实现的方法一般是在原有的类或者函数上包裹一层修饰类或修饰函数。在Python语言中，其提供了语法糖，让装饰器使用起来更简便，不过同时也增加了初学者理解这个装饰器背后原理的难度。这里，我们就来剖</description>
    </item>
    
    <item>
      <title>Javascript中this指针的使用实例</title>
      <link>http://www.bjhee.com/js-this.html</link>
      <pubDate>Sun, 10 Jan 2016 07:39:11 +0000</pubDate>
      
      <guid>http://www.bjhee.com/js-this.html</guid>
      <description>Javascript语言中有一个this关键字，后端开发做多了的朋友们习惯称它为&amp;rdquo;this指针&amp;rdquo;。其作用是指向调用当前函数的那个对象。听上去很好理解的一个概念，但是对于后端出身的开发人员来说却很头疼，因为它同Java或C++的thi</description>
    </item>
    
    <item>
      <title>Javascript的事件捕获和事件冒泡</title>
      <link>http://www.bjhee.com/js-event.html</link>
      <pubDate>Sat, 09 Jan 2016 11:12:08 +0000</pubDate>
      
      <guid>http://www.bjhee.com/js-event.html</guid>
      <description>再写篇Javascript的基础知识吧，事件的注册和监听是JS的重要功能。任何同用户交互的界面上一般都注册了相当多的事件来监听用户的操作比如鼠标点击，鼠标移动，键盘输入等。那么问题来了，HTML DOM是个嵌套的结构，当我们在某个元素上注册了事件，而且在其父</description>
    </item>
    
    <item>
      <title>将Ubuntu, RubyGems, NPM和PyPI的源更换为国内镜像</title>
      <link>http://www.bjhee.com/source-mirror.html</link>
      <pubDate>Fri, 08 Jan 2016 14:10:59 +0000</pubDate>
      
      <guid>http://www.bjhee.com/source-mirror.html</guid>
      <description>最近去接一个项目，之前的开发人员比较爱玩，Python, Ruby, NodeJS都用上了，装环境就够倒腾了。特别是国内的网络很不给力，再加上有伟大的&amp;rdquo;墙&amp;rdquo;在，下载安装包的速度简直不能忍。果断将安装的源都换成国内的镜像。这里就顺便记录下更换的方</description>
    </item>
    
    <item>
      <title>Javascript中的对象继承和原型链</title>
      <link>http://www.bjhee.com/js-prototype.html</link>
      <pubDate>Sun, 03 Jan 2016 06:13:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/js-prototype.html</guid>
      <description>后端开发做过n年的朋友们，学Javascript时比较头大的地方就是它的面向对象。严格的说，Javascript(在ES6出现之前)本身并非是个面向对象的语言。当然也有不少文章说JS是面向对象的，我也同意，因为它虽然没有class类，但是可以通过其它方法实</description>
    </item>
    
    <item>
      <title>Javascript闭包和立即执行函数的作用</title>
      <link>http://www.bjhee.com/js-closure-iif.html</link>
      <pubDate>Sat, 02 Jan 2016 15:55:47 +0000</pubDate>
      
      <guid>http://www.bjhee.com/js-closure-iif.html</guid>
      <description>我见过不少初学前端的朋友们认为，要成为前端的高手，就要学会那些主流的框架。比如前两年流行的AngularJS，今年的ReactJS。还有朋友学了ReactJS后，想学ReactNative成为iOS高手。当我问他们一些Javascript的基本概念，比如什</description>
    </item>
    
    <item>
      <title>API文档自动生成工具apiDoc简介</title>
      <link>http://www.bjhee.com/apidoc.html</link>
      <pubDate>Mon, 21 Dec 2015 13:32:42 +0000</pubDate>
      
      <guid>http://www.bjhee.com/apidoc.html</guid>
      <description>随着移动客户端的流行，后端系统需开放越来越多的API来供客户端使用。API文档的编写和管理是一个挑战，随着API不断变化，文档必须及时更新，但编写文档也是个不小的负担。一个比较好的做法(Best Practice)，就是将文档放在代码里，开发人员编写代码时同</description>
    </item>
    
    <item>
      <title>Flask扩展系列(一)–Restful</title>
      <link>http://www.bjhee.com/flask-ext1.html</link>
      <pubDate>Sun, 20 Dec 2015 08:33:11 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-ext1.html</guid>
      <description>看过入门系列的朋友们一定已经被Flask的简洁之美感染到了吧。其实Flask不仅是一个Python Web框架，更是一个开源的生态圈。在基础框架之外，Flask拥有丰富的扩展(Extension)来其扩充功能，这些扩展有的来自官方，有的来自第三方。这一系列会</description>
    </item>
    
    <item>
      <title>前端构建工具Gulp.js</title>
      <link>http://www.bjhee.com/gulp.html</link>
      <pubDate>Sat, 19 Dec 2015 15:41:12 +0000</pubDate>
      
      <guid>http://www.bjhee.com/gulp.html</guid>
      <description>最近一个网站项目，开发人员准备直接把前端的代码拷贝到生产环境来部署，而且使用Ant来执行拷贝，这样就可以前后端一起部署了。这是传统后端开发人员的思维。这样做固然可行，但是当前端代码越来越庞大时，就不好管理了。如同Java的Ant，C++的Make，前端开发</description>
    </item>
    
    <item>
      <title>Flask入门系列(六)–数据库集成</title>
      <link>http://www.bjhee.com/flask-6.html</link>
      <pubDate>Sun, 13 Dec 2015 08:11:57 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-6.html</guid>
      <description>转眼，我们要进入本系列的最后一篇了。一个基本的Web应用功能其实已经讲完了，现在就让我们引入数据库。简单起见，我们就使用SQLite3作为例子。 系列文章 Flask入门系列(一)-Hello World Flask入门系列(二)-路由 Flask入门系列(三)-模板 Fla</description>
    </item>
    
    <item>
      <title>Flask入门系列(五)–错误处理及消息闪现</title>
      <link>http://www.bjhee.com/flask-5.html</link>
      <pubDate>Sun, 13 Dec 2015 06:49:25 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-5.html</guid>
      <description>本篇将补充一些Flask的基本功能，包括错误处理，URL重定向，日志功能，还有一个很有趣的消息闪现功能。 系列文章 Flask入门系列(一)-Hello World Flask入门系列(二)-路由 Flask入门系列(三)-模板 Flask入门系列(四)-请求，响应及会话 Fl</description>
    </item>
    
    <item>
      <title>Flask入门系列(四)–请求，响应及会话</title>
      <link>http://www.bjhee.com/flask-4.html</link>
      <pubDate>Sat, 12 Dec 2015 15:19:13 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-4.html</guid>
      <description>一个完整的HTTP请求，包括了客户端的请求Request，服务器端的响应Response，会话Session等。一个基本的Web框架一定会提供内建的对象来访问这些信息，Flask当然也不例外。我们来看看在Flask中该怎么使用这些内建对象。 系列文章 Flas</description>
    </item>
    
    <item>
      <title>Flask入门系列(三)–模板</title>
      <link>http://www.bjhee.com/flask-3.html</link>
      <pubDate>Wed, 09 Dec 2015 07:45:06 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-3.html</guid>
      <description>在第一篇中，我们讲到了Flask中的Controller和Model，但是一个完整的MVC，没有View怎么行？前端代码如果都靠后台拼接而成，就太麻烦了。本篇，我们就介绍下Flask中的View，即模板。 系列文章 Flask入门系列(一)-Hello World Fla</description>
    </item>
    
    <item>
      <title>Flask入门系列(二)–路由</title>
      <link>http://www.bjhee.com/flask-2.html</link>
      <pubDate>Tue, 08 Dec 2015 04:32:34 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-2.html</guid>
      <description>上一篇中，我们用Flask写了一个Hello World程序，让大家领略到了Flask的简洁轻便。从这篇开始我们将对Flask框架的各功能作更详细的介绍，我们首先从路由(Route)开始。 系列文章 Flask入门系列(一)-Hello World Flask入门系列(二)</description>
    </item>
    
    <item>
      <title>Flask入门系列(一)–Hello World</title>
      <link>http://www.bjhee.com/flask-1.html</link>
      <pubDate>Mon, 30 Nov 2015 08:03:54 +0000</pubDate>
      
      <guid>http://www.bjhee.com/flask-1.html</guid>
      <description>项目开发中，经常要写一些小系统来辅助，比如监控系统，配置系统等等。用传统的Java写，太笨重了，连PHP都嫌麻烦。一直在寻找一个轻量级的后台框架，学习成本低，维护简单。发现Flask后，我立马被它的轻巧所吸引，它充分发挥了Python语言的优雅和轻便，连D</description>
    </item>
    
    <item>
      <title>RequireJS使用范例</title>
      <link>http://www.bjhee.com/requirejs.html</link>
      <pubDate>Sat, 28 Nov 2015 12:43:56 +0000</pubDate>
      
      <guid>http://www.bjhee.com/requirejs.html</guid>
      <description>突然想记录点前端的东西。接触RequireJS是2012年，那时候觉得这个前端的模块化概念很酷，随即也在很多项目中使用了。现在JS的模块化已经随处可见了。基本上概念没什么变化，这个库也相当的容易上手，这里就用RequireJS写一个简单的例子。 先介绍下模块</description>
    </item>
    
    <item>
      <title>使用Scrapy构建一个网络爬虫</title>
      <link>http://www.bjhee.com/scrapy.html</link>
      <pubDate>Thu, 26 Nov 2015 20:45:12 +0000</pubDate>
      
      <guid>http://www.bjhee.com/scrapy.html</guid>
      <description>记得n年前项目需要一个灵活的爬虫工具，就组织了一个小团队用Java实现了一个爬虫框架，可以根据目标网站的结构、地址和需要的内容，做简单的配置开发，即可实现特定网站的爬虫功能。因为要考虑到各种特殊情形，开发还耗了不少人力。后来发现了Python下有这个Scr</description>
    </item>
    
    <item>
      <title>Mac OS下配置Cisco VPN连接</title>
      <link>http://www.bjhee.com/mac-cisco-vpn.html</link>
      <pubDate>Sun, 14 Jun 2015 09:21:45 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-cisco-vpn.html</guid>
      <description>在Windows操作系统下经常会使用Cisco VPN Client来创建VPN连接，但是如果你使用Mac OS X，该怎么创建同样的VPN连接呢？是不是要安装Cisco VPN Client的Mac版呢？其实不用，使用Mac OS X自带的VPN工具即可，本文会告诉你怎么一步一步配</description>
    </item>
    
    <item>
      <title>Mac下Oracle JDK的安装配置</title>
      <link>http://www.bjhee.com/mac-jdk.html</link>
      <pubDate>Fri, 06 Mar 2015 07:17:39 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-jdk.html</guid>
      <description>Mac系统中Oracle JDK的安装比较简单，不过其中有些部分同Linux还是不一样，所以做一下记录。本例使用JDK 1.7也就是Java SE 7作例子。不过不同的版本安装方式基本上完全一样。 下载JDK 从官网http://www.oracle.com/techn</description>
    </item>
    
    <item>
      <title>Mac下MongoDB的安装配置</title>
      <link>http://www.bjhee.com/mac-mongodb.html</link>
      <pubDate>Fri, 06 Mar 2015 06:23:16 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-mongodb.html</guid>
      <description>不少系统都放弃关系型数据库而使用NoSQL，MongoDB就是经常被使用的NoSQL数据库之一。本文介绍了如何在Mac系统中安装配置MongoDB，这里使用的版本是2.6.7。 下载MongoDB 从官网http://www.mongodb.org/downl</description>
    </item>
    
    <item>
      <title>Mac系统常用快捷键</title>
      <link>http://www.bjhee.com/mac-shortcut-key.html</link>
      <pubDate>Thu, 05 Mar 2015 22:10:46 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-shortcut-key.html</guid>
      <description>Mac系统快捷键功能很丰富，不过很多常用快捷键和Windows都不同。从Windows切换到Mac OS的朋友们一般要经历很长时间的痛苦的适应期。当然，有朋友会修改Mac的默认快捷键设置，不过因为Mac键盘上功能键布局也同Windows不一样，所以这种修改帮</description>
    </item>
    
    <item>
      <title>Mac上访问Windows共享文件夹</title>
      <link>http://www.bjhee.com/mac-samba.html</link>
      <pubDate>Thu, 05 Mar 2015 19:36:33 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-samba.html</guid>
      <description>在同一局域网内，要从一台Windows电脑拷东西到Mac上怎么办？当然可以用U盘拷，不过最简单的方法，是在Windows上开放共享文件夹，然后Mac系统来访问。 Mac系统访问Windows共享文件夹 Windows上怎么共享文件夹这里就不介绍了，假设Wind</description>
    </item>
    
    <item>
      <title>Mac上创建多个桌面和启用Dashboard</title>
      <link>http://www.bjhee.com/mission-control.html</link>
      <pubDate>Thu, 05 Mar 2015 17:38:27 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mission-control.html</guid>
      <description>Mac上的Mission Control功能个人认为是个很大的亮点。我可以通过它快速切换应用程序，创建多个桌面，以及使用Dashboard上的小工具。总之，相当的提升效率。 调出Mission Control界面可以有三种方法：Apple鼠标双指轻按、触控板四指</description>
    </item>
    
    <item>
      <title>Mac屏幕缩放功能</title>
      <link>http://www.bjhee.com/mac-zoom.html</link>
      <pubDate>Thu, 05 Mar 2015 16:09:48 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-zoom.html</guid>
      <description>Mac在Retina屏下，文字显示很小。要是投影演示给别人看，那下面人一定很痛苦。这时要启用Mac中的屏幕缩放功能。 打开&amp;rdquo;系统偏好设置&amp;rdquo;(System Preferences)中的&amp;rdquo;辅助功能&amp;rdquo;(Accessib</description>
    </item>
    
    <item>
      <title>在Mac中改变文件的默认打开方式</title>
      <link>http://www.bjhee.com/mac-file-default.html</link>
      <pubDate>Thu, 05 Mar 2015 14:32:51 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-file-default.html</guid>
      <description>Mac系统提供了两种改变文件默认打开方式的方法，一种是只改变一个文件的默认打开方式，另一种是改变某一类型文件（即有着相同扩展名）的默认打开方式。你可以根据需要选择相应的方法，相当灵活。 只改变指定文件的默认打开方式 在Finder中右键点击要改变的文件，调出菜</description>
    </item>
    
    <item>
      <title>Mac下MAMP环境的安装配置</title>
      <link>http://www.bjhee.com/mac-mamp.html</link>
      <pubDate>Wed, 18 Feb 2015 17:04:51 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mac-mamp.html</guid>
      <description>MAMP即Mac OS, Apache, MySQL和PHP的简称，类似于Linux下的LAMP。在Mac OS是Unix的一个分支，但是其安装配置方式和Linux还是有些许的不同。这里记录了本人在安装配置过程中的一些步骤。 Apache 启用Apache Mac系统自带Apache程序，无需安</description>
    </item>
    
    <item>
      <title>MySQL命令行操作技巧</title>
      <link>http://www.bjhee.com/mysql-cmd.html</link>
      <pubDate>Sun, 08 Feb 2015 10:20:13 +0000</pubDate>
      
      <guid>http://www.bjhee.com/mysql-cmd.html</guid>
      <description>MySQL是最重要的开源数据库之一，大部分网站都采用LAMP或LNMP架构作为后台系统架构，而其中的M就代表MySQL。由于在很多情况下，MySQL都是在Linux上使用，没有图形界面，所以本文就介绍一些MySQL在命令行下使用的技巧。 添加用户，在MySQ</description>
    </item>
    
    <item>
      <title>Ubuntu服务器版系统配置方法</title>
      <link>http://www.bjhee.com/ubuntu-config.html</link>
      <pubDate>Sun, 08 Feb 2015 09:47:17 +0000</pubDate>
      
      <guid>http://www.bjhee.com/ubuntu-config.html</guid>
      <description>桌面版的Ubuntu可以通过图形界面来配置系统信息，服务器版就必须通过命令行来设置了。本文会陆续收集一些系统信息的配置方法。 修改网络配置 $ sudo vi /etc/network/interfaces 添加如下格式信息 # 设置为动态DHCP iface eth0 inet dhcp # 设置静态地址 iface eth1 inet static address 192.168.214.100 netmask 255.255.255.0 network 192.168.214.0 broadcast 192.168.214.255 gateway 192.168.214.1 你也可以在命令行中使用&amp;r</description>
    </item>
    
    <item>
      <title>Linux终端使用技巧集合</title>
      <link>http://www.bjhee.com/linux-terminal.html</link>
      <pubDate>Sat, 07 Feb 2015 13:20:53 +0000</pubDate>
      
      <guid>http://www.bjhee.com/linux-terminal.html</guid>
      <description>Linux有着强大的命令行终端，使用熟练的话，效率远比在Windows下图形界面高。本文旨在记录自己在Linux使用过程中了解到的各种技巧，方便将来查询。 实用命令 查询包含某个字符串的文件 $ find . -name &amp;quot;*.java&amp;quot; | xargs grep -s -n &amp;quot;synchronized&amp;quot; 在当前目录下，查询所有使用&amp;rdquo;sync</description>
    </item>
    
    <item>
      <title>查看Linux系统运行状态</title>
      <link>http://www.bjhee.com/linux-status.html</link>
      <pubDate>Sun, 01 Feb 2015 00:50:28 +0000</pubDate>
      
      <guid>http://www.bjhee.com/linux-status.html</guid>
      <description>在Windows上有个强大的工具&amp;rdquo;任务管理器&amp;rdquo;，你可以通过它查询系统CPU，内存，网络，进程等各种状态信息。对于Linux系统，特别是当你只有命令行界面时，该如何查询这些信息呢？本文会介绍一系列Linux命令来查看系统当前运行状态。</description>
    </item>
    
    <item>
      <title>Java调用本地代码（三）—— JNA实现</title>
      <link>http://www.bjhee.com/java-native-3.html</link>
      <pubDate>Sat, 31 Jan 2015 15:30:42 +0000</pubDate>
      
      <guid>http://www.bjhee.com/java-native-3.html</guid>
      <description>JNA即Java Native Access（Java本地访问），是一个开源的Java框架，起初由SUN公司主导开发，目前托管在Github上。JNA是基于JNI之上开发的框架，它为Java程序提供了更简便的方法访问本地库。通过JNA，Java代码可以像调用普通的Jav</description>
    </item>
    
    <item>
      <title>Java调用本地代码（二）—— JNI实现</title>
      <link>http://www.bjhee.com/java-native-2.html</link>
      <pubDate>Sat, 31 Jan 2015 11:37:13 +0000</pubDate>
      
      <guid>http://www.bjhee.com/java-native-2.html</guid>
      <description>JNI即Java Native Interface（Java本地接口），是Java标准的访问本地代码的方法。它包含的JDK里面，无需下载其他的jar包即可实现。上一篇中，我们已经使用C语言创建了一个叫&amp;rdquo;libhello.so&amp;rdquo;的动态链接库，提供一</description>
    </item>
    
    <item>
      <title>Java调用本地代码（一）—— 创建动态链接库</title>
      <link>http://www.bjhee.com/java-native-1.html</link>
      <pubDate>Fri, 30 Jan 2015 13:46:47 +0000</pubDate>
      
      <guid>http://www.bjhee.com/java-native-1.html</guid>
      <description>近期项目需要使用Java调用本地一个很老的C写的库，就顺便研究了下Java调用本地代码的一些方法。整理一下出一个小系列。主要就是介绍两种不同的方法：JNI和JNA。作为第一篇，我们先动手用C写个简单的动态链接库，为后面的文章做准备。 什么是动态链接库 先做个基</description>
    </item>
    
    <item>
      <title>Ubuntu下将用户添加为sudoer</title>
      <link>http://www.bjhee.com/ubuntu-sudoer.html</link>
      <pubDate>Sat, 17 Jan 2015 11:48:49 +0000</pubDate>
      
      <guid>http://www.bjhee.com/ubuntu-sudoer.html</guid>
      <description>具有sudoer权限的用户，可以在命令前加sudo使自己临时拥有root权限来执行该命令。一直以为Ubuntu添加sudoer用户很简单，只需改下/etc/sudoers配置。今天却遇到了难题，导致所有sudo命令都无法执行，花了好大的功夫才恢复过来。觉得</description>
    </item>
    
    <item>
      <title>Java世界里的Lambda</title>
      <link>http://www.bjhee.com/java-lambda.html</link>
      <pubDate>Sun, 11 Jan 2015 16:17:50 +0000</pubDate>
      
      <guid>http://www.bjhee.com/java-lambda.html</guid>
      <description>作为Java世界的大事件Java 8终于在2014年3月18日发布了。在Java 8中，最令人期待的新特性，就属Lambda表达式的支持。其实Lambda在一些脚本语言（如Python，Ruby）中早已存在，但是对于Java程序员来说，这还是新鲜事。Lambd</description>
    </item>
    
    <item>
      <title>WordPress百度SEO简单优化</title>
      <link>http://www.bjhee.com/wordpress-seo.html</link>
      <pubDate>Tue, 30 Dec 2014 17:00:35 +0000</pubDate>
      
      <guid>http://www.bjhee.com/wordpress-seo.html</guid>
      <description>WordPress上有不少SEO的插件，不过大部分是为了Google做优化的，较有名的有&amp;rdquo;All in One SEO Pack&amp;rdquo;。作为国内的站点，当然更希望能在百度上排名靠前。这篇文章不详细介绍各种插件，只提供一些简单的方法帮助你为百度搜索做SEO</description>
    </item>
    
    <item>
      <title>Linux下访问Github</title>
      <link>http://www.bjhee.com/linux-github.html</link>
      <pubDate>Tue, 30 Dec 2014 14:48:21 +0000</pubDate>
      
      <guid>http://www.bjhee.com/linux-github.html</guid>
      <description>Github是时下最流行的代码托管平台，很多出名的开源软件都托管在它之上。它使用了Git来做代码版本管理。这篇文章就简要介绍下，如何在Linux上建立起Github的连接。本文基于的环境是Ubuntu14.04。 Github库创建 注册Github账户（本例</description>
    </item>
    
    <item>
      <title>vim常用命令和使用技巧</title>
      <link>http://www.bjhee.com/vim.html</link>
      <pubDate>Tue, 30 Dec 2014 13:13:05 +0000</pubDate>
      
      <guid>http://www.bjhee.com/vim.html</guid>
      <description>使用Linux的同学们都应该用过vim。vim用的熟练绝对是可以事半功倍。这里我们不讨论编辑器孰优孰劣，只是列出一些vim常用命令和使用技巧，方便大家查询。 基本命令 最基本的操作 i 当前光标处插入 a 当前光标后插入 x 删除当前光标所在的一个字符 :w 存盘 :q 退出 :wq 存盘并</description>
    </item>
    
    <item>
      <title>PuTTY自动登录远程Linux</title>
      <link>http://www.bjhee.com/putty-auto-login.html</link>
      <pubDate>Sun, 28 Dec 2014 11:31:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/putty-auto-login.html</guid>
      <description>每次登陆Linux终端都要输入用户名密码是不是很烦？密码设的简单容易被破解，设的复杂每次输入又费时间，而且容易错。如果你是在用PuTTY来连Linux，那告诉你，有一个自动登录的方法，可以免去你的烦恼。下面就让我们来看下具体步骤。 生成公钥私钥对 首先到PuT</description>
    </item>
    
    <item>
      <title>解决Google Fonts和Gravatar导致WordPress加载慢</title>
      <link>http://www.bjhee.com/wordpress-slow.html</link>
      <pubDate>Sun, 28 Dec 2014 10:48:27 +0000</pubDate>
      
      <guid>http://www.bjhee.com/wordpress-slow.html</guid>
      <description>不少朋友装好WordPress后，发现访问非常慢，不管是前台网站还是后台管理。所以，有人开始抱怨WordPress越来越重了。其实真正的罪魁祸首不是WordPress，而是我们伟大的&amp;rdquo;墙&amp;rdquo;。 打开浏览器调式，查看下请求调用，你会发现有</description>
    </item>
    
    <item>
      <title>在Ubuntu14.04上安装LNMP</title>
      <link>http://www.bjhee.com/lnmp.html</link>
      <pubDate>Sat, 27 Dec 2014 16:21:58 +0000</pubDate>
      
      <guid>http://www.bjhee.com/lnmp.html</guid>
      <description>LNMP即Linux, Nginx, MySQL和PHP的简称，是目前流行的轻量级网站运行环境。本文将提供一个相当简便的方法在UbuntuUbuntu14.04版本上安装LNMP环境。 软件安装 安装Nginx, MySQL和PHP5 $ sudo apt-get install nginx mysql-server php5-fpm php5-mysql 安装过程中会要你输入MyS</description>
    </item>
    
    <item>
      <title>在Nginx上配置多个站点</title>
      <link>http://www.bjhee.com/nginx-sites.html</link>
      <pubDate>Sat, 27 Dec 2014 15:32:29 +0000</pubDate>
      
      <guid>http://www.bjhee.com/nginx-sites.html</guid>
      <description>有时候你想在一台服务器上为不同的域名运行不同的站点。比如www.siteA.com作为博客，www.siteB.com作为论坛。你可以把两个域名的IP都解析到你的服务器上，但是没法在Nginx的根目录里同时运行两个不同的网站。这时候，你就需要使用虚拟目录了</description>
    </item>
    
    <item>
      <title>在Nginx上为WordPress固定链接配置Rewrite</title>
      <link>http://www.bjhee.com/nginx-rewrite.html</link>
      <pubDate>Fri, 26 Dec 2014 16:11:57 +0000</pubDate>
      
      <guid>http://www.bjhee.com/nginx-rewrite.html</guid>
      <description>在WordPress后台中，你可以改变文章的URL链接格式。方法是打开&amp;rdquo;设置-&amp;gt;固定链接&amp;rdquo;，你会看到下面的页面： WordPress中的文章链接默认使用的是带参数的URL格式。不过我们不建议采用这种格式，因为它搜索引擎不友好。所</description>
    </item>
    
    <item>
      <title>LNMP环境WordPress安装指南</title>
      <link>http://www.bjhee.com/wordpress-setup.html</link>
      <pubDate>Thu, 25 Dec 2014 14:52:40 +0000</pubDate>
      
      <guid>http://www.bjhee.com/wordpress-setup.html</guid>
      <description>WordPress可以说是全球范围内应用最广泛的网站内容管理平台，本站就是基于WordPress搭建的。本文将介绍如何在一个LNMP环境上安装WordPress。 准备环境 LNMP环境安装 可以参见《在Ubuntu上安装LNMP》 下载最新版WordPress 中</description>
    </item>
    
    <item>
      <title>Ubuntu上安装配置Samba</title>
      <link>http://www.bjhee.com/samba.html</link>
      <pubDate>Thu, 25 Dec 2014 04:48:04 +0000</pubDate>
      
      <guid>http://www.bjhee.com/samba.html</guid>
      <description>Samba是Linux上提供共享目录服务的软件，类似于Windows上的共享文件夹。本文主要介绍如何在Ubuntu环境中安装及配置Samba服务。 安装Samba $ sudo apt-get install samba 备份Samba初始配置 $ sudo cp /etc/samba/smb.conf{,_bak} 修改Samba配置 $ sudo vi /etc/samba/smb.conf 在[global]部分设置全局</description>
    </item>
    
    <item>
      <title></title>
      <link>http://www.bjhee.com/readme/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/readme/</guid>
      <description>BJHee Blog Hosted on www.bjhee.com</description>
    </item>
    
    <item>
      <title>关于</title>
      <link>http://www.bjhee.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/about/</guid>
      <description>关于我</description>
    </item>
    
    <item>
      <title>归档</title>
      <link>http://www.bjhee.com/archives/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://www.bjhee.com/archives/</guid>
      <description></description>
    </item>
    
  </channel>
</rss>