非关系型数据库Mongodb现在已经越来越凸显出它在性能方面的优势和便利,下面是我自己的使用情况: 1:安装 请参考http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ 2:安装完成之后的测试  在终端输入  mongo,如果出现如下内容说明安装时正常的。 ruby@nginx:~$ mongo MongoDB shell version: 2.0.4 connecting to: test > show dbs; admin 0.0625GB local (empty) neupals 0.0625GB > use admin; switched to db admin > show collection; Thu Jul 18 17:49:57 uncaught exception: don’t know how to show…

当需要在Nginx的配置文件添加对目录的auth_basic时,通常需要用到htpasswd来生成密码文件。 htpasswd是apache2的自带工具,安装apache2后在/usr/bin/可以找到此文件。 创建密码文件命令如下: 1:先走到/etc/nginx 2:sudo htpasswd -c -d pass_file user_name 要注意的是: 如果当前用户不是管理员,需要使用sudo -c 表示创建文件,-d 表示对密码进行CRYPT加密 Nginx的auth_basic认证: location /nginx { auth_basic “NginxStatus”; auth_basic_user_file pass_file; stub_status on; access_log off; #allow 127.0.0.1; #deny all; } 需要注意的几点是: pass_file跟nginx.conf文件在同级目录下 stub_status查看nginx的运行情况 另外auth_basic 可以针对具体的某个文件进行权限认证,只需修改location的匹配即可。 以上操作都是在ubuntu系统上验证过的,真实有效,放心使用!

//安装php的solr sudo apt-get install php5-curl sudo apt-get install libcurl4-gnutls-dev sudo apt-get install libxml2 sudo apt-get install libxml2-dev sudo pecl install -n solr-beta sudo vi /etc/php5/conf.d/solr.ini //修改solr.ini //添加以下语句 extension=solr.so   如果出现问题 make: not found, 需要执行  sudo apt-get install build-essential, 然后再执行 sudo pecl install -n solr-beta   根据下文实践的结果: http://www.wijiti.com/help/37-jsolr/140-installing-apache-solr-php-extension

使用Nginx已经有很长一段时间,但是最近才去实践利用Nginx做负载均衡和高可用性。 大致思路:根据keepalived的特性,通过一个虚拟ip来实现主从服务器的切换,如果一台服务器宕机,可以自动切换到另一台备份服务器,从而不影响用户的访问。 以下是我的安装配置步骤,请大家参考指正。 1:服务器准备 准备两台ubuntu虚拟主机服务器,对应的IP分别是 192.168.1.100   192.168.1.200 两台主机的ip一定要在相同的网段 2:虚拟IP准备 sudo ifconfig  eth0:0 192.168.1.150 netmask 255.255.255.0 然后查看ifconfig,不难发现与之前的ifconfig 的不同。也可以通过ip a查看,对应的网卡eth0有两个ipaddress 两台虚拟主机要使用相同的虚拟IP: 192.168.1.150   3:安装nginx sudo apt-get install nginx 安装完成之后,ps -ef|grep nginx 查看nginx的进程,如果没问题,可以查看http://192.168.1.100  如果显示正常,说明nginx服务正常启动。 nginx的配置如下: user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept…

linux/mac   Ruby使用curl请求http数据   首先要安装curl,在命令行可以使用curl –help   其次,使用ruby代码调用系统命令   system cmd `cmd` curl 请求数据可以是post也可以是get, put   get方式获取页面 curl “http://www.xxx.com/login.cgi?&name=ddd&pwd=kkk” post方式   curl -d “name=ddd;pwd=kkk” “http://www.xxx.com/login.cgi” 但是要回去服务器响应的数据,假设返回数据是json格式的rails项目,可以如下: curl -d “name=ddd;pwd=kkk” localhost:3000/users/info.json curl -d “name=ddd;pwd=kkk” localhost:3000/users/info 如果是返回的是xml格式,也是可以的

IOS常用的三种本地数据持久化方式: 1:属性序列化列表 存储到文件 plist; 2:归档序列化,对模型数据进行归档; 3:本地数据库存储,嵌入式sqlite; 其实这三种方式都是把数据存储到本地文件里边,只是实现方式和使用的场景不同而已,复杂程度从上到下增加。 除此之外,还有一种方式存储数据,就是使用NSUserDefaults,它已键值对的形式记录应用程序的全局设置,其实settings.bundle里边的数据就是存在NSUserDefaults的。   主要代码如下:   方式一:plist   //先获取plist文件路径 NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDirectory = [path objectAtIndex:0]; filePath = [documentDirectory stringByAppendingPathComponent:@”xxx.plist”]; //把数据写入plist NSArray *arr = [[NSArray allocl] initWithObjects:A,B,C,nil]; [arr writeToFile:self.filePath atomically:YES]; //从plist取数据 NSMutableArray *arr = [[NSMutableArray alloc]…

在一些ios应用中经常会需要自定义视图,其中气泡视图就是其中之一,下面介绍两种方式:   方式一: 1:新建一UIView的子类UIBubbleView 2:在initwithframe中初始化 a):要绘制气泡的坐标targetpoint(x,y); b):气泡的frame bubbleFrame; c):调用方法setneedslayout; 3:调用drawCGRect方法 只要代码如下: [sourcecode lang=”plain”] – (void)drawRect:(CGRect)rect{ NSLog(@"bubble draw"); CGContextRef c = UIGraphicsGetCurrentContext(); CGContextSetRGBStrokeColor(c, 0.0, 0.0, 0.0, 0.0); CGContextSetLineWidth(c, 3.0); //确定画线的宽度,对象组合,颜色 CGMutablePathRef bubblePath = CGPathCreateMutable(); //绘制起点-箭头右边-气泡右上顶点-右下顶点-左下顶点-左上顶点-箭头左边-起点闭合 CGPathMoveToPoint(bubblePath, NULL, targetPoint.x, targetPoint.y); CGPathAddLineToPoint(bubblePath, NULL, targetPoint.x+pointerSize-1, targetPoint.y-2); CGPathAddArcToPoint(bubblePath, NULL, bubbleFrame.origin.x,…

获取localization   语言 [sourcecode lang=”plain”]NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; NSLog(@"%@, %@",languages,NSLocalizedString(@"xxx")); [/sourcecode] Resources—右键—new file —(String files or empty file)命名为: Localizable.strings –右键 get info — make file localizable 添加对应语言的localization   1:Localizable.strings:(针对字符串  NSLocalizedString) 在对应的zh-hans和English文件添加: “xxx”=”本地字符串”; “yyy”=”本地字符串”;   2:InfoPlist.strings:(针对app名称) 在对应的zh-hans和English文件添加: CFBundleName=”本地名”; CFBundleDisplayName=”本地名”;  …

在 iOS中可以直接调用 某个对象的实例方法 方式有2: 1:[obj performSelector:withObject:]; 2:使用NSInvocation 第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作

要在一个tabbar+navbar的页面切换到navbar页面, 尝试了多种方式: 1:self.tabBarController.tabBar.hidden=yes, 只是不显示tabbar但是对应的区域不可用 2:在push之前修改下一个页面的frame,  把tabbar移到屏幕下边, [sourcecode language=”objc”] for (UIView *v in self.tabBarController.view.subviews) { if ([v isKindOfClass:[UITabBar class]]) { if (hidden) { [v setFrame:CGRectMake(v.frame.origin.x, 480, v.frame.size.width, v.frame.size.height)]; }else { [v setFrame:CGRectMake(v.frame.origin.x, 480-49, v.frame.size.width, v.frame.size.height)]; } }else { if (hidden) { [v setFrame:CGRectMake(v.frame.origin.x, v.frame.origin.y, v.frame.size.width, 480)];…