網頁

2017年9月29日 星期五

"Values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead"的處理

在XCode中一直出現"Values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead",參考String Format Specifiers文件中所提使用"lu 或 lx"卻都沒用,後來看到清理iOS工程中的Warnings其中提到

Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead

在模拟器和真机上,NSInteger是不同的类型定义:
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
  typedef long NSInteger;
  typedef unsigned long NSUInteger;
#else
  typedef int NSInteger;
  typedef unsigned int NSUInteger;
#endif
在格式化字符串时,使用'%ld'会在真机中报该警告。解决办法:
  • use %zd for signed, %tu for unsigned, and %tx for hex.

(以上出自清理iOS工程中的Warnings)

這才將這討人厭的warning去除 @@

參考網址:
清理iOS工程中的Warnings

2017年9月22日 星期五

更新成XCode 9.0時出現"Conflicting types for 'SecRandomCopyBytes'"

開機後被要求更新XCode APP,想說沒差,結果更新完就出現"Conflicting types for 'SecRandomCopyBytes'",還剛好下午要demo,這下可好,連編譯都Fail,查半天看起來是iOS11後不再支援32Bit,而RNCryptor看起來有相容到10.6,查到Conflicting types error in Xcode 9 #248,看起來可以用底下的code就解決了,不過似乎也是讓他可以compiler

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000
extern int SecRandomCopyBytes(SecRandomRef rnd, size_t count, void *bytes) __attribute__((weak_import));
#else
extern int SecRandomCopyBytes(SecRandomRef rnd, size_t count, uint8_t *bytes) __attribute__((weak_import));
#endif

參考網址:
Conflicting types error in Xcode 9 #248
ios11 beta error #17
This method(SecRandomCopyBytes) is wrong in Xcode 9 Beta #244

2017年7月30日 星期日

IIS上強制設定執行的PHP CGI所使用的php.ini

最近一個在Windows IIS上升級PHP 7的需求,這台server安裝的PHP不知為何,安裝新的PHP上去後,新增FastCGI模組指定新版的PHP,php.ini看起來固定使用同一個,無論怎樣安裝都一樣,像是IIS預設一樣,也不知道之前是怎設定安裝的(謎之音:好像是同一個人裝的)

查找半天,最後決定乾脆直接在設定FastCGI模組時就直接指定啦,如下面兩張圖做法,這樣就可以直接設定php.ini,就可以成功使用了


參考網址:
PHP with WinCache on IIS

2017年6月13日 星期二

Wordpress ajax實作問題

使用wordpress的ajax一般都會hook兩個action,一個開頭為wp_ajax_,一個開頭為wp_ajax_nopriv_,後頭再加上action的名稱。前者是需要login才能使用,後者是不需要。一般使用上,若是覺得不需要login即可使用的ajax功能,會覺得直接使用wp_ajax_nopriv_即可,但實際上發現,未登入至後台是可以正常使用,一旦使用者登入後台沒登出,此功能立即回傳0無作用。對一般使用者而言,會是重大意外事故。

結論:不管是否需要登入,兩個action都要hook,才不會有意外發生。

2017年4月30日 星期日

使用highlight.js

覺得原本用的highlight有點麻煩,新語言就要自己加新的js上去,想試用看看別的highlight程式,找到了這個highlight.js - Syntax highlighting for the Web。看起來比我原本用的還易用,想說試看看。

使用方式,選擇主題 -> 按編輯HTML,找到</body>後,在它前面加上下列三行即可
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/styles/default.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

正好也順便看看能不能用 哈

另外,https://cdnjs.com/libraries/highlight.js/ 可以找到不少theme,只要找css即可

參考網址:
在Blogger 使用 highlight.js