為何升息債券會下跌 又為何升息債券不一定下跌

Q:什麼是債券

A:

對於台灣人來說債券可能不太熟悉,但「定存」大家可能都知道是什麼,其實「定存」就有點像是一個「短期」的「銀行債券」。用不精確的白話來說,債券就是一些大型機構所發行可轉賣的「借據」。

你的好朋友「小明」可能最近打算想挖比特幣但缺錢買顯卡,所以跟你借了10萬塊,約定好一年後還你10萬元再加1萬的利息。同時「台積電」可能接到大筆「顯卡IC」定單,因產能不足想要借錢蓋更多工廠,台積電便打算公開發行「債券」。約定每張「債券」100萬元,你可以花100萬買這張「債券」,便可變成台積電的「債主」,台積電說好每年要給你一萬的利息共持續5年,5年後台積電會用100萬元把債券買回,買回後就算是還清債務並結束合約,台積電這次打算總共發行一萬張,故可借到100億來新建廠房。

定存一年就像是借錢給銀行一年,也就是一張一年的銀行債券,只是這張債券沒辦法轉賣只能解約。註:也是有定存可以轉讓,但台灣並不常見,你也可以想像當你要解約一筆100萬定存的時候,銀行只是把這筆定存轉賣給另一個同時間想要新開一筆100萬定存的人。

閱讀更多為何升息債券會下跌 又為何升息債券不一定下跌

[Python] 底線, name_mangling與private member

python並沒有所謂的private
但可以在member的前面加上一個底線 當作一個軟性的private
告訴其他人這個member不應讓其他人取用或修改 以達到安全性

我們也可以在member前面加上雙底線 這樣會產生name mangling的效果
但這樣也不能完全達到禁止存取

一般的情況下應該使用單底線來告知使用者即可(from fluent python ch9)

閱讀更多[Python] 底線, name_mangling與private member

醫師國考成績單補發及OSCE成績單補發

這篇ptt 醫學生版的文章可以參考:
https://www.ptt.cc/bbs/medstudent/M.1386212080.A.2B2.html

目前(2018/1)負責單位已經變成專技考試司第四科
聯絡電話要改為02-2236-9188 分機3708

建議直接寄e-mail過去申請即可
地址是moexpro4@mail.moex.gov.tw
然後需要填應考人應試成績補發申請表填好後e-mail申請即可
雖然對方說要3~5個工作天,但實際上我隔天就收到了

又OSCE成績單補發應直接找當初考試的醫院
除非是要申請osce證書才要找台灣醫學教育學會

[讀書心得] 鳳凰專案-看IT部門如何讓公司從谷底翻身的傳奇故事

FullSizeRender-2

醜話說在前這本書的翻譯品質並不好,一來可能是譯者的翻譯問題二來可能是本書原文作者用字方式較特別。我本人並沒有看過原文,但看過原文的朋友曾表示這本書的英文並不好理解。

撇開翻譯品質的問題,這本書是以小說方式解譯devops,故當成小說來閱讀應該不會有太大問題。因為我只有在硬體系統廠工作的經驗,閱讀時對於這本書常碰到的「deploy」問題較沒有概念,一些專有名詞如ITIL, ITSM也就略過不研究。

這本書以「第一人稱」來描寫比爾這個中階經理在CIO被FIRE後被拉上公司技術總管理人,負責理管全公司約100名工程師。書中的公司雖為一家汽車零件公司,但有許多複雜的IT系統負責生產管理、庫存、零售、薪資、財務等功能。

閱讀更多[讀書心得] 鳳凰專案-看IT部門如何讓公司從谷底翻身的傳奇故事

[Python][C++] static method and inheritance

[code language=”cpp”]
#include <iostream>

using namespace std;

class Parent {
public:
void foo() {
cout << "foo of parent" << endl;
}
static void static_foo() {
cout << "static_foo of parent" << endl;
}
};

class Child : public Parent {
public:
void foo() {
cout << "foo of child" << endl;
}
static void static_foo() {
cout << "static_foo of child" << endl;
}
};

class DummyChild : public Parent {};

void demo() {
Parent parent;
Child child;
DummyChild dummyChild;

parent.foo(); //foo of parent
Parent::static_foo(); //static_foo of parent

child.foo(); //foo of child
Child::static_foo(); //static_foo of child

dummyChild.foo(); //foo of parent
DummyChild::static_foo(); //static_foo of parent

Parent *parentPtr;
Child *childPtr;

parentPtr = &child;
parentPtr->foo(); //foo of parent
//在一般的情況下 因為cpp是靜態語言 預設只會去找這個pointer class所屬的member function

childPtr = &child;
childPtr->foo(); //foo of child
}
[/code]

[code language=”cpp”]
class VirtualParent {
public:
//member function前面加個virtual就變成virtual function
//後面再加上 = 0;就是pure virtual function
virtual void foo() = 0;
virtual void foo2() {} //實作virtual function不是良好設計 但仍可編譯
};

class NonVirtualChild : public VirtualParent {
public:
//child必須實作pure virtual function
void foo() {
cout << "non virtual child" << endl;
}
//若parental有實作virtual function, child建議要overwrite
//但非強制overwrite
void foo2() {}
};

void demo1() {
//含有pure vitual function的class無法生成instance
//此class又稱abstract class(c++術語)或是interface(抽象講法)
//VirtualParent p;

NonVirtualChild c;
c.foo(); //non virtual child
}

class ConcreteParent {
public:
virtual void foo() {
cout << "concrete parent" << endl;
}
};

class ConcreteChild : public ConcreteParent {
public:
virtual void foo() {
cout << "concrete child" << endl;
}
};

void demo2() {
ConcreteParent* p = new ConcreteChild();
p->foo(); //concreate child;
//若呼叫的是virtual function, pointer會去table找出真正的member function
delete p;
}

int main() {
demo();
demo1();
demo2();
}

[/code]

[code language=”python”]
#Python
class Parent:
variable_foo = "variable_foo" #也是class variable
class_variable_foo = "class_variable_foo"

def __init__(self):
self.variable_foo = "init_foo" #object variable

def foo(self):
print("foo of parent, variable = {}, {}".format(self.variable_foo, self.class_variable_foo))

@staticmethod
def static_foo(*arg):
print("static_foo of parent: arg = {}".format(arg))

@classmethod
def class_foo(cls):
print("class_foo of parent, variable = {}, {}".format(cls.variable_foo, cls.class_variable_foo))

class Child(Parent):
variable_foo = "child_variable_foo" #也是class variable

def __init__(self):
self.variable_foo = "init_child_foo" #object variable

def foo(self):
print("foo of child, variable = {}, {}".format(self.variable_foo, self.class_variable_foo))

@staticmethod
def static_foo(*arg):
print("static_foo of child: arg = {}".format(arg))

@classmethod
def class_foo(cls):
print("class_foo of child, variable = {}, {}".format(cls.variable_foo, cls.class_variable_foo))

class DummyChild(Parent):
pass

parent = Parent()
parent.foo() # foo of parent, variable = init_foo, class_variable_foo
#Python會先去找object的variable 找不到時才會去找class的variable

Parent.class_foo() # class_foo of parent, variable = variable_foo, class_variable_foo
Parent.variable_foo = "changeable"
Parent.class_foo() # class_foo of parent, variable = changeable, class_variable_foo
#在Python裡面 class也是一個object 故在執行期改變class變數是OK的
#在C++ class不是object而是一個namespace 故呼叫class static function要用"::" 而非"."

Parent.static_foo() # static_foo of parent: arg = ()
Parent.static_foo("argument1", "arguments2") # static_foo of parent: arg = (‘argument1’, ‘arguments2’)
#在Python裡面 static method是沒辦法access class的attribute
#故可了解 Python的class method其實比較像C++的class static method

child = Child()
child.foo() # foo of child, variable = init_child_foo, class_variable_foo
child.class_foo() # class_foo of child, variable = child_variable_foo, class_variable_foo
child.static_foo() # static_foo of child: arg = ()

dummy = DummyChild()
dummy.foo() # foo of parent, variable = init_foo, class_variable_foo
DummyChild.class_foo() # class_foo of parent, variable = changeable, class_variable_foo
DummyChild.static_foo() # static_foo of parent: arg = ()
[/code]

[讀書心得] 原來有錢人都這麼做 – The Millionaire Next Door

FullSizeRender-1

書名:原來有錢人都這麼做

作者:湯瑪斯.史丹利(Thomas J. Stanley) 威廉.丹柯(William D. Danko)

譯者:凌瑋

ISBM:978-986-93764-1-9

這本書的中心思想很簡單,就是「儲蓄」。作者認為美國許多高收入份子都過度消費,造成資產不足。作者統計了許多有錢人—-依照他定義是資產在100萬美元以上的家庭,發現大部份有錢人都很節儉。前半本書作者舉出了許多統計資料來幫讀者描繪出大部份有錢人消費方式。後半本書則是講述富二代問題,什麼樣父母容易養出敗家子—-那些愛花錢、且會拿錢資助子女的父母。

作者舉了一個有趣的公式來分別高收入的窮人(作者稱超遜理財族)與真正的有錢人(超優理財族)

淨資產 = 資產-負債 > 年齡÷10×年收入

    但我覺得這個公式非常差,假設一個30歲年收入50萬剛工作三年的年輕人,他要有150萬才能稱為超優理財族,必須工作三年都不吃不喝才能達到。而一個60歲年收100萬的屆退人士只要600萬就可算是有錢人,但這個錢買一棟自住的房子就沒剩多少,不夠退休使用。故我提出一個新公式來改進:

淨資產 > 年齡×工作年數÷100×年收入

     也就是說上述的年輕人只要有45萬淨資產就能算是超優理財族,雖然看起來不多但他得先把收入的30%存下來才能辦到,而那位屆退人士則需要1800萬淨資產才算是有錢人。

閱讀更多[讀書心得] 原來有錢人都這麼做 – The Millionaire Next Door