猫哥不懂技术

莫催稿,催稿也不交

解决 iOS 中多个 CodeTyphon 静态库编译冲突

使用 CodeTyphon 开发 iOS 的静态库时,如果是单一库,不会出现问题,而当多个静态库同时被链接时,情况就不太妙了,会出现 duplicate symbols的异常,而查代码下来,却又找不到重复之处,这是怎么回事呢?其实根本原因是,CodeTyphon 在链接 .a 时,会把一些系统固有的东西一起链接上,也就是类似于 classes.o,sysutils.o 这类的单元有多份,因此而产生的冲突。那么要解决冲突,最好的办法就是让这些通用的东西只存在一份。所以

自定义 CodeTyphon 的包和组件

CodeTyphon 提供了海量的组件包,它们对开发提供了极大的便利,也是 CodeTyphon 易于上手的一大原因。在实际开发中,也会经常遇到内置组件无法满足需求的情况,直接在代码中进行修改固然是一个办法,但是考虑到代码的复用性,很多时候我们都会试图建立一个自定义的包,把修改过的组件放置在内,以便让其他的开发者获得便利。CodeTyphon 之所以发展到现在会拥有如此多的组件,与开源社区的贡献密不可分,本章我们即来看一下如何建立一个自定义的包。还是以之前的员工管理工具为例,我们已经拥有了一个原

CodeTyphon 实现访问数据服务

目前绝大多数应用程序都具备访问服务器的能力,不论是请求远程给予数据支持,又或者是单纯的检查新版本,都需要通过客户端来向服务器端发起请求,并得到服务端的回应。可以这么说,在互联网的时代,完全不依赖网络的应用程序已经很难很难生存,几乎已经绝迹了。之前我们已经掌握了如何来开发一个服务器端应用,以及如何将它部署到生产环境中。现在是时候让服务端与客户端进行数据交互了,让我们来看一下如何让客户端程序获取服务器端的数据,将员工管理工具改成具有网络交互属性的程序。『建立数据服务器』还是像以前一样,先新建一个 H

部署 CodeTyphon 服务器程序到容器

先前的文章讲述了使用 CodeTyphon 来开发一个 HTTP 服务器的方法,同时也指出了一些不足之外,毕竟服务器端程序需要可靠的容器来管理,而不是独立运行。本篇即讲述如何将程序部署到 Apache 和 Nginx 容器中。『切换服务器类型』还是沿用上一章内开发的独立HTTP服务器程序,我们将其修改为FastCGI程序,CodeTyphon已经考虑到了开发者可能在多种程序类型之间切换,因此有了以下切换方法:可以看到,这样的切换是非常简单的,修改引用,并且注释掉不必要的代码即可。随后编译程序,将

CodeTyphon 服务器端应用开发

CodeTyphon 提供了强大的 fpweb 框架,可以方便的实现 Web 模块,从而提供了支持服务器端开发的能力。该框架允许开发者轻松的构建出 CGI,FastCGI,Apache Module,独立 HTTP 服务器,爬虫,甚至是嵌入式服务器等。生成的程序可以独立运行,也可被 Apache、Nginx 等进行配置管理。由于 CodeTyphon 在跨平台方面显得过于强大,大部分开发者并不重视 CodeTyphon 在服务器端的开发能力,导致了服务器端相关的内容无人研究、资料缺失,编写本章时

跨平台的平台代码差异

CodeTyphon 作为一款本身就支持跨平台的开发工具,在原则上并不需要关注具体平台的特性,完全以 CodeTyphon 的组件库进行开发即可。而在实际开发中,由于部分特殊情况的存在,我们还是必须对平台的特殊性进行处理。特别典型的是路径分隔符,在Windows下采用『\』符号,而在其他系统中均采用『/』符号,这就让我们必须针对这一分隔符作出处理:此处的WINDOWS字样即是系统内部定义的环境变量,在不同的编译条件下,它将会被置为True或False,从而改变编译预处理语句的执行结果。系统内已经

[翻译]使用 Soong 来进行 Android 模块的构建

Soong 是原基于 make 的构建系统的替代品。它使用 Android.bp 来取代 Android.mk,并使用类似于 JSON 的格式来描述一个模块的构建方案。Android.bp 文件格式Android.bp 的设计非常简单,没有条件判断或控制流语句。在 Go 语言中编写的构建逻辑没有任何复杂度。Android.bp 的语法和语义可能也类似于 Bazel BUILD 文件。模块模块在 Android.bp 文件中以一个模块类型开始,后面跟着一组属性,以名值对(name: value)表

解决 SQLite 在 NDK 中的直接使用

这个问题的起因是,某项目需要在 NDK 中使用 SQLite,并且这个库同时也需要在 iOS 端使用。一开始的开发均很顺利,已有文章予以总结。但是当程序运行到 Android N 上时,情况就不对了,整个程序直接崩溃,报的错误是 Can not load dynamic library "libsqlite.so"。保险起见,我检查了一下 /system/lib 和 /system/lib64,确保了 libsqlite.so 是存在的。那么问题就变成了,无法调用这个存在的库

CodeTyphon 实现动态库

动态库,在 Linux 下为.so( Shared Object)文件,在 Mac 下为.dylib(Dynamic Library)文件,在 Windows 下为.dll(Dynamic Link Library)文件。它实现了共享函数的一种方式,包含了可由多个程序同时使用的代码和数据。动态库使进程有能力调用不属于该进程的可执行代码函数,使用动态库有助于共享数据和资源,多个应用程序可以同时访问内存中单个动态库副本的内容。使用动态库可以更容易的将更新应用程序于各个模块,而不是更新整个程序,不会影

使用 CodeTyphon 进行调试

CodeTyphon集成了调试器,这是集成开发环境的一个重要特性,它可以使开发者方便的设置断点,监视变量,检查对象等。 在程序运行时,调试器可以快速的获悉出程序内发生了什么,可以帮助开发者找到程序内的错误。对于 Mac 下默认调试器不起作用的问题,可以参考这篇文章解决:点击进入简单的看一下菜单内的主要功能:① Compile,编译有改动的单元文件,并重新链接这些改动过的文件;② Build,编译所有单元文件,并且对所有文件做重新链接;③ Run,运行编译后的程序,如果有单元改动,则先进行Comp
搜索
控制面板
«   2017年5月   »
1234567
891011121314
15161718192021
22232425262728
293031
最近发表
最新留言
文章分类
友情链接

Powered By Z-BlogPHP 1.5.1 Zero

Copyright Rarnu 2017. All Rights Reserved.