Files
wahyd4.github.com/page/8/index.html
T

2558 lines
73 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="theme-next gemini use-motion" lang="zh-Hans">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta name="theme-color" content="#222">
<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />
<link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />
<link href="/css/main.css?v=5.1.2" rel="stylesheet" type="text/css" />
<meta name="keywords" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?v=5.1.2" />
<meta name="description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
<meta property="og:type" content="website">
<meta property="og:title" content="大染志">
<meta property="og:url" content="http://toozhao.com/page/8/index.html">
<meta property="og:site_name" content="大染志">
<meta property="og:description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
<meta property="og:locale" content="zh-Hans">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="大染志">
<meta name="twitter:description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
<script type="text/javascript" id="hexo.configurations">
var NexT = window.NexT || {};
var CONFIG = {
root: '/',
scheme: 'Gemini',
version: '5.1.2',
sidebar: {"position":"left","display":"post","offset":12,"offset_float":12,"b2t":false,"scrollpercent":false,"onmobile":false},
fancybox: true,
tabs: true,
motion: true,
duoshuo: {
userId: '0',
author: '博主'
},
algolia: {
applicationID: '',
apiKey: '',
indexName: '',
hits: {"per_page":10},
labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
}
};
</script>
<link rel="canonical" href="http://toozhao.com/page/8/"/>
<title>大染志</title>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-5243064-16', 'auto');
ga('send', 'pageview');
</script>
</head>
<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">
<div class="container sidebar-position-left
page-home
">
<div class="headband"></div>
<header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-wrapper">
<div class="site-meta ">
<div class="custom-logo-site-title">
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<span class="site-title">大染志</span>
<span class="logo-line-after"><i></i></span>
</a>
</div>
<p class="site-subtitle">想要玩得很 High 的程序员</p>
</div>
<div class="site-nav-toggle">
<button>
<span class="btn-bar"></span>
<span class="btn-bar"></span>
<span class="btn-bar"></span>
</button>
</div>
</div>
<nav class="site-nav">
<ul id="menu" class="menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section">
<i class="menu-item-icon fa fa-fw fa-home"></i> <br />
首页
</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section">
<i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
归档
</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags" rel="section">
<i class="menu-item-icon fa fa-fw fa-tags"></i> <br />
标签
</a>
</li>
<li class="menu-item menu-item-about">
<a href="/about" rel="section">
<i class="menu-item-icon fa fa-fw fa-user"></i> <br />
关于
</a>
</li>
<li class="menu-item menu-item-知识图谱">
<a href="https://wiki.toozhao.com" rel="section">
<i class="menu-item-icon fa fa-fw fa-question-circle"></i> <br />
知识图谱
</a>
</li>
</ul>
</nav>
</div>
</header>
<main id="main" class="main">
<div class="main-inner">
<div class="content-wrap">
<div id="content" class="content">
<section id="posts" class="posts-expand">
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/11/01/node-jade-express-mysql-simplelogin/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/11/01/node-jade-express-mysql-simplelogin/" itemprop="url">node、express、mysql、jade实现用户登录数据获取及验证</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-11-01T00:00:00+11:00">
2011-11-01
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:49:09+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/node-js/" itemprop="url" rel="index">
<span itemprop="name">node.js</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>今天要给大家介绍一下如何利用node.js的expressjademysql三个module实现获取form表单的内容以及通过数据库验证登录的正确性。请确保你已经下载好了前面三个module并且你的电脑里面已经安装好mysql。</p>
<p>首先看看运行页面:</p>
<p><a href="/images/2011/11/1.jpg"><img class="aligncenter size-full wp-image-2104" title="1" src="/images/2011/11/1.jpg" alt="" width="537" height="395"></a></p>
<p>再给大家看看整个小系统的目录结构吧:</p>
<p><a href="/images/2011/11/2.jpg"><img class="aligncenter size-full wp-image-2105" title="2" src="/images/2011/11/2.jpg" alt="" width="254" height="280"></a></p>
<p>请大家按照图中所示的目录结构建立好所有的文档吧。当然jquery你下载就可以了。</p>
<p>接下来,我们将建立数据库:</p>
<pre class="brush: sql; title: ; notranslate" title="">create database receipts; #创建数据库
#创建名为user的表
&lt;pre style="padding-left: 30px;"&gt;use receipts;
create table user (
userid bigint auto_increment not null primary key,
username varchar(20) not null,
pass varchar(30) not null
);
</pre>
<p>然后我们来书写我们所需要的login.jade。这里使用jade,我们需要创建一个简单的layout.jade(模板),在layout模板中我们将定义最基本的网页框架。设定大多数网页相同的部分。这里关于jade的语法我就不多讲了,jade的官网上很详细,直接给出layout的代码:</p>
<pre class="brush: xml; title: ; notranslate" title="">!!! 5
html
head
&lt;span style="color: #ff0000;"&gt; title=title&lt;/span&gt;
&lt;span style="color: #ff0000;"&gt; link(rel='stylesheet',type='text/css',href='/css/style.css')&lt;/span&gt;
body!=body
</pre>
<p>注意,由于jade会对我们所写的代码进行重新编码,编码成linux的相关格式,这里建议大家使用类似notepad++、ultra editor等软件时将其编码为UTF-8 无DOM格式,并且请不要在文件中同时使用空格和Tab对文件分隔,会导致报错。这里强调一下比如上述 title=title,这里是把网页的标题赋值给一个变量叫做title,之后我们声明并赋值title。link后面不能添加空格。类似的也一样。</p>
<p>下面是我们的登录界面login.jade,代码如下:</p>
<pre class="brush: xml; title: ; notranslate" title="">form(id='login',method='post',action='/login')
h1 Log In
p(style='margin-top:20px;') #{error}
fieldset(id='inputs')
input(id='username',name='username',type='text',placeholder='Username',autofocus='',required='')
input(id='password',name='password',type='password',placeholder='Passowrd',required='')
fieldset(id='actions')
input(type='submit',id='submit',value='Log in')
a(href='') Forgot your password
a(href='http://google.com') Register
</pre>
<p>大致是定义一个完整的表单。并且定义一个显示提示错误信息的地方。当然还有最重要的css代码。我将在后面提供源码给大家下载。<br>home.jade和index.jade这个程序里面我们用不到,因此内容可以不管它。</p>
<p>接下来,我们就开始写代码了。当然是使用express了。首先我们将写两个路由器在app.js中,一个是显示登录的页面并且作为首页,另外一个是验证登录的页面。</p>
<p>//首先添加配置信息</p>
<pre class="brush: jscript; title: ; notranslate" title="">app.set('view engine','jade'); //设置模板引擎
app.set('views',__dirname+'/views'); //配置jade文件夹
app.use(express.static(__dirname+'/public')); //设置静态文件文件夹,比如cssjs,/images
&lt;span style="color: #ff0000;"&gt;app.use(express.bodyParser()); //用户获取form表单数据&lt;/span&gt;
app.use(express.methodOverride());
//设置首页。
app.get('/',function(req,res){
res.render('index',{title:'欢迎使用收据管理系统',error:''});
});
</pre>
<pre style="padding-left: 30px;">在编写登录验证登录路由之前,我们需要明确这里我们需要处理那些事:</pre>
<ul>
<li>获取表单中数据</li>
<li>创建mysql数据库连接</li>
<li>从mysql请求数据</li>
<li>将数据库中数据与form表单进行比较,并返回结果。</li>
</ul>
<p>//获取表单中数据<br>var user = req.body.username //这样便可以获取到form表单中 name=”username”值,依赖于express.bodyParser()</p>
<p>创建mysql数据库连接。这里我们将做一个小小的封装。将封装的函数写入 user.js</p>
<pre class="brush: jscript; title: ; notranslate" title="">//连接mysql服务器
function connectServer(){
//创建mysql连接,设置用户名,密码
var client = mysql.createClient({
user:'root',
password :'root'
});
client.host= '127.0.0.1';
client.port=3306;
&lt;span style="color: #ff0000;"&gt;client.database='receipts'; //选择需要使用的数据库,创建数据库时不必须,其他时候必须&lt;/span&gt;
return client; //返回创建好的数据库连接对象
}
</pre>
<p>//接下来我们将从数据库获取数据,同样我们也做一个封装。因为要执行数据库操作。因此我们需要传入一个数据库连接对象client,并且传入用户名,以便查出该用户对应的密码。再则我们需要创建一个回调函数以便于,在获取到数据库中的值后,做出相关判断。按照常规长发很难获取值。应该闭包可以。(这个回调函数得感谢一个群里的大牛。),代码如下。</p>
<pre class="brush: jscript; title: ; notranslate" title="">//执行mysql查询操作。返回查询获取到的对象
function selectFun(client,username,callback){
//client为一个mysql连接对象
client.query('select pass from user where username="'+username+'"',function(err,results,fields){
if(err) throw err;
callback(results); //在获取结果之后由回调函数进行相关操作
});
}
</pre>
<pre style="padding-left: 30px;">我们将关于数据库的两个函数,写在user.js里面。因此这里我们需要导出这两个函数,使用exports关键字,以便在其他地方可以使用。
<pre class="brush: jscript; title: ; notranslate" title="">
exports.connect = connectServer;
exports.selectFun = selectFun; //注意没有函数的()哦。&lt;/pre&gt;
</pre>
<pre style="padding-left: 30px;"></pre>
<pre style="padding-left: 30px;">好了函数写好了。现在我们就该在app.js中使用了。</pre>
<pre style="padding-left: 30px;">导入我们刚创建的user.jsmodule</pre>
<pre style="padding-left: 30px;"><span style="color: #ff0000;">var usr = require('./dao/user');</span></pre>
<pre style="padding-left: 30px;">然后就可以使用了。
<pre class="brush: jscript; title: ; notranslate" title="">
app.post('/login',function(req,res){
var user = req.body.username,
pass = req.body.password,
client = usr.connect(), //创建数据库连接
result = null;
//这里在回调函数里面进行mysql返回值的验证。很重要
&lt;span style="color: #ff0000;"&gt;usr.selectFun(client,req.body.username,function(result){&lt;/span&gt;
console.log('查询结果为'+result);
if(result[0]===undefined){ //这里需要说明的是,mysql返回结果存在一个数组对象中。
res.send('没有该用户!');
}else{
&lt;span style="color: #ff0000;"&gt;if(result[0].pass==req.body.password){&lt;/span&gt;
res.send('登录成功');
}else{
res.send('你输入的密码有误');&lt;/pre&gt;
});
}
}
}); //执行查询
});
</pre>
<pre style="padding-left: 30px;">大家是不是看得太乱了。对不起。都是我的文字控制能力不好。大家凑合着看看吧。我把源码给大家,当然没有包含mysql创建数据库的源码哦。</pre>
<blockquote><br> <pre style="padding-left: 30px;">大家下载源码吧:<a href="http://115.com/file/bh03gw2q#" target="_blank" rel="external">http://115.com/file/bh03gw2q#</a></pre><br><br></blockquote>
<pre style="padding-left: 30px;">有什么问题,我们一起交流一起学习吧。</pre>
</pre></pre>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/29/node-js-web-express/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/29/node-js-web-express/" itemprop="url">Node.js web框架express入门(1</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-29T00:00:00+11:00">
2011-10-29
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:49:04+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/node-js/" itemprop="url" rel="index">
<span itemprop="name">node.js</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>从我自己现在学校node.js说了解的情况,我觉得node.js至少比Java简单不少。使用node.js的诸多第三方框架更是让node.js简单了不少。其实express 框架几天前我就看了一些。也写了一些例子。虽然没有完全掌握,但是我想在这里和大家一起分享我学到的知识,也算是一种记录。</p>
<p>首先,当然我们也得安装express 的module</p>
<pre class="brush: xml; title: ; notranslate" title="">npm install express</pre>
<p>接下来我们就是可以开始写一个简单的程序了。</p>
<pre class="brush: jscript; title: ; notranslate" title="">var express = require('express'); //导入module
var app = express.createServer(); //创建并返回一个express的server对象
app.get('/',function (req,res){ //为跟地址目录设置路由,并且监听get方法。
res.send("Hello,World"); //向浏览器返回hello world
});
app.listen(4000); //设置服务器监听4000端口
</pre>
<p>运行程序,然后再浏览器中输入localhost:4000试试,是不是出现了hello world了。当然这只是一个最简单的程序。下面我们可以再多做一些。</p>
<p>这里需要说明一下。默认的,系统将在您的请求处理中,在此例里面即在app.get();里面为你添加下面两句话</p>
<pre class="brush: jscript; title: ; notranslate" title="">res.charset='utf-8'; //系统默认的res.send()和res.render()都默认采用utf-8编码
res.contentType('Text/html'); //系统提供默认为Text/Html的Content-Type
</pre>
<p>接下来,我们将通过链接中的地址获取请求内容</p>
<p>在程序中加入一段代码如下</p>
<pre class="brush: jscript; title: ; notranslate" title="">app.get('/hello/:name',function (req,res){
//如果你在地址栏中输入如下/hello/Junv.那么你将在页面中看到name=======Junv
//'/hello/:name'中的name相当于定义一个变量name,并且把我们输入的名字赋值给他。
res.send('name======'+req.params.name);
});
</pre>
<p>试试看看吧。成功了吧!</p>
<p>对不起,写着写着觉得很别扭。今天就写到这里吧。下次在继续吧。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/26/node-js-send-e-mail/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/26/node-js-send-e-mail/" itemprop="url">使用Node.js发送电子邮件(E-mail</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-26T00:00:00+11:00">
2011-10-26
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:49:00+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/node-js/" itemprop="url" rel="index">
<span itemprop="name">node.js</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p><span style="color: #ff0000;">10月27日更新,可以发送附件</span></p>
<p>今天晚上花了点时间试了一下使用node.js发送电子邮件,也挺简单的,<del>不过有个问题一直没有解决,就是发送附件,</del>我弄明白的时候,会补充资料的。</p>
<p>首先我们还是得安装node的第三方用户发送email的module 。</p>
<pre><code>npm install nodemailer
</code></pre><p>安装好之后,还有一个问题需要注意,我们应该确保用来发送邮件的邮箱地址是打开只是IMAP 、SMTP功能的,这样才可以发送邮件成功。</p>
<p>接下来我们就开始写代码,其实很简单,官方网站也都已经说得很清楚了。</p>
<pre class="brush: jscript; title: ; notranslate" title="">var mail = require('nodemailer'); //包含发送邮件所需module
mail.SMTP = {
use_authentication: true, //如果我们使用QQ等邮箱,这个必须写且为true
host: 'smtp.qq.com', //定义用来发送邮件的邮箱服务器,一般是QQ这些的
port:25, //定义服务器端口,一般是25 ,如果是使用SSL端口一般为465,或者587
ssl:false, //默认不适用SSL,可以省略不写
user: 'wahyd4@qq.com', //邮箱用户名
pass:'*****' //输入邮箱密码
}
mail.send_mail(
{
sender:'wahyd4@qq.com', //发送邮件的地址
to:'wahyd4@gmail.com', //发给谁
subject:'随便把', //主题
body:'Hello,这个邮件来自node.js'
},
//回调函数,用户判断发送是否成功,如果失败,输出失败原因。
function(error,success){
if(!error){
console.log('message success');
}else{
console.log('failed'+error);
}
}
);</pre>
<p>这里我没有使用SSL进行发送,而且发送的是纯文本,也可以发送html,如果发送html则在send_mail函数里面加上:</p>
<pre><code>html: &apos;&lt;p&gt; 你好。。邮件来自node.js&lt;/p&gt;&apos;,
</code></pre><p>如果使用SSL进行发送我们则需要将mail.SMTP改为:</p>
<pre class="brush: jscript; title: ; notranslate" title="">mail.SMTP = {
use_authentication: true, //如果我们使用QQ等邮箱,这个必须写且为true
host: 'smtp.qq.com', //定义用来发送邮件的邮箱服务器,一般是QQ这些的
port:465, //定义服务器端口,一般是25 ,如果是使用SSL端口一般为465
ssl:true, //默认不适用SSL,可以省略不写
user: 'wahyd4@qq.com', //邮箱用户名
pass:'*****' //输入邮箱密码
}
</pre>
<p>好了。现在你运行程序试试,是不是成功了。</p>
<p>我今天晚上遇到一个错误 :<strong>503 ERROR,need EHLO and AUTH first</strong>。就是因为没有添加use_authentication = true的缘故。加上之后,搞定。</p>
<p>———————————————————分割线———————-</p>
<p>发送附件的话。首先我们得使用</p>
<pre class="brush: jscript; title: ; notranslate" title="">var fs = require('fs'); //导入文件系统相关的包</pre>
<p>饭后我们将文件读入内存,并将其发送。</p>
<pre class="brush: jscript; title: ; notranslate" title="">//读入文件
var img = fs.readFileSync(__dirname+"/cat.jpg");
var attachment = [{
'filename': "cat.jpg", //这里只是给附件取名称,而不是导入文件内容
'contents': img //导入文件
}] //定义我们需要发送的附件
</pre>
<p>接下来我们需要在send_mail函数中加入发送附件即可</p>
<pre class="brush: jscript; title: ; notranslate" title="">mail.send_mail(
{
sender:'wahyd4@qq.com', //发送邮件的地址
to:'wahyd4@gmail.com', //发给谁
subject:'测试发送文件', //主题
attachments: attachment, //添加附件
body:'Hello,这个邮件来自node.js,包含附件哦,亲!'
},
</pre>
<p>附上Nodemailer的网址:<a href="http://www.nodemailer.org/" target="_blank" rel="external">http://www.nodemailer.org/</a></p>
<p>enjoy it!</p>
<p>最后还是感谢 <a href="https://github.com/andris9" target="_blank" rel="external">andris9</a> 大叔很快帮我解决了问题!</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/25/node-js-connect-mysql/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/25/node-js-connect-mysql/" itemprop="url">使用node.js连接mysql数据库</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-25T00:00:00+11:00">
2011-10-25
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:56+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/node-js/" itemprop="url" rel="index">
<span itemprop="name">node.js</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p style="text-align: center;"><br> <a href="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/1036320.png" target="_blank" rel="external"><img class="aligncenter size-medium wp-image-1778" title="1036320" src="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/1036320-296x300.png" alt="" width="190" height="192"></a><br></p>
<p>Javascript连接数据库可能很多同学之前都没有想到吧,不过现在使用node.js我们可以很容易地连接各种数据库。比如传统关系型数据库Mysql以及现在正火的非关系型数据库。这里讲一下如何连接mysql数据库其实官方的文档以及很详细了。</p>
<p>首先我们需要连接mysql所需的Module</p>
<pre class="brush: jscript; title: ; notranslate" title="">npm install mysql</pre>
<p>接下来就可以开始编程,连接数据库了。</p>
<pre class="brush: jscript; title: ; notranslate" title="">var mysql = require('mysql');//导入mysql Module
var client = mysql.createClient({
user:'root',
password :'root'
});
/*
设置数据库的地址,这里请不要使用localhost,
至少我在windows这里出错,如果不写系统默认为localhost
*/
client.host ='127.0.0.1';
client.port = 3306; //设置数据库端口,如果不写默认为3306
client.database = 'node';
//create a database
client.query('create database test_db',function(err){
if (err &amp;&amp; err.number != mysql.ERROR_DB_CREATE_EXISTS) {
throw err; //添加异常处理
}
});
</pre>
<p>这里我们使用的是client.query();执行sql语句,官方的API中client.query(sql,[params,cb])方法中还可以添加回调函数。</p>
<p>执行其他SQL语句也是使用client.query()函数。这里说一下插入语句</p>
<pre class="brush: jscript; title: ; notranslate" title="">client.query('insert into node_t values(?,?)',[1000,'Junv'] );</pre>
<p>推荐这种参数化插入,而不是将值直接写在里面,可以防止sql注入。</p>
<p>注意:今天下午我最初尝试连接数据库的时候,它一直报错“Domain name not found”,只要我们加上</p>
<pre class="brush: jscript; title: ; notranslate" title="">client.host ='127.0.0.1';</pre>
<p>将系统默认的host=localhost改成127.0.0.1即可。具体原因不明。</p>
<p>是不是很简单呢?接下来我会写关于express 和jade的博客了。一边学习一边写博客。哈哈。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/23/solve-npm-js-cant-install-node-js/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/23/solve-npm-js-cant-install-node-js/" itemprop="url">解决npm.js不能成功安装Node.js包</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-23T00:00:00+11:00">
2011-10-23
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:40+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/node-js/" itemprop="url" rel="index">
<span itemprop="name">node.js</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p><a href="/images/2011/10/3.jpg"><img class="aligncenter size-full wp-image-2110" title="3" src="/images/2011/10/3.jpg" alt="" width="169" height="74"></a></p>
<p>学习Node.js当然安装其他开发者开发的各种各样的包一定是必须的,不知道在内地的童鞋发现一个问题没有,我们现在很难从npm.js直接去下载安装包了。笔者在电信和教育网连续试了几天都没有成功。</p>
<p>大概介绍一下npm.js吧。npm.js是node.js的一个包管理工具。通过你可以很方便的安装所有node.js的第三方包、类库,而不需要知道他们的地址、不需要再自己一次一次手动安装。</p>
<p>过程是这样的:(注:笔者只是在windows环境下测试过)</p>
<p>一般地我们会在cygwin里面使用” npm install 你需安装的包名”进行安装。但是我反反复复试过多次,均是很难成功,只有昨天夜里一点左右成功过一次。最初我认为我我们的网速太慢了,于是我在cygwin下面配置代理:</p>
<blockquote>
<p>export http_proxy=<a href="http://127.0.0.1:8087" target="_blank" rel="external">http://127.0.0.1:8087</a> 注:我使用的是go agent进行代理(具体安装请google一下)。</p>
</blockquote>
<p>通过代理我成功地安装成功了npm 本身,但是当我转而通过 npm install …进行安装的时候就出现错误了,npm提示 Socket hang up。具体原因不明,总之npm 不能使用cygwin里面配置的代理,于是我使用 export -n http_proxy 删除代理设置。</p>
<p>随后我在网上又收到了另外一个解决方法。在npm里面设置打理</p>
<blockquote>
<p>npm proxy <a href="http://127.0.0.1:8087" target="_blank" rel="external">http://127.0.0.1:8087</a></p>
</blockquote>
<p>不过设置好之后使用 npm install …,发现同样不成成功,npm 根本没有通过代理去发请求。</p>
<p>最后,我找到一个神器npmf。它的大致介绍是说npmf 是npm的一个复制,他可以永久保存那些包的每个版本。并且你通过npmf安装的包在你下次部署软件的时候依然可用。老实说后面一句话,我没有理解明白,到底是本地缓存,还是在网上缓存。</p>
<blockquote>
<p>各位可以前往npmf网站一看究竟:<a href="http://npmfjs.org/" target="_blank" rel="external">http://npmfjs.org/</a></p>
<p>同时还有一个介绍npmf的网页:<a href="http://nodeknockout.com/teams/preservation-society" target="_blank" rel="external">http://nodeknockout.com/teams/preservation-society</a></p>
</blockquote>
<p><span style="color: #008080;"><strong>接下来就是见证奇迹的时刻了:</strong></span></p>
<p>我们可以直接把npm 默认的registry 换成 npmf的:</p>
<blockquote>
<p>npm config set registry <a href="http://npmfjs.org:9000" target="_blank" rel="external">http://npmfjs.org:9000</a></p>
<p>npm install <span style="color: #ff0000;">你需要安装的包</span></p>
</blockquote>
<p>是不是发现很神奇,一个包可能10秒甚至更少就可以安装成功。如果你想把registry改成npm默认的</p>
<blockquote>
<p>npm config set registry <a href="http://registry.npmjs.org" target="_blank" rel="external">http://registry.npmjs.org</a></p>
</blockquote>
<p>或者你可以临时使用npmf的registry的包,在你每次安装的包的时候都使用一下语句</p>
<blockquote>
<p>npm registry <a href="http://npmfjs.org:9000" target="_blank" rel="external">http://npmfjs.org:9000</a> install <span style="color: #ff0000;">你需要安装的包</span></p>
</blockquote>
<p>告诉你们个秘密:通过上面的两种方法,可以使用代理哦。速度又提高了不少。哈哈。。。。。</p>
<p>总结:造成npmjs.org的速度很慢的原因我始终不太清楚。我想npmjs.org的网络应该比npmfjs.org好很多才对。怎么会反过来了。以前我在有人抱怨过说内地使用 npm安装包很难。但是我不知道这是个别现象还是大家都是这个样子。难道G*F*W故意把 registry.npmjs.org和谐了?哎,不管了,大家使用我这个方法来吧。欢迎各位留言</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/19/notepad-settings/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/19/notepad-settings/" itemprop="url">Notepad++ 设置、插件配置</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-19T00:00:00+11:00">
2011-10-19
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:36+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/我们爱分享/" itemprop="url" rel="index">
<span itemprop="name">我们爱分享</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p style="text-align: center;"><br> </p><p><br> 虽然平时也一直在使用Notepad++,但是并没有深入地了解它,没有去鼓捣它。今天中午看了一篇博文说另外一个文本编辑器多么多么强大。我下载使用了一下,发现里面比较好的功能就是函数花括号自动完成、可以更换主题、支持分屏、可以安装插件同时查看几个文件,不过有一点不好就是他是收费软件。于是我想,开源的notepad++是不是也有那些功能呢?在我搜索一番之后,于是就发现了notepad的惊天大秘密。<br> </p>
<p><br> <strong>主题设置</strong><br> </p>
<p><br> 依次点击面板上的settings——style configurator。系统默认提供十几种不同的风格,可供选择。用户还可以为不同的编程语言设置个性化的前、后景色,设置字体大小、种类。我个人使用的主题是Black Board.<br> </p>
<p><br> <strong>分屏实现</strong><br> </p>
<p><br> 据我发现目前notepad++没有快捷键可以开启分屏,而是用户右键点击某个打开的文档列表的Tab。选择Move to other view 或者 Copy to other view,即可以移动或者复制到分屏。此时屏幕编程两屏界面(好像notepad++目前只支持两屏)<br> </p>
<p><br> <strong>字体的放缩</strong><br> </p>
<p><br> 当光标在目前程序时,按住Ctrl键同时,滚动鼠标滚轮即可实现字体的大小改变。<br> </p>
<p><br> <strong>函数自动补充</strong><br> </p>
<p><br> 依次点击Settings—-preferences—Back up/Auto completion。勾选enable auto-completion on each input.下面有function completion 和word completion可供选择。<br> </p>
<p><br> 同样也可以勾选Function parameter hint on input。这个是函数暗示吧。需要注意的是,我发现在javascript 和html 下提示相对较好,但是都不会补充完全,都是部分补充。笔者在Java下面测试,大致只能提示类一级,不能提示其二级方法。如果你想拥有很好的提示还是使用eclipse吧。<br> </p>
<p><br> <strong>插件安装:</strong><br> </p>
<p><br> notepad++支持两种方式安装插件(plugin):第一种,将插件的.dll文件复制到notepad++安装目录的plugin目录下。第二种方法是通过notepad++自带的插件plugin management 进行安装。点击即可实现自动安装插件。安装完成后重启即可工作。<br> </p>
<p><br> 这里推荐一些比较好的插件列表:<a href="http://my.oschina.net/hcom/blog/4429" target="_blank" rel="external">http://my.oschina.net/hcom/blog/4429</a><br> </p>
<p><br> Notepad++官方下载:<a href="http://notepad-plus-plus.org/" target="_blank" rel="external">http://notepad-plus-plus.org/</a><br> </p>
<p><br> 我也是今天才发现notepad的这些功能,希望可以和大家一起交流、讨论。<br> </p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/15/struts2-i18n/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/15/struts2-i18n/" itemprop="url">Struts2 国际化使用、实现</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-15T00:00:00+11:00">
2011-10-15
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:32+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/编程之美/" itemprop="url" rel="index">
<span itemprop="name">编程之美</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>这学期在学习Java EE,也是我选择的方向。因此很感兴趣。前几天看了Struts2 实现国际化,于是今天下午便真实操作一遍。</p>
<p>首先我们要实现国际化,当然得建立相关语言的<strong>.properties</strong>文件。且该文件需放在classes目录下。即是eclipse的src的根目录。</p>
<p>struts2的命名规则是 “自定义名_语言_国别(英文字母为大写).properties”</p>
<p>比如:</p>
<blockquote>
<p>中文简体:test_zh_CN.properties</p>
<p>美国英文:test_en_US.properties</p>
</blockquote>
<p>其他国家的,请大家自己在网上搜索一下吧。</p>
<p>.properties 文件的内容形式为key=value</p>
<p>比如:</p>
<blockquote>
<p>中文: username=用户名(这里中文要被转码为另外一种格式,才能使用。转换后为: u7528u6237u540Declise会自动帮你转换)</p>
<p>英文:username=username</p>
</blockquote>
<p>写好properties文件之后。我们就需要修改struts.xml文件让其支持国际化属性,在struts标签下添加:</p>
<blockquote>
<constant name="”struts.custom.i18n.resources”" value="”test”"> </constant>
</blockquote>
<p>这里的value属性的值“test”为你的properties文件的最前面的自定义名。</p>
<p>然后再使用的时候,比如我想获取username的国际化属性:</p>
<blockquote>
<p> <s:text name="”username”">或者 <s:property value="”getText(username)”/"> 均可以</s:property></s:text></p>
</blockquote>
<p>当然还有另外一种方法不需要在struts.xml添加语句。在jsp需要使用国际化资源的时候,添加如下:</p>
<blockquote>
<p><s:i18n name="”test”"></s:i18n></p>
<p><s:text name="”username”"> 或者<s:property value="”getText(username)”/"></s:property></s:text></p>
<p></p>
</blockquote>
<p>这里的name标签的test和上面的一样。需要注意的是。你每使用一次国际化资源就需要添加一个<s:i18n>标签。</s:i18n></p>
<p>其他的使用就和一般的struts没有区别了。</p>
<p>然后我们可能需要手动切换语言,在jsp页面里面添加:</p>
<blockquote>
<pre>&lt;a href="doAction.action?request_locale=zh_CN"&gt; 中文&lt;/a&gt;
&lt;a href="doAction.action?request_locale=en_US"&gt;English&lt;/a&gt;</pre>
</blockquote>
<pre>doAction.action 为我需要显示的Action地址。</pre>
<pre>其他的就不多讲了。这个例子只是Struts2最简单的国际化实现。</pre>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/13/ai-tired/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/13/ai-tired/" itemprop="url">吵架好烦,哎,心力交瘁</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-13T00:00:00+11:00">
2011-10-13
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:27+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/未分类/" itemprop="url" rel="index">
<span itemprop="name">未分类</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>好累!好累!</p>
<p>我哪里错了嘛,就因为我说了一句话不太该说的话!</p>
<p>然后你就拂袖而去,纵使我再三挽留你,你却越来越凶,每次你这个样子,我真的不晓得应该怎么办!</p>
<p>我可以怎么办嘛?</p>
<p>我有这样凶过吗?在你面前,我不晓得脾气好了好多倍</p>
<p>你个性却却越来越不好。一摸到就生气,我每次都是在第一时间给你道歉,告诉你我错了。我不该这样做,但是不晓得你想过没有,难道真的每次错的都是我吗,我有那样吼过你吗?</p>
<p>我不是怕你,是因为我爱你,所以我在忍!我愿意接受这一切。但是你不能每次都这样啊。</p>
<p>好累,好烦。不晓得应该从哪里和你沟通,</p>
<p>今天明明不是因为我们的问题,你却说我偏向你寝室的同学,说我偏向漂亮的女生。</p>
<p>真的,大部分关于他们的印象我是从你那里得到的啊。我不喜欢太要强的女生,有啥子了不起嘛。我见多了。</p>
<p>你每次都说我是做错了不愿意道歉。但是你又晓得,很多次我真的觉得我没得错,但是我又在道歉。</p>
<p>在你面前我永远都是错的。</p>
<p>在你们寝室面前,我永远都是被最后考虑的。呼之即来挥之即去。。。。</p>
<p>你理解我一下嘛。你怎么就不理解人呢!</p>
<p>没人理解我,好累。好累!</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/12/money-is-dirty/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/12/money-is-dirty/" itemprop="url">钱让很多小人原形毕露</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-12T00:00:00+11:00">
2011-10-12
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:23+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/我说/" itemprop="url" rel="index">
<span itemprop="name">我说</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>这几天学校正在搞奖学金的评比,需要每个同学自己对自己的情况进行评估,你在上一学年所获得的将和其他证书这些都是获得加分,当然学习成绩也是分数中很重要的一部分。于是情况出现了。</p>
<p>能够得奖的人为了得更高的将,千方百计地去找分加,同时还要看看其他人是不是快要超过他了。其他人加分是不是正规的,其他人是不是在到处找关系盖章?</p>
<p>真他妈的恶心,在这个奖学金评比之中我看到了谄媚、欺诈、鬼鬼祟祟,说人家加分这样或者那样的不正常。</p>
<p>哎!真的是,钱让小人原形毕露了。</p>
<p>想想去年我也不是这个样子啊。看看有些人,把所有能够加的分都加到最高!你妹啊!</p>
<p>一个奖学金也是,得奖的人都是妈的一群水货,什么都不会,就是会考试、会讨好老师、会拍马屁、会装疯卖傻!</p>
<p>你们就潇洒吧!我又一次明白了,千里之堤,溃于蚁穴!</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
<div class="post-block">
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/09/eclipse-auto-complited/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Junv">
<meta itemprop="description" content="">
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2011/10/09/eclipse-auto-complited/" itemprop="url">Eclipse 自动补全、联想设置</a></h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-09T00:00:00+11:00">
2011-10-09
</time>
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于&#58;</span>
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:19+10:00">
2014-07-22
</time>
</span>
<span class="post-category" >
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/我说/" itemprop="url" rel="index">
<span itemprop="name">我说</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>笔者在第一次使用eclispe 3.7即indigo这个版本的时候,便发现一个小小的不快:平时在不知道某个方法怎么写的时候会按下Alt +/去获取eclipse给出的提示。但是在3.7这个版本却不好用,得到的是eclipse自动帮你选择一个他认为最合适的方法或者变量等等,帮你补全,而不是原来的显示所有可供选择的,让你来选择。</p>
<p>纠结了很久,期间尝试过使用网上说的修改Content Assist。将之前默认的 .后面加上ABCD…abcd…所有52个字符。并且 把联想的时间从系统默认的200ms提高到50ms。但是经过修改之后,eclipse变得和visual studio 一样,你每输入一个字符,系统就会进行一次提示。不过我发现这种情况下eclipse占用的CPU、内存资源变多了,在我的笔记本有时候还会变得顿卡。这不是最好的办法。</p>
<blockquote>
<p>前几天吧,我才发现这个问题的症结所在。原来是eclipse官方的快捷键方式改变了。其实以前Alt+/那个联想一直在,只是在3.7版本里面这个快捷键变成了自动补全(即系统自动选择一个最合适的进行补充)。我们需要做的就是依次打开Windows——preferences——General——Keys。找到<strong>Content Assist</strong>这一项,这一项系统默认的是Alt+Space。这里我们把它改成<strong>Alt+/</strong></p>
</blockquote>
<p><a href="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/Eclipse_content_assist.png" target="_blank" rel="external"><img class="aligncenter size-medium wp-image-1701" title="Eclipse_content_assist" src="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/Eclipse_content_assist-300x108.png" alt="" width="300" height="108"></a></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</div>
</article>
</section>
<nav class="pagination">
<a class="extend prev" rel="prev" href="/page/7/"><i class="fa fa-angle-left"></i></a><a class="page-number" href="/">1</a><span class="space">&hellip;</span><a class="page-number" href="/page/7/">7</a><span class="page-number current">8</span><a class="page-number" href="/page/9/">9</a><span class="space">&hellip;</span><a class="page-number" href="/page/31/">31</a><a class="extend next" rel="next" href="/page/9/"><i class="fa fa-angle-right"></i></a>
</nav>
</div>
</div>
<div class="sidebar-toggle">
<div class="sidebar-toggle-line-wrap">
<span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
<span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
<span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
</div>
</div>
<aside id="sidebar" class="sidebar">
<div class="sidebar-inner">
<section class="site-overview sidebar-panel sidebar-panel-active">
<div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
<img class="site-author-image" itemprop="image"
src="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim"
alt="Junv" />
<p class="site-author-name" itemprop="name">Junv</p>
<p class="site-description motion-element" itemprop="description">Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography</p>
</div>
<nav class="site-state motion-element">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">307</span>
<span class="site-state-item-name">日志</span>
</a>
</div>
<div class="site-state-item site-state-categories">
<a href="/categories/index.html">
<span class="site-state-item-count">69</span>
<span class="site-state-item-name">分类</span>
</a>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags/index.html">
<span class="site-state-item-count">247</span>
<span class="site-state-item-name">标签</span>
</a>
</div>
</nav>
<div class="links-of-author motion-element">
<span class="links-of-author-item">
<a href="https://github.com/wahyd4" target="_blank" title="GitHub">
<i class="fa fa-fw fa-github"></i>
GitHub
</a>
</span>
<span class="links-of-author-item">
<a href="https://www.linkedin.com/in/junwei-zhao-46944557" target="_blank" title="LinkedIn">
<i class="fa fa-fw fa-linkedin"></i>
LinkedIn
</a>
</span>
<span class="links-of-author-item">
<a href="https://stackoverflow.com/users/1140611/junv" target="_blank" title="StackOverflow">
<i class="fa fa-fw fa-stack-overflow"></i>
StackOverflow
</a>
</span>
<span class="links-of-author-item">
<a href="http://weibo.com/wahyd4" target="_blank" title="Weibo">
<i class="fa fa-fw fa-weibo"></i>
Weibo
</a>
</span>
</div>
</section>
</div>
</aside>
</div>
</main>
<footer id="footer" class="footer">
<div class="footer-inner">
<div class="copyright" >
&copy;
<span itemprop="copyrightYear">2020</span>
<span class="with-love">
<i class="fa fa-heart"></i>
</span>
<span class="author" itemprop="copyrightHolder">Junv</span>
</div>
</div>
</footer>
<div class="back-to-top">
<i class="fa fa-arrow-up"></i>
</div>
</div>
<script type="text/javascript">
if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
window.Promise = null;
}
</script>
<script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>
<script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
<script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
<script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>
<script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
<script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
<script type="text/javascript" src="/js/src/utils.js?v=5.1.2"></script>
<script type="text/javascript" src="/js/src/motion.js?v=5.1.2"></script>
<script type="text/javascript" src="/js/src/affix.js?v=5.1.2"></script>
<script type="text/javascript" src="/js/src/schemes/pisces.js?v=5.1.2"></script>
<script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.2"></script>
<script type="text/javascript" src="/js/src/post-details.js?v=5.1.2"></script>
<script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.2"></script>
</body>
</html>