เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจจเฉˆเจŸเจตเจฐเจ• เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆเฅค เจญเจพเจ— 3: เจฐเจจเจŸเจพเจˆเจฎ API

เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจจเฉˆเจŸเจตเจฐเจ• เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆเฅค เจญเจพเจ— 3: เจฐเจจเจŸเจพเจˆเจฎ API

เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจฌเจฒเจพเจ•เจšเฉˆเจจ เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจฃ เจฌเจพเจฐเฉ‡ เจตเจฟเจฆเจฟเจ…เจ• เจฒเฉ‡เจ–เจพเจ‚ เจฆเฉ€ เจฒเฉœเฉ€ เจฆเจพ เจ‡เจน เจคเฉ€เจœเจพ เจนเจฟเฉฑเจธเจพ เจนเฉˆเฅค เจชเจฟเจ›เจฒเฉ‡ เจฒเฉ‡เจ–เจพเจ‚ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เจธ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจนเฉ‹เจ เจนเจพเจ‚

  1. เจฌเจฒเจพเจ•เจšเฉˆเจจ เจ…เจคเฉ‡ เจฌเจฒเจพเจ• API
  2. เจธเจŸเฉ‹เจฐเฉ‡เจœ API.

เจนเฉเจฃ เจœเจฆเฉ‹เจ‚ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เจน เจตเจฟเจšเจพเจฐ เจนเฉˆ เจ•เจฟ เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจจเฉˆเจŸเจตเจฐเจ• 'เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจ‰เจšเจฟเจค เจธเจฅเจฟเจฐ เจธเจŸเฉ‹เจฐเฉ‡เจœ API เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจพเจฒ เจ•เจฐเจจเจพ เจนเฉˆ, เจคเจพเจ‚ เจ†เจ“ เจ‡เจน เจธเจฟเฉฑเจ–เจฃ เจฒเจˆ เจ…เฉฑเจ—เฉ‡ เจตเจงเฉ€เจ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจตเจฐเจคเจฃเจพ เจนเฉˆ เจฐเจจเจŸเจพเจˆเจฎ API (เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ API)เฅค เจฐเจจเจŸเจพเจˆเจฎ API เจตเจฟเฉฑเจš 8 เจธเฉฐเจฌเฉฐเจงเจฟเจค API เจนเจจ เจœเฉ‹ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฒเจˆ เจ†เจฎ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ, เจชเจฐเจฟเจตเจฐเจคเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจนเฉ‡เจ เจพเจ‚ 8 API เจกเฉ‡เจŸเจพ เจฆเจพ เจธเฉฐเจ–เฉ‡เจช เจตเจฐเจฃเจจ เจนเฉˆ:

เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจจเฉˆเจŸเจตเจฐเจ• เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆเฅค เจญเจพเจ— 3: เจฐเจจเจŸเจพเจˆเจฎ API

เจ†เจ‰ 8 API เจกเฉ‡เจŸเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ 'เจคเฉ‡ เจ‡เฉฑเจ• เจกเฉ‚เฉฐเจ˜เจพเจˆ เจจเจพเจฒ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจ. เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจคเฉเจธเฉ€เจ‚ เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจกเจฟเจตเฉˆเจฒเจชเจฎเฉˆเจ‚เจŸ เจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจ‡เจ•เจฐเจพเจฐเจจเจพเจฎเจพ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจธเจฎเจพเจฐเจŸเจเจ•เจธ เจ…เจคเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจนเจฟเจฆเจพเจ‡เจคเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเฉ‹เฅค

เจฐเจจเจŸเจพเจˆเจฎ 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 เจซเฉฐเจ•เจธเจผเจจ เจฎเฉŒเจœเฉ‚เจฆเจพ เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจฏเฉ‚เจจเจฟเจ•เจธ เจธเจฎเจพเจ‚ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจฎเจพเจช เจฆเฉ€ เจ‡เจ•เจพเจˆ เจฆเฉ‚เจœเฉ€ เจนเฉˆเฅค

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 เจซเฉฐเจ•เจธเจผเจจ เจ‡เฉฑเจ• เจฌเฉ‡เจธ58 เจเจจเจ•เฉ‹เจก เจ•เฉ€เจคเฉ‡ เจเจกเจฐเฉˆเฉฑเจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเจพเจˆเจŸเฉ€เจ…เจฐเฉ‡ เจเจกเจฐเฉˆเฉฑเจธ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ AddressToBase58 เจ‡เฉฑเจ• เจฌเจพเจˆเจŸเฉ€เจ…เจฐ เจเจกเจฐเฉˆเฉฑเจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเฉ‡เจธ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(fromActt) เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจฆเฉ‹ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจนเจจ:

  • เจœเจพเจ‚เจš เจ•เจฐเฉ‹ เจ•เจฟ เจ•เฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจซเฉฐเจ•เจธเจผเจจ เจฆเจพ เจ•เจพเจฒเจฐ เจเจ•เจŸ เจคเฉ‹เจ‚ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจนเจพเจ‚ (เจญเจพเจต, เจฆเจธเจคเจ–เจค เจคเจธเจฆเฉ€เจ• เจชเจพเจธ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ), เจคเจพเจ‚ เจซเฉฐเจ•เจธเจผเจจ เจตเจพเจชเจธ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค
  • เจœเจพเจ‚เจš เจ•เจฐเฉ‹ เจ•เจฟ เจ•เฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจตเจพเจฒเฉ€ เจตเจธเจคเฉ‚ เจ‡เจ•เจฐเจพเจฐเจจเจพเจฎเจพ เจนเฉˆเฅค เจœเฉ‡ เจ‡เจน เจ‡เจ•เจฐเจพเจฐเจจเจพเจฎเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจ‡เจ•เจฐเจพเจฐเจจเจพเจฎเฉ‡ เจคเฉ‹เจ‚ เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจคเจธเจฆเฉ€เจ• เจชเจพเจธ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจญเจพเจต, เจœเจพเจ‚เจš เจ•เจฐเฉ‹ เจ•เจฟ เจ•เฉ€ fromAcct GetCallingScriptHash() เจฆเจพ เจตเจพเจชเจธเฉ€ เจฎเฉเฉฑเจฒ เจนเฉˆเฅค 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

'เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ เจ—เฉเจฅเจฌ. เจ…เจ—เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเจš เจ…เจธเฉ€เจ‚ เจชเฉ‡เจธเจผ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจจเฉ‡เจŸเจฟเจต เจเจชเฉ€เจ†เจˆเจ”เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸเจธ เจตเจฟเฉฑเจš เจธเฉฐเจชเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจเจพ เจนเฉˆ เจ‡เจน เจธเจฟเฉฑเจ–เจฃ เจฒเจˆเฅค

เจฒเฉ‡เจ– เจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจธเฉฐเจชเจพเจฆเจ•เจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจนเจธเจผเจฐเจคเฉ‡ เจ…เจคเฉ‡ เจธเจผเฉ‡เจ…เจฐ เจ–เจพเจธ เจ•เจฐเจ•เฉ‡ เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจฐเฉ‚เจธ เจฒเจˆเฅค

เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจกเจฟเจตเฉˆเจฒเจชเจฐ เจนเฉ‹? 'เจคเฉ‡ เจธเจพเจกเฉ‡ เจคเจ•เจจเฉ€เจ•เฉ€ เจญเจพเจˆเจšเจพเจฐเฉ‡ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‹ เจตเจฟเจตเจพเจฆ. เจจเจพเจฒ เจนเฉ€, 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจœเจผเจฐ เจฎเจพเจฐเฉ‹ เจตเจฟเจ•เจพเจธเจ•เจพเจฐ เจ•เฉ‡เจ‚เจฆเจฐ เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€, เจคเฉเจธเฉ€เจ‚ เจ‰เฉฑเจฅเฉ‡ เจนเฉ‹เจฐ เจŸเฉ‚เจฒ, เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจ•เฉเจ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฒเจˆ เจ•เจพเจฐเจœ เจ–เฉ‹เจฒเฉเจนเฉ‹เฅค เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เจจเจพเจฎ เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ‹เฅค

เจฒเจพเจ—เฉ‚ เจ•เจฐเฉ‹ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เจ†เจ‚ เจฒเจˆ เจ”เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจชเฉเจฐเจคเจฟเจญเจพ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฒเจˆ

เจ“เจจเจŸเฉ‹เจฒเจพเจœเฉ€

เจ“เจจเจŸเฉ‹เจฒเฉ‹เจœเฉ€ เจตเฉˆเจฌเจธเจพเจˆเจŸ - GitHub - เจตเจฟเจตเจพเจฆ - เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจฐเฉ‚เจธเฉ€ - เจŸเจตเจฟเฉฑเจŸเจฐ - Reddit

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹