新的征途

作为一个不太喜欢变化和动荡的我,2016年真的有点难为自己。每当生活要安宁下来的时候,就会有新的惊喜送给我,生活真是个磨人的小妖精。

生活中总有些顺利和不顺利,熬过来后才发现,其实没什么,没有自己想象的那么难,或者那么轻松。

新的环境,换个心态,努力一把,希望能得到自己想要的。

新的一年希望:

    o

  • 培养一个爱好。
  • o

  • 锻炼好身体。
  • o

  • 工作能够更顺利,干更多活,赚更多钱!

 

转载请注明原文出处《新的征途》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

npm安装Electron缓慢网络超时导致失败

1. npm源过慢的话,可以把源切到国内的淘宝的镜像上。

npm config set registry https://registry.npm.taobao.org

2. 到electron的国内镜像下载最新的安装包,主要看好自己系统对应的版本

https://npm.taobao.org/mirrors/electron

3. 将下载好的包放到当前用户的根目录下的.electron文件夹下,windows一般是C:\Users\YourUserName\.electron

4. 执行安装命令npm install electron-prebuilt -g

转载请注明原文出处《npm安装Electron缓慢网络超时导致失败》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

工作杂记:maven打包多个source directory项目以及Jenkins无法启动Tomcat

在java项目中碰到有多个source directory的时候,Maven无法正确打包,只能打包src/main/java下的内容,需要额外引入一个插件解决此问题。

<build>
o<plugins>    
        <plugin>    
            <groupId>org.codehaus.mojo</groupId>    
            <artifactId>build-helper-maven-plugin</artifactId>    
            <version>1.10</version>    
            <executions>    
                <execution>    
                    <id>add-source</id>    
                    <phase>generate-sources</phase>    
                    <goals>    
                        <goal>add-source</goal>    
                    </goals>    
                    <configuration>    
                        <sources>    
                            <source>${basedir}/src/mail/java</source>    
                        </sources>    
                    </configuration>    
                </execution>    
            </executions>    
        </plugin>    
    </plugins>
</build>

即可实现maven时打包多个不同source directory。

另,在用Jenkins执行自动编译打包命令,并重启服务器时,发现tomcat启动后,随着Jenkins的进程完成,Tomcat又被看作为衍生进程被杀掉了。

需要在启动Tomcat的脚本中添加export BUILD_ID=PLEASEDONOTKILLME。既可避免被杀。

转载请注明原文出处《工作杂记:maven打包多个source directory项目以及Jenkins无法启动Tomcat》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

linux iptables使用

iptables利用封包过滤的机制,分析封包的表头数据,根据表头数据与定义的规则来决定该封包是否可以进入主机或者被丢弃。

iptables包含表(table)和链(chain),我们最常用的表是filter(过滤器)表,默认情况下我们操作的都是这个表。

还有其他相关的知识大家可以参考鸟哥的linux私房菜。这里着重讲一下如何使用的问题。

注意,在远程服务器上进行操作时务必要小心,一定要在本地测试熟练后再进行远程配置。

常用的参数:

iptables -L

列出所有规则,还有其他参数,-n 表示不进行ip与hostname的反查,速度较快,–line-numbers表示显示行号。例如iptables -L -n --line-numbers

iptables -F

清除所有的已订定的规则

iptables -X

杀掉所有使用者 “自定义” 的 chain (应该说的是 tables )

iptables -Z

将所有的 chain 的计数与流量统计都归零

iptables的规则(rule)是按照顺序解释的,碰到符合的规则就结束了,所以每次我们全部重新配置时都要先执行以上三个命令

下面是添加规则时常用的参数:

iptable -P

注意这里P是大写,这里定义的是规则的策略,用于定义INPUT,OUTPUT,FORWARD的默认策略,在封包没有符合的规则时,会使用默认的策略。例如iptable -P INPUT ACCEPT

用于添加rule的参数

-A 表示添加到规则的结尾,-I表示在某条规则之前插入,如果没有指定具体的条目则默认插入到第一条。

-io 表示设定封包进出的接口规范,-i表示封包进入的接口,例如eth0,lo等,需与INPUT链配合。-o表示传出的网络接口,需与OUTPUT链配合。

-p 表示封包的格式,主要包含:tcp,udp,icmp及all

与-p配合的参数有:–sport表示来源的端口或者端口范围,例如:3389,或者1024:1025,–dport表示目标端口号或者端口范围,同–sport。

-s 表示来源的IP或网域。例如:IP:192.168.0.1,网域:192.168.0.0/24,在ip或网域前加!表示禁止,例如:-s ! 192.168.0.1。

-d 表示目标ip或网域。同-s。

-j 后面接动作,包括:ACCEPT,DROP,REJECT及LOG

到这里常用的参数已经介绍了。

另外还有常用的插件需要了解,state。这个在我们管理状态时非常有用,比如我们进行远程管理时,可以先添加对当前已经创建的链接放行的规则。

iptables -A INPUT [-m state] [--state 状态]

-m 表示使用的插件 : state,状态模块

--state 表示封包的状态,主要包含的状态为:INVALID,无效的封包,如数据损坏的封包;ESTABLISHED,已经成功连接的链接状态;NEW,想要新建立连接的封包状态;RELATED,表示这个封包是与我们主机发送的封包有关。

例如,我们新添加一个规则表示只要是已经建立或者相关的封包就给予通过,这个规则在我们操作远程服务器时比较常用:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

下面我们列举一些实例,比如我们要配置一个远程服务器的规则,开放80端口,只让指定的ip访问6379端口:

iptables -F
iptables -X
iptables -Z
iptables -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 10.129.59.120/32 -p tcp -m tcp --dport 6379 -j ACCEPT
iptables -A INPUT -s 10.163.200.91/32 -p tcp -m tcp --dport 6379 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 6379 -j DROP
iptables -A INPUT  -j DROP

转载请注明原文出处《linux iptables使用》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

使用javascript解析四则运算表达式

在编写代码时我们有时候会碰到需要自己解析四则运算表达式的情况,本文简单的介绍使用JavaScript实现对简单四则运算表达式的解析。

1. 熟悉概念

中缀表示法(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4)。也就是我们最常用的算术表达式,中缀表达式对于人类来说比较容易理解,但是不易于计算机解析。

逆波兰表示法Reverse Polish notationRPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。逆波兰表示法容易使用堆栈结构对表达式进行解析并计算,所以,这里我们解析四则元素表达式,是先从中缀表达式,转换为逆波兰表达式。然后再计算值。 继续阅读 »

转载请注明原文出处《使用javascript解析四则运算表达式》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

Linux学习笔记:查找命令

    o

  1. find
    查找文件命令
  2. o

  3. locate
    按名字查找文件
  4. o

  5. whereis
    确定命令的位置
  6. o

  7. which
    确定系统命令是否存在 ,以及执行的到底是哪一个命令
  8. o

  9. type
    确认命令是内部命令还是外部命令
  10. o

  11. grep
    文本搜索命令,查找文件中符合条件的字符串

转载请注明原文出处《Linux学习笔记:查找命令》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。