2013年12月9日 星期一

[House]買房要注意的事

「買房要注意的事」
01、房仲要找直營不要加盟
02、服務費直營收1%,加盟2%
03、看業務員到這區域多久
04、普專店高薪低獎直營店,高專店低薪高獎加盟店
05、上內政部地政司全球資訊網查業務員是否合格
07、仲介公司要加入當地同業公會
一般約:各家房仲皆可賣,議價空間大,專任約。簽約要注意和頌
08、拿出斡旋金有可能成為A級客戶
09、apple case有時來不及po上網
10、不只看格局和採光,還看傾斜和龜裂,和動線
11、廣告中不應出現[使用面]字樣,注意違建
12、管理費有無欠繳
13、問業務員帶看過的房子別人買的成交價
14、觀察同區域的預售指標個案人潮,10~12,15~17點會最多人
15、去地證事務所調謄本,一份電子檔20元
16、有沒有土地權狀
17、要看屋主簽名的不動產說明書,裡面提到是否為凶宅、露水、違建
18、出價可用斡旋金或要約書


1. 房子的底價如何算出來? 如下公式
建商成本〈C〉 = 土地取得成本〈F〉/ 法定容積率〈G〉 / 售坪比〈H〉
預售屋成本〈A〉= 〈建商成本〈C〉+ 建造成本〈D〉〉 × 管銷係數〈E〉
建商開價 = 預售屋成本〈A〉 × 建商利潤〈B〉
說明:
v 建商成本〈C〉: 土地買到的價格/坪 (第二點會解釋,這是你的彈性空間運用) + 容積率 (問代銷小姐或是上網查, 真實數據) + 售評比(about 1.6~1.7 真實數據)
v 預售屋成本〈A〉: (建商成本 + 建造成本 (一般大概是7~8萬/坪, 用材較好的會8~12萬/坪, 另外台北的豪宅又是另一種等級, 有可能會到12~20萬不等) (彈性空間運用) )* 管銷係數 (若是有代銷公司,那大概就是抓6%, 相當於房仲的利潤)
v 建商開價: 就是你的建案底價 = 預售屋成本〈A〉* 建商利潤(大約是20~30%, 這就是你的彈性空間)
舉例: 某建案 土地取得成本 NT50萬/坪, 法定容積率 =420%, 售坪比=1.6
建造材料都是冠軍牌磁磚80*80+BOSH 廚房用具 + 義大利進口衛浴, 算11萬/坪.
建商成本〈C〉 = 土地取得成本〈F〉/ 法定容積率〈G〉 / 售坪比〈H〉
= 50 / 4.2 / 1.6 = 7 萬/坪
預售屋成本〈A〉= 〈建商成本〈C〉+ 建造成本〈D〉〉 × 管銷係數〈E〉
= (7 + 11) * 1.06 = 19.08
建商開價 = 預售屋成本〈A〉 × 建商利潤〈B〉
= 19.08 * 1.2 = 22.9 萬/坪
以上就是你的底價, 然後你就可以微調彈性運用空間,配合嫌惡設施,為自己爭取合理的房屋價格.


在你熟知前面的公式後,最難知道的就是土地取得成本, 我就來告訴大家,如何可以有效地算出土地成本(與適當的漲幅為何). 

2. 

V 在102 年1月以後,較簡單,可直接由實價登錄,查詢"土地" 即可.
http://lvr.land.moi.gov.tw/N11/homePage.action

V 但是若是在102年1月以前,那可沒那麼容易. 偏偏國內的建商都會養地,實價登錄是最近這兩年的事. 所以重點就在這了.

2.1 政府有兩種地價計算,一種是公告地價,一種是公告現值. 地價 < 現值, 差異點在此.
http://www.yungching.com.tw/CB/CB040101.asp?Pkey=%7B28FDE5F9-AA88-4B65-A1F9-CF83F3268F56%7D

2.2 要算土地取得成本〈F〉, 必須要看公告現值, 公告現值是有交易時,公家機關會由交易時的金額算出土地增值歲, 所以很接近市價,但仍有一個比率,我等一下會講,如何從公告現值反推市價.

2.3 查102年以前的土地, 首先先查你要看的那塊地的地段與地號. 可以先由實價登錄->土地, 查詢那一區是那一個段與那一個地號. 或是直接查詢地方除遂務局地價遂課,請他們告知你.


2.4 接下來,要確認此地真正坪數,以利我們街下來要查尋公告現值. 此坪數,要問代銷小姐or Google. 問到後,請改成平方公尺 , 1坪=3.3 平方公尺

2.5 用google 查尋某某市公告土地現值, 現此我以高雄市為例.
http://landp.kcg.gov.tw/KCGQuery/lcaap030f.jsp

輸入剛查到的地段,地號則用000~999 當range , 下去查.
 


2.6 接下來就可以看到許多地的公告現值,且是最近的一次103/1. 可是有很多,怎麼找?

答案很簡單,就拿剛剛要你問代銷人員的土地坪數,轉出來的平方公尺一個一個對.舉例,下圖為我的地基圖. 面積,方向正確. 它為每平方公尺NT$67720, 乘以3.3 (坪換算單位) , 為每坪 NT 223,476 元


歷年公告土地現值及公告地價
http://www.land.moi.gov.tw/pda/content.asp?cid=14&mcid=194



2.7 上述為政府的公告土地現值價錢,但與市價有一定比率. 所以我門要反推回去市價, 還好公部門有提供此推比率表.
http://www.land.moi.gov.tw/pda/content.asp?cid=14&mcid=194

選擇(二)歷年公告土地現值及公告地價占一般正常交易價格百分比統計表, Or http://www.land.moi.gov.tw/uploadpic/uploadpic-478.pdf

看到103 年度, 高雄市 現值與市價比率 為87.95%, 所以, 剛剛我門的現值為每坪 NT 223,476 元, 市價應為 223,476*100/87.95 = NT$ 254094

2.8 如上所述, 你已經算出每年一月的市價為何, 但是可能你現在並不是一月,所以會有漲幅. 但是這地方可能有漲幅,也可能沒有漲幅.所以概略一循如下原則.
2.8.1 政府算出市價後,若是它要爭收,會加四成. 也就是NT$254094*1.4 = NT$ 355731, 建商一般也都是如此算 , 也就是若無特殊原因,這四成就是你的彈性空間.

2.8.2 但是若是有View, 如興富發的正高雄美術館那塊地(華人桂冠), 它就不只四成. 它那塊地會有view + 正大馬路邊 , 所以它是市價*3 , 你可以用剛剛原則去查那一塊地,市價約百萬,但實價登錄為3百萬, 差3 倍

2.8.3 若是有view, 但是市對面房子,應該不算1 倍. or 0~1. 任你定義.若是正馬路or 交通建設如捷運/鐵路/輕軌 , 則有1 倍. 如明誠四路某一塊地,市價算出為NT50萬,但實價為NT100萬,差1 倍

以上就是全文,希望對正在買房子的朋友有幫助.


[Android]android.mk

裡面都是用MACRO來命名
開頭一定要寫這兩行
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS) 把之前的設定給erase掉


E:\packages\apps\Bluetooth\Android.mk裡面
LOCAL_PACKAGE_NAME := Bluetooth
include $(BUILD_PACKAGE)
所以build出來會放在/out/target/product/xxx/system/app
叫做Bluetooth.apk

E:\frameworks\opt\emoji\Android.mk裡面
LOCAL_MODULE := libemoji
include $(BUILD_SHARED_LIBRARY)
所以build出來會放在/out/target/product/xxx/system/lib
叫做libemoji.so

E:\frameworks\base\cmds\surfaceflinger\Android.mk裡面
LOCAL_MODULE:= surfaceflinger
include $(BUILD_EXECUTABLE)
所以build出來會放在/out/target/product/xxx/system/bin
叫做surfaceflinger(這是個可執行檔)

E:\frameworks\base\services\audioflinger\Android.mk裡面
LOCAL_MODULE:= libaudiointerface
include $(BUILD_SHARED_LIBRARY)
所以build出來會放在/out/target/product/xxx/system/
叫做libaudiointerface

E:\frameworks\base\libs\usb\Android.mk
LOCAL_MODULE:= com.android.future.usb.accessory
include $(BUILD_JAVA_LIBRARY)
所以build出來會放在/out/target/product/xxx/system/framework
叫做com.android.future.usb.accessory.jar


Q: Given to build a shared library named libaudio, it will static link with
a library named libutil. And it has some src files, they individually are
libaudio1.c and libaudio2.c, please write a Android.mk to implement it.
A:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= libaudio
LOCAL_STATIC_LIBRARIES += libutil
LOCAL_SRC_FILES:= libaudio1.c libaudio2.c
include $(BUILD_SHARED_LIBRARY)

[Android]IPC - sensorManager

在AP的部分,這個檔案裡面
G:\packages\apps\Settings\src\com\android\settings\fuelgauge\PowerUsageSummary.java
需要用到SensorManager
SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

在framework資料夾裡面有一個XxxManager.java就會有一個對應的XxxManagerService.java
例如PowerManager
proxy就是/frameworks/base/core/java/android/os/PowerManager.java
stub就是/frameworks/base/services/java/com/android/server/PowerManagerService.java

Service在Android框架裡的角色是「存取底層硬體」


\frameworks\base\core\java\android\app\ContextImpl.java
裡面的
public Object getSystemService(String name) {
會去比對妳是哪個manager,如果你是SensorManager
它會return getSensorManager();

private SensorManager getSensorManager() {
裡面,她會去new一個SensorManager
mSensorManager = new SensorManager(mMainThread.getHandler().getLooper());
然後實作在
\frameworks\base\core\java\android\hardware\SensorManager.java
裡面的建構式
public SensorManager(Looper mainLooper) {



\frameworks\base\core\jni\android_hardware_SensorManager.cpp
裡面有
int register_android_hardware_SensorManager(JNIEnv *env)
{
    return jniRegisterNativeMethods(env, "android/hardware/SensorManager",
            gMethods, NELEM(gMethods));
}
看到jni小寫開頭的就會到AndroidRuntime裡面去
\frameworks\base\core\jni\AndroidRuntime.cpp
註冊
static const RegJNIRec gRegJNI[] = {
   REG_JNI(register_android_hardware_SensorManager),
要在gRegJNI[] array裡面填入妳要註冊的東西


還有sensors_module_init在G:\frameworks\base\core\jni\android_hardware_SensorManager.cpp
static JNINativeMethod gMethods[] = {
    {"nativeClassInit", "()V",              (void*)nativeClassInit },
    {"sensors_module_init","()I",           (void*)sensors_module_init },
上面這是JNI mapping table
左邊是JAVA最後一支,右邊是C code第一支

有關mapping table會有兩個地方
一個在framework裡面,user自己寫的放這邊
一個在Dalvik VM裡面,也就是AndroidRuntime,android自己寫的放這邊

AndroidRuntime是由Dalvik VM + core lib所組成
上面的API都會經過Dalvik VM來check是否要進入c code
如果前面有native字眼的,就是會
它有個名稱叫做native method

所有java process都由一個叫zygote process去fork出來的
包含system server和JAVA AP
不是JAVA的,就是Daemon,也就是純C的,在zygote前面(比較靠近kernel的)

那像上面的mapping table,Daemon沒有,只有java process有

[Android]HAL

HAL的body在G:\hardware\libhardware\hardware.c
裡面有
int hw_get_module(const char *id, const struct hw_module_t **module)
裡面的load()的dlopen()去load stub [xxx(id).xx(prop).so]

HAL module的路徑有兩個地方,這是run time的時候才放在這邊
/** Base path of the hal modules */
#define HAL_LIBRARY_PATH1 "/system/lib/hw"
#define HAL_LIBRARY_PATH2 "/vendor/lib/hw"

HAL body會給妳一個variant key,然後利用這個key去data base裡面搜尋
data base有兩種,一個是\system\core\rootdir\init.rc

HAL stub
是Android user space driver
它是用來取代kernel space driver
以避開GNU license(人家跟你要source code,妳一定要給)
它在user mode有個license叫做apache license(人家跟你要source code,妳可以決定要不要給)
HAL stub
是透過PMEM來access hardware

HAL 的目的是為了把 Android framework 與 Linux kernel 完整「隔開」
目前 Android 的 HAL 實作,仍舊散佈在不同的地方
HAL 主要的實作儲存於以下目錄:
1. libhardware_legacy/ - 過去的實作、採取程式庫模組的觀念進行
過去的 libhardware_legacy 作法,比較是傳統的「module」方式,
也就是將 *.so 檔案當做「shared library」來使用,在 runtime(JNI 部份)
以 direct function call 使用 HAL module。透過直接函數呼叫的方式,來操作驅動程式。

2. libhardware/ - 新版的實作、調整為 HAL stub 的觀念
現在的 libhardware 作法,就有「stub」的味道了。
HAL stub 是一種代理人(proxy)的概念,stub 雖然仍是以 *.so 檔的形式存在,
但 HAL 已經將 *.so 檔隱藏起來了。Stub 向 HAL「提供」操作函數(operations),
而 runtime 則是向 HAL 取得特定模組(stub)的 operations,
再 callback 這些操作函數。這種以 indirect function call 的實作架構,
讓 HAL stub 變成是一種「包含」關係,即 HAL 裡包含了許許多多的 stub(代理人)。
Runtime 只要說明「類型」,即 module ID,就可以取得操作函數。

3. ril/ - Radio Interface Layer
RIL的stub是另外獨立拉出去變成一個process
傳統的是body+stub是一個process

core libraries即是Service程式碼的實作,
也就是,Android應用程式透過JNI(Dalvik)來到Service這一層,再透過Service載入*.so檔

Android的Service分為二種:Android Service與Native Service。
Android Service又稱為Java Service,是實作在框架層(framework)裡的「Server」。
這裡所講的「Service」是System Service,又稱為Server,
與應用程式設計上所討論的Service(android.app.Service)不同。Android Service以Java撰寫。

Native Service則是實作在Runtime層裡的Server。
架構設計上,我們有二個選擇,一個是實作Android Service、再透過JNI與HAL stub溝通;
另一個選擇是,跳過Android Service,讓Application(Manager API)直接與Native Service溝通。

未來的Android發展趨勢,應會以第二種做法為主,即Manager API直接與Native Service溝通,以達到更好的效能表現。

[Android]source code layout

bionic:
放一些lib, 讓你link到.so呼叫system call
原本是GNU library, 但是因為要open source code
所以google自己寫一個符合apache的, 這樣就不用open source code

bootable:
bootloader放這裡, u-boot...
Android稱它為USB bootloader,可與PC的fastboot溝通
\bootloader\legacy 是舊的
\bootable\bootloader\lk 是新的

\recovery 相當於Windows mobile的update loader

boot.img - 其實是kernel + 薄薄的一層user mode(RAM disk) 包含vmlinux, user process
userdata.img - NV ram非揮發性的記憶體,放一些device參數的設定,例如calibration...
system.img - (user mode)framework + 一點kernel

build:
所有make的環境, 裡面都是makefile
在這邊選用哪個toolchain

dalvik:
就是android runtime,
包含兩個folder
dalvik virtual machine: private, protect (jni_xxx)
vm: public (JNI_xxx)對外的public API
core library: JNINativeMethod 這邊的是system defined

development:
這裡會去build一些PC會用到的tool,例如
模擬器debugging,還有一些寫android AP的tool,
ddms, 相當於Windows mobile的platform builder,可以去看kernel debug, memory, register
apkbuilder, hierachyviewer, fastboot

framework:
是system server所在的地方,以及daemon的code
xxxService
system server process
有JAVA
有core library,這邊的是user defined
有C code: 1.HAL 2.HAL拿來當作daemon, 例如RIL 3.Multimedia
\cmds\ 儲存的是純C的process (daemon) 有servicemanager, surfaceflinger...

hardware:
就是HAL body
有type1, 2, 3, 有body, stub
type1(tranditional):
body - \libhardware
stub - \libhardware-legacy
type2(RIL):
body - rild
stub - reference ril(xx.so) 含AT-command,Qulcomm用的是自己寫的stub
shared memory方式,用RPC
type3(multimedia):
(body) alsa_sound .../libaudio/...
(stub) audioflinger, surfaceflinger .../msm7k/...

kernel:
vanilla香草kernel
device driver
7支spy
http://huenlil.pixnet.net/blog/post/25605797-%5B%E8%BD%89%5Dandroid-kernel-%E4%BB%8B%E7%B4%B9
http://loda.hala01.com/2011/01/android%E7%AD%86%E8%A8%98/
1.Ashmem(Android Shared Memory) 虛擬的
由Goolge 設計的一種記憶體分享、分配機制,主要用於 Google 設計給 Android 使用的 IPC Binder
http://huenlil.pixnet.net/blog/post/26662128-android-ashmem-%E7%9B%B8%E9%97%9C%E8%B3%87%E8%A8%8A
2.Binder
基於OpenBinder框架的一個驅動,用於提供Android平台的process間通訊(IPC,inter-process communication)
3.Logger

4.Low Memory Killer
相對於Linux標準OOM(Out Of Memory)機制更加靈活,它可以根據需要殺死process來釋放需要的記憶體
5.PMEM(Physical Memory) 實體的
有些device需要使用連續的memory,所以PMEM就是去做Physical Memory的管理
http://blog.csdn.net/sure00/article/details/6267208
6.Power Manager
針對嵌入式設備做了很多最佳化
7.Ram Console
他用一段Physical memory去模擬一個console,printk的時候會把message印到這塊RAM裡,最後透過/proc/輸出
http://blog.ednchina.com/bluehacker/1799392/message.aspx

external:
3-party release的AP和shared library
multimedia用的codec放這

package:
帶有UI的AP
google release有50個, 但只看到23個
其他是GMS, no source code
有一些要加入OHA協會才拿得到*.apk,例如google search, google talk, google map,

prebuild:
userimage
engimage
放toolchain G:\prebuilt\linux-x86\toolchain

system:
少量daemon放這邊, 其他在framework/base/core
/bluetooth/ 藍牙tool
/core/ minimal bootable環境 最小化可開機的環境
/extras/ low-level debugging, inspection tools
/wlan/ti TI 1251 WLAN driver and tools

在build ramdisk.img的地方

E:\system\core\rootdir\init.rc

vendor:
3-party放的
        HAL的stub

[Android]Build error出現cannot find symbol

在merge code的時候,直接覆蓋了 *.java 和 *.aidl 
  
當你build code的時候出現下面這樣 
frameworks/base/core/java/android/bluetooth/BluetoothAtt.java:263: cannot find symbol 
symbol  : method getAttPriority(android.bluetooth.BluetoothDevice) 
location: interface android.bluetooth.IBluetooth 
                return mService.getAttPriority(device); 
                                        ^ 
  
你可能要看mService是屬於哪個class 
結果找到是BluetoothService 
但是在BluetoothService裡面寫getAttPriority method阿! 卻還是跟我說找不到 
於是發現BluetoothService是繼承 IBluetooth.Stub,看到Stub,就知道他是binder 
所以就會跟aidl有關,aidl就像是C code裡面的 .h檔案 
在BluetoothService.java裡面新增了一個method,因為他是繼承binder的 
所以就必須在 
\frameworks\base\core\java\android\bluetooth\IBluetooth.aidl 
裡面去宣告getAttPriority 
但是我查過了~~確實有宣告 
所以為了確定他有重新去build這個BluetoothService.java 
我們去out/target/product/zoom/...把 Bluetooth.java & Bluetooth.class刪掉,讓他重新build一次 
  
這樣做完之後就可以build過了 

[Android]如何修改suspend default timeout

修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml
找到def_screen_off_timeout就是了

[Android]如何抓出手機裡的apk

先把logcat打開 
  
點一下你要抓的app 
  
在logcat裡面找到ActivityManager 
I/ActivityManager(  606): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.qca.bluetooth.le.proximity.apptest/.LEProximityClient u=0} from pid 904 
而我們想要的就是com.qca.bluetooth.le.proximity.apptest關鍵字 
  
輸入 adb shell pm list package -f | grep com.qca.bluetooth.le.proximity.apptest 
就可以得到 
package:/system/app/ProximityAppTest.apk=com.qca.bluetooth.le.proximity.apptest 
由此可知你要的apk在哪個路徑下,且他實際的名稱是什麼

[Linux]Attribute

有 DRIVER_ATTR 和 DEVICE_ATTR 兩種

Device drivers can export attributes via their sysfs directories.
Drivers can declare attributes using a DRIVER_ATTR macro that works
identically to the DEVICE_ATTR macro.

macro定義如下
#define DEVICE_ATTR(_name, _mode, _show, _store) \
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
#define DRIVER_ATTR(_name, _mode, _show, _store) \
struct driver_attribute driver_attr_##_name = \
__ATTR(_name, _mode, _show, _store)
例如:
static DRIVER_ATTR(i2c,  S_IWUSR | S_IRUGO, show_register_value,  store_register_value);


這些mode的值,定義在kernel/include/linux/stat.h
S_IRUGO=(S_IRUSR | S_IRGRP | S_IROTH)
S_IRUSR:00400 表示user read
S_IRGRP:00040 表示group read
S_IROTH:00004 表示other read


通常會定義attribute的路徑,例如
#define BLUETOOTH_POWER_PATH "/sys/module/bluetooth_power/parameters/power"
#define SE123_POWER_PATH "/sys/class/misc/ssiscan/power_en"

然後會有個function如下去enable power
static int set_se655_power(int on) {
    int ret = -1;
    int sz;
    const char buffer = (on ? 'Y' : 'N');
    int fd = open(SE655_POWER_PATH, O_WRONLY);

這些mode的值,定義在kernel/include/asm-generic/fcntl.h
#define O_RDONLY 00000000
#define O_WRONLY 00000001


在kernel/include/linux/device.h裡面定義了以下幾種attribute類型
Bus_attribute
Device_attribute
Driver_attribute
Class_attribute
Dev_ext_attribute
Bin_attribute

Reference:
http://www.bitscn.com/os/linux/200904/158631_7.html

[Linux]Ubuntu更改多重開機的方式

首先修改這個檔案
sudo gedit /etc/default/grub
 
GRUB_DEFAULT=2  這個代表第幾個選項
 
GRUB_TIMEOUT=30 這個代表停留在default選項的時間
 
然後修改完之後要去執行
sudo update-grub
執行完如下
brandon@brandon-ubuntu:/etc/default$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-42-generic
Found initrd image: /boot/initrd.img-2.6.32-42-generic
Found linux image: /boot/vmlinuz-2.6.32-38-generic
Found initrd image: /boot/initrd.img-2.6.32-38-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1

done