Posty

Wyświetlanie postów z wrzesień, 2018

C++ Ogólna charakterystyka obsługi wejścia-wyjścia

Bufor - jest blokiem pamięci stanowiącym pośrednie, tymczasowe miejsce przechowywania przy przesyte informacje  z urządzenia do programu lub z programu do urządzenia -(urządzenia takie jak napędy dyskowe przesyłają zawyczaj dane w blokach po 512 lub więcej bajtów, podczas gdy programy często operują na pojedynczych bajtach ) => bufor umożliwia pogodzenie tych dwóch różnych prędkości przesyłu i przetwarzania informacji.    *np. Załóżmy na przykład, że zadaniem programu jest zliczenie znaków $ znajdujących się w pliku znapisanym na dysku twardym. Taki program mógłby odczytywać z pliku jeden znak, przetwarzać go, odczytywać następny znak itd. Odczyt z pliku pojedynczych znaków wymaga wysokiej aktywności sprzętu i jest powolny. Podejście buforowane podlega na odczycie z dysku dużej porcji danych, umieszczeniu tej  porcji w buforze, a następnej odczycie pojedynczych znaków już z buforów. Ponieważ odczyt pojedynczych znaków wymaga wysokiej aktywności sprzętu i jest ...

Java

1. Java Overiwiev -Java was developed in the early 90s by Sun Microsystem -Java is a high-level language -Java programs are portable across platforms *Each program is translated into Java bytecode *Each machine has a Java Virtual Machine (JVM) which knows how to execute Java bytecode -Java is object-oriented 2. Java keywords a) package b) import c) class d) method e) variable f) public g) void h) @Test i) CamelCase j) dot k) colon l) object m) constructor n) variable declaration o) object allocation 3. Install Java a) check if Java is installed javac http://blog.akademiakodu.pl/kurs-java/tablice-2/ http://blog.akademiakodu.pl/kurs-java/podstawy-klas/

C++ Zapis do pliku tekstowego

Zapis do pliku tekstowego: -trzeba włączyć plik nagłówkowych #include<fstream> -plik nagłówkowy fstream zawiera definicję klasy ofstream obsługującej dane wyjściowe -trzeba zdeklarować jedną lub więcej zmiennych, czyli obiektów, klasy ofstream i ich nazwy są dowolne, byle by były zgodne z konwencjami nazewniczymi C++ -trzeba korzystać z przestrzeni nazw std; można co zrobić za pomocą derektywy using lub stosując przedrostek std:: do takich elementów programu jak ofstream -poszczególne obiekty klasy ofstream wiąże się z fizycznymi plikami np. metodą open() -Kiedy kończymy korzystnie z pliku zamykamy go metodą close() -w przypadku obiektów klasy ofstream rozmaite typy danych można zapisywać operatorem << ofstream outFile //outFile to obiekt klasy ofstream fout //Powiązanie obiektu z plikami: outFile.open("fish.txt") //outFile pozwoli pisać do pliku fish.txt char Filenam[50] cin >> filename; fout.open(filename); double wt = 125.8 outFile ...

C++ Liczby losowe

srand (static_cast<int>(time(NULL))); aLiczby = rand()% MAKSYMALNA_LICZBA + 1 int rand() - zwraca liczbę z przedziału <0, RAND_MAX> RAND_MAX np. 32767 int random (int nMin, int nMax) {return rand()% (nMax, nMin +1) + nMin;} np. int wylosowano = rand()% 100+1 // losowanie z przedziału <1;100> void srand (unsigned int seed); time() // zwraca liczbę sekund która upłyneła od 1.01.1970 #include<ctime> time_t time(time_t *timer);

Rekurencja

void rekurencja (lista_parametrów) { instrukcje1 if(warunek)   rekurencja (parametry) instrukcja2 } To wywołanie się kończy, sterowanie jest przekazywanej do poprzedniegowywołania rekurencja (), które wywołało bieżące. Tutaj znowu jest wykonywanie instrukcji2 i powrót do wywołania poprzedniego. Użycie rekurencji #include <iostream> void countdown (int n); int main() { countdown(4); return 0; } int countdown (int n) { using namespace std; cout << "Odliczone .." << n << endl; if(n>0)    countdown(n-1); cout << n << ". Bach - bach! \n"; } Odliczanie ... 4 Odliczanie ... 3 Odliczanie ... 2 Odliczanie ... 1 Odliczanie ... 0 0. Bach - bach! 1. Bach - bach! 2. Bach - bach! 3. Bach - bach! 4. Bach - bach! Rekurencja w wielu wywołaniach - Strategia dziel i miażdż użycie rekurencji do dzielenia kolejki #include <iostream> const int Len = 66; const int Divs = 6; void subdiver c...

C++ Decltype oraz opóźniona dekleracja typu zwracanego

int x; decltype (x) y; // będzie tego samego typu co x template <class T1, class T2> void fl (T1 x, T2 y) { ?typ? xpy = x+ y; ? } Rozwiązanie decltype (x + y) xpy; // xpy będzie tego samego typu co xpy =x + y; /// wyrazenie x + y // lub decltype (x + y) xpy = x + y; decltype (wyrażenie) zmienna; Procedura wnioskowa: Etap 1: Jeśli wyrażenie jest prostym identyfikatorem nieujętym w nawias, to zmienna jest tego samego typu co identyfikator, z wszystkimi kwalifikatorami takimi jak const, włącznie: double x = 5.5; double y = 7.9; double &ix = x; const double *pd; decltype (x) w; // w jest typu double decltype (rx) u; // u jest typu double& decltype (pd) v; // v jest typu const double* Etap 2: Jeśli wrażenie jest wywołanie funkcji, zmienna otrzyma typ zgodny z typpem wartosci zwróconej tej funkcji: long indeed (int); decltype (indeed(3))m; // m jest typu int Etap 3: Jeśli wyrażenie jest 1 - wartością to zmienna jest referencją d...

sshkit

https://github.com/capistrano/sshkit

rails deployment

https://gorails.com/deploy/ubuntu/16.04

C++ szablony (template)

szablon funkcji - jest to ogólny opis funkcji, czyli taki, w którym funkcja jest opisana przez typy ogólne - pod nie można później podstawić typy konkretne. -> umożliwia programowanie ogólne (generic programming) void Swap (AnyType & a, AnyType & b) { AnyType temp; temp =a; a=b; b=temp; } Po co? Szablon nalezy używać,mkiedy potrzebne nam funkcje stosujące ten sam algorytm do różnych typów danych. Zamiast class należy stosowali raczej typename. Przykład wykorzystywania: #include <iostream> //prototyp template <typename T> voidSwap(T & a, T & b); int main() { using namespace; int i =10, j = 20; cout << "i, j =" <<i<< " , " <<j<< " .\n"; cout << "Użycie funkcji obsługującej typ int, wygenerowanej przez kompilator. \n"; Swap(i,j) //generuje void Swap (int &, int&) double x = 24.5, y = 81.7; cout << "x, y = " << x <...

C++ typeid i informacje o typie podczas działania programu

Informacje o typie czasu wykonywanie (Run Time Type Information RTTI) #include <typeinfo> typeid(wyrażenie).informacja informacja: -name()   *int nX = 10;     time_t czas time(NULL); tmData = *localtime(&Czas);     cout<<typeid(nX).name(); //wynik "int"     cout<<typeid(Data).name(); //wynik "struct"   *Jeżeli to nazwa typu w czytelnej i przypomniej dla człowieka formie. Możemy ją przechowywać i operować nią tak jak każdym innym napisem. -nazw_name()    *Zwraca nazwę typu wewnętrznie używaną przez kompilator. Taka nazwa musi być unikalna dlatego zawiera różne "dekoracje" znak, jak? czy @. nie jest czytelnia dla człowieka, ale można ewentualnie służyć  w celach porównawczych. np. unsigned "X" if (typeid(X) == typeid(unsigned)) //inaczej != typeid(X/0,618)   cout << "świetnie nasz kompilator działa"; typeid może też służyć nam do sprowadzenia klasy, do której należy polimorficzn...

C++ Fabryka obiektów

Fabryki obiektów (object factory). Takie fabryki to najczęściej osobnej obiekty, które tworzą zależne od siebie byty np. na podstawie stałych wyliczeniowych, przekazywanych swoim metodom. Metody takie mogą więc zwrócić wiele różnych rodzajów obiektów, dlatego je się deklaruje się je z użyciem wskaźnikiem na klasy bazowe - u nas jest to IAnimal. Prosty przykład: #include <stdlib.h> // do rand() i srand() #include <ctime> //do time() IAnimal* StworzLosoweZwierze() { //zainicjalizowanie generatora liczb losowych srand (static_cast<unsigned> (time(NULL)); //wylosowanie liczby i stworzenie obiektu zwierzę switch (rand() %4) {   case 0: return new CFish;   case 1: return new CMammal;   case 2: return new CBird;   case 3: return new CHomeDog;   deafult: return NULL; } Wywołanie tej funkcji zwraca nam więc dowolną zwierzę i zawałoby się, że nijak nie potrafimy sprawdzić, do jakiej klasy ono fabrycznie należy. Z pomocą przychodzi...

C++ dynamic cast

Operator dynamic cast służy do rzutowania wskaźnika do obiektu klasy bazowej na wskaźnik do obiektu klasy pochodnej - odwrotna zmiana nie wymaga operatora. Taka konwersacja niekoniecznie musi być mozliwa. Rolą omawianego operatora jest także sprawdzenie, czy rzeczywiście mamy do czynienia z wskaźnikiem do obiektu potomnego, przechowanym przez zmienną będącą wskaźnikiem do typu bazowego. Zwrócić wartość NULL (wskaźnik pustych, jeśli niemożliwe będzie dokonanie podanego rzutowania. Incydentalne trafiają się sytuacje, w których zastosowanie omawinego operatora wymaga włączenia specjalnej opcji kompilatora, uaktywniającej informacji o typie podczas działania programu. Są to rzadkie przypadki i prawie zawsze dotyczą wielodziedziczenia, niemniej warto wiedzieć, że takie niespodzianki mogą się czasem przytrafić.

Polimorfizm

Polimorfizm - w programowaniu obiektowym oznacza wykorzystanie tego samego kodu do operowania na obiektach przynależnych różnym klasom, dziedziczącym od siebie. Typy polimorficzne - klasa zawierająca minimum jedną metodę wirtualną

C++ Metody wirtulalne

Metody wirtulalne - jest przygotowana na zastąpienie siebie przez nową wersję zdefiniowaną w klasie pochodnej => w klasie bazowej Deklaracja metody wirtualnej #include<iostream> class CAnimal { // (pomijamy pozostałe składowe klasy) public:   virtual void Oddychaj() {std::cout <<"Oddycham ..."<< std::endl;} }; /////////// class CFish: public CAnimal { public:   void Oddychaj() //redefinicja metody wirtualnej     {std::cout << "Odycham skrzelami .." <<std:endl;}   void Płyn(); }; //////////// nazwa_klasy_bazowej :: nazwa_metody([parametry]); //Wywołanie metody (można zamiast nazwy_klasy_nazwy mozliwe jest użycie słowa kluczowego _super ) CAnimal * pZwierzak = new CMammal; pZwierzak -> Oddychaj(); delete pZwierzak; -wskaźnik, pZwierzak do obiektu klasy CAnimal a właściwie na tą klasą -cMammal nowy obiekt klasy cMammal -klasa cMammal dziedziczy od klasy cAnimal także każdy obiekt należący do te...

Slack

https://get.slack.help/hc/en-us/articles/202288908-Format-your-messages

Elasticsearch container

https://discuss.elastic.co/t/elastic-elasticsearch-docker-not-assigning-permissions-to-data-directory-on-run/65812/2

C++ Dziedziczenie

Dziedziczenie (inheritance) to tworzenie nowej klasy ana podstawie jednej lub kilku istniejących klas bazowych klasa bazowa klasa pochodna - posiadają pewne elementy wpsólne części te są dziedziczone z klas bazowych, gdyż tam właśnie zostały zdefiniowane. Ich zbiór może jednak zostać poszerzona o pola i metody specyficzne dla klas pochodnych. Będą one wspólistnieć z "dorobkiem" pochodzących z klas bazowych , ale moga oferować dodatkową funkcjonalność. class nazwa_klasy { [private:]     [deklaracje_prywatne] [protected:]     [deklaracje_chronione] [public:]     [deklaracje_publiczne] }; Znaczenie etykiet, specyfikatorów: a)private -poprzedza deklarację składowych, które mają być dostępne jedynie dla metod definiowanej klasy -tzn. nie można się do nich dostać, używając obiektu lub wskaźnika na niego oraz operatorów wyłuskania . lub -> -ta wyłączność oznacza, że prywatne składowe nie są dziedziczone i nie ma do nich dostepu w klasac...

czas w C ++

include <ctime> tm m_Data tm_t * Czas = time (NULL); m_Data = localtime(&Czas) // w konstruktorze void PokazDaneDokument(CDokumentu* pDokument) { cout << pDokument -> Data().tm_mday << "." << (pDokument -> Data().tm.mon+1) <<(pDokument -> Data().tm_year+1900)<<endl; } Online Dokument + pTutorial = new Obnline Dokument ("Xion", "Od zera do gier koda", "http://avocado.rislp.pl"); Pokaz DaneDokument (pTutorial); // lub pDokument ->PokazdDane(); delete pTutorial

C++ Niszczenie obiektów

delete pFoo /// konieczenie pFoo musi być wskaźnikiem. // dokonuje się wszystkie czynności potrzebne do zniszczenie obiektu reprezentowanego // przez wskaźnik: // *wywołanie destruktora // *zwalnianie pamięci zajętą przez obiekt, który kończy wtedy definitywnie swoje istnienie Co się dzieje wtedy z wskaźnikiem do tego obiektu? Nadal wskazuje on na miejsce w pamięci , w którym jeszcze niedawno egzystował obiekt. Wszelkie próby - odwołanie się do tego obszaru skończą się więc błędem, zwanym naruszeniem zasady dostępu (ang. access violation , awaryjne zniszczenie programu)

C++ Wskaźniki na obiekt

cFoo* pFoo // pFoo wskaźnik na obiekt cFoo pFoo = new cFoo // //tworzenie nowego obiektu: // *przydzielenie odpowiedniej ilości pamięć dla naszego obiektu // *wywołanie konstruktora klasy CLamp* pLamp1 = new CLamp // stworzenie nowego obiektu klasy CLamp i stworzenie do niego wskaźnika pLamp1 CLamp* pLamp2 = pLamp1 // przepisanie drugiego wskaźnika pLamp1 do obiektu klasy CLamp Wskaźnik na obiekt jest jedynie odwołaniem do niego. Wykonanie przypisania do wskaźnika może więc co najwyżej skopiować owo odwołanie, pozostawiając  docelowy obiekt całkowicie niezmieniony - > operator wyłuskania dla wskaźników pLamp1 -> Wlacz(); // wywołanie metody klasy CLamp za pomocą wskaźnika pLamp1 dla obiektu, który ten wskaźnik wskazuje Operator kropki (.) pozwala uzyskać dostęp do składników obiektu zawartego w zmiennej obiektowej Operator strzałki (->) wykonuje analogiczną operację dla wskaźnika na obiekt. Łączność pomiędzy obiektami Sposób, w jaki łączą się obie...

C++ Deklaracja zapowiadająca (forward declaration)

to częściowe określenie jakiegoś programistycznego bytu. Nie definiuje dokładnie wszystkich jego aspektów, ale wystarcza do skorzystania z niego wewnątrz zakresu umieszczania deklaracji np. prototyp funkcji czy extern do zmiennej. Umieszczenie extern zmienna w pliku nagłówkowym (nazwa.h) udostępnia zmienną . Zmienna wszystkim modułom, która dołącza wspominiany nagłówek (plikom .cpp) Specyfikatory extern i static wzajemnie się wykluczają, dlatego nie zaleca się tworzenia deklaracji zawierających oba te słowa jednocześnie. Zabrania się inicjalizować zmienną zdeklatorowaną z użyciem modyfikatora.

git mergowanie mastera

https://gist.github.com/santisbon/a1a60db1fb8eecd1beeacd986ae5d3ca

VirtualBox Troubleshooting Tips

VirtualBox Troubleshooting Tips Only 32bit VMs are listed in Virtual Box While creating VMs in Virtual box if only 32 bit vms are listed, kindly check on the following: Check if Virtualization is enabled on your system. For this you must access the BIOS of your laptop and enable Virtualization if its not already enabled. Check if Hyper-V is enabled on your system. If it is, ensure that it is disabled as two virtualization technologies cannot co-exist. Enabling SSH on the VM If you need SSH enabled on the system, follow the below steps: Ensure the /etc/apt/sources.list file has been updated as per above Run the command:  apt-get update  Run the command:  apt-get install openssh-server Run the command:  service sshd start

Atom

https://atom.io/packages/linter-js-yaml https://atom.io/packages/remote-sync

commands

shutdown now -r

Redis

1) What is Redis? - Open source in-memory data structure store which can be used as a database and/or a cache and message broker -NoSQL Key/Value Store -Supports Multiple Data Structures -Built In Replication 2) Redis Datatypes -String -Lists - lists of string -Sets - unordered collection of string -Stored Sets - non repeated selections of strings -Hashes -  key value pairs -Bitmaps -Hyperlogs -Geospatial Indexes 3) Advantages Of Redis -Very Flexible -No Schemas & Column Names -Very Fast: Can perform around 110,000 SETs per second, about 81,000 GETs per second -Rich Datatype Support -Caching & Disk Persistence 4) Wha can Redis be used with? -ActionScript -Common Lisp -emacs lisp -Haskell -Lua -OCami -R -Scheme -Bash -Crystal -Erlang -Haxe -Matlab -Pascal -Racket -Smalltalk -C -D -Fancy -lo -mruby -Perl -Rebol -Swift -C# -Dart -gawk -Java -nim -PHP -Ruby -Tcl -C++ -Delphi -GNU Prolog -Julia -node.js -Pure Data ...

Ansible

1) Introduction to Ansible  -Provisioning -Configuration -Continuous Delivery -Application Deployment -Security Compliance -simple -agentless -one basic dependency - python -config in YAML and jinja2 https://docs.ansible.com/ https://docs.ansible.com/ansible/2.6/user_guide/intro_getting_started.html -agentless 2) Setting up Ansible Lab enviornment Template -Ansible Control Machine (ansible-controller -Ansible Target Machine (target01) -Ansible Target Machine (target02) https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#latest-release-via-dnf-or-yum Ansible Troubleshooting Tips Issues installing Ansible and its dependencies Once the Debian VM is up and running make the following changes to the /etc/apt/sources.list file to get the Ansible installation working right. Comment the line starting  deb cdrom Uncomment bottom two lines starting  deb  and  deb-src Add the below two lines: de...