Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Krzysiek K.

Strony: 1 [2] 3 4 5 6 ... 865
16
Narzędzia / Odp: Szybki język skryptowy potrzebny
« dnia: Styczeń 20, 2016, 01:32:02 »
Polecał bym embedować mono wewnątrz swojego programu i używać c# jako języka skryptowego. W podobny sposób zrealizowano to w Unity3d.

Jednak problemem może być licencja, nie jestem dokładnie pewien jaka jest.

http://www.mono-project.com/docs/advanced/embedding/
Myślałem o tym, ale ilość kodu mnie przeraziła.

17
Narzędzia / Odp: Szybki język skryptowy potrzebny
« dnia: Styczeń 20, 2016, 00:30:49 »
Koniec końców poważnie rozważam zrobienie skryptów w... C++. Do samego developmentu wystarczy mi właściwie, by szybka podmiana skryptów mogła odbywać się tylko pod Windowsem, gdzie "skrypt" można skompilować jako osobny projekt do DLL i podmieniać w runtime. Aplikacja obserwuje zmianę daty pliku DLL, po czym go kopiuje (żeby nie blokować następnej kompilacji) i ładuje nowy kod w dowolnym momencie. Na pozostałe platformy całość będzie skompilowana do monolitycznej aplikacji.

Zrobiłem już test i wygląda to obiecująco, a czas kompilacji DLLki z kilku plików jest wręcz pomijalny (biorąc pod uwagę /MP i precompiled header). Samo podłączanie funkcji pomiędzy DLL a exe też dość prosto załatwiam używając dwóch klas o metodach wyłącznie wirtualnych działających w roli namespace/tablicy wskaźników. No i mamy pełną wydajność i zerowy narzut na przekazywaniu klas/struktur (przez wskaźniki/referencje) pomiędzy skryptami i exe.

18
C++ / Odp: mySQL
« dnia: Styczeń 16, 2016, 16:02:32 »
Cytuj
I to ma działać w czasie rzeczywistym?
A czy "co 30 sekund" to jest "czas rzeczywisty"? ;)

19
Matematyka i fizyka / Odp: Zmienna ściśle dodatnia
« dnia: Styczeń 16, 2016, 16:00:20 »
Cytuj
Można to sobie wyobrazić tak, że oprócz normalnych liczb dodatnich i ujemnych we floatach mamy wartości specjalne:

- -0 i +0, które wychodzą, kiedy wynik operacji jest zbyt mały, żeby się go dało zapisać.
- -INF i +INF, które wychodzą, kiedy wynik operacji jest zbyt duży, żeby się go dało zapisać.
- NaN, który wychodzi, kiedy wynik operacji już w ogóle nie ma sensu, np. 0/0.
Zapomniałeś o denormalach. ;)

Cytuj
Taki NaN jest "po cichu" propagowany przez kolejne operacje, w przeciwieństwie do dzielenia przez zero liczb typu int, które to powoduje wywalenie się programu.
To akurat zależy od tego, jak masz skonfigurowane w swoim programie FPU.

20
C++ / Odp: mySQL
« dnia: Styczeń 16, 2016, 01:55:39 »
Cytuj
Jakiś czas temu robiłem małą strategię w PHP, chcę to rozwiązać podobnie jak tam, czyli tak jak podałem powyżej. ;)
No to podobnie, tyle że łączysz się z bazą przez PHP. Przy okazji z poziomu PHP możesz załatwić szyfrowanie/uwierzytelnianie. Sam tak zrobiłem w swojej gierce i mogę polecić - system chodzi od dwóch tygodni, mam 600 wpisów w hiscore i 3.4MB zebranych statystyk i jak na razie wszystko śmiga ładnie.

21
C++ / Odp: mySQL
« dnia: Styczeń 16, 2016, 00:05:48 »
OK, ale co konkretnie chcesz robić z tym mySQL? Bo na moje to szykuje się tutaj coś bardo dziwnego.

22
Matematyka i fizyka / Odp: Zmienna ściśle dodatnia
« dnia: Styczeń 14, 2016, 22:16:46 »
Cytuj
Powiedz to ludziom od IEEE 754 :D
Cóż, trochę za późno. Nie wiedzieli czy zero jest dodatnie, czy ujemne, więc na wszelki wypadek zrobili dwa. ;)

Cytuj
// EDIT: Po prostu (kierując się Brzytwą Ockhama) moje wyjaśnienie wydaje się najbardziej logiczne, dlatego to napisałem.
No niezbyt logiczne, bo jak się definiuje jakieś pojęcie (np. "liczba dodatnia"), to się definiuje je w taki sposób, że nie ma miejsca na "może być tak lub siak". Inaczej pojęcie staje się całkowicie bezużyteczne - nie użyjesz go w żadnym twierdzeniu, czy dowodzie.

Cytuj
W IEEE754 ani zero, ani żadna inna liczba nie jest sama z siebie dodatnia lub ujemna, bo każda ma przypisany jawny znak.
Czyli jest dodatnia lub ujemna, bo bez bitu znaku nie jest to liczba IEEE 754.

23
Matematyka i fizyka / Odp: Zmienna ściśle dodatnia
« dnia: Styczeń 14, 2016, 17:32:57 »
Na moje to:
  • dodania: x >= 0
  • ściśle dodania: x > 0
Zero nie jest ani dodatnie, ani ujemne, a liczby x>=0 określa się zazwyczaj jako liczby nieujemne.

24
Szkółka / Odp: Pozycja w rzucie izometrycznym
« dnia: Styczeń 11, 2016, 17:58:39 »
^ "Jak popsuć humor Krzyśkowi K." starter kit
Ja tam humor mam bardzo dobry. Może dlatego, że nie używam gotowego silnika i tego typu informacje mam. ;) ;) ;)


A tak serio, to polecam poszukać metody unproject, a jeśli nie będzie, to chociaż odpowiednika zwykłego project. W tym drugim przypadku można odpalić to dla punktów A=(0,0,0), B=(1,0,0), C=(0,1,0), D=(0,0,1) i dostać przekształcone do współrzędnych ekranu A', B', C' i D'. Wtedy naszym równaniem będzie P' = Px(B'-A') + Py(C'-A') + Pz(D' - A') + A' i możemy odwracać. Oczywiście o ile to rzeczywiście jest rzut izometryczny, a nie tylko perspektywa z kamera ustawioną pod skosem.

25
Narzędzia / Szybki język skryptowy potrzebny
« dnia: Styczeń 11, 2016, 14:50:14 »
Hej!

Pytanie i temat do dyskusji jak w nazwie wątku.


Szczególne wymagania, które bardzo bym prosił uwzględnić przed zaproponowaniem czegokolwiek:

1) Jak w temacie - szybki. W szczególności interesuje mnie szybkość matematyki na typach wektorowych (vec2, vec3).

2) WAŻNE - Przenośność, wymaganie 1. - Język skryptowy musi być dostępny na luźnej licencji (MIT/BSD) jako C/C++ bez dependencji (czyli tylko biblioteka standardowa). LGPL odpada, bo niektóre platformy na które kompiluję nie pozwalają na podanie kilku modułów i linkowanie dynamiczne (Blackberry, asm.js).

3) Przenośność, wymaganie 2. - Z przyczyn wielu targetów odpadają też nietypowe build systemy. Wystarczy że każda z moich platform docelowych wymyśliła sobie jakiś własny, więc język skryptowy powinien być kodem C/C++ kompilowalnym bez szczególnych dodatkowych zachodów (ewentualnie tylko z kilkoma definami do kompilacji).


Czy znacie coś, co by spełniło wszystkie powyższe założenia?


Pozdrawiam,
KK

26
Szkółka / Odp: Pozycja w rzucie izometrycznym
« dnia: Styczeń 11, 2016, 14:19:45 »
W jaki sposób przeliczasz pozycję x/y kafli na pozycję na ekranie? Odwróć ten wzór i będziesz miał rozwiązanie. :)

27
Szkółka / Odp: Problem z destruktorem, c++
« dnia: Styczeń 06, 2016, 22:24:07 »
Cytuj
W myśl poprzedniego cytatu:
Standard nie definiuje, co ten kod zrobi, więc taki kompilator byłby zgodny ze standardem.
OK, I stand corrected. :)

28
Szkółka / Odp: Problem z destruktorem, c++
« dnia: Styczeń 06, 2016, 21:04:32 »
Cytuj
Pewnie dobrze że mieć świadomość, ale standard to nie jest ideologia, tylko definicja języka.

Nie można uczyć ludzi robić UB bo "u mnie działa, kompilator i tak robi co trzeba".
A gdzie ja to robię? Ja mówię tutaj o rzeczach, które nie są UB, ale są niezgodne z ideologią.

Przykładowo:
struct A {
    ~A() { printf("Foo!\n"); }
};

int main() {
    A a;
    a.~A();
}
Kod wypisze dwa razy "Foo!". W bardzo nieideologiczny i niestandardowy sposób, ale bez żadnych UB.

Cytuj
Kompilator mógłby dostać nową optymizację która Ci np. Ci wywali cały drugi call do destruktora bo to "martwy kod, bo przecież da się udowodnić że ten obiekt już nie istnieje".
Taki kompilator nie byłby już zapewne zgodny ze standardem.

29
Szkółka / Odp: Problem z destruktorem, c++
« dnia: Styczeń 06, 2016, 16:49:30 »
Cytuj
Cały czas chodzi mi o sytuację z "resetem" obiektu poprzez wywołanie jego d-tora i placement new w tym samym miejscu. Pytanie, co się stanie w momencie dealokacji tego obiektu.
Do żadnej dealokacji nie dochodzi. Po prostu obiekt cały się dekonstruuje, a potem tworzy na nowo.

Dokładnie identyczna sytuacja ma miejsce w implementacji std:vector gdy zrobisz push_back zaraz po pop_back.

Cytuj
Nie lepiej wprost powiedzieć, że jest błędne i kropka? :|
Nie. Ja patrzę na standard C++ jak na definicję napiszesz to - wyjdzie tamto. To, że destruktorów nie można wołać po kilka razy to ideologia nad ten standard nadbudowana. Słuszna, ale nadal ideologia, a warto czasem mieć świadomość jak wszystko działa pod spodem.

30
Szkółka / Odp: Problem z destruktorem, c++
« dnia: Styczeń 06, 2016, 12:51:18 »
Cytuj
Powiedzcie mi jeszcze, czy aby na pewno te zabawy z placement new nie zahaczają o UB.
Nie zahaczają. Wszystkie takie zabawy są bardzo dobrze zdefiniowane w standardzie.

Cytuj
W szczególności nie jest to sposób na “przezroczyste” wywołanie konstruktora dla jakiegoś obiektu.
Po części jest i nie jest. Parametry placement są przekazywane do odpowiedniego operatora new. Standardowa implementacja operatora new(stze_t,void*) nie robi nic, tylko zwraca ów void*, więc o ile nie przeciążysz tej implementacji globalnie lub w danej klasie, to w efekcie wywołasz konstruktor z jawnym this.

Cytuj
Jeżeli było to zwykłe new, to zniszczenie obiektu pociąga za sobą zwolnienie pamięci. Lecz jeżeli było to placement new, to operator delete zakłada, że nic nie wie o obszarze pamięci, w którym obiekt rezyduje – więc go nie zwalnia. W istocie FAQ C++ wyraźnie pisze, by przy używaniu placement new samemu wywoływać destruktor, a potem samodzielnie zwalniać pamięć.
Jeśli było placement new, to raczej nie powinieneś wywoływać na tym obiekcie zwykłego delete. Może to zadziałać jeśli ręcznie zaalokowałeś pamięć prze wołanie new, ale formalnie powinieneś sam wywołać ręcznie destruktor i zwolnić pamięć w sposób odpowiedni do jej alokacji. Przykładowo wywołanie delete na obiekcie w środku zaalokowanego bloku pamięci to czysty UB.

Cytuj
Mamy rok 2016. Czas najwyższy.
Powiedz to autorom SDKów wszystkich targetów które supportuję. A nawet jak jest nowszy SDK, to i tak często użyć nie mogę, bo autorzy SDKów bardzo często lubią deprecjonować starsze platformy i wersje OSów. Tak więcj jak kod ma być przenośny, to nie ma co kozaczyć.

Cytuj
Np. wywołanie placement new na obiekcie, na którym wcześniej nie był wykonany konstruktor może doprowadzić do wycieku pamięci.
Chyba tutaj wręcz odwrotnie, miałeś na myśli. Placement new wywołuje konstruktor, więc lepiej żeby pamięć pod spodem była nieużywana (w szczególności nie powinien być na niej skonstruowany żaden obiekt, który nie został jeszcze zniszczony).

Strony: 1 [2] 3 4 5 6 ... 865