2016年8月3日 星期三

在IIS上安裝與設定PHP

開發環境主要是M$系列,因為測試的緣故,
需要使用其他人所提供的PHP程式,面臨三個選擇:
1、安裝Apache
      跟IIS會有相容性的問題,雖然網路上解法不少,因為熟悉度的關係,跳過。
2、把php改寫成asp,再掛載到iis上
      後續維護可能會有困擾,跳過。
3、直接在IIS上附掛php
      多年前曾經用過,雖然當時只是見習生路過的,就選這個方案好了。


參考了這篇【在在 IIS 上安裝與設定 PHP】 的說明,依序

1、下載PHP  (http://windows.php.net/download#php-5.6)  選擇的是5.6 X64 Thread Safe版本

2、將步驟1下載的zip檔解壓縮至C:\php

3、將c:\php\php.ini-production copy為php.ini並作下列修改 (有些設定原先為註解,拿掉;即可)
  • extension_dir = "ext"
  • cgi.force_redirect = 0
  • cgi.fix_pathinfo=1
  • fastcgi.impersonate = 1
  • 找到date區塊,date.timezone = "Asia/Taipei"
  • 找到Windows擴展區塊,開啟所需的相關dll (取消註解),例如: extension=php_mbstring.dll extension=php_mysql.dll .. ..

4、設定IIS
   
     (1)打開【處理常式對應】並新增PHP CGI模組
         要求路徑 = *.php
         模組         = FastCgiModule  (下拉選單)
         執行檔     = c:\php\php-cgi.exe
         名稱         = PHP via FastCGI     (為了省事直接依原作者的方式命名)

5、測試php可否正常執行
      在iis網頁目錄新增一個index.php,內容如下:
      <?php
            phpinfo();
        ?>    


後記,

原本是打算直接列出參考文章稍做記錄就好,在REVIEW時才發現,
可能手腦不協調吧~"~
一開始下載的版本(VC11 x86 Non Thread Safe (2016-Jul-21 19:18:58)),並不是我原先想下載的版本(VC11 x64 Thread Safe (2016-Jul-21 19:19:13)).........

甚至在抱著piece of cake的心態下快速設定完成後,直接把要測試的php程式搬到iis目錄下,咦.......這支在原作業環境運作良好的程式為什麼到我手上會水土不服!?
把程式碼註解掉之後,php確實可以檢視了,但....我不是只想顯示網頁文字啊,

原來,問題出在php的資源配置上,也就是在我設定的測試環境中(php.ini),有幾項該程式使用到資源未啟用,例如:
1、原先的作業環境允許使用<? ?>簡單的標識格式,但測試環境(php.ini)未開啟short_open_tag,所以要嘛是改php.ini,不然就把程式的<? ?> 改為<?php ?>。
2、Windows擴展區塊當中,只要程式有使用到的相關dll都要開啟 (extension=xxxxx.dll)。

詳細的php配置可以參考php.ini參數中文說明

方便日後追查,還是把重要步驟記下來好了。




2016年7月4日 星期一

[學習筆記]-AngularJS


AngularJs javascript framework is used in Single Page Application  projects which extends HTML DOM with additional attributes and makes it more responsive to user action.


  • open-source web application framework
  • fully extensible client-side MVC/MVVM framework
  • no library dependencis, works well with other libraries
  • perfect for creating one-page web apps 
  • “superheroic JavaScript MVW framework for dynamic web apps”
  • The main goal of this structural framework is to augment web apps with MVC (Model-View-Controller) capability

找到幾個很棒的學習網站,可以來慢慢消化了...

2016年7月1日 星期五

'Microsoft.Jet.OLEDB' 不支援64bits環境的替代方案。

原先跑的很順的網站轉移作業系統環境到Windows Server 2012,出現錯誤訊息
「'Microsoft.Jet.OLEDB.4.0' 提供者並未登錄於本機電腦上。」才注意到這個每次處理每次忘記已經存在很久的問題..........

替代方案:「Microsoft Access Database Engine 2010 可轉散發套件 

註:雖然網頁上未將Windows Server 2012列在支援的作業系統,但以這個範例而言是可以正常執行的。(就算不能執行,目前好像也找不到其他更新的版本...)

以輸出檔名為"output.xls"的excel檔為例,相關設定說明如下:

ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=output.xls;Extended Properties='Excel 12.0 Xml;HDR=Yes'";
  • Provider 引數設定為 "Microsoft.ACE.OLEDB.12.0"
  • DataSource引數設定為輸出檔名
  • HDR引數設定為Yes 代表第一行是標題,設定為No代表第一行是資料
  • Extended Properties則可依需求參照下表設定

檔案類型 (副檔名)延伸屬性
Excel 97-2003 活頁簿 (.xls) "Excel 8.0"
Excel 2007-2010 活頁簿 (.xlsx)"Excel 12.0 Xml"
Excel 2007-2010 具有巨集功能的活頁簿 (.xlsm) "Excel 12.0 Macro"
Excel 2007-2010 非 XML 的二進位活頁簿 (.xlsb)"Excel 12.0"

2016年5月31日 星期二

NSDictionary排序實作

原先按照以往的開發習慣(C#)將一些設定寫入NSDictionary,取值時才注意到原來NSDictionary是沒有排序的...

stackoverflow真是開發人員的好朋友,

參考到這篇Sorting NSArray of dictionaries by value of a key in the dictionaries

才發現又犯了老毛病用C#再看待iOS專案...

在iOS Developer Library中,有一個專門講述排序的主題<<Sort Descriptor Programming Topics>>

還想進一步鑽研的話,還有一篇Key-Value Coding Programming Guide

----
NSDictionary排序實作如下:

2016年5月30日 星期一

storyboard中的控制項無法連結至.h標頭檔

說來奇妙,這是很簡單的動作,但是每當久久一次...再度維護ios專案時...總是會卡在這個問題上,除了接觸時間不多QQ...也可以說是深植在潛意識的結果,

幾年前興沖沖的參加某個iphone/ipad app開發專班時,當時講師就在課堂上為了這個問題卡了許久...其實我並不怪講師學藝不精...真要說起來這個講師應該是倒楣+準備不足+藝高人膽大,該課程期間正逢xcode改版新增了分鏡表(Storyboard),但是開課單位提供的卻是改版前沒有storyboard的教材,一會兒控制項設定視窗跳不出來、一會兒範例上使用的方法不適用storyboard或是方法已停用...,
聽得台下一頭霧水,當時一同上課的同事就很性格的在整個課程期間專心研讀自己準備的參考書....
雖說xcode許多設計是很直覺,但在長期使用Visual Studio的習慣制約下,這種直覺,剛開始接觸時我很難理解,後來參考同事的作法,買了 一本圖文並茂的參考書,在課後找時間實作才稍微進入狀況,可能是當時的印象太深刻了吧,每當開啟storyboard時,就會開始想會不會設定視窗跳不出來....

整理這篇,是為了打開這個深埋在潛意識中會造成卡關的結,應該很少人會在這種細節上卡關吧...

一、如何連結控制項至.h標頭檔?
   Step1、在控制項上按著滑鼠右鍵拖拉到.h標頭檔。
                (或是按滑鼠左鍵+control鍵)
   Step2、正常情況下,在Step1後會出現"Insert outlet or outlet collection"的提示文字,放開滑鼠鍵、control鍵後會跳出設定用的交談視窗,輸入相關設定後連結完成。


2016年5月25日 星期三

App Transport Security

開發環境更新至iOS 9之後,原先正常運作的App資料跑不出來了,這個有一搭沒一搭始終無法投注太多心力的App...,一發生狀況,最為難的情況就是不常維護整個環境生疏了, 光是找到這個錯誤訊息就花費不少時間...

 kCFErrorDomainCFNetwork Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." 

一查詢原來iOS 9針對資料傳輸新增了控管機制 App Transport Security (ATS):

 App Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. ATS prevents accidental disclosure, provides secure default behavior, and is easy to adopt; it is also on by default in iOS 9 and OS X v10.11. You should adopt ATS as soon as possible, regardless of whether you’re creating a new app or updating an existing one. If you’re developing a new app, you should use HTTPS exclusively. If you have an existing app, you should use HTTPS as much as you can right now, and create a plan for migrating the rest of your app as soon as possible. In addition, your communication through higher-level APIs needs to be encrypted using TLS version 1.2 with forward secrecy. If you try to make a connection that doesn't follow this requirement, an error is thrown. If your app needs to make a request to an insecure domain, you have to specify this domain in your app's Info.plist file. 
 資料來源:What's New in iOS (9.0)


怎麼解決呢?

2016年5月18日 星期三

當 IDENTITY_INSERT 設為 OFF 時,無法將外顯值插入資料表 'TableName' 的識別欄位中

使用識別欄位(通常是自動編號)的資料表複製移動時,
出現當IDENTITY_INSERT 設為 OFF 時,無法將外顯值插入資料表 'TableName' 的識別欄位中

參照MSDN: SET IDENTITY_INSERT (Transact-SQL)

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }

於Insert Into 前先執行
SET IDENTITY_INSERT TableName On;


結果出現另一個錯誤訊息:位於資料表 TableName 的識別欄位其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定。