linux一键安装web环境全攻略,怎么安装web service 在linux?
作者:本站作者1,怎么安装web service 在linux?
用的什么linux啊?centos还是debian,还是redhat?个系统有不同的安装方法,centos和redhat的话yum install apache or httpd,或者nginx,如果是debian的话,或者ubuntu用apt-get install xxxxxx,再用yum和apt-get之前还要先配置yum.repo的文件或者soucelist的服务器列表! yum makecache,apt-get update!
安装apache http server yum install httpd
asp.net 3.5 傻瓜书 (wiley for dummies系列) http://bbs.topsage.com/dispbbs.asp?boardid=123&id=181477 pro asp.net 3.5 in c# 2008 http://bbs.topsage.com/dispbbs.asp?boardid=123&id=166640 beginning asp.net 3.5 in vb 2008 从入门到精通 http://bbs.topsage.com/dispbbs.asp?boardid=123&id=166774 asp.net 3.5 unleashed(1900多页pdf文字版) http://bbs.topsage.com/dispbbs.asp?boardid=123&id=177711 professional iis 7 and asp.net integrated programming http://bbs.topsage.com/dispbbs.asp?boardid=123&id=176524 零基础学asp.net 2.0 动画教程(附随书光盘)下载 http://bbs.topsage.com/dispbbs.asp?boardid=123&id=181034 完全手册:asp.net 2.0 网络开发详解 教程+光盘下载 http://bbs.topsage.com/dispbbs.asp?boardid=123&id=181039 wrox asp.net 2.0 mvp hacks and tips http://bbs.topsage.com/dispbbs.asp?boardid=123&id=163467 professional asp.net.2.0 design http://bbs.topsage.com/dispbbs.asp?boardid=123&id=160236 professional web parts and custom controls with asp.net 2.0 http://bbs.topsage.com/dispbbs.asp?boardid=123&id=162787 asp.net 2.0入门经典 http://bbs.topsage.com/dispbbs.asp?boardid=123&id=146151 asp.net 2.0 技术内幕 微软技术丛书 清华大学出版 http://bbs.topsage.com/dispbbs_123_171293_1.html wrox asp.net 2.0 visual web developer 2005 express edition starter http://bbs.topsage.com/dispbbs.asp?boardid=123&id=145208 beginning asp.net 2.0 in c# 2005 from novice to professional http://bbs.topsage.com/dispbbs.asp?boardid=123&id=145396 wrox professional asp.net 2.0 http://bbs.topsage.com/dispbbs.asp?boardid=123&id=145202 wrox professional asp.net 2.0 xml http://bbs.topsage.com/dispbbs.asp?boardid=123&id=145197 wrox professional asp.net 2.0 security membership and role management http://bbs.topsage.com/dispbbs.asp?boardid=123&id=145198 wrox beginning asp.net 2.0 and databases http://bbs.topsage.com/dispbbs.asp?boardid=123&id=147078 pro asp.net 2.0 in vb 2005 http://b
tomcat ? apache ? yum install XXX 最简单!
2,linux怎样一键安装web环境php+apache+mysql
首先要先下载下来一键安装包执行命令 wget http://www.xxxx.com/sh-php.zip
下载完成后解压zip的文件包解压命令“uzip sh-php.zip”
加压完成以后,给解压的文件夹赋权限,在安装的时候需要权限,执行命令“chmod -R 777 filename/”最高的权限
cd fielname 进入文件夹,找到install.sh 执行sh install.sh这个命令进行安装。
执行命令以后会提示你安装什么版本的软件,根据自己的需要来选择您需要的软件
选择完成以后,输入y继续然后就会下载依赖的一些系统组件
下面就是等待下载完成,编译,make 安装make
编译安装完成以后,会到这个account.log的文件里面会有mysql的密码和ftp的密码,安装完成以后环境就配置完成了,就可以部署网站了
3,一键启动汽车正确启动和熄火步骤
一键启动汽车正确启动和熄火步骤如下: 一、启动 1、驾驶员坐到驾驶座后,按一下启动键,此时ACC灯亮,然后再按多一下,此时车辆进行自检。 2、踩下刹车,按下一键启动键进行点火启动。 3、松开脚刹,可以选择原地热车,时间可以根据环境而定。 4、再次踩下脚踩,挂D挡,松开手刹(电子手刹直接短按按钮即可)。 5、缓慢放开脚刹,加点油门,起步完成。 二、熄火 1、踩住刹车,将车平稳停住。 2、把档位从D档拉到N档,顺便拉紧手刹(电子手刹向上提即可)。 3、脚刹继续踩住,将档位从N挡拉到P档。 4、开脚刹,按下一键启动按键,电源关闭,熄火完成。 扩展资料 汽车一键启动是装置在智能汽车的一部分,是实现简约打火过程的一个按钮装置,同时也可以熄火。汽车一键启动可以在原车钥匙锁头的位置改装,也可以独立面板改装。 一键启动智能系统功能是:自动开锁。自动关锁。自动关窗。自动防盗。一键启动。一键熄火。行车前自动关锁。停车熄火时自动开锁。还有个开后箱功能。 参考资料:搜狗百科-汽车一键启动
1、起步的正确步骤:踩刹车-点火-挂D挡(或R挡)-松手刹-松脚刹-踩油门-起步。 2、停车的正确步骤:踩刹车-拉手刹-挂P挡-熄火。 汽车一键启动是装置在智能汽车的一部分,是实现简约打火过程的一个按钮装置,同时也可以熄火。汽车一键启动可以在原车钥匙锁头的位置改装,也可以独立面板改装。 现在很多汽车已经有这个智能设备来增加市场竞争力,无论是高低配置的车辆都可以安装,只是单独的一键启动意义不大,与PKE智能系统配合使用会显示智能改装的必要性。目前国内生产智能一键启动厂家已经在100家左右。 扩展资料 一键启动智能系统功能是:自动开锁。自动关锁。自动关窗。自动防盗。一键启动。一键熄火。行车前自动关锁。停车熄火时自动开锁。还有个开后箱功能。 1、门锁自动开启:在车主走近车辆大概3米,门锁会自动打开,解除防盗。 2、当车主离开车辆,门锁会自动上锁进入防盗状态。 3、当车主进入车辆,只需按启动按钮即可,免钥匙用车。 4、位置传感器失灵,或者打火匹配失败的话,您就需要打火开关钥匙孔了。一般低档次,或者低级的改动都不会有保留钥匙孔的。因为他们需要您回维修点的理由! 参考资料:搜狗百科-汽车一键启动
你好,汽车启动确实有一定的操作流程。很多人上车后直踩刹车按下按钮启动。事实上我们建议最好给汽车一定的自检时间。具体方法如下:
一键启动汽车启动步骤: 1、点火切换D挡 2、松开手刹制动。 一键启动汽车熄火步骤: 1、拉好手刹制动 2、推入P挡。 停车技巧指的是将车准确的停在某个位置的方法;主要技巧有:慢、看、找记号、勤练以及倒库更容易。车入位一般有两种情形,一种是路边停车,一种是停车场停车。在这两种情形下,停车技巧略有区别。 汽车由静止向运动的转变过程就是起步。也是学习车辆驾驶的第一个项目,更是人们在驾车过程中,虽不厌其烦,但必经的第一关。 扩展资料: 七个建议 有些驾驶员懒得把挡位推入倒挡,一看车位前后距离长,便右打方向盘切进线内,此种忽略车体宽度的错误判断,势必因车头右前轮即将触及路沿而向左修正。如此一来,不是把车屁股留在慢车道上,也得前后来回几趟才可能平直停妥,这里提供一些建议: 1、路边停车须先驶过停车位与前方车位内的车辆平行。 2、根据欲入车位大小,决定与前格车辆之间的并行距离。 3、目测估算完成后,一律先向右旋转方向盘一圈半以上,然后再开始倒车。 4、待车右前灯掠近前方车左尾灯时,便开始回正并向左旋转方向盘。 5、待到车体已头尾完整停进前后位车辆间,注意是否过度凸出,须反复修正。 6、若车位面积刚够容纳车子,则倒车切入的角度必须较大一些。 7、为防止前车左后保险杠尾端顶到自车右侧门,并排时的间隙应多预留些距离。 因无手制动或手制动有故障时,应采取无手制动起步方法。操作程序是左脚踩下离合器踏板,右手将变速杆挂入低速档;右脚脚跟踏下制动板,右脚前掌放在加速踏板上。起步时,右脚前掌踏下加速踏板,右脚脚跟慢慢放开刹车,左脚慢抬离合器。 起步后,应完全松开离合器踏板。关键点是右脚前掌与脚跟随的配合。这种坡道起步方法难度较大,不易掌握,一般配情况下不提倡使用,只作为一种应急方法。 参考资料:停车技巧-百度百科起步-百度百科
1、起步的正确步骤:踩刹车-点火-挂D挡(或R挡)-松手刹-松脚刹-踩油门-起步 2、停车的正确步骤:踩刹车-拉手刹-挂P挡-熄火停车时必须等车辆完全停稳后,才能把挡位挂到P挡,否则易伤变速箱。 3、不踩刹车按开关,先通电;待各种声音消失,大概10-20秒之后,踩刹车点火。 灭火:车停稳,拉到N档,踩好脚刹,松刹车;关窗,关空调,关音响等;踩刹车挂P档,然后按点火开关,灭火。 4、虽是一键启动,但各品牌的车不一定一样。普通用钥匙的熄火方式:踩刹车进N档 ;拉手刹;扭一档钥匙熄火,踩刹车进p档 ;关闭钥匙最后一档。 一銉启动:到第三步时,有些品牌按一下就熄火了,但汽车电是通着的,所以踩刹车进P档就行 汽车一键启动是装置在智能汽车的一部分,是实现简约打火过程的一个按钮装置,同时也可以熄火。汽车一键启动可以在原车钥匙锁头的位置改装,也可以独立面板改装。 现在很多汽车已经有这个智能设备来增加市场竞争力,无论是高低配置的车辆都可以安装,只是单独的一键启动意义不大,与PKE智能系统配合使用会显示智能改装的必要性。目前国内生产智能一键启动厂家已经在100家左右。 用中控打开车门。按一下一键启动键,仪表亮后,踩着刹车在按一下车就打着了。手动挡的车记着挂空挡。
4,如何用xshell搭建web环境(linux)
准备好连接linux服务器的工具,推荐用xshell和xftp。
xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。
下载地址:http://www.jb51.net/softs/56322.html
Xftp 是一个基于 MS windows 平台的功能强大的SFTP、FTP 文件传输软件。
下载地址:http://www.jb51.net/softs/81853.html
安装完毕后打开xshell
linux一键安装web环境全攻略
设置云服务器登录信息
设置服务器帐号密码
设置字符集编码
设置好了就点击ok保存
一切准备就绪,让我们连接看看云linux服务器的庐山真面目吧!
黑不隆冬的,啥都没有,这就是linux的shell啦。shell(壳)到底是什么东东呢?
* Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
linux作为服务器专用操作系统,主要就是默默的待在机房提供各项网络服务的,为了节省系统资源,像windows那样华丽丽的用户桌面就默认不加载了。当然现在越来越多的用户使用linux作为日常家庭办公用操作系统,所以就有了像gnome、kde这样超华丽的桌面。不过作为服务器使用还是推荐用命令行界面吧,毕竟省一点资源,网站打开可能会更快一点嘛!
打下面的命令去主目录(/home)看下
cd /home
现在用键盘敲入下面这行命令
cd /home && mkdir tmp && cd tmp
用xftp上传环境安装文件
回到shell界面,用ll命令看下情况
ll
是不是多了一个sh目录
接下来按照说明,分步骤敲入安装命令
chmod –R 777 sh
cd sh
./install.sh
出现了一个选择提示,进入web服务器版本的选择界面
这里您可以根据需要选择apache或者nginx服务器,这里是2个服务器的介绍
apache:http://baike.baidu.com/view/28283.htm
nginx:http://baike.baidu.com/view/926025.htm
引用
在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
这里我们选择nginx,输入n,回车
到这里,我们就正式进入环境安装环节了。你可以泡杯茶休息下。一般这个过程会持续半个小时的样子。
为了防止断掉和服务器的连接,可以新开一个shell窗口,将鼠标挪到窗口标签栏,右击,如下图所示:
可以看到,新开了一个窗口
输入top命令
可以看到一直在跳动的系统资源统计
好了。做完了这一些就让我们静静的等待吧!程序正在自动编译安装服务!
到这个界面说明安装已经结束了。
大家有疑问了。那我怎么登录ftp和mysql呢?
在命令行里输入:
cat account.log
看到了没?
ftp的用户名是:www
mysql的用户名是:root
密码就在屏幕上了!
好了。所有配置都已经完成了。是不是很简单!
----------------------------------------------------------------------
网站目录:/alidata/www
服务器软件目录:/alidata/server
Mysql 目录 /alidata/server/mysql
Php目录/alidata/server/php
选择了nginx 那么会有一个nginx 目录在
/alidata/server/nginx/
Nginx 配置文件在/alidata/server/nginx/conf
Nginx虚拟主机添加 你可以修改/alidata/server/nginx/conf/vhosts/phpwind.conf
选择了apache那么会有一个httpd 目录在
/alidata/server/httpd
apache 配置文件在/alidata/server/httpd/conf
apache虚拟主机添加 你可以修改/alidata/server/httpd/conf/vhosts/phpwind.conf
5,linux 怎么安装webstrom
WebStorm 7相信是js开发中的中的高富帅工具了,不知道站内的是不是都用windows,今天终于考完考试,终于有一段时间可以空下来了,然后今晚装了ubuntn系统的一个美化版本Elementary OS,系统很美,但是不知道如何截图,所以就不上图了。 1.开始准备,去甲骨文网站下载jdk。 因为我是64系统,所以下了X64的版本。 2.配置jdk的环境变量。 在命令行中sudo gedit /etc/profile #set java environment JAVA_HOME=/home/shidoudou/123/jdk1.7.0_45 export JRE_HOME=/home/shidoudou/123/jdk1.7.0_45/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 重启电脑在命令行中输入 java -version,察看安装完全不,如果别行。 sudo gedit /etc/environment PATH="home/shidoudou/123/jdk1.7.0_45/bin"CLASSPATH=";,;home/shidoudou/123/jdk1.7.0_45/lib"JAVA_HOME="home/shidoudou/123/jdk1.7.0_45" 注: Path中自带我没有粘贴上来。 如果gedit没有安装。sudo apt-get install gedit就好了。 3.下载webStrom,解压。 把webstrom加入环境变量 PATH="home/shidoudou/123/WebStorm-131.202/bin;home/shidoudou/123/jdk1.7.0_45/bin" 就变成这样了。 然后我在修改了idea.properties中几个参数, idea.config.path=${shidoudou.home}/.WebStorm/config idea.system.path=${shidoudou.home}/.WebStorm/system 但是我刚才注释掉了,结果导致不能自定义webstrom启动时缺省目录。 最后一步,启动软件 sh webstorm.sh 就跟windows界面一样了。 后面我贴处压缩包里面的安装向导文件,给有用的人参考下。 WebStorm INSTALLATION INSTRUCTIONS=============================================================================== Linux Installation Instructions ------------------------------------------------------------------------------ 1. Unpack the WebStorm distribution archive that you downloaded to where you wish to install the program. We will refer to this destination location as your {installation home} below. 2. Open a console and cd into "{installation home}/bin" and type: ./webstorm.sh to start the application. 3. [OPTIONAL] Add the "{installation home}/bin" to your PATH environmental variable so that you may start WebStorm from any directory. 4. [OPTIONAL] To adjust the value of JVM heap size open webstorm.vmoptions (webstorm64.vmoptions for 64-bit JDK), and modify the -Xms and -Xmx parameters. [OPTIONAL] Changing location of "config" and "system" directory ------------------------------------------------------------------------------ By default WebStorm stores all your settings under ~/.WebStorm7/config directory and stores data cache under ~/.WebStorm7/system directory. If you want to change these settings, 1. Open a console and cd into "{installation home}/bin" 2. Open file "idea.properties" in an editor. You should find strings like idea.system.path=~/.WebStorm/system and idea.config.path=~/.WebStorm/config and change them. 3. Note that we recommend to store data cache ("system" directory) at a disk with at least 1G bytes free space Enjoy! -WebStorm Development Team
不明白啊 = =!
6,他是地球上第一个合法的“半机械人”,头上装天线用来“听”颜色_...
编者按:本文来自“刺猬公社”(ID:ciweigongshe),作者:铁林;36氪经授权转载。
两天前,腾讯优图实验室在上海开了一场发布会,但吸引全场注意力最多的并不是东道主们,比如腾讯高级执行副总裁汤道生或者腾讯优图实验室总经理贾佳亚,而是来自英国北爱尔兰地区的一个80后——Neil Harbission。
这是一个头上“长着”奇怪“天线”的人,金色头发上方,黑色的特殊装置呈弧状从后脑勺垂到额头上方,差点以为他是动漫《银魂》中HATA王子的cosplay爱好者,据他介绍,这是一款特殊的智能设备eyeborg,以帮助生来就无法识别色彩的他,在声音的帮助下,感受色彩。
在没有安装eyeborg以前,Neil被迫面对很多常人无法感受的障碍。比如同样都是竖条纹的法国国旗和意大利国旗有什么区别,靠颜色区分冷水和热水的图标有什么不同,穿蓝色衣服的到底是哪位?
一直到2004年,Neil 20岁,人工智能已经有了一定程度的进步,有条件帮助Neil去区分颜色,当时的他面对两个选择,一种是创建工具,能够告诉他不同颜色的名称;另一种是创建一套系统,让他感知颜色。
前者的概念,更传统,就像是轮椅或者拐杖,是一个脱离于人体但可以发挥作用的器械。后者则完全不同,那意味着,Neil想把那套系统植入到自己的身体中,变成耳朵鼻子一样的人体器官。
Neil选择了第二种,“每一个颜色都有光的频谱,都有不同的振动,这种振动就相当于某一种特定的音符,这个系统就能让我听到代表不同颜色的频谱,通过它的声音或者是音符,我就能听到不同的颜色。”
他想好了一切,准备找家医院完成手术,所有医生都对他表示抱歉,并且拒绝了他的手术请求。列举的理由包括:它不是之前就存在的器官,如果植入手臂或者是腿是合伦理的,但是植入颅骨是不合伦理的;第二这个特殊感官不是事先存在的,通过天线和头骨创造新的感官也是不合伦理的事情;第三,医生们非常担心,如果带着这样一个“天线”出院,医院的形象会受损。“于是我就到隐匿的地方找了一个匿名的医生做了这样的事。”
手术后大约两个月的时间,植入的eyeborg和Neil的头骨融为一体,也就是说,这个外来的电子设备成为了他身体的一部分,听声音则成为了真正的第六感。
随后麻烦也来了,英国政府以不能携带电子设备为由,拒绝为Neil续发护照。“我说这不是电子设备,这是我身体的一部分,后来他们还是同意了我的说法,我成为了英国护照上,第一个身上出现电子设备的人。”
Neil在决定植入eyeborg那天,似乎就已经准备好要开启一系列全新的挑战,“我还找瑞典政府,因为设备材料是瑞典提供的,我说我就是瑞典人,我应该获得瑞典国籍,我有来自于瑞典的肢体部分。未来我们人与机器融合在一起,就会慢慢出现新的法律法规。”
这也标志着,英国政府最终还是肯定了他半机械人(cyborg)的身份,媒体多称他为全球首位半机械人或者全球首位半机械人艺术家。(cyborg :机械化有机体,以无机物所构成的机器,作为有机体身体的一部分,思考动作均由有机体控制。——维基百科)
半机械人的概念很广,Neil只是一个“视觉系”半机械人。业内认为,计算机视觉是人工智能最重要的分支之一,腾讯这次决定将优图实验室升级为腾讯计算机视觉研发中心,也体现出对这一领域的重视。
人类从来就没有停止过对人工智能的想象。1984年上映的《终结者》,讲述的就是一个半机械人从未来回到过去,并且去刺杀反抗机器人统治的莎拉·康纳。
电影上映34年后,这个世界当然还没有被机器人统治。《终结者》这类影片背后关于人工智能的想象以另一种形式变成现实,BAT们发力人工智能技术的研究,并且纷纷成立实验室,为科学家们提供最佳的环境,让成熟的技术迅速与产品相连接。
计算机视觉技术听着有距离感,但实际上可以落地为很多日常的产品。比如在医疗领域可用于医疗图像识别,零售领域可以应用于人脸识别支付,更娱乐的还有颜值打分、颜值测试、皮肤测试、一键卸妆功能等等。
“去年开始,我们加大投入进入更多的垂直领域,包括交通、运输、广告、零售、教育和信息流。这里面涉及的主要技术,包括图像审核、理解、分割和视频的各种操作以及人脸、身体的重建娱乐化的操作,这些是新的方向。今年讨论的时候我们立项两个新的探索,包括医疗和自动驾驶,以及自动道路上的感知系统的建立。”腾讯优图实验室总经理贾佳亚在现场用一张图显示,计算机视觉技术正在进入更多的细分领域。
这种技术到产品的应用性在互联网公司体现得尤为明显,腾讯优图实验室总经理吴运声分享时提到,“从我们实验室建立的开始就立足于要做和应用紧密相关的研究,并且要去探索如何将基础研究的能力落地到我们的产品当中,去支撑产品的服务,为我们的用户带来的价值。”
稍加观察就会发现,BAT三家的人工智能实验室都有类似的特点,研究是一方面,与产品的结合又是一个方面。
阿里巴巴的产品风格导向购物,比如iDST(数据科学技术研究院)下的视觉团队目前落地产品就是拍立淘,最终服务于淘宝购物。
百度有AI Lab,现在被综艺节目们挂出来的“小度智能音箱”就是落地产品之一。
腾讯当然就是社交,与各类互联网产品相结合,现在流行的短视频实时瘦腿、瘦脸,背后的技术支撑就来自于优图实验室这样的计算机视觉技术部门。
“AI+社交娱乐”是腾讯优图的一个重要方向。贾佳亚介绍,“优图是在3D人脸、人脸分析和人脸编辑方面,比如说我们改变人的外貌、改变人的皱纹都有新的方法完成。但是今年我们新做的技术,包括人体的分割达到了96%的准确率。人体重建方面可以重建3D人脸,这对于游戏行业的应用非常巨大。”
“算法是一个层面,但是依托于天天P图团队,微视团队,我们将这些技术转化为最后的效果,比如说可以调节脸部所有的特征,可以轻松改变容貌的样子,再往后走可以完成瘦脸、瘦身,改变腰部曲线,甚至可以形成大长腿。这是在今年,我们是作为所有全行业里面能够上线的作为人体自带的操作的算法实现上,我们是第一家上了这样一个技术的应用。”
技术通过产品,改变了人们的生活方式,也在影响人们看待世界的方式。前几年大规模起来的兴趣推荐,让信息更便捷的抵达用户手中,反向来看,也会被吐槽这项技术可能带来“信息茧房”的问题。
Neil正在主动去挑战这些问题,他认为,“现在很多的技术其实都可以作为好的用途,也可以用为坏的用途。比如说刀子可以用来切面包,当然也可以杀人。手机可以用来通讯,也可以用来引爆炸弹。这些新的感官新的器官,有可能用于做坏事,但这不是新的问题,而是存在人之间的老问题。新技术的问题或者风险,不在于技术,而在于人的脑子。”
“我们做这个天线的目的,主要不是为了解决问题,而是为了更好地探索和发现这个世界,满足我们的好奇心。我们通过它能够看到很多已经存在,但是人体看不到的,或者人感知不到的这些颜色,从而能够探索到更丰富的世界。如果你能够感知紫外线、红外线等等,那么这样一个全新的世界能够被你所发现。”
想象力是一个特别重要的东西。如果只看到计算机视觉技术帮助解决了刷脸支付问题或者视频瘦身功能,会少了对人工智能的浪漫想象。从商业角度来看,人工智能会成为未来诸多行业的辅助,从人类的角度来看,人工智能或许也是人类探索未知的一次跃进。
7,GameShell:一群工程师的复古游戏梦_
一个普通玩家想玩老游戏,会选择模拟器;一群工程师想玩老游戏,会做出一台掌机。
编辑丨陈静
在这个被越来越华丽的3A大作和抓住人们碎片化时间的手机游戏瓜分,甚至独立游戏的开发成本也水涨船高的年代,还有多少人愿意拿起“简陋”的掌机,在320×240的小屏幕上玩像素复古游戏?
Clockwork团队的几位成员或许可以回答这个问题:在他们为自己设计的掌机GameShell开展Kickstarter众筹时,来自全球60多个国家和地区的人们用超过29万美元的支持证明,复古掌机与复古游戏仍然有着独特的魅力。
Hal是Clockwork团队的一员。据他介绍,Clockwork由一群复古游戏爱好者组成,成员主要来自国内,目前已有9人,其中包括2名兼职。他们来自互联网、通讯、手机、工业设计和广告行业,没有一个人有游戏行业的职业背景。
“这意味着我们的想法获得了某种意义的共鸣,这是最值得怀念的时刻。”Hal说。当看到那些来自黑山、塞尔维亚,甚至是英属泽西岛的支持者时,他大吃了一惊:“可能是我们地理常识有限,有些国家和地区只听过名字,完全不清楚它们具体在哪里。”
Hal试图改变外界的刻板印象:“我们都是Geek和游戏深度玩家,如果和我们聊游戏,可以轻易颠覆工程师沉默寡言的传统形象。”实际上,和他聊天,你还是可以轻易觉察出一些理工科思维的特征——直接,简洁,有一答一,话题总是不知不觉转去技术层面,喜欢谈已经完成了的工作,不热衷“画饼”。
“我们自身的经验决定了我们最擅长做的东西。”Hal说,“这就是GameShell。”
GameShell目前有3种颜色,后盖则为全透明
丨 需要DIY的掌机
假如你收到一个GameShell掌机,会发现它并不是那种充好电、插上卡带就可以直接开玩的机器,你需要做的第一件事,是亲手把它组装起来。
组装过程不需要使用复杂的工具,也不用阅读复杂的指南。GameShell的说明书把文字缩减到了最低的限度,其余部分完全用图片展示,你只需要跟着示意图一步一步组装好每一个部件,再把它们放进外壳即可——这个过程很像搭起一个乐高,或是拼装一台钢普拉,还可能会让人联想起去年火爆一时的Labo。
GameShell的零件,你需要自己把他们组装起来
说明书上文字极少,组装步骤都是图片,十分直观
“DIY本身是乐趣的一部分。”模块化、易于装配、像模型一样需要使用者亲手组装,是GameShell在最开始就确定的方向——鉴于开发团队成员们都是乐高、钢普拉和田宫四驱车的爱好者,这个设计不难理解。不过这样的设计也让他们“付出了更多的代价”。
Hal说,他们的想法始于2016年年底,真正开始动手则是在2017年初,从构思到制作成型差不多花了1年时间,“每一步都充满了挑战”。为了实现构想中的功能,他们的原型设计经历了数次迭代,每一次失误或许都意味着海量的Debug,以及昂贵而漫长的重新打样过程。不过最终,他们还是解决了绝大部分的问题。“硬件一旦变得可靠,就会一直很可靠。”Hal说,“里面没有任何的玄学。”
第一次打样的结果,Hal回忆,“打样阶段的PCB良品率只有50%”
相比而言,GameShell的外观设计更多体现出的是成员们对于掌机与掌机游戏的理解。“大家心目中都有一些经典机型的原型,我们试图抽象出历史上最有标志性的掌机特征。”Hal说。在完成GameShell最终的设计之前,他们的设计至少修改了500次。
并不是所有玩家都接受这样的设计。除了那些本来就对DIY不感兴趣的人之外,GameShell自众筹开始就面临不少质疑。在许多GBA游戏爱好者——他们也是此类掌机模拟器和套件最有力的支持者之一——制作的模拟器列表上,GameShell的排名不算高。
“(GameShell)会把一些用户拦在外面,但也会吸引另一群用户。”Hal对他们的目标群体有着明确的定位。他们在设计时考虑到组装时的完整性和准确性,对硬件的生产水平要求很高,同时也不着痕迹地定下了使用的门槛。除了精确组合之外,每一个独立包装的模块还可以单独使用。“我们相信用户比我们更聪明,现在看来事实也如此。”Hal说,“他们在还没拿到机器的时候就已经在研究我们发布的资料,包括原理图、3D打印文件说明书和OS Image。”
Hal对目标用户的预言十分准确。GameShell上市后,不少评测给予它“高质量”“制作精巧”的评价。很快有人把它内部的零件拆散重新组合,结合3D打印制作出了属于自己的横版游戏机。
GameShell的用户有很大一部分是DIY爱好者,3D打印外壳对于他们算是简单操作
这样的结果在Hal的意料之中,也是他们十分乐见的。事实上,为团队取名“Clockwork”(齿轮装置)就代表了他们对于这部掌机的一层期待:不同的模块象征齿轮,齿轮可以单独发挥作用,组合起来则是“Clockwork”,可以实现更加复杂的功能,在不同人的手中成为不同的工具。更重要的是,世界上第一台公认的计算机“差分机”也是由上千个齿轮构造的装置,因此这个词语在Hal他们心目中有一个更深层次的隐喻——计算机编程。
丨 是掌机,又不只是掌机
“我们定义了3种用户。”Hal说。在这3种人的眼中,GameShell有着不同的面貌。
“最早设定的用户群是树莓派和开发板的用户群,简单说就是喜欢DIY的Geek,但是树莓派的学习曲线过于陡峭,我们想让它变得有趣,所以就打算做成游戏机。亲手DIY一台掌机,应该也是不少Geek共同的梦想吧。
“但全栈工程师终究是凤毛麟角,而这些人通常也是视频游戏爱好者,与普通的游戏玩家也有交集,因此我们的第二类目标就是复古游戏的玩家。
“第三类其实是学生,我们希望通过开放和透明的产品,让初次接触编程的人们获得足够的乐趣和自由度。”
GameShell的确完成了他们的目标。作为“复古游戏模拟器”,它可以流畅运行Atari、GB、GBA、NES(FC)、SNES(SFC)、PS等主机上的大部分游戏。也就是说,它几乎可以满足从70年代到90年代初期复古游戏爱好者的全部需求。由于采取了Linux系统(这也是开发团队的共同爱好),GameShell在软件方面与任何一个开源项目一样,人们可以极为自由地使用它。“不少人就直接通过GitHub参与进来了,”Hal介绍说,“有的人在拿到机器的第一时间就提交了新功能。”
《Lunar Lander》是一款1979年的老街机游戏,有玩家把它搬到了GameShell上
与“掌机”相比,GameShell更加强劲的优势在于开发。早在众筹时期,Clockwork团队就把开发功能作为重要的组成部分,逐渐发展壮大的独立游戏群体是他们重点关注的目标。如今,GameShell已经支持包括PICO-8、LOVE2D、PyGame、网页链接、Libretro在内的多个游戏引擎,独立游戏的开发者和爱好者——尤其是热爱像素游戏的那部分人——正在陆续将他们的作品和他们喜欢的作品带到这台机器上。
PICO-8引擎相信很多人都不陌生,大名鼎鼎的《蔚蓝》(Celeste)原型设计正是出自于此
Hal没有谈到太过遥远的“未来前景”,但他们已经发起了一个基于GameShell的Game Jam,而且计划在每个季度都举办一次。第一届的主题是“太空”,设立了前3名和最佳故事、最佳音乐、最佳技术等6个奖项,获奖者由用户投票产生。比起比赛,Hal期待的是“展示他们独特的创造力”,当然还有更重要的一点——“我们很期待有全新的独立游戏玩。”
基于GameShell的Game Jam已在进行
从这个意义上说,GameShell已经有了“平台”的意味。而在Hal眼里,它仅仅是一个雏形。让这个“雏形”赶在今年第一季度上线,除了自信之外,还有更多的考虑——“太多有才华的独立游戏制作者受制于超大平台的马太效应,他们在寻找可以展示想法的新平台。”Hal表示,独立制作者需要考虑的一个重要问题就是把游戏推荐给玩家,与玩家交流,在这样的情况下,一个平台是不可或缺的。
除了玩游戏和开发游戏,GameShell还具备音乐功能。一个普通的音乐爱好者可以把它当做播放器,与手机音乐平台相比,这又是个十分复古的东西。而到了专业人士手里,他们能做到的就更多。
“我们的用户中还有一个很小,但确实存在的群体,他们是音乐制作人、DJ和专业歌手,他们对所有可以发声的电子设备有兴趣。”Hal说,他对这方面了解不多,但从社交平台的反馈来看,已经有法国歌手、俄罗斯DJ和日本艺术家开始用GameShell玩起了音乐。
一位DJ晒出他的设备照片,GameShell也在其中
玩游戏、开发游戏、创作音乐……GameShell看上去已经十分强大,然而Hal的构想却未止于此。作为工程师,他们的机器必须具备一项功能——学习。
丨 游戏制作入门,不止一种方法
1976年,高中生岩田聪靠着自己打工赚的钱和家里的赞助买了一台惠普HP-65可编程计算器,并且用它做出了人生中第一个游戏。游戏并不华丽,却在他的同学中广受欢迎,受到热情鼓励的岩田聪信心大增,走上游戏制作之路,最终成为世界知名的游戏制作人。
作为资深玩家,Hal对岩田聪与HP-65的故事如数家珍。尽管岩田聪的经历可能难以复制,但帮助那些想要开发游戏的人们突破技术的限制,让有志从事编程工作的学生无障碍地学习,是Hal的另一项重大目标。
GameShell自身的社区和SNS已经可以解决一部分教学问题:很多用户自己就是职业程序员、教师和资深爱好者,他们乐于在论坛上发布教程和帮人解惑,一些计算机系教授甚至直接把做好的教案发出来。这为那些有想法但技术一般的制作者提供了一定的帮助。
2017年12月,GameShell的众筹金额超过25万美元时,他们公开发布了一个教育支持计划,承诺捐赠100台GameShell给STEM(Science、Technology、Engineering、Mathematics)相关学校和机构。GameShell完成后,他们的论坛上很快出现了关于教育的讨论帖子,一些小学、中学教师尝试用PICO-8、TIC-80等引擎让学生们自己制作游戏项目。
GameShell上市后不久,就有老师讨论如何用它帮助学生学习编程
一名高中老师表示,他曾在大学时参与过游戏教育课程,人们可以通过游戏来认识一些现实问题,如《魔兽世界》之于性别与种族,《回不去的家》之于LGBT权利,《这是我的战争》之于战争与移民等等。等到他自己当了老师,也愿意引导学生用游戏作为自我表达的媒介——如今,许多年轻人接触游戏与编程的年龄都很早,正如人们会用诗歌、音乐、视频来表达自我一样,他们会用游戏来抒发感情,表达思想,这在未来或许会成为常态。
截至目前,Hal已经为10多所学校提供了GameShell。令他吃惊的是,不少老师会把机器拿给8岁至12岁的青少年,让他们很早就接触到游戏与游戏制作,以及相关的游戏研究、媒体研究内容,范围很广。同时,他也在等待这些老师反馈的真实教学案例,“我们最想看到的结果就是学习编程的青少年能够开心”。
父母为孩子购买的情况也很常见
谈到Clockwork在国内的发展,Hal显得有些保守。“国内复古游戏终究是一个小众群体,这和上世纪八九十年代的历史背景有关。”Hal认为,相当一部分中国游戏玩家是跳过主机、掌机乃至单机游戏的历史,直接接触网游和手游的,这导致GameShell在国内的生存空间不会太大。不过,他仍然看好GameShell可以成为树莓派、Arduino等编程教育的补充,而那些逐渐从边缘走到聚光灯下的独立游戏制作人也能将它作为载体,找到一些新的乐趣。
丨 余话
提起“复古”,就不能不谈到“未来”。
如今,游戏大厂们追求着越来越庞大的体量和越来越华丽的视觉效果,手机游戏占据了人们越来越多的时间,独立游戏也不乏追求精致的产品,制作人效应日益上升。在这样的环境里,一群热爱街机、PS、《洞窟物语》与仙侠类游戏的工程师,为Atari、GBA、NES爱好者们制作了一台掌机,看上去确实有点儿格格不入。
“就像黑胶、卡带,老爷车和古董一样,复古是人性中的一种必然。”Hal说。复古虽然已经成为小众爱好,但经典之作往往拥有超越时间的属性。“巴赫的音乐是400多年前创作的,但它们超越了乐器的载体,一直被人演奏和聆听,甚至可以飞向太阳系之外。”
“我们相信视频游戏也一样。”
原文链接:GameShell:一群工程师的复古游戏梦
关注触乐专栏,阅读更多优质游戏文章与深度报道。
8,外媒评 2018 年Top 25 年度最佳新款 App_
编者按:Fastcompany评选出了2018年25个年度最佳新款APP 。本文译自Fastcompany原标题为" The 25 best new apps of 2018"的文章。
2018年出现了很多想法新奇的应用程序,让你觉得自己手机里总是缺一个APP。在这些APP中,有一些是今年首次出现的,还有一些是已有应用程序的重大升级。无论以哪种方式出现,以下这些APP的共同特点就是都会帮助你更好地使用手机、平板或电脑。
提高效率类
1. 与时俱进的Gmail
彻彻底底的产品重新设计总是出现两极分化的结果,但是新的Gmail,进行了五年来的第一次大改,上线的大量新功能经受住了用户的考验。改版后,你只需要在收件箱里点一下,就可以管理电子邮件和查看附件,还有一个通用的Snooze延迟处理功能,可以在桌面和移动设备上使用。您还可以在“保密模式”下发送自毁或密码保护的电子邮件,并可以让谷歌用智能回复完成电子邮件的编写工作。 (支持:iOS、Android、web)
2. 解锁iOS潜力
在获得iPhone/iPad自动化应用工作流的18个月后,苹果推出了一个增强版的“快捷方式”,它可以让你建立多步骤的程序,以更快地完成工作。你可以尝试激活一些现成的快捷方式,比如YouTube视频下载器和即时拼贴创建器,自己钻研更多应用程序会发现新惊喜。(支持:iOS)
3. 做计划的小能手
如果你梦想有一个应用程序可以处理你所有的待办事项列表、计划和笔记,那么Notion就正是你所需要的的那个APP。Notion最方便的技巧是它可以让您以不同的方式查看相同的数据。您可以创建一个带有截止日期的检查表,然后使用calendar视图查看即将到来的所有截止日期。或者在Markdown中写下详细的项目记录,然后将它们放入看板中,以跟踪项目进度。Notion于2016年首次发布,但今年进行了重大改进,而且可以支持Android系统了。它对于个人使用者是免费的,并且为个人使用者和团队使用者提供了多个订阅层级。(支持:iOS、Android、desktop)
4. 轻轻松松做会议记录
下次你需要做会议记录时,不妨试试Otter。该应用程序可以使用语音识别自动创建文本,甚至可以识别多个发言者并选择出关键字。文本内容可以储存在网上,这样在你想用的时候就可以轻松获得。Otter每个月最多可以免费录制10小时的语音,付费用户需要每月10美元或每年80美元。(iOS、Android、web)
保护隐私类
5. 浏览器先锋
DuckDuckGo是出了名的反跟踪搜索引擎,而它的移动网络浏览器和桌面浏览器扩展则更有用。对于您访问的每个网站,DuckDuckGo都会根据该网站的跟踪器使用、加密实践和隐私策略对网站进行等级划分。到后来,DuckDuckGo甚至会指名道姓地与那些追踪用户信息的搜索引擎公开叫板。当然,在默认情况下,它还会阻止跟踪器,你只需轻敲几下就能抹去浏览历史记录。你不能将谷歌设置为默认搜索引擎,但这是故意设计成这样的。(iOS, Android, Chrome, Firefox)
6. 轻松反监视
由于美国国会的一些做法,互联网用户的在线活动现在成了互联网供应商追踪和盈利的公平游戏。对此作出反击的一种方法是使用Cloudflare 1.1.1.1,这是一款免费应用程序,你可以使用Cloudflare加密的DNS解析器进行设置。DNS有点像互联网的电话簿,将常用网站地址(如google.com)与这些网站实际使用的数字IP地址连接起来。Cloudflare的DNS服务阻止互联网服务提供商收集你的网络活动信息,而这个免费应用程序可以让你免去设置这些信息的麻烦。(iOS、Android)
7. 密码保护
虽然目前也有一些像样的密码管理器能帮助你改掉不好的登录习惯(比如在所有地方都使用相同的密码),但1Password比这些应用程序更为先进一些。该应用程序的新功能Watchtower可以监控被盗密码,找出安全级别最弱和最常重复使用的密码,甚至列出可以激活双因素身份验证的网站。Watchtower只是1Password 7的一部分,1Password 7采用全新的设计、具有丰富的笔记功能以及Mac应用程序集成功能,并且能将加密密钥更安全地存储在带有Touch ID的Mac电脑的飞地中。(Mac, Windows, Linux, iOS, Android, Chrome OS)
可达性优化类
8. 适合无车人士的出行向导
谷歌地图非常适合在单一的出行模式下为你指引方向,但是如果您想要用多种交通方式混合匹配出行呢?Cowlines是专门为那些没有自己的汽车的人设计的,它涵盖了公共交通、拼车、自行车和步行,混合匹配以便找到最快、最便宜的路线。这款应用程序目前在62个北美城市有售。(iOS)
[照片:由Cowlines提供]
9. 音乐DNA测试
六年来,WhoSampled让乐迷们可以追踪音乐样本,将歌曲追溯到原唱。今年的一个重大应用程序更新是增加了类似音乐雷达的音乐识别功能,这样你在酒吧的时候就可以获取音乐样本数据。这款应用在安卓系统上是免费的,在iOS系统上是4美元,而识别功能每年的费用是10美元。(iOS、Android)
10. 体育赛事追踪
虽然市面上有很多流媒体视频 (例如,Reelgood去年进入了我们的榜单),但B/R直播搜索是专门针对体育赛事的。对于所有即将进行的赛事,你都可以通过电视、流媒体服务、广播甚至附近的酒吧看到它。它甚至覆盖了ESPN+等小众流媒体服务,偶尔还会免费提供一些体育赛事。(iOS、Android)
常用工具类
11. 虚拟卷尺
虽然虚拟卷尺的精度比不上真正的尺子,但苹果的这款测量应用程序在必要的时候也可以用来测量盒子、家具或者其他平面。只要用你的iPhone或iPad摄像头找到一个物体,在指向物体边缘时按下+键,就可以让苹果的增强现实技术(augmented reality tech)处理测量结果。(iOS)
12. 从笔记本电脑上发短信
允许跨设备消息传递是Android Messages for the Web的最大特点。在电脑或平板电脑上打开Messages .android.com,然后扫描Android短信应用程序中的二维码(可以在菜单按钮下面的“网络短信”下找到),你就可以在真正的键盘上发送文本,而无需安装任何第三方应用程序。(Web)
13. 快速传输照片
虽然这仍然是一个“实验性”的应用程序,但是微软的照片伴侣应用程序(Microsoft’s Photos Companionapp)确实已经成为一种通过Wi-Fi向电脑发送照片的快捷而简单的方法。只要按照“我如何使用这个应用程序”下面的说明,然后使用Windows 10 Photos应用程序中的Import按钮,就可以从相机胶卷上获取图片。这是一种比等待云存储服务更好完成同步的方法。(iOS、Android)
激发创意类
14. 移动编辑工作室
谁说iPad不能取代笔记本电脑?至少对于视频编辑来说,LumaFusion做到了。这款应用程序提供了多轨支持、数十种效果,以及诸如锚定和滑动编辑等专业工具。今年的两项重大更新带来了更多的功能,包括网络存储驱动器支持和一个海量的免费媒体库。对于一个iOS应用程序来说,20美元的要价算是比较高了,但这比要价数百美元的精剪便宜多了。(iOS)
15. 世界需要更多的播客
在短音频尝试失败后,Anchor今年把目标转向了一个简单的播客制作应用程序。你可以把手机放到耳边尽心录音,并邀请其他人远程参与。你录制的片段可以随意播放,编辑单独的音频文件,并将完成的作品发布到主播客平台上。你甚至可以选择赞助并收取费用——假设有人想听你说什么。(iOS、Android)
16. 灵活的艺术
对于使用iPad进行创作的艺术家来说,Procreate一直是必不可少的创作工具。今年,它的开发者对iPhone的版本Procreate 进行了重大改版,即Procreate Pocket。2.0版本界面是全新的,可以将菜单栏最小化,而且它与iPad版本的136个笔刷和相同的绘图引擎的功能接近。它还可以导出你创作作品的延时视频,而且由于iphone不支持苹果的画笔,所以它使用3D Touch进行压敏素描。(iOS)
17. 一个有深度的相机
苹果内置的iOS摄像功能已经非常方便了,但是当你想要调整更精确的参数时,Obscura 2 就显示出了强大之处。你只需轻轻一点就能实现手动对焦和曝光控制,滚动菜单即可以快速切换图像格式、调整白平衡和访问调平工具等选项。几个快捷键也是可以定制化的,这款应用有19个滤镜。如此强大,5美元的要价似乎也并不高。(iOS)
放松娱乐类
18. 改变游戏
《堡垒之夜》(Fortnite)才推出9个月就已经非常火爆了。它不仅是一款让人上瘾的游戏,而且是一种社交体验,总是伴随着新功能和特殊事件的发展。开发者Epic Games将原本流行的PC和主机游戏变成了一种全球现象。与此同时,Epic还使用《堡垒之夜》(Fortnite)来挑战行业规范:它直接发布Android版本,从而拒绝谷歌的收入削减;它促使索尼接受跨平台游戏;它现在正试图通过一个新的电脑游戏商店来挑战Valve的Steam。(iOS、Android、desktop)
19. 一起刷抖音
看腻了Facebook和Twitter?那么来试一试TikTokis(抖音短视频国际版)吧,这是一种非常好的放松方式,里面的短片幽默搞笑,趣味无穷。最重要的是,你不用登录就可以观看。TikTok技术上从2016年起就存在了,但今年它的母公司ByteDance收购了一款名为Musical.ly的类似应用,TikTok才开始迅速发展。Tiktok在中国本土市场被称为“抖音”,截至今年7月,每月活跃用户超过5亿。(iOS、Android)
20. 玩单人纸牌的一种好方法
这款应用并不完全是新的,但是用户可以在现代的Windows、Mac或Linux计算机上安装自包含的Windows 95版本。这让你可以在记事本上写东西,安装AOL的免费试用版,或者玩微软之前的《纸牌游戏》(Solitaire)。这是今年最受欢迎的怀旧应用。(desktop)
21. 播客radio-style
如果你没赶上播客热潮,想赶上潮流可能会很困难,不知从何处开始。Scout FM可以为您做筛选的工作,它可以根据您在安装过程中标记的感兴趣的内容自动选择podcast。开始播放的时候,你可以把它标记为你最喜欢的,收藏起来以便以后听,或者浏览其他建议。你也可以使用Scout的Alexa技能来弥补不足。(iOS, Android)
自我提升类
22. 助你成为篮球高手
HomeCourt是苹果ARKit框架的一个更简洁的应用,它是一个虚拟篮球教练,可以通过iPhone或iPad的摄像头观看你投篮。除了检测成功和失败之外,这款应用还会通过分析释放角度和跳跃高度等数据,为你提供改进建议。HomeCourt是免费的,但是如果每月超过300次的拍摄,你就需要订阅(每月5美元起)。(iOS)
23. 学习编程是一种快乐
虽然有很多应用程序可以教你编程,但Grasshopper把教程设置成了一系列需要解决的谜题,这让它比一般的课程更有趣。用户可以从一些编码基础开始,也可以直接进入JavaScript,这是构建交互式网站最流行的方法之一。这款应用程序是谷歌成立两年的内部孵化器Area 120产生的项目之一。(iOS、Android)
24. 软件帮你打造友谊的巨轮
关系管理软件在商业中是必不可少的,但是Ryze把这个想法应用到个人生活中。对于任何人,你都可以设置定期提醒来保持联系,并附上笔记来帮助你记住和他/她以往的对话。Ryze甚至借鉴了Snapchat的streaks功能来记录你和朋友保持联系的次数。今年已经有几个应用程序推出了这种功能,但Ryze是做的最好的。(iOS)
25. 理财达人必备软件
财务管理应用软件Qapital今年成为一项订阅服务,也从今年开始变得更像一家银行和联邦存款保险公司(FDIC)等类似机构。客户可以从该应用中获得一张借记卡,留出一部分工资用于开支,甚至可以将部分积蓄进行股票投资组合。套餐价格从每月3美元到每月12美元不等,具体取决于你想要的功能。这可能是一个很低的要价,毕竟Qapital声称每年可以为用户节省1500美元。(iOS、Android)
编译组出品。译者:刘麦麦 Jane,编辑:郝鹏程。
9,传奇工程师卡马克入坑 AI:徒手一周实现反向传播和 CNN_
有这么一个大牛程序员,他在几乎没有接触过神经网络的情况下,仅用了一周时间,在几乎是最基础且受限的编程环境下,从零开始徒手撸码,实现了反向传播和 CNN。今年,这位程序员已经 48 岁了,他叫:约翰 · 卡马克。
约翰 · 卡马克是何方神圣?
谁是约翰 · 卡马克?
他是一位集传奇工程师、大神、疯狂程序员、黑客之神、第一人称射击游戏之父、业界活化石、一代玄学码神所有称号为一身的老牌程序员,一举一动都牵动人心。
约翰 ·D· 卡马克二世(John D. Carmack II,出生于 1970 年 8 月 20 日),是美国的电玩游戏程序员、id Software 的创始人之一,id 是一家专门开发电子游戏、电视游戏的公司,成立于 1991 年。
至于 id Software 这家公司都制作过什么游戏呢?说几个你应该就知道了:《CS(反恐精英)》、《半条命》、《毁灭战士》都出自这家公司。
怎么样,对这位卡马克先生多少有些了解了吧?
当然,对技术大牛的一切不提技术水平的吹捧都是耍流氓!——沃茨 · 基硕德,那我们就来说一说这位卡马克大神的技术水平。
卡马克最让人咋舌的冒险就是涉足了第一人称射击游戏领域。他的编程能力得以毫无保留地展现,随后的《德军总部 3D》(Wolfenstein 3D)、《毁灭战士》(Doom)和《雷神之锤》(Quake)就是最好的佐证。这些游戏和它们的后续版本都获取了巨大的成功。
卡马克喜欢在电脑图像领域尝试新的技术,比如他在 Doom 上第一次使用了二叉树分区技术,表面缓存技术则在 Quake 中第一次出现。还有就是后来在 Doom3 里面使用的 “卡马克反转”(即 shadow volume 的 z-fail 方法。事实上并不是卡马克首先创新了这个技术,他在后来独立研究出来)。
卡马克创造的游戏引擎被用来制作其他的第一人称射击游戏,比如《半条命》(Half-life)和《荣誉勋章》(Medal of Honor)。
2013 年的 QuakeCon,卡马克表示对函数式编程很感兴趣。他在 Twitter 上表示了 “已经学习 Haskell 一年”,“学习 SICP 和尝试使用 Scheme 中”,并且表示正在用 Haskell 重写德军总部。与此同时,卡马克建议其他游戏开发者尝试函数式编程。
除了游戏领域,卡马克还是个火箭爱好者,并成立了名为犰狳宇航(Armadillo Aerospace)的私人研发团队。
总结起来,这位卡马克大神就是:特别能创造、特别能折腾还特别聪明。在 AI 大火的今天,他又把自己的 “折腾精神” 发挥得淋漓尽致。
大神的一周编程实践:徒手实现反向传播与 CNN
几天之前,卡马克大神在 Facebook 上发表了一篇文章,总结了一下自己如何徒手实现反向传播与 CNN 的事情。以下内容编译自卡马克的自述文章:
间隔了好几年,我终于又可以进行我的一周编程实践了,在编程的世界里我可以在隐士模式下工作,远离日常的工作压力。过去几年,我的妻子一直慷慨地为我打造这种环境,但我一般不善于在工作中休息。
随着 Oculus(卡马克目前所在公司)工作步伐的改变,我打算从头开始编写一些 C ++ 代码来实现神经网络,而且我想用严格的 OpenBSD 系统来实现。有人可能会说这是一个非常随意且不太靠谱的选择,但事实证明这是行得通的。
尽管我没有真正使用过它,但我一直很喜欢 OpenBSD——一个相对简单且足够自用的系统,它具有紧凑的图形界面,并且重视质量和工艺。Linux 什么都好,但图形界面不够紧凑。
我不是 Unix 极客。各种系统我都可以用,但我最喜欢在 Windows 上使用 Visual Studio 进行开发。我认为在老式的 Unix 风格下完成一周的沉浸式工作会很有趣,即使这意味着工作速度要慢一些。这是一次复古计算的冒险——使用 fvwm 和 vi。不是 vim,实际上是 BSD vi。
其实到最后,我也并没有真正全面地探索这个系统,95%的时间都花在基本的 vi/make/gdb 操作中。我喜欢那些操作手册页面,因为我试图在自带的系统中做所有事情,而不诉诸于互联网搜索。阅读诸如 Tektronix 终端等已有 30 多年历史的事物的参考手册是一件很有意思的事情。
我有点意外,C++ 的支持做得不是很好。G++ 不支持 C++ 11,并且 LLVM C++ 不能很好地与 gdb 配合使用。Gdb 也让我踩了不少坑,我同样怀疑是由于 C++ 的问题。我知道你可以获得更新的版本,但我坚持使用基础系统。
事后看来,我还不如完全复古,干脆在 ANSI C 中做所有事情。和许多老程序员一样,有很长一段时间,我一直在琢磨 “也许 C++ 并不像我们想象的那么好”。我仍然喜欢 C++ 的很多方面,但对于我来说用普通的 C 语言来构建小型项目并不困难。
也许下次我再进行一周编程实践时,我会尝试完整的 emacs,这是另一个我还没怎么接触过的主流文化。
我对大多数机器学习算法已经有比较基本的了解,并且我已经完成了一些线性分类器和决策树的工作,但出于某种原因,我从未使用过神经网络。在某种程度上,我怀疑是深度学习太过流行导致那个不愿意人云亦云的内在的我感到抵触。我仍然持有一点反思性的偏见,反对 “把所有的东西都扔在 NN(神经网络)上,让它自己整理出来!”
为了彻底贯彻我这次复古主题的精神,我打印了几篇 Yann LeCun 的旧论文,并打算完全脱离互联网去完成所有事情,这就好像我被困在了某个山间的小屋里,但最后我还是在 YouTube 上看了很多斯坦福 CS231N 课程视频,并发现它们非常有价值。我一般很少看课程视频,因为这通常让我觉得时间花的不值,但在我 “隐退编程” 的这段时间里看这些视频感觉还是很棒的!
我不认为我有什么特别的洞察力来为神经网络添砖加瓦,但对我来说这是非常高效的一周,充分将 “书本知识” 转化为真实体验。
我采用了一种我经常使用的模式:先写出一段粗糙且不怎么优美的代码,初步得到结果,然后用从视频课程学到的东西再写出一段全新且更优美的代码,这样一来两份代码可以并存和交叉检查。
我一开始尝试实现反向传播,结果两次都做错了,数值微分比较至关重要!有趣的是,即使在各个部分都出现错误的情况下,训练仍然能够进行——只要大多数时候符号正确,通常就会取得进展。
我对我的多层神经网络代码非常满意,它已经可以在我未来的工作中直接使用。是的,对于很多重要的事情我一般都使用一个已有的库,但是在很多时候,哪怕只有一个. cpp 和. h 文件是你自己写出来的,还是会方便许多。
我的 CNN 代码还很粗糙但已经凑合能用了,我可能还会再用一两天的时间来完成一个更干净而灵活的实现。
有一件事我觉得很有趣,在加入任何卷积之前,用我的初始 NN 基于 MNIST 进行测试,我得到的结果明显好于 LeCun 98 年的论文中报告的用于比较的非卷积 NN——我使用了包含 100 个节点的单个隐藏层,在测试集上的错误率大约为 2%,而 LeCun 论文中使用了包含更多节点和更深层的网络错误率却是 3%。我将其归因于现代最佳实践——ReLU、Softmax 和更好的初始化过程。
我认为这是关于神经网络工作的最有趣的事情之一 :它非常简单,突破性的进步通常只需要几行代码即可表达出来。这感觉和图形世界中的光线跟踪有一些相似之处,只要你拥有数据并且对运行时间有足够的耐心,你就可以很快地实现基于物理的光传输光线跟踪器,并生成最先进的图像。
通过探索一系列训练参数,我对过度训练 / 泛化 / 正则化有了更好的理解。在我不得不回家的前一天晚上,我不再修改架构,只是玩超参数。“训练!”简直比 “编译!” 更糟糕,更难让人保持专注。
现在,我要开始睁大眼睛寻找新的工作机会了,我迫不及待地想把我学到的新技能用起来!
我有点担心明天进入办公室时,我的邮箱和工作区将会变成什么样子。
之后,大神 Yann LeCun 也回复了卡马克:
欢迎入坑,约翰!在 OpenBSD 上用 vi 来完成这件事实属英雄所为!每个人第一次尝试的时候都会遇到梯度错误。
在过去的 35 年里,我也做过很多次类似的事情。我的第一个反向传播模拟器是在 PDP11 的 FORTRAN 中编写的(大约在 1984 年)。第二个是在 Pascal 上的 Pr1me OS(大约在 1986 年,使用类似 Emacs 的编辑器)。第三个是由 Leon Bottou 和我在 C 中使用 emacs / gcc / make 在我们的 Amiga 1000s 上编写的(1987 年),我们写了一个 lisp 解释器用作交互式前端语言。当我在 1987 年搬到多伦多时,我把这个东西移植到了 Sun OS(BSD Unix)上。直到 2011 年左右,我们一直使用这个系统及其后继者(称为 Lush),2011 年之后我们才切换到 Torch7。但在 2010 年,我开始编写一个名为 EBLearn 的 C ++ 深度学习框架,由 Pierre Sermanet 和 Soumith Chintala 完成并维护。
在我们 1998 年的论文中,MNIST 上的全连接网络的错误率是次优的,因为我们使用了最小平方损失(对于标记噪声往往更加鲁棒),而不是交叉熵,利用交叉熵和更大的网络(>1000 个隐藏单元),错误率可以下降到 1.6%左右。
对于不太了解技术的读者,大概会产生一种 “神仙聊天” 的感觉,每一个字你都认识,但是你就是看不懂,所以我们贴心地为大家解释了一个简约版:
首先,大神卡马克牛逼在哪儿了呢?看下知乎网友 wsivoky 的总结:
48 岁仍然在学习新技术、编写代码
喜欢受限的开发环境(Twitter 上曾说过,受限环境有益)
vi&emacs 都用 (注意是 bsd vi, 不是 vim,前者是 bill joy 当初开发的第一版也是第一个 screen editor )
使用 OpenBSD,但喜欢 Windows Visual Studio
用 makefile&gdb
使用 C++,同时也吐槽 C++
不用 Google Search, 完全看 man(Tektronix terminal 是 bill joy 编写 vi 时代的显示器,更早时候是靠纸张输出... )
对 Deep Learning 如此流行持保留态度
打印了 MNIST 早期论文并尝试实现
最终忍不住看了 cs231n
使用自己喜欢的开发方式:先实现后优化
实现反向传播容易出错
对 CNN 的效果很满意 (Tensor 操作也是"from-scratch-in-C++"CPU 实现的?)
对 NN 代码之少却强大感到兴奋(看到纯手工撸的 NN 运行结果之神奇,是很持久的快感)
编写算法实现对过拟合、正则化、调参有了更好的理解
再简约一点儿,大概就是这样:
卡神:反向传播和 CNN 这东西之前没搞过,那既然如此就自己动手试试吧。一个礼拜之后发现:哎呀~ 神经网络这玩意儿还挺有意思,感觉入坑了。(?? ω ??)
乐村儿:大兄弟你终于入坑了,来来来,我跟你说,用哥这方法你还有上升空间,以后咱们可以经常交流经验。(*≧︶≦))( ̄ ̄*) ゞ
成为大神,从你做起!
卡马克的一周编程实践一出,迅速在国内外程序员圈子里引发骚动。
国外程序员论坛 Reddit 的 MachineLearning 板块下,卡马克一周编程实践的话题受关注度 364,共收获 53 则留言
知乎上也很快有网友发布了相关问题,截止发稿时间,已有 685 人关注,浏览次数 25991
卡马克 Facebook 下的留言大多是这样的:
其实大家为之震动的并非卡马克入坑 AI 这件事本身(当然大神神乎其技的编程水平也确实让人顶礼膜拜),而是卡马克作为一位诸多成就加身的老牌程序员兼 Oculus CTO,仍然狂热地爱着编程这件事本身,并且保持着对一切新鲜事物感到好奇的赤子之心。
当卡马克对 AI、神经网络、深度学习产生兴趣,决定探索一下这些新技术时,他没有直接安装 TensorFlow 或 PyTorch, 而是花了一个星期的时间,通过逐一编写各个功能模块代码,并进行了 MNIST 实验,从头开始实现 CNN 和反向传播。他没有去学习最新的术语,但却从中获得了最有价值的知识。这里不争论 scratching 到底好还是不好,但手撸新技术确实是学习的一种好途径。面对新技术,不纠结要不要尝试、不犹豫会不会太难,而是动手干,无怪乎知乎网友将卡马克称作 “老程序员的标杆”。
这是一个最好的时代,技术日新月异,热点一年一个,对技术人才的需求越来越大。这是一个最坏的时代,深陷技术漩涡的程序员们成为了最容易焦虑的群体,今天是 AI 火了我要不要转行,明天是新技术太多学不动了,后天是 35 岁程序员中年危机了。其实哪里有那么多可焦虑的,有时间焦虑不如多撸几行代码。互联网技术更新确实快,这要求程序员必须终身学习,但这是选择了这个职业的宿命。
卡马克告诉你:忘记中年危机吧,想想我们应该做些什么,才不辜负这美好的时代!
写在最后
这里引用知乎网友姚钢强的回答作为结语。
读过《DOOM 启世录》 两遍,John Carmack 说过:
在信息时代,客观障碍已不复存在,所谓障碍都是主观上的。如果你想动手开发什么全新的技术,你不需要几百万美元的资金,你只需要在冰箱里放满比萨和可乐,再有一台便宜的计算机,和为之献身的决心。我们在地板上睡过,我们从河水中趟过。
他切实做到了,与君共勉。
参考资料:
1.网页链接
2.网页链接
3.网页链接
4.网页链接
10,硬件性能飞涨、软件却越来越臃肿,所以一切还是那么慢_
编者按: 硬件越来越快,软件却越编越慢。只是在前者的作用下才让人勉强维持了应用的性能。有人说程序员的时间要比计算机的时间昂贵。所以只要硬件过得去,程序凑合过去就行了。其结果是搭积木出来的软件越来越臃肿,已经到了积重难返的地步了——Windows 95只有30Mb,今天我们的一个网页都要比它大!难道真的没有办法了吗?有没有可能做出简单、有效,清爽的应用呢?有15年编程经历的Nikita说,有,不过首先要程序员这个群体用心。
我编程到现在已经有15年了。最近我们这个行业缺少了对效率、简洁性以及卓越的关心,甚至已经到了令我对自身的职业生涯和整个IT业感到沮丧的地步。
出于讨论的方便,这么说吧,现代汽车用当前的引擎设计在98%的技术可能性上面是可行的。现代建筑需要用足够的材料来填充功能并且在特定条件下保持安全。所有的飞机都会朝着优化的大小/形态/载荷收敛,而且外形基本上是一样的。
而只有软件,哪怕程序性能表现只有最大可能的1%甚至0.01%也过得去。对此每个人似乎也觉得没什么。甚至大家经常对它的低效率还很自豪,拿“为什么要担心呢?计算机已经足够快了。”作为借口。
@tveastman:我有个Python程序每天都要跑,耗时是1.5秒。我用了6个小时的时间用rust重写了一遍,现在它只用0.06秒。这种效率改进意味着我节省了41年零24天的时间。
你大概听说过这句口号:“程序员的时间要比计算机的时间昂贵。”这话的意思其实是说我们正在以空前的规模浪费计算机。每100公里要烧100升汽油的汽车你愿不愿买呢?1000升呢?这样的事情换成计算机我们天天都在做。
——软件开发机制是这样的:我们需要在这道墙上打500个洞。所以我做了这个自动钻孔机。它配置了优雅精确的传动装置,可以不断地根据需要调整扭矩和速度。
——很好,重量很合适!我们就装500颗进去打到这面墙上。
一切都慢到难以忍受
看看周围吧:我们的便携式计算机比当初把人类带上月球的那些都要强大几千倍。但是每一个网页都要想方设法在最新的顶配MacBook Pro上滚动时维持平滑的60fps。我可以舒适地玩游戏,看4K视频,但是网页滚动一下都不行?这怎么能行?
Google写的web应用Google Inbox,跑在也是Google写的Chrome浏览器上,要想打开一封大小适度的邮件需要花费的时间是13秒。
它还动画显示空的白箱子而不是显示内容,因为这是能在网页上以过得去的性能进行动画演示的唯一方式。不,过得去意味的不是60fps,相反,是“尽可能地快”。我极其想看看web社区怎么回答120Hz显示什么时候才能成为主流。
Windows 10升级要花30分钟。为什么要那么久?这么久足够把我的SSD硬盘完全格式化,下载一份新的然后安装5次了。
Pavel Fatin:在编辑器输入是个相对简单的过程,所以即便是286 PC也能提供相对流畅的输入体验。
现代文本编辑器的时延比已有42年历史的Emacs还要长。那可是文本编辑器!还有比这更简单的东西吗?每一次按键你只需要更新一下那小小的矩形区,可是现代文本编辑器却不能在16毫秒内做到这个。这已经是很长一段时间了。很长。在16秒之内3D游戏可以用几十万个多边形填充整个屏幕并且处理好输入,重新计算好并动态加载/卸载资源了。怎么会这样?
软件功能越多不会变得越快是普遍趋势。我们得到的是更快的硬件更慢的软件个还是一样。一切跑得都要比可能的速度慢得多。你想到过自己耳朵手机启动需要30秒到60秒的时间吗?为什么就不能在1秒钟之内启动完毕?这里面并不存在物理限制。我喜欢看到这个。我喜欢看到极限被突破,为了以有意义的方式实现某个有意义的东西而榨干最后一位的性能。
一切都太大了
然后还有臃肿问题。如果把所有广告都屏蔽掉的话web app的打开速度可以快10倍。Google用AMP计划来乞求大家别再搬起石头砸自己的脚——这种技术解决方案解决的是一个并不需要任何技术只需要一点点常识的问题。如果你把臃肿干掉,web自然就会变得快得要命。理解这一点需要多聪明呢?
没有装app的android系统几乎占了6Gb。想一下,想想看这个数字有多大。里面都有什么呢?高清电影?我猜基本上都是代码:内核、驱动程序。当然,还有一些字符串和资源,但是这些不会很大。那么,一个手机到底需要多少驱动程序呢?
Windows 95只有30Mb。今天我们的一个网页都要比它大!Windows 10是4Gb,大了133倍。但是后者是不是比前者出色133倍呢?我的意思是,它们在功能上基本上是相同的。是,我们有Cortana,但我那总不会占掉3970Mb吧。可不管Windows 10是什么东西,Android真的顶它的150%吗?
Google键盘app通常就占150Mb。在屏幕上画30个键的app难道真的比整个Windows 95复杂5倍吗?Google app这个基本上相当于Google Web Search的应用是350Mb!Google Play Service,这个我不用的玩意儿(我不在这里买书、音乐或者视频)有300Mb,可是我却删不掉它。
当我把所有那些必不可少的app(社交媒体、聊天应用、地图、打的、银行应用等)都装完之后,留给我的照片的大概就只有1Gb了。而且这还没装游戏和音乐呢!还记得OS、应用和所有数据都能进一张软盘的时候吗?
你的桌面待办事宜应用也许是用Electron编写的,因此会为了支持Xbox 360控制器而内置了userland驱动在里面,可以渲染3d图形,可以演奏音频,还可以用你的web摄像头拍照。
一个简单的文字聊天因为加载速度和内存消耗而恶名昭彰。是的,你真的可以把Slack归类成资源消耗型应用。我饿意思是说,聊天室再加上勉强算个文字编辑器,这些本来应该是需求没那么大的应用的。欢迎来到2018。
可至少它能用啊。你也许会说。好吧,更大并不意味着更好。更大意味着有人已经失去控制。更大意味着我们不知道发生了什么。更大意味着复杂性、性能以及可靠性方面要增加负担。正常来说不是这样的,这也不应该成为常态。块头过大的应用意味着红色警报。这应该意味着快跑。
全都烂了
在3年前16Gb的Android就完全够用了。而在今天,如果OS是Android 8.1的话已经几乎不够用了,因为每一个app都至少是过去的2倍,但却没有明显的理由。功能又没有增加。速度没有变快或者经过了优化。样子也没有改变。难道它们也会长身体?
iPhone 4s面世的时候配的是iOS 5,但是几乎已经带不动iOS 9。这不是因为iOS 9太出色了——其实9跟5基本上是一样的。但是它们的新硬件更快,所以它们就把软件做得慢一点。别担心——你会得到令人兴奋的新能力的……比如用相同的速度跑同样的应用!
iOS 11放弃了对32位应用的支持。这意味着如果开发者不愿意回到过去,更新一度十分好用的app的话,你可能就再也看不到他们的应用了。
@jckarter:DOS程序不用做任何修改就能在上世纪80年代以来制造的几乎所有计算机上面运行。可如果明天Chrome升级一下,一个JavaScript应用也许就用不了了。
今天的网页放回到10年前的任何浏览器都兼容不了(可能时间还要更短一点)。
“为了保持不掉队它用尽了全力。”可是这有什么意义呢?我可能偶尔会跟旁边的家伙一样买部新手机和新的MacBook,但是这么做只是为了能跑同样变慢的相同应用?
我认为我们可以也应该比这做得更好。每个人都忙着开发为今天而不是明天准备的东西。但是拥有比这持续时间更久一点的东西会是件好事。
越糟越好
如果出问题的话网页的解决方案就是让你刷新一下。谁有时间弄清楚发生了什么啊?
任何web应用都会经常产生“随机”的JS错误,甚至在兼容的浏览器上也会。
整个网页/SQL数据库架构都是建立在一个假设(甚至是希望)的基础之上:那就是当你在浏览渲染过的网页时没人会碰你的数据。
大多数协作的实现都是“尽力而为”,丢失数据在很多情况下都是司空见惯。见过下面这个对话框吗:“你想保留哪一个版本?”我的意思是说,今天的门槛已经这么低了,以至于你的用户对有这么一个窗口提示就已经感恩戴德了。
你们的标准太低了。在我的世界里,“我准备要干掉你的部分工作,但是你可以选择干掉哪一个”这样的说法是不可接受的。
Linux会故意杀死随机进程。但仍然是最流行的服务器端OS。
我手头的每一台设备都会经常失效。我的Dell监视器时不时因为里面的软件而需要硬重启。Airdrop?如果它能检测到你的设备的话,那你就幸运了,否则的话我该怎么办?蓝牙?规范说明太复杂,设备之间无法对话,定期重启就是最好的解决办法。
我还没谈到物联网呢。这个超出笑点范围太多了。我甚至都不确定该加点什么。
我希望能对自己的工作感到自豪。我希望交出来的东西能用,稳定。为此,我们需要理解我们在开发的是什么,彻底地,而在臃肿、设计过度的系统里面是没法做到这一点的。
编程也是同样的一团糟
似乎没人对品质、速度、效率、持久、基础性的东西感兴趣了。甚至当手上有很久以来就众所周知的效率解决方案时,我们仍然在跟同样的问题搏斗:打包管理、编译系统、编译器、语言设计,还有IDE。
编译系统天生就是不可靠的,而且定期需要彻底清理,甚至尽管所有的必要信息都在那里了。没有任何东西阻挡我们让编译过程变得可靠,可预测且100%可复制。只是没人认为这些事情是重要的。NPM多年来仍停留在“有时候能用”的状态。
@przemyslawdabek在我看来,开发Node.js/JavaScript项目的时候rm -rf node_modules(删除所有模块)是工作流不可或缺的一部分。
至于编译时间?没人认为编译器工作几分钟或者甚至几小时是个问题。不是说“程序员的时间更加重要吗?”几乎所有的编译器、预处理其和后处理器都给你的编译过程增加了重大、有时候甚至是灾难性的时间负担,但是又没有提供相称的实质性的好处。
程序员合法放松的头号借口:“我的代码正在编译!”
你指望程序员通常会做出理性决定,但有时候他们做的恰恰相反。比方说,哪怕在单机上跑同样的任务速度更慢也要选Hadoop。
在大部分计算机都还不够可靠的时候,机器学习和“AI”就让软件开始猜起来了。
@rakhim:当一个应用或者服务被说成是“AI驱动”或者“基于机器学习”时,我的解读是“不可靠、不可预测、不可能推理行为。”我会尽量避开“AI”,因为我希望计算机是相反的:可靠、可预测、合理的。
我们把虚机放进了Linux,然后我们把Docker放进了虚机里面,这仅仅是因为没人会清理大多数程序、语言及其环境造成的混乱。我们用一块布盖住了那堆屎但就是不处理。比方说,“Single binary(单二进制)”仍然是Go的一大卖点。没有混乱 = 成功。
依赖关系?大家很容易就会把过度设计的“完整包解决方案”塞进最简单的问题里面而不考虑它们的成本。而那些依赖关系又会带来新的依赖关系。最后你得到的就是一棵介乎恐怖故事(噢天呐那么大那么多冲突)与喜剧(我们不可能会把这些包含进来的,但事实就是如此)的依赖树。
程序再也不能连续好几年都不用重启了。有时候甚至连续工作好几天都已经变成一种奢望。随机的情况时有发生,没人知道为什么。
更糟的是,没人有时间停下来找出发生了什么。如果花钱就能搞定的话为什么还要自寻烦恼。再弄多个AWS实例。重启进程。卸载然后恢复整个数据库。写个监视程序每20分钟重启一下损坏的app。把相同的资源多放几次,压缩然后交付。快速行动,不要修复。
工程不是这么做的。这是惰性编程。工程是要深刻地理解性能、结构以及开发的东西的局限性。将写得很糟糕的东西跟写得更糟糕的东西组合到一起跟着在原则完全背道而驰。要想取得进步,我妈需要理解我们在做什么以及为什么要这么做。
我们已经陷进去了
所以一切都是一堆勉强能用的代码堆在此前编写的勉强能用的代码上面。东西的规模越来越大越来越复杂,任何修改的机会都没了。
要想拥有一个健康的生态体系你需要回过头来重新审视。你需要偶尔把东西扔掉用更好的东西取而代之。
设计的返璞归真
但是谁有时间干这事儿?我们很久没见过新的OS内核了吧,有没有25年了?现在想重写了事不行了,太复杂了。浏览器充斥着各种边缘案例和历史先例,没人敢从头再写过布局引擎。
今天对流程的定义也在火上浇油:
@sahrizv:2014_我们必须采用#microservices(微服务)解决一体化程序的所有问题。
2016——我们必须采用#docker来解决微服务的一切问题。
201——我们必须采用#kubernetes解决docker的一切问题。
或者重新发明轮子:
@dr_c0d3:2000:写100行XML“声明性”地配置你的servlets和EJB。
2018:写100行YAML“声明性”地配置你的微服务。
至少XML还有schema……
我们无法摆脱我们现有的东西,没人能拯救我们。
企业不会关心这个
用户也不会。他们只会期待我们能提供什么。我们(工程师)说每一个Android app都要350Mb?好吧,他们会忍受的。我们说我们无法提供流畅的滚屏?好吧,他们能忍受一个会卡顿的手机。我们说“如果不行的话就重启”?他们就会重启。毕竟,他们没有选择。
而且也没有竞争。大家开发的产品都是一样的臃肿、缓慢,不可靠。偶尔质量上领先一步的确能带来竞争优势(iPhone/iOS对比其他智能手机,Chrome对比其他浏览器)冲切批示每个人重组,但持续不了多久。
所以我们作为工程师的使命就是向全世界展示用今天的计算机在性能、可靠性、品质和可用性方面能做成什么样子。如果我们用心的话,大家会学的。除了我们没人可以证明这是很有可能的。前提是我们用心了。
也不是全都是坏事
有一些亮点表明改进目前的情况并非不可能。
Martin Thompson正在做的工作令人印象深刻,简单、有效,清爽。
Raph Levien的Xi编辑器似乎采用了正确的开发原则。
Jonathan Blow给自己的游戏开发了一门语言,用他的笔记本编译可以达到每秒钟50万行。这是cold compile(冷编译),没有中间缓存,没有增量编译。
写出速度快的程序不需要你是个天才。这里没有魔术。唯一需要的是不要在一堆现代工具链构成的垃圾基础上开发。
让世界更美好的宣言
我希望看到进步。我希望改变。我希望软件工程能推陈出新而不是原地踏步。我不希望反复重新发明同样的东西而且性能越来越差却越来越臃肿。我希望做出来的东西值得信赖,有崇高的终极目标,希望未来比今天更美好,我还希望有一个一起接受这一愿景的工程师社区。
我们今天所取得的并不是进步。我们勉强用建构在糟糕工具基础上的东西满足了商业目标。我们陷入到了局部最优里面,没人想要摆脱出来。这甚至都还不是个好地方,又臃肿又低效。我们只是对此习惯了。
所以我想向大家呼吁:我们现在的东西就是一堆狗屎。作为工程师,我们可以,也应该做得更好。我们可以有更好的工具,我们可以开发更好的应用,更快、更加可预测,更可靠,使用更少的资源(少好几个量级!)。我们需要深刻理解我们在做什么,为什么要这样做。我们需要提供可靠、可预测、最高品质的东西。我们可以,也应该对自己的工作感到自豪。
我希望我不是一个人在战斗。我希望还有其他人也想这么做。哪怕先开始讨论一下软件业之怪现状也好。接着我们可以再思考一下如何走出这种困境。
原文链接:网页链接
编译组出品。编辑:郝鹏程。
11,linux 安装方法
第十一步 选择时区 位置默认选择“亚洲/上海”,若不正确则做相应调整,单击“下一步(N)” 第十二步 设置根口令 输入一串不少于六个字符的口令,然后再重新输入一次。注意这个口令一定要记住。单击“下一步(N)”。 第十三步 选择软件包组 将“软件开发”和“网络服务器”两项前的复选框都选中,下面的单选框选为“现在定制(C)”。单击“下一步(N)”。 桌面环境:GNOME桌面环境 应用程序:全不选择 开发 : 开发工具 服务器:全不选择 虚拟化:需要 基本系统:java ,X窗口系统,基本,拨号联网支持,管理工具,系统工具 语言支持:中文支持 当然,您可以根据自己的需要,来进行选择安装哪些软件包;同时如果您有足够大的空间,也可以全部安装,。单击“下一步(N)”。 到此处会出现准备安装界面,单击“下一步(F)”。之后,让您确认所需的安装介质是否齐全。单击“继续(C)”。 第十四步 正在安装软件包 整个安装过程可能花费的时间,由您所选择的软件包个数来决定。请您耐心等待。 在安装的过程中,会提示您,此时光驱也会自动弹出,您只要放入它所提示的安装盘,单击“确定(O)”,就可以继续安装。此处以第二张光盘为例说明。 第十五步 祝贺您 单击“重新引导(t)”。此时系统将会重新启动,请您耐心等待。 第十六步 系统的基本配置 系统重启后 ①欢迎界面 单击“前进 (F)”。 ②许可协议 选“是,我同意这个许可协议(Y)”,单击“前进 (F)”。 ③防火墙 在“防火墙:”后,你可以选择“启用”和“禁用”,分别用来开启和关闭防火墙;下面还有“信任的服务:”和“其它端口”,您也可以根据自己的需要进行设置。此处我们不做任何操作,按默认设置,单击“前进(F)”。 ④SELinux 此处我们也不做任何操作,按默认设置,单击“前进(F)”。 ⑤Kdump 单击“前进(F)”。 ⑥日期和时间 为系统设置正确的日期和时间,一般该程序会自动检测当前日期和时间。若有误,您可以做调整。单击“前进(F)”。 ⑦设置软件更新 由于我们前面在安装过程中,对于网络的设置是默认的,通过DHCP来获取IP,因此没有获取成功,所以网络无法连接。单击“前进(F)”。 ⑧创建用户 到这步时,系统会要求您添加一个普通用户账号,请您按照提示,填写相关信息,口令长度不少于六位。单击“前进(F)”。 ⑨声卡 您可以按照上面给出的提示,进行测试。此处我们不做任何操作,单击“前进(F)”。 ⑩附加光盘 您可以通过点击“安装”按钮来安装其他额外的软件,此处不做任何操作,单击“(F)结束”。到此就意味着您已经成功地完成了“Red Hat Enterprise Linux 5”的安装。 之后您将会看到的登陆界面,此时您可以通过前面安装过程中所设置的根用户账号或普通用户账号及口令进行登陆。 注意 由于根用户具有超级系统权限,一般不到系统出现重大问题时不建议使用。
准备工作
硬盘空间:6G以上(建议) 内存容量:512M以上(建议) 光盘介质:Red Hat Enterprise Linux 5 安装光盘(五张CD)(公司内网有) 设置BIOS为从光盘引导 启动计算机,将安装盘的第一张放入光驱 后续操作请参考后面的具体安装步骤进行。
说明: 当安装程序运行至分区时,请您按照自己的实际需要分配安装Linux的空间,此文档用VMwareWorkstation,进行模拟安装,因此请在“第八步 正在分区”,选空闲的空间来安装Linux系统,以免对您原来的硬盘数据造成破坏。
具体安装及基础设置步骤:
第一步 启动安装程序 从光盘启动安装程序后,就会出现安装引导界面
按
准备工作
硬盘空间:6G以上(建议) 内存容量:512M以上(建议) 光盘介质:Red Hat Enterprise Linux 5 安装光盘(五张CD)(公司内网有) 设置BIOS为从光盘引导 启动计算机,将安装盘的第一张放入光驱 后续操作请参考后面的具体安装步骤进行。
说明: 当安装程序运行至分区时,请您按照自己的实际需要分配安装Linux的空间,此文档用VMwareWorkstation,进行模拟安装,因此请在“第八步 正在分区”,选空闲的空间来安装Linux系统,以免对您原来的硬盘数据造成破坏。
具体安装及基础设置步骤:
第一步 启动安装程序 从光盘启动安装程序后,就会出现安装引导界面
按
对于Windows/Linux多操作系统共存的系统,安装顺序是先安装Windows系统,然后才是Linux。下面我们介绍在已经安装了Windows系统的单硬盘上如何安装RedHat Linux 9.0。 Linux安装前的准备工作 1.用Windows系统收集硬件信息 在安装Linux之前,您需要借助Windows系统了解计算机硬件的基本信息,如内存大小、声卡、显示器、鼠标和显卡型号等。 2.设置从光盘引导系统 Linux支持几种安装方式,但直接以光盘开机启动进行安装最方便和快速。若要机器以光盘启动,需要修改BIOS的设置,将CD-ROM变更至开机顺序的第一位。 3.Linux分区 Linux分区的表示方法 分区就是将磁盘驱动器分隔成独立的区域,每个区域都如同一个单独的磁盘驱动器,在DOS/Windows系统下磁盘分区可分为C、 D和E盘等。但Linux则将磁盘视为块设备文件来管理使用,它以 /dev(device的缩写)开头表示。 例: 在Linux用 “/dev/hda1”表示Windows下的C盘 其中:hd 表示IDE硬盘(SCSI硬盘用sd);hda 为 第一个IDE 硬盘(第二为 hdb);/dev/hda1 为主分区,逻辑分区 从5 开始,如: /dev/hda5、/dev/hda6、/dev/hda7等。 为Linux准备分区 Linux分区和Windows分区不同,不能共用。所以需要为Linux单独开辟一个空闲的分区,最好是最后一个分区。如图1中利用Windows下的Partition Magic(分区魔法)软件,在D盘上腾出空间创建新分区E盘(或利用已有的空闲E盘),文件类型暂设为FAT32,作为稍后创建Linux分区使用,RedHat 9.0 大约需4 ~ 5GB的空间。 4.Linux 的文件系统 对于不同的操作系统,文件系统也不同。Windows文件系统为FAT16、FAT32和NTFS。而Linux的文件系统可分为ext2、ext3、swap和vfat。ext2支持最多为255 个字符的文件名;ext3 是基于 ext2之上,主要优点是减少系统崩溃后恢复文件系统所花费的时间,RedHat 9.0 默认文件系统为ext3;交换区swap是被用于支持虚拟内存;Windows的FAT分区在Linux下显示为vfat文件类型。 1.用RedHat 9.0第一张安装光盘引导开机,系统在开机后会出现安装菜单。 安装菜单中提供了供用户选择的图形和文本模式的安装方式,按回车选择图形模式进行安装。在进入图形画面的安装模式前,RedHat 9.0比以往的版本多了一个环节,那就是提示对安装光盘介质进行检测, 也可按“Skip”按钮跳过检测。 2.接着安装程序会自动检测硬件,包括视频卡(显示卡)、显示器和鼠标的配置,然后进入图形画面的安装向导。在出现“语言选择”的画面中,我们选择“简体中文”,这样接下去的安装过程界面的文字都会改为中文。在“键盘配置”画面中接受默认的“美国英语式”键盘。选择“下一步”,在“鼠标配置”窗口,系统自动检测出鼠标的配置。 3.选择安装类型,安装类型包含四种不同的安装方式:个人桌面、工作站、服务器和定制。“服务器”的安装适用于专职的服务器使用,“个人桌面”和“工作站”适合于初学者,为了让你更多地了解安装过程,我们将选择“定制”类型进行安装。 4.磁盘分区设置:确认了“定制”方式之后,系统会出现“磁盘分区设置”窗口,它提供了两种分区方式:“自动分区”和“用Disk Druid手工分区”。 “自动分区”是一个危险功能,因为它会自动删除原先硬盘上的数据,并格式化成为Linux的分区文件系统。所以除非计算机上没有其他操作系统,你才可以使用。建议采用Disk Druid程序进行手动分区,它的图形化界面比早期RedHat的fdisk程序操作更简单。 5.磁盘设置:在选择“用Disk Druid手工分区”后,会显示如图2的“磁盘设置”窗口,这是整个安装过程中惟一需要用户较多干预的步骤,也是很重要的环节。 只要有一个主分区就可以安装并使用Windows操作系统,同时D、E等逻辑盘的文件结构也都是独立的。而Linux系统归根结底就只有一个根目录,一个独立且惟一的文件结构。Linux的文件系统采用树型结构,整个文件系统由一个“根”和根上的几个分“杈”组成,Linux需创建几个“Linux Native”分区和“Linux Swap ”分区,每个分区都必须通过 “挂载点”,分别载入到 “根(/)”或几个分“杈(如/boot、/home等)”上。 一个最基本的Linux系统需有一个“/”根文件系统分区、一个“Swap”交换文件分区和/boot分区,为了用户使用方便建议还需创建一个 /home分区。 为Linux建立分区有几种办法,一种是编辑现有空闲分区,使它成为Linux分区。如果没有空闲的磁盘空间,就需要将现有的分区删除后,腾出空间,以建立Linux分区。 图2中的/dev/hda6是在Windows下用Partition Magic为Linux准备的分区E盘(图1)。下面我们将在/dev/hda6上创建“/”、“/boot”、“swap”和“/home”分区。 (1)因 /dev/hda6 的文件类型是vfat,需先删除此分区,使它变成 “空闲”设备和“空闲分区”; (2)创建“/”分区:选中“空闲”设备,按“新建”按钮,进入“添加分区”的窗口中,挂载点选“/”,文件系统类型选“ext3”,大小输入“5000MB”。 (3)创建“/boot”:同(2),在挂载点选“/boot”,文件系统类型选“ext3”,大小输入“100MB”。 (4)创建swap:一般swap分区的大小设定为机器内存的2~3倍为最佳,在“添加分区”的窗口,文件系统类型选“swap”,大小为600MB(如果内存为256MB),它不需要挂载点; (5)创建“/home”:在挂载点选“/home”,文件系统类型选“ext3”,我们选择“使用全部可用空间”选项,将剩余的磁盘分配给/home区。 6.在完成了创建Linux分区后,接下来出现“引导装载程序配置”窗口。 对于Windows/Linux多操作系统共存的系统,开机时如何指定引导的操作系统,这需要借助开机引导装载程序(Boot Loader)。Linux内置了两种开机引导装载程序——LILO与Grub,在图3引导装载程序配置中,我们将开机启动的操作系统设为DOS(Windows),同时默认系统设置——以Grub作为引导装载程序。 7.配置好引导装载程序后,在接下来的“网络配置”、“防火墙的配置”、“附加语言支持”和“时区选择”的窗口中,我们都按系统默认进行选择。 8.和Windows XP相同,有一个称为“root”权限最大的管理员账户,使用这个账户登录主机可以完全掌握整个系统,安装过程中需要设置它的口令,请记住设置的口令。在后面的“验证配置”的窗口中,我们以系统默认的设置进行。 9.接下来是进行“个人桌面默认的设置”,选择“定制要安装的软件包集合”。然后是系统软件包的选择安装,在“选择软件包组”窗口中,为了测试每个软件包的功能,选择最后一个选项“全部安装”,安装全部软件包需4850MB的硬盘空间,按“下一步”后,系统开始进行软件包的安装。在安装过程中,系统会提示插入第二及第三张安装光盘。 10.软件包安装完成后,系统会提示“创建引导盘”,当系统无法引导的情况下,引导盘可作为紧急救援盘,我们强烈建议要制作引导盘。 11.随后系统显示“图形化界面(X)配置”、“显示器设置”和“定制图形化配置”的窗口,分别显示系统检测出的视频卡(显示卡)的型号、内存和显示器的型号以及色彩深度、屏幕分辨率等,一般按系统的默认值设置即可。 完成了上述这些操作后,系统会显示安装完成的提示窗口。当你重新启动机器后,Windows的开机画面将被多操作系统引导程序Grub的精美图案所替代
对于Windows/Linux多操作系统共存的系统,安装顺序是先安装Windows系统,然后才是Linux。下面我们介绍在已经安装了Windows系统的单硬盘上如何安装RedHat Linux 9.0。 Linux安装前的准备工作 1.用Windows系统收集硬件信息 在安装Linux之前,您需要借助Windows系统了解计算机硬件的基本信息,如内存大小、声卡、显示器、鼠标和显卡型号等。 2.设置从光盘引导系统 Linux支持几种安装方式,但直接以光盘开机启动进行安装最方便和快速。若要机器以光盘启动,需要修改BIOS的设置,将CD-ROM变更至开机顺序的第一位。 3.Linux分区 Linux分区的表示方法 分区就是将磁盘驱动器分隔成独立的区域,每个区域都如同一个单独的磁盘驱动器,在DOS/Windows系统下磁盘分区可分为C、 D和E盘等。但Linux则将磁盘视为块设备文件来管理使用,它以 /dev(device的缩写)开头表示。 例: 在Linux用 “/dev/hda1”表示Windows下的C盘 其中:hd 表示IDE硬盘(SCSI硬盘用sd);hda 为 第一个IDE 硬盘(第二为 hdb);/dev/hda1 为主分区,逻辑分区 从5 开始,如: /dev/hda5、/dev/hda6、/dev/hda7等。 为Linux准备分区 Linux分区和Windows分区不同,不能共用。所以需要为Linux单独开辟一个空闲的分区,最好是最后一个分区。如图1中利用Windows下的Partition Magic(分区魔法)软件,在D盘上腾出空间创建新分区E盘(或利用已有的空闲E盘),文件类型暂设为FAT32,作为稍后创建Linux分区使用,RedHat 9.0 大约需4 ~ 5GB的空间。 4.Linux 的文件系统 对于不同的操作系统,文件系统也不同。Windows文件系统为FAT16、FAT32和NTFS。而Linux的文件系统可分为ext2、ext3、swap和vfat。ext2支持最多为255 个字符的文件名;ext3 是基于 ext2之上,主要优点是减少系统崩溃后恢复文件系统所花费的时间,RedHat 9.0 默认文件系统为ext3;交换区swap是被用于支持虚拟内存;Windows的FAT分区在Linux下显示为vfat文件类型。 1.用RedHat 9.0第一张安装光盘引导开机,系统在开机后会出现安装菜单。 安装菜单中提供了供用户选择的图形和文本模式的安装方式,按回车选择图形模式进行安装。在进入图形画面的安装模式前,RedHat 9.0比以往的版本多了一个环节,那就是提示对安装光盘介质进行检测, 也可按“Skip”按钮跳过检测。 2.接着安装程序会自动检测硬件,包括视频卡(显示卡)、显示器和鼠标的配置,然后进入图形画面的安装向导。在出现“语言选择”的画面中,我们选择“简体中文”,这样接下去的安装过程界面的文字都会改为中文。在“键盘配置”画面中接受默认的“美国英语式”键盘。选择“下一步”,在“鼠标配置”窗口,系统自动检测出鼠标的配置。 3.选择安装类型,安装类型包含四种不同的安装方式:个人桌面、工作站、服务器和定制。“服务器”的安装适用于专职的服务器使用,“个人桌面”和“工作站”适合于初学者,为了让你更多地了解安装过程,我们将选择“定制”类型进行安装。 4.磁盘分区设置:确认了“定制”方式之后,系统会出现“磁盘分区设置”窗口,它提供了两种分区方式:“自动分区”和“用Disk Druid手工分区”。 “自动分区”是一个危险功能,因为它会自动删除原先硬盘上的数据,并格式化成为Linux的分区文件系统。所以除非计算机上没有其他操作系统,你才可以使用。建议采用Disk Druid程序进行手动分区,它的图形化界面比早期RedHat的fdisk程序操作更简单。 5.磁盘设置:在选择“用Disk Druid手工分区”后,会显示如图2的“磁盘设置”窗口,这是整个安装过程中惟一需要用户较多干预的步骤,也是很重要的环节。 只要有一个主分区就可以安装并使用Windows操作系统,同时D、E等逻辑盘的文件结构也都是独立的。而Linux系统归根结底就只有一个根目录,一个独立且惟一的文件结构。Linux的文件系统采用树型结构,整个文件系统由一个“根”和根上的几个分“杈”组成,Linux需创建几个“Linux Native”分区和“Linux Swap ”分区,每个分区都必须通过 “挂载点”,分别载入到 “根(/)”或几个分“杈(如/boot、/home等)”上。 一个最基本的Linux系统需有一个“/”根文件系统分区、一个“Swap”交换文件分区和/boot分区,为了用户使用方便建议还需创建一个 /home分区。 为Linux建立分区有几种办法,一种是编辑现有空闲分区,使它成为Linux分区。如果没有空闲的磁盘空间,就需要将现有的分区删除后,腾出空间,以建立Linux分区。 图2中的/dev/hda6是在Windows下用Partition Magic为Linux准备的分区E盘(图1)。下面我们将在/dev/hda6上创建“/”、“/boot”、“swap”和“/home”分区。 (1)因 /dev/hda6 的文件类型是vfat,需先删除此分区,使它变成 “空闲”设备和“空闲分区”; (2)创建“/”分区:选中“空闲”设备,按“新建”按钮,进入“添加分区”的窗口中,挂载点选“/”,文件系统类型选“ext3”,大小输入“5000MB”。 (3)创建“/boot”:同(2),在挂载点选“/boot”,文件系统类型选“ext3”,大小输入“100MB”。 (4)创建swap:一般swap分区的大小设定为机器内存的2~3倍为最佳,在“添加分区”的窗口,文件系统类型选“swap”,大小为600MB(如果内存为256MB),它不需要挂载点; (5)创建“/home”:在挂载点选“/home”,文件系统类型选“ext3”,我们选择“使用全部可用空间”选项,将剩余的磁盘分配给/home区。 6.在完成了创建Linux分区后,接下来出现“引导装载程序配置”窗口。 对于Windows/Linux多操作系统共存的系统,开机时如何指定引导的操作系统,这需要借助开机引导装载程序(Boot Loader)。Linux内置了两种开机引导装载程序——LILO与Grub,在图3引导装载程序配置中,我们将开机启动的操作系统设为DOS(Windows),同时默认系统设置——以Grub作为引导装载程序。 7.配置好引导装载程序后,在接下来的“网络配置”、“防火墙的配置”、“附加语言支持”和“时区选择”的窗口中,我们都按系统默认进行选择。 8.和Windows XP相同,有一个称为“root”权限最大的管理员账户,使用这个账户登录主机可以完全掌握整个系统,安装过程中需要设置它的口令,请记住设置的口令。在后面的“验证配置”的窗口中,我们以系统默认的设置进行。 9.接下来是进行“个人桌面默认的设置”,选择“定制要安装的软件包集合”。然后是系统软件包的选择安装,在“选择软件包组”窗口中,为了测试每个软件包的功能,选择最后一个选项“全部安装”,安装全部软件包需4850MB的硬盘空间,按“下一步”后,系统开始进行软件包的安装。在安装过程中,系统会提示插入第二及第三张安装光盘。 10.软件包安装完成后,系统会提示“创建引导盘”,当系统无法引导的情况下,引导盘可作为紧急救援盘,我们强烈建议要制作引导盘。 11.随后系统显示“图形化界面(X)配置”、“显示器设置”和“定制图形化配置”的窗口,分别显示系统检测出的视频卡(显示卡)的型号、内存和显示器的型号以及色彩深度、屏幕分辨率等,一般按系统的默认值设置即可。 完成了上述这些操作后,系统会显示安装完成的提示窗口。当你重新启动机器后,Windows的开机画面将被多操作系统引导程序Grub的精美图案所替代
一,装一个虚拟机(如果系统配置较高,内存需512) 二,删除一个空的分区,用来装LINUX,没有光驱,最少电脑里得有一个LINUX的ISO备份.还得有一软驱和LINUX启动盘. 具体操作,有一点点的麻烦.建议多看看这方面的书.如何从硬盘安装LINX. 详解从硬盘安装linux 从硬盘安装linux 1>从网上下载redhat iso安装文件。并放在同一文件夹中 2>用WinISO解开第一张盘的.iso文件(如解到cd1文件加中)不用全部解出,只要 dosutils子文件夹就可以了。 3>进入MS-DOS打开cd1文件夹的dosutils子文件夹(加入cd1在c盘: c: cd cd1 cd dosutils)运行autoboot.exe 4>根据提示,选择从硬盘安装(加入你下载的.iso文件在d:redhat中,就选 择/hda5 在路径栏填写/redhat). 5>接下来您就进入了redhat的安装界面了。 6>dos下的安装步骤参照从光盘安装的步骤. 注意:一定请从dos下安装,没有所谓的可以从windows安装的说法。 把所有几张的安装文件iso放到同一文件夹中 我今天才在电脑上装上了linux8.0!顺便把我摸索出来的方法提供给大家,以供参 考! 从网上下载到linux8.0,为.iso文件。用下载到的isobuster软件释放为.tao文件 。六个文件全部拷贝到要装的电脑中。用释放出来的rawrite.exe和boot.img在 2000下制成启动盘。用启动盘启动,出现安装画面按回车键。 rh9硬盘安装指南 1]解开第一张盘的.iso文件,只释放dosutils文件夹,比如我们把这具文件夹释 放到c盘[fat32格式]的dusutils目录下。dosutils里有一个TRANS.TBL,要把此 文件删除才可以安装,否则系统提示:hd安装不支持图形安装,system reboot 2]重启进入DOS,进入我们前面举例的c:dosutils目录,然后运行 autoboot 选择本地磁盘安装即可 注意: 1.解开dosutils文件夹时,最好不要用什么winiso等等,用mount或者demon tool等 挂上映象,然后把dosutils拷出来 2.安装光盘映象一定要放在fat32分区的根目录下 第二、第三张 redhat ISO安装时用不用到的?1>从网上下载redhat iso安装文件 。并放在同一文件夹中
国内比较有名的是红帽子的LINUX,原来的都是有五张光盘组成的,和WINDOWS的安装方法一样的,你试下就知道了