摘要: 背完这444句英语,你的英语口语不成问题了。好好做好带路裆。1. I see. 我明白了2. I quit! 我不干了!3. Let go! 放手!4. Me too. 我也是。5. My god! 天哪!6. No way! 不行!7. Come on. 来吧(赶快)8. Hold on. 等一等。9. I agree。 我同意。10. Not bad. 还不错。11. Not yet. 还没。12. See you. 再见。13. Shut up! 闭嘴!14. So long. 再见。15. Why not? 好呀! (为什么不呢?)16. Allow me. 让我来。17. Be qu阅读全文
posted @ 2011-12-01 19:56 傻样精英 阅读(100) 评论(0) 编辑

背景

同事写的一个程序每天定时将一个二进制文件分析,转存为数据库。目前这个程序不便之处是服务器重启后必须要登录系统,打开这个程序才可以。还有业务出现了一些变化,需要修改程序,加之前也没写过windows服务程序,所以趁周末学习一下。

过程

肯定是先上博客园搜索一下,找了个blog看看,熟悉一下。

打开vs2008,新建一个windows服务项目,开始把代码搬过来。

 

  1.  修改默认生成的Service1.cs文件名使之符合公司规范,并相应修改Program里的类名
  2. 在下面两个方法中初始化,记录一下事件
    protected override void OnStart(string[] args)

    {
    }
    protected override void OnStop()
    {
    }

  3. 记录事件是在工具栏拖了个eventLog,这个注意需要自己指定source属性。这样在系统日志里面就可以看到一些日志了。
eventLog.WriteEntry(message + " 时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm", DateTimeFormatInfo.InvariantInfo));
  1. 再拖一个Timer控件,用于定时执行
  2. 在Service.cs上点击右键添加一个安装程序,serviceProcessInstaller中设置登录类型,serviceInstaller设置服务名,描述和启动类型
  3. 剩下的就是把同事的代码整理整理,没敢说是重构,感觉重构属于高深技术,呵呵
  4. 在OnStart中设置Timer的Enable属性,在Timer的timer_Tick事件中执行。
  5. 用于以前的程序用到了config配置一些东西,新建一个config文件,自己新建的不能自动copy到debug目录好像,需要自己在项目属性中设置一下,如果不嫌麻烦,可以手动拷贝过去。
  6. ConfigurationManager.AppSettings["SourceServer"]这个需要添加引用System.configuration。
  7. 编译通过,下面就是安装这个服务进行测试了,不能像一般的程序那样,直接运行,这个需要安装到系统服务,然后用附加程序的方法调试。安装服务最好吧installutil.exe拷贝一个到程序目录,这样就不用每次都用那个vs的命令行进了。以后安装也方便。

     问题

    调试发现并没有执行 timer_Tick里的程序,继续博客园搜索,发现VS2008用工具箱拖的那个timer是system.windows.forms下面的timer,此timer在多线程下有问题,而windows服务默认就是起的多线程,所以没有执行。不知道ms为啥在这个里面拖出来的是这个timer,还是我的个例。

    换成

    System.Timers.Timer timer = new System.Timers.Timer();
    timer.Enabled = true;
    timer.Interval = 600000;

    timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick);

     

     搞定。

    遗留 

     从附加程序的方法可以调试,但是不能调试OnStart里面的代码啊,因为只要服务运行起来后才可以附加,等你附加上后Onstart早跑过了。

    所以不知道这个函数里面的代码怎么调试?难道是在这个里面加sleep延迟一下?

posted @ 2011-09-02 20:31 傻样精英 阅读(103) 评论(0) 编辑
装错驱动进不了系统:

    进win删除错误的kext(安装了macdrive才能读写mac分区的数据),删除/System/Library/Caches/下的所有文件,重启,-s进入单用户模式 
    mount uw /
    chown -R root:wheel /System/Library/Extensions
    chmod -R 755 /System/Library/Extensions

 

输入-v -f -x32 

 

rm -R SleepEnabler.kext 

sudo chown -R root:wheel /System/Library/Extensions
sudo chmod -R 755 /System/Library/Extensions
rm -rt /System/Library/Extensions.*
kextcache -k /System/Library/Extensions 

diskutil repairpermissions / 

 

如果lz装双Mac 或win能读写mac分区,删掉sleep就好。。。

如果现装系统都不能对mac分区修改,就用hazard的盘引导,进入安装界面后在终端里删sleepEnabler。。 

 

启动参数 -x -f
忽略驱动及系统缓存,裸机进入,相当于win的f8

 

posted @ 2010-12-08 23:54 傻样精英 阅读(184) 评论(0) 编辑

    今天看到一个新闻《惠普Slate与iPad七大差异:Slate实用性差》中的一个解释:WIMP(即Windows、IIS、MySQL和PHP的首字母缩写),我震精了。我不知道这四个东西在一起是不是这么一个缩写,起码在这个文章中的上下文中不是这四个东西的组合吧。

    如果你在google里搜索: WIMP(即Windows、IIS、MySQL和PHP的首字母缩写),会发现很多网站都转载了这个新闻,而且出处写的是乱七八糟,天下文章一大抄啊,我想找个原始的是谁发明的这个一个无敌的解释都难。其中不乏pcworld,腾讯,cnbeta这些专业的it新闻网站,别的也就算了,这些专业网站也这么解释有点误人子弟啊

    文笔不好,就是来表示一下,占据了主页,还望包涵 

posted @ 2010-10-27 13:58 傻样精英 阅读(1588) 评论(11) 编辑

编写HelloWorld

上文环境搞好后打开xcode,显示xcode的欢迎界面,如下:

clip_image002

点击Create a new Xcode project,选择iPhone OS-Application-View based Application,创建一个最简单的iPad空白程序HelloiPad。点击Build and Run后iPad模拟器自动启动。

Xocde的文件如下

clip_image004

找到HelloiPadViewController.xib文件,双击后启动Interface Builder,编辑用户界面。点击右上角的旋转箭头,可以旋转为横屏编辑,拖入一个标签,一个编辑框和一个按钮后,简单编辑一下属性后运行,如下显示横屏和竖屏两个界面。

clip_image006clip_image008

(请无视每个界面上的两个小点点,那个是因为虚拟机的截屏快捷键正好跟模拟器的测试多点触摸快捷键冲突所致)

上图发现在横屏下显示是居中很好看,但是竖起来后并没有自动适应而显示在中间,这个是需要设置自动适应属性,选中其中一个控件,选中右边属性中带有滑动块的那页,点击中间正方形上的线,就可以设置控件的自动适应属性,这一点apple搞的非常好,鼠标放在这个正方形上,右边就会动画显示你所设置的自动适应的动画,很好让人理解。三个控件设置完成后,保存一下,或者直接点击Build and Run会提示你保存,现在再看看是否居中了。

clip_image010

目前屏幕是四个方向自动适应的,那如果我只想程序在特定的方向下显示,怎么办呢?这就需要编码控制了。回到Xcode,双击HelloiPadViewController.m文件,找到如下代码:

clip_image012

将return YES注释,换为上面的代码,再看看是不是只能两个方向了呢。

这里要说一下苹果的方向定义。

我英文不好,不知道这个怎么翻译,横屏叫:Landscape,left,right是指home键在左还是右。竖屏叫Portrait。(本人也是刚入门,看了两章的书,所以很多都不懂)。

终于看到代码了,这个可能也是程序员最喜欢的看到的。下面,就编写一个点击按钮的响应事件。

首先在HelloiPadViewController.h文件中添加如下(红色为添加内容):

#import <UIKit/UIKit.h>

@interface HelloWorldViewController : UIViewController {

}

-(IBAction) btnClicked:(id) sender;

@end

在HelloiPadViewController.m中添加

-(IBAction) btnClicked:(id) sender {

//---display an alert view---

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@Hello World!

message:@iPad, here I come!

delegate:self

cancelButtonTitle:@OK

otherButtonTitles:nil];

[alert show];

[alert release];

}

这样事件处理程序就已经写好了,下面就是把这个事件处理程序挂到按钮的点击事件上,打开Interface Builder,选择按钮,按住Control拖动到HelloWorldViewController.xib窗体的File’s Owner,会出现一个弹出选择,选中刚才编写的btnClicked即可。编译运行一下,点击按钮,如下图出现一个提示信息。这个类似于VS系的MessageBox,Delphi系的ShowMessage,Justep系的jsDialogs。呵呵

clip_image014

程序编辑好了,下面我们在模拟器上按home键发现程序的图标是白色的,下面我们就要给程序添加一个图标。

找一个72*72的png图片,书上是这么说的,我没找到这么大的,小点的也是可以的。拖动图片到Xcode的Resources文件夹,出现提示后最好选择拷贝(Copy)。如下图:

clip_image016

然后双击HelloiPad-Info.plist文件,编辑Icon file值为刚才拖动的图片名字,这里是Apple.png。再B&R,按home回到首页看看,如下图:

clip_image018

Ok,万事俱备,只欠东风了。下面选择编译目标为Device,点击Build and Archive,报错了,如下:

clip_image020

什么原因呢?因为你没买99刀一年的证书,所以只能编译到模拟器,不能编译到设备。555555555555

破解越狱xcode

上文说了不能编译为设备执行程序,这里就介绍一个破解的办法。我是参考的weiphone论坛上的(Xcode 3.1.4 证书破解+iphone 3G 3.1.2真机部署(对3.2.1同样有效)),首先需要在macosx里打开程序-实用工具-钥匙串,选择证书助理,创建一个用于代码编辑的证书,然后执行下面一系列命令,拷贝自weiphone论坛。

证书伪造:

先按照 该教程 的步骤添加证书。注意,原教程选择的是“系统”证书,这里我们用“登录”证书,切记。

Xcode破解

关闭Xcode,打开你的命令行终端,复制粘贴下面的代码:

#!/bin/bash

cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/

dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255

printf “\x8f\x2a\x00\x00″ >> working

dd if=iPhoneOS\ Build\ System\ Support of=working bs=1 skip=127504 seek=127504

/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original

/bin/mv working iPhoneOS\ Build\ System\ Support

chmod a+x iPhoneOS\ Build\ System\ Support

执行完后再复制粘贴下面的代码到命令行终端:(需要internet网络连接)

mkdir /Developer/iphoneentitlements30

cd /Developer/iphoneentitlements30

curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt

mv gen_entitlements.txt gen_entitlements.py

chmod 777 gen_entitlements.py

执行完脚本后修改”/Developer/Platforms/iPhoneOS.platform/Info.plist”文件,做如下修改:

新增如下两项:

PROVISIONING_PROFILE_ALLOWED = NO

PROVISIONING_PROFILE_REQUIRED = NO

再用文本编辑器打开”/Developer/Platforms/iPhoneOS.platform/Info.plist”文件,将所有“XCiPhoneOSCodeSignContext”替换为“XCCodeSignContext”,(非常重要,不进行此步骤会导致打开项目文件Xcode会崩溃报错退出)保存退出。

打开Xcode,打开你的项目,Project>>Edit Project Setting,选择“Build”页面,Configurations和Show都选择All,找到Code Signing Identity项,删除其子项,并将“Code Signing Identity”赋值为“iPhone Developer”(其实是个选项)。

然后找到你项目的xxx-Info.plist文件,添加“SignerIdentity”项,其值为“Apple iPhone OS Application Signing”.保存。

期间会出现让我们选择签名证书,点选“允许”后,据说不能点永久。

Ok,再次点击Build and Archive,成功!!

打包ipa

编译完了的程序是HelloiPad.app文件夹,我们需要制作成ipa安装包,方便安装在iPad上。

第一步,新建一个文件夹,名字任意。找一个不大于500*500的jpg图片,改名为:iTunesArtwork,注意不能有后缀名。

第二步,建立一个文件夹,名为:Payload,把刚才编译的HelloiPad.app拷贝到这个文件夹里面。

第三部,修改app里面的Info.plist文件,windows下可以用Pledit.exe编辑,在<dict></dict>节点里面加入:

<key>SignerIdentity</key>

<string>Apple iPhone OS Application Signing</string>

然后选中Payload和iTunesArtwork,右键生产压缩zip文件,比如:HelloiPad.zip,把后缀名改为ipa就可以了。现在可以双击HelloiPad.ipa文件,看看可以加入到iTunes了。

clip_image022 clip_image024

(请无视边上那个,带我儿子头像的那个是刚打包的)

真机运行

Ipa文件有了,你要用iTunes同步还是其他方法,那就随便了,安装到真机后的运行界面如下:

clip_image026

clip_image028

posted @ 2010-08-27 15:22 傻样精英 阅读(7642) 评论(7) 编辑
  • 安装黑苹果

下载东皇的iAntares 10.6.3 v2.2,最简单的安装方法是刻盘安装,如果不想刻盘,可以采用硬盘安装,工具:Leopardhdhelper 0.3。用写入U盘的安装方式安装失败。到安装结束大多会提示安装失败,其实是设置引导程序失败,对我们来说是好事。第一次安装的话可能会修改主分区的活动盘导致重启不能引导,这个时候不要慌,随便找个可以引导的办法进pe系统,重新设置原来的主分区为活动即可。

安装这个不但要硬件支持,还要有耐心,最主要的是需要RP要好。

如果RP实在不怎么样,下载一个别人安装好的Vmware虚拟机最方便,但是这个最好CPU带VT支持,不然速度可想而知了。

clip_image002

上图为在weiphone下载的由easystudio提供的MacOSX 10.6.4的VM虚拟机文件。

  • 安装iPhone SDK和xcode

开发iPad的程序,为啥要安装iPhone SDK呢?因为他们用的是同一个系统,现在叫iOS了。我安装的是xcode_3.2.3_and_iphone_sdk_4_gm_seed.dmg,只能用在雪豹上。好像是iOS4的beta3版本。

安装完成后有如下几个程序:

l Xcode:集成开发环境(IDE)。

l Dashcode:基于Web的集成开发环境。(这个看的那本书没涉及)

l iPhone模拟器。用来模拟运行你开发的程序。注意这个是虚拟机,不是仿真器。他是i386架构的,真正的iPad是arm架构的。所以这个叫模拟器,不叫虚拟器。很绕口呵呵。具体一点就是你编译的程序在模拟器上能跑,但是到真机上肯定不能跑,如果要真机上能跑要基于arm架构重新编译才行。这个再xcode里面选择一下编译上对虚拟器还是设备就可以了。但是想编译设备,不好意思,需要认证。老乔卖的个人认证时99刀一年,当然可以破解,说的苹果一点觉xcode 越狱,呵呵。具体怎么jailbreak,后面会提到。

模拟器不支持iTunes和opengl加速,其他好像都没问题。当然哪些需要拍照,mic这类的肯定也不支持了,需要物理硬件,呵呵

l Interface Builder:根据名字可以看出是用来搞界面的。

l Instruments:优化程序,实时监控内存泄露问题(这个没用过,不知道怎么用)

  • 其他一些基本知识

屏幕分辨率:9.7寸屏,分辨率1024*768,去除状态烂20后剩1004*768。程序一般在这个尺寸下工作,当然你也可以选择开发全屏的程序,感觉全屏的程序其实是不友好的,因为我好多手势全都设置在状态栏上,所以现在特别讨厌全屏的程序。呵呵

单窗体程序:也就是说不支持向普通PC程序一样多个窗体。

不能后台运行:这个是iOS之前的概念了,据说iOS4是支持多任务的。之前支持单任务好像一个原因说是为了电池的续航问题。其实这个单任务多任务的用过iPad的都能理解。并不是不能一边听歌一边看书的。苹果的意思应该是不能把普通用户开发的程序作为后台运行。他自己的iPod好像可以。因为我越狱装了background破解,所以这里用了好像这个字。不知道是自身的iPod就可以后台,还是这个破解提供的。苹果为了解决这个不能后台运行的问题,特别提供了一个解决方案就是push service。具体我还没有深入,现在只是入门阶段,所以也不是很清楚。大概的意思就是比如你有一个聊天软件,可以注册一个push service服务。当你关掉聊天软件的时候,如果有好友向你发送消息,他可以提醒你。

  • 参考:

1、 pcbeta上的黑苹果安装

2、 weiphone上的xcode越狱及easystudio提供的vm虚拟macosx 10.6.4。

3、 Wei-Meng Lee写的《Beginning iPad™ Application Development》

  • 下期预告:
  • iPad开发学习之二HelloWorld及发布ipa

    编写HelloWorld

    破解越狱xcode

    打包ipa

    真机运行

posted @ 2010-08-27 13:03 傻样精英 阅读(6425) 评论(16) 编辑
摘要: 晚上在家用Ubuntu上网,看到园子里到一篇文章《主要城市公交路线下载》,博主提供了个exe,在linux下没运行起来,就想起用Mono里到GTK#开发一个,反正关键代码博主已经提供,所有就有了下面这个东西。先上图:一直听说.net在linux下有个mono实现,但是从来没用用过,正好借这个机会玩玩。打开MonoDevelop,创建来一个GTK#工程,然后使用MonoDevelop自带到可视化GU...阅读全文
posted @ 2010-04-16 01:37 傻样精英 阅读(2016) 评论(9) 编辑
摘要: 我是一个B/S程序开发者,所以经常调试ASP.NET程序,而我们的项目使用的是本地IIS Web服务器,为了方便调试,我一般不会去按F5调试,而是附加进程的方式调试,因为这样的好处是: 不用每次都等待...阅读全文
posted @ 2010-04-01 16:32 傻样精英 阅读(2433) 评论(4) 编辑
摘要: IE9的预览版阅读全文
posted @ 2010-03-17 01:26 傻样精英 阅读(1736) 评论(16) 编辑
摘要: 等了一天,终于看到企业库Enterprise Library 5.0 Beta1 和 Unity 2.0 Beta1 发布了。安装了一下,发现配置管理器用wpf全新开发了,结合VS2010也是wpf开发,感觉微软已经全面迈向wpf时代了。 目前beta1还不支持vs2010集成,到beta2,在3月份的时候发布开始支持vs2010. Enterprise Library 5.0 Beta1 下载页...阅读全文
posted @ 2010-02-09 20:36 傻样精英 阅读(220) 评论(1) 编辑