แหล่งนิยายแปล แหล่งนิยาย นิยายแปล นิยายแต่ง มังงะ การ์ตูน อนิเมะ นายท่าน เว็บไซต์นายท่าน กระทู้สไลม์ สไลม์ยอดรัก

ผู้เขียน หัวข้อ: [โปรแกรมมิ่ง] มือใหม่ Python เชิญผู้สนใจและผู้ที่เขียนประจำมาร่วมวงคุยกันครับ  (อ่าน 320 ครั้ง)

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
เกริ่นก่อนว่าเจ้าของกระทู้พึ่งเริ่มจับ Python เมื่อวาน(25-06-13)นี้เอง โปรดอย่าถามหาความเชียวชาญจากจขกท. ;D

เริ่มจากลงตัว Python กันก่อน ของผมใช้ uv จาก https://github.com/astral-sh/uv
โค๊ด: [Select]
https://github.com/astral-sh/uv


วิธีลงก็ง่าย ก๊อปโค๊ดด้านล่างนี้ กดปุ่ม วินโดว์(ปุ่มที่กดแล้วสตาร์ตเมนูด้านซ้ายโผล่ขึ้นมา) พร้อมกับ R บนคียร์บอร์ด
มันจะขึ้นหน้าต่าง Run มาพร้อมกับโค๊ดด้านบนที่เราก๊อปไว้แล้ว จากนั้นก็กด OK ได้เลยครับ

โค๊ด: [Select]
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"


หรือใครจะเปิดสตาร์อัพเมนูแล้ว ctrl+v วางเอาแบบนี้แล้วกด run as admin เอาก็ได้


รอมันลงซักครู่ก็เป็นอันเรียบร้อยครับ



ต่อมาก็เริ่มมาสร้างโปรแกรมกัน
- เลือกโฟลเดอร์ที่ท่านต้องการใช้เขียนโปรแกรม ถ้าให้สะดวกควรจะเป็นภาษาอังกฤษที่ไม่มีการเว้นวรรคเช่น D:\Code\Learn เป็นต้น(อันนี้กันเหนียวเอาไว้ ผมเจอพวกมีปัญหากับชื่อโฟลเดอร์ในการใช้งานอื่นๆ)

- กดตรงช่องที่อยู่โฟลเดอร์ด้านบนแบบในภาพด้านล่าง คลิ๊กเลือกตัวอักษรทั้งหมดถ้ามันไม่เลือกให้นะครับ


- แล้วพิมพ์ cmd จากนั้นก็กดแป้น Enter(แป้นที่กดแล้วขึ้นบรรทัดใหม่เวลาพิมพ์ข้อความ)


- ทดสอบว่าตัว uv ของเราลงใช้งานได้เรียบร้อยด้วยการพิมพ์ uv -help แล้ว Enter ซึ่งจะขึ้นคำอธิบายคำสั่งๆ ต่างๆ มาให้แบบภาพด้านล่าง
โค๊ด: [Select]
uv -help


- ถ้าไม่มีปัญหาใดๆ แล้วเราก็จะเริ่มสร้างไฟล์สำหรับเขียนโค๊ดด้วยคำสั่งด้านล่างนี้กันล่ะครับ
โค๊ด: [Select]
uv init -p 3.13 --name Learning
อ้างถึง
-p 3.13 คือกำหนดให้ใช้ python เวอร์ชั่นล่าสุดของรุ่น 3.13 นี้
--name Learning คือตั้งชื่อโปรแกรมของเราว่า Learning ซึ่งอันนี้ใครจะเปลี่ยนเป็นชื่ออะไรก็ได้ตามใจขอให้เป็นภาษาอังกฤษที่ไม่มีอักษรพิเศษหรือเว้นวรรคก็พอ

สำหรับการใช้งาน python แต่ละรุ่นครั้งแรกมันจะโหลดลงเวอร์ชั่นนั้นๆ แปบหนึ่งก่อนซึ่งต้องต่อเน็ตนะครับ แต่พอลงแล้วครั้ง ต่อๆ ไปก็ไม่จำเป็นต้องต่อเน็ต

- เรียบร้อยแล้วในโฟลเดอร์ของเราก็จะมีไฟล์แบบภาพด้านล่าง ซึ่งจะไม่มีโฟลเดอร์ .venv แบบในภาพเพราะนั่นเป็น virtual environment ของ python ซึ่งยังไม่จำเป็นสำหรับการใช้งาน ณ ตอนนี้ครับ



- จากนั้นเราก็เปิดเจ้าไฟล์ main.py กัน จะเปิดด้วย Notepad หรือโปรแกรมอื่นๆ ก็ได้ที่มันเปิดไฟล์ .txt ได้ แต่ถ้าจะให้สะดวกก็เป็น editor ที่รองรับภาษา python ส่วนตัวผมก็คงเป็น VS Code https://code.visualstudio.com/download
โค๊ด: [Select]
https://code.visualstudio.com/download
- แต่ก่อนจะไปแก้ไขเขียนโค๊ดกันเรามารันโปรแกรมทดสอบกันก่อนครับด้วยคำสั่งนี้
โค๊ด: [Select]
uv run main.py
อ้างถึง
uv run คือการสั่งให้มันรันโปรแกรมจากไฟล์ .py
main.py คือไฟล์โค๊ดที่เราต้องการรัน ณ ตอนนี้



โพสเปิดนี้เอาเป็นการลงแล้วก็รันทั่วไป โพสถัดไปจะเป็นโค๊ดเรียนรู้ของผมว่าผมเรียนอะไรไปบ้าง  :P

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445
 :P  ผมเอง เพิ่มจะเริ่มต้นเรียนภาษาคอม เลย เดียวจะไปลองหาพวกหนังสือภาษาC ก่อน


ตอยนี้รอคอมจิ๋วมาส่งก่อนเกียวจะเริ่มซ่อมคอมเครื่องเก่า ไม่รู่จะได้ซ่อมหรือเรี่ยนใหม่


คอมสั่งมาใหม่ เป็นแบบ ไมโคร i5 7500t ram8 ssd128
 
เหล่าหมีที่ถูกใจสิ่งนี้: richter

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
ส่วนตัวเวลาผมเรียนรู้โค๊ดอะไรใหม่ๆ ไว้ก็มักจะเขียนเป็นตัวอย่างและคอมเมนท์รวมๆ กันเอาไว้หาดูทีหลังเวลาลืมขึ้นมา  ???

โค๊ด: [Select]
def detail_of_runing_function(func):
    def replace_func(*args, **optional_args):
       
        t = f"Testing {func.__name__}"
        n = len(optional_args)
        if len(args) :
            t += f" with args = {args}"
            if n : t += f" and optional args = {optional_args}"
        elif n :
            t += f" with optional args = {optional_args}"
       
        print("\n----------------------------------")
        print(t)
        print("----------------------------------")
        return func(*args, **optional_args)
    return replace_func

@detail_of_runing_function
def list_check():
    # Warning "None" is case sensitive!!
    # None == Nothing == void
    source = ["rune", None, None]
    if all(source):
        print("List is fill")
    elif any(source):
        print("List has some value")
    else:
        print("List is empty")
   
@detail_of_runing_function
def select_case():
    day = 4
    match day:
        case 1 | 2 | 3 | 4 | 5:
            print("Today is a weekday")
        case 6 | 7:
            print("I love weekends!")

    month = 5
    day = 4
    match day:
        case 1 | 2 | 3 | 4 | 5 if month == 4:
            print("A weekday in April")
        case 1 | 2 | 3 | 4 | 5 if month == 5:
            print("A weekday in May")
        case _:
            print("No match")

@detail_of_runing_function
def dictionary():
    holder = {
    "brand": "N/A",
    "model": "N/A"
    }

    input = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
    }

    holder |= input # equal to holder.update(input)
    print(holder)

    print(dict(brand = "Honda", model = "NSX", year = "2001"))

@detail_of_runing_function
def tuples():
    #Tuple is treat as ref type
    pack = (7, 9, 11)
    a, b, c = pack
    f = lambda x, y, z: x + y - z

    #id(variant) == get ref.address
    print(id(pack))
    print(pack)
    print(f(a, b, c))

@detail_of_runing_function
def merge_list():
    a = [1,4,7,0,2,7]
    b = [5,8,3,6,9,1]

    # Simple merge list with + operator
    c = a + b
    print(c)
   
    print([*zip(a,b)])

    # Unpack method with the same result
    # c = [*a, *b]

    # sorted(List) is prebuild method for sort list
    d = sorted(c)
    print(d)

    # print a created array with select current_value where current_value equal next_value
    e = [d[i] for i in range(len(d) - 1) if d[i] == d[i+1]]
    print(e)

    # map(arg_method, collection) is fuction that apply arg_method to each item of collection.
    print(f"Repeat number is : { ', '.join(map(str,e)) }")

    # set(List|Value,...) is pre build method to recreate list with remove duplicate value and sort list in process.
    # *set|list is convert to tuple argument while pass it to function.
    # print(tuple, sep="add on") as sep == seperation, an optional argument of print method, add "add on" after print each member in tuple.
    print(*set(c), sep="\n")

@detail_of_runing_function
def deep_copy():

    def dcopy(arg):
        if not isinstance(arg,(list, set, dict)): return arg
        if isinstance(arg, dict) : return {k: dcopy(v) for k, v in arg.items()}
       
        # Elvis operator
        # return arg or "default" # return if(arg, "default")
        # return arg if arg else "default"
        return [dcopy(i) for i in arg] if isinstance(arg, list) else {dcopy(i) for i in arg}

    l = [1, ['A', 'B', ['C', 'D']],{9, 8}, (11, 12), dict(map = 'n', x = 0, y = 0), 3]
    o = dcopy(l)

    o[1].append('4')
    o[1][2].append('E')
    o[2].add(7)
    o[3] = (13, 14)
    o[4]['x'] = 128

    print(l)
    print(o)

@detail_of_runing_function
def factoria():
    @detail_of_runing_function
    def fact(n:int, o:int = 2) -> int:
        for i in range(3, n + 1):
            o *= i
        return o

    print(f"5! = { fact(5) }")
    print(f"5! = { fact(5, o = 2) } Optional")

    fact2 = lambda n, o = 2 : fact2(n - 1, o * n) if n > 2 else o
    print(f"5! = { fact2(5) } Lambda")

    fact3 = (lambda f: lambda n: 1 if n == 0 else n * f(f, n - 1))(lambda f, n: 1 if n == 0 else n * f(f, n - 1))
    print(f"5! = { fact3(5) } Pure Lambda")

    fact4 = (lambda n: 1 if n == 0 else n * fact3(n - 1))  # Iterative version of the factorial function
    print(f"5! = { fact4(5) } AI Lambda")
   

@detail_of_runing_function
def import_lib():
    from math import sin
    print(sin(90))

def intercept(func):
    # Nest function
    def replace_func(*args, **optional_args):
        print("==================================")
        print(f"Call {func.__name__}")
        print("----------------------------------")
        # *args is declare input(s) as tuple.
        # **optional_args is declare input(s) as dictionary.
        o = func(*args, **optional_args)
        print("==================================")
        return o
    return replace_func

@intercept
def main():
    # input("Message") for user input
    # {input("Name: ") or "N/A"} is the short of {if input("Name: ") is None then "N/A"}
    print(f"Hello {input("Name: ") or "N/A"}")
    print((lambda x, y: x + y)(5, 10))

    # Testing invoke
    list_check()
    tuples()
    import_lib()
    merge_list()
    dictionary()
    deep_copy()
    factoria()


if __name__ == "__main__": main()

Output
โค๊ด: [Select]
Z:\Coding\learning>uv run main.py
==================================
Call main
----------------------------------
Name: Richter
Hello Richter
15

----------------------------------
Testing list_check
----------------------------------
List has some value

----------------------------------
Testing tuples
----------------------------------
5596748722368
(7, 9, 11)
5

----------------------------------
Testing import_lib
----------------------------------
0.8939966636005579

----------------------------------
Testing merge_list
----------------------------------
[1, 4, 7, 0, 2, 7, 5, 8, 3, 6, 9, 1]
[(1, 5), (4, 8), (7, 3), (0, 6), (2, 9), (7, 1)]
[0, 1, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9]
[1, 7]
Repeat number is : 1, 7
0
1
2
3
4
5
6
7
8
9

----------------------------------
Testing dictionary
----------------------------------
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964}
{'brand': 'Honda', 'model': 'NSX', 'year': '2001'}

----------------------------------
Testing deep_copy
----------------------------------
[1, ['A', 'B', ['C', 'D']], {8, 9}, (11, 12), {'map': 'n', 'x': 0, 'y': 0}, 3]
[1, ['A', 'B', ['C', 'D', 'E'], '4'], {8, 9, 7}, (13, 14), {'map': 'n', 'x': 128, 'y': 0}, 3]

----------------------------------
Testing factoria
----------------------------------

----------------------------------
Testing fact with args = (5,)
----------------------------------
5! = 120

----------------------------------
Testing fact with args = (5,) and optional args = {'o': 2}
----------------------------------
5! = 120 Optional
5! = 120 Lambda
5! = 120 Pure Lambda
5! = 120 AI Lambda
==================================

ท่านใดมีอะไรเพิ่มเสริม รบกวนด้วยครับ มือใหม่ python ซิงๆ ปรกติเป็นแค่ใช้กับลง requirement แค่นั้นเองครับ  :-[



ผมลองให้ AI เช็คบัคโค๊ดผมดู... มั่วอะไรของเองฟระกันเลยทีเดียว  ???
โค๊ด: [Select]
def dcopy(arg):
    # Original code checks if arg is a list, set, or dict and returns it accordingly.
    # However, if arg is a dict, it doesn't handle nested dictionaries correctly.
    if not isinstance(arg, (list, set, dict)):  # Ensure arg is one of the supported types
        return arg
    # มันก็โค๊ดเก่าตูนะเฟ้ยแค่ฟอร์แมตมาตรฐานหน่อยแค่นั้นเอง

    # If arg is a dictionary, the code intended to create a deep copy but failed to handle nested dictionaries.
    if isinstance(arg, dict):
        # Fix: Utilize dictionary comprehension to deep copy dictionary values, including nested dictionaries
        return {k: dcopy(v) for k, v in arg.items()}  # Deep copy of keys and recursively deep copy of values
    # ไม่ได้เปลี่ยนอะไรเล๊ย

    # The code was supposed to handle list and set types, but the logic was incomplete.
    # Fix: Correctly deep copy elements in list and set using generator expression
    # The Elvis operator syntax isn't Pythonic and not necessary for this purpose.
    return [dcopy(i) for i in arg] if isinstance(arg, list) else {dcopy(i) for i in arg} if isinstance(arg, set) else arg  # Deep copy of list and set elements
    # เองจะเติม  if isinstance(arg, set) else arg มาทำไมในเมื่อ arg ที่ไม่ใช่ list, set, dict มันโดนถีบออกไปตั้งแต่ต้นแล้ว ซึ่ง ณ บรรทัดนี้ dict โดนคัดออกไปแล้ว ข้างหน้าก็ list ไปแล้ว มันก็เหลือแต่ set อยู่ตัวเดียวเองจะเช็กซ้ำทำ fail safety ไปทำอันใด
« แก้ไขครั้งสุดท้าย: มิถุนายน 13, 2025, 07:14:36 PM โดย richter »
 

ออฟไลน์ blakaros

  • ผู้สนับสนุนเซนนิคุงY3
  • จอมทัพหมีชั้นสูง
  • ***
  • กระทู้: 17,635
  • ถูกใจแล้ว: 6592 ครั้ง
  • ความนิยม: +270/-3
ไม่ได้เรียนนานแล้ว   ที่มีก็แทบจะคืนอาจารย์ไปหมดละ   แต่ยังพออ่านได้อยู่




สมัยผมเรียน JAVA เลย   แต่ทำงานไป visual c    ไม่ได้ต่างกันมากเลยไปไหวอยู่
 
เหล่าหมีที่ถูกใจสิ่งนี้: sariora123, richter

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445
ผม สายวิทยาศาสตร์ประยุค พวก โรงงานอาหาร

เรียนๆ มาคืน อจ ไปหมดล่ะ สมัยก่อนเข้าเล็บ ทดลองนั่นนี่เทสารกันผิดลงไประเบิดในท่อก็เคย ;)
ไม่ได้จับมาเป็นสิบปีลืมๆ ไปหมดล่ะ    ??? :-*




ข่าววงการ IT

https://www.france24.com/en/live-news/20250613-we-re-done-with-teams-german-state-hits-uninstall-on-microsoft

รบเยอรมัน ระบบราชการเปรี่บนมาใช้ OS พื้นฐาน linux
เอาตามตรง ถ้าไม่ติดปัญหาทางการเมืองของอเมริกา

MS  แม่งทำงานกันห่วยเอง  ยักเยียดชิบหาย หลังๆ เริ่มมีข่าวคนหนีไประบบอื่นกันเรื่อยๆ
« แก้ไขครั้งสุดท้าย: มิถุนายน 14, 2025, 07:48:44 AM โดย sariora123 »
 

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
ปรกติภาษาอื่นผมจะหาทางเลี่ยงการบังคับใช้ type เพื่อความสะดวก แต่ไม่คิดเลยว่าใน python ผมจะต้องมาเขียนโค๊ดบังคับใช้ type เอง
Declare type มีไว้ให้คนอ่านแต่ไม่ได้บังคับใช้ เช่นถ้าเขียน int Input = "Input"; ในภาษาอื่นนั้น error แน่นอนแต่ใน python ... ไม่ผิด ไม่ error ด้วย :o

ไม่คิดว่าจะต้องมาเขียนดัก type เอง  ???
โค๊ด: [Select]
# Decorate for strict checking type.
def strict(*arg_types):
    def recieve(func):
        def replace_func(*args, **optional_args):
            if len(arg_types) :
                err:list[str] = []
                for a, t in zip(args, arg_types):
                    if not isinstance(a, t):
                        err.append(f"{a} is not {t}")
                if len(err):
                    print("\n==================================")
                    raise TypeError('\n'.join(err))
            return func(*args, **optional_args)
        return replace_func
    return recieve



MS นี่ช่วยไม่ได้ครับ รับโวกเข้าไปเยอะ การเมืองภายในที่ทำงานวุ่น แถมแต่ละคนอยู่กันบนหอคอยงาช้า
นี่ถ้า steam OS ไม่สะกิดคงไม่ออกมาดิ้นอัพเกรดฝั่งอุปกรณ์พกพาล่ะครับ

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445
คอมมาส่งแล้ว แต่ เอะ เม๊าอันเดิมไม่มีพังไปแล้ว :(


ลำโพงก็ไม่มีอีก สงสัยต้องไปซื้อก่อนเปิดกล่องเทสเครื่อง






หลังบิล เกต วางมือไปยุคแรกๆ ก็ยังดีไปได้   แต่ยุคหลังๆนี่คือไม่ไหว
เน่ากันขนาดไหน ล่าสุด ยุโรป ออกกฏหมายจะมาใช้ทั้งทวีปว่า ระบบปฏิบัตรการที่ลงมา ต้องมีให้เลือกได้ว่าแอปไหนจะเอาไว้ เอาออกได้ ลง.หม่ได้ ห้ามีขัดไม่ให้ลง เน่าจัดจาก วิน11นี่แหละ


จริงๆ มีเจ้าอื่นอีก  พวกอุปกรณ์ที่มีนะบบ ปฏิบัตรการ แม่งยัดBloat ware กันมาจนต้องออกกฏหมายคุม


ไม่นับช่วงก่อนโน้นที่จอฟ้ากันแทบทั้งโลกเพราะ อับเดทโง่ๆ  ผมสงสัยว่า แม่งไม่เทศงานกันก่อนเลนเหรอวะ   เคยเข้าเพจเกี่ยวกับพวก เกม หรือIT  นี่แหละ บางคนบ่นให้ฟังว่าหลังเรื่องคราวนั้นบริษัท ถึงเฝกะวางเเผนเปนี่ยนเป็นlinux กันเลย 
สมละที่ว่า รุ่นแรกสร้าง รุ่นใช้ รุ่น3 พัง
ช่วงนี้ขาลงพวกIT  ใหญ่ๆ ทั้งนั้น






คือเข้าใจอ่ะ ว่างานบางอย่างถ้ามันถึงเวลาที่ต้องทำมันต้องทำให้จบในเวลานั้นๆ ถ้าเกิดพลาดไปคือจบ
เหมือนข่าวแถว อเมริกาใต้ แบน รถไถ จอห์นเดีย เพราะแม่งไม่ให้ช่างนอกซ่อม ทั้งซแฟแวร์ และฮาร์ดเเวร์
เกษตกรแถบนั้นบอกว่าฤด๔เก็บเดียว บางอย่างมีแค่ 21-25วัน ต้องทำให้เสร็หากพ้นช่วงนี้ไปคือผลผลิตเสีย





 
เหล่าหมีที่ถูกใจสิ่งนี้: richter

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
อย่าไปถามหาประสิทธิภาพกับบริษัทที่จัดพวก DEI ครับท่าน ละหมดช่วงนั้น ส่วน จอห์นเดีย นี่ดราม่ายาวมาตั้งแต่ในบ้านมะกันแล้วครับ
ด้านฟรีแวร์ โอเพนซอร์ส ก็มีปัญหาไม่แพ้กัน พวกบริษัทที่เข้าไปก็พยายามจะทำลาย ไม่อยากไม่ยอมให้ fork โปรเจค

อัพเดตเพิ่มเช็ค nullable กับ อาเรย์ปล่าว  ;)
โค๊ด: [Select]
# Decorate for strict checking type.
def strict(*arg_types, nullable = False, emptied = True, **optional_types):
    def receive(func):
        def replace_func(*args, **optional_args):
           
            def err_message(exception, err):
                if err:
                    print("\n==================================")
                    raise exception('\n'.join(err))
           
            if arg_types:       err_message(TypeError,
                [
                    f"{a} is not {t.__name__}"
                    for a, t in zip(args, arg_types)
                    if not isinstance(a, t)
                ])
            if optional_types:  err_message(TypeError,
                [
                    f"{k} is not {t.__name__}"
                    for k, t in optional_types
                    if k in optional_args and not isinstance(optional_args[k], t)
                ])
            if not nullable:    err_message(ValueError,
                [
                    f"arg_{i}:{t.__name__} is None"
                    for i, a in enumerate(args)
                    if a is None
                ])
            if not emptied:     err_message(ValueError,
                [
                    f"arg_{i}:{type(c).__name__} is empty"
                    for i, c in enumerate(args)
                    if isinstance(c, (list, set, dict)) and not c
                ])
           
            return func(*args, **optional_args)
        return replace_func
    return receive

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445
อย่าไปถามหาประสิทธิภาพกับบริษัทที่จัดพวก DEI ครับท่าน ละหมดช่วงนั้น ส่วน จอห์นเดีย นี่ดราม่ายาวมาตั้งแต่ในบ้านมะกันแล้วครับ
ด้านฟรีแวร์ โอเพนซอร์ส ก็มีปัญหาไม่แพ้กัน พวกบริษัทที่เข้าไปก็พยายามจะทำลาย ไม่อยากไม่ยอมให้ fork โปรเจค

อัพเดตเพิ่มเช็ค nullable กับ อาเรย์ปล่าว  ;)
[code/]


โอเพนซอสมันอยู่ได้เพราะ ความเป็น โอเพน นั่นแหละ


นึกถึง มิโทเล้น ที่บางคนก็ยังใช้ เวอรโครตเก่า เพราะไม่รกตา  ผมเคยเจอเวอร์ใหม่ๆ  ซึ่งพี่แกก็หาทางเอาโฆษณามายัดไว้ด้านใน ก็นะคนเราต้องกินต้องใช้  จำได้ว่าสมัยก่อน ไล่ดูTaskmanager ชื่อไฟล์ ว่าตัวไหนไม่เคยเห็น  ก็เลยเข้าไปแก้เอาไฟอื่นมาใส่ชื่อแทน โฆษณา ไม่ขึ้น ???


เริ่มอ่านC++  าหน้านึงล่ะ ประวัติความเป็นมา ;D


เข้าใจเลยว่า ทำไม คนเกลียด วิน11นักหนา ต่อเน็ด ปุ๊ป เด้งรัวๆ :o
ไม่ได้ใช้คอมมานาน  รู้สึกเหมือน MS  กำลังจะจูนให้เหมือน มือถือชอบกล


เคยดูดราม่า พวก โอเพนซอสหลายเจ้าเมื่อก่อนอ่ะนะ พอเริ่มไปไก้ดีมากเข้าก็เสือกเรื่องมากกันนัก


เคยเลยเอาโค๊ดช่วงก่อนหน้าไปแตกสาขา กันแล้วลูกค้าก็เลยหนีไปเยอะ เพราะช่วฃแรกไม่ค่อยมีคนทำแข่ง  และแถมก่อนจะมีปัญหาเสือกไม่ค่อยแก้บัก เอาแต่บ้าไล่จับผิดคนอื่น(ช่วงเลือกตั้งเมืองนอก) เขาเลยด่ากันว่าคนใช้ไม่ได้สนการเมือง คือกุอยากให้เมิงแก้บัก ???










สมัยก่อนใช้เจน 3-4 ล่ะมั้ง  เครื่องที่เปิดตอนนี้ เจน7  ลงท้ายTแต่ดูหนัง 1080 ลื่นไหลชัดเจน
เน็ตเดียวนี้โหดเเฮะ สมัยก่อน 20GB ผมโหลด2วันทเมื่อคืนโหลด    legend op galactic heroตอนค่ำ
ดึกๆ จะนอน เด้งโหดเสร็จ :o    เข้าเวปบิดเก่าที่เคยอยู่ คนหายไปเพียบ โดยเฉพาะไพลซับไทย
 
เหล่าหมีที่ถูกใจสิ่งนี้: richter

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445
วนมา มู้นี้อีกรอบ


เข้าบท เขียนHello world ล่ะ
ตอนนี้เริ่มรู้ปัญหาล่ะ ก่อน จะเขียน น่าจะต้องหัดพิมพ์ตัว Eng ก่อนล่ะ


พิพม์ไทยไม่มองก็ไปได้ แต่พิมพ์ENG  คือไมมองไม่ได้ไม่ได้เลย :(
 
เหล่าหมีที่ถูกใจสิ่งนี้: richter

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
เปิดแอพ On-Screen Keyboard ที่ติดมากับวินโดว์ช่วยได้ครับ ดูแอพเอาเป็นหลักจะได้ไม่ต้องก้มดูช่วงแรกๆ

ของท่านเขียนบนแอพใดครับ VS Code หรือตัวอื่น  ;)


พยายามทำให้ใช้ decorator หลายๆ ตัวด้วยกันได้แต่มันดันเป็นการเรียกแบบ nest แทนเลยต้องเขียนเอง...อีกแล้ว
ตัวนี้ยังเป็น prototype อยู่ผมยังไม่ได้เกลาอะไรมาก

โค๊ด: [Select]
def invoke(*methods):
    def receiver(func):
        # args is tuple but optional_args is dict which mutable so it could use as past around information.
        def replace_func(*args, **optional_args):
            def is_method(arg) : return type(arg).__name__ == "function"
            for method in methods:
                if is_method(method) : method(func, args, optional_args)
                elif isinstance(method, (list,tuple)):
                    if is_method(method) : method[0](func, args, optional_args, methods[1:])
            return func(*args, **optional_args)
        return replace_func
    return receiver

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445




ยังไม่ถึงขั้นเขียนครับ ตอนนี้ อ่านไปถึง
Hello world แล้วว่า บน C++ ต้องพิมพ์ยังไงบ้าง แล้ว ลองพิมตาม ใน word


(ยังไม่ได้หา โปรแกรมโค๊ดมาลง  เลยรู้ตัวว่า ห่วยมาก เรื่องพิมพ์ ENG
พิมพ์ไทยสมัยก่อนช่วงพีคๆ ตอนเกรียนคีย์บอร์ด นี่เกิน 130คำต่อนาที
ตอนนี้เลยต้องมาจิ้มฝึก ENG ก่อนเลย




แนะนำแอป ทีครับ ว่าอันไหนดี
ตอนนี้หาอ่านบทเรียนออนไลน์ เรื่อง C++ อยู่ กำลังหาดูว่าของเวปไหนเข้าใจง่าย














ไปเจอดราม่า ของ ไมโครซอฟวินโดวมา ว่าทำไมคนเริ่มเกลียดกันเยอะ
ย่าจะตั้งแต่ปีที่แล้ว ที่MS  มีแผนอับเดท วินโดว11 ในเดือน10 ปี 2025
และจะหลุดซัพพอร์ท วิน10
ปัญหาคือไอ้วิน 11 ที่จะ อับเดท **/10/2025
จะไม่สนับสนุน Intel ที่ต่ำกว่า gen11


 :( ชิบหาดิงานนี้ ไม่แปลก ยุโรปนี่โกรธกันจนออกกฏหมายมาดักคอแม่งไว้แล้ว
เยอรมันคอมรัฐ ประกาศใช้ OS  base on linuxไปแล้ว   ล่าสุดก็ เดนมารก์ จะตามไปอีกประเทศ
ถ้ารัฐใช้ ที่เหลือคือเอกชนจะตามกันไหม หรือจะมีอีกกี่ประเทศตาม


เะราะถ้าหากเริ่มใช้กันมากขึ้นตลาดเริ่มมี OS สาย linux น่าจะได้เกิดเเน่ๆประมาณการคร่าวๆ 40%ของผู้ใช้ Steam  ยัง วิน 10 อยู่เลย แม่งจะบังคับ ย้ายรับบไม่พอ จะให้เปรี่ยน อะไหร่อีก อันนี้ไม่ไหว


ลามไปถึง อินเทลที่คนด่ากันว่า บอร์ดบริหาร แม่งตัวชิบหาทแทนที่จะเน้น พัฒนา นวัฒกรรมเอาแต่กับไร  กะวิ่งเต้น lobby



 
เหล่าหมีที่ถูกใจสิ่งนี้: richter

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
อ่านแล้วพิมพ์เฉยๆ ไม่ได้เห็น error มันไม่ค่อยจำหรอกครับ อันนี้ตัวออนไลน์ พิมพ์แล้วรันดูว่าออกมาได้เหมือนที่เขาสอนหรือปล่าว
https://www.onlinegdb.com/online_c++_compiler

เว็บเรียน - ส่วนใหญ่ผมจะใช้ของ w3school มากกว่า แต่เป็นไล่ดูไวยกรณ์และคีย์เวิร์ดซะมาก
https://www.w3schools.com/cpp/default.asp

แน่นอนว่าสมัยนี้มี AI ช่วย เรียนง่ายขึ้นเยอะเช่น ผมสงสัยว่าจะดึงเมมตัวแรกของดิคมายังไงก็ถามไปเลยว่า python, get first value of dict
https://www.perplexity.ai/

VS-Code ที่ใช้อยู่ผมก็ลงปลั๊กอินเชื่อมกับ AI ที่ผมรันในเครื่อง
ตัวนี้ใช้ให้มันตรวจบัคโค๊ดเวลาผมพิมพ์ผิดตกหล่นอะไร บางทีมันก็แนะนำอะไรให้ผมคิดว่าเอ่อทำแบบนี้ก็ได้วุ้ยเหมือนกัน

ส่วนตัวผมไม่รู้ว่าท่านมีประสบการณ์การเขียนโค๊ดมาระดับไหน
นอกจากเรื่องไวยกรของภาษาแล้วมันยังจะมีเรื่องตั้งแต่ระดับใหญ่ๆ อย่างแนวการเขียนเชิงวัตถุ การเขียนเชิงโครงสร้าง การเขียนเชิงฟังค์ชั่น ล่าสุดก็การเขียนเชิงข้อมูล
ไปจนถึงเรื่องหยิบย่อยอย่าง pointer และการจัดสรรบริหารแรมที่โปรแกรมใช้
ส่วนตัวแม้จะเขียนมาหลายปีผมก็ยังไม่ยอมแตะเรื่องแพทเทิร์นดีไซน์  ;D

เท่าที่ผมเห็นตอนนี้สาย C, C++ สายงานระดับล่างอย่างพวกเขียน kernel หรือ driver ย้ายไปภาษา Rust ที่คุมเรื่องการจัดสรรบริหารแรมเข้มงวดกว่า
แต่มันก็มีดราม่าในหมู่คนเขียนเคอร์เนลของลินุกมาหลายรอบว่าคนเขียน C, C++ ไม่ยอมรับโค๊ดจาก Rust เข้าเพราะไม่ชำนาญอ่านเขียนโค๊ดของ Rust

เรื่อง Windows 11 นี่ว่าจริงประเด็นต้านมันเยอะมาก เริ่มตั้งแต่ผิดคำที่ว่าจะเป็น 10 ไปเรื่อยๆ
(แต่อันนี้ปรกติของ MS คนเขียนโค๊ดสาย .Net โดนหักหลังกันมาเยอะไม่ต่างจากคนโมกันพลาโดนบันไดหักหลัง)
จนไปถึงเรื่องยัดสารพัดและความพยายามสานต่อให้ Windows มีโฆษณาจาก Windows 10 ที่ทำไม่สำเร็จ  ???

ส่วนอินเทลนี่ผมมองว่า บริษัทใดเอาพวกจบ MBA บริหารทั้งหลายมาเป็น CEO บริษัทพวกนั้นลืมนวัตกรรมไปได้เลย
ปั่นหุ้นแต่งงบการเงินกันอย่างเดียว แล้วเป็นเกือบทุกบริษัทด้วยเท่าที่ผมเห็น แบบเกาะบุญเก่าแล้วก็ค่อยๆ เน่าหายสลายไป

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445
เริ่ม จาก 0 เลยคนับ ไม่เคย เรียนอะไรเกี่ยวกะเขียนโค๊ดเลย ???
 
เหล่าหมีที่ถูกใจสิ่งนี้: richter

ออฟไลน์ humandroy

  • หัวหน้าฝูงหมีใหญ่
  • *****
  • กระทู้: 1,146
  • ถูกใจแล้ว: 463 ครั้ง
  • ความนิยม: +22/-22
C pascal java python และอื่นๆเกือบทั้งหมด มันไม่ไ่ด้ต่างกันโดยโครงสร้างภาษาครับ ภาษาพวกนี้มันต่างกันแค่ word หรือการสะกดคำแค่นั้น
ถ้า sql กับ prolog  และ assembly ถึงจะต่างออกไป

assembly มันจะเป็นภาษาที่ให้เราสั่ง CPU เลยว่าให้ทำอะไร ดังนั้นมันจะเร้วมาก แต่เราต้องรู้โครงสร้างของ cpu นั้นๆ
sql มันเป็นการอธิบายคุณลักษณะของข้อมูลที่เราต้องการ ซึ่งไม่ใช่การสั่งว่าให้ทำอะไร
และ prolog มันเป็นการนิยามฟังก์ชั่นโดยอ้างอิงฟังก์ชั่นอื่นและตัวมันเอง ถ้าเรียกแบบ programmer รุ่นเก่าๆจะเรียกว่าเป็น recursive
 
เหล่าหมีที่ถูกใจสิ่งนี้: richter

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
เริ่ม จาก 0 เลยคนับ ไม่เคย เรียนอะไรเกี่ยวกะเขียนโค๊ดเลย ???  

เริ่มต้นด้วย C++ นี่ระดับดาร์โซลเลยนะท่าน วุ่นกว่า C เยอะ ค่อยๆ ฟาร์มล่ะครับ



ตอนคิดช่วงแรกๆ ไม่ได้เผื่อกันไว้สินะ python
รับ *args เป็น tuple ซึ่งเป็น immutable
แต่ดันรับ **kwargs เป็น dict ซึ่งดันเป็น mutable  :o

โยนค่าระหว่าง method กันสนุกล่ะครับ เห้อๆ  ???

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445
vs code  คือ visual studio code ใช่ไหม โหลดมาล่ะ ยังไม่ได้ลอง




หลังจากได้คอมมา ตอนนี้เลยวนอยู่กับการจัดการ "อารยธรรม" เก่าๆ ที่เคยหามาเก็บไว้
ไปๆ มาๆ เลยได้ต้องจัดเรียงกันใหม่ แถมดูท่า อารยธรรมล่ม ไป 1 TB ไม่รู้จะเปิดย้ายได้ไหม
เพราะต่อ Dock แล้วค้าง หรือแต่ลองต่อกับบอร์ดแบบปกติถ้าติดก็น่าจะยังย้ายได้




 HDD นี่ส่วนตัวผม ไม่ชอบเลย ซัมซวย  HDD ทั้งหมดเท่าที่เคยพังมา ก็ของ ซัมซวย พังไป 2 ล่ะ
กับ WD(พังไป 1) นี่แหละ   ประตูทะเล คนด่ากันเยอะของผมยังไม่พังเก่าสุดก็ก่อนน้ำท่วมใหญ่ ยังเปิดได้
 

ออนไลน์ sariora123

  • จอมพลหมีชั้นกลาง
  • **
  • กระทู้: 13,046
  • ถูกใจแล้ว: 5284 ครั้ง
  • ความนิยม: +445/-445





อับเดท เรื่องวงการ คอม
 
มีข่าวว่า อับเดทรอบต่อไปของวินโดว 
จะไม่รองรับการใช้งาน โครม
 :(
WTF matafaqka


รู้สึกว่าคนจะเดือดกันไม่ใช่น้อยๆ เลยล่ะนะ ช่วงนี้เห็น คลิปเชีย linux กันเพียบ
คือไมโครซอฟมันเอา อะไรคิดกันวะ นี่ หรือช่วงนี้มันสงบดีเกินไปเลยจะขุดหลุมฝังตัวเอง ?



 

ออฟไลน์ richter

  • ยอดกวีแห่งเขาเซนนิคุมะ
  • แม่ทัพหมีชั้นกลาง
  • **
  • กระทู้: 2,140
  • ถูกใจแล้ว: 1336 ครั้ง
  • ความนิยม: +50/-25
ใช่ ครับ VS Code คือ visual studio code มันเป็นตัวเอาไว้ทำสีเฉยๆ คล้ายๆ Notepad++ อะไรพวกนั้น
แต่สามารถโหลด extension แบบ browser มาเสริมความสามารถมันได้

ส่วนตัวผมพึ่งยายไป VS Codium เป็นตัว fork จาก VS Code ที่ถอดพวกเก็บค่าส่งค่าต่างๆ ของไมโครซอฟออก
https://github.com/VSCodium/vscodium/releases

ช่วงนี้เริ่มไปไล่แก้โค๊ดตัวรัน AI ที่ใช้อย่าง ReForgeUI โดยให้ ruff แก็โค๊ดพื้นฐานให้ หลังจากที่แก้เสร็จแล้วรัน... error ออกรันไม่ผ่าน  ???
ผมไม่แน่ใจว่ามันไปแก้ตรงไหนให้โค๊ดมันหาย ดันลืมสั่งให้ทำ log เอาไว้ ต้องแก้เฉพาะกิจที่ตัว import ที่มันเกิด error ทั้งๆ ที่ตัวมันไม่มีปัญหาแต่ผมต้องแก้เพื่อให้มันรันผ่าน  ;D

อ้างถึง
หลังจากได้คอมมา ตอนนี้เลยวนอยู่กับการจัดการ "อารยธรรม" เก่าๆ ที่เคยหามาเก็บไว้
ไปๆ มาๆ เลยได้ต้องจัดเรียงกันใหม่ แถมดูท่า อารยธรรมล่ม ไป 1 TB ไม่รู้จะเปิดย้ายได้ไหม
เพราะต่อ Dock แล้วค้าง หรือแต่ลองต่อกับบอร์ดแบบปกติถ้าติดก็น่าจะยังย้ายได้

HDD นี่ส่วนตัวผม ไม่ชอบเลย ซัมซวย  HDD ทั้งหมดเท่าที่เคยพังมา ก็ของ ซัมซวย พังไป 2 ล่ะ
กับ WD(พังไป 1) นี่แหละ   ประตูทะเล คนด่ากันเยอะของผมยังไม่พังเก่าสุดก็ก่อนน้ำท่วมใหญ่ ยังเปิดได้

Seagate น่าจะถึกที่สุดเท่าที่ผ่านมือผมมา แต่ตอนนี้ย้ายไป SSD เกือบหมดละ



เรื่องบล๊อก Chrome นี่ผมเห็น Youtuber ออกมาบ่นกันแต่ไม่ได้กดเข้าไปดู  :P
คนดื้ออยู่ Windows 10 เหมือนสมัย 7 กับ XP แหละครับ ผมเองก็ไม่คิดจะย้ายก็เลยไม่ได้สนข่าวอะไรเกี่ยวกับ Windows 11

 

Tags:
แหล่งนิยายแปล แหล่งนิยาย นิยายแปล นิยายแต่ง มังงะ การ์ตูน อนิเมะ นายท่าน เว็บไซต์นายท่าน กระทู้สไลม์ สไลม์ยอดรัก