Új hozzászólás Aktív témák

  • dabadab
    titán

    Helló!

    Melyik nyelvet érdemes választanom, ha ipari cégnél szeretnék kisebb programot írni, többnyire CAD és egyéb program egymással való kommunikáció kiépítése céljából, vagy egyszerűbb munkafolymatot segítő programot (üzemnek rajz leadása rajta keresztül, mindig tudják, hogy melyik a legfrissebb, le tudják tölteni stb..., termék státuszkövetés)

    Én C#-re gondoltam, C++ semmiképp, nem akarok olyan szinten belemászni.
    Esetleg valami más, ami működhet könnyedén Windowsos környezetben?

    Igazából ilyen feladatoknál szerintem érdemes körbenézni, hogy van-e valami létező program, amit lehet használni erre a célra, ahelyett, hogy te magad írnál valamit.

    Amúgy meg ha tényleg kicsi meg tényleg meg kell írni, akkor inkább Pythont néznék, az tök jó ilyesmire.

  • opr
    nagyúr

    Helló!

    Melyik nyelvet érdemes választanom, ha ipari cégnél szeretnék kisebb programot írni, többnyire CAD és egyéb program egymással való kommunikáció kiépítése céljából, vagy egyszerűbb munkafolymatot segítő programot (üzemnek rajz leadása rajta keresztül, mindig tudják, hogy melyik a legfrissebb, le tudják tölteni stb..., termék státuszkövetés)

    Én C#-re gondoltam, C++ semmiképp, nem akarok olyan szinten belemászni.
    Esetleg valami más, ami működhet könnyedén Windowsos környezetben?

    "többnyire CAD és egyéb program egymással való kommunikáció kiépítése céljából"
    Ha itt konkrétan pluginról van szó, akkor meg kell nézni, hogy a konkrét programoknál ez hogy működik, milyen nyelv támogatott, és azt.

    "üzemnek rajz leadása rajta keresztül, mindig tudják, hogy melyik a legfrissebb, le tudják tölteni stb..., termék státuszkövetés"
    Erre lehet azt mondanám, hogy Python. Ennyit bőven simán tud, egyszerű, platformfüggetlen... Mi kell még? :D

  • ReSeTer
    senior tag

    Helló!

    Melyik nyelvet érdemes választanom, ha ipari cégnél szeretnék kisebb programot írni, többnyire CAD és egyéb program egymással való kommunikáció kiépítése céljából, vagy egyszerűbb munkafolymatot segítő programot (üzemnek rajz leadása rajta keresztül, mindig tudják, hogy melyik a legfrissebb, le tudják tölteni stb..., termék státuszkövetés)

    Én C#-re gondoltam, C++ semmiképp, nem akarok olyan szinten belemászni.
    Esetleg valami más, ami működhet könnyedén Windowsos környezetben?

  • pmonitor
    aktív tag

    A ciklus módosításával:
    for (i = 0; i < 1000000000; i++)
    {
    //sprintf(str, "%d", -2138);
    itoa(-2138, str, 10);
    //printf(str);
    }

    Itt egy 0-t tettem a végére, úgyhogy azt a másik ciklusba is oda kell tenni. Így az itoa() kb. 22 sec., az int_ToString() kb. 14 sec. alatt fut le. Ez már lényegesen jobb, de azért egyértelműen gyorsabb ennél is az asm.

    @dabadab:
    >mondjuk lehet, hogy azért így is megverné ezt az assembly kódot

    Nem haragszom meg, ha csinálsz jobb asm kódot. :(

    Az ittenke lévő kódom már tudja a bináris, oktális, és a hexadecimális számrendszer kiírását is. Ugyanakkor még így is jóval gyorsabb, mint az itoa(...)

    Hát hiába, az ASM nem hazudik! Főleg, ha egy olyan tud hatékonyabb kódot írni az enyémnél, aki keni-vágja a témát. Mert nekem össze kellett szednem magam, hogy ezt kiizzadjam magamból. :K

  • consono
    nagyúr

    Az R# nem nyelv, hanem a Resharpert szokták így rövidíteni. :)

    Nekem a C# után csak ez bírt a fejembe lenni :D De akkor nem véletlenül nem találkoztam vele :D

  • Ispy
    nagyúr

    Esetleg ha valaki hasznáná a built in sql tools (compare) az új vs-be kiváncsi lennék rá, mert a 2019-ben elég lepra a sebessége sajnos, pedig jó vóna.

  • Marky18
    aktív tag

    VSIX-et nem telepítettél rá (esetleg fordítottál) véletlenül? Számomra a VS egyik legnagyobb rejtélye, hogy mi tart hosszú percekig egy apró extension telepítésén (ami persze az extension fejlesztése/tesztelése közben még fájdalmasabb tud lenni).

    Nem hasznalok semmilyen extensiont.

  • fatal`
    titán

    Én erről az R#-ról lemaradtam eddig :) Milyen többletet ad a standard R-hez képest? Azzal bohóckodtam viszonylag sokat hobbiból.

    Az R# nem nyelv, hanem a Resharpert szokták így rövidíteni. :)

  • dqdb
    nagyúr

    Sokkal gyorsabb a 22-es. Most fejlesztettem egy kozepes meretu solutionbol allo .NET Core appot es volt idom parhuzamosan probalgatni a 19-es es a 22-es VS-t. Minden teren (startup, build, debug) sokkal gyorsabb az uj, igaz most mar be is foglalja a memoriat. De legalabb gyors :)
    Az intelligens kodkiegeszites pedig baromi jo, rengeteg boilerplatet meg lehet iratni egy tab-al.

    VSIX-et nem telepítettél rá (esetleg fordítottál) véletlenül? Számomra a VS egyik legnagyobb rejtélye, hogy mi tart hosszú percekig egy apró extension telepítésén (ami persze az extension fejlesztése/tesztelése közben még fájdalmasabb tud lenni).

  • consono
    nagyúr

    Ja hát a microservice persze, hogy gyorsan buildel. Nyiss meg egy régi solution 150 projekttel aztán meglátjuk mennyire gyors. :D

    Mondjuk általában a ram korlát és a rengeteg process a probléma, vélhetően ez a 22-es vs-sel megoldódik (még nem próbáltam). Meg aztán a R# is sokat lassít, bár azt nyilván nem használja mindenki.

    Én erről az R#-ról lemaradtam eddig :) Milyen többletet ad a standard R-hez képest? Azzal bohóckodtam viszonylag sokat hobbiból.

  • Marky18
    aktív tag

    "sokkal gyorsabb az uj, igaz most mar be is foglalja a memoriat."
    Az nem probléma, azért van (mármint a RAM). :)

    Viszont ismerősöktől azt hallom, hogy még elég bugos.

    "Az intelligens kodkiegeszites pedig baromi jo, rengeteg boilerplatet meg lehet iratni egy tab-al."
    Én az a ritka faj vagyok, aki nem nagyon generál kódot, valószínű, mert rohadt gyorsan gépelek így nem zavar. :D Sokszor hülyeségeket ajánl, bár lehet, hogy mostanra már jobb a helyzet.

    Lassan legalább itthon fel kéne tennem a 22-est megnézni. Bár itt meg nincs méretes projekt.

    En se szeretem a generatorokat, de nagyon meggyorsitja a fejlesztest, amikor felveszem a privat mezoket es utana a konstruktorban csak par karaktert kell utni / mezo. Tudom, reg rossz, ha sok a dependency... :D

  • fatal`
    titán

    Sokkal gyorsabb a 22-es. Most fejlesztettem egy kozepes meretu solutionbol allo .NET Core appot es volt idom parhuzamosan probalgatni a 19-es es a 22-es VS-t. Minden teren (startup, build, debug) sokkal gyorsabb az uj, igaz most mar be is foglalja a memoriat. De legalabb gyors :)
    Az intelligens kodkiegeszites pedig baromi jo, rengeteg boilerplatet meg lehet iratni egy tab-al.

    "sokkal gyorsabb az uj, igaz most mar be is foglalja a memoriat."
    Az nem probléma, azért van (mármint a RAM). :)

    Viszont ismerősöktől azt hallom, hogy még elég bugos.

    "Az intelligens kodkiegeszites pedig baromi jo, rengeteg boilerplatet meg lehet iratni egy tab-al."
    Én az a ritka faj vagyok, aki nem nagyon generál kódot, valószínű, mert rohadt gyorsan gépelek így nem zavar. :D Sokszor hülyeségeket ajánl, bár lehet, hogy mostanra már jobb a helyzet.

    Lassan legalább itthon fel kéne tennem a 22-est megnézni. Bár itt meg nincs méretes projekt.

  • Marky18
    aktív tag

    Ja hát a microservice persze, hogy gyorsan buildel. Nyiss meg egy régi solution 150 projekttel aztán meglátjuk mennyire gyors. :D

    Mondjuk általában a ram korlát és a rengeteg process a probléma, vélhetően ez a 22-es vs-sel megoldódik (még nem próbáltam). Meg aztán a R# is sokat lassít, bár azt nyilván nem használja mindenki.

    Sokkal gyorsabb a 22-es. Most fejlesztettem egy kozepes meretu solutionbol allo .NET Core appot es volt idom parhuzamosan probalgatni a 19-es es a 22-es VS-t. Minden teren (startup, build, debug) sokkal gyorsabb az uj, igaz most mar be is foglalja a memoriat. De legalabb gyors :)
    Az intelligens kodkiegeszites pedig baromi jo, rengeteg boilerplatet meg lehet iratni egy tab-al.

  • pmonitor
    aktív tag

    És az én kódomat nem tesztelted le? :D

    Ahogy írtam:
    >Nem haragszom meg, ha csinálsz jobb asm kódot. :(

    Csak ezt már szerkesztettem...

  • dabadab
    titán

    A ciklus módosításával:
    for (i = 0; i < 1000000000; i++)
    {
    //sprintf(str, "%d", -2138);
    itoa(-2138, str, 10);
    //printf(str);
    }

    Itt egy 0-t tettem a végére, úgyhogy azt a másik ciklusba is oda kell tenni. Így az itoa() kb. 22 sec., az int_ToString() kb. 14 sec. alatt fut le. Ez már lényegesen jobb, de azért egyértelműen gyorsabb ennél is az asm.

    @dabadab:
    >mondjuk lehet, hogy azért így is megverné ezt az assembly kódot

    Nem haragszom meg, ha csinálsz jobb asm kódot. :(

    És az én kódomat nem tesztelted le? :D

  • pmonitor
    aktív tag

    Az almát almával kellene összehasonlítani.

    A ciklus módosításával:
    for (i = 0; i < 1000000000; i++)
    {
    //sprintf(str, "%d", -2138);
    itoa(-2138, str, 10);
    //printf(str);
    }

    Itt egy 0-t tettem a végére, úgyhogy azt a másik ciklusba is oda kell tenni. Így az itoa() kb. 22 sec., az int_ToString() kb. 14 sec. alatt fut le. Ez már lényegesen jobb, de azért egyértelműen gyorsabb ennél is az asm.

    @dabadab:
    >mondjuk lehet, hogy azért így is megverné ezt az assembly kódot

    Nem haragszom meg, ha csinálsz jobb asm kódot. :(

  • dqdb
    nagyúr

    Még az itoa() se igazán alma, mert az is többet tud, mondjuk lehet, hogy azért így is megverné ezt az assembly kódot :)

    Tudom, hogy többet tud a tetszőleges számrendszer támogatásával, de egy sprintf-nél azért lényegesen közelebb áll. Nem néztem meg, melyik a gyorsabb.

  • dabadab
    titán

    Az almát almával kellene összehasonlítani.

    Még az itoa() se igazán alma, mert az is többet tud, mondjuk lehet, hogy azért így is megverné ezt az assembly kódot :)

  • dqdb
    nagyúr

    Még azt mondják, hogy nem lehet assemblyvel gyorsabb kódot írni! Az olyanoknak ajánlom ezt a példakódot a figyelmébe:
    #pragma once
    #define _CRT_SECURE_NO_WARNINGS

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <sys/timeb.h>

    int int_ToString(int num, char* dest);
    char str[12];

    long timediff(struct timeb* start, struct timeb* end)
    {
    long seconds;
    seconds = (long)(end->time - start->time);
    start->millitm = end->millitm - start->millitm;
    if (0 > start->millitm) {
    start->millitm += 1000;
    seconds--;
    }
    return seconds;
    }

    int main(void)
    {
    struct timeb start, end;
    long seconds, seconds_1;
    int militm, militm_1;
    int i;
    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    sprintf(str, "%d", -2138);
    //printf(str);
    }
    ftime(&end);
    seconds = timediff(&start, &end);
    militm = start.millitm;

    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    int_ToString(-2138, str);
    //printf(str);
    }
    ftime(&end);
    seconds_1 = timediff(&start, &end);
    militm_1 = start.millitm;
    printf("Eltelt ido(sprintf()): %ld.%03d masodperc\n", seconds, militm);
    printf("Eltelt ido(assembly): %ld.%03d masodperc\n", seconds_1, militm_1);
    }


    int int_ToString(int num, char* dest)
    {
    __asm
    {
    mov edi, dest
    mov eax, num
    xor edx, edx
    cmp eax, edx
    jge nemnegativ
    mov ecx, -1
    imul ecx
    push eax
    mov eax, '-'
    stosb
    pop eax

    nemnegativ :
    xor ebx, ebx
    push_chars :
    xor edx, edx
    mov ecx, 10
    div ecx
    add edx, 0x30
    push edx
    inc ebx
    test eax, eax
    jnz push_chars
    pop_chars :
    pop eax
    stosb
    dec ebx
    cmp ebx, 0
    jg pop_chars
    mov eax, 0x0a
    stosb
    }
    }

    Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített. Csupán kevesebb, mint az egyharmada alatt fut le az ASM kód. :DD

    Az almát almával kellene összehasonlítani.

  • dabadab
    titán

    es az sprintf alap linkelessel nem mindig egy call lesz?
    vagy statik binarissal volt a teszt?

    Az már tök mindegy, az az egy darab call nem sokat számít ahhoz képest, hogy nekiáll végigparse-olni egy format stringet, aztán lerendereli úgy, hogy egy csomó formázási opciót figyelembe vesz.

  • #25954560
    törölt tag

    Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített.

    Mert nem ugyanazt csinálták: az sprintf() egy elég nagy tudású, rugalmas függvény, a te assembly kódod meg csak 32 bites inteket tud kiírni mindenféle formázás nélkül. Nyilván ha ugyanezt megírod C-ben, az is gyorsabb lesz, mint az sprintf, vagy ha az sprintf()-et megírod assemblyben, az meg minden bizonnyal lassabb lesz, mint az, ami a gyári stdlibben van (az alapján, hogy a mostani assembly kódod is elég szuboptimális).

    Sőt, itt van C-ben egy még gyorsabb megoldás, ami a te assembly kódoddal ellentétben még csak nem is bugos :)

    int int_ToString(int num, char* dest) {
    memcpy(dest, "-2138\n", 7);
    }

    es az sprintf alap linkelessel nem mindig egy call lesz?
    vagy statik binarissal volt a teszt?

  • dabadab
    titán

    Még azt mondják, hogy nem lehet assemblyvel gyorsabb kódot írni! Az olyanoknak ajánlom ezt a példakódot a figyelmébe:
    #pragma once
    #define _CRT_SECURE_NO_WARNINGS

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <sys/timeb.h>

    int int_ToString(int num, char* dest);
    char str[12];

    long timediff(struct timeb* start, struct timeb* end)
    {
    long seconds;
    seconds = (long)(end->time - start->time);
    start->millitm = end->millitm - start->millitm;
    if (0 > start->millitm) {
    start->millitm += 1000;
    seconds--;
    }
    return seconds;
    }

    int main(void)
    {
    struct timeb start, end;
    long seconds, seconds_1;
    int militm, militm_1;
    int i;
    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    sprintf(str, "%d", -2138);
    //printf(str);
    }
    ftime(&end);
    seconds = timediff(&start, &end);
    militm = start.millitm;

    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    int_ToString(-2138, str);
    //printf(str);
    }
    ftime(&end);
    seconds_1 = timediff(&start, &end);
    militm_1 = start.millitm;
    printf("Eltelt ido(sprintf()): %ld.%03d masodperc\n", seconds, militm);
    printf("Eltelt ido(assembly): %ld.%03d masodperc\n", seconds_1, militm_1);
    }


    int int_ToString(int num, char* dest)
    {
    __asm
    {
    mov edi, dest
    mov eax, num
    xor edx, edx
    cmp eax, edx
    jge nemnegativ
    mov ecx, -1
    imul ecx
    push eax
    mov eax, '-'
    stosb
    pop eax

    nemnegativ :
    xor ebx, ebx
    push_chars :
    xor edx, edx
    mov ecx, 10
    div ecx
    add edx, 0x30
    push edx
    inc ebx
    test eax, eax
    jnz push_chars
    pop_chars :
    pop eax
    stosb
    dec ebx
    cmp ebx, 0
    jg pop_chars
    mov eax, 0x0a
    stosb
    }
    }

    Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített. Csupán kevesebb, mint az egyharmada alatt fut le az ASM kód. :DD

    Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített.

    Mert nem ugyanazt csinálták: az sprintf() egy elég nagy tudású, rugalmas függvény, a te assembly kódod meg csak 32 bites inteket tud kiírni mindenféle formázás nélkül. Nyilván ha ugyanezt megírod C-ben, az is gyorsabb lesz, mint az sprintf, vagy ha az sprintf()-et megírod assemblyben, az meg minden bizonnyal lassabb lesz, mint az, ami a gyári stdlibben van (az alapján, hogy a mostani assembly kódod is elég szuboptimális).

    Sőt, itt van C-ben egy még gyorsabb megoldás, ami a te assembly kódoddal ellentétben még csak nem is bugos :)

    int int_ToString(int num, char* dest) {
    memcpy(dest, "-2138\n", 7);
    }

  • martonx
    veterán

    Ja hát a microservice persze, hogy gyorsan buildel. Nyiss meg egy régi solution 150 projekttel aztán meglátjuk mennyire gyors. :D

    Mondjuk általában a ram korlát és a rengeteg process a probléma, vélhetően ez a 22-es vs-sel megoldódik (még nem próbáltam). Meg aztán a R# is sokat lassít, bár azt nyilván nem használja mindenki.

    No igen, azok azok a projektek, amiktől sikítva menekülök :D

  • pmonitor
    aktív tag

    Még azt mondják, hogy nem lehet assemblyvel gyorsabb kódot írni!

    Csakhogy ilyet senki nem mondott

    Idézet Innen:

    Nem azt mondom, hogy lehetetlen gyorsabb assembly kódot írni, mint amit egy C fordító gyárt, csak azt, hogy nagyon nehéz, és az is csak valamivel lesz gyorsabb, de messze nem a "min. 15 éves gépeken is pont úgy menne egy mai/2021-es játék, mint a mai erőműveken" kategória lesz.

  • Silεncε
    őstag

    Még azt mondják, hogy nem lehet assemblyvel gyorsabb kódot írni! Az olyanoknak ajánlom ezt a példakódot a figyelmébe:
    #pragma once
    #define _CRT_SECURE_NO_WARNINGS

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <sys/timeb.h>

    int int_ToString(int num, char* dest);
    char str[12];

    long timediff(struct timeb* start, struct timeb* end)
    {
    long seconds;
    seconds = (long)(end->time - start->time);
    start->millitm = end->millitm - start->millitm;
    if (0 > start->millitm) {
    start->millitm += 1000;
    seconds--;
    }
    return seconds;
    }

    int main(void)
    {
    struct timeb start, end;
    long seconds, seconds_1;
    int militm, militm_1;
    int i;
    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    sprintf(str, "%d", -2138);
    //printf(str);
    }
    ftime(&end);
    seconds = timediff(&start, &end);
    militm = start.millitm;

    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    int_ToString(-2138, str);
    //printf(str);
    }
    ftime(&end);
    seconds_1 = timediff(&start, &end);
    militm_1 = start.millitm;
    printf("Eltelt ido(sprintf()): %ld.%03d masodperc\n", seconds, militm);
    printf("Eltelt ido(assembly): %ld.%03d masodperc\n", seconds_1, militm_1);
    }


    int int_ToString(int num, char* dest)
    {
    __asm
    {
    mov edi, dest
    mov eax, num
    xor edx, edx
    cmp eax, edx
    jge nemnegativ
    mov ecx, -1
    imul ecx
    push eax
    mov eax, '-'
    stosb
    pop eax

    nemnegativ :
    xor ebx, ebx
    push_chars :
    xor edx, edx
    mov ecx, 10
    div ecx
    add edx, 0x30
    push edx
    inc ebx
    test eax, eax
    jnz push_chars
    pop_chars :
    pop eax
    stosb
    dec ebx
    cmp ebx, 0
    jg pop_chars
    mov eax, 0x0a
    stosb
    }
    }

    Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített. Csupán kevesebb, mint az egyharmada alatt fut le az ASM kód. :DD

    Még azt mondják, hogy nem lehet assemblyvel gyorsabb kódot írni!

    Csakhogy ilyet senki nem mondott

  • pmonitor
    aktív tag

    OK, de az a kód, már a 2. sorában buktató(ZH=1-es), mert SS: Stack ez bukó... :DDD
    (Stack fenntartott szó, így be sem lehet fordítani a kódot, arról nem is beszélve, hogy nem kerülhet a kód végére... ;] )

    Puritánság? Nem... :N
    Erre szokták azt mondani (tanítani), hogy amit nem lehet Pascal-ban megírni, azt C++-ban meg lehet. Amit C++-ban nem lehet megírni, azt Assembly-ben meg lehet. Amit Assembly-ben nem lehet megírni, azt nem lehet megírni... ;]

    Az Assembly "alatt" csak a gépi kód van (CPU ebből ért, tök mindegy milyen fejlesztőkörnyezetben írsz és fordítsz, a vége, akkor is gépi kód lesz) csak az nem mindegy, hogy az hány darab utasításból áll (ez határozza meg egy adott szoftver sebességét).
    Minél "magasabb" szintű egy nyelv, annál lassabb, mert a felhasználóbarát függvények használatának ez az ára. Ha (és ez csak egy eszmefuttatás) a mai játékokat tisztán Assembly-ben írnák (még1x, ez csak eszmefuttatás), akkor min. 15 éves gépeken is pont úgy menne egy mai/2021-es játék, mint a mai erőműveken. Persze abba a fejlesztők beledöglenének, az tuti... :DDD

    A gépi kód, majd Assembly volt mindennek az alapja. Enélkül nem lenne Pascal, C/CPP , stb stb meg konkrétan semmi.

    Még azt mondják, hogy nem lehet assemblyvel gyorsabb kódot írni! Az olyanoknak ajánlom ezt a példakódot a figyelmébe:
    #pragma once
    #define _CRT_SECURE_NO_WARNINGS

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <sys/timeb.h>

    int int_ToString(int num, char* dest);
    char str[12];

    long timediff(struct timeb* start, struct timeb* end)
    {
    long seconds;
    seconds = (long)(end->time - start->time);
    start->millitm = end->millitm - start->millitm;
    if (0 > start->millitm) {
    start->millitm += 1000;
    seconds--;
    }
    return seconds;
    }

    int main(void)
    {
    struct timeb start, end;
    long seconds, seconds_1;
    int militm, militm_1;
    int i;
    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    sprintf(str, "%d", -2138);
    //printf(str);
    }
    ftime(&end);
    seconds = timediff(&start, &end);
    militm = start.millitm;

    ftime(&start);
    for (i = 0; i < 100000000; i++)
    {
    int_ToString(-2138, str);
    //printf(str);
    }
    ftime(&end);
    seconds_1 = timediff(&start, &end);
    militm_1 = start.millitm;
    printf("Eltelt ido(sprintf()): %ld.%03d masodperc\n", seconds, militm);
    printf("Eltelt ido(assembly): %ld.%03d masodperc\n", seconds_1, militm_1);
    }


    int int_ToString(int num, char* dest)
    {
    __asm
    {
    mov edi, dest
    mov eax, num
    xor edx, edx
    cmp eax, edx
    jge nemnegativ
    mov ecx, -1
    imul ecx
    push eax
    mov eax, '-'
    stosb
    pop eax

    nemnegativ :
    xor ebx, ebx
    push_chars :
    xor edx, edx
    mov ecx, 10
    div ecx
    add edx, 0x30
    push edx
    inc ebx
    test eax, eax
    jnz push_chars
    pop_chars :
    pop eax
    stosb
    dec ebx
    cmp ebx, 0
    jg pop_chars
    mov eax, 0x0a
    stosb
    }
    }

    Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített. Csupán kevesebb, mint az egyharmada alatt fut le az ASM kód. :DD

  • fatal`
    titán

    Viszonyításképpen nekem Ryzen 7 5800x-en, 1 TB-s X4 m.2-es SSD-n, úgy indul a VS, mint az álom. Hol lassú ez? Szvsz iszonyat gyors. És a build idők is röhejesen alacsonyak. Igaz töbnyire Microservice-ekkel, meg Web API-kkal foglalkozok.
    Ja, és a telepítés kevesebb, mint 7 GB-t foglal.

    Ja hát a microservice persze, hogy gyorsan buildel. Nyiss meg egy régi solution 150 projekttel aztán meglátjuk mennyire gyors. :D

    Mondjuk általában a ram korlát és a rengeteg process a probléma, vélhetően ez a 22-es vs-sel megoldódik (még nem próbáltam). Meg aztán a R# is sokat lassít, bár azt nyilván nem használja mindenki.

  • martonx
    veterán

    A mobilos példád igaz. De egy mobilba is soknak tartom az app-ok helyfoglalását. Éppen nemrég kérdezte tőlem egy idős néni, hogy az akcióban pár ezerért kapható 8 gigás tárhellyel rendelkező okostelót érdemes-e megvennie, mert Ő csak arra szeretné használni, hogy a tesco-ban az akciókat megnézze rajt. Mondtam Neki, hogy az sztem. nagyon kevés tárhely, mert az alkalmazások túl nagy helyet foglalnak.
    De olyan aspektusa is van a dolognak, hogy hiába lett gyorsabb a HW, azért még mindig az a legszűkebb keresztmetszet. Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).

    @dabadab: Gondolom azért, mert kevés komponenst telepítettél. Azért írtam, hogy alsóhangon 5-6 giga. 1-2 gigát tévedtem.

    Viszonyításképpen nekem Ryzen 7 5800x-en, 1 TB-s X4 m.2-es SSD-n, úgy indul a VS, mint az álom. Hol lassú ez? Szvsz iszonyat gyors. És a build idők is röhejesen alacsonyak. Igaz töbnyire Microservice-ekkel, meg Web API-kkal foglalkozok.
    Ja, és a telepítés kevesebb, mint 7 GB-t foglal.

  • disy68
    aktív tag

    Köszönöm a tippeket sztanozs és disy68. Sikerült kideríteni, hogy a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie.

    Ez a megoldás működhet java scriptből, mert letudom kérni az egér X és Y koordinátáját, a probléma már csak az, ha legörgetek a weblapon akkor a tickbox X Y koordinátája és máshol fog elhelyezkedni.
    Így ha megadok neki egy egér kattolás nem a megfelelő helyen fog megtörténni.

        <html>
        <body>
        <script>
        
        onmousemove = function(e){
        
            console.log("mouse location:", e.clientX, e.clientY);
            var pos = e;
            var dot;
            dot = document.createElement('div');
            dot.className = "dot";
            dot.style.left = pos.x + "px";
            dot.style.top = pos.y + "px";
            document.body.appendChild(dot);
        }    
        
        </script>
        </body>
        </html>

    Add hozzá a document.scrollTop/document.scrollLeft értékeket is.

  • pmonitor
    aktív tag

    Gondolom azért, mert kevés komponenst telepítettél.

    Igen, mert nem fejlesztek egyszerre harminc nyelven - ahogy egyébként kb. senki sem.
    Amúgy meg azt a 4 GB teljesen érdektelen, maga a forráskód, amivel dolgozok, szintén akkora, ha meg még le is fordítom, akkor meg 60 GB.

    #16568 Ispy:
    Én is csak azért tudom, mert most direkt megnéztem :)

    >Igen, mert nem fejlesztek egyszerre harminc nyelven

    Én meg inkább programnyelvet sajátítok el minél többet(legalább közepes szinten), minthogy perfekt angol lenne a cél. Mások vagyunk. Mindenkinek más a "priori".

  • dabadab
    titán

    A mobilos példád igaz. De egy mobilba is soknak tartom az app-ok helyfoglalását. Éppen nemrég kérdezte tőlem egy idős néni, hogy az akcióban pár ezerért kapható 8 gigás tárhellyel rendelkező okostelót érdemes-e megvennie, mert Ő csak arra szeretné használni, hogy a tesco-ban az akciókat megnézze rajt. Mondtam Neki, hogy az sztem. nagyon kevés tárhely, mert az alkalmazások túl nagy helyet foglalnak.
    De olyan aspektusa is van a dolognak, hogy hiába lett gyorsabb a HW, azért még mindig az a legszűkebb keresztmetszet. Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).

    @dabadab: Gondolom azért, mert kevés komponenst telepítettél. Azért írtam, hogy alsóhangon 5-6 giga. 1-2 gigát tévedtem.

    Gondolom azért, mert kevés komponenst telepítettél.

    Igen, mert nem fejlesztek egyszerre harminc nyelven - ahogy egyébként kb. senki sem.
    Amúgy meg azt a 4 GB teljesen érdektelen, maga a forráskód, amivel dolgozok, szintén akkora, ha meg még le is fordítom, akkor meg 60 GB.

    #16568 Ispy:
    Én is csak azért tudom, mert most direkt megnéztem :)

  • pmonitor
    aktív tag

    A fejlesztőeszköz munkaeszköz, így annyi helyet foglal, amennyit. A VS helyfoglalása amúgy is elveszik az X darab használt middleware, konténer, temp fájlok, checkoutolt Git repó között.

    Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).
    Az a fejlesztő, aki HDD-re telepíti a VS-t, nagyon utálja magát, és már 10 évvel ezelőtt is nagyon utálta magát. Szerintem relatíve sosem volt még ilyen olcsó egy átlagos fejlesztésre/virtualizálásra kiválóan alkalmas gépet összeállítani az olcsó SSD és sokmagos processzorok korában.

    >A fejlesztőeszköz munkaeszköz
    Mondjuk ezért nem értem pontosan, hogy ez miért off téma?

    >Az a fejlesztő, aki HDD-re telepíti a
    Ez elírás volt. Bocsi. De a disk I/O így is a szűk keresztmetszet a RAM-al szemben.
    Az én vasam egyébként 2019-ben volt a felső kategória alsó határán(nem mintha ez valamit is jelentene). De sosem voltam híve az erőforrás pazarlásnak. Talán ezért zavar engem ennyire.

    @Ispy #16568: nekem 250 giga partíció van a rendszernek, és ennek kb. a 35%-át használom.

  • Ispy
    nagyúr

    Meg hát 10 GB-hoz már meg kell küzdeni - nálam a VS2019 4 GB-ot foglal.

    Én öszintén szólva nem tudom mi mekkorra, csináltam egy 150GB-os partíciót a rendszernek azt kész. Ennek kb. a fele van használatban.

  • dqdb
    nagyúr

    A mobilos példád igaz. De egy mobilba is soknak tartom az app-ok helyfoglalását. Éppen nemrég kérdezte tőlem egy idős néni, hogy az akcióban pár ezerért kapható 8 gigás tárhellyel rendelkező okostelót érdemes-e megvennie, mert Ő csak arra szeretné használni, hogy a tesco-ban az akciókat megnézze rajt. Mondtam Neki, hogy az sztem. nagyon kevés tárhely, mert az alkalmazások túl nagy helyet foglalnak.
    De olyan aspektusa is van a dolognak, hogy hiába lett gyorsabb a HW, azért még mindig az a legszűkebb keresztmetszet. Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).

    @dabadab: Gondolom azért, mert kevés komponenst telepítettél. Azért írtam, hogy alsóhangon 5-6 giga. 1-2 gigát tévedtem.

    A fejlesztőeszköz munkaeszköz, így annyi helyet foglal, amennyit. A VS helyfoglalása amúgy is elveszik az X darab használt middleware, konténer, temp fájlok, checkoutolt Git repó között.

    Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).
    Az a fejlesztő, aki HDD-re telepíti a VS-t, nagyon utálja magát, és már 10 évvel ezelőtt is nagyon utálta magát. Szerintem relatíve sosem volt még ilyen olcsó egy átlagos fejlesztésre/virtualizálásra kiválóan alkalmas gépet összeállítani az olcsó SSD és sokmagos processzorok korában.

  • pmonitor
    aktív tag

    A programok is nagyságrenddel bonyolultabbak lettek. Nem rémlik, hogy 20 éve 8 giga rammal ellátott mobiltelefonokat kellett volna emulálni pl., vagy éppen konténerizálni. Ez is csak töredéke az azóta született igényeknek.

    Biztos meg lehetne csinálni, hogy kevesebb erőforrást igényeljen az IDE (a jelenlegi funkcionalitással), a nagyobb kérdés, hogy ki fizetné ki ezért a felárat? Némi tárhely több nagyságrenddel olcsóbb, mint a munkabér és ez így is van rendjén.

    A mobilos példád igaz. De egy mobilba is soknak tartom az app-ok helyfoglalását. Éppen nemrég kérdezte tőlem egy idős néni, hogy az akcióban pár ezerért kapható 8 gigás tárhellyel rendelkező okostelót érdemes-e megvennie, mert Ő csak arra szeretné használni, hogy a tesco-ban az akciókat megnézze rajt. Mondtam Neki, hogy az sztem. nagyon kevés tárhely, mert az alkalmazások túl nagy helyet foglalnak.
    De olyan aspektusa is van a dolognak, hogy hiába lett gyorsabb a HW, azért még mindig az a legszűkebb keresztmetszet. Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).

    @dabadab: Gondolom azért, mert kevés komponenst telepítettél. Azért írtam, hogy alsóhangon 5-6 giga. 1-2 gigát tévedtem.

  • dabadab
    titán

    Nem, ez azt jelenti, hogy 10 GB semmi. Én nem sírom vissza azokat az időket, amikor 1.44-es floppyról kellett a kliensekre a frontendet telepíteni. Most meg 10 GB a neten is átjön 15 perc alatt. Ettől még nem kell szar programokat írni...

    Meg hát 10 GB-hoz már meg kell küzdeni - nálam a VS2019 4 GB-ot foglal.

  • fatal`
    titán

    Nem, ez azt jelenti, hogy 10 GB semmi. Én nem sírom vissza azokat az időket, amikor 1.44-es floppyról kellett a kliensekre a frontendet telepíteni. Most meg 10 GB a neten is átjön 15 perc alatt. Ettől még nem kell szar programokat írni...

    A programok is nagyságrenddel bonyolultabbak lettek. Nem rémlik, hogy 20 éve 8 giga rammal ellátott mobiltelefonokat kellett volna emulálni pl., vagy éppen konténerizálni. Ez is csak töredéke az azóta született igényeknek.

    Biztos meg lehetne csinálni, hogy kevesebb erőforrást igényeljen az IDE (a jelenlegi funkcionalitással), a nagyobb kérdés, hogy ki fizetné ki ezért a felárat? Némi tárhely több nagyságrenddel olcsóbb, mint a munkabér és ez így is van rendjén.

  • Ispy
    nagyúr

    és @martonx: De ez azt jelenti a programozóknak, hogy akkor most aztán csinálhatunk olyan IDE-t, ami elfoglalja az egészet? Sztem. ez nem jó irány.

    Nem, ez azt jelenti, hogy 10 GB semmi. Én nem sírom vissza azokat az időket, amikor 1.44-es floppyról kellett a kliensekre a frontendet telepíteni. Most meg 10 GB a neten is átjön 15 perc alatt. Ettől még nem kell szar programokat írni...

  • pmonitor
    aktív tag

    Most vettem 1 TB-os m2 ssdt 30k-ért, annó meg 35k-ért a 64MB-os usb drive-ot. Ennek én inkább örülök...

    A NAS-ban meg pörög 2 darab 3 TB-os HDD.

    és @martonx: De ez azt jelenti a programozóknak, hogy akkor most aztán csinálhatunk olyan IDE-t, ami elfoglalja az egészet? Sztem. ez nem jó irány.

  • Ispy
    nagyúr

    A FindFileC.exe programot frissítettem, valamint a forrása is megtalálható a .rar fájlban. A forráson még bőven lenne mit csiszolni, de működőképes. Ha valaki működést érintő bug-ot talál benne, akkor megköszönném, ha jelezné. Tényleg jó lenne, ha lenne egy ilyen win32-es topik, ami csak ilyenekkel foglalkozna. De ahhoz az kellene, hogy lenne több olyan, aki keni-vágja ezt a témát. Még az is lehet, hogy én is kérdeznék :) Pl. hogy miért nem működik az sprintf(...) win32-ben? "Error LNK2001 unresolved external symbol __imp____stdio_common_vsprintf" hibaüzit ad. Mindenesetre suszter módszerrel megoldottam a helyettesítését a FindFileC-ben. ;]

    ------------------------------------------------------------------------

    Egy másik téma egy olyan témakörből, ami lehet, hogy többször előjön nálam, mert engem eléggé irritál a(z) (erőforrás)pazarlás. Szóval a régi szép időben az IDE megvolt pár megából. Most a VS alsóhangon is 5-6 giga, de inkább 10-nél kezdődik(régebben egy egész winchi volt 2 giga körül!). Hová jutunk, ha ez a "fejlődés" így megy tovább? Az oké, hogy a VS többet tud, de azért mégis...

    Most vettem 1 TB-os m2 ssdt 30k-ért, annó meg 35k-ért a 64MB-os usb drive-ot. Ennek én inkább örülök...

    A NAS-ban meg pörög 2 darab 3 TB-os HDD.

  • martonx
    veterán

    A FindFileC.exe programot frissítettem, valamint a forrása is megtalálható a .rar fájlban. A forráson még bőven lenne mit csiszolni, de működőképes. Ha valaki működést érintő bug-ot talál benne, akkor megköszönném, ha jelezné. Tényleg jó lenne, ha lenne egy ilyen win32-es topik, ami csak ilyenekkel foglalkozna. De ahhoz az kellene, hogy lenne több olyan, aki keni-vágja ezt a témát. Még az is lehet, hogy én is kérdeznék :) Pl. hogy miért nem működik az sprintf(...) win32-ben? "Error LNK2001 unresolved external symbol __imp____stdio_common_vsprintf" hibaüzit ad. Mindenesetre suszter módszerrel megoldottam a helyettesítését a FindFileC-ben. ;]

    ------------------------------------------------------------------------

    Egy másik téma egy olyan témakörből, ami lehet, hogy többször előjön nálam, mert engem eléggé irritál a(z) (erőforrás)pazarlás. Szóval a régi szép időben az IDE megvolt pár megából. Most a VS alsóhangon is 5-6 giga, de inkább 10-nél kezdődik(régebben egy egész winchi volt 2 giga körül!). Hová jutunk, ha ez a "fejlődés" így megy tovább? Az oké, hogy a VS többet tud, de azért mégis...

    Régebben a vinyók is 20mbyte-osak voltak. Most meg 1TB-nél kisebbet nem tudsz venni.

  • zsolti_20
    senior tag

    a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie.

    Ezt a mondatot be kellene kereteztetni. :C honnan szalasztják az ilyen fakezű fejlesztőket?

    Mikor megláttam, pontosan nekem is ez volt a reakcióm. És ez ráadásul az én részemen lévő automatizálást is "széppé" teszi.

  • opr
    nagyúr

    Köszönöm a tippeket sztanozs és disy68. Sikerült kideríteni, hogy a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie.

    Ez a megoldás működhet java scriptből, mert letudom kérni az egér X és Y koordinátáját, a probléma már csak az, ha legörgetek a weblapon akkor a tickbox X Y koordinátája és máshol fog elhelyezkedni.
    Így ha megadok neki egy egér kattolás nem a megfelelő helyen fog megtörténni.

        <html>
        <body>
        <script>
        
        onmousemove = function(e){
        
            console.log("mouse location:", e.clientX, e.clientY);
            var pos = e;
            var dot;
            dot = document.createElement('div');
            dot.className = "dot";
            dot.style.left = pos.x + "px";
            dot.style.top = pos.y + "px";
            document.body.appendChild(dot);
        }    
        
        </script>
        </body>
        </html>

    "a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie."

    Uristen. :DDD

  • Silεncε
    őstag

    Köszönöm a tippeket sztanozs és disy68. Sikerült kideríteni, hogy a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie.

    Ez a megoldás működhet java scriptből, mert letudom kérni az egér X és Y koordinátáját, a probléma már csak az, ha legörgetek a weblapon akkor a tickbox X Y koordinátája és máshol fog elhelyezkedni.
    Így ha megadok neki egy egér kattolás nem a megfelelő helyen fog megtörténni.

        <html>
        <body>
        <script>
        
        onmousemove = function(e){
        
            console.log("mouse location:", e.clientX, e.clientY);
            var pos = e;
            var dot;
            dot = document.createElement('div');
            dot.className = "dot";
            dot.style.left = pos.x + "px";
            dot.style.top = pos.y + "px";
            document.body.appendChild(dot);
        }    
        
        </script>
        </body>
        </html>

    a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie.

    Ezt a mondatot be kellene kereteztetni. :C honnan szalasztják az ilyen fakezű fejlesztőket?

  • zsolti_20
    senior tag

    van bizonyára az elemen vagy valamelyik szülőjén egy eseménykezelő, ami feltételezhetően egy click hatására csinál valamit (sanszosan többről van szó, mint a képcsere)

    böngésző dev-tools inspectnél meg lehet nézni, hogy min van milyen eseménykezelő (firefox-é sztem átláthatóbb e téren)

    mondjuk az is lehet, hogy hiába találod meg ezt, ettől függetlenül nem biztos, hogy az értlemezése/használata triviális lesz

    Köszönöm a tippeket sztanozs és disy68. Sikerült kideríteni, hogy a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie.

    Ez a megoldás működhet java scriptből, mert letudom kérni az egér X és Y koordinátáját, a probléma már csak az, ha legörgetek a weblapon akkor a tickbox X Y koordinátája és máshol fog elhelyezkedni.
    Így ha megadok neki egy egér kattolás nem a megfelelő helyen fog megtörténni.

        <html>
        <body>
        <script>
        
        onmousemove = function(e){
        
            console.log("mouse location:", e.clientX, e.clientY);
            var pos = e;
            var dot;
            dot = document.createElement('div');
            dot.className = "dot";
            dot.style.left = pos.x + "px";
            dot.style.top = pos.y + "px";
            document.body.appendChild(dot);
        }    
        
        </script>
        </body>
        </html>

  • pmonitor
    aktív tag

    Igen. Pl. itt a FindFileC.exe-t pontosan így készítettem(goto egy sincs benne :) ). Tehát van a TC, a FindFile és a FindFileC. A TC a leglassabb. A másik kettő sebessége megfelelő(kb. egyforma). Mondjuk hozzá kell tennem, hogy a C#-os FindFile.exe-t is C stílusban írtam(az OOP alapelveit felrúgva). Viszont mióta a C-ben készült változat megvan, azóta azt használom, mert egyrészt 2 kilóval rövidebb a C#-osnál(azért ez 10 kiló körüli programnál jelentős eltérés), másrészt nem kell hozzá .Net. Ja, és a C-ben írt vátozatnál van "Tallózás...", és így is kisebb a mérete.

    A kis mérettel lapcsolatban meg itt van egy 29 byte-os "Hello world!!!" program. :DD

    A FindFileC.exe programot frissítettem, valamint a forrása is megtalálható a .rar fájlban. A forráson még bőven lenne mit csiszolni, de működőképes. Ha valaki működést érintő bug-ot talál benne, akkor megköszönném, ha jelezné. Tényleg jó lenne, ha lenne egy ilyen win32-es topik, ami csak ilyenekkel foglalkozna. De ahhoz az kellene, hogy lenne több olyan, aki keni-vágja ezt a témát. Még az is lehet, hogy én is kérdeznék :) Pl. hogy miért nem működik az sprintf(...) win32-ben? "Error LNK2001 unresolved external symbol __imp____stdio_common_vsprintf" hibaüzit ad. Mindenesetre suszter módszerrel megoldottam a helyettesítését a FindFileC-ben. ;]

    ------------------------------------------------------------------------

    Egy másik téma egy olyan témakörből, ami lehet, hogy többször előjön nálam, mert engem eléggé irritál a(z) (erőforrás)pazarlás. Szóval a régi szép időben az IDE megvolt pár megából. Most a VS alsóhangon is 5-6 giga, de inkább 10-nél kezdődik(régebben egy egész winchi volt 2 giga körül!). Hová jutunk, ha ez a "fejlődés" így megy tovább? Az oké, hogy a VS többet tud, de azért mégis...

  • disy68
    aktív tag

    Sziasztok! Az előző alkalommal is nagyon segítőkészek voltatok, tökéletesen működik amit elterveztem.

    Sajnos van egy rész aminél elakadtam. Ez egy régebbi dolog már, de felbuzdulva a tegnapi dolgon, úgy gondoltam megkérdezlek titeket, hátha láttatok már hasonlót.

    Szeretnék egy tickbox tickelni javascripttel, de úgy néz ki, hogy ennek a boxnak nincs azonosítója.
    Annyit látok csak amikor megnézem mi van mögötte:

    Amikor tickelve van:
    <td width="16px">
    <img src="folder/folder/folder/folder/iconCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
    </td>

    Amikor nicns tickelve:

    <td width="16px">
    <img src="folder/folder/folder/folder/iconUnCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
    </td>

    Ha csak simán a .gif nevét írom át, betickeli,
    de úgy veszi mintha semmi sem történt volna.

    Még soha nem találkoztam ilyesmivel, ID hiányában hivatkozni sem lehetséges rá.
    Valaki még régen azt mondta nekem, hogy ez egy DHTMLX. Nem tudom ez mennyit segít
    a jelenlegi helyzetben.

    van bizonyára az elemen vagy valamelyik szülőjén egy eseménykezelő, ami feltételezhetően egy click hatására csinál valamit (sanszosan többről van szó, mint a képcsere)

    böngésző dev-tools inspectnél meg lehet nézni, hogy min van milyen eseménykezelő (firefox-é sztem átláthatóbb e téren)

    mondjuk az is lehet, hogy hiába találod meg ezt, ettől függetlenül nem biztos, hogy az értlemezése/használata triviális lesz

  • sztanozs
    veterán

    Sziasztok! Az előző alkalommal is nagyon segítőkészek voltatok, tökéletesen működik amit elterveztem.

    Sajnos van egy rész aminél elakadtam. Ez egy régebbi dolog már, de felbuzdulva a tegnapi dolgon, úgy gondoltam megkérdezlek titeket, hátha láttatok már hasonlót.

    Szeretnék egy tickbox tickelni javascripttel, de úgy néz ki, hogy ennek a boxnak nincs azonosítója.
    Annyit látok csak amikor megnézem mi van mögötte:

    Amikor tickelve van:
    <td width="16px">
    <img src="folder/folder/folder/folder/iconCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
    </td>

    Amikor nicns tickelve:

    <td width="16px">
    <img src="folder/folder/folder/folder/iconUnCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
    </td>

    Ha csak simán a .gif nevét írom át, betickeli,
    de úgy veszi mintha semmi sem történt volna.

    Még soha nem találkoztam ilyesmivel, ID hiányában hivatkozni sem lehetséges rá.
    Valaki még régen azt mondta nekem, hogy ez egy DHTMLX. Nem tudom ez mennyit segít
    a jelenlegi helyzetben.

    nézd meg developer toolssal, mi történik, amikor klikkelsz - biztos lefut valami JS, akár XHR is van

  • zsolti_20
    senior tag

    Sziasztok! Az előző alkalommal is nagyon segítőkészek voltatok, tökéletesen működik amit elterveztem.

    Sajnos van egy rész aminél elakadtam. Ez egy régebbi dolog már, de felbuzdulva a tegnapi dolgon, úgy gondoltam megkérdezlek titeket, hátha láttatok már hasonlót.

    Szeretnék egy tickbox tickelni javascripttel, de úgy néz ki, hogy ennek a boxnak nincs azonosítója.
    Annyit látok csak amikor megnézem mi van mögötte:

    Amikor tickelve van:
    <td width="16px">
    <img src="folder/folder/folder/folder/iconCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
    </td>

    Amikor nicns tickelve:

    <td width="16px">
    <img src="folder/folder/folder/folder/iconUnCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
    </td>

    Ha csak simán a .gif nevét írom át, betickeli,
    de úgy veszi mintha semmi sem történt volna.

    Még soha nem találkoztam ilyesmivel, ID hiányában hivatkozni sem lehetséges rá.
    Valaki még régen azt mondta nekem, hogy ez egy DHTMLX. Nem tudom ez mennyit segít
    a jelenlegi helyzetben.

  • dqdb
    nagyúr

    Ezt nagyon benéztem. Egy következtetésem volt jó: Ki érti ezt'et? :F Mert az igaz, hogy gyakorlatilag ahány alkalmazás, annyiféle eredmény. De a részletekbe belebonyolódtam. :(((

    1.: C#-ban find(first/next)file-t használva.
    2: C-ben find(first/next)file-t használva.
    3.: TC-ben

    Ha a C:\windows\system32-t listázom ki, akkor a 2. esetben az "aadcloudap.dll"-t nem találja meg. Az 1. és a 3. esetben megtalálja.
    Viszont ha ugyanezt a mappát almappákkal listázom ki, akkor az 1. és a 3. eset is eltérő eredményt ad(a TC több mappát/file-t talál a C#-nál).
    De a különbségek nálam csak a c: rendszermeghajtón jönnek ki. Pl. a D:\ meghajtó teljes listázásánál mindegyik ugyanazt az eredményt adja(persze a D: meghajtón nincsenek "különleges attribútumú" mappák/állományok.)
    A különleges attribútumú mappák/állományok listázása esetén talán a TC találja meg a legtöbbet. Utána a C#, majd a végén a C.

    Szóval az összevisszaság megvan. De azért az előző hsz-emben lévő hamis kijelentésemért elnézést kérek. :B

  • pmonitor
    aktív tag

    Egy érdekesség.
    Állomány listázásáról van szó. Azon belül is 3 esetről:

    1.: C-ben(VS-ben), ha a következő beállítást használom:
    Project jobb klikk -> Properties -> Configuration Properties -> Advanced -> Character Set
    Itt "Use Unicode Character Set" beállítás mellett FindFirstFileW-t használva.
    2.: C-ben(VS-ben) az előző helyen "Not Set" beállítás mellett FindFirstFileA-t használva
    3.: TC-ben.

    Ezek közül mindegyik állomány listázásnak más az eredménye. Ja, és a parancssor dir parancsáról nem is beszéltem.
    Pl. ha C:\windows\system32-t listázom ki, akkor a 2. esetben az "aadcloudap.dll"-t nem találja meg. Az 1. és a 3. esetben megtalálja, de van amiben azok is különböznek.
    Ki érti ezt'et? :F

    Ezt nagyon benéztem. Egy következtetésem volt jó: Ki érti ezt'et? :F Mert az igaz, hogy gyakorlatilag ahány alkalmazás, annyiféle eredmény. De a részletekbe belebonyolódtam. :(((

    1.: C#-ban find(first/next)file-t használva.
    2: C-ben find(first/next)file-t használva.
    3.: TC-ben

    Ha a C:\windows\system32-t listázom ki, akkor a 2. esetben az "aadcloudap.dll"-t nem találja meg. Az 1. és a 3. esetben megtalálja.
    Viszont ha ugyanezt a mappát almappákkal listázom ki, akkor az 1. és a 3. eset is eltérő eredményt ad(a TC több mappát/file-t talál a C#-nál).
    De a különbségek nálam csak a c: rendszermeghajtón jönnek ki. Pl. a D:\ meghajtó teljes listázásánál mindegyik ugyanazt az eredményt adja(persze a D: meghajtón nincsenek "különleges attribútumú" mappák/állományok.)
    A különleges attribútumú mappák/állományok listázása esetén talán a TC találja meg a legtöbbet. Utána a C#, majd a végén a C.

    Szóval az összevisszaság megvan. De azért az előző hsz-emben lévő hamis kijelentésemért elnézést kérek. :B

  • pmonitor
    aktív tag

    Egy érdekesség.
    Állomány listázásáról van szó. Azon belül is 3 esetről:

    1.: C-ben(VS-ben), ha a következő beállítást használom:
    Project jobb klikk -> Properties -> Configuration Properties -> Advanced -> Character Set
    Itt "Use Unicode Character Set" beállítás mellett FindFirstFileW-t használva.
    2.: C-ben(VS-ben) az előző helyen "Not Set" beállítás mellett FindFirstFileA-t használva
    3.: TC-ben.

    Ezek közül mindegyik állomány listázásnak más az eredménye. Ja, és a parancssor dir parancsáról nem is beszéltem.
    Pl. ha C:\windows\system32-t listázom ki, akkor a 2. esetben az "aadcloudap.dll"-t nem találja meg. Az 1. és a 3. esetben megtalálja, de van amiben azok is különböznek.
    Ki érti ezt'et? :F

  • zsolti_20
    senior tag

    a tampermonkey segítségével be tudsz injektálni javascriptet (illetve javascripttel bármit) az oldalra, akár egy file input mezőt is, amibe be kell csak dobni egy excel file-t akár

    Köszönöm mindenkinek a segítséget. Ilyen applikációt szerettem volna találni. Végig megyek pár videón és leíráson aztán meglátjuk mit tudok kihozni belőle. :R

  • disy68
    aktív tag

    A kód maga már készen van. Mivel nem én vagyok az oldal fejlesztője így nem tudom ezt a kódot a HTML-be integrálni. Én csak mint sima felhasználó létezek.

    A cél az lenne, hogy megtaláljam a lehető legegyszerűbb módot arra, hogy eljuttassam a a JavaScript parancsokat a weboldalra.

    Pl. a google.com weboldalon szeretném beírni a keresőbe hogy TEST. Erre megnyitom a consolet, bemásolom a JavaScript kódot ami automatikusan kitöltő a kereső mezőt a "TEST" szöveggel.

    Ehhez szükséges nyomnom egy F12-öt majd a consoleba bedobnom a kódot. Ha pl a munkatársam szeretné ezt használni, nem lenne képes rá, mivel a programozói tudása 0 körül van.

    Ezért nézelődök mindenfelé hátha létezik egyszerűbb megoldás is erre.

    a tampermonkey segítségével be tudsz injektálni javascriptet (illetve javascripttel bármit) az oldalra, akár egy file input mezőt is, amibe be kell csak dobni egy excel file-t akár

  • dabadab
    titán

    Most lehet én nem értek valamit....mit jelent az, hogy nem férsz hozzá a html kódhoz? Az elvileg a kliensen fut és public.

    Hogy nem tudja a szerveren átírni.

  • Ispy
    nagyúr

    A kód maga már készen van. Mivel nem én vagyok az oldal fejlesztője így nem tudom ezt a kódot a HTML-be integrálni. Én csak mint sima felhasználó létezek.

    A cél az lenne, hogy megtaláljam a lehető legegyszerűbb módot arra, hogy eljuttassam a a JavaScript parancsokat a weboldalra.

    Pl. a google.com weboldalon szeretném beírni a keresőbe hogy TEST. Erre megnyitom a consolet, bemásolom a JavaScript kódot ami automatikusan kitöltő a kereső mezőt a "TEST" szöveggel.

    Ehhez szükséges nyomnom egy F12-öt majd a consoleba bedobnom a kódot. Ha pl a munkatársam szeretné ezt használni, nem lenne képes rá, mivel a programozói tudása 0 körül van.

    Ezért nézelődök mindenfelé hátha létezik egyszerűbb megoldás is erre.

    Most lehet én nem értek valamit....mit jelent az, hogy nem férsz hozzá a html kódhoz? Az elvileg a kliensen fut és public.

  • sztanozs
    veterán

    Sziasztok! Egy másik topikból lettem ide irányítva, remélem már jó helyen vagyok. :C

    Annyit kell tudni az egészről, hogy egy excel fileból viszek be adatokat egy weboldalra, ahol sajnos nincs lehetőség az oldal fejlesztésére. Így marad a manuális lassú megoldás ami akár több órát is igénybe vehet, vagy bedobok egy kódot Google Chrome weboldalra és automatikusan csinálja amit szeretnék.

    Milyen lehetőségeim vannak futtatni JavaScriptet?
    Arra gondolok, hogy a HTML-be lehet építeni
    <script> és </script> közé, aztán szépen lefut amikor betöltődik az oldal, vagy épp ha egy gombhoz rendelem hozzá. De sajnos ez az opció most nem játszik nálam.

    Tudok futtatni JavaScript-et Google Chrome console-ból, ami nagyon jól működik, csak nem annyira felhasználó barát.

    Van bármi más lehetőség arra, hogy egy weboldalt "irányítsak" JavaScript-el? Esetleg léteznek erre külsős programok, vagy egy HTML manipulátor applikáció?

    A Google Chrome console-ból is elvagyok vele, csak jobb lenne egy kicsit felhasználóbarátabb opciót találni. :R

    Selenium

  • zsolti_20
    senior tag

    Nem tudom mi pontosan a cél, de ha annyi, hogy egy kész weboldalon lévő formot kitölteni egy excel adataival, akkor megoldható a dolog. A fájlt be lehet tallózni és van kész lib, amivel be is lehet olvasni. pölö

    A kód maga már készen van. Mivel nem én vagyok az oldal fejlesztője így nem tudom ezt a kódot a HTML-be integrálni. Én csak mint sima felhasználó létezek.

    A cél az lenne, hogy megtaláljam a lehető legegyszerűbb módot arra, hogy eljuttassam a a JavaScript parancsokat a weboldalra.

    Pl. a google.com weboldalon szeretném beírni a keresőbe hogy TEST. Erre megnyitom a consolet, bemásolom a JavaScript kódot ami automatikusan kitöltő a kereső mezőt a "TEST" szöveggel.

    Ehhez szükséges nyomnom egy F12-öt majd a consoleba bedobnom a kódot. Ha pl a munkatársam szeretné ezt használni, nem lenne képes rá, mivel a programozói tudása 0 körül van.

    Ezért nézelődök mindenfelé hátha létezik egyszerűbb megoldás is erre.

  • disy68
    aktív tag

    Igen, de ehhez a böngészőben telepíteni kell a Tampermonkeyt + a konkrét scriptet is.
    Azt mondjuk nem látom, hogy ez miért segítene neked, hiszen ez kliensoldali script, ez nem fogja látni azt az Excel file-t, ami nálad van.

    A konkrét weboldalhoz mennyire férsz hozzá? Konkrétan át tudod írni a html-t vagy csak vmi indirekt módon?

    Nem tudom mi pontosan a cél, de ha annyi, hogy egy kész weboldalon lévő formot kitölteni egy excel adataival, akkor megoldható a dolog. A fájlt be lehet tallózni és van kész lib, amivel be is lehet olvasni. pölö

  • zsolti_20
    senior tag

    Igen, de ehhez a böngészőben telepíteni kell a Tampermonkeyt + a konkrét scriptet is.
    Azt mondjuk nem látom, hogy ez miért segítene neked, hiszen ez kliensoldali script, ez nem fogja látni azt az Excel file-t, ami nálad van.

    A konkrét weboldalhoz mennyire férsz hozzá? Konkrétan át tudod írni a html-t vagy csak vmi indirekt módon?

    A weboldal szerkesztéséhez nincs hozzáférésem. Ugyan annyit tudok csinálni rajta mint akárki más innen a topikból.

    Jelenleg úgy oldom meg, hogy az excel file tartalmából generálok JavaScript kódot amit bemásolok a google chrome consoleba.

  • dabadab
    titán

    Igen ezzel már ellehet indulni valamerre. Ha jól értem a Tampermonkey képes hozzá adni az eredeti weboldalhoz bármilyen java scriptet ami elérhető lesz a weboldalon onnantól kezdve?

    Igen, de ehhez a böngészőben telepíteni kell a Tampermonkeyt + a konkrét scriptet is.
    Azt mondjuk nem látom, hogy ez miért segítene neked, hiszen ez kliensoldali script, ez nem fogja látni azt az Excel file-t, ami nálad van.

    A konkrét weboldalhoz mennyire férsz hozzá? Konkrétan át tudod írni a html-t vagy csak vmi indirekt módon?

  • zsolti_20
    senior tag

    Puppeteer (vagy valamilyen e2e tesztkornyezet), Greasemonkey/Tampermonkey szkript?

    Igen ezzel már ellehet indulni valamerre. Ha jól értem a Tampermonkey képes hozzá adni az eredeti weboldalhoz bármilyen java scriptet ami elérhető lesz a weboldalon onnantól kezdve?

  • Silεncε
    őstag

    Sziasztok! Egy másik topikból lettem ide irányítva, remélem már jó helyen vagyok. :C

    Annyit kell tudni az egészről, hogy egy excel fileból viszek be adatokat egy weboldalra, ahol sajnos nincs lehetőség az oldal fejlesztésére. Így marad a manuális lassú megoldás ami akár több órát is igénybe vehet, vagy bedobok egy kódot Google Chrome weboldalra és automatikusan csinálja amit szeretnék.

    Milyen lehetőségeim vannak futtatni JavaScriptet?
    Arra gondolok, hogy a HTML-be lehet építeni
    <script> és </script> közé, aztán szépen lefut amikor betöltődik az oldal, vagy épp ha egy gombhoz rendelem hozzá. De sajnos ez az opció most nem játszik nálam.

    Tudok futtatni JavaScript-et Google Chrome console-ból, ami nagyon jól működik, csak nem annyira felhasználó barát.

    Van bármi más lehetőség arra, hogy egy weboldalt "irányítsak" JavaScript-el? Esetleg léteznek erre külsős programok, vagy egy HTML manipulátor applikáció?

    A Google Chrome console-ból is elvagyok vele, csak jobb lenne egy kicsit felhasználóbarátabb opciót találni. :R

    Puppeteer (vagy valamilyen e2e tesztkornyezet), Greasemonkey/Tampermonkey szkript?

  • zsolti_20
    senior tag

    Sziasztok! Egy másik topikból lettem ide irányítva, remélem már jó helyen vagyok. :C

    Annyit kell tudni az egészről, hogy egy excel fileból viszek be adatokat egy weboldalra, ahol sajnos nincs lehetőség az oldal fejlesztésére. Így marad a manuális lassú megoldás ami akár több órát is igénybe vehet, vagy bedobok egy kódot Google Chrome weboldalra és automatikusan csinálja amit szeretnék.

    Milyen lehetőségeim vannak futtatni JavaScriptet?
    Arra gondolok, hogy a HTML-be lehet építeni
    <script> és </script> közé, aztán szépen lefut amikor betöltődik az oldal, vagy épp ha egy gombhoz rendelem hozzá. De sajnos ez az opció most nem játszik nálam.

    Tudok futtatni JavaScript-et Google Chrome console-ból, ami nagyon jól működik, csak nem annyira felhasználó barát.

    Van bármi más lehetőség arra, hogy egy weboldalt "irányítsak" JavaScript-el? Esetleg léteznek erre külsős programok, vagy egy HTML manipulátor applikáció?

    A Google Chrome console-ból is elvagyok vele, csak jobb lenne egy kicsit felhasználóbarátabb opciót találni. :R

  • Szép kis vitát robbantottam ki.
    Bocs srácok. :D

    Más: My.Settings.Save() után, hogyan tudom újra betölteni a configot anélkül, hogy újra kellene indítani a programot? Sehogyan sem tudom megoldani.
    Pórbáltam így, de nem működött. System.Configuration.ConfigurationManager.RefreshSection("appSettings")
    Application.Restart részben megdoldás lehet, de Runtime megoldást keresek.

  • pmonitor
    aktív tag

    Futtattam pénteken egy tesztet: ~300K process indításból csak kb 3000 egyedi PID volt. HWND egyezést csak egyet sikerült előidéznem, azt közvetlenül a gép újraindítása után.
    C# (form) kód:
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.IO;

    namespace pidtest {
    public partial class Form1 : Form {
    [DllImport("user32.dll", SetLastError = true)]
    static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
    public Form1() { InitializeComponent(); }

    private void Form1_Load(object sender, EventArgs e) {
    try {
    uint pid;
    IntPtr hwnd = Handle;
    GetWindowThreadProcessId(Handle, out pid);
    using (StreamWriter w = File.AppendText(@"c:\temp\pidtest.txt")) {
    w.WriteLine("{0} {1}", pid.ToString(), hwnd.ToString());
    } }
    finally { Close(); }
    }
    }
    }

    python teszter:
    import os
    a=0
    f=open("c:/temp/pidtest.txt","r");A=f.readlines()
    while 1:
    os.startfile("c:/temp/pidtest.exe")
    A+=f.readlines()
    if len(A) != len({*A}): break
    if a%100==0:
    B,C=zip(*[a.split()for a in A])
    D,E={*B},{*C}
    print(f'Items: {len(B)} - Unique: {len(D)} PID, {len(E)} HWND', end='\r', flush=1)
    a+=1
    f.close()

    Készítettem tesztprogramot C-ben, csak nem tudom, hogy mikor tudom hosszasan futtatni. pidtesztA:
    #include <windows.h>

    HINSTANCE hInstance = NULL;
    char* AppName = "PID teszt \"A\"";
    char* WindowClassName = "pidtesztA";
    HWND AppHwnd = NULL;

    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

    int main()
    {
    WNDCLASSEX wc;
    MSG msg;
    hInstance = GetModuleHandle(NULL);
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.hbrBackground = COLOR_BTNFACE + 1;
    wc.hInstance = hInstance;
    wc.lpszMenuName = NULL;
    wc.lpszClassName = WindowClassName;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    RegisterClassEx(&wc);
    AppHwnd = CreateWindowEx(0, WindowClassName, AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 1200, 900, 0, 0, hInstance, 0);
    ShowWindow(AppHwnd, SW_SHOWDEFAULT);
    UpdateWindow(AppHwnd);
    while (GetMessage(&msg, 0, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }

    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    switch (uMsg)
    {
    case WM_CREATE:
    ShowWindow(AppHwnd, SW_NORMAL);
    break;
    case WM_COMMAND:
    break;
    case WM_SIZE:
    {
    break;
    }
    case WM_SHOWWINDOW:
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
    break;
    }

    }

    pidtesztB:
    #include <stdio.h>
    #include <stdlib.h>
    #include <Windows.h>

    STARTUPINFOA SI;
    PROCESS_INFORMATION PI;
    HWND Pids[400000000];
    int PidsP = 0;
    int waitmsec = 500;

    int appStart(char name[])
    {
    if (!CreateProcessA(NULL, name, NULL, NULL, FALSE, 0, NULL, NULL, &SI, &PI))
    {
    printf("A %s file-t nem lehet megnyitni...\n", name);
    return -1;
    }
    WaitForSingleObject(PI.hProcess, waitmsec);
    return 0;
    }



    int main(int argc, char* argv[])
    {
    DWORD procid = 0, hwndid;
    ZeroMemory(&SI, sizeof(SI));
    SI.cb = sizeof(SI);
    ZeroMemory(&PI, sizeof(PI));
    if (argc == 3) waitmsec = atoi(argv[2]);
    char appA[50] = "pidtesztA.exe";
    char appAClass[50] = "pidtesztA";
    if (!appStart(appA))
    {
    HWND hwnd = FindWindowExA(NULL, NULL, appAClass, NULL);
    while (hwnd)
    {
    int pidact = 0;
    int tid = GetWindowThreadProcessId(hwnd, &pidact);
    Pids[PidsP] = pidact;
    PidsP++;
    hwnd = FindWindowExA(NULL, hwnd, appAClass, NULL);
    }
    TerminateProcess(PI.hProcess, 0);
    }
    HWND prochwnd;
    int i, out = 0, imax = 500;
    if (argc >= 2) imax = atoi(argv[1]);
    for (i = 0; i < imax; i++)
    {
    ZeroMemory(&SI, sizeof(SI));
    SI.cb = sizeof(SI);
    ZeroMemory(&PI, sizeof(PI));
    if (!appStart(appA))
    {
    HWND hwnd = FindWindowExA(NULL, NULL, appAClass, NULL);
    while (hwnd)
    {
    int pidact = 0;
    int tid = GetWindowThreadProcessId(hwnd, &pidact);
    int j = 0;
    while (j < PidsP)
    {
    if (Pids[j] == pidact)
    {
    printf("Pid egyezik!\n");
    out = 1;
    break;
    }
    j++;
    }
    if (out) break;
    Pids[PidsP] = pidact;
    PidsP++;
    hwnd = FindWindowExA(NULL, hwnd, appAClass, NULL);
    }
    TerminateProcess(PI.hProcess, 0);
    if (out) break;
    }
    }
    printf("i: %d\n", i);
    return 0;
    }

    Mint látható az "A" egy standard window. A "B" console. Az indítási intervallum, és a waitforsingleobject() ideje is alapból 500, de parancssorból változtatható, mint az a kódból is látható. A szám adatok validitását nem ellenőriztem le, csak egyből konvertál(legalábbis megpróbál :) ).
    Még nem tudtam hosszan futtatni. Ha vki. működésbeli hibát vesz észre, Ő kérem jelezze.

  • troll81
    addikt

    Sziasztok van olyan ph oldal ahol ecu programokkal foglalkozik valami illetve ori bin fajlokkal?
    Elakadtam egy ecu ban abban kérnek segítséget. :R

  • Csaby25
    őstag

    Sziasztok!

    Flutter (Dart), vagy Django (Python), szerintetek melyiket lehet hamarabb elsajátítani egy junior (tapasztalat nélküli) pozícióra? (Jelenleg Java-t tanulok és nagyon régen volt egy kis Python)

    Köszi!

    Erre valaki?

  • sztanozs
    veterán

    Hat ugye a kulcs itt a birthday paradox -- ha van egy X bites ter, akkor sqrt(2^X) probalkozasbol mar 50% eselyed van az utkozesre. A HWND 32 bites (es egyebkent sem teljesen random), a PID-eket meg ujrahasznalja az OS, szoval mondjuk legyen egy 48 bites ter... qed

    Én személy szerint hamarabb vártam ütközést, de vsz a HWND-t valami globális címtárból osztja és nem egykönnyen használódik újra azonos környzetben. Viszont a processzeket külön környezetben indítva szerintem jóval nagyobb lehet az esély.

  • emvy
    félisten

    Mivel a python parallel futtatja a formokat, így kisebb az esélye az ütközésnek, de így is sikerült HWND ütközést összehozni. Ha fizikailag is külön gépen futnak a processzek, akkor ennek nagyobb az esélye.

    Hat ugye a kulcs itt a birthday paradox -- ha van egy X bites ter, akkor sqrt(2^X) probalkozasbol mar 50% eselyed van az utkozesre. A HWND 32 bites (es egyebkent sem teljesen random), a PID-eket meg ujrahasznalja az OS, szoval mondjuk legyen egy 48 bites ter... qed

  • sztanozs
    veterán

    Futtattam pénteken egy tesztet: ~300K process indításból csak kb 3000 egyedi PID volt. HWND egyezést csak egyet sikerült előidéznem, azt közvetlenül a gép újraindítása után.
    C# (form) kód:
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.IO;

    namespace pidtest {
    public partial class Form1 : Form {
    [DllImport("user32.dll", SetLastError = true)]
    static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
    public Form1() { InitializeComponent(); }

    private void Form1_Load(object sender, EventArgs e) {
    try {
    uint pid;
    IntPtr hwnd = Handle;
    GetWindowThreadProcessId(Handle, out pid);
    using (StreamWriter w = File.AppendText(@"c:\temp\pidtest.txt")) {
    w.WriteLine("{0} {1}", pid.ToString(), hwnd.ToString());
    } }
    finally { Close(); }
    }
    }
    }

    python teszter:
    import os
    a=0
    f=open("c:/temp/pidtest.txt","r");A=f.readlines()
    while 1:
    os.startfile("c:/temp/pidtest.exe")
    A+=f.readlines()
    if len(A) != len({*A}): break
    if a%100==0:
    B,C=zip(*[a.split()for a in A])
    D,E={*B},{*C}
    print(f'Items: {len(B)} - Unique: {len(D)} PID, {len(E)} HWND', end='\r', flush=1)
    a+=1
    f.close()

    Mivel a python parallel futtatja a formokat, így kisebb az esélye az ütközésnek, de így is sikerült HWND ütközést összehozni. Ha fizikailag is külön gépen futnak a processzek, akkor ennek nagyobb az esélye.

  • sztanozs
    veterán

    Nekem még olyant sem sikerült előidéznem, hogy azonos PID legyen. Mondjuk nem is csodálkozom rajt, hiszen a feltétel szerint nem elég, hogy csak egyszerűen ugyanaz legyen a PID, hanem még az is, hogy annak is pontosan X típusú programnak/alkalmazásnak kell lennie. Úgyhogy sztem. már ehhez is nagy véletlen kell, hogy teljesüljön. És akkor még nem esett szó az elsődleges window Handle-jéről.

    Lehet, hogy elég csak a PID rögzítése. Ha vki. biztosabbra akar menni, akkor az elsődleges window Handle-t is rögzítheti. Ha valakinek még ez sem elég, Ő a Window Thread rögzítésével aztán sztem. túlbiztosíthatja magát. De ehhez sztem. paranoias-nak kell lenni. :)

    Futtattam pénteken egy tesztet: ~300K process indításból csak kb 3000 egyedi PID volt. HWND egyezést csak egyet sikerült előidéznem, azt közvetlenül a gép újraindítása után.
    C# (form) kód:
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.IO;

    namespace pidtest {
    public partial class Form1 : Form {
    [DllImport("user32.dll", SetLastError = true)]
    static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
    public Form1() { InitializeComponent(); }

    private void Form1_Load(object sender, EventArgs e) {
    try {
    uint pid;
    IntPtr hwnd = Handle;
    GetWindowThreadProcessId(Handle, out pid);
    using (StreamWriter w = File.AppendText(@"c:\temp\pidtest.txt")) {
    w.WriteLine("{0} {1}", pid.ToString(), hwnd.ToString());
    } }
    finally { Close(); }
    }
    }
    }

    python teszter:
    import os
    a=0
    f=open("c:/temp/pidtest.txt","r");A=f.readlines()
    while 1:
    os.startfile("c:/temp/pidtest.exe")
    A+=f.readlines()
    if len(A) != len({*A}): break
    if a%100==0:
    B,C=zip(*[a.split()for a in A])
    D,E={*B},{*C}
    print(f'Items: {len(B)} - Unique: {len(D)} PID, {len(E)} HWND', end='\r', flush=1)
    a+=1
    f.close()

  • pmonitor
    aktív tag

    > Szóval, ha vesztenék(rossz esetben), akkor mit gondolnának rólam a többiek?

    Hat az, hogy a forumon rosszat gondol rolat par ember (aki mar igy is hulyenek nez), az egesz mas, mint kifizetni 10 milliot :DDD

    > Ha ügyvéd biztosít, hogy megkapod a lóvét, akkor mire írod, hogy komolytalan?

    Az ugyved az nem biztosit semmirol, csak arrol, hogy a szerzodes ervenyes. Utana ha nem adod oda, akkor eleg maceras megszerezni, sok-sok-sok evbe telik, annal azert dragabb az idom.

    Tehat gyerunk, majd szolj, ha megvan. :D

    Jó. Ha így állsz hozzá...

    Ettől függetlenül, ha lesz időm, írok egy ilyen programot, amit max. 1-2 napig futtatok, mert én tényleg kíváncsi vagyok rá(fogadástól függetlenül). Az biztos, hogy a programkódot közzéteszem majd, és beszámolok az eredményről(mondjuk ez biztos nem holnap lesz).

  • emvy
    félisten

    >Ilyen nincs, ez komolytalan. Szedd elo, es mehet. ....... mert anelkul mi lesz? Polgari per?

    Ha ügyvéd biztosít, hogy megkapod a lóvét, akkor mire írod, hogy komolytalan? Meg aztán... itt a fórumon is itt van/lesz a nyoma, hogy bevállaltuk. Szóval, ha vesztenék(rossz esetben), akkor mit gondolnának rólam a többiek? És az olvasók? Szóval azért az nem csak úgy megy, hogy polgári per lesz belőle...

    Viszont azok tények, amit leírtam. Az is tény, hogy a dqdb-vel történő irományunk sec-ekről/min-ekről szólt. És az is tény, hogy egy évet emlegetsz, mert meg akarod nyerni. Ebből látszik, hogy mennyire távol áll a valóságtól, amit dqdb írt.

    Összesítve: a 10M nélkülözhető lóvé nincs meg, de garancia, hogy megkapod, ha nyersz, az ügyvéd(és a fórum résztvevői által) meglesz.

    > Szóval, ha vesztenék(rossz esetben), akkor mit gondolnának rólam a többiek?

    Hat az, hogy a forumon rosszat gondol rolat par ember (aki mar igy is hulyenek nez), az egesz mas, mint kifizetni 10 milliot :DDD

    > Ha ügyvéd biztosít, hogy megkapod a lóvét, akkor mire írod, hogy komolytalan?

    Az ugyved az nem biztosit semmirol, csak arrol, hogy a szerzodes ervenyes. Utana ha nem adod oda, akkor eleg maceras megszerezni, sok-sok-sok evbe telik, annal azert dragabb az idom.

    Tehat gyerunk, majd szolj, ha megvan. :D

  • pmonitor
    aktív tag

    Pontosan.

    Ismerek olyan power usereket, akik ezt a hwnd hibát 2 nap alatt produkálni fogják, olyan speciális érzékük van hozzá. Olyanokat tudnak csinálni, ami neked eszedbe sem jutna, ha nagyon akarnád akkor sem. ;]

    És azt is, ha a PID-et, Handle-t, és a Thread-et is rögzíted? Azt azért nem hiszem...

  • pmonitor
    aktív tag

    > A 10M-t nem tudom letétbe helyezni, de biztosítékot tudok rá adni(a vagyonom több, csak a vesztésem esetén kell egy kis idő, hogy meg tudjam adni, de nincs vele gond).

    Ilyen nincs, ez komolytalan. Szedd elo, es mehet. Escrow nelkul lenyegeben lehetetlen normalisan fogadni, mert anelkul mi lesz? Polgari per? Ne vicceljunk mar.

    > De azt is bele számoltad, hogy a több megnyitással a számítási idő is növekszik(tehát amíg ellenőrzöd az ütközést)?

    Persze.

    > Ezzel szemben mégis egy éves futásidőt emlegetsz.

    Mivel garantaltan meg akarom nyerni, emiatt persze. De mostmar arrol beszelunk, hogy garantaltan nyerjek, te meg onnan kezdted, hogy garantaltan te nyersz :DDD

    Na jo, szoljal amikor megvan a 10M nelkulozheto penz, ha tuti nyersz, akkor nem lehet gond ennyit kolcsonkerni valakitol.

    >Ilyen nincs, ez komolytalan. Szedd elo, es mehet. ....... mert anelkul mi lesz? Polgari per?

    Ha ügyvéd biztosít, hogy megkapod a lóvét, akkor mire írod, hogy komolytalan? Meg aztán... itt a fórumon is itt van/lesz a nyoma, hogy bevállaltuk. Szóval, ha vesztenék(rossz esetben), akkor mit gondolnának rólam a többiek? És az olvasók? Szóval azért az nem csak úgy megy, hogy polgári per lesz belőle...

    Viszont azok tények, amit leírtam. Az is tény, hogy a dqdb-vel történő irományunk sec-ekről/min-ekről szólt. És az is tény, hogy egy évet emlegetsz, mert meg akarod nyerni. Ebből látszik, hogy mennyire távol áll a valóságtól, amit dqdb írt.

    Összesítve: a 10M nélkülözhető lóvé nincs meg, de garancia, hogy megkapod, ha nyersz, az ügyvéd(és a fórum résztvevői által) meglesz.

  • Ispy
    nagyúr

    > Nekem még olyant sem sikerült előidéznem, hogy azonos PID legyen

    mernokok vagyunk, nem javasasszonyok :DDD

    Pontosan.

    Ismerek olyan power usereket, akik ezt a hwnd hibát 2 nap alatt produkálni fogják, olyan speciális érzékük van hozzá. Olyanokat tudnak csinálni, ami neked eszedbe sem jutna, ha nagyon akarnád akkor sem. ;]

  • emvy
    félisten

    A 10M-t nem tudom letétbe helyezni, de biztosítékot tudok rá adni(a vagyonom több, csak a vesztésem esetén kell egy kis idő, hogy meg tudjam adni, de nincs vele gond).

    >Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest.

    De azt is bele számoltad, hogy a több megnyitással a számítási idő is növekszik(tehát amíg ellenőrzöd az ütközést)?

    > A 10M-t nem tudom letétbe helyezni, de biztosítékot tudok rá adni(a vagyonom több, csak a vesztésem esetén kell egy kis idő, hogy meg tudjam adni, de nincs vele gond).

    Ilyen nincs, ez komolytalan. Szedd elo, es mehet. Escrow nelkul lenyegeben lehetetlen normalisan fogadni, mert anelkul mi lesz? Polgari per? Ne vicceljunk mar.

    > De azt is bele számoltad, hogy a több megnyitással a számítási idő is növekszik(tehát amíg ellenőrzöd az ütközést)?

    Persze.

    > Ezzel szemben mégis egy éves futásidőt emlegetsz.

    Mivel garantaltan meg akarom nyerni, emiatt persze. De mostmar arrol beszelunk, hogy garantaltan nyerjek, te meg onnan kezdted, hogy garantaltan te nyersz :DDD

    Na jo, szoljal amikor megvan a 10M nelkulozheto penz, ha tuti nyersz, akkor nem lehet gond ennyit kolcsonkerni valakitol.

  • pmonitor
    aktív tag

    B program mondjuk fusson le egy éven belül.

    A PID 32 bites, de ujrahasználja a Windows.

    Ok, a 10M-t majd előre letétbe kell helyezni valami escrow szolgáltatásnál, gondolom ez oké. Körbenézek, hogy kit lehetne erre használni.

    Nem tudom, hogy a fogadásból lesz-e valami, de valami egyértelműen látszik: mégpedig az, hogy milyen kicsi a valószínűsége a "jó eset" bekövetkezésének. Te is írtad, hogy "Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest". Ezzel szemben mégis egy éves futásidőt emlegetsz. Na erre mondtam én, hogy lehetetlen. Mert az eredeti példánkban(amiről dqdb-vel írogattunk) pár sec/min alatt kellene bekövetkeznie ennek az esetnek "véletlenül". De látod, amikor tétje van a dolognak, akkor már hónapokról/évről beszélgetünk. Mondjuk én is kockáztatok, mert csak 1 window-t kell ellenőrizni a "B" programnak. Szóval azért arra is van esély, hogy év alatt talán beletrafál egy ütközésbe. Ki tudja ezt?

  • pmonitor
    aktív tag

    B program mondjuk fusson le egy éven belül.

    A PID 32 bites, de ujrahasználja a Windows.

    Ok, a 10M-t majd előre letétbe kell helyezni valami escrow szolgáltatásnál, gondolom ez oké. Körbenézek, hogy kit lehetne erre használni.

    A 10M-t nem tudom letétbe helyezni, de biztosítékot tudok rá adni(a vagyonom több, csak a vesztésem esetén kell egy kis idő, hogy meg tudjam adni, de nincs vele gond).

    >Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest.

    De azt is bele számoltad, hogy a több megnyitással a számítási idő is növekszik(tehát amíg ellenőrzöd az ütközést)?

  • emvy
    félisten

    Ügyvéd előtt is beleállok. Már csak a "bizonyíthaóan"-ban kell megegyeznünk a részemről(meg valszeg a "B" program max. futásidejéről(bár ezt meghatározhatjuk úgy is, hogy "mi döntjük el, hogy mikor állítjuk le"). De ezek már csak részletkérdések.

    Egyébként sztem a PID is 32 bites.

    B program mondjuk fusson le egy éven belül.

    A PID 32 bites, de ujrahasználja a Windows.

    Ok, a 10M-t majd előre letétbe kell helyezni valami escrow szolgáltatásnál, gondolom ez oké. Körbenézek, hogy kit lehetne erre használni.

  • pmonitor
    aktív tag

    Okes. Tenyleg komolyan gondolod ezt a 10M-t, akar ugyved elott is beleallsz? Csak mondom, hogy 1) a Windows ujrahasznalja a PID-eket 2) a HWND 32 bites. Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest.

    Ügyvéd előtt is beleállok. Már csak a "bizonyíthaóan"-ban kell megegyeznünk a részemről(meg valszeg a "B" program max. futásidejéről(bár ezt meghatározhatjuk úgy is, hogy "mi döntjük el, hogy mikor állítjuk le"). De ezek már csak részletkérdések.

    Egyébként sztem a PID is 32 bites.

  • emvy
    félisten

    Pontosan így van.
    A lényeg, hogy a "B" meg tudja állapítani "A" elsődleges window hwnd-jét(mondjuk ha 1 window van, akkor nyilván azt)..

    Egyre gondolunk! :)

    Okes. Tenyleg komolyan gondolod ezt a 10M-t, akar ugyved elott is beleallsz? Csak mondom, hogy 1) a Windows ujrahasznalja a PID-eket 2) a HWND 32 bites. Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest.

  • pmonitor
    aktív tag

    Ket program kell:
    - A) amit megnyitsz (es bezarsz)
    - B) amit megnyitja es bezarja A-t

    "A" lehet tok egyszeru, errol beszelek.

    Pontosan így van.
    A lényeg, hogy a "B" meg tudja állapítani "A" elsődleges window hwnd-jét(mondjuk ha 1 window van, akkor nyilván azt)..

    Egyre gondolunk! :)

  • emvy
    félisten

    >szoval nem gond, ha csinalok egy minimal programot, aminek nincs semmi masa, csak egy ablaka.

    Nem. Pl. egy egyszerű winforms esetén akkor a hwnd az Me.Handle(C# esetén this.Handle). Az a lényeg, hogy a fő formot add meg, és mindig azt ellenőrizd le.

    Ket program kell:
    - A) amit megnyitsz (es bezarsz)
    - B) amit megnyitja es bezarja A-t

    "A" lehet tok egyszeru, errol beszelek.

  • pmonitor
    aktív tag

    Oke, ez igy elsore nekem rendben van, gondolom a notepad.exe helyett lehet barmi mas is, szoval nem gond, ha csinalok egy minimal programot, aminek nincs semmi masa, csak egy ablaka.

    >szoval nem gond, ha csinalok egy minimal programot, aminek nincs semmi masa, csak egy ablaka.

    Nem. Pl. egy egyszerű winforms esetén akkor a hwnd az Me.Handle(C# esetén this.Handle). Az a lényeg, hogy a fő formot add meg, és mindig azt ellenőrizd le.

  • emvy
    félisten

    Oké.
    Csak annyit jegyeznék meg(mert ez fontos), hogy a hwnd "Class" tulajdonságának a hwnd-jéről beszélünk(Tehát annak a window-nak, aminek WM_DESTROY küldése esetén bezáródik a notepad).

    Oke, ez igy elsore nekem rendben van, gondolom a notepad.exe helyett lehet barmi mas is, szoval nem gond, ha csinalok egy minimal programot, aminek nincs semmi masa, csak egy ablaka.

  • pmonitor
    aktív tag

    Egyszerusitsuk, legyen egy tipusu alkalmazas, mondjuk csak Notepad. Semmi mas. Es legyen az, hogy nem csak az elsohoz hasonlitsuk, hanem barmelyikhez a listaban, hiszen ahonnan a beszelgetes indult, ott ez is problemat okozna.

    Tehat:
    do 
    - nyitok egy notepad.exe-t
    - feljegyzem a pid-et es a hwnd-t
    - bezarom
    while (nincs ismetlodo pid+hwnd paros a listaban)

    Ez igy oke?

    Oké.
    Csak annyit jegyeznék meg(mert ez fontos), hogy a hwnd "Class" tulajdonságának a hwnd-jéről beszélünk(Tehát annak a window-nak, aminek WM_DESTROY küldése esetén bezáródik a notepad).

  • emvy
    félisten

    >tehat elojon egy olyan [PID,HWND], ami mar szerepelt

    Nem elég, hogy csak előjöjjenek ugyanazok, hanem hogy ugyanolyan típusú alkalmazás jöjjön létre ezekkel a jellemzőkkel. Tehát:
    1.: nyitsz egy X típusú alkalmazást(ebben megegyezhetünk, hogy mi legyen ez. Lehet pl. egy notepad is.)
    2.: Feljegyegyzed ennek az alkalmazásnak a PID-jét és az elsődleges window Handle-jét(notepad esetén pl. annak a windownak, aminek az "class" tulajdága "Notepad").
    3.: Nyitsz/zársz alkalmazásokat(köztük X típusúakat is).
    4.: Ha a nyitott alkalmazás X típusú(a példámban notepad), és a PID-je és az elsődleges window Handle-je ugyanaz, mint amit az elején feljegyeztél, akkor nyertél.

    Egyszerusitsuk, legyen egy tipusu alkalmazas, mondjuk csak Notepad. Semmi mas. Es legyen az, hogy nem csak az elsohoz hasonlitsuk, hanem barmelyikhez a listaban, hiszen ahonnan a beszelgetes indult, ott ez is problemat okozna.

    Tehat:
    do 
    - nyitok egy notepad.exe-t
    - feljegyzem a pid-et es a hwnd-t
    - bezarom
    while (nincs ismetlodo pid+hwnd paros a listaban)

    Ez igy oke?

  • dabadab
    titán

    Most a legtöbb esetben a Flutter jön szembe, kereszt platform tekintetében lehet jobb lenne ebbe az irányba elmozdulnom? A Dart nyelvről olvastam, hogy JS alapú illetve arra hasonlít legjobban, viszont a kód védelemről nem igen olvasni. Hogy oldják meg azt, hogy mondjuk egy adatbázis kapcsolati adatok ne kerüljenek ki? Vagy mondjuk fordítást követően már nem lesz nyílt a forráskód?

    Hogy oldják meg azt, hogy mondjuk egy adatbázis kapcsolati adatok ne kerüljenek ki?

    Úgy, hogy az a szerveren van :)
    Az ilyen webes cuccoknál a frontend-backend architektúra a normális, a szerveren fut a backend, az kapcsolódik az adatbázishoz, csinálja az autentikációt meg a lényegi dolgokat, a kliensnél meg csak egy kis minimál rész van, ami a megjelenítést meg az inputot csinálja.
    A kettőt meg tipikusan vmi REST API-val kötik össze.

    Ami a kliensnél van, arról nyugodtan feltételezheted, hogy ahhoz hozzá lehet férni, illetve arra is számítsál, hogy a klienstől érkező adatokba belepiszkáltak, szóval a backend rendes input validációt meg hasonlókat kell csinálni, mert különben úgy jársz, hogy a T Systems a BKV bérletekkel :)

  • pmonitor
    aktív tag

    10M az kicsit alacsony erre a celra. Csak hogy jobban specifikaljuk:

    - nyitok/zarok alkalmazasokat, minden egyes alkalommal feljegyzem a PID-et es a HWND-t. Ha talalok ismetlodest (tehat elojon egy olyan [PID,HWND], ami mar szerepelt), akkor nyertem, ha nem tudok ilyet, akkor vesztettem?

    (ugye a HWND-nek csak az also 32 bitje a szignifikans, tehat azt kell lejegyezni)

    >tehat elojon egy olyan [PID,HWND], ami mar szerepelt

    Nem elég, hogy csak előjöjjenek ugyanazok, hanem hogy ugyanolyan típusú alkalmazás jöjjön létre ezekkel a jellemzőkkel. Tehát:
    1.: nyitsz egy X típusú alkalmazást(ebben megegyezhetünk, hogy mi legyen ez. Lehet pl. egy notepad is.)
    2.: Feljegyegyzed ennek az alkalmazásnak a PID-jét és az elsődleges window Handle-jét(notepad esetén pl. annak a windownak, aminek az "class" tulajdága "Notepad").
    3.: Nyitsz/zársz alkalmazásokat(köztük X típusúakat is).
    4.: Ha a nyitott alkalmazás X típusú(a példámban notepad), és a PID-je és az elsődleges window Handle-je ugyanaz, mint amit az elején feljegyeztél, akkor nyertél.

  • emvy
    félisten

    A fogadási ajánlatom továbbra is áll. Bárki számára. :DD

    10M az kicsit alacsony erre a celra. Csak hogy jobban specifikaljuk:

    - nyitok/zarok alkalmazasokat, minden egyes alkalommal feljegyzem a PID-et es a HWND-t. Ha talalok ismetlodest (tehat elojon egy olyan [PID,HWND], ami mar szerepelt), akkor nyertem, ha nem tudok ilyet, akkor vesztettem?

    (ugye a HWND-nek csak az also 32 bitje a szignifikans, tehat azt kell lejegyezni)

  • pmonitor
    aktív tag

    > Nekem még olyant sem sikerült előidéznem, hogy azonos PID legyen

    mernokok vagyunk, nem javasasszonyok :DDD

    A fogadási ajánlatom továbbra is áll. Bárki számára. :DD

  • emvy
    félisten

    Nekem még olyant sem sikerült előidéznem, hogy azonos PID legyen. Mondjuk nem is csodálkozom rajt, hiszen a feltétel szerint nem elég, hogy csak egyszerűen ugyanaz legyen a PID, hanem még az is, hogy annak is pontosan X típusú programnak/alkalmazásnak kell lennie. Úgyhogy sztem. már ehhez is nagy véletlen kell, hogy teljesüljön. És akkor még nem esett szó az elsődleges window Handle-jéről.

    Lehet, hogy elég csak a PID rögzítése. Ha vki. biztosabbra akar menni, akkor az elsődleges window Handle-t is rögzítheti. Ha valakinek még ez sem elég, Ő a Window Thread rögzítésével aztán sztem. túlbiztosíthatja magát. De ehhez sztem. paranoias-nak kell lenni. :)

    > Nekem még olyant sem sikerült előidéznem, hogy azonos PID legyen

    mernokok vagyunk, nem javasasszonyok :DDD

  • pmonitor
    aktív tag

    Az a gond, hogy nem tudod, hogy generalodnak ezek. Ha teljesen veletlenszeruek lennenek az ertekek, akkor meg igaz is lehetne, amit mondasz, de mivel nem azok, ezert muszaj csekkolni.

    Nekem még olyant sem sikerült előidéznem, hogy azonos PID legyen. Mondjuk nem is csodálkozom rajt, hiszen a feltétel szerint nem elég, hogy csak egyszerűen ugyanaz legyen a PID, hanem még az is, hogy annak is pontosan X típusú programnak/alkalmazásnak kell lennie. Úgyhogy sztem. már ehhez is nagy véletlen kell, hogy teljesüljön. És akkor még nem esett szó az elsődleges window Handle-jéről.

    Lehet, hogy elég csak a PID rögzítése. Ha vki. biztosabbra akar menni, akkor az elsődleges window Handle-t is rögzítheti. Ha valakinek még ez sem elég, Ő a Window Thread rögzítésével aztán sztem. túlbiztosíthatja magát. De ehhez sztem. paranoias-nak kell lenni. :)

  • Ispy
    nagyúr

    Most a legtöbb esetben a Flutter jön szembe, kereszt platform tekintetében lehet jobb lenne ebbe az irányba elmozdulnom? A Dart nyelvről olvastam, hogy JS alapú illetve arra hasonlít legjobban, viszont a kód védelemről nem igen olvasni. Hogy oldják meg azt, hogy mondjuk egy adatbázis kapcsolati adatok ne kerüljenek ki? Vagy mondjuk fordítást követően már nem lesz nyílt a forráskód?

    Szerintem direktbe nem illik az adatbázishoz kapcsolódni, kell egy api az eszköz és a db közé, ami elvégzi a hitelesítést.

  • emvy
    félisten

    Most a legtöbb esetben a Flutter jön szembe, kereszt platform tekintetében lehet jobb lenne ebbe az irányba elmozdulnom? A Dart nyelvről olvastam, hogy JS alapú illetve arra hasonlít legjobban, viszont a kód védelemről nem igen olvasni. Hogy oldják meg azt, hogy mondjuk egy adatbázis kapcsolati adatok ne kerüljenek ki? Vagy mondjuk fordítást követően már nem lesz nyílt a forráskód?

    Flutter szuper, a Dart meg a JS pedig ég és föld, az első egy tök jól megtervezett nyelv, nagyon kényelmes.

    Ami a kliensen van, az nem tekinthető titkosnak, semmilyen nyelv esetén.

  • don_peter
    senior tag

    Úgy, hogy azokat egy BE csinálja és nem maga a program. Illetve lehet a JS kódokat minify-olni, attolni ES5-re, aztán azt a jóisten se fogja kibogozni

    Értem, ezeknek a szakszavaknak utána nézek, mert nem vagyok benne jártas. Köszi.

  • Silεncε
    őstag

    Most a legtöbb esetben a Flutter jön szembe, kereszt platform tekintetében lehet jobb lenne ebbe az irányba elmozdulnom? A Dart nyelvről olvastam, hogy JS alapú illetve arra hasonlít legjobban, viszont a kód védelemről nem igen olvasni. Hogy oldják meg azt, hogy mondjuk egy adatbázis kapcsolati adatok ne kerüljenek ki? Vagy mondjuk fordítást követően már nem lesz nyílt a forráskód?

    Úgy, hogy azokat egy BE csinálja és nem maga a program. Illetve lehet a JS kódokat minify-olni, attolni ES5-re, aztán azt a jóisten se fogja kibogozni

Új hozzászólás Aktív témák