2018年12月25日 星期二

Laravel的一些小技巧 - DB::table(一)

//利用兩層foreach,將資料寫入
//
$names = array('a','b','c');$ages = array('1','2','3');
foreach($names as $name)
{
    foreach($ages as $age)
    {
        DB::table('users')->insert(
            array('name' => $name, 'age' => $age)
        );    }
}

來源:stackoverflow - How to insert multiple record in laravel


https://stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent

https://stackoverflow.com/questions/40106855/how-to-insert-multiple-rows-in-laravel-5?rq=1

https://stackoverflow.com/questions/39113682/insert-multiple-records-at-once-with-laravel/39389935

https://stackoverflow.com/questions/1307618/multiple-mysql-insert-statements-in-one-query-php

2018年12月23日 星期日

建立HTML表格,並且讓TR變成Form表單

一般傳統設計
我們可能會在FORM表單下包著TABLE,這樣當所有的element要被送出時,我們都會透過submit按鈕將資料全部送出,但假使我們的資料有分區塊呢?

把FORM包在TABLE底下,好像可以區分出好幾列,也可以個別送出表單資料且一如往昔,但是這樣的設計就w3c的規範是不正規的、無效的(DOM沒有這樣規定)。所以當使用javascript要取用DOM元素時,是有問題的,試想FORM的子元素或是TR的子元素,絕對不會是FORM或是TD,這樣想起來就很怪,而且一定出錯。

<table>
    <tr>
        <form method="GET" action="whatever">
            <td><input type="text"/></td>
            <td><input type="text"/></td>
        </form>
    </tr>
    <tr>
        <form method="GET" action="whatever">
            <td><input type="text"/></td>
            <td><input type="text"/></td>
        </form>
    </tr>
</table>

因此現在很多的網頁設計都改用DIV的方式來設計並把表單包進來。

最近看到一個有趣的設計,可以利用CSS的方式,融合表單以及TABLE的樣式,做出一個像TABLE一樣的表格,而且又可以分區塊送出FORM需要的動作ACTION。主要用的就是display:table、display:table-row、display:table-cell

<style>
    DIV.table    {
        display:table;    }
    FORM.tr, DIV.tr    {
        display:table-row;    }
    SPAN.td    {
        display:table-cell;    }
</style>
...<br />
<div class="table">
    <form action="blah.html" class="tr" method="post">
        <span class="td"><input type="text" /></span>
        <span class="td"><input type="text" /></span>
    </form>
    <div class="tr">
        <span class="td">(cell data)</span>
        <span class="td">(cell data)</span>
    </div>
    ...</div> 

參考網頁:stackoverflow - Create a HTML table where each TR is a FORM

Laravel的一些技巧 - Eloquent(一)

//使用whereIn取得學校列表,函式先取(資料庫欄位的'id', 再取學校陣列)
//School物件是use App\School這個Model

$schools = School::whereIn('id', $select_school)->get();
//DB::table的寫法//$schools = DB::table('schools')->whereIn('id', $select_school)->get();

來源:stackoverflow-How to Make Laravel Eloquent “IN” Query?

2018年12月22日 星期六

Laravel的一些技巧 - Blade (一)

//foreach取學校,最後一間學校不會出現「、」號
//使用$loop變數
@foreach( $schools as $school)
    {{ $loop->first ? '' : '' }}
    {{ $school->school_name }}
@endforeach

來源:stackoverflow-How to remove comma from last array in Laravel 5?

2018年12月20日 星期四

$_ENV環境變數為空值

PHP中的$_ENV是伺服器中環境變數的數組,他是PHP中的超級全域變數,最近學習Laravel時有一.env的環境設定檔,其原理是其設定好的環境設定值,加載到PHP的$_ENV全域變數中。

基於好奇,在未啟動Laravel環境的狀態下,試著在PHP程式中把$_ENV倒出來,可使用的語法有三中
1. var_dump($_ENV);
2. print_r($_ENV);
3.
foreach ($ENV as $key =>$value){
echo $key . "==>" . $value . "<br>" 
}

結果發現倒出來的$_ENV全是空值

原來在php.ini中,有一 variables_order設定值,如果是設為GPCS,就不會顯示$_ENV環境變數。G指的是Get、P指的是Post、C指的是Cookie、S指的是Session,而ENV的代表英文為E,所以如果希望$_ENV能撈出伺服器上的環境變數,variables_order就應該設定為EGPCS

variables_order =  EGPCS

但是,看了一下,發現如果伺服器上的環境變數被撈光了,好像不太安全,所以其實php.ini的說明中也說了,發行版伺服器的php.ini設定建議還是採用GPCS。
ps.設定完後,要記得重起Apache2




2018年12月18日 星期二

把form表單內的資料清空

把form表單內的資料清空

範例1:
$("#client.frm")[0].reset(); //faster version: $("#client")[0].reset();

範例2:
$("#my-form").trigger("reset");

範例3:
document.getElementById("client").reset();




2018年11月30日 星期五

學務系統資料庫匯出匯入

學務系統資料庫匯出
mysqldump  -u帳號  -p密碼  --default-character-set=latin1  sfs3 > sfs3.sql

學務系統某些資料表匯出
mysqldump -u帳號 -p密碼 --default-character-set=latin1 sfs3 table1 table2 table3 > sfs3_tables.sql

資料庫匯入
mysql -u帳號 -p密碼 sfs3 < sfs3.sql

資料表匯入
mysql -u帳號 -p密碼 sfs3 < sfs3_tables.sql

2018年11月28日 星期三

更改資料庫為utf8mb4

ALTER DATABASE edu DEFAULT CHARACTER SET='utf8mb4';

ALTER DATABASE edu DEFAULT Collate='utf8mb4_unicode_ci';

2018年11月10日 星期六

[Mac]在Mac 下設定虛擬站台

Mac OSX下設定虛擬站台的操作跟Ubuntu有些類似,不太一樣的只是路徑及一些細微的觀念

Apache2伺服器的設定

在這裡需要一樣要設定httpd.conf這個檔案,他的路徑是放在/etc/apache2/httpd.conf,而且不太一樣的是,其實/etc/這個路徑基於安全理由是鏈結到/private/etc/,這是Ubuntu所沒有的。
此外,為何要來更改httpd.conf呢?那是因為 Mac OSX的虛擬站台設定是在另外一個檔案,但是預設的狀態他並沒有被Include 進來,所以我們這邊的修改純粹只是要將註解拿掉

sudo vi /etc/apache2/httpd.conf

搜尋vhosts,將Include 左邊的註解取消
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

或者搜尋mod_vhost_alias.so,將LoadModule左方的註解拿掉

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

編輯httpd-vhosts.conf

sudo vi /etc/apache2/extra/httpd-vhosts.conf

在最後面加上(紅字的地方請根據實際狀況修改)
<VirtualHost *:80>
    ServerName school.com
    ServerAlias www.school.com
    DocumentRoot "/Library/WebServer/Documents/school_post/public"
    ErrorLog "/private/var/log/apache2/school.com-error_log"
    CustomLog "/private/var/log/apache2/school.com-access_log" common
    ServerAdmin admin@school.com
</VirtualHost>

對應IP Address

接下來的設定是針對自己開發者,自己爽的,只是方便檢視自己的虛擬站台,並沒有真正寫到DNS,所以設定的Domain Name只有自己電腦可以對應解析,別台電腦是看不到的喔!要注意!!

sudo vi /etc/hosts

127.0.0.1 school.com www.school.com


參考網頁:

[Mac]修改Vim 參數

vi ~/.vimrc
使用的時候
註解「#」「//」都要拿掉


#編碼
set encoding=utf-8
set fileencodings=utf-8,cp950
syntax on        //語法上色顯示
set ai           //自動縮排
set shiftwidth=4 //設定縮排寬度4

set ruler        //顯示右下角參數,如第幾行第幾個字
set backspace=2  // insert 也可用 backspace
set ic           //設定搜尋忽略大小寫
set hlsearch     //設定高亮度顯示搜尋結果
set incsearch    //在關鍵字還沒完全輸入完畢前就顯示結果
set smartindent  //設定 smartindent
set confirm      //操作過程有衝突時,以明確的文字來詢問
set history=200  //保留 200 個使用過的指令
set cursorline   //顯示目前的游標位置
set number       //顯示行數
:nohl            //搜尋不會有底色
:set nowrap      //字串太長不自動換行
colorscheme torte //個人喜好顏色配置


參考網頁:



2018年11月8日 星期四

[Mac]升級PHP到PHP 7.x

OS X 10.6以後的版本如果要升級PHP其實很簡單
只要一行指令就可以了
下面列出不同的幾個版本,安裝過程會花點時間,要有點耐心

PHP 7.3(下一個穩定版) - OS X 10.10以後的版本
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.3

PHP 7.2(現在穩定版) - OS X 10.10以後的版本
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.2

PHP 7.1(舊版) - OS X 10.10以後的版本
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.1

PHP 7.0(舊版) - OS X 10.10以後的版本
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.0

附帶一提OS X 10.8以前的版本無法安裝PHP 7.x,最高只能安裝到PHP 5.6,而PHP 5.6的維護也即將於2018/12/31終止維護,所以建議大家改用PHP 7.x來做開發

另外,儘管上面的安裝完成了,但是若下指令php -v,仍舊會查詢到舊號的PHP,這是因為php-osx並沒有去覆寫舊的php (/usr/local/php5)設定,而是另外寫到/usr/local/php5/bin/php,因此我們可以修改個人的環境變數,使其執行新版PHP的路徑
vi ~/.profile   或者   vi ~/.bash_profile

寫入
export PATH=/usr/local/php5/bin:$PATH




2018年11月7日 星期三

[Mac]localhost拒絕連線

我的Apache2有啟動,但是在瀏覽器輸入127.0.0.1或者localhost卻無法看到自己的網站
輸入
sudo lsof -iTCP:80 -sTCP:LISTEN
80埠沒有被佔用

再輸入
$ sudo /usr/sbin/httpd -k start

出現以下錯誤訊息
httpd: Syntax error on line 176 of /private/etc/apache2/httpd.conf: Expected </FilesMatch> but saw </FileMatch>

原來httpd的語法有錯誤,在/private/etc/apache2/httpd.conf第176行
</FilesMatch>誤寫成
</FileMatch>



參考網頁:

2018年10月26日 星期五

架設在Ubuntu14.04的XOOPS2.5.9網站,要改成HTTPS


SSL(Secure Sockets Layer),即安全通訊端層協定,傳輸層安全協定使用X.509認證,利用非對稱加密演算來對通訊方做身分認證,之後再交換對稱金鑰作為會談金鑰(Session key)。這個會談金鑰是用來將通訊兩方交換的資料做加密,保證兩個應用間通訊的保密性和可靠性,使客戶與伺服器應用之間的通訊不被攻擊者竊聽。(內容擷取自維基百科)

HTTPS(Hyper Text Transfer Protocol Secure,超文本傳輸安全協議),是一種透過電腦網路進行安全通訊的傳輸協定,在傳輸過程中,封包會受到加密保護,啟用SSL,才能使用HTTPS傳輸協定。

XOOPS是一套開放原始碼的內容管理系統,採用PHP語言跟MySQL資料庫。 模組化設計的功能與界面,便於建置網頁設計。XOOPS本身已經支援HTTPS協定,所以倘使伺服器主機已經將SSL服務設定好,XOOPS原則上就可以通過HTTPS協定瀏覽。

但並不是每件事情都是美好的,上面的訊息沒告訴我,假如我的XOOPS是以前架設的,而我如今想朝SSL協定、HTTPS協定靠攏,那我該怎麼辦呢?
也因為是以前的就架好的網站,瀏覽器網址列前總是出現「不安全」三個字,到底危不危險,我應該怎麼辦呢?

註1:不安全其實只是說網站沒有SSL憑證,傳輸封包時會以明碼傳遞。學校網頁又沒什麼機密資訊,明碼傳遞也沒差,但是當瀏覽器評斷你的網站不安全,就會讓有些人誤以為這個網站有病毒、有危險,總之就是不喜歡)。

我的學校網站是用XOOPS架設的,印象中是兩年前使用2.5.7版開始架設,後來經過幾次的升級改版,倘使這時候打掉重練,要通過SSL憑證驗證,是非常容易,但內容重製卻是非常辛苦的,所以我決定直接想辦法將HTTP的網站改造成HTTPS的網站,以符合SSL規範。

簡單分析一下可能會遇到的問題:

  1.  需要申請SSL及設定。
  2.  修改XOOPS主要設定檔mainfile.php的Schema資訊
  3.  修改XOOPS資料庫中自身網站的URI連結
  4.  處理混合式內容警告
  5.  強迫HTTP網址自動轉為 HTTPS
  6.  持續不斷的修正


一、申請SSL及設定

要將XOOPS設定為HTTPS連線,首先要先有可信任的SSL憑證,在這邊我是參考How To Secure Apache with Let's Encrypt on Ubuntu 14.04以及ET Wang的用certbot申請SSL,五分鐘搞定,申請了Let't Encrypt免費憑證,為什麼會選用Let't Encrypt的原因,主要是因為他申請非常容易簡單,此外它還有一個certbot機器人,只要執行這個機器人指令,他就會自動幫你把憑證延期。

了解這句話的意思嗎?一般來說,免費憑證通常都只有三個月的生命週期,期限到了,就必須還要展期或重新申請,這對我們這種懶人而言是件麻煩的差事,所以啦!如果有機器人可以代勞,我們只要把指令加入排程中,他就會替我們自動展期,但是還是要附帶一提,免費的憑證雖然可以幫你通過瀏覽器的SSL檢測,但是若是不幸發生封包傳輸過程中,加密被破解時,這些免費憑證公司也是免責的,你無法對這些免費憑證公司要求賠償或申訴,所以假如你的網站資料很重要、很機密,最好的做法還是花錢去申請公信力佳的憑證喔!

前提:

  • Ubuntu 14.04,以及擁有sudo能力的使用者
  • 要有完整的網域名稱

Setp 1 - 下載Let's Encrypt用戶端

想要將Let's Encrypt憑證安裝在主機上,前提是要安裝Certbot軟體,但因為他第三方軟體,所以要先將他寫入儲存庫中,才方便使用apt安裝與更新。

1.將第三方軟體certbot加入repository
sudo add-apt-repository ppa:certbot/certbot

2.更新
sudo apt-get update

3.安裝 python-certbot-apache
sudo apt-get install python-certbot-apache

Setp 2 - 設定SSL憑證

1. 設定SSL憑證、指定完整的網域、自動轉換一次搞定,只要一個指令,這過程中會問你一些問題,就請你自己回答吧,或者請你參考ET Wang的certbot申請SSL,五分鐘搞定說明。(紅字的地方,要改成你的完整網域)
sudo certbot --apache -d example.com

程式執行成功後,可以到以下網站檢測,SSL憑證是否已經啟用。(紅字的地方,要改成你的完整網域)
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

Setp 3 - Certbot自動更新

1.測試更新
sudo certbot renew --dry-run

2.寫入排程,每三個月更新一次憑證
0 0 * */3 * /root/certbot-auto renew --quiet


二、修改XOOPS主要設定檔mainfile.php的Schema資訊

當你上面的憑證設定完成後,基本上你若使用https://example.com,瀏覽你的網站時,你會發現版面是錯亂的,這主要問題是控制版面的css、js檔,被指定為http路徑,在目前的HTTPS狀況下這些css、js檔無法順利被讀取。

sudo vi /var/www/html/mainfile.php

大約20行左右,自動取得網址的副程式中
parse_url()函式中的http改成https
if(!function_exists('get_xoops_url')){
  function get_xoops_url(){
    $u=parse_url("https://".$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI']);

註2:這地方其實有我所不解的地方,XOOPS另有一個判斷HTTPS的伺服器變數$_SERVER['HTTPS'],但是它卻為空,無法自動判斷。

三、修改XOOPS資料庫中自身網站的URI連結

修改到這裡,畫面會比較正常,但是許多的連結仍是http的,而這些URI連結是寫入在資料庫中,所以就參考以前寫的Xoops移機的步驟,把這些原本是http的網址改成https,在這裡因為會修改到資料庫,所以強烈建議:倒出來的sql檔,一定要備份再備份,避免難以回復的錯誤

先將舊機網頁停機,避免還有人透過網頁將資料寫入資料庫

1. sudo service apache2 stop

2.在舊機器上,利用mysqldump將資料備份出來

mysqldump  -uroot  -p  --default-character-set=utf8  xoops > /home/webadmin/xoops.sql

3.編輯資料庫備份檔,將舊IP取代為新IP

sudo vi /home/webadmin/xoops.sql
在vi模式下執行取代工作
格式
:1,$s/舊IP/新IP/s

執行以下的指令
:1,$s/http:\/\/www.dches.chc.edu.tw/https:\/\/www.dches.chc.edu.tw/g
:1,$s/http:\/\/163.23.112.196/https:\/\/163.23.112.196/g

註3:
紅字的地方請根據自己的狀況修改。這裡的「\/\/」這不是W(打不溜)喔!「\」是拖曳符號,後面接續著「/」,repeat兩次,,這樣才能正確解析出「\\」

4.在新機器上將資料庫備份檔匯入(前提是新機器已經裝了Xoops)

mysqladmin -uroot -p create xoops
mysql -uroot -p  xoops < /home/webadmin/xoops.sql

5.重啟Apache2

sudo service apache2 start

四、處理混合式內容警告

什麼是混合式內容呢?簡單來說,就是你的網頁中嵌入的圖片、iframe框架、css、js....等等,混雜了HTTP以及HTTPS鏈結兩種樣式,既然現在已改成SSL認證,傳統的HTTP練結是不被允許的,所以瀏覽器依舊不秀出鎖頭讓你輕鬆通過。

其實上面我們上面第二點、第三點修改mainfile.php以及修改資料庫的動作,主要就是在修改混合式內容警告的問題,但難免仍有漏網之魚,像是自己手動輸入網址的圖片或是自訂頁面的框架(例如iframe),有些不見得都有寫入資料庫中,這時就得手動尋找手動修正。

我遇到的狀況比較單純,只剩幾張圖片有混合式問題,我是利用FireFox火狐狸,在頁面上點選右鍵 /「檢視頁面資訊」/「媒體」,查看網頁中的圖片,有無http開頭的,如果有的話,就把它修正成HTTPS連結也可以檢視的狀態。

舉例來說:
我的網頁中有連結指定家庭教育中心的一張圖檔,我先試著把他的協定改成https://chc.xxx.xxx.xxx/img_helpline.png
看看他會不會正常顯示,如果該網站也有申請SSL憑證的話,這樣子的修正就正常顯示,但是假如該網站並沒有使用SSL認證,這樣的圖片鏈結指定當然是錯誤的,所以啦,要嘛就不要再連到那裡去,要嘛就乾脆把該圖片下載回到自己主機上,重設連結,但須要提醒的是,如果採用第二種做法,要注意智慧財產權的問題喔,因為你已經下載回來己用,公開散播囉!



五、強迫HTTP網址自動轉為 HTTPS

好了,花了這麼多時間修改,基本上已經OK了,但是別人如果還是輸入http://xxx.xxx.xxx要來瀏覽你的網站,基本上還是不安全的嘛,那你幹嘛還要花那麼多時間修改,所以只好放大絕了,修改主機的Apache設定,將凡是連結到80埠瀏覽網頁的,全導向443埠。
寫法很多種,有人說要寫到.htaccess,但是我比較偷懶,直接修改Apache虛擬站的000-default.conf就好了,這樣最快。而倘使你寫入的規則沒有執行,要嘛就是你的mod_rewrite模組沒有裝、要嘛沒有啟用,請參考[Rewrite note.] 重寫規則筆記這篇。


sudo vi /etc/apache2/sites-enabled/000-default.conf

在</VirtualHost>前的任一位置,寫上

▲寫法1: RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

或是
▲寫法2:RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

或是
▲寫法3:
Redirect permanent / https://www.dches.chc.edu.tw
如果上面的做法都不成,第三種做法是,只要是連到網站,強制導到https://www.dches.chc.edu.tw

註4:紅字的地方要改喔,不然就全導向我們學校了,第三種寫法其實有點小問題,還是建議先嘗試使用寫法1或寫法2

六、持續不斷地修正

沒有人可以跟你保證,經過上面的修正後一切都可以高枕無憂,上面介紹的方法,應該可以解決大部分的移轉問題,但接下來依舊要不斷地檢視網頁內容,尤其是網站分枝如果夠多,混合式內容警告還是有可能會出現,一旦出現,按上述方法持續不斷地修正喔!


參考網站:

2018年10月4日 星期四

常用的正規表示式

可以使用時機除了網頁的表單設計外,最近才發現原來Google表單可以這樣來使用

身分證的正規表示式
^[A-Z][0-9]{9}$

市話的正規表示式
例:04-7123456
^[0][2-9]{1,2}\-\d{6,7}$

西元格式的正規表示式
^[1-9][0-9]{3}\/[1]{0,1}[0-9]\/[123]{0,1}[0-9]$

^[1-9]\d{3}\/[1]?\d\/[123]?\d$

手機的正規表示式
例:0912-3456789
^[0][9]\d{2}\-\d{6}$

參考網頁:

2018年8月10日 星期五

Ubuntu 16.04 無線網路常常無預警斷線--嘗試解決

一直以來都有的症頭,筆電安裝Ubuntu16.04後,無線網路有時候就會無預警的斷線,就算換了不同的AP環境,這樣的情形還是偶一發生,雖然頻率不是很頻繁,而且只要斷掉wifi後再重啟,就都可以正常連線,今天終於不要太ㄚQ地,試試、找找解決的方法。
sudo service network restart

我的推論是,我的無線模組應該有點爛,所以才容易斷線。

因此試試修改了/etc/ppp/options


# If this option is given, pppd will presume the peer to be dead if n
# LCP echo-requests are sent without receiving a valid LCP echo-reply.
# If this happens, pppd will terminate the connection.  Use of this
# option requires a non-zero value for the lcp-echo-interval parameter.
# This option can be used to enable pppd to terminate after the physical
# connection has been broken (e.g., the modem has hung up) in
# situations where no hardware modem control lines are available.
lcp-echo-failure 4


上面的意思大致上是說pppd服務會去偵測,如果LCP echo-request的回應值如果低於所設的數字,pppd服務就會斷線。這有可能是AP modem的問題。

當然我寧願猜測是我網路卡很爛所造成的問題,畢竟我已在不同環境都會發生這樣的症頭了。

所以更改了
lcp-echo-failure 40
#echo-requests 回應數如果超過40次,再自動幫我關閉pppd服務斷線吧!!

 sudo service pppd-dns restart

附註:目前觀察中.......

2018年6月12日 星期二

更改Google Drive Stream Cache儲存位置

安裝完Google Drive Stream後,預設的Cache儲存位置為
%LOCALAPPDATA%\Google\DriveFS
實際位置為
C:\Users\<<username>>\AppData\Local\Google\DriveFS

當每次登入開始使用Google Drive Stream後,這個Cache位置位自動產生暫存檔,簡言之每當上傳或讀取Google Drive Stream的檔案時,都會先把檔案存在這個DriveFS資料夾。

然而預設的路徑會有幾個問題
1. C碟又要執行程式的開啟,又要一邊負責上傳或下載,忙碌的很,當然會影響效能。
2. 備份檔案時,會先將檔案存在C槽的DriveFS資料夾,假如要備份的檔案大於C槽的空間,就會死當了。

所以把Google Drive Stream的DriveFS資料夾搬到比較大的D槽,似乎是比較不錯的方案。

1.以管理員權限開啟CMD
進入C:\Windows\System32
找到cmd.exe
右鍵
以系統管理員身分執行
2.複製存緩到E碟
robocopy "%LOCALAPPDATA%\Local\Google\DriveFS" "D:\GoogleDrive" /E /COPYALL /XJ

3.刪除C碟存緩
rmdir "%LOCALAPPDATA%\Local\Google\DriveFS" /S /Q

4.連結資料夾到E碟
mklink /J "%LOCALAPPDATA%\Local\Google\DriveFS" "D:\GoogleDrive"
參考資料:
Google Drive File Stream改存緩教學

2018年6月2日 星期六

Blog中,程式高亮度設定

要讓部落格可以出現高亮度顯示以及像寫程式般的介面
只要把以下的程式碼貼到<head>之後,<body>之前
只要有用到<pre>xxxxxx</pre>
就可顯示
/*程式碼高亮設定*/ 
/*css部份*/


/*main box*/ 
.red{ 
 border: 1px solid #ff0000; 
 padding: 3px 3px 3px 0; 
} 
pre.prettyprint, code.prettyprint { 
 border-radius: 8px; 
 -moz-border-radius: 8px; 
 -webkit-border-radius: 8px; 
 padding: 5px; 
 background-color: #eee !important; 
 box-shadow: 0 0 5px #999; 
 -moz-box-shadow: 0 0 5px #999; 
 -webkit-box-shadow: 0 0 5px #999; 
} 
/*font*/ 
pre span, code span { 
 font-family: 'monospace', 'Courier New', 'Microsoft JhengHei', sans-serif !important; 
 font-size: 12px !important; 
} 
/*each line*/ 
li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9 { 
 margin: 0 !important; 
 padding: 2px 0 2px 4px !important; 
 list-style-type:decimal !important; 
 border-left: 1px solid #999; 
} 
/*even line*/ 
li.L1, li.L3, li.L5, li.L7, li.L9 { 
 background-color: #f6f6f6 !important; 
} 
/*odd line*/ 
li.L0, li.L2, li.L4, li.L6, li.L8 { 
 background-color: #FFF !important; 
} 
/*line-number background color*/ 
ol.linenums { 
 background-color: #eee; 
 margin-left: 10px; 
} 


/*程式高亮度設定script部份*/
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?autoload=true&amp;lang=basic&amp;lang=css&amp;lang=sql"> 
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js'/> 
<script type='text/javascript'> 
    $(&quot;pre&quot;).each(function(){ 
        $(this).addClass(&#39;prettyprint&#39;).addClass(&#39;linenums&#39;); 
    }); 
</script>

2018年5月30日 星期三

CentOS最小安裝,網路沒有啟動,安裝net-tools並設定網路

CentOS 7最小安裝後,網路沒有啟動,而且也沒有ifconfig指令
1.先檢查網卡名稱
ls /proc/net/dev_snmp6
enp0s3 lo                                ##得到網卡名稱為 enp0s3 (每台主機可能不同)

2.修改網卡資訊
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3     ##真慘,連vim都沒有

以下分為兩種設定模式,一種是DHCP自動取得,另一種是手動指定IP,請依現狀擇一設定
2-1.DHCP自動取得
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=cbe22559-e738-444b-9a3e-4faf0ca102e3
DEVICE=enp0s3
ONBOOT=yes

2-2.手動自訂IP
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=cbe22559-e738-444b-9a3e-4faf0ca102e3
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.1.109
GATEWAY=192.168.1.254
NETWORK=192.168.1.0
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=168.95.1.1

3.啟動網卡
ifup enp0s3


啟用網路卡之後,若想要查看網路卡的狀況,通常我們會使用 ifconfig 這個指令,而 CentOS 的最小安裝中並沒有包含這個指令,所以執行時會出現這樣的錯誤訊息:
ifconfig: command not found

4.若要使用ifconfig,請安裝net-tools 這個套件:
yum install net-tools

參考網頁:

visudo,設定可以使用sudo的使用者

在使用Linux系統時,我們常常使用到sudo的指令,這個指令是讓我們只要輸入自己的密碼,就得以暫時切換到root身份,去執行一些root大神才有的權限,去執行某個指令。

然而並非每個使用者都可以擁有sudo切換的能力,要設定哪些人或哪些群組有這樣的權限,就要修改/etc/sudoers這個設定檔,Linux貼心地設計了visudo指令方便我們去做這件事,然而你也可以把visudo這個指令視為vi /etc/sudoers。

 優點:
1. 執行sudo指令的時候,會再確認一次
2. 會記錄哪些權限較高的指令,是誰下的

 步驟:
1. 終端機輸入visudo
2. 找到
root ALL=(ALL) ALL
這一行指的是
root這個使用者,可以在所有的終端機下(第1個ALL),使用所有人的(第2個ALL),所有指令(第3個ALL)

照此邏輯,如法泡製,加上
test ALL=(ALL) ALL

這樣的話,test就可以在任何終端機
以任何所有使用者的身分,
來執行所有任何的指令。

--------End---------------

以上是最簡單的設定
當然還有其他的設定方式
ex1:
test ALL= /sbin/poweroff
這是指使用者test,
可以執行關機的指令

ex2:
/etc/sudoers這個檔案還有這一行,
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
意思是說如果你的使用者如果是wheel這個群組,也可以在任何終端機,以任何使用者身份,執行所有任何指令。
註:%是群組的意思


所以
輸入:
usermod -a -G wheel chunkai <==將 chunkai 加入 wheel 的支援
接下來再使用id指令
id chunkai
可以察看chunkai的權限類似
uid=1000(chunkai) gid=1000(chunkai) groups=1000(chunkai),10(wheel)


當使用者chunkai使用sudo時,也可執行root般的指令了。

參考網頁:

2018年4月26日 星期四

只允許許可網域共享小組雲端硬碟

狀況:
希望小組雲端硬碟分享對象,只允許校內老師使用。

解決方法:
要解決前要先瞭解幾個關鍵點
一、將信任的網域加入許可清單
主要是網域的設定


二、為雲端硬碟中的共用檔案設定權限
主要是針對應用程式-->雲端硬碟的設定
一旦上面的信任網域建立後,只有信任網域能被邀請加入小組雲端硬碟共用






2018年3月20日 星期二

G Suite帳號出現DF-CHAFTA-01錯誤

如下圖,學生使用G Suite帳號使用平板,但是開啟Google Play商店時,會出現DF-CHAFTA-01錯誤:


經查,應該是G Suite系統管理者設定錯誤造成,到「應用程式」「其他 Google 服務」,將Google Play設成「為所有人啟用」,問題就解決了。