Category Archives: Υπολογιστές – Πληροφορική

Άρθρα σχετικά με υπολογιστές και πληροφορική

Προσθήκη εκτυπωτή HP με δυνατότητα σύνδεσης Wi-Fi (Δοκιμασμένο σε Lubuntu 18.04LTS)

Στην αδερφή μου είχα αγοράσει έναν HP Deskjet 3636, οποίος δύναται να συνδεθεί σε Wi-Fi δίκτυο και να λειτουργεί σαν δικτυακός εκτυπωτής. Λόγο περιορισμών χώρου θέλει να μπορεί να τον μετακινήσει σε άλλο σημείο αρκετά μακριά από το laptop της, έτσι μέσω wi-fi αποτελεί η Ιδανική λύση γι αυτό το πρόβλημα.

Για τον οδηγό θα πρέπει να έχουμε εγκαταστήσει τα ακόλουθα:

  • hplip
  • hplip-gui

Τα πακέτα είναι διαθέσιμα από τα αποθετήρια εκτός εάν επιθυμείτε μεταγενέστερες εκδόσεις αυτών που είναι διαθέσιμες από τον ιστότοπο της HP. Στην περίπτωσή τα πακέτα τα οποία είναι διαθέσιμα μέσω αποθετηρίων μου έκαναν τη δουλειά μου και τα εγκατέστησα έτσι:

sudo apt install hplip hplip-gui

Επιπλέων, να τον ρυθμίσω για αρχή έπρεπε να συνδέσω των εκτυπωτή μέσω USB και να τον προσθέσω σαν εκτυπωτή USB. Λόγο ότι στην περίπτωσή μου ήταν το υπάρχων setup αυτό δεν καλύπτετε από τον οδηγό αυτό.

Χονδρικά τα βήματα είναι τα εξής:

  1. Σύνδεση Εκτυπωτή μέσω USB.
  2. (Εάν δεν έχει γίνει) Προσθήκη του USB εκτυπωτή.
  3. Ρύθμιση εκτυπωτή να συνδέετε στο wi-fi του router. (Δεν δοκίμασα να κάνω τον εκτυπωτή hotspot.)
  4. Προσθήκη του εκτυπωτη σαν δικτυακό.

Εφόσον έχετε κάνει τα παραπάνω ανοίγουμε το hplip gui και επιλέγουμε Wireless/wifi setup using USB`:
Επιλογή "Wireless/wifi setup using USB

Μετά επιλέγουμε το δίκτυο στο οποίο θέλουμε να συνδεθεί ο εκτυπωτής μας και πατάμε Next:
Επιλογή δικτύου wi-fi

Και ορίζουμε το password, εφόσον το κάνουμε πατάμε connect. Σε περίπτωση λανθασμένου κωδικού πατάμε back.
Προσθήκη Password συνδεσης στο wi-fi

Εφόσον έγινε αυτό μετά πατάμε Finish η οποία θα σας εμφανίσει την παρακάτω οθόνη:
Πληροφορίες προσθήκη εκτυπωτή

Από την οθόνη αυτή σημειώνουμε:

  • Τη διεύθυνση ip (στην περίπτωσή μου είναι η 192.168.2.8)
  • Την εντολή εγκατάστασης (στην περίπτωσή μου η εντολή είναι η hp-setup 192.168.2.8).

Έτσι έδωσα την εντολή αυτήν σε μια κονσόλα τερματικού και απλά ήταν μια next->next υπόθεση όπως δείχνουν οι εικόνες:

Προσθήκη του δικτυακού εκτυπωτή

Προσθήκη δικτυακού εκτυπωτή βήμα 2

Τα 2 παραπάνω βήματα μπορούν να εκτελεστούν σε οποιοδήποτε Η/Υ που τρέχει GNU/Linux στον οποίο θέλετε να προσθέσετε την επιλογή εκτύπωσης μέσω του εκτυπωτή που μόλις προσθέσατε στο δίκτυο wi-fi. Αρκεί ο εκτυπωτής να είναι αναμμένος και να υπάρχει δικτυακή πρόσβαση σε αυτόν (να είναι συνδεδεμένοι στο ίδιο δίκτυο).

Εγκατάσταση έκδοσης minitube 3.2 σε Ubuntu 18.04

Σε προηγούμενο άρθρο μου είχα αναφέρει πως να εγκαταστήσετε μια νεότερη έκδοση minitube στο Ubuntu 18.04 όμως η μέθοδος αυτή με την έκδοση 3.2 δεν δουλεύει λόγο ότι χρειάζετε νεότερη έκδοση QT.

Παρόλα αυτά με υπάρχουν ppa τα οποία σας επιτρέπουν να βάλετε νεότερες εκδόσεις του minitube. Tα βήματα συνοπτιοκά είναι:

  1. Εγκατάσταση νεότερης έκδοσης libmpv (>=0.29.0)
  2. Εγκατάσταση νεότερης εκδοσης QT (>=5.10)
  3. Εγκατάσταση minitube

Τα παραπάνω βήματα θα πρέπει να γίνουν με την σειρά που αναφέρθηκαν, ειδάλλως δεν θα εγκατασταθεί το minitube.

Βήμα1: Εγκατάσταση νεότερης έκδοσης mpv

sudo add-apt-repository ppa:mc3man/bionic-media
sudo apt update
sudo apt install libmpv1

Βημα2: Eγκατάσταση νεότερης έκδοσης Qt

Τρέξτε τις παρακάτω εντολές:

sudo add-apt-repository ppa:beineri/opt-qt-5.12.0-bionic
sudo apt -y install qt512-meta-minimal
source /opt/qt512/bin/qt512-env.sh
echo "source /opt/qt512/bin/qt512-env.sh" >> ~/.bashrc

Βήμα 3: Εγκατάσταση minitube


sudo apt purge minitube //Αφαίρεση παλαιάς έκδοσης
wget https://flavio.tordini.org/files/minitube/minitube.deb
sudo dpkg -i ./minitube.deb

Conditional Formatting και Φιλτράρισμα τιμών σε Speadsheets στο LibreOffice Calc

Στην εργασία μου μερικές φορές για να δείξουμε πως θα παίζει ένας αλγόριθμος αξιοποιούμε το google docs spreasdheets. Ένα ωραίο feature αυτού είναι το conditional formatting, δηλαδή ένας τρόπος να ορίζω ανάγωγα με την τιμή του κελιού, το background χρώμα του αυτού. Έτσι σαν υπέρμαχος του ελεύθερου λογισμικού, ήθελα να δω πως είναι εφικτό σε libreoffice που διανέμονται με GNU/Linux από την ημέρα που το εγκαθιστάς στο pc σου και πλέον παίρνει μια ανάσα (Shameless ad).

Έτσι σαν σενάριο χρήσης έχουμε το εξής, κρατάμε μια λίστα με anime που έχουμε δει σε ένα spreasheet (Ι know, I know, ξέρω ότι υπάρχει και το myanimelist αλλά τώρα κάνουμε ένα demonstration του feature στο libre office). ‘Εχουμε 2 στήλες: την στήλη Α που έχει τον τίτλο και την στήλη Β που κρατάμε την τιμή ΝΑΙ η ΟΧΙ αναλόγως εάν το έχουμε δει η όχι. Το φύλλο μας είναι αυτό που δείχνει η κάτωθι εικόνα:
Το λογιστικό μας φύλο προ επεξεργασίας

Όπως βλέπετε η πρώτη γραμμή έχει μια μορφοποίηση την οποία δεν θέλουμε να την πειράξουμε. Η στήλη η οποία θέλουμε να πειράξουμε είναι Β η οποία καταγράφει εάν έχουμε δει το ανιμέ που είναι στην ίδια γραμμή ή όχι στην στήλη A. Η τιμή η οποία υποδεικνύει ότι το έχουμε δει είναι η λέξη YES και το κελί της τιμής αυτής θα έχει πράσινο χρώμα ενώ η τιμή που υποδεικνύει ότι δεν το έχουμε δει είναι η λέξη NO και θα έχει κόκκινο χρώμα.

Για να πετύχουμε το formatting που έχουμε ακολουθούμε τα παρακάτω βήματα:

  1. Επιλέγουμε Μορφή->Μορφοποίηση Υπό όρους -> Συνθήκη:
    Μενού επιλογής conditina formatting
  2. Στο παράθυρο που μας άνοιξε επιλέγουμε ορίζουμε σαν περιοχή B:B;B1 όπως βλέπετε στην παρακάτω εικόνα:Επιλογή Κελιών Προς ΜορφοποίησηΜε την επιλογή αυτή ουσιαστικά λέμε επέλεξε την στήλη Β πλην του κελιού Β1.
  3. Εφόσον επιλέξαμε το εύρος θέλουμε να ορίσουμε την μορφοποίηση για το κελί όταν η τιμή είναι YES. Στη δική μας περίπτωση θέλουμε ένα πράσινο Background. Έτσι για να το κάνουμε αυτό στον Όρος 1 ορίζουμε όπως είναι η εικόνα:

    Όπως βλέπετε ορίσαμε την τιμή του κελιού ίση με «YES» τα « αξιοποιούνται όταν έχουμε λεκτικής μορφής τιμες. Ακόμη αξιοποιήσαμε την τεχνοτροπία good που είναι μια προεπιλεγμένη που μας δίνει έτοιμη το libreoffice. Ακόμη μην σας παραξενεύει ότι έχει
    «ΝΟ» στο πεδίο Εφαρμογή τεχνοτροπίας είναι απλά απλά μια ενδεικτική τιμή για το πως θα εμφανίζετε.
  4. Ομοίως επιλέγουμε την default τεχνοτροπία bad και για την τιμή ΝΟ:
  5. Και μετά επιλέγουμε το κουμπί «Εντάξει»

Το αποτέλεσμα είναι το ακόλουθο:

Όπως βλέπετε υπάρχει οπτικός διαχωρισμός μεταξύ όσον anime έχω δει και δεν έχω δει.

Πλέον όμως πέρα από το να βλέπω με μια ματιά ποια anime έχω δει και ποιά όχι θέλω να μπορώ να τα φιλτράρω έτσι στις διακοπές μου να μπορώ να βλέπω ποια έχω δει έτσι να κανονίσω να τα δω. Για να δημιουργήσουμε ένα φίλτρο επιλέγουμε μια στήλη και κάνουμε κλικ στο κουμπί που είναι στο πάνελ των εικονιδίων όπως βλέπετε στην παρακάτω εικόνα:

Μετά στο παράθυρο που μας ανοίγει επιλέγουμε «Ναι»:

Πλέον στη στήλη θα εμφανίζετε ένα κουμπί με βελάκι κάνοντας κλικ σε αυτό θα μπορείτε να δείτε τις διακριτές τιμές:

Για την δική μας περίπτωση θέλουμε να φιλτράρουμε τις τιμές NO έτσι θα πρέπει να ακολουθήσουμε τα παρακάτω βήματα:

  1. Αποεπιλέγουμε το checkbox που είναι εκεί που λέει Όλα:
  2. Αναζητάμε την τιμή NO:
  3. Ελέγχουμε να είναι επιλεγμένη η τιμή NO και μετά Εντάξει. Εάν δεν είναι την επιλέγουμε εμείς.

Έτσι θα μας εμφανιστούν μόνο οι παρακάτω εγγραφές:

Αυτό βολεύει σε πάρα πολλές επιλογές όπως το να φιλτράρεις επιστημονικά ή στατιστικά δεδομένα ή ακόμα και σε business επίπεδο να κρατάς σε λογιστικό φύλλο σειρά διεργασιών και να αναζητάς ποιες έχουν γίνει.

Εμφάνιση και αλλαγή μηνύματος πριν το login σε Alpine Linux

Σε μια εργασία στο Παν/μιο Πειραιώς για το master μου έπρεπε να ετοιμάσω ένα virtual machine με μια ευπαθή εφαρμογή. Όμως δεν ήθελα να ήταν 1.000.0000 GB το καθένα έτσι επέλεξα μια μικρή και ελαφριά διανομή εν ονόματι Alpine Linux.

Όμως ήθελα να εμφανίζω πριν κάνει login ο χρήστης για ευκολότερο στήσιμο ένα μήνυμα που να λέει ip και κάποιες οδηγίες χρήσης για να τις κάνει στον supervisor (τίποτα σπουδαίο ip ή ένα hostname να βάλει στο hosts αρχείο)

Αυτό γίνετε αλλάζοντας το αρχείο /etc/issue και βάζοντας το κατάλληλο μήνυμα.
Στην περίπτωση μου ήθελα μια λίστα με όλες τις διευθύνσεις ip. Και το έκανα με το ακόλουθο script:


#!/bin/sh
echo "You can use one of the following ip addresses in order to look the page or even ssh into the machine" > /etc/issue
ip -4 -o addr show up  scope global | awk '{print $2,":",$4}'| sed -e "s/\/[1-9]*//" >> /etc/issue

Όμως έπρεπε να το τρέχω κατά το boot της διανομής. Ως εκ τούτου έκανα τα εξής βήματα:

1. Έτρεξα κατά rc-update add local default για να ενεργοποιήσω τα boot scripts όπως μου απάντησα πολύ αργότερα σε αυτό το site του stackexchange (πολύ καλό για hardcore linuxάδες ή επαγγελματίες που κάνου «κάτι παραπάνω» στο GNU/Linux).
2. Όρισα το script μου να είναι στο αρχείο /etc/local.d/UpdateIssue.start σαν root
3. Μετά το έκανα εκτελέσιμο με την εντολή chmod +x /etc/local.d/UpdateIssue.start

Και voila το αποτέλεσμα:

Results in Moot screen

Έτσι είσαι και ελαφρύς και δεν χρειάζεστε να κάνεις download τη μάνα και τον κύρη στις πρωχό εργασίες της σχολής 😉

Εγκατάσταση νεότερης έκδοσης minitube σε Ubuntu 18.04.

Λόγο ότι υπάρχουν αρκετά προβλήματα στο πακέτο που ο προγραμματιστής του minitube διανέμει από το site του. Αποφάσισα ότι πρέπει να το μεταγλωττίσω χειροκίνητα προκειμένου να παίζει όπως πρέπει. Τα προβλήματα που έχει είναι ότι:

  1. Δεν έχει ορίσει σωστά τις εξαρτήσεις κατά το κτίσιμο του πακέτου έτσι δεν πάει φρένο εάν δεν τις έχεις εγκατεστημένες.
  2. Ενώ παίζει με qt > 5.6 η μεταγλωττισμένη έκδοση θέλει 5.11 που δεν είναι στη 18.04LTS
  3. Χρειάζετε νεότερη έκδοση της βιβλιοθήκης libmpv από αυτήν των αποθετηρίων

Έτσι η διαδικασία έχει τα εξής χοντρικά βήματα:

  1. Εγκατάσταση της libmpv και εξαρτήσεων αυτής όπως και λογισμικού για κτίσιμο εφαρμογών.
  2. Δημιουργία API Key.
  3. Κτίσιμο και εγκατάσταση Minitube.

Εγκατάσταση της libmpv και εξαρτήσεων αυτής όπως και λογισμικού για κτίσιμο εφαρμογών.

Πρώτα εγκαθιστάμε κάποιες απαραίτητες εξαρτήσεις από τα αποθετήρια:

sudo apt-get install git dh-autoreconf build-essential libfreetype6-dev libfribidi-dev libfontconfig1-dev yasm libmp3lame-dev libx264-dev libfdk-aac-dev python libssl1.0-dev libpulse-dev python-pip

Μετά μέσω pip εγκαθιστούμε το youtube-dl:

sudo -H pip install -g youtube-dl

Μετά κατεβάζουμε το εργαλείο για την εγκατάσταση του libmpv από το αποθετήριο του git:

git clone https://github.com/mpv-player/mpv-build.git

Και το κτίζουμε με αυτό το κοκτέιλ των εντολών:

cd mpv-build
echo --enable-libx264 >> ffmpeg_options
echo --enable-libmp3lame >> ffmpeg_options
echo --enable-libfdk-aac >> ffmpeg_options
echo --enable-nonfree >> ffmpeg_options
echo --enable-libmpv-shared > mpv_options
./use-mpv-custom v0.29.1
./update
./rebuild -j4
sudo ./install
cd ..

Μετά επεκτείνουμε την μεταβλητή LD_LIBRARY_PATH με τις κατάλληλες τιμές ώστε να μπορεί το σύστημα να «βλέπει» την βιβλιοθήκη:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Και για ποιο μόνιμα αποτελέσματα μπορούμε είτε να το ορίσουμε σαν εντολή στο script στο ~/.profile εάν θέλουμε να έχει ισχύ μόνο για τον χρήστη μας:

echo "export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> ~/.profile 

Ή για ποιο μόνιμα, για όλους τους χρήστες αποτελέσματα στο αρχείο /etc/environment

echo "LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" | sudo tee -a /etc/environment

Δημιουργία API Key. (Μπορεί να γίνει παράλληλα με τα προηγούμενα βήματα όπως κτίζετε η εφαρμογή)

Το minitube τραβά από το youtube data api τα δεδομένα που χρειάζεστε και μέσω libmpv και youtube-dl τα αναπαράγει. Ως εκ τούτου χρειαζόμαστε ένα youtube data api key. Για να γίνει αυτό τα ακόλουθα βήματα χρειάζονται:

  1. Σύνδεση στο https://console.developers.google.com
  2. Μετά δημιουργούμε ένα νέο project όπως δείχνουν οι εικόνες:
    Explaining on how to create an youtube API key
    Form that created the project
  3. Μετέπειτα κάντε κλικ στο κουμπί «Enable Apis and Services».
    Enable APIS
  4. Στη φόρμα που μας εμφανίζετε αναζητούμε «Youtube Data API» και επιλέγουμε το «Youtube Data Api v3» όπως μας δείχνει η παρακάτω εικόνα:
    Selecting Youtube Data API
  5. Μετέπειτα κάνουμε κλικ στο κουμπί Enable με το μπλε χρώμα:
  6. Μετά πρέπει να δημιουργήσουμε τα Credentials κάνοντας κλικ στην πλαϊνή μπάρα που αναγράφει «Credentials» και έχει το κλειδάκι σαν εικονίδιο. (Δείτε παρακάτω εικόνα)
  7. Μετέπειτα στην οθόνη που εμφανίζετε κάνουμε κλικ στο «Create Credentials» και μετά κάνουμε κλικ στο «API Key»:
    Creating a youtube api Key
  8. Όταν έρθει η ώρα κάντε Copy Paste τη παρακάτω τιμή:
    API Key

Κτίσιμο και εγκατάσταση Minitube

Πλέον είμαστε έτοιμοι να βάλουμε την νεότερη έκδοση του minitube. Πρώτα εγκαθιστούμε τις περί QT εξαρτήσεις:

sudo apt install build-essential qt5-default qttools5-dev-tools qt5-qmake qtdeclarative5-dev libqt5sql5-sqlite libqt5x11extras5-dev

Μετά κάνουμε clone το αποθετήριο κώδικα του minitube και ορίζουμε την κατάλληλη έκδοση:

git clone --recursive https://github.com/flaviotordini/minitube.git
git checkout -b v3.0 tags/3.0

Και κτίζουμε όπου ^API_KEY^ το κλειδί που κάναμε στο προηγούμενο βήμα:

qmake "DEFINES += APP_GOOGLE_API_KEY=^API_KEY^"
make

Δοκιμάζουμε ότι όλα παίζουν σωστά με το να τρέξουμε:

./build/target/minitube

Και εγκαθιστούμε με την εντολή:

sudo make install