Blog

  • linux fhs: το πρότυπο της ιεραρχίας του συστήματος αρχείων

    linux fhs: το πρότυπο της ιεραρχίας του συστήματος αρχείων

    Η τελευταία έκδοση του προτύπου είναι η έκδοση 3 που δημοσιεύτηκε το Μάιο του 2015, ενώ η προηγούμενη έκδοση είχε δημοσιευτεί 11 χρόνια νωρίτερα. Γενικότερα το fhs αναθεωρείται τακτικά για να είναι ενήμερο ως προς τις συνεχείς τεχνολογικές αλλαγές.

    (περισσότερα…)

  • freepbx speed dial, συντομεύσεις τηλεφωνικών αριθμών

    freepbx speed dial, συντομεύσεις τηλεφωνικών αριθμών

    Συνήθης απασχόληση των απανταχού τεχνικών της τηλεφωνίας είναι η ανάθεση συντομεύσεων στους τυπικά μακροσκελείς και συχνά πληκτρολογούμενους τηλεφωνικούς αριθμούς. Να η τυπική απαίτηση: “να βγαίνει κλήση στο 987654321 όταν ο χρήστης χτυπήσει *01 στη συσκευή του”. Σε αρκετές περιπτώσεις υποστηρίζεται από τη συσκευή, αν όμως το κέντρο τρέχει asterisk η ρύθμιση είναι παιχνιδάκι και μάλιστα ανεξάρτητη συσκευής.

    Τόσο στο elastix, όσο και στο freepbx, υπάρχουν 2 τρόποι, ο καθένας με τα πλεονεκτήματά του και τα μειονεκτήματά του.

    (περισσότερα…)

  • linux malware detect ή lmd ή maldet

    linux malware detect ή lmd ή maldet

    Άλλη μια ακροστιχίδα της αγγλικής: maldet, δηλαδή malware detect, αναγνώριση κακόβουλου λογισμικού ελληνιστί. Η ακροστιχίδα μας είναι τίτλος δημοφιλούς λογισμικού για linux, που προσπαθεί να εντοπίσει κακόβουλα προγράμματα, ενδείκνυται δε για shared hosted περιβάλλοντα και παρέχει βασική προστασία από απειλές στα user account.

    Αν και το προϊόν λειτουργεί στα περισσότερα flavor του linux, τα παρακάτω ισχύουν για debian, ubuntu και παρεμφερή.

    (περισσότερα…)

  • mysql .net connector: Authentication with old password no longer supported, use 4.1 style passwords.

    mysql .net connector: Authentication with old password no longer supported, use 4.1 style passwords.

    Αν συναντήσετε το exception “Authentication with old password no longer supported, use 4.1 style passwords.”, ίσως έχετε πέσει θύματα της αλλαγής του policy του mysql, ο οποίος απαιτεί ισχυρότερα password κατά τη διασύνδεση μέσω του .net connector. Οι λύσεις στο πρόβλημα είναι 2.

    (περισσότερα…)

  • mysql & linux: προσθήκη χρήστη

    mysql & linux: προσθήκη χρήστη

    Θα δείξουμε πως να προσθέσουμε νέο χρήστη στον mysql χρησιμοποιώντας την κονσόλα. Υποθέτουμε ότι ο mysql τρέχει σε σύστημα linux και ότι ο χρήστης jack που θέλουμε να φτιάξουμε απαιτεί select δικαιώματα στον πίνακα transaction της βάσης δεδομένων accounting.

    (περισσότερα…)

  • selection sort

    Επαναλαμβανόμενη επιλογή του μικρότερου στοιχείου.

    • Εύρεση του μικρότερου στοιχείου και προσθήκη στην πρώτη θέση.
    • Εύρεση του αμέσως επόμενου μικρότερου στοιχείου και προσθήκη στη δεύτερη θέση.
    • […]
    • Επανάληψη έως ότου τακτοποιηθούν όλα τα στοιχεία.
    public static void selectionSort(int[] arr) {
     // find the smallest element starting from position i
     for (int i = 0; i < arr.length - 1; i++) {
      int min = i; // record the position of the smallest
      for (int j = i + 1; j < arr.length; j++) {
       // update min when finding a smaller element
       if (arr[j] < arr[min]) min = j;
      }
      // put the smallest element at position i
      swap(arr, i, min);
     }
    }
    public static void swap (int[] arr, int i, int j) {
     int temp = arr[i];
     arr[i] = arr[j];
     arr[j] = temp;
    }
    
    
  • sql server, εύρεση του foreign βάσει του primary key

    sql server, εύρεση του foreign βάσει του primary key

    Οκ, αυτό το άρθρο θα είναι σύντομο, καθώς πρόκειται για αντιγραφή από το stackoverflow, αλλά το δίνουμε κι εδώ για reference, χρήσιμο στους χρήστες τους Sql Server που παλεύουν με άγνωστο σχήμα προσπαθώντας να εντοπίσουν τις σχέσεις των πινάκων. Ακολουθεί ένας πολύ κομψός τρόπος.


    SELECT
    o1.name AS FK_table,
    c1.name AS FK_column,
    fk.name AS FK_name,
    o2.name AS PK_table,
    c2.name AS PK_column,
    pk.name AS PK_name,
    fk.delete_referential_action_desc AS Delete_Action,
    fk.update_referential_action_desc AS Update_Action
    FROM sys.objects o1
    INNER JOIN sys.foreign_keys fk
    ON o1.object_id = fk.parent_object_id
    INNER JOIN sys.foreign_key_columns fkc
    ON fk.object_id = fkc.constraint_object_id
    INNER JOIN sys.columns c1
    ON fkc.parent_object_id = c1.object_id
    AND fkc.parent_column_id = c1.column_id
    INNER JOIN sys.columns c2
    ON fkc.referenced_object_id = c2.object_id
    AND fkc.referenced_column_id = c2.column_id
    INNER JOIN sys.objects o2
    ON fk.referenced_object_id = o2.object_id
    INNER JOIN sys.key_constraints pk
    ON fk.referenced_object_id = pk.parent_object_id
    AND fk.key_index_id = pk.unique_index_id
    ORDER BY o1.name, o2.name, fkc.constraint_column_id

  • windows 10 δωρεάν – για όλους!

    windows 10 δωρεάν – για όλους!

    Σε προηγούμενο άρθρο αποσαφηνίσαμε τι σημαίνει “δωρεάν windows 10”. Σε αυτό θα δούμε και άλλο ένα παράθυρο που αφήνει η Microsoft για τους χρήστες που θέλουν να εγκαταστήσουν δωρεάν το νέο λειτουργικό, ακόμα και αν δεν διαθέτουν windows 7 ή 8.

    (περισσότερα…)

  • apache: authorization και authentication

    apache: authorization και authentication

    Όσο βρισκόμαστε όλο και περισσότερο online, τόσο περισσότερο εξαρτώμεθα από το internet, συνηθίζουμε, καλομαθαίνουμε θα λέγαμε καλύτερα, να έχουμε τα δεδομένα μας πάντα και παντού. Η εξάρτηση αυτή συχνά φέρνει ερωτήματα για την ιδιωτικότητα (privacy), την ασφάλεια (security), τα δικαιώματα (privileges – ως αποτέλεσμα της εκχώρησης του authorization) κλπ. Και μια που η συνδεσιμότητά μας είναι συνυφασμένη με τους web server, θα δείξουμε πως ο δημοφιλέστερος από αυτούς τακτοποιεί την ταυτοποίηση και την εξουσιοδότηση των χρηστών.

    Στο online manual του httpd αποσαφηνίζονται οι έννοιες authentication και authorization, σε ελεύθερη και εν τάχει μετάφραση:

    Authentication είναι κάθε διαδικασία που επαληθεύει ότι κάποιος είναι αυτό που δηλώνει.

    Παραθέτουμε και την αγγλική γιατί μάλλον είναι κομψότερη:

    Authentication is any process by which you verify that someone is who they claim they are.

    Αντίστοιχα για το authorization:

    Authorization is any process by which someone is allowed to be where they want to go, or to have information that they want to have.

    Authorization ονομάζεται κάθε διαδικασία που επιτρέπει σε κάποιον να είναι εκεί που θέλει να πάει, ή που διαθέτει την πληροφορία που κάποιος θέλει να έχει.

    Αρκετά με τη θεωρία. Όπως όλες σχεδόν οι έξτρα λειτουργίες του httpd, για την αυθεντικοποίηση και τον έλεγχο πρόσβασης υπάρχουν τα κατάλληλα module, αναλόγως με το τι θέλετε να κάνετε. Αν για παράδειγμα οι χρήστες ταυτοποιούνται σε ldap server, θα χρειαστείτε το mod_authnz_ldap κοκ. Στο παρόν θα δείξουμε απλή προστασία με password.

    Θα χρησιμοποιήσουμε το htpasswd που έρχεται με την εγκατάσταση του apache.

    Ανάλογα που έχει εγκατασταθεί – αν δεν είστε πολύ τακτικοί εντοπίστε το με
    find -name
    και καλέστε το για να δημιουργήσετε το αρχείο με το password του jack
    htpasswd -c passfile jack

    Δείξτε προσοχή στο switch -c. Χρησιμοποιήστε το για να δημιουργήσετε νέο αρχείο με password. Αν απλά θέλετε να προσθέσετε νέο χρήστη σε υφιστάμενο αρχείο, παραλλείψτε το switch.
    htpasswd passfile jack

    Θυμηθείτε να μεταφέρετε το passfile σε μέρος προσβάσιμο π.χ. στο /etc/apache/conf/

    Δημιουργήστε ένα .htaccess αρχείο στο directory που θέλετε να προστατέψετε:

    
    AuthType Basic
    AuthName "sos folder"
    AuthBasicProvider file
    AuthUserFile /etc/apache/passfile
    Require user jack
    

    Τέλος, να σημειώσουμε ότι τα παραπάνω δεν εγγυώνται ασφάλεια, για να επιτευχθεί κατ'ελάχιστο συνίσταται συνδυασμός με το mod_ssl.

  • plug and play json restful api για mysql και όχι μόνο

    plug and play json restful api για mysql και όχι μόνο

    Όσοι γνωρίζετε το https://github.com/alixaxel/ArrestDB δεν χρειάζεται να διαβάσετε παρακάτω.

    Όσοι όμως δεν το έχετε ξανακούσει, αξίζει να διαβάσετε τη συνέχεια και ίσως να το δοκιμάσετε.

    Ας υποθέσουμε ότι έχετε σχεδιάσει μια φανταστική database – σε MySql, PostgreSQL ή SQLite και αναρωτιέστε πως θα τη διασυνδέσετε με τη mobile / web / desktop εφαρμογή σας. Τρόποι υπάρχουν πάμπολλοι, άλλοι πιο δύσκολοι, άλλοι πιο εύκολοι, άλλοι σωστοί και άλλοι προβληματικοί.

    Ένας από αυτούς, εξαιρετικά απλός και γρήγορος, είναι το ArrestDB που υπόσχεται να χτίσει σε μηδέν χρόνο ένα RESTful API γύρω από την database σας με μία γραμμή κώδικα – που αφορά στο connection string της db.

    Το project είναι γραμμένο σε PHP αλλά δεν χρειάζεται να γνωρίζετε τίποτα γι αυτήν, εκτός από το γεγονός ότι θα πρέπει να διαθέτετε την v5.4 – κάπως περιοριστικό αφού η 5.3 εξακολουθεί να μεσουρανεί.

    Για την εγκατάσταση κοπιάρετε στον web server σας το ένα και μοναδικό αρχείο του ArrestDB (index.php), τροποποιείτε καταλλήλως την πρώτη γραμμή του, φτιάχνετε και ένα htaccess για το routing και είστε έτοιμοι να δοκιμάσετε το api. Αν έχετε ξαναπαίξει με άλλο api, δεν θα βρείτε πρακτικά διαφορές, είναι έτσι όπως το φαντάζεστε:

    • Για να δείτε τον πελάτη του πίνακα customer με όνομα Nick:
      GET http://api.example.com/customer/name/Nick/
    • Για να τροποποιήσετε τον πελάτη του πίνακα customer με κωδικό 100:
      PUT http://api.example.com/customer/100/

    Για security, ούτε λόγος, στην καλύτερη, ότι προσφέρει ο apache. Ίσως οι πιο απαιτητικοί από εσάς να μην καλυφθούν, αλλά ο,τιδήποτε πιο advanced απαιτεί σαφώς περισσότερο κόπο, κι έτσι το ArrestDB καθίσταται μοναδικό για testing και για ταχύτατη υλοποίηση.