防止Centos HHVM崩溃导致网站出现502错误

在阿里云Centos 上装了hhvm,经常会出现hhvm挂掉。这个要看hhvm的心情,有时一两天,有时一两个月都没有出现。Google了一下最简单的解决方法是写一个脚本用cron每分钟执行一次检查hhvm是否运行。
脚本如下:

#! /bin/bash
PID="`cat /var/run/hhvm/pid`"
if [ "$PID" == "" ]; then
/etc/init.d/hhvm start
if [ "`ps ax -o pid | grep $PID`" == "" ]; then
/etc/init.d/hhvm stop
/etc/init.d/hhvm start
fi
fi

将这段脚本保存在/home/check_hhvm.sh,并执行chmod +x /home/check_hhvm.sh,然后编辑/etc/crontab,加入一行

* * * * * root /home/check_hhvm.sh。

经测试,这个脚本可以让你的网站最多down一分钟。先当作临时的解决方案吧。

阿里云主机wordpress漏洞wordpress IP验证不当漏洞

漏洞描述:wordpress IP验证不当漏洞

文件位置:/wp-includes/http.php

修复方案:

在文件的465行附近的 $same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] );

改成 if ( isset( $parsed_home['host'] ) ) { $same_host = ( strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ) || 'localhost' === strtolower( $parsed_url['host'] ) ); } else { $same_host = false; } ;

在文件的 478行附件的 if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]

改成 if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]  || 0 === $parts[0]

阿里云主机wordpress漏洞wordpress后台插件更新模块任意目录遍历导致DOS漏洞

漏洞描述:wordpress后台插件更新模块任意目录遍历导致DOS漏洞

文件位置:/wp-admin/includes/ajax-actions.php

修复方案:

在文件的2890行附近的 $plugin = urldecode( $_POST['plugin'] );

后面加上 $plugin = plugin_basename( sanitize_text_field( wp_unslash( $_POST['plugin'] ) ) );

mac升级OS X El Capitan 10.11.6 mysql 无法启动

昨天把Mac  OS X El Capitan 升级到10.11.6版本了,今天使用mysql的时候,发现连接不上数据库,phpmyadmin也不能登陆。感觉应该是mysql 没有启动,进入系统偏好设置里面发现mysql果然没有启动,点击启动,没有成功。

提示“Warning, /usr/local/mysql/data is not owned by 'mysql' or '_mysql'”

解决方法:依次执行如下命令

cd /usr/local/mysql

sudo chown -R _mysql data/

重启mysql就好了

来源去stackoverflow

 

Open a terminal:

  1. Check MySQL system pref panel, if it says something along the line "Warning, /usr/local/mysql/data is not owned by 'mysql' or '_mysql'
  2. If yes, go to the mysql folder cd /usr/local/mysql
  3. do a sudo chown -R _mysql data/
  4. This will change ownership of the /usr/local/mysql/data and all of its content to own by user '_mysql'
  5. Check MySQL system pref panel, it should be saying it's running now, auto-magically. If not start again.
  6. Another way to confirm is to do a

netstat -na | grep 3306

It should say:

tcp46 0 0 *.3306 . LISTEN

To see the process owner and process id of the mysqld:

ps aux | grep mysql

react-native init时速度特别慢,换个npm镜像就快了

在react-native init 项目的时候 ,卡的要死,几个小时都没成功,还把网速拖的好卡,完全不能上网。然后换了一个npm镜像1分钟搞定。

操作方法如下:

1.通过config命令

npm config set registry=http://registry.npm.taobao.org

2.编辑 ~/.npmrc 加入下面内容

registry = https://registry.npm.taobao.org

navigationController pushViewController 多次跳转返回

经常在做应用的时候,发现跳转的路径太深了,当我又要跳转到某个界面时,可按以下操作。

返回根页面vc用 :

[self.navigationController popToRootViewController]

返回指定的某个vc用下面(通过index定位)

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];

或(通过class定位)

for (UIViewController *controller in self.navigationController.viewControllers) {
    if ([controller isKindOfClass:[你要跳转到的Controller class]]) {
        [self.navigationController popToViewController:controller animated:YES];
    }
}

                    

编资源bundle时图片文件变成tiff的解决方法

一般,编写SDK的时候,如果SDK还带了一些资源文件,那么最理想的是将资源文件也打包成为bundle给应用方一起使用。而在编资源bundle时,有时会发现编译好后的图片文件从png转成了tiff,这样找icon就会不正确了。解决的方法是更改编译设置COMBINE_HIDPI_IMAGES为NO. 如下图所示

D9818149-FFDE-4339-A9DC-7B46F9BD881D

UITapGestureRecognizer tag的问题

在我们的界面上可能有很多的UILabel需要设置点击事件,所以我们给他们添加了手势操作,用tag 去判断点击的是哪个控件,而已报出以下错误:

[UITapGestureRecognizer tag]: unrecognized selector sent to instance

解决方法:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
                                         initWithTarget:self action:@selector(action:)];
[tapRecognizer setNumberOfTouchesRequired:1];
[tapRecognizer setDelegate:self];
label.userInteractionEnabled = YES;
label.tag = 1111; 
[label addGestureRecognizer:tapRecognizer];

 

 

-(void) action:(id)sender
  {
    NSLog(@"TESTING TAP");
    UITapGestureRecognizer *tapRecognizer = (UITapGestureRecognizer *)sender;
    NSLog (@"%d",[tapRecognizer.view tag]);
  }

Android Listview加载遇到java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0 的问题

在使用listview中,使用了 loadmore 控件出现如下问题

java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
at android.widget.ListView.dispatchDraw(ListView.java:3329)
at android.view.View.draw(View.java:16204)
at android.widget.AbsListView.draw(AbsListView.java:4217)
at android.view.View.updateDisplayListIfDirty(View.java:15198)
at android.view.View.draw(View.java:15971)
at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
at android.view.View.draw(View.java:16204)
at android.view.View.updateDisplayListIfDirty(View.java:15198)

看上面可能是headerview 影响的 但是我没有使用headview 使用了footerview 应该是listview 没有刷新。

上网查到了这么一段话

添加,移除ListView的headerView或者是footerView需要注意的地方?

添加:关于addHeaderView方法文档上有这么一句话,“Call this before calling setAdapter”,在调用这个方法之前,先要设定ListView的Adapter。addFooterView方法同样

移除:用到了系统提供的removeHeaderView或者removeFooterView方法,虽然文档上没有说明,但是调用这个方法应该在setAdapter之后。

这是之前就遇到过了,当时把addFooterView放在之后,结果没有效果.

那么由此,是Adapter报出来的也就不足为奇了,因为更换过Adapter,那我之后先去掉Adapter再添加上去了.

 

 

 

iOS8中的UItableView顶部有留白

解决方法如下:

 

当cell的类型是plaint类型时,直接设置self.automaticallyAdjustsScrollViewInsets=NO;应该就可以的
当cell的类型是group类型时,此时要去掉tableView顶部的空白需要两步:
1.设置self.automaticallyAdjustsScrollViewInsets=NO
2.设置heightForHeaderInSection的高度为0.5
-(CGFloat)tableView:(UItableView *)tableView heightForHeaderInSection(NSInteger)section{
return 0.5;
}