玩Darkblue一开始挺正常,后来突然变成cnblue日文歌的,再后来有乱码了。请问怎么解决?

&p&&b&- 日本的温泉是男女共浴的么?&/b&&/p&&br&&p&相信很多第一次去日本泡温泉的,都受到日本色情产业的影响,多半认为是男女共浴为多。其实在日本温泉基本上都是分为男汤和女汤的,原因是,很多女性不愿意再男女混浴的温泉泡,因为担心遇到怪蜀黍,也就是日本著名的“痴汉”。了解日本有女性电车专列的情况,也就不难理解这件事情了。男女混浴这种其实在中国倒是常见的,例如南京的汤山温泉,一大推人跟下饺子一样,穿着泳裤,带着小孩,一个个的温泉泡过来,其实那些都不是温泉,是热水池子。关于日本男女混浴,懂日文的同学们可以看这里:&a href=&///?target=http%3A//www.jalan.net/onsen/konyoku/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&混浴大特集&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&b&- 日本泡温泉流程?有哪些规矩?&/b&&/p&&br&&p&&b&1. 换浴衣:&/b&中国游客一般选择温泉酒店较多的方式就是住一晚,在温泉酒店一般都有给你按照人头准备好的“浴衣”和“拖鞋”。&/p&&img src=&/c94ba9d9dd0bfaa5240eb0dd_b.jpg& data-rawwidth=&2448& data-rawheight=&3264& class=&origin_image zh-lightbox-thumb& width=&2448& data-original=&/c94ba9d9dd0bfaa5240eb0dd_r.jpg&&&p&&b&2. 进汤前:&/b&温泉入浴男女有别,入口处挂有“男湯”、“殿方”门帘是供男性洗浴的。挂有“女湯”、“御妇人”的则是女性浴场。泡之前可以来瓶牛奶。一般门口都有牛奶和其他饮料的自动售卖机,建议大家可以买一瓶,因为温泉泡久了,出汗过多,很快就会口渴,补充一下牛奶会感觉很爽;&br&&/p&&p&&img src=&/80dbe8bdcd357ee708826_b.png& data-rawwidth=&1152& data-rawheight=&1192& class=&origin_image zh-lightbox-thumb& width=&1152& data-original=&/80dbe8bdcd357ee708826_r.png&&&b&3. 脱鞋:&/b&因为日本人的池子都比较小,跟咱们国内那种大澡堂子不是一个路子,一般有露天的池子和室内的池子(一般有露天池子的温泉酒店都会在预定网站上表明的)。进去后,一般大家都会看到一个鞋柜,鞋柜上有很多夹子的盒子。夹子上一般有号码,或者假名,反正就是把拖鞋放进去,拿上自己的牌子,光脚走进去就是了。&/p&&p&&img src=&/edff33c593f0cf7ccec936_b.png& data-rawwidth=&1196& data-rawheight=&1192& class=&origin_image zh-lightbox-thumb& width=&1196& data-original=&/edff33c593f0cf7ccec936_r.png&&&b&4. 更衣:&/b&温泉酒店用的比较多的就是下面这种竹框,把衣服脱了,放进去就可以了。记得记住换下衣服的位置。&/p&&p&&img src=&/ed8c9c284fecdeae0f1ffd03_b.png& data-rawwidth=&1196& data-rawheight=&894& class=&origin_image zh-lightbox-thumb& width=&1196& data-original=&/ed8c9c284fecdeae0f1ffd03_r.png&&&b&5. 冲洗:&/b&入池前,一定要先冲洗一下身体。因为日本人都讲究一个干净,池子也是,所以大家下池子钱都会先洗一遍身体。另外在进淋浴间之前的某处备有大小浴巾供客人使用。在浴场里只能用浴场准备好的毛巾,一般不允许自带!毛巾使用完毕出去之前,将用过的毛巾放入指定的筐内。&/p&&img src=&/e7feeefd8445c7_b.png& data-rawwidth=&1196& data-rawheight=&1198& class=&origin_image zh-lightbox-thumb& width=&1196& data-original=&/e7feeefd8445c7_r.png&&&p&&b&6. 入池:&/b&一般男性都是用一条小方形的毛巾捂住小鸡鸡下池子去的,入池后把小毛巾顶在头上。慢慢泡就好了。温泉的温度不一,反正我是坚持不了多久,10来分钟,就头顶冒汗,觉得泡不动了,于是就跑到外面的露天池子,换着泡。但是露天池子一般室外温度比里面的要凉得多,所以大家出去后就下池子,不要暴露身体太久在外面,容易感冒;另外就是过夜的旅客,可以早晚都泡一次,挺舒服的,泡泡整个人都精神许多。至于不同温泉有不同的功效,日本温泉太多,功效也各不相同,反正就是大自然的,对身体有好处就是了。&/p&&img src=&/e7ff8e39df6b22cd930e647068daf3a2_b.png& data-rawwidth=&1190& data-rawheight=&668& class=&origin_image zh-lightbox-thumb& width=&1190& data-original=&/e7ff8e39df6b22cd930e647068daf3a2_r.png&&&p&&b&7. 出浴:&/b&出浴的时候可以再洗一下身体。记住:不要再池子里面冲泡沫!不要再池子里面冲泡沫!不要再池子里面冲泡沫!当然,也不要在池子里面搓泥。。。。哈哈哈,老北京的那些澡堂文化,这里就放弃吧。上次泡汤的时候,我的朋友遇到了几名从国内来玩的哥们。可能没有认出来是朋友是中国人,来了句「这里也没有搓泥的」,我去。。。反正大家注意文明,即使搓,也不要在池子里面。出浴后里面梳妆台上什么吹风机,棉签什么的都会有,洗好了出去再买瓶“明治牛乳”,补补体力。&/p&&br&&p&&b&关于室内自带温泉池(露天風呂付き客室):&/b&&/p&&br&&p&基本上也有很多温泉酒店是房间内就带有温泉池的,这种对于我们中国游客也是大欢迎的,不然老是男女分开泡,有些事情是没法完成的。这里注意预定时看请清楚“露天風呂付き客室”,就是房间自带露天池,jalan上有直接搜这一类温泉的,但是自带一般池子都不大。我住过体验和景色都是最好的,就是下面这家“湖山亭”:&/p&&img src=&/5ada88fd3e_b.png& data-rawwidth=&1200& data-rawheight=&798& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&/5ada88fd3e_r.png&&&p&&img src=&/508f91bd4d48c34625a7c_b.png& data-rawwidth=&1050& data-rawheight=&766& class=&origin_image zh-lightbox-thumb& width=&1050& data-original=&/508f91bd4d48c34625a7c_r.png&&&img src=&/7cc0ca6a5531a8dbfd3fd_b.png& data-rawwidth=&1198& data-rawheight=&898& class=&origin_image zh-lightbox-thumb& width=&1198& data-original=&/7cc0ca6a5531a8dbfd3fd_r.png&&真的是绝景啊,对面就是富士山,值得面朝大山来一发。而且湖山亭吃的也不错:&/p&&p&&img src=&/0dde8e2f11722b61cddd1d_b.png& data-rawwidth=&1198& data-rawheight=&1198& class=&origin_image zh-lightbox-thumb& width=&1198& data-original=&/0dde8e2f11722b61cddd1d_r.png&&&img src=&/51aabdfe8c1dd53d5cef2d_b.png& data-rawwidth=&1198& data-rawheight=&1150& class=&origin_image zh-lightbox-thumb& width=&1198& data-original=&/51aabdfe8c1dd53d5cef2d_r.png&&&img src=&/f3bdd01e1_b.png& data-rawwidth=&1198& data-rawheight=&900& class=&origin_image zh-lightbox-thumb& width=&1198& data-original=&/f3bdd01e1_r.png&&温泉酒店一般都是这种日式的怀石料理,碗碗盘盘的特别多。&/p&&p&现在国内游客选择比较多的还是箱根,毕竟离东京近,而且温泉酒店也多。但是提醒大家的是,一般比较好的酒店价格贵不说,一般不好订。而且说句实话,日本一些预定官网,例如&a href=&///?target=http%3A//jalan.net& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&jalan.net&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&这种中国人用起来还是挺多不方面的。建议大家可以让自己在日本的朋友预定,或者通过 &a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 国内这种做定制的网站上来做预定,同时可以帮忙找到导游和包车,和一些米其林餐厅。&/p&&br&&p&&b&- 哪些温泉最有名?&/b&&/p&&br&&p&日本其实温泉特别多,有名的也不少,这里给大家提示一些,了解下来公认的比较好的温泉地:&/p&&p&1. 箱根温泉(神奈川):靠着离东京比较近的优势,箱根温泉在中国游客中十分火热。外加有些温泉旅馆是可以看到富士山的,于是价格也就上去了;&/p&&p&2. 由布院温泉(大分):&/p&&p&3. 草津温泉(群马):&/p&&p&4. 别府温泉(大分):&/p&&p&5. 登别温泉(北海道):&/p&&p&----明天补充 的细节吧&/p&&br&&p&&b&- 别忘记留下难忘的照片,你懂得:&/b&&/p&&img src=&/2df3b6a4bc2cb66aff2b94_b.png& data-rawwidth=&1062& data-rawheight=&1198& class=&origin_image zh-lightbox-thumb& width=&1062& data-original=&/2df3b6a4bc2cb66aff2b94_r.png&&
- 日本的温泉是男女共浴的么? 相信很多第一次去日本泡温泉的,都受到日本色情产业的影响,多半认为是男女共浴为多。其实在日本温泉基本上都是分为男汤和女汤的,原因是,很多女性不愿意再男女混浴的温泉泡,因为担心遇到怪蜀黍,也就是日本著名的“痴汉”…
&p&日更新:&/p&&p&14年的帖子没想到已经成为“自学Android”话题最火的帖子了,转眼间我都已经自学Android差不多4年多的时间了,评论里说文中很多博客链接打不开了,是因为我博客换了自己的域名,之前GitHub默认的域名访问不了了,目前已更正。还有人比较关心我现在的发展情况,目前依然在薄荷工作,担任Android开发主管一职,把Android团队带的如火如荼,而且由于工作出色,目前还担任公司新业务的技术负责人角色,新的机会,同样也是新的挑战吧,我依然会继续加油的!&/p&&p&另外评论里很多人问了不少问题,没时间一一回答,建议大家关注我的微信公众号:stormzhang,里面有你们想要的内容,15年由于工作转型很忙,更新的技术分享较少,16年打算补偿回来,16年也准备把一些知识系统的整理分享下,大家可自行选择关注。&/p&&p&&a href=&///?target=http%3A///r/5kxWTj3EE2BsrXkt9xn0& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/r/5kxWTj3&/span&&span class=&invisible&&EE2BsrXkt9xn0&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&&br&&p&===============================
泻药。我想我是有资格来回答你的问题的,我算是彻底的从编程白痴一步步学习过来的。&/p&&p&之前写了一篇博客 &a href=&///?target=http%3A///android//learn-android-from-rookie/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android学习之路&i class=&icon-external&&&/i&&/a& 被疯狂转发,带起了一阵学习Android的大风,我不晓得具体影响了多少人,但是这篇博客已经成为Android新手学习必备的资料。很多人问我是怎么一路过来的,姑且借这个机会说说我的故事吧。&/p&&p&===============================
内容有点长,大家姑且当做励志小说来看吧,对这些经历不感兴趣的可以直接看最后“如何自学Android”部分
===============================&/p&&ul&&li&&b&大学&/b& &/li&&/ul&&p&大学上的是全国二流本科,专业主要就是数学专业。大学的总结就是:逃课、挂科、篮球、泡妞、Dota。&/p&&p&目前为止可以说我的大学是我这辈子过的最爽的时期,大一开始就逃课,好点的理由是我对大学那些课程完全没兴趣,其实本质上是因为高考太压抑了,大学之后没人管了,开始无止境的放纵自己。毫不夸张的说大学四年上的课应该没有逃的课多。逃课最直接的影响就是挂科,从大一挂到大三,专业课数学分析特么每年都挂,后来听说补考考不过要重修,还得交钱,这特么让家里人知道还了得,于是发愤图强,最终补考每门都以优秀的成绩过了。&/p&&p&相信英语四级应该是大学必考吧,英语四级这辈子我都忘不了,我考了三次才过,每次考试说是裸考都褒奖了,大学英语全是吃高中的底子,第一次没过,少了十几分,第二次他妈睡觉睡过了,就没有去考,现在想想当时的自己真是脑残,终于在第三次勉强过了。现在想想幸亏当时过了,之后毕业找工作时英语四级是最低要求。做编程这行,英语真的挺重要的,大学的时候一定得想办法把四级给过了。&/p&&p&现在想想大学和编程唯一相关的课程就是C语言了,但是对于我们专业是属于全校公开课,最终这门课虽然考过了,但是连i++ 和++i我都弄不明白,可想而知你们应该能猜到我是怎么过的。&/p&&p&由于高中就开始打篮球,大学时毫无疑问就入了学院篮球队,而且担任队长,所以大一、大二过来基本就是一大半是在篮球场度过的,也是因为篮球征服了我现在的老婆。大二下学期周围的人都在玩Dota,于是也开始了游戏之路,篮球也基本放弃了,那时候玩的疯狂,记得最长的一次和同学在网吧连续包夜两星期,不过白天是回来睡觉的,不然估计早猝死在网吧了。&/p&&p&转眼间大四了,这一年终于在我老婆的监督下不再挂科了,而且在毕业前的最后一次评比竟然拿到了三等奖学金,真是受宠若惊啊,后来钱也被狐朋狗友们拿去腐败了。周围的同学都在准备考研,我却唯独对考研没兴趣,自始至终都没有为考研花过一分钱,买过一本书。后来证明我的决定是正确的,周围的小伙伴放弃的放弃,考不上的考不上,考上的后面也没见混的有多好,当然如果能考上好的学校还是很有帮助的。&/p&&ul&&li&&b&毕业&/b&&/li&&/ul&&p&又一转眼毕业了,去参加了学校几个招聘会也是醉了,全是没听过的小企业,一去参观都是各种厂房,根本不需要任何学历,是个人出点力都可以干的那种,要么就是各种电话销售。。。那时候真的有点急了,大学四年,毕业一份像样的工作都找不到,回去怎么面对乡亲父老。&/p&&p&三月份的时候一家IT测试培训机构来做宣讲会(具体什么名字我就不说了,免得认为是广告),听完之后就说培训之后包就业,培训地点在大上海的最中心,当然是自费,但是可以工作之后分期付款。那时候哪知道测试是干嘛的,更不懂IT是干嘛的,回来就查了下这个机构确实存在,网站也有的,知道不是骗子遍决定来上海试一试。当时下定决定要来上海培训之后,几个狐朋狗友毫不犹豫的跟着我一起来了,总共应该是7个人,决定之后没几天便毅然而然的背着大包小包来到上海,我们之中一部分是一次性付费,另一部分是分期。后来证明我们当时来上海的决定是正确的。&/p&&ul&&li&&b&培训之路&/b&&/li&&/ul&&p&这里并不是宣传大家去培训,只不过被工作所逼,学校不好,大学也没学啥真本事,稍微有点出路都不会去培训!&/p&&p&培训的日子还是蛮轻松的,一周就上四天课,朝九晚五,毕竟大家家庭都不富裕,家里辛苦攻读了四年大学,毕业还要再交钱去培训,打心里大家都很愧疚。一开始卯足了劲要好好学习,但是坚持了没多久就有点放松了,但是好歹也是都有学习的。&/p&&p&培训的时候算是接触了点编程吧,课程有C语言、Oracle、Linux,然后其他都是软件测试的理论,其实都是非常基础的东西,算是带你入行吧,Orace就学习一些基本SQL语句,Linux就学了几个命令,但是起码知道原来电脑可以干这么多事,之前还一直以为电脑就是用来看电影、聊天、打游戏的呢。现在回头看给我一周的时间我可以看完整个培训课程,但是当时的培训周期要四个月。&/p&&ul&&li&&b&第一份工作--SunNet&/b& &/li&&/ul&&p&7月份拿到毕业证书就直接来了上海,四个月的时间对于我来说实在太漫长了,我等不及了,于是在课程还有最后一个月的时候我提前出来单独找工作,当时培训老师说工作后的工资大多是3500左右,我觉得我学的比别人好,所以必须要比别人高,做好了长期准备面试的过程。没想到面试第一家就直接录取了(后来才知道原来是公司的测试怀孕在家,急需测试),公司名叫SunNet,中文名山诺,工资4000。收到offer的时候欣喜若狂!&/p&&ul&&li&&b&真正接触编程&/b&&/li&&/ul&&p&之后便在SunNet正式入职,工作就是测试,但是就在SunNet我才真正的接触了什么是编程。SunNet是一家小型外企,总部在休斯顿,上海这边主要是研发部。研发人员总共不到10人,主要业务是以web为主,使用语言是.NET。当然我的职责就是web测试了,工作倒是没什么难点,主要测试就我一个,一进来就有好几个项目等着我测试,还好自己是数学专业,逻辑思维能力还不错,加加班总算能按时完成任务。&/p&&p&三个月的时间顺利转正,之后的某一天偶然得知公司一开发人员工资比我高2000,其实也就比我早毕业一年而已,才知道原来开发和测试工资差距这么大,于是当时就下定决心要转行做开发,所以说起我从测试转行开发的原因是因为钱,一开始说因为兴趣坚持下来的都是扯淡。。。&/p&&ul&&li&&b&编程之路&/b& &/li&&/ul&&p&由于在公司我的主要任务仍然是测试,任务也挺多,基本每天要9点能到家。下定决心之后只能利用业余时间来学习,由于公司主要业务是.NET,很自然我一开始学习的方向便是.NET,后来才了解到.NET是基于C#的,学习.NET之前必须要先学习C#,于是像公司借了一本C#学习资料,就这样学习了大概两周吧,还仔仔细细做了一大堆笔记。之后觉得语法学的差不多了,便又借了本.NET的书开始学习web开发。&/p&&p&但是web开发远没有学习一门语言这么简单,后来才知道web开发涉及到html, css, javascript, ajax, database等,范围太广了,于是为了效率,我只能每一项掌握住基础,于是网上搜索找到 &a href=&///?target=http%3A//.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&w3school 在线教程&i class=&icon-external&&&/i&&/a& 这个好东西,里面的东西都是基础的,我把教程整理到手机里,每天上下班的地铁上,吃饭的时候,回家的时候等等利用一切时间来学习,也是差不多大概2周的时间掌握了html, css, js的一点基础,接下来准备正式学习.NET的时候,被我们老大知道我正在学习开发,我们老大叫Aaron,是一位典型的程序员,比较胖,人品超好,知道后不建议我学习.NET,说.NET出来都十来年了,已经很成熟了,很多人在学校都有.NET教程,现在学习已经比别人晚了。现在移动开发刚崭露头角,也没多少人会,建议我直接学习移动开发。真是一句点醒了我啊!!&/p&&ul&&li&&b&移动开发&/b&&/li&&/ul&&p&听了老大的建议,于是放弃了.NET,开始准备学习移动开发。那时候是12年初,整个移动互联网也是刚起步阶段,iPhone4还是非常火的时候,毫无疑问我把目标锁定在了iPhone开发上。&/p&&p&这次有经验了,知道了iPhone开发首先肯定得有一门编程语言的,了解到是Objective-C,于是又从公司借了一本OC的书(公司书很多,老大每月都会买来好多书,虽然看的人很少),又花了将近一周的时间来了解了基本语法,因为之前学了C#,这次没完全看完的情况下想直接上手实践。正打算学习的时候,才知道iOS开发必须得在mac上才可以,也就是说我得自己有台mac电脑,虽然当时公司是有的,但是回家的时候不能继续学习练习,肯定影响效率的,一台mac对于当时的我简直是奢侈品,虽然现在也依然是奢侈品,但当时根本不可能买得起。于是只有放弃iPhone开发转向Android(后来才知道有虚拟机这东西。。。)&/p&&ul&&li&&b&Android学习之路&/b& &/li&&/ul&&p&几经波折,终于才确定自己的方向,这期间已经耽误了不少时间,走了不少弯路了,但是仍然阻挡不住我转行开发的脚步。公司关于Android的书竟然没有,于是我自己亲自买了一本Android书籍,叫《疯狂Android讲义》,作者是李刚!!不说这本书有多好吧,这本书比较厚,非常厚,所以讲的一些基础比较细,新手按照上面的完全可以看懂,现在不知道这本书内容更新了没,之前内容对于现在来说有点老。这个时候应该是12年的3月份,说起来也巧,这个月公司刚好接了个移动端项目,iOS有人来做,但是公司上下没有会Android开发的,其他人都有自己的项目在忙,老大看出我的兴趣,就问我想不想试一下,我当然欣然同意了,只此就开始正式的边做边学习Android。&/p&&p&那个时候的测试任务仍然很重,于是我只能挤出时间来做这个项目,基本是每晚以及周末都会自动加班来完成这个项目,现在看来那个项目真是太简单不过了,快的话一周都不要就可以搞定了,但在当时我摸爬滚打了一个多月总算搞定了。&/p&&p&做完这个项目自己有了点信心,但当时自己的主要任务还是测试,自己开发的时间是少之又少,于是下定决心离职找一个专门做Android的工作。说明原因之后老大很理解,也是建议我想做开发的话就放手去找一个专门做开发的职位,这样进步会比较快。&/p&&p&第一份工作能遇到我的老大Aaron,真是我的福分!&/p&&ul&&li&&b&薄荷&/b& &/li&&/ul&&p&12年4月底离职之后,我便开始在家里准备面试,投简历,由于自己的基础很薄弱,之前的Android经验也非常少,那时候说是招聘Android职位,但是很多公司面试基本全是Java内容,而且我能感受到工作内容和Android相关的也比较少。来薄荷面试的时候感觉很好,包括CTO、CEO的面试都感觉不错,果然没几天就收到offer,来之不易的机会,非常珍惜。&/p&&p&12年5月中入职薄荷,你们以为我到了薄荷之后Android之路就一帆风顺?错了,路更艰难。我是薄荷入职的第一位Android工程师,薄荷在那时候只做iOS平台的App,事实证明这种做法不可取,包括BOSS后面也亲自说投资人来投资的时候一看数据这么少,后面做了Android平台之后用户数据才慢慢上来,毕竟还是Android用户基数大。&/p&&p&来薄荷的第一个任务是做联想TV的一个视频App,很蛋疼,折腾联想的SDK,遥控器等,好歹App功能比较简单,试用期间完成的还不错,就这样顺利转正了。转正之后做了第一个Android App,叫减肥食物库,功能与页面全部Copy iOS版的App。这个时候一大堆没做过的东西全部涌来了,网络库、http、api对接、组件定制等等,那个时候没有像现在各种资料、开源库一大堆,公司也没人能给指导,只有硬着头皮慢慢来,为了能把进度赶上去,上线前夕曾经连续在公司通宵三天三夜,累了就在公司趴一会,这辈子就经历过这一次,虽然项目最终也拖延,但总算在接受范围之内上线,这在当时是第一个试水Android平台的App,可惜的是上线之后表现不好,没有达到预期的效果。&/p&&ul&&li&&b&Ruby、Rails&/b& &/li&&/ul&&p&这个App试水表现不好之后,公司决定暂停Android业务,主攻iOS平台。我的位置就变得很尴尬,CTO找我谈话希望我能转做Ruby,Android业务会暂停,我们后端的api全部是基于Ruby语言的,虽然当时心里有点不情愿,但是没办法,为了不丢掉工作我只得硬着头皮做下去,于是就开启了我的Ruby之旅。&/p&&p&学习Ruby以及Rails是我目前为止遇到的最大的困难。Ruby是一种动态语言,Ruby On Rails是一种流行快速开发web的框架。学习ruby不同地方在于要学习Linux,代码基本全是在终端进行,没有IDE,没有编译检查,习惯各种命令行。这对于一个刚开始进行开发的人来说真的是太困难了。那个时候从内心也有抵触,学习领悟能力也超差,我能感觉到公司领导层对我已经不是很满意了,现在想想那时候公司没能开除我真是得感谢我们的CTO,一个很有耐心、敢于给新人机会的人。中间遇到非常大的困难,还好得到薄荷ruby工程师小伙伴们的帮助,一直鼓励我,遇到问题总是不厌其烦,在基础、经验、能力不行的情况下,我总得克服这种困难,让别人看出我的态度。于是学习Ruby、Rails的那段时间我每天都是做最后一班公交车回去,我记得好像是11:40. 这个状态持续一个月,包括周末,从未间断。&/p&&p&这一个月我在公司的主要任务就是学习,没有给安排任何事情,偶尔帮同事修修电脑,调下电话线,为此我非常感谢薄荷,感谢我的CTO Vincent,恐怕这在任何一家公司都不能这样给一个人单独的学习时间吧。一个月之后,学习的终于有点起色,开始实际做Rails项目,做后台,写api,虽然效率很低,代码很烂,但是在做Ruby的过程跟着我们CTO学了不少设计上的东西,面向对象的思想,设计模式等都在这个阶段接触的,自此我已经习惯各种终端操作,熟悉一些Linux基本命令,喜爱Ubuntu,参加了Ruby Conf 2012大会,喜欢Sublime,接触Git,GitHub,搭建了自己的Blog。我感谢做Ruby的这段时间,他让我接触了不一样的世界,心态完全变了,变得更开放,更乐于分享。&/p&&ul&&li&&b&回归Android&/b& &/li&&/ul&&p&做ruby的这段时间很是快乐,付出了这辈子最艰辛的努力,换来了点小小成果,我喜欢ruby语言,到现在为止都认为ruby是最优雅的语言。但是Android在我心里一直都有一个位置,从未放弃过。直到13年5月的时候,这个时候Android份额近乎疯狂的增长,公司不得不开始注意Android市场,于是公司打算推出Android版app,于是作为公司唯一的Android程序员,CTO再次征求我的意见,问我想继续做ruby还是做Android,虽然我更喜欢ruby语言,但是从心底我更喜欢客户端开发,和语言无关,客户端是用户最能感知的一部分,做出的东西更有成就感一点,我就在等待着这个机会,这一刻我毫不犹豫的选择继续做Android。&/p&&p&回归Android开发的我一个人开发新的App,单枪匹马,经过之前的一系列挫折,突然感觉再没有更困难的了,一个人摸索架构、克服难题,App一推出便一直快速疯狂的增长,目前薄荷App总用户数已经破千万,公司也顺利融资,业务发展越来越好。&/p&&ul&&li&&b&后话&/b& &/li&&/ul&&p&由于一个人一步步过来,我深知这其中的不易,之后自己一直坚持写博客,除了自己的积累外,还希望帮助更多的人,所以现在你们可以看到不管是我的GitHub,博客,微博还是微信公众账号都很乐于分享,希望自己走过的这些弯路你们能少经历,虽然最终我也到达了终点,但是如果能有直路可直达最好不过了。&/p&&ul&&li&&b&总结&/b& &/li&&/ul&&p&上面啰啰嗦嗦的叙述我的这些陈年经历,看似和题主的问题无关,其实有很大关系:&/p&&p&1. 如果你是非科班毕业想要转行编程,看了我的经历你一定很有信心与动力,我能,你一样能,何况我中间走了这么多弯路;&/p&&p&2. 如果你接触过一些数据结构、编程语言之类的,想要学习编程,想题主这种,你更应该有信心,你比那些非科班的人已经多了一些基础,你要做的只是坚定信念,坚持走下去;&/p&&p&3. 不要感慨上天的不公平,一路走来很悲催,走了太多的弯路,遇到了太多的困难,都是我这辈子难以忘记的坎坷,但同时我是幸运的,我的前任老大Aaron以及现任CTO都深深的影响着我后来的职业发现,我在薄荷的一些小伙伴们对我的帮助,我女朋友无数个日夜的理解与支持,上帝在给你制造坎坷的时候总会对你有些眷顾;&/p&&p&4. 如果你准备或已经在做开发的人员,没有信心或动力,又或是对未来迷茫的时候,姑且当做一篇励志小说来看,你要做的就是做好你当下在做的事,相信你的付出一定能有所收获;&/p&&ul&&li&&b&建议&/b&&/li&&/ul&&p&评论里有人说是在校生,想要给点建议,那就以一个反例的身份给出事后的一些建议吧:&/p&&p&1. 每天花1小时看书,难的不是1小时,难的在坚持;
2. 最好不要挂科,因为挂了你还是得花时间补回来;
3. 英语对编程来说很重要,试着习惯英语阅读;
4. 数据结构和算法要学好,这算是对编程来说最重要的课了,以后不见得能用得上,但用的时候起码你有印象;
5. 大三或者大四一定要去实习,对于编程来说经验还是比较重要的,实习经历比你那些理论要有效的多;
6. 找个女朋友吧,不是说工作了你就找不到了,而是工作之后从事编程很少有时间和精力去接触别的女孩,所以可以的话在毕业前找个可以同甘苦的女朋友吧;
7. 第一份工作很重要,因为你会受一些周围同事、公司氛围的影响,我为自己遇到Aaron、Vincent而感到幸运,他们俩是我目前为止最尊重的两个人;&/p&&ul&&li&&b&如何自学android编程&/b& &/li&&/ul&&p&最后才应该是题主最需要的:&/p&&p&1. &a href=&///?target=http%3A///android//learn-android-from-rookie/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android学习之路&i class=&icon-external&&&/i&&/a& 前面说过我的这篇博客是Android新手必备资料;&/p&&p&2. 书不在多,适合你就好,这里推荐一本Android和两本Java书籍吧;
《第一行代码》:郭霖的著作,声明下我没有看过,但是郭神博客质量很高,书自然也不会差;
《Thinking In Java》:Java经典书籍,不必说;
《Effective Java》:Java进阶必备书籍;&/p&&p&3. 有些人一开始看书也有困难,没关系,那就去网上看视频,结合视频和书一起看,边看边敲,推荐下Mars老师视频,包括java基础以及Android篇都有:&a href=&///?target=http%3A///s/1dD5RRQ5& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java4Android.zip_免费高速下载&i class=&icon-external&&&/i&&/a&
极客学院的视频:&a href=&///?target=http%3A///event/android.html%3Fhmsr%3Dstormzhang_index_word_03.20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&零基础Android学习路径图&i class=&icon-external&&&/i&&/a&
口味不同的人可去各大网站自行搜索适合自己的教学视频。&/p&&p&4. 多去混GitHub,目前最流行的开源社区,多参与开源项目,慢慢试着读牛人们的代码,时机到的时候自己也可以为开源社区贡献力量,可以这样说在GitHub上认真混一年,比你在大学四年学的东西要多的多;&/p&&p&5. 关注一些Android界不错的博客:
我(stormzhang)的博客:&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&另外还可以关注我的微信公众号 stormzhang,我会不定期分享一些过来人的经验与感悟,相信会对部分同学有帮助。&/p&&p&Trinea的博客:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Trinea&i class=&icon-external&&&/i&&/a&
代码家的博客: &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&代码家&i class=&icon-external&&&/i&&/a&&/p&&p&6. 善于利用搜索引擎,从用Google做起,学会英文关键字搜索,有问题第一时间想到去搜索而不是去请教别人;&/p&&p&&b&大家都有了以上相同的教程,但是人和人之间的区别在于:别人有颗更强大的内心,可怕的是比你聪明的人比你还要更努力!!&/b&&/p&&p&&b&当你下定决心,准备前行的时候,剩下的只有坚持了。。。&/b&&/p&&br&&p&===============================
我是华丽的分割线
===============================
我是很少在知乎上正经回答问题的,没想到这个回答引起这么多人关注,引起了很多人的共鸣,收获了这么多点赞,这里针对很多人的私心以及评论做点补充吧:&/p&&p&1. 回答中提到了培训之路,很多人要推荐培训机构,其实一方面当时没有经验,也比较迷茫,迫不得已才去培训试一试的,后来过来后其实培训学不了什么东西,我后来转行Android完全是自学,和培训一点关系都没,所以不推荐去培训,最终得靠自己;&/p&&p&2. 有人问我单独开发的app是什么,我现在公司名是薄荷科技,app也叫薄荷,你可以去各大市场搜索“薄荷”,排名第一的应该就是,从架构到实现一直都是一个人在做,总用户现在差不多过千万了,当然现在已经不是一个人在开发了,现在带领一个小团队在做,你可以下载体验下,不过现在依然有很多不足之处,我们一直在努力改进;&/p&&p&3. 文中提到我学习了很多语言,很多人比较疑问,是都需要学这些语言么?当然不是,我是因为走了不少弯路,有些语言为了工作不得不去学的,不过后来证明学的这些东西对自己是有很大帮助的,但是如果你确定了方向建议你直奔主题,现在社会需要一门精而不是门门通的人才,现在有很多“全栈工程师”的概念,其实都是在建立在一门精的基础上才去别的领域发展的,所以不要妄想一开始就成为“全栈”,还有如果你对当前做的事很抵触,觉得一直纠结在功能上,但是又没法去改变的时候,不妨竭尽全力把当前做的事做好,后面你会发现有事情做自己不知不觉总是会进步的;&/p&&p&4. 很多人找到我博客,搜索到我被Facebook邀请,具体见这篇博客 &a href=&///?target=http%3A///other//invited-by-facebook/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&被Facebook邀请的前因后果&i class=&icon-external&&&/i&&/a& , 虽然这算是对自己技术能力的一个认可吧,但是在技术上远没有大家想象的那么牛逼,我一直在努力提升自己的技术,但是仍然有很多需要学习的,自己也一直在坚持学习,现在也一直想靠自己的技术来改变自己的生活,起码不拼爹(主要是拼不了),但是后来才感觉到技术并不是一切,千万别陷进无止境的技术坑里,有很多事情比技术更重要,这个就等待大家自己慢慢发掘领悟吧。。。&/p&
日更新:14年的帖子没想到已经成为“自学Android”话题最火的帖子了,转眼间我都已经自学Android差不多4年多的时间了,评论里说文中很多博客链接打不开了,是因为我博客换了自己的域名,之前GitHub默认的域名访问不了了,目前已更正。还有人比较…
作为一个文科妹子,我在看过几乎所有热门 github 教程之后依旧一头雾水,在近半年的摸索中终于明白啦~新年初,把自己纯小白的学习经验分享一下吧!&br&&br&&b&#什么是 Github ?&br&&/b&必须要放这张图了!!!&br&&img src=&/7c9d63fb_b.png& data-rawwidth=&600& data-rawheight=&412& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/7c9d63fb_r.png&&(图片来源&a href=&/question//answer/& class=&internal&&GitHub 是怎样的一个存在? - Deep Reader 的回答&/a&)&br&&blockquote&&p&Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。&/p&&/blockquote&好吧,我相信看到这里你已经晕了,这也是我一开始看那些所谓经典教程的感受。写这些教程的人都是几年以上的程序员呀,他们往往直接就告诉你所有命令的含义或者整个体系。&br&&blockquote&专家盲点(expert blind spot)就是对一个事物知道的越多,就越发不记得“不知道这个事”的情形。&/blockquote&&br&&b&简单来说,Git 是一个管理你的「代码的历史记录」的工具。&br&&/b&&img src=&/cd910ad32ac_b.jpg& data-rawwidth=&214& data-rawheight=&164& class=&content_image& width=&214&&我不是程序员为什么要学这个啊啊啊!又不要管理代码们!&br&&br&别急,虽然 github 学习门槛高,一会你就知道为什么人人都应该会这个啦!&br&&br&----------------------------&br&&b&学习步骤&/b&&br&&br&##注册安装&br&去官网注册一个账号(这个你应该会,恩就不放链接了)&br&然后,下载一个&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub Desktop&i class=&icon-external&&&/i&&/a& mac客户端是最方便的啦!(命令行什么的真的是会越来越晕!先别管他们!)&br&&br&假设33(珊姗就是我啦)、小四和你三个人一起写一本小说(澄清一下,并没有黑任何人的意思,恩!),暂且叫做...《梦里花落爱吃土时代》&br&--&br&图(脑补)&br&--&br&(⊙v⊙)嗯!终于可以正式开始了!&br&&br&&b&#step1:创建新项目&/b&&br&我们三个人在不同的城市要远程共同写一本书,要有一个漂亮的笔记本吧?&br&&img src=&/fa17ad198ae_b.png& data-rawwidth=&895& data-rawheight=&334& class=&origin_image zh-lightbox-thumb& width=&895& data-original=&/fa17ad198ae_r.png&&&br&「repositories」就是你的笔记本们。你只需知道 Repository 是个放项目的地方就行。有时候会出现 Repositories,是多个 Repository 的意思。&br&&br&**fork**&br&如果你不想新建一个笔记本,看到小四之前写过一个好到炸裂的文章,想把他的直接全部偷过来,修改修改就成你自己的文章了,这应该怎么办呢?&br&github 还提供了一个很赞的功能叫做 fork ,你只需要点击这个神奇的按钮,就可以把他的「笔记本」变成你自己的啦!任意修改都可以哦~&br&&img src=&/ed6d6fdc68fbfa829997b_b.png& data-rawwidth=&808& data-rawheight=&201& class=&origin_image zh-lightbox-thumb& width=&808& data-original=&/ed6d6fdc68fbfa829997b_r.png&&&br&&br&&b&#step2:把「笔记本」克隆到本地&/b&&br&「笔记本」在云端,你要把它摘下来放到自己的电脑上写小说才方便呀,在这里我们叫「clone」是不是很形象?步骤如图:&br&&img src=&/b5d537f10af3_b.png& data-rawwidth=&838& data-rawheight=&309& class=&origin_image zh-lightbox-thumb& width=&838& data-original=&/b5d537f10af3_r.png&&或者是直接去我们的客户端&br&&img src=&/cde6dbb8be6_b.png& data-rawwidth=&1112& data-rawheight=&773& class=&origin_image zh-lightbox-thumb& width=&1112& data-original=&/cde6dbb8be6_r.png&&&br&&b&#step3:可以开始写作啦!&/b&&br&你的笔记本里已经自动有一个文档了,这个时候让我们回到网页版[微笑脸]&br&你只需要在 web 端点开这个README.md可以开始在里面写你的小说了。&br&&img src=&/5cff90f3bd0cd5e400bcc637_b.png& data-rawwidth=&1024& data-rawheight=&335& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/5cff90f3bd0cd5e400bcc637_r.png&&或者直接点开刚刚 clone 到电脑上的文件夹直接在里面写。&br&ps:需要注意的是,文本支持 markdown 格式,可以先参考这个&a href=&///?target=http%3A///p/q81RER& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&献给写作者的 Markdown 新手指南&i class=&icon-external&&&/i&&/a&。&br&&br&&b&#step4:上传你写的小说&/b&&br&在本地写完之后你要上传到云端让我和小四都能看见你写出什么幺蛾子了吧?&br&回到客户端,你发现有变化!!!&br&&img src=&/2e2d2a0da9ef8005ee01f_b.png& data-rawwidth=&517& data-rawheight=&542& class=&origin_image zh-lightbox-thumb& width=&517& data-original=&/2e2d2a0da9ef8005ee01f_r.png&&没错,在你头像旁边给你这次提交内容起一个名字,以后如果再次寻找的时候会很方便。然后点下面的 Commit to master,还有右上角的 Sync 就好啦!&br&&br&&b&#step5:回退到之前的版本&/b&&br&夜深人静的时候,我趁着你们都在睡觉把小说的结局偷偷地改成女主死掉了!&br&你醒来觉得我这结局改的也太悲伤了,完全不能接受!结局必须要和之前那样王子公主幸福的生活在一起的 happy ending!&br&问题又来了,怎么退回到我修改结局之前的 happy ending?&br&&br&还是刚刚那个客户端,选择History 然后点击小齿轮,选择潇洒地点 roll back to this commit!&br&你又回到happy ending的状态啦!!&br&&img src=&/e2b413faf67ea77b36c93_b.png& data-rawwidth=&301& data-rawheight=&223& class=&content_image& width=&301&&&br&&b&#step6:&/b&&br&小四写了一章华丽无比的番外,你要更新本地的小说和他写的保持一致怎么办?&br&git pull&br&&img src=&/f5c5c0b43d1f9f7ab27267fbcc16d9fd_b.png& data-rawwidth=&279& data-rawheight=&354& class=&content_image& width=&279&&&br&-----------&br&好了,知道这些基本操作入门应该够了,我们来回顾一下(不要嫌弃我的画工啊喂!)&br&&img src=&/6c22d708defbc7df2240b_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/6c22d708defbc7df2240b_r.png&&&br&入门初期迅速得到一些正反馈对于学习一门新技能来说实在是太重要了!尤其是编程这么炫酷的事情!&br&所以先不要管什么复杂的 issue 呀 wiki 呀乱七八糟的操作,按照上面的一步一步来,如果遇到什么问题 google 之,一般都会解决的。&br&&br&有一个段子不就是说,当你遇到问题去找最高级的工程师,他们一般都会直接 google 吗?而且自带的帮助手册也是解决问题的好办法,比如你要新建一个 branch=》&a href=&///?target=https%3A///Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Create a new branch with git and manage branches · Kunena/Kunena-Forum Wiki · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&&b&这种遇到问题先自己尝试解决的小技巧,也是我自从学编程以来最大的收获。&/b&&br&&br&------------------------&br&&br&&b&#除了写代码你还可以用 github 做什么?&br&&/b&&br&回到文章开头,我又不是程序猿不用写代码玩这个干啥?&br&&br&你有没有碰到过团队里几个人共同协作写一个文档的时候?或者说需要反复修改的东西?比如最简单的写论文,用 word 保存一个一个版本 e-mail 给 boss?下次再找上次修改了什么地方简直要死啊有木有!!!&br&&br&相信你看了我的远程协作写小说的例子应该已经明白了, github 说白了就是一个「版本控制工具」。我们所谓的「回退」到历史记录,随时查看更改了什么地方,利用这个功能可以做的事情简直太多啦!&br&&br&就像 github 其中一位创始人[Chris](&a href=&///?target=https%3A///defunkt& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&defunkt (Chris Wanstrath) · GitHub&i class=&icon-external&&&/i&&/a&)也详细描述了[GitHub初创的前因后果](&a href=&///?target=https%3A///67060& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Startup Riot 2009 Keynote 路 GitHub&i class=&icon-external&&&/i&&/a&),他说道:&br&&blockquote&&p&Do whatever you want.&/p&&/blockquote&所以不是程序猿可以用这个来做什么呢?&br&&b&1、写书&br&&/b&和 33 一起写小说的例子,还记得吧?几个人你一章我一章共同修改一本书,或是几个出版社的编辑对新书进行校对,利用这个神器就可以随时看到哪里出现了问题和更改。如果想自己写书的话 gitbook 也是不错的选择(又是一个坑。。)&br&&br&&b&2、写文档神器&br&&/b&身为科研狗、产品狗、射鸡湿的你,是不是经常写文档?一个成熟的文档可能会有好几个版本,需要不断地迭代,然后不断提交给老板看哪里需要修改。在不同版本间自如切换就要用到git branch和git rebase了。&br&想想看,用 git 的分支管理不比拷贝粘贴更方便吗?&br&&br&&b&3、健身&br&&/b&有个哥们为了激励自己健身把每日计划都放上去了,还可以邀请其他人一起来相互监督!(我才不会说我自己也开了一个呢哈哈哈)&br&&a href=&///?target=https%3A///hoosin/EveryDaySport& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hoosin/EveryDaySport · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&&b&4、找男票&br&&/b&没错,看这个项目!利用众包的形式一起罗列男友条件的 list 然后试图自己开发出一个男票233333&br&&a href=&///?target=https%3A///YixuanFranco/YourBoyfriend& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YixuanFranco/YourBoyfriend · GitHub&i class=&icon-external&&&/i&&/a&&br&有人评论问我用这个找到男票了吗?&br&统一回复:&br&并!没!有!&br&&br&&b&5、用GitHub搭建博客、个人网站或者公司官网&/b&&p&一个有自己域名的独立博客,是不是很帅?!&/p&&p&GitHub本身提供免费的托管服务,又提供了贴心的 Pages 功能,可以绑定你自己的域名,免费、高效、不限流量,做一个个人页面绰绰有余。&/p&&p&Jekyll 的教程和我自己的博客会稍后放出。。(先给自己挖个坑)&/p&&br&&p&&b&6、用GitHub协作翻译&/b&&/p&&p&苹果官方发布的各种官方手册,比如最近开源的 Swift &a href=&///?target=https%3A///numbbbbb/the-swift-programming-language-in-chinese& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&numbbbbb/the-swift-programming-language-in-chinese · GitHub&i class=&icon-external&&&/i&&/a& 就是国内一个自发组织起来的团队,30多个人用9天时间即将翻译和校对工作全部完成,他们每人都还有自己的事情,上班、上线、创业,这么大的工作量在以往简直是不可能完成的任务!&/p&&br&&p&&b&7、项目管理&/b&&/p&&p&GitHub最初是为了开发的管理而生,当然也就具备了项目管理的潜质,特别是与开发密切联系的项目中,它的优势尽显。比如这篇文章介绍了如何使用GitHub结合 Trello 等其它工具进行项目管理:&a href=&///?target=http%3A//xiaocong.github.io/blog//team-collaboration-with-github/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用GitHub进行团队合作&i class=&icon-external&&&/i&&/a&。当然,GitHub还是很偏重开发的管理,一般的项目管理还是适合使用 wortile 之类的产品。&/p&&br&&b&7、政府文件?&/b&&br&之前看到一个知乎回答说:日本政府把宪法放上去了,德国政府也做过类似的事:German Federal Law Now on GitHub。除了德日之外,英美在 GitHub 上也有很多公众服务:英国政府多达 10 页的项目目录:&a href=&///?target=https%3A///alphagov& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Government Digital Service · GitHub&i class=&icon-external&&&/i&&/a& 其中很多是政府项目的源代码或者设计原则之类。芝加哥的公开地理信息:Forking your CityNew York Open City: City of New York 路 &br&(原谅我找不到这个回答了,欢迎补充)&br&&br&&b&8、科研项目及数据&br&&/b&较早的&a href=&///?target=http%3A//arxiv.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&arXiv&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A//plos.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PLoS&i class=&icon-external&&&/i&&/a&之外,较有气象的可以推荐&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&mendeley&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A//www.doaj.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&开放期刊目录&i class=&icon-external&&&/i&&/a&&br&教育方面:&br&&ul&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&OpenStudy&i class=&icon-external&&&/i&&/a&:一个社会性学习网络,通过互助来更好地学习,主题涉及到计算机、数学、写作等。&/li&&li&&a href=&///?target=http%3A//openhatch.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&openhatch&i class=&icon-external&&&/i&&/a&: 通过练习、任务等帮助新手更好地进入开源社区&/li&&/ul&&b&9、个人简历&br&&/b&&p&GitHub上的代码无法造假,也容易通过你关注的项目来了解你的知识面的宽度与深度。现在越来越多知名公司活跃在GitHub,发布开源库并招募各类人才,例如:&a href=&///?target=https%3A///facebook& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Facebook&i class=&icon-external&&&/i&&/a&、&a href=&///?target=https%3A///twitter& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Twitter&i class=&icon-external&&&/i&&/a&、&a href=&///?target=https%3A///yahoo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Yahoo&i class=&icon-external&&&/i&&/a& ...&/p&&p&开始有了第三方网站提供基于GitHub的人才招聘服务,例如:&/p&&ul&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHire&i class=&icon-external&&&/i&&/a&:通过它,可以找出你所在地区的程序员。&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a&:通过它,能评估某位程序员在GitHub、LinkedIn、StackOverflow、hackernews等多个网站的影响力。&/li&&/ul&甚至专门有一个项目就是自动根据你的 GtiHub 公开项目创建个人简历:&br&&a href=&/question//answer/& class=&internal&&我们可以使用 Git 以及 GitHub 做哪些事情? - Kane Blueriver 的回答&/a&&br&&br&&b&10、设计资源库(重点来了!!!)&br&&/b&做 ppt 不知道到哪里去找高质量美图?&br&最近半年初入设计圈,收集了不少 bookmark 想在年底来一个总结。 于是自己创建了这个Design- Resource List 项目,旨在让更多的设计师找资源变得有章可循。&br&&br& 先更新一部分,大概还有200多个还没放过来。。(吐血) 所以,欢迎大家也推荐自己收藏的资源,加入这个项目并一起持续更新么么哒 :)&br&&a href=&///?target=https%3A///timmy3131/design-resource& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&timmy3131/design-resource · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&11、&a href=&///?target=https%3A///explore& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Explore · GitHub&i class=&icon-external&&&/i&&/a& 更多好玩的内容等你自己发现哦&br&&a href=&/question/& class=&internal&&你在 GitHub 上看到过的最有意思的项目是什么? - 调查类问题&/a&&br&&br&-------------------------------------&br&&b&#更多高阶教程:&/b&&br&&b&如果你已经不满足于上面的基础知识了,欢迎探索更高级的玩法!&br&&/b&1、&a href=&///?target=https%3A///GitCafe& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitCafe&i class=&icon-external&&&/i&&/a& / &a href=&///?target=https%3A///GitCafe/Help& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Help&i class=&icon-external&&&/i&&/a&&br&2、[git简明指南](&a href=&///?target=http%3A//rogerdudler.github.io/git-guide/index.zh.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&git - the simple guide&i class=&icon-external&&&/i&&/a&)墙裂推荐!漫画的形式很形象(恩我承认比我画的好看多了)&br&&p&3、在线交互学习 github 的网站&a href=&///?target=http%3A//pcottle.github.io/learnGitBranching/%3FNODEMO& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learn Git Branching&i class=&icon-external&&&/i&&/a& 这个也很好玩~&/p&&p&4、[GitHub自身的官方博客](&a href=&///?target=https%3A///blog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The GitHub Blog · GitHub&i class=&icon-external&&&/i&&/a&)&/p&5、&a href=&///?target=http%3A//danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&git-flow 备忘清单&i class=&icon-external&&&/i&&/a&&br&&br&&b&入门书籍推荐:&br&&/b&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub入门与实践 (豆瓣)&i class=&icon-external&&&/i&&/a&比较基础&br&&a href=&///?target=http%3A///subject/3420144/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pro Git (豆瓣)&i class=&icon-external&&&/i&&/a& 更高级的教程,很全面!&br&&br&对了对了,还有阳志平老师的两篇非常全面的旧文(这么称呼好生疏啊2333)&br&&a href=&///?target=http%3A///tech/github.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如何高效利用GitHub&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///tech/git.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Git与Github入门资料&i class=&icon-external&&&/i&&/a&&br&&br&------------------------&br&( ⊙ o ⊙ )啊!知乎居然还不支持 markdown 心好累。。&br&&br&祝大家新年快乐。&br&ps:有朋友问我真的用 github 来写小说吗?&br&o(╯□╰)o只是举例子啊!方便大家理解而已...&br&还是会写一点点代码的(*/ω\*)&br&&br&欢迎各位程序员哥哥们纠错呀,别忘了点赞赞赞!!!!!
作为一个文科妹子,我在看过几乎所有热门 github 教程之后依旧一头雾水,在近半年的摸索中终于明白啦~新年初,把自己纯小白的学习经验分享一下吧! #什么是 Github ? 必须要放这张图了!!! (图片来源) …
这题直接把答案算出来都不是啥困难的事情。&br&注意到k个1=&img src=&///equation?tex=%2810%5Ek-1%29%2F9& alt=&(10^k-1)/9& eeimg=&1&&令n=2000&br&原式=&img src=&///equation?tex=%5Csum_%7Bk%3D1%7D%5E%7Bn%7D%5Cfrac%7B10%5Ek-1%7D%7B9%7D+%3D+%5Cfrac%7B1%7D%7B9%7D%28%5Csum_%7Bk%3D1%7D%5E%7Bn%7D10%5Ek+-n%29%3D%5Cfrac%7B10%5E%7Bn%2B1%7D-9n-10%7D%7B81%7D%0A& alt=&\sum_{k=1}^{n}\frac{10^k-1}{9} = \frac{1}{9}(\sum_{k=1}^{n}10^k -n)=\frac{10^{n+1}-9n-10}{81}
& eeimg=&1&&&br&注意到1/81=0.循环,简单算下余数就知道10^2001除以81余28 所以&br&&br&(10^=(0.把小数点往右移2001位)=(222个2 &br&&br&所以原式&br&=(10^-(9*)/81&br&=(222个2 -222&br&=(221个&br&&br&然后就发现答案是222个1了。&br&其实我觉得问有几个8才比较有意思呢23333 一定想不到是1个。。。。
这题直接把答案算出来都不是啥困难的事情。 注意到k个1=(10^k-1)/9令n=2000 原式=\sum_{k=1}^{n}\frac{10^k-1}{9} = \frac{1}{9}(\sum_{k=1}^{n}10^k -n)=\frac{10^{n+1}-9n-10}{81}
注意到1/81=0.循环,简单算下余数就知道10^2001除以81余28 所…
——————最重要的话写在前面——————&br&0、&b&新手/喜欢练习/欢迎交流/邀请/我是看着这个问题下面的答案学习的&/b&&br&1、带着一个目的来学爬虫。#我的目的实现了…所以我来写这个回答了。&br&2、&b&不要怂就是干&/b&!系统学习固然好,直接写一个项目出来效果更加简单粗暴!(不过自己现在的水平写出来都是流水一般的面向过程的代码,代码的重复部分太多,正在回过头去学习面向对象编程,学习类和方法的使用。不过&b&我还是坚定地认为入门的时候应该直接简单粗暴地实践一个项目&/b&)&br&3、&b&哪里不会搜哪里!哪里报错改哪里!&/b&相信我你遇到的99%的问题都能从网上找到相似的问题,&b&你需要做的就是写代码!搜问题!调BUG!你搜不到解决办法的情况下,80%的情况是你搜索的姿势不对,另外20%可能需要你自己动动脑子,换个思路去做。&/b&&br&举个印象最深的例子。&br&我在统计知乎回答voters的具体情况的时候(后面会介绍)发现知乎的数据是这样发送的。&br&&a href=&/answer//voters_profile?total=70&offset=10&follows=wAp13IyyllRUgyux1Zp3MSGySe4GNnw-AG6-yDt_MO68ywzyjX_TGN3o& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/answer/152197&/span&&span class=&invisible&&95/voters_profile?total=70&offset=10&follows=wAp13IyyllRUgyux1Zp3MSGySe4GNnw-AG6-yDt_MO68ywzyjX_TGN3o&/span&&span class=&ellipsis&&&/span&&/a&&br&什么鬼(摔)。&br&等到我辛辛苦苦用正则把里面的信息提出来的时候发现我得到的数据是这样的…&br&&img src=&/77f32da10dedd8c164cef9_b.jpg& data-rawheight=&353& data-rawwidth=&477& class=&origin_image zh-lightbox-thumb& width=&477& data-original=&/77f32da10dedd8c164cef9_r.jpg&&&br&我的内心是崩溃的……&br&问题很明显是编码问题……用户那一列全部是unicode编码……转成中文就好了嘛……&br&我刚开始也是这么想的…当我尝试了各种encode和decode…以后整个人都不好了。&br&大概是这样的。我用Shell演示一下…应该能看懂。&br&&img src=&/f57d96a693a8b318782ef_b.jpg& data-rawheight=&215& data-rawwidth=&467& class=&origin_image zh-lightbox-thumb& width=&467& data-original=&/f57d96a693a8b318782ef_r.jpg&&&br&&br&但是我的字符串是自动获取的啊,怎么可能挨着用 u' '赋值……&br&于是我开始了漫长的搜索之路……在看了无数篇重复度高于百分之80的关于编码的文章后,在我都快要放弃的时候…看到了这个…&a href=&///?target=http%3A//www.newsmth.net/nForum/%23%21article/Python/96580& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&水木社区-源于清华的高知社群&i class=&icon-external&&&/i&&/a& 你能理解我当时内心的酸爽吗…&br&&img src=&/10e31d4ab435ba82f219d7_b.jpg& data-rawheight=&104& data-rawwidth=&409& class=&content_image& width=&409&&&br&大概就是这样。&br&所以&b&我遇到的问题已经很奇葩了依然还是有解决办法的嘛&/b&。Windows下面编码各种混乱,系统编码,编程时编辑器的编码,抓取网页以后网页的编码,Python2的编码,Python3的编码……新人真的很容易搞昏头。&br&例子不多言了。后面还有很多。&br&&br&——————正文1:我的爬虫入门,不谈学习,只聊项目(代码已贴)——————&br&前面说到学爬虫需要一个目标。那我的目标是什么呢?听我慢慢讲。&br&前些日子我回答了一个问题&a href=&/question/& class=&internal&&高考后暑假应该做什么事? - 生活&/a& 我回答这个问题的时候呢关注人数也就才刚刚过百,我的赞数也涨的很慢…&br&可是突然有一天呢,我发现突然就出现了一个300赞的回答…当时那个问题的关注似乎还不到300。我百思不得其解…但是我看了看那个回答的赞同和答主的主页。&br&大概是这样的:&br&&img src=&/294e2af3710fdd0fa3ab849a5583e17e_b.jpg& data-rawheight=&491& data-rawwidth=&525& class=&origin_image zh-lightbox-thumb& width=&525& data-original=&/294e2af3710fdd0fa3ab849a5583e17e_r.jpg&&&img src=&/063ac88d2c01aa00c5d33a09a94fa0de_b.jpg& data-rawheight=&292& data-rawwidth=&978& class=&origin_image zh-lightbox-thumb& width=&978& data-original=&/063ac88d2c01aa00c5d33a09a94fa0de_r.jpg&&&br&然后我隐隐觉得…可能会是刷赞?当然我们不能恶意地去揣测别人,要拿数据说话,毕竟知乎现在的三零真实用户还是蛮多的,不一定都是水军的小号。&br&&br&于是我一个从来没有学过爬虫的人就开始学爬虫了…然而并不一帆风顺。首先是知乎显示“等人赞同”的方式做了修改,参见&a href=&/question/& class=&internal&&如何评价知乎新的「某某等人赞同」显示方式? - 如何评价 X&/a&。&br&其次我刚开始的时候不会维持登陆…每次抓到的数据里都有很多的“知乎用户”(也就是未登录状态下抓取不成功)。&br&为了行文的连贯我跳过中间学习时做的几个小爬虫…直接放我做成功的结果吧。&br&&img src=&/1e8ff4f36a65f991def1a5_b.jpg& data-rawheight=&180& data-rawwidth=&513& class=&origin_image zh-lightbox-thumb& width=&513& data-original=&/1e8ff4f36a65f991def1a5_r.jpg&&&br&选取的样本回答依次为:&br&&a data-title=&@段晓晨& data-editable=&true& class=&member_mention& href=&///people/fc91ae5ff90c102d6c0f08& data-hash=&fc91ae5ff90c102d6c0f08& data-tip=&p$b$fc91ae5ff90c102d6c0f08& data-hovercard=&p$b$fc91ae5ff90c102d6c0f08&&@段晓晨&/a&&a href=&/question//answer/& class=&internal&&高考后暑假应该做什么事? - 段晓晨的回答&/a&&br&&a data-title=&@EdgeRunner& data-editable=&true& class=&member_mention& href=&///people/e07f4a4c286ad9a78b5ece4f317cf8e7& data-hash=&e07f4a4c286ad9a78b5ece4f317cf8e7& data-tip=&p$b$e07f4a4c286ad9a78b5ece4f317cf8e7& data-hovercard=&p$b$e07f4a4c286ad9a78b5ece4f317cf8e7&&@EdgeRunner&/a&&a href=&/question//answer/& class=&internal&&高考后暑假应该做什么事? - EdgeRunner 的回答&/a&&br&&a data-title=&@孔鲤& data-editable=&true& class=&member_mention& href=&///people/a84bbc21f92c87e35aeb070bc0752521& data-hash=&a84bbc21f92c87e35aeb070bc0752521& data-tip=&p$b$a84bbc21f92c87e35aeb070bc0752521& data-hovercard=&p$b$a84bbc21f92c87e35aeb070bc0752521&&@孔鲤&/a&&a href=&/question//answer/& class=&internal&&高考后暑假应该做什么事? - 孔鲤的回答&/a&&br&&a data-title=&@Emily L& data-editable=&true& class=&member_mention& href=&///people/caf8f6e3f896c9159678bfe3& data-hash=&caf8f6e3f896c9159678bfe3& data-tip=&p$b$caf8f6e3f896c9159678bfe3& data-hovercard=&p$b$caf8f6e3f896c9159678bfe3&&@Emily L&/a&&a class=&internal& href=&/question//answer/&&能利用爬虫技术做到哪些很酷很有趣很有用的事情? - Emily L 的回答&/a&&br&&a data-title=&@chenqin& data-editable=&true& class=&member_mention& href=&///people/b09ea18dcf0c0& data-hash=&b09ea18dcf0c0& data-tip=&p$b$b09ea18dcf0c0& data-hovercard=&p$b$b09ea18dcf0c0&&@chenqin&/a&&a href=&/question//answer/& class=&internal&&为什么 2015 年初,上海有卫计委官员呼吁大家生二胎? - chenqin 的回答&/a&&br&感兴趣的可以下载数据&br&&a href=&///?target=http%3A///s/1bnCWiab& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&getvoters.xls_免费高速下载&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///s/1hqvlafi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&getvoters2.xls_免费高速下载&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///s/1gdEjUkb& target=&_blank& rel=&nofollow noreferrer&&getvoters3.xls_免费高速下载&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///s/1eQAOi5s& target=&_blank& rel=&nofollow noreferrer&&getvoters4.xls_免费高速下载&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///s/1bnCqkcn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&getvoters5.xls_免费高速下载&i class=&icon-external&&&/i&&/a&&br&结论就是……没有结论。&br&话说我回答的那个三零用户比例也好高啊……我真的没有刷赞我保证!(话说我的赞里面要是有水军的话我会很伤心的……我一直以为是我写的好他们才赞我的QAQ)&br&&br&到这里第一个项目就结束了…&br&这个我暂时不贴代码…代码不完善…还得有点小修改。两天内放上来。&br&&br&——来贴代码——&br&&a class=& wrap external& href=&///?target=https%3A///loveQt/Zhihu_voters& target=&_blank& rel=&nofollow noreferrer&&loveQt/Zhihu_voters · GitHub&i class=&icon-external&&&/i&&/a&&br&使用前请填写config.ini文件,cookie不用填。&br&依然不完善。是这样的,知乎在获取“等人赞同”的时候有一个很畸形的地方在于……答案的id很畸形。&br&比如我现在这个答案。&br&&a class=&internal& href=&/question//answer/&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/question/2089&/span&&span class=&invisible&&9988/answer/&/span&&span class=&ellipsis&&&/span&&/a&&br&当我点击“等人赞同”的时候。抓包得到请求地址。我用的是Firefox的Firebug&br&&img data-rawheight=&618& data-rawwidth=&1366& src=&/403d77bb83c98a2ab537_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/403d77bb83c98a2ab537_r.jpg&&这个地址是这样的:&br&&a href=&/answer//voters_profile& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/answer/152992&/span&&span class=&invisible&&64/voters_profile&/span&&span class=&ellipsis&&&/span&&/a&&br&如果你继续往下拉,知乎会自动加载更多用户,你会得到形如这样的地址:&br&&a class=&internal& href=&/answer//voters_profile?total=143&offset=10&follows=YCPQ47_p62oaS49riUMu-4sTvAQfYpoe5E2RRX9lj40vWR6E4J5W_T-U&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/answer/152992&/span&&span class=&invisible&&64/voters_profile?total=143&offset=10&follows=YCPQ47_p62oaS49riUMu-4sTvAQfYpoe5E2RRX9lj40vWR6E4J5W_T-U&/span&&span class=&ellipsis&&&/span&&/a&&br&分析这个地址的构成就会发现&br&/answer/这里应该是这个回答的唯一id,而这个id显然与上面的&a class=&internal& href=&/question//answer/&&/question//answer/&/a&是不一样的,我抓了好多个回答,结论应该是没有规律的,知乎应该是给每个问题一个id,每个问题下面的回答一个id,但是只有点赞的时候这个回答才会得到它关于voters的id……&br&&br&所以我没办法实现完全的自动化…你如果想爬指定的回答,似乎得先手动抓包了 QAQ&br&抓包的示意如上,打开网络面板,点击“等人赞同”,找到地址中的数字就可以了。&br&&br&如果你会抓包了请接着看下去。&br&代码的下载地址在上面的github。Python版本为2.7,希望你们会用pip安装依赖的库。&br&简单说几个方面。&br&&br&1、知乎的登陆。我模仿了 &a data-title=&@egrcc& data-editable=&true& class=&member_mention& href=&///people/e10ecbd131c8ec3d6c7166820efde22f& data-hash=&e10ecbd131c8ec3d6c7166820efde22f& data-tip=&p$b$e10ecbd131c8ec3d6c7166820efde22f& data-hovercard=&p$b$e10ecbd131c8ec3d6c7166820efde22f&&@egrcc&/a& 和 &a data-title=&@7sDream& data-editable=&true& class=&member_mention& href=&///people/ef7be83f9f1fcab3adfa7a6a1f510427& data-hash=&ef7be83f9f1fcab3adfa7a6a1f510427& data-tip=&p$b$ef7be83f9f1fcab3adfa7a6a1f510427& data-hovercard=&p$b$ef7be83f9f1fcab3adfa7a6a1f510427&&@7sDream&/a& 的项目,使用了requests.session。&br&&div class=&highlight&&&pre&&code class=&language-text&&def login():
cf = ConfigParser.ConfigParser()
cf.read(&config.ini&)
cookies = cf._sections['cookies']
email = cf.get(&info&, &email&)
password = cf.get(&info&, &password&)
cookies = dict(cookies)
s = requests.session()
login_data = {&email&: email, &password&: password}
header = {
'User-Agent': &Mozilla/5.0 (X11; U Linux x86_64; rv:34.0) Gecko/ Firefox/34.0&,
'Host': &&,
'Referer': &/&,
'X-Requested-With': &XMLHttpRequest&
r = s.post(Login_url, data=login_data, headers=header)
&/code&&/pre&&/div&在实现了登陆之后,只要使用s.get(url)得到的页面都是登陆成功的状态。&br&//&b&注意,不登陆或者登陆不成功的情况下也可以爬取数据。点赞、感谢、提问、回答的数值都能正常获取,但是会出现部分用户无法获取名称和用户地址,显示为“知乎用户”&/b&&br&&br&2、获取数据&br&假如我们获取到了单页数据,那么使用正则可以很简单地获取到想要的数据,具体参见代码。&br&我们需要做的,其实是获取那些需要爬取的URL。&br&通过上面对于网址的分析我们可以发现,网址的组成为domain/answer/ans_id/voters_profile?total=xxx&offset=xx&...&br&后面那堆乱码不重要,重要的是total和offset,每次会展示出10个用户的数据,所以我们只需要获取到点赞的总数total,就可以知道需要循环多少步(total/10),注意从是0开始,不然会漏掉前十个数据。&br&而这也就是我在&a href=&///?target=https%3A///loveQt/Zhihu_voters/blob/master/zhihu-vote.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&zhihu-vote.py&i class=&icon-external&&&/i&&/a&中的做法。其余的部分就没有什么难度了,入门的同学应该都可以看懂。&br&&br&3、改进&br&我们在&a href=&///?target=https%3A///loveQt/Zhihu_voters/blob/master/zhihu-vote.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&zhihu-vote.py&i class=&icon-external&&&/i&&/a&中通过构造地址的方法来,通过循环实现对所有voters_profile的遍历。但是如果我们了解json的知识的话,我们可以发现其实每个页面都是json格式的。&br&&img data-rawheight=&430& data-rawwidth=&1057& src=&/74f3df2aae_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1057& data-original=&/74f3df2aae_r.jpg&&&br&其中最关键的地方在于&b&next&/b&。我们会发现&b&其实每个页面中都包含了下一页的地址!&/b&这样我们是不是可以让爬虫每爬一页自己找到一个地址,然后自己去爬下一页呢?&br&可是这样做有一个问题,如何控制循环呢?&br&假如我们去看最后一个页面的话,会发现是这样的。&br&&img data-rawheight=&257& data-rawwidth=&901& src=&/abdb4a9bff2c2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&901& data-original=&/abdb4a9bff2c2_r.jpg&&&br&&b&注意这里的next值为空&/b&。&br&而我们知道(不知道的你现在知道了),&b&空字符串在作为条件判断时相当于False &/b&&br&所以我写了&a href=&///?target=https%3A///loveQt/Zhihu_voters/blob/master/zhihu-voteV2.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&zhihu-voteV2.py&i class=&icon-external&&&/i&&/a&&br&其中核心的改动是&br&&div class=&highlight&&&pre&&code class=&language-text&&Vote_url = Zhihu + 'answer/' + ans_id +'/voters_profile'
h = s.get(Vote_url)
html = h.content.encode('utf-8')
target = json.loads(html)
while target['paging']['next']:
Vote_url = ''+target['paging']['next']
&/code&&/pre&&/div&这样就实现了程序每次爬取页面时从页面中获取地址,而不是人为构造地址循环。下面是原来的做法。&br&&div class=&highlight&&&pre&&code class=&language-text&&for num in range (0,page_num):
Vote_url = Zhihu + 'answer/' + ans_id +'/voters_profile?total='+str(total)+'&offset='+str(num)+'0'
&/code&&/pre&&/div&&br&讲实话我不知道这两种写法哪种好,但我还是蛮高兴自己发现了第二种做法。&br&于是我做了一个运行时间的测试…&a class=&internal& href=&/question//answer/&&提车了,下一步需要做什么? - 车海沉浮高永强的回答&/a& 16K的赞&br&运行结果如下:&br&&img data-rawheight=&116& data-rawwidth=&649& src=&/85da7bba7f77f35ab955b7b9ac52a3a7_b.jpg& class=&origin_image zh-lightbox-thumb& width=&649& data-original=&/85da7bba7f77f35ab955b7b9ac52a3a7_r.jpg&&&img data-rawheight=&99& data-rawwidth=&654& src=&/f2bd06dd7bb86d61e2603_b.jpg& class=&origin_image zh-lightbox-thumb& width=&654& data-original=&/f2bd06dd7bb86d61e2603_r.jpg&&&br&构造地址的办法用时451秒,第二种办法用时251秒。&br&……我不知道为什么方法二会比方法一快,可能是网速吧……QAQ。有了解的前辈还望告知原因…&br&&br&到这里也就结束了。最后的结果是写入excel的,有知友说让我去学习csv,已经在看了,不过这次还是用的让人又爱又恨的excel。&br&&br&按照惯例写To-dos:&br&&ul&&li&完善Github的文档说明&/li&&li&想办法看能不能自动获取那个蛋疼的ans_id就不用每次都手动抓包了,selenium?我不会用啊TAT&/li&&li&在点赞的页面我们只能得到用户的4个数据,也就是赞同、感谢、提问、回答,有些时候我们或许想知道他的关注人数和被关注人数…然而那个得到用户的页面中去爬取了。不过想通过用户URL得到用户的具体数据是有现成的轮子的……&a class=& wrap external& href=&///?target=https%3A///egrcc/zhihu-python& target=&_blank& rel=&nofollow noreferrer&&egrcc/zhihu-python · GitHub&i class=&icon-external&&&/i&&/a&
(PY2) &a data-title=&@egrcc& data-editable=&true& class=&member_mention& href=&///people/e10ecbd131c8ec3d6c7166820efde22f& data-hash=&e10ecbd131c8ec3d6c7166820efde22f& data-tip=&p$b$e10ecbd131c8ec3d6c7166820efde22f& data-hovercard=&p$b$e10ecbd131c8ec3d6c7166820efde22f&&@egrcc&/a& 和&a class=& wrap external& href=&///?target=https%3A///7sDream/zhihu-py3& target=&_blank& rel=&nofollow noreferrer&&7sDream/zhihu-py3 · GitHub&i class=&icon-external&&&/i&&/a&(PY3) &a data-title=&@7sDream& data-editable=&true& class=&member_mention& href=&///people/ef7be83f9f1fcab3adfa7a6a1f510427& data-hash=&ef7be83f9f1fcab3adfa7a6a1f510427& data-tip=&p$b$ef7be83f9f1fcab3adfa7a6a1f510427& data-hovercard=&p$b$ef7be83f9f1fcab3adfa7a6a1f510427&&@7sDream&/a& 我想办法看怎么把我现在获取答案点赞用户信息的方法pull给他们…直接调用他们的User类就ok了~&/li&&li&抓特别多的数据时考虑多线程和gzip…?接下来就要学这个了…会的话我就用了…还记得我去爬知乎赞数最高的答案…一个答案爬了30分钟…&br&&/li&&/ul&&p&——更新完毕,大家学习愉快,共同进步——&/p&&p&——&b&Windows 平台Py2编码问题畸形但有效解法&/b&——&/p&&p&在..\Python27\Lib\site-packages\下新建&b&sitecustomize.py&/b&&/p&&p&添加代码&/p&&div class=&highlight&&&pre&&code class=&language-text&&import sys
sys.setdefaultencoding(&utf-8&)
&/code&&/pre&&/div&&br&——————正文2:学习路上顺便写的项目——————&br&在学习路上写了许多类似test的小小项目,就不赘述了。下面贴出来三个还算有结果的。&br&1、抓取知乎话题下面的问题,分析容易得赞的问题&br&具体描述在 &a class=&internal& href=&/question//answer/&&第一次在知乎获得 1000 以上的赞是什么体验? - 段晓晨的回答&/a& 写过了。&br&代码在&a href=&/question//answer/& class=&internal&&知乎将如何应对「狗日的知乎」计划? - 段晓晨的回答&/a& 里面有。需要用到&a class=& wrap external& href=&///?target=https%3A///7sDream/zhihu-py3& target=&_blank& rel=&nofollow noreferrer&&7sDream/zhihu-py3 · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&2、写完1中项目以后。我爬取了爬虫话题分类下面的所有回答。结果&a href=&///?target=http%3A///s/1kTuyOmz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&爬虫话题所有问题_.xls_免费高速下载&i class=&icon-external&&&/i&&/a&&br&然后我从其中挑选了“关注量/回答量”较大的问题(也就是有人关注但有效回答较少)写了以下两个回答,大家可以看看。&br&&a class=&internal& href=&/question//answer/&&如何使用
雪球网页? - 段晓晨的回答&/a&&br&&a class=&internal& href=&/question//answer/&&如何用Python抓取写一个抓取新浪财经网指定企业年报的脚本? - 段晓晨的回答&/a&&br&&br&——————结语:谈谈学习——————&br&至此我能说的就说完了。&br&鼓起勇气来回答这个问题,不知道自己有没有资格。毕竟自己也就才学了一周多一点。自认为还谈不上入门……因为不会的实在太多。&br&系统学习爬虫的思路别人讲的肯定比我好。我的经验在开头已经说过了……&b&不要怂就是干&/b&!&b&哪里不会搜哪里!哪里报错改哪里!&/b&&br&如果一定要再补充写什么,贴上我之前回复知友的评论吧。&br&首先要带着一个目的去学,这个目的不能太复杂,不能一上来就搞那种需要模拟登陆,需要js动态实现的网站,那样你会在登陆那儿卡很久,又在js实现那儿卡很久,很容易挫伤学习积极性。比如我最初的目的就是爬知乎。知乎登陆/不登陆数据会有差别,比如抓不到某些人的数据,返回“知乎用户”这种。&br&有了目的,你需要一些基础知识。html是什么,标签是什么,浏览器和服务器之间通信(比如抓包)。爬虫的原理就是要把网页的源码整个下载下来,然后去里面寻找我们需要的信息。所以首先你得能获取正确的网址,然后通过配置你的程序(Headers伪装浏览器,代理防止封ip等)来成功访问网页并获取源码。…………诸如此类的基础知识,其实特别简单。你可以去找一些爬百度贴吧,爬煎蛋,爬糗事百科的例子,很容易就会上手。&br&有了源码你需要去里面寻找东西,比较简单的有正则表达式,更方便的有BeautifulSoup。对json解析有json。等等。&br&最后你可能需要一些模块化的思想。比如我在写爬知乎问题的时候,写了一些代码来让它把输出的结果自动保存到excel里…那我是不是可以把写入excel这个行为单独抽出来,定义为一个方法。以后每次遇到需要excel的地方我就拿过来改一下就能用。同样的思路,登陆过程,post数据的过程,解析数据的过程,是不是都可以自己慢慢积累为模块。就好像你有了很多乐高积木,以后再做的时候就不需要做重复的事情,直接搭积木就好~&br&&br&最后感谢一下在我学习过程中参考过的别人的回答和博客。太多了无法一一列举。再次感谢。&br&&br&&b&编程是最容易获得的超能力&/b&。你还在等什么?
——————最重要的话写在前面—————— 0、新手/喜欢练习/欢迎交流/邀请/我是看着这个问题下面的答案学习的 1、带着一个目的来学爬虫。#我的目的实现了…所以我来写这个回答了。 2、不要怂就是干!系统学习固然好,直接写一个项目出来效果更加简单粗…
“入门”是良好的动机,但是可能作用缓慢。如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习。&br&&br&另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习A的经验可以帮助你学习B。因此,你不需要学习怎么样“入门”,因为这样的“入门”点根本不存在!你需要学习的是怎么样做一个比较大的东西,在这个过程中,你会很快地学会需要学会的东西的。当然,你可以争论说需要先懂python,不然怎么学会python做爬虫呢?但是事实上,你完全可以在做这个爬虫的过程中学习python :D&br&&br&看到前面很多答案都讲的“术”——用什么软件怎么爬,那我就讲讲“道”和“术”吧——爬虫怎么工作以及怎么在python实现。&br&&br&先长话短说summarize一下:&br&你需要学习&br&&ol&&li&基本的爬虫工作原理&/li&&li&基本的http抓取工具,scrapy&/li&&li&Bloom Filter: &a href=&///?target=http%3A//billmill.org/bloomfilter-tutorial/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bloom Filters by Example&i class=&icon-external&&&/i&&/a&&/li&&li&如果需要大规模网页抓取,你需要学习分布式爬虫的概念。其实没那么玄乎,你只要学会怎样维护一个所有集群机器能够有效分享的分布式队列就好。最简单的实现是python-rq: &a href=&///?target=https%3A///nvie/rq& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/nvie/rq&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&rq和Scrapy的结合:&a href=&///?target=https%3A///darkrho/scrapy-redis& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&darkrho/scrapy-redis · GitHub&i class=&icon-external&&&/i&&/a&&/li&&li&后续处理,网页析取(&a href=&///?target=https%3A///grangier/python-goose& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&grangier/python-goose · GitHub&i class=&icon-external&&&/i&&/a&),存储(Mongodb)&/li&&/ol&&br&以下是短话长说:&br&&br&说说当初写的一个集群爬下整个豆瓣的经验吧。&br&&br&1)首先你要明白爬虫怎样工作。&br&想象你是一只蜘蛛,现在你被放到了互联“网”上。那么,你需要把所有的网页都看一遍。怎么办呢?没问题呀,你就随便从某个地方开始,比如说人民日报的首页,这个叫initial pages,用$表示吧。&br&&br&在人民日报的首页,你看到那个页面引向的各种链接。于是你很开心地从爬到了“国内新闻”那个页面。太好了,这样你就已经爬完了俩页面(首页和国内新闻)!暂且不用管爬下来的页面怎么处理的,你就想象你把这个页面完完整整抄成了个html放到了你身上。&br&&br&突然你发现, 在国内新闻这个页面上,有一个链接链回“首页”。作为一只聪明的蜘蛛,你肯定知道你不用爬回去的吧,因为你已经看过了啊。所以,你需要用你的脑子,存下你已经看过的页面地址。这样,每次看到一个可能需要爬的新链接,你就先查查你脑子里是不是已经去过这个页面地址。如果去过,那就别去了。&br&&br&好的,理论上如果所有的页面可以从initial page达到的话,那么可以证明你一定可以爬完所有的网页。&br&&br&那么在python里怎么实现呢?&br&很简单&br&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&kn&&import&/span& &span class=&nn&&Queue&/span&
&span class=&n&&initial_page&/span& &span class=&o&&=&/span& &span class=&s&&&&&/span&
&span class=&n&&url_queue&/span& &span class=&o&&=&/span& &span class=&n&&Queue&/span&&span class=&o&&.&/span&&span

我要回帖

更多关于 app store变成日文 的文章

 

随机推荐