2023年8月16日 星期三

git 更改歷史節點內容的方式 .gitignore filter-branch filter-repo

 git 時候, 有時.gitignore 新增規則跳過重新走過 rm -r 項目, 重新 add . > commit -m "name" > push
卻發現項目一直沒移除, 原因在於因為歷史節點的紀錄沒有移除

#環境安裝

查詢後發現要使用filter-branch但是官方來看目前是改為推薦使用filter-repo, 以下範例是從python pip 下載安裝

首先可以去python官網下載最新的3版, 然後cd到你的路徑
例如  cd C:\Users\使用者名稱\Documents\python-3.11.4-embed-amd64\

接著python3 想看有什麼指令時候會開啟window store要你安裝python 3app

然後使用 python3 -m pip install --user git-filter-repo 就可以下載 fileter-repo

這時候會跳出提示path不對,這時候需要去環境下添加

windows11為例, 在搜尋中尋找"編輯系統環境變數" > "環境變數" > 可以在使用者變數地方先點擊PATH然後點擊編輯, 這時候點擊新增添加下面項目

C:\Users\使用者名稱\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts

添加完重新開啟terminal, 這時git filter-repo 就可以使用

#filter-repo使用

範例來說舉例要移除歷史build/相關, 可以使用下面方式
git filter-repo --path  build/ --invert-paths
invert-paths 是倒置只保留build/以外
這時候應該會提示建議你clone一份處理比較安全, 假設在團隊溝通跟確定要做什麼下可以給--force這個權限很大的指令
git filter-repo --path  build/ --invert-paths --force
那就會執行

跑完時候就可以push, 這邊如果要讓平台的例如build/移除在push時候需要添加 --force
當然這指令一樣要先明確知道在做什麼下使用, 範例
git push github main --force
到這, 平台的build/應該就會不見了
#要注意電腦端的檔案也可能會有所更動

2015年10月28日 星期三

CardView, RecyclerView

CardView, RecyclerView example

使用新版的 RecyclerVeiw 需要先加入 :


compile 'com.android.support:cardview-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'

跟這次要用的 cardview


之後就可以在 layout.xml 新增一個 recyclerview



之後到 main  find 它使用

recyclerView = (RecyclerView) findViewById(R.id.rv);

這裡跟 listview 比較特別的地方是要去設定 layoutmanager

recyclerView.setLayoutManager(new LinearLayoutManager(this));

然後就可以等 setadapter ()

Cardview


開一個 class 繼承 recyclerview.adapter

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {}

viewholder 部分繼承 Recyclerview.ViewHolder

public static class ViewHolder
        extends RecyclerView.ViewHolder
{}

然後 implent methods


oncreateviewholder 部分去指定自訂的 layout

View v = LayoutInflater.from(context).inflate(R.layout.cardview,parent,false);

回傳回 holder

return new ViewHolder(v);



cardviewlayout 部分這裡開一個叫 cardview.xml 來自訂


範例包了兩個 textview, imageview


cardview 比起 listview 多了可以設定圓角

card_view:cardCornerRadius="25dp"

還有陰影

card_view:cardElevation="100dp"

然後回到 adapter 的 viewholder  find 上圖


資料部分範例用 android query 取得 url 資料


這裡使用一個 cardviewitems 去處理收到的資料

回到 apadter 的 bindviewholder 把 find 好的物件塞進去處理好的值就差不多了


recyclerView.setAdapter(myAdapter);

數量就依照抓到的資料來自動產生

public int getItemCount() {
    return cardViewAdapters.size();}

build 樣子


之後只要後端更改卡片也會跟著產生了

2015年10月18日 星期日

Android get Keytool SHA1

Android get Keytool SHA1

點選左下 terminal 開始取得


mac 的話輸入 keytool -exortcert -alise 建立的 key 的 alise -keystore keystor 的路徑 -list -v

e.g. : keytool -exortcert -alise silence5105 -keystore /home/silence5105/project/testkey.jks -list -v

windows 使用者的話比較麻煩一點點, 首先要去 jdk  bin 找到 keytool 資料夾才可以使用


可以點選路徑複製到 studio. terminal



使用 cd 剛剛複製的路徑過去 sdk 的 bin 就可以使用 key tool
由圖可知我們要做的是匯出憑證

e.g. 我要取得 testkey 的憑證



也可以在 jdk \ bin 資料夾 shift 按住 + 右鍵開啟命令視窗完成也是可以






取得憑證後就可以做很多事了 : )

2015年10月17日 星期六

Android sign apk

Android sign apk

Andorid 要上架或者使用第三方 api 都要 sigh 一個 key
以下 Android studio, Intellij IDEA 通用

在上面的工具找到 build 選擇裡面的 Generate Singed APK


會看到這應該是沒 Key 所以選 create



第一行是 key.store 的路徑, 建議是放在 porject 裡面, 往後大型或者多人案子用 github 時候才不會丟失
再來密碼跟再確認一次密碼
Alias : 之後需要 SHA1 需要用到 
密碼一樣
years 不動
First and last name 可以隨便, 再來點選 ok


finish 跑完後會有選項可以直接看 sign key 的資料夾
接著進到 signing 點選加新增一個新的如圖片例子




接著點選 Build Types 點選 release 之後在 signing config 選擇新增的 signing 就可以點選 ok


build 完後要記得把 build type 改為 release 就完成了


2015年10月16日 星期五

Android toolbar / actionbar find id and use

Android toolbar / actionbar find id and use

Android 的 Menu item 得在 onCreateOptionMenu 裡面 find


如圖指定到 Munu , find 完就可以使用
假設我想讓 photobtn 隱藏
直接使用 photobtn.setVisible(false);

如果要做按鈕點選事件, 到 onOptionsItemSelected


如圖範例, 我 switch 去抓 (MenuItem 裡面的 Item id) 去動作如 : 叫他吐個 Toast say hello

switch (item.getItemid())
{
           case R.id."你id名稱":
                                 action;
                          break;
}

Menu note 就到這了