WunM

Reputacja

562

Głosów ogółem

użytkownik głosował za tyle razy
407
Użytkownik głosował przeciw tyle razy
12
  • Wybitne pytanie
  • Roczniak
  • Patrol obywatelski
  • Autobiograf
  • Cofnął głos
  • Komentator
  • Popularne pytanie
  • Student
  • Nauczyciel
  • Organizator
  • Krytyk
  • Wsparcie
  • Uczony
  • Redaktor
Prawdziwe imię
Michał
Członek od
2 lata, 4 miesiące
Ostatnio widziany
1 rok, 2 miesiące temu
Miejscowość
Lublin
Wiek
18

Pytania: 9

Odpowiedzi: 24

  • 2010-01-01 21:44:13 Co pisać w php dla ćwiczeń i treningu? Od początkujących do ...

    Ważne jest by pisać,dużo pisać. Wiadomo, że w ten sposób można się wiele nauczyć. Myślę że najlepiej na początek zająć się tymi aspektami:

    Początkujący

    • System logowania - wykorzystanie ciasteczek, bazy danych, formularzy itp.
    • mysql - przystępne artykuły po polsku zapewnią dobry start z bazami danych.
    • Baza - dowolnych rzeczy (artykułów, linków...). Taki niezbyt rozbudowany system.
    • Mały serwis - wykorzystanie rzeczy nauczonych się wcześniej; podsumowanie, przypomnienie sobie wyżej wymienionych zagadnień.

    Średnio-zaawansowany

    • Bezpieczeństwo - zabezpieczanie się przed atakmi typu sql intjection, XSS itp. Warto zasymulować ataki bądź dać do sprawdzenia osobie która umie takie ataki przeprowadzić.
    • Szablony - czyli oddzielenie logiki strony od jej wyglądu. Warto zapoznać się z różnymi systemami szablonów i dokonać osobistej oceny każdego z nich.
    • Frameworki - najlepiej zacząć od CodeIgnitera (prosty i łatwo jest się go nauczyć) a potem zapoznać się z Kohana (oparty na CodeIgniterze choć bardziej kładzie nacisk na obiektowość)

    Zaawansowany

    • Wzorce projektowe - te najpopularniejsze i często używane oraz wymieniane na forach.
    • Własny framework - nie musi być tak rozbudowany jak np. Kohana. Chodzi o to by napisać prosty ale łatwy w rozbudowie framework.
    • Prosty cms - ważne opcje to: instalator, szablony (skórki), artykuły, panel administracyjny i tyle!
    • Biblioteki dodatkowe - takie jak np.curl

  • 2010-05-21 19:01:12 Dlaczego i czy lepiej używać tablic typu vector ?

    Generalnie, przekonaj się sam ;)

    To co (m.in. ofc) ma std::vector czego nie mają "zwykłe tablice":

    • iterator
    • reverse_iterator
    • .size()
    • .resize()
    • .at() i rzucany wyjątek
    • .assign()
    • .erase()
    • .clear()
    • ::value_type

    To tylko parę cech, ale widać przewagę. Po za tym std::vector (imo) łatwiej przekazać jako argument funkcji. Jednak jeżeli chcesz być szanowanym programistą C++ musisz i jednym i drugim dobrze się posługiwać.

    czy tablice typu vector są na tyle nowoczesne i pozbawione wad że programiści mając do wyboru tablice typu vector i tablice int wybieraja tą pierwszą ? czy one nie mają żadnych wad ?

    No jasne, że mają ;) Np. taka inicjalizacja nie przejdzie:

    std::vector<int> tab = {1,2,3,4,5};
    

    Dopiero w C++0x (listy inicjalizacyjne) jest to możliwe.

  • 2010-03-22 13:25:17 optymalizacja skryptu PHP

    "Error suppression with @ is very slow." - czy to oznacza, że lepiej nie stosować @ przed wywołaniem funkcji?

    Tak w ogóle to tej składni używa się rzadko, bardzo rzadko. A przynajmniej ja nie widywałem jej zbyt często w profesjonalnych rozwiązaniach. Jezeli już się jej używa to w takim przypadku raczej nie patrzy się na wydajność.

    "Use echo's multiple parameters instead of string concatenation." - czy to oznacza, że zamiast kropek (łączenia) używać przecinków (parametrów)?

    Ciężko mi jest się w tej kwestii wypowiedzieć,ale na mój rozum to łączenie stringów (i innych typów) jest wolne. Interpreter musi stworzyć nowy obiekt na podstawie łączonych obiektów i dopiero wrzucić go na stos. A wywołanie funkcji z argumentami od razu wrzuca obiekty na stos (chyba że tworzy się obiekty tymczasowe).

    Optymalizacja PHP to śliska sprawa. Jakiś czas temu chyba google wypowiedziało się na ten temat i zaraz pojawiła się krytyka - nie w stronę treści, ale w stronę google`a. W przypadku aplikacji webowych optymalizacja samego kodu na niewiele się zda jeżeli zapytania do bazy danych nie będą sensownie skonstruowane - to tutaj powinno się kłaść większy nacisk na optymalizację.

  • 2010-01-01 23:43:47 Printscreen

    Nie wiem jak zaimplementowali to programiści z Microsoftu, ale można wykorzystać funkcję WinApi, która pobiera kolor piksela. Jeżeli dobrze pamiętam oto ona:

    GetPixel(HWND, x, y);
    

    Ale nie jestem co do jej poprawności pewien (sprawdź na MSDN).

    Jeżeli po kolei pobierzesz każdy piksel z ekranu utworzysz w ten sposób mapę którą można zapisać jako screen.

    Być może istnieje optymalniejsze rozwiązanie, ale te które podałem powinno spełnić swoje zadanie.

  • 2010-01-14 17:34:51 Dziwne zachowanie Pythona

    Operator += zachowuje się jak metoda extend(). Wynik działania lista = lista + inna_lista jest taki sam jak wynik metody extend(). Różnice są w tym że metoda extend() zamienia istniejącą listę podczas gdy zapis lista = lista + inna_lista zwraca nową listę. Dlatego funkcja id() zwraca inny wynik.

    PS. warto wspomnieć że metoda extend() jest szybsza niż wyżej wymieniony zapis.

  • 2010-01-29 15:11:55 Jaki jest najciekawszy komentarz jaki napotkaliście w kodzie?

    Widziałem coś takiego (niestety nie pamiętam do końca i piszę z głowy, ale sens ten sam):

    void sort(...) {
         // funkcja miała sortować dane ale klient się rozmyślił
    }
    

    Podpatrzone gdzieś na 4p (chyba), był tam podobny topic do tego pytania.

  • 2010-03-24 12:30:22 Doxygen a NetBeans

    Zależnie od jakiego stylu korzystasz ustaw którąś z poniższych opcji:

    JAVADOC_AUTOBRIEF
    QT_AUTOBRIEF
    

    Dzięki czemu możesz pominąć @brief

    Jeżeli korzystasz z Doxywizard to znajdziesz to w zakładce:

    Expert -> Project
    

  • 2010-03-24 13:59:11 HaXe - bawił się tym ktoś?

    Ostatnio nie mam zbyt wiele do roboty i postanowiłem przyjrzeć się z bliska HaXe ;)

    Może zacznijmy od tego co to właściwie jest. HaXe (wymawia się ponoć hex) to open-sourceowy język. Różni się od wielu innych, że pozwala tworzyć kod na różne platformy. Dokładniej:

    • Javascript
    • Flash
    • C++
    • PHP
    • NekoVM

    Warto przyjrzeć się też samemu językowi. Patrząc na przykładowy kod:

    class Test {
        static function main() {
            js.Lib.alert(js.Lib.window.location.href);
        }
    }
    

    Rzuca się w oczy podobieństwo do Javy. Dla mnie ciekawostką jest zgrabne podawanie argumentów zależnych od warunku:

    foo(if (x == 3) 5 else 8)
    

    Jednak to co mi się nie spodobało to kontrola typów. Może zbudujmy prostą funkcję:

    function foo( arg ) {
        return arg;
    }
    

    I spróbujmy wywołać ją tak:

    foo(4);
    foo(9.8);
    

    Błąd, ale tak już można:

    foo(9.8);
    foo(4);
    

    Dzieje się tak, że pierwsze wywołanie funkcji ustala typ parametrów. I o ile niejawna konwersja z typu Int do typu Float jest możliwa to w drugą stronę już nie. Na szczęście możemy jawnie podać jaki typ ma przyjmować argument funkcji. Wystarczy, że zmienimy naszą funkcję na taką:

    function foo( arg : Float ) {
        return arg;
    }
    

    Dla mnie to wprowadza tylko nie potrzebne zamieszanie. Łatwo się pomylić, bo w definicji funkcji nie wiemy jakie typy przejdą jakie nie. Dopiero pierwsze wywołanie o tym decyduje. No chyba, ze zdecydujemy się na podanie typów w stylu ActionScripta, które uważam za brzydkie (no tak, wychowałem się na C++).

    Uważam, że albo jest kontrola typów albo jej nie ma. Takie pół na pół to nieład. Ale to tylko moje zdanie.

    Przejdźmy teraz do kompilacji. Ja testowałem tylko tworzenie plików javascript. Napisałem sobie prosty program:

    class Test {
        static function main() {
            trace("Hello world!");
        }
    }
    

    I plik służący do wykonania kompilacji:

    -js test.js
    -main Test
    

    Zapisałem go jako compile.hxml i uruchomiłem go (double clickiem). Dostałem gotowy, 8 kilobajtowy plik test.js. Dużo jak na 'zwykły' program a to dlatego, że większość 'śmieci' to biblioteka, której ja użyłem niewielką część.

    No dobrze, teraz jak mam ten skrypt wykorzystać. Tak dokleić do pliku html. Tak też zrobiłem, przy czym użyłem innego, gotowego pliku html zapełnionego treścią (z geografii ;)). Dopisałem na koniec (jeszcze w sekcji body):

    <div id="haxe:trace"></div>
    <script type="text/javascript" src="test.js"></script>
    

    Odświeżyłem... i nic. Szukałem błędu w kodzie, a w końcu postanowiłem wykorzystać szablon z dokumentacji:

    <html>
    <head><title>haXe JS</title></head>
    <body>
    
    <div id="haxe:trace"></div>
    <script type="text/javascript" src="test.js"></script>
    
    </body>
    </html>
    

    I zadziałało. Nie wiem co było przyczyną.

    Czas na podsumowanie ;) Z pewnością to duża ciekawostka. I myślę, że tak już zostanie. Raczej mało kto odważy się wykorzystać HaXe w komercyjnym zastosowaniu. Jeżeli ktoś dobrze zna się na danej technologii to nie potrzebuje tego wynalazku. A firmy, wykonujące komercyjne projekty szukają fachowców znających się na danej technologi. Po za tym nie wyobrażam sobie na ile optymalny kod produkuje HaXe. I tak w ogóle "Co do wszystkiego to do niczego". Nie twierdzę, że HaXe jest do niczego, a raczej, że znając się dobrze np na .Net to HaXe jest już o wiele mniej przydatny.

  • 2010-01-15 22:41:18 Co wie programista czego nie rozumie zwykły człowiek?

    Ostatnio zauważyłem, że znajdowanie optymalnych rozwiązań wśród programistów przydaje się w codziennym życiu. Sam nawet przy najprostszych zadaniach/problemach staram się przyśpieszyć i udoskonalać rozwiązanie. Myślę że ludzie nie będący programistami na ogół skupiają się tylko na problemie. Nie biorą pod uwagę pewnych ulepszeń, które niewątpliwie im by się przydały. W swojej codziennej pracy programiści stale spotykają się z problemami, które muszą rozwiązać. To niewątpliwie wymaga dużej aktywności mózgu, który jest jak mięsień - im częściej ćwiczony tym lepszy.

    Uważam, że programiści skupiają się nie na problemie, ale jego rozwiązaniu. Głownie to ich wyróżnia spośród innych ludzi. Oczywiście również inne grupy mają podobny sposób myślenia, np. matematycy, fizycy czy ekonomiści.

  • 2010-01-01 17:09:31 Kolizje między figurami [zamknięte]

    Jedyny prosty sposób który znam (a przy tym bardzo uniwersalny) to metoda SAT (kolizja pomiędzy obiektami zachodzi tylko wtedy gdy istnieje pomiędzy nimi prosta nie przecinająca żadnego z tych obiektów).

    Metoda prosta (po polsku materiałów o niej nie znajdziesz) i jak wspomniałem uniwersalna. Uniwersalna dlatego, że łatwo jest wyznaczyć wektor potrzebny do odsunięcia obiektu tak aby nie nachodził na ten z którym koliduje.

    Sam miałem kiedyś napisać implementację tego algorytmu, ale jakoś nie miałem czasu. Są jednak gotowe implementacje (wiem że dla C++ na pewno i chyba jeszcze C#).

    Innym wyjściem jest użycie silnika fizyki. Dla gier 2D warto się przyjrzeć Box2D (z innymi nie miałem do czynienia). To rozwiązanie ma więcej zalet (m.in. gotowa fizyka w grze).

    Wybór należy do ciebie. Warto jednak jeszcze wspomnieć że kolizja SAT nie wszędzie się nada. Przykładem może być kolizja z okręgiem. Owszem da się to zrobić (z mniejszą/większą precyzją) ale efekt nie każdego zadowoli a po za tym są inne lepsze rozwiązania.

    Linki które mogą ci się przydać: