• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    MAIMONIDES
    MAIMONIDES --- ---
    LARS_GUNNER: Tyhle představy, že se někdo naučí pořádně psát bez základů matematiky z několika okruhů jsou samozřejmě častý, ale výslední programátoři podle toho vypadají.
    VITI
    VITI --- ---
    LARS_GUNNER: BTW k tem prvnim dvema bodum - na minulym projektu jsem delal s par mladejma klukama, ted cca 30, hierarchicky vlastne vejs nez ja, prisel jsem do teamu jako posledni ... no a tihle fakt sikovni kluci co umeli spoustu novech hi-end technologii, tak kdyz sme resili import z nejaky banky, tak se zjistilo, ze nikdo nevi co je to to ASCII ;-)
    ICARUS
    ICARUS --- ---
    LARS_GUNNER: K cemu ti je detailni znalost prace s pameti, kdyz drtiva vetsina programatoru stejne skonci u javascritptu nebo jinyho pythonu, kde o pointer ani nezavadis (a je to jedine dobre). A kdyz uz neco nizkourovnoveho, tak treba rust.
    FONTAN
    FONTAN --- ---
    LARS_GUNNER: jde o vkus, ale body 1 a 2 mi teda rozhodne neprijdou jako obecne dobrej start, pokud explicitne nevis, ze te zajimaji HW veci. (netvrdim, ze treba me by to v takovemhle poradi pred lety nebavilo)
    LARS_GUNNER
    LARS_GUNNER --- ---
    Ikdyž je to debata OT, tak za mě dobrý postup učení programování:
    1.) základní assembler na 8051 nebo jiném starém MCU, jen několik hodin - rozblikat diodu, zapsat paměť, udělat blikající pásek ledek.
    2.) C na nějaké platformě, která je blízko hardware a dokáže spolupracovat např. s USB. Základy práce s fyzickou pamětí.
    3.) Python - algoritmizace ala úlohy v LeetCode.
    4.) OOP a jiná pokročilá metodika.
    5.) Podle zaměření programátora si zvolit sadu knihoven a psát a psát.
    ICARUS
    ICARUS --- ---
    MORIARTY: Uplny zacatecnik potrebuje co nejmene barier a prekazek mezi prazdnym souborem a programem, co vypisuje na konzoli "hello, world". Z tohoto hlediska je python zcela idealni. C++, C# a dalsi jazyky, kde musis nejdriv napsat deset "magickych" radek, kterym vubec nerozumis, jen aby to nejak fungovalo, jsou na nejake uceni naprosty opak, protoze to cloveka akorat odradi. Tim spise, kdyz se do toho tahaji takovy zverstva jako pointery. Za me na zacatek Python.

    Nebo na to jit z druhe strany, nezkusenosti s programovanim naopak vyuzit a naucit se Haskell, ale to je druhy extrem.
    MORIARTY
    MORIARTY --- ---
    Já si tedy nedovedu představit, že bych se znovu učil programovat, ale asi bych začal přímo c++. Ono se to dá naučit a pochopit za pár dní. A to i s pointerama, polema a mallocem. Sice to pak ve vyšších programovacích jazycích člověk nepotřebuje, ale aspoň zjistí, jak to funguje. (a třeba pochopí, jakej je v C# rozdíl mezi List a Array a proč se do Array nedají přidávat pole, jak se mi tu včera vztekal jeden kolega).
    JAACOB
    JAACOB --- ---
    Ja jsem teda taky zastancem toho, aby se clovek naucil psat nejdriv v nejakem strongly typed jazyce, takze bych taky doporucil C# pred Pythonem - aspon v pripade, ze je clovek uplnej novacek. Jop - sice udelas prvni C# hello world zhruba stejne rychle jako si nasadis localhost server v Pythonu, ale furt beru treba C# jako lekce v tanecnich, kde jsi pod dohledem a ma to nejakej system a python spis jako plamenomet - kterej sice dokaze poresit veci rychle, ale moc te nenauci zadne velke kazni (snad krome formatovani kodu) a hlavne muzes hrozne rychle nasekat chyby na mistech, kde o nich poradne ani nevis a muzes se daleko rychleji ztratit... #justmyopinion
    TOOMIX
    TOOMIX --- ---
    OODOOW: python jde psát i ve standardním Visual Studiu (Community, Professional atd.)
    SAJAGI
    SAJAGI --- ---
    OODOOW: Python umí typové anotace a rozumné IDE mají nápovědu i statickou kontrolu (kde to jde); btw. odsazení vs {} je asi otázka vkusu - od doby, co píšu v F#, mě naopak závorky v C# dost ruší (zvlášť na projektech, kde se { dává na samostatnou řádku)
    OODOOW
    OODOOW --- ---
    LARS_GUNNER: Nevím no, psal jsem hodně dlouho v C# a v poslední době jsem zkusil Python, malý projekt stránek ve Flasku a jako jo, vplul jsem do toho rychle, ale nějaký větší věci bych stejně mnohem radši dělal v C#.
    Může to být samozřejmě praxí, ale některý ty věci na Pythonu jako třeba odsazení místo závorek, na který si musíš dávat dost bacha když kopíruješ kód, mě celkem iritovaly. Pak taky teda nevím jestli je na to nějaký lepší IDE než mám já VSCode, ale oproti Visal Studiu od MS je to fakt slabý, co se týče podpory pro psaní kódu.
    Další věc, že se ten program většinou v pohodě pustí s chybou a spadne až když jede, to mi nepřijde pro začátečníka moc user friendly.
    Neskutečný bordel je obávám se právě to, co tam začátečník bude mít, než získá nějaký ty návyky a disciplínu.
    Prostě pro začátečníka mi přijde C# jasnější, proměnné tam mají svůj typ, když strkáš do funkce něco, co tam nepatří, tak tě to hned upozorní. Použití základních knihoven mi taky přijde víc user friendly v C# a Visual Studiu, kde ti to hned nabízí možnosti. Prostě komfort, kterej teda u Pythonu rozhodně nezažívám. Ale jak jsem psal, může to být všecko jenom tím, že jsem na něco prostě zvyklý a z Pythonu mám kulturní šok. :)
    SAJAGI
    SAJAGI --- ---
    SINTAKRA: Jinak ještě re Python vs C# - musíš znát jak jazyk, tak standardní knihovny (Python Standard Library, .NET Framework), build proces, apod. Ne samozřejmě všechno, ale tolik, abys bych schopný v tom reálně něco psát. A v tomhle ohledu mi Python přijde lepší volba - Pythoní knihovna je relativně malá, nemusíš nic kompilovat, můžeš to psát v čemkoliv se ti líbí, má https://jupyter.org/, je to dnes jeden z hlavních jazyků pro ML a práci s daty, apod.

    V .NETu (C# a F#) dělám na fulltime skoro 16 let, v Pythonu 5 let, a přestože jsem k Pythonu osobně nepřilnul, tak ho začátečníkovi můžu vřele doporučit.
    LARS_GUNNER
    LARS_GUNNER --- ---
    OODOOW: Python bys vynechal kvůli čemu? Řeším přesně to samé a do Pythonu jsem se pustil kvůli rychlosti, s jakou jsem do toho po C a C++ vplul. Samozřejmě, povaha toho jazyka dovoluje udělat v kódu neskutečný bordel, ale to už po těch letech považuji za problém disciplíny programátora, ne jazyka. :)
    SAJAGI
    SAJAGI --- ---
    SINTAKRA: Python není vůbec špatná volba co se týká jednoduchosti a pracovního uplatnění.
    OODOOW
    OODOOW --- ---
    SINTAKRA: Souhlas že C# bude nejjednodušší na naučení. Java je taky dobrá volba, z hlediska další zaměstnatelnosti asi vede. Python bych pro začátek radši vynechal. :)
    ARANIUS
    ARANIUS --- ---
    SINTAKRA: Za mna C# (začal by som s .dot net core 3) a ideálne nejaké kurzy na pluralsight...

    VS studio Community editon je zdarma a posledná verzia (2019) ma v sebe dosť feature, ktoré môžu pomôcť začínajúcemu programátorovi s písaním kódu...
    SINTAKRA
    SINTAKRA --- ---
    Ahoj, můžete mi, prosím poradit? Pracuji v odvětví, které u nás v republice pozvolna umírá a tak se poohlížím po něčem jiném i za cenu rekvalikace. Uvažuju o programování, ale nevím, kde začít,resp. jaký jazyk. Zatím se klonim k Javě nebo Pythonu, ale to je jen můj laický úsudek. Proto se Vás chci zeptat na vás názor: kdybyste teď začínali, co byste si vybrali? .
    FONTAN
    FONTAN --- ---
    SAJAGI: ehm... tak po rozchozeni remote debuggeru jsem dostal
    Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found.
    a to uz se resit da (spatial types se totiz populuji jen u nekterych zaznamech a ja mam lokalne evidentne vse, co potrebuji) - vyjimku zrejme nejak sezere UI
    FONTAN
    FONTAN --- ---
    SAJAGI: tak i bez using je vysledek naprosto totozny
    pro id 2421570 je na win serveru posledni EF log "Closing connection" zatimco z meho pc do stejne databaze dostanu i moje dalsi "logy" a data jsou normalne nacteny. (a prave ten pruser je, ze pro vetsinu id to proste projde stejne na obou mistech)
    FONTAN
    FONTAN --- ---
    SAJAGI: doufam, ze ne - LeadId je bindovane na input v user controlu - ale zkusim se na moment zbavit using a uvidim, co to s tim provede
    SAJAGI
    SAJAGI --- ---
    FONTAN: Pro jistotu se zeptám, nemáš kolem toho nějaký try-catch wrapper, který ti zahazuje výjimky? To by vysvětlovalo, proč ti metoda skončí v polovině a zároveň se ti zavře připojení díky tomu using bloku.
    FONTAN
    FONTAN --- ---
    muzu se po****

    nenarazil jste nekdy nekdo na to, ze vam na nejake masine "nahodne" skoncila funkce, aniz by dodelala svoji praci? ...

    mam tohle (wpf aplikace, EntityFramework6, logovani je pridane ted):
    
    private int leadID;
            public int LeadID {
                get { return leadID; }
                set
                {
                    if (value != leadID)
                    {
                        leadID = value;
                        using (var db = new FormFillLMSEntities(GlobalAppData.GetConnection(AllowedDB.LMS)))
                        {
                            db.Database.Log = s => ConsoleMessages.Add(new ConsoleLog() { EventDate = DateTime.Now, Source = "db", Message = s });
    
                            ConsoleMessages.Add(new ConsoleLog() { Message = "Lead prefetch: " + leadID.ToString() });
    
                            var _lead = db.CEFs.SingleOrDefault(c => c.ID == leadID);
    
                            ConsoleMessages.Add(new ConsoleLog() { Message = "Lead fetched: " + (_lead!=null ? _lead.ToString() : "null") });
    
                            Lead = _lead;
                        }
    
                        ConsoleMessages.Add(new ConsoleLog() { Message = "Lead after fetched: " + (Lead != null ? Lead.ToString() : "null") });
    
                        this.RaisePropertyChanged(() => Lead);
                        this.RaisePropertyChanged(() => LeadID);
                    }
                }
            }
            public virtual CEF Lead { get; set; }
    


    a - na vyvojovem pc win10 vse jde jak bych tak nejak ocekaval

    ale - na testovaci masine Win Server 2016 Datacenter mi to funguje tak, ze:
    pro vetsinu leadid to vrati ocekavany vysledek (tj. nic, pokud lead neexistuje a lead, pokud existuje) s patricnym logovanim, ALE pro nektere id to "skonci" hned po/pri/v zavolani var _lead = db.CEFs.SingleOrDefault(c => c.ID == leadID);

    a to tak, ze entityframework zaloguje uplne totez, co vzdy, vcetne close connection (a v sql profileru vidim, ze to ten query orpavdu nahodi), ale _lead se nenastavi a ConsoleMessage z lead fetched se nezavola

    vubec netusim, co hledat, protoze mi to samozrejme funguje i tehdy, kdyz si dev versi napojim na tu samou db, jako nefunguje ta testovaci
    ARANIUS
    ARANIUS --- ---
    Toto by malo fungovat aj na sietove priecinky >> https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.exists?view=netcore-2.1, s tym ze tam potrebujes mat osetrenie na security...

    Pridal by som tam check na nieco ako je popisane v odpovedi na tomto stackoverflow-e :)
    c# - How to check if the application has access to a Directory? - Stack Overflow
    https://stackoverflow.com/...ions/15656058/how-to-check-if-the-application-has-access-to-a-directory
    MICA
    MICA --- ---
    Neřešil jste někdo jak otestovat kód (.NET Core 2.1), který přistupuje ke sdílené síťové složce (SMB)?
    Potřeboval bych v NUnit napsat integrační testy, které budou manipulovat s dostupností síťové složky.

    Mám napsaný program, který sleduje síťovou složku přes FileSystemWatcher.
    Zatím jsem si napsal testy, které pracují se složkami na disku, jenže tímhle způsobem není možné
    otestovat, že složka přestane existovat (Složku na disku nejde odstranit, pokud jí má FileSystemWatcher už otevřenou).

    Nebo na to jdu úplně blbě, neměl bych pro síťovou složku používat FileSystemWatcher a
    měl bych raději periodicky prohledávat složku sám přes Directory.GetFiles nebo EnumerateFiles?
    Kliknutím sem můžete změnit nastavení reklam