Recent Posts

Podstawowe wzory chemiczne

Podstawowe wzory chemiczne

Stężenie procentowe roztworu: Roztwór o stężeniu 5% oznacza, że w 100g roztworu znajduje się 5g substancji rozpuszczonej. WZÓR: MRoz=MS+MRozp gdzie: MRozt – masa roztworu MS – masa substancji Stężenie molowe roztworu: Roztwór o stężeniu n mol/dm3 oznacza, że w roztworze o objętości1dm3 znajduje się n moli substancji rozpuszczonej. n – liczba moli […]

Zmiana rozmiaru wysyłanych plików

Zmiana rozmiaru wysyłanych plików

W pliku: nano /etc/php/7.0/apache2/php.ini zmieniamy następujące wartości: upload_max_filesize = 32M post_max_size = 32M max_execution_time = 300 następnie restartujemy apache2: sudo /etc/init.d/apache2 restart

Jak odnaleźć zależne biblioteki współdzielone.

Jak odnaleźć zależne biblioteki współdzielone.

Biblioteki współdzielone mogą być odnalezione poprzez wydanie polecenia:

 ldd nazwaAplikacji

Jednak gdy chcemy odnaleść wszystkie biblioteki zależne, które potrzebne są do odpalenia aplikacji skompilowanej dynamicznie możemy posłużyć się poniższym skryptem:

#!/bin/bash
# Author : Hemanth.HM
# Email : hemanth[dot]hm[at]gmail[dot]com
# License : GNU GPLv3
#

function useage()
{
    cat << EOU
Useage: bash $0 <path to the binary> <path to copy the dependencies>
EOU

exit 1
}

#Validate the inputs
[[ $# < 2 ]] && useage

#Check if the paths are vaild
[[ ! -e $1 ]] && echo "Not a vaild input $1" && exit 1
[[ -d $2 ]] || echo "No such directory $2 creating..."&& mkdir -p "$2"

#Get the library dependencies
echo "Collecting the shared library dependencies for $1..."
deps=$(ldd $1 | awk 'BEGIN{ORS=" "}$1\
~/^\//{print $1}$3~/^\//{print $3}'
\
 | sed 's/,$/\n/')
echo "Copying the dependencies to $2"

#Copy the deps
for dep in $deps
do
    echo "Copying $dep to $2"
    cp "$dep" "$2"
done

echo "Done!"

Wydajemy wówczas polecenie:

 bash ./ref.sh <path to the binary> <path to copy the dependencies>

czyli np w przypadku aplikacji o nazwie myApp:

 mkdir libs
 bash ./ref.sh myApp ./libs
Change modify date in Linux

Change modify date in Linux

If you want to change modify date recursivly: #!/bin/sh for i in $(find *); do   touch -t 200010161000 "$i"; echo "$i"; done

Anagramer. Find words in dictionary file C++/Qt.

Anagramer. Find words in dictionary file C++/Qt.

Below sample of code to find word containing the same letters + one that is not the same but create new word: tor -> sort -> sport The code can get dictionary and word that should be found: #include <iostream> #include <QApplication> #include <QStringList> #include […]

Twardy niedojrzały czerwony banan.

Twardy niedojrzały czerwony banan.

Dziś postanowiłem spróbować czerwonego Banana (jakkolwiek dwuznacznie to zabrzmi). Banany okazały się jednak posiadać twardą skórkę, a w środku być suche. Tak wiec postanowiłem je ugotować i dalej były jak papier w smaku. Trudno oceniać smak gdy w internecie wszyscy zachwalają miąższ z bananów rozpływający się w ustach. Jeżeli banany czerwone faktycznie są tak słodkie to moje musiały być bardzo niedojrzałe i ze złej serii :/ a to peszek.. Jednak jak wyczytałem to cena za kg wynosi 20zł, a ja kupiłem 600g za 3zł więc dużo nie straciłem. Smak papieru jednak został.
Poniżej relacja:

Oprogramowanie przyckisków Canon Lide 100 na Linuxie

Oprogramowanie przyckisków Canon Lide 100 na Linuxie

Aby debugować scanbd używamy polecenia: sudo scanbd -d7 -f -c /etc/scanbd/scanbd.conf Output:  scanbd: foreground scanbd: config-file: /etc/scanbd/scanbd.conf scanbd: reading config file /etc/scanbd/scanbd.conf scanbd: debug on: level: 7 scanbd: dropping privs to uid saned scanbd: dropping privs to gid scanner scanbd: group scanner has member: scanbd: […]

Linux błąd filtru i pytania o hasło drukarki – naprawa.

Linux błąd filtru i pytania o hasło drukarki – naprawa.

Dziś po upgradzie do Ubuntu 16.04 moja drukarka odmówiła posłuszeństwa, a co gorsza w panelu z drukarkami jestem ciągle atakowany o podanie hasła więc postanowiłem po wielu nieudanych próbach podawania prawidłowego hasła jednak odpalić ją z roota. Jednak to nie był koniec kłopotów bo wyświetlał […]

Jak zaoszczędzić sobie kilka minut życia kosztem Facebooka.

Jak zaoszczędzić sobie kilka minut życia kosztem Facebooka.

Jeżeli spędzasz godziny na przeglądaniu Facebooka, ale jednak chciałbyś się rozstać z tym toksycznym związkiem pochłaniającym Ci wiele czasu, może warto pobrać rozszerzenie do przeglądarki, które zasłoni ogólną oś czasu.

Link do rozszerzenia:
https://chrome.google.com/webstore/detail/kill-news-feed/hjobfcedfgohjkaieocljfcppjbkglfd/related

How to check ip connection to your blog?

How to check ip connection to your blog?

cat /var/log/apache/blog.artmetic.access.log | grep 08/Aug/2016 | grep blog.artmetic.pl | awk ‚{print $1}’ | sort | uniq -c and output: 53 91.238.216.101

How to remove extensions from Chromium browser?

How to remove extensions from Chromium browser?

In this short video I’ll show you how to remove extensions from Chromium browser:

Turniej rycerski w Siewierzu

Turniej rycerski w Siewierzu

Dziś postanowiłem odwiedzić Siewierz, bo ciekawiło mnie, jak w praktyce wyglądają turnieje rycerskie, a także chciałem zobaczyć zamek w Siewierzu. Muszę przyznać, że spodziewałem się, iż zamek wygląda bardziej okazałe, jednakże faktycznie można go nazwać tylko ruinami. Dowiedziałem się jednak, że zamek wcześniej wyglądał znacznie gorzej, wejście na dziedziniec było niedostępne  zabarykadowane, podczas gdy obecnie został w znacznej części odrestaurowany.

Należy przyznać, że impreza była dobrze zorganizowana, a najprawdopodobniej wynikało to z co najmniej kilkuletniej tradycji. Oprócz potyczek rycerskich można było postrzelać z łuku, zjeść dobrą kiełbasę i popić dobre piwo, ale tym ostatnim niezbyt byłem zainteresowany 😛

Na błoniach rozbite było pole namiotowe. Po samym polu – oprócz rycerzy – spacerowały niewiasty, łucznicy oraz panowie wyglądający na kmiotów. Wszystko odbywało się przy akompaniamencie zgrzytu mieczy, nastrojowej muzyki i… piorunów, ponieważ w godzinach popołudniowych nadszedł ulewny deszcz i zerwała się burza. Uważam, że warto pojechać do Siewierza jeszcze raz 🙂

Poniżej fotorelacja – żałuję jednak, że nie mogłem przebywać na wieży dłużej niż kilkadziesiąt sekund, ponieważ kustosz opiekujący się obiektem na widok chmur burzowych wszystkich zgonił z wieży, mówiąc, że piorunochron stoi nie bez przyczyny, a wieża będąc najwyższym punktem w okolicy nie jest miejscem bezpiecznym 🙂

Wzorzec obserwator C++/Qt

Wzorzec obserwator C++/Qt

Często się zdarza że programiści napotykają problem we współczesnych programu posiadające interfejs użytkownika (GUI), muszą reagować na zmiany danych w kilku różnych miejscach jednocześnie. Do sytuacji takiej może dojść wtedy gdy pracujemy na tych samych danych, które możemy edytować w kilku miejscach jednocześnie np. wykresy […]

How to add autoincrement pk to table in pgAdmin?

How to add autoincrement pk to table in pgAdmin?

To add autoincrement value to table you can use this: ALTER TABLE public.”Uzytkownicy” ADD COLUMN id BIGSERIAL PRIMARY KEY; If you have values that are on the table, the unique value of ID will be added automatically.

Pytania rekruterów na stanowisko C++/Qt Developer.

Pytania rekruterów na stanowisko C++/Qt Developer.

1. Co to jest dziedziczenie?
2. Czym jest polimorfizm?
3. Jakie znasz wzorce strukturalne?
5. Do czego służy rzutowanie?
6. Czy język C++ jest językiem obiektowym?
7. Co to jest kompilacja?
8. Czym jest linkowanie?
9. Co to jest zmienna statyczna?
10. Czym jest zakres funkcji?
11. Jak możemy przekazywać parametry do funkcji?
12. Czym jest przeciążenie funkcji?
13. Czym jest przeładowanie operatorów?
14. Czym jest funkcja wirtualna?
15. Co oznaczają słowa private, protected?
16. Co oznacza słówko const?
17. Czym są sygnały i sloty?
18. Na czym polega płytkie kopiowanie?
19. Czym są inteligentne wskaźniki?
20. Jaka różnica jest pomiędzy stosem a stertą?
21. Czym jest funkcja statyczna?
22. C++ 11 : typ auto, wyrażenia lambda, wielowątkowość.
22. Czym są mutexy?
23. Do czego służą szablony funkcji?
24. Czym są wycieki pamięci?
25. Czym są kontenery?
26. Na czym polega rekurencja?
27. Czym jest typ wyliczeniowy?
28. Co oznacza słówko inline?
29. Czym jest refraktoryzacja?
30. Czym jest konstruktor i destruktor?
31. Do czego służy destruktor wirtualny?
32. Czy konstruktor może być wirtualny?
33. Czym jest lista inicjalizacyjna?

Jak są jakieś propozycje pytań to proszę w komentarzach. Dopiszę do listy 😉

a więc dopisane do listy:

34. Czym jest inkrementacja, a czym dekrementacja?
35. Co powoduje słówko explicit przed konstruktorem?
36. Do czego służy profiler?

Recenzja filmu Pitbul. Nowe oblicze

Recenzja filmu Pitbul. Nowe oblicze

Film nakręcony przez Patryka Vegę ma w sobie element wartkiej akcji, dający wrażenie kręconego z rozmachem widowiska. Produkcję można zaliczyć do lepszych dzieł, inspirowanych legendami o polskim półświatku przestępczym. Zaletą filmu może być wielowątkowość i mnogość bohaterów oraz odgrywanych przez nich ról, bo każda jest […]

How to initialize static QMap?

How to initialize static QMap?

Jak zainnicjalizować mapę w qt.

Wzorzec Adapter C++/Qt

Wzorzec Adapter C++/Qt

Zastosowanie

Adapter inaczej nazywany Nakładką (ang. wrapper) to strukturalny wzorzec projektowy, którego zadaniem jest stworzenie spójnego interfejsu dla dwóch niekompatybilnych klas. Adapter przekształca interfejs jednej z klas na interfejs drugiej.

Adapter

Wskazówki praktyczne

Aby stworzyć wspólny interfejs warto zaimplementować klasę z metodami wirtualnymi która będzie częścią wspólną dla niewspółbieżnych klas. Adapter jest używany w przypadku gdy chcemy przysłonić już istniejące interfejsy jednym wspólnym, a nie możemy tego zrobić np. w sytuacji używania bibliotek zewnętrznych do których mamy tylko API. Autorzy często przytaczają przykład różnych wejść (HDMI, VGA) które mają takie same zadania ale różne interfejsy, a klient ma obsługiwać takie same metody (wyświetl, odepnij).

Zalety i wady

Zalety

  • Umożliwia współprace klas których wykorzystanie byłoby utrudnione ze względu na brak spójnych interfejsów.
  • Bardziej przejrzysty kod

Wady:

  • Wymagane jest dziedzicznie co powoduje przyrost plików z klasami (jeżeli stosujemy adapter klasowy)
  • Adapter klasowy jest mniej elastyczny niż Adapter obiektowy np. po dodaniu w naszym przykładzie getScreenShot(), zakrywanie metod wirtualnych jest bezsensowne w przypadku Mp3Player
#include <QDebug>
#include <QString>

class Player
{
    public:
        virtual void play(){}
        virtual void stop(){}
};

class FlashPlayer: public Player
{
    public:
        void play(){ qDebug() << "Play flash file"; }
        void stop(){ qDebug() << "Stop flash file"; }
};

// This is liblary and we cannot change implementatnion
class Mp3Player
{
    public:
        void playSound(){ qDebug() << "Play mp3 file"; }
        void stopSound(){ qDebug() << "Stop mp3 file"; }
};

/* Adapter */
class Mp3Adapter : public Mp3Player, public Player
{
public:
    void play(){playSound();}
    void stop(){stopSound();}

};

int main()
{
    Player *flash = new FlashPlayer();
    //  Player *mp3 = new Mp3Player();  // Błąd !!!
      Player *mp3 = new Mp3Adapter();

    QList <Player *> listPlayers{flash,mp3};

    foreach(Player *play, listPlayers)
        play->play();


    foreach(Player *play, listPlayers)
        play->stop();

    qDeleteAll(listPlayers);

    return 0;
}

Wyjście programu:

Play flash file
Play mp3 file
Stop flash file
Stop mp3 file
How to fix Umbrello save  „.xmi” file problem.

How to fix Umbrello save „.xmi” file problem.

To save Umbrello save problem with xmi files on Ubuntu 16.06 download other version and install wget http://ftp.br.debian.org/debian/pool/main/u/umbrello/umbrello_4.14.2-1_amd64.deb dpkg -i ./umbrello_4.14.2-1_amd64.deb

Wzorzec Fabryka abstrakcyjna i Metoda wytwórcza C++/Qt

Wzorzec Fabryka abstrakcyjna i Metoda wytwórcza C++/Qt

Zastosowanie Fabryka abstrakcyjna (ang. abstract factory) to kreacyjny wzorzec metody wytwórczej dostarcza abstrakcji do tworzenia obiektów nieokreślonych, ale powiązanych typów. Umożliwia także dziedziczącym klasom decydowanie jakiego typu ma to być obiekt. Jest on często używany wraz ze wzorce metody wytwórczej lub inaczej nazywanej metody fabrykującej […]

Wzorzec projektowy Singleton C++ / Qt

Wzorzec projektowy Singleton C++ / Qt

Zastosowanie

Kreacyjny wzorzec projektowy, charakteryzujący się jedną instancją danego obiektu oraz globalnym dostępem do funkcji getInstance(), dzięki czemu możemy uzyskać do niego dostęp praktycznie z każdego miejsca. Inną cechą charakterystyczną jest Lazy loading, czyli alokacja pamięci dla singletona występuje dopiero przy jego pierwszym wywołaniu (odwołaniu się do niego za pomocą funkcji getInstance()).

Singleton

Własności singletona

ZALETY

  • jest tworzony przy pierwszym wywołaniu,
  • jest niszczony po zakończeniu działania programu,
  • po utworzeniu istnieje tylko i wyłącznie jego jedna instancja,
  • programista nie uczestniczy w procesie wywołania konstruktora, który zwykle jest prywatny lub zabezpieczony (protected), po to aby nie tworzyć więcej instancji obiektu singletona.

WADY

  • Rozhermetyzowanie klas poprzez globalny dostęp,
  • Trudniejsza analiza aplikacji podczas testów,
  • Może powodować problemy podczas wykorzystania go w wielowątkowych procesach.
#include <QDebug>
#include <QString>

class Ustawienia
{
public:
    static Ustawienia & getSingleton()
    {
        static Ustawienia singleton; // lazy Loading
        return singleton;
    }

    void setStyle(const QString style)
    {
        this->style = style;
    }
    QString getStyle(){return style;}

private:
    QString style;
    Ustawienia(): style("Unknown"){}
    ~Ustawienia(){}

};

class Klient
{
public:
    Klient( )
    {
    Ustawienia::getSingleton().setStyle("Blue");
    }

    void whiteStyle()
    {
        Ustawienia::getSingleton().setStyle("White");
    }
};

void funkcjaGlobalStyle()
{
    qDebug() << Ustawienia::getSingleton().getStyle();
}

int main()
{
    funkcjaGlobalStyle();

    Klient klient;
    funkcjaGlobalStyle();

    klient.whiteStyle();
    funkcjaGlobalStyle();

    Ustawienia::getSingleton().setStyle("Red");
    funkcjaGlobalStyle();

    return 0;
}

Rezultat

"Unknown"
"Blue"
"White"
"Red"
Wzorzec Budowniczy C++/Qt

Wzorzec Budowniczy C++/Qt

Budowniczy Wzorzec Budowniczy to wzorzec kreacyjny zapewniający kontrolę nad procesem tworzenia klas. Jest on przydatny, gdy chcemy zastosować wiele różnych konstruktorów, zapewniając większą czytelność kodu. Elementy charakterystyczne W tym wzorcu możemy wyróżnić następujące elementy: Budowniczy – interfejs abstrakcyjny do tworzenia części składowych obiektu złożonego, w […]

Math Color Game

Math Color Game

I played Android game „Maths Color Game”. My score is: 23 https://play.google.com/store/apps/details?id=pl.artmetic.mathcolor

Generating random number using srand() and rand() Qt

Generating random number using srand() and rand() Qt

You can use random function from stdlib and fix time to maximize pseudo random operation in a short period of short time.

const int MainWindow::getNumber() const
{
qsrand( (unsigned)time(NULL) ^random());
return qrand() % max;
}

Using qsrand(QTime::currentTime().msec()) it can also be done, but in a short period of time the function will return the same value.

Bądź na bieżąco z Twoją branżą

Bądź na bieżąco z Twoją branżą

Chciałbyś na swoim urządzeniu mobilnym mieć dostęp do najnowszych wiadomości bez potrzeby oglądania polityków? Prowadzisz firmę działającą w jednym z 9 poniższych sektorów? Jesteś analitykiem rynku i potrzebujesz bieżących informacji 24 godziny na dobę? A może po prostu chciałbyś wiedzieć, co dzieje się w kraju […]