2020年7月5日 星期日

【github】error setting certificate verify locations 錯誤修復

透過Visual Studio 要從github上clone專案到本地端 

發生此錯誤error setting certificate verify locations 


打開CMD

鍵入

git config --global http.sslverify "false"



搞定



2019年2月9日 星期六

【Python】寫入讀出資料到Google sheet 試算表


今天來介紹如何使用Python寫入Google Sheet的方法


整個流程很單純,只是新手比較常碰到GOOGLE設定上的問題

一、先到 Google Developers Console 建立一個 Project


  • 先於左上方新增專案

  • 為專案命名
  • 啟用完成





二、啟用專案的 Sheet API

  • 點選【啟用API和服務】


  • 搜尋Sheet API並點選啟用



三、為API建立憑證

  • 於上方有提示訊息,直接點選建立憑證

  • 點選後會看到下述畫面


共有4個選項

Q.您目前使用哪個 API?

選擇 Google Sheet API

※假設今天使用其他的API就選其他的(廢話)

Q.API 的呼叫來源為何?
選擇 其他非使用者介面

※因為我們使用Pyhon如今天採用其他的方式呼叫就選別的了

Q.您需要存取什麼資料?
選擇 應用程式資料

使用者資料比較像是登入註冊等等時來使用

Q.您準備搭配 App Engine 或 Compute Engine 使用此 API 嗎?

選擇 否

※如果有搭配到GAE可以選


選擇完成後就點選取得憑證
  • 會跳轉至下列畫面



我們就為服務帳戶命名

※這個服務帳戶就類似你專案的一個帳戶,可以用來管理你的API憑證你也可以設置他的權限等等..

金鑰類型選擇JSON格式

完成後點選下載

將下載的json檔案放入待會Python專案目錄下

  • 檔案打開會有類似資訊,先將client_email複製起來


  • 我們建立一個sheet並且與剛剛複製的client_email一起共用





繁瑣的設定完成 ! 剩下程式的部分 

三、Python透過憑證連線

自訂一個函式為auth_gss_client


import gspread
import time #待會會取時間
from oauth2client.service_account import ServiceAccountCredentials 


auth_json_path = 'auth.json' #由剛剛建立出的憑證,放置相同目錄以供引入
gss_scopes = ['https://spreadsheets.google.com/feeds'] #我們想要取用的範圍
gss_client = auth_gss_client(auth_json_path, gss_scopes) #呼叫我們的函式


def auth_gss_client(path, scopes):
    credentials = ServiceAccountCredentials.from_json_keyfile_name(path, scopes)
    return gspread.authorize(credentials)


#從剛剛建立的sheet,把網址中 https://docs.google.com/spreadsheets/d/〔key〕/edit 的 〔key〕的值代入 
spreadsheet_key_path = '〔key〕'

#我們透過open_by_key這個method來開啟sheet
sheet = gss_client.open_by_key(spreadsheet_key_path).sheet1
#單純取出時間稍後塞入sheet
today = time.strftime("%c")
#透過insert_row寫入值 第二行塞入時間,abc,123的值
sheet.insert_row([today,"abc", 123], 2)


以上完成 !!    有任何問題歡迎留言發問

有錯誤也請提醒  感謝



常見錯誤:

ImportError: cannot import name 'ServiceAccountCredentials'

一開始我不知道為何取用到1.5.2的版本導致他根本找不到ServiceAccountCredentials

解法如下:

●先確認目前OAuth版本

可透過下列程式碼顯示
import oauth2client
print (oauth2client.__version__)

●透過cmd再次更新版本 pip install --upgrade oauth2client





參考文章:

https://city.shaform.com/zh/2016/03/19/gspread/

Python大數據特訓班電子書

2019年1月7日 星期一

【PHP】codeigniter 使用faker libs 自動產生假資料

在製作網頁時,常常需要一些假資料去填滿你的內容,

但要耗費一些時間在生成那些無意義的假資料,

所以我們這次要學習利用faker這個libs去自動產生假資料 !!

需要環境


PHP就不用說,那我們使用的framework是codeigniter

如果沒有使用過的朋友,可以參考我另一篇文章

Composer 這是給PHP使用的一個套件管理系統

如果未來要學PHP那建議要去了解這套系統

最後就是Faker這個libs 上面有附上他的github


那我們就開始!!!!

首先


先建立一個codeigniter專案,然後開啟cmd利用指令cd

到你放置codeigniter專案的資料夾

像我是利用iis所以放置在C:\inetpub\wwwroot底下

所以就簡單的 cd C:\inetpub\wwwroot

簡單來講就是兩個步驟
  1.  cd 到codeigniter資料夾下
  2. composer require fzaninotto/faker


然後等待一下  !  要一點時間

我一直以為他當了其實沒有

那他就會幫你把composer.json這個檔案裡加入fzaninotto/faker這個libs

再來

開啟codeigniter專案裡的index.php 拉到最下面加入include_once './vendor/autoload.php';







2015年12月6日 星期日

【心得】2015 JCConf 菜鳥參與心得


2015年12月4日、5日,首次參加JCConf的聚會,收獲很多的,尤其以第一次參加這種盛會的我來說。

那麼我就以個超級菜鳥的身分來談談,JCConf到底是在辦甚麼在講甚麼內容


甚麼是 JCConf ?



字面上來看就是 Java Community Conference Taiwan 


是由社群主辦的 Java 開發者年會,以提供更多機會讓開發人員之間能夠互相交流。


包含了甚麼議題 ?

分享內容的程度不論初階到進階

  •  Java 程式語言
  • 框架
  • JVM 及虛擬化相關技術
  • 移動裝置
  • 開發工具
  • 開發流程
  • 等等...

議程表:

反正只要與Java有關,都包含就對了 !!!

所以對於我這種菜鳥來說,很多東西都是第一次聽到,增廣見聞。

但也就因為包含太多東西,許多議題都是鴨子聽雷,有聽沒有懂啊@@,實在是太菜了


有興趣可以去看看兩天的議程。


議題分享的模式


可以看到基本上每天的第一場,都是在同一個會場,通常就是一個大神來分享,

然後接下來就分為三個會場,去各自選擇自己想要參加的議題,

那如果都想要聽怎麼辦!!  沒關係基本上的議題都會有綠影,可能等會後再去看綠影,

所以可以先參加那些無法錄影的議題。

WorkShop這也是很酷的地方,能夠直接實作帶你認識一項新的技術,

但如果要參加記得要事先報名,不然現場只能等候補了 !!

線上筆記與多人討論

這也是讓我覺得,不愧是工程師的盛會,很多東西都靠網頁就能夠解決。

  • Hackpad 線上多人共同編輯


有時候想要記筆記,但卻來不及,怎麼辦!! 沒關係 會方使用了Hackpad,讓大家能夠一同

去編輯出一份議題的筆記,所以只要你手速夠快,都能夠去協助筆記的建立,

而且是同步建立,非常的酷啊。

這次的Hackpad議題共筆: https://jcconf.hackpad.com/JCConf-2015--9EqN5Txh9yR

裡面就能看到有很多議題講者的重點筆記,這都是每位參與者一起編輯出來的哦 !


  • Giiter 多人討論

議題好深入,根本聽不太懂 怎麼辦 !!!  沒關係 有人與一起線上討論議題,

其實對於菜鳥來講基本上大概70%都聽不懂,不過還好有多人討論,

可以看一下與大家交流一下就能大概知道這個議題到底在說些甚麼,用在哪裡等等...

這個多人討論也讓我多學到很多,不僅僅是鴨子聽雷。

這次的 Giiter多人討論: https://gitter.im/twjug/jcconf




所以參加要帶甚麼?

  • 筆電

 不管是多人共筆或多人討論,

在聽一些議題時也比較能夠快速查相關的資料。

  • 海綿的腦袋   大量吸收吧!!!!


不管到底聽不聽的懂,其實都可以記下一些關鍵字,

大概去了解一下,這到底在做些甚麼,何時會用到,

或許等你長大後的某一天會用到也說不定。


如何參加 ?


大概在前兩個月就會有售票的資訊會出來,

直接購買就可以囉 !!  

提早購買有早鳥優惠



2015年10月22日 星期四

【Java】幾個常見方法的差別String.valueOf() & Object.toString()


一、String.valueOf()  & Object.toString()


  • String.valueOf()
如果你給他String.valueOf("null"),我們得到的會是null這個字串

  •  Object.toString()
但toString()如果你給他null.toString(),則他會丟出 NullPointerException 


二、Integer.valueOf()  & Integer.parseInt()


  • Integer.valueOf()  
他會回傳的是一個Object ,new Integer()

【Android】hax kernel module is not installed ex: Thinkpad t430s


久久沒使用AVD來模擬,開啟時發現跳出這個錯誤,來記錄一下如何解決

Step 1

確認自己的cpu是否有支援

Intel VT(Virtualization Technology虛擬化技術)或XD (Execute Disable Bit)


可以到intel的官網去查詢 http://ark.intel.com 

進去後直接輸入自己cpu的型號並拉到下方找到


  • Advanced Technology
  • Intel Platform Protection Technology
就會顯示是否支援 !!



Step 2

確定有支援後去開啟Android Studio裡的 SDK Manager 去檢查

Intel x86 Emulator Accelerator(HAXM installer)有沒有安裝

沒有的話請安裝他!!!



Step 3

進入自己的BIOS去把Virtualization 開啟

以我的thinkpad t430s為例:

BIOS-->Security -->Virtualization -->Enable 


Step 4

開啟
Android Sdk的路經
以我自己為例:

C:\Users\UserName\AppData\Local\Android\sdk\extras\intel\Hardware_Accelerated_Execution_Manager

安裝!!!!!

也可以直接去Intel 官網下載

Step 5


安裝完成後 基本上就能啟動了!!!!!!!!


參考連結:

2015年9月29日 星期二

【Android】設定Activtiy的主頁 返回箭頭 Navigate Up to Parent Activity

今天介紹一個簡單的,如何設定Activtiy的主頁  Navigate Up to Parent Activity

假設你有三個Activtiy

  • 主頁 Main
  • 設定 Setting
  • 關於 About
當我們由主頁進入Setting,又由Setting進入About ,

你會發現點選Action bar右上箭頭只能由About 返回Setting,

如果希望回到Main,就要利用這個方法,去設定你Activtiy的主頁

 android:parentActivityName="com.example.myfirstapp.MainActivity" 

 <activity
        android:name="com.example.myfirstapp.AboutActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>


設定後那麼不管到是由哪個頁面到哪個頁面

按Action bar右上箭頭都將回到你設定的主頁


http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp