├── DB └── README.md ├── README.md ├── README.rst ├── back-end ├── README.md └── index.html ├── front-end ├── README.md ├── compile-tools.md ├── index.html ├── webkit │ └── index.html └── websocket │ └── index.html ├── hacker.html └── learning.md /DB/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## 数据库知识结构 4 | - MySQL 5 | - MySQL Proxy(MySQL官方) 6 | - 盛大研究院 - Amoeba(配置方便) 7 | - Alibaba - [Cobar](https://github.com/alibaba/cobar) 8 | - Qihoo360 - [Atlas](https://github.com/Qihoo360/Atlas) 9 | - MyCat http://www.mycat.org.cn 10 | 11 | 12 | ## 数据库分布式解决方案 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | What is a Full Stack developer? 2 | ========================= 3 | 4 | Is it reasonable to expect mere morals to have mastery over every facet of the development stack? Probably not, but Facebook can ask for it. I was told at OSCON by a Facebook employee that they only hire ‘Full Stack’ developers. Well, what does that mean? 5 | 6 | To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology. 7 | 8 | **Good developers who are familiar with the entire stack know how to make life easier for those around them.** This is why I’m so against silos in the work place. Sure, politics and communication challenges get in the way in large organizations. I think the point Facebook is going for with their hiring policy is, if smart people use their heads and their hearts, a better product gets built in less time. 9 | 10 | ### **LAYERS OF THE FULL STACK:** 11 | 12 | 1. **Server, Network, and Hosting Environment.** 13 | - This involves understanding what can break and why, taking no resource for granted. 14 | - Appropriate use of the file system, cloud storage, network resources, and an understanding of data redundancy and availability is necessary. 15 | - How does the application scale given the hardware constraints? 16 | - What about multi-threading and race conditions? Guess what, you won’t see those on your development machine, but they can and do happen in the real world. 17 | - Full stack developers can work side by side with DevOps. The system should provide useful error messages and logging capabilities. DevOps will see the messages before you will, so make them count. 18 | 2. **Data Modeling** 19 | - If the data model is flawed, the business logic and higher layers start to need strange (ugly) code to compensate for corner cases the data model doesn’t cover. 20 | - Full stack developers know how to create a reasonably normalized relational model, complete with foreign keys, indexes, views, lookup tables, etc. 21 | - Full stack developers are familiar with the concept of non-relational data stores and understand where they shine over relational data stores. 22 | 3. **Business Logic** 23 | - The heart of the value the application provides. 24 | - Solid object oriented skills are needed here. 25 | - Frameworks might be needed here as well. 26 | 4. **API layer / Action Layer / MVC** 27 | - How the outside world operates against the business logic and data model. 28 | - Frameworks at this level should be used heavily. 29 | - Full stack developers have the ability to write clear, consistent, simple to use interfaces. The heights to which some APIs are convoluted repel me. 30 | 5. **User Interface** 31 | - Full stack developers: a) understand how to create a readable layout, or b) acknowledge they need help from artists and graphic designers. Either way, implementing a good visual design is key. 32 | - Can include mastery of HTML5 / CSS. 33 | - JavaScript is the up and coming language of the future and lots of exciting work is being done in the JavaScript world (node, backbone, knockout…) 34 | 6. **User Experience** 35 | - Full stack developers appreciate that users just want things to work. 36 | - A good system doesn’t give its users carpal tunnel syndrome or sore eyes. A full stack developer can step back and look at a process that needs 8 clicks and 3 steps, and get it down to one click. 37 | - Full stack developers write useful error messages. If something breaks, be apologetic about it. Sometimes programmers inadvertently write error messages that can make people feel stupid. 38 | 7. **Understanding what the customer and the business need.** 39 | - Now we are blurring into the line of architect, but that is too much of a hands off role. 40 | - Full stack developers have a grasp of what is going on in the field when the customer uses the software. They also have a grasp of the business. 41 | 42 | 43 | ##### **Other Pieces of the Puzzle:** 44 | 45 | 1. Ability to write quality unit tests. By the way, even JavaScript can have unit tests these days. 46 | 2. Understanding of repeatable automated processes for building the application, testing it, documenting it, and deploying it at scale. 47 | 3. An awareness of security concerns is important, as each layer presents its own possible vulnerabilities. 48 | 49 | 50 | ##### **Closing Thoughts:** 51 | 52 | It is very bad practice to tightly couple code to a specific implementation (library, OS, hardware, etc). Just because a full stack developer understands the entire spectrum doesn’t mean they have license to take shortcuts. Well, actually they do if it is a build and throw away prototype. 53 | 54 | Technology start-ups need full stack developers for their versatility! However, as an organization matures, it needs more and more focused skills. 55 | 56 | I’m not sure you can call yourself a full stack developer until you have worked in multiple languages, platforms, and even industries in your professional career. Full stack goes beyond a ‘senior engineer’, as it is along the same lines as a polyglot programmer but with a higher view of all the connecting pieces. Note that on my list, only items 3-5 involve writing code. 57 | 58 | 59 | 60 | 61 | 62 | ### **技术站点** 63 | - Hacker News:非常棒的针对编程的链接聚合网站 64 | - Programming reddit:同上 65 | - MSDN:微软相关的官方技术集中地,主要是文档类 66 | - infoq:企业级应用,关注软件开发领域 67 | - OSChina:开源技术社区,开源方面做的不错哦 68 | - cnblogs,51cto,csdn:常见的技术社区,各有专长 69 | - stackoverflow:IT技术问答网站 70 | - GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, 71 | - OpenStack等免费的it电子书:http://it-ebooks.info/ 72 | - DevStore:开发者服务商店 73 | 74 | ### **不错的书籍** 75 | - 人件 76 | - 人月神话 77 | - 代码大全2 78 | - 计算机程序设计艺术 79 | - 程序员的自我修养 80 | - 程序员修炼之道 81 | - 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 82 | - 深入理解计算机系统 83 | - 软件随想录 84 | - 算法导论(麻省理工学院出版社) 85 | - 离线数学及其应用 86 | - 设计模式 87 | - 编程之美 88 | - 黑客与画家 89 | - 编程珠玑 90 | - C++ Prime 91 | - Effective C++ 92 | - TCP/IP详解 93 | - Unix 编程艺术 94 | - 《精神分析引论》弗洛伊德 95 | - 搞定:无压力工作的艺术 96 | 97 | ### **平台工具(都是开源的好东东哦)** 98 | - Redmine/Trac:项目管理平台 99 | - Jenkins/Jira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究) 100 | - Sonar:代码质量管理平台 101 | - git,svn:源代码版本控制系统 102 | - GitLib/Gitorious:构建自己的GitHub服务器 103 | - gitbook:https://www.gitbook.io/写书的好东西,当然用来写文档也很不错的 104 | - Travis-ci:开源项目持续集成必备,和GitHub相结合,https://travis-ci.org/ 105 | - 开源测试工具、社区(Selenium、OpenQA.org) 106 | - Puppet:一个自动管理引擎,可以适用于Linux、Unix以及Windows平台。所谓配置管理系统,就是管理机器里面诸如文件、用户、进程、软件包这些资源。无论是管理1台,还是上万台机器Puppet都能轻松搞定。 107 | - Nagios:系统状态监控报警,还有个Icinga(完全兼容nagios所有的插件,工作原理,配置文件以及方法,几乎一模一样。配置简单,功能强大) 108 | - Ganglia:分布式监控系统 109 | - fleet:分布式init系统 110 | 111 | ### **爬虫相关(好玩的工具)** 112 | - Phantomjs 113 | - berserkJS(基于Phantomjs的改进版本) 114 | - SlimerJS 115 | - CasperJS 116 | - selenium 117 | 118 | ### **Web 服务器性能/压力测试工具/负载均衡器** 119 | - http_load: 程序非常小,解压后也不到100K 120 | - webbench: 是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力 121 | - ab: ab是apache自带的一款功能强大的测试工具 122 | - Siege: 一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 123 | - squid(前端缓存),nginx(负载),nodejs(没错它也可以,自己写点代码就能实现高性能的负载均衡器):常用的负载均衡器 124 | - Piwik:开源网站访问量统计系统 125 | - ClickHeat:开源的网站点击情况热力图 126 | - HAProxy:高性能TCP /HTTP负载均衡器 127 | - ElasticSearch:搜索引擎基于Lucene 128 | - Page Speed SDK和YSLOW 129 | - HAR Viewer: HAR分析工具 130 | - protractor:E2E(end to end)自动化测试工具 131 | 132 | ### **Web 前端相关** 133 | - GRUNT: js task runner 134 | - Sea.js: js模块化 135 | - knockout.js:MVVM开发前台,绑定技术 136 | - Angular.js: 使用超动感HTML & JS开发WEB应用! 137 | - Highcharts.js,Flot:常用的Web图表插件 138 | - Raw:非常不错的一款高级数据可视化工具 139 | - Rickshaw:时序图标库,可用于构建实时图表 140 | - JavaScript InfoVis Toolkit:另一款Web数据可视化插件 141 | - Pdf.js,在html中展现pdf 142 | - ACE,CodeMirror:Html代码编辑器(ACE甚好啊) 143 | - NProcess:绚丽的加载进度条 144 | - impress.js:让你制作出令人眩目的内容展示效果(类似的还有reveal) 145 | - Threejs:3DWeb库 146 | - Hightopo:基于Html5的2D、3D可视化UI库 147 | - jQuery.dataTables.js:高度灵活的表格插件 148 | - Raphaël:js,canvas绘图库,后来发现百度指数的图形就是用它绘出来的 149 | - director.js:js路由模块,前端路由,Nodejs后端路由等,适合构造单页应用 150 | - pace.js:页面加载进度条 151 | - bower:Web包管理器 152 | - jsnice:有趣的js反编译工具,猜压缩后的变量名 http://www.jsnice.org/ 153 | - D3.js: 是一个基于JavaScript数据展示库(类似的还有P5.js) 154 | - Zepto.js:移动端替代jQuery的东东,当然也可以使用jquery-mobile. 155 | 156 | #### **UI框架:Foundation,Boostrap,Pure,EasyUI,Polymer** 157 | 158 | #### 前端UI设计师必去的几个网站:Dribbble,awwwards,unmatchedstyle,UIMaker 159 | 160 | - Mozilla 开发者中心:https://developer.mozilla.org/en-US/ 161 | - 图标资源:IcoMoon(我的最爱),Themify Icons,FreePik,Glyphiconsart 162 | - Dialog:非常漂亮的对话框 163 | - AdminLTE:github上的一个开源项目,基于Boostrap3的后台管理页面框架 164 | - Respond.js:让不懂爱的IE6-8支持响应式设计 165 | - require.js: js模块加载库 166 | - select2:比chosen具有更多特性的选择框替代库 167 | - AngularUI:集成angular.js的UI库 168 | - normalize.css: 采用了现代化标准让各浏览器渲染出的html保持一致的库 169 | - CreateJS:Html5游戏引擎Less,Compass:简化CSS开发 170 | - emojify.js:用于自动识别网页上的Emoji文字并将其显示为图像 171 | - simditor:一个不错的开源的html编辑器,简洁高效 172 | - Sencha: 基于html5的移动端开发框架 173 | - SuperScrollorama+TweenMax+skrollr:打造超酷的视差滚动效果网页动画 174 | - jquery-smooth-scroll:同上,平滑滚动插件 175 | - Animate.css:实现了各种动画效果的css库 176 | - Emmet:前端工程师必备,ZenCode的前身 177 | - MagicDraw:Uml图工具 178 | 179 | ### **大数据处理/数据分析/分布式工具** 180 | - Hadoop:分布式的文件系统,结合其MapReduce编程模型可以用来做海量数据的批处理(Hive,Pig,HBase啥的就不说了),值得介绍的是Cloudera的Hadoop分支CDH5,基于YARN MRv2集成了Spark可直接用于生产环境的Hadoop,对于企业快速构建数据仓库非常有用。 181 | - Ceph:Linux分布式文件系统(特点:无中心) 182 | - Storm:实时流数据处理,可以看下IBM的一篇介绍 (还有个Yahoo的S4,也是做流数据处理的) 183 | - Spark:大规模流式数据处理(可以应付企业中常见的三种数据处理场景:复杂的批量数据处理(batch data processing);基于历史数据的交互式查询(interactive query);基于实时数据流的数据处理(streaming data processing)),CSND有篇文章介绍的不错 184 | - Spark Streaming:基于Spark的实时计算框架 185 | -Tachyon:分布式内存文件系统 186 | - Mesos:计算框架一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享Impala:新一代开源大数据分析引擎,提供Sql语义,比- Hive强在速度上 187 | - SNAPPY:快速的数据压缩系统,适用于Hadoop生态系统中 188 | 189 | - Kafka:高吞吐量的分布式消息队列系统 190 | 191 | - ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线 192 | 193 | - MQTT:Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分 194 | 195 | - RabbitMQ:记得OpenStack就是用的这个东西吧 196 | 197 | - ZeroMQ:宣称是将分布式计算变得更简单,是个分布式消息队列,可以看下云风的一篇文章的介绍开源的日志收集系统:scribe、chukwa、kafka、flume。这有一篇对比文章 198 | 199 | - Zookeeper:可靠的分布式协调的开源项目 200 | 201 | - Databus:LinkedIn 实时低延迟数据抓取系统 202 | 203 | 204 | - 数据源获取:Flume、Google Refine、Needlebase、ScraperWiki、BloomReach 205 | 206 | - 序列化技术:JSON、BSON、Thrift、Avro、Google Protocol Buffers 207 | 208 | - NoSql:Apache Hadoop、Apache Casandra、MongoDB、Apache CouchDB、Redis、BigTable、HBase、Hypertable、Voldemort、Neo4j 209 | 210 | - MapReduce相关:Hive、Pig、Cascading、Cascalog、mrjob、Caffeine、S4、MapR、Acunu、Flume、Kafka、Azkaban、Oozie、Greenplum 211 | 212 | - 数据处理:R、Yahoo! Pipes、Mechanical Turk、Solr/ Lucene、ElasticSearch、Datameer、Bigsheets、TinkerpopNLP自然语言处理:Natural Language Toolkit、Apache OpenNLP、Boilerpipe、OpenCalais 213 | 214 | ### **机器学习** 215 | - WEKA 216 | - Mahout 217 | - scikits.learn 218 | - SkyTree 219 | 220 | 221 | ### **可视化技术** 222 | - GraphViz 223 | - Processing 224 | - Protovis 225 | - Google Fusion Tables 226 | - Tableau 227 | - Highcharts 228 | - EChats(百度的还不错) 229 | - Raphaël.js 230 | 231 | •Kettle:开源的ETL工具 232 | •Pentaho:以工作流为核心的开源BI系统 233 | •Mondrian:开源的Rolap服务器 234 | •Oozie:开源hadoop的工作流调度引擎 235 | 236 | ### **开源的数据分析可视化工具** 237 | - Weka 238 | - Orange 239 | - KNIME 240 | 241 | 242 | Cobar:阿里巴巴的MySql分布式中间件 243 | 244 | ### **C & C++** 245 | 1. Thrift:用来进行可扩展且跨语言的服务的开发(类似的还有个Avro,Google protobuf)。 246 | 247 | 2. libevent:是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。(对了还有个libev呢) 248 | 249 | 3. Boost:不多说了,准C++标准库 250 | 251 | 4. Ptmalloc\Valgrind\Purify 252 | 253 | 5. NetworkServer架构:acceptor->dispatcher->worker(这个不算工具哦) 254 | 255 | 6. breakpad:崩溃转储和分析模块,很多crashreport会用到 256 | 257 | 7. UI界面相关:MFC、BCG和QT这类的就不说了,高端一点的还有Html和DirectUI技术:libcef(基于chrome内核的,想想使用html5开发页面,还真有点小激动呢)、HtmlLayout、Duilib、Bolt,非C++的,还有node-webkit也不错,集成了node和webkit内核。 258 | 259 | ### **游戏开发相关** 260 | 261 | - MINA:使用Java开发手游和页游服务器(对了还有Netty,也很猛的,都是基于NIO的) 262 | - HP-Socket:见有有些页游服务器使用这个构建的 263 | - 云风的技术博客:http://blog.codingnow.com/ 264 | - OGRE:大名鼎鼎的3D图形渲染引擎 265 | - OpenVDB:梦工厂C++的特效库,开源的 266 | - cocos2d:跨平台2D游戏引擎 267 | - unity3d:跨平台3D游戏引擎,很火的哦 268 | - Nodejs:也有不少使用它来开发手游和也有服务器(网易的Pomelo就是哦) 269 | 270 | 271 | 日志聚合,分布式日志收集 272 | 273 | Scribe:Facebook的(nodejs + scribe + inotify 同步日志) 274 | 275 | logstash:强大的日志收集系统,可以基于logstash+kibana+elasticsearch+redis开发强大的日志分析平台 276 | 277 | log.io: nodejs开发的实时日志收集系统 278 | 279 | RTP,实时传输协议与音视频 280 | 281 | RTP,RTCP,RTSP-> librtp,JRTPLIB(遵循了RFC1889标准) 282 | 283 | 环形缓冲区,实时数据传输用 284 | 285 | SDL,ffmpeg,live555,Speex 286 | 287 | Red5:用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。 288 | 289 | Python 290 | 291 | Eric,Eclipse+pydev,比较不错的Python IDE 292 | 293 | PyWin:Win32 api编程包 294 | 295 | numpy:科学计算包,主要用来处理大型矩阵计算等,此外还有SciPy,Matplotlib 296 | 297 | GUI相关:PyQt,PyQwt 298 | 299 | supervisor:进程监控工具 300 | 301 | ### **Java相关* 302 | - 常用的IDE:IntelliJ IDEA,Eclipse,Netbeans 303 | - Web开发相关:Tomcat、Resin、Jetty、WebLogic等,常用的组件Struts,Spring 304 | - HibernateNetty: 异步事件驱动网络应用编程框架,用于高并发网络编程比较好(NIO框架) 305 | - MINA:简单地开发高性能和高可靠性的网络应用程序(也是个NIO框架),不少手游服务端是用它开发的 306 | - jOOQ:java Orm框架Activiti:工作流引擎,类似的还有jBPM、Snaker 307 | - Perfuse:是一个用户界面包用来把有结构与无结构数据以具有交互性的可视化图形展示出来. 308 | - Gephi:复杂网络分析软件, 其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测开源工具 309 | - Nutch:知名的爬虫项目,hadoop就是从这个项目中发展出来的 310 | - web-harvest:Web数据提取工具 311 | - POM工具:Maven+ArtifactoryNetflix 312 | - Curator:Netflix公司开源的一个Zookeeper client library,用于简化Zookeeper客户端编程 313 | - Akka:一款基于actor模型实现的 并发处理框架 314 | - EclEmma:覆盖测试工具 315 | 316 | ### **.net相关** 317 | - Xilium.CefGlue:基于CEF框架的.NET封装,基于.NET开发Chrome内核浏览器 318 | - CefSharp:同上,有一款WebKit的封装,C#和Js交互会更简单 319 | - netz:免费的 .NET 可执行文件压缩工具 320 | - SmartAssembly:变态的.net代码优化混淆工具 321 | - NETDeob0:.net反混淆工具,真是魔高一尺道高一丈啊(还有个de4dot,在GitHub上,都是开源的) 322 | - ILMerge:将所有引用的DLL和exe文件打成一个exe文件 323 | - ILSpy:开源.net程序反编译工具 324 | - Javascript.NET:很不错的js执行引擎,对v8做了封装 325 | - NPOI: Excel操作 326 | - DotRAS:远程访问服务的模块 327 | - WinHtmlEditor: Winform下的html编辑器 328 | - SmartThreadPool:使用C#实现的,带高级特性的线程池 329 | - Snoop: WPF Spy Utility 330 | - Autofac: 轻量级IoC框架 331 | - HtmlAgilityPack:Html解析利器 332 | - Quartz.NET:Job调度 333 | - HttpLib:@CodePlex,简化http请求 334 | - SuperSocket:简化Socket操作,基于他的还有个SuperWebSocket,可以开发独立的WebSocket服务器了 335 | - DocX:未安装Office的情况下操作Word文件 336 | - Dapper:轻量级的ORM类,性能不错 337 | - HubbleDotNet:支持接入数据库的全文搜索系统 338 | - ZXing.NET:@CodePlex,QR,条形码相关 339 | - Nancy:轻量级Http服务器,做个小型的Web应用可以摆脱IIS喽(Nancy.Viewengines.Razor,可以加入Razor引擎) 340 | - AntiXSS:微软的XSS防御库Microsoft Web Protection 341 | - LibraryJint:JavaScript解释器 342 | - CS-Script:将C#代码文件作为脚本执行 343 | - Jexus:Linux下 高性能、易用、免费的ASP.NET服务器 344 | - Clay:将dynamic发挥的更加灵活,像写js一样写C# 345 | - DynamicJSON:不必定义数据模型获取json数据 346 | - Antlr:开源的语法分析器(归到C#不太合适,其他语言也可以去用) 347 | - SharpPcap:C#版的WinPcap调用端,牛逼的网络包分析库(自带PacketNotNet用于包协议分析) 348 | - Roslyn:C#,VB编译器 349 | - ImageResizer: 服务端自由控制图片大小,真乃神器也,对手机端传小图,PC端传大图,CMS用它很方便 350 | - UI相关:DevExpress, Fluent(Office 07风格), mui(Modern UI for WPF) 351 | - NetSparkle:应用自动更新组件 352 | - ConfuserEx: 开源.net混淆工具 353 | - ServiceStack: 开源高性能Web服务框架,可用于构建高性能的REST服务Expression 354 | - Evaluator:Eval for C#,处理字符串表达式 355 | 356 | http://nugetmusthaves.com/ 357 | 358 | ### **常用工具** 359 | - Fiddler:非常好用的Web前端调试工具,当然是针对底层http协议的,一般情况使用Chrome等自带的调试工具也足够了,特殊情况还得用它去处理 360 | - wireshark:知名的网络数据包分析工具 361 | - PowerCmd:替代Windows Cmd的利器 362 | - RegexBuddy:强大的正则表达式测试工具 363 | - Soure Insight:源代码阅读神器 364 | - SublimeText:程序员最爱的编辑器 365 | - Database.NET:一个通用的关系型数据库客户端,基于.NET 4.0开发的,做简单的处理还是蛮方便的 366 | - Navicat Premium:支持MySql、PostgreSQL、Oracle、Sqlite和SQL Server的客户端,通用性上不如Database.NET,但性能方面比Database.NET好很多,自带备份功能也用于数据库定时备份。 367 | - Synergy : 局域网内一套键盘鼠标控制多台电脑 368 | - DameWare:远程协助工具集(我在公司主要控制大屏幕用) 369 | - Radmin: 远程控制工具,用了一段时间的 370 | - DameWare,还要破解,对Win7支持的不好,还是发现这个好用 371 | - Listary:能极大幅度提高你 Windows 文件浏览与搜索速度效率的「超级神器」 372 | - Clover:给资源管理器加上多标签 373 | - WinLaunch:模拟Mac OS的Launch工具 374 | - Fritzing:绘制电路图 375 | - LICEcap:gif教程制作git, 376 | - svn:版本控制系统Enigma Virtual Box(将exe,dll等封装成一个可执行程序) 377 | - Open DBDiff(针对SqlServer)数据库同步 378 | - SymmetricDS:数据库同步 379 | - BIEE,Infomatica,SPSS,weka,R语言:数据分析 380 | - CodeSmith,LightSwitch:代码生成 381 | - Pandoc:Markdown转换工具,出书用的。以前玩过docbook,不过现在还是Markdown盛行啊。 382 | - Window Magnet[Mac]:增强Mac窗口管理功能,想Win7一样具有窗口拖放到屏幕边缘自动调整的功能 383 | - log explorer:查看SqlServer日志dependency 384 | - walker:查询Windows应用程序dll依赖项 385 | - Shairport4w:将iPhone,iPad,iPod上的音频通过AirPlay协议传输到PC上 386 | - ngrok:内网穿透工具Axure:快速原型制作工具,还有个在线作图的工具国内的一个创业团队做的,用着很不错 http://www.processon.com 387 | - tinyproxy:(Linux)小型的代理服务器支持http和https协议EaseUS Partition 388 | - Master:超级简单的分区调整工具,速度还是蛮快的,C盘不够用了就用它从D盘划点空间吧,不用重装系统这么折腾哦。 389 | - CheatEngine:玩游戏修改内存值必备神器(记得我在玩轩辕剑6的时候就用的它,超级方便呢) 390 | - ApkIDE:Android反编译神器翻、墙工具(自|由|门、天行浏览器) 391 | 392 | ### **设计工具** 393 | - Sketch 394 | - OmniGraffle 395 | - MindManger:思维导图 396 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | $project 2 | ======== 3 | 4 | $project will solve your problem of where to start with documentation, 5 | by providing a basic explanation of how to do it easily. 6 | 7 | Look how easy it is to use: 8 | 9 | import project 10 | # Get your stuff done 11 | project.do_stuff() 12 | 13 | Features 14 | -------- 15 | 16 | - Be awesome 17 | - Make things faster 18 | 19 | Installation 20 | ------------ 21 | 22 | Install $project by running: 23 | 24 | install project 25 | 26 | Contribute 27 | ---------- 28 | 29 | - Issue Tracker: github.com/$project/$project/issues 30 | - Source Code: github.com/$project/$project 31 | 32 | Support 33 | ------- 34 | 35 | If you are having issues, please let us know. 36 | We have a mailing list located at: project@google-groups.com 37 | 38 | License 39 | ------- 40 | 41 | The project is licensed under the BSD license. 42 | -------------------------------------------------------------------------------- /back-end/README.md: -------------------------------------------------------------------------------- 1 | JAVA Back END 2 | ============= 3 | 4 | * [Alibaba中间件博客](http://jm.taobao.org/) 5 | -------------------------------------------------------------------------------- /back-end/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |Jargon File 包含了一大堆关于“hacker”这个词的定义,大部分与技术高超和热衷解决问题 及超越极限有关。但如果你只想知道如何 成为 一名黑客, 那么只有两件事情确实相关。
10 |这可以追溯到几十年前第一台分时小型电脑诞生, ARPAnet 实验也刚展开的 年代,那时有一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群。 这种文化的成员创造了 “hacker” 这个名词。黑客们建立了 Internet。 黑客们发明出了现在使用的 UNIX 操作系统。黑客们使 Usenet 运作起来, 黑客们让 WWW 运转起来。如果你是这个文化的一部分,如果你对这种文化有所贡献,而且 这个社群的其它成员也认识你并称你为 hacker, 那么你就是一位黑客。
11 |黑客精神并不仅仅局限在软件的黑客文化中。 有人用黑客态度对待其它事情,如电子学和音乐—— 事实上,你可以在任何最高级别的科学和艺术活动中发现它。 精于软件的黑客赞赏这些在其他领域的同类并把他们也称作黑客—— 有人宣称黑客天性是绝对独立于他们工作的特定领域的。 但在这份文档中, 我们将注意力集中在软件黑客的技术和态度, 以及发明了“黑客”一词的以共享为特征的文化传统之上。
12 |有一群人大声嚷嚷着自己是黑客,但他们不是。 他们(主要是正值青春的少年)是一些蓄意破坏计算机和电话系统的人。 真正的黑客把这些人叫做“骇客”(cracker),并不屑与之为伍。 多数真正的黑客认为骇客们又懒又不负责任,还没什么大本事。 专门以破坏别人安全为目的的行为并不能使你成为一名黑客, 正如 用铁丝偷开走汽车并不能使你成为一个汽车工程师。 不幸的是,很多记者和作家往往错把“骇客”当成黑客; 这种做法一直使真正的黑客感到恼火。
13 |根本的区别是:黑客搞建设,骇客搞破坏。
14 |如果你想成为一名黑客,请接着读下去。如果你想做一个骇客,去读 alt.2600 新闻组,并在意识到你并不像自己想象的那么聪明后去坐五到十次监狱。 关于骇客,我只想说这么多。
15 |黑客们解决问题,建设事物,同时他们崇尚自由和无私的双向帮助。 要被他人承认是一名黑客,你的行为得体现出你好像具备了这种态度一般。 而要想做得好象你具备这种态度一般,你就得切切实实坚持它。
18 |但是如果你认为培养黑客态度只是一条在黑客文化圈中得到承认的路子, 那就大错特错了。成为具备这些特质的这种人对 你自己非常重要——有助于你学习,及给你提供源源不断的动力。 同所有创造性的艺术一样,成为大师的最有效方法就是模仿大师的精神—— 不仅从智力上,也要从感情上进行模仿。
19 |或许, 下面这首现代的禅诗很好的阐述了这个意思:
20 |To follow the path:(沿着这样一条道路:)
look to the master,(寻找大师,)
follow the master,(跟随大师,)
walk with the master,(与大师通行,)
see through the master,(洞察大师,)
become the master.(成为大师。)
嗯,如果你想成为一名黑客,反复读下面的事情直至你相信它们:
22 |做一名黑客会有很多乐趣,但却是要费很多气力方能得到的乐趣。 这些努力需要动力。成功的运动员从锻炼身体、超越自我极限的愉悦中得到动力。 同样,做黑客,你得能从解决问题,磨练技术及锻炼智力中得到基本的乐趣。
25 |如果你还不是天生的这类人又想做黑客,你就要设法成为这样的人。 否则你会发现,你的黑客热情会被其他分心的事物吞噬掉——如金钱、性和社会上的虚名。
26 |(同样你必须对你自己的学习能力建立信心——相信尽管当你对某问题近乎一无所知, 但只要你一点一点地试验、学习,最终会掌握并解决它。)
27 |聪明的脑袋是宝贵的有限的资源。当世界还充满非常多有待解决的有趣的新问题时, 它们不应该被浪费在重新发明轮子这类事情上。
31 |作为一名黑客,你必须相信其他黑客的思考时间是宝贵的——因此共享信息, 解决问题并发布结果给其他黑客几乎是一种道义,这样其他人就可以去解决 新问题而不是不断地忙于对付旧问题。
32 |(你不必认为一定要把你 所有的发明创造公布出去, 但这样做的黑客是赢得大家极度尊敬的人。卖些钱来养家糊口,租房买计算机 甚至发大财和黑客价值观也是相容的,只要你别忘记你还是个黑客。)
33 |黑客(泛指具有创造力的人们)应该从来不会被愚蠢的重复性劳动所困扰, 因为当这种事情发生时就意味着他们没有在做只有他们才能做的事情—— 解决新问题。这样的浪费伤害每一个人。因此,无聊和乏味的工作不仅仅是 令人不舒服而已,而且是罪恶。
37 |作为一个黑客,你必须坚信这点并尽可能多地将乏味的工作自动化, 不仅为你自己,也为了其他人(尤其是其他黑客们)。
38 |(对此有一个明显的例外。黑客有时也做一些在他人看来是重复性或枯燥的工作 以进行“脑力休息”,或是为了获得某种技能,或是获得一些除此以外无法获得的 特别经验。但这是自愿的——有脑子的人不应该被迫做无聊的活儿。)
39 |黑客们是天生的反独裁主义者。 任何能向你发命令的人能够迫使你停止解决令你着迷的问题, 同时,按照独裁者的一般思路,他通常会给出一些极端愚昧的理由。 因此,不论何处,任何独裁主义的作法,只要它压迫你和其他黑客,你就要和它斗到底。
43 |(这并非向所有权威挑战。儿童需要监护,罪犯要被看管起来。 如果服从命令得到某种东西比起用其他方式得到它更节约时间,黑客可以同意 接受某种形式的权威。但这是一个有限度的,有意的交易; 那种权威想要的个人服从不是你应该同意给予的。)
44 |权威喜欢审查和保密。他们不信任自愿的合作和信息的共享—— 他们只喜欢由他们控制的所谓“合作”。因此,作为一个黑客, 你得对审查、保密,以及使用武力或欺骗去压迫有行为能力的人们的做法有一种本能的敌意。 同时你要有为此信念斗争的意愿。
45 |作为一名黑客,你必须培养起这些态度。 但只具备这些态度并不能使你成为一名黑客,也不能使你成为一个运动健将和摇滚明星。 成为一名黑客需要智力,实践,奉献精神和辛苦工作。
49 |因此,你必须学会怀疑,并尊重各种各样的能力。 黑客们不会为那些装模做样的人浪费时间,但他们却非常尊重能力—— 尤其是从事黑客工作的能力,不过任何能力总归是好的。 具备很少人能具备的那些方面的能力尤其好,其中具备 涉及脑力、技巧和专注方面能力的当然最好。
50 |尊敬能力,你就会享受到提高自己能力的乐趣—— 辛苦的工作和奉献会变成一种高度娱乐而非苦差事。 要想成为一名黑客,这一点非常重要。
51 |黑客态度重要,但技术更加重要。 态度无法替代技术,在你被别的黑客称为黑客之前,有一些基本的技术你必须掌握。
56 |这些基本技术随着新技术的出现和老技术的过时也随时间在缓慢改变。 例如,过去内容包括使用机器语言编程,而直到最近才包括了HTML。 总的来说现在主要包括以下技术:
57 |这当然是最基本的黑客技能。如果你还不会任何编程语言,我建议你从Python开始。 它设计清晰,文档齐全,合适初学者入门。 它是一门很好的入门语言,并且不仅仅只是个玩具; 它非常强大、灵活,也适合做大型项目。 我有一篇 Python评价详细说明这点。好的 教程 可以在Python网站得到。 (译者:比较好的中文Python站点可能是http://pythonrecord.51.net。)
60 |Java也是好的入门语言。它比Python难得多,但是生成的代码速度也快得多。 它同时也是一种优秀的计算机语言,不止是用来入门。
61 |但是注意,如果你只会一两门语言,你将不会达到黑客所要求的技术水平, 甚至也不能达到一个程序员的水平——你需要学会如何以抽象的方式思考编程问题, 独立于任何语言。要做一名真正的黑客,你需要学会在几天内通过一些手册, 结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种截然不同的语言。
62 |如果要做一些重要的编程工作,你将不得不学习C语言,Unix的核心语言。 C++与C非常其他类似;如果你了解其中一种,学习另一种应该不难。 但这两种都不适合编程入门者学习。而且事实上,你越避免用C编程,你的工作效率会越高。
63 |C非常有效率,节约你的机器资源。不幸的是,C的高效是通过你手动做很多底层的管理 (如内存)来达到的。底层代码都是复杂极易出现bug的,会使你花极多的时间调试。 如今的机器速度如此之快,这通常是得不偿失——比较明智的做法是使用一种运行较慢、较低 效率,但大幅节省你的时间的语言。因此,选择Python。
64 |其他对黑客而言比较重要的语言包括 Perl和 LISP。 Perl实用,值得一学;它被广泛用于动态网页和系统管理, 因此即便你从不用Perl写程序,至少也应该学会看。许多人使用Perl的理由和 我建议你使用Python的理由一样,都是为了避免用C完成那些不需要C高效率的工作。 你会需要理解那些工作的代码的。
65 |LISP值得学习的理由不同——最终掌握了它时你会得到丰富的启迪和经验。 这些经验会使你在以后的日子里成为一个更好的程序员,即使你实际上很少使用LISP本身。
66 |当然,实际上你最好五种都会(Python,Java,C/C++,Perl和LISP)。 除了是最重要的黑客语言外,它们还代表了截然不同的编程思路和方法,每种都会让你受益非浅。
67 |这里我无法给你完完全全的指导教会你如何编程——这是个复杂的技能。 但我可以告诉你,书本和上课也不能作到(最好的黑客中,有许多,也许 几乎都是自学成材的)。 你可以从书本上学到语言的特点——只是一些皮毛, 但要使书面知识成为自身技能只能通过实践和虚心向他人学习。 因此要作到 (一)读代码及(二)写代码。
68 |学习如何编程就象学习用优美的自然语言写作一样。 最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,再读些,再写点…… 如此往复,直到你的文章达到你体会到的范文的简洁和力量。
69 |过去找到适合阅读的好的代码是困难的,因为几乎没有大型程序的源代码能让新手练手。 这种状况已经戏剧性地发生变化;开放源代码软件,编程工具和操作系统(全都由黑客写成)现在已经 随处可见。让我们在下一个话题中继续讨论……
70 |我假设你已经拥有或者能使用一台个人电脑(今天的孩子们真幸福 :-) )。新手们能够朝学习黑客技能迈出的最基本的一步就是得到 一份Linux或BSD-Unix的一种,安装在个人电脑上,并运行它。
74 |没错,这世界上除了Unix还有其他操作系统。 但它们都是以二进制形式发布的——你无法读到它的源代码,也不可能修改它。 尝试在运行DOS或Windows或MacOS的机器上学习黑客技术,就象是带着脚镣学跳舞。
75 |除此之外,Unix还是Internet的操作系统。 你可以学会上网却不知道Unix,但你不了解Unix就无法成为一名Internet黑客。 因此,今天的黑客文化在很大程度上是以Unix为中心的。(这点并不总是真的, 一些很早的黑客对此一直很不高兴,但Unix和Internet之间的联系已是如此之强, 甚至连Microsoft也无可奈何。)
76 |所以, 安装一套UNIX——我个人喜爱LINUX但还有其他种类的 (是的,你可以同时安装Linux及DOS/Windows在 同一电脑上)。 学习它,使用它,配置它。用它在Internet上冲浪。阅读它的源代码。修改它的源代码。 你会得到比在Microsoft操作系统上更好的编程工具(包括C,LISP,Python及Perl)。 你会觉得乐趣无穷,学到在你成为大师之前意识不到的更多的知识。
77 |想知道更多关于学习Unix的信息,访问 The Loginataka。
78 |想知道如何得到一份Linux,访问 我在哪里可以获得Linux。 (译者:对于中文读者来讲,最简单的方式未过于前往附近的D版/正版光盘店。)
79 |你可以在 www.bsd.org找到BSD Unix的求助及其他资源。
80 |我有写一篇关于 Unix和Internet基础的入门文章。
81 |(注:如果你是一个新手,我不推荐自己独立安装Linux或者BSD。 安装Linux的话,寻求本地Linux用户组的帮助;或联系 Open Projects Network。 LISC维护着一些 IRC频道, 在那里你可以获得帮助。)
82 |黑客文化建造的大多东西都在你看不见的地方发挥着作用,帮助工厂、办公室和大学正常运转, 表面上很难看到它对非黑客的普通人的生活的影响。Web是一个大大的例外。 即便政客也同意,这个巨大耀眼的黑客玩具正在改变整个世界。 单是这个原因(还有许多其它的),你就需要学习掌握Web。
86 |这并不是仅仅意味着如何使用浏览器(谁都会),而是要学会如何写HTML, Web的标记语言。如果你不会编程,写HTML会教你一些有助于学习的思考习惯。 因此,先完成一个主页。(网上有很多好的教程; 这是一个。)
87 |但仅仅拥有一个主页不能使你成为一名黑客。 Web里充满了各种网页。大多数是毫无意义的,零信息量垃圾——界面时髦的垃圾, 注意,垃圾的水准都类似(更多信息访问 The HTML Hell Page)。
88 |要想有价值,你的网页必须有内容—— 它必须有趣或对其它黑客有帮助。这是下一个话题所涉及的……
89 |作为一个美国人和一个以英语为母语的人,我以前很不情愿提到这点,免得成为 一种文化上的帝国主义。但相当多以其他语言为母语的人一直劝我指出这一点,那就是 英语是黑客文化和Internet的工作语言,你需要懂得以便在黑客社区顺利工作。
93 |这一点千真万确。大概1991年的时候我就了解到许多黑客在技术讨论中使用英语,甚至当他们的母语都 相同,英语对他们而言只是第二语言的时候;据我知道的报导,当前英语有着比其他语言丰富得多的技术词汇, 因此是一个对于工作来说相当好的工具。 基于类似的原因,英文技术书籍的翻译通常不令人满意(如果有翻译的话)。
94 |Linus Torvalds,一个芬兰人,用英语注释他的代码(很明显这对他来说不是凑巧)。 他流利的英语成为他能够管理全球范围的Linux开发人员社区的重要因素。 这是一个值得学习的例子。
95 |象大部分不涉及金钱的文化一样,黑客王国靠声誉运转。 你设法解决有趣的问题,但它们到底多有趣,你的解法有多好, 是要由那些和你具有同样技术水平的人或比你更厉害的人去评判的。
100 |相应地,当你在玩黑客游戏时,你得认识到你的分数主要靠其他黑客对你的技术的评价给出 (这就是为什么只有在其它黑客称你为黑客时,你才算得上是一名黑客)。 这个事实常会被黑客是一项孤独的工作这一印象所减弱;也会被另一个黑客文化的禁忌所减弱 (现在逐渐减弱但仍强大):拒绝承认自我或外部评估与一个人的动力有关系。
101 |特别地,黑客王国被人类学家们称为一种奉献文化。 在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西, 而是靠你的奉献。尤其是奉献你的时间,你的创造和你的技术成果。
102 |要获得其他黑客的尊敬,基本上有五种事情你可以干:
103 |第一个(也是最集中的和传统的)是写些被其他黑客认为有趣或有用的程序, 并把程序源代码提供给整个黑客文化使用。
106 |(过去我们称之为“free software (自由软件)”, 但这却使很多不知 free 的精确含义的人感到困惑。 现在我们很多人,根据搜索引擎网页内容分析至少有2:1的比率,使用“ open-source”software(开放源代码软件)这个词)。
107 |黑客王国里最受尊敬的偶像是那些写了大型的、好用的、具有广泛用途的软件, 并把它们公布出去,使得每人都在使用他软件的人。
108 |黑客也尊敬那些使用、测试开放源代码软件的人。 在这个并非完美的世界上,我们不可避免地要花大多数的开发时间在调试阶段。 这就是为什么任何有头脑的开放源代码的作者都会告诉你好的beta测试员 (知道如何清楚描述出错症状,很好地定位错误,能忍受快速发布中的bug, 并且愿意使用一些简单的诊断工具)象红宝石一样珍贵。 甚至他们中的一个能判断出哪个测试阶段是延长的, 哪个是令人精疲力尽的噩梦,哪个只是一个有益的小麻烦。
112 |如果你是个新手,试着找一个你感兴趣的正在开发的程序,做一个好的beta测试员。 你会自然地从帮着测试,进步到帮着抓臭虫,到最后帮着改程序。 你会从中学到很多,并且与未来会帮你的人结下友谊。
113 |另一个好事是收集整理有用有趣的信息做成网页或文档如FAQ列表,且让他们容易获得。
117 |主要技术FAQ的维护者受到几乎同其他开放源代码的作者一样多的尊敬。
118 |同流行的迷思相反,做一名黑客并不一定要你是个书呆子。 但它确实有帮助,而且许多黑客事实上是书呆子。 做一个深居简出的人有助于你集中精力进行十分重要的事情,如思考和编程。
133 |因此,很多黑客都愿意接受“书呆子”这个外号, 更有甚者使用更尖刻的“geek(怪人)”一词并引以为豪—— 这是一种宣布他们独立于主流社会的声明方式。访问 The Geek Page 参加更多的讨论。
134 |如果你能集中足够的精力做好黑客工作同时还能有正常的生活,这很好。 现在作到这一点比我在1970年代是新手的时候要容易的多; 如今主流文化对技术怪人要友善的多。 甚至有越来越多的人意识到黑客通常是很好的恋人和配偶的材料。
135 |如果你因为生活上不如意而迷上做黑客,那也没什么——至少你不会分神了。 或许以后你会找到自己的另一半。
136 |重申一下,作为一名黑客,你必须进入黑客精神之中。 当你不在计算机边上时,你仍然有很多对黑客工作有帮助的事情可做。 它们并不能替代真正的编程(没有什么能),但很多黑客都那么做, 并感到它们与黑客的本质存在某些基本的连系。
140 | 141 |这些事情,你已经做的越多,你就越是天生做黑客的材料。 至于为什么偏偏是这些事情,原因并不完全清楚, 但它们都涉及用到左-右脑能力的综合,这似乎是关键所在 (黑客们既需要清晰的逻辑思维,有时又需要偏离逻辑跳出问题的表象)。
149 |最后,还有一些不要去做的事情。
150 |151 |
做以上的事情,只会招来嘲笑。黑客们个个记忆超群—— 你将需要数年的时间让他们忘记你犯下的错误。
158 |网名的问题值得深思。将身份隐藏在虚假的名字后是骇客、解密者、d00dz 及其他低等生物幼稚愚蠢的行为特点。黑客不会做这些事; 他们对他们所作的感到骄傲,而且乐于人们将作品与他们的 真名相联系。 因此, 若你现在用假名,放弃它。在黑客文化里它会令你你失败的。
159 |Peter Seebach 维护着一个非常好的 Hacker FAQ, 专给那些不懂如何与黑客打交道的经理看的。如果Peter的站点不能访问,下面这个 Excite搜索应该有一份拷贝。
163 |我也著有 黑客文化简史。
164 |我写了一份 大教堂与市集,对于Linux及开放源代码文化现象有详细的解释。 我也在这个话题上进一步阐述导致的结局—— 开拓智域。
165 |Rick Moen写了一份很好的关于 如何运转一个Linux用户组的文档。
166 |我和Rick Moen合作完成了另一份关于 提问的智慧的文章,可以让你事半功倍的获得帮助。
167 |如果你想知道PC、UNIX及Internet基本概念和工作原理,参考 The Unix and Internet Fundamentals HOWTO。
168 |当你释放出一个软件或为其打补丁,试着按 软件发行惯例 HOWTO去做。 (以上的提到的文章的中文版大多都可以在www.aka.org.cn和www.linuxforum.net找到。)
169 |答:自从第一次发布这份文档,我每周都会收到一些请求, (频繁的话一天几封)要我“教会他们做黑客”。遗憾的是,我 没有时间和精力来做这个;我自己的黑客项目,及我作为一个开放源代码倡导者 的四处奔波已经占用了我110%的时间。
179 |即便我想教你,黑客也依然基本上是一项自行修炼的的态度和技术。 当真正的黑客想帮助你的时候,如果你乞求他们一汤匙一汤匙“喂”你的话, 你会发现他们不会尊重你。
180 |先去学一些东西。显示你在尝试,你能靠自己去学习。然后再去向你遇到的黑客请教特殊的问题。
181 |如果你发E-mail给一位黑客寻求他的帮助,这是两件首要记住的事情。 第一,写出来的文字显得懒且粗心的人通常非常懒于思考且非常马大哈,不能成为好黑客—— 因此注意拼写正确,使用正确的语法及发音,否则你可能会无人理睬。 第二,不要试图要求回复到一个ISP帐号,而那个帐号与你 的发信地址不同。这样做的人一般是使用盗用帐号,不会有人有兴趣为虎作伥帮助窃贼的。
182 |答:对你而言最佳的入门方式也许是去参加LUG(Linux用户组)的聚会。 你可以找到在 LDP的综合Linux信息页面上找到类似的组织;也许有一个在你家附近的, 而且非常有可能与一所大学或学校挂钩。如果你提出要求,LUG成员兴许会给你一套Linux, 当然此后会帮你安装并带你入门。
190 |答:你有动力学习的时候就是好时候。大多数人看来都是在15-20岁之间开始感兴趣的,但 据我所知,在此年龄段之外的例外也是有的。
198 |答:这取决于你的聪明程度和努力程度。大多数人只要他们专注, 就能在18个月到2年之间学会一套令人尊敬的技能。但是,不要以为就此结束了; 如果你是一个真正的黑客,你要用你的余生来学习和完善你的技术。
206 |答:不,因为他们不是可移植的。他们不是那些语言的开放源代码实现, 所以你被限制在厂商选择支持的那些平台里。接受这样一种垄断局面不是黑客的态度。
214 |Visual Basic特别糟糕。它是Microsoft的私有语言这个事实就足够让它脸面全无, 不像其他的Basic,它是一种设计糟糕的语言会教给你坏的编程习惯。
215 |其中一个坏习惯是会依赖于单一厂商的函数库、控件及开发工具。 一般而言,任何不能够支持至少Linux或者一种BSD,或其他第三方操作系统的语言,都是 一种不适合应付黑客工作的语言。
216 |答:No。任何读完这份FAQ后还问这个问题的人,都是无可救药的蠢材, 即使有时间指教我也不会理睬。任何发给我的此类E-mail都会被忽略或被痛骂一顿。
224 |答:不行。目前为止,每次问我这个问题的,都是一些运行Microsoft Windows的菜鸟。 不可能有效的保护Windows系统免受骇客攻击;太多缺陷的代码和架构使保护Windows的努力有如 隔靴搔痒。唯一可靠的预防来自转移到Linux或其他设计得至少足够安全的系统。
256 |答:当然。进入DOS方式,然后键入“format c:”。你遇到的任何问题将会在几分钟之内消失。
264 |答:最佳办法是在你附近找一个Unix或Linux的用户组,参加他们的聚会。 (你可以在Metalab的LDP站点 找到一些指向用户组的链接。)
272 |我过去曾说过不能在IRC上找到真正的黑客,但我发觉现在情况有所改变。 显然一些真正的黑客的社区像GIMP及Perl,也有IRC频道了。)
273 |答:我维护着一份Linux Reading List HOWTO,也许你会觉得有用。 Loginataka也很有意思。
281 |关于Python的介绍,请访问在Python站点上的 入门资料。
282 |答:不用。黑客道很少使用常规的数学或算术,不过你绝对需要能逻辑性地思考和进行精密的推理。
290 |尤其是你不会用到微积分或电路分析(我们把这些留给电子工程师们 :-))。 一些有限数学(包括布尔代数,集合论,组合数学,图论)的背景知识会有帮助。
291 |答:HTML——如果你还不懂的话。市面上有一大堆的封面精美,宣传得天花乱坠的 糟糕的 HTML书籍,不幸的是很少有好的。我最喜欢的是 HTML: The Definitive Guide。
299 |但 HTML 不完全是一种编程语言。当你准备开始编程时,我推荐从 Python起步。 你会听到一大群人推荐 Perl,并且 Perl 依然比 Python 流行得多,但是 难学得多且(以我之见)设计得不是很好。
300 |C 确实重要,但它要比 Python 或 Perl 难多了。不要尝试先学 C。
301 |Windows用户不要满足于 Visual Basic。 它会教给你坏习惯,而且它不可以移植,只能在Windows下运行。避免它。
302 |答:过去个人电脑能力相当不够并且内存小,结果给黑客的学习过程设置 了人为的障碍。不过一段时间以前开始就不是这样了;任何配置比一台 Intel 486DX50 好的 机器都有足够的能力进行开发工作,X,及 Internet 通讯,同时你现在买的最小的磁盘 都大得富足了。(依Barret之见,现在要至少Pentium 166MMX才够。)
310 |选择用来学习的机器时重要的一点是注意配件是否是Linux兼容的(或BSD兼容,如果你选择学 BSD)。同刚才提到的一样,大多数现在的机器都是符合的;唯一的值得注意的区域在于 modem和打印机;有些具备为Windows设计的配件的机器不会在Linux下工作。
311 |关于硬件兼容性有一个FAQ;最新版本在 这里。
312 |答:不,你不必如此。不是因为Microsoft不令人讨厌,而是因为黑客文化早在 Microsoft出现之前就存在了,且将在Microsoft成为历史后依然存在。 你耗费在憎恨Microsoft的任何力气不如花在爱你的技术上。写好的代码—— 那会相当有效地打击Microsoft又不会让你得到恶报应。
320 |答:看起来不太可能——目前为止,开放源代码软件产业似乎创造了更多的就业机会而不是 减少就业机会。如果写一个程序比起不写来是纯经济收益的话,那么在写完后, 程序员应该得到报酬不管程序是否是开放源代码。 并且,无论写出多么“免费自由”的软件,都存在更多对新的,定制的软件的需求。 我有这方面更多的论述,放在开放源代码 网站资料中。
328 |