gru 24

Wyszło niedawno nowe GG w wersji 10. Teoretyczne możliwości rozszerzyły się o naszą klase, wp.pl i wiele innych, czyli po prostu powstał wielki kombajn (brakuje tylko funkcji WC :P ).

Jak zapowiadali twórcy, GG 10 miało pojawić się po raz pierwszy również na Maca i Linuxa, jednak oczywiście się tak nie stało.  I tak by nikt z tego nie korzystał… Pod Linuxa, Maca, a nawet BSD jest Kadu, bez reklam, Open Source, i zdecydowanie szybciej działa.

Co jednak zrobić jak używamy Windowsa ? Ano w Internecie krążą jeszcze instalki Gadu-Gadu 7.7. Jest to ostatnia wersja przed “przełomowym” GG 8. Do tego można dorzucić GG Banner Killer, który usunie reklami i voila, mamy skromną w pełni działającą, wersję komunikatora – bez reklam.

Download GG 7.7 – - – Pobierz
GG Banner Killer – - – Pobierz

Banner Killer należy umieścić w folderze z GG, wyłączyć GG, włączyć Banner Killer, usunąć reklamy, wyłączyć Banner Killer, włączyć GG.

Miłego old-schoolowego GGadania !

VN:F [1.8.2_1042]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)

Napisane przez Don Daniello \\ tagi: , , ,

paź 03

Dobre pytanie, jak na przykład napisać kalkulator w C++ ? Zacznijmy od początku :)

Co to C++ ?

C++, inaczej cpp to język programowania wywodzący się z bardzo starego C. Jest to prawie najwydajniejszy język programowania, posiadający zarazem największe możliwości. Oczywiście na przykład pisząc w asemblerze, otrzymamy trochę wydajniejszy program (wykonujący szybciej operacje), jednak napisanie go zajmie dużo więcej czasu. Z drugiej skrajności, pisząc na przykład w Visual Basicu otrzymamy mniej wydajny program, jednak mniej zajmie napisanie go. Obecnie często spotykane jest korzystanie z bibliotek napisanych w języku asemblera w programach napisanych w C++ (dzięki temu wrażliwe instrukcje wykonywane są szybciej). Więcej o asemblerze tutaj. My zajmiemy się C++.

Co potrzeba do pisania programu w C++ ?

Napisany program w C++ (kod źródłowy) należy skompilować specjalnym programem zwanym kompilatorem aby otrzymać plik wynikowy ( program wykonywalny). Po skompilowaniu programu nie można uzyskać jego źródła (kompilacja jest nieodwracalna), dlatego należy pamiętać, by nie zgubić kodu źródłowego, w przeciwnym razie modyfikacja programu będzie niemożliwa i będzie trzeba zaczynać od początku. Kod w C++ jest jednakowy dla wszystkich systemów operacyjnych.

Kompilator

Dobrym kompilatorem, godnym polecenia jest obecnie Code::Blocks. Jest to IDE (Integrated Development Environment -> zintegrowane środowisko programistyczne). Zawiera podstawowe biblioteki, przyjazny, kolorujacy edytor tekstu i kompilatory. Jest bardzo prosty w użyciu. Jego strona domowa to http://codeblocks.org, jest dostępny pod Windowsem, Linuxem i MacOS’em.

Piszemy Kalkulator

Zaprezentuję tutaj gotowy kalkulator, ponieważ najlepiej uczyć się na przykładach. Kod jest “self-explained”, komentarze umieściłem w kodzie, wystarczy przeczytać.

  1. /*————————+
  2. |      Calculatorix       |
  3. |         v 1.0           |
  4. |   by DonDaniello.com    |
  5. +————————*/
  6. // Wszystko co jest umieszczone pomiędzy /* i */ nie jest brane pod uwagę przez kompilator, jest to tzw. komentarz wieloliniowy. Każda linia zaczynająca się od "//" jest komentarzem jednoliniowym (tak jak ta). Jest możliwość wpisania komentarza po kodzie tak jak poniżej. W takim wypadku kod jest brany pod uwagę tylko do "//".
  7.  
  8. #include <iostream> // ładujemy bibliotekę wejścia/wyjścia (input/output)
  9. #include <cmath> // ładujemy bibliotekę matematyczną
  10.  
  11. using namespace std; // używamy standardowych bibliotek do naszych odwołań
  12.  
  13. int main() // podstawowa funkcja programu, obowiązkowa
  14. {
  15. int dzialanie; // deklaracja zmiennej liczby całkowitej o nazwie dzialanie.
  16. double x, y, z; // deklaracja zmiennych liczb długich, niecałkowitych o nazwach x, y i z.
  17. // Zauważ, że prawie każde polecenie kończy się cudzysłowem.
  18.  
  19. cout << "Witaj w Calculatorix v 1.0 !"<<endl<<endl;
  20. // endl to funkcja zwracająca znak końca linii. "cout <<" oznacza przesłanie czegoś do standardowego wyjścia"
  21. while (true) { // pętla zawsze spełniona
  22. // wysyłamy tekst
  23. cout << "Dostepne dzialania:"<<endl;
  24. cout << "1 – Dodawanie"<<endl;
  25. cout << "2 – Odejmowanie"<<endl;
  26. cout << "3 – Mnozenie"<<endl;
  27. cout << "4 – Dzielenie"<<endl;
  28. cout << "5 – Potegowanie"<<endl;
  29. cout << "6 – Pierwiastkowanie"<<endl;
  30. cout << "7 – Wartosc absolutna"<<endl<<endl;
  31. cout << "Wybierz dzialanie do wykonania:";
  32. cin >> dzialanie; // przyjmujemy wybór działania
  33. cout << endl;
  34. switch (dzialanie) { // wybór działania
  35.  
  36. case 1: // jeśli podano jeden to:
  37. cout << "Podaj pierwsza liczbe: "; cin >> x;// cout << endl;
  38. cout << "Podaj druga liczbe: "; cin >> y;// cout << endl;
  39. z = x + y; // liczymy
  40. cout << x << " plus " << y << " rowna sie" << z << "." << endl << endl;
  41. break; // koniec przypadku
  42.  
  43. case 2:
  44. cout << "Podaj pierwsza liczbe: "; cin >> x;// cout << endl;
  45. cout << "Podaj druga liczbe: "; cin >> y;// cout << endl;
  46. z = x – y;
  47. cout << x << " minus " << y << " rowna sie " << z << "." << endl << endl;
  48. break;
  49.  
  50. case 3:
  51. cout << "Podaj pierwszy czynnik: "; cin >> x;// cout << endl;
  52. cout << "Podaj drugi czynnik: "; cin >> y;// cout << endl;
  53. z = x * y;
  54. cout << x << " razy " << y << " rowna sie " << z << "." << endl << endl;
  55. break;
  56.  
  57. case 4:
  58. cout << "Podaj dzielna liczbe: "; cin >> x;// cout << endl;
  59. cout << "Podaj dzielnik liczbe: "; cin >> y;// cout << endl;
  60. z = x / y;
  61. cout << x << " podzielone przez " << y << " rowna sie " << z << "." << endl << endl;
  62. break;
  63.  
  64. case 5:
  65. cout << "Podaj podstawe potegi: "; cin >> x;// cout << endl;
  66. cout << "Podaj wykladnik potegi: "; cin >> y;// cout << endl;
  67. z = pow (x, y);
  68. cout << x << " do potegi " << y << " rowna sie " << z << "." << endl << endl;
  69. break;
  70.  
  71. case 6:
  72. cout << "Podaj podstawe pierwiastka: "; cin >> x;// cout << endl;
  73. z = sqrt (x);
  74. cout << "Pierwiastek z " << y << " wynosi " << z << "." << endl << endl;
  75. break;
  76.  
  77. case 7:
  78. cout << "Podaj podstawe wartosci absolutnej: "; cin >> x;// cout << endl;
  79. z = abs (x);
  80. cout << "Wartosc absolutna liczby " << y << " wynosi " << z << "." << endl << endl;
  81. break;
  82.  
  83. default: cout<<endl<<"Bye Bye !"; return 0; break; // jeśli podano coś innego, wysyłamy tekst i wyłączamy program
  84. }
  85. }
  86. }

Kod bez komentarzy do pobrania tutaj: Calculatorix

VN:F [1.8.2_1042]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)

Napisane przez Don Daniello \\ tagi: , ,

sie 29

Na wstępie…

Ochrona przed DDoS to ważna rzecz dla serwerów, jeśli nie chcemy mieć problemów z dostępnością usług. Prędzej czy później znajdzie się ktoś komu przeszkadza nasz serwer, chce się pobawić, wredna konkurencja, nudzi mu się itd. i akurat nasz serwer przypadł mu do ataku. Na takich agentów jest wiele sposobów. Oczywiście opisuję tutaj metody na Linuxa, bo Windows załapuje DDoS przed podłączeniem do sieci (a dobry firewall kosztuje fortunę).
Do poniższych czynności potrzebne są uprawnienia roota (su).

Po pierwsze: APF (Advanced Policy-based Firewall)

Jest to rozbudowany firewall, troszkę inny niż iptables. Nic nie przeszkadza, aby mieć je oba, a wiadomo firewall bez wrednych reguł, nie zawadza.

Instalacja:

# cd /usr/src
# mkdir utils
# cd utils
# wget http://rfxnetworks.com/downloads/apf-current.tar.gz
# tar xfz apf-current.tar.gz
# cd apf-*
# ./install.sh

I już zainstalowane… ale nie gotowe. W plikach README.apf i README.antidos znajdziesz opisy konfiguracji, które warto przeczytać. Teraz wypada zmienić trochę konfigurację. Edytuj plik /etc/apf/conf.apf i zmień następujące linie:

DEVEL_MODE=”0″
IG_TCP_CPORTS=”21,22,25,53,80,110,143,443,3306″
IG_UDP_CPORTS=”53,111″
USE_AD=”1″

Teraz krótkie wyjaśnienie: Pierwsza linijka – wyłączamy development mode. Druga linijka: Określamy dozwolone porty WEJŚCIOWE TCP. Bardzo ważne by nie zapomnieć np o porcie 22 dla SSH i wszystkich innych nam potrzebnych. Trzecie linijka, to samo tylko, że porty UDP. Tutaj głównie DNS (port 53), Portmapper (port 111). Na końcu uruchamiamy AntiDDoS (czwarta linijka).

Dobra, namęczyliśmy się, pora to wykorzystać. Odpalamy APF komendą:

# apf –start

Jeśli wyświetli Ci się błąd (Unable to load iptables module (ip_tables), aborting), dodaj w configu APF (tym co wyżej), linię “SET_MONOKERN 1″.

Po drugie: DDoS Deflate

Do działania DDoS Deflate wymagany jest APF :) Instalacja:

# cd /usr/src/utils
# mkdir ddos
# cd ddos
# wget http://www.inetbase.com/scripts/ddos/install.sh
# sh install.sh

Teraz konfiguracja:
W pliku/usr/local/ddos/ddos.conf możesz zwiększyć czasy blokad (banów na IP).

Odpalamy:

# /usr/local/ddos/ddos.sh -c

Gotowe. DDoS Deflate został dodany do crona. co 5 minut uruchamia się i blokuje adresy IP w APF, które mają więcej niż ilość połączeń ustawiona w configu na czas określony w configu. Polecam czas blokady zwiększyć.

Po trzecie: Reguły do IPTables

Blokada przed atakiem DOS – Ping of Death
iptables -A INPUT -p ICMP –icmp-type echo-request -m length –length 60:65535 -j ACCEPT

Blokada przed atakiem DOS – Teardrop
iptables -A INPUT -p UDP -f -j DROP

Blokada przed atakiem DOS – SYN-flood
iptables -A INPUT -p TCP –syn -m iplimit –iplimit-above 9 -j DROP

Blokada przed atakiem DOS – Smurf
iptables -A INPUT -m pkttype –pkt-type broadcast -j DROP
iptables -A INPUT -p ICMP –icmp-type echo-request -m pkttype –pkttype broadcast -j DROP
iptables -A INPUT -p ICMP –icmp-type echo-request -m limit –limit 3/s -j ACCEPT

Blokada przed atakiem DOS – UDP-flood (Pepsi)
iptables -A INPUT -p UDP –dport 7 -j DROP
iptables -A INPUT -p UDP –dport 19 -j DROP

Blokada przed atakiem DOS – SMBnuke
iptables -A INPUT -p UDP –dport 135:139 -j DROP
iptables -A INPUT -p TCP –dport 135:139 -j DROP

Blokada przed atakiem DOS – Connection-flood
iptables -A INPUT -p TCP –syn -m iplimit –iplimit-above 3 -j DROP

Blokada przed atakiem DOS – Fraggle
iptables -A INPUT -p UDP -m pkttype –pkt-type broadcast -j DROP
iptables -A INPUT -p UDP -m limit –limit 3/s -j ACCEPT

Blokada przed atakiem DOS – Jolt
iptables -A INPUT -p ICMP -f -j DROP

Istnieje możliwość, że system zastrajkuje z powodu braku w kernelu jakiegoś modułu, wtedy należy sobie przekompilować jajko lub… dać sobie spokój jeśli to za trudne, piszę o tym tylko dlatego, zebyście wiedzieli, że tak może być.

Na zakończenie…

Teraz jesteśmy (prawie) bezpieczni.
Należy pamiętać aby dodać APF do autostartu, jeśli instalujemy z paczki jest to automatycznie, jeśli z opisanego wyżej sposobu, trzeba to zrobić samemu.
Zauważ, że wszystkie pliki instalacyjne zostawiamy w katalogu /usr/src/utils. Dlaczego ? Bo jak sama nazwa wskazuje, tam powinny się znaleźć ! (A nie śmiecić w /root)

VN:F [1.8.2_1042]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)

Napisane przez Don Daniello \\ tagi: , ,

sie 21

Proces partycjonowania dysku twardego podczas instalacji systemu jest trudną decyzją, której skutki ponosimy później i długo. Dlatego warto się nad tym zastanowić dłuższą chwilkę. Należy skupić się nad przeznaczeniem dysku. Co będzie nam potrzebne, czego używamy najwięcej. Przedstawię taktyki partycjonowania zarówno na Windowsa jak i Linuxa.

Windows

Po pierwsze, partycja dla Windowsa. Musi ona mieć co najmniej 10 GB (dla XP), jednak nie więcej niż 20 GB (dla XP). Co z tego, ze Windows XP zajmuje 5 GB. Później dochodzi hibernacja – 4 GB (tyle ile masz pamięci RAM), aktualizacje (SP troszkę zajmują), pliki współdzielone programów (np. Adobe) bardzo dużo zajmują na C: i wiele innych rzeczy także samo się tam wetnie. Partycja systemowa w formacie NTFS !

Co trzymamy na partycji systemowej (C:):
- pliki współdzielone programów (np. Adobe)
- sterowniki
- programów NIE INSTALUJ na partycji systemowej

Drugą partycją u mnie jest 30 GB partycja FAT-32. Jest to FAT po to by Linux także mógł na niej operować. Teraz jednak nie jest to już konieczne. Linux najczęściej dobrze radzi sobie z odczytem i zapisem na NTFS.
Na drugiej partycji możemy trzymać jakieś pliki najczęściej określane jako “śmieci”. U mnie są to wszelkiego rodzaju Dokumenty, Muzyka, Pliki pobrane z internetu (nieselekcjonowane), Projekty WWW, Skany, Czcionki, Sterowniki (do zainstalowania), Zdjęcia. Jest to partycja opcjonalna,  NTFS o ile nie mamy starszego Linuxa.

Trzecia partycja – NTFS, ok 50-100 GB (w zależności ile możemy dać). U mnie na takiej partycji są dwa foldery: “Gry” i “Programy”. Wiadomo do czego jej używamy ? Należy pamiętać, że teraz każda gra zajmuje najczęściej ok 10 GB i więcej.
Ważne by gry i programy były zainstalowane na innej partycji niż system. Gdy system się rypnie, lub go reinstalujemy, większość programów będzie działała na czystym systemie (nie wszystkie, niektóre wymagają wpisów w rejestrze i trzeba je przeinstalować).

Czwarta partycja – reszta dysku, NTFS. U mnie używana do trzymania filmów, filmów z kamery przed zakodowaniem (20GB na 1,5h), po zakodowaniu, instalki programów pobrane z internetu. Partycja niekoniecznie musi być osobno. Można ją połączyć w jedno z partycją trzecią, wtedy będziemy mieli gwarancje, że nie zabraknie miejsca.

Ogólnie: System osobno, dane osobno.

Linux

Tutaj najczęściej wystarczą dwie partycje. Jedna to katalog główny “/”, druga to SWAP.
SWAP powinien mieć wielkość 2-3* pamięć RAM komputera.

Warto zrobić “/” osobno i “/home” osobno. Dzięki temu jeśli system się rypnie my rypniemy system, wszystkie nasze dane (i ustawienia!) zostaną na oddzielnej partycji, nietknięte. Bardzo przydatne podczas częstego reinstalowania, eksperymentowania no i gdy nie chcemy mieć problemu, polecam tę opcję. W tym przypadku “/” to około 10-20 GB, “/home” to cała reszta.

Na serwerach często rozrasta się także “/var” przez co najłatwiej trzymać wszystko razem (dla bezpieczeństwa można użyć RAID, ale o tym kiedy indziej).

To by było na tyle głównych zasad :) Oczywiście wszystko zależy od każdego użytkownika, ale warto się nad tym zastanowić wcześniej, niż potem cierpieć. Mam nadzieję, że te rady komuś pomogą. Jak ktoś chce dodać coś od siebie, komentarze mile widziane.

VN:F [1.8.2_1042]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)

Napisane przez Don Daniello \\ tagi: , , ,

sie 18

Zgubiłem gdzieś swój numerek użytkownika Linuxa i zrobiłem sobie nowy :)

Zachęcam do rejestracji na http://counter.li.org

VN:F [1.8.2_1042]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)

Napisane przez Don Daniello \\ tagi: ,