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

昨天系统维护,结果早上忘了数据库没有启动成功

如题。。。失误

不过,过段时间可能我就会上一个镜像站了。(还在考虑中,主要是费用太高了)
目前,有一个40刀的香港VPS在使用,还有当前这个VPS差不多20刀。每月开销60刀左右,压力有点大
 
还有一个专门用来爬梯子的VPS,很小,一年15刀
还有一个早年的VPS,到10月分。一年36刀

即:到10月左右 ,还剩3个VPS在使用。有压力啊。。。
 

关于又拍云的几个问题

说明:紅色的字是最近更新的內容,如果你對又拍雲有興趣 ,你可以加2473635949的QQ,也可以向諮詢又拍雲的相關問題。嗯,沒看錯,是女字旁的她。或者尝试加QQ群:229209212。

-------------------

这是我这两天通过测试和向客服咨询的结果,为一些想用又拍的朋友提供一点资料 吧。

关于又拍云的几个问题:(这些是我在测试的时候遇到的问题,括号内是客服的回答)
1、缩略图算在空间容量内吗?(客服回答:不计空间容量内)
2、我们原来的项目中,缩略图是:aaaa.jpg,生成的缩图为aaaa.t100x100.jpg。而又拍却是aaa.jpg!t100x100.jpg,这个对我们的改动有点大。(这个需要客户端改程序)
3、我们原有的图片用什么方式上传到又拍比较合适?(我们原有的项目,必须要以FTP先传上去才OK)
4、有没有自动同步工具?比如我们本地生成了图片,然后能够自动同步到又拍?有没有好的建议和思路,还是说需要我们每上传一张图片,都要自动往又拍上传一次?(每次生成图片,都必须往又拍上传一次)
5、当第一次访问时,缩图不存在的时候,它的返回状态是什么?404?200?还是其他?(缩略图是在创建好后第一次访问的时候自动生成,如果不存在提示 404
6、流量是按月计费还是按实际计费?因为又拍有CDN,所以,如果是按实际计费,这个CDN被访问的费用如何计入?(流量计费没有时间限制,直到用完为止。CDN 不另外计费,只会计算产生的流量。
7、图片可以设置有权限访问,比如我们设置了一个密钥:xyz,那么实际图片为:abc.jpg时,访问的时候就需要通过abc.jpg!xyz,才能访问(该功能对缩略图无效,适合将来有可能的收费图片)
8、是否可以批量删除图片,如删除一年前的图片(不可以,只能用接口删除,但如果程序中一年前的图片都在同一个目录 下面,可以通过FTP将该目录 删除 )
9、上传图片到服务器上后,需要0~25分钟才能分发到各个节点。在这个时候,如果访问它。会出现什么样的情况?是从主节点访问?还是会出现404文件不存在?(因为用户第一次访问,如果节点(比如广东节点)不存在的话,会通过内部网络到源站获取,然后显示给客户,同时保存在节点机房中,也就是,你只要文件上传成功就全国各地都可以访问到了 )
10、缩略图的尺寸调整了。会影响吗?比如,尺寸100x100,后来我调成101x101了,原来的100x100的图对我是否有影响(只要原图没有去动过是没关系的。)

费用计算:
1、存储费用:
存储空间1G1元钱,即,如果附件是1000G,存储费用为1000元,这是按月计费,即一年为12000元
实际计算如下,粗略是当成每G 1元,比较容易计算:
    •    0-10GB:0.9元/GB/月
    •    10-50GB:0.819元/GB/月
    •    50-100GB:0.738元/GB/月
    •    100-500GB:0.69元/GB/月
    •    500-1000GB:0.609元/GB/月
    •    1000-5000GB:0.531元/GB/月
    •    5000-10000GB:0.489元/GB/月
    •    10000GB以上:0.45元/GB/月

2、流量费用:
    ▪    100G    99元
    ▪    250G     199元
    ▪    600G     399元
    ▪    1000G     599元
流量无时间限制,用完为止,用完后需要及时充值,否则可能会出现无法访问的情况
---------------
在我之前有很多人用过了。可惜我目前还没有优惠码。黑黑

Tags: 又拍云

备份一个video的JS

备份一个JS,不是为了代码很优秀,而是。。。想直接用里面的事件,就当成参考了:

JavaScript代码
  1. var media_events=new Array();  
  2. // was extracted from the spec in November 2011  
  3. media_events["loadstart"]=0;  
  4. media_events["progress"]=0;  
  5. media_events["suspend"]=0;  
  6. media_events["abort"]=0;  
  7. media_events["error"]=0;  
  8. media_events["emptied"]=0;  
  9. media_events["stalled"]=0;  
  10. media_events["loadedmetadata"]=0;  
  11. media_events["loadeddata"]=0;  
  12. media_events["canplay"]=0;  
  13. media_events["canplaythrough"]=0;  
  14. media_events["playing"]=0;  
  15. media_events["waiting"]=0;  
  16. media_events["seeking"]=0;  
  17. media_events["seeked"]=0;  
  18. media_events["ended"]=0;  
  19. media_events["durationchange"]=0;  
  20. media_events["timeupdate"]=0;  
  21. media_events["play"]=0;  
  22. media_events["pause"]=0;  
  23. media_events["ratechange"]=0;  
  24. media_events["volumechange"]=0;  
  25. var media_controller_events=new Array();  
  26. // was extracted from the spec in November 2011  
  27. media_controller_events["emptied"]=0;  
  28. media_controller_events["loadedmetadata"]=0;  
  29. media_controller_events["loadeddata"]=0;  
  30. media_controller_events["canplay"]=0;  
  31. media_controller_events["canplaythrough"]=0;  
  32. media_controller_events["playing"]=0;  
  33. media_controller_events["ended"]=0;  
  34. media_controller_events["waiting"]=0;  
  35. media_controller_events["durationchange"]=0;  
  36. media_controller_events["timeupdate"]=0;  
  37. media_controller_events["play"]=0;  
  38. media_controller_events["pause"]=0;  
  39. media_controller_events["ratechange"]=0;  
  40. media_controller_events["volumechange"]=0;  
  41. // was extracted from the spec in November 2011  
  42. var media_properties=[ "error","src","currentSrc","crossOrigin","networkState","preload","buffered","readyState","seeking","currentTime","initialTime","duration","startOffsetTime","paused","defaultPlaybackRate","playbackRate","played","seekable","ended","autoplay","loop","mediaGroup","controller","controls","volume","muted","defaultMuted","audioTracks","videoTracks","textTracks","width","height","videoWidth","videoHeight","poster" ];  
  43. var media_properties_elts=null;  
  44. var webm=null;  
  45. function init(){  
  46.     document._video=document.getElementById("video");  
  47.     webm=document.getElementById("webm");  
  48.     init_events();  
  49.     init_properties();  
  50.     init_mediatypes();  
  51.     // properties are updated even if no event was triggered  
  52.     setInterval(update_properties,500);  
  53. }  
  54. document.addEventListener("DOMContentLoaded",init,false);  
  55. function init_events(){  
  56.     for(key in media_events){  
  57.         document._video.addEventListener(key,capture,false);  
  58.     }  
  59.     var tbody=document.getElementById("events");  
  60.     var i=1;  
  61.     var tr=null;  
  62.     for(key in media_events){  
  63.         if(tr==null) tr=document.createElement("tr");  
  64.         var th=document.createElement("th");  
  65.         th.textContent=key;  
  66.         var td=document.createElement("td");  
  67.         td.setAttribute("id","e_"+key);  
  68.         td.innerHTML="0";  
  69.         td.className="false";  
  70.         tr.appendChild(th);  
  71.         tr.appendChild(td);  
  72.         if((i++%5)==0){  
  73.             tbody.appendChild(tr);  
  74.             tr=null;  
  75.         }  
  76.     }  
  77.     if(tr!=null) tbody.appendChild(tr);  
  78. }  
  79. function init_properties(){  
  80.     var tbody=document.getElementById("properties");  
  81.     var i=0;  
  82.     var tr=null;  
  83.     media_properties_elts=new Array(media_properties.length);  
  84.     do{  
  85.         if(tr==null) tr=document.createElement("tr");  
  86.         var th=document.createElement("th");  
  87.         th.textContent=media_properties[i];  
  88.         var td=document.createElement("td");  
  89.         td.setAttribute("id","p_"+media_properties[i]);  
  90.         var r=eval("document._video."+media_properties[i]);  
  91.         td.innerHTML=r;  
  92.         if(typeof(r)!="undefined"){  
  93.             td.className="true";  
  94.         }else{  
  95.             td.className="false";  
  96.         }  
  97.         tr.appendChild(th);  
  98.         tr.appendChild(td);  
  99.         media_properties_elts[i]=td;  
  100.         if((++i%3)==0){  
  101.             tbody.appendChild(tr);  
  102.             tr=null;  
  103.         }  
  104.     }while(i<media_properties.length);  
  105.     if(tr!=null) tbody.appendChild(tr);  
  106. }  
  107. function init_mediatypes(){  
  108.     var tbody=document.getElementById("m_video");  
  109.     var i=0;  
  110.     var tr=document.createElement("tr");  
  111.     var videoTypes=[ "video/ogg","video/mp4","video/webm" ];  
  112.     i=0;  
  113.     tr=document.createElement("tr");  
  114.     do{  
  115.         var td=document.createElement("th");  
  116.         td.innerHTML=videoTypes[i];  
  117.         tr.appendChild(td);  
  118.     }while(++i<videoTypes.length);  
  119.     tbody.appendChild(tr);  
  120.     i=0;  
  121.     tr=document.createElement("tr");  
  122.     if(!!document._video.canPlayType){  
  123.         do{  
  124.             var td=document.createElement("td");  
  125.             var support=document._video.canPlayType(videoTypes[i]);  
  126.             td.innerHTML='"'+support+'"';  
  127.             if(support==="maybe"){  
  128.                 td.className="true";  
  129.             }else if(support===""){  
  130.                 td.className="false";  
  131.             }  
  132.             tr.appendChild(td);  
  133.         }while(++i<videoTypes.length);  
  134.         tbody.appendChild(tr);  
  135.     }  
  136. }  
  137. function capture(event){  
  138.     media_events[event.type]=media_events[event.type]+1;  
  139.     for(key in media_events){  
  140.         var e=document.getElementById("e_"+key);  
  141.         if(e){  
  142.             e.innerHTML=media_events[key];  
  143.             if(media_events[key]>0) e.className="true";  
  144.         }  
  145.     }  
  146.     update_properties();  
  147. }  
  148. function update_properties(){  
  149.     var i=0;  
  150.     for(key in media_properties){  
  151.         var val=eval("document._video."+media_properties[key]);  
  152.         /* 
  153.          if (typeof val === "TimesRanges") { 
  154.          val = val.length + " TimeRanges"; 
  155.          } 
  156.          */  
  157.         media_properties_elts[i++].innerHTML=val;  
  158.     }  
  159.     if(!!document._video.audioTracks){  
  160.         var td=document.getElementById("m_audiotracks");  
  161.         td.innerHTML=document._video.audioTracks.length;  
  162.         td.className="true";  
  163.     }  
  164.     if(!!document._video.videoTracks){  
  165.         var td=document.getElementById("m_videotracks");  
  166.         td.innerHTML=document._video.videoTracks.length;  
  167.         td.className="true";  
  168.     }  
  169.     if(!!document._video.textTracks){  
  170.         var td=document.getElementById("m_texttracks");  
  171.         td.innerHTML=document._video.textTracks.length;  
  172.         td.className="true";  
  173.     }  
  174. }  
  175. var videos=new Array();  
  176. videos[0]=[  
  177.     "http://media.w3.org/2010/05/sintel/poster.png","http://media.w3.org/2010/05/sintel/trailer.mp4","http://media.w3.org/2010/05/sintel/trailer.ogv","http://media.w3.org/2010/05/sintel/trailer.webm"  
  178. ];  
  179. videos[1]=[  
  180.     "http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/trailer.mp4","http://media.w3.org/2010/05/bunny/trailer.ogv"  
  181. ];  
  182. videos[2]=[  
  183.     "http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/movie.mp4","http://media.w3.org/2010/05/bunny/movie.ogv"  
  184. ];  
  185. videos[3]=[  
  186.     "http://media.w3.org/2010/05/video/poster.png","http://media.w3.org/2010/05/video/movie_300.mp4","http://media.w3.org/2010/05/video/movie_300.ogv","http://media.w3.org/2010/05/video/movie_300.webm"  
  187. ];  
  188. function switchVideo(n){  
  189.     if(n>=videos.length) n=0;  
  190.     var mp4=document.getElementById("mp4");  
  191.     var ogv=document.getElementById("ogv");  
  192.     var parent=ogv.parentNode;  
  193.     document._video.setAttribute("poster",videos[n][0]);  
  194.     mp4.setAttribute("src",videos[n][1]);  
  195.     ogv.setAttribute("src",videos[n][2]);  
  196.     if(videos[n][3]){  
  197.         if(webm.parentNode==null){  
  198.             parent.insertBefore(webm,ogv);  
  199.         }  
  200.         webm.setAttribute("src",videos[n][3]);  
  201.     }else{  
  202.         if(webm.parentNode!=null){  
  203.             parent.removeChild(webm);  
  204.         }  
  205.     }  
  206.     document._video.load();  
  207. }  

这一段JS是从http://www.w3.org/2010/05/video/mediaevents.html拷贝而来,具体的演示就在这个页面了。我是想知道video标签中的一些事件。controller_event几乎用不到。
中文说明这里有:http://directguo.com/blog/index.php/2010/07/html5-audio-video-tag/

XML/HTML代码
  1. //错误状态  
  2.    Media.error; //null:正常  
  3.    Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效  
  4.   
  5. //网络状态  
  6.    Media.currentSrc; //返回当前资源的URL  
  7.    Media.src = value; //返回或设置当前资源的URL  
  8.    Media.canPlayType(type); //是否能播放某种格式的资源  
  9.    Media.networkState; //0.此元素未初始化  1.正常但没有使用网络  2.正在下载数据  3.没有找到资源  
  10.    Media.load(); //重新加载src指定的资源  
  11.    Media.buffered; //返回已缓冲区域,TimeRanges  
  12.    Media.preload; //none:不预载 metadata:预载资源信息 auto:  
  13.   
  14. //准备状态  
  15.    Media.readyState;    //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA  
  16.    Media.seeking; //是否正在seeking  
  17.   
  18. //回放状态  
  19.    Media.currentTime = value; //当前播放的位置,赋值可改变位置  
  20.    Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0  
  21.    Media.duration; //当前资源长度 流返回无限  
  22.    Media.paused; //是否暂停  
  23.    Media.defaultPlaybackRate = value;//默认的回放速度,可以设置  
  24.    Media.playbackRate = value;//当前播放速度,设置后马上改变  
  25.    Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文  
  26.    Media.seekable; //返回可以seek的区域 TimeRanges  
  27.    Media.ended; //是否结束  
  28. Media.autoPlay; //是否自动播放  
  29. Media.loop; //是否循环播放  
  30.    Media.play();    //播放  
  31.    Media.pause();   //暂停  
  32.   
  33. //控制  
  34. Media.controls;//是否有默认控制条  
  35.    Media.volume = value; //音量  
  36.    Media.muted = value; //静音  
  37.   
  38.    //TimeRanges(区域)对象  
  39. TimeRanges.length; //区域段数  
  40. TimeRanges.start(index) //第index段区域的开始位置  
  41. TimeRanges.end(index) //第index段区域的结束位置  

借鉴一下。

Tags: html5, video, audio

文章阅读时启用readability插件

OK,看我博客的人,可能会看到这个工具条了,嗯,我已经在网站的阅读时候启用了readability这个插件,如果不想看到文章左右的广告的用户,可以点击NOW看一下。当然如果你对文章有兴趣,你可以点击EMAIL发到邮箱。

更重要的是,如果你有kindle,你也可以尝试发送过去。(希望我转载的文章足够吸引人)

放心吧,不要以为很难,其实 你也可以拥有这样的功能。在你的页面上加上这样一段代码就OK了:

<div class="rdbWrapper" data-show-read="1" data-show-send-to-kindle="1" data-show-print="1" data-show-email="1" data-version="1"></div><script type="text/javascript"> (function() { var s = document.getElementsByTagName("script")[0], rdb = document.createElement("script"); rdb.type = "text/javascript"; rdb.async = true; rdb.src = document.location.protocol + "//www.readability.com/embed.js"; s.parentNode.insertBefore(rdb, s); })(); </script>

什么,复制代码无效?没关系,看这里:http://www.readability.com/publishers/tools

你可以自定义你要的样式啦

Tags: readability

ubuntu 11.04 一天

昨天安装的ubuntu到今天也算是差不多有一天了,用起来嘛,没有什么明显的障碍,事实上和以前的区别也不是特别的大,所以其实上我更多的就是在尝试使用新的界面。
安装好ubuntu后,第一步就是update和重新更换语言包,添加五笔输入法,这些搞定后,我接着就是apt-get install sun-java6-jre,然后在运行的时候同时去netbeans.org下载了netbeans,然后更新了我的firefox所有常用插件,并把我在台式机上的收藏夹,密码,同步了回来。再装了svn就一切都几乎和以前一样了。

接着就是一直操作新界面,起初的时候觉得还行,因为就象一个快捷方式在左边或者说状态栏在左边,但紧接而来的问题就是,该界面学苹果学的不像呀。把菜单栏缩在以前的顶部状态栏上,OK,这没问题,但是窗口用着用着就突然无法正常最大化了也不能拖动了,最明显的就是我用firefox的时候,按ctrl+u看源码,居然就随便浮动了一个小窗口在右侧不能放大不能缩小不能移动。害得我源码也无法看。然后鼠标移动到顶部菜单栏后也无法双击放大缩小(那个控制按钮不见了,firefox刚启动的时候会有这些控制按钮),这反而影响了我的工作效率。所以,在使用了两三个小时后,我退出了这个界面,回到了gnome。。。。。
其实,新界面还是很不错的,至少他的程序组菜单就相对比较方便,只是我更喜欢把常用的拖出来(虽然他可以拖到左侧那可以自动隐藏的状态栏上并锁定在上面,但左侧那一条的反应好象不是特别灵敏,或许是我的机器太烂了吧?)

最后插一句,如果想回到gnome,很方法的,注销当前用户,然后登录的时候,界面选择ubuntu classic就OK了,以后会自动认到gnome的。

Tags: ubuntu, netbeans, gnome

Records:181234