手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2025年07月的文章

在WWDC前夜,About the OS X Mountain Lion v10.8.4 Update

 就在wwdc 2013的前夜。osx升级了。。10.8.4就这样提示我安装了。

The OS X Mountain Lion v10.8.4 Update is recommended for all OS X Mountain Lion users and includes new features and fixes.

Updating your system

  1. You should back up your system before installation. To do this you can use Time Machine.
  2. Do not interrupt the installation process once you have started to update your system.
  3. You may experience unexpected results if you have third-party system software modifications installed, or if you've modified the operating system through other means.
  4. Click the Apple () menu and choose Software Update to check for the latest Apple software via the Mac App Store, including this update.
  5. Other software updates available for your computer may appear, which you should install. Note that an update's size may vary from computer to computer when installed using Software Update. Also, some updates must be installed prior to others.

You can also download the manual update installer. This is a useful option when you need to update multiple computers but only want to download the update once. These versions of the standalone installers are available from Apple Support Downloads

About the update

The OS X Mountain Lion v10.8.4 Update is recommended for all OS X Mountain Lion users and includes features and fixes that improve the stability, compatibility, and security of your Mac, including the following:

  • Compatibility improvements when connecting to certain enterprise Wi-Fi networks
  • Microsoft Exchange compatibility improvements in Calendar
  • A fix for an issue that prevented FaceTime calls to non-U.S. phone numbers
  • A fix for an issue that may prevent scheduled sleep after using Boot Camp
  • Improves VoiceOver compatibility with text in PDF documents
  • Includes Safari 6.0.5, which improves stability for some websites with chat features and games
  • A fix for an issue that may cause iMessages to display out of order in Messages
  • Resolves an issue in which Calendars Birthdays may appear incorrectly in certain time zones
  • A fix for an issue that may prevent the desktop background picture from being preserved after restart
  • A fix for an issue that may prevent documents from being saved to a server using SMB
  • Addresses an issue that may prevent certain files from opening after copied to a volume named “Home"
  • A fix for an issue that may prevent changes to files made over NFS from displaying
  • Resolves an issue saving files to an Xsan volume from certain applications
  • Improves Active Directory log-in performance, especially for cached accounts or when using a .local domain
  • Improves OpenDirectory data replication
  • Improves 802.1X compatibility with ActiveDirectory networks
  • Improves compatibility when using mobile accounts

Additional Information

For detailed information about the security content of this update, see Apple security updates.

Important: Mention of third-party websites and products is for informational purposes only and constitutes neither an endorsement nor a recommendation. Apple assumes no responsibility with regard to the selection, performance or use of information or products found at third-party websites. Apple provides this only as a convenience to our users. Apple has not tested the information found on these sites and makes no representations regarding its accuracy or reliability. There are risks inherent in the use of any information or products found on the Internet, and Apple assumes no responsibility in this regard. Please understand that a third-party site is independent from Apple and that Apple has no control over the content on that website. Please contact the vendor for additional information.

 

好吧,反正闲着也是闲着,而且说不定也没资格升级到10.9,我还是就这么随便先升到10.8.4吧。

 

新版jQuery去掉了一些组件

 在用一个jQuery插件的时候,突然报错:b.browser undefined。。。

最初的时候想想不太可能啊?browser的判断不是从1.2.1的时候就一直就有了吗?于是搜索了一下jquery.mini.js,搜索browser,居然找不到。。。。

然后去官网看了一下,看到官方居然有这么一段:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

居然建议我们加载migrate,打开这个文件搜索browser。。果然找到了。

于是在项目里加入这一行,不报错的。做个记录。(不就7K嘛。干嘛不放进去,真是的。。)

Tags: jquery

转:选择标签至文本域效果,可多选/可过滤重复/可限制个数(已封装)

 说实话,我还是挺喜欢这个标签选择器的,但是评论里说了,除了chrome外,其他浏览器几乎都不支持。因此,我就很纠结了。。

不多说,先看例子点此查看DEMO,怎么样,是不是很有意思?
代码也不多,不过我不懂CSS,所以。。。不知道怎么改,明天找个人纠结纠结:
JavaScript代码
  1. ;(function(){  
  2.     $.fn.extend({  
  3.         iSelectTags:function(options){  
  4.             var iset={  
  5.                 name:'.tagsbox',//表单或class或id名  
  6.                 drop:$('#dropbox'),//弹出框定位  
  7.                 pseudoClass:$('#dropbox>p>a'),//可选择的标签定位  
  8.                 close:$('em.close'),//关闭按钮定位  
  9.                 separator:',',//标签间分隔符,建议使用英文逗号  
  10.                 maxCount:10 //默认限制个数,也可以设置表单的data-count值覆盖默认值  
  11.             }  
  12.             options=$.extend(iset, options || {});  
  13.             var _input=$(iset.name);  
  14.             var _inputVal=_input.val();  
  15.             var _arr=new Array(); //存放标签的数组  
  16.             var _left=_input.offset().left; //左绝对距离  
  17.             var _top=_input.offset().top+_input.outerHeight(); //上绝对距离,此处要加上表单的高度  
  18.             var _dropW=_input.outerWidth()-parseInt(_input.css('border-left-width'))-parseInt(_input.css('border-right-width'))-parseInt(iset.drop.css('paddingLeft'))-parseInt(iset.drop.css('paddingRight'));  
  19.             iset.drop.css({'position':'absolute','left':_left+'px','top':_top+'px','width':_dropW+'px'});  
  20.             //弹出框的宽度,此处计算的是与表单实际宽度相等的.也可以直接在样式中定义.  
  21.             var _txt=null;  
  22.             var _maxCount=parseInt(_input.attr('data-count'));//限制选择个数  
  23.             if(isNaN(_maxCount)){  
  24.                 _maxCount=iset.maxCount  
  25.             }  
  26.   
  27.             _input.click(function(){  
  28.                 iset.drop.show();  
  29.                 iset.drop.bgiframe();//调用bgiframe插件,解决ie6下select的z-index无限大问题  
  30.             }).bind('keyup change',function(){  
  31.                 //可以在此处扩展手动输入标签情况下的相关判断  
  32.                 //if语句可避免清空重新选择时第一个字符为逗号  
  33.                 if ($(this).val() == '') {  
  34.                     _arr = new Array();  
  35.                 }else {  
  36.                     _arr = $(this).val().split(iset.separator);//当用户手动删除或修改标签值后更新标签值  
  37.                 }  
  38.             });  
  39.   
  40.             $(document).click(function(e){  
  41.                 //点击非弹出框区域时关闭弹出框  
  42.                 //下面的 if语句是用来判断传入的是class还是id  
  43.                 if(iset.name.charAt(0)=='#'){  
  44.                     if(e.target.id!=iset.name.substring(1)){  
  45.                         iset.drop.hide();  
  46.                         }  
  47.                 }else if(iset.name.charAt(0)=='.'){  
  48.                     if(e.target.className!=iset.name.substring(1)){  
  49.                         iset.drop.hide();  
  50.                         }  
  51.                 }  
  52.             });  
  53.   
  54.             iset.drop.click(function(e){  
  55.                 //阻止弹出框区域默认事件  
  56.                 e.stopPropagation();  
  57.             });  
  58.   
  59.             iset.pseudoClass.click(function(){  
  60.                 //标签选择  
  61.                 _txt=$(this).text();  
  62.                 //下面的$.inArray是用来判断是否重复  
  63.                 //若想反馈重复提示或走出限制个数提示,可改进下面的if语句  
  64.                 if(($.inArray(_txt,_arr)==-1) && (_arr.length<_maxCount )){  
  65.                     _arr.push(_txt);  
  66.                     _inputVal=_arr.join(iset.separator);  
  67.                     _input.val(_inputVal);  
  68.                 }  
  69.   
  70.             });  
  71.             //关闭按钮  
  72.             iset.close.click(function(){  
  73.                 iset.drop.hide();  
  74.             });  
  75.         }  
  76.     });  
  77. })(jQuery);  
反正先转一下喽,先备着,再找其他新的。
这个插件的网址是:http://mrthink.net/jquery-plugin-iselecttags/,可以欣赏一下

Tags: 标签

MYSQL 存储过程

 说实话,关于存储过程的博客还真的不多,有几个是值得看一下的

1、官方;http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html

2、http://www.netingcn.com/tag/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B

3、http://blog.why100000.com/?p=711

也发现,如果不做复杂查询,存储过程对我来说几乎没有,本来是想解决查找GEO相关的信息的,但发现这样的SQL:

SQL代码
  1.  SELECT userid,lat,lng,gender,  
  2.   ( 6371 * acos( cos( radians(31.000700) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(120.000099) ) + sin( radians(31.000700) ) * sin( radians( lat ) ) ) ) AS distance  
  3. FROM `user_geo` WHERE last_activity_time > '2013-03-11 00:00:00'    
  4. ORDER BY distance ASC limit 100  

这其中的复杂度就在于distance每次都要计算,所以我尝试换成了存储过程:

SQL代码
  1. DROP PROCEDURE IF EXISTS search_around_user;  
  2. DELIMITER //  
  3. CREATE PROCEDURE search_around_user  
  4. (  
  5.     s_lat float(10,6),  
  6.     s_lng float(10,6),  
  7.     s_last_act datetime,  
  8.     s_gender tinyint,  
  9.     s_number tinyint,  
  10.     s_page tinyint  
  11. )  
  12. LABEL_PROC:  
  13. BEGIN  
  14.     if s_number <= 1 then  
  15.         set s_number = 20;  
  16.     end if;  
  17.     if s_page <= 0 then  
  18.         set s_page = 0;  
  19.     end if;  
  20.     if s_gender <= 0 then  
  21.         set @genderQuery = "";  
  22.     else  
  23.         set @genderQuery = concat(" and gender = " , s_gender , " ");  
  24.     end if;  
  25.     set @limitQuery = concat("LIMIT " , s_page * s_number , " , " , s_number , " ");  
  26.   
  27.     set @strsql =  CONCAT("select userid, ",  
  28.         "( 6371 * acos( cos( radians(",s_lat,") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians( ",s_lng," ) ) ",  
  29.         "+ sin( radians( ",s_lat," ) ) * sin( radians( lat ) ) ) ) AS distance ",  
  30.         " FROM user_geo where last_activity_time >= '", s_last_act , "' " , @genderQuery ,  " ORDER BY distance " , @limitQuery) ;  
  31.   
  32.     prepare stmtsql from @strsql;  
  33.     execute stmtsql;  
  34.       
  35.   
  36. END LABEL_PROC;  
  37. //  
  38. DELIMITER ;  

然后再次调用:

SQL代码
  1. call search_around_user(31.000700,120.000099,'2013-03-11 00:00:00',0,20,0)  

所耗费的时间和上述直接写SQL的时间是几乎一样的。想来,这也是因为distance的计算不能被优化而导致的。。。于是乎,放弃用存储过程

 

 

Tags: mysql, 存储过程

全文索引的苦逼记事二

 继昨天的处理之后,又来新的笔记 ,这次的笔记纯粹是个人的测试,与实际条件有关,比如,我要查询的字段不超过varchar的255的长度,所以我才这么做。

昨天做普通索引后,1100万条记录,索引 为220M,改成全文索引后,索引文件为1.1G,存储空间上,涨了5倍左右。

以下是笔记 ,请不要笑话,场景不同而已

 

  • 经过测试
    • title 字段改为全文索引后,在1100万条的时候
      • 优点:
        • 速度也为0.0x秒级。速度非常快
        • 即使有or条件,只要带了limit参数,速度也非常快
      • 缺点:
        • 如果查询不带limit ,直接卡死,因为他要计算total count
        • select count() 卡死
        • 如果查询不存在的关键字,卡死
    • 使用方法
      • 尽量不做select count 查询 (数量低于100万时可以考虑,超过100万时,其实已经没有必要)
      • 查询一定要带上limit条件
      • 每次查询到不存在的关键字时,记录到关键词库,每次有新增记录时,select 关键词库一下,如果新增房间中有关键字,则将关键词去除,避免卡死
  • 暂时不使用coreseek(sphinx)/xunsearch等第三方工具
    • xunsearch只支持分词查询,不支持完全匹配
    • 第三方工具,耗内存,而且增量的时候,不够及时

Tags: 索引