AnimeTaste 发布出去后,很多小伙伴问我,能不能开源这个App。

今天给大家一个正式的答复:开!

不过得等到稍微稳定一些的时候开放,目测还得2个月左右,我个人有些完美主义倾向,不会为了发布App而发布App。我也会一直完善这个App,不管是供大家学习还是二次开发,我都会全力给大家提供帮助。

之所以这么支持开源,源于自己大二的时候,GitHub出来两年(一年半?)之际,我注册了GitHub的账户,只是听说那是个开源社区,但是登陆进去一片茫然,不知道Git命令是什么,不知道版本控制是什么,只是单纯赶了个时髦,开源爱好者也成了自己标榜的噱头。

直到…

自己在开发小熊词典的的时候,遇到一个真真切切的问题:如何把Android 3.0以上的ActionBar,兼容到Android 3.0以下。随后为此展开各路搜索,StatckOverFlow告诉我:快去使用一个叫ActionBarSherlock的库吧。

初学使用别人的库配置ActionBarSherlock是个很痛苦的事情,因为各种不会,不知道如何导入…导入后又是一堆错误…不但ActionBarSherlock出错,连自己原来的代码也冒出红色感叹号。

又是一番狂风暴雨般的搜索….

花了三天左右,彻底明白了这些流程的头头尾尾,当ActionBar成功的在我的HTC Desire上跑起来时,惊、喜、成就感。

丢下手头的事情…

开始点下GitHub的 Explorer…. 那场景就像:整理书柜,无意翻开一本小说,却不曾想一下子陷了进去,进入到了小说的世界。

我的GitHub | 开源进度咨询

如何认识少楠:

少楠是我在简书的线下分享会认识的,发布会的前几日,无意间看到百姓网的微博发布一则Android/IOS开发者招聘(地址在此)。我个人呢肯定不能全职(有学要上,而且正在实习),随手回复了下,没想到少楠同学主动私信我邀请我去百姓网坐坐聊聊天,恰巧周六在百姓网有简书同学的创业分享会。

读大学的时候,总有一种身边没有志同道合的朋友的感觉,找不到一个能和自己一同聊互联网,有相同知识面和见解,我只知道身边真心超爱这一行业的基本上没有。老师只想着如何得个更高的头衔,如何从学校搞的更多的钱,同专业的朋友们只想着如何找个好工作,考个名气大些学校的研究生。记得自己花1万4买下第一台Macbook Pro时,周遭宿舍很多人认为这是炫富,每次听到这些话我只是微微一笑,从不解释更多。我只是意识到对开发者而言,最好的开发工具就是一台高配置的Mac,是生活的一部分,是个人追求的一部分。

分享会:

聊得很投机~

我理解的少楠:

少楠是懂互联网的一个人,有很多产品的想法,思考问题从用户的角度出发,有着小野心却苦于不懂开发的一个优秀的产品经理。

少楠热爱的动画事业:

少楠也是个热爱动画的人,至少从他和他的团队做的 http://animetaste.net/ 和 艾墨镇 就可以看出。

从我们的聊天里我知道艾墨镇一直是缺少Android客户端的。少楠是不会开发的,当我后来几天微信上决定给他做个Android客户端的时候,他在微信的回复是这样的:

”你知道么,我等IOS开发者等了两年,php4年,安卓2年。“

我回复说:”你是怎么活下来的“

“素材发给我,过几日开工。”

收到素材后,我又惊呆了。HOLO风格的设计图已经做好了…他自己也说,没事的时候就YY安卓客户端(囧),他真的等太久了!

在此给少楠一个承诺:少楠同学,等我好消息!

附上少楠YY设计图,以及少楠微博,和他的个人站点,不能再多说了,因为我要开工了:

这里记录着我所见过和交流过的互联网名人,这里会随着我的成长而越来越丰富的:

2013年08月10日:参加在百姓网举办的简书线下活动,见到了简书的创始人林立,还见到了百姓网PM plidezus ,聊的超投机。当然也见到了前端大神 sofish(小鱼),他原来不是一个大叔,只是个跟我一样的小伙子。

2013年07月24日:传漾科技 (百科)的创始人徐鹏(David Xu)带我和市场部的Anny一起去看了个夜场电影《White House Down》,看完后吃夜宵,等到了安沃传媒 (百科)创始人王旭东,随便聊了些,然后夜里打车回住处,身上没带钱,王还借了我两百块…尴尬。

2014年03月17日:和豌豆荚联合创始人崔瑾阿姨聊天,性格好温和,人超级Nice。

2014年05月13日:和世界之窗浏览器(后来的360浏览器 orz )作者孙鹏大牛去北邮喝了个饮料,他给我上了一节生动的互联网发展课 ?

每个人都有故事,我在想有没有一个app能记录下我们每个人的故事和成长?

毕竟

一个人,不论贫穷还是富有,辉煌还是落寞,都有属于自己的精彩故事,让我来组织起来,让大家分享彼此的故事。

先不透露太多,上张截图,查看大图

如果你在启动MongoDB的时候,出现以下错误:

Wed Apr 27 10:02:41 [initandlisten] shutdown: going to close listening sockets…
Wed Apr 27 10:02:41 [initandlisten] shutdown: going to flush diaglog…
Wed Apr 27 10:02:41 [initandlisten] shutdown: going to close sockets…
Wed Apr 27 10:02:41 [initandlisten] shutdown: waiting for fs preallocator…
Wed Apr 27 10:02:41 [initandlisten] shutdown: closing all files…
Wed Apr 27 10:02:41 closeAllFiles() finished
Wed Apr 27 10:02:41 [initandlisten] shutdown: removing fs lock…
Wed Apr 27 10:02:41 [initandlisten] couldn’t remove fs lock errno:9 Bad file descriptor
Wed Apr 27 10:02:41 dbexit: really exiting now

理论来说,是因为缺乏写权限,无法向/data/db/文件夹写入数据。

修复方法:

sudo chown id -u /data/db

sudo mongo

如果还有问题:

sudo mongo –repaire

现在让我们来用刚学会的Responsive技巧来制作一个blog前端。

一切从导航开始,例子的Demo大概是这样的:点击查看例子 请尝试拖拽窗口大小,查看响应式效果。

第一步:HTML和CSS实现导航

index.html:

从导航开始

注意:index.css 的宽度要用百分比来计算,这样在页面大小变化的时候,整个框架也会按比例放缩。

.container{ width:90%; height: auto; margin:0 auto; margin-top:20px; background-color: #fff; -webkit-box-shadow: 0 0 10px rgba( 0, 0, 0, .1 ); -moz-box-shadow: 0 0 10px rgba( 0, 0, 0, .1 ); box-shadow: 0 0 10px rgba( 0, 0, 0, .1 ); } div#logo{ float: left; padding-top: 7px; width:25%; } div.navigation{ height: 80px; } div#nav{ width: 75%; float:right; } #nav ul{ margin-top:25px; list-style: none; } #nav ul li{ float: left; width:20%; text-align: center; font-size:1.5rem; }

第二步:实现Responsive.css:

要实现响应式的布局,就要监测当屏幕大小变化时,重新调整一些元素的位置,大小,样式。

而在这个例子中,我们需要:

  1. 重新调整Logo位置,使其居中。
  2. 重新调整导航位置,使其在下行占满。
  3. 取消掉logo和ul > li的浮动,防止页面出现错误。

@media screen and (max-width: 480px){ div#logo{ width: 100%; text-align: center; margin-left: 0; padding-left: 0; } div#nav{ width: 100%; } div#nav ul{ float:none; margin-left: 0; padding-left: 0; width: 100%; } div#nav ul li{ float: none; width: 100%; margin-right: 0; margin-left: 0; padding-top:10px; padding-bottom: 10px; background-color: #fff; } }

首先不得不说,ADT22就是个大坑,一旦更新,过去稍不符合规定的代码,统统会现出原形来。(其实就是ADT22变得严格了)

FATAL EXCEPTION: main java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s contents without calling PagerAdapter#notifyDataSetChanged! 

出这个错,是因为你的PagerAdapter中的数据变了,但是没有调用adapter.notifyDataSetChanged方法。

如果你的代码逻辑是这样的:

class XXX extends asynctask

doInBackground(…){

1、获取数据

2、添加到数据池

3、publicProgress()

}

onPublicProgress(…){

4、调用adapter的notifydatasetchanged方法

}

在ADT22中,上面的代码肯定会报错的。为什么?

看下官方文档对 support/v4/view/PagerAdapter 的一个解释:

PagerAdapter supports data set changes. Data set changes must occur on the main thread and must end with a call to <a href="http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#notifyDataSetChanged()">notifyDataSetChanged()</a> similar to AdapterView adapters derived from <a href="http://developer.android.com/reference/android/widget/BaseAdapter.html">BaseAdapter</a>.

出错原因:数据更新必须在main thread进行更新!!结束前还得调用 notifyDataSetChanged() !!

也就是说,必须得把上面的2步骤,移动到onPublicProgress中才正常。

之前一直在Eclipse上开发小熊词典,Google I/O上推出Android Studio后,就转到Studio上了,但是项目依赖的文件太多,配置总是失败(因为尝试的Git方式管理),就打算重新在Eclipse上配置好再导入到Android Studio中。但是…Eclipse编译通过了,当在手机上运行的时候就出问题了。问题很传统,就是ClassNotFound,这种问题普遍是由于Android.manifest文件中的类名或者包名写错的原因。网上解决方案一大堆,我再三检查根本不是这个问题,我还总是不相信自己的眼睛,删掉ANdorid:name 认真粘贴的路径。。。

但是,这种屌丝的作法根本不解决问题,依然爆出如下错误:(橘黄色是Warning 红色是Error)

  1. Unable to resolve superclass of Landroid/support/v4/app/Watson; (149)
  2. Link of class ‘Landroid/support/v4/app/Watson;’ failed
  3. Unable to resolve superclass of Lcom/actionbarsherlock/app/SherlockFragmentActivity; (161)

….直到最后:

  1.  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo  java.lang.ClassNotFoundException

连续搜索了很多此 Unable to instantiate activity ComponentInfo ClassNotFoundException (因为总觉得Warning是不足轻重的!)… 看了一堆stackoverflow的帖子,都类似类名出错….最后看到那个warning抱着试一试的态度搜了一下 Unable to resolve superclass of Landroid/support/v4/app/WatsonGitHub的ActionBarSherlock的issue中终于找到了答案,而后百感交集啊。。。总结如下:

问题原因:更新到了SDK 22    具体看此处: GoogleCode GitHub Issue

问题解决:

  1. 右键项目,选择属性
  2. Java Build Path – > Order and Export
  3. 选中 Android Private Libraries

教训:不要忽略warning!

这里记载着我的发展,是我努力从屌丝的蜕变:

  • 2014年12月27日:GitHub Follower 突破2.4K。「稀土-掘金」上线。
  • 2014年12月19日:「稀土」天使轮完成,更多故事可以看Kalasoo的Timeline
  • 2014年11月24日:「稀土」开启Alpha内测。
  • 2014年10月21日:「impressive」流产,开启新项目「稀土 – 发现每一个特别的人」。
  • 2014年09月23日:  开始和kalasoo / 明泽 / 宋只羊 / 江江一起做「impressive」。
  • 2014年09月04日:参观豆瓣,收到实习Offer,不过感觉距离太远拒掉了,不想每天花两个小时在路上。
  • 2014年08月25日:AndroidSwipeLayout发布。
  • 2014年08月08日:AndroidViewHover发布。
  • 2014年06月25日:参加北京GDG Google I/O直播之夜,并且做了关于开源的Speech。
  • 2014年06月22日:AndroidViewAnimations发布。
  • 2014年06月02日:开源了一个Android上的Slider库。AndroidImageSlider,当然很果断的上了GitHub Trending榜。
  • 2014年05月29日:收到一封硅谷来的工作
  • 2014年05月22日:收到一封法国来的实习
  • 2014年05月06日:NumberProgressBar上了GitHub Trending啦。
  • 2014年05月01日:开源了一个性感的ProgreeBar,NumberProgressBar
  • 2014年03月16日:开源的「bleed-baidu-white」服务,请求量达到35.76万次。
  • 2014年03月07日:收到Hulu实习邀请
  • 2014年03月05日:「联手对抗臭长广告」Revenge 开源。
  • 2014年02月13日:收到饿了么入职邀请,不过还是感觉在学校轻松。
  • 2014年02月12日:收到杭州阿里内推邀请(需笔试面试)。
  • 2014年01月06日:收到 世界邦 伍业雄同学的职位邀请
  • 2014年01月22日:EverMemo for Android开源
  • 2013年12月03日:EverMemo for Android用户量到达10万。
  • 2013年10月20日:EverMemo for Android发布。
  • 2013年09月18日:AnimeTaste For Android开源
  • 2013年09月15日:在北京师范大学计算机系报道。
  • 2013年09月10日:EverMemo开发过半,改名EverMemo为抹茶,预计Android版本9月中下旬可以发布。
  • 2013年09月05日:开始开发EverMemo Android。
  • 2013年09月03日:AnimeTaste全球动画精选正式上线,点此下载体验
  • 2013年08月31日:AnimeTaste Android客户端开发完成,准备上线。
  • 2013年08月16日:开始为AnimeTaste开发Android客户端,故事背景
  • 2013年08月16日:结束了为期一月的实习,拿到了公司激励期权,以及未来研究生阶段公司每月3000块的实习工资。具体可以看 关于我 2013年9月2日版本。
  • 2013年08月03日:开源「bleed-baidu-white」榨干百度网盘计划
  • 2013年07月16日:开始在创新工场实习。微博
  • 2013年07月XX日:微博私信收到淘宝杭州研发部的职位邀请(需面试),不过要读研。
  • 2013年06月07日:微博私信收到友盟的实习邀请,不过时间有些错不开。
  • 2013年06月05日:将 Java-multithread-downloader push 到了GitHub
  • 2013年05月22日:上午接到创新工场上海区2层志精网络的Joyplus李永庆的电话,大致聊了些小熊词典的技术实现,还有一些NodeJs问题和他们公司的事情,也包括一些小问题(是否能去上海)。最后,我很有幸得到他们的Free Desk实习机会。感谢JoyPlus~  感谢李永庆
  • 2013年5月21日:向志精网络发出Email实习申请。当时的邮件内容是这样的:查看
  • 2013年4月27日:开始写Java-MultiThread-Downloader库,目前(2013年5月22日)尚未发布,很快完工,这是一个Java多线程,支持断点续传的下载库。
  • 2013年04月25日:香港中文大学人事处发来邮件,依据我目前情况及香港的签证法规,无法顺利得到签证,因而实习被延迟到14年暑假。
  • 2013年03月19日:我重新创建了这个Blog,起因于前端观察–神飞的一个加分项:有个人博客。
  • 2013年03月17日:收到Pili的邮件,祝贺我通过面试,得到在香港中文大学为期两个月的实习机会,随后开始奔走签证和一些繁琐文件的事情。和我同去的有还有两个人,在这里得隆重介绍下:一个是QiJiang Fan (人人小黄鸡的作者之一,2013年他大一,华科大) 另一个是Ray Guo(2013年他大三,哈工大)
  • 2013年03月15日:香港中文大学Prof.Lau用Skype对我进行了面试,大概就是谈了谈我所做的东西以及他们所在做的东西,我用着蹩脚的英语和他谈了谈。
  • 2013年2–3月:参加了香港中文大学的开源项目:snsapi official page 中文主页 (official page 由HuPili维护 中文主页由维护) ,当时的原文大致如此:42qu
  • 2013年3月07日:收到新浪寄来的《sae中级开发者证书》。
  • 2013年2月13日:在GoDaddy注册了littlebear.me域名,为小熊词典做准备。
  • .
  • .
  • 2012年10月26日:出发去西藏。
  • 2012年09月17日:去北京师范大学参加了研究生免推生笔试和面试,9月19日晚上返回西安,在返回路上,电话通知通过了测试。
  • 2012年09月XX日:开始动手写小熊词典
  • .
  • 2012年06月XX日:做了一些词典相关的数据采集。
  • .
  • 2012年04月XX日:开始为西北大学国际交流学院开发站点(基于WordPress)。目前已经上线,点击查看 开发时长:15日左右。
  • .
  • 2010年07月04日:注册了zhan-dui.com的域名,决定开始做个人站长。
  • 2009年09月01日:在西北大学新生报道。