發表文章

目前顯示的是 2018的文章

Jenkins - Android安裝建置環境

圖片
最近開發第二個Android專案,第一個手動建置混過了,第二個再這樣就太混了=.=,還是得乖乖上Jenkins去建置才對。以下為安裝及初步成功建置的記錄 JAVA SDK (Koltin需要) Java SE Development Kit 8u191 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html jdk-8u191-windows-x64.exe Android SDK Tools 安裝 SDK Tools https://developer.android.com/studio/ sdk-tools-windows-4333796.zip 解壓到:C:\AndroidSdk 使用command 安裝所需要的plaform 切換路徑:C:\AndroidSdk\tools\bin sdkmanager "platforms;android-20" Jenkins 設定 Global Tool Configuration/ 安裝Gradle Configure / 設定 Android Home SDK位置 此位置為上方Android SDK Tool解壓縮的位置 建置apk:Invoke Grdle Scrpt 只建置 Release clean assembleRelease  加上Flavor=assemblePrdRelease  or assembleQasRelease  使用Pipleine  stage ('Build') { steps { bat 'gradlew clean assembleRelease'   } } 安裝外掛:File Operation 複製apk到部署主機 建置錯誤排解 Lint found errors in the project; aborting build. 解決方式:在grdle設定加入 lint

git SSH學習

圖片
大部份的Git Server都有提供SSH Clone(透過命令Clone)專案的方式,先決條件是本地要先建位好SSH Key,以下為使用github帳號建立 如何建立SSH 1.使用Git bash ssh-keygen -t rsa -b 4096 -C "kimxinfo@gmail.com" 此步驟會要求你輸入2次密碼,保持空值也可以 (目前使用kimxxx) 另外要求你儲存的位置:保持空值的話,預設:C:\Users\Kim\.ssh\id_rsa 2.加入代理 eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa 將SSH Key 加到Github上 1.將產生的key複製到剪貼簿 clip < ~/.ssh/id_rsa.pub 2.新增SSH到Github https://github.com/settings/keys 2.1 若用的Azure DevOps(VSO),到個人帳號/Security/SSH public keys 測試用SSH Clone的方式 到Github任一個Public的專案,在右方的Clone or download切換到SSH 開啟Command,輸入如下,即可以將程式Clone回來 git clone  git@github.com:kimx/SqlLiteLab.git 若你的key有輸入密碼,這裡會提示你要輸入 多組SSH Key 應用情境,例如:Github及AzureOps各建立了一組,當你在Clone時預設會用第一個建立的id_rsa,若要用對應不同的SSH Key,參考如下: 第一個為github.com,第二個則是AzureOps Host github.com     HostName github.com     User kimxinfo@gmail.com     IdentityFile ~/.ssh/id_rsa      Host ssh.dev.azure.com     HostName ssh.dev.azure.com  

Jenkins - AzureDevOps簽入後觸發工作-git

圖片
闗於在Azure DevOps簽入即觸發建置,之前有寫過一篇是使用TFS的方式。最近公司要改成使用git的方式,所以再來演練記錄一下。 Azure DevOps設定 1.Clone repository 取得https的網址 2.建立Personal Access Token 此Token為Jenkins checkout 所使用 3.新增Service hook-簽入及建置工作 Project Settings>Service hooks  選擇要Trigger的Repository及Branch 這邊的User Name 及API Token 使用的是在Jenkins上建立的 ps:Integration Level 要選 Build-in Jenkins API,這應該是自架Jenkins的選項 Jenkins設定 原始檔控制,選擇git並輸入網址及加入剛建立的git Credentials的帳號密碼 參考來源 https://docs.microsoft.com/en-us/azure/devops/service-hooks/services/jenkins?view=vsts

將舊版 .NET Framework 應用程式移轉至 Windows 容器

圖片
昨天去Azure Tech day聽完課,回來試玩一下,將現有的.Net framework專案移轉到Docker. Setup 1.安裝Dock for Window https://www.docker.com/products/docker-desktop 2.切換完後,在功能圖示按右換,切換至Window Container 移轉至Window Container 在目標專案加入Container支援 加入後即可看到產生的Dockfile及Dock compose 按F5測試後,原本IIS Express 的localhost,變成Run在Docker上的ip  http://172.25.228.209/

Blazor Hello world

圖片
同事分享了關於ASP.NET Blazor實作Web Assembly相關的文章,今天試著玩看看。嗯..新手入門,當然是Hello world了..。 如何安裝 在擴充功能搜尋Blazor,安裝ASP.NET Core Blazor Language Service,看到套件名字就知道了,要.Net Core才可以喔~~ 選擇專案樣板 安裝後,在新增專案時會多出三個樣板 最基本的Client Side的專案,選擇這個,基本上就可以執行,但我們通常會切分Client及後端取資料的API,所以不會選這個。 ServerAPI+Shared(共用專案)+Client Side,通常會選這個,這個是標準的Server API與Client架構。 ps::第1,2的樣板會將dll載入前端,並透過blazor.webassembly.js Render Html。 ServerAPI+Shared(共用專案)+Server Side,這個跟第2點很像,差在它不會下載dll到前端,而Html是逶過blazor.server.js跟Server的溝通取得,若Server此時無法回應,那當你在切換Url時會無法Render。 Hello World 本範例選擇第二個樣板,會建立三個專案如下所示: Client : 前端View Server :  後端Web API,此為主要執行的專案 Shared : 共用專案 例如:Model 測試網頁,只要執行Server就可看到網頁了,此專案會將Client的View載入來顯示。 關於後端API呼叫 預設Server專案會有一個SampleDataController,示範讓Client取得資料顯示 SampleDataController.cs Client View叫用API 以上.....都是預設產生的,一行程式都沒寫XD 相關參考 https://koukia.ca/blazor-spa-framework-on-net-via-webassembly-b7a0046e7f21 https://www.slideshare.net/WillHuan

VS2017.15.8.4 錯誤修正

圖片
最近一直不太敢安裝Vs2017的更新,尤其是跳版號的,每次裝都有問題,這次要從15.7.x升上15.8.4,安裝後,果然不出所料...專案全部無法載入.. 解決方式 根據訊息到開發論壇找到了解答如下: 1.使用管理者權限打開Developer Command 2.輸入以下的命令列 gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Framework.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Engine.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Conversion.Core.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll" 完成後,需重新打開方案才會正常載入。 參

SQL Server傳遞資料集到預存程序

今天同事提到他將資料集用參數的方式丟到預存程序裡面,大致的作法如下: 1.資料庫宣告資料表型別 CREATE TYPE dbo . USER_TABLE_TYPE  AS TABLE (        USER_NO VARCHAR ( 8 ) ) 2.C#宣告一個DataTable及參數    var table = new DataTable();             table.Columns.Add( new DataColumn( "USER_NO" , System.Type.GetType( "System.String" )));             table.Rows.Add(table.NewRow());             table.Rows[0][ "USER_NO" ] = "Abc" ;             var par = new SqlParameter             {                 ParameterName = "userTable" ,                 Value = table,                 SqlDbType = SqlDbType.Structured,                 TypeName = "dbo.USER_TABLE_TYPE"             }; 3.預存程序參數宣告 CREATE PROCEDURE dbo . GetUsers        @userTable USER_TABLE_TYPE  READONLY AS BEGIN         SELECT * FROM @userTable END 使用JSON 若嫌上面的作法比較麻煩的話,其實可以考慮使用JSON的方式傳入,不過缺點是不支援強型別及效能會慢一點。以下為個人測試JSON在SQL的一些操作 物件陣列查詢 --宣告Object

IIS 設定只允許特定IP進入

圖片
公司有兩台Web Server,一台對外,一台對內,現在要合併在一起,。預設網站將針對特定IP開放,而某幾個網站則對外完全開放。 如何使用  1.新增功能- IP and Domain Restriction 安裝後,在IIS Root或各網站下可以看到功能圖示 2. 設定IIS Root的存取從Allow改成Deny 3.IIS Root針對特定IP或範圍打開,本例的Mask設為255.255.255.0 代表著192.168.2.0~255可以存取 4.將特定網站對外開放 由於在第2點的IIS Root已設為deny,所有網站會繼承這個設定,而子網站自行修改值的話,則會以子網站為主,這樣就達到預設是deny,而部份是Allow 所有的設定會儲存在IIS的組態內 %windir%\System32\inetsrv\config\applicationHost.config 上述的設定操作,也可以透過Power Shell 執行 $value = @{allowed = "true" ;ipAddress = "192.168.0.1" ;subnetMask = "255.255.255.0" } #1.Setting Root Site as deny Set-WebConfigurationProperty -Filter /system.webserver/security/ipsecurity -Name allowUnlisted -Value $false #1.1 Setting Root Site denyAction as NotFound Set-WebConfigurationProperty -Filter /system.webserver/security/ipsecurity -Name denyAction -Value 'NotFound' #2.Root Site add Allow Ip add-webconfiguration /system.webServer/s

Jenkins- PowerShell 引用共用模組

圖片
在Jenkins上的工作,有一段Power Shell的Script會被多次引用,例: 向資料庫取得DataTable的共用方法。 若分別寫在多個Job上,日後會變得難以維護。針對此問題,找到了一個外掛可以解決。 安裝方式 1.安裝外掛-Managed Scripts 2.管理Jenkins的畫面,進入Managed files的設定連結 3.新增Script Config Name:此為使用時的識別名稱。 Content:執行的Script 使用方式 1.引用剛加入的config,Target:將config檔,輸出到工作目錄 2.執行Power Shell Import-Module 剛輸出到工作目錄的共用檔案,並呼叫裡面的Function,來執行SQL 取得筆數 參考來源 Managed Script Plugin https://wiki.jenkins.io/display/JENKINS/Managed+Script+Plugin Power Shell Sql Query http://mattslay.com/sql-server-queries-using-powershell-lesson-1/

VS2017-建置錯誤-FindDependenciesOfExternallyResolvedReferences

圖片
最近的VS2017只要安裝完更新後,在建置時就會出現如下訊息: 版本資訊:Visual Studio 2017 Enterprise 15.7.4 (從15.6.X開始就存在此問題) 解決方式 到討論區尋求答案,得到的暫時處理措施如下: 打開檔案 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets 找到如下紅框,將它移除即可 參考來源 https://developercommunity.visualstudio.com/content/problem/208668/the-finddependenciesofexternallyresolvedreferences.html

Console程式執行Async非同步方法

圖片
今天用主控台應用程式,測試一個非同步方法,如下程式, 建置時會出現錯誤 解決方法 修改專案的建置設定,改成7.1以上(含)的版本 參考來源 https://stackoverflow.com/questions/9208921/cant-specify-the-async-modifier-on-the-main-method-of-a-console-app

VS2017讓其他電腦連線到本機的IISExpress

圖片
IISExpress預設只能透過localhost:port連線,想讓其他電腦連進來的話,須更改方案目錄下的applicationhost.config,路徑 方案/.vs/config/ applicationhost.config 打開applicationhost.config,找到bindings區段 ' 將"*:{port}:localhost" 的 localhost 移除,變成 " *:{port}: " Ps:設定完,記得將IIS Express重開 測試結果 本機測試,輸入本機IP http://192.168.2.50:1933 若外部還是 不能連線 ,要將防火牆的關閉或將 port(1933)允許 。

第一次開發Android遇到的問題與解決

圖片
因工作需求,第一次開發Android App是要實際使用的,不再是Hello World來玩玩。以下為依需求遇到的狀況與解決方法及連結。 Q:開發工具 A:Android Studio https://developer.android.com/studio/index.html Ps:要先安裝JAVA環境-JDK Q:相片權限已設定,但還是不能拍照? A:Android 6.0之後,在AndroidManifest.xml加入權限設定後,程式也已需要配合,再詢問一次。 https://stackoverflow.com/questions/34410389/how-to-get-permission-result-callback-in-dialogfragment Q:相機拍照路徑儲存問題? A:Android 7.0之後,要使用FileProvider https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en ps:遇到在Android 4.4使用FileProvider會錯,改回原本方式 takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile (photoFile)); Q: 如何透過Url啟動App https://www.jianshu.com/p/7d90a6cfb5f3 https://blog.csdn.net/sd1987112    2/article/details/77894861 Q: Upload File https://www.coderefer.com/android-upload-file-to-server/ https://blog.morizyun.com/blog/android-httpurlconnection-post-multipart/ Q:Web API  Post Json https://stackoverflow.com/questions/42767249/android-po