奋斗
生命在于折腾
生命在于折腾
七 26th
一般来说
从我日志的数量大概可以看出我这段时间的状态
这段时间更新的很少
主要是上班太累 没有心思折腾
上个星期宽带也出了问题 周末才修好
这短短的一周 可爱的picasa又被封了
真是天杀的
七 6th
其实一直对android很感兴趣
虽然没有用过它的真机…
上个星期看到了这篇文章
Android:Google 翻译前端
作者的代码写的简单明了
并且发布了源代码给大家学习
真是很不错
看了之后 决定动手增加点东西 学习一下android的开发
增加的内容主要是在查询过程中弹出一个等待的对话框
涉及到的内容包括 ProgressDialog, AsyncTask
效果如下
当用户点击Translate的时候,会出现一个”正在查询”的对话框
查询完毕后对话框消失
对话框很好做 showDialog(1) 后
系统会调用
@Override
protected Dialog onCreateDialog(int id) {
if(1 == id)
{
ProgressDialog dialog = new ProgressDialog(GTranslator.this);
dialog.setTitle(“正在查询”);
dialog.setMessage(“请稍候……”);
return dialog;
}
return null;
}
但是 查询是个阻塞的过程
我们必须得在另外一个线程里去做这个事情
比较简单的方法就是继承AsyncTask
网上有一篇转载比较多的关于AsyncTask的文章(Android线程模型(Painless Threading))
官方的说明在这里 http://developer.android.com/reference/android/os/AsyncTask.html
大概说一下 android 的ui线程不是线程安全的
我们不能在其他的线程里直接做关于ui的操作
这里有个简单的办法就是继承AsyncTask
然后实现它的doInBackground方法
在类的onPreExecute(),publishProgress(Progress…),onPostExecute(Result)方法里
做ui的操作
如果在doInBackground里操作ui
可能会弹出异常提示
“Only the original thread that created a view hierarchy can touch its views”
不是每次都弹…为什么了?
下面贴一下线程的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | private class ProcessDialogThread extends AsyncTask<String, Void, String> { // @Override protected String doInBackground(String... str) { String toTranslateTextString = toTranslateEditText.getText() .toString(); String tempString = toTranslateTextString.replace(" ", "%20"); fromString = mCountries[fromSpinner.getSelectedItemPosition()]; toString = mCountries[toSpinner.getSelectedItemPosition()]; String queryString = tempString + "&langpair=" + fromString + "%7C" + toString; return getRawData(queryString); } protected void onPreExecute() { showDialog(1); translatedTextView.setText("Connecting..."); } protected void onPostExecute(String rawData) { dismissDialog(1); if (null != rawData) { String parsedDataString = getData(rawData); if (null == parsedDataString || "" == parsedDataString) { try { translatedTextView.setText("Not found"); } catch (Exception e) { e.printStackTrace(); } } else { translatedTextView.setText(parsedDataString); dbAdapter.insertItem(toTranslateEditText.getText() .toString(), parsedDataString); /* * FileAccess.writeFile(this, * toTranslateEditText.getText().toString() + ":" + * parsedDataString); */ } } else { translatedTextView.setText("Translate failed!"); } } public String getRawData(String string) { String dataString = null; // String queryString = "hello%20world&langpair=en%7Czh-CN"; String queryString = string; try { URL url; if (bAtOffice) { url = new URL("http://10.85.40.153:8000/a.xml"); } else { url = new URL( "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + queryString); } URLConnection conn = url.openConnection(); conn.connect(); BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream())); byte buffer[] = new byte[1024]; // bis.r String readerString; while ((readerString = reader.readLine()) != null) { dataString += readerString; } reader.close(); // is.close(); } catch (IOException e) { System.out.print("Net work error"); } return dataString; } } |
六 26th
六 22nd
GAP: GAppProxy是一个运行于Google App Engine上的
遵循GUN的代理解决方案
关于它的详细介绍请访问项目主页
code.google.com/p/gappproxy
它的一个劣势就是需要运行一个客户端
是个简单的python脚本
在windows下 作者已经写好并打包了一个GUI程序
但是在linux下没有
上周末抽空做了一个Ubuntu下的GUI界面
点击start 后会缩放到托盘
GNOME的托盘是在上面哦
如果需要使用自己的server
首先修改并save
然后在start就好了
程序的部分代码是直接复制GAP下的gui.py里的
把代码解压后放到localproxy文件夹里
和proxy.py等 放一起就好
在终端里输入python linux_gui.py 运行
但 既然要在终端里输入命令
那为什么还要GUI了 ……
哈哈 看起来很笨拙
实际上我是想打包做成安装包的
尝试了freeze.py 但是在编译的时候出错
等有时间再想想办法吧
在Linux上 我基本还是小白
这段脚本测试的环境是
Ubuntu9.04
python2.6
Qt4 和 pyqt
六 21st
音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。
之前和朋友约好去798玩的
晚上查查国米专卖店的位置蓝色港湾
发现和798离着不算远
于是决定先去逛逛国米的专卖店
专卖店的位置不算好找
在蓝色港湾的东边上头
空间不大 只有一层开放
里面买的东西有些小贵
最普通的一款T恤要160
看起来不错 就怕洗过后没型
我是打算去买个帽子的
价格可以承受 夏天还挺实用
普通款的现在打折 一百出头
不过帽子比较浅 我戴不下
还有一款国米的百年纪念款的 看起来不错
就买了 白底红十字
据说现在加入会员比较便宜
人民币100
没有优惠的价格是16欧元
找不到人一起去看国米在鸟巢的比赛
就买个帽子来补偿一下吧
近期评论