自动检测tomcat服务的shell脚本

在实际工作中,需要实时的检测Tomcat服务的状态,并且如果在Tomcat停止时,自动的重启Tomcat服务,以方便我们的应用程序不被中断。

实现思路是使用Linux自带的计划任务,启动一个时间间隔为5分钟的检查服务,这个可以放到 /etc/crontab文件中。

*/5 * * * * su - root -c /root/restartTomcat.sh

接下为就是要实现这个.sh文件,我们可以参考下面的模板。基本思路就是通过PS得出当前的系统进程,然后通过文件的路径来确定指定的进程是否已经启动,如果没有启动,则先执行程序停止服务,再执行启动服务。
示例代码如下:

#!/bin/bash

pnum_server=`ps -wef|grep tomcat |grep -v grep |wc -l`

if test $pnum_server -lt 1

then

  /usr/local/tomcat/bin/shutdown.sh

   sleep 2s

  /usr/local/tomcat/bin/startup.sh

fi

如果这样写你可能会遇到一个小插曲,就是提示fi附近有语法错误。这个问题的原因是由于Windows下面的换行符导致。
因此你可以使用vi打开脚本文件,执行:set fileformat=unix,:wq保存即可。

微信开发之分享和获取用户信息

众所周知,微信是当之无愧的No.1,在产品推广和业务路演的过程中,扫一扫成了最为常见的功能。扫一扫就能获取用户的基础信息,然后可以进行投票啊,留言啊之类的功能几乎是网页的必备功能。 微信最常用的就是分享和获取用户信息的功能,这两个接口尽管微信都有详细的文档,网上也有相应的教程,但是过程中还是有一些坑的,在此记录一下。

继续阅读微信开发之分享和获取用户信息

使用Quartz定时器在Java中执行计划任务

在JavaEE系统中,计划任务的执行是一项很普通的工作,需要我们定时执行一些维护和例行的任务。比如定时统计,发送邮件,报表,甚至通知和提醒等。

计划任务的实现有多种方式。比如使用数据库的定时任务(Jobs和Events),服务器的计划任务(Windows的计划作任务,Linux的Crontab系统。

那么Java本身能否实现定时任务呢,当然是可以的,我们可以使用Java.util.Timer 和 Java.util.TimerTask来完成这项工作,但是这种方法在调用上其实是不方便,需要大量的代码。解决这个问题的通行方法是使用Quartz框架。它是一个基于Java的计划任务框架,在定时执行上,可以使用Linxu的CronExperssion,便于使用和维护。

继续阅读使用Quartz定时器在Java中执行计划任务

Reactive Native 在IOS中集成中的踩坑经历

什么是React Native

React-Native 是由Facebook出品的一款可以使用JavaScript来编写原生app的框架,官方说明是:A framework for building native app with React(一个使用React来编写原生app的框架),然而这个React也是由该公司出品的一款可以用来编写用户界面的JS库。二者的出现,以其强大的功能和便捷的使用方式迅速被广大开发者使用,并在各大平台的应用研发中占据了自己的一席之地。

继续阅读Reactive Native 在IOS中集成中的踩坑经历

C#代码中实现两个表(DataTable)的关联查询(JOIN)

之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便。近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横向拼在一起之后的完整数据。

继续阅读C#代码中实现两个表(DataTable)的关联查询(JOIN)

启示录读后感

4P营销理论相信大家都知道:产品(Product):注重产品功能,要有核心卖点,即包含产品的实体、服务、品牌、包装等;价格(Price):依据不同的市场定位来制定不同的价格策略,指企业出售产品所追求的经济回报;渠道(Place):企业为使其产品进入和达到目标市场,所组织并实施的各种活动,包括途径、环节、场所、仓储和运输等;促销(Promotion):即包含广告、人员推销、营业推广与公共关系等手段。其中产品的重要性毋庸置疑。

每个企业都梦寐以求打造爆款产品,成功产品为什么凤毛麟角?到底什么样的产品才算是好产品呢?如何打造一款让用户欲罢不能的产品?怎样发掘有价值的产品?这些都是我心中的疑问。我决定再次拿起这本书,有目的的去阅读并总结分享。

之前读书有个毛病,特别慢,有时候看着看着就睡着了,有时候被其他的事情打断,看完一个章节就从此搁置了。看了很多简书上的读书达人,一小时快读一本书,我只想说臣妾做不到啊! 后来学习了读书方法实践之后,确实效率高很多。

本书作者:Marty Cagan,作为负责定义和开发产品的高级经理人为多家一流企业工作过,包括惠普、网景、美国在线。曾担任eBay产品管理及产品设计高级副总裁,负责规划全球电子商务网站的产品和服务。亲历了个人电脑、互联网、电子商务的起落沉浮,致力于通过写作、演讲、培训 帮助客户打造富有创意的产品。创办了硅谷产品集团(SVPG),为“财富500强”企业和广大创业型企业提供产品咨询服务,他的客户包括Yahoo!、eBay、TiVo、BBC、PROTRADE Sports……
继续阅读启示录读后感

超级奢侈的码农享受

沉浸式电脑椅,帝王的选择。只要30万。

Emperor系列的一体工作游戏站其实早在CES2009已经展出过,200是它最新的一代。 官网介绍说,这是终极电脑工作站解决方案,具备触摸板,空气过滤系统,电动皮椅,3X27寸显示屏,光疗系统,超猛音频系统。安卓操控。售价只要30万(起),强烈期望土豪晒单,或者值得买众测也行。

一把舒适的椅子陪我们寂寞

一桌在手,天下我有

想象一下码农们在这台桌子上左右开弓的样子,就像是操控人生的上帝有米有,开启多个工作模式,完全不会精分,关爱自己家的码农,送给他一张未来会更加辛勤工作的桌子。

ios inHouse 发布应用

一、明确几个概念

1、企业版IDP: 即iOS Development Enterprise Program。注意是$299/Year那种,并不是$99/Year的那种

2、In House:是指企业内发布,仅限企业内部人员使用。

二、In-House 特点:

1、不能发布到AppleStore进行销售

2、不需要Apple评审  

3、可以使用任何一支的私有API   

4、可以安装到任何苹果设备上,无需任何签名和认证

5、用户安装只要一个ipa文件,无需证书和签名文件

三、证书的生成过程

1、生成开发和发布证书(cer 文件),和$99账号一样

2、创建App ID,和$99账号一样

3、创建开发mobileprovision文件,和$99账号一样

4、创建发布(in-house)mobileprovision文件,这个如下图和$99账号不同。AdHoc的发布方式和$99是一样的,这里我们选择的In House

5、把刚刚生成的证书和签名文件都安装后,就可以开始我们的发布了。

四、In-House打包

简单过程:Product–>Archive–>(Validate、Submit、Export) Export–>Save for Enterprise Deployment 点击Next,选择对应的企业证书后点击Export 即可成功。(Xcode 6以下ipa 和 plist 同时生成,Xcode6以上 只生成ipa,可copy之前的plist 修改即可)。 

五、企业网页服务器分发

1、按照三、四 步骤 创建ipa 和 plist ,把打包的ipa 放到服务器上,ios设备通过访问网址,即可安装

2、创建web页面 ( 注意:ios7 plist 之前的版本用http,但ios7之后必须使用https)

<!DOCTYPE html>  
    <html>  
    <head>  
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
      <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />   
      <title>Install Geoloqi</title>  
      <style type="text/css">  
        body {  
          background: url(bkg.png) repeat #c5ccd4;  
          font-family: Helvetica, arial, sans-serif;  
        }  
        .congrats {  
          font-size: 16pt;  
          padding: 6px;  
          text-align: center;  
        }  
        .step {  
          background: white;  
          border: 1px #ccc solid;  
          border-radius: 14px;  
          padding: 4px 10px;  
          margin: 10px 0;  
        }  
        .instructions {  
          font-size: 10pt;  
        }  
        .arrow {  
          font-size: 15pt;  
        }  
        table {  
          width: 100%;  
        }  
      </style>  
    </head>  
    <body>  
       
    <div class="congrats">点击下面图标下载 XXX-App</div>  
       
    <div class="step">  
      <table><tr>  
        <td class="instructions">安装IOS<br />XXX-App</td>  
        <td width="24" class="arrow"></td>  
        <td width="72" class="imagelink">  
          <a href="itms-services://?action=download-manifest&url=https://www.xxx.com/TestInHouse/raw/master/xxx-app.plist">  
            <img src="icon.png" height="72" width="72" />  
           </a>  
        </td>  
      </tr></table>  
<table><tr>  
        <td class="instructions">安装Android<br />作业盒子XXX-App</td>  
        <td width="24" class="arrow"></td>  
        <td width="72" class="imagelink">  
          <a href="http://www.xxx.com/xxx.apk">  
            <img src="icon.png" height="72" width="72" />  
           </a>  
        </td>  
      </tr></table>  
    </div>  
    <script>
function isWeiXin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
return true;
}else{
return false;
}
} 
if (isWeiXin()) {
  alert("请用浏览器打开!");
}
  </script>
    </body>  
    </html>

3、部署和测试 在手机上输入指定的网址,即可实现安装。

plist 文件如下:

plist 外站链接可选择: https://git.oschina.net,, 通过新建项目–>点+ 填入文件名–>把plist文件拷贝到内容区–>提交 即可.

遇到问题参考:

1、http://blog.csdn.net/zhaoxy_thu/article/details/17277527

2、http://stackoverflow.com/questions/20276907/enterprise-app-deployment-doesnt-work-on-ios-7-1/22767699#22767699

3、https://laoyur.com/?p=414

4、http://blog.csdn.net/zhaoxy_thu/article/details/21133399

5、http://www.2cto.com/kf/201312/264286.html

6、http://stackoverflow.com/questions/20276907/enterprise-app-deployment-doesnt-work-on-ios-7-1/22367111#22367111

7、http://www.cnblogs.com/zzy0471/p/3658572.html

Discuz的2003 cannot connect错误的一种解决方法

今天早上,无缘故的出现Discuz论坛无法连接的黄页,黄页的内容是discuz 2003 notconnect.

从表面上看是由于数据库无法连接导致的,但是查看了数据库的mysql服务,是正常启动的,无论是外部还是内部,都是可以连接数据库的.找了很多方法都没有办法定位原因,当然也没有办法解决.

突然间想到SELINUX,搜索了一下,发现SELINUX的确有可能会导致一些服务出现异常,

搜索了一下,网上有比较多的解决方法.一种是直接把SELINUX关闭.

一、查看SELinux状态命令:

1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
SELinux status:                 enabled

2、getenforce                 ##也可以用这个命令检查

二、关闭SELinux方法:

1、临时关闭(不用重启机器):

代码如下:

setenforce 0 #设置SELinux 成为permissive模式
#setenforce 1 设置SELinux 成为enforcing模式

2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可.

另一种办法没有那么激进,添加SELINUX允许DB的远程访问.

修改apache远程访问数据库的布尔值

setsebool httpd_can_network_connect_db 1

什么是SELINUX

SELinux在linux中是保护系统的重要工具,它可以最大限度的保护系统的安全。也许有的人在使用过程中尝试着关闭过此工具,但是当考虑到要架设服务器的话,那就得重视它了。

假设我们希望允许远程匿名访问 Web 服务器,我们必须通过防火墙打开端口。然而,这意味着恶意人员可以尝试利用安全漏洞以及,如果他们损坏 Web 服务器进程,获得 apache 用户和 apache 组的权限来强行进入系统。懂点安全知识的人就知道很危险了,用户 / 组具有 document root ( /var/www/html )等的读取权限以及 /tmp 、/var/tmp 所有人均可写的任何其他文件 / 目录的写入权限。

SELinux 是一组可确定哪个进程能访问哪些文件、目录、端口等的安全规则。每个文件、进程、目录和

端口都具有专门的安全标签,称为 SELinux 上下文。上下文只是一个名称, SELinux 策略使用它来确定

某个进程是否能访问文件、目录或端口。默认情况下,该策略不允许任何交互,因此明确的规则授予访

问权限。如果没有允许规则,则不允许访问。

总之,SELinux 的目标之一是保护用户数据免受已泄漏的系统服务的威胁

SELinux 模式

为了进行故障排除,我们可以临时禁用 SELinux 保护,使用 SELinux 模式。

强制模式, SELinux 主动拒绝访问尝试读取类型上下文为 tmp_t 的文件的 Web 服务器。在强制

模式中, SELinux 不仅记录而且提供保护。

许可模式通常用于对问题进行故障排除。在许可模式中,即使没有明确规则, SELinux 也允许所有交

互,并且记录所有被拒绝的交互。此模式可以用于确定您是否有 SELinux 问题。无需重新引导即可从

强制模式转为许可模式,或再从许可模式转回强制模式。

禁用模式将完全禁用 SELinux 。您必须重新引导才能彻底禁用 SELinux ,或者从禁用模式

转为强制模式或许可模式。