Trollom-gównojadom nie będę niczego tłumaczył, bo nie tylko nie potrafią zrozumieć, ale nawet nie będą próbowali zrozumieć, bo przecież im nie chodzi o znalezienie obiektywnej prawdy, tylko o wywołanie złych emocji...
Natomiast pozostałym śpieszę wyjaśnić, że wcale nie mam satysfakcji kiedy komuś nawsadzam od debili - wręcz przeciwnie, cieszę się kiedy nie muszę tego robić. Przecież rozmawiamy o kwestiach technicznych, a tutaj prawie wszystko jest zero-jedynkowe, albo program działa, albo nie działa, albo jest napisany prawidłowo, albo zawiera błędy...
Tu naprawdę nie powinno być żadnych emocji, tylko dyskusja na merytoryczne argumenty.
Ale niestety tak nie jest. Wielu autorów zachowuje się jak rodzice upośledzonego dziecka i na jakąkolwiek krytykę reagują agresją. Na okrągło przydarza mi się, że komuś wskazuję konkretny błąd, cierpliwie tłumaczę dlaczego nie będzie to działać, na co dostaję debilne odpowiedzi w rodzaju "ja to robię za darmo i powinieneś być mi wdzięczny"...
No niestety, ale logika mówi, że jak dostajesz coś co nie działa, to nie ma powodu do wdzięczności, nawet jeśli to jest za darmo...
I tak właśnie było z autorem LitexCNC ( dawniej Colorcnc), który kompilował sobie kod na Debianie zainstalowanym na Windows (Windows Subsystem for Linux (WSL)), tylko zapomniał kogokolwiek o tym poinformować. U mnie na natywnym Linuksie nic nie chciało działać, a dyskusja z autorem zakończyła się tym, że zbanował mnie na Githubie, zamiast cokolwiek wyjaśnić...
To po prostu taki typ człowieka.
Dam Wam konkretny przykład jak to wygląda i dlaczego nie działa.
Oto zrzut z forum LinuxCNC:
Skopiowałem kod, wkleiłem do Gedit, zmieniłem tylko adres IP i spróbowałem skompilować...
Dostałem taki oto rezultat:
Kod: Zaznacz cały
root@HP-15:/temp/litexcnc# env PATH=$PATH python3 -m litexcnc build_firmware 5a-75e_example.json --build
Traceback (most recent call last):
File "pydantic/main.py", line 545, in pydantic.main.BaseModel.parse_raw
File "pydantic/parse.py", line 37, in pydantic.parse.load_str_bytes
File "/usr/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/usr/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 47 column 6 (char 1332)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/usr/local/lib/python3.13/dist-packages/litexcnc/__main__.py", line 4, in <module>
cli()
~~~^^
File "/usr/local/lib/python3.13/dist-packages/click/core.py", line 1442, in __call__
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/dist-packages/click/core.py", line 1363, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.13/dist-packages/click/core.py", line 1830, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/local/lib/python3.13/dist-packages/click/core.py", line 1226, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/dist-packages/click/core.py", line 794, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.13/dist-packages/litexcnc/cli/build_firmware.py", line 37, in cli
firmware_config = LitexCNC_Firmware.parse_raw(' '.join(config.readlines()))
File "pydantic/main.py", line 554, in pydantic.main.BaseModel.parse_raw
pydantic.error_wrappers.ValidationError: 1 validation error for LitexCNC_Firmware
__root__
Expecting ',' delimiter: line 47 column 6 (char 1332) (type=value_error.jsondecode; msg=Expecting ',' delimiter; doc={
"board_name": "example",
"board_type": "5A-75E v8.0",
"clock_frequency": 40000000,
"connection": {
"connection_type": "etherbone",
"tx_delay": 0,
"ip_address": "10.10.10.111",
"mac_address": "0x10e2d5000000"
},
"watchdog": {
},
"modules": [
{
"module_type": "stepgen",
"instance": [
{
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j1:0",
"dir_pin": "j1:1"
},
"soft_stop": true
}, {
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j2:0",
"dir_pin": "j2:1"
},
"soft_stop": true
}, {
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j3:0",
"dir_pin": "j3:1"
},
"soft_stop": true
}, {
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j4:0",
"dir_pin": "j4:1"
},
"soft_stop": true
}
]
]
}
; pos=1332; lineno=47; colno=6)
Cóż się okazało?
Ano autorowi wcięło jedną linię (pomiędzy nawiasami kwadratowymi, koniec powinien być jak poniżej)
Ktoś może powiedzieć, że każdemu może się przydarzyć, ale nic bardziej błędnego.
Po prostu opublikowany kod nie ma prawa zadziałać, co znaczy że autorowi też by nie zadziałał, co znaczy że nigdy go nie sprawdził, ale opublikował i teraz inni się męczą.
I w tym projekcie tak jest ze wszystkim - jeden wielki burdel...