發表文章

目前顯示的是 4月, 2019的文章

LTE筆記: 5G NR frame structure

圖片
工研院 陳仁賢 博士 @ 交通大學 3GPP標準會議現況與趨勢研討會 5G NR 的目標: 使用兩個不同的頻帶 (sub-6GHz, mmWave-28GHz) 在此兩個不同通道特性的頻帶上, 提供一致的通道接取 來自:  https://news.samsung.com/global/everything-about-5g-samsung-publishes-5g-nr-standards-whitepap 4G LTE 的通訊協定 (TDD 部分) TDD 有 7 種不同的配置 (靜態, 固定) 使用 CP 保護 data (CP 長度和 coverage 相關) sub-carrier spacing: 15 KHz  對於 5G NR mmWave 的新問題: 通訊距離過短, 需要 beam-training 的技術 => 需要大量的資訊回報, 較適合 TDD 的架構 Small cell => 覆蓋範圍變小 => 減少 CP 的需求 => 縮短 CP, 或是拉寬 sub-carrier spacing Small cell => 動態的 UL/ DL 的需求 => 使用者少, UL/ DL 的使用需求隨著時間改變 => 動態的 TDD 分配架構 => slot configuration 更寬的頻帶使用, 20MHz => 200 MHz => 寬頻帶來大量的 sub-carrier, 以及 FFT 的需求 => 推升電路複雜度, 並使裝置更耗電 => Bandwidth Part (BWP) => 只接收部分的頻寬 5G NR 的新框架: 動態的 sub-carrier spacing 以 15 KHz 作為一個單位 (numerologies = 0) 15 KHz * 2^n (n = 0, 1, 2, 4) 不同的設定對應到不同的 CP 長度 來自:  https://www.slideshare.net/3G4GLtd/5g-nr-key-features-and-enhancements 5G NR 的新框架: dynamic TDD 模式 3 types of OFDM symbol

[REST] REST API 的 client 程式開發 (node-rest-client)

圖片
在之前的 文章 中, 我們介紹了如何建立一個 json-server, 通常, 這樣的架構是為了作為 RESTful API 的介面, 在文章的安裝步驟中, 事實上, 有暗示此 JSON server 是以 NodeJs 的架構撰寫, 考慮到 NodeJS 對網頁端的支援, 也的確是一個合適的選擇. 傳送到 json-server 的資訊將被放到一個 .json 文件中暫存, 然而, 考慮到 json-server 並非設計作為資料庫使用, 當暫存資料過大時, 就會讓讀取/寫入失去效率, 因此, 我們需要寫一隻程式, 從 json-server 中取值, 處理, 再刪除數值, 架構如下圖所示: 資料處理的架構 當然, 更好一點的架構是直接用 NodeJs 來架設 REST API Server, 但考慮到平台的熟悉程度, 還是先用寫好的套裝程式來改, 應該比較穩定一些, 雖然犧牲不少效率... 在實作範例中, 我們使用 node-rest-client 作為開發套件, node-rest-client 建立在 NodeJs 之上, 可以參考: https://www.npmjs.com/package/node-rest-client 在其官網上, 有許多範例, 因此就不再多述如何安裝 node-rest-client, 以及每一個 REST 函數的呼叫, 在進入程式之前, 只提醒兩件事情: NodeJs 有原生的平行化架構, 因此, 當使用多個 client 時, 要注意每個 client 的執行並不會依照程式的順序. 相同的, 由於平行化架構, global variable 的存取順序可能和預期不同, 要自己想好順序, 並包在同一個 client 中. 因此, 本程式的目標流程有以下三個: 讀取 json 總數 => 取出最後一個 json 物件 => 刪除最後一個 json 物件 以下是所實作的程式: var Client = require('node-rest-client').Client; var client = new Client(); // get the number of json object // refer to the &

[REST] 網頁開發環境: LAMP + WordPress

圖片
為了建立一個簡單的網頁介面, 我們在 Linux (ubuntu 16.04) 上建立一個標準的網頁開發環境, 也就是所謂的 LAMP: Linux, Apache, MySQL, PHP 這部分滿簡單的, 可以參考:  https://jerrynest.io/ubuntu16-04-wordpress/ 只需要輸入以下指令: sudo apt-get update sudo apt-get upgrade sudo apt-get install lamp-server^ sudo apt-get install phpmyadmin 其中, phpmyadmin 為一個可以透過 php 讀取 mySQL 的介面, 完成安裝之後, 記得把 php 網頁專案放到 /var/www/html/ 底下, 確保外部的存取, 指令如下: cd /var/www ln -s /usr/share/phpmyadmin 完成後, 可以透過 http://yourip:port/phpmyadmin 來查看 mySQL 的設定, 進入網頁後, 帳號為 root, 密碼為安裝 mySQL 時輸入的密碼, 就可以利用圖形化介面操作 mySQL, 接下來, 要建立一個動態網頁的環境, 在動態網頁的架構下, 通常我們將網頁分成三部分: 框架 (html), 排版 (css), 計算 (php), WordPress 是一個基於 PHP 技術的網頁模板, 並提供大量的模板參考, 在參考的文章中, 使用 apt-get 的方式來安裝 WordPress, 但在實測環境中, 因為不是純粹的 localhost 環境, 並透過 NAT 進行 port-to-port 的對應, 因此無法直接套用生成的 config 檔. 因此, 我們參考 WordPress 的教學, 直接對環境進行設定. 教學來自:  https://codex.wordpress.org/Installing_WordPress 此教學分成 5 個部分, 下載 WordPress: wget https://wordpress.org/latest.tar.gz 設置資料庫 (帳戶和表格), 可以透過 phpMyAdmin 來設置 設置 wp-