新建一个包,并生成可以直接在命令行执行的指令
摘要:1 在本地新建一个目录four, 在此目录执行指令: npm init2 在/four/lib/目录里放js代码 : inlib.jsmodule.exports = function(message){ return message;}3 在/four/bin/里放指令文件: inbin.js#! /usr/bin/env nodevar libsth = require("../lib/inlib.js");console.log(libsth("gsky"));4 编辑/four/package.json,其中:{ “name” : “four”,
阅读全文
posted @
2014-03-26 14:26
秋叶leaf
阅读(247)
推荐(0)
(转)nodejs npm国内镜像
摘要:http://cnodejs.org/topic/4f9904f9407edba21468f31e这个也是网上搜的,亲自试过,非常好用!镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):1.通过config命令npm config set registry http://registry.cnpmjs.org npm info underscore (如果上面配置正确这个命令会有字符串response)2.命令行指定npm --registry http://registry.cnpmjs.org info underscore 3.编辑~/.np
阅读全文
posted @
2014-03-25 23:29
秋叶leaf
阅读(572)
推荐(0)
NodeJS学习笔记(三)
摘要:1 在Node.js 中如何用异步的方式读取一个文件,下面是一个例子://readfile.js varfs = require('fs'); fs.readFile('file.txt', 'utf-8', function(err, data) { //第三个参数是回调函数,JavaScript 支持匿名的函数定义方式if(err) { console.error(err); } else{ console.log(data); } }); console.log('end.'); 运行的结果如下:end. Contents
阅读全文
posted @
2014-03-25 22:04
秋叶leaf
阅读(183)
推荐(0)
NodeJS学习笔记(二).js
摘要:1 Stream(数据流) 当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS中通过各种 Stream 来提供对数据流的操作。(1)为数据来源创建一个只读数据流:var rs = fs.createReadStream(src); // 从src读取文件, 返回一个新的可读流对象rs.on('data', function (chunk) { // 触发'data'事件rs.pause(); //暂停触发'data'事件doSomething(chunk, function () {rs.re
阅读全文
posted @
2014-03-25 18:23
秋叶leaf
阅读(500)
推荐(0)
minimist的用法
摘要:npm install minimist --save 后,#!/usr/bin/env nodevar parseArgs = require('minimist')(process.argv.slice(2));console.log(parseArgs); //=> { _: [ 'gsky' ], drunk: true }var index = require('/home/vagrant/greet');console.log(index(parseArgs._,parseArgs.drunk));
阅读全文
posted @
2014-03-25 01:15
秋叶leaf
阅读(1451)
推荐(0)
npm link没有效果的问题
摘要:在执行npm link命令后, 没有效果:老大给的原因和解决方案:因为某些版本的 nvm 在切换 node 的时候不会设定 NODE_PATH 这个环境变数。(homebrew 里 nvm 版本会有这个问题)这样照成 global package 无法 require (npm link 的安装模式是 global)。解决方案:local npm linknpm link; npm link greet安装 github 上最新的 nvm.PR #3423解决了这个问题。
阅读全文
posted @
2014-03-25 00:04
秋叶leaf
阅读(3580)
推荐(0)
DOM Based XSS介绍
摘要:DOM Based XSS: 通过修改页面的DOM节点形成的XSS。实例:点击write按钮后,会在当前页面插入一个超链接,其地址为文本框的内容。在test()函数中,修改了页面的DOM节点。通过innerHTML把一段用户数据当做HTML写入到页面中,这就造成了DOM Based XSS。 1 2 3 4 5 12 13 14 15 16 17 18 构造如下数据输入:' onclick=alert(/xss/) //此时第8行页面代码变成:document.getElementById("t").innerHTML="testLink";首先
阅读全文
posted @
2014-03-23 16:25
秋叶leaf
阅读(976)
推荐(0)
NodeJS学习笔记(一)
摘要:1 JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。2 运行在浏览器中的JS的用途是操作DOM,浏览器就提供了 document 之类的内置对象。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了 fs、http 等内置对象。3 在Linux系统下,使用NodeJS监听80或443端口提供HTTP(S)服务时需要root权限.一种方式是使用 sudo 命令运行NodeJS。例如通过以下命令运行的 server.js 中有权限使用80和443
阅读全文
posted @
2014-03-22 13:22
秋叶leaf
阅读(510)
推荐(0)
用Ruby写自动生成Sql语句脚本遇到的问题
摘要:1 打开文件的方法: File.readlines("d:/AutoSql/info.txt")这条语句返回的结果是一个Array,所以需要写成File.readlines("d:/AutoSql/info.txt")[0]以便调用.同时,这样会在后面带上换行符,因此还需要调用chomp方法,最后的语句:msisdn=File.readlines("d:/AutoSql/info.txt")[0].chomp2 根据时间动态生成文件名:获取时间的方法 time=Time.now#生成文件名name=msisdn+'-'
阅读全文
posted @
2014-03-21 16:56
秋叶leaf
阅读(508)
推荐(0)
JavaScript初学笔记
摘要:1 HTML 中的脚本必须位于 标签之间。浏览器会解释并执行位于 之间的 JavaScript2 脚本可被放置在 HTML 页面的 和 部分中。3 如需使用外部文件,在 提示:外部脚本不能包含 JavaScript 由 web 浏览器来执行。在这种情况下,浏览器将访问 id="demo" 的 HTML 元素,并把它的内容(innerHTML)替换为 "My First JavaScript"。5 提示:JavaScript 语句和 JavaScript 变量都对大小写敏感。6 如果重新声明 JavaScript 变量,该变量的值不会丢失:在以下两条语句执
阅读全文
posted @
2014-03-20 22:00
秋叶leaf
阅读(145)
推荐(0)
Linux解压时报tar: node-v0.10.26-linux-x86/bin/npm: Cannot create symlink to `../lib/node_modules/npm/bin/npm-cli.js': Protocol error
摘要:今天在linux虚拟机下安装了node的最新版本,最开始把压缩包直接放在vagrant共享目录下解压,结果在最后报tar: node-v0.10.26-linux-x86/bin/npm: Cannot create symlink to `../lib/node_modules/npm/bin/npm-cli.js': Protocol errortar: Exiting with failure status due to previous errorsroot@precise32:/vagrant# tar: node-v0.10.26-linux-x86/bin/npm: Ca
阅读全文
posted @
2014-03-19 20:51
秋叶leaf
阅读(2305)
推荐(0)
Ruby中require,load,include,extend的区别
摘要:require,load用于文件,如.rb等等结尾的文件。include,load则用于包含一个文件中的模块。require 一般情况下用于加载库文件,而load则用于加载配置文件。1 require:加载一个库,并且只加载一次,如果多次加载会返回false。只有当要加载的库位于一个分离的文件中时才有必要使用require。使用时不需要加扩展名,一般放在文件的最前面:require ‘test_library’2 load:load用来多次加载一个库,必须指定扩展名:load ‘test_library.rb’3 extend:在定义类时使用,把module的实例方法作为当前类的类方法.mod
阅读全文
posted @
2014-03-17 17:11
秋叶leaf
阅读(890)
推荐(0)
rspec入门
摘要:1 describe "Home page" do2 3 it "should have the content 'Sample App'" do4 visit '/static_pages/home' #使用了Capybara中的visit函数来模拟在浏览器中访问/static_pages/home的操作5 expect(page).to have_content('Sample App') #使用了Capybara中的page变量来测试页面中是否包含了正确的内容6 end7 end
阅读全文
posted @
2014-03-17 00:27
秋叶leaf
阅读(161)
推荐(0)
动态生成Rails安全权标方法
摘要:因为Rails使用安全权标来加密会话,所以生成Rails项目后,需要修改默认的secret_token文件。将config/initializers/secret_token.rb里自动生成的字符串改为:require 'securerandom'def secure_token token_file = Rails.root.join('.secret') if File.exist?(token_file) # Use the existing token. File.read(token_file).chomp else # Generate a new
阅读全文
posted @
2014-03-16 16:31
秋叶leaf
阅读(288)
推荐(0)
Linux环境下MongoDB的下载与安装
摘要:第一步:下载MongoDB安装包MongoDB的官网:http://www.mongodb.org第二步:解压压缩包tar -zxvf mongodb-linux-i686-2.0.2.tgz第三步:安装准备将mongodb移动到/usr/local/mongdb文件夹mv mongodb /usr/local/mongodb或者[root@localhost mongodb-linux-i686-2.0.2]rsync -a bin /usr/local/mongodb创建数据库文件夹(默认的数据库文件的位置是/data/db,启动时会自动创建)mkdir /usr/local/mongod
阅读全文
posted @
2014-03-16 11:25
秋叶leaf
阅读(877)
推荐(0)
(Rspec技巧)指定Rspec测试文件
摘要:1 只测试匹配到的字符串涉及的specsrspec -e expect(page).to have_content2 只测试指定文件rspec spec/requests/static_pages_spec.rb3 指定文件并指定字符串rspec spec/requests/static_pages_spec.rb -e expect(page).to have_content
阅读全文
posted @
2014-03-14 15:25
秋叶leaf
阅读(467)
推荐(0)
怎样新建和加载一个Ruby Gem
摘要:1 新建一个gem:> bundle gem my_mongoid create my_mongoid/Gemfile create my_mongoid/Rakefile create my_mongoid/LICENSE.txt create my_mongoid/README.md create my_mongoid/.gitignore create my_mongoid/my_mongoid.gemspec create my_mongoid/lib/my_mongoid.rb create my_mongoid/lib/my_mongoid/version.rb新建gem所依
阅读全文
posted @
2014-03-14 11:53
秋叶leaf
阅读(532)
推荐(0)
基于Vagrant的虚拟环境搭建流程
摘要:Vagrant,基于Ruby开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。一. 下载资源:1 下载安装 VirtualBox :https://www.virtualbox.org/2 下载安装 Vagrant :http://www.vagrantup.com/3 下载需要使用的 box :官方提供的范例:http://files.vagrantup.com/precise32.box还可以在 http://www.vagrantbox.es/ 这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant
阅读全文
posted @
2014-03-14 10:25
秋叶leaf
阅读(911)
推荐(0)
<Ruby>元编程第五章笔记
摘要:1 Kernel#eval() , 它不是使用块,而是直接使用包含Ruby代码的字符串--简称为代码字符串.Kernel#eval()方法会执行字符串中的代码,并返回执行结果:1 array = [10,20]2 element = 303 eval("array[10,20,30]2 Binding就是一个用对象表示的完整作用域.可以通过创建Binding对象来捕获并带走当前的作用域.接下来,可以通过eval()方法,instance_eval()方法或class_eval()方法,在Binding对象所携带的作用域中执行代码.可以使用Kernel#binding()方法来创建Bi
阅读全文
posted @
2014-03-12 18:19
秋叶leaf
阅读(293)
推荐(0)
<Ruby>元编程第四章笔记
摘要:1 所有使用def定义的方法都成为当前类的实例方法.2 Module#class_eval()方法会在一个已存在类的上下文中执行一个块:1 def add_method_to(a_class)2 a_class.class_eval do3 def m; 'Hello!'; end4 end5 end6 7 add_method_to String8 "abc".m #=> 'Hello!'3 当self不是一个类时,当前类的角色由self的类来充当.处于顶级作用域时,此时当前类是Object----main对象的类.这也就是为什么当在
阅读全文
posted @
2014-03-05 20:42
秋叶leaf
阅读(298)
推荐(0)
<<Ruby元编程>>第三章笔记
摘要:1 块是一种控制作用域(scope)的强大手段,作用域指的是哪些代码可以看到哪些变量和方法.2 只有在调用一个方法时才可以定义一个块.块会被直接传递给这个方法,然后该方法可以用yield关键字回调这个块.3 块中最后一行代码执行的结果会被作为返回值.4 在一个方法中,可以向Ruby询问当前的方法调用是否包含快,可以通过Kernel#block_given?()方法来做到:1 def a_method2 return yield if block_given?3 'no block'4 end5 6 a_method #=> no block7 a_method {&quo
阅读全文
posted @
2014-03-05 10:30
秋叶leaf
阅读(263)
推荐(0)