分类: 技术

  • 检测iOS WebApp是否运行在全屏模式

    iOS上的Safari浏览器可以让Web应用程序全屏显示,以取得类似本地应用的显示效果。但是这需要用户把Web应用程序的图标添加到主屏幕才可以。作为开发者,为了更好的显示效果,我们可能希望自己开发的Web应用程序在非全屏状态下运行时提示用户把Web应用程序的图标添加到主屏幕。
    (更多…)

  • chrome同步时无法连接服务器的解决方法

    因为一些大家都知道的原因,相信大家偶尔会遇到chrome同步时无法连接服务器的问题。关于这个问题,一般都是连接VPN解决的,但是我刚刚发现一个更好的方法,只要把DNS服务器地址改成8.8.8.8和8.8.4.4就可以连接了。

  • [未找到反序列化“XXX”类型对象的构造函数。]的解决办法

    出现[未找到反序列化“XXX”类型对象的构造函数。]错误一般是由于要反序列化的类或者它的父类(如:继承了Dictionary类)实现了ISerializable接口而该类没有定义序列化构造函数,这时候只要把序列化构造函数加上去就可以反序列化了。需要注意的是,一个类或者它的父类实现ISerializable接口就表示启用了自定义序列化,需要按照自定义序列化的规则编写序列化构造函数和GetObjectData函数,像下面的两个例子。

    (更多…)

  • 使用ICSharpCode.SharpZipLib在现有Zip文件中添加文件的方法

    ICSharpCode.SharpZipLib是一个操作压缩文件的类库。网上使用这个类库在Zip文件中添加文件的方法主要都是使用ZipOutputStream类在Zip中添加文件,可是使用这种方法有个很大的缺点,就是会把Zip文件原有的内容覆盖掉,只适合新建Zip文件。昨天需要把内存中的内容写到一个Zip文件中的一个文件里,所以研究了一下,发现ZipFile.Add方法可以满足这个需求,这个方法有8个重载,我用的是void Add(IStaticDataSource,string)这个重载。 (更多…)

  • 时区设置导致的奇怪问题

    公司最近正在做一个项目,这个项目有一个服务端和若干个客户端。服务端主要负责根据客户端提供的参数从数据库查询数据放到DataTable里,然后把DataTable序列化后传给客户端。客户端负责把从服务器传送过来的数据显示出来。

    今天做这个项目的时候遇到一个非常奇怪的问题:服务端从数据库里查出来的DateTime类型的数据在服务端是正常的,传到客户端后全部都多了8个小时;而如果由客户端直接查数据库的话,得出的结果是正确的。检查服务端和客户端的时区后发现服务端的时区设置于客户端的不一致,因此,.Net自作主张地把DateTime中保存的时间改了。后来把服务器与客户端的时区设置改成一样就恢复正常了。

  • Windows下用CGI上传二进制文件损坏的解决办法

    最近在用Python写CGI程序,在做文件上传这部分时发现上传的文件与原文件不一样,上传的文件都打不开。把上传的文件跟原文件对比发现,原文件里面 0x0d0a 的地方都变成了 0x0a,所以无法打开。这个问题的原因是Python的标准输入流是以文本的方式打开的,对换行符作了处理,下面的代码可以把标准输入流的打开方式设成二进制,把它加进程序开头问题解决。

    msvcrt.setmode(0,os.O_BINARY)