Minecraft a programowanie? Architektura klient – serwer.

Minecraft jest grą, która mocno przyczyniła się do rozwoju gatunku „gier piaskownic” (ang. sandbox). Jej ogromna popularność spowodowała powstanie dużej strefy moderskiej, skupionej na tworzeniu kolejnych elementów, już i tak bardzo rozbudowanego świata.

Moimi ulubionymi modyfikacjami okazały się dodatki przemysłowe, dodające kolejne stopnie przerabiania surowców oraz maszyny ułatwiające ich przetwarzanie. Każdy, kto chociaż trochę zainteresuje się uprzemysłowieniem produkcji zawsze dobrnie do momentu, w którym ręczne operowanie całą fabryką straci sens, ponieważ nie jest to już takie efektywne jak to, czego się oczekiwało. W takim przypadku z pomocą przychodzą nam komputery.

W tym poradniku przedstawię rozwiązanie architektury klient – serwer na jednej z dwóch najpopularniejszych modyfikacji dodającej maszyny liczące. Będzie to ComputerCraft. W kolejnych poradnikach skupię się na drugiej modyfikacji tego typu – OpenComputers. Ten poradnik skierowany jest do osób, które miały już styczność z językiem Lua oraz tą modyfikacją.

Czytaj dalej →

Język Go – czy warto? Wprowadzenie.

Witam! Nigdy jeszcze nie pisałem żadnego bloga, więc proszę o wyrozumiałość.

Zajmę się tematem języka Go. Czym on jest, dlaczego warto się go nauczyć, jak stworzyć w nim prosty program „Hello World”, jak stworzyć sobie środowisko do pracy z nim i zamieszczę parę skryptów do zautomatyzowania sobie pracy.

Czytaj dalej →

Qt – Pierwszy projekt – Fake blue screen

Okej, wstęp już za nami, wypadałoby zrobić jakiś mały programik. W tym poradniku pokażę, jak napisać program, który bardzo przypomina blue screena. Zastosowanie? Można wkręcać znajomych/nauczycieli, u mnie w szkole 4/4 informatyków się nabrało, w tym poradniku wykorzystamy część wiedzy z poprzedniego poradnika, wykorzystamy Qt Quick Controls 2, Qt 5.7.

Dobra, jak się za to zabrać? Zróbmy niebieski ekran, w tym celu do ApplicationWindow podpinamy właściwość, jaką jest kolor i ustawiamy na „blue”, teraz trzeba zrobić, aby nasza aplikacja nie wyglądała jak aplikacja, w tym celu dodajemy właściwość flags i wartość Qt.FramelessWindowHint, kod powinien wyglądać tak: Czytaj dalej →

Synchronizacja wątków w C# i C++ (Spinlock)

Wielowątkowość, synchronizacja… Ale po co to komu?

Przytoczę pewne bardzo obrazowe porównanie. Wyobraź sobie, że jesteś w restauracji. Podnosisz menu, wybierasz potrawę i czekasz na kelnera. Widzisz, że tymczasowo obsługuje innego klienta. Mija kilka, kilkanaście minut, a kelner wciąż stoi przy stoliku innego klienta, obsługuje tylko jego. Dopiero, gdy klient płaci i wychodzi z restauracji, kelner podchodzi do Ciebie i zaczyna cię obsługiwać. W tym czasie przychodzi inny klient, ale kelner jest zajęty tylko tobą. Mniej więcej tak działa aplikacja jednowątkowa (nasz kelner). W oczywisty sposób jest to nieefektywne.

Wtedy niczym superbohater, przybywa wielowątkowość.
Czytaj dalej →

Zabezpieczanie baz danych

Ochrona przed nieuprawnionym dostępem do bazy danych

Baza danych jest jednym z najcenniejszych zbiorów danych o jaki powinni dbać deweloperzy. Może ona zawierać dane osobowe (imię, nazwisko, adres), dane płatnicze (nr karty, kod ccv2) lub  dane powiązane z logowaniem (hashe haseł, salty).

Pierwszym błędem jaki może popełnić programista to naiwność. Czasami poszukując rozwiązań problemów możemy natrafić na posty typu: „podaj dane dostępowe to pomogę”. Nigdy nie ufajmy takim ludziom. Dane dostępowe do baz danych powinniśmy podawać tylko zaufanym developerom pracującym z nami, ale też nie podajmy danych dostępowym każdemu deweloperowi. Dwie lub trzy osoby wystarczą (powinny to być osoby zajmujące się administracją bazy danych lub backendem, każdy użytkownik powinien mieć indywidualny login. Używanie root do wszystkiego jest ogromną dziurą bezpieczeństwa). Czytaj dalej →

Godot Engine Roguelike – Wprowadzenie

Dzień dobry.

W pierwszej części spróbuję Cię przekonać, dlaczego Godot świetnie się nadaje dla niezależnych developerów gier lub po prostu zabawy w domu.

Na początek chyba najważniejsza rzecz, Godot jest open source na licencji MIT, co daje nam możliwość robienia co nam się podoba, wraz z modyfikacją kodu oraz pisania własnych pluginów. Godot dopiero się rozwija, co nie znaczy że jest daleko w tyle za Unity, a nawet z poziomu 2D jest na tym samym poziomie. Jedynie 3D Godot nadrabia, pisząc od nowa cały system trójwymiaru i cieni.

Czytaj dalej →

Rozwijane menu mobilne w czystym CSSie

Witajcie! W tym poradniku pokażę wam w jaki sposób przy użyciu czystego CSSa zrobić rozwijane menu, będące jednym z najpospolitszych rozwiązań nawigacji na urządzeniach mobilnych.

Zaprezentowany sposób nada się także do podobnych zastosowań, jak chociażby znany z for internetowych [spoiler]

Zasada działania

Cała filozofia działania opiera się na input[type="checkbox"] wraz z label’em. Checkbox chowamy, label stylujemy na przycisk lub odnośnik, a w CSSie pokazujemy i chowamy zawartość menu przy użyciu pseudoklasy :checked oraz selektora rodzeństwa ~.

Czytaj dalej →

Qt – Wprowadzenie

Qt – zestaw przenośnych bibliotek i narzędzi programistycznych dedykowanych dla języków C++, QML i Java. Ich podstawowym składnikiem są klasy służące do budowy graficznego interfejsu programów komputerowych, począwszy od wersji 4.0 Qt zawiera też narzędzia do tworzenia programów konsolowych i serwerów. – Wikipedia

Może zacznę od motywacji, pisząc w C++ największym problemem jest multipletowość, niby jest, ale w praktyce trzeba się natrudzić żeby przepisać średnio zaawansowaną aplikacje z np. windowsa na linuksa, z pomocą przychodzi Qt, gdzie mamy gotową obsługę sieci, baz danych, zapytań, obsługi wielu wątków, obsługę jsona, xmla i wielu innych bardzo przydatnych pierdół. Przekonany? Czytaj dalej →