現在年紀越來越大,記性越來越差,加上密碼越來越多,沒記下來很快就會忘記,今天我就忘了我的APP打包上架密碼,還好上網Google一下,加上我原先有備份整份專案,果然幸運找回遺忘的密碼(在試了數十個密碼之後,在備份下來的專案中找到的)
方法大致如下:
從你的專案中的.gradle中去找叫 executionHistory.bin 或 taskHistory.bin 或 taskArtifacts.bin這種檔案。然後搜尋其中的關鍵字 storePassword ,在這個關鍵字後面會看到遺失的密碼。
我是在 ...<專案目錄>\.gradle\5.4.1\executionHistory\executionHistory.bin 這個檔案中找到的。不過是在備份的專案目錄中找到的,因為目前專案中的這個檔案記錄的是最近三次錯誤的密碼。
現在我已經找個地方記下我的密碼了,備份果然是一件很重要的事!
2019/11/20
2019/10/14
Android App學習筆記(二) 在Empty Activity中新增ToolBar
我新增了一個Empty Activity(名稱就叫DBlist), 我想增加Toolbar, 該如何操作呢?
--------------------------------------
首先, 我在這個 Activity的Layout上(檔名假設為: activity_dblist.xml)加入了ToolBar, 如下:
--------------------------------------
首先, 我在這個 Activity的Layout上(檔名假設為: activity_dblist.xml)加入了ToolBar, 如下:
<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"><androidx.appcompat.widget.Toolbar android:id="@+id/dbListToolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:contentInsetStart="1dp" app:popupTheme="@style/AppTheme.PopupOverlay" /></com.google.android.material.appbar.AppBarLayout>
同時在onCreate()中要增加這兩行, 才會出現新增的ToolbarToolbar toolbar = findViewById(R.id.dbListToolbar); setSupportActionBar(toolbar);
--------------------------------------
但是這樣會出現兩個Toolbar(可能一個叫ToolBar, 一個叫APPbar?), 所以必需在 AndroidManifest.xml中修改這個Activity的屬性, 增加 android:theme="@style/AppTheme.NoActionBar" , 如下:<activity android:name=".DBList" android:theme="@style/AppTheme.NoActionBar" />--------------------------------------
接著, 我想要在ToolBar 上增加返回的箭頭, 就必需在onCreate()中再增加這兩行getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true);可是我按下返回箭號, 卻沒有任何反應, 原來我必需要在onOptionsItemSelected(MenuItem item)中再加入if (item.getItemId()==android.R.id.home) return;
--------------------------------------
然後, 我想修改Toolbar 的Title ,不想出現app名稱, 例如想改為"資料庫", 則在 onCreate() 中要增加這一行
getSupportActionBar().setTitle("資料庫");--------------------------------------
再來, 我還想增加一些menu 選項, 那麼我還要做以下的幾件事
1. 在menu中新增一個xml (例如叫: menu_dblist.xml)
2. 覆寫onCreateOptionsMenu(), 讓optionMenu出現在Toolbar上
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_dblist, menu); return true; }--------------------------------------
說了那麼多, 總結一下全部的步驟:
1. 修改AndroidManifest.xml :
在該activity (名稱假設為: DBList) 增加一個theme屬性, 指定為 "@style/AppTheme.NoActionBar"<activity android:name=".DBList" android:theme="@style/AppTheme.NoActionBar" />2.在這個 Activity的Layout上加入了ToolBar元件(id假設為dbListToolbar):<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"><androidx.appcompat.widget.Toolbar android:id="@+id/dbListToolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:contentInsetStart="1dp" app:popupTheme="@style/AppTheme.PopupOverlay" /></com.google.android.material.appbar.AppBarLayout>
3.在這個Activity的onCreate()中增加以下程式:Toolbar toolbar = findViewById(R.id.dbListToolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setTitle("資料庫");
4.在這個Activity的onOptionsItemSelected(MenuItem item)中再加入if (item.getItemId()==android.R.id.home) return;
--------------------------------------
2019/10/03
Android App學習筆記(一) Toolbar style的一些設定
修改 activity_main.xml中有關Toolbar的設定
- 要顯示logo : 增加app:logo屬性
app:logo="@mipmap/ic_launcher" - 要讓 logo與左邊界距離近一些,增加app:contentInsetStart屬性
app:contentInsetStart="5dp"
修改後的Toolbar如下:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:contentInsetStart="5dp"
app:logo="@mipmap/ic_launcher"
app:popupTheme="@style/AppTheme.PopupOverlay" />
2019/07/05
EXCEL如何將字串進行樞紐分析-利用CONCATENATE與VLOOKUP函數
最近在整理同仁的ERP權限, 我想將下圖中左邊的表變成右邊的表
第一個念頭就是用EXCEL的樞紐分析來完成, 沒想到竟然GG了, 結果如下圖
後來靈光一閃, 或許可以用VLOOKUP() 和 CONCATENATE() 兩個函數完成, 由於要讓VLOOKUP找到D欄的值, 必需要靠B和C兩個欄位, 因此我在A欄使用CONCATENATE函數將B和C兩欄串接在一起, 如下圖,以A2格為例,公式為
=CONCATENATE(B2,".",C2)
接著我還是利用剛才GG的樞紐分析結果, 將"欄標題" 與"列標題" 複製成為右邊表格的"欄標題" 與"列標題"
然後在G2輸入 VLOOKUP和CONCATENATE組合而成的公式,
=VLOOKUP(CONCATENATE(G$1,".",$F2),$A:$D,4,FALSE)
因為待會要將這個公式複製到其它儲存格, 所以我加上了絕對位址的$符號
接著再把G2的公式複製到其它儲存格, 就得到下圖的結果
由於出現了 #N/A這個錯誤的訊息,不夠完美,只好再利用ISNA()和IF()兩個函數來美化,以G2儲存格為例,公式變成如下(如果G2結果變成#N/A, 那麼請留白的意思):
=IF(ISNA(VLOOKUP(CONCATENATE(G$1,".",$F2),$A:$D,4,FALSE)),"",VLOOKUP(CONCATENATE(G$1,".",$F2),$A:$D,4,FALSE))
接著同樣把G2的公式複製到其它儲存格, 就得到下圖的完美結果
這次一共用到CONCATENATE()、VLOOKUP()、ISNA()、IF() 四個函數,算是EXCEL中蠻常用到的函數,若有興趣,不妨花點時間瞭解如何使用他們。
第一個念頭就是用EXCEL的樞紐分析來完成, 沒想到竟然GG了, 結果如下圖
後來靈光一閃, 或許可以用VLOOKUP() 和 CONCATENATE() 兩個函數完成, 由於要讓VLOOKUP找到D欄的值, 必需要靠B和C兩個欄位, 因此我在A欄使用CONCATENATE函數將B和C兩欄串接在一起, 如下圖,以A2格為例,公式為
=CONCATENATE(B2,".",C2)
接著我還是利用剛才GG的樞紐分析結果, 將"欄標題" 與"列標題" 複製成為右邊表格的"欄標題" 與"列標題"
然後在G2輸入 VLOOKUP和CONCATENATE組合而成的公式,
=VLOOKUP(CONCATENATE(G$1,".",$F2),$A:$D,4,FALSE)
因為待會要將這個公式複製到其它儲存格, 所以我加上了絕對位址的$符號
接著再把G2的公式複製到其它儲存格, 就得到下圖的結果
由於出現了 #N/A這個錯誤的訊息,不夠完美,只好再利用ISNA()和IF()兩個函數來美化,以G2儲存格為例,公式變成如下(如果G2結果變成#N/A, 那麼請留白的意思):
=IF(ISNA(VLOOKUP(CONCATENATE(G$1,".",$F2),$A:$D,4,FALSE)),"",VLOOKUP(CONCATENATE(G$1,".",$F2),$A:$D,4,FALSE))
接著同樣把G2的公式複製到其它儲存格, 就得到下圖的完美結果
這次一共用到CONCATENATE()、VLOOKUP()、ISNA()、IF() 四個函數,算是EXCEL中蠻常用到的函數,若有興趣,不妨花點時間瞭解如何使用他們。
2019/05/22
SQL的累加範例
我想要用SQL來計算每一個產品各階製程的完工率,假設是以各製程的標準工時為依據,因此我需要統計每個製程的累計時數與每個產品的總工時。
SELECT H.pno 產品,H.seq 製程序
,SUM(CASE WHEN D.pno=H.pno AND D.seq =H.seq THEN D.time ELSE 0 END) 本階工時
,SUM(CASE WHEN D.pno=H.pno AND D.seq<=H.seq THEN D.time ELSE 0 END) 累計工時
,SUM(CASE WHEN D.pno=H.pno THEN D.time ELSE 0 END) 總工時
,(SUM(CASE WHEN D.pno=H.pno AND D.seq<=H.seq THEN D.time ELSE 0 END) / SUM(CASE WHEN D.pno=H.pno THEN D.time ELSE 0 END)) 完工率
FROM pt H, pt D
WHERE H.pno=D.pno
GROUP BY H.pno, H.seq
ORDER BY H.pno, H.seq
例如:產品A共有三個製程,其標準工時依序為20、30、50, 則其總工時為100 (20+30+50), 各階累計標工時為: 第一製程20, 第二製程50 (20+30), 第三製程為 100 (20+30+50), 如下表:
雖然Oracle和MS-SQL或許各自有提供函數來節省SQL語句,但為求跨平台,我必需用標準的SQL語法來完成,經過一番思考,完成了這組SQL, 經過驗證,可以在這兩套資料庫(Oracle、MS-SQL)使用,我相信其它的資料庫也可以使用。
我在這兩套資料庫中各自建立了一個資料表(TABLE), 姑且命名為pt, 這個資料表只有三個欄位(column, field):pno (產品)、seq(製程)、time(標準工時)
SQL如下:
SELECT H.pno 產品,H.seq 製程序
,SUM(CASE WHEN D.pno=H.pno AND D.seq =H.seq THEN D.time ELSE 0 END) 本階工時
,SUM(CASE WHEN D.pno=H.pno AND D.seq<=H.seq THEN D.time ELSE 0 END) 累計工時
,SUM(CASE WHEN D.pno=H.pno THEN D.time ELSE 0 END) 總工時
,(SUM(CASE WHEN D.pno=H.pno AND D.seq<=H.seq THEN D.time ELSE 0 END) / SUM(CASE WHEN D.pno=H.pno THEN D.time ELSE 0 END)) 完工率
FROM pt H, pt D
WHERE H.pno=D.pno
GROUP BY H.pno, H.seq
ORDER BY H.pno, H.seq
所查詢出來的結果:
訂閱:
文章 (Atom)
精選
小百岳35天完登計劃
台灣小百岳大多屬於容易親近的郊山,可一日往返,適合親子同遊,以下就個人完登的經驗整理一份35天完百規劃(來回步行大約400公里、費時200小時),提供給有意完百的山友參考,這是我們這對菜鳥肉腳夫妻的實測記錄,大多數人可以在更快的時間內完成。山林的奧勝美妙值得我們慢步欣賞、駐足享...