有时候想法很重要,但最重要的是马上去付诸实施,第二十二。

好多次我审视自己,这些年到底错失了多少次机会。

04年创建“漫步者社区”,成为所在中学最火SNS平台,同年facebook也在美国建立。如今facebook市值千亿,“漫步者社区”则早已无人知晓。

05年计划制作电子阅读的相关网站,主要模式为在线小说与文档共享。这两种模式正式几年后的起点纵横与豆丁他们的模型。而中学时这个计划几个月后种种原因放弃。

06年由办理二代身份证而想到的“一卡通”模型,可将各种数据统一存储在一张卡上,提供可靠的加密算法保证数据安全,从而不用再带那么多卡片。多年后大学等场所的“一卡通”亦是这种模型。

08年左右由看了多次的黑客帝国得到灵感,计划矩阵式的虚拟映射城市,具体细节略去。前段时间发现豆瓣的阿尔法城的新版的演进方向正和之前的想法不谋而合。

10年社交网络如此繁多,计划给用户提供一种统一的查看、管理、发布方式,集成各种社交网络,并以移动终端作为切入点。注册了域名,并起了名称“连客-Linker”,即连接你我、连接网络。而后因某些原因搁浅。过了一些时间,发现开始有人做这方面的产品。

毕加索说过“优秀的艺术家复制,伟大的艺术家剽窃”。

有时候我就会想,自己不愿意做各种抄袭、模仿、剽窃的产品,而那么多次机会自己又没有好好把握,十分惋惜。除了上面提到的想法,之前的博文也提到过这么多年我的二十一个网站/作品,着实嘘唏。

而最近,我又萌生了一个新的想法,花了些时间完善这个想法。之前那么多年,也许因为年少,也许因为技术不行,但更重要的是没有把握住机会。

有时候想法很重要,但最重要的是马上去付诸实施,否则只能是徒留遗憾!

 

你选择了你的路,我选择了我的。

一句“泥巴种”让他失去了莉莉的友谊,即使事后再如何地道歉也于事无补。

“你选择了你的路,我选择了我的。”莉莉的这句话让斯内普追悔一生。

就像当年那句“Farewell”。

WP7 Isolated Storage详解系列导航

本系列主要参考翻译自WindowsPhoneGeekAll about WP7 Isolated Storage

WP7 Isolated Storage详解(8)-读取、保存二进制文件

二进制文件一般被认为是一组序列字节。一般来说一个二进制文件可能包含任何形式的二进制编码的数据类型。例如:.mp3文件,.jpg文件,.db文件都可以看做二进制文件。本篇内容将以MP3文件为例。

首先创建一个Windows Phone 7项目,在项目中添加一个MP3文件例如“Battery_Low.mp3”,然后在MainPage.xaml.cs(或其他页面文件)中引入命名空间:

using System.IO.IsolatedStorage;
using System.IO;
using System.Windows.Resources;

保存MP3文件到隔离存储空间

示例中首先检查文件是否已经存在,然后把“Battery_Low.mp3”文件保存到隔离存储空间。

我们首先创建一个文件流,然后使用BinaryWriter和BinaryReader在隔离层存储空间中创建一个新的MP3文件并且把“Battery_Low.mp3”的数据复制过去。

提示:分块读取文件有利于减少内存消耗和提高性能。

Read More »

WP7 Isolated Storage详解(7)-读取、保存图片文件

首先创建一个Windows Phone 7项目,在项目中添加一个图片例如“logo.jpg”,然后在MainPage.xaml.cs(或其他页面文件)中引入命名空间:

using System.IO.IsolatedStorage;
using System.Windows.Media.Imaging;
using System.IO;
using System.Windows.Resources;
using Microsoft.Xna.Framework.Media;
using Microsoft.Phone.Tasks;

提示:Microsoft.Xna.Framework.Media;仅当你要把图片保存到媒体库的时候才需要添加引用。

对于很多应用,向隔离存储空间读取、保存图片文件是很常见的任务。在WP7中,你还可以保存、读取媒体库中的图片。

Read More »

Mobile Dev Day – WP7优秀应用经验分享日总结

今天下午有幸参加了Mobile Dev Day移动技术研讨沙龙活动,主题是“WP7优秀应用经验分享日”。活动中来自新浪微博、Viva电子杂志以及OpenXLive团队的朋友分享了一些他们在WP7平台上的产品的一些心得体会。

新浪微博

新浪微博主要是由汪佐怀进行讲解。对于WP7的主要有以下几点:

  1. 整体架构采用MVVM模式。

    MVVM在WPF/Silverlight/WP7中算是很常用的一种模式,相信大家都不陌生。同时也提到了WP7下MVVM模式的Command支持的不够好。

    新浪微博的演讲结束后,去请教他们的主要开发者,了解到他们目前对MVVM模式的Command实现也是基于MVVMLight的扩展。

  2. 主界面微博列表的显示

    新浪微博的列表显示采用了LazyListBox控件。LazyListBox控件主要用于比较长的items显示,例如文本+图片。它可以使你在滑动的时候可以使用不同模板,例如滑动时只加载文本,滑动停止时加载文本+图片。

    汪老师同时提出为了保证滑动时候的流畅,建议在滑动的时候停止一切网络请求。在提问环节中,有人问到为何不单独开启线程请求数据。汪老师解释单独开启进程同样会使用系统资源,使滑动不够流畅。个人觉得应该没有人会在UI线程进行数据请求吧。

  3. 图片的显示

    由于WP7中没有原生支持GIF图片的显示,所以新浪微博采用了imagetool来实现。

  4. 缓存的处理

    在开发过程中对隔离存储空间的监控通过Isolated Storage Explorer,这个大家想必都了解。据说在Mango中就可以直接查看了。

    根据现场观众提问的回答,新浪微博目前在隔离存储空间缓存200条最新微博(不确定,汪老师说的是大概)。

  5. 微博程序的换肤

    新浪微博目前提供了三种皮肤选择,两种白天一种夜间模式。切换皮肤后必须重启才能生效。

    之前也给WP7的应用做过皮肤,其中的类似皮肤资源文件一旦加载的确是无法修改的,只能通过重启生效。

  6. 其他

    汪老师同时也讲了许多其他的内容,包括以前Windows Mobile平台上的一些开发经验。

    Pivot控件的一个问题,例如跳转到的目标页是一个Pivot页面,跳转后想显示的PivotItem的Index不是第一个(还有第二个、倒数第一个),那么只能在页面的Loaded里让他的SelectedIndex改变为预期值。这时候的页面会有一个滑动翻转效果。之前尝试过在Pivot页面的构造函数或者重写页面的OnNavigateTo或者XAML中SelectedIndex绑定ViewModel,在点击非第一个、第二个或者倒数第一个PivotItem均报异常,所以猜测Pivot控件只会预加载这三个PivotItem。新浪微博的开发者们目前也遇到了这个问题。

Read More »

腾讯QQ-WP7版发布

手机QQ for Windows Phone 7终于发布了,自带中文输入法,支持push,支持与PC同时在线。UI交互上做的挺好。

PS:刚试用就发现一个bug,可能是没做墓碑化处理吧,最小化回来再次激活的时候,联系人里面一片空白。

相关信息:

【版本特性】

1.支持C2C/群聊天
2.支持自定义头像的显示
3.支持修改个性签名
4.支持添加好友和本地搜索
5..可发送QQ表情
6.丰富的应用列表
7.自带中文输入法,聊天无障碍
8.在个人中心对消息进行集中管理,方便更贴心
9.颠覆传统长连接方式,收发消息及时且省电省流量
10.支持对离线消息的push
11.支持与PC同时在线,同一个QQ帐号在电脑和手机端均可收发消息
12.贴合系统的UI交互,视觉清新,操作便捷 Read More »

WP7 Isolated Storage详解(6)-通过XmlWriter读写XML文件

首先创建一个Windows Phone 7项目,然后在MainPage.xaml.cs(或其他页面文件)中引入命名空间:

using System.Xml;
using System.IO.IsolatedStorage;
using System.IO;

使用XmlWriter保存XML文件到隔离存储空间

示例中创建了一个名为People2.xml的XML文件并写入数据。

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("People2.xml", FileMode.Create, myIsolatedStorage))
    {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        using (XmlWriter writer = XmlWriter.Create(isoStream, settings))
        {

            writer.WriteStartElement("p", "person", "urn:person");
            writer.WriteStartElement("FirstName", "");
            writer.WriteString("Kate");
            writer.WriteEndElement();
            writer.WriteStartElement("LastName", "");
            writer.WriteString("Brown");
            writer.WriteEndElement();
            writer.WriteStartElement("Age", "");
            writer.WriteString("25");
            writer.WriteEndElement();
            // Ends the document
            writer.WriteEndDocument();
            // Write the XML to the file.
            writer.Flush();
        }
    }
}

Read More »

WP7 Isolated Storage详解(5)-通过XmlSerializer读写XML文件

首先创建一个Windows Phone 7项目,然后在MainPage.xaml.cs(或其他页面文件)中引入命名空间:

using System.Xml;
using System.Xml.Serialization;
using System.IO.IsolatedStorage;
using System.IO;

提示:你需要在项目中添加System.Xml.Serialization引用。

对于很多应用,向隔离存储空间读写XML文件是很常见的任务。

一般情况下我们使用类IsolatedStorageFileStream进行读、写、创建文件等操作。与使用XmlWriter不同的是,XmlSerializer使我们更方便的在Object和XML文档之间进行序列化与反序列化转换。

Read More »

WP7 Isolated Storage详解(4)-读写文本文件

首先创建一个Windows Phone 7项目,然后在MainPage.xaml.cs(或其他页面文件)中引入命名空间:

using System.IO;
using System.IO.IsolatedStorage;

我们使用类IsolatedStorageFileStream在隔离存储空间中进行读、写、创建文件的操作。这个类继承自FileStream,所以在通常使用FileStream的地方都可以使用IsolatedStorageFileStream,例如StreamReaderStreamWriter

创建文本文件

示例中我们创建了一个名称为myFile.txt的文本文件,并写入了一些内容。

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();

//create new file
using (StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("myFile.txt", FileMode.Create, FileAccess.Write, myIsolatedStorage)))
{
    string someTextData = "This is some text data to be saved in a new text file in the IsolatedStorage!";
    writeFile.WriteLine(someTextData);
    writeFile.Close();
}

提示:创建文件使用FileMode.Create,写入内容使用FileAccess.WriteFileAccess的成员共有Read、Write、ReadWrite三种。

Read More »