網頁

2017年12月16日 星期六

.Net程式無法連結上SQL express server

最近一個案子,為了省錢使用SQL express,放好了程式,裝好了SQL server,結果都連不起來,測半天.net沒問題,SQL server也好好的,防火牆也關了,能想到的就ip大概不對,但ip設上去也沒用,查半天看到這篇Why Your Web Application Can’t Connect to SQL Server,看起來express版本跟付費版本有些不同,如下

Data Source = (YOUR_SERVER_NAME)\SQLEXPRESS

可以參考SQL Server Management Studio,登入後直接看連結到的名稱即可

參考網址:
Why Your Web Application Can’t Connect to SQL Server

2017年12月5日 星期二

UITableView的beginUpdates及endUpdates在iOS 11後行為有變動,造成原本cell的展開不正常

最近案子有個表單是會隨時依使用者的點選變動cell的高度或加入cell,在iOS11出現前都很正常,但最近裝置更新成iOS11後,最後一列的展開會無法出現,但按第二次就正常,非常奇怪,查了半天,看起來在iOS11之前的UITableView的beginUpdates及endUpdates只會讓每個cell的heightForRowAtIndexPath執行一次,但iOS11開始,會執行三次左右,且cellForRowAtIndexPath取得的cell可能為nil,不是每次都如此,最後改使用reloadData就沒有這個問題,但這應該也只是暫時解法,若cell太多或裡頭資料太多,可能造成些效能上的問題

2017年11月3日 星期五

盡量使用mouseleave,除非瀏覽器不支援

做個記錄,目前使用下來,如這篇mouseenter、mouseover;mouseleave、mouseout的区别所述,mouseout本身會有太多的細節要處理,很多地方會觸發到,除非設定的元件本身就很單純,沒有什麼子元件,mouseleave,就很直接的對應那個元件,不會有什麼意外發生。

參考網址:
mouseenter、mouseover;mouseleave、mouseout的区别

2017年10月19日 星期四

PHP Excel在php 7中發生Fatal error: 'break' not in the 'loop' or 'switch' context

改換成PHP 7後,會發生無法下載excel的問題,將display_error設為on後,變成可以下載,但出現下列的錯誤

將那行break拿掉後就正常了。找了老半天,在這做個紀錄

2017年10月7日 星期六

連接DB時出現Warning: mysql_connect(): [2002] No such file or directory

買了台新的MacBook Pro,重建PHP及MariaDB的環境,沒想到卻是惡夢的開始,最後一直卡在〞Warning: mysql_connect(): [2002] No such file or directory〞的問題,一開始以為是MariaDB有問題,最後才發現是確實是MariaDB,不過主要是因為他本身對於localhost的解析有問題,MacBook Pro最新的MacOS high Serria內建的PHP並沒有設定php.ini,裡頭的pdo_mysql.default_socket設定成mysql.socket的所在位置,我在.my.conf中設定
socket=/tmp/mysql.sock

而在php.ini中設定底下的值
pdo_mysql.default_socket=/tmp/mysql.sock

這樣PHP中的mysqli就可以new了,不過使用phpMyadmin的話依然會有問題,直接COPY裡頭的config.sample.inc.php,改成底下
$cfg['Servers'][$i]['host'] = '127.0.0.1';

這樣就可以使用了,估計這做法只是work around

參考網址:
Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in


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

FB分享對話框的問題

2016/12/7時遇到幾個問題,這邊做點記錄
  1. 手機上的chrome無法接受FB.ui的dialog
  2. 新版FB app中使用https://www.facebook.com/dialog/share 直接導向的方式,會無法轉回指定的網址,錯誤如下圖,但舊版不會(如42.0)


參考網址:
FACEBOOK FEED DIALOG VS. SHARE LINK DIALOG

Google map中Google提供的標示icon

搜尋了很多資料,總是找不到想要的Goggle地標圖示,想要的如下:


查了不少,找到的大多如下


後來直接找圖示google map marker icons 搜尋結果,是找到不少,但使用的結果反而有個問題,因為是透明背景,白色圓圈部分整個透過去反而很難辨識。

最後直接拿google查到想要的地圖及其地標,直接找它的html code如下:
https://mt.googleapis.com/vt/icon/name=icons/onion/SHARED-mymaps-pin-container-bg_4x.png,icons/onion/SHARED-mymaps-pin-container_4x.png,icons/onion/1899-blank-shape_pin_4x.png&highlight=ff000000,0288D1&scale=2.0

試用了下,更動highlight中的0288D1就可以換顏色了,前頭的ff000000試用後感覺是讓顏色更鮮明。scale是圖示大小,使用在手機上的。name是指定有哪些icon,用逗點分開,案子處理完後依然沒查到哪邊有公開圖示的名稱,有點可惜了。

其他一些查到的範例:
  • http://maps.google.com/mapfiles/ms/icons/blue.png
  • https://mt.google.com/vt/icon?psize=20&font=fonts/Roboto-Regular.ttf&color=ff330000&name=icons/spotlight/spotlight-waypoint-a.png&ax=44&ay=48&scale=1&text=%E2%80%A2
  • http://mt.google.com/vt/icon?psize=25&font=fonts/Roboto-Bold.ttf&color=fffffCff&name=icons/spotlight/spotlight-waypoint-a.png&ax=44&ay=50&text=%E2%80%A2
  • https://mt.googleapis.com/vt/icon/name=icons/onion/SHARED-mymaps-pin-container_4x.png,icons/onion/1899-blank-shape_pin_4x.png&highlight=0288D1&scale=2.0

參考網址:
Google Map icons with VisualRefresh [closed]
MarkerOptions
Google Charts > Image Charts > Dynamic Icons
How to use SVG markers in Google Maps API v3

https://www.google.com/maps/d/u/0/viewer?mid=1wtKI5ZKprpS4NCny2gX6g09PBfE&ll=42.840158799999976%2C141.62646619999987&z=10

網路資源
google map marker icons 搜尋結果
The Top Google Maps Marker Icon Collections of 2015
Download a set of 100 free map icons
scottdejonge/map-icons
Google map markers

2017年4月18日 星期二

A tag點選事件穿透上層Div

最近一個案子首頁滿版底圖中空youtube影片顯示,現在很多都這樣設計,但偏偏其右側偏中有個scroll的圖片加連結,切版拿到時,發現不讓景點出現在四週留白,連結會不能點選(因為被底圖的DIV所蓋住了,最快方式就是讓底圖無法被click,找半天發現CSS就能設定,如下:

.bg{
     pointer-events: none; //在CSS中加這段即可
}

不過IE似乎問題不少,但這篇HTML/CSS make clickable through transparent DIV layer有提到覺得IE很麻煩設定,可以試著用這個Pointer Events Polyfill

參考網址:
Click through a DIV to underlying elements
HTML/CSS make clickable through transparent DIV layer
Pointer-events:none or Click Through div

查詢CentOS的版本

記錄查詢CentOS版本的指令
$cat /etc/redhat-release
CentOS release 5.11 (Final)