分类目录归档:技术

Node.js学习笔记(一)

Javascript是一种脚本语言,应用于浏览器,在浏览器上下文中解释和执行,如果脱离了浏览器,则需要一个能对其进行解释和执行的对应环境,Node.js就提供这样一种环境,能够在服务器端编写Javascript应用,在服务器端运行时对Javascript代码进行解释然后正确执行,Node.js使用Google V8引擎来解释和执行Javascript代码。

《Node 入门》学习

Node.js同时提供内置的接口模块组成一个开发框架,可以在上面快速建立可扩展的Web应用。Node.js是基于事件驱动的,采用非阻塞I/O模型,单线程或单进程运行,能够较好的支持跨不同设备的数据密集型实时应用。

要使用Node.js首先需要进行安装,Node.js支持Windows OS、Mac OS、Linux OS,目前Node.js最新版本为0.10.2,同时Node.js也是开源的。

关于Node.js如何安装,请参阅《官方安装指南》。

安装完毕后,照例来一个Hello World!来看看是否正常运行。用文本编辑器创建一个helloworld.js文件并输入代码

console.log("Hello World!");

命令行窗口到该js文件所在目录,录入node helloworld.js,如果能正常看到命令行输出Hello World!就表示安装OK。

helloworld cmd

Node.js提供了不少的网络模块,HTTP、DNS、NET、UDP、HTTPS等,可以很方便的进行服务器的开发,使用浏览器来访问Node.js应用可以使用其提供的模块,依旧以Hello World!为例,使用HTTP模块建立一个http服务器,使用web浏览器访问返回Hello World!,修改helloworld.js文件。

var http = require("http");

http.createServer(function(request,response) {
    response.writeHead(200,{"Content-type": "text/plain"});
    response.write("Hello World!");
    response.end();
}).listen(9999);

这样就建立了一个简单的http服务器,在本地监听9999端口,对于http请求,该服务器返回一个http状态为200,http头类型为Content-Type,其值为text/plain,并向http主体发送Hello World!文字的响应。

在命令行再次录入node helloworld.js ,回车

http server

进入监听http请求状态,打开web浏览器,在浏览器地址栏中输入http://localhost:9999/,回车,显示如下

helloworldbrowser

很容易就构建了一个http服务器,在createServer函数参数中使用匿名函数来最为回调函数监听http请求,有任何http请求后,Node.js就调用该回调函数处理请求,并给出响应。

使用Node.js的模块使用require,类似于Java的Import、C#的Using等,创建一个项目时,会根据设计划分为不同的模块,在一个模块中调用另外一个模块公开的函数,这样的函数需要导出,导出模块中的函数使用exports。具体为 exports.外模块调用函数名 = 导出的函数名。做个练习,server.js构建上述http服务器,index.js为项目入口模块。

server.js代码

var http = require("http");
function start() {
    http.createServer(function(request, response) {
        response.writeHead(200,{"Content-Type": "text/plain"});
        response.write("Hello World!\n");
        response.write("Exports function start");
        response.end();
    }).listen(9999);
}

exports.go = start;

index.js代码

var server = require("./server");
server.go();

http服务器一般情况下根据请求的不同给予不同的反馈,所以需要对于不同的请求做不同的处理,http请求包括URL及GET/POST参数,这些数据都包含在匿名函数request对象中。

—————–我是分割线———————–

继续下去应该先对Javascript进行必要的学习,同时需要粗略的看看node.js的API文档。

用户名与密码正确无法登入wordpress后台

在wordpress部署完毕后,在用户名与密码输入正确后却无法登录入wordpress的仪表盘,上次在安装部署后碰到该问题,通过google寻找到解决方法,这次升级覆盖了文件,又碰到这个问题,索性在这里记录一下,以方便以后快速的查询。

如果您在录入正确的用户及密码后,提交又返回登录页面,可尝试采用这种方法来进行解决。

寻找/wp-includes/pluggable.php文件,定位到wp_set_auth_cookie函数,查找该函数中:

setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);

将ADMIN_COOKIE_PATH,修改为SITECOOKIEPATH即可,修改后如下:

setcookie($auth_cookie_name, $auth_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure, true);

将cookie的作用目录由/wp-admin目录变为wordpress的根目录。这样设置后,解决该问题。

 

vim缩进

良好的缩进配置会使得很大程度上提升自己的阅读效率,同时对同一配置所编写的文档显得非常的整齐。从个人的习惯上来讲,我自己比较习惯缩进2个宽度。

比较常用的有关缩进的属性有以下几个:
autoindent –vim使用自动对齐,将当前行的对齐格式应用到下一行
shiftwidth –自动缩进的宽度
tabstop –Tab键的空格长度

可以编辑vim的配置文件,加入对缩进属性的设置,vim的配置文件为_vimrc,在其中对以上属性进行设置即可。

    set autoindent
    set tabstop=2
    set shiftwidth=2

在Apache中增加虚拟目录

在Apache中添加虚拟目录的步骤如下:

1、打开httpd.conf配置文件,找到IfModule alias_module,添加虚拟目录;

2、对虚拟目录进行设置;

3、重启apache服务;

比如,添加一个selfjobs的虚拟目录,首先在<IfModule alias_module>…</IfModule>之间添加:

添加虚拟目录


    Alias /selfjobs/ "/var/www/html/phpjobs/"

配置目录


    AllowOverride None
    Options None
    Order allow,deny
    Allow from all

重启apache服务

apachectl start

C#中让你的程序启动在第二个显示器上

目前很多应用场景都会选用双显示器,或者开发系统的某功能需要投影动态的显示,会依据主操作界面的操作在第二个显示器上或者投影上进行相应的显示。

在Windows中的设置(以Windows 7)一般在分辨率中设置扩展显示,这时候第二个屏幕的左边就是第一个屏幕的宽。

在C#中,可使用如下代码完成:

System.Windows.Forms.Screen[] sc;
sc = System.Windows.Forms.Screen.AllScreens;
if(sc.length > 1)
{
    this.Left = sc[0].Bounds.Width;
    this.Top = sc[0].Bounds.Top;
    this.Height = sc[1].Bounds.Height;
    this.Width = sc[1].Bounds.Width;
}
else
{
    this.Left = sc[0].Bounds.Left;
    this.Top = sc[0].Bounds.Top;
    this.Height = sc[0].Bounds.Height;
    this.Width = sc[0].Bounds.Width;
}

-EOF-