Pedaba-2 ! Αν ήταν ποτέ δυνατόν να φτιάξω μια δική μου εφαρμογή !!!

fanisatt | Παρ, 08/30/2019 - 11:35 | 3' | 8

Είχα παρατήσει για έτη πολλά τον προγραμματισμό.

Έτυχε να έχω προτιμήσει την C τω καιρώ εκείνω - πριν από 25-30 χρόνια , επειδή οι μηχανές (CPU) έγιναν πολλές και διάφορες κι ήθελα να είμαι και κοντά τους αλλά και σε απόσταση ασφαλείας ...

Πιο παλιά ακόμη όταν υπήρχε ο Ζ80 και λίγο μετά ο Motorola 68000 αποτολμούσα σε assembly...κάποια κομμάτια έπρεπε να τρέχουν όσο πιο γρήγορα γινόταν. Ε ναι , πλησιάζω τα 60...γιατί να το κρύψωμεν άλλωστε...;

Τα παράτησα εντελώς κάποια στιγμή , δεν περίσσευε καθόλου χρόνος για προγραμματισμό. Εξάλλου όλα τα έβρισκα έτοιμα. Προς τι λοιπόν ;

Μπήκα σε μια αποθήκη του σπιτιού το 2018 και είδα σε ένα ράφι τα παλιά μου βιβλία της C. Έξι - επτά πόντοι σκόνη πρέπει να είχαν μαζέψει πάνω τους , μου έλεγε η γυναίκα μου να τα πετάξει αλλά δεν το επέτρεπα με τίποτε.

Τα πήρα από εκεί , τα καθάρισα , άρχισα σιγά-σιγά να διαβάζω έτσι για να περνάει η ώρα. Πήρα κι ένα σημειωματάριο και ... έπαιζα... Κάποια στιγμή σκέφθηκα πως θα ήταν αδύνατον να βάλω ένα σύγχρονο κομπιούτερ να δουλέψει με αυτήν την αρχαία γνώση μα κάτι με έτρωγε να δοκιμάσω.... Μια βάση δεδομένων του γούστου μου θα ήταν ότι έπρεπε....

Παραθέτω ένα demo της εφαρμογής.

https://www.youtube.com/watch?v=jHVptAdctKY&t=618s

 

Δώσε αστέρια!

MO: 4 (ψήφοι: 5)

Σχόλια

Πολύ ενδιαφέρον το project και μπράβο για την προσπάθεια σου!

Προσπάθησα να το δοκιμάσω, το κατέβασα από την ιστοσελίδα του στο SF,  το έτρεξα στο Ubuntu 18.04 μου αλλά το πρόγραμμα χρησιμοποιεί κάποιο emulation library σε SDL για το παλιό-καλό  Borland Graphics Interface (εισαι τόσο «παλιοσειρά» έτσι;):

$ ./pedaba2
./pedaba2: error while loading shared libraries: libSDL_bgi.so: cannot open shared object file: No such file or directory

Εγκατέστησα το libsdl2-dev, το libsdl1.2-dev αλλά το συγκεκριμένο library (libxbgi) δεν υπάρχει στο Ubuntu/Debian (πιθανολογώ λόγω άδειας χρήσης). Το κατέβασα όμως από την ιστοσελίδα του στο https://sourceforge.net/projects/libxbgi/ και το εγκατέστησα.

Τώρα μόλις τρέχω το πρόγραμμα σου, πάει κάτι να εμφανίσει σε full screen mode κι αμέσως μετά επιστρέφει χωρίς κάποιο μήνυμα σφάλματος.

Από το λίγο που το έψαξα, το πρόγραμμα σου φαίνεται να χρειάζεται τα παρακάτω libraries:

$ objdump -p ./pedaba2  | grep NEEDED
  NEEDED               libSDL_bgi.so
  NEEDED               libSDL2-2.0.so.0
  NEEDED               libm.so.6
  NEEDED               libc.so.6

Τα οποια κι έχω εγκατεστημένα:

$ ldd ./pedaba2
    linux-vdso.so.1 (0x00007ffffc5f7000)
    libSDL_bgi.so => /usr/lib/x86_64-linux-gnu/libSDL_bgi.so (0x00007f3ff6edc000)
    libSDL2-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0 (0x00007f3ff6baa000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3ff680c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3ff641b000)
    libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007f3ff6114000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3ff5f10000)
    libpulse.so.0 => /usr/lib/x86_64-linux-gnu/libpulse.so.0 (0x00007f3ff5cc0000)
    libsndio.so.6.1 => /usr/lib/x86_64-linux-gnu/libsndio.so.6.1 (0x00007f3ff5ab0000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f3ff5778000)
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f3ff5566000)
    libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f3ff535c000)
    libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f3ff5159000)
    libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f3ff4f49000)
    libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f3ff4d3e000)
    libXss.so.1 => /usr/lib/x86_64-linux-gnu/libXss.so.1 (0x00007f3ff4b3a000)
    libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f3ff4934000)
    libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f3ff4732000)
    libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f3ff4523000)
    libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f3ff431b000)
    libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f3ff40dc000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3ff3ebd000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f3ff3cb5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f3ff70f6000)
    libpulsecommon-11.1.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so (0x00007f3ff3a37000)
    libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f3ff37ea000)
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f3ff35d5000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f3ff33ad000)
    libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f3ff31a3000)
    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f3ff2f9d000)
    libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f3ff2d95000)
    libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f3ff2b11000)
    libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007f3ff2907000)
    libsndfile.so.1 => /usr/lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007f3ff268e000)
    libasyncns.so.0 => /usr/lib/x86_64-linux-gnu/libasyncns.so.0 (0x00007f3ff2488000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f3ff2284000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f3ff207e000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f3ff1e58000)
    liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f3ff1c3c000)
    libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f3ff1921000)
    libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f3ff1707000)
    libFLAC.so.8 => /usr/lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007f3ff1490000)
    libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007f3ff1287000)
    libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007f3ff105c000)
    libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007f3ff0db3000)
    libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f3ff0b98000)
    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f3ff0983000)

Οπότε δεν μπορώ να καταλάβω τι συμβαίνει...

Παλιοσειρά Δημήτρη μου .. ναι !!!

Ρίξε μια ματιά στις οδηγίες εγκατάστασης ! Είναι μια βιβλιοθήκη που πρέπει να εγκαταστήσεις με τον debian installer !! Αυτή κάνει την προσαρμογή των παλιών συναρτήσεων γραφικών που γνωρίζω στα νέα δεδομένα ....  (sdl_bgi_2.3.0-1_amd64.deb) Καλή επιτυχία !

Την έχω εγκαταστήσει την sdl_bgi_2.3.0.

Και για του λόγου το αληθές, την κατέβασα ξανα και την εγκατέστησα:

$ sudo dpkg -i sdl_bgi_2.3.0-1_amd64.deb
(Reading database ... 356773 files and directories currently installed.)
Preparing to unpack sdl_bgi_2.3.0-1_amd64.deb ...
Unpacking sdl_bgi (2.3.0) over (2.3.0) ...
Setting up sdl_bgi (2.3.0) ...

Αλλά πάλι τα ίδια. Μόλις το τρέχω, πάει κάτι να ανοίξει και σε κλάσματα δευτερολέπτου επιστρέφει:

$ ./pedaba2
$

Σε κάποια λειτουργικά πρέπει να ορίσεις πάλι ως executable το αρχείο "pedaba2". Τι φαίνεται στις ιδιότητες ; Και μην το ξεχάσεις ότι πρέπει ο φάκελος της εφαρμογής να είναι στο /home/username

Αν δεν τρέξει πάραυτα , τότε θα εγκαταστήσω το λειτουργικό σου εδώ σε μένα να το τσεκάρω.  Είμαι πολύ περίεργος.... Ελπίζω να τα καταφέρεις .

To εχω κάνει executable. To πρόβλημα δεν είναι εκεί, το πρόγραμμα πάει να ξεκινήσει, φαίνεται να ανοίγει μια οθόνη full screen αλλά αμέσως μετά επιστρέφει χωρίς άλλη εξήγηση.

Θα ήταν καλό, να βάλεις debugging μηνύματα (ειδικά στην αρχή) τα οποία να τυπώνονται όταν ο χρήστης τρέξει το πρόγραμμα με κάποια παράμετρο --debug. Ετσι θα μπορέσουμε ίσως να δούμε σε ποιο σημείο φτάνει η εκτέλεση και τι του φταίει.

Εναλλακτικά, αντί για νέο release, ισως μπορείς να το δοκιμάσεις σε κάποιο Ubuntu 18.04?

Ρίξε μια ματιά στο /home/UserName/Pedaba/TMP/zenerr.dat

(Βασικά κάνει αυτό που λες...)

Εν τω μεταξύ μόλις τώρα θυμήθηκα ότι έχει δοκιμασθεί στο kubuntu 18.

Πολύ περίεργο ....

Έχεις το φάκελο "Pedaba" στο /home/username/ ?

Υπόψη ότι κατεβάζεις το pedaba.tar.gz !!! (ως default)

Μάλλον κατέβασες το pedaba2 μόνο του το οποίο απλά αντικαθιστούσε το αντίστοιχο αρχείο μέσα στο φάκελο Pedaba , σε περίπωση που κάποιος είχε ήδη κατεβάσει το default συμπιεσμένο pedaba.tar.gz (αυτό αποσυμπιεζόμενο δίνει το φάκελο Pedaba). 

Όταν έδινα update και δεν ήθελε κάποιος να κατεβάσει ολόκληρο το φάκελο μπορούσε να κατεβάσει μόνον το executable . Για αυτό το λόγο το αφαίρεσα κι εγώ εντελώς από το SF και άφησα το pedaba.tar.gr.

Είμαι σχεδόν σίγουρος ότι αυτό έχεις κάνει , το ελπίζω δηλαδή ...

OK, είχες δίκιο. Είχα κατεβάσει το αρχείο pedaba2.tar.gz από την αρχική σελίδα: https://sourceforge.net/projects/pedaba-2/

Τώρα κατέβασα το σωστό από εδώ https://sourceforge.net/projects/pedaba-2/files/  και παίζει μια χαρά :)