Postacie normalne w relacyjnej bazie danych

  • 1NF (pierwsza postać normalna) – dziedziny atrybutów muszą być elementarne (nierozkładalne)
  • 2NF (druga postać normalna) – musi zachodzić 1NF i każdy atrybut niebędący kluczem musi być funkcjonalnie zależny od wszystkich części klucza głównego
    ->czyli jeżeli klucz główny składa się z kilku atrybutów, każdy inny atrybut musi być zależny od kombinacji tych atrybutów
    ->inaczej mówiąc: atrybut nie będący kluczem nie może zależeć tylko od części klucza głównego
  • 3NF (trzecia postać normalna) – musi zachodzić 2NF i żaden atrybut niebędący kluczem nie może zależeć od czegoś innego niż klucz

Postacie te mają na celu pozbycie się rendudacji, wieloznaczności, anomalii i niespójności w relacyjnej bazie danych.

Zapytania i operacje w bazie danych

W skrócie opisuję poniżej, które występują:

  • DML (Data Manipulation Language):
    -INSERT
    -UPDATE
    -DELETE
  • DDL (Data Definition Language):
    -CREATE (table, database, index)
    -DROP (table, database, index)
    -ALTER (alter table add/drop/update column)
  • DCL (Data Control Language):
    -GRANT
    -REVOKE
    -DENY
  • DQL (Data Query Language)
    -SELECT

Nowy proces w terminalu i dalsza praca

Często zdarza się, że pracując w terminalu pod linux-em uruchamiając nowy proces poza terminalem chcemy wciąż mieć możliwość korzystania z linii poleceń terminala.

Jest to możliwe dzięki użyciu znaku specjalnego – ampersanda – ‘&’, na końcu komendy. Uruchamia się wtedy jakaś aplikacja już w nowym procesie i można dalej korzystać z terminala.

Przykład:
Komendą ‘ps’ wyświetlamy uruchomione procesy:

Załóżmy teraz, że chcemy otworzyć dowolny edytor tekstowy i dalej pracować w dotychczas otwartym oknie. Domyślnie nie jest to możliwe:

Jednak, gdy użyjemy znaku ampersanda:

Możemy wówczas pracować i w nowo otwartej aplikacji niezależnie z terminalem, gdyż utworzył się oddzielny proces, co jest pokazane na obrazku powyżej.

Przeglądarka internetowa Mozilla Firefox i ciekawe dodatki

Wszyscy korzystamy z jakiegoś typu przeglądarki internetowej:
-Internet Explorer (Edge od Microsoftu)
Opera
-Google Chrome(Chromium)
-Mozilla Firefox

Lub innej mniej popularnej.
Otóż korzystamy i często nie zdajemy sobie sprawy, że mamy możliwość włączenia jakiejś wtyczki napisanej przez programistów dla przeglądarki lub też zmiany nużącego nas domyślnego systemowego motywu.

Opiszę tutaj dodatki do przeglądarki Mozilla Firefox, ale z pewnością do innych przeglądarek na pewno znajdziemy coś w tym samym stylu tylko jako zamiennik z jakąś inną nazwą.

Bardzo fajny może okazać się motyw animowany matrix-a (oczywiście wiąże się to z drobnym dodatkowym obciążeniem procesora, ale na pewno niewielkim).
Są to przewijające się na czarnym tle ciągi znaków.

Jest to ciekawy dodatek, ale z pewnością większość zaciekawią następujące rozszerzenia:

Dark Reader (Tryb ciemny dla wszystkich stron internetowych. Nasze oczy nie męczą się tak przy pracy w ciemności.)

Ghostery ( Bloker reklam chroniący prywatność – już dość wielokrotnych męczących Nas reklam na stronach i utrudniających przeglądanie internetu.
Dodatkowo można zastosować pomijanie polityki prywatności i ciasteczek, które wielokrotnie informują Nas o swojej obecności na każdym serwisie)

Simple Translate lub Google Translate ( Tu chyba nie trzeba wiele wyjaśniać. Są to translatory tekstu od Google w formie szybko dostępnej. Czyli zamiast za każdym razem otwierać nową zakładkę i kopiować tekst do translatora możemy skorzystać z opcji tłumaczenia całej strony lub też zaznaczonego tekstu)

Aby to oczywiście wszystko ustawić wchodzimy do menu aplikacji (te trzy poziome kreski w prawym górnym rogu przeglądarki) i klikamy “Dodatki i motywy“( lub też skrót klawiszowy Ctrl+Shift+A)

Latex – spis treści z linkami do zawartości

Tak jak w tytule pokażę, jak utworzyć spis treści/menu składające się z głównych sekcji, podsekcji i podpodsekcji zawierające linki do zawartości tych (pod)sekcji.
Poniżej listing kodu latex-a (z komentarzami):

%typ dokumentu, rozmiar czcionki
\documentclass[11pt,a4paper]{article}

%język i kodowanie
\usepackage{polski}
\usepackage[utf8]{inputenc}

%stworzenie linków w menu (niewidocznych)
\usepackage[hidelinks]{hyperref}

%autor, dzisiejsza data i tytuł dokumentu
\author{Training Universe}
\date{\today}
\title{Spis treści z linkami do zawartości}

%początek dokumentu
\begin{document}
%wyświetlenie tytułu
\maketitle

%przejście do nowej strony
\newpage
%spis zawartości
\tableofcontents
\newpage


%sekcja 1 i jej etykieta
\section{Sekcja 1}
\label{sec:Sekcja 1}

%odpowiednio podsekcja sekcji 1
\subsection{Sekcja 1.1}
\label{subsec:Sekcja 1.1}

%podpodsekcja sekcji 1
\subsubsection{Sekcja 1.1.1}
\label{subsubsec:Sekcja 1.1.1}

%przykładowy tekst
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec commodo mauris vitae ligula mollis, vitae malesuada sem ultrices. Vivamus tristique dapibus lorem sed ultrices. Phasellus eu elit luctus, vulputate leo ut, tincidunt mauris. Sed sed tellus auctor, aliquam sem id, pulvinar lectus. Fusce fermentum nisi eu elit sagittis aliquam. Praesent et justo in mi vulputate pharetra. Nunc id massa a mauris lobortis efficitur. Quisque commodo, lacus a consectetur feugiat, orci sapien luctus turpis, ut finibus dui quam ut magna.

Maecenas efficitur, lacus eget luctus ultrices, lectus ipsum gravida mauris, vitae volutpat justo urna id urna. Sed nec ex feugiat, consequat libero in, commodo nunc. Curabitur dictum, eros sit amet scelerisque luctus, neque enim dignissim tortor, a scelerisque erat nisi sed mauris. Vestibulum efficitur aliquam mauris, sed malesuada risus aliquet sit amet. Morbi at mauris in sapien hendrerit aliquet a non ante. Mauris at fringilla dui. Etiam sollicitudin ipsum ut nisl congue, eget suscipit mi sagittis. Sed aliquet risus non justo vestibulum, eu varius lacus dapibus. Integer et pellentesque sapien.

Vestibulum id faucibus eros, vitae facilisis est. Ut ut ligula sit amet odio aliquam viverra sed vitae ex. Maecenas lobortis interdum elit, ac condimentum ipsum faucibus in. In hac habitasse platea dictumst. Nunc non enim sed tellus tincidunt suscipit vitae et nulla. Cras tincidunt erat id mi tincidunt, eu euismod orci venenatis. Etiam sit amet vulputate nunc. Nulla id lectus vitae justo finibus volutpat. Aenean consequat sapien a arcu interdum luctus.

Sed malesuada ligula ut massa elementum, sit amet consectetur mi vestibulum. Mauris fermentum laoreet dui sed iaculis. Morbi luctus libero ac sem varius ultrices. Donec interdum auctor nulla, ac bibendum enim feugiat nec. Sed id aliquam ex, et commodo lectus. Curabitur elementum, enim vel congue auctor, purus massa commodo erat, nec scelerisque risus dui vitae sapien. Nulla facilisi. Sed id felis tempor, venenatis justo nec, viverra mi. Nunc sollicitudin, lacus in pulvinar finibus, nunc ligula viverra nisl, et dictum orci felis eu nunc. Quisque sed massa sit amet purus venenatis dignissim.

Praesent ac aliquam leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam eget iaculis enim. Duis varius lectus sed eleifend fringilla. Nullam viverra est sed tristique hendrerit. Suspendisse pellentesque, enim id mattis aliquam, elit orci elementum nulla, sed interdum elit neque id felis. Integer consectetur, ex a porttitor egestas, tortor sem pharetra neque, nec efficitur turpis urna a tellus. Donec pulvinar, erat at rhoncus dictum, sem purus volutpat velit, id fermentum felis tortor eu ligula. Sed in ante nibh. Fusce eleifend dapibus lectus. Sed non enim id enim ultricies elementum. Sed convallis bibendum erat vitae vulputate.

\newpage


\subsubsection{Sekcja 1.1.2}
\label{subsubsec:Sekcja 1.1.2}

\newpage

\subsubsection{Sekcja 1.1.3}
\label{subsubsec:Sekcja 1.1.3}

\newpage

\section{Sekcja 2}
\label{sec:Sekcja 2}

\subsection{Sekcja 2.1}
\label{subsec:Sekcja 2.1}

\newpage

\subsection{Sekcja 2.2}
\label{subsec:Sekcja 2.2}

%koniec dokumentu
\end{document}

Ogółem wszystko sprowadza się do użycia paczki do linków, wyświetlenia tabeli zawartości i utworzenia odpowiednich sekcji dokumentu.

Poniżej link do wygenerowanego dokumentu w postaci pdf:
https://traininguniverse.net/wp-content/uploads/2023/07/menu-content.pdf

Aktualizacja Snap Store pod Ubuntu

Jeżeli chcemy aktualizować Snap Store pod którąś z dystrybucji Ubuntu możemy wtedy napotkać błąd, gdyż jest on w ciągłym użyciu.
Na szczęście istnieje sposób aby to obejść.


Powinniśmy otworzyć terminal i wpisać:

sudo snap refresh snap-store

Umożliwi Nam to uzyskanie ‘pid‘, czy id tego procesu.


Następnie kończymy ten proces komendą:

kill <pid>

I ponownie wykonujemy komendę:

sudo snap refresh snap-store

W ten sposób Snap Store powinien zostać zaktualizowany.

Zdalna praca i dostęp

Praca zdalna. Po co to?
Jeżeli chcesz połączyć się z jakimś innym komputerem i przejąć nad nim kontrolę dostępu (oczywiście tylko już pod uruchomioną konkretną dystrybucją systemu operacyjnego (bez restartów itp.)) w celu pomocy dla kogoś wykonania jakiejś czynności (tak działa usługa HelpDesk którą oferują poszczególne firmy informatyczne)/uzyskania tej pomocy, lub też zademonstrowania czegoś na odległość. To właśnie w takim celu służą narzędzia/programy do pracy zdalnej.

Najpopularniejszy jest obecnie TeamViewer. Podaje link:
https://www.teamviewer.com/pl/

Podam też jedną z alternatyw, czyli AnyDesk, link poniżej:
https://anydesk.com/pl

Oba są wieloplatformowe, czyli dostępne m.in. na:
-Windows
-Linux
-macOS
-ChromeOS
-Raspberry Pi
-Android
-iOS

Jeżeli chodzi o AnyDesk pod linuksem to nie ma w ustawieniach opcji wyłączenia autostartu z systemem. Z pomocą przychodzi komenda:

systemctl disable anydesk.service

Natomiast w programie TeamViewer tę opcję znajdziemy. Piszę o tym gdyż nie każdy może sobie życzyć uruchomienia aplikacji pracy zdalnej przy każdym starcie systemu.

AnyDesk umożliwia też nagrywanie, czego nie ma w TeamViewer (przypuszczam, że nagrywanie w AnyDesk jest widoczne dla obu stron).
Jeżeli natomiast chcielibyśmy zrobić to anonimowo lub też przy pomocy TeamViewer-a to przydatny jest program OBS Studio. Polecam serdecznie.
Jest on dostępny na głównie znane systemy (Windows, Linux, macOS). Możemy wtedy anonimowo nagrywać kogoś, lub w innym celu.
Przydatny jest do nagrywania zawartości całego pulpitu, poszczególnych okien (obrazu i dźwięku). Przechwytuje zawartość z peryferiów, np. kamery, mikrofonu.
Jest on darmowym, o otwartym kodzie źródłowym, programem, o naprawdę sporych możliwościach, jak i bardzo intuicyjnym w obsłudze. Link do projektu:
https://obsproject.com/

Problem z zalogowaniem się na konto MySQL

Gdy nie możemy zalogować się na Nasze konto w bazie danych mysql, np. :

sudo mysql -u root -p

Powyższa komenda nie działa – logowanie jest nieskuteczne.


Polecam usunąć wszystko co zainstalowaliśmy:

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-8 mysql-client-core-8

sudo rm -rf /etc/mysql /var/lib/mysql

sudo apt-get autoremove

sudo apt-get autoclean

 

Zainstalować od nowa:

sudo apt-get install mysql-server mysql-client mysql-common mysql-server-core-8 mysql-client-core-8

 

Stworzyć nowego użytkownika:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

 

I nadać wszystkie przywileje dla utworzonego użytkownika:

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

 

Powinno teraz zadziałać logowanie:

mysql -h host -u user -p

 

 

Przydatne polecenia:

CREATE DATABASE name; #stworzenie nowej bazy danych
USE name; #wybór istniejącej bazy danych
SELECT DATABASE(); #podgląd w jakiej bazie danych aktualnie się znajdujemy

ChatGPT w PyCharm

Poniżej krótki film pokazujący jak dodać sztuczną inteligencję, czyli cieszący się dużą popularnością ChatGPT.
Jest to coś w rodzaju czatu, ale tym razem nie z drugim człowiekiem, a z wirtualną maszyną.
Zadajesz pytania a komputer odpowiada na nurtujące Cię pytania, stara się rozwiązać Twoje problemy (tu programistyczne), a podobno potrafi nawet napisać esej.
Zapamiętuje zadane w historii czatu pytania i adekwatnie do treści odpowiada.