2014年4月28日 星期一

到底什麼是 Android軟體研發工程師

繼上次 什麼是 Android BSP Engineer? 一文後
我最近又經常要解釋我的工作內容……
而我經常解釋了老半天,對方還是不懂……


其實我當初面試時,我只問了幾個問題,來猜測我現在的工作
1、要寫AP嗎?
2、只會用到Java? 還是也會用到C++?
3、JNI是不是歸我們這邊負責?
4、是不是BSP那邊以外的都歸我們管?



我當初面試的職缺,在104上頭寫的是:Android軟體研發工程師
工作內容
1. Android Framework維護與客製化開發研究:
    i. Multimedia、DRM、HLS、Streaming、Wifi Display、DLNA、Graphics/OpenGL
    ii. Core/System Service、System UI、Debugging Mechanism、Auto Run Mechanism
    iii. Network/Connectivity、NFC、Operator Requirement、SS/DSDS、STK
2. Qualcomm, MTK Android Linux平台效能與穩定度調校。
3. Google Android Phone(GMS/CTS/GTS)、DLNA、通訊方面的認證整合。
4. Android AP與Widget程式設計開發。
5. Android前瞻新技術研究開發。

6. 3rd party軟體整合。

這職稱當然是比 Android BSP Engineer 直覺許多,
因為一看就知道 搞 Android 的 軟體工程師
但沒有看到工作內容的人通常都是同樣的問題:「所以你會寫APP囉?」

我搖頭表示不會。

「蛤? 不會? 那你的工作到底在做什麼?」

「我們這裡大致區分為BSP和ASD,以前我是BSP,現在我是ASD。
    AP使用途中出了問題,當然就由我們來負責,但那些AP不見得是我們寫的。
    
    當然我們內部還會區分幾個Function team,我待的team負責Stability
    所以有時候會對大部份的Issue進行初步分析,
    只要你手機用到一半,它裝死當掉、自動重開機等任何非你預期之行為。
    亦或是它頓頓的、突然關掉你正在看的FB,告訴你:對不起,Facebook已停止。
    或是想開啟某支程式,點一下後,等了又等,最後冒出,對不起,XX程式無反應。
    這一類你可能會想問候它母親的"疑難雜症",全部都會跑來我們team……」

「哦……然後要解掉?」

「通常進行完分析,有些可能是底層問題,要轉到BSP Team 去;
    有些像是多媒體相關,則們部裡有負責的function team,他們會更熟這一塊,
    再去做進一步分析。剩下在我們自己身上的,能解掉的不多…,
    我們可能會上AOSP找solution,找到的機會不多就是了…」

同是軟體工程師的朋友,還問我一天要寫多少code?

我回答:幾乎沒在寫code……

「那你們到底在幹嘛?」

「在……吹口琴、玩玉簫、泡泡妞、看小書、占卜星相、觀人眉宇…」(被毆)

本來 ASD 在公司內部中文翻做應用軟體設計=> Application Software Design
但我覺得實際上比較像是 Analysis Supply/Submit Debug …XD

Analysis:看log來猜測案發當時的行兇過程…

Supply/Submit: 整合第三方程式之類的,或是從AOSP找patch,放進codebase裡,然後上code

Debug:就是找出問題發生的根本原因/程式碼所在…

套一句我Leader說的話:我們 Team需要的人其實寫code能力不用很強,我們比較需要debug能力。
我們真的大部份的時間都在"看code" 而不是"寫code" XD

2014年4月17日 星期四

正確的的郵局局號 / 帳號檢查方式

網路上有些流傳的郵局局號/帳號檢查方式是錯的...... 

網路上流傳的是:
不論局號/帳號
N1 N2 N3 N4 N5 N6 :流水號。 N7:檢碼。 
運算規則: (N1×2 + N2×3 + N3×4 + N4×5 + N5×6 + N6×7) ÷ 11餘A. 
若A為10, 則N7=0; 若否, N7=A.
但我拿我及幾個手上有的郵局局號帳號做驗證發現根本就不對……

假設我的郵局局號 及 帳號 共 14 碼 為

ABCDEFG HIJKLMN


前 7 碼為郵局局號,其中 G 為檢查碼;
後 7 碼為郵局帳號,其中 N 為檢查碼。

檢查公式應該是

( 2*A + 3*B + 4*C + 5*D + 6*E + 7*F + G ) mod 11 = 0 
( 2*H + 3*I + 4*J + 5*K + 6*L + 7*M + N ) mod 10 = 0

拿個局號驗證
竹北郵局(新竹三十三支)(舊局號)006133-9(新局號)087000-3

( 2*0 + 3*0 + 4*6 + 5*1 + 6*3 + 7*3 + G ) mod 11 = 0
( 68 + G ) 要可以被 11 整除 => G = 9

( 2*0 + 3*8 + 4*7 + 5*0 + 6*0 + 7*0 + G ) mod 11 = 0
( 52 + G ) 要可以被 11 整除 => G = 3

帳號部份也拿幾個驗證

我的: 013384-4
( 2*0 + 3*1 + 4*3 + 5*3 + 6*8 + 7*4 + N ) mod 10 = 0
( 106 + N ) 要可以被 11 整除 => N = 4

家人剛好跟我是一起辦的: 013383-1
( 2*0 + 3*1 + 4*3 + 5*3 + 6*8 + 7*3 + N ) mod 10 = 0
( 99 + N ) 要可以被 11 整除 => N = 1

為什麼錯誤的版本一直在流傳?