liboiå‘布0.0.3版。该版本主è¦åšåˆ°Windows的移æ¤å·¥ä½œã€‚ç›®å‰liboiåŒæ—¶æ”¯æŒWindowså’ŒLinux。
下载: http://code.google.com/p/liboi/downloads/list
Windows用户请注æ„下载 liboi-0.0.3.zip文件。*.tar.gzå’Œbz2文件都åªæ‰“包了Linux编译需è¦çš„文件。
接下æ¥0.0.4主è¦æ˜¯Windowså¹³å°ä¸Šçš„一些é‡æ•´å·¥ä½œï¼Œä¾‹å¦‚把第三方ä¾èµ–拿出æ¥ï¼Œtar.gzå’Œbz2也打包Windowså¹³å°éœ€è¦çš„文件。
完æˆäº†liboi 0.0.2版本,å‘布在了google code上。
0.0.2ç‰ˆæœ¬å¢žåŠ äº†æ–‡ä»¶ç§»åŠ¨çš„æ“作,å¯ä»¥å°†æ–‡ä»¶æ‹·è´åˆ°è®¾å¤‡ä¸Šï¼Œæˆ–者从设备上拷è´å‡ºæ¥ã€‚
下载:http://code.google.com/p/liboi/downloads/list
接下æ¥å¼€å§‹åšåˆ°Windows的移æ¤å·¥ä½œã€‚
自从用了OpenInkpot,并且推èäº†å‡ ä¸ªç”¨v3的朋å‹æ¢æˆOpenInkpot之åŽï¼Œè¶Šå‘觉得,对于普通用户æ¥è¯´ï¼Œç®¡ç†é˜…读器相当的麻烦,三天两头就需è¦æ供技术支æŒï¼Œä»Žå®‰è£…å—体到拷è´ä¹¦ç±å†åˆ°é…置系统,ä¸ä¸€è€Œè¶³ã€‚
å› ä¸ºOpenInkpot在V3上使用USB RNDIS驱动连接阅读器和PC,并且通过SSHçš„æ–¹å¼è¿žæŽ¥è®¾å¤‡ï¼Œä½†æ˜¯SSH的设置æ¥éª¤å¤æ‚,而且在Vista x64å’ŒWin7è¿™ç§æ¯”较新的æ“作系统上é¢æ€»æœ‰äº›é—®é¢˜ï¼Œå¯¹ç”¨æˆ·è¦æ±‚比较高。
其实V3çš„è¿™ç§è¿žæŽ¥æ¨¡å¼æ¯”较åƒWindows Mobile手机的方å¼ï¼Œè¿™ç§æ–¹å¼åœ¨å…·æœ‰ä¸€ä¸ªå®¢æˆ·ç«¯çš„时候有很大的çµæ´»æ€§ï¼Œä¾‹å¦‚WM手机的Active Sync。å¦å¤–就是ç‰å¾…OI支æŒUSB Mass Storage,å³æ¨¡æ‹Ÿä¸€ä¸ªU盘出æ¥çš„æ–¹å¼ï¼Œä½†æ˜¯çœ‹èµ·æ¥ä¸€æ—¶åŠä¼šå„¿ä¹Ÿæ²¡æœ‰åšçš„计划。
但是OI有它的好处,就是很多å¯ä»¥è‡ªå®šä¹‰çš„东西,例如阅读器的键绑定——我一直想把翰林V3左侧的翻页键互æ¢â€”—但是修改的方å¼éœ€è¦ç”¨æˆ·ssh到阅读器修改。这对于普通用户æ¥è¯´ç®€ç›´å°±æ˜¯å™©æ¢¦ã€‚
åŒæ—¶ï¼ŒOI还有一些问题,例如在0.2 rc5当ä¸æ·»åŠ çš„libextract,å³åœ¨ä¹¦æž¶æ¨¡å¼ä¸‹æ˜¾ç¤ºä¹¦ç±çš„元信æ¯ï¼Œè€Œä¸æ˜¯æ–‡ä»¶å,在很多时候其实是有问题的。官方的绕过方å¼æ˜¯é‡å‘½å一个文件,但是åŒæ ·éœ€è¦ssh到阅读器修改。
由于这些问题,最好有一个å¯ä»¥ç”¨æ¥ç®¡ç†ç”µå书设备的客户端软件。这个软件也许å¯ä»¥åšä¸‹é¢çš„事情:
- 自动é…置电å书的USB RNDIS连接
- 书ç±æœç´¢ã€ä¸‹è½½å’ŒåŒæ¥
- æ•°æ®çš„åŒæ¥ï¼Œä¾‹å¦‚书ç¾
- 状æ€å¤‡ä»½å’Œæ¢å¤ï¼Œä¾‹å¦‚当å‰é˜…读的图书的页ç ,书ç±ç‰ˆå¼ï¼ˆæ¨ªå±ï¼Œåˆ‡ç™½è¾¹ç‰ï¼‰ã€‚
- 安装å—体
- 设备软件更新
- 设备é…置修改,例如修改键绑定
- 其他工具性的功能,例如拷å±
ç‰ç‰ã€‚
但是å‰æ是è¦æœ‰ä¸€ä¸ªå®¢æˆ·ç«¯è½¯ä»¶ã€‚å› æ¤æœ€è¿‘先整了一个基础库,å–å liboi,å³lib-openinkpot之æ„,host在Google Code上é¢ï¼š http://code.google.com/p/liboi/。ç»è¿‡å‡ 个星期的晚上+周末的工作,现在把0.1版本放出æ¥ï¼Œè¿™ä¸ªç‰ˆæœ¬æ”¯æŒæœ€ç®€å•çš„功能:
- æ ¹æ®é»˜è®¤çš„SSHé…置连接阅读器。
- 获å–阅读器信æ¯ï¼Œç±»ä¼¼OpenInkpot版本å·
- 在阅读器当ä¸æ‰§è¡Œå‘½ä»¤ï¼ˆæœ‰äº†è¿™ä¸ªåŠŸèƒ½å‰©ä¸‹çš„就是想象力了)
ç›®å‰åªæ”¯æŒLinuxå¹³å°ï¼Œè¯·åœ¨é¡¹ç›®ä¸»é¡µä¸Šä¸‹è½½æºç 包自行编译。æºç 包当ä¸æœ‰oish.c文件,会生æˆä¸€ä¸ªoish(OpenInkpot Shell)的程åºï¼Œå¯ä»¥ä½œä¸ºä¾‹å程åºä½¿ç”¨ã€‚
åŽé¢çš„事情,主è¦åŒ…括:
- æ‹·è´æ–‡ä»¶ï¼ŒåŒ…括拷进æ¥å’Œæ‹·å‡ºæ¥ã€‚
- Windows Porting
- SSH自动é…ç½®
å¦å¤–招募擅长客户端界é¢çš„åŒä»å¼€å‘客户端GUI,我è¦åšçš„è¯ä¼°è®¡ç•Œé¢ä¼šå¾ˆä¸‘。当然了,没报酬,代ç å¼€æºï¼Œçº¯è‡ªæ„¿å‚与。
最近OpenInkpotå·²ç»å‘布了官方0.2预å‘布版本20091001(算是给国庆献礼么?:P),这个版本第一次把ä¸æ–‡æœ¬åœ°åŒ–的内容包å«åœ¨å†…,也就是说将æ¥å¤§å®¶ä½¿ç”¨OpenInkpot的时候就å¯ä»¥çœ‹åˆ°ä¸æ–‡çš„ç•Œé¢äº†ã€‚大家å¯ä»¥åœ¨é¦–次刷机之åŽé€‰æ‹©è¯è¨€ä¸ºâ€œç®€ä½“ä¸æ–‡â€ï¼Œæˆ–者到设置/Setup里é¢æ›´æ”¹ã€‚注æ„选择è¯è¨€ç•Œé¢é‡Œé¢9,0两个键ä¸èƒ½ç”¨æ¥ç¿»é¡µçš„,å°å¿ƒé€‰ä¸äº†å¸Œè…Šè¯ã€‚:P
ç›®å‰ä¸æ–‡åŒ–的部分ä»ç„¶åœ¨è¿›è¡Œå½“ä¸ï¼Œå·²ç»å®Œæˆçš„部分包括:
1. æ–°çš„ä¸æ–‡å—体,使用文泉驿ä¸æ–‡å—体替æ¢æŽ‰äº†ä»¥å‰çš„è€å—体,ä¸æ–‡æ˜¾ç¤ºæ¼‚亮了很多。
2. Wiki页é¢çš„ä¸æ–‡åŒ–,包括用户手册(http://openinkpot.org/wiki/0.2/UsersGuide/zh)和安装指å—(http://openinkpot.org/wiki/0.2/InstallationGuide/zh)。
3. 大部分程åºç•Œé¢çš„ä¸æ–‡åŒ–。包括书架ã€éžPDF阅读器的大部分。PDF阅读器(LocoPDF)当ä¸çš„å—符串现在还没有抽出æ¥ï¼Œå› æ¤æš‚时还åªæœ‰è‹±æ–‡ç•Œé¢ã€‚ä¸æ–‡åŒ–进度å¯ä»¥åˆ°http://l10n.openinkpot.org查看,有兴趣的也å¯ä»¥æ³¨å†Œä¸ŠåŽ»å‚与翻译和查看翻译进度。
æ£åœ¨è¿›è¡Œçš„工作包括:
1. éšæœºå¸®åŠ©æ–‡æ¡£çš„翻译。这个功能在最近æ‰åˆšåˆšåŠ 入到OI当ä¸ï¼Œç¿»è¯‘工作也刚刚开始进行。有兴趣的å¯ä»¥å‚è§http://groups.google.com/group/openinkpot-l10n/browse_thread/thread/ac83e60784869903
2. 应用程åºå的翻译。现在还没有好的åå—想出æ¥ï¼Œå› æ¤æš‚时没有æ交。å¾æ±‚大家的æ„è§ï¼Œä¸‹é¢è¿™äº›åº”用程åºå怎么翻译比较åˆé€‚:
* FBReader: 默认的éžPDF阅读器
* CoolReader: å¯é€‰çš„éžPDF阅读器
* LocoPDF: 默认的PDF阅读器
* MadEye: 默认的图片查看器
* å°æ¸¸æˆä»¬ï¼šBridges Puzzle, Fifteen Puzzle, Flip Puzzle, Pegs Puzzle, Solo (Suduko like) Puzzle, Twiddle Puzzle。都是一些益智å°æ¸¸æˆï¼Œä»‹ç»å¯ä»¥å‚è§http://www.chiark.greenend.org.uk/~sgtatham/puzzles/
3. 一些æ‚七æ‚八的东西,例如å˜å‚¨å™¨åå—,“Internal Storageâ€å’Œ”SD Card”è¿™ç§ï¼Œè¿˜æ²¡ç¿»è¯‘。
如果有什么本地化相关的建议,å¯ä»¥ç›´æŽ¥è”系我 (ftofficer@ftofficer.com)
昨天收到了Mozilla Addonså‘æ¥çš„邮件,ç»è¿‡æ¼«é•¿çš„ç‰å¾…,TabIMSwitchå·²ç»æˆä¸ºäº†Mozilla Addons大家åºçš„æ£å¼ä¸€å‘˜ã€‚
çŽ°åœ¨ä½ å¯ä»¥ç™»å½•Mozilla Addons上的页é¢æ¥ä¸‹è½½æœ€æ–°ç‰ˆæœ¬äº†ã€‚
https://addons.mozilla.org/addon/5413
—
5413å°†æ˜¯ä½ çš„ç»ˆç”Ÿä»£å· :b
VeryCD是个ä¸é”™çš„网站,除了在æ¯ä¸ªé¡µé¢ä¸Šé¢å‡ºçŽ°çš„flash广告(è§ä¸‹å›¾ï¼‰ã€‚当然我也知é“VeryCDç»´æŒç”Ÿå˜åŸºæœ¬ä¸Šè¦é 广告,但是ç»å¸¸æžæ»æˆ‘æµè§ˆå™¨çš„flash广告,我是ä¸å¾—已把它过滤掉的。
Firefox对于广告的解决方案当然是AdBlock Plus。这个æ’件å¯ä»¥æŒ‰ç…§é€šé…符或者æ£åˆ™è¡¨è¾¾å¼æ¥å°é”å¹¿å‘Šã€‚å¦‚æžœä½ ä¸æ‡‚通é…符或者æ£åˆ™è¡¨è¾¾å¼ï¼Œç›´æŽ¥ç”¨é¼ æ ‡ç‚¹ç‚¹åŸºæœ¬ä¸Šä¹Ÿæ˜¯å¯ä»¥è§£å†³é—®é¢˜çš„。通过在其ä¸æ·»åŠ 一æ¡è§„则å°é” http://222.37.134.*/*.htm*,顺利达到了å°é”VeryCD上é¢çš„flash广告的目的。
但是éšä¹‹è€Œæ¥çš„é—®é¢˜æ˜¯ï¼Œå› ä¸ºè¿‡æ»¤æŽ‰äº†ä¸€ä¸ªiframe,整个页é¢å¸ƒå±€å°±æœ‰äº†ä¸€äº›é—®é¢˜ï¼Œèµ„æºè¯¦ç»†ä¿¡æ¯å› ä¸ºå¸ƒå±€çš„ç¼˜æ•…æ— æ³•æ˜¾ç¤ºï¼ˆè§ä¸‹å›¾ï¼‰ã€‚
为了能够让它显示出æ¥ï¼Œåªå¥½å¦å¤–å†æ‰“一层补ä¸ã€‚这次用Greasemonkeyï¼Œè®©å®ƒåœ¨åŠ è½½VeryCD页é¢çš„时候在原本显示广告的地方显示å¦å¤–一个东西æ¥å 个ä½ç½®ï¼Œè‡ªç„¶å°±èƒ½å¤Ÿè®©è¯¦ç»†ä¿¡æ¯éƒ¨åˆ†æ˜¾ç¤ºäº†ã€‚
åœ¨è¿™é‡Œæ˜¾ç¤ºä»€ä¹ˆå‘¢ï¼Ÿçœ‹äº†å‡ ä¸ªVeryCD页é¢ä¹‹åŽï¼Œå‘现大多数的页é¢ä¸Šé¢åœ¨ç®€ä»‹éƒ¨åˆ†éƒ½æœ‰è‡³å°‘一幅图片。按ç†è¯´æŠŠç¬¬ä¸€å‰¯å›¾ç‰‡æŒ‰æ¯”例缩å°æ”¾åœ¨å…¶ä¸åº”该å¯ä»¥å§ã€‚最åŽç»“æžœè§ä¸‹å›¾ï¼š
最åŽè´´Greasemonkey脚本的代ç 。请将其拷è´åˆ°è®°äº‹æœ¬ä¿å˜ä¸ºâ€œæ‰€æœ‰æ–‡ä»¶â€ï¼Œæ–‡ä»¶å选择.user.js结æŸã€‚ä¿å˜åŽæ‹–动到Firefox(事先需è¦å®‰è£…了Greasemonkey),确定å³å¯å®‰è£…。
== 代ç 开始,请ä¸è¦æ‹·è´è¿™ä¸€è¡Œ ==
// ==UserScript==
// @name          Re-format VeryCD item detail
// @namespace     http://ftofficer.spaces.live.com
// @description   Re-format VeryCD item detail
// @include       http://www.verycd.com/topics/*
// ==/UserScript==
function findFirstImg() {
 var paras = document.getElementsByTagName(‘p’);
 for (var i=0; i<paras.length; ++i) {
   var p = paras[i];
   if ( p.getAttribute(‘class’) == ‘inner_content’) {
     var imgs = p.getElementsByTagName(‘img’);
     if ( imgs && imgs.length > 0 )
       return imgs[0];
   }
 }
Â
 return null;
}
function getScale(imgWidth, imgHeight, divWidth, divHeight) {
 var wScale = divWidth * 1. / imgWidth;
 var hScale = divHeight * 1. / imgHeight;
Â
 if ( wScale > 1. && hScale > 1. ) {
   return 1.;
 }
Â
 return wScale < hScale ? wScale : hScale;
}
function fixupVeryCDDetailPage() {
 var moreInfo = document.getElementById(‘moreInfo’);
 if ( moreInfo ) {
   var frame = document.createElement(‘div’);
   frame.setAttribute(‘class’, ‘Banner1’);
   frame.width = 300;
   frame.height = 250;
   firstImg = findFirstImg();
   if ( firstImg ) {
     var img = document.createElement(‘img’);
     img.src = firstImg.src;
     var imgScale = getScale(img.width, img.height, frame.width, frame.height);
     img.width = Math.floor(img.width * imgScale);
     img.height = Math.floor(img.height * imgScale);
     frame.appendChild(img);
   }
  Â
   if ( moreInfo.parentNode ) {
     moreInfo.parentNode.insertBefore(frame, moreInfo);
   }
 }
}
fixupVeryCDDetailPage();
== 代ç 结æŸï¼Œè¯·ä¸è¦æ‹·è´è¿™ä¸€è¡Œ ==
今天打开Space准备写blog,å´å‘现“å‘布日志â€æŒ‰é’®ä»ç„¶æ˜¯ç°æŽ‰çš„,看看Greasemonkey的脚本状æ€å·²ç»å¯ç”¨äº†ï¼Œéš¾é“M$会ws到连我这个第三方开å‘者都ä¸æ”¾è¿‡ï¼ŸæŽ¥ä¸‹æ¥å°±æ˜¯åˆ†æžä¸€ä¸‹çœ‹çœ‹æœ‰ä»€ä¹ˆå˜åŠ¨ï¼Œç„¶åŽæ›´æ–°ä¸€ä¸‹è„šæœ¬ã€‚但是看æ¥çœ‹åŽ»æ–‡æ¡£çš„结构都没有å˜åŒ–,Greasemonkey脚本的è¿è¡Œä¹Ÿå¾ˆæ£å¸¸ã€‚
æ— æ„之ä¸åœ¨æ ‡é¢˜å½“ä¸å¡«äº†å‡ 个å—符,竟然å‘现“å‘布日志â€æŒ‰é’®å¯ç”¨äº†ï¼ç„¶åŽæŠŠGreasemonkey的用户脚本设置æˆç¦ç”¨ï¼Œåˆ·æ–°é¡µé¢ï¼Œè¾“å…¥æ ‡é¢˜ï¼Œâ€œå‘布日志â€å’Œâ€œä¿å˜ä¸ºè‰ç¨¿â€ç«‹å³å¯ç”¨äº†ã€‚
原æ¥æˆ‘误解了M$,其实是M$åšäº†ç‚¹å·¥ä½œæ¢å¤äº†Spaceçš„bug,看æ¥æˆ‘çš„Greasemonkey脚本å¯ä»¥é€€ä¼‘了。
ä¸è¿‡æš‚时还是ä¿ç•™åœ¨é‚£é‡Œå§ï¼Œä¸çŸ¥é“哪天会å†æ¬¡å‡ºçŽ°é—®é¢˜ã€‚
今天收到Mozillaå‘过æ¥çš„邮件,希望我们å¯ä»¥æŠŠè‡ªå·±çš„扩展å‡çº§åˆ°æ”¯æŒFirefox 3.0。本æ¥åœ¨Beta 1出æ¥çš„时候就打算åšçš„,一直没动手,今天既然收到了信,就花了一天的时间调整了一下TabIMSwitch,å°å°çš„改动了一下,目å‰å·²ç»å…¼å®¹äºŽFirefox 3.0 Beta了。
新版本å·ç 1.1.0.41。
下载TabIMSwitch 1.1.0.41
SHA1æ ¡éªŒç :0f0acbdd7df6ddd712541d5e766fb0ce9f07a56d
MD5 æ ¡éªŒç :fe421b0905dbae7e59bbb3d028ad311f
ä½†æ˜¯å› ä¸ºçŽ°åœ¨æœ€å¹¿æ³›ä½¿ç”¨çš„1.1.0.37版本的一个bug,自动更新到1.1.0.41基本上是ä¸å¯èƒ½çš„ï¼Œå› ä¸º1.1.0.37版本当ä¸æ ¹æœ¬å°±ä¸åŒ…å«è‡ªåŠ¨æ›´æ–°URLã€‚é€ æˆè¿™ä¸ªé—®é¢˜çš„åŽŸå› æ˜¯åœ¨ç¼–è¯‘çš„æ—¶å€™æŠŠæ”¾åœ¨Mozilla addons上é¢çš„版本和公开在Google Code上é¢çš„版本弄混了,而Mozilla的版本是ä¸èƒ½æœ‰è‡ªåŠ¨æ›´æ–°URL的——Mozillaä¼šç»™ä½ åŠ ä¸Šä¸€ä¸ªã€‚
所以,麻烦大家自己手动下载下æ¥å‡çº§å§ã€‚
为了防æ¢ä»¥åŽå‡ºçŽ°ç±»ä¼¼çš„问题,这次把编译脚本修改了,把Mozilla addon上é¢çš„版本和Google Code上é¢çš„版本完全分开,将æ¥åº”该ä¸ä¼šå‡ºçŽ°ç±»ä¼¼çš„问题了。
— æ›´æ–°@2007-12-23 3:08 —
å‘完blog之åŽä¸¤åˆ†é’Ÿï¼Œå‘现1.1.0.40的包有问题,版本å·å¿˜äº†æ”¹äº†ï¼Œè¿˜æ˜¯1.1.0.39,忙ä¸å‡ºä¹±å•Šï¼Œæ™•å•Šæ™•ã€‚
下载了1.1.0.40的,ç‰è‡ªåŠ¨æ›´æ–°åˆ°1.1.0.41å§ã€‚
ä¹Ÿè®¸ä½ å‘现了上é¢çš„帖å。
这个帖å是我在进行测试,看看能ä¸èƒ½å¯ç”¨Live Space的“å‘布日志â€æŒ‰é’®ã€‚
事实上是æˆåŠŸäº†ï¼Œç‰¹å°†å…¶åˆ†äº«ç»™å¤§å®¶ã€‚
é¦–å…ˆï¼Œä½ éœ€è¦å®‰è£…Firefox扩展 greasemonkey。这个扩展å¯ä»¥ä½¿ä½ åœ¨åŠ è½½ä¸€ä¸ªé¡µé¢çš„æ—¶å€™æ‰§è¡Œä¸€æ®µä½ è‡ªå·±çš„Javascript程åºã€‚
安装之åŽï¼Œå°†ä¸‹é¢çš„程åºæ‹·è´åˆ°ä¸€ä¸ªæ–‡æœ¬æ–‡ä»¶ï¼Œå¹¶æŠŠæ‰©å±•åæ”¹æˆ .user.js。(务必是.user.js,å¦åˆ™greasemonkeyæ— æ³•è‡ªåŠ¨å®‰è£…ä¹‹ï¼‰ã€‚
===脚本开始,拷è´æ—¶è¯·ä¸è¦åŒ…å«è¿™ä¸€è¡Œ===
// ==UserScript==
// @name          Enable Live Space Post Button
// @namespace     http://ftofficer.spaces.live.com
// @description   Enable Live Space Post Button
// @include       http://*.spaces.live.com/*
// ==/UserScript==
function LiveSpace_enableButton(id) {
 var button = document.getElementById(id);
 if ( button ) {
   var cls = button.getAttribute("class");
   var clsNameEnd = cls.indexOf("spDisabled");
   if ( clsNameEnd != -1 ) {
     clsNameEnd–;  // skip " " before spDisabled
     var newCls = cls.substring(0, clsNameEnd);
    Â
     button.setAttribute("class", newCls);
     button.setAttribute("mi:state", "enabled");
     var aNode = document.createElement("a");
     aNode.id = id;
     aNode.href = "#";
   }
 }
}
LiveSpace_enableButton("actionToolbarBlogPost");
LiveSpace_enableButton("actionToolbarSave");
===脚本结æŸï¼Œæ‹·è´æ—¶è¯·ä¸è¦åŒ…å«è¿™ä¸€è¡Œ===
然åŽå°†è¿™ä¸ªjs文件拖放到Firefox窗å£ä¸ï¼Œgreasemonkey会弹出对è¯æ¡†è¯¢é—®æ˜¯å¦å®‰è£…,选择是,å³å¯å®Œæˆå®‰è£…。
然åŽï¼ŒåŽ»Live Spaceçš„â€œæ·»åŠ æ—¥å¿—â€å½“ä¸çœ‹çœ‹å§ã€‚
如果看到“å‘布日志â€å’Œâ€œä¿å˜ä¸ºè‰ç¨¿â€ä»ç„¶æ²¡æœ‰å¯ç”¨çš„è¯ï¼Œè¯·çœ‹çœ‹greasemonkey当ä¸é…置的网直通é…符是ä¸æ˜¯å’Œä½ 的网å€ä¸€è‡´ï¼Œè‡ªå·±æ”¹æ”¹çœ‹çœ‹ã€‚在ä¸è¡Œå¯ä»¥åœ¨è¿™é‡Œå›žå¤ã€‚
测试看看是ä¸æ˜¯â€œå‘布日志â€å·²ç»å¯ç”¨äº†ã€‚