在升级XCode到版本7以后,使用某些静态库(.a文件),并为IOS模拟器编译时,可能会出现如标题所示错误,提示这个库是为OSX系统的X86_64平台编译的。这可能是XCode版本的一个BUG,在链接静态库时,优先链接了OSX平台下的obj,并抛编译错误。

为解决此问题,我们在编译静态库时,不要将添加OSX系统下的平台,或者使用lipo将静态库中关于OSX系统平台的内容移除。
首先使用 “-info”选项查看静态库里包含了哪些平台内容:
|
$ lipo -info libuuid.a Architectures in the fat file: libuuid3.a are: armv6 armv7 armv7s i386 arm64 x86_64 |
可以看到此静态库中包含了 i386和x86_64两个平台内容。然后使用 “-remove” 将其移除:
|
$ lipo libuuid.a -remove i386 -output libuuid.a $ lipo libuuid.a -remove x86_64 -output libuuid.a $ lipo -info libuuid.a Architectures in the fat file: libuuid.a are: armv6 armv7 armv7s arm64 |
使用移除OSX平台内容后的静态库再次编译,问题解决。
但是会出现warning:
“ld: warning: ignoring file ……/libuuid.a, missing required architecture x86_64 in file ……/libuuid.a (4 slices)”
可以不用理会。但是在发布或部署到真机的时候,还是需要使用带有x86_64平台的静态库。
红杏老板带吃喝嫖赌欠下……也不知道多少钱,带着他的小姨子跑了……所以,以下部分不用看了。再见。
运营商对GitHub的封锁使很多开发者感到头疼。幸好,我们还有VPN.
本文介绍如何结合红杏VPN公益版使用GitHub 。
红杏和(fān)谐(qiáng),想必大家在和GFW做斗争的时候都已经很熟悉了。做为一款和谐插件,红杏还是比较可靠的,收费也比较便宜。但是有一点比较难以接受的是,它无法给其他软件提供代理。为了弥补这个问题,红杏推出了一个公益版本,给广大开发者提供了一个免费的VPN服务器地址:
http://hx.gy:1080
在此次过程中,我们使用的就是这个地址。
git提供如下命令允许用户配置代理: 继续阅读
问题及解决办法
一个Android程序在大部分手机上运行正常,在某一款手机(华为荣耀7)上运行失败。具体表现为在写入Sqlite数据库时出现Sqlite3Exception :attempt to write a readonly database.
在仔细检查sqlite3_open/sqlite3_open_v2的参数、apk的SD卡读取权限、sqlite数据库的文件读写权限后,并没有发现任何问题,那么分析问题可能出在NDK与机器架构上了。
查看该机器使用的是arm64位CPU.然而在application.mk文件里,APP_ABI 并未配置64位选项。
配置
APP_ABI := armeabi-v7a
arm64-v8a
后再使用NDK编译 ,解决sqlite3的Readonly的问题。
最近重新配置vsftpd后,登入ftp后出现
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
根据问题提示查看了vsftpd.conf配置。
为禁止用户访问其他目录,以保证系统安全,做了如下设置:
chroot_local_user=YES
chroot_list_enable=NO
关于此配置项的具体说明可以戳这里
检查配置未发现其他问题。考虑是用户根目录的问题,将此ftp用户的根目录移动到 xx/webroot中,并在vsftpd.conf中配置此目录。问题依旧。
后查看svftpd的更新说明 ,发现从2.3.5版本以后,为保证服务器安全,根目录必须不可写。更改目录权限,解决此问题
chmod a-w xx/webroot
service vsftpd restart
在Linux上使用goagent时可能会出现该问题。
出现该问题一般是由于root用户文件夹的权限不够,一些文件无法创建。
查看 root 下是否有.pki文件夹,若没有的话则创建之。并检查文件夹的权限。最好设置为777.
chmon 777 ~/.pki/
mkdir -p ~/.pki/nssdb
certutil -d ~/.pki/nssdb -N
sqlite中支持的时间和日期函数共有 5 个:
- date(timestring, modifier, modifier, …)
- time(timestring, modifier, modifier, …)
- datetime(timestring, modifier, modifier, …)
- julianday(timestring, modifier, modifier, …)
- strftime(format, timestring, modifier, modifier, …)
上述 5 个函数,都传入时间字符串 timestring 作为参数,后面接 0 到多个modifier 修饰符。 而 strftime 将 format 作为第一个参数,对时间进行重新格式化。
timestring
可以采用以下任何一种格式:
序号 |
时间字符串 |
实例 |
1 |
YYYY-MM-DD |
2010-12-30 |
2 |
YYYY-MM-DD HH:MM |
2010-12-30 12:10 |
3 |
YYYY-MM-DD HH:MM:SS.SSS |
2010-12-30 12:10:04.100 |
4 |
MM-DD-YYYY HH:MM |
30-12-2010 12:10 |
5 |
HH:MM |
12:10 |
6 |
YYYY-MM-DDTHH:MM |
2010-12-30 12:10 |
7 |
HH:MM:SS |
12:10:01 |
8 |
YYYYMMDD HHMMSS |
20101230 121001 |
9 |
now |
2014-05-07 |
‘T’ 可以作为日期和时间的分隔符
modifier
- NNN days
- NNN hours
- NNN minutes
- NNN.NNNN seconds
- NNN months
- NNN years
- start of month
- start of year
- start of day
- weekday N
- unixepoch
- localtime
- utc
这些修饰符会按参数从左到右的顺序将时间进行相应的运算。
- 前 6 个修饰符可以对时间进行加减时间段的运算。如 ‘2 days’ 表示在 timestring 的基础上再加 2 天,而 ‘-1 hours’ 表示在前时间的基础上减一个小时。
- ‘start of’ 修饰符将时间转换成当月、当年、当天 有起始时间。如 ‘start of year’ 将时间转换为 ‘2013-01-01 00:00:00’
- ‘weekday N’ 修饰符将当前时间前进到下一个星期N.(周日为星期0,周一为星期1).如今天是1月1日星期3,那么下一个星期4将是1月2日,下一个星期2将是1月8日。
- ‘unixepoch’ 将 10 位数字的unix时间戳转换为相应的时间字符串。
- ‘localtime’ 和 ‘utc’ 将时间在格林威治时间和本地时间之间进行转换
format
格式化字符串,使用’%’进行转义
- %d 一月中的第几天,01-31
- %f 带小数部分的秒,SS.SSS
- %H 小时,00-23
- %j 一年中的第几天,001-366
- %J 儒略日数,DDDD.DDDD
- %m 月,00-12
- %M 分,00-59
- %s 从 1970-01-01 算起的秒数
- %S 秒,00-59
- %w 一周中的第几天,0-6 (0 is Sunday)
- %W 一年中的第几周,01-53
- %Y 年,YYYY
- %% % symbol
WordPress使用文章名做为标题有助于优化搜索。但使用中文文章名做标题又显得很丑。所幸有人提供了插件WP Slug Translate,可以将中文文章名自动翻译成英文。
下载安装此插件。在点击发布文章后,出现错误:
Fatal error: Call to undefined function curl_init() in /mnt/…../wp-
content/plugins/wp-slug-translate/wp-slug-translate.php on line 30
curl_init() 是CURL提供的函数。出现这个错误应该是curl没有安装。到服务器上查看,果然未安装CURL;
使用命令:
apt-get install php_curl
安装以后重新测试。文章标题的英文翻译成功,但是访问时出现404错误。查找原因是
1.apache默认没有加载重写模块。
2.PHP没有开启伪静态方法。
解决方案:
1.在 /etc/apache2/mods-enabled 中添加一个load文件,假如mymod.load,将需要加载的模块添加进去。这里需要添加的是mod_rewrite.so:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
2.打开 /etc/apache2/sites-available/default
.将站点节点下的AllowOverride None 改为AllowOveride All
然后重启Apache,成功设置标题为文章中文路径的英文翻译!
Sqlite3提供了函数
select time()
select datetime()
来获取时间和日期。不过获取出来的是世界时间。可以给函数传参数来获取本地时间:
select time(CURRENT_TIMESTAMP,’localtime’);
select datetime(CURRENT_TIMESTAMP,’localtime’)