เด’เดจเตเดฑเต‹เดณเดœเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดชเตˆเดคเตเดคเดฃเดฟเตฝ เดŽเด™เตเด™เดจเต† เด’เดฐเต เดธเตโ€ŒเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเตผ เดŽเดดเตเดคเดพเด‚. เดญเดพเด—เด‚ 3: เดฑเตบเดŸเตˆเด‚ API

เด’เดจเตเดฑเต‹เดณเดœเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดชเตˆเดคเตเดคเดฃเดฟเตฝ เดŽเด™เตเด™เดจเต† เด’เดฐเต เดธเตโ€ŒเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเตผ เดŽเดดเตเดคเดพเด‚. เดญเดพเด—เด‚ 3: เดฑเตบเดŸเตˆเด‚ API

เด’เดจเตเดฑเต‹เดณเดœเดฟ เดฌเตเดฒเต‹เด•เตเด•เตโ€Œเดšเต†เดฏเดฟเตป เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดชเตˆเดคเตเดคเดฃเดฟเตฝ เดธเตโ€ŒเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเดฑเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดชเดฐเดฎเตเดชเดฐเดฏเดฟเดฒเต† เดฎเต‚เดจเตเดจเดพเด‚ เดญเดพเด—เดฎเดพเดฃเดฟเดคเต. เดฎเตเตป เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเตเดŸเต

  1. เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเตป & เดฌเตเดฒเต‹เด•เตเด•เต API
  2. เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต API.

เด“เดจเตเดฑเต‹เดณเดœเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดชเตˆเดคเตเดคเตบ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดธเตโ€ŒเดฎเดพเตผเดŸเตเดŸเต เด•เต‹เตบเดŸเตเดฐเดพเด•เตโ€Œเดฑเตเดฑเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‰เดšเดฟเดคเดฎเดพเดฏ เดชเต†เตผเดธเดฟเดธเตเดฑเตเดฑเดจเตเดฑเต เดธเตโ€Œเดฑเตเดฑเต‹เดฑเต‡เดœเต เดŽเดชเดฟเดเดฏเต† เดŽเด™เตเด™เดจเต† เดตเดฟเดณเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดงเดพเดฐเดฃเดฏเตเดฃเตเดŸเต, เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดชเด เดฟเด•เตเด•เดพเตป เดจเดฎเตเด•เตเด•เต เดชเต‹เด•เดพเด‚ เดฑเตบเดŸเตˆเด‚ API (เด•เดฐเดพเตผ เดจเดฟเตผเดตเตเดตเดนเดฃ API). เดฑเตบเดŸเตˆเด‚ API-เดจเต 8 เด…เดจเตเดฌเดจเตเดง API-เด•เตพ เด‰เดฃเตเดŸเต, เด…เดคเต เด•เดฐเดพเตผ เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดชเตŠเดคเตเดตเดพเดฏ เด‡เดจเตเดฑเตผเดซเต‡เดธเตเด•เตพ เดจเตฝเด•เตเด•เดฏเตเด‚ เดกเดพเดฑเตเดฑ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เดพเดจเตเด‚ เดฐเต‚เดชเดพเดจเตเดคเดฐเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเตเด‚ เดธเดพเดงเต‚เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

8 API เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด’เดฐเต เดนเตเดฐเดธเตเดต เดตเดฟเดตเดฐเดฃเด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต:

เด’เดจเตเดฑเต‹เดณเดœเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดชเตˆเดคเตเดคเดฃเดฟเตฝ เดŽเด™เตเด™เดจเต† เด’เดฐเต เดธเตโ€ŒเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเตผ เดŽเดดเตเดคเดพเด‚. เดญเดพเด—เด‚ 3: เดฑเตบเดŸเตˆเด‚ API

8 API เดกเดพเดฑเตเดฑ เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚. เด‡เดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดจเตเดฑเต‹เดณเดœเดฟ เดธเตเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเตผ เดตเดฟเด•เดธเดจ เดŸเต‚เดณเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เด•เดฐเดพเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ SmartX เด•เต‚เดŸเดพเดคเต† เดคเดพเดดเต†เดฏเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดชเดพเดฒเดฟเด•เตเด•เตเด•.

เดฑเตบเดŸเตˆเด‚ API เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚

เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเดพเตป เดฐเดฃเตเดŸเต เดตเดดเดฟเด•เดณเตเดฃเตเดŸเต เดฑเตบเดŸเตˆเด‚ API: ontology.interop.System.Runtime ะธ ontology.interop.Ontology.Runtime. เด’เดจเตเดฑเต‹เดณเดœเดฟ เดชเดพเดฅเดฟเตฝ เดชเตเดคเตเดคเดพเดฏเดฟ เดšเต‡เตผเดคเตเดค API-เด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดคเดพเดดเต†เดฏเตเดณเตเดณ เดตเดฐเดฟเด•เตพ API เดกเดพเดฑเตเดฑ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

API เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเด•

เดจเต‹เดŸเตเดŸเดฟเดซเตˆ เดซเด‚เด—เตโ€Œเดทเตป เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเตเดŸเดจเต€เดณเด‚ เด‡เดตเดจเตเดฑเต เดชเตเดฐเด•เตเดทเต‡เดชเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เด…เดฑเดฟเดฏเดฟเดชเตเดชเต เดซเด‚เด—เตเดทเตป เดนเต†เด•เตเดธเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต "เดนเดฒเต‹ เดตเต‡เดกเต" เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•เดฏเตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเตเดŸเดจเต€เดณเด‚ เดชเตเดฐเด•เตเดทเต‡เดชเดฃเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เดฒเต‹เด—เตเด•เดณเดฟเตฝ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚:

เด’เดจเตเดฑเต‹เดณเดœเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดชเตˆเดคเตเดคเดฃเดฟเตฝ เดŽเด™เตเด™เดจเต† เด’เดฐเต เดธเตโ€ŒเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเตผ เดŽเดดเตเดคเดพเด‚. เดญเดพเด—เด‚ 3: เดฑเตบเดŸเตˆเด‚ API

GetTime API

GetTime เดซเด‚เด—เตโ€Œเดทเตป เดจเดฟเดฒเดตเดฟเดฒเต† เดŸเตˆเด‚เดธเตเดฑเตเดฑเดพเดฎเตเดชเต เดจเตฝเด•เตเดจเตเดจเต, เด…เดคเต เดซเด‚เด—เตโ€Œเดทเตป เดตเดฟเดณเดฟเดšเตเดšเดฟเดฐเตเดจเตเดจ Unix เดธเดฎเดฏเด‚ เดจเตฝเด•เตเดจเตเดจเต. เด…เดณเดตเดฟเดจเตเดฑเต† เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเดพเดฃเต.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # return a uint num

GetCurrentBlockHash API

GetCurrentBlockHash เดซเด‚เด—เตโ€Œเดทเตป เดจเดฟเดฒเดตเดฟเดฒเต† เดฌเตเดฒเต‹เด•เตเด•เดฟเดจเตเดฑเต† เดนเดพเดทเต เดจเตฝเด•เตเดจเตเดจเต.

from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

เดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต เดšเต†เดฏเตเดคเต เดกเดฟเดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต เดšเต†เดฏเตเดฏเตเด•

เด‡เดคเต เด’เดฐเต เดœเต‹เดŸเดฟ เดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต‡เดทเตป, เดกเดฟเดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต‡เดทเตป เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเดพเดฃเต. เดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต เดซเด‚เด—เตโ€Œเดทเตป เด’เดฐเต เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเดจเต† เด’เดฐเต เดฌเตˆเดฑเตเดฑเตผเดฑเต‡ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดกเดฟเดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต เดซเด‚เด—เตโ€Œเดทเตป เด’เดฐเต เดฌเตˆเดฑเตเดฑเตผเดฑเต‡เดฏเต† เด’เดฑเดฟเดœเดฟเดจเตฝ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด•เต‹เดกเต เดธเดพเดฎเตเดชเดฟเตพ เด‡เตปเด•เดฎเดฟเด‚เด—เต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเต† เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด•เดฐเดพเดฑเดฟเดจเตเดฑเต† เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเตฝ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เด•เดฐเดพเดฑเดฟเดจเตเดฑเต† เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เด’เดฌเตเดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext

def Main(operation, args):
    if operation == 'serialize_to_bytearray':
        data = args[0]
        return serialize_to_bytearray(data)
    if operation == 'deserialize_from_bytearray':
        key = args[0]
        return deserialize_from_bytearray(key)
    return False


def serialize_to_bytearray(data):
    sc = GetContext()
    key = "1"
    byte_data = Serialize(data)
    Put(sc, key, byte_data)


def deserialize_from_bytearray(key):
    sc = GetContext()
    byte_data = Get(sc, key)
    data = Deserialize(byte_data)
    return data

Base58ToAddress, AddressToBase58

เดˆ เดœเต‹เดกเดฟ เดตเดฟเดฒเดพเดธ เดตเดฟเดตเตผเดคเตเดคเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ. Base58ToAddress เดซเด‚เด—เตโ€Œเดทเตป เด’เดฐเต base58 เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตโ€Œเดค เดตเดฟเดฒเดพเดธเดคเตเดคเต† เด’เดฐเต bytearray เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเด‚ AddressToBase58 เด’เดฐเต bytearray เดตเดฟเดฒเดพเดธเดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ58 เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตโ€Œเดค เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
    base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
    addr=Base58ToAddress(base58_addr)
    Log(addr)
    base58_addr=AddressToBase58(addr)
    Log(base58_addr)

เดธเดพเด•เตเดทเดฟเดฏเต† เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•

CheckWitness(fromAcct) เดซเด‚เด—เตโ€Œเดทเดจเต เดฐเดฃเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดฃเตเดŸเต:

  • เดจเดฟเดฒเดตเดฟเดฒเต† เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เด•เต‹เดณเตผ เด†เด•เตโ€Œเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต‹ เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•. เด…เดคเต† เดŽเด™เตเด•เดฟเตฝ (เด…เดคเดพเดฏเดคเต, เด’เดชเตเดชเต เดชเดฐเดฟเดถเต‹เดงเดจ เดชเดพเดธเดพเดฏเดฟ), เดซเด‚เด—เตเดทเตป เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเดจเตเดจเต.
  • เดจเดฟเดฒเดตเดฟเดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต† เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เด’เดฐเต เด•เดฐเดพเดฑเดพเดฃเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•. เด‡เดคเต เด’เดฐเต เด•เดฐเดพเตผ เด†เดฃเต†เด™เตเด•เดฟเตฝ, เด•เดฐเดพเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดซเด‚เด—เตเดทเตป เดจเดฟเตผเดตเตเดตเดนเดฟเดšเตเดšเดพเตฝ, เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฃเด‚ เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเด‚. เด…เดคเดพเดฏเดคเต, GetCallingScriptHash() เดจเตเดฑเต† เดฑเดฟเดŸเตเดŸเต‡เตบ เดฎเต‚เดฒเตเดฏเดฎเดพเดฃเต fromAcct เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•. GetCallingScriptHash() เดซเด‚เด—เตโ€Œเดทเดจเต เดจเดฟเดฒเดตเดฟเดฒเต† เดธเตเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเดฑเดฟเดจเตเดฑเต† เด•เดฐเดพเตผ เดนเดพเดทเต เดฎเต‚เดฒเตเดฏเด‚ เดŽเดŸเตเด•เตเด•เดพเด‚.

GetCallingScriptHash():

เด•เต‚เดŸเตเดคเตฝ เด—เตเดคเตเดฌเต

from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เด•เดพเดฃเดพเด‚ เด—เตเดคเตเดฌเต. เด…เดŸเตเดคเตเดค เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚ เดจเต‡เดฑเตเดฑเต€เดตเต APIเด’เดจเตเดฑเต‹เดณเดœเดฟ เดธเตเดฎเดพเตผเดŸเตเดŸเต เด•เดฐเดพเดฑเตเด•เดณเดฟเตฝ เด†เดธเตเดคเดฟเด•เตพ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต†เดฏเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดพเตป.

เดชเดคเตเดฐเดพเดงเดฟเดชเตผ เดฒเต‡เด–เดจเด‚ เดชเดฐเดฟเดญเดพเดทเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ เดนเดพเดทเตเดฑเต‡เดฑเตเดฑเต&เดทเต†เดฏเดฑเตเด•เตพ เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เด’เดจเตเดฑเต‹เดณเดœเดฟ เดฑเดทเตเดฏเดฏเตเด•เตเด•เต.

เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดกเต†เดตเดฒเดชเตเดชเตผ เด†เดฃเต‹? เดžเด™เตเด™เดณเตเดŸเต† เดŸเต†เด•เต เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฏเดฟเตฝ เดšเต‡เดฐเตเด• เดจเดฟเดฐเดธเดฟเด•เตเด•เตเด•. เด•เต‚เดŸเดพเดคเต†, เด’เดจเตเดจเต เดจเต‹เด•เตเด•เต‚ เดกเต†เดตเดฒเดชเตเดชเตผ เดธเต†เดจเตเดฑเตผ เด’เดจเตเดฑเต‹เดณเดœเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดตเดฟเดŸเต† เด•เต‚เดŸเตเดคเตฝ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เดฎเดฑเตเดฑเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚.

เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เดพเดฏเดฟ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดคเตเดฑเด•เตเด•เตเด•. เดšเตเดฎเดคเดฒ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ เด’เดฐเต เดชเตเดฐเดคเดฟเดซเดฒเด‚ เดจเต‡เดŸเตเด•.

เด…เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเด• เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เตเดณเตเดณ เด’เดจเตเดฑเต‹เดณเดœเดฟ เดŸเดพเดฒเดจเตเดฑเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเดพเดฏเดฟ

เด“เดฃเตเดŸเดฟเดณเดœเดฟ

เด’เดจเตเดฑเต‹เดณเดœเดฟ เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเต - เดธเดพเดฎเต‚เดนเดฟเด•เด‚ - เดจเดฟเดฐเดธเดฟเด•เตเด•เตเด• - เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดฑเดทเตเดฏเตป - เดŸเตเดตเดฟเดฑเตเดฑเตผ - เดฑเต†เดกเตเดกเดฟเดฑเตเดฑเต

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•