Ubuntu 20.04 i instalacja RStudio

W nowszych dystrybucjach linux-a może istnieć problem zainstalowania RStudio, które nie jest jeszcze na chwilę obecną wydane pod to konkretne wydanie Ubuntu (problem z zależnościami bibliotek).

Rozwiązanie problemu:
Uruchomić w terminalu komendę:

sudo aptitude install clang

Następnie otrzymamy mniej więcej coś takiego:

Następujące NOWE pakiety zostaną zainstalowane:   
  clang clang-10{a} lib32gcc-s1{a} lib32stdc++6{a} libc6-i386{ab} libclang-common-10-dev{a} libclang-cpp10{a} 
  libobjc-9-dev{a} libobjc4{a} libomp-10-dev{a} libomp5-10{a} libpfm4{a} libz3-4{a} libz3-dev{a} llvm-10{a} llvm-10-dev{a} 
  llvm-10-runtime{a} llvm-10-tools{a} 
0 pakietów aktualizowanych, 18 instalowanych, 0 do usunięcia i 0 nieaktualizowanych.
Do pobrania 57,8 MB archiwów. Zajęte po rozpakowaniu: 377 MB.
Następujące pakiety mają niespełnione zależności:
 libc6-i386 : Wymaga: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.3 is installed
Następujące działania rozwiążą problemy z zależnościami:

     Zatrzymanie bieżących wersji następujących pakietów:
1)     clang [niezainstalowany]                          
2)     clang-10 [niezainstalowany]                       
3)     lib32gcc-s1 [niezainstalowany]                    
4)     lib32stdc++6 [niezainstalowany]                   
5)     libc6-i386 [niezainstalowany]                     
6)     libclang-common-10-dev [niezainstalowany]         



Zaakceptować rozwiązanie? [Y/n/q/?] n

Wybieramy “n”, że się nie zgadzamy.
Następnie, gdy pojawi się:

Następujące działania rozwiążą problemy z zależnościami:

     Usunięcie następujących pakietów:                                      
1)     libc-dev-bin [2.31-0ubuntu9.3 (now)]                                 

     Instalacja następujących pakietów:                                     
2)     libc-dev-bin:i386 [2.31-0ubuntu9.2 (focal-updates)]                  

     Cofnięcie następujących pakietów do wcześniejszych wersji:             
3)     libc6 [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)]     
4)     libc6:i386 [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)]
5)     libc6-dbg [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)] 
6)     libc6-dev [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)] 



Zaakceptować rozwiązanie? [Y/n/q/?] Y

Akceptujemy wyświetlone rozwiązanie poprzez “Y”. W następnym kroku też kontynuujemy i powinna zacząć się wybrana konfiguracja.
Po zakończeniu instalujemy RStudio komendą:

sudo gdebi rstudio-[downloaded_version].deb

Java | dostęp do klas

Ćwiczenie.
Napisz klasę ConnectionManager, która będzie zarządzać tablicą obiektów Connection (tablica ma mieć stałą liczbę elementów). Programista-klient nie ma mieć możliwości jawnego tworzenia obiektów klasy Connection, polegając jedynie na statycznej metodzie z klasy ConnectionManager. Kiedy klasie ConnectionManager skończą się obiekty Connection, metoda ta powinna zwracać referencję pustą. Prztestuj działanie klas w metodzie main().

Rozwiązanie:

package net.traininguniverse.access;

class Connection {

    private Connection() {
    }

    public static Connection makeConnection() {
        return new Connection();
    }
}

public class ConnectionManager {

    static int count = 0;
    static final int size = 2;

    static Connection makeConnection() {
        count++;
        if (count <= size)
            return Connection.makeConnection();
        else
            return null;
    }

    public static void main(String[] args) {
        Connection[] connections = new Connection[size];

        connections[0] = makeConnection();
        connections[1] = makeConnection();
        System.out.println(connections[1]);
        System.out.println(makeConnection());
    }
}

Java | pola chronione

Ćwiczenie:
Utwórz klasę z polami chronionymi i drugą (w tym samym pliku), która posiada metodę manipulującą danymi chronionymi z pierwszej klasy.

 

Rozwiązanie:

package net.traininguniverse.main;

class Animal{
    protected String name;
    protected int age;
}

public class Main {

    void setName(Animal animal, String name){
        animal.name = name;
    }
    String getName(Animal animal){
        return animal.name;
    }
    void setAge(Animal animal, int age){
        animal.age = age;
    }
    int getAge(Animal animal){
        return animal.age;
    }

    public static void main(String[] args){
        Animal animal = new Animal();
        Main main = new Main();

        main.setName(animal,"Reksio");
        main.setAge(animal,5);

        String name = main.getName(animal);
        int age = main.getAge(animal);

        System.out.println("Zwierzak nazywa się: " + name + " oraz ma " + age + " lat");

    }
}

Uwaga!
Tylko jedna klasa może być publiczna, inaczej kompilator wyrzuci błąd, że muszą być w oddzielnych plikach.

Java | dostęp do metod chronionych

Ćwiczenie.
Wykaż, że metody chronione podlegają dostępowi pakietowemu, ale nie są metodami publicznymi.

Rozwiązanie:
Tworzymy dwie klasy: Animal i Owner w dwóch oddzielnych pakietach.
Odpowiednie klasy są dostępne poniżej:

Animal.java:

package net.traininguniverse.hiddden;

public class Animal {

    protected boolean isHungry(boolean feed) {
        if (feed)
            return false;
        else
            return true;
    }

    public boolean showIsHungry(boolean feed) {
        return isHungry(feed);
    }
}

 

 

Owner.java:

package net.traininguniverse.main;

import net.traininguniverse.hiddden.Animal;


public class Owner {

    public static void main(String[] args) {

        Animal animal = new Animal();
        //animal.isHungry(true);
        //blad kompilatora (protected access), wiec nie jest publiczna
        System.out.println(animal.showIsHungry(true));
        //wyswietla false, czyli podlega dostepowi pakietowemu
    }
}

 

Java i własna biblioteka narzędziowa

Środowisko:
-Java 11
-IntelliJ IDEA 2021.2.1
-Linux

Pokażę pokrótce jak można w powyższym środowisku stworzyć własne biblioteki pomocnicze oraz je potem wykorzystać.
Ma to na celu zredukowanie lub wyeliminowanie powtarzania kodu (można też w ten sposób korzystać z czyichś gotowych bibliotek w swoim kodzie).

Kolejne kroki:
1. Tworzę nowy projekt z biblioteką, którą chcę wykorzystać, np. w innym projekcie.
2. Eksportuję napisaną bibliotekę do jar-a.
3. Tworzę nowy projekt, w którym wykorzystam posiadaną już bibliotekę.
4. Importuję jar-a do nowego projektu.

Poniżej krótki film instruktażowy:

GitHub – personal access token

Zazwyczaj do operacji związanej z repozytoriami na Githubie korzystało się z nazwy użytkownika i hasła.
Teraz zamiast hasła powinno używać się osobistego tokenu dostępowego.
Ma to na celu m.in. poprawę bezpieczeństwa.
Do określonego tokenu przydzielane są wybrane określone przez użytkownika uprawnienia.
Natomiast po roku nie używania tokenu zostaje on automatycznie usunięty.

 

Poniżej link do strony, jak utworzyć nowy token:
https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token

 

Warto już teraz dokonać zmiany, ponieważ niebawem uwierzytelnianie za pomocą hasła wygaśnie i nie będzie możliwe.

Heroku deploy – z przykładem aplikacji

Przedstawię pokrótce jak można wrzucić utworzoną aplikację na serwery Heroku.

 

Tutaj przykład utworzonego prostego “Hello World” we frameworku Javy – Springu:
https://github.com/traininguniverse/HerokuDeployExample

 

Ściągamy repo i następnie je otwieramy w terminalu:

cd HerokuDeploExample-master

 

Żeby mieć zastosowanie do deploy-owania nowej własnej aplikacji usuwamy ukryty folder “.git”.

 

I zaczynamy tak jakbyśmy mieli tworzoną aplikację od nowa.
Najpierw inicjalizujemy puste repozytorium:

git init

 

Dodajemy na podstawie danych z Heroku ustawienia lokalne git:

git config user.email “imie.nazwisko@domena.pl”
git config user.name “Imie Nazwisko”

 

Dodajemy pliki i zatwierdzamy:

git add .
git commit -m “Add app”

 

Tworzymy aplikacje na Heroku – podajemy nazwę:

heroku create app-name

 

Sprawdzamy czy zdalne repo jest dobrze ustawione:

git remote -v

Jeżeli istnieje już utworzona aplikacja (np. poprzez panel na stronie internetowej), to wywołujemy komendę:
heroku git:remote -a app-name

 

Wrzucamy repozytorium na serwer:

git push heroku master

Automatycznie ta przykładowa aplikacja z github-a zostaje już uruchomiona.

 

Otwieramy aplikację komendą:

heroku open

W przeglądarce dodajemy jeszcze na końcu w pasku adresu napis “/hello”.
Powinno ukazać Nam się tekst “Hello World”.

Nie można połączyć się z usługami sieci Web – drukarki HP

Niektórym osobom, które mają wyszczególnione drukarki firmy Hewlett Packard z usługą ePrint, czyli drukowaniem, np. za pomocą wysyłania wiadomości email do drukarki z Internetu, może się pojawić problem z połączeniem się z usługami sieci Web. A co za tym idzie nie wydrukujemy nic z Internetu.

Od listopada 2020 certyfikat poszczególnych modeli mógł wygasnąć. Czy Twój model też się do nich zalicza, można sprawdzić na oficjalnej stronie HP:
https://support.hp.com/pl-pl/document/c05256366

Na nic więc próby resetowania ustawień drukarki i wielokrotne ponowne próby łączenia się z usługą. Niestety starsze modele drukarek nie akceptują aktualizacji firmware, czyli oprogramowania sprzętowego bezpośrednio na samym urządzeniu.

Na szczęście pozostałe usługi drukowania poprzez Ethernet, sieć bezprzewodową lub też USB wciąż pozostają aktywne.

Spring Tool Suite/JDK Update

Witam.

Po aktualizacji Zintegrowanego Środowiska Programistycznego STS z wersji 4.6-7 do 4.10, można natknąć się na problem, że przy wersji Javy 8 się nie uruchomi (wymagana co najmniej wersja 11).
Lub po prostu chcemy migrować do nowszej wersji Javy.

Co powinniśmy wtedy zrobić?
Przy systemie linuksowym – Ubuntu najpierw dodać repozytorium do systemu:

sudo add-apt-repository ppa:openjdk-r/ppa

Wykonać kolejne komendy w celu instalacji JDK:
sudo apt-get update
sudo apt install openjdk-11-jdk

Następnie zmienić obecną wersję na nową:
sudo update-alternatives –config javac

to samo zrobić też z JRE, czyli:
sudo update-alternatives –config java

Na koniec sprawdzamy, czy mamy ustawione wybrane przez nas wersje Javy:
java –version
javac –version

Jeszcze została konfiguracja JRE w STS:
Przechodzimy do Window->Preferences->Java->Installed JREs i dodajemy nowo zainstalowaną.

Dostępna tylko jedna mała rozdzielczość Ubuntu Nvidia

Witam.
Przedstawię pokrótce jak można poradzić sobie z tym problemem.

Skorzystamy przy szukaniu rozwiązania z programu xrandr.
Jest to prosty interfejs linii poleceń do zmian rozszerzeń ekranu.
Wywołajmy polecenie z linii komend terminala:

xrandr

Ujrzymy wówczas możliwość wyboru dostępnych rozdzielczości z konkretnego przedziału, lub po prostu tylko jedną możliwą.
Następnie wpiszmy:
xrandr –listproviders

Dostarczy Nam to listę dostawców do obsługi ekranu/grafiki.
Jeżeli “Providers number” jest równe 0, to prawdopodobnie brak sterowników do grafiki.

W celu dalszej solucji, dodajemy do repozytorium oprogramowania pakiety źródłowe, w celu przystosowania ich do użycia przez APT (systemu zarządzania pakietami):

sudo add-apt-repository ppa:graphics-drivers/ppa

Ze strony:
https://www.nvidia.com/en-us/drivers/unix/
możemy sprawdzić najnowszą dostępną wersję do Naszej dystrybucji.

Następnie instalujemy konkretny sterownik Nvidia:

sudo apt install nvidia-driver-[latest version number]

Jeszcze tylko komenda:
reboot

i po restarcie systemu powinno już wszystko być w porządku.