一点生活,一点记录

最近几天,过的还算充实,学了不少东西。
比如为了写胶片摄影小助手,不得不引入sqlite数据库,然后把sql语句复习了遍。终于有了现在的0.5版本,还不错,主要功能都有了,详情可以去这里下载
http://www.zerob13.in/photographyhelper/
然后呢,就是编程空闲时间,除了和上网和人胡扯胡扯求交往求勾搭神马的以外,还顺便拼了张大图。就是上次去拍渔民的全景。
本来我是很少用非常规画幅的照片的,不过,偶尔拼贴一下,也是不错的么:O

Untitled-1

昨日小事

在写下这篇文章的时候,一开始写的是“今日小事”,突然抬头一看,居然已经是凌晨1点多了,于是就翩然改为“昨日小事”。
昨天一天过的算是值得在记忆中留下一笔,昨天去了同学会,这是我高中毕业第二次参加同学会。依然是吃饭唱歌做游戏神马的。有的人变化很大,有的人几乎没变化,比如我。当然,不同的人不同的气质倒是在过了那么一些年后更加明显,也算是一种凝聚吧。金老师生了个女儿,挺好的,蛮有趣的一个小孩子。好吧同学会就略过吧,想说的我都说了,不想说的么,那就不说了。
晚上回来,继续开发那个胶片摄影小助手,把景深计算器的功能加上去了,然后版本更新到了0.3beta,发布在这里
http://www.zerob13.in/photographyhelper/
还有一个发布的地方是N多市场,地址在下面:
http://www.nduoa.com/
这里我要吐槽一下国内的几个android市场了,n多算是做的比较晚,但是比较好的一家,安智和安卓都是rom起家的论坛,所以在rom里面绑定,赚了不少用户。但是安卓的审核真tmd慢,安智的审核是脑残。n多的就比较好,有问题没问题都会主动联系你,比较有人情味,而且方便,很多事情你和人交流就好的多。安智的那个兼职脑残的我无语。我一个看源代码的软件放上去,这个明显是只能打开代码文件的么,他去打开其他的可执行文件之类的东西,然后说我fc还是无法显示就是bug,不通过。我说,你拿看pdf的东西去打开avi试试?太脑残了。
好吧,吐槽完毕,希望大家多支持胶片摄影小助手,这个软件还会不断完善:)

胶片摄影小助手0.2Beta 公测版

胶片摄影小助手 ,现在的版本是0.2Beta

发布页地址:http://www.zerob13.in/photographyhelper/

关于 胶片摄影小助手

这是一个帮助那些玩胶片的摄影师的一个实用的小工具

目前主要功能如下:

1.简易测光表:

通过输入现场的数据,计算出较适合的快门速度,方便摄影师估测曝光

2.定时器:

洗胶片的时候总是把握不好时间,有了这个小小的定时器,这些都不是问题了:)
正在开发中的功能:

1.水平仪

2.景深计算器

3.胶片资料查询功能

截图如下:

[1]( "1")

[2]( "2")

[4]( "4")

[3]( "3")

[5]( "5")

CodeBrowser2.6 新春特别版

下载地址:http://cid-d94239a09a81fece.office.live.com/self.aspx/.Public/CoderBrowser2.6.apk

更新如下:

  1. 修复了一些小bug
  2. 可以打开cxx,hpp等当时未考虑到的C语言源文件
  3. 修改了配色,大气的黑色背景强势回归
  4. 更新了高亮的js代码,速度略上升(基本上感觉不出来,囧)
  5. 缓存文件位置改变,不再是放在卡上,缓存放在了手机上,速度有提升

截图如下:

CodeReader的诞生

首届Google暑期大学生博客分享大赛——2010 Andriod篇

自从买了android的手机后,用这一直都挺舒服的,从最早买的G1到现在用的G3,android系统的开发让我爱不释手,但是渐渐的我却发现在上面看代码却不是那么的爽快。基本上只能用txt格式的方法看,但是白底黑字的代码是无法让好“色”的我满足的,于是就萌发了自己DIY一个代码阅读器的想法。
由于这个程序主要是满足我自己的需要,所以就打算写的比较简单一点,支持C/C++/Java的简单高亮就好。所以就写出了CodeReader,先放一些截图吧,然后再慢慢说这个程序诞生的故事。



开发这个代码阅读器基本上就需要解决以下几个问题:
1.文件的读写
2.代码显示容器
3.代码的缩进
4.代码的染色
于是我便开始上网查询了一些资料~我发现文件的读写不是什么大的问题,我有一本关于Android开发的教材中讲到了文件读写的部分,于是便模仿出了下面的代码~

package com.zerob13.Codereader; import java.util.Vector; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.TextView; public class fileData{ public String name; public int type; } class ExpBaseAdapter extends BaseAdapter { private Context mContext; private Vector mItems = new Vector(); private LinearLayout layout,layoutmore; public ExpBaseAdapter(Context context) { mContext = context; } public void addItem(fileData it) { mItems.add(it); } public fileData getItem(int it) { return (fileData)mItems.elementAt(it); } public int getCount() { // TODO Auto-generated method stub return mItems.size(); } public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } public int getItemType(int arg0) { // TODO Auto-generated method stub return getItem(arg0).type; } public void clearItems(){ mItems.clear(); } public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub //LinearLayout layout=null ; LayoutInflater inflate = (LayoutInflater) mContext.getSystemService(android.content.Context.LAYOUTINFLATERSERVICE); arg1 = (LinearLayout) inflate.inflate(R.layout.listfile,null); TextView fmtext01= (TextView)arg1.findViewById(R.id.fmtext01); fmtext_01.setText(getItem(arg0).name); //Log.v("vodone",""+arg0+" name="+getItem(arg0).name); /if (getItem(arg0).equals(".")){ }/ return arg1 ; } }

然后就是选择显示代码的容器了,一开始我的打算是用TextView,但是我发现如果用TextView的话似乎无法让代码高亮起来啊~于是我便先去寻找了一下代码高亮的实现方法。首先是找到了一个windows下的实现,就是利用RichTextView的那种组件来完成。但是似乎android自带的组件里面没有这么一个玩意啊(哈哈,我是初学者,什么都不懂)。后来问了一个朋友被告知,其实所谓的RichTextView就是和浏览器差不多的东西,就是解析了HTML之类的标记性语言然后实现了高亮。这下子就好办了,直接用android自带的webview就可以解决容器的问题了~
最后就是最关键也是最核心的部分了,如何把纯文本的代码转化成为色彩斑谰的网页呢?这里我用了一个很简单的算法,就是关键词替换~
基本上就是对文本进行扫描,遇到关键词就替换为html语句,为之上色。很快我的0.1版本就出来了~
不过问题可不是到这里就结束了,我发现原来文本里面依靠的”\t”(tab)的缩进在html里面就被忽略了,于是代码就变成了一整块黏合在一起的。怎么办呢?我查阅了html的语法,发现似乎没有什么东西是可以在html里面现实tab缩进的,一时之间卡住了。当时可谓是百思不得其解,后来很偶然的想到,为什么不直接用几个空格来代替一个tab呢?于是问题迎刃而解,不由感慨,有时候很简单的问题,但是却卡在了一条道上导致无法解决啊。
这样,基本上这个程序就完成了。测试了几段代码,效果还不错~如果大家喜欢的话可以在这里下载哦
猛击这里下载CodeReader

IEEE754标准实数转化类(方便做组成原理作业)

因为组成原理需要你把IEEE754转化来转化去的。。所以我就写个东西来完成这个工作了。。。
一个简单的java类,喜欢的同学可以拿去用~javadoc也写了~

/* * * @author yanglingfeng */ public class IEEE { /* * IEEE754标准的单精度实数转化为16进制表示 * @param a * @return String / public String FloatToHex(float a){ int c=Float.floatToIntBits(a); return Integer.toHexString(c); } /* * IEEE754标准的双精度实数转化为16进制表示 * @param a * @return String / public String DoubleToHex(double a){ long c=Double.doubleToLongBits(a); return Long.toHexString(c); } /* * 从16进制表示转化为IEEE754标准的双精度实数 * @param a * @return double / public double HexToDouble(long a){ double b=Double.longBitsToDouble(a); return b; } /* * 从16进制表示转化为IEEE754标准的单精度实数 * @param a * @return float */ public float HexToFloat(int a){ float b=Float.intBitsToFloat(a); return b; } }

Java写的创意时钟,纯属好玩,没任何实用价值的说~

先上图吧,有个图比较好解释:)

绿色的圈代表秒,蓝色代表分,品红代表小时
分别以当前的秒所占一分钟的比率,当前的分所占一小时的比率,以及当前的小时所占1天的比率画出弧度~
思路相当简单,不过实现起来还是比较好玩的:)
稍稍修改了一下,现在应该符合常识了
编译好的jar文件在这里下载
http://cid-d94239a09a81fece.skydrive.live.com/self.aspx/.Public/aa.jar
代码如下:

import javax.swing.; import java.util.; import java.awt.; public class ClockPanel { /* * @param args / JFrame frame; Canvas ab; Clock kk; int hh, mm, ss; Calendar cal = null; ClockPanel() { frame = new JFrame("Clock"); frame.setBackground(Color.white); ab = new Canvas(); ab.setSize(400, 400); ab.setBackground(Color.red); frame.setSize(400, 400); frame.add(ab); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); kk = new Clock(this); begin(); } /* * 画图函数,就是很简单的用Calendar类获得当前时间,然后弧形 / void draw() { Graphics g = ab.getGraphics(); g.setColor(Color.red); g.fillRect(0, 0, 400, 400); g.setColor(Color.green); cal = Calendar.getInstance(); hh = cal.get(Calendar.HOUR_OF_DAY); mm = cal.get(Calendar.MINUTE); ss = cal.get(Calendar.SECOND); g.drawString("Nowtime:" + hh + ":" + mm + ":" + ss, 40, 60); int ars = 6 * ss; int arm = 6 * mm; int arh = 360 / 24 * hh; g.fillArc(100, 100, 200, 200, 90, -ars); g.setColor(Color.blue); g.fillArc(130, 130, 140, 140, 90, -arm); g.setColor(Color.magenta); g.fillArc(150, 150, 80, 80, 90, -arh); } void begin() { (new Thread(kk)).start();// 线程启动! } public static void main(String[] args) { ClockPanel a = new ClockPanel(); } } /* * 这个是用来控制画图的线程,每秒刷新 * * @author yanglingfeng * */ class Clock implements Runnable { ClockPanel a = null; Clock(ClockPanel in) { a = in; a.draw(); } @Override public void run() { while (true) { try { a.draw(); Thread.sleep(1000);// 1秒刷新 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

复习在凌晨

虽然明天不考试,虽然最可怕的考试在后头,虽然我现在复习的东西都是要一周后才考试。但是自己已经感觉到压力了。
今天和wt一起在办公室里自习到凌晨1点半,我终于大致把离散数学理顺了一边。可惜发现自己纰漏还是很多。然后还有物理,还有电路,顺便还有后天考试的java。
java的话问题应该不大,主要是在看一些细小的地方比较重要。离散估计还要来一边,关键点在于陪集,子群,树的证明。演绎推理和范式整理也需要练习几个题目。其他的就过一遍应该就好。明天起床后,继续研究一下物理。下午稍稍再战斗一下离散就开始复习java。
精益求精,这个是对自己的基本要求。
不是为了成绩,纯粹是对自己的一种偏执。
今天考了物理实验,很刺激。全部的人就我的示波器不知道被谁乱玩过,所有的旋钮都调的莫名其妙。然后人家完成第一个实验的时候,我才刚刚把示波器复位好。一阵冷汗,之后奋起,柳暗花明,瞬间完成两个实验,第一个满分走出实验室。
后来知道,寝室除了zs大家都是满分,zs很无奈,明明做对了,缺被找个了茬,只能说rp不行。
周五的时候考了体育舞蹈。很傻逼的是,跳舞的时候脑子里回响的不是华尔兹的伴奏,而是just one last dance。我真脑残。
最后,磕磕碰碰算是跳完了,80分,满足了,估计和跑步、俯卧撑综合一下体育也有个70左右了吧。实在是悲剧。
今天也算是疯狂的,平大师突然去云游了,感觉像是突然从生活中抽走了一抹色彩一样,一下子有点傻掉了。于是我上午就看物理,和黑体还有辐射以及光学做斗争。下午就随着zs他们去六教自习。听完了4碟md。顺便参加了很刺激的物理实验考试。晚饭没胃口,喝了粥,之后变接到wt的电话,然后一咬牙就决定不回寝室,看书看到1点。
说实话,现在还想看书,感觉自己什么都不懂。可惜脑子不好使了,开始混沌了,所以还是睡觉吧。在边上的实验室找到一个折叠床,挺舒服的,睡之~
快考试了,有个奋斗的目标真好,可以不顾一切。
ps:平大师快结束云游回来吧。。。太不习惯了。。。
又ps:考试,必须努力!

选课有感

估计这个就是下个学期的课表了。。。没什么特殊情况的话。。。基本上我这个人只加不减。
很扭曲的没选汇编,因为讨厌看到win32这几个字,而且,对我来说学了也没什么用。。。反正铁了心考研的,选课就可以按照自己的爱好来了。人工智能,适不适合我,我不知道,但是我感觉挺喜欢的,因为是偏向理论的吧,我讨厌整天哪个热门就去干哪个的风气。就好比近几年风行的java、嵌入式,谁都去搞,的确,牛逼的都很牛逼,但是更多的都是高科技农民罢了,不热门的就不好么?当然我不是说人工智能不热门什么的,我只是表示对跟随风气的一种厌恶罢了。我也学java,而且还是后来选了java,原因很简单,暑假的时候自己学了学java和c#,本来想选c#的,因为微软的东西比较好学,而且老师比较好,但是暑假的简单接触发现java更加适合我。而且我这种不太和windows合得来的人,c#的平台就限制的我很不爽。所以就选java了。学了之后才发现,java的确适合我,当然,我不知道c#会不会更加适合,我只是觉得,java对我来说,还是值得学习的。至于后续的j2ee课程,我暂时还没打算选,第一,需要跨专业选,第二虽然j2ee很热门,但是感觉我不怎么感冒,我现在学java的动力大部分在于android和j2me,当然前者是大头。下个学期应该会和老师一起去做一些ophone的东西,我挺支持我国自己的通讯产业的。虽然它有种种的问题,甚至ophone还很恶心的修改了android的底层代码,导致现在更新都很麻烦,但是td也好,ophone也好,如果我有了工作,有了收入必定会去支持一下的,至于现在,没钱,也没资格去支持。
扯着扯着就扯远了。。。最近一直在反省自己,自己和那些站在世界顶端的人究竟有什么差距。智力,是一方面,的确,我没有他们中大部分人的高智商,这个很重要。至于努力不足什么的,我感觉这个是比我是白痴还要无聊的借口。努力是要有兴趣支持的。
日子就那么过嘛,最近两天自习很没效率,貌似看不进去书,所以现在就停笔了,看书去了。
ps:
贴一下课表~

浪费的岁月

今夜,本想做做java设计,无奈做一个出一个问题。。。
罢了罢了,脑子一团浆糊。
这段时间完全静不下来。。。
罢了罢了,继续看书,继续找方法。
如果连自己擅长的科目都无法把握好,又怎么去向其他方向努力呢?