|Jobs| 利用 Samba 建立虛擬機與本機共享資料夾

環境
虛擬機:Virtual Box
主系統:Windows 10
子系統:Ubuntu 18.04

假設你網卡已經設定好且能在虛擬機利用主系統網路上網!
以下開始設定 Samba 共享資料夾!

Part 1. 在子系統的 Ununtu 裡面
Step 1. 固定子系統的 IP
    ifconfig
    找到 host-only 網路的那張網卡,設定固定 IP!
    因為 host-only 預設網段是192.168.56.0,
    因此 IP 設定上也要在同一個網段之下。
    sudo gedit /etc/network/interfaces
     auto 網卡名稱
     iface 網卡名稱 inet static
     address host-only網卡的IP
     netmask 255.255.255.0
     network 192.168.56.0

    reboot

Step 2. 安裝與設定 Samba
    sudo apt-get install samba smbclien    
    sudo gedit /etc/samba/smb.conf
     加入以下設定
      [Share]
      path = /
      public = yes
      writable = yes
      read only = no
      valid users = YOURNAME
      force create mode = 777
      create mask = 0777
      directory mask = 0777
      delete readonly = yes
      guest ok = yes
      available = yes
      browseable = yes

Step 3. 設定從 Windows 登入的密碼
     sudo smbpasswd -a YOURNAME

Step 4. 測試/etc/samba/smb.conf是否有問題
     sudo testparm

Step 5. 重啟Samba,使以上設定生效
    sudo /etc/init.d/smbd restart


Part 2. 在主系統的 Windows
Step 1. Ping 一下 Ubuntu
     ping host-only網卡的IP

Step 2. 到本機點右鍵
    連線到網路磁碟機,輸入 host-only網卡的IP
    記得兩個勾勾都要勾哦!
    讓它能用其他方式連線(程式自己會去找)

以上,感謝新公司的同事支援,之前我都直接用 Native Linux。

|Jobs| 50個面試相關的問題

這50個面試的問題常見於外商,台灣(甚至是亞洲?)可能不是這玩法。
所以 …… 請自行斟酌。

在第一次轉職時,其實就有面幾間外商。
我覺得自己英文履歷寫得還不錯,但是進到面試好像就卡關了。
(因為履歷不錯才有很多面試機會,我自己是這樣認為,哈哈)

不知道何時收集到了一個有趣的文章:Top 50 Job Interview Questions

<心態與原則>
1. 如果我是面試官,我會覺得 Layoff 很正常,所以面試者不用太擔心這。
 直接說明原因與公司策略即可。
2. 下一份工作薪水至少要 原本年薪 *1.15 以上,最好是要加到 20%
 開價原則(假設有保14個月):
 新的月薪 = 現在的整份*1.2/14

<一定要準備的>
Why Should We Hire You?
這題回答的方向,如果是技術職主要就從技術面與戰績。進階一點的,如果是相關產業互跳,就可以點出對方需要的,以及自己能提供的。(在不違反智財的狀況。)
Describe your career goals.
通常會分長短期來回答,但我會希望自己加上一些"核心思想"。
譬如說:
對我來說,能幫助到同事、改善工作環境、提高軟體品質,就是我的工作目標。
那短期來說,是要成為專精領域優秀的工程師,解決產品的問題。
長期來說,我希望自己提升廣度與視野,並在工作有閒之餘,開發好用的工具幫助大家,讓工作環境進入正循環。
以上是我的職涯目標:學有專精,並且對於案子方向及團隊合作模式有更全面的了解與幫助。
Do you prefer to work alone or on a team?
團隊合作。這種時候一定會要回答:為什麼?
為什麼呢?
一個好的產品需要大家從不同角度去精進,一個人顧及的層面比較不足。
(這邊提的點比較負面,不知道有沒有正面的回答方式?)
How much do you expect to get paid
大膽的講,給不起就不要去了。
How would you describe yourself?
這題我的答法應該會跟職涯呼應。
喜歡解決問題,幫助別人,藉此獲得成就感。

Ref. https://www.thebalancecareers.com/top-job-interview-questions-2061228

|Design| C++ getInstance

如果你要獲取特定的物件

就可以使用 getInstance()

這樣比全域變數看起來舒心一點

e.g. ————————————————————————

// test.h
class SomeService
{
public:
static SomeService &GetInstance();

}

// test.cpp
SomeService& SomeService::GetInstance()
{
static SomeService instance;
return instance;
}

————————————————————————


Ref. https://blog.csdn.net/fanyunda1988/article/details/51516930

|RIL| 建了 data 之後 ……

有了 APN,Modem 建了 data 之後會發生什麼事呢?

會長出網卡 ~~
可以使用 ifconfig 查看

別忘了設定 default route
route add default gw {IP-ADDRESS} {INTERFACE-NAME}

以及 DNS,才能用網域找到 ip
sudo echo nameserver 8.8.8.8 > /etc/resolv.conf

|Life| 三年半工作見聞小筆記

做事一定要細心細心細心!!!

大公司最重要的優點就是:給你犯錯的機會。
就算有錯,因為規範完整,也很難會是大錯。
以及良好的學習資源!
大公司的缺點:由於可能需要趕案子,大家負責範圍很小,常常有人踢皮球。

代工廠優點:人力資源真的是資源,不會浪費呢~
代工廠缺點:什麼芝麻蒜皮小事都要問客戶,自主權少。能學的也少。
(因為主要產品設計不在你,你只要負責基本功能與工廠)

(消費性電子產品)
品牌廠優點:能夠真的感受到消費者的焦慮,哈哈。
品牌廠缺點:暫時想不到(我能想到的比較是特定公司的缺點,跟品牌無關)

我覺得我有進步的地方:
大膽發問!
了解整個產品的進度規劃!
不正確的東西就是要告知對方!

我待進步的地方:
對整個產品怎麼兜還沒很清楚。
有時候會因為人家想要工具就做,沒細問目的。

還要注意的地方?講電話的語氣吧。
遇到亂猜問題的人就火氣上來,請人幫忙就尊重我的看法,可以嗎?

做 Wireless 優點:有機會出差,我覺得網路行為很有趣。
做 Wireless 缺點:Debug 不容易,會跟當地行為有關!

其他:
好的 Log 可以幫助大家早下班。
幫助人家就要完善,以免最後的瑕疵害到人,反而留下不好印象。
當個好人!

結論:
遇到願意教的人是幸運。
我覺得還是有自己的產品的公司比較有榮譽感!
建議還是遠離代工廠。

|3GPP| 網路架構學習好用網站

以往只看 call flow,感覺很不足夠。
最近開始讀 LTE 跟 IMS 架構,發現幾個實用的網站。


如果不懂 LTE 可以先從這個網站開始看起
https://www.tutorialspoint.com/lte/lte_protocol_stack_layers.htm

一些名詞解釋,主要是要看懂:
UE、eNE、EMM、HSS、S-GW、P-GW 間的關係
https://zh.wikipedia.org/wiki/系统架构演进

這文章好新,感覺是同業的?
https://note-on-clouds.blogspot.com/

開機後 attach 的流程
https://note-on-clouds.blogspot.com/2015/12/lte-initial-access.html?m=1

IMS 架構
http://pollexpm.blogspot.com/2017/02/ims.html

新通訊 – 結合IMS與LTE MMTEL標準實現多元通訊服務
(哇 這篇我才剛大學畢業 到現在也 10年了 不知道手機還能吃多久)
https://www.2cm.com.tw/2cm/zh-tw/magazine/-Technology/3CE6FD1C7C62462D9E56B3F46B4A88C2

VoLTE IMS Network Architecture tutorial (YOUTUBE)
https://www.youtube.com/watch?v=JTJcJ5zc8Mg

IMS, IP Multimedia Subsystem Tutorial
https://www.radio-electronics.com/info/telecommunications_networks/ims-ip-multimedia-subsystem/tutorial-basics.php

中國的朋友介紹 5G
https://blog.csdn.net/jxwxg/article/details/79090480

|Job| Application No Response Analysis

ANR 的發生情形,通常是時間到了還沒有回應!所以掌握這個想法,就比較好找 Code。

比較常見有三種情形:

  1. Service Timeout
  2. BroadcastQueue Timeout
  3. ContentProvider Timeout

 

Case 1. Service Timeout

 a. Service 啟動後,會發送 SERVICE_TIMEOUT_MSG 消息
 b. Service 刪除後,就會刪除 SERVICE_TIMEOUT_MSG 消息
 c. 如果 SERVICE_TIMEOUT_MSG 未删除,時間到後就會 ANR

 呼叫 ActiveServices 的 serviceTimeout 方法進行處理,
 serviceTimeout方法邏輯:

 if (anrMessage != null) {
  mAm.appNotResponding(proc, null, null, false, anrMessage);
 }

 

Case 2. BroadcastQueue Timeout

 BroadcastQueue 中的 mHandler 收到 BROADCAST_TIMEOUT_MSG 消息時會觸發

 // 正常要發送消息前
 broadcastTimeoutLocked(false);

 // 發送消息,鎖住
 case BROADCAST_TIMEOUT_MSG: {
  synchronized (mService) {
   broadcastTimeoutLocked(true);

 // ANR
 在 broadcastTimeoutLocked 方法中,首先取得 anrMessage 字串

 anrMessage = “Broadcast of ” + r.intent.toString();

 mHandler.post(new AppNotResponding(app, anrMessage));
 mService.appNotResponding(mApp, null, null, false, mAnnotation);

 

Case 3. ContentProvider Timeout

 MainHandler 的 handleMessage CONTENT_PROVIDER_PUBLISH_TIMEOUT_MSG

 private final void processContentProviderPublishTimedOutLocked(ProcessRecord app) {
cleanupAppInLaunchingProvidersLocked(app, true);
 removeProcessLocked(app, false, true, “timeout publishing content providers”);
 }

 app.kill(reason, true);

 

ref.

https://blog.csdn.net/u012439416/article/category/7261623

 

|RIL| Data Connection Flow

觀念:

  1. 啟動數據服務前,要先設定 APN。APN 在上層有一份,在 modem 也有一份
  2. 是可以只用 modem 裡的那份 APN (嵌入式平台)
  3. Android 是由上層帶 APN 給 modem 的
  4. 上層主要是看 bringUp & RIL 的 setupDataCall

 

以下只講部分關鍵點。

 

# load 上層的 db:TelephonyProvider.java

  loadApns()

# TelephonyManager:使用者點開數據上網的 Icon
  public void setDataEnabled(boolean enable) {
   setDataEnabled(getDefaultDataSubscriptionId(), enable);

# DcAsyncChannel:填入 APN, 準備往下帶
    public void bringUp(ApnContext apnContext, int profileId, int rilRadioTechnology,
                        boolean unmeteredUseOnly, Message onCompletedMsg,
                        int connectionGeneration) {
        mLastConnectionParams = new ConnectionParams(apnContext, profileId, rilRadioTechnology,
                unmeteredUseOnly, onCompletedMsg, connectionGeneration);
        sendMessage(DataConnection.EVENT_CONNECT, mLastConnectionParams);

# DataConnection:StateMachine 收到要建立連線啦!
 public boolean processMessage(Message msg) {
  …
   case EVENT_CONNECT:
    if (DBG) log(“DcInactiveState: mag.what=EVENT_CONNECT”);
     ConnectionParams cp = (ConnectionParams) msg.obj;
     if (initConnection(cp)) {
      onConnect(mConnectionParams);

# RIL:終於送到 RIL了,要往 Modem 前進啦!

 mPhone.mCi.setupDataCall(cp.mRilRat, dp, isModemRoaming, allowRoaming, msg);

 

Ref. https://blog.csdn.net/u012439416/article/details/75263645

WordPress.com.

Up ↑