Nietypowy problem w drzewie genealogicznym

Napisał bartek w kategorii Inne, Programowanie, Rozrywka

Wycieki pamięci, zawieszanie programu, problemy z kompatybilnością są niczym wobec prawdziwych, życiowych problemów, z którymi muszą borykać się programiści! Znalezione na StackOverflow.com:

Jestem programistą pewnego oprogramowania do tworzenia drzew genealogicznych (napisany w C++ i Qt). Nie miałem żadnych problemów, aż jeden z moich klientów wysłał na skrzynkę pocztową raport z błędem. Problem polega na tym, że ma dwoje dzieci z własną córką i nie może użyć mojego programu z powodu tego błędu.

Te błędy są wynikiem moich różnorakich założeń dotyczących funkcjonowania drzewa genealogicznego (przykładowo, po przejściu cyklu, program zakłada, że X nie może być jednocześnie ojcem i dziadkiem Y).

Jak mogą rozwiązać te problemy bez usuwania wszystkich założeń dotyczących funkcjonowania drzewa genealogicznego?

Jak wy byście rozwiązali ten problem?

Brak Komentarzy

Jak oddać głos w PHP

Napisał bartek w kategorii PHP, Programowanie
, , ,

Prosty skrypt, który zrobiłem dla znajomego, pozwalający automatycznie oddać głos w ankiecie (może to nie za bardzo etyczne, ale kogo to obchodzi).

Przykładowa forma głosowania (update, dzięki Tomek) wygląda tak:

<html><body>
 
<form name="Poll" action="vote.php" method="post">
 
<input type="hidden" name="param1" value="param 1 value" />
<input type="hidden" name="param2" value="param 2 value" />
<input type="hidden" name="param3" value="param 3 value" />
 
<input type="submit" value="Submit" />
 
</form>
 
</body></html>

Forma zawiera 3 ukryte pola (może to być np. identyfikator głosowania) oraz button Submit, należy również zwrócić uwagę na sposób przesyłania danych, tzn. POST lub GET. Skrypt do głosowania:

<?php
 
$url = 'http://www.example.com/vote.php';
 
// lista przegladarek
$agents = array("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0)",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",
                "Opera/9.63 (Windows NT 6.0; U; ru) Presto/2.1.1",
                "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5",
                "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.18) Gecko/20081203 Firefox/2.0.0.18",
                "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16",
                "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1"
                );
 
$ch = curl_init();
 
// parametry
$fields = array('param1' => urlencode('param 1 value'),
                'param2' => urlencode('param 2 value'),
                'param3' => urlencode('param 3 value'),
                'submit' => urlencode('Submit vote')
        );
 
// zbuduj poprawny ciag dla cURL
foreach($fields as $key => $value)
{
        $fields_string .= $key.'='.$value.'&';
}
 
rtrim($fields_string, '&');
 
$ch = curl_init();
 
// adres strony
curl_setopt($ch, CURLOPT_URL, $url);
 
// ilosc parametrow
curl_setopt($ch, CURLOPT_POST, count($fields));
 
// parametry POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
 
// przegladarka
curl_setopt($ch, CURLOPT_USERAGENT, array_rand($agents));
 
// zwroc tylko wynik
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
$result = curl_exec($ch);
 
curl_close($ch);
 
// wyswietl wynikowy kod html
//echo $result;
 
?>

Skrypt wymaga zainstalowanej biblioteki cURL.

Komentarze (5)

Ile kodu napisałeś?

Napisał bartek w kategorii Programowanie

Jeśli jesteś ciekawy ile linijek kodu napisałeś, a ile jest w nich komentarzy, w twoim projekcie, który wydaje Ci się duży, możesz to łatwo sprawdzić i pozbyć się wszelkich złudzeń :)

CLOC (Count Lines of Code) to program, który dokładnie analizuje pliki źródłowe w kilkudziesięciu językach programowania, pokazująć ile tak naprawdę jest samego kodu w kodzie ;)

http://cloc.sourceforge.net

Komentarz (1)

Assembler x100

Napisał bartek w kategorii Assembler, Programowanie

Chciałbym serdecznie Was zaprosić na stronę domową Wojtka Muły, który zebrał na niej sporą liczbę algorytmów oraz ciekawych snippetów napisanych w assemblerze z wykorzystaniem najnowszych rozszerzeń procesora (od x86 po SSE4).

Najlepszym przykładem talentu Wojtka jest biblioteka sse2string, czyli najczęściej wykorzystywane funkcje znanej z języka C, biblioteki string.h, napisane w assemberze z wykorzystaniem rozszerzeń SSE2.

Wojtek prowadzi również bloga, gdzie można znaleźć ciekawe snippety w assemblerze, pierwszy z brzegu przykład warunkowej wymiany rejestrów:

sbb edx, edx ; part of step 2. - edx = 0xffffff if CF=1, 0x000000 otherwise
mov ecx, eax
xor ecx, ebx ; step 1
and ecx, edx ; completed step 2. - now C is 0 or (A xor B)
xor eax, ecx ; step 3
xor ebx, ecx ; step 4

Myślę, że każdy fanatyk assemblera znajdzie tam coś dla siebie.

Strona domowa — wm.ite.pl
Blog — wmula.blogspot.com

Komentarz (1)

Optymalizacja kodu

Znakomity przegląd optymalizacji wykonywanych przez kompilatory HLL, przedstawiony w formie prezentacji autorstwa Rolfa Rollesa.

Prezentacja — Binary Literacy — Static — 6 — Optimizations

Komentarze (2)

Pobieranie adresu EIP

Pobieranie adresu EIP to jedna z ważniejszych czynności w kodzie wirusów, exe-pakerów, exploitów etc., poniższy artykuł prezentuje standardowe metody jak delta offset oraz te mniej znane na uzyskanie własnego adresu EIP.

http://corkami.blogspot.com/2010/03/si-cest-ton-corps-qui-bouge-cest-ton.html

Jeśli ktoś zna inne metody — dopiszcie się do komentarzy.

Brak Komentarzy