Google Custom Search

2021/08/22

把google sheets 當作 bigquery的table

 很多方式可以把資料匯入bigquery的table, google sheet是其中之一,好處是sheet變動可以直接呈現在table裡。

把google sheets加入到bigquery要先把bigquery 的 project 的 service account 加入 google sheets 的share 名單,然後到 bigquery 新增table,填上sheets的分享網址並設定需要的欄位範圍,這樣就能直接在bigquery裡查詢了。





如果要透過api存取,記得在biqquery的初始化加入google drive的scope,這樣就不會遇到沒有權限的錯誤。

$bigQuery = new BigQueryClient(

    [

        'projectId' => $projectId, 

        'scopes' => array(

            "https://www.googleapis.com/auth/drive",

            "https://www.googleapis.com/auth/bigquery",

        )

    ]

);


2021/08/03

終端機自動連線ssh

常用ssh最麻煩的時候就是連線,要網址、帳號以及密碼,透過except可以自動完成。


產生script:/usr/local/bin/sutossh.sh 

#!/usr/bin/expect

set timeout 30

spawn ssh -l account server_ip

expect "password:"

send "password"

interact

其中:

autossh.sh:script 檔名

account:ssh 連線帳號

server_ip:要連接的server ip,xxx.xxx.xxx.xxx

password:ssh 連線密碼


執行後直接跳到連接上ssh,輕鬆愉快~


ps.請先確定是否有安裝 expect

2021/01/30

bigquery table from google datasheet, access via api using php, need to specify scopes

 當使用php 存取 bigquery table 是從google sheet 來的時候,在初始化BiguqeryClient時,要指定scope


$bigQuery = new BigQueryClient(['projectId' => $projectId, 'scopes'=>[
'https://www.googleapis.com/auth/bigquery',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/drive']
]);

2018/01/03

upload data to dmp

upload data to dmp

要上傳資料到dmp,必須將資料用protobuf包裝,內容是google id, user list id
https://developers.google.com/protocol-buffers/

google已經幫我們把格式包好
https://developers.google.com/ad-exchange/rtb/downloads/cookie-bulk-upload-proto

只需要將它放到目標路徑中執行即可

為了方便管理,我把它放在上次sdk的目錄

ddp-api-client-library/protobuf

這裡的protobuf就是從 https://developers.google.com/protocol-buffers/ 下載的

然後把 cookie-bulk-upload-proto.proto (從https://developers.google.com/ad-exchange/rtb/downloads/cookie-bulk-upload-proto下載) 放到 ddp-api-client-library/protobuf/examples

設定classpath

export CLASSPATH=/你的路徑/ddp-api-client-library/protobuf/java/core/target/classes

編輯mytest.java, 這檔案就是把google id, userlist id 包裝成protobuf

然後修改makefile檔 ddp-api-client-library/protobuf/examples/Makefile

然後make clean, make java

curl --insecure --request POST --data-binary "@上傳cookie的檔名" https://cm.g.doubleclick.net/upload?nid=dmp nid name

create dmp userlist

1.下載sdk https://developers.google.com/doubleclick-data/docs/clientlibraries
2.解壓縮並放到根目錄
3.把ads.properties放到根目錄
4.到ddp的目錄執行 mvn install  -DskipTests
5.到 examples/ddp_appengine/ 執行 mvn install
6.執行程式 mvn -X exec:java -Dexec.mainClass="ddp.jaxws.v201705.AddDmpUserList"
7.執行程式 mvn -X exec:java -Dexec.mainClass="ddp.jaxws.v201705.GetAllDmpUserLists"


2016/07/28

PHP 內建網頁伺服器

從php 5.4開始,他就內建一個網頁伺服器了,意思就是不必再安裝apache之類的web server, 只需要下指令 php -S localhost:portnumber -t 文件目錄 可以當作開發測試,但是千萬別拿來當正式環境跑,會掛的。

2016/05/15

全世界最關心pm2.5的竟然是日本!



中國銀行開戶相關

很多朋友還是不知道如何在中國開戶,或者如何善用中國網銀,剛好有些經驗可以分享。

銀行選擇取決於目的,我當初是薪資戶所以沒得選只能開公司指定,但如果只是為了收款而且人都在台灣就要考慮額度以及手續費;之前經驗是華夏銀行每天頭筆不必手續費,每天額度上限1萬人幣,但是2016起多了每年限額10萬人民幣,所以台灣ATM提領銀聯卡好處大不如前。

持有中國帳戶另一個好處是方便的網路銀行,像是支付寶或微信支付等等都需要綁定銀行帳號,淘寶有綁銀行帳號也方便許多,另外購買中國機票透過支付寶也會有較多,較便宜的選擇,並且改航班,取消退款也方便許多。

開戶須本人前往中國銀行櫃台開戶,台灣人帶台胞證就可以,開戶時記得申請網路銀行服務,會有一個類似隨身碟(他們稱之U盾),就可以透過網路操作銀行服務,諸如活期,定存,基金甚至樂透(最近都關閉了)都可以直接操作非常方便。

另外需要一個中國手機門號,因為進行支付常常會透過簡訊傳送支付密碼,很多人卡在這關,偏偏這是最簡單的,只要前往中華電信(相信別的電信公司會有對應服務)申辦兩岸通,只要每月多99元就可以一卡雙門號,台灣及中國的門號,根本不必出國,去開戶前申請好就可以了。

網路讓實體邊界逐漸消失,懂得愈多知識就愈有力量,對於中國不能只是恐懼或謾罵,知彼知己總是好的。

2015/09/21

關於一些CDN

  • microsoft : http://azure.microsoft.com/zh-tw/services/cdn/ 可開台灣發票 edge:高雄
  • google : https://cloud.google.com/storage/ edge:彰化
  • amazon : https://aws.amazon.com/tw/cloudfront/ edge:台北
  • cloudflare:有提供免費方案,效果也不錯,台灣有機器了,可以當作cdn的cdn在靜態檔案上,但是必須掌管整個dns。

2015/08/18

Google Cloud Storage

gsutil -m acl set -R -a public-read target //shared publicly gsutil -m cp -r source destination //copy

2015/03/22

寫在手機摔裂之後

一直覺得只花6,400綁約買到的iPhone6很便宜,也很靠勢不會摔到只貼了一張便宜的膜;果然囂張沒有落魄的久,碎了一地的玻璃。


碎了之後怎麼辦?因為保固尚未到期,只好尋求正常管道找神腦維修;想要快速修好,請直接到神腦客服中心,有機會1小時修好,地址如下:


平時記得使用iTunes備份手機資料以免摔壞後根本無法操作了;備份好後就送到神腦維修,像我這樣玻璃碎裂但還能操作也是只有更換良品一途,公定價iPhone6:10,500、iPhone6 Plus:11,500;雖然很貴也只好買單。

換了新機之後馬上貼康寧玻璃保護貼加上犀牛盾保護框,深怕再次發生會想剁了犯錯那隻手,不敢再托大了。拿回手機後第一件事就是還原備份資料,這很簡單只是密碼並不會備份,個個軟體都再次輸入密碼,通訊軟體,網路銀行等等,差點沒搞瘋。

最後分享從神腦服務員那聽來一個好消息,一年內的手機會員有機會購買鈦金會員,好像原價4~5,000元且可以根據購買日期一年內剩餘天數加購此服務,我今年10月到期所以換算費用要2,400左右,這段期間內泡水、玻璃摔裂只要能證明非故意都可免費維修,簡直超值!

最後,手機還是要小心使用,再多保護裝置也沒有保證一定沒事,花錢維修真的很不值得,哎。



2014/09/14

OSX移動,縮放視窗快速鍵

當外接大螢幕用爽爽拔掉後卻出現視窗莫名太大,按不到縮放也無法移動它怎麼辦?

the move window scripts use:
command, option, shift and the cursors.

The resize scripts use:
command, option, shift, control and the cursors.

The 'Remember Finder window position' script uses:
command, option, shift and enter.


網路找到的,居家出外必備良藥。

2014/09/02

Unix Like下一次修改特定目錄下所有的權限。

改變特定目錄下所有檔案,目錄權限
chmod -R 644 /home/username/public_html
改變特定目錄下所有檔案權限
cd /home/username/pulic_html
find . -type f -exec chmod 644 {} \;
改變特定目錄下所有目錄權限
cd /home/username/pulic_html
find . -type d -exec chmod 755 {} \;

2014/07/27

越南餐廳

常去的餐廳有一位越南小姐服務生,等餐時和她聊到華視附近的越南河粉很出名,沒想到完全打槍,直說不行。


趁這機會當然馬上追問她心目中最佳的餐廳,得到名單:
  • 通化夜市 阿香越南小吃
  • 萬芳醫院 西貢越南河粉
上網搜尋似乎都有不錯評價,改天一定要去試試!

2014/07/24

如何使用google analytics 得知最佳獲利

Google Analytics 的 Adsense報表可以清楚得知哪個性別的人在哪個年齡層以及哪個時間帶來最大獲利,以www.98inn.com.tw為例:

  1. 登入GA後,目標對象->客層->性別
  2. 次要維度選擇年齡
  3. 多層檢視選擇Adsense
  4. 修改呈現方式
  5. 資料透視依據:小時
  6. 答案出爐:25~34間的女性在下午4點產生最高收益。

2014/04/26

linode 安裝 slackware14.1

set hostname
# echo "hostname" > /etc/HOSTNAME
# hostname -F /etc/HOSTNAME

set /etc/hosts
127.0.0.1 localhost.localdomain localhost
12.34.56.78 hostname.domainname.com hostname
2600:3c01::a123:b456:c789:d012 hostname.domainname.com hostname

set timezone
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime

slackpkg update
slackpkg install-new
slackpkg upgrade-all
slackpkg clean-system
slackpkg install kernel-headers-3.10.30-x86-1
slackpkg install gcc
slackpkg install cmake
slackpkg install libarchive-3.1.2-x86_64-1
slackpkg install nettle-2.7.1-x86_64-1
slackpkg install libxml2 cyrus-sasl-2.1.23-x86_64-5
slackpkg install gd-2.0.35-x86_64-4
slackpkg install libjpeg-v8a-x86_64-2
slackpkg install libmpc-0.8.2-x86_64-2
slackpkg install png
slackpkg install bind-9.9.4_P2-x86_64-1
slackpkg install db48-4.8.30-x86_64-2
slackpkg install sendmail
slackpkg install apr

install httpd
./configure \
--prefix=/usr/local/apache \
--enable-speling=shared \
--enable-rewrite=shared \
--enable-expires=shared \
--enable-headers=shared \
--enable-deflate=shared \
--enable-so \
--enable-ssl \
--with-mpm=prefork

install mysql
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions
# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
install postgresql
./configure gmake
su gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
cp /tmp/postgresql-9.3.4/contrib/start-scripts/linux
/etc/rc.d/rc.pgsqld

install php
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-pear \
--enable-mbstring=all \
--with-zlib \
--with-gd \
--enable-gd-jis-conv \
--with-jpeg-dir=/usr/local/jpeg6b \
--with-png-dir=/usr/local/lib \
--with-openssl \
--with-pdo-pgsql \
--with-pgsql \
--with-pdo-mysql \
--with-mysql \
--enable-zip \
--enable-soap \
--enable-sockets

php.ini from /tmp/php.ini-production > /usr/local/php/lib/php.ini
change php.ini sendmail path to /usr/bin/sendmail -t -i

2014/04/23

公司的氣度。

name.com越來越上道了。
繼上次買錯domain,寫信去反映後他們退回到我的賬戶等值金額,前天又買錯,這次反應後直接退回我的信用卡,真不賴。
相較於bluehost, 明明他壞了9個小時,提出的道歉方案竟然是在25號前我必須打一通電話去美國才能得到一個月免費,這太沒誠意了吧?希望bluehost能夠給我一個滿意的答案,雖然我已經在轉移了 

2014/04/08

轉貼:[心得] 歐嘉德牙醫診所拔水平智齒 大推周豐智醫師!!!

轉貼

我長了四顆智齒,兩顆正常,兩顆居然是水平的, 在之前看診的牙醫診所拔掉了其中兩顆(一顆是正常一顆是水平), 水平那顆他的拔法是把牙齒挖洞再把他拔出來,但一出診所我就痛不欲生, 心想還有兩顆智齒要拔,實在很怕之前的經歷再度發生, 於是上網爬了文發現大家都很推歐嘉德牙醫診所黃醫師, 打電話過去預約居然都滿了, 電話那頭的服務人員推薦我接受診所新來的醫師周豐智醫師, 看完之後真的要告訴大家! 大推!周豐智醫師!!! 大推!周豐智醫師!!! 大推!周豐智醫師!!! 預約時間到了就往他們診所去, 診所裝潢得很漂亮舒適,原來他們搬過家了! 新地址是台北市中山區民生東路1段58號三樓! 還好我查到的是新的診所,不然我就要白跑一趟了! 診所位於馬偕醫院那條路上,一進診所櫃台貼心地請我過去做手部的消毒, 之前到其他診所也沒有人主動要幫你消毒,但歐嘉得診所很貼心,清潔部分做得很好! 一開始也是先照一下X光,接著周醫師先幫我洗牙,問我要拔一顆還是兩顆, 之前都一顆一顆拔想說這次要痛就給他一刺痛完,提起勇氣說兩顆好了! 然後給了我一張拔智齒的同意書 (是這個名稱嗎?我也忘了,基本上上面就是寫了一些拔智齒會有後遺症,可能會大量出 血阿!甚麼的...), 填完後在臉上蓋上一塊嘴巴部分挖了洞的布後就開始緊張了! 我先拔的是水平智齒, 這位醫師很溫柔,超級溫柔,我第一次遇到這麼溫柔的醫師! 要做甚麼步驟都會先跟我說讓我很放心! 要打麻藥的時候跟我說:我要先在牙齦內側跟外側各打一針麻醉, 打的時候會有疼痛感,如果太痛受不了可以跟我說,我會再幫你推慢一點! 本來以為會像之前一樣很痛,可能醫師真的推很慢,這次一點都不痛(除了針刺下去的瞬 間會痛其他都不會耶!), 接著醫師還跟我說:我要開始拔囉!(真的很溫柔!) 醫師又說:接下來你會有陣痛的感覺!我要先幫你把牙根的部分弄鬆一點這樣子會比較好 拔! 然後我就真的就是陣痛,原來醫師是拿槌子往我牙齒打, 雖然是要弄鬆牙齒,但是拿到槌子我還真的害怕, 過程中大概槌了三四次吧!有點久! 雖然每次醫師問我還好嗎?我都很帥氣地舉起我的手比了個ok的手勢! 但不知道是我的緊張周醫師有感受到還是怎樣,過程中一直用溫柔的口氣跟我說:加油喔 !快好了! 讓我比較放心! 經過一番遮騰後終於拔出來了,接下來是縫合,縫得很快速, 然後是普通智齒, 雖然沒有想像中的快速,但是跟水平的比起來快多了! 弄好之後醫師跟我解釋, 原來是因為我的牙齒牙根都是三個! 如果用力去跟他搏鬥有可能牙齒會斷裂! 牙根斷在裡面會更麻煩! 我看了一下我的牙齒,挖靠!真的都是三個牙根,其中還有一個牙根還是彎曲的! 如果今天幫我看的醫師他沒有想的這麼周到我應該連拔普通智齒也都痛死吧! 結論! 周醫師好溫柔,會說一些鼓勵的話讓病人不這麼緊張,第一次遇到這樣的醫師! 然後!他真的很細心,也很替病人著想,如果他沒想到牙根數量問題,就奮力跟我的牙齒 搏鬥, 我今天牙根搞不好就斷在肉裡面拉! 真的大推周醫師! 溫柔又細心! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.72.206
krejj:想問一下診所怎麼去阿? 09/13 11:11
cmchiu:周醫師本來在新竹馬偕任職, 回台北去了 QQ 09/13 19:20
sa90618:捷運雙連站一號出口 出站後右轉一直直走就會到了 09/13 23:30


2013/06/10

Chrome會對key為數字的陣列自動排序


根據:
http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/
提到:
Numerically named properties in Chrome
Chrome browsers process numerically named keys first and in numeric sequence not insertion sequence.
1
2
3
4
5
6
7
8
9
var obj = {3:'a', 2:'b', 'foo':'c', 1:'d'}, result = [];
for (var prop in obj) {
    result.push(prop);
}
result.toString();
//Chrome -> "1,2,3,foo"
//Other browsers -> "3,2,foo,1"
自作聰明,陣列排序自有其意義,有需要自然會sort,害人多花時間除錯。

必須先用文字取代key,進入回圈後再還原成數值。

2013/04/01

有效的多頁列印powerpoint

讀書時常常需要列印 powerpoint 出來閱讀,合併列印是一個常用的功能;


但是powerpoint的列印呈現效果總是內容太小,留白太多,造成不易閱讀,所以找到一個替代方案 "改變佈局"


透過每張頁數來處理合併,可以得到較大的內容。