zz如何成为一名黑客zz

Android OTA 升级实战指南:从原理到实现 本文详细解析了Android OTA升级的原理与实现方法,包括AB升级与Recovery升级的机制对比、OTA升级包制作流程以及应用层升级功能的实现。通过实战案例和常见问题排查指南,帮助开发者掌握Android系统无线升级技术,提升设备维护效率。 阅读详情

如何成为一名黑客
作者:Eric Raymond
翻译 waterbird [AKA]

---什么是黑客?

Jargon File中对“黑客”一词给出了很多个定义,大部分定义都涉及高超的编程技术,
强烈的解决问题和克服限制的欲望。如果你想知道如何成为一名黑客,那么好,只有两
方面是重要的。(态度和技术)

长久以来,存在一个专家级程序员和网络高手的共享文化社群,其历史可以追溯到几十
年前第一台分时共享的小型机和最早的ARPAnet实验时期。 这个文化的参与者们创造了
“黑客”这个词。 黑客们建起了Internet。黑客们使Unix操作系统成为今天这个样子。
黑客们搭起了Usenet。黑客们让WWW正常运转。如果你是这个文化的一部分,如果你已
经为它作了些贡献,而且圈内的其他人也知道你是谁并称你为一个黑客,那么你就是
一名黑客。

黑客精神并不仅仅局限于软件黑客文化圈中。有些人同样以黑客态度对待其它事情如
电子和音乐---事实上,你可以在任何较高级别的科学和艺术中发现它。软件黑客们
识别出这些在其他领域同类并把他们也称作黑客---有人宣称黑客实际上是独立于他
们工作领域的。 但在本文中,我们将注意力集中在软件黑客的技术和态度,以及发
明了“黑客”一词的哪个共享文化传统之上。

另外还有一群人,他们大声嚷嚷着自己是黑客,实际上他们却不是。他们是一些蓄意
破坏计算机和电话系统的人(多数是青春期的少年)。真正的黑客把这些人叫做“骇
客”(cracker),并不屑与之为伍。多数真正的黑客认为骇客们是些不负责任的懒家
伙,还没什么大本事。专门以破坏别人安全为目的的行为并不能使你成为一名黑客,
 正如拿根铁丝能打开汽车并不能使你成为一个汽车工程师。不幸的是,很多记者和
作家往往错把“骇客”当成黑客;这种做法激怒真正的黑客。

根本的区别是:黑客们建设,而骇客们破坏。

如果你想成为一名黑客,继续读下去。如果你想做一个骇客,去读 alt.2600 新闻组,
并在发现你并不像自己想象的那么聪明的时候去坐5到10次监狱。 关于骇客,我只想
说这么多。

---黑客的态度

黑客们解决问题,建设事物,信仰自由和双向的帮助,人人为我, 我为人人。
要想被认为是一名黑客,你的行为必须显示出你已经具备了这种态度。要想做的好象
你具备这种态度,你就不得不真的具备这种态度。但是如果你想靠培养黑客态度在黑
客文化中得到承认,那就大错特错了。因为成为具备这些特质的这种人对你自己非常
重要,有助于你学习,并给你提供源源不断的活力。同所有有创造性的艺术一样,成
为大师的最有效方法就是模仿大师的精神---不是仅从理智上,更要从感情上进行模仿。

So,如果你想做一名黑客,请重复以下事情直到你相信它们:

1 这世界充满待解决的迷人问题

做一名黑客有很多乐趣,但却是些要费很多气力方能得到的乐趣。 这些努力需要动力。
成功的运动员从健壮体魄,挑战自我极限中汲取动力。同样,做黑客,你必须
要有从解决问题,磨练技术,锻炼智力中得到基本的热望。如果你还不是这类人又想
做黑客,你就要设法成为这样的人。否则你会发现,你的黑客热情会被其他诱惑无情
地吞噬掉---如金钱、性和社会上的虚名。

(同样你必须对你自己的学习能力建立信心---相信尽管你对某问题所知不多,但如果
你一点一点地学习、试探,你最终会掌握并解决它。)

2. 一个问题不应该被解决两次

聪明的脑瓜是宝贵的,有限的资源。当这个世界还充满其他有待解决的有趣问题之时,
他们不应该被浪费在重新发明轮子这些事情上。 作为一名黑客,你必须相信其他黑客
的思考时间是宝贵的---因此共享信息,解决问题并发布结果给其他黑客几乎是一种道
义,这样其他人就可以去解决新问题而不是重复地对付旧问题。

(你不必认为你一定要把你的发明创造公布出去,但这样做的黑客是赢得大家尊敬最多
的人。卖些钱来给自己养家糊口,买房买车买计算机甚至发大财和黑客价值也是相容
的,只要你别忘记你还是个黑客。)

3. 无聊和乏味的工作是罪恶

黑客们应该从来不会被愚蠢的重复性劳动所困扰,因为当这种事情发生时就意味着他
们没有在做只有他们才能做的事情---解决新问题。这样的浪费伤害每一个人。因此,
无聊和乏味的工作不仅仅是令人不舒服而已,它们是极大的犯罪。 要想做的象个黑客,
你必须完全相信这点并尽可能多地将乏味的工作自动化,不仅为你自己,也为了其他人
(尤其是其他黑客们)。

(对此有一个明显的例外。黑客们有时也做一些重复性的枯燥工作以进行“脑力休息”,
或是为练熟了某个技巧,或是获得一些除此无法获得的经验。但这是他自己的选择---有
脑子的人不应该被迫做无聊的活儿。)


4 自由就是好

黑客们是天生的反权威主义者。任何能向你发命令的人会迫使你停止解决令你着迷的问
题,同时,按照权威的一般思路,他通常会给出一些极其愚昧的理由。因此,不论何时
何地,任何权威,只要他压迫你或其他黑客,就要和他斗到底。

(这并非说任何权力都不必要。儿童需要监护,罪犯也要被看管起来。 如果服从命令得
到某种东西比起用其他方式得到它更节约时间,黑客会同意接受某种形式的权威。但这
是一个有限的、特意的交易;权力想要的那种个人服从不是你的给予,而是无条件的
服从。)

权力喜爱审查和保密。他们不信任自愿的合作和信息共享---他们只喜欢由他们控制的
合作。因此,要想做的象个黑客,你得对审查、保密,以及使用武力或欺骗去压迫人
们的做法有一种本能的反感和敌意。

5. 态度不能替代能力

要做一名黑客,你必须培养起这些态度。但只具备这些态度并不能使你成为一名黑客,
就象这并不能使你成为一个运动健将和摇滚明星一样。成为一名黑客需要花费智力,
实践,奉献和辛苦。

因此,你必须学会不相信态度,并尊重各种各样的能力。黑客们不会为那些故意装模
做样的人浪费时间,但他们却非常尊重能力---尤其是做黑客的能力,不过任何能力
总归是好的。具备很少人才能掌握的技术方面的能力尤其为好,而具备那些涉及脑力、
技巧和聚精会神的能力为最好。

如果你尊敬能力,你会享受提高自己能力的乐趣---辛苦的工作和奉献会变成一种高度
娱乐而非贱役。 要想成为一名黑客,这一点非常重要。


---基本黑客技术

黑客态度是重要的,但技术更加重要。态度无法替代技术,在你被别的黑客称为黑客之
前,有一套基本的技术你必须掌握。 这套基本技术随着新技术的出现和老技术的过时
也随时间在缓慢改变。例如,过去包括使用机器码编程,而知道最近才包括了HTML语
言。但现在明显包括以下技术:

1 学习如何编程

这当然是最基本的黑客技术。如果你还不会任何计算机语言,我建议你从Python开始。
它设计清晰,文档齐全,对初学者很合适。尽管是一门很好的初级语言,它不仅仅只
是个玩具。它非常强大,灵活,也适合做大型项目。

但是记住,如果你只会一门语言,你将不会达到黑客所要求的技术水平,甚至也不能
达到一个普通程序员的水平---你需要学会如何以一个通用的方法思考编程问题,独立
于任何语言。要做一名真正的黑客,你需要学会如何在几天内通过一些手册,结合你
现在所知,迅速掌握一门新语言。这意味着你应该学会几种不同的语言。

如果要做一些重要的编程,你将不得不学习C语言,Unix的核心语言。其他对黑客而言比
较重要的语言包括Perl和LISP。 Perl很实用,值得一学;它被广泛用于活动网页和系
统管理,因此即便你从不用Perl写程序,至少也应该能读懂它。 LISP 值得学习是因
为当你最终掌握了它你会得到丰富的经验;这些经验使你在以后的日子里成为一个更好
的程序员,即使你实际上可能很少使用LISP本身。

当然,实际上你最好四种都会。 (Python, C, Perl, and LISP). 除了是最重要的四种
基本语言,它们还代表了四种非常不同的编程方法,每种都会让你受益非浅。

这里我无法完整地教会你如何编程---这是个复杂的活儿。但我可以告诉你,书本和课程
也不能作到。几乎所有最好的黑客都是自学成材的。真正能起作用的就是去亲自读代码
和写代码。

学习如何编程就象学习用自然语言写作一样。最好的做法是读一些大师的名著,试着自
己写点东西,再读些,再写点,又读些,又写点....如此往复,直到你达到自己在范文
中看到的简洁和力量。

过去找到好的代码去读是困难的,因为很少有大型程序的可用源代码能让新手练手。这
种状况已经得到了很大的改善;现在有很多可用的开放源码软件,编程工具和操作系统
(全都有黑客写成)。这使我们自然地来到第二个话题...

2 得到一个开放源码的Unix并学会使用、运行它

我假设你已经拥有了一台个人计算机或者有一个可用的( 今天的孩子们真幸福 :-) )。
新手们最基本的一步就是得到一份Linux或BSD-Unix,安装在个人计算机上,并运行它。
当然,这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发送的---你无法
读到它的源码,更不可能修改它。尝试在DOS或Windows的机器上学习黑客技术,就象是
在腿上绑了铁块去学跳舞。

除此之外,Unix还是Internet的操作系统。你可以不知道Unix而学会用Internet,但不懂
它你就无法成为一名Internet黑客。因为这个原因,今天的黑客文化在很大程度上是以
Unix为中心的。(这点并不总是真的,一些很早的黑客对此很不高兴,但Unix和Internet
之间的共生关系已是如此之强,甚至连微软也无可奈何)

So,装一个Unix---我个人喜欢Linux,不过也有其他选择。(你也可以在同一台机器上同
时运行DOS,Windows和Linux)学会它。运行它。用它跟Internet对话。读它的代码。试着
去修改他。你会得到比微软操作系统上好的多的编程工具(包括C,Lisp, Python, and
Perl),你会得到乐趣,并将学到比你想象的更多知识。

关于学习Unix的更多信息,请看 The Loginataka.

要得到Linux,请看: 哪里能得到 Linux.

3 学会如何使用WWW和写HTML

大多黑客文化建造的东西都在你看不见的地方发挥着作用,帮助工厂、办公室和大学正
常运转,表面上很难看到它对他人的生活的影响。Web是一个大大的例外。即便政客也同
意,这个巨大而耀眼的黑客玩具正在改变整个世界。单是这个原因(还有许多其它的)
, 你就需要学习如何掌握Web。

这并不是仅仅意味着如何使用浏览器(谁都会),而是要学会如何写HTML,Web的标记语
言。如果你不会编程,写HTML会教你一些有助于学习的思考习惯。因此,先建起自己的主
页。

但仅仅建一个主页也不能使你成为一名黑客。 Web里充满了各种网页。多数是无意义的,
零信息量垃圾。

要想有价值,你的网页必须有内容---必须有趣或对其它黑客有用。这样,我们来到下一
个话题....


---黑客文化中的地位


象大部分不涉及金钱的文化一样,黑客王国的运转靠声誉维护。你设法解决有趣的问题,
但它们到底多有趣,你的解法有多好,是要有那些和你具有同样技术水平的人或比你更
牛的人去评判的。

相应地,当你在玩黑客游戏时,你知道,你的分数要靠其他黑客对你的技术的评估给出。
(这就是为什么只有在其它黑客称你为黑客是,你才算得上是一名黑客)这个事实常会被
黑客是一项孤独的工作这一印象所减弱;它也会被另一个黑客文化的禁忌所减弱(此禁忌
的效力正在减弱但仍很强大):拒绝承认自我或外部评估是一个人的动力。

特别地,黑客王国被人类学家们称为一种精英文化。在这里你不是凭借你对别人的统治来
建立地位和名望,也不是靠美貌,或拥有其他人想要的东西,而是靠你的奉献。尤其是奉
献你的时间,你的才智和你的技术成果。

要获得其他黑客的尊敬,你可以做以下五种事情:


1. 写开放源码的软件

第一个(也是最基本和传统的)是写些被其他黑客认为有趣或有用的程序,并把程序的原
代码公布给大家共享。
(过去我们称之为“自由软件-free software”,但这却使很多不知free的精确含义的人
感到不解。现在我们很多人使用“开放源码-open source”这个词)

黑客王国里最受尊敬的大牛们是那些写了大型的、具有广泛用途的软件,并把它们公布出
去,使每人都在使用他的软件的人。

2. 帮助测试并修改开放源码的软件

黑客们也尊敬也那些使用、测试开放源码软件的人。在这个并非完美的世界上,我们不可
避免地要花大量软件开发的时间在测试和抓臭虫阶段。 这就是为什么任何开放源码的作
者稍加思考后都会告诉你好的beta测试员象红宝石一样珍贵。 (他知道如何清楚描述出错
症状,很好地定位错误,能忍受快速发布的软件中的bug,愿意使用一些简单的诊断工具)
 甚至他们中的一个能判断出哪个测试阶段是延长的、令人精疲力尽的噩梦,哪个只是一
个有益健康的玩意儿。

如果你是个新手,试着找一个赶兴趣的正在开发的程序,作一个好的beta测试员。从帮着
测试,到帮着抓臭虫,到最后帮着改程序,你会不断进步。以后你写程序时,会有别人来
帮你,你就得到了你当初善举的回报。

3. 公布有用的信息

另一个好事是收集整理网页上有用有趣的信息或文档如FAQ。许多主要FAQ的维护者和其他
开放源码的作者一样受到大家的尊敬。


4. 帮助维护基础设施的运转

黑客文化是靠自愿者运转的。要使Internet能正常工作,就要有大量枯燥的工作不得不去
完成----管理mail list,newsgroup,维护大量文档,开发RFC和其它技术标准等等。做
这类事情的人会得到很多人的尊敬,因为每人都知道这些事情是耗时耗力的苦役,不象编
码那样好玩。做这些事情需要毅力。

5. 为黑客文化本身服务

最后,你可以为这个文化本身服务(例如象我这样,写一个“如何成为黑客”的初级教程
 :-- )(hehe,象我这样把它翻成中文 :-) ) 这并非一定要在你已经在这里呆了很久,
精通所有以上4点,获得一定声誉后后才能去做。

黑客文化没有领袖。精确地说,它确实有些文化英雄和部落长者和历史学家和发言人。若
你在这圈内呆的够长,你或许成为其中之一。
记住:黑客们不相信他们的部落长者的自夸的炫耀,因此很明显地去追求这种名誉是危险
的。你必须具备基本的谦虚和优雅。

---黑客和怪人(Nerd)的联系

同流行的传说相反,做一名黑客并不一定要你是个怪人。然而,很多黑客都是怪人。做一
个出世者有助于你集中精力进行更重要的事情,如思考和编程。
因此,很多黑客都愿意接受“怪人”这个标签,更有甚者愿意使用“傻子(geek)”一词并
自以为豪---这是宣布他们与主流社会不合作的声明。

如果你能集中足够的精力来做好黑客同时还能有正常的生活,这很好。今天作到这一点比
我在1970年代是个新手是要容易的多。今天主流文化对技术怪人要友善的多。甚至有更多
的人意识到黑客通常更富爱心,是块很好的做恋人和配偶的材料。 更多信息见 Girl's
Guide to Geek Guys.

如果你因为生活上不如意而为做黑客而吸引,那也没什么---至少你不会分神了。或许以
后你会找到自己的另一半。

---风格的意义

重申一下,做一名黑客,你必须进入黑客精神之中。当你不在计算机边上时,你仍然有很
多事情可做。它们并不能替代真正的编程(没有什么能替代编程),但很多黑客都那么做
,并感到它们与黑客精神存在一种本质的关联。

阅读科幻小说。参加科幻小说讨论会。(一个很好的寻找黑客的场合)
研究禅宗,或练功习武。
练就一双精确的耳朵,学会鉴赏特别的音乐。学会玩某种乐器,或唱歌。
提高对双关语的鉴赏。
学会流畅地用母语写作。(令人惊讶的时,我所知道的所有最棒的黑客,都是很不错的作
家)

这些事情,你做的越多,你就越适合做黑客。至于为什么偏偏是这些事情,原因并不很清
楚,但它们都涉及到了左-右脑的综合技巧,这似乎是关键所在。(黑客们既需要清晰的
逻辑思维,有时也需要强烈的跳出逻辑之外的直觉)

最后,还有一些不要去做的事情。

不要使用愚蠢的,过于哗众取宠的ID
不要自称为网络崩客(punk) ,也不要对那些人浪费时间
不要寄出充满拼写和语法错误的email,或张贴错误百出的文章

做以上的事情,会使大大损害你的声誉。黑客们个个记忆超群---你将需要数年的时间让他们
忘记你的愚蠢。

---其它资源

Peter Seebach为那些不知如何同黑客打交道的经理们维护了一个非常精彩的黑客FAQ。

The Loginataka 有许多关于如何正确培养一个Unix黑客的态度的材料。

我也曾写过一篇“黑客文化简史”。

我还写过另一篇文章,“大教堂与集市”,解释了许多Linux和开放源码文化的运做原理
。我还在它的续集“开拓智域”一文中有更直接的论述。

---FAQ(常问问题解答)

问:你会教我如何做黑客吗?

自从第一次发布此页,我每周都会得到一些请求,要我“教会他如何做黑客”;遗憾的
是,我没有足够的时间和精力来做这个;我自己的编程项目已经占用了我110%的时间。
甚至即便我想教你也不可能,黑客基本上是一项需要你自行修炼的的态度和技术。你会
发现即使真正的黑客想帮助你,如果你乞求他们填鸭一样教你的话,你不会赢得他们的
尊敬。首先去学习。显示你在尝试,你能靠自己去学习。然后再去向黑客们请教问题。


问:你会帮我“黑”掉一个站点吗?或者教我怎么黑它?

No. 任何在读完FAQ后还问此问题人,都是愚不可及的家伙,即使有时间我也不会理睬。
任何发给我的此类mail都会被忽略或被痛斥。

问:哪里能找到真正的可以与之交流的黑客?

最佳办法是就近参加一个Unix或Linux的用户组,参加他们的会议。

问:我该先学哪种语言?

HTML, 如果你还不会的话.
但它不是一个真正的编程语言。当你准备编程时,我建议你从 Python开始. 会有很多人
向你推荐Perl,它比Python还受欢迎,但却难学一些。

C 是非常重要的,但它却是最难学的。不要一开始就尝试学C。

问:开放源码的自由软件不会使程序员饿肚子吗?

这似乎不大可能---到目前,开放源码软件产业创造了而不是消灭了大量工作机会。
如果写一个程序比不写一个程序只是个纯粹经济上的收益的话,无论它是否免费,只要
它被完成,程序员都会从中得到回报。而且,无论软件是由多么的free的方法开发的,
对更新的软件应用的需求总是会有的。
问:我从何学起?哪里有免费的Unix?

本页的其他地方指向最常用的免费Unix。要做一名黑客,你需要自立自强,以及自我教
育的能力。
现在开始吧......

SpringAI系列 - MCP篇(二) - MCP Server Boot Starter 此处需注意之前的。 阅读详情

相关推荐

实战指南:如何用Kamailio+FreeSWITCH搭建高并发企业通信系统(附配置模板)

本文提供了一份实战指南,详细介绍了如何利用Kamailio与FreeSWITCH构建高并发企业通信系统。通过将Kamailio作为高性能SIP信令平面处理路由与负载均衡,FreeSWITCH作为媒体与应用平面负责通话与业务逻辑,实现信令与媒体分离的电信级架构。文章深入解析了架构设计、核心配置、集群部署与性能优化,并附有配置模板,旨在帮助企业构建可水平扩展、高可用的通信解决方案。

dell8的博客 364

[zz]Unicode演义

[url]http://woolzey.bokee.com/6749370.html[/url] 前Unicode时代 在Unicode出来,我们最熟悉的编码是ASCII。ASCII严格的说是一个7位的英语 编码标准,定义了33个控制字符和95个可显示字符。第8位留作奇偶校验,但是 通常都置为0。 ASCII只适用于英语,缺少其他语言的支持。IBM最早使用“代码页”的方法映射...

iunknown 1万+

STM32单片机远程升级

stm32远程升级

fang_yang_wa的博客 1万+

C++字符串完全指南(zz)

文章真的很好!让我想明白了许多,,,所以zz了~~ C++字符串完全指南 - Win32字符编码(一)前言字符串的表现形式各异,象TCHAR,std::string,BSTR等等,有时还会见到怪怪的用_tcs起头的宏。这个指南的目的就是说明各种字符串类型及其用途,并说明如何在必要时进行类型的相互转换。在指南的第一部分,介绍三种字符编码格式。理

wk23415的专栏 3260

ABAQUS二次开发中创建SET

在ABAQUS中创建加载、边界条件时,需要使用set,创建set时需要使用对象集合对象中的Set函数,这个函数需要提供加入对象集合的列表,但这个对象列表好像并不能自行创建,只能通过ABAQUS各类对象集合中的findAt、getSequenceFromMask、getByBoundingSphere、getByBoundingCylinder或getByBoundingSphere函数得到,但这几个函数在直接使用PYTHON编程时都不太好用。这个函数返回一个字典,如下所示。

hohoyu的专栏 2482

Unity Shader Graph 2D - Procedural程序化图形转动的环状六边形

Hexagon又称六边形,在游戏中是十分常见的基础形状,本文将使用程序化的六边形来制作多个环状六边形叠加的转动动画效果,实践Unity Shader Graph中的常用节点功能。

Giver的博客 1928

linux下的zz命令,[zz]Linux下压缩命令

一、Linux下和windows下的压缩文件的几个说明在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、 bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip 和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希...

weixin_28895307的博客 4213

Android系统开发工程师面试指南与参考答案

本文整理了Android系统开发工程师面试常见问题与参考答案。核心内容涵盖:1)Framework层定制方法,如修改HAL和系统服务;2)ANR问题分析工具(systrace)与解决方案;3)性能优化实践,包括开机加速和功耗管理;4)四大组件工作机制与应用案例;5)Native崩溃调试技巧。文章强调通过AOSP源码研究、工具使用和项目案例准备来提升面试表现,重点考察应聘者的系统开发深度和实操能力。参考答案均基于实际开发经验,提供可量化的优化成果说明。

郑伟强dev的专栏 254

特殊的IP地址介绍

    就像我们每个人都有一个身份证号码一样,网络里的每台电脑(更确切地说,是每一个设备的网络接口)都有一个IP地址用于标示自己。我们可能都知道这些地址由四个字节组成,用点分十进制表示以及它们的A,B,C分类等,然而,在总数大约为四十多亿个可用IP地址里,你知道下面一些常见的有特殊意义地址吗?我们一起来看看吧:  一、0.0.0.0  严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它

牛人网络 3199

Allegro如何进行四层板板层设计

板层的设计

weixin_42499230的博客 3189

基于STM32L4XX、HAL库的MP2672GD-0000-Z充电芯片驱动程序设计

CHG_STAT_GPIO_Port, CHG_STAT_Pin, // 这些宏应由 CubeMX 生成在 main.h。

zhusl6688的博客 494

The 100 Best Products of 2005【ZZ】

linked from http://www.pcworld.com/reviews/article/0,aid,120763,pg,12,00.aspThe 100 Best Products of 2005   All Products Listed by Ranking Mozilla Firefox Web Browser Google Gmail Web Mail A...

weixin_34253126的博客 2631

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何成为一名黑客

Copyright © 2001 by Eric S. Raymond 翻译:Barret 翻译水平有限,欢迎来信指教,我的Email是barret(a)ynmail.com, 但请勿问电脑技术问题(反正也不懂)。 允许未经作者及译者的同意进行非商业目的的转载,但必须保持原文的完整性。 内容一览 为什么会有这份文档? 什么是黑客? 黑客应有的态度 黑客的基本技能 黑客文...

weixin_30561425的博客 2080

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

如何成为一名黑客?

如何成为一名黑客? Eric Raymond 身为Jargon File的编辑,常有一些...

chenjiuwu6074的博客 2701

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

成为一名优秀黑客的12个基本步骤

黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。 如果你想成为一名优秀的黑客,下面是12种最重要的基础条件,请认真阅读: 1. 学习UNIX/LINUX UNIX/LINUX是一种安全性更高的开源操作系统,最早由AT&T实验室开发,并在安

lxl105491的专栏 2万+

关于如何成为一名黑客

在吧里那么长时间了,有很多人有这样的疑问,说到底如何成为一名黑客呢? 或者我很想学习黑客技术,可我该如何起步呢?能不能给说得详细点的流程? 在这里我原本不想废话太多的,但看到很多的朋友对此感到很迷茫,很需要有一个明确的回答,那么,今天,我就以这个问题给大家分析一下. 第一、你得明白黑客两个字的官方解释是什么。 如果这个问题你答不上来,那我建议你上百度,搜黑客的含义。

负是非的专栏 759

成为一名厉害的黑客,必须知道的12个步骤,黑客入门

黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。

S18374的博客 1935

如何成为一名【黑客】

【黑客】”(hacker)这个词,一开始只是单纯地用来指代在电脑系统和信息科技方面的能手,最近几年才因为一些臭名昭著的网络罪犯而蒙上了一层灰色阴影。实际上,现在有很多公司专门雇佣【黑客】来测试系统安全强度,这样的“【黑客】”懂得适可而止,遵守法律,获得公司信任的同时还能拿到不菲的薪酬。在成为【黑客】之前,你需要做两点准备:1、学一门编程语言。2、确定你的目标。收集和目标相关信息的过程又被称为枚举。你事先掌握的信息越多,你的准备就越充分。好了,接下来,【黑客】十部曲:1、

youmaob的博客 251

如何成为一名黑客?小白必学的12个基本步骤_如何成为黑客

黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。

Galaxy_0的博客 1289
下一篇: zz"Who do you think is the best coder, and why?"zz
unicode1985
博客等级 码龄22年 2粉丝 29原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值