2018年1月25日 星期四

[筆記] 3GPP Release 15 (5G Spec)

大家好啊~~
這次來簡單介紹一下R15的重點


在R15提到,未來網路會有兩大特色
  1. Service Based Architecture(SBA)
  2. Network Slicing
並且有兩個原則要實現
  1. CUPS(Control and User Plane Seperation)(此為R14就存在的功能,並非新的)
    要讓control plane和user plane的function互相分離,這樣可以提高scalability, evolution and flexibility deployment
    像是:為了提高data rate,只要多啟用幾個user plane node就可以達到效果,而不需連同control plane node一起增加;沒有在用的時候,也能停用這些node減少資源消耗。
    或是:如果有low latency的應用,可以把user plane根據需求建立在靠近RAN端,讓control plane留在中心。
  2. Modularize function
    可達到有效率且有彈性的network slicing
Service Based Architecture
現今的4G核心網路中,我們都固定使用所有的entity去服務user,在5G的核心網路中,會將本來4G之中的MME具有的功能打散,成為許多小小的network function,能讓user連上的時候,選擇需要的function去載入,可以減少latency,也能減少執行的資源

下圖是架構圖
3GPP R15架構圖
可以看到比較特別的兩個
Network Exposure Function (NEF) 用來告訴UE核心網路它可以提供什麼樣的服務,舉例來說:當外面要求要查詢計費資訊的時候,不用讓外面進到核心網路的PCF查看,可以增加核心網路的安全性。

Network Repository Function (NRF) 當UE發送請求到核網的時候,因為network function都被拆開散落在各個地方,不像原本的MME都集中在同一台主機上,直接呼叫就好。所以要知道他們這些network function的所在地(可能是IP),就得靠NRF去尋找。
運作流程大概是:UE透過N1介面連上AMF,再連上NRF讓他辨識UE的要求去啟動所需的NF

User Plane Function (UPF) 像是4G的S-GW + P-GW的user plane部分

Unified Data Management (UDM) 相當於4G之中的HSS元件
其餘的部分在4G裡都可以找的到對應的部分


延伸閱讀:

2018年1月23日 星期二

[食記] 麵屋浩Hiroshi - 在台灣也能吃到道地的日本拉麵

大家好啊~~
本部落格的第一篇食記就獻給他了
這個位於城隍廟附近的麵屋浩
已經聞名一段時間了
好不容易抽出時間來吃吃看

用餐日期:2018/01/23
今天抵達的時候大約17:20
一看登記候位的名單
就已經有近20組人馬在等待

店外已經擠滿要嘗鮮的人群


我們最後等了80多分鐘才進去
(真的要有耐心等,最好沒太多事情的時候才有閒情逸致來)
很適合帶桌遊殺時間((根本沒地方好嗎

店內面貌
店內裝潢就和日本拉麵店的風格差不多
就是一長排的位子
全店面的位子就如圖所見
只有12個~~
座位後面可以讓客人掛衣服/包包

座位桌上有提供給女生用的綁頭髮
防止長髮泡到湯裡((很貼心!!

我們直接點店家推薦的湯頭濃度和麵條硬度
((忘了拍菜單))
餐點價位介於180~300之間

這次點了濃湯醬油拉麵 $200
蔥花的味道很香!!!
他的叉燒肉咬起來比較沒那麼容易咬碎
湯頭真的很濃厚
不愧是日本的重口味

這是另一位友人點的特製SP(濃湯口味) $300

叉燒肉排得滿滿一圈
蔥花也給好多啊
除了一般的叉燒
還有兩片經過炙燒的厚叉燒
咬下去的時候
除了肉的味道、還有燒烤的香味就散開來了
真的是很好吃!!!!
覺得這個品項的CP值頗高的

吃不飽可以免費加麵
至於可以加幾次不知道XD
加麵一碗的分量
另外吃濃湯的人可以跟店家要蒜頭
搭配起來會比較清爽些

很香的蒜末
湯的味道真的很重~~~
吃完之後一定要記得喝水
不然會渴死XD
((水絕對可以讓你無限暢飲!!!

這間店的老闆很和善也很貼心
會在離開的時候提醒客人要拿走自己掛在牆上的外套/包包
((如果他沒講差點忘記XDDDDD

這家店還真是好吃~~~
下次一定還要再來!!!

店家資訊
不接受訂位
建議交通方式:最好騎機車,汽車位子極少,很難有位子停
排隊時間:大約一小時左右
營業時間:17:30~21:30(但提早賣完就打烊了)
適合幾個人來:1-2人最佳(1人有機會提早進去,單身夥伴的福利:P)

2018年1月21日 星期日

[警告] 小心!別讓您的孩子兒童暴露於危險的YouTube影片

大家好啊~~
最近YouTube上面出現了不少對於兒童有不良影響的影片
請多加留意

以下轉自杜奕瑾的貼文

YouTube Kids影片有大問題。
看過噁心莫名其妙的Peppa Pig。家長要小心。

小孩把娃娃斷頭,自殘,變得暴力,注意一下看了什麼影片。

這些虐童影片共同特點:
1. 大量使用蜘蛛人、艾莎、Peppa Pigs、知名兒歌、玩具評論偽裝兒童節目。從第一眼外表難辨問題。
2. 強調紅色、藍色、綠色、黃色、粉色,這些顏色對這個組織有特殊意義。
3. 誘導自殘刮臉開腦斷頭斷肢觀念。
(比如 Youtube找wrong head都是大量類似影片)
4. 節目中會喝尿吃大便,鼓勵懷孕受虐,放火,碰危險物品,喝顏料。
5. 強調拿槍搶劫,蜈蚣蜘蛛蛇等搶走家人。

不正常的大量流量,可能是為詐取廣告或想辦法推上自動推薦造成。

https://www.facebook.com/notes/scary-bird/the-finders/686233471570628/
引自恐懼鳥:「有立心不良的組織精心製作數量眾多的變態Youtube兒童影片。除了用血腥、意識不良的情節去荼毒兒童心靈外,還透過影片頭的顏色,再配上我們不清楚的心理控制技術,可能是聲音、光暗、又或玩具相片,去洗腦觀看的兒童,達到毀滅人格、培育軍國主義、又或遺忘被虐記憶的效果。」

有興趣的鄉民可以挖掘一下。似乎與俄國有關(上屆美國選舉也有大量俄國操作網路輿論的跡象)。

2018年1月11日 星期四

[教學&詳解] Network Programming HW1 - Remote Access System

大家好
剛從NP期末考爆炸的小弟
要來跟大家介紹一下這個作業的想法
以及如何實作
程式coding style如果有需要改進之處歡迎留言讓我知道XDD

(後續3個作業慢慢更新)

●本次作業說明:
實作一個shell,具有pipe + number pipe + file output 的功能
number pipe在用
本次的重點就是pipe的使用

●想法:
需要有一個能夠管理pipe的class
決定該指令的in, out, error要從哪裡來/往哪裡去
※pipe開關的原則
→在parent的部分
1.pipe進來的:關掉進來的write,fork後parent再把他的read關掉
(如果fork之前關掉,child就沒辦法讀pipe的東西了)
2.pipe出去的:不用關,因為可能還有其他指令要寫入這個pipe
→在child的部分
把stdin,stdout,stderr導入正確的pipe後
read, write都要關閉

●我的架構:
socket.cpp:負責處理連入連線
server.cpp:負責處理所有的ras要求
types.cpp:自定義的class都放在這

自定義的class包含了
1. SingleCmd
顧名思義就是一個指令的資料
紀錄了...
執行檔的名稱(execute)
是否需要pipe(need_pipe)
要往後pipe幾個指令(pipe_num)
並且有三個member function
push():在parse指令的時候用
get_exe()、get_argv():這兩個在exec的時候轉回所需的型態

2. LineCmd
這是存一整行所有指令的class
有一個vector<SingleCmd>存這一行所有的指令
有一個member function add_cmd()負責把一行內的單一指令打包

3. PipeAdmin
有一個pipe_set存1000格pipe陣列
有四個member function
create_pipe//初始pipe
void close_pipe//關閉pipe的read or write端
int find_pipe(int);//找到在1000個pipe中和pipe_num相同剩餘的pipe位置
void decr_num();//減少所有pipe的pipe_num


●流程:
e.g. 有一行指令為 removetag test.html | cat > a.txt

先從socket.cpp開始
將socket建立後,bind在指定的port並listen,直到有連線進來時呼叫accept
並且fork一個child process負責處理這個連線,就進入do_ras處理指令
(這裡fork的用意是為了下一個作業需要多人連線,預先寫好的)
do_ras會先切割指令(cmd_parse)→執行指令(run)

※cmd_parse
一開始先從client讀指令過來
將收到的字串轉換成string開始切指令
我根據"|"和">"做為切割的符號
藉由string的find_first_of()找到符號位置存入place變數

如果有找到上述兩個符號的話
就進入while迴圈
抓取從頭到place位置的字串內容
放到新的string sub_str之中
並藉由stringstream會自動看空白切字串的特性
把字串push到SingleCmd之內

接著去判斷place所指的符號為何
如果是|
就用isdigit判斷pipe後一格的是否為數字
若是就把它用atoi轉換成數字存入SingleCmd的pipe_num
不是的話pipe_num就設定為1
如果是>
因為在本次作業中必定是一行之中最後一個指令
因此只要存後面要輸出的檔案名稱
並且把toFile的flag設為true
上面的if做完之後
再判斷一次後面有沒有|或>的符號
沒有就跳出函式

※run
把剛剛parse完的LineCmd用迴圈去go through
先挑出不需要用到pipe的三個指令(setenv, printenv, exit)

接下來藉由呼叫check_exe這個函式
判斷這個cmd的名字有沒有在ras/bin底下
如果沒有的話直接輸出"Unknown command"

然後是針對output部分
判斷要pipe過去的地方是否已經有指令pipe過去
如果沒有的話要把那一格pipe做初始化的動作

最後就是fork出要拿來exec的process
根據上面想法所提及的方式
將stdin, stdout, stderr dup2去正確的地方
呼叫exec執行指令
並在parent這邊呼叫wait等到指令執行結束
(避免zombie process)


程式參考連結:
https://lsps4111wu@bitbucket.org/lsps4111wu/np_project1_0656509

2018年1月5日 星期五

[情報] 新寶可夢雷達 - 公園前 開放公測囉

現在除了大家熟悉的WeCatch這個雷達以外
從今天(1/5)開始
又多一個雷達上線囉~
新的地圖看起來有比較漂亮XD

網址:https://pgfun.tw/
粉絲專頁:https://www.facebook.com/pgfun.tw

目前提供的資料有
名稱+代號
屬性
是否天氣加成
剩餘時間
位置(包含座標)

目前適用地區
較多人的地區都可以使用

目前有些已知的bug尚未解決
1. 某些帶有天氣符號的寶可夢「可能」有誤差,例如在同一個地區看到兩種天氣加成。
2. 【隱藏的寶可夢】、【指定寶可夢 - 彈跳圖示】過濾器,在手機上使用會出現兩個選單,電腦上可直接打字搜尋,手機上請使用「可勾選」的選單(不要使用單獨點選的),選完後按完成(如果再跳出一個選單請點擊任意位置關閉它)。
3. 寶可夢可能不如預期的多,會持續,波波、小拉達這類的寶可夢地圖不會顯示是正常,其餘會正常顯示。
4. 使用電腦版若出現通知提醒,請在首次開啟時點選「關閉」,若誤選【請清除Cookies與瀏覽紀錄】後再開啟地圖。