Monthly Archives: July 2010

Exception from HRESULT: 0x8007000B 异常的解决方法

今天在Asp.net里调用非托管的.dll文件时,出现“
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)”这样的错误。

解决方法:

这是由于我使用的操作系统是Windows 7 64位的,而.dll确是32位的,于是出现了这个错误。只需将网站的连接池的设置改成支持32位程序运行就可以解决问题。

打架的最高境界就是快

刚吃完饭,闲了一会,玩了一下http://www.1-10.com/,这个网站做得蛮厉害的,试玩一下,一次通关,发现就一招,不停点鼠标就好,哈哈。。。,果然,打架的最高境界就是快,唯快不破,就像打格斗很多练好招的人遇上咱这种流氓打法的也是一个死!!!

再次更换空间

今天再次更换了空间,之前看http://www.datapacket.net/的空间便宜,就买了一个月试用了一下,其他倒没什么问题,就是万一遇上了点问题,找客户比登天还难,网站上的留言总是没人回复,而邮件也一直发不出去,想来想去还是换了。幸好当时只买了一个月。
现在的空间很大,可建的网站也很多,所以也帮几位同事的博客放上来了,否则这么强的空间就浪费了。

江苏电信好霸道哦

自打上次搬到新的地方,网络就出了问题,广电的网移不过去,那边没有广电的宽带业务。只得换其他的,最后发现只有电信的可以用,就打电话问了一下,发现电信的业务真是奇怪,我明明只想要宽带,但是却要附带给我天翼的手机,我要这手机有啥用啊,还有就是要办就得两年,我晕,这年头房价这么贵,咱可买不起啊,大多数我们这样的人也都买不起的,这不都租房子,我办两年?怎么可能啊。
想想这样的业务套餐可真是霸道,完全不考虑用户需求嘛。
咱现在就算没网也不用电信的,坚决抑制霸王条款。

顺便转一篇文章,原文网址:http://blog.sina.com.cn/s/blog_40345c100100jzr8.html?tj=1

江苏电信天翼用户达千万是自欺欺人

看到一则新闻,说是江苏全省天翼用户已突破1000万。也许,电信的员工在写新闻的时候,心里十分得意,毕竟有数据来说话了,但是这些数字的背后,多少存 在着相应的投机取巧和不公平竞争,江苏电信说出来只会说明自欺欺人:

一、在江苏,只要预存400多话费,就送天翼手机。当然其他地方也有所不同,比如广州,需要使用宽带套餐一年以上,并且没有欠费,就可以拿到通知书去营业 厅办理了,但每月还需预交30元。

二、新装宽带便一定要捆绑天翼手机,这就是电信所谓的“用户增长”。而南京很多小区只有电信的宽带,其他运营商进不来。大家都知道办电信宽带是一定要装座 机的,现在又送天翼手机,就造成了资源的重复建设,如今大家都有手机,再带个天翼手机不是嫌累赘吗?不过最大的问题是必须用2年,这是“霸王条款”,用不 满两年则需要向电信缴纳违约金。

三、在江苏北部地区,由于固话的普及,电信就把天翼业务和固话相捆绑起来,这样对推广天翼会有事半功倍的效果。在江苏电信所公布1000万天翼用户的数据 中,大部分应该是苏北地区的用户。

四、合作单位、电信员工、集团客户也是在1000万天翼用户中占一定比例,曾经和南京某集团的朋友聊天,他说集团里人手都发了一个天翼手机,家里还有一个 天翼手机,现在都不知道怎么办了。从这点上看,1000万天翼用户中还有许多是重复用户。

当然,电信这1000万天翼用户,我相信是真实数据,但是否就说明江苏电信的天翼成功了呢?我看未必,因为这1000万数字的积累,基本上都是靠捆绑营销 得来的,根本就不能带来实质性的创收。不知道什么时候,江苏电信才会挺起胸脯堂堂正正的说,我们天翼已经千万用户了。

Flash中彩色图变黑白图

这两天在看ARToolKit,发现了里面有一段代码,是将彩色的图片变成黑白的。

做了一个简单的例子:

[as3]
package
{
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.filters.*;

public class Test extends Sprite
{
private static const ZERO_POINT:Point = new Point();
private static const MONO_FILTER:ColorMatrixFilter = new ColorMatrixFilter([
0.2989, 0.5866, 0.1145, 0, 0,
0.2989, 0.5866, 0.1145, 0, 0,
0.2989, 0.5866, 0.1145, 0, 0,
0, 0, 0, 1, 0
]);

public function Test()
{
var char:Char = new Char();
var inbmp:BitmapData = new BitmapData(char.width, char.height, true, 0x000000);
inbmp.draw(char);

var outbmp:BitmapData = new BitmapData(inbmp.width, inbmp.height, false, 0x0);
outbmp.applyFilter(inbmp, inbmp.rect, ZERO_POINT, MONO_FILTER);

addChild(new Bitmap(outbmp));
}
}
}
[/as3]

Test.as作为一个Fla文件的文档类,Char是Fla中的一个可显示的对象。看代码的意思是对原始的彩色图片中的RGB色作一个计算:
新R = 新G = 新B = 0.2989 * R + 0.5866 * G + 0.1145 * B;
整不明白0.2989,0.5866,0.1145这三个常数从何而来,不过图确实变成黑白的了。

[转][翻译]Flash现实增强技术入门指南

转自:http://www.asbinbin.com/?p=8

由于最近在研究Flash的3D及AR(Argument Reality)技术。因此这段时间集中读了一些相关方面的资料。谈不上分享经验,先翻译一篇Mikko Haapoja的文章作为开始吧。这篇博文是他在Saqoosha的《FlarToolkit入门指南》的 基础上进一步对Spark类库中的FlarToolkit(一个实现Flash AR技术的开源类库)做了比较详细的入门指导。(注:本人首次尝试翻译,欢迎大家指正。转载请注明出处)
ok.开始吧—————————————————

《FlarToolkit/Flash 现实增强技术入门指南》
翻译:盐酸酸 原文地址:http://www.mikkoh.com/blog/?p=182

最近我正在尝试着研究一下FlarToolkit。什么是FlarToolkit?FlarToolkit是一 个实现Flash 现实增强技术的开源类。我在另一篇帖子里介绍了有关 它的更多细节。
我打算先讲解一下如何基于FlarToolkit开发。FlarToolkit开发时比较困难的 一点是代码内几乎所有的注释都是日文,所以如果你打算查看代码(而且你不会日语),你就不得不耗费更多的精力去研究。
开始之前,先下载这个例子(点我下载)。这个例子基于Saqoosha的简易方块的例子,但是更加简单易读。
OK,我们现在就开始学习FlarToolkit啦!

第一步:下载
在一开始,我访问了Saqoosha的博客,正打算用Google Translater把页面翻译一下时,却发现了我最熟悉的三个字母“SVN”。HAH…有了它就好办了,我们先利用SVN工具把FlarToolkit项目全部下载吧。
FlarToolkit项目的SVN url:
http://www.libspark.org/svn/as3/FLARToolKit/trunk
(译者注:SVN工具大家应该都很熟悉了吧,如果你不知道什么是SVN,建议你先看看SVN中文站 。原文作者也提供了一个参考链接,是PV3D的SVN下载帮助)

第二步:查看例子和源码
在我想了解怎样使用某个类库之前,都会先去查看一下它提供的例子及源码。现在我来总结一下我在学习FlarToolkit过程中的一些收获。
首先开始于Saqoosha的SimpleCube例子。我个人并不太喜欢他这个应用的写法(当 然从对象可复用的角度上说它是非常不错的)。
在那个例子中有三个类:ARAppBase,PV3DARApp,和 SimpleCube

三个类分别控制着AR应用的一个部分。但是这样的代码读起来比较困难,因为PV3DARApp继承自ARAppBase, 而SimpleCube继承自PV3DARApp。为了便于阅读学习,我把上面的 三个类合并到了一起。(当然这样并不符合可复用的原则)
FlarApp一共包含5个部分:
1.摄像头参数文件
2.标记文件
3.标记检测器
4.Flar Base Node(译者注:其实这个FLARBaseNode的实例就是我们装载3D物体的容器,下 面会有详细的解释)
5.Papervision(译者注:这是一个flash的 3D引擎)

摄像头参数
该摄像头参数文件是从外部加载的二进制文件。一开始我不知道它到底是如何而来,我到 Saqoosha的博客上去询问,他回复说这是由一个ARToolkit的一个附属程序生成的 (注:FlarToolkit是由ARToolkit演化而来,ARToolkit是现实增强技术在C++及Java等 开发语言上的实现)。这个程序名为calib_camera2”
Calib_camera2创建这个二进制的摄像头参数文件,这个文件是用来纠正从摄像头获取图像的扭曲及变形的。你可以从这里下载这个程序。但我想还是使用FlarToolkit中提供的这个原始的“camera_para.dat”文 件会更好。(我想大多数人都会这么做的)

标记文件
标记文件中保存的是一个图案,Flar会在你的摄像头获取的影像中寻找这个图案。在我的制作的项目中它在这个路径下“lib/mikko.pat”。 如果你打开这个文件,你会发现有4个16 × 48矩阵。它们分别代表着标志4个不同的方向。Flar会将你的标记图案看作一个16×16的二维码。文件中的每一个矩阵是16 × 48,是因为要包含三种颜色(红,绿,蓝)
Saqoosha已经建立了一个Air应用来制作这些标记文件。你可以下载该Air程序从这里
可以按照下列步骤创建一个标记文件:
1.标志设计使用以下规格,你可以在方框中放置各种你想用的图形。但是我想一些棱角分明的图案会更适合些。

2.打印出你设计好的图案,启动刚才下载的Air程序,并将你打印好的图案放到摄像头前。当程序中有一个红色的框出现在你的图案周围后,点击“save pattern”。生成工作就完成啦。
这是整个应用中比较关键的步骤。

标记检测器
标记检测器的作用就是从你摄像头中获取的bitmapdata中获取标记文件中定义的图案。一旦它找到定义的图案就会告知程序,程序就会从检测器中获得一 个变换矩阵来摆布FlarBaseNode了。

FlarBaseNode
这个FlarBaseNode其实就是用来显示Papervision 3D物体的容器。利用从标记检测器中得到的变换矩阵来控制我们的3D物体的3维空间坐标。

Papervision
它是Flar App的最后一块拼图了。我真的不想对它讲太多的细节了。如果你对这个3D引擎感兴趣可以直接到Google Code中找到它(点这里到PV3D的 页面

一些注意事项:
1.编译时遇到错误:
Error: Attempted access of inaccessible property _projectionthrough a reference with static typeorg.libspark.flartoolkit.pv3d:FLARCamera3D.

可以这样解决这个问题

到这个类中org.papervision3d.cameras.Camera3D
修改这个变量的命名空间
private var _projection:Matrix3D;
改为
protected var _projection:Matrix3D;
这并不会破坏PV3D的功能,只是用来让FlarToolkit中的FlarCamera3D可以调用Camera3d 类。

2.这个问题我也不知道为什么是这样。因为某些原因,你不得不设置Papervision的viewport为两倍。如果你不这样,你的3D物体不 会出现在你的视频显示范围内。但即使这样做了,有时候显示也并不太完美。在Saqoosha的例子中,他将viewport又平移了-4像素。我一直不喜 欢这样把摄像头中的东西都放大了两倍显示在那里。
好,现在该轮到你了。有什么问题,欢迎大家交流。我不知道所有的答案,但我会尽我所能回答这些问题。
–End–
翻译完了,其中大部分是意译。如果有错误,欢迎大家留言指正。——盐酸酸

[转]Gappproxy 构建个人代理服务器(Linux)

使用的过程主要分为两个部分。第一部分是上传一个文件到google appengine(GAE),第二部分是建立本地和GAE的连接。

1:上传
1.1 创建一个google appengine帐号
点击链接 (http://appengine.google.com/)申请注册一个google appengine帐号,注册需要一个gmail邮箱,另外在注册的过程中需要填入手机号码进行验证。

1.2 安装python
我的系统是Ubuntu8.04,所以只要apt-get install python就可以了

1.3 下载并安装google appengine软件包
点击链接(http://code.google.com/appengine/downloads.html),下载Linux平台的Google App Engine SDK,并进行解压。我的解压路径是桌面上的GAE目录。

1.4 下载并解压fetchserver源码包。
点击链接 (http://code.google.com/p/gappproxy/downloads/list),下载里面的fetchserver-1.0.0beta.tar.gz。这个是GAppProxy服务端源码包,用于架设自己的fetchServer。要将这个包进行解压。然后将解压后的文件(fetchServer)夹放入Google App Engine SDK的安装目录。


1.5 编辑fetchServer目录下的app.yaml文件。
用nano或者其他方式编辑这个文件,主要编辑的参数是第一行application.
~~~~~~~~~~~~~~~~~~~~
application: aaaaaa(比如我的比如你的AppEngine地址是aaaaaaaaa.appspot.com,那就是application帐号就是aaaaaa))
~~~~~~~~~~~~~~~~~~~~
编辑结束后,保存并关闭这个文件。

1.6 上传
进入Google App Engine SDK目录。然后运行命令:appcfg.py update fetchserver。程序会要求你填入你的gmail和gmail的密码。
~~~~~~
hoffmann@ubuntu:~/Desktop/GAE$ python appcfg.py update fetchServer/
Scanning files on local disk.
Initiating update.
Email: aaaaaa@gmail.com
Password for aaaaaa@gmail.com:
Cloning 1 application file.
Deploying new version.
Checking if new version is ready to serve.
Closing update: new version is ready to start serving.
~~~~~~
OK ,上传部分完毕。

2:连接
2.1:下载客户端
点击链接(http://code.google.com/p/gappproxy/downloads/list),下载gappproxy-1.0.0beta.tar.gz ,这个是GAppProxy源码包,内含客户端所有源码,并将这个文件进行解压。我还是解压在桌面上,文件夹的名字是gappproxy。

2.2 更改配置文件
进入gappproxy目录,用nano或者其他的文件编辑器编辑proxy.conf文件。在fetchserver一栏里面填写自己的apengine地址。并去掉一行开头的井号(这个是注释用的)
~~~~~~~~~~~~~~~~~
GAppProxy configuration

# local_proxy
#local_proxy = host:port
#
# If local proxy needs authentication:
#local_proxy = user:passwd@host:port

fetch server
#fetch_server = http://127.0.0.1:8080/fetch.py
fetch_server = http://aaaaaa.appspot.com/fetch.py ###填写自己注册的appengine地址。
#fetch_server = http://fetchserver-nolog.appspot.com/fetch.py
~~~~~~~~~~~~~~~~~~~~
然后保存并关闭。

2.3 运行代理服务
直接在终端里面运行 python proxy.py.如果看到HTTP Enabled : YES的字样,恭喜你,代理已经成功开启了。你所要做的就是将这个终端一直开着,就可以上网了。代理的地址是127.0.0.1:8000.这个可以在浏览器里面设置的。
~~~~~~~~~~~~~~~
hoffmann@ubuntu:~/Desktop/gappproxy$ python proxy.py
——————————————–
HTTP Enabled : YES
HTTPS Enabled: NO
Local Proxy :
Fetch Server : http://aaaaaa.appspot.com/fetch.py
——————————————–
~~~~~~~~~~~~~~~~~~