@shellex说: 我预感有不好的事情发生了
  • Pages

  • Topics

  • 随便看看

  • 路边社评论员

    • lfeng:
      结合第一张和第三张照片,为神马我觉得猫猫是女生。。。 »
    • badboy:
      最后把这插件的善后工作说一下吧,我想了解一下看能力能不能把他开发下去 »
    • badboy:
      我想把你这项目接手过来,不过我是菜鸟程序员怎么把源代码变成XPM的插件啊请问 »
    • echo:
      哇哦~!! 漫画家路线! »
    • alswl:
      大哥的Naja~~~捂嘴飘过 »
    • zac:
      站内链接总是打开新标签页,烦,跳来跳去的 »
    • susankid:
      @susankid @Shellexy 上一条回复按错了人了我自重= =话说你们两只的名字为什么这么... »
    • susankid:
      @Shellexy 啊~乃真的是女生么。。。有一点点震惊。@@ »
    • ye:
      if anyone know how to get the chromium for linux o... »
    • 拉拉:
      嗯你是个瘦子。 »
    • badboy:
      大哥你的NAJA插件现在在RENREN淫淫网用不鸟了能不能更新一下啊,先谢过了另外最好能让自己改参数... »
    • stranger:
      哇靠,为神马我的那么平淡。。。 »

Posts Tagged ‘tech’

搞一搞Android开发?

既然HTC Dream已经到手了,不做几个程序自己用用都不好意思对别人说吧…要不我做点啥啥的。
要说大巫们都是自己搞施法材料泡石头的,要全身上下所有装备都是别的大巫烧制的岂不是很丢脸。。。回头怎么在巫师圈里面晃悠呢。。。
Android SDK配置简单得不行,没啥好说的,也是个屏蔽小白的好方法。但是问题是我的eclipse出了问题——非常的囧,几乎所有的“OK”、“Finish”、“Apply”,“Next”这样的按钮都没有响应——也就是说,这些按钮的单击事件都死翘翘了。
酱紫的话当然没法好好工作了,连建立个工程都是要点“Next”的。
个人猜测应该是SWT的GTK bind的问题,但是也没有找到什么好办法解决下,也没有log啥的。第一次觉得SWT在PC上也有不如Swing的地方,那就是与OS用的UI系统是高耦合的,一旦上游出问题,下面也一起出问题。而Swing就没有这样的问题。我Java菜鸟,瞎猜的,有什么不对的地方告诉我下,谢谢。
试试看,没有IDE是个什么后果?
Shellex写C/C++,Python,Javascript是木有用IDE的。无非就是个工程管理,自动编辑,vim就可以了。
但是Java的话我还真不知道怎么控制大工程。以前尝试一个项目的时候准备makefile,被abettor GG鄙视了:别土了,用ant。说是这么说,但是ant那xml是人写的么,我最讨厌人肉xml了。还有那些import的包,记不住阿…所以还是屈服IDE了。
这回又试试看:
安装好这个android sdk,按照android的开发者站上说的写个hello world。tool目录下有个android的工程管理器,自动生成hello world的。
模拟器和adb的组合很不错,调试麻烦的话可以放log,提示一下,android.util.Log可以直接log,查看log的话可以adb logcat,可以看到模拟器中android的运行日志,如果嫌多,参数是可以加filter的。
PS:SDK里面这套工具灰常地牛逼,详情自己参阅document
虽然是能用,但是写起来还是痛苦…特别是访问developer.android.com还存在一定的障碍….我得寻求IDE。
酱紫的话,我只好转而寻求Netbeans了。
要说从前我是从来不鸟Netbeans的,主要是Swing这玩意的GUI的Linux版本实在是烂的可以…现在至少能用吧。android的开发插件有个非官方的,叫nbandroid,牛逼阿ndroid。
现在就用这个。
PS2:这个Netbeans的编辑器…真是无语了…

Ubinote之完全不可用版本

呼呼,自从上回LinuxToy将Ubinote爆料出去,我再次体验到写程序是一件多么辛苦的事情。
好了,现在有兴趣的同学可以试试这个Ubinote了,但是请不要用它记录任何有价值的信息,因为目前Ubinote还处于极度混乱期。我可不对任何不良后果负责….
最近我研究个路线图出来,第一个发布版本将是Ubinote 0.59。谢谢大家的支持。
Project Page: http://code.google.com/p/ubinote/

UbiNote features 预览

上一篇文章让大家猜我的新工程,猜到了多少咩?
现在让我来揭晓答案吧。
开发代号:Ubiquity Note
顾名思义,Ubiquity Note 只做一件事,只做好一件事,那就是组织、管理你的笔记。
这个项目的来由很简单咯,Windows上有一款非常令人取舍不下的软件,叫OneNote。
像Shellex这样的爱学习的好同学,笔记总是很多的。什么最新的玛雅网址啦,什么最新的”五大门”啦之类的。
像这些笔记,如果有个统一的组织该多方便哈…
对此,Linux下有不少替代品呢!但是对我来说都有这样那样的缺点:

Basket 这样的,本来挺好,但是KDE依赖实在太多…而且太复杂
Tomboy 是 Mono 的,而且不符合我的使用习惯,
Jarnal 和 xournal 不好用…或者不知道怎么样用
Notecase这样的管理方式不爽,我还不如直接用文件管理…
Zim 用过一段时间,依赖不少,而且对富文本支持比较弱,优点是支持Tex。
TiddyWiki ,光一个js,总感觉不大靠谱…用过一段时间后体积暴涨,Fx撑着。
花花给过我一个(地址忘记了),pygtk的,但是有Bug,我又不想接着搞。
而Albert同学的 Gbase ,还遥遥无期呢

其实我的需求很简单,也是UbiquityNote的基本Features:

按照Tag和Notebook组织我的笔记
能快速检索,当笔记数目N增加时,平均检索时间T=search(N)不要上升得太快
富编辑,最好有Tex支持,最好有附件支持
跨平台,最好在Windows这个大傻逼上也能用。
依赖少一些,越少越好
数据互通性高一些,公共开放的格式最好,交换数据方便
现代化一些,不要像某些linux桌面软件一样好像是上个世纪70年度的产品

考虑到Albert同学的 Gbase本来很和我意的,但是…我等不了了,于是我开始了。经过一周左右零碎时间的开发,可以给大家看一个预览:

Shellex可以预先透露给大家的是,Ubiquity Note将会有很独特的设计,相信会让各位在做笔记时得到快感和乐趣。
具体是什么就先不说鸟,否则就不好玩鸟~~

UML课程为开源”添砖加瓦”了

那是在google.com被和谐的前夕的那个下午,很多同学都在赶制UML课程设计作业。
UML课程设计需要使用一种源码版本控制工具来进行源码控制,所以很多同学不约而用地使用了code.google.com作为代码hoster。
所以说UML课程设计为opensource添砖加瓦了。
下面我随意挑选了一些项目,大家乐乐:
compilerlijr141 : 一个Java写的类C编译器,不知道完成度有多少,代码里面有很多中文,而且用的是Windows默认系统编码,简称乱码。
cos-mcs: 一个用于保障移动设备系统安全的套件(Eclipse Plugin + Modified JVM + Mobile phone App)
zealot: 一个网站。嘿嘿,目录很整齐
xnaja: X-娜迦。
compilerc-: 又是一个Java写的类C语言编译器。里面有个很有趣的包,叫 com.sun.tools.javac.v8,不知道是不是一个javac的wrap,用javac生成字节码。如果是也不错。

用tmpfs让Firefox在内存中飞驰II

在《用tmpfs让Firefox在内存中飞驰》这篇文章我提到了关于如何使用tmpfs来加速Firefox的方案。(关于这个方案请看Gentoo Forums的讨论 )
但是这个方案的不足之处是:

由于.mozilla一般都比较大,所以第一次启动可能比较慢
需要额外修改/etc/fstab,操作比较复杂

还好,
YCF同学告诉我可以不必将整个.mozilla放入tmpfs,这样就没有必要同步不必要的文件进tmpfs了。
花花告诉我可以使用现成的/dev/shm,这样就不必修改fstab了。
这就是我现在用的方案。该加速方案不需要修改fstab或者特别配置,比较傻瓜。
首先提供speedfox.sh脚本一枚[这里,via]~请修改它的前四个变量保存待用。
# 同步到/dev/shm
MOZTMPFS=/dev/shm/mozilla_`whoami`_profile
# 原始的火狐profile目录存放点,如果你的firefox只有一个profile,
# 那么一般是结尾为default的那个目录。我常用的profile是shellex,我的选择是在后面加 .backup
MOZHDD=”/home/shellex/.mozilla/firefox/yj6mxdhg.shellex.backup”
# 火狐启动时的连接点
MOZHOME=”/home/shellex/.mozilla/firefox/yj6mxdhg.shellex”
# 同步的时间间隔,单位秒
INTERVAL=600
好了,现在请将所有的firefox方式指向这个脚本(记得加上可执行权限),然后将对应的profile目录改名,比如我是:
yj6mxdhg.shellex 重命名为 yj6mxdhg.shellex.backup
好了,关闭firefox,去~/.mozilla 清空cache啥的(我的设置是浏览器的cache放在别处,所以cache不同步),再用speedfox.sh代替之就会有很好的效果。

在Linux下进行JavaME CDC开发

遗憾得很,按照Sun对待Desktop产品的作风,和JavaFX一样,姗姗来迟的Sun Java Toolkits for CDC只有Windows的版本。
看来这个Sun的这个Mobile/Embedded部门对待自家的Solaris也不见的有多友好…所以我们用Linux的同学也沾不到什么光。
不过还好了,PhoneME这个项目的存在真是让人倍感欣慰。于是偶这个用Gentoo的同学才有了在Linux上开发CDC程序的可能性。
在这里已经有前辈做了相关的工作(需翻墙,不是故意要屏蔽小白的):
在ubuntu下用Eclipse开发基于PhoneMe Advance的J2me程序(1)-基本配置
在ubuntu下用Eclipse开发基于PhoneMe Advance的J2me程序(2)-AWT开发
如果懒得翻墙可以听我简单的说下。
phoneME有两个开发版,一个是for CLDC的PhoneME Feature,一个是for CDC的PhoneME Advanced。
那么我需要下载支持CDC的PhoneMe Advanced for Linux的Milestone Releases。如果需要GUI (AWT only),请下载具备 Persoanl  Profile(PP)支持MR1版本,否则就是MR2版本,它不支持PP,只支持Personal Basic Profile。
PhoneMe Advanced Mr2 可以在下载页下载:https://phoneme.dev.java.net/downloads_page.html#advanced
PhoneMe Advanced Mr1 可以在陈旧的下载页下载:https://phoneme.dev.java.net/downloads_previous.html#advanced
然后解压就好。如果是Mr1,选择里面那个pp结尾的目录,里面就是phoneME的runtime。而bin目录下的cvm则是JavaME 虚拟机。
测试一下:
[shellex@gentoo:bin]$ ./cvm -version
Product: CDC AMS 1.0 for PP (b31)
Profile: Personal Profile Specification 1.1
JVM: CDC 1.1.1_01 (interpreter loop)
很好很强大。
写一个巨呆B的Hello World。我还要图形的。很简单的,就俩按钮,一个用来正日,一个用来日成。代码和运行结果如下
package org.demo;

import java.awt.*;
import java.awt.event.*;

public class Test extends [...]

用tmpfs让Firefox在内存中飞驰

也不知道是Mozilla对Linux有偏见还是X-Window确实太慢,反正就是感觉Firefox在Linux下和Windows下速度那个差异啊,我操,太吓人了。
Shellex觉得是Mozilla没做好优化,反正Google Chromium for Linux和Midori的速度可是飞快的。
之前Shellex只是把Cache目录放到/tmp下去了(注意,Shellex把整个/tmp都用tmpfs挂载了的),效果不尽人意。后来按照est同学的危险方法优化,还是没什么效果。
偶一狠心,决定把整个.mozilla目录放到/tmp这个内存文件系统去。这些该爽了吧,不管firefox做什么查询,查历史,查书签,查哪天上的玛雅,查我和MM聊天,都在内存中进行。但是应该怎么搞呢…其实很简单的啦…
先备份一下。
mv ~/.mozilla ~/.mozilla-hdd
放到/tmp去一份:
cp ~/.mozilla-hdd/ /tmp/shellex-mozilla
然后创建一个从/tmp/shellex-mozilla到~/.mozilla的符号链接
ln -s /tmp/shellex-mozilla ~/.mozilla
开Firefox试试看?是不是爽了?“啾啾”就射出去鸟。
但是这样有个问题。/tmp下的东东每次重启都会被自动清除的,啊~我的NSFW收藏夹,啊~我的PRON FORUM cookies,啊~我的MM…. 你不会想要你的Firefox每次都运行在隐私模式下吧….呵呵
还好,有位同学给我们写了一份脚本,参见这里。
这个脚本好哇,只要使用这个脚本启动firefox,可以按时用rsync同步你的~/.mozilla-hdd和/tmp/shellex-mozilla。
把这个脚本下载下来,命名为speedfox.sh。好了。以后需要用firefox时,就启动它好了。
第一次请在终端下启动它,这样可以发现可能的错误提示,出现问题按照提示解决就可以了。以后会发现Firefox除了开机后第一次启动比较慢(需要同步文件到tmpfs),以后的各种速度都相当8错哦。
尤其是Awesome bar和以后的启动速度,很明显哦
友情提示:
无法运行speedfox.sh的同学请检查是否为其添加执行权限;
运行了speedfox.sh还是慢的同学请检查/etc/fstab和自身人品;
tmpfs /tmp tmpfs defaults,size=1000m,mode=1777 0 0
没看懂的同学请打怪练级赚经验。
Over。
==========Update 2009 16 June =========
改进方法参见:
用tmpfs让Firefox在内存中飞驰II

最近做JavaME开发遇到的问题

由于生理上的需求,所以最近需要在手机上搞些开发,于是涉足Java Micro Edition,也就是以前的那个J2ME。
话说我觉得JavaME是做得挺失败的,各大Smartphone的OS都不大鸟他,也就symbian对它好点,C++和J2me的支持基本同步,但是Nokia收购了QT以后还能对它有多好呢?
但是木办法,在iPhone、Android、Win-Mobile、BlackBerry组成围攻之中,破破烂烂的J2ME能生存到现在直到四面楚歌也不容易阿。
不过从技术上说这个玩意还是不错的,可惜哈,可惜哈…SUN是个呆头鸟Geek,不懂得怎么博得MM心。
下面Shellex记录一些从中遇到的问题,当作备忘。
安装WTK啊,配置Eclipse啊,配置EclipseME插件啊之类的屁话就不说了。我采取先描述症状,再说解决方案的叙述方法。
P1: 程序使用第三方库,于是运行时出现巨SB的错误:java.lang.NoClassDefFoundError: XXXXXX
S1: 基本上可以确定了,是由于打包时没有将此第三方库打包进去导致。所以需要在Project的Build path里面的Order And Export里面勾选该第三方库。然后在项目上点右键选择J2ME里面的Create Package即可。关于这个话题,请看这里和这里。
P1+: 恭喜你,你和Shellex一样在Create Package时出错导致无法将第三方包加入生成的jar中。一般来说此时的Eclipse会提示一些很SB的反正我看不懂的错误。
S1+: 这时候还是不依赖IDE比较好。GUI的方式是使用WTK自己的工具ktoolbar。在那里新建一个项目,然后把你的eclipse里面这个项目的内容同步搞过去,然后配置一下,点build。如果出错就改代码,不出错就点运行,没问题就在project菜单里面找Package->Create Package即可。
BTW: 在Linux下,WTK 2.5.2 建立的项目会放在 ~/j2mewtk/2.5.2/apps/ 下。别瞎找。
P2: 如何让模拟器读取本地文件系统?
S2: 开启模拟器以后,菜单MIDLet-> Externel Events的File Connection选项卡即是配置文件系统地方。注意这个鸟地方使用的是相对路径,对应的是~/j2mewtk/2.5.2/appdb/模拟器名称/filesystem/。可以在这里自行添加文件和目录什么的。
P2+: 无法浏览文件,权限不够,模拟器询问时,连允许的选项都没有。
S2+: 在模拟器的首选项的“安全”一节中设置JTWI为trusted或者maximum即可。
P3: 不管在eclipse中运行还是在WTK ktoolbar中运行模拟器,模拟器就一直SB地定在哪儿,屏幕和按键都没有任何反应和响应,直到大约10分钟后,恢复正常。
S3: 因为模拟器在尝试“使用网络”,在/etc/hosts中添加本地主机名到本地回环地址的映射可以解决问题。当然,你断掉网络也行。
cat /etc/hosts
# /etc/hosts: Local Host Database

# IPv4 and IPv6 localhost aliases
127.0.0.1 localhost
::1 localhost
127.0.0.1 shellex-gentoo
P4: 在eclipse中,模拟器启动后马上消失,输出栏说没有找到MIDlets Suit云云。
S4: 在Run Configurations中找到Wireless Toolkits Emulator部分,在MIDlet选项卡的Executable一节中设置MIDlet为com.sun.midp.midlet.Selector或者使用jar直接指定你生成的jar文件。
P5:打包的程序没法在真机上安装,在模拟器上正常。
S5: 检查你的jar中的MANIFEST.MF文件和jad文件是否一致。可能存在的问题是CLDC和MIDP使用的版本不一致导致。解决方法是手工改或者在WTK ktoolbar的Settings的API Selections中确定你选择的Target Platform的支持符合你的预期。

方便查看mldonkey下载情况的小脚本

本来呢,mldonkey是个NB东西,但是…
以前的时候,想看看mldonkey下载进度,得打开sacho,太麻烦。
后来的时候,想看看mldonkey下载进度,得打开http://localhost:4080,还是太麻烦。
再后来的呢,想看看mldonkey下载进度,得nc localhost 4000输入vd,麻烦。
再再后来呢,在骨头兄那儿有段小脚本,可以启动mlnet并且在命令行下查看下载情况来着,好得很呐。但是偶完全看不懂awk…怪不得叫awk呢,这么awkward的…
嗯,就是这样的。

alias m=’pgrep mlnet >/dev/null 2>&1 && echo vd | nc -q 1 localhost 4000 | awk ‘”‘”‘/\[D/{print "\033[0;32m"$7"\t\033[4;31m"$8"%\033[0m\t",$14"KB/s"} /Down:/'"'"

但是最关键的是在偶这里不能用!偶还不会改!偶只好写一个python的咯,但似乎看上去更加awkward...死了算了。

alias m="pgrep mlnet >/dev/null 2>&1 && echo vd | nc -q 1 localhost 4000 |python -c \"import re,sys; str=sys.stdin.read();a=re.compile('.*?\[D\s*(.*?)\].*mldonkey (.*?)[\s*](\d.*?)[\s*](\d.*?)[\s*](\d.*?)[\s*](\d.*?)[\s*](\d.*?)[\s*](\d.*?)[\s*]([\d|-].*?)[\s|\n]‘).findall(str);b=[(name.strip(), p.strip(), cs.strip(), ts.strip(), spd.strip()) for id, name, p, cs, ts, sn, old, act, [...]

用Python可视化Profile

得益与Graphviz以及Python强劲的自省能力——Abettor GG,这就是你当年乐道的‘反射’啦,Shellex搞了一个可以生成Call Graph的东东。
谢谢Python-cn的各位同学给偶这个小菜菜的帮助,顺便过了一遍《源码剖析》的第八章。

class call_tracker:
def __init__(self, cls, logfile=’track.log’):
self.stack = [('Push', 'start')]
self.call_map = {}

cls = cls if isinstance(cls, list) else [cls]

[...]

Page 1 of 212