ÎÒÏë´ó¶àÊýÈËÌý˵¹ý Node.js£¬µ«ÊÇÄãÌý˵¹ý NodeOS Âð£¿Ã»´í£¬NodeOS£¬Ò»¸öÓà Node.js дµÄ²Ù×÷ϵͳ¡£ºÃ°É£¬Êµ»°Ëµ£¬NodeOS Óà Linux ÄÚºËÀ´´¦Àí¸÷ÖֵײãÈÎÎñ£¬±ÈÈçÓ²¼þͨѶʲôµÄ£¬µ«Êdzý´ËÖ®Í⣬ʹÓõͼÊÇ Node.js¡£NodeOS µÄ¿ª·¢Ê¼ÓÚÁ½Äêǰ£¬´´½¨ÕßµÄÄ¿µÄºÜ¼òµ¥£¬ËûÖ»ÊÇºÃÆæ£¬¡°ÊÇ·ñÓпÉÄܽöʹÓà Node.js ´´½¨Ò»¸ö²Ù×÷ÏµÍ³ÄØ£¿¡±

ÊÇ·ñÓпÉÄܽöʹÓà Node.js ´´½¨Ò»¸ö²Ù×÷ÏµÍ³ÄØ£¿
Õâ¸öÖ÷ÒâÔõôÑù£¿
ÎÒÃÇÒѾ¿´µ½ÁË Node.js ÔÚÕ⼸ÄêÒѾȡµÃÈç´ËѸÃ͵ķ¢Õ¹£¬ÄÇôÎÒÃÇΪºÎ²»ÈÃËü¸ü¿áÒ»Ð©ÄØ£¿±ÈÈçÓÃËü×ö¸ö²Ù×÷ϵͳ¡£
Óû§×ÔÖ÷µÄ¶ÀÁ¢Îļþϵͳ
NodeOS ÒýÈëÁËÒ»¸öÓÐȤµÄÌØÐÔ£ºËùÓеÄÓû§¶¼ÓÐÒ»¸ö¶ÀÁ¢µÄÎļþϵͳ£¬ËûÃÇÔÚÒ»¸ö¼òµ¥µÄÎļþϵͳÖÐÍê³É¸÷ÖÖ¹¤×÷¡£ÒòΪËûÃǵġ°Ö÷Ŀ¼¡±ÊÂʵÉϾÍÊÇËûÃÇ×Ô¼ºµÄÎļþϵͳµÄ¸ù£¨root£©£¬ËùÒÔËûÃÇ¿ÉÒÔ²»ÐèÒªÈκγ¬¼¶È¨Ï޾ͿÉÒÔ½«Èí¼þ°ü°²×°µ½ÏµÍ³ÖУ¬Ò²²»ÐèÒªÅäÖÃʲô£¬ÒòΪÈí¼þ°üĬÈϾͰ²×°ÔÚËûÃÇ×Ô¼ºµÄÖ÷Ŀ¼ÀïÃæ¡£´ËÍ⣬ÕâÑùÒ²ÌṩÁËÁ¼ºÃµÄ°²È«ÐÔ£¬Èç¹ûºÚ¿Í¹¥Èëµ½ÁËij¸öÕË»§£¬ÄÇôֻÄÜ·ÃÎʵ½¸ÃÓû§ËùÔڵIJ¿·Ö£¬×îÖյĽá¹û¾ÍÊǺڿͲ¢²»ÄÜÓÉ´ËÓ°Ïìµ½Õû¸öϵͳ¡£
Node.js ºÍ NPM
Äã¿ÉÒÔÏëÏ룬Èç¹ûÒ»¸ö²Ù×÷ϵͳʹÓà Node.js£¬ÄǾÍÒâζ×ÅËùÓÐÔÚ NPM ÖпÉÓõİüͬʱҲ¶¼ÊÇ NodeOS µÄÈí¼þ°ü¡£ÔÚд×÷±¾ÎÄʱ£¬ÒѾÓÐÁ˳¬¹ý 21 ÍòµÄÈí¼þ°ü£¬¶øÇÒÿ·ÖÿÃë¶¼ÔÚ²»¶ÏÔö³¤¡£Èç¹û¼¸ÄêÒÔºó£¬NodeOS ÓÐÁËÒ»°ÙÍòÓ¦Óã¬ÄÇҲûʲôºÃÆæ¹ÖµÄ¡£
»ùÓÚ Linux ÄÚºË
Õâ¿´ÆðÀ´²¢²»Ëãʲô£¬Linux ÊÇ´ó¶àÊý·þÎñÆ÷Ëù²ÉÓõIJÙ×÷ϵͳ¡£ÒòΪ NodeOS ÊÇ»ùÓÚ Linux Äں˵ģ¬ËùÒÔÄãÖ»ÐèÒªºÜÉÙµÄÐ޸ľͿÉÒÔʹÓÃÄÇЩ¸øÆäËüµÄ Linux ·¢Ðа濪·¢µÄÓ¦ÓÃÁË¡£
²»ºÃµÄÏûÏ¢
Îҷdz£Ï£Íû NodeOS ÊÇÒ»¸öÒѾÍê³ÉµÄ×÷Æ·£¬µ«ÊÇ£¬ËüÏÖÔÚ»¹²»ÊÇ¡£ËüÈÔȻȱÉÙһЩ·þÎñÆ÷²Ù×÷ϵͳËù±ØÐèµÄ¹Ø¼ü¹¦ÄÜ¡£±ÈÈ磬ȱʧÍêÕûµÄ BASH ¹¤¾ß¼¯£¬°üÀ¨ ps¡¢tail¡¢nano ºÍ grep µÈ¶¼Ã»ÓС£¸üÔã¸âµÄÊÇ£¬ÄãÒ²²»ÄܰÑËüµ±³É×ÀÃæ²Ù×÷ϵͳʹÓã¬ÒòΪËüûÓÐ GUI¡£µ±È»£¬Äã¿ÉÒÔʵÏÖһЩȱʧµÄ¹¦ÄÜ£¬Ö»ÐèҪʹÓÃÒ»µãµã JavaScript£¬µ«ÊÇĬÈÏÇé¿öÏ£¬ÕâЩ¹¦ÄÜÏÖÔÚ¶¼»¹Ã»ÓУ¬ÕæÔã¸â¡£
ºÃ°É£¬ÄÇÎÒ¿ÉÒÔÊÔÊÔ NodeOS Âð£¿
ʹÓà Docker À´ÌåÑé
×îÈÝÒס¢×î¿ì½ÝµÄÌåÑé NodeOS µÄ·½·¨ÈçÏ£º
- һ̨ÔËÐÐ Mac OSX »ò Linux ¼ÆËã»ú£¬Ò²Ðí Windows Ò²¿ÉÒÔ£¬µ«ÊÇÎÒûÊÔ¹ý¡£
-
Docker¡£
µ±Äã°²×°ºÃ Docker Ö®ºó£¬ÔËÐÐÒ»¸ö NodeOS ʵÀýÊǺÜÈÝÒ׵ġ£ÄãÖ»ÐèÒªÖ´ÐÐÈçÏÂÃüÁî¾Í¿ÉÒÔÁË£¬ Docker »áΪÄãÍê³ÉÕâħ·¨°ãµÄÒ»ÇУº
sudo docker run -t -i nodeos/nodeos |

×îÈÝÒס¢×î¿ì½ÝµÄÌåÑé NodeOS µÄ·½·¨ÊÇͨ¹ý Docker¡£
µ±ÄãÔËÐÐÁËÉÏÊöÃüÁDocker »á×Ô¶¯´Ó²Ö¿âÏÂÔØ NodeOS µÄ¾µÏñ£¬²¢½«Æä°²×°µ½Ò»¸öÐéÄâ»·¾³ÖС£°²×°ºÃÖ®ºó£¬»á´ò¿ªÒ»¸öÁ¬½Óµ½ NodeOS µÄ SSH »á»°¡£
²»Óà docker ÄØ£¿
ÓÐЩÇé¿öÏÂÄãÒ²Ðí²»ÄÜʹÓà Docker À´ÌåÑ飬»òÕßÊÇÄãÏëÌåÑéÒ»ÏÂ×îа汾µÄ NodeOS ¡£ÔÚд×÷±¾ÎÄʱ£¬NodeOS µÄ¾µÏñÒѾÊÇÁ½¸öÔÂǰÉú³ÉµÄÁË£¬¶ø¿ª·¢°æ±¾ÔòÊÇÁùÌìǰ¸üеġ£ËùÒÔ£¬Èç¹ûÄãÏ£ÍûʹÓÃ×îа汾£¬ÄãÓ¦¸Ã´ÓÔ´´úÂ뿪ʼ¡£ÕâÒ²²»ËãºÜÄÑ£¬µ«ÊÇÒª»¨·ÑһЩʱ¼ä¡£ÄãÐèÒª£º
- һ̨ÔËÐÐ Linux µÄ¼ÆËã»ú¡£Äã¿ÉÒÔÔÚ OS X ÉϱàÒëËü£¬µ«ÊÇ¿çÆ½Ì¨±àÒëÐèÒª»¨·ÑºÜ¶àʱ¼ä£¬¶ÔÓÚ Windows Ò²Èç´Ë¡£
-
Linux ±àÒë¹¹½¨Ïà¹ØµÄ¹¤¾ß£¨make¡¢g++¡¢gcc¡¢autoconf£©¡£
-
Qemu¡£
-
ʱ¼ä£¬ÕæµÄÐèÒªºÜ¶à¡£
Èç¹ûÍòʾ㱸£¬Äã¾Í¿ÉÒÔ´ÓÔ´´úÂ뿪ʼ±àÒëÁË£º
- ÏÂÔØÏîĿԴ´úÂ룺bash git clone git@github.com:NodeOS/NodeOS.git¡£
-
ʹÓÃÏÂÁÐÃüÁî±àÒ룺 cd NodeOS ²¢ npm install¡£
-
ÎÒÖð×ÖÒýÓÃÁËÆä¹Ù·½ÎĵµµÄ»°£º¡°ÄÃÉϱ¬Ã×»¨È¥¿´³¡µçÓ°°É£¬²»¿ªÍæÐ¦£¬ÕæµÄ¡£¡±£¬Êǵģ¬ËüÐèÒªºÜ¶àʱ¼ä£¬×öЩÓÐÒâ˼µÄÊÂÇéÈ¥°É¡£
-
Ö´ÐÐ bash npm start À´ÔÚ Qemu ÖÐÔËÐÐ NodeOS¡£
¿ÉÒÔ¹¤×÷ÁËÂð£¿
µ±°²×°Íê³Éºó£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÔÚ NodeOS µÄ shell ÖÐÖ´ÐÐ lsÃüÁîÀ´¿´¿´ËüÊÇ·ñ¹¤×÷ÁË¡£Êä³öÀàËÆÈçÏ£º
[ 'etc', 'lib', 'lib64', 'root', 'bin', 'sys', 'usr', 'share', 'proc' ] |
Èç¹ûÏÔʾÈçÉÏ£¬ËµÃ÷һЩ»ù±¾µÄÃüÁî¿ÉÒÔ¹¤×÷ÁË¡£µ«ÊÇÈç¹ûÎÒÃÇÏëÒªÖªµÀÍø¿¨µØÖ·ÄØ£¿ÔÚ Linux Ï£¬Õâ¸öÃüÁîÊÇ ifconfig £¬ÈÃÎÒÃÇÊÔÊÔ£º
command not found: ifconfig |
¿´ÆðÀ´Ã»ÓÐ ifconfig ÃüÁî¡£ÕâÊÇÒòΪ NodeOS ĬÈÏûÓÐ ifconfigÃüÁî¡£ÏÖÔÚÔõô°ì£¿ºÜ¼òµ¥£¬NodeOS ÓÐÒ»¸ö¼¯³ÉµÄ°ü¹ÜÀíÆ÷£¨ÀàËÆ apt »ò yum£© £¬½Ð×ö npkg£¬ËüÊÇ»ùÓÚ Node µÄ NPM µÄ£¬ºÜÈÝÒ×ʹÓ᣿ÉÒÔͨ¹ýÈçÏÂÃüÁîºÜ·½±ãµÄ°²×° ifconfig £º
npkg install bin-ifconfig |
Èç¹ûÒ»ÇÐÕý³££¬ ifconfig ÃüÁîÏÖÔھͿÉÒÔÔÚ shell ÖÐʹÓÃÁË¡£ÎÒÃÇÔÙ´ÎÊÔ×ÅÖ´ÐÐһϣ¬Êä³öÀàËÆÈçÏ£º£¨ÎÒÌæ»»ÁËÆäÖÐµÄ MAC µØÖ·£©£º
eth0: flags=8863 mtu 1500 ether 01:23:45:67:89:ab inet6 f0cd::ef01:0203:0405:181%en1 prefixlen 64 scopeid 0x5 inet 192.168.0.21 netmask 0xffffff00 broadcast 192.168.0.21 nd6 options=1 media: autoselect status: active |
Èç¹ûÄãµÄÊä³öÒ²ÀàËÆÈçÉÏ£¬ÄÇ˵Ã÷Ëü¿ÉÒÔ¹¤×÷ÁË¡£ÄãÒѾ³É¹¦µØ°²×°ÁËÄãµÄµÚÒ»¸ö NodeOS Ó¦Ó㺠ifconfig¡£
ËüÊÇ¿ÉÒÔ¹¤×÷ÁË£¬È»¶øÎÒÃÇ¿ÉÒÔÓÃÕâ¸ö²Ù×÷ϵͳ×öÊ²Ã´ÄØ£¿
Èç¹ûÎÒÃÇÖ»ÄÜÄÃÕâ¸öÓà Node.js дµÄ²Ù×÷ϵͳ×öµ½ÄãÔÚ Ubuntu »òÆäËü Linux ·¢ÐаæÉÏÒ»ÑùµÄ£¨»ò¸üÉٵģ©ÊÂÇ飬ÄÇËüÓÐʲô¼ÛÖµ£¿Æäʵ£¬Õû¸öÊÂÇéÖÐ×îÓÐȤµÄµØ·½ÊÇËùÓеĶ«Î÷¶¼ÊÇ Node.js ¿ª·¢µÄ¡£ÕâÒâζ×ÅÎÒÃÇ¿ÉÒÔÖ»ÐèҪʹÓà Node.js ¾Í¿ÉÒÔ¿ª·¢ÎÒÃǵÄÓ¦ÓÃÁË¡£±ÈÈ磬NodeOS ÀïûÓÐĬÈÏʵÏÖµÄ man ÃüÁËüÓÃÓÚÏÔʾÆäËüÃüÁîµÄ°ïÖúÐÅÏ¢¡£²»Óõ£ÐÄ£¬ÊµÏÖËüºÜ¼òµ¥¡£

ʹÓà Node.js ¹¹½¨Ò»¸ö NodeOS Ó¦ÓÃ
Ê×ÏÈÈÃÎÒÃÇÀ´°²×°Ò»¸ö½Ð×ö Hipster µÄÎı¾±à¼Æ÷£¬ÒÔ±ãÎÒÃÇ¿ÉÒÔ´´½¨ºÍ±à¼Îļþ¡£Ö´ÐÐÈçÏÂÃüÁ npm install -g hipster@0.15.0¡£Õâ¸öÎı¾±à¼Æ÷ºÜ¼òµ¥£¬³ýÁËÓÃ×÷Îı¾±à¼Ö®ÍâɶҲ¸É²»ÁË£¬²»¹ý¶ÔÓÚÎÒÃÇÀ´Ëµ×ã¹»ÁË¡£
Óà Hipster ´´½¨ÎļþºÜ¼òµ¥£¬ÔËÐÐ hip filename¼´¿É£¬È磺 hip package.json¡£Òª±£´æÎļþÇë°´Ï Ctrl + s £¬Í˳ö°´Ï Ctrl + q¡£
ÔÚÕâÀÎÒÃÇʹÓÃÁËÒ»¸ö NodeOS µÄÖ÷¿ª·¢ÈËÔ±Ëù¿ª·¢µÄ´úÂ룬ÎÒ×Ô¼º²¢Ã»ÓÐÕæµÄÈ¥¿ª·¢Õâ¸öÓ¦Óá£ÎÒÃÇÀý×ÓÖеÄÔʼ´úÂë¿ÉÒÔÔÚ node-bin-man Git ²Ö¿âÖÐÕÒµ½¡£
ÈÃÎÒÃǻعýÍ·À´´´½¨ÎÒÃǵĵÚÒ»¸ö NodeOS Ó¦Óá£Ïñÿ¸ö Node.js Ó¦Ó㨻ò NPM °ü£©Ò»Ñù£¬ÎÒÃÇ´Ó´´½¨Ò»¸ö package.json Îļþ¿ªÊ¼£¬ÄÚÈÝÈçÏ£º
{ "name": "bin-man", "version": "0.0.1", "description": "Format and display manual pages", "bin": { "man": "man.js" }, "repository": "https://github.com/groundwater/node-bin-man", "author": "groundwater", "license": "MIT", "dependencies": { "blessed": "~0.0.22" } } |
ÕâЩ²ÎÊý name¡¢version¡¢ author¡¢ repository¡¢ licenseºÍ description ÊÇÆäÒâ×ÔÃ÷µÄ¡£Õâ¸ö bin ¼¯ºÏÊÇÒ»¸ö JSON µÄ¼üÖµ¶Ô¶ÔÏ󣬰üº¬ÁËÃüÁîÃû¼°Æä¹ØÁªµÄ JavaScript Îļþ¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬ man ÃüÁî¹ØÁªµ½ man.jsÎļþ¡£¶ø dependencies¼¯ºÏ°üº¬ÁËÕâ¸öÓ¦ÓÃËùÐèÒªµÄ NPM °üµÄÁÐ±í¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬´úÂëµÄ×÷Õß°üº¬ÁË Blessed °ü£¬ÕâÊÇÒ»¸öÀà curses µÄ¿â£¬¿ÉÒÔÈà Node.js Ö§³Ö¸ß¼¶Öն˽çÃæµÄ API¡£
ÏÖÔÚÎÒÃǽøÈëÁËÖ÷ÒªµÄ²¿·Ö£¬Êµ¼ÊµÄ´úÂë¡£
Õâ¸ö²¿·Ö½Ð×öÊͰ飨shebang£©¡£NodeOS ʵ¼ÊÉϲ¢²»ÐèÒªËü£¬µ«ÊÇËüÓÃÓÚ¸æËß²Ù×÷ϵͳÈçºÎÖ´ÐÐÏÂÃæµÄ´úÂë¡£ÔÚÕâÀïµÄÒâ˼ÊÇ£¬Ëü¸æËßϵͳÏÂÃæµÄÿÐдúÂë¶¼ÐèҪͨ¹ý /usr/bin/env nodeÃüÁîÀ´½âÊÍÖ´ÐС£
var fs = require('fs'); var blessed = require('blessed'); |
ÏñÔÚ Node.js ÖÐÒ»Ñù£¬ require() º¯Êý¼ÓÔØÑ¡¶¨µÄ°üµ½ÄÚ´æÖУ¬²¢½«Æä±£´æÎªÌض¨µÄ±äÁ¿¡£
var arg = process.argv[2] || 'bin-man'; |
man ÃüÁîµÄ±ê×¼ÐÐΪÊÇÈç¹ûûÓÐÖ¸¶¨Òª²é¿´µÄÃüÁîʱ£¬¾ÍÏÔʾËü×Ô¼ºµÄ°ïÖúÐÅÏ¢¡£ÔÚÎÒÃǵĴúÂëʾÀýÖÐÒ²Ò»Ñù£ºÈç¹ûûÓиø³öµÚ¶þ¸ö²ÎÊý£¨µÚÒ»¸ö²ÎÊýÊÇ man ±¾Éí£©£¬ÄÇô¸Ã²ÎÊýµÄĬÈÏÖµÊÇ bin-man¡£
var path = process.env.HOME + "/lib/node_modules/" + arg + "/README.md"; try{ var readme = fs.readFileSync(path, 'utf-8'); }catch(e){ console.log('No README.md for Package ',arg); process.exit(-1); } |
ÔÚÕâÀ³ÌÐò¼ì²é¸ø¶¨µÄÓ¦ÓÃÊÇ·ñÓÐÒ»¸ö readme Îļþ¡£ÔÚ NodeOS ÖУ¬Ã¿¸öÓ¦Óõݲװ·¾¶ÊÇÆäÖ÷Ŀ¼£¨/£©Ï嵀 lib/node_modules¡£Èç¹û README.md Îļþ´æÔÚ£¬¾Í½«ÆäÄÚÈݱ£´æµ½ readme±äÁ¿ÖС£·ñÔò£¬ÏÔʾһ¸ö´íÎóÐÅÏ¢²¢Í˳ö¡£
// Create a screen object. var screen = blessed.screen(); var box = blessed.box({ content: readme, alwaysScroll:true, scrollable: true, }); // Append our box to the screen. screen.append(box); |
Blessed ÓÐÒ»¸ö·Ç³£¼òµ¥µÄ API£¬ÒªÏÔʾһ¸öÎļþµÄÄÚÈݺÜÈÝÒ×£¬Ö»ÐèÒª´´½¨Ò»¸ö box £¬È»ºóÔØÈëÄÚÈݼ´¿É¡£
screen.key(['escape', 'q', 'C-c'], function(ch, key) { return process.exit(0); }); |
ÏÖÔÚ£¬ÈÃÎÒÃÇÕÒ¸öÍ˳ö man Ó¦Óõķ½·¨¡£ÎÒÃÇ×éºÏÁË escape¡¢ q »ò emacs ·ç¸ñµÄ C-c À´Í˳öÓ¦Óá£
screen.key(['space','f','j','n'], function(ch, key) { box.scroll(box.height); screen.render(); }); screen.key(['down'], function(ch, key) { box.scroll(1); screen.render(); }); screen.key(['up'], function(ch, key) { box.scroll(-1); screen.render(); }); screen.key(['b','k','p'], function(ch, key) { box.scroll(-box.height); screen.render(); }); |
ÎÒÃÇʹÓ÷½Ïò¼üÀ´ÉϹöºÍϹö£¬Óà space¡¢ f¡¢ j »ò n ÏòÏ·ҳ£¬b¡¢ k »ò p ÏòÉÏ·Ò³¡£
box.focus(); screen.render(); |
×îºó£¬ÎÒÃÇÈÃÓ¦Óý«ÊäÈë½¹µã·Åµ½ box £¬ÎÒÃÇÔÚÕâÀï´´½¨ºÍäÖȾËùÓÐÄÚÈÝ¡£
°ÑÉÏÃæ±à¼µÄÕâ¸öÎļþ´æ·Åµ½ /lib/node_modules/bin-man Ŀ¼Ï£¨Ãû×ÖÊÇ man.js£©£¬²¢¼ÓÒ»¸ö¼òµ¥µÄ README.md £¬ÀàËÆÈçÏ£º
# Man Author: @groundwater ## Install npkg install bin-man ## Usage ``` Usage: man PKGNAME Display a packages README.md file ``` |
ÎÒÃÇÒѾ»ù±¾Íê³ÉÁËÎÒÃǵĵÚÒ»¸ö NodeOS ¶¨ÖÆÓ¦Óá£×îºóÊ£ÏÂһС²½ÁË£¬ÎÒÃÇÐèÒª´´½¨Ò»¸ö NodeOS Ó¦ÓÃÐèÒªµÄÅäÖÃÎļþ¡£ºÜ¼òµ¥£¬°ÑËü´´½¨µ½ /etc/bin-man/config.json £¬ÄÚÈÝÖ»ÊÇÒ»¸ö¿ÕµÄ JSON ¶ÔÏó£º {}¡£
ÏÖÔÚÎÒÃÇ¿ÉÒÔÊÔÊÔÎÒÃǵÄÐÂÓ¦ÓÃÁË¡£ÔÚ NodeOS ÖÐÔËÐÐ man £¬Ëü½«Õ¹Ê¾ÎÒÃÇ֮ǰ´´½¨µÄ readme Îļþ¡£
×ܽá
ÈçÄãËù¼û£¬ÔÚ NodeOS ÖÐʵÏÖÈκζ«Î÷¶¼ºÜ¼òµ¥£¬ÄãÖ»ÐèÒª¶®µÃ Node.js ¼´¿É¡£
NodeOS ºÜÓÐDZÁ¦£¬ÎÒÈÏΪµ±ÊµÏÖÁ˸ü¶àµÄ¹¦ÄÜÖ®ºóËü»á³ÉΪһ¸öΰ´óµÄ²Ù×÷ϵͳ¡£Ä¿Ç°ÈÔÈ»ÐèÒªºÜ¶à¹¤×÷£¬µ«ÊÇÔÚÕû¸öNode.js Éú̬ϵͳÐËÊ¢·¢Õ¹µÄÐÎÊÆÏ£¬ÍòÒ»ÄÄÌìËüºÜ¿ìµØ³ÉΪһ¸öÁ÷ÐеIJÙ×÷ϵͳҲûʲôºÃ¾ªÆæµÄ¡£
ÄãÔõô¿´£¿·¢±íÄãµÄÆÀÂÛÈÃÎÒÃÇÖªµÀ¡£ |