日期: 2021 年 5 月 10 日

web项目如何部署到服务器?

写好上位机程序后,如何部署到服务器?
(这里我用的是tomcat服务器)
首先说明一点:为了程序测试是否连接到下位机,我编写了一个命名为gprs的java文件,这个可以用下位机连接是否成功。程序见附录,下面说具体的部署的步骤:

把web项目导出为war文件。步骤:选中web文件的项目->右键->Export->Myeclipse->WAR file如下图:
%title插图%num

选择导出的位置,这里我为方便查找,选择为桌面。

%title插图%num

把gprs.java文件导出为 Runnable JAR 文件。

步骤:选中java项目中的gprs.jar文件->右键->Export->java->Runnable JAR file,然后选择next

%title插图%num

Launch configuation 选择的是你的主清单属性(就是你要运行的main方法所在的类,如果找不到就把main方法跑一边),Export destinaction 把导出的文件存放到哪里(不是像下载东西直接选个地址就完了,还要指定文件名和后缀  例如  c:\test.jar)Library handling 的三个选项(建议选第二个)

finish(去你指定的地方就可以找到文件了不用担心你依赖的jar会一起导出了)

Library handling 的三个选项:

Extract required libraries into generated jar:提取需要的库(以解压的形式)放到生成的 jar文件中,生成的jar文件较小 Package required libraries into generated jar:将所有需要的Jar包放到生成的 jar 文件中,生成的jar文件较大 Copy required libraries into a sub-folder next to the generated jar:将需要的jar包拷贝到一个子文件夹中
%title插图%num

发送到服务器

以上两个文件导成功后,登录自己的云服务器,并把上面的war文件通过远程桌面或者第三方软件(qq、微信、网盘等),从本地主机发送到服务器上,并把war文件放在tomcat中webapps目录下,并解压;把jar文件,放在c盘->Administeration目录下即可。

调试,运行。

首先,打开cmd,然后:输入:java -jar xxxx.jar (xxx代表的是导出的jar文件名称)。保证没有报错即可。

然后,通过网络调试助手,建立TCP的client。然后输入服务器的静态IP地址和端口号(在java文件中设置好的端口号)。检测是否是否能服务器连接成功。

*后,连接成功后,打开服务器的tomcat,在服务器的浏览器端输入:

http://47.93.7.53:8080/demo_bridge0807
http://服务器的静态IP:8080/war文件的名称

以上步骤就完成了环境搭建。

欢迎大家批评指教!

iOS中多方swizzle一个target类的方法执行结果验证

背景:项目越来庞大,业务团队很多的情况下,就会出现一种情况,基础组件被很多业务方所依赖,比如其中的某个方法,被不同的业务方去多次swizzle, 多处hook一个方法,*后执行的方法是哪个?是*后一个hook的使用方还是?

示例代码说明, 4个viewController, 按照以下顺序依次push:

ViewController -> DDMNOtificationViewController -> DDMSwizzledViewController ->

DDMSwizzleSecondViewController

在每个vc的viewDidLoad方法里,调用被hook的方法(此时每个vc的实例方法已经在+load hook了,关于+load的问题后续会写一篇)

@implementation ViewController

– (void)viewDidLoad {
[super viewDidLoad];

self.navigationItem.title = NSStringFromClass([self class]);

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 200, 44)];
button.backgroundColor = [UIColor yellowColor];
[button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}

– (void)ddm_viewcontroller_testInstanceMethod
{
NSLog(@”1:—-%s——“,__func__);
}

– (void)buttonAction
{
DDMNOtificationViewController *notificationVC = [[DDMNOtificationViewController alloc] init];
[self.navigationController pushViewController:notificationVC animated:YES];
}
@end
@implementation DDMNOtificationViewController

+ (void)load
{
[DDMSwizzleClass ddm_swizzle:NSClassFromString(@”ViewController”) originSelector:@selector(ddm_viewcontroller_testInstanceMethod) swizzleClass:[DDMNOtificationViewController class] swizzleSelector:@selector(ddm_notification_InstanceMethod)];
}

– (void)ddm_notification_InstanceMethod
{
NSLog(@”2:—-%s——“,__func__);
}

– (void)viewDidLoad {
[super viewDidLoad];

self.navigationItem.title = NSStringFromClass([self class ]);

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 200, 44)];
button.backgroundColor = [UIColor redColor];
[button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

[self ddm_notification_InstanceMethod];
}

– (void)buttonAction
{
DDMSwizzledViewController *notificationVC = [[DDMSwizzledViewController alloc] init];
[self.navigationController pushViewController:notificationVC animated:YES];
}
@end
@implementation DDMSwizzledViewController

+ (void)load
{
[DDMSwizzleClass ddm_swizzle:[ViewController class] originSelector:@selector(ddm_viewcontroller_testInstanceMethod) swizzleClass:[DDMSwizzledViewController class] swizzleSelector:@selector(ddm_swizzled_InstanceMethod)];
}

– (void)ddm_swizzled_InstanceMethod
{
NSLog(@”3:—-%s——“, __func__);
}

– (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationItem.title = NSStringFromClass([self class ]);

[self ddm_swizzled_InstanceMethod];

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 200, 44)];
button.backgroundColor = [UIColor blueColor];
[button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}

– (void)buttonAction
{
DDMSwizzleSecondViewController *notificationVC = [[DDMSwizzleSecondViewController alloc] init];
[self.navigationController pushViewController:notificationVC animated:YES];
}
@end
@implementation DDMSwizzleSecondViewController

+ (void)load
{
[DDMSwizzleClass ddm_swizzle:[ViewController class] originSelector:@selector(ddm_viewcontroller_testInstanceMethod) swizzleClass:[self class] swizzleSelector:@selector(ddm_secondswizzled_InstanceMethod)];
}

– (void)ddm_secondswizzled_InstanceMethod
{
NSLog(@”4:—-%s——“, __func__);
}

– (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationItem.title = NSStringFromClass([self class]);

[self ddm_secondswizzled_InstanceMethod];
}
@end

打印结果:

DDMDemo[x:x] 1:[ViewController ddm_viewcontroller_testInstanceMethod]——

DDMDemo[x:x] 2:[DDMNOtificationViewController ddm_notification_InstanceMethod]——

DDMDemo[x:x] 3:[DDMSwizzledViewController ddm_swizzled_InstanceMethod]——

结果很显然:在DDMNOtificationViewController中执行的是ViewController的方法,DDMSwizzledViewController中执行的是DDMNOtificationViewController,依次类推。。

这也符合常理,各个使用方hook的方法肯定都得走到。

这里有人可能会有疑问,上述打印结果这个和这几个VC的+load方法执行顺序有关吧, ViewController -> DDMNOtificationViewController -> DDMSwizzledViewController -> DDMSwizzleSecondViewController ,

确实如上图,可以尝试调整source file的编译顺序会对打印结果产生影响。

%title插图%num

结论是,使用方hook其他公用的方法,会调用到在这个类+load执行前的其他类的hook方法内容。

 

iOS数字签名证书

问题: 公钥 私钥是怎么产生和使用的?
根证书
根证书, 是CA给自己颁发的数字证书, 是信任链的起始点. 它一 般放在CA网站上, 供任何人下载.

数字签名原理
公私钥的特性:
1.对于一个私钥,有且只有一个与之对应的公钥。生成者负责生成私钥和公钥,并保存私钥,公开公钥
2.公钥是公开的,但不可能通过公钥反推出私钥,或者说*难反推,只能穷举,所以只要密钥足够长度,要通过穷举而得到私钥,几乎是不可能的
3.通过私钥加密的密文只能通过公钥解密,公钥加密的密文只有通过私钥解密

1.1  签名:
发送者先对要发送的”数据”计算一个哈希值, 再用自己的私钥对这个哈希值加密生成一 个”签名(值)”, 同时发送者要拥有一个向CA申请得到的”数字证书”( 其记录有公钥 ), *后发送者把”数据”, “签名(值)”和”数字证书”一起发送给接收者.
1.2 验证签名:
接收者接收到发来的”数据”, “签名(值)”和”数字证书”后, 会作一系列验证来判断这一数 字签名是否有效:
1.2.1
打开并验证”数字证书”的有效性;
1.2.2
计算”数据”的哈希值H1, 用”数字证书”记录的公钥对”签名(值)”进行解密得到值H2, 如 果H1==H2, 则该”数字签名”有效.

具体到

iOS证书签名
Apple官方提供的证书形式:

苹果公司目前提供两种 iOS Developer Program enrollment包括如下:
1. Standard Program
·$ 99 – 个人
– 此计划是为开发者能够自由地创造iPhone / iPod Touch/ iPad的商业应用,并且能够发布他们的应用程序在 App Store 上。
– 此计划每年有 100台 测试机器可以设置作开发以及测试用途。
– 这个程序不允许开发人员创建一个团队,团队成员添加到他们的帐户。
– 开发者参加这一计划将有各自的名称作为卖方在App商店上市。
·99美元 – 公司
– 公司应在邓白氏注册并拥有有效的 DUNS 号码。
– 此计划是对于希望开发iPhone / iPod Touch/ iPad的应用程序的 公司 而设。
– 此计划每年有 100台测试机器 可以设置作开发以及测试用途。
– 这个程序允许开发人员 创建一个团队, 团队成员添加到他们的帐户。
– 参加这一计划,其公司名称将作为卖方在App商店上市。
2.Enterprise Program
·$ 299 – 公司
– 公司应在邓白氏注册并拥有有效的 DUNS 号码。
此程序所开发的应用只能发给其雇员作 内部 使用。
– 这个程序允许开发人员 创建一个团队 ,团队成员添加到他们的帐户。
– 此计划将 不会允许 该公司在App商店出售他们的应用程序。

标红信息补充:
1. 各角色用户权限:

https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/ManagingYourTeam/ManagingYourTeam.html#//apple_ref/doc/uid/TP40012582-CH16-SW1

2. 注册DNUS:  http://www.dnbchina.com
注册成功收到以下类似格式邮件:
Your D-U-N-S Number request/update submitted on 12/20/201x with ID Number xx’xxxx.  You may start using your number in  14 days . D-U-N-S Number: xxxx  Resolution Description: New Record CreatedThe following information was submitted as part of your request:Business Name: xxxxxxxx  City: NJ City : CHINA PEOPLES REP    Thank you for using D&B’s Mini Investigation Service.

证书生成过程
具体生成过程,目前资料较多,不再重复,对关键步骤解释:

1.   生成 CertificateSigningRequest.certSigningRequest ,生成这个同时钥匙串中会出现具体的公钥及私钥。
以上文件 包含信息:参考链接( https://en.wikipedia.org/wiki/Certificate_signing_request)
1.1 申请者信息,此信息是用申请者的私钥加密的
1.2 申请者公钥,此信息是申请者使用的私钥对应的公钥

2.  生成Certificate
2.1  公钥包含在证书CertificateSigningRequest.certSigningRequest中, 生成的这个东西叫 ios_development.cer
2.2  取出CertificateSigningRequest.certSigningRequest中的公钥,,然后将我的账号信息和我提交的公钥封装在证书中,并进行数字签名。
2.3 我的账号信息和我提交的公钥在certificate中
双击安装完证书后, KeyChain会自动将这对密钥关联起来(certificate只是关联私钥,并不包含)

3. 生成provisiontion profile
从生成步骤来看,  ppfile包含了三个东西 AppID, UDID, 所信任的证书(cer)。
总结     ppfile包含的东西如下:
3.1 AppID。每个app必须在MC中创建一个对应的AppId, 里面包含一些功能列表。格式是your teamID.com.mt.xxx 。
3.2 证书。不同类型的证书就代表了不同的发布方式。
3.3 UDID  可安装的设备列表
3.4 AppID 包含的bundleID (生成这个之前需要生成AppId,可查看其它具体生成过程的资料)
3.5 证书里的个人信息和公钥

运行到真机:
1.  解压ipa
.app里面包含图标,entitlements, 二进制文件, mobileprovision等信息(iOS6以下,设置通用描述文件可以看到所有通过xcode或testflight等安装到真机上的ppfile. iOS8 手动同步安装ipa需在描述文件里信任证书)
2. 生成可运行真机的ipa.需要进行compile bitcode, codesign .app等过程
3. ipa跑到真机
公钥 被包含 在数字证书里,数字证书 又被包含 在描述文件(Provisioning Profile)中,描述文件在应用被安装的时候会 被拷贝 到 iOS 设备中。
3.1  App 在真机上启动时,需要对配置的 bundle ID、entitlements 和 certificate,设备是否在设备列表 与 Provisioning Profile 进行匹配校验。
3.2  从 合法 的 ios_development.cer 中获取 公钥 对 App 的可靠性和完整性进行校验。

总结2个问题:
1. 私钥签名  签的是什么东西?
executable code ,resources such as images and nib files aren’t signed      对应.app中的_CodeSignature文件夹下的 CodeResources
2.  ios_development.cer 的合法性谁确定?
根证书(*后附有下载链接)
根证书就是一开始就被信任的证书,是信任链的起始点
Apple Root CA 证书公钥对其数字签名进行解密和校验。校验成功会标记此证书有效

iOS 判断字符是全角还是半角

if ([string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]>1) ,结果是yes就是全角字符,no就是半角,

Unicode:
0x00-0x7F的字符,用单个字节来表示;
0x80-0x7FF的字符用两个字节表示;
0x800-0xFFFF的字符用3字节表示;
汉字的unicode范围是:0x4E00~0x9FA5

ios设备区分

使用 UI_USER_INTERFACE_IDIOM() 进行区分  (ios 3.2>=) 无法区分iphone和ipod

if (UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad){

     //<define your constants here>

  else {

   // <define your constants here>

   }

区分目前UI_USER_INTERFACE_IDIOM()有2个返回值

UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad   

UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhon  

使用 UIDevice.model 进行区分  (ios 2.0>=)

   NSString *deviceType= [UIDevice currentDevice].model;

   

   if([deviceType isEqualToString:@”iPhone”]){

      //iPhone

   }

   else if([deviceType isEqualToString:@”iPodtouch”]) {

     //iPod Touch

   }

   else {

      //iPad

   }

使用系统的一个函数sysctlbyname 来获取设备名称

– (NSString *)platformString

{

   size_t size;

   sysctlbyname(“hw.machine”, NULL,&size, NULL, 0);

   char *machine= malloc(size);

   sysctlbyname(“hw.machine”,machine, &size, NULL, 0);

   NSString *platform= [NSString stringWithUTF8String:machine];

   free(machine);

   if ([platform isEqualToString:@”iPhone1,1″])   return @”iPhone1G”;

   if ([platform isEqualToString:@”iPhone1,2″])   return @”iPhone3G”;

   if ([platform isEqualToString:@”iPhone2,1″])   return @”iPhone3GS”;

   if ([platform isEqualToString:@”iPhone3,1″])   return @”iPhone4″;

  if ([platform isEqualToString:@”iPhone3,3″])   return @”VerizoniPhone 4″;

   if ([platform isEqualToString:@”iPod1,1″])     return @”iPodTouch 1G”;

   if ([platform isEqualToString:@”iPod2,1″])     return @”iPodTouch 2G”;

   if ([platform isEqualToString:@”iPod3,1″])     return @”iPodTouch 3G”;

   if ([platform isEqualToString:@”iPod4,1″])     return @”iPodTouch 4G”;

   if ([platform isEqualToString:@”iPad1,1″])     return @”iPad”;

   if ([platform isEqualToString:@”iPad2,1″])     return @”iPad2 (WiFi)”;

   if ([platform isEqualToString:@”iPad2,2″])     return @”iPad2 (GSM)”;

   if ([platform isEqualToString:@”iPad2,3″])     return @”iPad2 (CDMA)”;

   if ([platform isEqualToString:@”i386″])       return @”Simulator”;

   return @””;

}

IOS 的一些资源汇总

UI界面类项目

Panoramagl —— 720全景展示

Panorama viewer library for iPhone, iPad and iPod touch

 

MBProgressHUD —— 进度指示

一种优雅的,半透明的进度显示效果。同时还提供了其他附加功能,比如显示完成信息并淡出。

iCarousel  —— 效果很酷的分页排列

内容类似的页面需要并排列出来,供用户选择。iCarousel具有非常酷的3D效果,比如经典的CoverFlow, TimeMachine。另外还具有线性,圆柱状等其它效果。可用于图片选择,书籍选择,网页选择等。

 

CorePlot —— 2D图形绘图

数据可视化,可以绘制漂亮的棒状图、饼状图、线状图等等。

 

kal —— iPhone日历控件

一个类似于ios系统默认日历开源日历库,支持添加事件,自定义日历样式等功能。

 

EGOTableViewPullRefresh —— 下拉列表刷新

使用这个库,很容易就可以实现下拉刷新效果。微博,RSS阅读器之类的软件经常使用。

 

CMPopTipView —— 泡泡风格的提示界面

一个泡泡风格的提示框开源控件, 继承自UIView。iPad,iPhone通用。

 

HMGLTransitions —— 视图切换动画

提供一些UIView或UIViewController切换时候的3D动画效果。比如翻转,开门,撕纸等。

 

QuickDialog —— 表格风格的配置界面

在iphone, 通常使用UITableView来创建一些配置,登录界面,创建这些界面通常很机械很烦人。QuickDialog可以快速地在表格项中放置开关On/Off控件、日期控件、Sliders、单选按钮编辑框等等。这样就不用使用低级的UITableView。

 

JMTabView  —— 自定义标签栏和Tabbar

JMTabView是一个iOS自定义的标签栏开源控件,界面效果完全使用Core Graphics绘制,而没有用图片,所以内容很容易改为你需要的。

 

SBTableAlert —— 带表格视图的消息对话框

SBTableAlert对话框中提供了一种方式,在UIAlertView视图中包含了UITableView的效果,从而可以实现在UIAlertView中进行表格多选。使用简单。

 

EasyTableView —— 可水平或垂直滚动的TableView

原始的UITableView只可以垂直滚动。EasyTableView可以很方便的实现TableView的水平滚动, 并可重复实现用户自定义的View,就类似重复使用UITableViewCell, 这对于提高效率很有帮助。

 

MTStatusBarOverlay  —— 在状态栏上显示自定义的View

iOS程序通常会在*上面出现一个状态栏。使用这个库,可以很方便的在状态栏上显示一些信息,比如下载进度等。

非UI界面类:

RegexKitLite —— 正则表达式

要在字符串中抽取某些特定内容,或者检查输入合法性,很多时候需要用到正则表达式。RegexKitLite对NSString做了扩展, 支持正则表达的查找,替换等。

Openear—— 语音识别和TTS

提供了语音识别和Text-to-speach 的接口

 

ASIHttpRequest —— HTTP Network库

ASIHttpRequest库*大的简化了网络通 信,提供更先进的工具,例如文件上传工具,重定向处理工具、验证工具、等等。

 

KissXml —— xml解析库

很方便的一个xml解析器,支持Xpath查询。

 

FMDatabase —— SQLite的Objective-C封装

SQLite的C API对初学者来说实在太麻烦太琐碎,难度太高。 FMDB说穿了其实只是把C API包装成简单易用的Objective-C类。对于SQLite初学者来说,大大减低了上手的难度。有了FMDB,写程式时只要专心在SQLite的语法上,而不用去理那堆有看没有懂的C API,实在是件快乐的事情。

 

jsonframework —— JSON支持

它是一个开源框架,基于BSD协议发布。由于json-framework是开放源代码的,当你需要使用它时你只需将json的源代码加入到你的工程中。

 

SDWebImage —— 简化网络图片处理

用SDWebImage调用网站上的图片,跟本地调用内置在应用包里的图片一样简单。操作也很简单。

 

Google Toolbox for Mac(GTM) —— 从不同Google项目收集的代码

包含各种的工具类。比如字符串的base64及二进制编码解码, 系统版本号比较, 路径查找等等。每个工具类都比较独立, 可单独抽出来使用。

 

SFHFKeychainUtils(scifihifi-iphone) —— 保存用户密码到keychain中

为了用户安全,可以使用钥匙串Keychain来保存用户密码。SFHFKeychainUtils封装了钥匙串的访问, 读写,使用起来很方便。

 

MKStoreKit —— 程序内购买

程序内购买的流程的封装。



手势表格:https://github.com/mystcolor/JTGestureBasedTableViewDemo

线图: http://www.cocoachina.com/bbs/read.php?tid-34137.html

饼图: http://www.cocoachina.com/bbs/read.php?tid-33615.html

柱状图: http://www.cocoachina.com/bbs/read.php?tid-9462-toread-1.html

图表框架(饼图、柱状图等):http://code.google.com/p/core-plot/

日期控件:http://code.google.com/p/iphonecal/
扫描wifi信息:

http://code.google.com/p/uwecaugmentedrealityproject/

http://code.google.com/p/iphone-wireless/

条形码扫描:

http://zbar.sourceforge.net/iphone/sdkdoc/install.html

tcp/ip的通讯协议:

http://code.google.com/p/cocoaasyncsocket/

voip/sip:

http://code.google.com/p/siphon/

http://code.google.com/p/asterisk-voicemail-for-iphone/

http://code.google.com/p/voiphone/

three20

https://github.com/facebook/three20

google gdata

http://code.google.com/p/gdata-objectivec-client/

720全景显示panoramagl

http://code.google.com/p/panoramagl/

jabber client

http://code.google.com/p/ichabber/

PLBlocks

http://code.google.com/p/plblocks/

image processing

http://code.google.com/p/simple-iphone-image-processing/

json编码解码:http://code.google.com/p/json-framework

base64编码解码:http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87

xml解析:https://github.com/schwa/TouchXML

安全保存用户密码到keychain中:https://github.com/ldandersen/scifihifi-iphone

加载等待特效框架(private api):https://github.com/jdg/MBProgressHUD

http等相关协议封装:http://allseeing-i.com/ASIHTTPRequest

下拉刷新代码:https://github.com/enormego/EGOTableViewPullRefresh

异步加载图片并缓存代码:http://www.markj.net/iphone-asynchronous-table-image/

iphone TTS:https://bitbucket.org/sfoster/iphone-tts

iphone cook book 源码:https://github.com/erica/iphone-3.0-cookbook-
iphone  正则表达式:http://regexkit.sourceforge.net/RegexKitLite/

OAuth认证:  http://code.google.com/p/oauth/
http://code.google.com/p/oauthconsumer/ 

图像处理 ,包含图像滤镜,大小改变,旋转等封装 https://github.com/Nyx0uf/NYXImagesUtilities ;

 

以下来源 http://blog.csdn.net/favormm/article/details/6664970

学习过程当中查找到的资料,做一个记录,以便更多朋友查看。

开发的过程有时候是简单的,因为我们可以站在巨人的肩上,跳得更高,走得更远。

如何用Facebook graphic api上传视频: http://developers.facebook.com/blog/post/532/
Keychain保存数据封装: https://github.com/carlbrown/PDKeychainBindingsController
对焦功能的实现: http://www.clingmarks.com/?p=612
自定义圆角Switch按件: https://github.com/domesticcatsoftware/DCRoundSwitch
弹出窗口For iphone and ipad: https://github.com/chrismiles/CMPopTipView
KVO详解: http://nachbaur.com/blog/back-to-basics-using-kvo
图片浏览: https://github.com/bdewey/Pholio
Dropbox实例: https://github.com/bdewey/dropvault
当地天气预报实例: https://github.com/aspitz/WxHere
可伸缩的toolBar实例: https://github.com/aspitz/ToolDrawer
app资源保护相关: http://aptogo.co.uk/2010/07/protecting-resources/
cocos2d中也可用UIScrollView,UITableView,UIGestureRecognizers https://github.com/jerrodputman/CCKit
http://www.tinytimgames.com/2011/08/05/introducing-cckit/
开源音视频 doubango

Cog

iOS文档导入导出: http://mobiforge.com/developing/story/importing-exporting-documents-ios
CoreAnimation Demo: https://github.com/bobmccune/Core-Animation-Demos

animation-sequence

animation-sequence-with-block

CoreAnimation Dev: Part 1 – Frame By Frame Sprites With Core Animation
Part 2 – Space Time
Part 3 – Scrolling Hell
Part 4 – Parallax Scrolling
iOS jabber聊天应用开发:客户端开发 http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-interface-setup/

http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-custom-chat-view-and-emoticons/

iOS jabber聊天应用开发:服务器搭建 http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/
iOS快速入门: http://www.jonathanhui.com/ios
objc学习: http://www.jonathanhui.com/objective-c
https://github.com/carlbrown/PDKeychainBindingsController
https://github.com/ldandersen/scifihifi-iphone
KeyChain封装,安全存数据: http://developer.apple.com/library/mac/#documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html
http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007797-Intro-DontLinkElementID_2
iOS声音相关: http://purplelilgirl.tumblr.com/post/9377269385/making-that-talking-app
http://dirac.dspdimension.com/Dirac3_Technology_Home_Page/Dirac3_Technology.html

http://zeroinverse.com/2010/06/iphone-audio-programming-tips/

弹珠游戏: http://www.crowsoft.com.ar/wordpress/?p=19
spring board类UI: https://github.com/rigoneri/myLauncher
MacOS&iOS upnp: http://code.google.com/p/upnpx
ios block learn: http://ios-blog.co.uk/iphone-development-tutorials/programming-with-blocks-an-overview/
https://github.com/zwaldowski/BlocksKit
弹出框中输入用户名与密码: https://github.com/enormego/EGOTextFieldAlertView
jailbreak iphone发送sms: http://code.google.com/p/iphone-sms/
搜索itune里app的url scheme: https://github.com/Zwapp/schemes-scanner
横竖屏切换自动调整位置: https://github.com/michaeltyson/TPMultiLayoutViewController
键盘出现与消失view自动移动避免遮挡: https://github.com/michaeltyson/TPKeyboardAvoiding
http://atastypixel.com/blog/a-drop-in-universal-solution-for-moving-text-fields-out-of-the-way-of-the-keyboard/
iOS类似firebug的web调试工具: http://phonegap.github.com/weinre/
一个UI开源库tapkulibrary,集成了calendar,coverflow https://github.com/devinross/tapkulibrary
http://maniacdev.com/2010/09/tapku-an-amazing-open-source-ios-interface-library/
数据库sqlite FMDB教程
mac的一个桌面程序,开源的 http://homepage.mac.com/nathan_day/pages/popup_dock.xml

PSTreeGraph for iPad

https://github.com/epreston/PSTreeGraph
文件预览like QLPreviewController https://github.com/rob-brown/RBFilePreviewer
Interface Builder中用自定义字体解决方案 https://github.com/0xced/FontReplacer
有shader的UILabe https://github.com/nicklockwood/FXLabel
GCD学习 http://blog.slaunchaman.com/2011/02/28/cocoa-touch-tutorial-using-grand-central-dispatch-for-asynchronous-table-view-cells/

http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

https://github.com/SlaunchaMan/GCDExample

iPad阅读器开发 http://mobile.tutsplus.com/tutorials/iphone/building-an-ipad-reader-for-war-of-the-worlds/

http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-using-a-slider-to-scrub-a-pdf-reader/

http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-adding-a-table-of-contents-to-an-ipad-reader/

epub reader

ipad UI 24个免费资源 http://www.cocoachina.com/applenews/devnews/2011/0915/3237.html
UITableView相关 UITableView的扩展

让UITableView中有search功能教程

多列的TableView

UITableView两级树型结构

Better TableView Data structure

Orge3D for iOS http://code.google.com/p/gamekit/

http://www.tonybhimani.com/2011/07/09/ogre3d-sdk-1-7-3-for-apple-iphone-ios-howto/

文档比Three20更全的类Three20库 https://github.com/jverkoey/nimbus
iOS Boilerplate一个库集合,方便开发 http://iosboilerplate.com/

https://github.com/gimenete/iOS-boilerplate

openCV for iOS http://code.google.com/p/edgy-camera-ios/

https://github.com/BloodAxe/opencv-ios-template-project

https://github.com/BloodAxe/OpenCV-iOS-build-script

http://computer-vision-talks.com/2011/02/building-opencv-for-iphone-in-one-click/

http://computer-vision-talks.com/2011/01/using-opencv-in-objective-c-code/

http://computer-vision-talks.com/2011/08/a-complete-ios-opencv-sample-project/

PageCurl for iOS https://github.com/xissburg/XBPageCurl

https://github.com/raweng/FlipView

https://github.com/Split82/HMGLTransitions

http://api.mutado.com/mobile/paperstack/

iOS PDF实例 http://www.cocoachina.com/bbs/read.php?tid=75173

https://github.com/vfr/Reader

https://github.com/shuhongwu/leaves-zoom-enhanced

https://github.com/jaspergregory/Ipad-photo-magazine

电子书开发

注释功能pdf

Core Animation http://nachbaur.com/blog/core-animation-part-1

http://nachbaur.com/blog/core-animation-part-2

http://nachbaur.com/blog/core-animation-part-3

http://nachbaur.com/blog/core-animation-part-4

Core Data注意的地方 http://nachbaur.com/blog/smarter-core-data

http://iphonedevelopment.blogspot.com/2009/09/core-data-migration-problems.html

CoreData Helper

支持多线程的CoreData

GCD http://nachbaur.com/blog/using-gcd-and-blocks-effectively

http://deusty.blogspot.com/2011/01/multi-core-ios-devices-are-coming-are.html

MKMapView zoom level http://troybrant.net/blog/2010/01/mkmapview-and-zoom-levels-a-visual-guide/

http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/

HTML parser http://www.cocoanetics.com/2011/09/taming-html-parsing-with-libxml-1/

https://github.com/topfunky/hpple

https://github.com/zootreeves/Objective-C-HMTL-Parser

openGLES http://www.ityran.com/portal.php

http://gamesfromwithin.com/customizable-color-sections-with-opengl-es-1-1

Charts绘制开源库 http://code.google.com/p/core-plot/

https://github.com/ReetuRaj/MIMChart-Library   说明文档

apple 私有api文档 http://hexorcist.com/private_frameworks/html/main.html
类safari的切换页面库 https://github.com/100grams/HGPageScrollView
自定义Slider组件 https://github.com/buildmobile/iosrangeslider

iOS Range Slider Part 1
iOS Range Slider Part 2

一些自定义组件: 自定义UIAlertView

自定义BadgeView

自定义数字键盘

自定义UILabel OHAttributedLabel

AQGridView KKGridView GMGridView

QR Encoder二维码识别 https://github.com/jverkoey/ObjQREncoder
xml解析库 https://github.com/ZaBlanc/RaptureXML
wapper map for iOS https://github.com/yinkou/OCMapView
iOS unitity https://github.com/ZaBlanc/iBoost

https://github.com/escoz/QuickDialog/

socket http://code.google.com/p/cocoaasyncsocket/
custom camera view https://github.com/pmark/Helpful-iPhone-Utilities

http://www.codza.com/custom-uiimagepickercontroller-camera-view

本地天气demo http://www.cocoachina.com/bbs/read.php?tid-72558-fpage-3.html
浏览器飞行动画 http://www.cocoachina.com/downloads/video/2011/1002/3313.html
切换动画demo http://www.cocoachina.com/bbs/read.php?tid-76431-page-1.html
Automatic Reference Counting http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-counting.html
voip for ios development http://trac.pjsip.org/repos/wiki/Getting-Started/iPhone

http://www.piemontewireless.net/PJSip155_and_iPhoneSDK312

http://code.google.com/p/siphon/

图像处理 http://www.cocoachina.com/downloads/code/2011/1009/3335.html

https://github.com/esilverberg/ios-image-filters

http://code.google.com/p/simple-iphone-image-processing/

http://developer.apple.com/library/ios/#samplecode/GLImageProcessing/Introduction/Intro.html

SSPhotoCropperViewController   它的用法

NYXImagesUtilities

脚本自动生成push notification所需证书 https://github.com/jprichardson/GeneratePushCerts
自定义ActivityIndicator https://github.com/hezi/HZActivityIndicatorView
开源库for ios boost for iphone

ffmpeg for iphone

opencore amr for iphone

OCR1 for iOS  编译方法一 方法二  Demo

ORC2 for iOS

一些编译好的库

iOS网络相关 bonjour

ASIHttpRequest

CocoasyncSocket

AFNetworking

iOS粒子系统 http://www.baysidegames.net/blog/?p=51

http://iphonedevelopment.blogspot.com/2009/03/at-last-particle-generator.html

http://iphonedevelopment.blogspot.com/2009/01/another-opengl-particle-system-teaser.html

http://www.cartoonsmart.com/ae_cool_energy.html

http://www.cocos2d-iphone.org/archives/926

Source Code: Particle Based Explosions In iPhone OpenGL ES

http://developer.apple.com/library/mac/#samplecode/ReplicatorDemo/Introduction/Intro.html      iPad版源码

CAReplicatorLayer_Animation

http://pyro.fenomen-games.com/

iOS5新技术教程 Storyboards(DNA非*新)

Storyboards官方资料

tutorial-using-storyboards-in-xcode-4-2

How to use Segues, Scence and Static Content UITableViews

beginning-storyboards-in-ios-5-part-1

beginning-storyboards-in-ios-5-part-2

GLKit Tutorial

Core Image Filter

Core Image Face Detection

自定义相册

同步NSUserDefaults到iCloud

iOS图形相关 http://tumbljack.com/

3DAR3维地图

iOS美术资源 http://www.grsites.com/generate/group/2000/

http://www.openclipart.org/

http://www.iconarchive.com/

http://www.wallpaperfedd.com/category/wallpaper/3d

http://www.vickiwenderlich.com/2011/10/free-iphone-ipad-game-art-pet-santa/

iOS 游戏engine isGL3D

OOLongEngine

cocos2d

galaxyengine

支持CSS的UIView GAViewStyling

CSSApply

用户体验 电影胶片效果
跨平台编译for iOS https://sites.google.com/site/olipion/
SOAP for obj-C http://code.google.com/p/wsdl2objc/
Mac 开源汇总 http://code.google.com/p/polkit/

 

ios6 支持旋转问题

以前的 iOS 程式 (4.0 版以前) 都是用 addSubview 来将 app 的 root view 加到 window 上面,例如下面的作法:
[self.window addSubview:navigationController.view];

我发现在 iOS 6 上面,这个作法会使 rotation 失效 (iOS 6 以前完全没问题),必须改成这个方式:
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) self.window.rootViewController = navigationController;
else [self.window addSubview:navigationController.view];

iOS 4 之后才支援 self.window.rootViewController = navigationController 的方式。
这样在 iOS 6 上 rotation 就正常了。

iOS开发 转屏控制 (shouldAutorotate/supportedInterfaceOrientations)不起作用

需求是这样的:
在控制器A中, 不允许转屏, 只能是竖屏
push到控制器B之后, 允许控制器自动转屏幕

实现方式

正常的实现逻辑中, 只需要在控制器A中实现以下

  1. – (BOOL)shouldAutorotate {
  2. return NO;
  3. }
  4. – (UIInterfaceOrientationMask)supportedInterfaceOrientations {
  5. return UIInterfaceOrientationMaskPortrait;
  6. }

就可以实现了

但是今天遇到这么个问题, 无论怎么设置, 这些代码也执行, 但是都不起作用, 屏幕依然可以旋转.

问题

大概的查了一下, 跟UINavigationControllerUITabBarController相关的控制器, 会默认的走这两个基类的转屏方法, 自己写的这个就不会生效了, 检查appDelegate中发现如下代码:

  1. LCPlayerViewController *mainViewController = [[LCPlayerViewController alloc] initWithNibName:@”LCPlayerViewController”
  2. bundle:nil];
  3. UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
  4. navigationController.navigationBarHidden = YES;
  5. self.navigationController = navigationController;
  6. self.window.rootViewController = self.navigationController;
  7. [self.window makeKeyAndVisible];
  8. return YES;

解决方法

由于基本是UINavigationController, 所以跟上面说的那个一致, 自己实现的shouldAutorotate等方法不管用了, 于是解决办法如下:

  1. LECBaseNavigationController *navigationController = [[LECBaseNavigationController alloc] initWithRootViewController:mainViewController];

把创建的Nav变成了自己的一个Nav子类, 定义如下:

  1. #import “LECBaseNavigationController.h”
  2. @interface LECBaseNavigationController ()
  3. @end
  4. @implementation LECBaseNavigationController
  5. – (void)viewDidLoad {
  6. [super viewDidLoad];
  7. }
  8. – (BOOL)shouldAutorotate {
  9. return self.topViewController.shouldAutorotate;
  10. }
  11. – (UIInterfaceOrientationMask)supportedInterfaceOrientations {
  12. return self.topViewController.supportedInterfaceOrientations;
  13. }
  14. – (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
  15. return self.topViewController.preferredInterfaceOrientationForPresentation;
  16. }
  17. @end

重写了三个跟转屏相关的方法, 把转屏的控制归还给实际的控制器, 再编译运行, 就可以实现自己的控制器控制自己转屏方向了.
代码在这

https://github.com/dfzr86/ScreenOrientationsDemo

Mac电脑安装homebrew和npm

*步:检查brew -v是否安装了homebrew这个macOS 缺失的软件包的管理器。如果安装,跳转到第3步,否则跳转到第二步;下图为未安装的效果图

%title插图%num

第二步:安装homebrew。安装跳转到官网指导。等待安装好之后,输入brew -v,如果出现版本号说明已经安装好:

安装的终端命令:

/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
没有安装效果图:

安装成功效果图:

第三步:执行brew update更新homebrew;

第四步:执行命令行brew install node安装node。执行npm -v即可看到安装好的npm版本,如下:

第五步:接下来就是npm的使用了,详情请看npm官网

iOS开发 苹果开发者企业账号续费,提示你的支付授权失败解决办法

*近续费公司帐号都没有问题,续费企业帐号时提示“你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式”,目前已经续费成功,提供一些方法。

 

网上提供的方法(他们说可行,但是不是我的解决方法,我的不是这些问题)

1.网上很多人说登录另一个Apple ID,不使用我们的苹果企业开发者账号登录,续费还是会续费到苹果企业开发者账号的。但是目前好像更改不了续费填写的帐号。

2.还有人说更改联系人邮箱账号(不能使用qq邮箱和163邮箱),我反正不是这个问题,我公司帐号和企业账号续费用的都是qq邮箱,都续费成功了

我的方法建议:

1.信用卡需要支持双币种。使用的每张信用卡都是银联+Visa,或银联+万事达,支持人民币和美元(但是打客服电话,客服的回复说是可以没有银联标识,咱们大陆使用的信用卡都是有银联标志的)

2.很多人说账单地址必须和信用卡的一致,目前亲测不需要,我只是账单联系人写的是信用卡的联系人,地址都是自己写的

3.一定要检查你的信用卡免密支付的额度(折腾了好多天,换了好多张卡,*后才发现免密支付有额度不能超过1000,续费企业号额度一定要够)

折腾了两天发现是银行卡的问题,大家遇到这个问题时,一定要跟银行确定你的免密支付额度!!!!

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速