2018年3月16日 星期五

【資訊安全】Header content-security-policy

【資訊安全】Header content-security-policy

ALL_FORM
Chrome 處理 Iframe
frame-ancestors
frame-src

若如果header 也存在著 X-Frame-Options 將略過不處理 以frame-ancestors 為優先

在IE 上 不支援  frame-ancestors、frame-src 只支援 x-frame-options SAMEORIGIN

真是見鬼了

而 IE 只支援 ALLOW-FROM

2018年3月14日 星期三

【Tomcat】 調整 Response Headers Server:Apache-Coyote/1.1

【Tomcat】 調整 Response Headers Server:Apache-Coyote/1.1

server.xml


Connector 標籤
屬性:server="Microsoft-IIS/8.5"

請在測試機做,若在開發環境作, 可能會有副作用....比如..伺服器叫不起來等...

【JAVA】java 架構圖


2018年3月13日 星期二

【Eclipse】當專案 程式一堆 紅色打xx 無法編譯或LIB 載入失敗,請先看 Project Facet

【Eclipse】當專案 程式一堆 紅色打xx 無法編譯或LIB 載入失敗,請先看 Project Facet有沒有打勾,如果沒有,請把他「打勾勾」

關於 Dynamic Web Project (動態網站)開發設定


左邊你的專案資料夾,按右鍵「內容」,輸入 Project Facet ,選擇 Runimes

【Tomcat ,Java】佈署環境及基本名辭介紹(JRE,JDK)

【Tomcat ,Java】佈署環境及基本名辭介紹(JRE,JDK)

要安裝Tomcat 時,必需先要安裝必要 開發編譯元件(JDK)和執行平台元件(JRE)

Java JRE 全名:Java SE Runtime Environment 8
下載相關網址:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
比如:Tomcat 需要 JRE

Java JDK 全名:Java SE Development Kit 8
下載相關網址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


2018年3月12日 星期一

【Tomcat 8.0.50】config(web.xml, server.xml)...相關設定技巧

C:\apache-tomcat-8.0.50\conf\server.xml

標籤:Connector 底下
 屬性:server  -->header 中顯示 server 資訊  (可以改成 asp.net ) 範例: server="Asp.net"
 屬性:maxThreads -->連線數 預設200

C:\apache-tomcat-8.0.50\conf\web.xml

【Tomcat 8.0.50】安裝、移除 安裝在windows 服務裡面

【Tomcat】安裝、移除  安裝在windows 服務裡面
版本:tomcat 8.0.50

官網說明 網址:http://tomcat.apache.org/tomcat-8.0-doc/windows-service-howto.html#Installing_services

command
安裝
C:\apache-tomcat-8.0.50\bin>service.bat install




command
移除
C:\apache-tomcat-8.0.50\bin>tomcat8 //DS//Tomcat8


【Tomcat】Tomcat 8.0.50 RemoteAddrValve 設定

 Tomcat 8.0.5

org.apache.catalina.valves.RemoteAddrValve

提供兩個地方可以設定 XML
(針對1.舊版Tomcat的尚可設定,未來可能會拿掉)

1.C:\tomcat-install\conf\Catalina\localhost\
如果檔案不存在的話,就新增一個 manager.xml



2.新版:C:\apache-tomcat-8.0.50\webapps\manager\META-INF
context.xml

內地有個地方還蠻新的介紹 網址:https://www.w3cschool.cn/tomcat/zuxi1k90.html
tomcat 官網(Securing Management Applications)
網址:http://tomcat.apache.org/tomcat-8.0-doc/security-howto.html

2018年3月8日 星期四

【Tomcat】tomcat html Response Headers Cache-Control 200 ExpiresFilter jsp

當你遇到 Status Code:200 OK (from disk cache) 就會 GG

為什麼就會 GG ,因為瀏覽器會先讀取 暫存頁面.而不會先向 SERVER 要新的 頁面內容

透過 Tomcat JSP web.xml 裡面有提供 ExpiresFilter 機制就能處理這樣的狀況狀態


ExpiresDefault 代表 所有 MIME  text/plain image/png application/javascript...

若指定哪種類型 MIME
ExpiresByType text/html

以下這行,就會是 mas-age=0
now plus 0 second

以下這行,比對所有 url 網址
/*

若是Status Code:200 狀態
就會在 Response Headers 加上 Cache-Control: max-age=0

若是Status Code:304 狀態
預設會是略過不處理,這可以接受,因為比對 Server 跟 瀏覽端 雙方都相同狀態的意思

若是要在 tomcat log 中記錄的話
就是要到 C:\apache-tomcat-8.0.50\conf\logging.properties  <-- p="">最底下新增一行  org.apache.catalina.filters.ExpiresFilter.level = FINE
醬子就可以了

Tomcat 官網說明
http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#Expires_Filter

完整規範如下 大家可以參考 官網說明



















  <-- class="separator" config="" div="" filter.html="" http:="" org.apache.catalina.filters.expiresfilter.level="FINE" style="clear: both; text-align: center;" tomcat-8.0-doc="" tomcat.apache.org="" tomcat="" xpires_filter="">




2018年3月5日 星期一

2018年2月8日 星期四

【C#】API url parameter 參數 Encode 有趣的規範 cp950

【C#】API  url  parameter 參數 Encode 有趣的規範

web Client parameter 有含 中文 ,請注意 Api Server 系統 是utf8 接還是 big5 接 你的 參數

如果 api server 是  utf8 ,那很好,因為 html url 本身就是 follower utf8 格式

若 API SERVER 是BIG5 接 參數,請注意,
WEB CLIENT 的程式, 參數必需要再轉成 CP950 encode 編碼

如下:
Encoding cp950 = System.Text.Encoding.Default;
cp950 = Encoding.GetEncoding(950);

 string a = HttpUtility.UrlEncode(item.Value, cp950);  <----url big5="" nbsp="" p="">

為何要兩道手序,
因為  C# Encoding 有(utf8、utf16、utf32、ASCII) ,
就是沒有 BIG5格式

透過 Encoding GetEncoding 參數 950 幫我們抓 big5 格式回來..
=.=" 果然是美國人寫的程式...不是說要國際化嗎?

另外 網頁的 encodeURIComponent 字串會轉換成 UTF-8

所以程式接的時候是  HttpUtility UrlDecode(url)

但要再轉發 API 的話 就要看 對方  SERVER (參數)吃什麼  ContenType (utf8 or big5 ...)

以上

【C#】不能 var --->System.Web.HttpUtility.ParseQueryString (NameValueCollection)

【C#】不能 var  --->System.Web.HttpUtility.ParseQueryString (NameValueCollection)

要明確然指定 NameValueCollection

2018年2月6日 星期二

2018年2月1日 星期四

【Windows 指令】taskkill.exe 強制刪除 處理程序 PID


taskkill.exe 強制 刪除 處理程序 PID

C:\WINDOWS\system32\taskkill.exe /F /IM w3wp.exe /T


【C# NameValueCollection】 針對NameValueCollection 做 LINQ

        public static Dictionary ParseQueryString(string queryString)
        {
            System.Collections.Specialized.NameValueCollection nvc = System.Web.HttpUtility.ParseQueryString(queryString);

            var a = from key in nvc.Cast()
                    from value in nvc.GetValues(key)
                    where key != null
                    select new { key, value };

            return a.ToDictionary(pair => pair.key, pair => pair.value); ;
        }

2018年1月24日 星期三

【asp.net C#】在HttpClient的DefaultRequestHeaders上設置Cookie Header

可參考:
http://stackoverflow.com/questions/12373738/how-do-i-set-a-cookie-on-httpclients-httprequestmessage/13287224#13287224

https://d-fens.ch/2016/12/27/howto-set-cookie-header-on-defaultrequestheaders-of-httpclient/

重點兩種

【預設:HttpClientHandler(UseCookies=true)】

HttpClient <--httpclienthandler ookiecontainer="" p="">
cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value"));

【HttpClient <--httpclienthandler p="">
若是:HttpClientHandler(UseCookies=false) 則是手動加入header

httpClient.DefaultRequestHeaders.Add("Cookie", "auth=ArbitrarySessionToken");

2018年1月17日 星期三

【生活分享 】2018-01-13 台北文昌宮 2018年初 點燈 2018 年 禮品

【生活分享 】2018-01-13 台北文昌宮 2018年初 點燈 2018 年 禮品

狀元筆, 福星高皂, 米, 玻璃水壺, 保祐符



【股票分享】中鋼 成交 2018-01-17 成交單位:25.15

【股票分享】中鋼 成交 2018-01-17 成交單位:25.15

成交 25150元
電子手續費 15
交易稅:75   <=> 20150 * 0.003
淨收:25060元

總共雜費:90元 = 75 + 15

【轉編譯】html javaScript 使用到 encodeURIComponent

【轉編譯】html  java 使用到 encodeURIComponent

範例如下:
javascript
原值: http://tw.yahoo.com/
var a =encodeURIComponent('http://tw.yahoo.com/');

a 的編譯後結果 "http%3A%2F%2Ftw.yahoo.com%2F"

如果程式(C#, PHP,jsp, ....xooxxo)要接收「網頁」傳遞過來的值轉成正常的話
以下方式各程式範例

C#
result1 = System.Web.HttpUtility.UrlDecode(html_data);
String result2 = System.Uri.UnescapeDataString(result1);

Jsp
String htmlurl = req.getParameter("a");
htmlurl = java.net.URLDecoder.decode(htmlurl,"UTF-8");


最後說明 encodeURIComponent
主要是會針對特殊符號處理用

W3C 說明:http://www.w3school.com.cn/jsref/jsref_encodeURIComponent.asp
該方法不會對ASCII 字母和數字進行編碼,也不會對這些ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。


其他字符(比如:;/?:@&=+$,# 這些用於分隔URI 組件的標點符號),都是由一個或多個十六進制的轉義序列替換的。

詳細英文說明:
https://blogs.msdn.microsoft.com/yangxind/2006/11/08/dont-use-net-system-uri-unescapedatastring-in-url-decoding/

2018年1月16日 星期二

【Visual Studio 2015】相關下載連結

1.TypeScript for Visual Studio 2015 - 中文(繁體)
https://www.microsoft.com/zh-TW/download/details.aspx?id=48593

版本:2.6.2

File Name:2.6.2-TS-release-dev14update3-20171121.4\TypeScript_Dev14Full.exe

發佈日期:2018/1/12

File Size:10.4 MB


2.Visual Studio 2015的實驗性 ASP.NET Core + Angular模板
https://angular.io/guide/visual-studio-2015

2018年1月15日 星期一

【NodeJS】官網 下載點 及 VS2015 安裝說明 & IIS 設定

FTP
Node js下載點:
https://nodejs.org/dist/
我是下載 v.6.9.5 版本

VS2015 安裝說明
https://blog.josequinto.com/2016/05/04/how-to-configure-visual-studio-2015-integration-with-latest-version-of-node-js-and-npm/#Node-js

IIS 安裝說明
http://www.xiaoyebailong.com/index.php/2016/10/27/67684.htm

other
http://gigamine.blogspot.tw/2017/12/webnodejs-expressangularbootstrapwebsto.html
http://gigamine.blogspot.tw/2017/12/webnodejs-expressangularbootstrapwebsto.html

2018年1月10日 星期三

【Windows Tomcat 8 up】startup.bat 一閃 無執行 JAVA_HOME, JRE_HOME, CATALINA_HOME,


【Windows Tomcat 8 up】startup.bat 一閃 無執行

請閱讀安裝檔 RUNNING

其中有必要條件幾個項目要在電腦設定,

JDK 套件 包含了 JRE

也可以另外下載 JRE 套件

設定:系統內容\進階\環境變數
【使用者變數】
1.新增
變數名稱:CATALINA_HOME
PATH 指定位置:Tomcat 所在主目錄位置
C:\apache-tomcat-8.0.50

2.新增
變數名稱:JAVA_HOME
Path 路徑:C:\Program Files\Java\jdk1.8.0_112
備註:要完整路徑,否則會有 bat 起不來

3.新增 (請注意,若是要指定 jre 版本.就要新增)
變數名稱:JRE_HOME
Path 路徑:C:\Program Files\Java\jre1.8.0_131

JAVA_HOME 或 JRE_HOME 二擇一


【系統變數】
path
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

or 直接指定

C:\Program Files\Java\jdk1.8.0_112\bin;C:\Program Files\Java\jdk1.8.0_112\jre\bin;

查詢變數是否下對

C:\Users\Administrator \ echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_112

C:\Users\Administrator \ echo %Jre_HOME%    <-- p="">C:\Program Files\Java\jre1.8.0_131

C:\Users\Administrator \ echo %CATALINA_HOME%

C:\apache-tomcat-8.0.50


catalina LOG 記錄
有指定 JRE_HOME
只有 JAVA_HOME



範例設定如下:
有指定 JRE_HOME 畫面


測試是否正確成功的最好方式

Tomcat「安裝」服務

cmd 指令:C:\apache-tomcat-8.0.50\bin\service.bat install

就會看到 using java_home 跟jre_home 路徑

額外 問題 java -version 版本不對

連結1:https://blog.csdn.net/yaozhiwei1019/article/details/77774636
連結2:https://hk.saowen.com/a/cecff7b7ca99a4a51fb28f6f30708fea23b6375271520eb975e927cf30a435b7

2018年1月4日 星期四

【css ie 11 v11.0.47 以上 】tab 鍵順序出現問題

【css ie 11 v11.0.47 以上】KB4051034

【問題】

在 href #content 
使用 tab 會出現順序問題


只有ie 11 47 48 49 以上都會有此問題,

因為我Windows Update 只到 ie 11 v46 版,都還正常

chrome 就很正常,firefox 也很正常...就ie v47以上就不正常...IE 真的很特別
2017-11 適用於 Windows 7,x64 架構系統的每月品質彙總套件預覽 (KB4051034)



【解決】
避免問題出現, 還是不關聯在 div 上,直接在 href 上建一個 id=content 就能正常





2017年12月21日 星期四

【表單 Form】填寫超過30 分鐘,未操作,透過AJAX 來觸發使用者行為

【表單 Form】填寫超過30 分鐘,未操作,透過AJAX 來觸發使用者行為
避免 被強制清除Session

$(function () {
    setInterval(function() {
        $.ajax({
            url: "Ping.aspx",
            cache: false
        });
    }, 1800000);
});

2017年12月19日 星期二

【Asp.net C# Dictionary】Dictionary 包 Dictionary 如何 直接new 資料

【Asp.net C# Dictionary】Dictionary 包 Dictionary 如何 直接new 資料

    Dictionary> A =
    new Dictionary>()
    {
        { 1, new Dictionary {{ "Index", "B"}}}
    };

2017年12月14日 星期四

【Windows Service 服務 安裝/移除】指令 InstallUtil vs 指令 sc

【指令:InstallUtil】
指令說明網址:https://docs.microsoft.com/zh-tw/dotnet/framework/tools/installutil-exe-installer-tool
MSDN 關於InstallUtil說明網址 :https://msdn.microsoft.com/zh-tw/library/50614e95(v=vs.110).aspx

註冊服務
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\MyService.exe
or
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe

刪除服務
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\MyService.exe /u
or
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe /u

【指令:sc】
sc create | delete | config 服務名 [參數]
註冊服務
sc create Tomcat binPath= F:\apache-tomcat\bin\startup.bat start= auto
刪除服務(服務名稱)
sc delete MyService


刪除時要先查詢服務名稱
COMMAND 指令
services.msc

2017年11月30日 星期四

【Jquery Validate and Unobtrusive )】有趣的 驗證機制 發生 'settings' of undefined

有趣的 驗證機制 發生 'settings' of undefined

在 ASP.MVC 上 頁面提供 驗證 輸入機制

Jquery.Validate (Jquery Validate)

Jquery.Validate.Unobtrusive (Jquery Validate Unobtrusive)

HTML 屬性中  有   data-val="true" 就會去啟用 Jquery.Validate.Unobtrusive  機制
Jquery.Validate.Unobtrusive取代掉Jquery.Vlidate error 錯誤訊息顯示位置

會相對應對照 error 訊息 如下
data-valmsg-for="Name" data-valmsg-replace="true"


並且也會對應到 錯誤訊息總覽(data-valmsg-summary) ,如果你頁面有的話 如下:
【無法送出原因如下】



如果沒有 data-val="true"
會變成 Jquery.Validate 處理

就會直接在你的 驗證INPUT 下新增一個 error label 錯誤訊息

如果你頁面上沒有任 屬性有  required

但你另在 JavaScript 上新增

$("#Name").rules('add', {
                required: true,
                messages:{
                    filecheckvalidation: "身分證-正面(必填)"
                }
            });


就會發生 錯誤 Jquery.Validate.js 錯誤 如下:

jquery.validate.js:147 Uncaught TypeError: Cannot read property 'settings' of undefined
    at n.fn.init.rules (jquery.validate.js:147)
    at HTMLDocument. (Index:518)
    at i (jquery-1.12.4.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-1.12.4.min.js:2)
    at Function.ready (jquery-1.12.4.min.js:2)
    at HTMLDocument.K (jquery-1.12.4.min.js:2)


因為沒你有啟用 Jquery.validate.js init 機制

必需在 javascript 中先提供 以下指令才會啟用

$("#MyForm").validate(); <--- id="" span="">

2017年11月27日 星期一

【ASP.NET MVC 5】Checkbox 多選 Required 問題

【ASP.NET MVC 5】Checkbox 多選 Required 問題

可參考以下文章:
http://blog.darkthread.net/post-2011-09-02-jquery-validate-ubnotrusive-checkbox-required.aspx

http://blog.degree.no/2012/03/validation-of-required-checkbox-in-asp-net-mvc/

http://itmeze.com/2010/12/06/checkbox-has-to-be-checked-with-unobtrusive-jquery-validation-and-asp-net-mvc-3

我的做法
單選就 radiobutton
複選就 checkbox 搭配 ValidationAttribute 使用
但我不使用 boolearn  model 搭配 List

至於單選的 CheckBox 呢???嘿嘿嘿

SERVER 跟 CLIENT 都新增

【SERVER   擴充】
public class CheckBoxRequiredAttribute : ValidationAttribute, IClientValidatable
    {

        public CheckBoxRequiredAttribute()
        {

        }


        public override bool IsValid(object value)
        {
            bool result = false;
            if (value == null)
                return result;

            List r = value as List;
            if (r != null && r.Count > 0)
                result = true;

            return result;
        }

        public IEnumerable GetClientValidationRules(
            ModelMetadata metadata,
            ControllerContext context)
        {
            var rule = new ModelClientValidationRule()
            {
                ValidationType = "checkboxrequired",
                ErrorMessage = String.Format("{0} 欄位是必要項。", metadata.DisplayName)
            };

            yield return rule;
        }

    }

【CLIENT 擴充】
$.validator.unobtrusive.adapters.add("checkboxrequired", function (options) {


2017年11月6日 星期一

【ASP.NET ASP.MVC】Captcha 文字驗證 + Microsoft.Speech SpeechSynthesizer 語音辨識(文字轉語音服務) for Web Application

【ASP.NET ASP.MVC】Microsoft.Speech 語音辨識 文字轉語音

一、要使用 MVC Captcha 

就要用到 https://captchamvc.codeplex.com/

去下載 整包 mvc3、mvc4、mvc5   source code 加到Web專案..

1.調整:Interface\IStorageProvider.cs
新增:ICaptchaValue Value(string token, TokenType tokenType);

2.調整:Infrastructure\SessionStorageProvider.cs
去COPY  GetValue 複製一個  public virtual ICaptchaValue Value(string token, TokenType tokenType)

 備註 掉//ValidateKeys.Remove(token);

3.調整:CookieStorageProvider
去COPY  GetValue 複製一個 改叫 Value

然後引用專案,就可以使用最基本的 Captcha ,要怎麼改隨你怎麼改,可以省點工

二、Microsoft.Speech 語音辨識


1.請先參照該 文章安裝好軟體跟設定檔 如下
網址:http://terryhung.pixnet.net/blog/post/34657057-%E8%AE%93-windows-7-%E5%B0%88%E6%A5%AD%E7%89%88%E3%80%8C%E6%96%87%E5%AD%97%E8%BD%89%E6%8F%9B%E8%AA%9E%E9%9F%B3%E3%80%8D%E5%8F%AF%E4%BB%A5%E9%81%B8%E6%93%87

安裝軟體共有:
01_SpeechPlatformRuntime_x86.msi
02_SpeechPlatformRuntime_x64.msi
03_MSSpeech_TTS_zh-TW_HanHan.msi  <--- 1.="" p="">04_Patch_x86.reg
05_Patch_x64.reg

文章外額外要再安裝 (請自行Google =>做人不能太懶)
06.MicrosoftSpeechPlatformSDK_X64.msi   <--- br="" erver=""> 07.MicrosoftSpeechPlatformSDK_x86.msi   <--- br="" erver=""> 
<--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">
<--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">佛心下載: https://www.microsoft.com/en-us/download/details.aspx?id=27226
<--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">
2.引用 Microsoft.Speech  (請勿使用內建的:System.Speech )
路徑:C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll
備註:該路徑是因為你裝置了 MicrosoftSpeechPlatformSDK_x86
圖示: Microsoft.Speech 引用


3.程式碼
我就直接貼圖..做人不能太懶
圖示: Asp.net MVC 使用的程式碼 SpeechSynthesizer
備註:可以不用Foreach 自行可以用linq 直接找到也比較簡潔
Show 一手 如下:
                        if (synth != null)
                        {
                            Lang = synth.GetInstalledVoices()
                            .Where(o => o.VoiceInfo.Name.Contains("TW"))
                            .Select(o=>o.VoiceInfo.Name).FirstOrDefault();
                        }
<--- 1.="" p="">
<--- 1.="" p="">最後:
<--- 1.="" p="">1.IIS 不用設定..找了太多冤路....
<--- 1.="" p="">2.Speech 有限制系統 
<--- 1.="" p=""> 請參考:https://msdn.microsoft.com/en-us/library/hh362873%28v=office.14%29.aspx#Software Requirements
3.我的Web 是架在 Windows Server 2008 R2
4.不會寫view 的人,可以參考這篇:https://forums.asp.net/t/2127539.aspx?How+can+I+play+a+wave+file+in+mvc
怕文章GG 我還是貼給圖給大家 如下:
5.html 有很多規格播放 可參考這篇文章,寫的很不錯:https://dotblogs.com.tw/knightzone/2013/11/07/127250