發表文章

目前顯示的是 2018的文章

[MYSQL] 如何壓縮、清除 MSQL BIN LOG

圖片
server使用mysql長時間下來bin log會過於肥大,今天記錄下如何壓縮、刪除mysql bin log 操作步驟: 壓縮mysql bin log 進入mysql 下指令清除bin log 1、壓縮mysql bin log  寫了一個簡單的腳本,方便壓縮bin log #!/bin/bash echo -n "壓縮mysql-binary 從幾開始" read startnum echo -n "到幾結束" read endnum index=0 while [ $startnum -le $endnum ] do         file="/var/lib/mysql/mysql-bin.0$startnum"         echo -n "$startnum"         if [ -f $file ]         then                # bin log存在就壓縮,這裡將壓縮檔放在mysql/binbackup/裡,可自行選擇                 tar zcvPf /var/lib/mysql/binbackup/mysql-bin-"$startnum".tar "$file"                 echo -n "$file 壓縮完成"                 ((index++))         else                 echo "$file is empty"         fi                          (( startnum++ )) done echo "完成 $index 個壓縮" 2、進入mysql 輸入 mysql -u username -p 3、清除bin log purge master logs to 'mysql-bin.000403'; //000403之前的都會被清空 [參考]MySQL二進位制日誌備份和恢復詳解

[GOOGLE SIGN IN] Javascript 預防WEB 使用GOOGLE登入後,WEB會自動登入

情境: 當使用GOOGLE帳號登入WEB時,如果帳號登出後不執行auth2.signOut() 將GOOGLE帳號登出,每到登入畫面google又會執行api幫你自動登入。如果有其他的第三方登入,這將會造成困擾。 解決辦法: 這裡使用Javascript語法 onbeforeunload,當 window, body, frameset 物件「被卸載之前」會先引發這個事件, 能攔截網頁離開的動作。 使用方式: window.onbeforeunload = function(e){   gapi.auth2.getAuthInstance().signOut(); }; 補充說明: onunload -當 window, body, frameset 物件「被卸載之後」才會引發這個事件。

[Docker] ls: cannot open directory .: Permission denied 解決方式

今天要將container 裡面的檔案路徑mapping到實體主機的檔案路徑 docker run -it -v /home/user1/storage:/storage centos /bin/bash 時,在container裡的storage下ls卻出現 ls: cannot open directory .: Permission denied ,以下為解決方法: 環境:Linux 解決方式: 在host和container分別查看id -Z: [root@centos-minion share]# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@centos-minion share]# ls -ldZ /home/share drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/share The container: [root@4ccce73bed9d share]# id -Z id: --context (-Z) works only on an SELinux-enabled kernel [root@4ccce73bed9d share]# ls -ldZ /home/share drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/share 原因就出在SELinux,可以輸入 docker run -it -v /home/share:/home/share:z 或 docker run -it -v /home/share:/home/share:Z 就解決囉! 參考來源: https://github.com/moby/moby/issues/14175

[LINUX]E: Unable to locate package sudo的解决方法

圖片
今天再用docker run container 的時候,要安裝軟體,遇到了bash: sudo: command not found的錯誤,,而又沒有/etc/sudoers.d文件,就是沒有安裝sudo命令,於是輸入apt-get install sudo又遇到E: Unable to locate package sudo的錯誤 unable to locate package sudo 以下是簡單解決方式: 環境:Linux 解決方式: 只要更新apt-get就好了,執行 apt-get update 補充: 一般會出現bash: sudo: command not found有兩個原因 1、首先查看/etc/sudores.d 文件是否存在,如果不存在就代表系統沒有安裝,則輸入 apt-get install sudo 2、如果/etc/sudores.d 文件存在,表示系統已經安裝,只要配置環境即可,輸入 export PATH=/usr/local/bin 參考資料: CSDN

[IE] IE瀏覽器出現 Promise is undefined

IE有雷呀!!! 今天客戶突然說他用IE開網頁無法瀏覽,我實際開才發現,乾!!真的耶!! 開啟偵錯過去竟然跟我說Promise is undefined ,而其他瀏覽器都可以正常預覽網頁,以下提供解決方式 測試瀏覽器:IE11 解決方式: 引入 bluebird 檔案,bluebird是 super high-performance Promise library,加入後就可以正常運作了 <script type="text/javascript">  var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE ");  if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  document.write("<scr"+"ipt src='https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.5/bluebird.min.js'></scr"+"ipt>");  </script> 參考來源: promise-is-undefined-in-ie

[OPENVPN] Web Server Certificates延期

圖片
當OPENVPN Certificate快過期時,要怎麼辦? 簡單步驟幫vpn延期 環境:ubuntu SSL: Let’s Encrypt 步驟一:先將openvpn停止 sudo systemctl stop openvpnas 步驟二:建立SSL憑證 sudo certbot certonly 可參考 [Certbot / SSL] 簡單步驟教你生成 SSL 憑證 步驟三:上傳憑證 找到 fullchain.pem、cert.pem、privkey.pem 依照圖示位置上傳 web server configuration

[Certbot / SSL] 簡單步驟教你生成 SSL 憑證

圖片
今早收到了一封主旨為Let's Encrypt certificate expiration notice for domain "xxxxx"的信,才想到,哦!!原來SSL快過期了,來記錄下當初生成SSL的步驟 使用工具: CertBot 環境:Ubuntu 伺服器:Apache CertBot  是 Let’s Encrypt 推薦的憑證生成工具,但是 Let's Encrypt 提供的憑證有效期限每次只有 90 天的效期,若過期之後需要重新更新憑證方可繼續使用,以下為安裝的簡單三步驟 步驟一:下載 wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 步驟二:開始製作憑證 sudo certbot certonly certbot certonly 用 nginx 選擇 standalone,若是 apache 則選擇用 webroot 這裡出現3個選項,簡單介紹這三個項目 1.使用Apache模式 2.使用standalone模式: 預設standalone是使用443 port,需要暫時停止服務器正在占用443 port的process 3.使用webroot模式 如果需要在不影響服務器正常運作的情形下製作憑證,可以選擇webroot模式 步驟三:輸入驗證SSL的網址 enter in your domain name 完成:輸出憑證檔案 執行完的憑證會依照擬申請的domain當作資料夾名稱放到/etc/letsencrypt/live/ 目錄下,例如我申請了www.test.com,憑證檔案會放在/etc/letsencrypt/live/www.test.com/目錄下 憑證介紹: 檔案名稱 說明 cert.pem 申請網域的憑證 chain.pem Let's Encrypt 的憑證 fullchain.pem cert.pem 及 chain.pem 合併檔案 privkey.pem 申請網域的憑證密鑰 參考: Certbot自動化生成https憑證

[Linux ] centos iptables 防火牆設定方法(開啟指定Port)

圖片
今天Linux菜菜小弟需要開啟端口來做websocket,就來記錄下如何開啟iptables port,步驟如下: 1.開啟8080 port,輸入 /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT   即可 2.重新啟動防火牆 /etc/init.d/iptables restart 3. 查看所有port /etc/init.d/iptables status 如上圖表示已經開啟8080 port了

[PHP / WebSocket] 解決 Call to undefined function socket_create()

最近剛入門php websocket,一執行範例檔就出現Call to undefined function socket_create(),這是php.ini沒開的緣故,以下為解決方法 解決方法: 打開php.ini,找到 extension=php_gd2.dll 和  extension=php_sockets.dll 並打開 修正完後再重啟服務 使用phpinfo()查看,會發現 Sockets Support 现在已经 enabled 了 完成

[LINUX COMMAND]解決-bash: php: command not found

今天要執行PHP command時出現bash: php: command not found ,不用荒,將php加入path即可,以下為解決方法 解决方法: export PATH=$PATH:/usr/local/php/bin  (/usr/local/php/bin找到自己php/bin放的位置) 輸入echo $PATH 就可以看見 usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php/bin 在系統上輸入php -v發現可以執行了

[閱讀心得] 覺得時間不夠用嗎? 《每天最重要的2小時》讓你擁有高效率生產力

圖片
最近公司人員上的調度,舊有專案都壓在我身上,除了舊專案需要維護,還有新專案需要開發,真的是兩頭燒,時常發生看code看到一半,客戶打來抱怨產品有bug,我需要中斷我手上讀到一半的code去修,覺得時間不夠用,下班時間變晚了,壓力大到長了幾顆煩人的痘子,偶然的,看到同事桌上有本《每天最重要的2小時》心想,這就是我現在需要的啊!!!馬上借來看 書名:每天最重要的2小時 作者:喬許.戴維斯 博士 Josh Davis, Ph.D. 人類不像機器能夠保持高創造力和高生產力,作者強調如何運用有效的時間,在更好的狀態下,完成一天當中最重要的事,市面上很多書籍都介紹如何安排工作項目,但作者強調的是 心智能量 ,我們必須把心智能量用在對的地方,即便是回郵件這種小事,也會耗費我們心智能量,一旦郵件開始回覆了,身體自然的就會想把郵件回完,回過神來才發現已經半天去了,也沒心力再做其他事情。 這本書作者列出5種策略,而這些策略能夠幫助我們每天創造最高效率的2小時。 1.辨別每個決定點 每完成一件事情的那一刻,就是一個珍貴的機會點來決定你接下來要做的事情,一旦開始一項事情時,我們往往都會進入自動駕駛模式,這時我們對周遭的觀察力是會降低的,時間肯快就會流逝。因此,在工作前,先想想「自己有哪些事情是真正重要的事務,剩下的時間應該做甚麼」。 2.管理心智能量 所有事情都會耗費心智能量,我們要做的不是打開行事曆找到時間就安插幾個工作項目,而是想想有哪些時段具有適合的心智能量可以處理,尤其是在重要的會議前,避免安排其他會消耗心智能量的事情,此外,要善用好情緒和壞情緒,正面情緒是養分,負面情緒不必然是毒素,興奮高亢是助力,低落難過是冷靜,緊張讓自己表現更好。 3.停止對抗分心 我們都知道「專注」很重要,但人類的注意力系統天生就會留意分心的事物。我們常因為分心而感到沮喪,訓斥自己怎麼會分心呢? 多數的創意工作者,時常在心漫遊時找到靈感,我們也不妨讓心學會漫遊、做白日夢,對提升創意和思考未來都有幫助。 4.妥善利用身心關聯性 適當的運動可以減輕焦慮、提振情緒,飲食也有助於生理和心理的狀態,別低估一杯水在保持心智活力方面的功效,若需要短暫的提高專注力,碳水化合物的效果比蛋白質來的強,而我們總在疲倦時仰賴咖啡,但其實喝咖啡有沒有效,30分鐘就可以知道。 那

[AWS / SSH] 簡單步驟 SSH連線設置

圖片
公司有工程師離職時,是MIS覺得麻煩的時候了,因為要把所有的server ssh key全換掉,雖然步驟簡單,但是server一多是換到手軟,以下以AWS為例,說明ssh key更換步驟 實作環境:Windows 服務:AWS 對新使用者添加ssh key 一、Windows用戶可以先下載 puttygen 打開後,在滑鼠一震搖晃下就會產生一串ssh-rsa key 其中key comment必須謹慎設定,在aws他是對應key pair name,再來分別save public key和private key,將ssh rsa整段copy下來,之後要貼在.ssh/authorized_keys裡,怎麼做呢? 接著往下看 二、替換ssh key 1.進入指定的user資料夾 hone/{user},將ssh/authorized_keys裡的ssh rsa換掉即可 完成後再用新的ssh連新的user試試有沒有成功 2.確認成功後,就可以將AWS上舊的KEY刪掉了 二、在伺服器新增使用者並設定ssh 1.新增使用者 sudo adduser newuser 2.切換到使用者下 sudo su - newuser 3.在home/newuser下,新增 .ssh資料夾 mkdir .ssh 4.給予.ssh 700的權限 chmod 700 .ssh 5. 建立authorized_keys資料夾 touch .ssh/authorized_keys 6.給予  authorized_keys 600權限 chmod 600 .ssh/authorized_keys 7.編輯authorized_keys文件,將剛剛複製的ssh rsa貼入 vi authorized_keys 完成後再用ssh連新的user試試有沒有成功

[MySQL] auto_increment 自動編號歸零 重新計算

想要將auto_increment 歸零的方法如下: alter table tablename AUTO_INCREMENT=4; //tablename是你的資料表名稱 //數字是代表你要從哪邊開始接著新增 如最後一筆是4 新增的想要讓他變成5就打上4 終極毀滅指令,刪除表單資料及歸零 truncate table tablename

[PHP] 正規表達式 過濾特殊符號 / 過濾非字母數字的字元 / 過濾字母數字

如果應用程式是開放給公眾使用, 過濾輸入資料的字元十分重要, 在 PHP 可以透過正規表達式做特定字元的檢查及過濾。 過濾非字母/數字字元,取英文數字 <?php  $input = "this is a %%%&&& apple";  $cleaned = preg_replace("/[^A-Za-z0-9 ]/", "", $input);  echo $cleaned; ?> 輸出 this is a apple 過濾字母/數字字元,取特殊自元 <?php $input = "this is a %%%&&& apple"; $cleaned = preg_replace("/[A-Za-z0-9 ]/", "", $search); echo $cleaned; ?> 輸出 %%%&&& 過濾特殊自元,取中文英文數字 <?php  $input = "this is a %%%&&& 帥哥";  $cleaned = preg_replace("[^A-Za-z0-9 \p{Han}]+/u", "", $input);  echo $cleaned; ?> 輸出 this is a 帥哥 中間的 {Han} 表示中文字的意思。(記得行尾的 u,表示 unicode ) 這樣子就可以 match 所有中文字,或是排除中文字等等。 參考網址: PCRE參考 參考網址1

[Laravel] Laravel 出現 SQLSTATE[42000] Syntax error or access violation 解法

圖片
今天使用MySQL出現SQLSTATE[42000]: Syntax error or access violation,這是因為 SQL_MODE 的限制,修正方式如下: 找到config/database.php,並將 strict 改成False 就可以了 'mysql' => [     'driver' => 'mysql',     'host' => env('DB_HOST', 'localhost'),     'port' => env('DB_PORT', '3306'),     'database' => env('DB_DATABASE', 'forge'),     'username' => env('DB_USERNAME', 'forge'),     'password' => env('DB_PASSWORD', ''),     'charset' => 'utf8',     'collation' => 'utf8_unicode_ci',     'prefix' => '',     'strict' => false,     'engine' => null, ]

[Laravel] Laravel 5.5 教你修改Auth認證失敗跳轉位置

圖片
從5.3開始,未認證跳轉的判斷搬到了app\Exceptions\Handler.php中處理。今天使用5.5,發現unauthenticated方法不見了,自己加還會有衝突,不過沒關係,5.5是搬家到了vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php中,修改方式如下: 加入下段程式碼即可    /**      * Convert an authentication exception into an unauthenticated response.      *      * @param  \Illuminate\Http\Request  $request      * @param  \Illuminate\Auth\AuthenticationException  $exception      * @return \Illuminate\Http\Response      */     protected function unauthenticated($request, AuthenticationException $exception)     {         if ($request->expectsJson()) {             return response()->json(['error' => 'Unauthenticated.'], 401);         }         return redirect()->guest(route('admin.login'));     }

[Laravel] 教你如何取得 Query Builder 或 Eloquent ORM 生成的 SQL 語法

圖片
想要查看Laravel生成的SQL語法嗎?跟著我一起做就可以了 步驟如下: 先引入DB檔  use Illuminate\Support\Facades\DB; 首先要開啟記錄 DB::connection()->enableQueryLog(); 資料庫查詢 $articles = DB::table('articles') ->where('articles.id', 'some_id')->get(); 使用 DB::getQueryLog(),為記錄下來的 sql 語法,這邊直接用 dd() 印出 dd(DB::getQueryLog()); 完成 Laravel官方說明

[MySQL] Centos6.x 解決 MySQL啟動失敗ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql)

不論是啟用service mysql start或是重啟 service mysql restart都會出現 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql)怎麼辦?以下是我的解決方法: 環境: Centos6.7 MariaDB 解決方法: 1.先輸入service mysql status,由於執行失敗,service mysql status會顯示錯誤引導你 service mysql status 2.系統顯示MySQL is not running, but lock file (/var/lock/subsys/mysql),這時候先將這個檔案刪掉試試,輸入 rm var/lock/subsys/mysql 3.在嘗試service mysql restart 4.若還是無法啟用,輸入ps -ef | grep mysql查看process,會看到mysql的process,記住 PID ps -ef | grep mysql 5.輸入sudo kill -9 PID ,-9是強制刪除,指定mysql的PID,刪除process sudo kill -9 PID 6.最後再重啟一次,就行了

[MySQL] 解決 MYSQL MariaDB 登入出現 ERROR 1045 (28000) using password: NO

今天在Linux中輸入指令mysql要進入MariaDB時,卻出現 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的問題,這邊說明我自己的解決方式 環境: Centos6.7 MariaDB 解決方法: 輸入 /usr/bin/mysql_secure_installation初始化 /usr/bin/mysql_secure_installation 接著依序輸入 第一個問題,Enter current password for root (enter for none):。 請直接按下Enter,因為預設MariaDB沒有密碼。 第二個問題,Change the root password? [Y/n]。 是否更改root密碼,極度建議您設定root密碼,請輸入Y。 第三個問題,Remove anonymous users? [Y/n]。 是否移除匿名帳號,請務必移除匿名帳號,否則別人隨便就可以進入您的資料庫了! 第四個問題,Disallow root login remotely? [Y/n]。 是否移除遠端root登入權限,視需求設定,若要允許root遠端登入, 第五個問題,Remove test database and access to it? [Y/n]。 是否移除測試資料庫跟使用者,留著也沒用!移除請輸入Y。 第六個問題,Reload privilege tables now? [Y/n]。 是否刷新權限表,輸入Y完成所有初始化設定! 在嘗試進入一次,輸入 sudo mysql -u root -p 進入,就可以進囉 sudo mysql -u root -p

[Laravel] Laravel5.5 出現The page has expired due to inactivity 怎麼辦?

圖片
送出表單時,出現 The page has expired due to inactivity. Please refresh and try again 怎麼辦? 別慌張,因為您的表單沒加入csrf token,加入即可,以下為範例: 在您的form底下,加入這一段 <input type="hidden" name="_token" value="{{ csrf_token() }}"> 完成,是不是很簡單就解決了呢!

[VS] visual studio 2017 輸出類型為類別庫的專案無法直接起始 解決方法

圖片
今天第一次嘗試寫ASP.NET時竟然遇到了輸出類型為類別庫的錯誤訊息,以下是解決方法: 在"專案(P)"->"設定為啟始專案(A)",重新"開始偵錯(F5)"即可解決。

[Laravel] 教你如何使用Eloquent 批量insert

圖片
教你如何使用Eloquent做批量insert 假設要新增的資料為 $data = [   ['name' => 'John', 'age' => 25],   ['name' => 'Maria', 'age' => 31],   ['name' => 'Julia', 'age' => 55], ]; 使用insert或query builder都行 Model::insert($data); DB::table('table_name')->insert($data);

[MySQL] 深入 MySQL INSERT ... ON DUPLICATE KEY UPDATE 語法

必要條件   資料表中必須有 PRIMARY或UNIQUE的索引   INSERT時須帶入1. 欄位的資料 使用情境 一般我們在做資料新增時會先檢查資料是否存在,都會使用下列語法 IF(SELECT * FROM table WHERE id= '1')   UPDATE table SET a= a+ 1 WHERE id= '1'; ELSE   INSERT INTO table (id, a) VALUES (2, 1); 可以改成 INSERT INTO table (id, a) VALUES (2, 1) ON DUPLICATE KEY UPDATE a= a+ 1; Mysql會自動判斷該主鍵是否重覆,如果重覆就會叫用後面的 UPDATE 多行資料處理 若是用批量新增,則可以在ON DUPLICATE KEY UPDATE 後用VALUES,以下範例: a為UNIQUE,並且資料存在 (2,1,1) 和 (1,3,3),因為a已存在,所以會將(1,3,3)更新至(1,2,3), (2,1,1)更新至 (2,5,1) ,其餘則插入新紀錄 INSERT INTO TABLE (a,b,c) VALUES  (1,2,3),  (2,5,7),  (3,3,6),  (4,8,2)  ON DUPLICATE KEY UPDATE b=VALUES( b) 注意:ON DUPLICATE KEY UPDATE 為MySQL特有語法,並不是SQL標準語法 參考資料:    MySQL官方文件

[小工具] 簡報程式碼還是複製貼上醜醜的英文嗎? 簡單工具幫你變得美美的

圖片
簡報程式碼還是複製貼上醜醜的英文嗎? 簡單工具幫你變得美美的 在製作簡報時,程式碼的呈現方式讓我非常的頭痛,一大串醜醜的英文看起來就非常不舒服,這邊介紹一個小工具,1秒幫你輸出漂亮的程式碼 工具介紹 Carbon 使用方法 在框框地方輸入程式碼後,按下Save Image就可以輸出圖片了,是不是很方便呢!!!

[Blogger小知識] 簡單4步驟教你在部落格中嵌入漂亮程式碼

圖片
工具介紹 google code prettify 簡單4步驟: 1.進入版面設置後,點選新增小工具  2.選擇小工具 HTML/JavaScript 3.在內容輸入 <script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script> ,注意script標籤一定要加 4.要美化的程式碼用 <pre class="prettyprint">...</pre>  或  <code class="prettyprint">...</code> 包起來 恭喜完成囉!! 備註: 如果要顯示行數的話,加入<pre class="prettyprint linenums">即可,也可以設定第一行從幾號開始唷,例如:<pre class="prettyprint linenums:4">就是從第4行開始計算。

[手機小知識] 教你如何移除Google帳戶

圖片
如何移除 Google 帳戶? Android OS 7.0 (Nougat)、Android OS 6.0 (Mashmallow) 和 Galaxy J5 (2016) 用戶,如需移除 Google 帳戶,請參考以下步驟。 Android OS 7.0 (Nougat) 1. 在應用程式螢幕,按 設定 2. 按 雲端與帳戶 3. 按 帳戶 4. 按 Google 5. 按右上角的 圖示 6. 按 移除帳戶 7. 再按 移除帳戶 ,確定將帳戶移除 Android OS 6.0 (Mashmallow) 1. 在首頁,按 Apps 或 應用程式 2. 按 設定 3. 按 帳戶 4. 按 Google 5. 按右上角的 更多 6. 按 移除帳戶 7. 再按 移除帳戶 ,確定將帳戶移除 Galaxy J5 (2016) 1. 在首頁,按 應用程式 2. 按 設定 3. 按 帳戶 4. 按 Google 5. 點選您的 Gmail 帳戶 6. 按 更多 7. 按 移除帳戶 8. 再按 移除帳戶,確定將帳戶移除  註: 1.      當 Google 帳戶已在裝置上註冊時,Google FRP 將會自動開啟。 2.      當 Google 帳戶在裝置上移除時,Google FRP 將會自動關閉。 參考:   samsung.com

[Laravel] API身分驗證 - Laravel Passport 安裝及用法

圖片
Image from: http://www.cloudways.com/blog/wp-content/uploads/Laravel-Login-Authentication-Banner.jpg 什麼是Laravel Passport 使用前,先簡單介紹Laravel passport,開發API時身分驗證是很重要的,而Laravel Passport提供原生OAuth 2 服務的組件,可通過Composer 將Laravel Passport安裝到自己的專案中,而且使用上非常簡單。 環境配置 Laravel版本:5.4 Passport安裝流程 1.使用 Composer 在專案下安裝 Passport composer require laravel/passport 2. 將 Passport 的providers註冊到配置檔案 config/app.php 的 providers 陣列中: Laravel\Passport\PassportServiceProvider::class 3.執行migrate安裝passport需要的資料表 php artisan migrate 4.執行 passport:install php artisan passport:install 5. 修改 App\User.php ,引入 Laravel\Passport\HasApiTokens,用於檢查已認證使用者的token namespace App; use Laravel\Passport\HasApiTokens; // 新增 use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasApiTokens, Notifiable; // 增加 HasApiTokens } 6.修改 App\Providers\AuthServiceProvider.php,在文件中引入use Laravel\Passport\Passport;,並在boot()方法中加入O

[GCS] Google Cloud Storage 存放靜態網頁

圖片
將網頁上傳至  Google Cloud Storage 我們要創建放置網頁的空間,在 Cloud Storage 中稱之為 Bucket 容器。請從側邊欄進入「Storage」類別中,點選「建立 Bucket」。 再來是網頁的域名,如要綁定自己的域名, 必須先把自己的域名丟到 Google Webmaster 認證,若沒認證成功,是無法建立自己的域名的 ,以下示範綁定自己域名做法,以godaddy為例: 假設域名為www.example.com google預設網域名稱為c.storage.googleapis.com,設定 www  CNAME  c.storage.googleapis.com, bucket名稱必須為www.example.com ,注意CNAME必須和域名開頭一樣www ,綁定好後就可以去bucket設置了。 輸入名稱www.example.com,依照需求選擇空間、位置 成功建立後,就可以按上傳檔案,或是上傳資料夾 上傳完成後,把公開網頁打勾,就可以對檔案開放外連了,如要批次公開網頁可以點選右上角終端機的圖案 在下方命令列打上 gsutil defacl set public-read gs://www.example.com   ,即可 連上網頁 一般預設的網域是 https://storage.googleapis.com/www.example.com/{file.html} 如有指定網域,綁定後已經轉到www.example.com/{file.html}了 設定index和404 Google Cloud Storage 不會自動把index設為首頁、404設為錯誤,必須額外設定 gsutil web set -m index.html -e 404.html gs://www.example.com Google Cloud Storage  靜態網頁完成

[Linux] tar - 壓縮/解壓縮語法

以下簡單的介紹: 常用參數 -c 打包一個 tar 檔案 -x 解開一個 tar 檔案 -t 檢視 tar 檔案的內容 -z 使用 gzip 壓縮 -v 顯示建立 tar 檔案的過程 -P 使用絕對路徑 -f 指定 tar 檔案的檔案名稱。此參數的後面要接檔案名稱,因此要注意參數的順序 (通常是把 f 參數寫在最後一個,或者是與其它參數拆開使用) 常用語法 建立壓縮檔 $ tar -czvf 檔案名稱.gz 來源檔案 說明:   將 來源檔案 壓縮後,打包成一個名稱為 檔案名稱.zip 的壓縮檔, 來源檔案 可以是檔案或目錄。 來源檔案也可以有很多個,以空白字元分隔: $ tar -czvf 檔案名稱.gz  來源檔案1 來源檔案2 ... 來源檔案n 檢視壓縮檔的內容 $ tar -tzvf 檔案名稱.gz 解開壓縮檔的檔案到目前的目錄 $ tar -xzvf 檔案名稱.tgz 複製目錄 $ tar -cvf - 來源目錄 | tar -xvf - 說明:將 來源目錄 下的所有檔案及子目錄複製到目前的目錄,這樣做的好處是可以保留原來的檔案屬性。

[Linux] wget - 非互動式檔案下載語法

Wget 是非互動式檔案下載工具,和curl相似。 以下是簡單的例子: $ wget -t0 -c -nH -np -m -P /localdir http://example.com # -t0: 設定重試次數。當連結中斷或超時,wget會重新連接。 # -c:  設定續傳功能。 # -nH: 不建立該網站名稱的子目錄 /example.com/,而直接在當前目錄下建立鏡像的目錄結構。 # -np: 不遍歷父目錄,如果有連結連到目標資料夾的parent或其他目錄,不下載。 # -m:  鏡像,相當同時使用-r和-N。 # -r:  遞迴下載,把文件中所有的連結都下載回來。 # -N:  下載時檢查timestamp,只下載有更新的文件,如果檔案大小和最修改日期都一樣就不下載。 # -P:  指定下載到本機的某個目錄下。

[Linux] cp - 複製檔案目錄指令

cp 是在 Linux (或其他 Unix 系統) 最常用的指令之一,它是用作複製檔案或目錄的指令。 以下是一些 cp 指令的常用例子: 從 /from/filename.txt 複製到 /to/newfile.txt $ cp /from/filename.txt /to/newfile.txt 將檔案 /from/filename.txt 複製到 /to/ 目錄下, 檔案名稱不變: $ cp /from/filename.txt /to/ 複製目錄及裡面全部內容, 需要加上 -R 參數: $ cp -R /from/dir_name /to/ 複製多個檔案, 以下會複製 index.php, info.php 到 /home/phpini/ $ cp index.php info.php /home/phpini/ 把 /var/www/html/ 全部 .php 結尾的檔案複製到 /home/phpini/ $ cp /var/www/html/*.php /home/phpini/ -p 參數會在複決時連同檔案或目錄屬性一同複製,包括檔案時間,Owner 及權限,下面會將 /var/www/html 完整複製到 /home/phpini/ 裡面: $ cp -p /var/www/html /home/phpini/