用什么方法可以知道某个网站用的是某一类的服务器?

比如我们知道了一个网站的域名, 或者是 ping 得到一个 ip 地址, 能不能通过一些探针或者工具, 检测出来, 运行网站的是到底是虚拟主机还是 vps 还是独立服务器呢?求大神指导
VPS 服务器 探针 网站13 条回复 • 2016-06-18 12:04:34 +08:00
notgod 1
notgod 2016-06-02 21:20:06 +08:00
只能靠猜
1. 如果未使用 CDN 的话
可以反向查询这个 IP 上绑定多少个域名
存在的情况
1. 很多域名 查看这些域名 是不是都一个人的 如果不是一个人的 = 虚拟主机
2. 单个域名 或者很少域名且内容一致 = VPS or 独立服务器

VPS 和服务器判断 就要基于 IP 所在的机房
比如如果在 AWS 那么 100% 是 VPS 因为 AWS 没独立服务器业务

好了 结贴吧少年
kozora 2
kozora 2016-06-02 21:51:07 +08:00
@notgod 其实 AWS 有独占实例
BOYPT 3
BOYPT 2016-06-02 21:56:12 +08:00
vps 虚拟机,你程序跑在上面都想要知道是虚拟机都挺不容易,还想外面 ping 一下就知道?是不是太崩坏了
notgod 4
notgod 2016-06-02 22:30:52 +08:00 via iPhone
@kozora yep ,我说的独立服务器,所有设备硬件均为独立安装使用 包括安装的是物理系统,。 aws 无论各种实例 都是虚拟化的。独占使用 而非独立使用
kozora 5
kozora 2016-06-02 22:31:43 +08:00
@notgod
不谈物理的话,只说性能其实没差的
notgod 6
notgod 2016-06-02 23:38:13 +08:00 via iPhone ❤️ 1
@kozora 这个观点不同意,
无论哪种虚拟化 性能都有流失
这个已经有非常多的专业评测
可以搜索各种 kvm ovz xen vmware 等虚拟化类型和裸机比较下酒就知道了

你觉得没差 是因为你未使用到真正密集运算,高密度使用 cpu 做运算 一台 2 台无感觉,但是部署一个集群 几百上千台的时候 那个损耗是很惊人的.

虚拟化的存在是为减少运维和提高管理便捷性,以及平滑扩容的问题,在付出部分性能损耗 换取管理和平滑扩容是值得的.
boro 7
boro 2016-06-02 23:50:33 +08:00 via iPhone
有个英文网站,具体域名我不记得了,可以分析出使用了什么语言, Web 服务器, CMS 以及使用哪家的主机或服务器。通过这些就可以分析出一些网站使用虚拟主机还是服务器。

可谷歌一下该网站。
kozora 8
kozora 2016-06-02 23:51:29 +08:00
@notgod 学习了
weiceng 9
weiceng 2016-06-03 00:06:53 +08:00
http://builtwith.com/
jizhidebocai 10
jizhidebocai 2016-06-03 09:37:43 +08:00
@notgod 您的思路很好, 谢谢!
jizhidebocai 11
jizhidebocai 2016-06-03 09:45:36 +08:00
@boro 啥网站呀,没有搜到
boro 12
boro 2016-06-03 11:14:07 +08:00 via iPhone
@jizhidebocai 你用英文搜索下,例如分析网站使用的 CMS 或脚本语言
azh7138m 13
azh7138m 2016-06-18 12:04:34 +08:00 via Android
@boro zoomeye ?

给服务器配什么显卡比较好?

电脑万一出问题,需要直接通过鼠标,键盘来操作电脑,还是需要块显卡,
但是给服务器配什么显卡比较好呢?
对显卡性能完全没要求,能显示就行,但是能耗要小点,稳定,不容易出问题。服务器显卡平时基本用不上,满足这些所以显卡价格越低越好
求推荐几款满足这个要求的服务器显卡:)
显卡 服务器 电脑 能耗44 条回复 • 2016-06-12 09:46:29 +08:00
ZavierXu 1
ZavierXu 2016-06-10 17:34:00 +08:00
难道不是 cpu 自带么。。。
zzutmebwd 2
zzutmebwd 2016-06-10 17:35:25 +08:00
@ZavierXu E 系列都不带
随便插一块亮机卡 京东 200 多那种就行
arrowna 3
arrowna 2016-06-10 17:35:36 +08:00
@ZavierXu 1231 ,好像必须插块独立显卡上去:(
arrowna 4
arrowna 2016-06-10 17:36:30 +08:00
@zzutmebwd 买什么牌子呢?耗电小点的显卡,不容易自毁的显卡:)
fzinfz 5
fzinfz 2016-06-10 17:38:37 +08:00 via iPad
服务器主板几乎都自带显示芯片,而且可以 kvm over ip
arrowna 6
arrowna 2016-06-10 17:40:00 +08:00
@fzinfz 你说的是刀片机?
zzutmebwd 7
zzutmebwd 2016-06-10 17:53:26 +08:00
@arrowna 农企随便买一个呗 买华硕的可能结实一些
arrowna 8
arrowna 2016-06-10 17:56:14 +08:00
@zzutmebwd 农企是什么?

@fzinfz 你用的是哪款 kvm over ip ?
zzutmebwd 9
zzutmebwd 2016-06-10 17:57:53 +08:00
@arrowna amd 收购了 ATI ,我们管 amd 叫农企
http://search.jd.com/search?keyword=%E6%98%BE%E5%8D%A1&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&offset=1&ev=exprice_0-399%40&uc=0#J_crumbsBar
*个就行
arrowna 10
arrowna 2016-06-10 18:00:01 +08:00
@zzutmebwd 这个耗电怎么样?
zzutmebwd 11
zzutmebwd 2016-06-10 18:04:19 +08:00
查功耗吧,这种亮机卡功耗峰值可能也就几十瓦
Sunyanzi 12
Sunyanzi 2016-06-10 18:06:04 +08:00 ❤️ 1
我很好奇 … 到底现在 V2 这个不看帖子还言之凿凿的随便乱答的风气是哪里来的呢 …

@zzutmebwd 到目前为止所有尾数大于 4 的 E3 都带核显 … 以及严格意义讲没有 E 系列这么个说法 …

@fzinfz 楼主这个情况要么 B85 要么 Z97 … 这两种情况板载显示芯片在没有核显的情况下都用不了 …

其实理论上讲 B85 还有可能 … 只是我没见过支持 CBG 的 B85 主板 … Z97 是设计上就不可能 …

*后是显卡推荐 … 挑便宜的随便买 … 如果选择困难就买 ATI X300 … 待机功耗 20W 以内 …
DesignerSkyline 13
DesignerSkyline 2016-06-10 18:19:57 +08:00
GTX 1080 ,你值得拥有
qqmishi 14
qqmishi 2016-06-10 18:23:49 +08:00 via Android
唔,其实我建议出问题了再插卡,平时插着反而是浪费。
这样也不用考虑功耗了,只要保证能找到能用的显卡就行,哪怕是从旁边电脑上临时拔下来的,,,
soland 15
soland 2016-06-10 18:27:05 +08:00
@qqmishi 难道要支持热插的吗?
arrowna 16
arrowna 2016-06-10 18:29:38 +08:00
@DesignerSkyline 你是大壕?这个要 5000 多。。。

@Sunyanzi 1235 是 1155 针脚和 1231 完全不同啊。。。 z97 主板没法用它
arrowna 17
arrowna 2016-06-10 18:29:55 +08:00
@soland 哪种显卡支持热插拔呢:)
ovear 18
ovear 2016-06-10 18:31:32 +08:00
@Sunyanzi 额。。。服务器的主板芯片不是这样的。。一般是板载一块集成显卡。。。

@arrowna 显卡取某宝收 pci 显卡, pci express 的不一定能用,可能还要电源额外供电。。服务器一般不行。
然后要插 pci 设备还要一张 pci 转角卡。。。

说实话,我不太相信服务器不带显卡。。一般都会带一个板载卡的
arrowna 19
arrowna 2016-06-10 18:36:25 +08:00
@ovear z97 hd3 内建于有显示功能的处理器 – 支持 Intel® HD Graphics:
带集成显卡啊了啊,显示不了:(
DesignerSkyline 20
DesignerSkyline 2016-06-10 18:42:59 +08:00
@arrowna 可以用来跑一些深度学习的程序,显卡需要好一点才行
ovear 21
ovear 2016-06-10 18:43:38 +08:00
@arrowna 不是这个。家用芯片的显卡是核显,依赖于 cpu 是不是带核显。。服务器是板载集成显卡,不一样的。你服务器啥板.z 啥啥 h 啥啥的芯片是家用的。。 c204 c206 cxxx 才是服务器芯片。。
具体参考: http://ark.intel.com/products/53557/Intel-Server-Board-S1200BTL
比如上面这块,带的集成显卡是 Matrox G200e ServerEngines
不是 Intel 的核显什么 HD4000 5000
arrowna 22
arrowna 2016-06-10 18:45:38 +08:00
@DesignerSkyline 如果搞深度,需要多好的吸纳卡呢?
zzutmebwd 23
zzutmebwd 2016-06-10 18:45:48 +08:00
@Sunyanzi 哈哈 你说得对 是我鲁莽了 猛一想我的都带啊 E3-1226v3 用核显用的很欢啊 涨姿势了,感谢
arrowna 24
arrowna 2016-06-10 18:47:08 +08:00
@zzutmebwd 1226v3 好像没有 1231 强大?后者是 8 线程,你的只有 4 线程。。。
arrowna 25
arrowna 2016-06-10 18:47:20 +08:00
@arrowna 显卡
Sunyanzi 26
Sunyanzi 2016-06-10 19:49:26 +08:00
@arrowna 1235 只有 Sandy Bridge 一个版本 … 我只是说有这东西没让你用 …

以及不用琢磨 1226 … Haswell 的 E3 里*接近 1231 还带核显的是 1245v3 … 这是 1240v3 的核显版 …

更好一点的还有 1246v3 … 1241v3 的核显版 … 价格和 1245v3 差不多 … 主频稍高了一点 …

@ovear 8M 的 G200eV 已经是老*历了 … 我*后见过带集显的板子是 LGA1155 的 … 新的平台都没有 …
fzinfz 27
fzinfz 2016-06-10 19:53:38 +08:00 ❤️ 1
@Sunyanzi lz 的问题看起来指的是狭义的服务器,所以按真正的服务器回答了

@arrowna 不止刀片,机架 /塔式 /组装,都有。
服务器和工作站 /PC (如何识别看芯片组,参考 21F )*大不同是一般不在身边,所以大多都板载 IPMI BMC 带外管理子系统(不开机 /CPU/内存坏了也能照常工作),而且支持接收转发板载显卡信号(单独芯片, CPU 集显和外接显卡一般不支持 KVM over IP 。 PS :软件功能可能要收费)。

几个例子:

品牌机: http://www.nico.schottelius.org/blog/remote-management-names-rmm-drac-ilom-imm-ilo/

https://www.asus.com/Commercial-Servers-Workstations/P10S-I/specifications/
Graphic: Aspeed AST2400 with 32MB VRAM
Management Solution: ASWM Enterprise; Optional ASMB8-iKVM for KVM-over-Internet

http://www.supermicro.com/products/nfo/IPMI.cfm

如果机器在身边,经常开关机,不建议买服务器
(缺点:贵 /性价比低,开机慢,第三方硬件兼容性差)

PS :除了 KVM over IP, 远程连接显卡还可以通过 KVM 控制台交换机或 PCoIP 卡解决。
arrowna 28
arrowna 2016-06-10 20:02:59 +08:00
@fzinfz 普通电脑不支持 KVM over IP 么?
jasontse 29
jasontse 2016-06-10 21:10:37 +08:00 via iPad ❤️ 1
https://www.supermicro.org.cn/products/motherboard/Xeon/C236_C232/X11SAT-F.cfm
Graphics:
Aspeed AST2400 BMC

https://www.asus.com.cn/Commercial-Servers-Workstations/P10S-X/specifications/
图形显示
Aspeed AST1400 + 64MB VRAM

再说浪费口舌
@Sunyanzi
Sunyanzi 30
Sunyanzi 2016-06-10 21:38:11 +08:00
@fzinfz @jasontse 其实放俩链接就足够了 … 是我孤陋寡闻了 … 多谢指教 …
Cavolo 31
Cavolo 2016-06-10 21:46:43 +08:00 via iPhone
@zzutmebwd 你这不是坑人吗,稳定的你推荐 amd
fzinfz 32
fzinfz 2016-06-10 21:49:34 +08:00
@arrowna 更正下,以上提到的 KVM over IP 仅指 IPMI BMC 的子功能。

普通电脑的远程 KVM 可以用(我没实际用过):

intel 的 vpro :
https://en.wikipedia.org/wiki/Intel_vPro#VNC-based_KVM_remote_control

KVM 延长器: taobao
ShunYea 33
ShunYea 2016-06-10 22:55:49 +08:00 via Android
@zzutmebwd 我只买第二个技嘉,品质更好
dgkae 34
dgkae 2016-06-10 22:56:02 +08:00
要配合机箱,如果机箱是 1U 的,那普通的卡塞不进去的
arrowna 35
arrowna 2016-06-10 23:45:29 +08:00
@fzinfz 标准的 kvm over ip 可以连普通电脑么?

@ShunYea 第二个是哪个?

@dgkae 平时用的 pc 是几 U 的? 这个 U 不是 cpu 吧?
ShunYea 36
ShunYea 2016-06-11 00:20:30 +08:00 via Android
@arrowna 就是 9 楼京东那个网址第二个?
arrowna 37
arrowna 2016-06-11 00:24:22 +08:00
@ShunYea 好像相差不大么
dgkae 38
dgkae 2016-06-11 00:42:12 +08:00
几 U 是指高度,普通 PC 机器是 4U 的高度,显卡也会那么高,一般服务器机箱塞不进的
arrowna 39
arrowna 2016-06-11 00:43:07 +08:00
@dgkae 塔式机箱是几 U 呢?
guoruei 40
guoruei 2016-06-11 06:50:07 +08:00
觉得整个楼已经歪到需要掰直才能继续下去的程度了。

楼主,你先说你服务器型号尺寸,硬件配置清单,服务器是离你近还是远,在公司机房还是在数据中心机房。

想在什么情况下使用这块显卡。预算是多少。。。
usernametoolong 41
usernametoolong 2016-06-11 10:51:34 +08:00
你需要一块带 BMC 的主板
jiongjionger 42
jiongjionger 2016-06-11 11:16:15 +08:00
买个带集成显卡的主板就完事了
fchypzero 43
fchypzero 2016-06-11 13:56:00 +08:00
服务器主板基本都自带了显示芯片,完全就不需要 CPU 有核显。
随便一张亮机卡就可以了。
ShunYea 44
ShunYea 2016-06-12 09:46:29 +08:00 via Android
@arrowna 个人觉得做工更好?

求解一个被病毒加密的 SQL 文件

服务器中毒后,其他都没事,就有个 mysql 的备份文件比较重要,不知道 V2 上有没高手可以帮忙解下。。。 文件地址: http://pan.baidu.com/s/1i3VlJc5

文件 MySQL SQL 求解8 条回复 • 2017-04-03 11:15:33 +08:00
66CCFF 1
66CCFF 2016-03-18 21:20:28 +08:00 ❤️ 1
勒索病毒?
真重要的话交钱吧。
yangqi 2
yangqi 2016-03-18 21:31:12 +08:00 ❤️ 1
xtbl 文件,就是勒索病毒,没办法解密的,只能从别的备份文件还原,如果没有那就没办法了。唯一的办法就是给钱吧好像
ge2009 3
ge2009 2016-03-18 21:43:32 +08:00
@66CCFF
@yangqi 嗯,是的,那看来是真的没有办法咯,还是原则问题吧,给钱是坚决不给的,只是自己有些记录得花点时间重新恢复了,当给自己的教训了,感谢二位!
UnisandK 4
UnisandK 2016-03-18 22:03:26 +08:00
这种勒索软件真的没法破,只能乖乖交钱,时间超了他把密匙一销毁就是他自己都别想把你的数据找回来
以后多长个心眼吧,重要数据用主从数据库远程备份
pynix 5
pynix 2016-03-18 22:08:49 +08:00 via Android
悲剧
cchange 6
cchange 2016-04-10 12:37:27 +08:00 via iPhone
悲剧 确实得注意安全啊
ru1404 7
ru1404 2017-03-30 19:13:23 +08:00 ❤️ 1
已解码不谢 http://pan.baidu.com/s/1nv0mLeD
ge2009 8
ge2009 2017-04-03 11:15:33 +08:00
@ru1404 牛 B 啊,这都能解,服!!!

ios模拟器安装.app

相对于xcode的run,然后再在安装到模拟器上测试,如果是个人开发的话,那还好。

要是是团队开发,那每次其他的童鞋就都需要update*新的文件下来再编译运行了。

而且,一些测试的童鞋也不会打开xcode这个庞大的IDE来拖垮电脑的运行速度的。

所以,能够只使用ios模拟器来安装.app的话,对工作来说是一件不错的事情。

xcode6之后提供了一个工具,xctool。这个工具可以做到这三件事情:

1.启动一个模拟器

xcrun instruments -w 'iPhone 5s'

2.把.app安装到已启动的ios模拟器(tip: 是app,不是ipa)(xxx.app是文件路径)

xcrun simctl install booted xxx.app

3.卸载指定的app (com.iosqiao.Test是bundle identifier 或者也可以在ios模拟器中长按图标来删除app)

xcrun simctl uninstall booted com.iosqiao.Test

另外,附上如何编译出新的app文件的方法:

打开xcode后,在项目目录下有一个Products文件夹,里面是app文件,选中app文件,右键,选择Show in Finder,

在打开的Finder中,移除app文件,然后回到xcode,选择菜单Product,点击analyze,然后你就会发现,

在刚才打开的Finder下,重新生成了app文件。

这个就是*新的app文件。

 

相关终端命令:

1.查看已安装的模拟器列表

$ xcrun instruments -s devices

2.启动指定模拟器 (tip: 如果遇到相同的模拟器标识,则需要加上模拟器的设备码)

$ xcrun instruments -w 'iPhone 5s'

3.react-native在指定模拟器中安装程序,切换到项目根目录下

$ react-native run-ios --simulator 'iPhone 5s'

4.react-native查看帮助

$ react-native --help

5.react-native安装程序到真机设备上,需要先安装ios-deploy,让真机设备可以调试

$ npm install -g ios-deploy

再将程序安装到真机设备上

react-native run-ios --device 'xxx'

 

ios开发transform属性

 "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageV;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (IBAction)moveUp:(id)sender {
    //平移
    [UIView animateWithDuration:0.5 animations:^{
        //使用Make,它是相对于*原始的位置做的形变.不累加形变,且多次点击只形变一次
        //self.imageV.transform = CGAffineTransformMakeTranslation(0, -100);
        //相对于上一次做形变.初始值self.imageV.transform为0,多次点击,会自动在上一次形变的基础上做平移
        self.imageV.transform = CGAffineTransformTranslate(self.imageV.transform, 0, -100);
    }];
    
}
- (IBAction)moveDown:(id)sender {
    
    //平移
    [UIView animateWithDuration:0.5 animations:^{
        //使用Make,它是相对于*原始的位置做的形变.
        //self.imageV.transform = CGAffineTransformMakeTranslation(0, -100);
        //相对于上一次做形变.
        self.imageV.transform = CGAffineTransformTranslate(self.imageV.transform, 0, 100);
    }];
}

- (IBAction)rotation:(id)sender {
    
    [UIView animateWithDuration:0.5 animations:^{
        
        //旋转(旋转的度数, 是一个弧度),M_PI_4,_下划线表示一个除号/
        //self.imageV.transform = CGAffineTransformMakeRotation(M_PI_4);
        
        self.imageV.transform = CGAffineTransformRotate(self.imageV.transform, M_PI_4);
        
    }];
    
}
- (IBAction)scale:(id)sender {
    
    
    [UIView animateWithDuration:0.5 animations:^{
        
       //缩放
        //self.imageV.transform = CGAffineTransformMakeScale(0.5, 0.5);
        self.imageV.transform = CGAffineTransformScale(self.imageV.transform, 0.8, 0.8);
        
       
    }];
    
    
}

/**
 *    总结:
 
 1:平移:transform是结构体,定义一个transform:CGAffineTransform form
 
 //使用Make,它是相对于*原始的位置做的形变.不累加形变,且多次点击只形变一次
 //self.imageV.transform = CGAffineTransformMakeTranslation(0, -100);
 //相对于上一次做形变.初始值self.imageV.transform为0,多次点击,会自动在上一次形变的基础上做平移
 self.imageV.transform = CGAffineTransformTranslate(self.imageV.transform, 0, -100);
 
 
 2:旋转:
 //旋转(旋转的度数, 是一个弧度),M_PI_4,_下划线表示一个除号/
 //self.imageV.transform = CGAffineTransformMakeRotation(M_PI_4);
 
 self.imageV.transform = CGAffineTransformRotate(self.imageV.transform, M_PI_4);
 
 
 3:缩放:
 //缩放
 //self.imageV.transform = CGAffineTransformMakeScale(0.5, 0.5);
 self.imageV.transform = CGAffineTransformScale(self.imageV.transform, 0.8, 0.8);
 
 
 4:清空形变属性:
   CGAffineTransform form = CGAffineTransformIdentity;
   self.imageV.transform = form;
 
 
 5:1:在实际开发中,使用场景:1:当涉及一些frame的改变或是形变的时候可以用transform来取代frame 2:一般在实际开发中都是平移,旋转缩放混合使用。
 
 */

@end

 

 

iOS 发短信

1. 导入库:

MessageUI.framework

2. 声明代理类:

MFMessageComposeViewControllerDelegate

3. 功能函数的实现:

比如:

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];

picker.messageComposeDelegate = self;

picker.navigationBar.tintColor = [UIColor blackColor];

picker.body = @””;

picker.recipients = [NSArray arrayWithArray:phoneArr];

[self presentViewController:picker animated:YES completion:nil];

4. 必须实现的代理函数:

– (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result

{

[self dismissViewControllerAnimated:YES completion:nil];

}

iOS开发UIApplication用法

1.简单介绍

(1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。

(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。

(3)通过[UIApplicationsharedApplication]可以获得这个单例对象。

(4) 一个iOS程序启动后创建的*个对象就是UIApplication对象,且只有一个(通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的)。

(5)利用UIApplication对象,能进行一些应用级别的操作。

2.代码介绍

    //通过sharedApplication获取该程序的UIApplication对象
    UIApplication *app=[UIApplication sharedApplication];
    app.applicationIconBadgeNumber=123;
    
    //设置指示器的联网动画
    app.networkActivityIndicatorVisible=YES;
    //设置状态栏的样式
    //app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色)
    //设置为白色+动画效果
      [app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
    //设置状态栏是否隐藏
    app.statusBarHidden=YES;
      //设置状态栏是否隐藏+动画效果
    [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
    
    UIApplication *app = [UIApplicationsharedApplication]; 
    //打电话  
    [app openURL:[NSURLURLWithString:@"tel://10086"]];
    //发短信 
     [app openURL:[NSURLURLWithString:@"sms://10086"]];
    //发邮件 
     [app openURL:[NSURLURLWithString:@"mailto://12345@qq.com"]];
    //打开一个网页资源 
    [app openURL:[NSURLURLWithString:@"http://ios.itcast.cn"]];
    //打开其他app程序   openURL方法,可以打开其他APP。
    //阻止屏幕变暗进入休眠状态
   //阻止屏幕变暗,慎重使用,缺省为no 2.0
    [UIApplicationsharedApplication].idleTimerDisabled =YES;
    //设置摇动手势的时候,是否支持redo,undo操作
   //摇动手势,是否支持redo undo操作。
   //3.0以后引进,缺省YES
    [UIApplicationsharedApplication].applicationSupportsShakeToEdit =YES;

iOS 开发权限设置

  • 麦克风权限:Privacy – Microphone Usage Description 是否允许此App使用你的麦克风?
  • 相机权限: Privacy – Camera Usage Description 是否允许此App使用你的相机?
  • 相册权限: Privacy – Photo Library Usage Description 是否允许此App访问你的媒体资料库?
  • 通讯录权限: Privacy – Contacts Usage Description 是否允许此App访问你的通讯录?
  • 蓝牙权限:Privacy – Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
  • 语音转文字权限:Privacy – Speech Recognition Usage Description 是否允许此App使用语音识别?
  • 日历权限:Privacy – Calendars Usage Description
  • 定位权限:Privacy – Location When In Use Usage Description
  • 定位权限: Privacy – Location Always Usage Description
  • 位置权限:Privacy – Location Usage Description
  • 媒体库权限:Privacy – Media Library Usage Description
  • 健康分享权限:Privacy – Health Share Usage Description
  • 健康更新权限:Privacy – Health Update Usage Description
  • 运动使用权限:Privacy – Motion Usage Description
  • 音乐权限:Privacy – Music Usage Description
  • 提醒使用权限:Privacy – Reminders Usage Description
  • Siri使用权限:Privacy – Siri Usage Description
  • 电视供应商使用权限:Privacy – TV Provider Usage Description
  • 视频用户账号使用权限:Privacy – Video Subscriber Account Usage Description

iOS:UITextField中文输入法输入时对字符长度的限制

如题的问题,又是个让我抓狂了大半天的问题,还是做个记录,有与类似问题的同学可参考,但不一定对。具体问题还需具体分析。我遇到的需求是这样的:有一个输入框,输入框内输入文字,文字字数限制在20字。

我采用了UITextField作为我的输入框控件,并且在委托方法:

%title插图%num%title插图%num

中实现了对字符串的长度限制,实现如下:

%title插图%num %title插图%num

这样实现的结果是:对于纯字符的统计没有什么问题,当输入的字符超过限制时输入框便截取*大限制长度的字符串。但是,有个问题,当使用拼音输入法时,该委托方法中的*后一个参数string接受的是输入的字母,而不是选择的汉字,造成的结果是,当想输入文字“我在编程”,输入拼音“wozaibiancheng”,每输入一个字母便会进入委托方法,统计的字符长度是字母的长度,实际上汉字还未超过限制长度,但是字母的长度超过了导致无法继续输入。

而且,致命的是,这个委托方法并不响应,选中候选汉字的过程,这就没有办法重新修正字符长度的统计了。

网上查了一些方法,有个叫Onyx的博主写了篇文章:iOS中UITextView/UITextField 输入英文和拼音状态下如何正确的统计输入的文字字数 看起来似乎是和我同样的问题,但是当我把他的代码搬到我的类里时,实现的结果并不理想,我没有得到想要的结果,而且他的方法看起来似乎复杂了点,我也没有研究清楚这个方法的问题出在哪。之所以把他的这篇博文引进来,是因为他的文章后来给了我些启发。

我刚开始时候并没有发现

%title插图%num%title插图%num

这个委托方法没有响应*后拼音到汉字的过程,当我发现这个问题时,问题便也差不多得到了解决。因为在之前向微博上的一个朋友咨询时,他告诉我可以注册这个观察者 UITextInputCurrentInputModeDidChangeNotification

 

在它的监听下可以得到中文。我刚开始时候理解错了他的意思,以为得到的就是*终选中的汉字,而中间输入的拼音并不会被得到。但其实这个监听,比以上的委托方法多了*后一步而已,即从拼音到中文的过程。

所以实现的代码如下。

<1>在init时候注册notification:

%title插图%num %title插图%num

<2>实现监听方法:

%title插图%num%title插图%num

<3>在dealloc里注销掉监听方法,切记!

%title插图%num%title插图%num