Search the Community

Showing results for tags 'programming'.

The search index is currently processing. Current results may not be complete.
  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • HWBOX | Main
  • HWBOX | Forum
    • HwBox.gr Ανακοινώσεις & Ειδήσεις
    • News/Ειδήσεις
    • Reviews
    • The Poll Forum
    • Παρουσιάσεις μελών
  • Hardware
    • Επεξεργαστές - CPUs
    • Μητρικές Πλακέτες - Motherboards
    • Κάρτες Γραφικών - GPUs
    • Μνήμες - Memory
    • Αποθηκευτικά Μέσα - Storage
    • Κουτιά - Cases
    • Τροφοδοτικά - PSUs
    • Συστήματα Ψύξης - Cooling
    • Αναβαθμίσεις - Hardware
  • Peripherals
    • Οθόνες
    • Πληκτρολόγια & Ποντίκια
    • Ηχεία - Headsets - Multimedia
    • Internet & Networking
    • General Peripherals
  • Overclocking Area
    • HwBox Hellas O/C Team - 2D Team
    • HwBox Hellas O/C Team - 3D Team
    • Hwbot.org FAQ/Support
    • Benchmarking Tools
    • General Overclocking FAQ/Support
    • Hardware Mods
  • Software Area
    • Operating Systems
    • Drivers Corner
    • General Software
    • General Gaming
  • The Tech Gear
    • Mobile Computing
    • Smartphones
    • Tablets
    • Digital Photography & Cameras
  • Off Topic
    • Free Zone
    • XMAS Contest
  • HWBOX Trade Center
    • Πωλήσεις
    • Ζήτηση
    • Καταστήματα & Προσφορές

Calendars

  • HwBox Community Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Location


Homepage


Interests


Occupation


ICQ


AIM


Yahoo


MSN


Skype


CPU


Motherboard


GPU(s)


RAM


SSDs & HDDs


Sound Card


Case


PSU


Cooling


OS


Keyboard


Mouse


Headset


Mousepad


Console


Smartphone


Tablet


Laptop


Camera


Drone


Powerbank

Found 7 results

  1. Το PYXA είναι μια DIY κονσόλα παιχνιδιών η οποία έχει σαν βάση ένα Arduino και μπορεί να προσφέρει αμέτρητες ώρες ψυχαγωγίας. Το kit κατέφθασε στο Kickstarter και έχει ήδη σημειώσει αρκετή επιτυχία τις πρώτες ημέρες της ανάρτησής του στο μέσο προβολής. Η κονσόλα είναι μικρή σε διαστάσεις και διαθέτει μια έγχρωμη οθόνη στο στο κέντρο θυμίζοντας αρκετά συσκευές όπως το Nokia N-Gage και έχει ανάλυση 128 x 160 pixels. Το σύστημα τρέχει χάρη σε έναν επεξεργαστή ATmega328P ενώ διαθέτει και μια microSD υποδοχή για την φόρτωση των παιχνιδιών. Η μπαταρία που συνδέεται επάνω στη μητρική της κονσόλας έχει χωρητικότητα 600 mAh που αρκεί για τουλάχιστον 4 ώρες λειτουργίας, σύμφωνα με τον κατασκευαστή του. Ο προγραμματισμός του γίνεται εύκολα μέσα από την πλατφόρμα του Arduino IDE ενώ αποτελεί και τον καλύτερο τρόπο για κάποιον που ξεκινά τώρα να μαθαίνει προγραμματισμό. Για αρχή υπάρχουν και διάφορα παιχνίδια ήδη διαθέσιμα μέσα από τη πλατφόρμα όπως το κλασικό φιδάκι και το Τέτρις ενώ ψάχνοντας μπορούμε να βρούμε αρκετά για τη συγκεκριμένη πλατφόρμα και παράλληλα με πλήρη υποστήριξη της οθόνης. Η αρχική τιμή που δίνεται μέσα από το Kickstarter είναι 49 λίρες Αγγλίας και η προγραμματισμένη ημερομηνία κυκλοφορίας του είναι τον ερχόμενο Ιούλιο. Μέχρι στιγμής το ενδιαφέρον για την κονσόλα είναι αρκετό - αφού από τις πρώτες ώρες της ανάρτησής του στο Kickstarter έχει συγκεντρώσει $8.500. Πηγή. Βρείτε μας στα Social:
  2. [NEWS_IMG=Η NVIDIA λανσάρει το GameWorks 3.1 SDK στην GDC 2016]http://www.hwbox.gr/images/news_images/nvidia1.jpg[/NEWS_IMG] Η NVIDIA λανσάρει με τη μορφή νέου SDK ορισμένες από τις τεχνολογίες που βλέπουμε στα σύγχρονα παιχνίδια όπως στο The Division και Fallout 4. Αποκαλύψεις έγιναν και από πλευράς NVIDIA στη φετινή GDC 2016 με το νέο GameWorks 3.1 το οποίο σύμφωνα με την εταιρία φέρνει νέες τεχνικές για δημιουργία σκιών και φωτισμών. Το SDK περιλαμβάνει πλέον όλες τις νέες τεχνικές που χρησιμοποιούνται και στα νέα παιχνίδια The Division και Fallout 4 όπως Nvidia Volumetric Lighting, Nvidia Hybrid Frustum Traced Shadows (HTFS) και Nvidia Voxel Accelerated Ambient Occlusion (VXAO) ενώ μερικά από αυτά εμφανίζονται και στο παιχνίδι Rise of the Tomb Raider. Μέσα στις επόμενες ημέρες, η NVIDIA θα αναφέρει περισσότερες πληροφορίες για τα δικά της VR project όπως το VRWorks ενώ αναμένουμε και "συναρπαστικές νέες ανακοινώσεις" όσον αφορά τις συσκευές SHIELD. Φυσικά μερικές από τις ανακοινώσεις, ενδέχεται να τις φυλάξει μέχρι και την GTC που θα πραγματοποιηθεί τον Απρίλιο. https://developer.nvidia.com/[img_alt=Η NVIDIA λανσάρει το GameWorks 3.1 SDK στην GDC 2016]http://www.hwbox.gr/members/2195-albums570-picture60650.png[/img_alt] [img_alt=Η NVIDIA λανσάρει το GameWorks 3.1 SDK στην GDC 2016]http://www.hwbox.gr/members/2195-albums570-picture60651.png[/img_alt] Διαβάστε περισσότερα εδώ...
  3. [NEWS_IMG=Τέλος το εύκολο Porting εφαρμογών από Windows Mobile σε Android]http://www.hwbox.gr/images/news_images/microsoft2a.jpg[/NEWS_IMG] Το Project Astoria αποτελεί πλέον παρελθόν μιας και η Microsoft που το ανέπτυσσε αποφάσισε για τη "μοίρα" του. Το συγκεκριμένο project χρονολογείται πίσω στο μακρινό πλέον 2015 και πιο ειδικά στο BUILD developer Conference της Microsoft στο οποίο η εταιρία έκανε γνωστές τις προθέσεις της να βοηθήσει τους developers στο porting εφαρμογών που έχουν γράψει για διάφορες άλλες πλατφόρμες, στο οικοσύστημα των Windows Mobile. Η Microsoft με το λειτουργικό της, έχοντας περιορισμένο αριθμό εφαρμογών με λίγους καλούς developers να ασχολούνται με την εγγενή ανάπτυξη εφαρμογών, είχε αρκετές ελπίδες να εμπλουτίσει το οικοσύστημά της, κάτι που όμως μπορεί να γίνει με διαφορετικό τρόπο. Ο θάνατος του project ήρθε σύμφωνα με τη Microsoft καθώς ήταν "περιττό", ειδικά όταν οι developers είχαν ήδη τις εφαρμογές τους στα Android και iOS. Η πρόσφατη εξαγορά της Xamarin ενδέχεται να ωθήσει τους προγραμματιστές στη δημιουργία προγραμμάτων σε C# που αργότερα θα μπορούν να λειτουργήσουν σε Android, Windows κα iOS. Φυσικά, τα παραπάνω δυσχεραίνουν μόνο την "μεταφορά" εφαρμογών από το Android στα Windows 10 Mobile, μιας και οι "γέφυρες" για τα Objective-C, JavaScript και Win32 υπάρχουν ακόμα. [img_alt=Τέλος το εύκολο Porting εφαρμογών από Windows Mobile σε Android]http://www.hwbox.gr/members/2195-albums570-picture59977.png[/img_alt] Διαβάστε περισσότερα εδώ...
  4. [NEWS_IMG=Intel Edison βοηθά την έρευνα για την προστασία των μελισσών]http://www.hwbox.gr/images/news_images/intel1.jpg[/NEWS_IMG] Ερευνητές σχεδιάζουν να τοποθετήσουν IntelR Edison boards σε κυψέλες μελισσών σε όλον τον πλανήτη, για να παρακολουθούν τις κινήσεις τους. Οι μέλισσες θα φορούν μικροσκοπικές ετικέτες RFID, ενώ οι μικρές πλακέτες Intel Edison θα λειτουργούν ως κόμβοι ελέγχου, οι οποίοι θα συλλέγουν τα δεδομένα από τις διερχόμενες μέλισσες. Η έρευνα θα χρησιμοποιηθεί για να προστατευθούν οι μέλισσες, οι οποίες επικονιάζουν το ένα τρίτο των φυτών, από τα οποία προέρχεται η αντίστοιχη ποσότητα των τροφίμων για τους ανθρώπους σε παγκόσμιο επίπεδο. Οι αισθητήρες λειτουργούν με τρόπο παρόμοιο με εκείνον μιας ηλεκτρονικής ετικέτας (e-tag), ενός οχήματος, καταγράφοντας το χρόνο διέλευσης του εντόμου, ο οποίος σημειώνεται μέσω της πλακέτας Intel Edison, στο σημείο ελέγχου. Τα δεδομένα που καταγράφονται από την ετικέτα RFID, συνδυάζονται με άλλα στοιχεία που συλλέγονται από μια σειρά περιβαλλοντικών αισθητήρων, οι οποίοι είναι επίσης ενσωματωμένοι στην πλακέτα Intel Edison. Με αυτόν τον τρόπο, παρέχονται πολύτιμα δεδομένα στους μελισσοκόμους, στους παραγωγούς μελιού, αλλά και σε άλλους ενδιαφερόμενους αποδέκτες, όπως είναι π.χ. βιομηχανικοί ή κυβερνητικοί φορείς. Αυτές οι πληροφορίες μας ενημερώνουν και μας διαφωτίζουν γύρω από ενδεχόμενες μεθόδους προστασίας του πληθυσμού των μελισσών. Μία από τις πιο εντυπωσιακές εφαρμογές του συγκεκριμένου project είναι η οπτικοποίηση των μετακινήσεων των μελισσών σε τρισδιάστατες απεικονίσεις, πάνω στον παγκόσμιο χάρτη. Το περιβάλλον Intel Edison αποτελείται από μικροσκοπικές υπολογιστικές πλακέτες σε μέγεθος γραμματοσήμου, οι οποίες συμπυκνώνουν όλες τις βασικές λειτουργίες ενός ηλεκτρονικού υπολογιστή, σε απίστευτα μικρό μέγεθος. Η πλακέτα ενσωματώνει δυνατότητες ασύρματης δικτύωσης, μπορεί να ενσωματώσει διαφορετικούς αισθητήρες και άλλα computing modules, αλλά και να προγραμματιστεί, έτσι ώστε να εξυπηρετήσει αναρίθμητες εφαρμογές, στο πλαίσιο τεχνολογιών Internet Of Things (IoT), όπου κάθε αντικείμενο του φυσικού κόσμου, μπορεί να καταστεί κόμβος στο Internet, με τη δική του, μοναδική, διεύθυνση IP. Μία πλακέτα Intel Edison χρησιμοποιεί ένα 22nm IntelR SoC, με επεξεργαστή IntelRAtomT CPU στα 500MHz, με 2 πυρήνες και 2 threads και έναν 32-bit IntelR QuarkT microcontroller στα 100 MHz. Υποστηρίζει 40 GPIOs και ενσωματώνει 1GB LPDDR3, 4 GB EMMC και διπλής μπάντας WiFi και BTLE . Η έρευνα ανακοινώθηκε σε συνεργασία με την Εθνική Υπηρεσία Επιστημών της Αυστραλίας. Σημειώνεται ότι η συγκεκριμένη πρωτοβουλία της Intel, σχετικά με τις μέλισσες, δεν είναι η πρώτη. Μπορείτε να ενημερωθείτε για την τεχνολογία της Intel που αξιοποιήθηκε στο πρόγραμμα αυτό, κάνοντας κλικ εδώ. Μπορείτε να δείτε σχετικές εικόνες για τις μέλισσες και για τον Intel Edison εδώ. Μπορείτε να δείτε το B-roll, αποσπάσματα ήχου και video και πρόσθετες πληροφορίες από την CSIRO εδώ. [img_alt=Intel Edison βοηθά την έρευνα για την προστασία των μελισσών]http://www.hwbox.gr/members/2195-albums570-picture51688.png[/img_alt] Intel Press Release
  5. [NEWS_IMG=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums497-picture34932.jpg[/NEWS_IMG] Η πλατφόρμα Edison της Intel έχει ανοίξει νέους δρόμους για τον έλεγχο LED Matrix οθονών που μπορούν να δείξουν από μηνύματα μέχρι να τρέξουν απλά παιχνίδια. Εφόσον διαθέτετε την όρεξη μπορείτε γρήγορα να μπείτε στον κόσμο των microcontrollers όπως τα Arduino και πιο πρόσφατα του Edison της Intel. Στο εν λόγω DIY θα δούμε πως μπορούμε να χρησιμοποιήσουμε μερικές Matrix LED οθόνες σε συνδυασμό με το MAX7219 ολοκληρωμένο για να δείξουμε εικόνες ή ακόμα και να παίξουμε παιχνίδια, εφόσον ακολουθήσετε τους οδηγούς της Intel. Οι Matrix οθόνες αποτελούνται από μια σειρά LED (διόδους) τα οποία μπορούμε να χρησιμοποιήσουμε με όποιον τρόπο θέλουμε μέσω κώδικα σχηματίζοντας εικόνες και κείμενο. Βήμα 1. Εδώ παρουσιάζονται τα υλικά. Χρειαζόμαστε έναν MAX7219 , μια LED Matrix οθόνη 8x8 στοιχείων, .01 uF capacitor, 10 uF capacitor, Breadboard, το Edison board with Arduino Breakout, μια 28K αντίσταση και jumper wires για το breadboard. [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48663.png[/img_alt] [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48664.png[/img_alt] [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48665.png[/img_alt] [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48666.png[/img_alt] Βήμα 2. Πως λειτουργεί λοιπόν ένα LED array; Κάθε LED επάνω στην οθόνη τύπου matrix είναι αυτόνομο και μπορεί να "προγραμματιστεί" ξεχωριστά από τα υπόλοιπα σχηματίζοντας ότι θελήσουμε. Κάθε LED έχει μια κάθοδο (αρνητικό) και μια άνοδο που οδηγεί στον θετικό πόλο του LED και μέσω αυτού τρέχει το ρεύμα. Ο θετικός πόλος συνδέεται σε ένα microcontroller I/O pin το οποίο είναι ικανό να "διαβάσει" τις εντολές που θα του υποδείξουμε από το πρόγραμμα. Σε μια οθόνη όπως του παραδείγματος με 8x8 θα θέλαμε 64 pins για να μπορέσουμε να τη χρησιμοποιήσουμε, όμως μέσω της έξυπνης τεχνολογίας multiplexing που μειώνει τον αριθμό στα 16, δηλαδή σε 8 σειρές και 8 γραμμές. Στη συνέχεια ο microcontroller που θα χρησιμοποιήσουμε (MAX7219) μειώνει το πλήθος των καλωδίων που θα πάνε στο Edison σε τρία, τα data in, Load (CS) και το clock pin ενώ είναι διευκολύνει και τον προγραμματισμό, όπως φαίνεται παρακάτω: Μπορείτε να αλλάξετε γραμμή, απλά γράφοντας R# δηλώνοντας με 1 και 0 τη στάση του LED (on - off). R2 : 01011010 R3 : 00111100 R4 : 11111111 R5 : 11111111 R6 : 00111100 R7 : 01011010 R8 : 10011001 Βέβαια, τα πράγματα γίνονται πιο απαιτητικά όταν θέλουμε να δημιουργήσουμε ένα animation. Το κάθε animation αποτελείται από πολλά frames όπως φαίνεται στο παράδειγμα. [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48667.png[/img_alt] [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48668.png[/img_alt] [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48669.png[/img_alt] [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48670.png[/img_alt] Βήμα 3. Ο προγραμματισμός γίνεται στις γλώσσες C/C++, Arduino language και Javascript μέσω των Arduino IDE και Eclipse προγραμμάτων, παραδείγματα των οποίων υπάρχουν στο 5ο βήμα της πηγής. Με λίγο κώδικα και εξάσκηση μπορούμε να καταφέρουμε πολλά πράγματα με το εν λόγω σύστημα της Intel, όπως το να φτιάξουμε ένα απλό παιχνίδι για δύο μάλιστα παίκτες! Μερικά projects και resources: LED Matrix Safety Backpack LED Matrix Bike Safety Backpack Flame Effect Flames effect with a 8x8 LED Matrix and ATMega328 Bi-color LED Matrix Tetris Game Arduino based Bi-color LED Matrix Tetris Game Pong with 8x8 LED Matrix Pong with 8x8 Led Matrix on Arduino Binary Clock Arduino Binary clock using LED Matrix MAX7219 datasheet http://pdfserv.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf 8x8 Matrix datasheet http://www.adafruit.com/datasheets/454datasheet.pdf Adafruit https://www.adafruit.com/search?q=LED+matrix&b=1 Sparkfun https://www.sparkfun.com/search/results?term=led+matrix Persistence of Vision http://en.wikipedia.org/wiki/Persistence_of_vision LedControl Arduino Playground - LedControl MAX7219 Arduino Playground - MAX72XXHardware [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48672.png[/img_alt] [img_alt=DIY: Ελέγχοντας LED Matrix με το Intel Edison]http://www.hwbox.gr/members/2195-albums570-picture48671.png[/img_alt] Διαβάστε περισσότερα εδώ...
  6. Τα παρακάτω tutorial γράφτηκε απο μένα το καλοκαίρι καθώς μελετούσα Αντικειμενοστρεφή προγραμματισμό με την C++. Δεν ειναι για αρχάριους στην C++ αλλά για αρκετά έμπειρους προγραμματιστές με την C++ και το δομημένο τμήμα της. Πάμε λοιπόν: Γραμμένο απο εμένα. Οι κώδικες εχουν γινει compile με g++ . Καλή ανάγνωση. 1 . Classes 2. Coding Styles 3. Object (instances) 4. Public & Private members 5. Contructor & Destructor 6. Inheritance -------Overloading Constructors -------Overriding -------Hiding & Bypass Hiding -------Virtual Methods ------- Access to Hidden Virtual Methods -------- Dynamic Binding 7. Multiple Inheritance - Polymorphism --------Virtual Classes --------- Abstract Classes --------- Pure Functions 8. Static: Methods / Functions / Members 9. Pointer to Function
  7. Τι γινετε οταν μπορειτε να συνδιασετε την δυναμη της python και του bash ; Τα πραγματα ειναι αρκετά ενδιαφέροντα, αφού χρήστης έχει την δυνατότητα να γράψει δικά του python scripts που θα τον βοηθήσουν στην λειτουργια του λειτουργικού του συστήματος. Για παράδειγμα αν εχει καποες καθημερινες λειτουργιες, όπως πχ να κανει update το apt-get να, να βλεπει mails, να . να .. να ... να ... Αντι να θυμαται απέξω ολες τις εντολες στην κονσολα, θα μπορει το κανει ευκολα και γρήγορα με εναν δικο του πινακα ελεγχου. Πχ οτι θελει να προσθετει χρητες, και δεν θυμαται την εντολη που ειναι ενα μακαρονι απο εδω εως την αλλη ακρη του post αυτου, τοτε μπορει να αυτοματοποιησει την διαδικασια με ενα script. Τετοια script ειναι κυριολεκτικα γεματο το linux ειτε με perl ειτε με python ειτε με C. Μερικα απο αυτα εχουν γινει πολυ διασημα, όπως για παραδειγμα το envy που κανει εγκατασταση τους drivers για την καρτα γραφικων σας. Μπορειτε να γραψετε και εσεις το δικο σας script και ετσι που ξερετε, μπορει να ειναι τοσο καλο και χρησιμο που να σας κανει υπερηφανους μια μερα. Λοιπον, τι χρειαζετε να ξερετε: python και bash commands. Γι αυτο το post τα παραδειγμα που θα κανω δεν ειναι τιποτα το ιδιατερο οποτε εισαι Οκ με λιγες γνωσεις. Δηλαδη και να μην ξερετε python, και να ξερετ καποια αλλη γλωσσα δεν υπαρχει προβλημα θα την εξηγησω λιγο εδω, σρκει ομως να μην ειστε τελειος ασχετος απο προγραμματισμο γιατι τοτε δεν θα καταλαβετε τιποτα. Λοιπόν παμε να μαθουμε λιγο python. Καταρχας κατεβαστε την οσοι δεν την εχετε με την εντολη sudo apt-get install python ή ψαξε την στο Synaptic. Ανοιξτε ενα terminal και δωσε python. panos@panos-laptop:~$ python Python 2.5.1 (r251:54863, Oct 5 2007, 13:36:32) [GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Θα δειτε λογικο το παραπανω ^^^^ Αυτο ειναι ενα interactive interpreter. οτι εντολη γραφετε την εκτελει αμεσως., Πχ δωσε: print "thelab rocks" Στην python δεν υπαρχουν curly braces να ξεχωριζουν ποτε τελειωνει και ποτε αρχιζει ενα code block αλλα το κανετε εσεις με το tab space. πχ μια function αρχιζει με την λεξη def και στο τελος εχει ανωκατω τελεια def function_name(parameters): blah_blah blah blah Οι συνθηκε ελεγχου με το κλασσικο if statement υλοποιειται παλι ετσι μονο που μπαινει και μια λεξουλα που λεγεται ord οταν το x ειναι τυπου char, και παραλειπεται οταν ειναι αριθμος. πχ if x == ord('2'): blah blah else: blah blah και τωρα που πειρατε μια γευση απο υλοποιηση συντακτικου ας κανουμε ενα παραδειγμα: >>> def thelab(x): ... if x == 1: ... print "TheLab.gr rocks" ... else: ... print "TheLab.gr sucks" ... >>> thelab(1) TheLab.gr rocks >>> thelab(0) TheLab.gr sucks >>> Αυτα νομιζω αρκουν. Αχ εχετε καποιες αλελς αποριες υπαρχει και το google. ==================================================== Για να γραψουμε τα προγραμματα μας και να φαινονται ομορφα θα κανουμε χρηση της βιβλιοθηκης ncurses. Ετσι οχι οτι θα εχουμε τιποτα τρελα γραφικα αλλα μια πιο ομορφη κονσόλα. Ανοιξτε πχ το kate ή το gedit γραφοντας πρώτα απο ολα θα γράψετε την παρακατω γραμμή έτσι ώστε να μπορείτε να εκτελείτε το προγραμμα σας καθολικά μέσα απο το sbin (θα σας πω στην πορεια) #!/usr/bin/env python Δεύτερον για να συνδιάσετε εντολές από το /usr/bin στο προγραμμά σας δώστε: from os import system Τώρα ήρθε η ώρα να αρχικοποιησουμε τις ncurses οποτε γράφουμε: import curses ========================================================================= Ας υποθεσουμε τωρα οτι θελουμε εναπρογραμμα που θα μας λεει πληροφοριες του cpu. αυτο υπαρχει ομως, γραφοντας cat /proc/cpuinfo οποτε θα με ρωτησετε ποιος ο λογος να γραψω ενα προγραμμα που θα κανει το ιδιο ; Μπορειτε να γραψετε λοιπον μια συλλογη απο προγραμματε για συντομευσεις, δηλαδη πατωντας το ενα να παιζει το ταδε, προγραμμα, πατωντας το 2, παιζει το αλλο. ή για παραδειγμα να κανετε αναζητηση στο cat /proc/cpuinfo ετσι ώστε να σας εμφανίζει μόνο αυτά που θέλετε (πχ με τη νεντολη cat /proc/cpuinfo | grep cpu ) Οποτε εγω θα σας φτιαξω ενα απλο τετοιο προγραμμα και μετα εσεις μπορειτε να κανετε οτι θελετε παραπανω. Απλα για παρετε μια γεύση, πως υλοποιειτε κατι τετοιο. ========================================================================= Φανταστείτε οτι γραφετε C++ και οτι το παρακατω ειναι ειναι η main σας x = 0 while x != ord('2'): # Όσο το χ δεν ειναι 2 screen = curses.initscr() # δημιουργει ενα instance της class curses με constructor την τιμη του initscr() screen.clear() # Αφου έχει φτιαχτεί το περιβάλλον ncurses, το περνάει ένα καθάρισμα screen.border(0) # Περίγραμμα με μια γραφή για πιο όμορφο ντεκόρ screen.addstr(2, 2, "Please enter a number") #εκτυπωνει το string στην οθόνη με συντεταγμένες x=2, y =2 screen.addstr(4, 4, "1 - Daily Tasks") screen.addstr(5, 4, "2 - Exit") screen.refresh() #Για να εμφανιστού όλα τα παραπάνω κάνουμε refresh x = screen.getch() # Αποθηκεύει την επιλογή μας (1,2,3) κάτι σαν το cin της C++ ή το scanf της C if x == ord('1'): #Αν έχετε δώσει 1 νωρίτερα curses.endwin() #Καταρχάς κλείσε το τρέχον curses παράθυρο (την δινω παντα πριν απο μια εντολη system) system("clear") # η εντολή clear του linux - καθαρίζει το console - terminal a = system("sudo apt-get update") #η κλασσικη εντολή της οποια το αποτελεσμα το βαζω στο α για ελεγχο αργοτερα print " " if a == 0: #Ο ελεγχος που σας ελεγα print "Command Executed" else: print "Command Faild" raw_input("Press Enter") #Κάτι σαν το system("PAUSE") αν έχετε ακουστά print " " system("clear") #αφού τελειώσα την δουλειά μου, κανω και ένα clear curses.endwin() #κλείνω και το παραθυρο και ταυτοχρονα και το προγραμμα Για να δωσετε λοιπον εντολη του συστημα γράφετε system("blah-blah-blah-blah") Για να κανουμε τώρα ενα βημα παραπανω, και να φτιάξουμε μια function να κανει αυτην δουλεια. Δηλαδη είδαμε οτι για να εκτελεσουμε μια εντολή απο το συστημα πρέπει να κάνουμε τα εξής βήματα: 1)curses.endwin() #Καταρχάς κλείσε το τρέχον curses παράθυρο (την δινω παντα πριν απο μια εντολη system) 2)system("clear") # η εντολή clear του linux - καθαρίζει το console - terminal 3)a = system("η εντολή") #η κλασσικη εντολή της οποια το αποτελεσμα το βαζω στο α για ελεγχο αργοτερα 4)print " " #για ομορφια 5)if a == 0: #Ο ελεγχος που σας ελεγα print "Command Executed" else: print "Command Faild" 6)raw_input("Press Enter") #Κάτι σαν το system("PAUSE") αν έχετε ακουστά 7) print " " #για ομορφια Πάμε λοιπόν να ξαναγράψουμε το ίδιο: #!/usr/bin/env python from os import system import curses def execute_cmd(cmd_string): system("clear") a = system(cmd_string) #θα πάρει την εντολή από το κύριο πρόγραμμα print " " if a == 0: print "Command Executed" else: print "Command Faild" raw_input("Press Enter") print " " x = 0 while x != ord('2'): screen = curses.initscr() screen.clear() screen.border(0) screen.addstr(2, 2, "Please enter a number") screen.addstr(4, 4, "1 - Daily Tasks") screen.addstr(5, 4, "2 - Exit") screen.refresh() x = screen.getch() if x == ord('1'): curses.endwin() execute_cmd("sudo apt-get update") # το sudo apt-get install ειναι στο cmd_string στην περιπτωση αυτη system("clear") curses.endwin() ========================================================================= Τι γίνετε όμως όταν θέλετε να κάνετε μια εντολη interactive ; Ας φτιαξουμε μια function που εμφανιζει την ερωτηση στον χρηστη και ταυτοχρονα επιστρέφει και το input που έδωσε ο χρηστης. Ειμαστε λοιπον στο σημειο όπου ρωταει το προγραμμα: 1 - Αυτο 2- Μηπως Αυτο 3 - exit Εμεις θέλουμε για παραδειγμα, αν πατησει το 1. Να του γινει μια ερωτηση και να πληκτρολογισει ο user την απαντηση. Πχ να του ρωτηση ποιο ειναι το username ; Αυτος να το γραψει Και μετα να εχουμε ενα προγραμμα που θα κανει πχ ls username Αυτο εννοω interactive Οποτε αυτη η function αφου θελουμε να εκτυπωνει το μυνημα που θα ρωταει κατι σιγουρα θα το παιρνει ως παραμετρο. Μετά θελουμε να καθαριζει την οθονη, να φτιαχνει παλι το ντεκορ οπως ηταν και να εμφανιζονται ολα αυτα οπως και πριν Να εμφανιζει την ερωτηση-παραμετρο Να διαβαζει την απαντηση του χρηστη Να επιστρεφει την απαντηση Πάμε λοιπον: def get_param(prompt_string): screen.clear() # καθαρίζει το screen απο το 1 - Αυτο, 2 - Μηπως αυτο, 3 - exit και οτι ντεκορ ειχαμε κλπ κλπ screen.border(0) #ξανα βαζει το πλαισιο ντεκορ screen.addstr(2, 2, prompt_string) #ρωτάει τον χρήστη screen.refresh() #Εμφανιζει ολα τα παραπανω ^^^^ στην οθονη, γιατι αν το γραψετε, δεν βλεπετε τιποτα input = screen.getstr(10, 10, 60) # διαβαζει την απαντηση του χρηση με συντεταγμενες x=10, y=10, και η απαντηση 60χαρακτηρων return input #επιστρεφει το input Αυτη ειναι η function μας. Μεσα στην "main" θα εκχωρειτε σε μια μεταβλητη που θα αναφερετε λογικα στην ερωτηση, πχ Τοσο απλό. Η φράση enter the username ειναι το prompt_string. Εμφανιζετε στην οθονη. Πληκτρολογει ο χρηστης την απαντηση, και αυτη επιστρεφετε και αποθηκευεται στην μεταβλητη username ------ Ας γράψουμe λοιπον ένα τελικο script που θα εχει και τις δυο functions μεσα #!/usr/bin/env python from os import system import curses def get_param(prompt_string): screen.clear() screen.border(0) screen.addstr(2, 2, prompt_string) screen.refresh() input = screen.getstr(3, 2, 60) return input def execute_cmd(cmd_string): system("clear") a = system(cmd_string) print "" if a == 0: print "Command Executed" else: print "Command Faild" raw_input("Press Enter") print "" x = 0 while x != ord('2'): screen = curses.initscr() screen.clear() screen.border(0) screen.addstr(2, 2, "Please enter a number") screen.addstr(4, 4, "1 - Open Firefox") screen.addstr(5, 4, "2 - Exit") screen.refresh() x = screen.getch() if x == ord('1'): url = get_param("Please enter the URL eg www.thelab.gr ") curses.endwin() execute_cmd("firefox " + url) #ο interactive συνδιασμος system("clear") curses.endwin() ================================== Σε εισαγωγικα δινουμε την εντολη και ενα κενο πριν το τελευταιο γιατι αλλιως θα εκτελεσει firefoxwww.thelab.gr - δηλαδη μια μπουρδα. Μετα γραφουμε + την παραμετρο που θελουμε. Καντε save ως fifis.py στο home directory σας. Για να μην δινετε συνεχεια python fifis.py αλλα να δινετε fifis και να τρεχει σαν προγραμμα τότε: panos@panos-laptop:~$ sudo -i root@panos-laptop:~# cd /home/panos root@panos-laptop:/home/panos# chmod +x fifis.py root@panos-laptop:/home/panos# mv fifis.py /usr/sbin/fifis root@panos-laptop:/home/panos# fifis προσοχη οταν κανετε chmod το + και το x ειναι ειναι ενωμενα χωρις κενο ενδιαμεσα τους.