zyl910

优化技巧、硬件体系、图像处理、图形学、游戏编程、国际化与文本信息处理。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  215 随笔 :: 0 文章 :: 145 评论 :: 111万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

随笔分类 -  --- My_原创

上一页 1 2 3 4 5 6 7 8 9 下一页

摘要:作者:zyl910 在iOS开发时,有时候需要在UIToolBar中增加UILabel等控件。见过很多资料是以代码方式完成此功能,不易维护。于是我进行了一番摸索,找到了xib/storyboard图形界面下的处理办法。一、代码方式 代码方式是很多资料上提到的,关键是利用UIBarButtonItem的initWithCustomView方法来绑定UILabel控件。代码如下——UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40.0f, 20.0f, 45.0f, 10.0f)]; myLabel.font=[UI... 阅读全文
posted @ 2013-04-26 15:10 zyl910 阅读(2069) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910 “点击空白处隐藏软键盘”是一个很常见的功能。最简单的实现办法是将背景View设为为UIControl类,然后在Touch Down事件中隐藏软键盘。详见 http://www.cnblogs.com/zyl910/archive/2013/03/29/ios_textfield_keyboard.html。 但是当文本框放在UIScrollView控件中时,上述方法就失效了。UIScrollView本身没有提供触摸事件,但它会拦截触摸操作,使背景View无法收到触摸事件。 该怎么办呢? 曾在网络上找到过一个解决方案——写UIScrollView的派生类,提供触摸事件... 阅读全文
posted @ 2013-04-17 19:03 zyl910 阅读(2799) 评论(1) 推荐(1) 编辑

摘要:作者:zyl910一、背景 现在很多常用的UML工具不支持Objective-C,在绘制UML时很不方便。得手工将Objective-C语法的参数列表,转为UML语法或C++语法。比较费力且容易出错。 于是我想编写一个工具,自动的将Objective-C语法的参数列表转为UML或C++语法。 用什么语言开发呢? 为了跨平台,我决定采用JavaScript来编写该工具。 现在只是一个字符串分析与生成的小工具,JavaScript足以胜任。二、功能设计 界面如下—— 基本使用方法——1. 在“源参数列表”填写Objective-C方法的声明;2. 点击“转换”按钮,UML与C++文本... 阅读全文
posted @ 2013-04-16 11:21 zyl910 阅读(566) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910 关于隐藏软键盘,网上的办法良莠不齐,大多是通过实现UITextFieldDelegate来隐藏软键盘,该方法代码较多,且在文本框很多的时不好处理。我经过搜索与摸索,找到了最佳的处理办法。一、隐藏自身软键盘 当对于有多个UITextField控件都想通过点击“Return”来隐藏自身软键盘的情况,这时的最好办法是使用Did End on Exit事件。在点击软键盘右下角的“Return”按钮后,会触发该事件。 该事件有一个sender参数表示当前文本框,这样便可以编写一个通用的事件处理方法(.m文件)——- (IBAction)TextField_DidEndOnExi... 阅读全文
posted @ 2013-03-29 18:08 zyl910 阅读(12292) 评论(1) 推荐(4) 编辑

摘要:作者:zyl910 前面测试了各种编译器的执行结果,但为什么它们的执行结果是那样呢?这需要仔细分析。VC2005的测试结果比较典型,而且调试跟踪比较方便,于是本篇对VC2005的crt源码进行分析。一、须知 开发工具是VC2005,平台为32位的x86,编译模式为Debug,使用MBCS字符集。二、cout输出窄字符串2.1 已初始化locale “已初始化locale”是指——在输出前执行了初始化locale,即执行了下列语句—— // init. locale::global(locale("")); wcout.imbue(locale("")); 阅读全文
posted @ 2013-01-22 21:13 zyl910 阅读(5002) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910 C++标准为C++标准IO库设计了十分完善的国际化文本处理机制。但在实际使用中,却发现各种编译器对它的支持性存在较大的差异,很多时候无法正确的输出字符。于是我对此进行了深入的调查。一、说明1.1 测试程序 下面有一段很简单的程序,分别利用cout、wcout、printf输出字符串。具体代码为——#include <stdio.h>#include <locale.h>#include <wchar.h>#include <string>#include <iostream>using namespace std; 阅读全文
posted @ 2013-01-20 11:35 zyl910 阅读(38376) 评论(2) 推荐(5) 编辑

摘要:作者:zyl910 将Windows程序移植到Linux等平台时,经常会遇到tchar.h问题与字符串的格式控制字符问题(char串、wchar_t串、TCHAR串混合输出)。本文探讨如何解决这些问题。一、背景1.1 历史 传统的C程序使用char字符串,采用ANSI+DBCS方案来支持当地语言,不能实现多国语言同时显示。 当年微软在设计Windows NT时考虑到国际化,决定内核支持Unicode,对应wchar_t类型。那时的Unicode只有16位,于是Windows中的wchar_t是16位的。 为了兼容老程序,与字符串有关的API一般有两套——A结尾的表示是ANSI版,使用c... 阅读全文
posted @ 2013-01-17 16:40 zyl910 阅读(20971) 评论(5) 推荐(7) 编辑

摘要:作者:zyl910 用VC2012编译了一个程序,在Windows 8、Windows 7、Windows Vista下都能正常运行。但在Windows XP下运行时,却报错不能运行,具体错误信息为“指定的可执行文件不是有效的 Win32 应用程序”。 在WinXP中装好“Visual C++ Redistributable for Visual Studio 2012 Update 1”。但该程序还是无法运行,仍是报告上述错误。 用eXeScope打开该exe,发现操作系统需求为“6.0”,即只能在Windows Vista或更高的操作系统下运行。 我的VS2012已经升级为“Vis... 阅读全文
posted @ 2013-01-13 21:41 zyl910 阅读(7090) 评论(3) 推荐(1) 编辑

摘要:作者:zyl910 以前我曾为了让VC++等编译器支持C99的整数类型,编写了同名的stdint.h、inttypes.h来智能处理(http://www.cnblogs.com/zyl910/archive/2012/08/08/c99int.html)。现在将其升级到v1.01版。一、改动说明1.1 包含目录问题 在1.00版,我编写的头文件与系统头文件同名,利用“#include "XXX"”与“#include <XXX>”的区别,使其智能使用系统头文件。 这样做的优点是基本不需改动代码(只需将“#include <stdint.h>”改为“ 阅读全文
posted @ 2013-01-10 22:50 zyl910 阅读(3582) 评论(4) 推荐(0) 编辑

摘要:作者:zyl910 有的时候将子目录下的所有文件的修改时间、大小、全限定名等信息导出到Excel表格中。 尝试过命令行,但不太好用——1.对于“dir /s >1.txt”,当前目录与文件列表是分开显示的,合并起来太麻烦,而且没有文件的全限定名。2.对于“dir /b /s >1.txt”,只有全限定名,没有修改时间、大小等详细信息。3.对于“tree /f >1.txt”,只有目录树,没有修改时间、大小等详细信息。 在网上找了几个导出文件列表的工具,但都不太好用。于是决定自己编写。 用什么编程工具开发呢?考虑到以后可能经常改进输出内容的格式,所以用VBScript脚本来写是 阅读全文
posted @ 2013-01-07 21:22 zyl910 阅读(2715) 评论(0) 推荐(1) 编辑

摘要:作者:zyl910。一、问题背景 之前的“利用按键精灵批量删除pdf中的水印”仅适用于页面内对象数量确定时。如下图中,页面内对象总是3个,其中第3个是水印—— 但是,对于某些pdf文件,页面内对象的数量是不定的,见下图—— 某些页面有3个对象,而另外一些页面是4个对象。这时原来的脚本就不能用了,若下移3次会导致删除有效数据,若下移4次又会误删除页面。 该怎样才能准确定位到最后一个对象呢?二、解决办法 在Adobat内容面板上反复尝试,发现使用 Shift+上下方向键 时,焦点会限制在当前层次。 于是,可以利用这一点实现快捷键盲操作——1.首先,点击鼠标将键盘焦点设在“页面1”上;2... 阅读全文
posted @ 2012-11-14 16:50 zyl910 阅读(3229) 评论(1) 推荐(0) 编辑

摘要:作者:zyl910。一、更新说明1.1 支持VC2012 VC2012增加了很多Intrinsics函数,详见——http://www.cnblogs.com/zyl910/archive/2012/11/06/intrin_vc2012.html检查了一下VC2012新增的Intrinsics函数集,发现它支持ARM指令和Haswell新指令 根据上述信息改进zintrin,检测到是VC2012时定义相关的宏—— #if _MSC_VER >=1700 // VC2012 #define INTRIN_AVX2 1 // immint... 阅读全文
posted @ 2012-11-07 22:18 zyl910 阅读(2344) 评论(1) 推荐(2) 编辑

摘要:作者:zyl910 之前我整理了一份VC6至VC2010中Intrinsics函数集对应表。现在VS2012发布了,它有没有增加Intrinsics函数集呢?于是我对此进行检查。 若是64位win8系统中默认安装的VS2012,Intrinsics头文件位于“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include”目录。 首先发现多了两个Intrinsics头文件——armintr.h:ARM的常用指令集。arm_neon.h:ARM的neon指令集。 看了一下intrin.h,发现以前大段的ARM Intrinsi... 阅读全文
posted @ 2012-11-06 22:49 zyl910 阅读(4830) 评论(0) 推荐(1) 编辑

摘要:作者:zyl910一、问题背景 现在Win8已经发售了,但奇怪的是,没有听到新版Windows SDK的消息。 其次,Win8中集成了DirectX 11.1,而现在也没有新版DirectX SDK的消息。 搜索了一下后发现,原来它们已经集成到VS2012中了。二、文档 在VS2012中点击菜单栏“帮助”->“添加和移除帮助内容”,打开“Microsoft Help View 2.0 - Visual Studio 2012文档”—— 需要等待一会儿,让文档列表下载完毕。注意选择“Windows Desktop App Development - 英语”,点击旁边的“添加”链接,它就.. 阅读全文
posted @ 2012-11-05 22:27 zyl910 阅读(25943) 评论(3) 推荐(1) 编辑

摘要:一、popcnt指令简介 popcnt是“population count”的缩写,该操作一般翻译为“位1计数”,即统计有多少个“为1的位”。例如,十六进制数“FF”,它有8个为1的位,即“popcnt(0xFF) = 8”。popcnt主要应用在密码学与通信安全,例如计算汉明重量(Hamming weight)。 x86体系最初是没有硬件popcnt指令的,只能靠软件计算。 2008年底,Intel发布了Nehalem架构的处理器,增加了SSE4.2指令集,其中就有硬件popcnt指令。虽然它名义上是属于SSE4.2指令集,但它并不使用XMM寄存器(SSE的128位寄存器),而是使用G... 阅读全文
posted @ 2012-11-02 23:00 zyl910 阅读(11665) 评论(0) 推荐(4) 编辑

摘要:作者:zyl910一、缘由 这几天win8发布了,我也想体验一下win8。可以我用的是笔记本电脑硬盘容量有限,里面已经装好了winXP/7双系统及大量开发工具,无论是全新安装还是升级安装都不太合适。于是我想将win8装在U盘里。 于是上网搜索一下,发现Windows To Go功能可以满足我的要求。但是很奇怪,网上的文章写得很复杂,需要命令行分区,还需要提取镜像等操作——http://tu.pcpop.com/all-769619.htm系统瞬间变win8 制作windows to go盘 我思考了一下,其实步骤完全没必要那么复杂,例如——1.无需用命令行分区。格式化可用Windows自... 阅读全文
posted @ 2012-10-28 22:21 zyl910 阅读(5504) 评论(5) 推荐(0) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以32位整数数组求和为例演示了如何跨平台使用MMX、SSE2指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、关键讲解 前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演示了如何使用SSE、AVX指令集 处理 单精度浮点数组求和。现在对其进行改造,使用MMX、SSE2指令集 处理 32位整数数组求和。因程序基本上差不多,文本就不详细讲解了,只说关键变化。1.1 指令集简介 先来看看支... 阅读全文
posted @ 2012-10-26 21:24 zyl910 阅读(4190) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以双精度浮点数组求和为例演示了如何跨平台使用SSE2、AVX指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、关键讲解 前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演示了如何使用SSE、AVX指令集 处理 单精度浮点数组求和。现在对其进行改造,使用SSE2、AVX指令集 处理 双精度浮点数组求和。因程序基本上差不多,文本就不详细讲解了,只说关键变化。1.1 指令集简介 先来看看支... 阅读全文
posted @ 2012-10-26 17:49 zyl910 阅读(3907) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以单精度浮点数组求和为例演示了如何跨平台使用SSE、AVX指令集。因使用了stdint、zintrin、ccpuid这三个模块,可以完全避免手工编写汇编代码,具有很高可移植性。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、问题背景 最初,我们只能使用汇编语言来编写SIMD代码。不仅写起来很麻烦,而且易读性、可维护性、移植性都较差。 不久,VC、GCC等编译器相继支持了Intrinsic函数,使我们可以摆脱汇编,利用C语言来调用SIMD指令集,大大提高了易读性和可维护。而且移植性... 阅读全文
posted @ 2012-10-22 22:12 zyl910 阅读(22291) 评论(5) 推荐(5) 编辑

摘要:作者:zyl910。 之前的ccpuid V1.02的mmx/sse指令可用性检查存在缺陷。现在的V1.03版改进了mmx/sse指令可用性检查,使用signal、setjmp,能够支持纯C程序。修正了AVX检查Bug。增加多文件链接ccpuid的测试例程。一、更新说明1.1 改进mmx/sse指令可用性检查1.1.1 问题背景 以前是使用结构化异常处理来确认当前环境是否能运行mmx/sse指令的。该方法存在两个问题。 首先,仅有C++支持结构化异常处理,而纯C是不支持的。所以在V1.02版中,是根据__cplusplus宏来做条件编译的。造成仅有C++版支持指令可用性检查,而纯C版没有... 阅读全文
posted @ 2012-10-13 00:01 zyl910 阅读(4939) 评论(1) 推荐(2) 编辑

上一页 1 2 3 4 5 6 7 8 9 下一页
点击右上角即可分享
微信分享提示