<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[窦宁波 的专栏]]></title><description><![CDATA[熟悉移动终端开发，c++，Qt,php.现在在用python....码农一枚]]></description><link>https://blog.youkuaiyun.com/NRC_DouNingBo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; NRC_DouNingBo]]></copyright><item><title><![CDATA[跨机器登陆mysql-ssh隧道]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/18618311</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/18618311</guid><author>NRC_DouNingBo</author><pubDate>Tue, 21 Jan 2014 18:16:22 +0800</pubDate><description><![CDATA[有时我们需要登陆mysql,但是mysql-server可能对登陆做了ip授权，比如：mysql对A机器做了登陆授权，我们在这上边安装了php/python的对应model，从而可以直接使用php/python脚本来进行sql操作.  但是该台机器却没有安装mysql-client客户端！  此时如果我想在A机器上直接进行sql查询该怎么办呢？


最简单的：安装一个sql客户端. 
那有]]></description><category></category></item><item><title><![CDATA[在sogou-upd我们是如何使用python的(1)]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/14644565</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/14644565</guid><author>NRC_DouNingBo</author><pubDate>Sat, 09 Nov 2013 11:50:54 +0800</pubDate><description><![CDATA[搜狗用户平台事业部有大量的资源导航项目具有相似的流程,以kan.sogou.com搜狗影视为例，主要流程如下：
1.合作抓取影视第三方(迅雷/腾讯视频/土豆...)的数据
2.对抓取到的数据进行清洗/聚合/rank计算
3.将经过2之后的数据展示在用户面前


其他类似搜狗笑话，搜狗小说,搜狗团购都是类似的逻辑.所以我们在新的技术架构时希望可以做一套通用的流程框架出来。主要的技术方案如]]></description><category></category></item><item><title><![CDATA[server多线程并发模型和多进程并发模型的选择]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8488393</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8488393</guid><author>NRC_DouNingBo</author><pubDate>Thu, 10 Jan 2013 10:31:35 +0800</pubDate><description><![CDATA[做unix上server程序实现时:到底是该选择多线程并发模型还是多线程并发模型呢？
想到这个问题是源于阅读scgi,nginx,memched的源码~如下：

scgi的实现是用的多进程，主进程负责监听socket连接请求，然后分发给各个子进程来处理。
nginx的实现是用的多进程，创建好子进程之后，各个子进程直接自己来监听socket连接请求并处理。
memched的实现则是用的多线]]></description><category></category></item><item><title><![CDATA[web网站的自动化部署]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8486750</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8486750</guid><author>NRC_DouNingBo</author><pubDate>Wed, 09 Jan 2013 18:32:07 +0800</pubDate><description><![CDATA[以前实现一个web网站时，部署起来特别费劲。因为rd要搭建自己的测试环境，QA还要去在自己机器搭建环境。。那来回搬环境就容易出现各种问题。
主要问题有以下几个：
①网站配置文件中要指定很多特定的配置，而后在代码中要读取这些配置。 那QA拿到你代码后去部署时还要手动修改你的配置文件，如果配置多的话及其繁琐并且容易出错。


举个简单例子：我们要将domian写在配置文件中，而后在代码中可能]]></description><category></category></item><item><title><![CDATA[最近学到的技巧(python调试信息的获取等)]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8350608</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8350608</guid><author>NRC_DouNingBo</author><pubDate>Thu, 20 Dec 2012 16:57:58 +0800</pubDate><description><![CDATA[①以前写Php程序的时候，要调试程序直接将调试信息给echo输出到页面上.
Python也可以，直接print就ok了。但是这样不安全，万一你print了一行信息，结果在上线时忘记注释了，用户访问页面时就会看到这个调试信息。那怎么解决这个问题呢？既想可以看到调试信息，又不想输出到页面上。
做法很简单，我们把stdout标准输出重定向到日志文件上，然后tail -f日志就可以在命令行中看到这些信]]></description><category></category></item><item><title><![CDATA[scgi和quixote的结合使用]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8348897</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8348897</guid><author>NRC_DouNingBo</author><pubDate>Thu, 20 Dec 2012 16:18:38 +0800</pubDate><description><![CDATA[首先：scgi是什么。是app与webserver通信的一种协议.
那按照我的理解：比如说webserver是apache，启动后其会监听某个端口的请求,而后处理之。如果是静态的那就自己搞定，如果是动态的呢？我们就将之交给scgi来处理。
scgi是一种c/s架构,mod_scgi是client，我们将这个client加载到nginx中，这样nginx就有能力与scgi-server通信了.]]></description><category></category></item><item><title><![CDATA[wsgi协议]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8332636</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8332636</guid><author>NRC_DouNingBo</author><pubDate>Wed, 19 Dec 2012 17:25:49 +0800</pubDate><description><![CDATA[看wsgi协议的定义，感觉都没整明白是什么意思。后来用了之后大致有了自己的理解，这里写一下自己的理解吧：

wsgi有两方，服务器方 和 应用程序
        ①服务器方：其调用应用程序，给应用程序提供(环境信息)和(回调函数)， 这个回调函数是用来将应用程序设置的http header和status等信息传递给服务器方.
②应用程序：用来生成返回的header,body和status]]></description><category></category></item><item><title><![CDATA[守护进程]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8331929</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8331929</guid><author>NRC_DouNingBo</author><pubDate>Wed, 19 Dec 2012 16:22:43 +0800</pubDate><description><![CDATA[daemon是运行在后台的一种特殊进程。它独立于控制终端并且周期性的执行某种任务或者等待处理某些发生的事件。

从上边定义可以看到：守护进程其实已经脱离了之前的所有环境。所以它很游离，很独立。举个不确定的例子：daemon类似FBI或者克格勃，没人能看到它，但是它却一直在后边做一些事情。


我们最长用daemon来做什么事情呢？我们可以用其来监控一个进程的运行，如果发现其被kill了：]]></description><category></category></item><item><title><![CDATA[gunicorn.werkzeug和quixote的结合使用-框架篇]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8314657</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/8314657</guid><author>NRC_DouNingBo</author><pubDate>Tue, 18 Dec 2012 16:56:18 +0800</pubDate><description><![CDATA[开发python web站点时，本地用gunicorn,werkzeug和quixote来搭建环境。


其实这是两种方式： 
①gunicorn+quixote
②werkzeug+quixote


Gunicorn是一个python wsgi的 web-server服务器
werkeug则是一个wsgi的lib工具。


quixote：通俗来说，主要功能就是转发请求]]></description><category></category></item><item><title><![CDATA[2011年度总结]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/7202588</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/7202588</guid><author>NRC_DouNingBo</author><pubDate>Sun, 15 Jan 2012 14:45:54 +0800</pubDate><description><![CDATA[2011年过去了，最近项目比较忙，一直没有时间写篇总结，马上放假回家了，趁个周末写一篇。
2011对我是很重要的一年，发生了很多大事。
1：3月毕业，4月入职百度，转身从客户端开发转server后台开发。
2：在公司从事了很有挑战性的新项目，而且已经很可能很成功的项目，锻炼超级大。
3：加班成为家常便饭，10月后基本一周上线两次，加班到晚上11点以后很正常，加班到下半夜也不时出现~
4：]]></description><category></category></item><item><title><![CDATA[用c/c++写php扩展模块的杂想]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6579127</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6579127</guid><author>NRC_DouNingBo</author><pubDate>Fri, 01 Jul 2011 11:44:00 +0800</pubDate><description><![CDATA[       我们知道：php支持c/c++写的扩展模块。原因无他，因为php底层本质上就是c实现的，既然人家zend可以用c来实现现在php的这么多功能函数，我们当然也可以了。这一篇博文不会讨论如何去实现这样一个扩展，只是分析一下原理和优缺点以及一些杂想。      1：为什么要写扩展呢？比如我要实现一个功能，我完全可以用php来书写封装一个函数，这样足矣。为什么要这么费劲的去用c去扩展一个]]></description><category></category></item><item><title><![CDATA[php脚本的执行过程（编译与执行相分离）]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6576777</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6576777</guid><author>NRC_DouNingBo</author><pubDate>Thu, 30 Jun 2011 11:47:00 +0800</pubDate><description><![CDATA[     php的编译和执行是分离开的，亦即：先执行完编译，而后再执行。很多人会说：c++也是如此啊，确实。不过php的这种分离可以给我们提供很多便利，当然不可避免也有很有缺点。       先说一下整个过程：      ①php会调用编译函数zend_compile_file()来进行编译。 这个函数的具体实现其实是包括两个主要过程的：词法分析（Lex实现），语法分析（Yacc实现）]]></description><category></category></item><item><title><![CDATA[一个php请求怎样才算结束？]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6575845</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6575845</guid><author>NRC_DouNingBo</author><pubDate>Wed, 29 Jun 2011 21:05:00 +0800</pubDate><description><![CDATA[     前边文章说过：web-server会创建一个线程（进程）来处理收到的php请求。（使用线程还是进程的区别见博文：http://blog.youkuaiyun.com/NRC_DouNingBo/archive/2011/06/29/6575807.aspx）。那这个请求怎样才算处理完毕呢？怎样才能让web-server回收这个线程呢？？       user进行一次web请求，其是要请求数据的。]]></description><category></category></item><item><title><![CDATA[php的线程不安全性]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6575807</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6575807</guid><author>NRC_DouNingBo</author><pubDate>Wed, 29 Jun 2011 20:38:00 +0800</pubDate><description><![CDATA[      上一篇文章说到一个问题：wev-server处理一个php请求，是给它一个线程呢？还是一个进程呢？这就要牵扯php本身的一些特性了。      早期版本的x系统，包括linux等，其实不支持线程的。故而:那是为每一个php请求都创建分配了一个进程。 网上也很多人说这个问题，因为php手册上说：php是使用线程的。实际上：此时是用多进程来模拟线程而已。所以你查看线程进]]></description><category></category></item><item><title><![CDATA[web开发入门]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6575765</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6575765</guid><author>NRC_DouNingBo</author><pubDate>Wed, 29 Jun 2011 20:05:00 +0800</pubDate><description><![CDATA[     以前无论在nokia还是tencent都是做移动客户端开发，那时候也都是用编译型的c++语言。但是来到baidu后做的却是后台开发，此时所用所要关注的都是以前不曾接触过的，主要是各种服务器脚本和数据库技术。当然：对这些技术的使用本身而言：网上N多文章，也很多相关的书。问题是：没有几本书可以把相互之间的关系解释清楚，比如:webserver和php脚本的关系；php底层实现；mysql底层]]></description><category></category></item><item><title><![CDATA[回京]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6288440</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6288440</guid><author>NRC_DouNingBo</author><pubDate>Wed, 30 Mar 2011 13:07:00 +0800</pubDate><description><![CDATA[<br />     去年7月来到腾讯，到现在有半年多了，参与了两个项目，可惜由于一些私人原因需要回京，只好离职。另找下家，签约baidu 。明天---新的开始！ 加油！]]></description><category></category></item><item><title><![CDATA[qt for symbian资源和dll的拷贝]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6074018</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6074018</guid><author>NRC_DouNingBo</author><pubDate>Mon, 13 Dec 2010 20:26:00 +0800</pubDate><description><![CDATA[      当一个程序需要加载使用很多资源时：我们需要将这些资源都拷贝到真机中。比如：我们要播放几个声音文件，需要将声音文件给拷贝到真机中。类似的：程序可能还需要很多dll。这些dll又分两种：一种是已经做好的，一种是我们项目中生成的（亦即：我们工程分很多模块，最终生成了若干个dll和最终的exe）。对于前者：我们只要做一个拷贝即可，而对于后者：则需要生成后拷贝.      对于纯symbian程序，这些都是写在mmp和pkg文件中的，但是在symbian中：我们需要将其全部书写在pro工程文件中，而后qm]]></description><category></category></item><item><title><![CDATA[qt for symbian前后台切换事件的截获处理]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6073981</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6073981</guid><author>NRC_DouNingBo</author><pubDate>Mon, 13 Dec 2010 20:01:00 +0800</pubDate><description><![CDATA[<br />      在项目中需要做一个功能：当程序切换到后台时：需将代表程序的托盘显示在手机桌面上。而当程序切换到前台显示出来时则把托盘给隐藏。为了实现这一点，需要先截获程序前后台切换事件。 原本写过一片博文处理这个问题，但是那个并不怎么好用，这里给出最终的解决方案。<br />      首先：qt本身无法跨平台实现这一点,我们只能针对不同平台来定制不同的方法。在qt for symbian下：有一个symbianEventFilter()事件过滤器，其可以截获所有symbian事件，这其中就包括前后]]></description><category></category></item><item><title><![CDATA[symbian c++ 移植为 qt (2)]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6066638</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6066638</guid><author>NRC_DouNingBo</author><pubDate>Thu, 09 Dec 2010 22:38:00 +0800</pubDate><description><![CDATA[    该篇讲一些移植项目进展中出现的问题：    1:我们移植出最初版本之后，别组同事拿去参考，于是他们也搭建了环境,拉下代码，编译也通过，但是emulator下桌面点击图标都没反应，也不报错，这原因何在?当在emulator中点击运行一个程序结果毫无反应时:主要有以下几个原因      ①缺相应的dll库，也许你的工程要用到很多自己写的dll库，结果缺失或者拷贝不到位，导致exe无法找到，从而启动不了。      ②版本不对,比如原本开发是用的qt-mobility1.0.2， 结果你安装的开发环境是q]]></description><category></category></item><item><title><![CDATA[symbian c++ 移植为 qt (1)]]></title><link>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6066587</link><guid>https://blog.youkuaiyun.com/NRC_DouNingBo/article/details/6066587</guid><author>NRC_DouNingBo</author><pubDate>Thu, 09 Dec 2010 22:09:00 +0800</pubDate><description><![CDATA[<br />     最近一直在做一个项目，主要是将原本symbian c++写的工程移植为qt版本。这其中遇到N多问题，自己也鲜有总结，接下来几篇文章就总结一下这其中的一些方法经验和教训，大家一起交流。<br />     symbian发展到symbian3和symbian4之后：原本的symbian c++生存空间越来越小，而qt将最终成为主要的趋势。所以原本很多用symbian c++写的项目都面临着一个问题：要么最新版本全部推倒用qt重写，要么做移植。 可能很多人会说：symbian c++的框架]]></description><category></category></item></channel></rss>