20180502

DataGrip連接Postgres時,時間顯示異常 (須調整時區)

前言

JetBrains的DataGrip為可連多種資料庫的IDE。

但是在連接Postgres時,則發現顯示出的時間,較實際的時間晚了8小時。

我直覺就是JDBC Client設定時區的問題。

查了一下,果然如此。


解法

1. 開啟Postgres的DataSource

2. 在「VM options:」處輸入 (也可輸入UTC,如果不要GMT的話) (時區增減請自己調整)→

-Duser.timezone=GMT+8

image

收工~~


參考

JetBrains FAQ: https://intellij-support.jetbrains.com/hc/en-us/articles/115000877044-DataGrip-FAQ

20180429

HowTos: 在Windows下如何使用SSH Key以利用PuTTY連接至GitHub

步驟

第1步驟分1.0. Console版跟1.1. PuTTYgen版,請擇一進行即可

0. 安裝TortoiseGit

1.0. 使用Console產生SSH Key

請打開git bash (沒有的話去git for Windows安裝)

輸入以下指令 (x@x.com請改換自己的GitHub帳號)

ssh-keygen –t rsa –b 4096 “x@x.com


產生Key後 (會儲存在C:\Users\使用者名稱下),請指定儲存的檔案名稱,及密碼

image


使用PuTTYgen轉換Key,選擇「Conversions / Import Key」,並選擇剛剛產生的Key檔

image


請輸入Key的密碼,並記得儲存「私鑰 (Private Key)」和「公鑰 (Public Key)」

image


叫出Pegeant,選擇「Add Key」,並選擇剛剛的私鑰 (Private Key)

image


接下來把公鑰 (Public Key)匯出給GitHub

用git bash將公鑰存至剪貼簿  (檔名請自己置換)

clip < ~/.ssh/私鑰檔.ppk

複製好後,請接第2步。



1.1. 使用PuTTYgen產生SSH Key,請開啟PuTTYgen,並確認使用「RSA」及「4096 bits」後,點選「Generate」按鈕


image


再來請利用滑鼠在紅框的位置,隨意亂拉,以建立隨機的Key (建議可以用滑鼠寫名字或畫圖之類的)

image


Key產生後,請輸入Key的密碼,並記得儲存「私鑰 (Private Key)」和「公鑰 (Public Key)」

image


叫出Pegeant,選擇「Add Key」,並選擇剛剛的私鑰 (Private Key)

image


再來請複製公鑰 (Public Key)的值,以利後續至GitHub匯入SSH Key。

image

複製好後,請接第2步。



2. 登入GitHub,

登入後選擇「Settings」

image


選擇「SSH and GPG keys」,在SSH keys選擇「New SSH Keys」 (若已經匯入過,則選「Add SSH Keys」)

image


輸入此Key的Title (建議為電腦名稱,或其他可供辨識的名字)

並將剛剛複製的Key輸入至下方文字框

image

成功後,即可利用PuTTY測試是否能順利連上GitHub


3. 安裝git for Windows

確認使用Plink

image


確認系統環境變數是否已加入「GIT_HOME」、「GIT_SSH」

image


4. 設定TortoiseGit各專案的Remote,選擇剛剛的「私鑰 (Private Key)」

image

至此即可利用TortoiseGit成功Push, Pull


5. 利用PuTTY測試是否能連上GitHub,並且Push, Pull不用再輸入密碼

輸入Host: git@github.com

image

20180406

[X-Wing Special Edition] 如何備份或還原存檔

解答

玩家資料檔在「\Steam\steamapps\common\STAR WARS X-Wing\remastered\*.plt」,其中*號為您命名的玩家名稱。


所以只要備份或還原此檔即可。


使用的路徑

\Steam\steamapps\common\"STAR WARS X-Wing"\remastered\ZAK.PLT  → 這是遊戲目前使用的玩家資料檔

\OneDrive\Zak\ACG\"X-Wing Remasterd"\ZAK.PLT → 這是您備份或還原使用的玩家資料檔

下面請依據個人喜好修改路徑


您可以建立二個bat檔 (Windows環境)

備份 (Bakup X-Wing.bat)

xcopy \Steam\steamapps\common\"STAR WARS X-Wing"\remastered\ZAK.PLT \OneDrive\Zak\ACG\"X-Wing Remasterd"\ /Y


還原 (Restore X-Wing.bat)

xcopy d:\OneDrive\Zak\ACG\"X-Wing Remasterd"\ZAK.PLT \Steam\steamapps\common\"STAR WARS X-Wing"\remastered\ /Y


切記每次戰役成功都要記錄一下,誰知道下次戰役能不能活著回來呢?



簡述

喂喂喂,我很久沒玩X-Wing,一不小心任務失敗被Darth Vader抓去拷打了,怎麼辦,我完美的戰役紀錄破功了。


image




沒關係,X-Wing是很古老的遊戲,沒有雲端備份,不怕救不回來,只要我們備份好完美的玩家資料檔就可以了。


詳見上面的解答區。

[X-Wing Special Edition] 操作手冊在哪兒?

解答

在Steam遊戲資料夾下「\Steam\steamapps\common\STAR WARS X-Wing\remastered\Manual.pdf



簡述

X-Wing這款遊戲是我小時候玩過的經典遊戲之一。日前在Steam上找到了它,趁打折的時候購入了整套。


但是沒有操作手冊啊…


找了一下討論區,原來在安裝資料夾下啊 (原版的我也還在就是了…)

20180305

輕輕鬆鬆學習Bootstrap v-4.0 - Lesson 2: Container Class

Container是Bootstrap的主要容器類別,它必須包住要呈現的網頁內容。

Container分為二種

1. 依裝置可視範圍來決定寬度的RWD Container
將<div class=”container”></div>加入原有的Code

image


將會呈現如下的版面

image



2. 填滿所有可視範圍的Container

將<div class=”container-fluid”></div>加入原有的Code

image


將會呈現如下的版面

image



各位可以很明顯地看出二者之間的差異,要使用哪種端看最後的應用而定。

20180301

輕輕鬆鬆學習Bootstrap v-4.0 - Lesson 1: 取得Bootstrap,並建立第一個頁面

前言

Bootstrap是由Twitter所開發的網頁前端架構,目前最新的版本到達了4.0。本教程將以最簡單、最直接的方式,教導各位學習Bootstrap。

取得Bootstrap

1. 首先連上Bootstrap的網站http://getbootstrap.com。並點擊[Download]進入下載頁面

image



2. MaxCDN很佛心地提供了編譯後的Bootstrap供大家使用,如果各位只是學習用的話,可以利用BootstrapCDN直接嵌入自己的網頁中,方便學習。


在這邊我們會直接使用BootstrapCDN


(若是Production環境,不願意使用他人提供的CDN或是自己已有CDN服務,可以下載「Compiled CSS and JS」

image



3. 用自己喜歡的文字編輯器開啟一個新檔案,名叫「lesson1.html」,並輸入以下文字

image



4. 再來加入BootstrapCDN提供的Bootstrap的CSS, JavaScript (順序不可調換)


懶得打那麼複雜,也可以從第2步的網頁上複製


CSS要放在<head>標籤中


JS則是放在<body>標籤的最下方,Popper.js, jQuery.js必須放在bootstrap.js前方

image



5. Bootstrap必備標籤

image



6. 在頁面中加個按鈕試試

image



7. 打開「lesson1.html」。恭喜您,您的第一個Bootstrap頁面誕生了

image

20170123

Visual Studio 2015使用SQLite及Entity Framework 6 - 入門篇 - 2

前言

SQLite是一輕量化的資料庫引擎,主要用於程式中的基礎記錄。

Entity Framework 6則是由Microsoft以ADO.NET為基礎而發展出的O/R Mapping架構。

本篇將簡單介紹如何結合二者開發應用程式。

第1篇中,我們簡介了如何安裝SQLite的NuGet套件。接下來會示範如何開發。

 

介面設計

接下來我們可以利用Data Sources來取得ORM的Class,並以之設計簡易的介面

首先打開Data Sources的工具視窗,請選擇「View / Other Windows / Data Sources」

(或是按下[Shift] + [Alt] + [D])

image

 

點選Data Sources工具視窗中的「Add New Data Source」

image

 

在Data Source Type中選擇「Object」以建立與資料庫連結的控制項

image

 

接下來選擇剛建立的Customer Class (如果沒有看到的話,就是第1步作完時沒有先Build一下,所以物件沒有出來)

image

 

按下「Finish」後,會在Data Sources視窗中出現我們選擇的Customer物件

image

 

接下來新增一WinForm名為「Form1」,準備來設計UI介面

長寬先設為640, 480

image

 

重點: 先在Form1.cs的程式碼中加入參考

using System.Data.Entity;

image

這句將會影響讀取資料庫的Load()函式會否出現。

(因為Load是從System.Data.Entity來的Extension Method)

 

點擊Data Sources中的Customer物件,直接將之拉到Form1中

image

 

拉進去後,將會自動產生對應的控制項

如果拉的是物件,則會產生DataGrid

如果拉的是屬性,則會產生Label + TextBox

請拉入剩下的屬性,設計成如下樣式

image

 

各位可以注意到,拉進Class後,會自動加入customerBindingSource

image

 

於此我們再手動從Toolbox中加入一個BindingNavigator,取名為「customerBindingNavigator」

並把其屬性中的BindingSource設為「customerBindingSource」

image

 

設計完介面後,大概會長得像下面一樣

image

 

再來點擊Form1的空白處,增加「Form_Load」的事件,並填入下列程式碼

image

 

再來可以先Build一下,Run一下程式

點擊「Add New」並輸入一些假資料

image

 

不論你是在DataGrid中輸入,或是在下面的TextBox輸入,因為有BindingSource的關係,你可以看到資料會同步顯示

image

 

但是重新啟動應用程式之後,疑,資料不見了~~~

因為我們未把異動的部份存入資料庫,現在來加個儲存按鈕的設定

點擊新增一個按鈕如下圖

image

 

將新增的按鈕命名為「btnSave」,並將Image屬性設為一張儲存按鈕的圖片 (自己找)

image

 

再來在儲存按鈕上點二下以建立它的事件

image

 

大功告成,最後畫面會長得像這樣

image

 

有幾點小地方要注意:

1. 因為Id在Model Designer中是設為StoreGeneratedPattern: Identity,所以我們新增時,Id部份可不輸,或是亂輸。因為DB中Id是設為自動增量,它會自動增量,不會理我們輸入的數

2. 每一個文字框輸入後,都要Tab一下換到別的控制項,以免BindingSource沒吃到我們輸入的值,造成產生NULL值,而我們之前設計的Customer Table又不接受NULL值,引發Exception

3. 最後一點,特別重要。本篇之程式碼只是範例,實際使用會檢查輸入值之類的檢核,以及加入資料庫異常的處理,大家使用程式碼時要特別小心

 

 

總結

本篇介紹了如何使用簡單的方式,建立SQLite資料庫,並利用EF6來存取它。後續有我會再分享比較進階的東西

20170122

以SQLite Manager管理SQLite

前言

SQLite是一輕量級的嵌入式資料庫,一般用於應用程式內部使用。

但是雖然它很好用,管理用的Client端卻很缺乏。

如果不想花錢買Navicat的話,就要手動自己寫了 (有沒有這麼慘)。

不過之前逛到一篇網站,介紹了一個好用的工具,SQLite Manager,解決了我多年來的麻煩。

以下介紹這個工具的用法給各位。

 

 

安裝

SQLite Manager的網址: https://goo.gl/9yyNsH。這邊是原始碼,安裝方式見下面敘述。

1. 首先要先安裝Firefox,因為SQLite Manager是Firefox的Addons (此部份略過)

2. 在Firefox中連結至「about:addons」,點選「更多附加元件」

image

 

3. 或是直接連結至https://goo.gl/ff65。搜尋「sqlite」,並點擊「SQLite Manager」

image

 

4. 直接點擊「新增至Firefox」,即可安裝至Firefox

image

 

5. 安裝完成後。我們可以從「工具 / SQLite Manager」來開啟這個工具

image

 

6. 剛開啟不會開啟任何資料庫 (若曾開啟過的話,會詢問是否開啟之前的資料庫)

我們可以點選「New Database」來建立新的SQLite資料庫檔案

image

 

7. 直接輸入資料庫檔案名稱即可,sqlite的附檔名會自動加上

image

 

8. 建完之後,可以右點Tables以建立新的Table

image

 

9. 接下來請依螢幕上的範例建立一張顧客基本資料表 (Customer)

image

須注意Id此欄位,我們勾選了自動增量 (Autoinc)

 

SQLite Manager會自動產生CREATE TABLE相關語法

image

 

產生完成後的Table長得像這樣

image

因為我們有設自動增量 (Autoinc),所以SQLite Manager自動幫我們建了一個Sequence

 

再來點選Customer資料表中的「Add」,增加一筆測試用記錄

image

 

輸入以下資料 (可依需求更改)

image

 

這樣我們就有一筆測試用資料在資料庫中了

image

 

 

總結

以上就是SQLite Manager使用方法簡述,怎麼樣,是不是簡化了很多功呢?

重點是免費的哦。