Octopress评论方本框的样式问题
作者:糖果
前几天改octopress的样式,发现评论框的样式没了,变成了普通的表单。然后,想用vimdiff在vps上比较一下,发现新版的css就行一行,没有经过格式化,再小伙伴们的支持下,用chrome把css格式化了,然后在老版的css找到了评论文本框的样式,添加到新的css文件中。
#respond input, #respond textarea {
background-color: #fff;
border: 5px solid rgba(128, 128, 160, 0.15);
padding: 10px;
font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif;
color: #4b4b4b;
font-size: 24px;
-webkit-border-radius: 5px;
margin-bottom: 15px;
margin-top: -10px;
}
#respond in ...
Octopress的Figcaption的CSS样式差异
作者、编辑:糖果
新版的Octopress与旧版的的Figcaption的CSS样式差异,以下的CSS是被格式化之后的:
旧版的
.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure[role=code] figcaption {
text-align: center;
font-size: 13px;
line-height: 2em;
text-shadow: #cbcccc 0 1px 0;
color: #474747;
font-weight: normal;
margin-bottom: 0;
-moz-border-radius-topleft: 5px;
-webkit-border-top-left-radius: 5px;
-o-border-top-left-radius: 5px;
-ms-border-top-left-radius: 5px;
- ...
Moonscript与HTML模板
作者:糖果
Moonscript与HTML模板
Lapis框架可以用Moonscript直接编程,Moonscript可以将需要模板系统对于的网页输出,一揽子的都在Moonscript中用代码实现,可以看leaof.net/lapis下最典型的官方例子,其实DB的相关操作也可以在moonscript中都完成了,对于某种类型的操作来看,这是很酷的。
我们先来看一下模板的例子:
import Widget from require "lapis.html"
class Index extends Widget
content: =>
h1 class: "header", "Hello"
@user_panel!
div class: "body", ->
text "Welcome to my site!"
user_panel: =>
return unless @current_user
div class: "user_panel", "Welcome back " .. @current_user.name
这段m ...
安装zsh及其常用插件
zsh可以被视为是对Bourne shell的一种扩展,完全兼容bash。它强大的自动补全功能对我还是非常有吸引力的。
总体来说,zsh的功能主要包括:
开箱即用、可编程的命令行补全功能可以帮助用户输入各种参数以及选项。
在用户启动的所有shell中共享命令历史。
通过扩展的文件通配符,可以不利用外部命令达到find命令一般展开文件名。
改进的变量与数组处理。
在缓冲区中编辑多行命令。
多种兼容模式,例如使用/bin/sh运行时可以伪装成Bourne shell。
可以定制呈现形式的提示符;包括在屏幕右端显示信息,并在键入长命令时自动隐藏。
可加载的模块,提供其他各种支持:完整的TCP与Unix域套接字控制,FTP. 客户端与扩充过的数学函数。
完全可定制化。
安装zsh
在Linux中,我们可以:
# 如果你用的是yum包管理器,将下面的apt-get替换成yum即可。
sudo apt-get install zsh
# 安装完成后,我们要讲默认的shell替换成zsh
chsh -s /bin/zsh
在cygwin中,我们可以用cygw ...
Logstash基础配置
编辑:糖果
Logstash的启动脚本中有比较多的命令行参数:
###-f :用于指定配置文件
使用文件,目录,或者通配符加载配置信息,如果指定为目录或者通配符,按字母顺序加载。
###-e: 用于指定字符串输入
默认输入为,
stdin { type => stdin }
默认输出为:
stdout { codec => rubydebug }}
-w: 指FilterWorkers的数量,默认为1
-l:指定输出文件的路径,默认为控制台输出
–verbose:设置较少的日志
–debug:设置更消息的日志
–watchdog-timeout TIMEOUT 设置watchdog超时时间,默认为10秒。
启动案例:
bin/logstash -f logstash-simple.conf -w 2
logstash-simple.conf内容为:
input { stdin { } } #输入
filter{} ...
Sitegen的模板问题
作者:糖果
Sitegen的模板是用MoonScript定义, 但是leafo老版的代码,貌似和VPS的环境结合的不是很好,是不是纯环境原因造成的不深究了,直接把模板代码改成需要的样式。
div class: "post", ->
div class: "sidebar", ->
raw "<a href='.' title='leafo.net'><img class='logo' src='../img/leafo.svg' alt='leafo.net' /></a>"
Nginx与OpenResty的用户权限管理
作者:足至迹留
编辑:糖果
原文引用:
【原文】
Nginx用户权限
在nginx.conf文件的第一行一般是设置用户的地方(编译安装nginx时的参数–user=也是指定用户的地方),如 user www www;
如不指定默认是nobody. 这里用户的设置又有什么意义呢?主要是指定执行nginx的worker process的用户,linux里所有程序都是文件,都具有权限问题,这个指定的用户对特定的文件有没有权限访问或执行,就是这个用户的意义。
一、本人遇到问题
1.1 问题描述
不想让请求直接访问到具体页面,只是列出目录内的文件列表。于是把proxy_pass参数去掉,配置autoindex on,然后指定root目录。可访问后返回403,没有权限。
1.2 问题解决
猜测是用户原因,因为是默认的nobody,没有访问目录权限,然后指定有权限的用户,ok了。
二、网上类似问题
例一:403错误,没有权限
参考文章A:
参考文章B:
有时候当Nginx读取本地目录时会收到403错误,权限问题。
先来了解一下Nginx的用户管理:
(1)Nginx在以Linux service脚本 ...
用Logstash解析OpenResty的Resty.Logger推送的Syslog数据
作者:糖果
【前记】
用Resty.Logger给SyslogNG推送了几个测试的数据字段,如下:
192.168.0.1 68.180.228.95 GET /feed Jun 28 16:12:19
中间用空格区分,下面是grok的测试,经测式这些模式的测试数据都能正常解析。
【正文】
ruby grokdebug.rb -m '192.168.0.1 68.180.228.95 GET /feed Jun 28 16:12:19' -p '%{IP:server_ip} %{IP:client_ip} %{WORD:http_verb} %{PATH:baseurl} %{MONTH:month} %{MONTHDAY:day} %{TIME:time}'
被正常分析出来的JSON,如下:
{
"server_ip": [
"139.129 ...
Logstash Filter解析Openrety的Log数据的简单配置
作者:糖果
Logstash的配置文件位置:/etc/logstash, 而logstash本身的程序,可以放到别的定制的位置。
一般性的Logstash配置有三个节:
input {
file {
path => "/test/log/567/*.log"
type => "nginx" # a type to identify those logs (will need this later)
}
}
filter {
if [type] == "nginx" { # this is where we use the type from the input section
grok {
match => [ "message", "COM ...
爬虫小工具BeautifulSoup
BeautifulSoup是一种用于分析网页HTML内容元素的工具,还有类似的Request也可完成相关工作。
下面是一小段程序,翻出来:
from urllib2 import urlopen, URLError
from bs4 import BeautifulSoup
def fetch():
baseUrl = 'http://house.focus.cn/msglist/7906/'
hd = urlopen(baseUrl, timeout = 6)
content = hd.read()
content = content.decode('gb2312', 'ignore')
soup = BeautifulSoup(content)
p = soup.findAll('a')
for item in p:
val = str(item)
if (val.find('title') > 0) ...


