Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Ink

Stran: 1 ... 31 32 [33] 34 35 ... 43
481
Vývoj / Re:Zkušenosti s TypeScriptem
« kdy: 28. 03. 2020, 23:49:09 »
Základní princip je, že s proměnnými pracuji abstraktně. V následujícím příkladu pracuji se třemi prvky, řádkem, elementem řádku a indexem. Proto používám tři tomu odpovídající proměnné.

Kód: [Vybrat]
>>> row = '1, 2, 3, 4, 5'
>>> row = row.split(',')
>>> row = [int(elm) for elm in row]
>>> for idx, elm in enumerate(row):
...     row[idx] = idx * elm
...
>>> print(sum(row))
40

No a ted si predstav, ze ve staticky typovanem Rustu muzes psat neco jako:

Kód: [Vybrat]
fn main() {
    let v = "Ahoj Douglasi";
    println!("{:?}", v);
    let v = 42;
    println!("{:?}", v);
}

A vis, proc tomu tak je? Protoze "v" je jenom jmeno, ktere odkazuje na konkretni hodnotu. A kompilator rozumi kontextu - tedy tomu, ze kdyz dam kdykoli v prubehu dalsi "let v", ze jsem se rozhodl, ze uz to puvodni "v" pouzivat nebudu a tak ho "zastinim" uplne jinym "v". To neni nic "dynamickeho", jde o to, ze inteligentni kompilator tuhle situaci umi resit a netrva na tom, ze "v" je jednou provzdy &str.

482
Studium a uplatnění / Re:Vplyv ekonomického kolapsu na IT
« kdy: 28. 03. 2020, 13:53:48 »
Ako podľa vás nadchádzajúca kríza, ktorá bude oveľa katastrofálnejšia než tá z 2008 roku, možno horšía ako tá z 1929 roku ovplyvní IT?

Křišťálové koule kupuješ kde?

483
Vývoj / Re:Zkušenosti s TypeScriptem
« kdy: 28. 03. 2020, 13:52:53 »
Zajímalo by mě, kde se reálně využije dynamičnost kódu? Z integer je kdesi v kódu najednou string a na základě toho se program větví jinak nebo co? Mě neskutečně irituje, že jsem některé projekty v php nepředělal na striktní typy, protože se pak všude musí dělat harakiry, aby se mi int porovnával opravdu jako int. Na chybu se pak přijde třeba za rok nebo vůbec.

Je to vývoj. V době, kdy psát typy byl neskutečný opruz, byly jazyky jako Python živá voda. Pak se v mainstreamu objevila typová inference a dobré vlastnosti z Pythonu a dalších jazyků a naopak Python umožňuje typy psát a kontrolovat pomocí statické analýzy. Na druhou stranu si nedělejme iluze, že kontrola v době kompilace nebo nějaký linter objeví všechny chyby a některé nebudou na vhodnou chvíli čekat i ten rok.

V dynamických jazycích lze psát poměrně robustní kód i bez typových anotací, ale je to náročnější na code review a chce to cvik. Ty anotace se budou určitě ve větších projektech používat víc a víc.

484
Vývoj / Re:Zkušenosti s TypeScriptem
« kdy: 27. 03. 2020, 20:51:30 »
Výborně. Tak teď, když už víme, že nám typová kontrola (zdaleka) nepochytá všechny chyby, je na čase zvážit, zda se nám vyplatí ji na chytání chyb zavádět a zvyšovat tím složitost kódu a snižovat jeho dynamičnost a obecnost.
Neřešte to znovu, už se to tu řešilo, a zjistilo se, že každý soudruh to má jinak. Věnujte se místo toho raději pravopisu, ten by naopak měl mít každý soudruh stejný (= dle pravidel).

Ještě je nutno zmínit, že omezující typový systém je sám o sobě zdrojem zbytečných chyb.

Ano, omezeny typovy system zpusobuje zbytecne chyby. Kvalitni typovy system pomaha chybam predchazet.

485
Vývoj / Re:Python 3.6 a Zabbix API: vytvoření listu s lastdat
« kdy: 27. 03. 2020, 20:42:59 »
Zkus treba neco takoveho:

Kód: [Vybrat]
import pprint

D1 = {
    "Total disk space on /": "45.59 GB",
    "Total disk space on /boot": "496.67 MB",
    "Total memory": "3.7 GB",
    "host": "mailgw.domain.sk",
    "hostid": "10284",
    "name": "ems01.domain.sk"
}
D2 = {
    "Total disk space on /": "75.44 GB",
    "Total disk space on /boot": "496.67 MB",
    "Total memory": "3.7 GB",
    "host": "zbx-prx1.domain.sk",
    "hostid": "10285",
    "name": "zbx-prx1.domain.sk"
}
D3 = {
    "host": "Commet.web.sensor.1",
    "hostid": "10286",
    "name": "ServerRoom sensor EIN1"
}
D4 = {
    "host": "firewall01",
    "hostid": "10287",
    "name": "prvy-firewall - Cisco ASA"
}

BASIC_KEYS = {
    "host",
    "hostid",
    "name",

}

def print_dict(d):
    pprint.pprint({
        "Basic info" : {
            k: d[k] for k in d if k in BASIC_KEYS
        },
        "Technical info" : {
            k: d[k] for k in d if k not in BASIC_KEYS
        },
    })

print_dict(D1)
print_dict(D2)
print_dict(D3)
print_dict(D4)

486
Vývoj / Re:Aspektovo orientovane programovanie
« kdy: 27. 03. 2020, 08:41:27 »
Ahojte,
pouzivate ci uz profesionalne alebo ametrsky AOP?
Co nim riesite a v com vam pomohol?

Skusil som si jeho zaklady a natchlo ma to, hlavne v spojeni z generikami. Co myslite, ze mu brani v rozsireni?

(PS: toto nie je tema o FP, tych je tu dost, ak chcete svetu povedat ake uzasne albo zle je FP tak je tu na to tem dost.)

Mohl bys napsat seznam projektu/prikladu, ktere Te inspirovaly?

487
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 25. 03. 2020, 09:27:51 »
Funkce, která u jednoúrovňového číselného seznamu vrátí jedno číslo (jejich součet), u jednoúrovňového nečíselného seznamu hodí chybu, u víceúrovňového s libovolnými hodnotami sníží level o jeden, to opravdu nepovažuji za bezpečného kandidáta pro flatMap. Obzvláště když pythonní proměnná akceptuje cokoliv.

Zapominas na kontext - ten kod "flatMapu" (pokud bereme muj priklad po prepisu na sum()) jednoznacne prohrabava List[List[str]], prazdny vstup resi ten 2. parametr funkce sum(). Naprosto bezpecne a verifikovatelne statickou analyzou. Kdyz budes chtit obecnejsi reseni, pouzijes itertools.chain(), pokud budes chtit resit obecne zplosteni, muzes pouzit deepflatten() z toho odkazu. Ale my jsme myslim takhle obecne resit problem nechteli, slo o to ukazat padawanum, ze Python tyhle veci (pro rychle pouziti) hrave zvlada.

488
Software / Re:Jak opravit linux
« kdy: 25. 03. 2020, 08:54:20 »
Ano, nabootuj zive distro, zedituj /etc/fstab (minimalne vyhod automaticke mountovani dotycneho svazku) a melo by to byt OK. Zdanlive banalni problem, ale potrapi.

489
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 25. 03. 2020, 05:51:30 »
K čemu je tam ta sčítací lambda či ta sum?

v pythonu se listy spojuji operaci scitani, funkce sum secte prvky listu

Kód: [Vybrat]
>>> sum([[1],[2, 3]], [])
[1, 2, 3]

Cili obdoba operace flatMap() - ze seznamu cisel jednotlivych ucastnic udela jeden seznam. Tohle mi v tom puvodnim JS kodu bylo jasne na prvni pohled, ale ten pochybny zpusob vylouceni duplicit by se mi lustit nechtelo. Vsadil bych se, ze to JavaScript taky umi lip, jinak by to bylo smutne.

490
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 25. 03. 2020, 05:41:53 »

to reduce bije do očí. Proč používáte reduce pro sčítání (spojování), když to stejné dělá sum, případně itertools.chain?


Kód: [Vybrat]
numbers = set(
        sum((c.phoneNumbers for c in CONTACTS if c.kozy > 3 and c.iq > 100), [])
)

ještě drobnost, když už používáte reduce, funkce pro běžné operace jsou v knihovně operators, místo (lambda x, y: x + y), můžete použít operators.add. Lambdy jsou antipattern.

Ano, diky za vylepseni, pane kolego; sum() je asi nejelegantnejsi a chain() nejprehlednejsi a ano, list comprehension je tam zbytecny (jak neuvadis, ale v kodu jsi to prepsal na generator expression).

491
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 24. 03. 2020, 19:47:11 »
Tenhle hnus je nějaká forma unique nebo distinct?

.filter((num, index, nums) => nums.indexOf(num) == index)

Ano, to je unique, a neni to Lua, ale Javascript - to je takovy ten jazyk, ktery brzo prevalcuje Python, a ktera ma dneska spousta Javistu v zaloze :D

Tvl tady Pythonisti ani neznaji monady, a pritom my to v Jave pouzivame uz od verze 1.8  8)
Tydlencty "monady" mame v Pythonu odjakziva.

Kód: [Vybrat]
from dataclasses import dataclass
from functools import reduce
from typing import List

@dataclass
class Contact:
    kozy: int
    iq: int
    phoneNumbers: List[str]


CONTACTS = [
    Contact(
        kozy = 2,
        iq = 100,
        phoneNumbers = [
            '123456789',
        ],
    ),
    Contact(
        kozy = 4,
        iq = 150,
        phoneNumbers = [
            '113456789',
            '133456789',
        ],
    ),
    Contact(
        kozy = 5,
        iq = 130,
        phoneNumbers = [
            '113456789',
            '213456789',
        ],
    ),
]

if __name__ == '__main__':
    numbers = set(
        reduce(
            (lambda x, y: x + y), [
                c.phoneNumbers
                for c in CONTACTS
                if c.kozy > 3 and c.iq > 100
            ], []
        )
    )
    print(numbers)

492
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 24. 03. 2020, 17:19:16 »
Tak to ti nejspíš nenapíše. Vždyť to ani nedává smysl. :D Napřed získá holý seznam telefonních čísel a pak se ho snaží filtrovat jako jakýsi seznam trojic.

V zavislosti na strukture ulozene v tom seznamu nebo nejake obskurnosti v Lua to neco delat muze, ale bez rozumneho zadani at si to strci do korporatu.

493
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 24. 03. 2020, 16:34:20 »
Nikdo se neodvazi? Jde to vubec v pythonu udelat? :D

Napis, co to ma delat, nikdo tu nema zajem lustit Tvoji pseudoseznamku v Lua.

494
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 23. 03. 2020, 18:40:50 »
To zase já jsem po letech místo Pythonu začal používat Luu (na své projekty). Syntaxe a schopnosti jsou podobné, jen je menší, snad i rychlejší (neměřil jsem). Možná je to jen pocit, ale prostě všechny ty vlastnosti, které má Python navíc mě vůbec nelákají, a věci, které mi v Lue schází, tak zase Python taky nemá, tak co.

Mně tam vadí, pokud se něco nezměnilo, možnost pracovat buď jenom s floaty nebo jenom s inty. To mi přijde jako výsměch.

495
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 23. 03. 2020, 10:56:52 »
Z diskuse jsem si odnesl dva poznatky, PetrK ma nejakou poruchu osobnosti a prostredi javy je jeste horsi, nez jsem si myslel. Ze je java i spatny jazyk, jsem uz vedel. Ze je Python na vrcholu zebricku Tiobe je zajimave, ja s Pythonem zqcinal, kdyz prechazel z verze 1 na 2 a to byl docela neznamy jazyk. Je to ohromujici rust a to tim nejlepsim zpusobem, je to rust zdola, rust kvalitou, nestoji za nim zadna obri korporace, ktera by ho manazersky tlacila. Ale tu oblibenost chapu, hrozne pohodlne se v tom programuje, me se take nechce v nicem jinem delat, byt ten tlak na JS je take dost silny.

Mám to podobně - s Pythonem někdy od verze 1.5. Líbí se mi ale třeba i Julia a co můžu (v rámci zatím osobních projektů, utilitek a testů), dělám v Rustu. Pythonu IMO teď nejvíc překáží v rozletu GIL, chystám se experimentovat s rust-cpythonem a některými možnostmi paralelizace, které někde na Rootu uváděl kolega A.P.Hacker.

Stran: 1 ... 31 32 [33] 34 35 ... 43