Friday, December 01, 2017

[閃電] 拼圖

硯第一次獨自拚完這 80 片拼圖,是在 K 醫院住院時,花一個小時完成,1124 開始進行飲食控制,有很明顯感覺到整個人穩定很多,晚上只花 20 分鐘完成,且全程都很專注在拼圖上,飲食控制算是有個好的開始,^^

Untitled

Friday, September 22, 2017

[git] detached Head

上 git 課程的內容,主要是說明 Detached Head 如何發生和修正

此為預設 git 線圖

[git] detach Head-1

對 Commit G 進行 git checkout,從下圖就知道,Detached Head 已經產生啦,該狀態是不在任何 branch 上的喔,應該建議應該下 git checkout -b BranchName 來建立 branch,讓該 commit 有所屬

[git] detach Head-2

假設使用者忽略上圖訊息,就直接寫 Code 且又 commit ,commit 名稱為 DetactHeadCommit

[git] detach Head-3

透過 TortoiseGit 來觀察線圖變化

[git] detach Head-4

假設在 Detacted Head 上完成,準備要切回 master 上來進行合併,切回 master 當下會有下面訊提醒,遺留一個 commit,要建立一個 branch 來保留它喔

[git] detach Head-5

利用 TortoiseGit 來觀察線圖,發現 DetactHeadCommit 不在線圖上啦

[git] detach Head-6

此時利用 git reflog 指令來找出 DetachHeadCommit 的 SHA1

[git] detach Head-7

利用 git checkout -b efa879 來讓 DetactHeadCommit 有所屬 branch

[git] detach Head-8

再利用 TotoiseGit 來顯示該 branch,就會看見 efea987 的 Parent Commit 是 Commit G 囉,DetactHeadCommit 並沒有消失不見,Code 還在

[git] detach Head-9

而 ToroiseGit 在這部分有防呆,當要 git checkout commit 時,option 內會預設要建立 branch

[git] detach Head-10

Sunday, September 10, 2017

[git] 檔案刪除衝突

7天學會Git版本控制 書籍的解說範例,以往看到的解決衝突例子,都是 Code 同行更改來說明,這次看到是檔案被刪除,就想 try 一下,在 VSTS 上刪除該檔案,在 VS 上修改該檔案並進行同步

同步會發生衝突確認

[git] 檔案刪除衝突-1

進行衝突解決判斷

[git] 檔案刪除衝突-2

書籍內容說明
  • 保留檔案,利用 git add 把檔案再加入
  • 刪除檔案,利用 git rm 把檔案移除
在 Team Explore 內,只要點選保留檔案或刪除就可以做到囉

Sunday, September 03, 2017

[git] 格式化 git log 查詢


內容中,都有介紹到格式化 git log 的設定,筆記一下
  • 原本 git log 結果
[git] 格式化 git log 查詢-1
  • 7天學會Git版本控制內容介紹
git config --global alias.lg "log --graph --decorate --pretty=oneline --abbrev-commit"
[git] 格式化 git log 查詢-2
  • SITCON Workshop - Git 版本控制入門課程介紹
git config --global alias.lg "log --color --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
[git] 格式化 git log 查詢-3

Tuesday, August 29, 2017

[X.Form] ListView - 更新資料

根據
的筆記,重點簡單記就是,ListView 資料來源有變更時,要透過 ObservableCollection 來通知,這樣 ListView 操作時才不會拋出 Exception

Model
namespace ListViewPractice
{
    public class XF2_Product
    {
        public string Name { get; set; }

        public override string ToString()
        {
            return Name;
        }

        public static List<XF2_Product> GetData()
        {
            return new List<XF2_Product>
            {
                new XF2_Product() { Name = "楓葉" } ,
                new XF2_Product() { Name = "樹" } ,
                new XF2_Product() { Name = "花" } ,
                new XF2_Product() { Name = "煙火" } ,
                new XF2_Product() { Name = "夜景" }
            };
        }
    }
}
ViewModel
using System.ComponentModel;
using System.Windows.Input;
using Xamarin.Forms;
// ObservableCollection 所在的 namespace
using System.Collections.ObjectModel;

namespace ListViewPractice
{
    public class XF2_ViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        
         // 引發錯誤版本
        public List<XF2_Product> Source { get; set; }

        public ICommand CmdInsert
        {
            get
            {
                return new Command(() => Source.Add(new XF2_Product() { Name = "植物" }));
            }
        }

        // 可更新版本
        public ObservableCollection<XF2_Product> UpdatableSource { get; set; }

        public ICommand CmdUpdatableInsert
        {
            get
            {
                return new Command(() => UpdatableSource.Add(new XF2_Product() { Name = "植物" }));
            }
        }

        public XF2_ViewModel()
        {
            // 引發錯誤版本
            Source = XF2_Product.GetData();

            // 可更新版本
            ObservableCollection<XF2_Product> ProdList = new ObservableCollection<XF2_Product>();
            foreach (var item in XF2_Product.GetData())
            {
                ProdList.Add(item);
            }
            UpdatableSource = ProdList;
        }
    }
}