MySQL:Can’t connect to local MySQL server through socket

今天启动MySQL的时候 突然间提示:

Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

上网搜索了一下解决方法,结果发现这个问题很有可能是由于MySQL服务器未启动导致的 于是,赶紧用service命令查看一下mysqld的启动情况

[codesyntax lang=”bash”]

service mysqld status

[/codesyntax]

结果的确发现服务未启动  于是赶紧将服务启动,结果就可以正常使用了

[codesyntax lang=”bash”]

service mysqld start

[/codesyntax]

不过  后来在网上查看了一下 ,结果发现出现这个问题也有可能是在安装MySQL的时候mysql.sock文件出现问题,如使用上述方法仍旧出现报错的话,则需要查看一下mysql.sock文件的情况了

[codesyntax lang=”bash”]

mysql -u [user] -p -S /var/lib/mysql/mysql.sock

[/codesyntax]

好了 就这样问题就完全解决了~~

Git入门教程

在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目托管平台,许多企业也都是用GitHub来协同开发工作。笔者最初决定学习Git也是因为在团队内部设计方案初步被开发出来后,难免会有一些细节需要调整,而为了调整几像素的问题再求前端工程师出马,其实是很影响整体效率的,所以希望通过学习GitHub好在必要的时候直接参与开发,能发挥自己的一点CSS技术以更直接快速的解决问题。 但是期间竟然发现网上无一篇为设计师而备的Git教程,典型的,几乎没有一个教程讲了GitHub的官方应用,而都是围绕命令符做教程,对就是DOS那样的命令符界面,这对于设计师和产品经理等非技术背景从业者来说多少有些难于上手,所以笔者打算结合个人体验,自己动手写一篇以使用网页和客户端为主的GitHub教程(暂时先仅以Mac版客户端为例),希望它能帮助大家以最快速度熟悉并逐渐开始使用GitHub。

 为什么要了解GitHub

在开始之前,还是得说说为什么GitHub值得设计师学习。除了开篇所讲的例子,可以将自己所了解的一点CSS或开发技能发挥出来,降低团队合作中的沟通成本。这本质上还是设计师是否应该学习开发或学习到什么程度的问题。不过我一直认为这没什么可探讨的,只是每个人不同的选择和追求。就像有些人是想成为家具设计师,有些人是真想亲手打磨出自己心中最理想的那一把椅子;有些人想成为建筑设计师,有些人只想在山脚下为家人盖一座完美小屋。同样,如果你是真的热爱这个日新月异的行业,没准某天也要自己创造点什么,我想你一定会毫不犹豫的开始学习。

 什么是Github

按惯例,还是先简介下究竟什么是Git(有基本认识的同学可以直接跳过)。让我们摒弃那些专业名词,用设计师工作中经常遇到的情况来介绍什么是Git:

1. 你出了一版方案A,在大家讨论后,你改到B,结果再讨论,大家觉得还是不如用A,这时发现A没有另存,还得再改回去!在GitHub中就不用担心,它会记录你提交的每个版本,并把这些都放在一个仓库(Repository)里,而每一次提交改变就是 Commit,你可以随时回退到任意一个版本。
2. 此外你还很可能遇到方案衍生的情况,在方案A的基础上,改出了一种方案B,又改出了一种方案C,可能还分别衍生出B1、B2及C1、C2,在GitHub里有分支(Branches)可以记录这种方案的分化过程。
3. 后来你觉得B1和C2方案中都有可取的地方,把它们融合一下就可以输出终稿了,Git里当然也支持这种分支合并(Merged)。

当你个人使用Git,涉及的基本概念就这么几条,是不非常简单呢。下面我们来看看多人协同,也就是Git真正厉害的地方,当然也不复杂。

在稍大的团队中,可能需要几个设计师合作完成一个方案,怎么样统一进度呢,一种就是大家每天把文件拷在一起,这需要经常浪费时间去同步文件,显然很不方便。另一种是每个人电脑里都留一份,需要时就和云端服务器同步,Git就是采用这样的所谓分布式系统。好处是更安全,也更便捷。

那么问题也就来了,如果大家都改同一个东西,万一冲突了怎么办?不用担心,Git会帮你对比并告诉你哪里有冲突了,你可以逐个对冲突的地方做出抉择。此外,前面不是讲到可以衍生出分支(Branches)么,在大家各自推进方案的时候,分别把内容放在不同的分支里,就不会相互干扰了。

开源的项目是任何人都可见,你可以Fork一个项目,这相当于在你的账号下从原项目新建了一个分支,你可以在此基础上改动,如果有希望提交给原作者的成果,可以发合并申请到原库(Pull Request),原作者可以看到通知并决定是否合并。通过这种方式,大家就可以合力将某个开源项目变得更好。


最后我们还得明确一下概念,Git和GitHub有什么区别,引用知乎上Fluyy的解释:

git是一个版本控制工具,github是一个用git做版本控制的项目托管平台。”这有点类似于Wordpress和Wordpress.com的关系,前者是一个任何有都可以用的免费博客系统,后者是一个平台,在这个平台上你可以通过注册来直接使用Wordpress写博客。

说到这里我想你已经对GitHub是怎么回事有了基本的认识,下面就让我们撸起袖子,以一个简单的案例来看看GitHub到底是怎么使用吧。

 案例学习-做一遍全明白!

我们以Fork一个项目,做出自己的修改并提交给原作者的任务作为基本案例,下面跟着我一步一步来吧,网快手快的同学几分钟就可以搞定啦。

  第一步:注册一个GitHub账号并登录

这个流程就不说了,完成后可以下载GitHub官方App,并登录。

  第二步:Fork仓库

点这里打开我用马甲专为本教程建立一个库 Designers-Learn-Git,可以看到创建者名(我的马甲)写在/前面:Tower-KevinLi。然后点击右上角的Fork按钮。 完成后你会发现跳到一个新的页面,Tower-KevinLi变成了你的GitHub账户名(cnkevinlee是我的另一个马甲…),这表示你的账号下已经“复制了”一份Designer-Learn-Git,然后你就可以做修改了。

  第三步:修改文件

可以看到Designers-Learn-Git这个仓库里只有两个文件“README.md”(项目说明)和“花名册.txt”,这里我们只需尝试修改后者(道理和修改有很多文件的仓库是一样的)。可以直接在线修改,也可以先克隆到本机再修改,对于比较复杂的项目肯定是要采取后者,不过这里我们可以先看看在网页上直接修改怎么操作。 在线修改:直接在页面上点”花名册.txt“的名字,进入如下详情页,再点击”Edit“。

这里设计的任务内容是在花名册上随便写写你的ID和Tiitle,初衷是能通过这个和学习这个教程的同学有一个互动,看看你能排到第几位。 在编辑页面编辑完后,滚动到页面底部,点击绿色的“Commit Changes”按钮确认提交。 本地修改:另一种办法是把项目克隆到本地后再修改,打开客户端(这里以Mac最新版为例),点击右上角的“+”号,切换到“Clone”,找到“Designers-Learn-Git”后点击右下的“Clone Repository”按钮。

然后从本地找到克隆的文件夹,打开“花名册.txt”,编辑并保存。这时再切换到GitHub应用的窗口,你会发现它在“Changes”页已经检测到并列出了你的改变,然后点击Commit & Sync按钮,将修改提交并同步到GitHub。注意,提交和同步是两个动作,需要先将下图那个绿色的按钮激活,这两个动作才会同时执行,否则你就需要在提交后再点整个界面右上角的Sync(适用于做出多个修改后统一提交的情况)。

  第四步:申请合并

在确认已经对自己Fork了的仓库修改成功后,你可以将提交合并申请,申请将你的版本合并入最初的项目也就是我创建的 Designers-Learn-Git,步骤如下: 在网页上打开你Fork的Designers-Learn-Git的页面,点击这个醒目的绿色按钮
  再点击“Create pull request”按钮,提交申请,完成后我会收到通知,并将你补充的内容合并入原库。

注意上图圈红的地方显示了要合并的两个分支,由于没有新建分支,这里就默认显示两个库都仅有的Master主分支,你可以尝试新建分支,并选择其它分支申请合并,体验GitHub的分支功能,本文作为入门教程这里就先不赘述了,有问题的同学可以联系我。

 图片对比功能,设计师的真爱!

做完前面的案例,你会发现GitHub可以直接对比文件间的改动,但也仅对程序、文本文件有效,可我们设计师都是靠图吃饭啊!好了别急,GitHub一直在努力提升设计师的使用体验,并且已经实现了很好的图片对比功能,当然直接上传可能巨大的PSD源文件不太现实,但我们可以对比导出后的版本,点击这里看看Demo吧。

GitHub的图片对比工具提供了三种对比方法帮你找不同,我们来挨个看一下: 2-up:就是直接并排放在一起对比,会显示尺寸:

Swipe:是将两个图摞在一起,通过拖动,改变上面的图的显示大小,用户盯着拖动线附近的变化就可以快速发现区别了,如图,当拖到猫眼附近就很容易看出一个戴了眼镜。

Onion Skin:也是将两个图摞在一块,图下方有一个拖动条,控制上面一张图的透明度,这样在拖动改变透明度的时候,就能感觉到有区别的地方了。

 GitHub使用拓展-能做的远不止这些!

版本管理,协同开发与设计,这只是GitHub最基本的用途,事实上利用Git的体系,可以实现很多其它事情。

  用GitHub协作翻译

苹果发布Swift语言,号称更加容易上手,让很多设计师都跃跃欲试。官方同时发布了(翻译成中文后)达300多页的官方手册,而国内一个自发组织起来的团队,30多个人用9天时间即将翻译和校对工作全部完成,他们每人都还有自己的事情,上班、上线、创业,然而借助GitHub他们仅用业余时间在这么短的时间内就完成了这一壮举。他们的口号是“这一次,让中国和世界同步”

点这里可以看到他们的项目和翻译成果。

  用GitHub写书

说到了前一个例子,就不得不提GitBook,一个结合GitHub和Markdown来制作精美在线读物的工具。你可以自己或和任何人合作,编著一本在线书籍,还能够销售,当作家不再只是梦。

  用GitHub进行项目管理

GitHub最初是为了开发的管理而生,当然也就具备了项目管理的潜质,特别是与开发密切联系的项目中,它的优势尽显。这几篇文章介绍了如何使用GitHub结合其它工具进行项目管理:《Using Github for Project Management》、《使用GitHub进行团队合作》。当然,GitHub还是很偏重开发的管理,一般的项目管理还是适合使用我们家Tower之类的产品 :)

  用GitHub搭建博客、个人网站

一个在线的个人页面,独立博客,几乎是每个设计师的必备。过去,要自己租空间、安装网站程序,搭个人网站,是个耗时又好钱的事。而GitHub本身提供免费的托管服务,又提供了贴心的Pages功能,可以绑定你自己的域名,让这一切就水到渠成了。免费、高效、不限流量,做一个个人页面绰绰有余,比如前两天碰巧看到的这个例子:jianglai.me。不过其实很多工程师都已经在GitHub上搭建了自己的博客,设计师们也快跟进吧。 推荐一些相关教程:

 更多进阶教程推荐

鉴于本文只是一篇抛砖引玉的入门教程,就不再详述更多的细节,如果对Git感兴趣的同学,可以看看下面这些,它们可以帮助你成为一名专家、至少是设计师中的Git专家 🙂

当然这也许不是最好的GitHub入门教程,但一定是最适合设计师的,希望它能帮助你快速的入门了解这一程序猿们整天挂在嘴边的东西。文中如有不恰当之处请指出,有不清楚的地方也欢迎联系我 @彩程-Kevin 讨论。 当然,GitHub只是技术世界的一个小支脉,问题的根本,还是设计师对于技术的学习,如果你是个不满足于绘图工具,想做Geek的设计师,欢迎加群 302258924 交流。

本文参考至:WEB开发者

iptables设置大全

对于Internet上的系统,不管是什么情况都要明确一点:网络是不安全的。因此,虽然创建一个防火墙并不能保证系统100%安全,但却是绝对必要的。 Linux提供了一个非常优秀的防火墙工具netfilter/iptables。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍使用netfilter/iptables实现防火墙架设和Internet连接共享等应用。

netfilter/iptabels应用程序,被认为是Linux中实现包过滤功能的第四代应用程序。netfilter/iptables包含在2.4以后的内核中,它可以实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。 netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。netfilter/iptables从ipchains和 ipwadfm(IP防火墙管理)演化而来,功能更加强大。下文将netfilter/iptabels统一称为iptables。可以用iptables为Unix、Linux和BSD个人工作站创建一个防火墙,也可以为一个子网创建防火墙以保护其它的系统平台。iptales只读取数据包头,不会给信息流增加负担,也无需进行验证。要想获得更好的安全性,可以将其 和一个代理服务器(比如squid)相结合。

基本概念

典型的防火墙设置有两个网卡:一个流入,一个流出。iptables读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。通过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做 些什么的指令,规则控制信息包的过滤。通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表 内的链中。关于添加、去除、编辑规则的命令,一般语法如下:

[codesyntax lang=”bash”]

iptables [-t table] command [match] [target]

[/codesyntax]

1.表(table)

[-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、? nat和mangle。该选项不是必需的,如果未指定,则filter作为缺省表。各表实现的功能如表1所示。


表1 三种表实现的功能

2.命令(command)

command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则。表2是最常用的一些命令及例子。


表2 命令的功能和样例

3.匹配(match)

iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议的匹配两大类。这里将介绍可用于采用任何协议的信息包的通用匹配。表3是一些重要且常用的通用匹配及示例说明。


表3 通用匹配及示例说明

4.目标(target)

目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。表4是常用的一些目标及示例说明。

除表4外,还有许多用于建立高级规则的其它目标,如LOG、REDIRECT、MARK、MIRROR和MASQUERADE等。

表4 目标及示例说明

应用iptables与ipchains和ipfwadm不同的是,iptables可以配置有状态的防火 墙。iptables可以检测到源地址和目的地址、源端口和目的端口及流入数据包的顺序,即iptables记住了在现有连接中,哪些数据包已经被允许接 收。这使得暂时性的端口只有在需要时才会被打开,并且会拒绝所有永久性占用端口的请求,大大地加强了安全性。同时,那些被更改了报头的数据包,即使包含有 一个被允许的目的地址和端口,也会被检测到并被丢弃。此外,有状态的防火墙能够指定并记住为发送或接收信息包所建立连接的状态。防火墙可以从信息包的连接 跟踪状态获得该信息。在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。

?具体使用:

1.启动和停止iptables

下面将正式使用iptables来创建防火墙。启动和停止iptables的方法取决于所使用的Linux发行版,可以先查看所使用Linux版本的文档。

一般情况下,iptables已经包含在Linux发行版中,运行iptables –version来查看系统是否安装了iptables。在Red Hat 9.0中,安装的版本是iptables v1.2.7a。如果系统没有安装iptables,则可以从http://www.netfilter.org下载。

2.查看规则集

上面仅对iptables的用法做了一个简单介绍,使用中可以运行man iptables来查看所有命令和选项的完整介绍,或者运行iptables -help来查看一个快速帮助。要查看系统中现有的iptables规划集,可以运行以下命令:

[codesyntax? lang=”bash”]
iptables –list
[/codesyntax?]

下面是没有定义规划时iptables的样子:
[codesyntax? lang=”bash”]
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[/codesyntax ]
如上例所示,每一个数据包都要通过三个内建的链(INPUT、OUTPUT和FORWARD)中的一个。

filter是最常用的表,在filter表中最常用的三个目标是ACCEPT、DROP和REJECT。DROP会丢弃数据包,不再对其进行任何处理。REJECT会把出错信息传送至发送数据包的主机。


图1 Red Hat 9.0中安全设置的GUI工具

在Red Hat 9.0中,提供一个GUI程序来让用户对系统的安装级别进行简单的配置。该工具的启动方法是:主选单→系统设置→安全工具(如图1所示)。在此将安全级别 设为“高级”,并选择使用默认的防火墙规则。点击确定后,再用iptables -list显示,发现iptables与没有定义规则前已经有很大不同,如下所示:

[codesyntax ? lang=”bash”]
[root@workstation root]# iptables –list
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Lokkit-0-50-INPUT all — anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Lokkit-0-50-INPUT all — anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
……
[/codesyntax ?]

现实中一般不使用这个GUI工具,因为它的功能有限,也不够透明。相比较而言,SuSE 9.0中相应的配置工具要好得多,它可以在GUI下对防火墙进行更加细化的配置(比如增加了IP转发和伪装等功能的配置)。尽管这样,一般还是自己来增加和删除规则。


图2 SuSE 9.0中YaST配置工具中的防火墙设置

3.增加规则

本例中的规则将会阻止来自某一特定IP范围内的数据包,因为该IP地址范围被管理员怀疑有大量恶意攻击者在活动:
[codesyntax lang=”bash”]
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j DROP
[/codesyntax]
也可以很轻易地阻止所有流向攻击者IP地址的数据包,该命令稍有不同
[codesyntax lang=”bash”]
#?iptables -t filter -A OUTPUT -d 123.456.789.0/24 -j DROP
[/codesyntax]
注意这里的A选项,如前所述,使用它说明是给现有的链添加规则。

4.删除规则

网络上的恶意攻击者总是在变化的,因此需要不断改变IP。假设一个网上攻击者转移到新的IP地址,而其老的IP地址被分配给一些清白的用户,那么这时这些用户的数据包将无法通过你的网络。这种情况下,可以使用带-D选项的命令来删除现有的规则:
[codesyntax lang=”bash”]
#?iptables -t filter -D OUTPUT -d 123.456.789.0/24 -j DROP
[/codesyntax]

5.缺省的策略

创建一个具有很好灵活性、可以抵御各种意外事件的规则需要大量的时间。对于那些没有时间这样做的人,最基本的原则是“先拒绝所有的

数据包,然后再允许需要的”。下面来为每一个链设置缺省的规则:
[codesyntax lang=”bash”]
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
[/codesyntax]
这里选项-P用于设置链的策略,只有三个内建的链才有策略。这些策略可以让信息毫无限制地流出,但不允许信息流入。很多时候需要接收外部信息,则可使用以下命令:
[codesyntax lang=”bash”]
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j ACCEPT
[/codesyntax]

6.SYN的使用

不能关闭所有端口,也不能只指定某些端口处于打开状态,那么怎样才能设置一个有效的规则,既可以允许普通用户正常通过,又可以阻止恶意攻击者访问网络呢?刚开始使用iptables的人可以充分利用syn标识来阻止那些未经授权的访问。 iptables只检测数据包的报头,事实上,除iptables以外,很多其它有用的数据包分析都是基于报头的。比如,在进行Web冲浪时,一个请求从 你的PC发送至其它地方的Web服务器上,该服务器会响应请求并发回一个数据包,同时得到你系统上的一个临时端口。与响应请求不同的是,服务器并不关心所 传送的内容。可以利用这种特点来设置规则,让它阻止所有没有经过你系统授权的TCP连接:

[codesyntax lang=”bash”]# iptables -t filter -A INPUT -i eth0 -p tcp –syn -j DROP[/codesyntax]

这里的-i指的是网卡,-p则是指协议,–syn则表示带有syn标识设置的TCP数据包。SYN用于初始化一个TCP连接,如果自己机器上没有运行任何服务器,别人也就不会向你发送SYN数据包。

7.有状态的数据包的检测

前边的例子把每一个数据包看成是独立的,而不是相互关联的,依靠的是数据包的头信息。 iptables会检查数据包的源和目的IP地址、源和目的端口、流入数据包的顺序号、TCP先后顺序的信息及头标记(SYN、ACK、FIN、RST 等)的状态,即它会跟踪整个连接会话,从而使整个过滤过程是相互关联的。

8.共享一个Internet连接

网络地址翻译和IP伪装都可以实现多台主机共享一个Internet连接,这个局域网 可以是Linux和Windows系统组成的多系统局域网。假设现在有一台机器,配有两个网卡,其中eth0为“公共”网卡,eth1为“私有”网卡,即 eth0被分配了一个静态的、可路由的IP地址,而eth1被分配了一个私有的、不能路由的IP,该IP是属于该局域网子网的。要实现上述功能,需要向 nat和filter表中添加一些链:
[codesyntax lang=”bash”]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t filter -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT
# iptables -t filter -A FORWARD -i eth1 -o eth0 -j ACCEPT[/codesyntax]
这显示了有状态的数据包检测的价值。请注意,这里是如何实现流入数据包只有在属于一个已经存在的连接时才被允许,而所有来自局域网内流向外的数据包则都允许通过。第一条规则让所有流出的信息看起来都是来自防火墙机器的,而并不会显示出防火墙后面还有一个局域网。

下面的命令为FORWARD和POSTROUTING链设置缺省的策略,在使用伪装时,有一个缺省的POSTROUTING DROP策略非常重要,否则就可能有心怀恶意的用户突破网关后伪装自己的身份。
[codesyntax lang=”bash”]# iptables -t filter -P FORWARD DROP
# iptables -t nat -P POSTROUTING DROP[/codesyntax]
下面的命令为拨号连接设置,它可以动态地分配IP地址
[codesyntax lang=”bash”]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE[/codesyntax]

9.运行服务器时的情况

有时也会把服务器放置在防火墙后面,这时iptables就需要知道从哪儿通过数据包,设置如下所示:
[codesyntax lang=”bash”]# iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j DNAT -to 192.168.0.10:80
# iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 25 -j DNAT -to 192.168.0.11:25[/codesyntax]

10.规则的保存

到现在为止,所有的例子都是在命令行中进行的。在测试新的规则时,这是一种很好的方式,但一旦测试结果令人满意,就可以将它们保存为脚本。可以使用 iptables-save 命令来实现:

[codesyntax lang=”bash”]$ iptables-save > iptables-script[/codesyntax]

信息包过滤表中的所有规则都被保存在文件iptables-script中。无论何时再次引导系统,都可以使用iptables-restore命令将规则集从该脚本文件恢复到信息包过滤表。恢复命令如下所示:

[codesyntax lang=”bash”]$ iptables-restore iptables-script[/codesyntax]

如果愿意在每次引导系统时自动恢复该规则集,则可以将上面指定的这条命令放到任何一个初始化Shell脚本中。

下面的例子并不是一个完整的脚本,它只是描述了如何使用变量及提供了一些附加的规则样例。

[codesyntax lang=”bash”]#!/bin/sh
#为变量赋值
IPTABLES=/sbin/iptables
LAN_NET=”192.168.1.0/24″
IFACE= “eth0″
LO_IFACE=”lo”
LO_IP=”127.0.0.1″
#加载所需的内核
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_nat
#缺省情况下,IP转发都处于不可用状态,将其设置为可用状态:
echo 1 > /proc/sys/net/ipv4/ip_forward
#使IP的动态分配功能可用
echo 1> /proc/sys/net/ipv4/ip_dynaddr
#每次重启这个脚本时,最好清除以前所设的规则
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -F -t nat
#只允许在LAN中使用SSH连接
$IPTABLES -A INPUT -s LAN_NET -p tcp –destination-port ssh -j ACCEPT
#允许loopback!
$IPTABLES -A INPUT -i lo -p all -j ACCEPT
$IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
#丢弃那些流入的宣称是来自本地机器的数据包
#丢弃那些流出的不是出自本地机的数据包
$IPTABLES -A INPUT -i $IFACE -s $LAN_NET -j DROP
$IPTABLES -A OUTPUT -o $IFACE -s ! $LAN_NET -j DROP
#限制一些流出的信息
$IPTABLES -A OUTPUT -o eth0 -p tcp -dport 31337 -j DROP
$IPTABLES -A OUTPUT -o eth0 -p tcp -sport 31337 -j DROP
#此外,31335、27444、27665、20034 NetBus、9704、137-139(smb)端口也应被禁止[/codesyntax]

Shell访问MySQL数据库方法

原有搭建了两台Mysql主从数据库服务器

先准备每日从主服务器进行数据增量备份 然后在子机上进行数据增量恢复

而实现数据库的每日增量备份还原

 

主机数据库的备份比较好弄  直接mysqldump就可以了

但是子机上的还原 有那么一点小麻烦

上网搜索了一下 然后自己整理了一下用脚本访问数据库的两种方法:

1. 直接利用mysql的参数进行控制

[codesyntax lang=”bash”]

#!/bin/sh
#数据库基本信息
DBUSER=bak
DBPASSWD=backup
#数据库连接
mysql -u${DBUSER} -p${DBPASSWD}

[/codesyntax]
这种方法 只能是直接进入到数据库 但是后续的处理还需要进行二次编写

 

2. 直接编写expect脚本进行控制

首先下载expect,这个比较好处理  直接yum或者是sudo apt-get就可以了

然后就是编写脚本 也没有想象中的要困难
[codesyntax lang=”bash”]

#!/usr/bin/expect
spawn mysql -ubak -p
expect "Enter password:"
send "backup\n"
expect "mysql>"
send "select * from mysql.user;\n"
expect "mysql>"
send "show databases;\n"
#echo 正在显示用户数据
expect eof

[/codesyntax]
用第二种方法至少可以进行数据库的相对操作,毕竟expect本来就是进行交互式脚本运行的

 

当然还有其他的方式进行的  这个后续进行补充吧……

毕竟现在主要的是将任务给完成

 

设置常见站点视频分享

现在很多视频站点上都提供了分享的功能,在进行收集转载的过程中,很多朋友会禁止FLV、SWF等视频文件自动播放,但在某些情况下也有些人需要让他们自动播放。
今天总结了一下,针对不同站点提供的视频分享,让其能根据自己喜好来进行播放是否自动的设定。

 

搜狐视频自动播放详解

自动播放:

<embed src="http://news.sohu.com/player/20091120/Main.swf" flashVars="type=Singleton&domain=inner&skin=0&flv=http://data.vod.sohu.com/20090605/4dc649f4-b8c8-44b0-a01e-9e9befb32ac4V.mp4&cover=&autoPlay=true&recommend=http://s.sohu.com/tv_tuijian.html&pageUrl=http://tv.sohu.com/20090605/n264359598.shtml" quality="high" bgcolor="#000000" width="510" height="420" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

不自动播放:

<embed src="http://news.sohu.com/player/20091120/Main.swf" flashVars="type=Singleton&domain=inner&skin=0&flv=http://data.vod.sohu.com/20090605/4dc649f4-b8c8-44b0-a01e-9e9befb32ac4V.mp4&cover=&autoPlay=false&recommend=http://s.sohu.com/tv_tuijian.html&pageUrl=http://tv.sohu.com/20090605/n264359598.shtml" quality="high" bgcolor="#000000" width="510" height="420" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

优酷视频自动播放详解

不自动播放:

http://player.youku.com/player.php/sid/XNDA3OTM4NA==/v.swf

自动播放:

http://player.youku.com/player.php/sid/XNDA3OTM4NA==/p/1.swf

代码修改:将原始地址中的v换成p/1。

也可以直接加上参数来进行修改
加上自动播放参数isAutoPlay=true,使用&连接。
如原始地址:

http://player.youku.com/player.php/sid/XNDA3OTM4NA==/v.swf。

播后地址:

http://static.youku.com/v1.0.0270/v/swf/qplayer.swf?VideoIDS=XNDA3OTM4NA==&embedid=-&showAd=0

1、经修改后,能自动播放,不显示相关视频,不插播广告的地址:

http://static.youku.com/v/swf/qplayer.swf?VideoIDS=XNDA3OTM4NA=&isAutoPlay=true&isShowRelatedVideo=false&embedid=-&showAd=0

2、如果有的朋友想将这段视频以MP3的格式出现贴子中,那么就用下面这段代码来实现吧,同样只需将绿色部分的代码替换就OK了,非常简单实用,最重要是可加入在空间、博客做为背景音乐。

http://static.youku.com/v/swf/qplayer.swf?VideoIDS=XNDA3OTM4NA=&isAutoPlay=true&isShowRelatedVideo=false&embedid=-&showAd=0#.mp3

注意变化,后缀已变成.mp3;其中,isShowRelatedVideo=false:不显示相关视频,showAd=0:不显示广告。
这时就可用我们平时习惯用的自动播放的代码,直接把地址贴进去,这样很方便得到后缀为.MP3的视频地址了。其实,这个方法只是换了个播放器而已,给了我们一个是MP3播放器的假象。

[color=#8FBC8F][MUSIC]http://static.youku.com/v/swf/qplayer.swf?VideoIDS=XNDA3OTM4NA=&isAutoPlay=true&isShowRelatedVideo=false&embedid=-&showAd=0#.mp3[/MUSIC]][/color]

如果想要控制声音、进度或者*,还需要用鼠标拉动视频上的那个露出部分很少的工具条。
在原始地址的【=】和【/v】之间,加入“&isAutoPlay=true”。
如原始地址:

http://player.youku.com/player.php/sid/XNDA3OTM4NA==/v.swf

那么在=和/v之间,加入“&isAutoPlay=true”,就得到了可以自动播放的视频地址:

http://player.youku.com/player.php/sid/XNDA3OTM4NA==&isAutoPlay=true/v.swf

56视频播放

56视频有两种,一种是相册视频,如:
相册FLASH地址:http://www.56.com/deux_83949727.swf,这个地址不能自动播放,将地址中的deux改成p2,得到自动播放的地址:http://www.56.com/p2_83949727.swf。
另一种是视频,如:
视频的FLASH地址:

http://www.56.com/n_v41_/c24_/28_/18_/xuhui8491_/zhajm_124019538955_/226000_/0_/42719013.swf

这个地址不能自动播放,需要对原始地址进行修改:
1、打开这个视频FLASH地址:

http://www.56.com/n_v41_/c24_/28_/18_/xuhui8491_/zhajm_124019538955_/226000_/0_/42719013.swf

其目的是通过打开视频,看看出现的地址有没有变化,如地址没有变化,再换一种方法打开,直至出现的地址发生了变化。
打开视频地址的方法很多,如将地址粘贴到浏览器中打开,或将地址写入你的博客日记、QQ空间日记、word文档中打开。
本人是通过IE浏览器打开的,在浏览器地址栏出现的地址是:

http://www.56.com/flashApp/56.swf?img_host=v41.56.com&host=c24.56.com&pURL=28&sURL=18&user=xuhui8491&URLid=zhajm_124019538955&totaltimes=226000&effectID=0&flvid=42719013&56.swf

2、将打开后地址中的【flashApp/56.swf?】改成【flashApp/v_player_site_wide.swf?】即可得到可自动播放的地址。如下所示:

http://www.56.com/flashApp/v_player_site_wide.swf?img_host=v41.56.com&host=c24.56.com&pURL=28&sURL=18&user=xuhui8491&URLid=zhajm_124019538955&totaltimes=226000&effectID=0&flvid=42719013&56.swf

不过这个地址带有符号&,而QQ群空间*的FLASH中不能有这个符号,所以56视频仍然不能在QQ群空间里自动播放。

优酷视频播放

不自动播放:

http://player.youku.com/player.php/sid/XMTk1NTU2/v.swf/

自动播放:

http://player.youku.com/player.php/sid/XMTk1NTU2/p/1.swf/

代码变化:就是将SRC地址中的v改为p/1。(更多方法)。
例如,将

<embed src="http://player.youku.com/player.php/sid/XMTk1NTU2/v.swf/" quality="high" width="550" height="372"align="middle"type="application/x-shockwave-flash" />

修改为:

<embed src="http://player.youku.com/player.php/sid/XMTk1NTU2/p/1.swf/"quality="high"width="550" height="372"align="middle"type="application/x-shockwave-flash" />

利用优酷播放流畅的优点,设置width=”0″height=”0″就可以将其作为背景音乐播放器。
当然其中还是有弊病的,只能单曲播放。

土豆视频自动播放详解

1、在土豆网站找到相应的视频点开播放,在视频下面找到”贴到blog或BBS”,点击之后会出现三段代码;
2、复制第二段代码,即中间的FLASH播放器的地址:http://www.tudou.com/v/w3_GYw5nZAA。
把它打到浏览器的地址栏里,回车;
3、在地址栏会出现新地址,类似http://www.tudou.com/player/outside/player_outside.swf?iid=32179354&……。
4、将以上其中蓝色部分&……删除,将红色部分【/outside/player_outside.swf?】改成【/skin/plu.swf?】,其他保持不变。
5、地址改完,得到新的FLASH地址:

http://www.tudou.com/player/skin/plu.swf?iid=32179354

这样放在空间上就可以自动播放了。

酷6视频自动播放详解

不自动播放:

http://player.ku6.com/refer/nvGjdBHTKUWXgnNF/v.swf

自动播放:

http://player.ku6.com/refer/nvGjdBHTKUWXgnNF/v.swf&auto=1

代码变化:就是自动的多加&auto=1。

6间房视频自动播放详解

1、复制6间房的视频代码:

http://6.cn/p/r77SFhn7vd/lKf5HxWeXpQ.swf

2、在浏览器回车得到新地址:

http://6.cn/player.swf?vid=r77SFhn7vd/lKf5HxWeXpQ

3、6间房的视频播放器是:http://6.cn/player.swf?flag=1&vid=/qg在这个播放器中加上视频ID。
将视频播放器中的vid=/qg改成:vid=r77SFhn7vd/lKf5HxWeXpQ/qg。
改后的自动播放地址是:

http://6.cn/player.swf?flag=1&vid=r77SFhn7vd/lKf5HxWeXpQ/qg

 

新浪视频自动播放详解

方法一:

不自动播放:

http://p.you.video.sina.com.cn/player/outer_player.swf?auto=1&vid=6282441&uid=1305882283

自动播放

:http://p.you.video.sina.com.cn/player/outer_player.swf?autoplay=1&vid=6282441&uid=1305882283

代码变化:就是将auto=1改成autoplay=1。

方法二:

1、复制新浪视频的Flash地址如下:。

http://p.you.video.sina.com.cn/player/outer_player.swf?auto=1&vid=14050847&uid=1261788454

2、将以上地址中的红色部分【player/outer_player.swf?auto=1&】改成【swf/lb_player.swf?】,&vid=视频序列号;。
就得到了自动播放地址如下:。

http://p.you.video.sina.com.cn/swf/lb_player.swf?vid=14050847-1261788454

其实,对于不同的新浪视频,只要修改下面地址中的视频序列号(红色),就得到了自动播放地址!。

http://p.you.video.sina.com.cn/swf/lb_player.swf?vid=14050847-1261788454

Youtube视频自动播放

自动播放:

http://www.youtube.com/v/Lg1IjwKA0oc&autoplay=1

不自动播放:

http://www.youtube.com/v/Lg1IjwKA0oc&autoplay=1

代码变化:就是自动的多加&autoplay=1。

Mofile视频自动播放详解

Mofile网站的视频,提供了视频自动播放代码。可勾起视频播放器下的“自动播放”小方框,就出现了自动播放代码。
在这个网站上的视频代码,不自动播放的代码的链接地址后面比自动播放代码多了“&autoplay=0”,如你想要自动播。
放的,只要把不自动播放代码的这个多余的后缀去掉就行啦。详情请点此处。
例如,雪中情歌曲的不自动播放播放代码:

<EMBED src=http://tv.mofile.com/cn/xplayer.swfwidth=480height=400type=application/x-shockwave-flashFlashVars="v=8WQ6BK9E&p=/support/UploadFiles_4906/200906/20090607155408337.jpg &autoplay=0&nowSkin=0_0"allowScriptAccess="sameDomain"wmode="transparent"/>

总结起来,很多网站的视频播放代码都是大同小异,我们可以根据里面的参数如true/false来测试运行一下,Dreamweaver里面也有自动工具可以供大家测试使用!

 

将相对路径转换成绝对路径_fullpath,_wfullpath

近来在写程序的时候需要将相对路径转换成一个绝对路径
上MSDN上搜索了一下 结果竟然还真让我发现了这样的一个函数
赶紧将之进行汉化,并于大家分享一下…..

功能:

将一个相对路径更改成绝对路径

原型:

char *_fullpath( 
   char *absPath,
   const char *relPath,
   size_t maxLength 
);
wchar_t *_wfullpath( 
   wchar_t *absPath,
   const wchar_t *relPath,
   size_t maxLength 
);

参数:

absPath:
指向绝对路径指针
relPath:
传入的相对路径值
maxLength:
绝对路径的最大长度。_fullpath的单位为bytes,_wfullpath的单位为wchar_t(宽字符)。

返回值:

返回一个指向绝对路径下的缓冲容器中。否则返回NULL。
返回空:相对路径中包含不可达的盘符,或者绝对路径长度长于最大长度。

头文件:

#include
\\machine\shareName\msvSrc\crt\headerFiles\stdlib.h

举例:

#include <stdio .h>
#include <conio .h>
#include <stdlib .h>
#include <direct .h>

void PrintFullPath( char * partialPath )
{
   char full[_MAX_PATH];
   if( _fullpath( full, partialPath, _MAX_PATH ) != NULL )
      printf( "Full path is: %s\n", full );
   else
      printf( "Invalid path\n" );
}

int main( void )
{
   PrintFullPath( "test" );	//输出Full path is: C:\Documents and Settings\user\My Documents\test
   PrintFullPath( "\\test" );	//输出Full path is: C:\test
   PrintFullPath( "..\\test" );	//输出Full path is: C:\Documents and Settings\user\test
}

原文地址:http://msdn.microsoft.com/zh-HK/library/506720ff(v=vs.71).aspx

解决主机500错误

使用主机有时候登陆网站的时候会出现“Internal Server Error,500 error”。经上网搜索,发现出现该种情况通常有以下三种可能:

1.服务器资源超载

如果你没对网站文件做过什么更改的话,最有可能的是同服务器的资源超载:即同一时间内处理器有太多的进程需要处理的时候,会出现500错误。借助SSH,可以在命令行中输入以下命令查看:

ps faux
ps faux |grep <em>username</em>

如果你查到某个进程消耗过多资源,可以用kill命令强制关闭这个进程,只需输入该进程的进程号(Pid):

kill -9 <em>pid</em>

2.文件权限设置错误

500错误还有可能是对文件设置了不正确的权限:

后台目录和文件的权限默认应该是755,而图片,文字等html文件应该是644。所以如果在刚刚上传文件后出现500错误,应该主要检查文件权限设置。

可以使用FTP软件选中所有文件,然后批量修改文件权限。也可以在SSH中更改相应的权限…

chmod 644 [filename]

3 .htaccess文件写入错误的代码

在使用某些wordpress SEO插件的时候,插件会改写.htacess文件,如果语法错误的话就有可能造成500错误!

在.htaccess文件中,可能因为添入了一些与源文件冲突的代码。所以为了检测到错误语句,最好的方法是为语句添加注释来逐条验证。因为注释之后,语句就不再起作用。

逐条添加“#”在语句前面,如

DirectoryIndex default.html
AddType application/x-httpd-php5 php

你可以添加#到该命令前,从而实现注释效果:

DirectoryIndex default.html
#AddType application/x-httpd-php5 php

这个方法可以迅速定位错误的命令,如果你找不到错误的段落,可以尝试把所有的命令全部添上注释然后反过来逐条删除#检查错误!判断出错误语句之后,可以删掉#恢复正常!