Django安装和登陆MySQL问题

问题描述:

mysql_config not found

问题原因及解决方法:

  • 没有安装客户端,下载安装即可
    http://dev.mysql.com/downloads/mysql/
  • 修改venv的环境变量。编辑/bin/activate文件,并在它后面添加以下内容

    _OLD_VIRTUAL_PATH="$PATH"

    PATH="$VIRTUAL_ENV/bin:$PATH"

    PATH="$PATH:/usr/local/mysql/bin/"

    export PATH
  • pip install MySQL-python

问题描述

Django中查询MySQL数据库

解决方法

  • 运行python mange.py dbshell
  • 成功进入MySQL shell
  • 执行MySQL操作

问题描述

MySQL的client查询出来的中文显示乱码

解决方法

> set names utf8;

问题描述

环境: MAC OS X 10.11 (安装MySQLdb)
问题: Library not loaded: libmysqlclient.18.dylib
建立软链接,出现: Operation not permitted

解决方法

bash_profile或.zshrc添加一行环境变量:
export DYLD_LIBRARY_PATH="/usr/local/mysql/lib"

elasticsearch的python增删查改实例分析

ElasticSearch的Python增删查改实例分析

在实际生产中,经常会遇到ES的增删查改问题。ES是采用RESTAPI,有时也会遇到需要Python脚本来进行ES的增删改查。(为了安全起见,影藏并删除了部分操作,代码仅供参考)建议只用ES做查询和统计,如果没有特别强烈地需求或强迫症,不要轻易使用删除和更新功能。

ES登陆连接(Python)

  • ES的部署请查看相关文档,我这里就不在赘叙。提醒,官方建议ES的在60G以上内存的环境下运行,如果你的服务器的内存是16G,建议至少需要4台机器。
  • ES连接到服务器比较容易,如下:
import elasticsearch

class ES(object):
@classmethod
def connect_host(cls):
hosts=[{"host": "xx.xxx.x.xx"},
{"host": "xx.xxx.x.xx"},
{"host": "xx.xxx.x.xx"},
{"host": "xx.xxx.x.xx"},]
es = elasticsearch.Elasticsearch(
hosts,
sniff_on_start=True,
sniff_on_connection_fail=True,
sniffer_timeout=600
)
return es

查询操作

  • 通过对RESTAPI的改造,可以很容易实现查询功能。如下,实现了对一个domain相关doc的查询,筛选条件包括起止时间,数据排列顺序和限制查询数据的个数。
def es_query(domain="", start=None, end=None, reverse=False, limit_cnt=20, category=0):
es = ES.connect_host()
now = datetime.datetime.now()
if reverse:
order = "desc"
else:
order = "asc"
if not start:
start = now - datetime.timedelta(weeks=2000)
if not end:
end = now
range_body = {
"range": {
"time": {
"gte": start,
"lte": end
}
}
}
and_list = [range_body]
domain_body = {
"term": {
"domain": domain
}
}
category_body = {
"term": {
"category": category
}
}
if domain:
and_list.append(domain_body)
if category:
and_list.append(category_body)
q_body = {
"size": limit_cnt,
"sort": [
{
"time": {
"order": order
}
}
],
"query": {
"filtered": {
"query": {"matchAll": {}},
"filter": {
"and": and_list
}
}
}
}
res = es.search(body=q_body)
ret = []
for hit in res["hits"]["hits"]:
value = {}
src = hit["_source"]
if src:
try:
the_time = src["time"]
if len(the_time) < 20:
value["time"] = datetime.datetime.strptime(the_time, "%Y-%m-%dT%H:%M:%S")
else:
value["time"] = datetime.datetime.strptime(the_time, "%Y-%m-%dT%H:%M:%S.%f")
ret.append(value)
except Exception as e:
print str(e)
ret = []
print "Query xxxxx data failed!"
return ret

  • 其中,reverse表示数据排列的顺序,linit_cnt表示限制数量。其中涉及range,sort,size,filter,and等来执行es.search操作。最后一个for循环是一个取数据的过程。
  • 在实际应用过程中,对于一个复杂的查询,第一次操作失败率很高,如果查询结果有几千个,第一次的query查询到的success个数通常只有1/3左右。当然,当你用该查询条件再次查询时,可以瞬间得到完全成功的结果,所以在你对查询成功个数要求比较高的情况下,建议多次发起请求,这样可以得到比较完整的结果。

删除操作

  • ES的查询分为按index删除和按doc删除。按index查询相对比较容易理解,即删除该索引下的所有数据,删除之后该索引就不存在了。但是有时我们会碰到一些按照doc的情况,即按照一定的query条件查询到相关的doc,然后删除相关的所有记录。ES官方不推荐进行这种操作,而且还有一定的失败率。如果一定需要这方面的功能,证明你的数据不适合用ES进行存储。
  • 由于我当时对ES的认识不够,把大量的数据存储在了ES,因此对doc的删除操作需求比较大,写了一个删除操作功能(仅供参考,不建议使用,如果需要删除,建议存储数据之前设计好数据结构,方便以index为单位删除)
def es_delete(domain, m_type="xxxx"):
m_data = {
"query": {
"query_string": {
"query": "domain: %s AND type: %s" % (domain, m_type)
}
}
}
data = json.dumps(m_data)
request = urllib2.Request(QUERY_URI, data)
request.get_method = lambda: "DELETE"
urllib2.urlopen(request)
print "Deleted the data!"

更新操作

  • ES不适合对大量的数据(doc)进行修改,与删除一样,这是官方极度不推荐的。当然,按照一定的查询条件更新某些doc也是可以实现的。如果你和我一样,遇到了比较极端的情形或是一个强迫症患者。请组合以上两个操作,写一个比较复杂的query执行删除操作,然后把新的数据(doc)插入到对应的索引和类型中。

插入操作

  • 插入操作是ES的最基本操作,ES提供了最基本的插入功能,ES入库时需要批量的插入操作。举个简单的插入操作例子:
es = ES.connect_host()
es.index(index=data_index, doc_type="xxxx", body=data, request_timeout=10000)
  • 其中,index表示索引,doc_type表示数据类型,body表示具体的doc数据,最后一个参数表示超时时间。如果是日志文件或其它记录内容,建议index设置为时间或时间的组合体,如log_2015_11_29。数据类型即当前索引下数据的分类名称,可以把当前的数据按照不同的类型分类,同时也方便了查询,查询时可以很方便的过滤需要的类型。

相关参考

之前时间比较闲,翻译了部分与Python相关的ElasticSearch文档,如有疑问,欢迎回复评论,相互讨论学习。

Crontab的使用

前言

crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24*7小时不宕机,一个是要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需要写好自己的业务逻辑,通过crond这个工业级程序去调度就行了,crond的可靠性,健壮性,大家应该是毫无疑问的。

crontab简易入门

  • crontab -e 直接编辑crontab文件

  • 默认情况下,编辑完crontab跳出后立即执行crontab任务。也可以创建crontab文件,然后执行:

    crontab crontab_file

也可以创建crontab任务。

crontab的语法

crontab [-u username] [-l|-e|-r]

选项与参数:

-u  :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑

清空使用者目前的 crontab:

crontab -r
crontab -l
no crontab for blue

如果你想删除当前用户的某一个crontab任务,那么使用crontab -e进入编辑器,再删除对应的任务。

crontab的限制

  • /etc/cron.allow:将可以使用 crontab 的帐号写入其中,若不在这个文件内的使用者则不可使用 crontab

  • /etc/cron.deny:将不可以使用 crontab 的帐号写入其中,若未记录到这个文件当中的使用者,就可以使用 crontab

以优先顺序来说,/etc/cron.allow/etc/cron.deny 要优先, 而判断上面,这两个文件只选择一个来限制而已,因此,建议你只要保留一个即可, 免得影响自己在配置上面的判断!一般来说,系统默认是保留 /etc/cron.deny , 你可以将不想让他运行 crontab 的那个使用者写入 /etc/cron.deny 当中,一个帐号一行!

crontab的格式讲解

  • 每项工作 (每行) 的格式都是具有六个栏位,这六个栏位的意义为(0和7都代表星期天)
代表意义    分钟         小时       日期        月份         周       命令
数字范围 0-59 0-23 1-31 1-12 0-7 command
  • *代表任何时刻
  • ,代表分隔时段的意思
  • 0 3,6 * * * command
  • -代表一段时间范围内

  • 20 8-12 * * * command
  • /n表示每隔n单位间隔

  • */5 * * * * command
  • */6 来搭配,也可以写成 0-59/6

注意: 周与日月不可同时并存

ElasticSearch的优化方法

多线程

多线程程序插入,可以根据服务器情况开启多个线程index
速度可以提高n倍, n>=2 (这个是在脚本层面,受限于ES的性能)

考虑取消replias

如果有多台机器,可以以每台设置n个shards的方式,根据业务情况,可以考虑取消replias (待数据入完再开启副本)

curl -XPUT 'http://10.1.*.*:9200/dw-search/' -d '{
"settings" : {
"number_of_shards" : 20,
"number_of_replicas" : 0
}
}'

提高ES占用内存

  • 内存适当调大,调大后,使最小和最大一样,避免GC, 并根据机器情况,设置内存大小,
  • 修改文件:elasticsearch-1.5.0/bin/elasticsearch.in.sh

    减少shard刷新间隔

    curl -XPUT 'http://10.1.*.*:9200/dw-search/_settings' -d '{
    "index" : {
    "refresh_interval" : "-1"
    }
    }'
  • 完成bulk插入后再修改为初始值

    curl -XPUT 'http://10.1.*.*:9200/dw-search/_settings' -d '{
    "index" : {
    "refresh_interval" : "1s"
    }
    }'

设置一个shard的段segment最大数

  • 可以减少段文件数,提高查询速度
    curl -XPOST 'http://10.1.*.*:9200/dw-search/_optimize?max_num_segments=5'

注意:有时候可能需要多次执行

去掉mapping中_all域

设置source为压缩模式或者disable

  • compress=true这个能大大减少index的尺寸
  • disable将直接没有_source

增加merge.policy.merge_factor数

Linux快捷键

常用的命令集合,持续更新中~~~

mac快捷键

fn + 下                        向下滑一个屏幕
ctrl + 右 向右切换屏幕
command + shift + ctrl + 4 截图到剪切板

通用命令及快捷键

ctrl + A      跳至行首
ctrl + E 跳至行末
ctrl + R 提示(历史命令,上下切换)
!! 引用上一条命令

常用命令

du --max-depth=1 ~/ | sort -n -r      当前目录下文件大小排序(逆序)

ElasticSearch的文档删除API

doc source(英文原文)

  • 这个删除接口允许基于具体的索引的id删除一个JSON类型的文档。接下来的例子是从一个index为twitter,type为tweet,并且id为1的文档中删除JSON文档:
    $ curl -XDELETE 'http://localhost:9200/twitter/tweet/1'

上述删除操作产生的结果为:

{
"found" : true,
"_index" : "twitter",
"_type" : "tweet",
"_id" : "1",
"_version" : 2
}

更新版本

每个文档建索引就是版本化。当删除了一个文档,version可以被指定以确保我们试图删除的相关文档确实被删除,它并没有在此期间被修改。对一个文档执行写的操作,包括删除,会引起版本的增加。

更新路由

当建索引时使用控制路由的能力,以确保删除一个文档,路由值也应该被提供。比如:

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/1?routing=kimchy'

以上操作将会删除id为1的tweet,但是会基于用户被路由。注意,发出路由不正确的删除,会导致文档没有被删除。
很多时候,当删除一个文档时,路由的值并不被知晓。对于这些情形,指定路由的映射作为请求,并且当路由值没有被指定时,这个删除将会被自动地散发到所有的分片中。

Parent

parent参数可以被设置,它将会基于和路由参数相同的设置。
注意删除父文档时不会自动删除它的子文档。

Book List & Share

Read ten thousand books, traveling thousands of miles

注:部分书籍提供电子书分享哦~~~

文学历史篇

书籍名称 作者 起始时间 结束时间 完成
《变革中国:市场经济的中国之路》 罗纳德·哈里·科斯
《许三观卖血记》 余华
《兄弟》 余华
《第七天》 余华
《杜月笙传》
《三体》 刘慈欣 2015-5-5 2015-6-2

科学脑洞篇

书籍名称 作者 起始时间 结束时间 完成
《时间简史》 霍金
《文明之光》 吴军
《浪潮之巅》 吴军
《失控(Out of Control: The New Biology of Machines, Social Systems, and the Economic World)》 凯文·凯利

网络编码篇

书籍名称 作者 起始时间 结束时间 完成
《代码整洁之道(Clean Code)》 罗伯特·马丁 (Robert C. Martin) 2015-5-1
《集体智慧编程》 TOBY SEGARAN
《Effective Python》 Brett Slatkin 2015-5-4
《深入理解Nginx模块开发与架构解析》 陶辉 2015-4-27
《Sed与awk第三版(高清版)》 Dale Dougberty, Arnold Robbins
《Pro Git》 Linux公社 2014-9-20
《Getting Real中文版》
《elasticsearch权威指南》 Clinton Gormley
《Node.js实战》 赵坤,寸志,泪宗民,吴中骅 2015-5-6

网络安全篇

书籍名称 作者 起始时间 结束时间 完成
《Web前端黑客技术揭秘》 钟晨鸣, 徐少培 2014-12-20

数学算法篇

书籍名称 作者 起始时间 结束时间 完成
《柔性字符串匹配》 纳瓦罗 2015-4-18
《谷歌第二代深度学习系统TensorFlow》 Jeff Dean

鸡汤管理篇

书籍名称 作者 起始时间 结束时间 完成
《领导梯队(The Leadership Pipeline)》 Ram Charan, Stephen Drotter, James Noel

ElasticSearch通过查询删除文档的API

Doc Source(英文原文)

  • 通过查询删除的接口允许基于查询从一个或多个索引,一个或多个类型删除文档。这个查询不仅可以提供使用一个简单地字符串查询作为一个参数,还可以使用Query DSL定义在一个请求体中。举个例子:
    $ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query?q=user:kimchy'

    $ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
    "query" : {
    "term" : { "user" : "kimchy" }
    }
    }
    '

提醒:这个发送的查询体和search api的工作原理一样,必须嵌入query key

  • 以上两个例子实际上做着同样的工作,它为一个确定的用户从twitter这个索引中删除了所有的tweets。这些命令的结果是:

    {
    "_indices" : {
    "twitter" : {
    "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
    }

    }

    }

    }

  • 注意,通过查询删除绕过版本支持。并且,不推荐从一个索引中删除大量的数据,通过,最好是重建一个新的索引。

    多个索引和类型

    通过查询产出的接口可以被应用到多种类型的索引(包括多个索引)里,例如,我们可以在Twitter的索引中删除所有类型的所有文件:

    $ curl -XDELETE 'http://localhost:9200/twitter/_query?q=user:kimchy'

我们还可以在一个具体的类型中删除:

$ curl -XDELETE 'http://localhost:9200/twitter/tweet,user/_query?q=user:kimchy'

我们也可以从一系列索引中删除所有有特定的tagtweets(例如每一个用户都有他自己的索引):

$ curl -XDELETE 'http://localhost:9200/kimchy,elasticsearch/_query?q=tag:wow'

还可以从所有的索引中删除:

$ curl -XDELETE 'http://localhost:9200/_all/_query?q=tag:wow'

需要的参数

当执行通过查询(用q查询参数)的删除操作,通过查询使用Lucene的查询分析器作字符串查询。有一些可传递的附加参数:

名称                            描述
df 在查询中默认的字段在使用时没有定义的字段前缀
analyzer 当分析查询字符串时用的分析器名称
default_operator 默认的操作可以是ANDOR.默认是OR

请求主体

通过查询的删除可以在它的主体内使用Query DSL以表示这个查询应该被执行并删除所有的文档。主体内容也可以是命名为source的REST参数。

分发

通过查询的删除接口从所有的主分片散发出去,并从那里复制所有分片副本。

更新路由

路由值(这些值为用逗号隔开的列表)可以被指定以控制该分片由查询请求来执行删除。

限制

通过查询的删除不支持以下查询和过滤器: has_childhas_parenttop_children

ElasticSearch的更新索引设置

Doc Source(英文原文)

  • 实时更改具体的索引级别设置
  • /_settings(更新所有的索引)或者{index}/_settings来更新一个或多个索引配置。例如:

    {
    "index" : {
    "number_of_replicas" : 4
    }

    }

  • 下面将会把当前的副本数改为4,例如(curl):

    curl -XPUT 'localhost:9200/my_index/_settings' -d '
    {
    "index" : {
    "number_of_replicas" : 4
    }
    }'

提醒:当改变副本数量时,索引需要打开。在索引关闭的状态下改变副本的数量会阻止索引再次正确地打开。

以下列出的设置用更新设置的API可以被改变:

  • index.number_of_replicas
    • 每个分片的副本数量
  • index.auto_expand_replicas (string)
    • 用短横线分隔下限和上限,或者用all作为上限,用false使该设置失效
  • index.blocks.read_only
    • 设为true来让索引为只读,设为false来允许写和元数据的改变
  • index.blocks.read
    • 置为true,对索引禁用读操作
  • index.blocks.write
    • 置为true,对索引禁用写操作
  • index.blocks.metadata
    • 置为true,对索引禁用元数据操作
  • index.refresh_interva
    • 切片的同步刷新间隔
  • index.index_concurrency
    • 默认置为8
  • index.fail_on_merge_failure
    • 默认置为true

大量建索引的用法

  • 例如,对于大量的索引,更新设置的API以高性能动态地改变索引,然后转移它到更实时的索引状态。在大量地建索引之前,用以下方法:
    curl -XPUT localhost:9200/test/_settings -d '{
    "index" : {
    "refresh_interval" : "-1"
    } }'

(另一个优化的选项是不加任何副本开始建索引,并在之后添加它们,然而这取决于其使用的具体情况。)

  • 一旦大量建索引完成,就可以更新这些设置了(回到默认的情况,比如:)

    curl -XPUT localhost:9200/test/_settings -d '{
    "index" : {
    "refresh_interval" : "1s"
    } }'
  • 并且,一个优化应该被调用:

    curl -XPOST 'http://localhost:9200/test/_optimize?max_num_segments=5'

更新索引分析

  • 对索引定义新的analyzers也是可能的。但是先关闭索引并在改变之后打开它。
  • 例如当content analyzer还没有定义myindex,你可以使用以下的命令来添加它:
    curl -XPOST 'localhost:9200/myindex/_close'

    curl -XPUT 'localhost:9200/myindex/_settings' -d '{
    "analysis" : {
    "analyzer":{
    "content":{
    "type":"custom",
    "tokenizer":"whitespace"
    }
    }
    }
    }'


    curl -XPOST 'localhost:9200/myindex/_open'

MongoDB副本集延迟备份

  • 启动一个replSet副本
  • 设置延迟配置
conf = rs.conf()
conf.members[2].priority = 0 (优先级为0)
conf.members[2].slaveDelay = 86400 (延迟复制,单位为秒)
conf.members[2].hidden = true (隐藏)
rs.reconfig(conf)
  • 如果一台机器无法访问另外一个机器起的mongodb, 可能是端口没有开放。
查询iptables:   sudo iptables -nL
添加端口: iptables -A INPUT -p tcp --dport 29617 -j ACCEPT
  • 数据库未正常关闭,重启出现问题,试试这个:
    export LC_ALL="C"

快捷键及常见问题

常用的vim命令集合

vim test.py +12         打开并跳转到12行
H J K L 左/下/上/右
g + g 跳至顶行
, + n 显示导航树
ctrl + L 切换到右边屏幕
:%s/"/'/g 全文用单引号替换双引号
, + c + c 选中注释(kvim)

四空格问题

在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:
set ts=4 (ts是tabstop的缩写,设置TAB宽4个空格)
set expandtab
对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:
  • TAB替换为空格
:set ts=4
:set expandtab
:%retab!
  • 空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab

注意: 加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB

日报周报集合

awesome-archive

A curated list of awesome archive

Daily

Weekly

  • Html5 Weekly

    A free, once–weekly HTML5 and Web Platform technology roundup. CSS 3, Canvas, WebSockets, WebGL, Native Client, and more.

  • Css Weekly

    A free, once–weekly e-mail roundup of css articles, tutorials, experiments and tools.

  • JavaScript Weekly

    A free, once–weekly e-mail round-up of JavaScript news and articles.

  • Backbone Weekly

    The latest Backbone.js news, tips & code delivered directly to your inbox.

  • Ember Weekly

    The latest Ember.js news, tips & code delivered directly to your inbox.

  • Dojo weekly

    Weekly links focused on Dojo Toolkit and anything useful to Dojo devs

  • Node Weekly

    A free, once–weekly e-mail round-up of Node.js news and articles.

  • Npm Weekly

    Npm is the package manager for JavaScript.

  • Php Weekly

    A free once-a-week newsletter, featuring some great articles, news and blog posts.

  • Python Weekly

    A free weekly newsletter featuring curated news, articles, new releases, jobs etc related to Python.

  • Ruby Weekly

    A free, once–weekly e-mail round-up of Ruby news and articles.

  • Swift Weekly

    Code examples, tutorials, screencasts and much more to learn Apple’s new programming language.

  • Go Weekly

    An email newsletter about the Go programming language.

  • Dart Weekly

    An occasional e-mail roundup of Dart news and articles.

  • Perl Weekly

    A free, once a week e-mail round-up of hand-picked news and articles about Perl.

  • Android Weekly

    Android Weekly is a free newsletter that helps you to stay cutting-edge with your Android Development.

  • Mobile Web Weekly

    A weekly round-up of the releases, articles, and links that affect Web developers working on the mobile-facing Web.

  • DB Weekly

    A weekly round-up of database technology news and articles covering new developments, SQL, NoSQL, document databases, graph databases, and more.

  • NoSQL Weekly

    A free weekly newsletter featuring curated news, articles, new releases, jobs etc related to NoSQL.

  • Redis Weekly

    A free, once–weekly e-mail round-up of Redis news, articles, tools and libraries.

  • Postgres Weekly

    A free, once–weekly e-mail round-up of PostgreSQL news and articles.

  • Web Operations Weekly

    A weekly newsletter on Web operations, infrastructure, performance, and tooling, from the browser down to the metal.

  • Docker Weekly

    Docker Weekly Archives.

  • Webtools Weekly

    A once a week email with no spam, no rambling. Just pure awesome links to the best news and articles to hit the interweb during the week.

  • Web Dev Weekly

    A weekly email of great links to some fantastic industry content.

  • Web Design Weekly

    A forthcoming weekly round-up of Bitcoin and cryptocurrency news and articles.

  • Bitcoin Weekly

    A forthcoming weekly round-up of Bitcoin and cryptocurrency news and articles.

  • 奇舞周刊

    领略前端技术 阅读奇舞周刊.

  • 码农周刊

    码农周刊是一份专为程序员打造的IT技术周刊.

  • 知乎周刊

    《知乎周刊》,在周末下午陪你喝一壶茶,或者在几个工作日的早上,陪你度过摇晃的无聊时光.

  • SegmentFault Weekly

    SegmentFault每周精选.

  • 编程狂人

    《编程狂人》周刊是专为IT人打造的行业技术周刊。 我们利用技术挖掘出那些高质量的文章,并通过人工加以筛选整理出来.

  • 设计匠艺

    《设计匠艺》是一本电子版的有关设计方面的周刊.

Newsletter

  • ng Newsletter

    The free, weekly newsletter of the best AngularJS content on the web.

  • MySQL Newsletter

    A Weekly Digest of MySQL Related News, Information and Summaries

  • Hacker Newsletter

    A weekly newsletter of the best articles on startups, technology, programming, and more. All links are curated by hand from the popular Hacker News site.

  • Responsive Design Newsletter

    A free, once–weekly round-up of responsive design articles, tools, tips, tutorials and inspirational links.-

Collective

  • Codrops Collective

    The Collective features the latest news and resources from the web design & web development community.

  • Subtle Patterns

    Free textures for your next web project

  • SVG News

    SVG-news.com is the premier community bringing together SVG enthusiasts and actors.

  • Line25

    A place to share his web design ideas and inspiration through articles, tutorials and examples of stunning site designs.

source:(https://github.com/a11y/awesome-archive)

《远山》--严阵

不要攫取。攫取会使你失落。失落你要攫取的东西和你的自我。不要占有。占有会使你虚无。你得到的将不再是你所需要的,而你也不再是过去的你。

–严阵的《远山》已经读过无数遍,然而其中蕴含的道理和它那令人神往的幻境至今仍深深地吸引着我。“人生的一览无余是多么地让人追索永世,而又是多么地令人感到可怕,那种终会演变为幻灭的可怕。”的确,感性强的人的思想是无比丰富的,而太强之人往往会更容易伤害到自己。其实,让自己远离这些,回归理性主导的世界,时而在数学的世界里徘徊,时而行走于科学技能的小道上,也许也是一种不错的选择。追求心灵的宁静,不要让内心里美好的东西太多的曝露于阳光之下,仅属于我们自己内心的欣喜我们应独自享受,同样,这样的痛苦也需我们独自承担并消融,这既是对他人的尊重,也是对自我的尊重。


在我的窗口的远方,有一片远山。
晴朗的日子,当我在晨光澄明间第一次打开窗子,我会发现,它是在一片无边的浅蓝中的一缕静悄无声的黛青,而在黄昏,当我最后一次把窗子关上以前,映入我眼帘的它,却是一道朦胧的神秘的金紫。
当风雨如晦云飞雾涌时,我虽然看不见它的影子,但我知道,此时此刻,它依旧守在那儿,默默地静静地无怨无悔地守在那儿,因此在看不到它的时候,从一直涌到我窗口的风云的气息中,我却能感受到它的另一种美,那种既无黛青又无金紫而却是不用任何一种颜色表达的看起来并不存在而实际上却分明存在着的令人只能无穷的意会到的那种美,那种并不为人发现的美。
我惊异于初冬季节的一个早晨,当一夜小雪过后,在片云不见的蓝空的边际出现一弧柔美的银色曲线的时候,我真的惊愕于它的绝妙,那在万花纷谢千树凋零的季节显现出的那种无与伦比的淡薄和不可思议的清远。
我曾到过黄山。我曾不止一次的领略过它的奇松,怪石,云海,温泉。但当我在天都峰上远眺的时候,我只感觉到它的高峻;当我在百步云梯上攀援的时候,我只感觉到它的险峭;当我在散花坞前徘徊的时候,我只感觉到它的秀奇;当我在桃花溪畔漫步的时候,我也只能感觉到它的晶莹而又婉转的匆匆。
我曾到过泰山。我曾膜拜过它的古老和庄严。但当我进入经石峪的时候,我只感觉到它的至尊。当我看到壶天阁历代刻石的时候,我只感觉到它的至显。在我很小的时候,我就记得,在我出生的那个小山村里,人们筑屋,必定要在一块泰山石上刻上“泰山石敢当”几个大字,并将它砌在新屋的石墙上,因而当我穿过中天门看到那组成泰山的每一座巨大的石壁时,我只能很自然的感觉到它的至贵。而当我登上日观峰一览众山的时候,我也只能感觉到它在千古冥冥之中的那种至高。
我曾到过庐山。我曾欣赏过牯岭的亦山亦市。我曾流连过花径的亦画亦诗。我曾在它的仙人洞纵览云飞,倾听那来自锦绣谷的悠悠天籁之音。我也曾登上含鄱亭,看鄱阳湖光苍茫秋水。
我曾到过峨眉。我曾在清音阁的月光下凭栏静听那泉水的如泣如诉。我曾在万年祠的秋林中看那白云的忽近忽远。我曾在洗象池的山道上看山花的自开自落。我也曾直薄峨眉金顶,观蜀汉之浩荡烟云。
可是,我所有见到的,却只能是见到,我所有登临的却只能是登临。于是我在兴高采烈过后,渐渐感悟到:人生的一览无余是多么地让人追索永世,而又是多么地令人感到可怕,那种终会演变为幻灭的可怕。
而远山却不。
它永远不会让那一抹黛青变成真实的绿树芳草,它永远不会让那一道金紫变成具体的茅屋桑田,它也不会让那迷蒙的烟雨变成可以听得到可以看得见的小溪和池塘,它同样也不会让那一弧银白变为崚嶒岩石和凋落的园林。
那是你吗?我从我的打开的窗口远远地望着它。没有握手。没有面对面的看清脸上的每一条深深纹络。它给予我的,只是一个遥远的模糊的微笑,只能靠朝思暮想去补充的微笑。
那是你吗?它有时只是蓦然一现随之便销声匿迹。我知道它是在它在的地方,但我希望那云,那雨,那雾,那雪,一直笼罩着它,只给我留下一个第六感觉的空间。
那是你吗?只和我隔着一扇门,只和我隔着一条路,只和我隔着一个季节,只和我隔着一片云也似的流年。我依稀地看到你。没有点头,没有摇头。没有承袭,也没有许诺。那是永远的不缺陷的缺陷。那是永远的不圆满的圆满。
我曾经试图走近你,可是我又不能走近你,因为,当我真的走近你,真的走进你的你,我便会失去你留给我的那一缕黛青,那一缕永远无法解释的黛青。我也会失去你展示在我视觉里的那一抹金紫,那一抹永远无法猜测的金紫。同时,我也会永远失去你隐入轻云薄雾中留给我的那种感觉,那种虚虚的无比神秘的,仿佛在初雪轻掩的荒原上留下的一行似曾相识的时而消失时而复现的脚印的感觉。我也会失去你出现在天际线上的那一弧银白,那永远也无法代替的至纯至圣的梦影。
我曾经试图走近你,可是我又不能走近你,因为,当我真的走近你,你那远山的所有的魅力,便会在了无距离了无界限之间顷刻消失,而与此同时,你便不再是我的远山,而却是别人的远山了。
距离是什么?距离是一个空间。距离是什么?距离是一个时间。因此,人只有在一定的时空之外,才有可能领略到某种真正的完美,并有可能将它永远收入你终生的美丽的珍藏之中。
不要攫取。攫取会使你失落。失落你要攫取的东西和你的自我。不要占有。占有会使你虚无。你得到的将不再是你所需要的,而你也不再是过去的你。
永远可望而不可及。永远可想而不可依。永远可疏而不可密。永远可寄而不可系。
在我的窗口的远方,有一片远山。
尽管流年似水,世事沧桑,各种各样的时尚的追求,穿梭于朝朝暮暮的红灯绿酒之间,我却越来越感到,我那一片远山的美丽和我那一片远山的富有。

家乡的水

提及家乡,总不免有点儿思念的味道,那正是家乡水的味道。对于一个处在内陆地区的小村庄,是看不到海的,没有海面的辽阔,海水的温存,却时不时能感受到海水的气息,还有水波此起彼伏,阳光洒在上面星星点点的感觉。记得几年前到天津游玩时,第一次看见海,就有一种似曾相识的感觉,那是小时候的我,经常能够感受得到的。
小时候的我,不算很顽皮,却也并不是那种沉默寡言,不逢大事不出门的“小少爷”。我作为一个农家的小毛孩子,上树、下水、钓鱼、玩蛇(当然是水蛇)是常有的事儿,也许是天性对蛇有种厌恶以至畏惧的感觉,所以我也从来不主动去捉蛇、玩蛇,只是万不得已,为的是不逊色,也就经常“勇敢”地捉它来玩。但对于在水中游的水蛇,我是从来都不打扰的,我一直都认为水是一个清且淡的大舞台,以至于对它有种由衷的感情,也许正是这种感情的影响,我对水中的蛇也不再生厌,反倒时常为它婀娜多姿的表演而喝彩。可是一直以来令我十分遗憾的是,我从来都没有在曾养育我们好几代人的水库里寻到它的身影,若是在这个广阔的舞台上表演,那一定别有一番乐趣!
其实,我所提到的那似海非海的,就是那水库,连同一条不宽不窄的水渠,把我们的整个村庄,都圈到了一个椭圆里,而太阳、月亮正如两个日夜交替的焦点,正好映在这清纯的水面上。田野与水库的交界处,是一块很大的空地,长着大片的水草,水草的颜色不是很青,正如天空般淡蓝。幼时的我总会想,也许这水的颜色不是天空映的,就是这水草映的,因为我在游水时,有时把整个身体短时间地沉到水底,不仅感受到了沙石的棱角,还有水草那痒痒的接触。提到游水,那可是我小时候最喜欢的,每逢夏日,本村的,无论老幼,都在太阳刚准备下山时来到这里游水。映着夕阳红彤彤的,不仅是水,还有那一张张淳朴的笑脸。而这游水过后,也可算是洗完了澡,这种洗澡的感受,远非在水龙头前淋浴可比的,在水里游着,心境早已超脱世外,早已通过这水,洗掉了尘世的忧愁与污垢。而在这儿游水的人谈笑的温情,又给这儿的水增添了另一样色彩。我小时候是在一所乡村小学读书,上学和放学的必经之路就是连接着我们村与水库对岸的堤,因此,也就是我最熟悉的地方。走在上面,左右都是广阔的水,丝丝凉风拂过脸颊,远比温和的海风来得静、来得清,还有一种清醇甘甜的感觉,深深吸一口气,这种味道,让全身都能感觉得到,这便是水的味道。我小时候的一个外号,就是由它得来的。在上学时,我总比别人早半个多小时出门,却总比别人迟到,因而就有人叫我“慢乌龟”,这个外号一直伴随着我,直到我离开这所小学后,才被我“强行取缔”。而这段经历,却给我人生划上了难忘的一笔。其实,这也足可见我对这库堤的喜爱程度,只是三四十米长,我却走了不止一小时。站在堤上的我,时常向着水的尽头望去,望得出神,也想了很多。水面上大群的水鸟似箭般冲下水里,接着就冲向蓝天,消失在那水的尽头。我当时挺羡慕她们能够品尝外面的世界,而我,却只能对着这水,向天独叹。也许正是这水,教会了我“奋斗”,给我指引了一条光明的路。因此,我对这水的感情,是一种特殊的感激与思念。
艰苦的求学之路漫长而又无聊,也让我早早地离开了这片土地、这片水。所谓“一方水土养一方人。”我也坚信自己是它的子孙。如今虽久居城市,却总觉得有点烦闷的感觉。我的性格也变得有些孤僻了,心情也没有以前好了。但是前几个月听妈妈说了一件事,竟让我高兴了许久。“围绕着水库,要建设一个生态旅游度假区。”听妈妈这样说。这不禁使我想起童年的一些趣事。水库一年中绝大部分月份是枯水期,而留下来的空地变成了我们的乐园。和我年龄相仿的同伴很有几个,再加上比我大得不是太多的,就足一二十来个。傍晚时分,我们都提前去牵牛,顺便带上那“合资”购置的足球,在这个比几个足球场都要大的空地上来回地踢,那“挥汗如雨”的感觉,是如今的我很难感受得到的。虽然个个都是裸着一双小似香蕉嫩若仁的脚,但踩在石子上隐痛的感觉,早已抛之九霄云外了。况且接下来就是在水库中心洗一个痛快澡,心情愉悦的感觉更是升到了极点。如今,这里要建一个度假区,能够欣赏这美景的人一定很多吧!顺便让外乡人也来感受一下,也正可好好彰显一下它的价值。我离开它已有多年了,对它的感觉已近于朦胧,已很难畅快地勾画出家乡的景致了,这也许是我离它越来越远的缘故吧! 由于要补课,期待已久的暑假也就来得特别迟,长久以来积蓄在我心底的感觉,似快要喷发的火山,也如一汩汩清泉。刚离开学校回家才几天,我就乘上了回老家的汽车,也许,那种期待之情,已提前归属了那片水。
回到这个有大半年没回过的家,首先当然是问候好久不见的奶奶。她是一个把一生都倾注在这块土地的人,大半辈子的经历使她对这块土地异常熟悉,她所倾注的感情也不是我所能比的。我想,对于而今家乡翻天覆地的变化,她一定比我更兴奋,更觉得欣慰。我向奶奶问好过后,首先谈到的并不是“水库改建”的事,而是我回来时看见的那条通往村里的水泥路,我打算用这来切入主题,让我们好好地高兴一次。可奶奶的话却使我有些懵了,她说:“以前这儿是泥巴路,总想有条好路走,可如今路是修了,小偷也来了,前不久就有好几家的牛被偷了。更可气的是,长在田里的稻谷和麦子,一夜就让人连杆带穗给割走喽!”我知道奶奶是一个很乐观的人活到七十多,身体还十分健康,就是乐观奏的效啊!可此时的她脸上却满脸感伤,让我感觉家乡的静彻底被大破了。而当我提及水库时,她的话让我彻底懵了。她说:“建度假区只是表象,办赌场才是真的,听说还是以办校的名义,用的是国家教育经费。”“听说”也许是流言,不可完全相信,但办赌场却非空穴来风,无须寻找证人和证物,来往赌博的人就是最好的明证。也许哪一天那里发生了冲突,那水不仅是傍晚,就是白天,也会有一抹夕阳色彩,是那种永远都不会变淡的色彩。我想,这水的纯也被彻底打破了。然而我还不料,曾经朴实的游水者,竟也会连人带水,托进这烂泥的深渊。也许是我对那蒙昧的水倾注了过多的感情,因此对这些人有了偏见,又或许,是好几年前水的清纯感染了我,自然而然激起了愤怒之情。
站在家门口,我呆呆地极目远望,隐约地可以看到山的身影,听说那就是“峰山”,我想那里一定很繁荣吧!难道它也是通过这种途径繁荣的吗?近处就是这水,这片即将从蒙昧中走出来的水……
不知不觉间,我来到了堤上,习习的凉风依旧吹个不停,浪涛也来得更猛,我举目向四周望去,寻找着我一直以来都想看到的东西——不是那貌似漂亮的幢幢别墅,也不是那移栽过来,貌似高大却似活非活的朽木,而是我小时候看到的那群群水鸟和那展翅高飞的感觉。久久地寻觅只是徒劳,它消失了,这片纯且静的水的真正主人,永远地消失了,换来的却是一群不懂得珍惜的“强盗”,还有和这些强盗狼狈为奸的“朴实者”。在“它们”的一番折腾下,这水的静、这水的纯早已消失,变得混沌不堪。而历史痛痒会真真切切地勾画出这一切,这混沌的水!
天渐渐地暗,却不见明月和繁星,失落的感觉伴着凉风,随着激涛,扩散到了整个村庄,也浸透了我的心。“一方水土养一方人”,她还会养出同样“淳朴”的人吗?怀着对水的敬意,我不敢妄言。
我依旧如多年前那样极目远眺,同样望不到尽头,此时我却觉得眼前的水很远很远,风中的苦涩味不知还是不是她的。我问风,她无言以对,我问水,她却装作听不见……
也许,是我离她太远了吧,又或许,是她离我更远了吧!
二零零七年十一月记

自在飞花轻似梦

自在飞花轻似梦 无边丝雨细如愁~~~


一次次在雨后的操场上徘徊,一遍遍在窗前等待,梦幻的日子在经历风雨的洗礼后,也显得愈加迷人了。只是,那缕饱尝甘霖的阳光何时才能温暖我的心田?曾经听说梦是有翅膀的,只在雨后的曙光下才展翅翱翔,因为只有这刻的人间才愈显温厚,愈加自由。漫山的野草不用为了逃避现实而卑躬屈膝,饱尝甘霖的野花也不再拘于羞涩,开始向新生的世界问好。只有那颗心,还在无声地哭泣,等到的,是迷茫,还是万类霜天竞自由的景象,抑或是生命之舟对未来的祈盼?
不是江南水乡,门前自然看不到潺潺的溪流,听不到溪水欢快的吟唱。然而,取而代之的有荷塘,菡萏并不多,却能够敞开心扉拥抱月儿的影,一分一毫都不落下。微风拂过,没有太多的声响,却仍可涤荡起淡淡的涟漪。月光在水面轻快地浮动,菡萏的叶儿也不安分起来,只是偶尔有几片花落,就像载着月儿的梦。轻如烟,淡如云,游弋于天地之间,又好似承载着梦得魂灵。
门前,窗外。在没有月儿映衬的夜晚总有些暗淡,仅仅能在微弱的灯光下看到荷叶的背影,在雨点的冲刷下显得更加娇人与可爱,只是缺少一分心灵的慰藉。菡萏之美在于它不拘的魂灵,我这才明白为何朝阳会如此迷人,只因它经受过雨中的抗击,那种自由奔放的,看似无知的抗击。
此时此刻,我的心好似演变成了一朵野花。风,是它的风火轮;雨,是它的无忧船。在天上,地下,甚至是滑行在水面上,它都不会停歇地向前··向前。也许古代文人墨客笔下的“自在飞花”也难逃天地的束缚吧,毕竟梦由心生,心为天地所造,真正逃离尘世间万物的梦也应该没有吧······
“撑一支长篙,向清水更清处漫溯,满载一船星辉,在星辉斑斓里放歌。”游弋于更清之处,载满一船星辉返航。掀开一幕迷幻的梦境,撑起一双薄且透明的翅膀,伴着漫天的野花,来感触生命的真知,激奋的力量!
二零零六年九月记