程式CODE

2020年12月8日 星期二

彰化GSuite帶出資料

 array:12 [▼

  "success" => true

  "error" => 0

  "error_message" => ""

  "uid" => "f49601c3-7d2f-4c38-bd1d-9ceeacccccc"

  "edu_key" => "4208f4152cb215d19edfa78d4e85ae2ccee65497eccc"

  "name" => "王cc"

  "email" => "wang@chc.edu.tw"

  "kind" => "教職員"

  "title" => "資訊組長"

  "code" => "074628"

  "school" => "縣立cc國小"

  "schools" => array:1 [▼

    0 => array:2 [▼

      "code" => "07462cc"

      "name" => "縣立cc國小"

    ]

  ]

]

2020年12月1日 星期二

cloudschool 學期資料api

 <?php

$API_client_id = "api ID";

$API_client_secret = "api 密碼";


$data = API($API_client_id,$API_client_secret);


echo "<pre>";

print_r($data);


function API($API_client_id,$API_client_secret){


    // =================================================

    //    學生榮譽榜 (url: https://api.chc.edu.tw)

    //    校務佈告欄 (url: https://api.chc.edu.tw/school-news)

    //    同步學期資料 (url: https://api.chc.edu.tw/semester-data)

    //    更改師生密碼 (url: https://api.chc.edu.tw/change-password)


    // API NAME

    $api_name = '/semester-data';

    //$api_name = '/school-news';

    // 更改師生密碼 (url: https://api.chc.edu.tw/change-password)


    // API URL

    $api_url = 'https://api.chc.edu.tw';

    //: https://api.chc.edu.tw/school-news

    // 建立 CURL 連線

    $ch = curl_init();

    // 取 access token

    curl_setopt($ch, CURLOPT_URL, $api_url."/oauth?authorize");

    // 設定擷取的URL網址

    curl_setopt($ch, CURLOPT_POST, TRUE);

    // the variable

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);


    curl_setopt($ch, CURLOPT_POSTFIELDS, array(

        'client_id' => $API_client_id,

        'client_secret' => $API_client_secret,

        'grant_type' => 'client_credentials'

    ));


    $data = curl_exec($ch);

    $data = json_decode($data);


    $access_token = $data->access_token;

    $authorization = "Authorization: Bearer ".$access_token;


    curl_setopt($ch, CURLOPT_URL, $api_url.$api_name);

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization )); // **Inject Token into Header**

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);


//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    $result = curl_exec($ch);

    return json_decode($result);

}

========================================================

帶出

    [更新時間] => 2020-12-02 05:36:13

    [學年] => 109

    [學期] => 1

    [學期開始日期] => 2020-08-01

    [學期結束日期] => 2021-01-31

    [開學日] => 2020-08-31

    [結業日] => 2021-01-20

    [學期編班] => Array

        ( [0] => stdClass Object

                (
                    [年級] => 1
                    [班名] => 一
                    [班序] => 1
                    [導師] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [姓名] => 葉xx
                                    [身分證編碼] => c0e43562cadf2eebba750c5a28835b09fxxxxx
                                )

                        )

                    [學期編班] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [學號] => 109001
                                    [座號] => 1
                                    [姓名] => 王xx
                                    [英文姓名] => 
                                    [性別] => 男
                                    [身分證編碼] => de049fc43f3a4017ab207ecd4a013976xxxxxx
                                )
........................................
                )
    [學期教職員] => Array
        (
            [0] => stdClass Object
                (
                    [處室] => 學務處
                    [職稱] => 學務主任
                    [姓名] => 謝xx
                    [帳號] => xxxx
                    [性別] => 男
                    [身分證編碼] => dad27ff40b2f07cfa866af8510df535046b4dac98125df78d13bxxxx
                    [任教科目] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [年級] => 4
                                    [班序] => 6
                                    [科目] => 電腦
                                    [時數] => 1
                                )

                            [1] => stdClass Object
                                (
                                    [年級] => 4
                                    [班序] => 7
                                    [科目] => 電腦
                                    [時數] => 1
                                )

                        )

                )
..........................
    [單位資料] => Array
        (
            [0] => stdClass Object
                (
                    [處室編號] => 1
                    [處室名稱] => 校長室
                    [電話] => 
                    [分機] => 
                    [網址] => 
                    [排序] => 1
                    [單位職稱] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [職稱] => 校長
                                    [職稱編號] => 1
                                    [職別] => 校長
                                    [排序] => 1
                                )

                        )

                )
...................................
    [課表] => Array
        (
            [0] => stdClass Object
                (
                    [年級] => 1
                    [班序] => 1
                    [班名] => 一
                    [星期] => 1
                    [節次] => 1
                    [科目] => 體育
                    [兼課] => 
                    [專科教室] => 
                    [教師] => 黃xxx
                    [身分證編碼] => 18d1e6dc4f1e03a4a0bbacdb23b9761a9d6fbb142xxxxxxx
                )

...................................

cloudschool oauth2認證

<?php

$clientId = '用戶端ID';


$apiUrl = 'https://api.chc.edu.tw/school-oauth/authorize?client_id='.$clientId.'&response_type=code&state=abc';


if (isset($_GET['data'])) {


    $data = json_decode($_GET['data']);


    print_r($data);


}


else {


    header('Location: '.$apiUrl);



==============================================

取回

stdClass Object
(
[school_no] => 074xxx
[username] => 帳號
[role] => teacher
[name] => 姓名
[edu_key] => 4208f4152cb215d19edfa78d4e85ae2ccee65497edxxxxxxxxxxxx
[title_name] => 職稱
[title_kind] => 教師兼組長
[group] => 系統管理員
)

laravel8安裝

 一、使用 composer 創建專案

composer create-project --prefer-dist laravel/laravel 專案名


裝完, .env 檔也建好了, key 也建好了。
如果沒有 key ,自行下指定  php artisan key:generate



二、變更目錄權限

sudo chmod 777 -R storage/ bootstrap/cache/
或是指定給 apache


三、修改  .env檔,
DB_DATABASE=資料庫名稱
DB_USERNAME=root
DB_PASSWORD=root密碼

建立資料庫

四、網頁目錄指定到 專案目錄/public 
apache 設定

<VirtualHost *:80>
       ServerName 專案網址
       DocumentRoot /var/www/html/專案名/public
       <Directory "/var/www/html/專案名/public/">
               Options -Indexes
               AllowOverride All
               Require all granted
       </Directory>
</VirtualHost>

五、成功連線畫面


六、使用者認證

https://tw511.com/a/01/13382.html

composer require laravel/jetstream

// Install Jetstream with the Livewire stack...
  • 如果你要 Livewire 和 Blade 一起使用,請執行:
php artisan jetstream:install livewire php artisan jetstream:install livewire --teams // Install Jetstream with the Inertia stack...
  • 如果你要 Inertia 與 Vue 一起使用,請執行:
php artisan jetstream:install inertia php artisan jetstream:install inertia --teams
最後執行
npm install && npm run dev



php aitisan migrate  //建立資料表


成功畫面




若有服務不要使用,可以在  ./config/fortity.php  中註解掉
    'features' => [
        Features::registration(),
        Features::resetPasswords(),
        // Features::emailVerification(),
        Features::updateProfileInformation(),
        Features::updatePasswords(),
        Features::twoFactorAuthentication(),
    ],


七、中文化
修改設定檔

2.1 設定
修改 config/app.php
...
'timezone' => 'Asia/Taipei',
'locale' => 'zh-TW',
'fallback_locale' => 'zh-TW',
...

2.2 語系
https://github.com/caouecs/Laravel-lang

下載 zh-TW 目錄及 zh_TW.json 至 resourses/lag/
//如果沒有顯示中文
php artisan config:clear
php artisan config:cache


八、laravel8 出現 controller not exit
https://medium.com/@litvinjuan/how-to-fix-target-class-does-not-exist-in-laravel-8-f9e28b79f8b4
請在  route 寫在完整路徑

2020年11月19日 星期四

ubuntu 20.04 安裝 docker-ce docker-compose

(1)

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

(2)

sudo bash -c 'echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu eoan stable" > /etc/apt/sources.list.d/docker-ce.list'


(3)

sudo apt update


(4)

sudo apt-get install -y docker-ce


(5)

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


(6)

sudo chmod +x /usr/local/bin/docker-compose


================

參考

https://philipzheng.gitbook.io/docker_practice/


常用指令

到 docker hub 下載 images

如  sudo docker pull centos

sudo docker images //秀出目前的  images ,images 為唯讀

sudo docker run -t -i centos  //建立容器,並進入

//ctrl + P 然後 ctrl + Q 跳離容器,讓它繼續在背景執行。

或是

sudo docker run -idt centos  //建立容器後直接讓容器在背景執行

再進去容器

sudo docker exec -ti 容器id或name bash(或指令)

sudo docker rm 容器id或name bash //移除容器

sudo docker start 容器id或name bash //啟動容器

sudo docker stop 容器id或name bash //停止容器






sudo systemctrl start docker

sudo systemctrl enable docker

docker images

docker ps  //列出執行中的容器

docker ps -a   //列出所有容器

docker stop [image_name]

docker start

docker restart

docker exec -ti docker_php_1 composer install

docker-compose up -d

(--build)

docker-compose down

docker-compose ps

2020年11月15日 星期日

無障礙網頁設計重點

https://blog.camel2243.com/2016/04/30/html-%E8%A2%AB%E5%BF%BD%E8%A6%96%E7%9A%84html-attribute-aria-label%E3%80%81aria-hidden/


aria-label,螢幕隱藏 

讓朗讀軟體讀到此元件


aria-hidden

可以讓朗讀軟體讀不到此元件


sr-only

只可以讓朗讀軟體讀到此元件

aria-labelledby,螢幕顯示,簡明描述 

aria-describedby,完善描述

aria-live:polite assertive off 

aria-current="page"


wai-aria

<header role= "banner">

<nav role="navigation">

<main role="main">

<footer role="contentinfo">

role = "presentation"

===================================

表格設計

<caption>表格摘要,寫在 <table>下面

或是用

<figure>

  <figcaption>

    ........

  </figcaption>

</figure>

<th scope="col">姓名</th> //方向屬性

<th scope="row">08:10 - 09:00 </th> //方向屬性

<td headers="">


2020年11月1日 星期日

ssh 免密碼

 ssh-keygen

一直按下一步

結束後打,ssh-copy-id xxx@x.x.x.x
打密碼

測試
ssh xx@x.x.x.x
是不是可以免密碼登入了


搬至另一部電腦

只要 copy .ssh/id_rsa id_rsa.pub

2020年10月29日 星期四

ubuntu筆電停用keyboard鍵盤和touchpad觸控板

老筆電的鍵盤壞了,觸控板壞了,裝了外接式的後,原來的會不小心按到

只要下:

 xinput list

============================================================

⎡ Virtual core pointer                    id=2 [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer              id=4 [slave  pointer  (2)]

⎜   ↳ ETPS/2 Elantech Touchpad                id=12 [slave  pointer  (2)]

⎜   ↳ SIGMACHIP Usb Mouse                      id=13 [slave  pointer  (2)]

⎣ Virtual core keyboard                    id=3 [master keyboard (2)]

    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]

    ↳ Power Button                            id=6 [slave  keyboard (3)]

    ↳ Video Bus                                id=7 [slave  keyboard (3)]

    ↳ Sleep Button                            id=8 [slave  keyboard (3)]

    ↳ USB2.0 UVC 1.3M WebCam: USB2.0          id=9 [slave  keyboard (3)]

    ↳ Asus Laptop extra buttons                id=10 [slave  keyboard (3)]

    ↳ AT Translated Set 2 keyboard            id=11 [slave  keyboard (3)]

    ↳ Chicony USB Keyboard                    id=14 [slave  keyboard (3)]

    ↳ Chicony USB Keyboard Consumer Control    id=15 [slave  keyboard (3)]

    ↳ Chicony USB Keyboard System Control      id=16 [slave  keyboard (3)]

============================================================

找到原來的鍵盤及觸控板編號後

xinput float 10

xinput float 11

xinput float 12

2020年9月14日 星期一

windows10下 原來會開機啟動的程式,卻無法,解決方式如文所示



參考自

https://ithelp.ithome.com.tw/questions/10193548

除了關閉UAC外,需在登錄檔「HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies\ System」的「EnableLUA」修改為0重新開機就可以