• ú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
    VITI
    VITI --- ---
    TOOMIX: BTW k cemu je to dobre?
    TEAPACK
    TEAPACK --- ---
    TOOMIX: byl bych raději, kdyby tam bylo mínus, podobně jako u pythonu, protože takhle nemůžeš jednoduše skripty, které by používaly oba způsoby najednou... :-/
    TOOMIX
    TOOMIX --- ---
    Take C# 8.0 for a spin | .NET Blog
    https://blogs.msdn.microsoft.com/dotnet/2018/12/05/take-c-8-0-for-a-spin/

    Do more with patterns in C# 8.0 | .NET Blog
    https://blogs.msdn.microsoft.com/dotnet/2019/01/24/do-more-with-patterns-in-c-8-0/

    Už lze indexovat od konce pole/listu, aniž by se muselo použít aaa.Count-1 pro návrat posledního prvku. Dá se tam ^1 a je to

    RUTHAN
    RUTHAN --- ---
    Dik moc podivam se na to.
    SAJAGI
    SAJAGI --- ---
    RUTHAN: Pokud jsi ve stádiu, že tápeš, proč bys měl synchronizační mechanismy používat, tak doporučuju třeba https://msdn.microsoft.com/en-us/magazine/jj863136.aspx (včetně části 2). Nepropadni ale pak zoufalství - pokud neprogramuješ pro ARM, tak to není tak zlý :) Obecně ale nejjednodušší je nemít žádný sdílený stav mezi více vlákny. Pokud potřebuješ něco sdílet, tak můžeš používat třídy k tomu určené (třeba Interlocked, ConcurrentDictionary). No a pokud ani tohle nepomůže, tak je jsou tu synchronizační primitiva (lock, ReadWriteObjectLock(Slim), Monitor, apod). Reálně ti asi bude stačit jen ten lock.
    SUK
    SUK --- ---
    RUTHAN: Hele, ono to "neni slozity". Vzasade na to koukej tak, ze ti jedno muze menit hodnoty pod rukama (tzv. race condition), cemuz muze zabranit lock alias mutex, v C# na to je Monitor. Jen davej pozor na poradi a konkretni locky, aby nenastal deadlock. Toliko asi k paralelnimu programovani - dulezite keywordy k googleni jsou tucne. Mnoho uloh se da vyresit bez jakyhokoliv lockovani, mezivlaknove komunikace a tak. Jinak, ohledne toho Invoke, tak to spociva v tom, ze ty "reknes, co se ma udelat" tomu prvku, ktery si to vykona az bude cas ve svem vlakne. Tady na to hledej asi C# invoke delegate.
    RUTHAN
    RUTHAN --- ---
    SUK: Obecne ti rozumim a rozumim, ze je to robustnejsi, lepsi.. a ze by to tak melo byt, ale potreboval bych nejaky odkaz, odkud se toho naucit protoze, zatim nejaka prace s vlaknama jde mimo me.

    Jednoduchy priklady na webu chapu, ale pokud to ma aplikovat na svuj pripad, tak uz to nedavam, moc novych veci.. a veci nejaky lamba errory mi zatim nic nerikaj. Potreboval bych nejaky dobry uvod do problematiky.

    Jinak z tohohle clanku: https://docs.microsoft.com/...standard/parallel-programming/data-structures-for-parallel-programming , ze tyhle veci mely svuj vyvoj (ja jsem naivne cekal,ze je to dalo optimalne vyreseny).. a je mozny, ze to historicky C# 2010, ktery pouzivam neni to pravy, to samy nejaky stary navody. Jsem ho zvolil, protoze je to maly co se tyce instalace a neinstaluje se to dlouho. Co jsem se dival tak 2012 express je jeste docela rozumnej, pokud by to neco zlepsilo?

    Je mozny, ze na muj skill a patlani je to zatim moc, ale chtel jsem to zkusit..
    HALCYON
    HALCYON --- ---
    BRAP242: ODP.NET Core, ne? Ale jestli hledáš ORM, tak nevim.
    BRAP242
    BRAP242 --- ---
    jaka je momentalne nejdostupnejsi technologie, pokud chcete z .NET Core pristupovat do Oracle databaze? Pochopil jsem spravne, ze EF Core 2.0 > provider je ve vyvoji?
    SLUPKA
    SLUPKA --- ---
    SMOKY: Něco podobného se mi stalo myslím kdysi v .NET 3.5, když jsem měl něco takového:
    var x = new Foo(GetParam(z));

    Když GetParam(z) vyhodil výjimku, tak to při zavolání finalizeru padlo (jen při release konfiguraci a způsobovalo to pád v náhodné době). A chyba byla v tom finalizeru že this je null (bylo tam volání this.Dispose(false)).

    Jsou to pěkné chyby, které se strašně pěkně hledají :))
    GAPPEQ
    GAPPEQ --- ---
    Zdar, hledám programátora C++ pro spolupráci na vývoji audio pluginů. Ideálně framework JUCE. Budu rád za jakoukoliv pomoc při hledání, dobrejch lidí je málo...
    SUK
    SUK --- ---
    RUTHAN: Normalne nastavujes progressbar defakto taky spatne. Spravne bys mel vzdy predat praci do nejakyho threadu a zmeny v GUI delat jen pres component.Invoke. No a pocitat to muzes ruznymi zpusoby - nejjednodussi je asi mit pole cisel, pro kazdy thread jedno a pro aktualizaci progressbaru tyhle cisla jen secist.
    ICARUS
    ICARUS --- ---
    RUTHAN:

    1) Mit nekde bokem nejakou promennou, treba incrementCount, kterou ve smycce atomicky zinkrementujes a pomoci ni spocitas progres.

    2) Podivej se treba na StringBuilder nebo tak neco. Stringy jsou immutable, takze tim += operatorem pokazdy delas novy string, coz bude klast dost velky tlak na haldu. Proc ten lock nefunguje si nejsem jist - nejspis proto, ze se lockujes na nejakou instanci stringu AllLinesForWrite, kterou pak nahradis nejakou uplne jinou instanci, prave kvuli te immutability. Bud si tam nekde porid externi static object myLock = new object(), nebo muzes lockovat this, nebo treba ten pripadny StringBuilder. Popripade se muzes podivat na Producer/Consumer pattern.
    RUTHAN
    RUTHAN --- ---
    Ahoj,
    patlam si to nejaky convertor dat v C# - Express 2010. Napadlo me to zkusit pustit multithreadove (pres Parallel.For.. ) na 4 jadru je to cca 4 rychlejsi nez na v single threadu, ale mam problem se synchronizaci.. jak se dalo cekat, to bude na tom to slozity. Protoze tomu samozrejme poradne nerozumim, zkousel jsem neco googlit, ale kdovijak daleko jsem se nedostal.

    Jde o formularovou aplikaci, kde jsem oproti singlu threadu narazil na 2 problemy:
    1) jak synchronizovat ProgressBar value? V single threadu ji nastavuje normalne pres ProgressBar.Value = , max vim dopredu, Value - to je pocet iteraci, ktery si v single threadu incrementuju uvnitr toho cyclu co bezi multithreadove.. ale co v multithreadu?

    2) V single threadu si vysledek zapisu do stringu:
    AllLinesForWrite += SourceLine + "\r\n";
    , ktery ve finale potom co skonci Parallel blok zapisuju do souboru, ale pri multithreadu dostavam - diky tomu jen cast, asi za 1 thread.
    Zkousel jsem pouzit lock, ve stylu:
    lock (AllLinesForWrite)
    {
    AllLinesForWrite += SourceLine + "\r\n";
    }
    Ale vysledek je, ze mi to vraci vic dat, ze je na vstupu a nez v single threadu, cili je tam asi neco duplicitniho, nebo je tam jina chyba.

    Da se tohle nastudovat / vyresit nejak rychle, nebo je to moc komplikovany?
    SMOKY
    SMOKY --- ---
    Dneska sme resili zajimavej problem, u objektu byl volany finalizer, aniz by doslo nekdy k exekuci konstruktooru. Vsechny fieldy jsou inicializovane z konstrukoru, takze exception pri inicializaci fieldu to take nebyla. Nakonec sme prisli na to, ze to zbuchne v lambde, ktera se vola v konstruktoru, ale z nejakeho duvodu ji CLR vyhodnocuje driv, nez dojde k exekuci samotneho konstruktoru.
    APH
    APH --- ---
    ak by si chcel niekto (intenzivne) prevetrat vsetky zavity: https://twitter.com/ziki_cz/status/1081153149187117058 :-)
    P19
    P19 --- ---
    ELECTRICKOTA: Tesil jsem to jenom pres WPF. WindowsForms neumim :(
    ELECTRICKOTA
    ELECTRICKOTA --- ---
    Hola mám jednoduchou appku na počasí na plochu (c# .NET), a chtěl bych nastavit Form aby byl pruhledny s rozmazáním formulářem pro lepsi citelnost(neco jako glass Aero efekt, ale stacil by mi fakt jen mírnej blur pozadí), ale jaksi po hodine googlovaní moznych reseni ze v novym NET frameworku od verze 4.5 jaksi chybí windows komponenty ktere toto lehce umoznovali a WPF formular vytvaret nechci.Nekdo nejaky zkusenosti, rady? Dík

    NECROMAN
    NECROMAN --- ---
    H_U_N_T_E_R: nakonec jsem to vyřešil přes svůj OneDrive :)
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    NECROMAN: asi nejlíp RDP a nastavit sdílení lokálního disku. Případně PowerShell a remoting
    NECROMAN
    NECROMAN --- ---
    Dotaz, jak stáhnout z Azure Virtual machine 5GB soubor? Našel jsem jen možnost stáhnout celé 128GB VHD, což mi přijde jako hloupost.
    Kliknutím sem můžete změnit nastavení reklam