routes.MapRoute

by fyter 15. May 2012 17:14

作者:Benjamin Xu 来源:博客园 发布时间:2009-09-21 07:27

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { action = "Index", id = "0" },
new { controller = @"^\w+", action = @"^\w+", id = @"^\d+" });

// Archive/2008-05-07
routes.MapRoute(
"BlogArchive",
"Archive/{date}",
new { controller = "Blog", action = "Archive" },
new { date = @"^\d{4}-\d{2}-\d{2}" });

// Car/bmw.abc
routes.MapRoute(
"Car",
"Car/{make}.{model}",
new { controller = "Car", action = "Index" },
new { make = @"(acural|bmw)" });

//必须是提交post url直接回车是get
routes.MapRoute(
"Book",
"Book/Add/{name}",
new { controller = "Book", action = "Add" },
new { httpMethod = "POST" });

//后面所有东西都捕获
routes.MapRoute(
"CatchIt",
"Product/{*values}",
new { controller = "Product", action = "Index" });

Tags:

MVC | ASP.net

HomeOS,微软研究院为你的房子设计的操作系统

by fyter 30. April 2012 20:57

image

HomeOS,微软研究院为你的房子设计的操作系统
微软研究院开始测试家庭自动化软件——HomeOS,并且有个HomeSotre(专为此系统使用的商店),可以为你扩展系统的功能。

Tags:

微软 | HomeOS

畅想Windows Phone 8

by fyter 26. April 2012 12:04

从两年对WP的支持,以及对微软的了解,我个人对Windows Phone 8做了一个展望,仅个人观点。

首先要说的是微软已经彻底放弃Windows Phone 7,转而开发Windows Phone 8或Windows Phone 9。Windows Phone 8才是开始登月,而Windows Phone 7只是准备工作。微软同时开发后两个版本是常有的事,一个不能说的原因,我透露一个数字——9。

微软将保持Windows Phone是手机系统的方向,不会对过小分辨率支持。新扩展分辨率是一定的事,类似iPhone翻倍支持分辨率是最简单的事情,那就是1600*960,按说,这个分辨率是一定支持的。考虑这个屏幕的生产成本,还应该有一个1.5倍的分辨率,1200*720。又因为微软的策略是手机与PC模糊化,Windows 8支持的最低分辨率为1024*768,所以720这个分辨率可能被抛弃,而是用12XX*768的分辨率。
考虑到WP会对硬键盘的支持,应该会推出12XX*12XX、8XX*8XX的分辨率支持。

Windows NT内核用在Windows Phone上已经是不争的事实了,给我们带来的好处就是更多的应用。但是与Windows 8的商店合并可能性非常小,这个要等那个数字9。
NT内核将给我们带来与Windows 8一致的体验:可选的主题背景,自动调色的Tile,图片密码,流量及存储监控,微软统一触控手势,统一文件管理,更多的外部硬件支持。

Windows Phone 的品牌是新建立的,Windows Phone 8不会对硬件提出新的要求,所以向下兼容是理所当然的事情。况且Windows NT内核从未支持过ARM,这次的变动基本也是要拿Windows CE内核去改的,而不是拿Windows X86的NT内核改为支持ARM,应该更接近是一种合并。

Tags:

WP8 | WP7 | Windows 8 | iPhone 4S | MetroUI

没图你说个JB

by fyter 5. April 2012 13:15

官话:没图你说个JB
文言文:夫图之缺如,岂不若言之大屌

英:You say a JB without pictures
日:JBはありがとうございました理解しなかった
法:JB ne vous ai pas la figure d'un
俄:JB не показатель за
德:Ohne Bilder sagst du JB
意:JB non ha figura di un
拉丁:JB non vobis ad figuram
瑞典:JB inte siffra dig f?r en
芬兰:JB ei hahmon varten
荷兰:JB geen cijfer u voor een
西班牙:JB no te diste cuenta de un
希腊:JB δεν σα? ?ριο για το
韩:汪汪汪汪汪汪汪汪汪汪汪汪
越南语:JB ?? kh?ng tìm b?n cho m?t
爱沙尼亚:JB ei kajastu teid
菲律宾:JB ay hindi tayahin mo para sa isang
加利西亚:JB non figura por un
海地克里奥尔语:Jb pa t 'figi w pou yon
匈牙利:JB nem alak, a
冰岛:JB ekki tala vie tig um
印尼:JB tidak angka anda untuk
爱尔兰:Ní raibh tú SCP figiúr le haghaidh
拉脱维亚:JB neparādījās jums
立陶宛:JB nebuvo figūra jums
马其顿:Б. нети е за
挪威:JB ikke finne deg for en
波兰:JB nie posta? za
葡萄牙:JB n?o figura por um
罗马尼亚:JB nu ai figura pentru o
塞尔维亚:?Б ниси цифру за
斯洛伐克:JB nefiguroval vás
斯洛文尼亚:JB nisi ?tevilka za
斯瓦西里:JB hakuwa na takwimu kwa ajili ya
土耳其:JB bir i?in rakam vermedi
乌克兰:JB непоказникза
威尔士:Nid yw ffigur JB wnaethoch chi am
上海:么读弄刚则卵泡啊
天津:妹有图你说个嘛JB玩儿
北京:没个小画片儿你丫淡逼个jb
重庆:没图你说个J8(全是一声)
香港:屌你啊,无图你讲乜HIGHT啊
东北:没图跟这掰扯什么JB玩意儿
辽宁:没图得瑟个篮子球
本溪:图都没有害来这嘞嘞个大JB啊!
四川:莫的图你娃说个锤子哦
成都:图都莫球得,你说个鸡儿啊 图都木得,你说个锤锤呦
绵阳:没图你娃说个铲铲
陕西:抹油头你设个锤子尼 么得图 你社个鸡娃子! 么图腻舍个球
陕北:甚图也摸,你说球狼
广东:都冇图睇你系度讲棱嘢啊
广州:冇图你讲禄漆啊
揭阳:无图吕担个JB
潮汕:无图吕搭条狼

Tags:

杂谈

在IE10中,我们终于可以使用WebSocket了

by fyter 29. March 2012 13:24

在 Windows 8 Consumer Preview 和 Server Beta 中,IE10 和所有其他 Microsoft WebSocket 客户端和服务器目前均支持 IETF WebSocket 协议的最终版本。另外,IE10 还实施了 W3C WebSocket API 备选建议。


http://blogs.msdn.com/b/ie_cn/archive/2012/03/23/websockets-api-in-windows-consumer-preview.aspx

Tags:

微软 | 开发技巧 | 开发工具 | IE10

让WP支持多合一游戏的代码

by fyter 24. March 2012 00:52

//来至智机网的coolypf

extern alias Bejeweled;
using System;
using System.Windows;
using System.Threading;
using System.Collections.Generic;
using Microsoft.Phone.Shell;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.GamerServices;

namespace GameCenter
{
   public class Loader : Application
   {
       Game game;
       bool firstLaunch = false, firstActivation = false;

       bool chosen = false;
       bool skip = false;

       Timer timer, clock;
       bool paused = true;

       long clk = 0;

       void startgame()
       {
           if (game == null)
               return;
           try
           {
               game.Run();
           }
           catch (InvalidOperationException ex)
           {
               System.Diagnostics.Debug.WriteLine(ex.Message);
           }
           paused = false;
           clock = new Timer(new TimerCallback(clock_tick));
           clock.Change(0, 1);
           timer = new Timer(new TimerCallback(tick));
           timer.Change(0, 0);
       }

       void clock_tick(object sender)
       {
           clk++;
       }

       void tick(object sender)
       {
           if (game.IsFixedTimeStep)
               timer.Change(-1, -1);
           else
               throw new NotImplementedException();
           try
           {
               long c1 = clk, c2;
               game.RunOneFrame();
               c2 = clk - c1;
               if (!paused)
               {
                   int tw;
                   if (c2 >= game.TargetElapsedTime.TotalMilliseconds) tw = 0;
                   else tw = (int)Math.Ceiling(game.TargetElapsedTime.TotalMilliseconds - c2);
                   timer.Change(tw, 0);
               }
           }
           finally
           {
           }
       }

       public Loader()
       {
           base.Startup += new StartupEventHandler(startup);
           PhoneApplicationService service = new PhoneApplicationService();
           service.Launching += new EventHandler<LaunchingEventArgs>(launching);
           service.Closing += new EventHandler<Microsoft.Phone.Shell.ClosingEventArgs>(closing);
           service.Activated += new EventHandler<ActivatedEventArgs>(activated);
           service.Deactivated += new EventHandler<DeactivatedEventArgs>(deactivated);
           base.Exit += new EventHandler(exit);
           base.ApplicationLifetimeObjects.Add(service);
           base.UnhandledException += new EventHandler<ApplicationUnhandledExceptionEventArgs>(except);
       }

       void startup(object sender, StartupEventArgs e)
       {
           List<string> games = new List<string>();
           List<string> titles = new List<string>();
           titles.Add("进入游戏");
           titles.Add("换一个");
           games.Add("愤怒的小鸟");
           games.Add("水果忍者");
           games.Add("钻石迷情");
           games.Add("手榴弹大师");
           games.Add("极品飞车");
           int index = 0;
           while (!chosen)
            {
                Guide.BeginShowMessageBox("游戏中心", games[index], titles, 0,
                    MessageBoxIcon.None, new AsyncCallback(mb_callback), null);
                while (Guide.IsVisible)
                    Thread.Sleep(0x20);
                if (chosen)
                {
                    switch (index)
                    {
                        case 0:
                            game = new AngryBirds.GameMain();
                            break;
                        case 1:
                            game = new Mortar.TheGame();
                            game.TargetElapsedTime = TimeSpan.FromSeconds(0.025);
                            break;
                        case 2:
                            game = new Bejeweled::Sexy.Main();
                            break;
                        case 3:
                            game = new FraggerWP7.FraggerGame();
                            break;
                        case 4:
                            game = new nfshp_wp7.NFSHP();
                            game.IsFixedTimeStep = true;
                            game.TargetElapsedTime = TimeSpan.FromSeconds(0.025);
                            break;
                        default:
                            break;
                    }
                    if (game != null)
                        break;
                }
                else if (!skip)
                    break;
                if (++index >= games.Count)
                    index = 0;
            }
        }

        void launching(object sender, LaunchingEventArgs e)
        {
            startgame();
            firstLaunch = true;
        }

        void closing(object sender, Microsoft.Phone.Shell.ClosingEventArgs e)
        {
            if (game != null)
                game.Exit();
        }

        void activated(object sender, ActivatedEventArgs e)
        {
            if (!firstLaunch && !firstActivation)
                startgame();
            firstActivation = true;
            paused = false;
            if (timer != null) timer.Change(0, 0);
        }

        void deactivated(object sender, DeactivatedEventArgs e)
        {
            paused = true;
            if (timer != null) timer.Change(-1, -1);
        }

        void exit(object sender, EventArgs e)
        {
            if (game != null)
                game.Exit();
        }

        void except(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(e.ExceptionObject.Message);
        }

        void mb_callback(IAsyncResult result)
        {
            int? c = Guide.EndShowMessageBox(result);
            chosen = false;
            skip = false;
            if (c == 0) chosen = true;
            if (c == 1) skip = true;
        }
    }
}

Tags:

WP7 | WP7技巧 | 开发技巧

Windows Phone 原生读取Zip方法

by fyter 5. March 2012 16:18

// 打开Zip
System.Windows.Resources.StreamResourceInfo streamInfo =
    Application.GetResourceStream(new Uri("/项目名;component/[文件路径/]文件名.zip", UriKind.Relative));

// 抽取文件
System.Windows.Resources.StreamResourceInfo Info =
    new System.Windows.Resources.StreamResourceInfo(streamInfo.Stream, "application/binary");
System.Windows.Resources.StreamResourceInfo dll =
    Application.GetResourceStream(Info, new Uri("[文件路径/]文件名.扩展名", UriKind.Relative));

// 保存
var file = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication().OpenFile("[文件路径/]文件名.扩展名", System.IO.FileMode.OpenOrCreate);
dll.Stream.CopyTo(file);
file.Close();

Tags:

WP7 | 开发技巧

Windows 8 客户预览版完全体验(未完,陆续补充)

by fyter 4. March 2012 01:04

界面

Windows 8(以下简称Win8)在800*600分辨率下是无法运行Metro应用的。但是开始界面可以运行,也许以后会支持低分辨率应用?!!

image

桌面资源浏览器提供了易用的Ribbon界面,但是默认是收缩起来的,这样给用户留了很大的空间

image
点击上框(红线框),出现下框

每个窗口的左上角的图标相比以前版本又再次出现,这样用户可以点击访问窗口的基本功能,以前版本系统可以点,但多数看不到。

Win+X或者在屏幕的左下角点右键,可以出现这个强力菜单
image

鼠标悬停在右上角/右下角,或者Win+C出现右侧CharmBar
image

快捷键

以前版本功能的访问

Tags:

微软 | Windows 8 | MetroUI

让你的WP无线访问PC的文件——教你架设家庭服务器

by fyter 29. February 2012 13:15

我们的需求:通过手机无线访问PC文件,比如文件,mp3,视频,Office文件,这样我们可以在厕所里、床上等享受我们的媒体。也适用于iPhone、Android手机。

条件:家庭WIFI网络,内装Windows 7/2000/2003/2008/XP/Vista系统的PC

前言:家庭版是否支持IIS本人不确定;步骤不够细致,适合动手能力强点的朋友,其实也不难

技术讲解:
Windows 系统都内建IIS支持,XP/2K/2K3等系统需要安装盘,Win7不需要
IIS是微软的高性能信息服务器,可以为你提供HTTP服务,就是我们的网站服务

Windows 7 IIS安装步骤:
1、控制面板、程序、打开或关闭Windows功能,找到IIS,勾选,确定,完成
 
不好意思,上面只有一步……
IIS配置:
1、依次打开控制面板,系统和安全,管理工具,Internet 信息服务(IIS)管理器(建议如下图配置你的开始菜单,方便访问)
iis
2、在IIS左侧列表中找到并点击Default Web Site(默认网站),右侧打开基本设置,浏览到你想给WP浏览的文件夹,点确定
*3、如果后面不能访问看这里:NTFS的权限比较复杂,这里就不说了,你把这个文件夹的权限设置为everyone可读
4、在IIS管理界面中间(此时你要选着默认网站才行),进入目录浏览,右侧启用,这一步使IIS自动将这个网站对应的网站生成HTML发给WP手机
 
 
收获:
一切顺利的话,WP中打开IE,地址栏输入PC的IP地址,例如192.168.1.100,即可看到你的文件列表
 
这样你就可以方便的共享文件给手机了,还可以看wmv、avi的视频,你懂的
我觉得这样很方便,IIS会在电脑的后台服务一直运行,不占多少资源
毕竟开Zune,插USB线是一件很烦的事情
 
自己的电脑也可以测试(192.168.1.88是我的IP地址,你们不要用这个啊):
iis2

获取自己PC IP地址的方法:
Win键,输入cmd,回车,输入ipconfig,得到IP地址,用IPv4比较方便(如下图,红色框是地址)
iis3

远程查看PC IP地址的方法(当你在厕所里,不知道PC机地址):路由器会为PC分配一个IP地址,你可以设置为固定IP,或者如果你在上厕所时用WP打开路由器管理界面,去查看分配了哪些IP,就可以找到PC的IP地址了。很多路由器DHCP的起始IP地址是192.168.1.100或192.168.0.100,所以如果你没给PC设置IP地址,那么基本就在100,101附近

Tags:

WP7 | WP7技巧 | iOS | Android | iPhone 4S | 手机使用 | 我的生活

终于备案通过了

by Fyter 29. February 2012 13:07

年前就被墙了,经过1个月的备案,网站终于开通了。

伟大的墙啊,阻挡我这么久,搜索引擎大概都把我忘了。

Tags:

站长

C++、C#、WP7、OS技术文章与开源模块发布人。资深游戏系统架构师,玩转WP新闻与技术文章发布人。

最近做了一次主页调整,改用了新的发布系统,旧系统仍然可以访问,地址为:http://last.fyter.cn

Fyter QQ微博:http://t.qq.com/fyters

目录

    最近评论

    Comment RSS