posted by qubix on August 9, 2013

Το boinc (Berkeley Open Infrastructure for Network Computing) είναι ένα λογισμικό που μας επιτρέπει να συμμετέχουμε δίνοντας τον αδρανή χρόνο του υπολογιστή μας σε ένα από τα πολλά projects που χρειάζονται επεξεργαστική ισχύ όπως για την θεραπεία ασθενειών, τη μελέτη της παγκόσμιας ανόδου της θερμοκρασίας, την ανακάλυψη άστρων pulsar, και πολλά άλλα είδη επιστημονικής έρευνας

enable epel repo and install
Καταρχήν χρειάζεται να ενεργοποιήσουμε το epel repository για να κατεβάσουμε το boinc:
- Κατεβάζουμε την τελευταία έκδοση του epel σε rpm από το
http://dl.fedoraproject.org/pub/epel/6/x86_64/
- Την εγκαθιστούμε epel-release:
rpm -Uvh epel-release*rpm
- Τώρα εγκαθιστούμε τον boinc client και manager:
yum install boinc-client
yum install boinc-manager

Ενεργοποιούμε το X forwarding
Στον σέρβερ βεβαιωνόμαστε πως στο /etc/ssh/sshd_config υπάρχουν τα:

X11Forwarding yes
X11DisplayOffset 10
Αν όχι τα βάζουμε και κάνουμε restart τον ssh daemon

Τέλος αν δεν το έχουμε ήδη, εγκαθιστούμε το xauth
user@server:~$ which xauth
/usr/bin/xauth
Χωρίς το xauth θα βρεθούμε μπροστά στο σφάλμα:"empty DISPLAY environment variable"

Στο local μηχάνημά σας συνδεθείτε με ssh βάζοντας την παράμετρο -Χ ώστε να επιτρέπεται το Χ11 forwarding. Κάτι σαν αυτό δλδ:

ssh -X user@the-server

τρέξτε τον daemon και τον manager

/etc/init.d/boinc start και
boincmgr

κάντε τις ρυθμίσεις και attach σε κάποιο project

Πριν κάνετε attach σε κάποιο από τα projects που υποστηρίζουν τον boinc, βεβαιωθείτε πως έχετε κάνει τις ρυθμίσεις που θέλετε (cpu utilization, disk usage, limits etc..) από τη σελίδα του project που σας ενδιαφέρει και μετά κάντε το attach από τον manager.

Αφού όλα αρχίσουν να δουλεύουν, μπορείτε από τον manager να δείτε τι tasks τρέχουν, τη χρήση του δίσκου, μηνύματα και άλλα διάφορα.

posted by qubix on July 14, 2013


Αφού κάνουμε upgrade το mate είτε από την 1.2 είτε από την 1.4 έκδοση στην 1.6, διαπιστώνουμε πως ξαφνικά δεν βλέπουμε τα thumbs από εικόνες, pdf κλπ, πως η cpu τρέχει σαν τρελή και ο δίσκος όλο γράφει και γράφει κάτι.

Δε συμβαίνει κάτι περίεργο, απλά ο νέος caja ψάχνει τον φάκελο ~/.cache/thumbnails που δεν υπάρχει! Αντί αυτού πάει στον ~/.thumbnails/failed και γράφει εκεί..κάτι...

Συνεπώς η λύση είναι απλή:

- bootάρουμε σε single user mode ή αν δεν έχει (κανένα ubuntu-based δλδ...) κάνουμε logout και πατάμε Ctrl-F1 για να ανοίξουμε κονσόλα - αφού κάνουμε login σβήνουμε τον φάκελο ~/.thumbnails και ότι έχει μέσα
- και τον αντικαθιστούμε με ένα symlink:
ln -s ~/.cache/thumbnails ~/.thumbnails

κάνουμε reboot και θα διαπιστώσουμε πως όλα πάνε καλά..

posted by qubix on July 6, 2013

crude steps to install and use a dvb hybrid pcmcia card on arch

card: Kworld NB TV 220

1) view dmesg

2) generic, autodetect failed!

3) 17de:7203 -->this is the id of the card

4) card=88 -> Tevion/KWorld DVB-T 220RF 17de:7201 -->this is the closest I could find. Hopefully it uses the same chipset!

5)/etc/modprobe.d/saa7134.conf --> now edit this to pass the following parameter
options saa7134 card=88

6) pacman -S dvbutils

7) dvbscan /usr/share/dvb/dvb-t/gr-Athens > .tzap/channels.conf
Unable to query frontend status -->oops not working!

8) dvbv5-scan /usr/share/dvb/dvb-t/gr-Athens > .tzap/channels.conf ERROR key/value without a channel group while parsing line 3 of /usr/share/dvb/dvb-t/gr-Athens -->not working either

9) new file format for dvbv5-scan
Apparently there is a new format..
cp /usr/share/dvb/dvb-t/auto-Default .
dvb-format-convert -I CHANNEL -O DVBV5 auto-Default auto-Default-v5
dvbv5-scan auto-Default-v5

10) dvbv5 channel file incompatible with vlc --> but vlc doesnt understand it
dvb-format-convert segfault -->and the default util throws a segfault..

11) w_scan -->daraam this is a utility we can use to convert channel format output
wget http://wirbel.htpc-forum.de/w_scan/w_scan-20130331.tar.bz2
extract
./configure
make
make install
w_scan -ft -L > channels.xspf

12) vlc channels.xspf
-->this works! Finaly!!
DONE

posted by qubix on May 8, 2013

Apache Logs

General Error and Auditing Logs:
Location : /usr/local/apache/logs/error_log
Info : Όλα τα σφάλματα που "πιάνει" ο httpd daemon μαζί με το στάνταρ output από cgi εφαρμογές πάει εδώ.

Domain Access Logs:
Location : /usr/local/apache/domlogs/domain.tld
Info : γενικό access log για κάθε domain

Apache Access Logs:
Location : /usr/local/apache/logs/access_log
Info : πλήρες access log με όλα τα requests που ικανοποιεί ο server.

MySQL Logs

MySQL General Information and Errors:
Location : /var/lib/mysql/$(hostname).err
Info : τα log αυτά μπορεί να βρίσκονται και στο /var/log/mysql.log e

Exim Logs
Location: /var/log/exim_mainlog
Info: To mainlog έχει τα πάντα, incoming, outgoing etc
    
Location: /var/log/exim_rejectlog
Info: Το rejectlog περιέχει όλες τις συνδέσεις που δεν έγιναν. Αυτή η πληροφορία υπάρχει και στο mainlog

cPanel logs

Όλα τα logs του cpanel βρίσκονται στο /usr/local/cpanel/logs directory.

Location: /usr/local/cpanel/logs/access_log
Info:
This access_log contains all traffic to WHM, cPanel, and webmail over http.

Location: /usr/local/cpanel/logs/error_log
Info: This error_log contains all errors that occur when accessing a cPanel related site over http or https.

FTP logs

Location: /var/log/messages
Info: Άσχετα από τον ποιό FTP server χρησιμοποιείτε, το cpanel λογκάρει τις συνδέσεις, τα uploads, downloads κλπ. Ο ίδιος ο FTP server όμως δεν έχει logfile και όλα καταγράφονται στο system messages logfile μαζί με όολα τα υπόλοιπα συστεμικά μηνύματα τα οποία καταγράφονται εκεί.

posted by qubix on April 2, 2013

Στο προηγούμενο άρθρο έγραψα για τη χρήση του xrandr ώστε να προσθέσω ένα νέο mode για καλύτερη ανάλυση. Αφού το προσθέσω όμως, στην επόμενη επανεκκίνηση θα έχουν εξαφανιστεί όλα...τι κάνουμε λοιπόν? Υπάρχουν 2 εύκολες επιλογές:

1) γράφουμε στο home του χρήστη μας το αρχείο .xprofile στο οποίο βάζουμε τις εντολές του xrandr


xrandr --newmode "1280x1024_75.00"  138.54  1280 1368 1504 1728  1024 1025 1028 1069  -HSync +Vsync
xrandr --newmode "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060 -HSync +Vsync
xrandr --addmode DVI-1 "1280x1024_75.00"
xrandr --addmode DVI-1 "1280x1024_60.00"
xrandr --output DVI-1 --mode "1280x1024_75.00"

Το κακό με μια τέτοια λύση είναι πως οι αλλαγές μας θα τρέξουν σχετικά αργά στο boot proccess και συγκεκριμένα αφότου κάνουμε login οπότε θα δούμε παράθυρα να αλλάζουν μέγεθος ή μπορεί να έχουμε σφάλματα σε applets κλπκλπ

2) Μπορούμε να βάλουμε τις εντολές στον εκάστοτε login manager μας
Για τον GDM μπορούμε να βάλουμε ένα startup script στο /etc/gdm/ ενώ για τον KDM στο /etc/kde4/kdm/Xsetup .Για τον lightdm χρειάζεται να πάμε στο /etc/lightdm/lightdm.conf και να του πούμε πως θέλουμε να τρέξει ένα script το οποίο θα έχει μέσα τις παραπάνω εντολές και το οποίο μπορούμε να το βάλουμε πχ στο /usr/share . Οπότε θα βρούμε τη γραμμή display-setup-script, θα την κάνουμε uncomment και θα προσθέσουμε το path του μαγικού script μας!
Οι παραπάνω επιλογές είναι καλύτερες γιατί τρέχουν το xrandr νωρίτερα στο boot proccess και οι αλλαγές είναι ορατές σε όλους τους χρήστες όχι μόνο σε αυτόν που βάλαμε το .xprofile .
Tέλος, είναι δυνατό να βάλουμε τις ρυθμίσεις μας στο xorg.conf, το οποίο παρότι πλέον είναι άδειο, μπορούμε να το χρησιμοποιήσουμε για τους σκοπούς μας με ασφάλεια. Επίσης θα μπορούσαμε αντί για το /etc/X11/xorg.conf να φτιάξουμε ένα directory (αν δεν υπάρχει ήδη!) /etc/X11/xorg.conf.d/ και εκεί μέσα να βάλουμε τις ρυθμίσεις για την ανάλυση.

Περισσότερα για όλα αυτά στο μπορείτε να βρείτε στο ubuntu wiki και σε πολλά άλλα μέρη στο 'net.

posted by qubix on March 31, 2013

Αφού έστησα ένα pc με ένα debian unstable (siduction) και όλα πήγαν ρολόι, ανακάλυψα πως η ανάλυση του monitor είχε κολλήσει στα 1024x768 ενώ το monitor το ίδιο μπορεί να φτάσει τα 1280x1024.
Αρχικά σκέφτηκα πως το πρόβλημα μπορεί να είναι το οτι σύνδεσα το monitor στην 2η DVI έξοδο της κάρτας ή πως κάτι δεν πήγε καλά γιατί η κάρτα έχει μόνο DVI εξόδους αλλά τίποτα από αυτά δεν έφταιγε.
Απλά..απουσίαζε η ανάλυση που ήθελα. Με το xrandr προσπάθησα να δω τι συμβαίνει:


$xrandr -q
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
S-video disconnected (normal left inverted right x axis y axis)
DVI-1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       60.0* 
   800x600        60.3     56.2
848x480 60.0
640x480 59.9

Όντως δεν υπήρχε τέτοιο mode που ήθελα. Η λύση είναι απλή: θα το προσθέσω! Το γιατί δεν υπήρχε αυτό ήταν άλλο θέμα και απλά ήθελα να παίξει με τη σωστή ανάλυση η οθόνη. Αρχικά με το gtf (calculate VESA GTF mode lines) θα βρούμε τις παραμέτρους που χρειαζόμαστε:

$gtf 1280 1024 60
   1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz
  Modeline "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync +Vsync

Μετά θα βάλουμε ένα νέο mode στο xrandr το 1280x1024_60.00. To xrandr παίρνει GTF mode lines ακριβώς αυτό που πήραμε με το gtf δλδ! :<br/>

$xrandr --newmode "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060 -HSync +Vsync

Ξανά xrandr -q για να δούμε οτι όντως υπάρχει αυτό το νέο mode:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
S-video disconnected (normal left inverted right x axis y axis)
DVI-1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       60.0* 
   800x600        60.3     56.2
848x480 60.0
640x480 59.9
1280x1024_60.00 (0x157) 108.9MHz h: width 1280 start 1360 end 1496 total 1712 skew 0 clock 63.6KHz v: height 1024 start 1025 end 1028 total 1060 clock 60.0Hz

Τώρα χρειάζεται να το προσθέσουμε στο output μας (DVI-1) ώστε να το χρησιμοποιήσει το xrandr και να αλλάξει η ανάλυση:

$xrandr --addmode DVI-1 "1280x1024_60.00"

Για τέλος αρκεί να πούμε στο xrandr να χρησιμοποιήσει το νέο mode:

$xrandr --output DVI-1 --mode "1280x1024_60.00"

Αυτό ήταν όλα φαίνονται ωραία και πάλι!

posted by qubix on March 29, 2013

Αν έχετε δει ποτέ το παραπάνω error, ΜΗΝ ψάχνετε για το χαμένο .htaccess file..το πραγματικό πρόβλημα είναι στα δικαιώματα που έχει το αρχείο το οποίο προσπαθείτε να προσπελάσετε ή ο κατάλογος στον οποίο βρίσκεται

posted by qubix on February 8, 2012

Χθες πήγα να δω μια εφαρμογή java από τον iceweasel και..δεν υπήρχε το plugin. Σα  να μην έφτανε αυτό, στα repositories του debian (και μερικών άλλων) δεν βρήκα τίποτα σχετικό πέρα από το ότι ένα plugin εγκαθίσταται μαζί με την java στο σύστημα...

οπότε ποιό είναι αυτό το plugin? με λίγο ψάξιμο βρήκα πως είναι το libnpjp2.so και τα βήματα για να το δει ο browser είναι εν ολίγοις:

1) locate libnpjp2.so *

στο σύστημά μου το βρήκε στο /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/libnpjp2.so

2) cd /usr/lib/mozilla/plugins/

και φτιάχνουμε ένα symlink στο παραπάνω plugin

ln -s /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/libnpjp2.so libnpjp2.so

3) restart τον browser

 

*)για να υπάρχει αυτό το plugin πρέπει να είναι εγκατεστημένη η java στο σύστημα. Συνήθως μιας που όλοι και όλες χρησιμοποιούμε το open/libre office, εγκαθίσταται με αυτό.
 Anywayz για να δούμε αν την έχουμε:

dpkg -l | grep java

θα πρέπει να μας βγάλει ότι έχουμε είτε την open είτε τη sun java implementation

Αν όχι την εγκαθιστούμε με apt-get install

posted by qubix on January 30, 2013

Λοιπόν ήρθε η ώρα να εγκαταστήσω έναν nginx. Το μηχανάκι στο οποίο θα κάνω το πείραμα έχει ήδη επάνω ένα lamp installation οπότε για αρχή θα απεγκαταστήσω τον apache


apt-get --purge remove apache2*
Ωραία τώρα που ξεφορτωθήκαμε τον apache, πάμε να βάλουμε τον nginx

apt-get install nginx php5-fpm
Reading package lists... Done
Building dependency tree
Reading state information... Done The following extra packages will be installed: nginx-common nginx-full The following NEW packages will be installed: nginx nginx-common nginx-full php5-fpm 0 upgraded, 4 newly installed, 0 to remove and 17 not upgraded. Need to get 3,209 kB of archives. After this operation, 9,382 kB of additional disk space will be used. Do you want to continue [Y/n]? y
Μετά πάμε να ρυθμίσουμε λίγο το php5-fpm. Τι είναι όμως αυτό το fpm? Κάνοντας ένα apt-cache show php5-fpm παίρνουμε το αποτέλεσμα: Description-en: server-side, HTML-embedded scripting language (FPM-CGI binary) This package provides the Fast Process Manager interpreter that runs as a daemon and receives Fast/CGI requests. Μάλιστα, τώρα που μάθαμε τι είναι αυτό που θα ρυθμίσουμε και που εγκαταστήσαμε, πάμε στο

nano /etc/php5/fpm/php-fpm.conf
Σκοπός μας είναι να αλλάξουμε μερικές μεταβλητές τις οποίες δυστυχώς δεν βρίσκουμε στο παραπάνω αρχείο και πρέπει να πάμε στο conf του pool [www] του php5-fpm. Τα pools είναι ένας τρόπος να παραμετροποιούμε διαφορετικά sites ή groups από sites στα οποία θα συμπεριφέρεται διαφορετικά ο php5-fpm daemon.

nano /etc/php5/fpm/pool.d/www.conf
Στο αρχείο αυτό βάζουμε τα παρακάτω: pm.max_children = 25 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 10 pm.max_requests = 500 request_terminate_timeout = 35s και κάνουμε ένα restart τον daemon:

/etc/init.d/php5-fpm restart
Τα παραπάνω values είναι ενδεικτικά για 1g RAM και εσείς ανάλογα με το μηχάνημά σας μπορείτε να τα τροποποιήσετε αναλόγως.
Σειρά τώρα έχει ο nginx, θέλουμε απλά να του βάλουμε τα παρακάτω: client_max_body_size 20M; client_body_buffer_size 128k; Το αρχείο είναι το /etc/nginx/nginx.conf. Αν τα παραπάνω δεν τα βρίσκουμε, τα βάζουμε μέσα στο http block, στο οποίο υπάρχουν διάφορα ενδιαφέροντα όπως gzip support, που είναι τα logs κλπ κλπ.
Τώρα πάμε να δούμε λίγο το default profile στο sites-enabled:

nano /etc/nginx/sites-enabled/default
To πρώτο που έκανα είναι να αλλάξω το root path από /usr/share/nginx σε /var/www .Επίσης έκανα comment τη γραμμή listen [::]:80 default_server; που είναι για ipv6.
Τώρα πάμε να του πούμε πως θέλουμε τα php scripts να τα περνάει στο php5-fpm. To section αυτό είναι κάτω από το: # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
Και το κάνουμε κάπως έτσι:

 fastcgi_split_path_info ^(.+.php)(/.+)$;
 # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
 # With php5-cgi alone:
 # fastcgi_pass 127.0.0.1:9000;
 # With php5-fpm:
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
Όπως βλέπουμε το κομμάτι με το από CGI παραμένει commented, αφού εμείς έχουμε fcgi με το php5-fpm. Καλό είναι να βάλουμε τα .htaccess files να μην είναι προσβάσιμα οπότε:

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 location ~ /.ht {
    deny all;
 }
Μετά από όλα αυτά, πάμε να κάνουμε reload τον nginx:

/etc/nginx/nginx reload
Σε περίπτωση σφάλματος, κοιτάμε στο /var/log/nginx/error.log. Για παράδειγμα εγώ είχα ενεργοποιήσει το ssl, το οποίο χτυπούσε και δεν μπορούσε να ξεκινήσει ο nginx.

Τεστάρουμε τώρα την εγκατάστασή μας πηγαίνοντας στο http://localhost

posted by qubix on January 15, 2013

Λοιπόν, το καλό με το linux είναι πως μπορείς να το έχεις χρόνια χωρίς να κάνεις επανεγκαταστάσεις. Ακόμη και να αλλάξεις διανομή μπορείς (εφόσον είναι στην ίδια οικογένεια πχ από debian testing σε aptosid σε siduction)! Το κακό είναι πως έτσι μπορεί να μαζευτεί πολλή σαβούρα.

Μερικά απλά βηματάκια
1) Κοιτάμε τι πακέτα έχουμε εγκαταστήσει και όσα τα θεωρούμε πλέον αχρείαστα ή άχρηστα, τα απεγκαθιστούμε με:
apt-get --purge remove my_useless_package
το όρισμα --purge remove το βάζουμε ώστε να μην κρατηθούν τα configuration αρχεία, κάτι που εκ του default το apt/dpkg/synaptic/aptitude έχουν ως πρακτική.

2) Καθαρίζουμε τα cached αρχεία του apt
Παρόλο που σε κάποιες περιπτώσεις είναι χρήσιμο να υπάρχουν τα πακέτα που έχουμε εγκαταστήσει σε μορφή deb, πράγμα που το apt κάνει εξ'ορισμού στο /var/apt/cache, γενικώς μπορούμε να τα στείλουμε στον κουβά κάνοντας:
apt-get clean

3) Καθαρίζουμε πλέον άχρηστα πακέτα που μας λέει το apt
Αν το apt μας ειδοποιήσει πως υπάρχουν πακέτα τα οποία δεν χρειάζονται πια, καλό είναι να τα βγάλουμε με:
apt-get autoremove

4) Ψάχνουμε για τυχόν ορφανά πακέτα
Εγκαθιστώντας το deborphan μπορούμε να δούμε μια λίστα με πακέτα τα οποία κάποια στιγμή ίσως εγκαταστάθηκαν ως εξαρτήσεις και πλέον δεν χρειάζονται πουθενά:
H εντολή είναι... deborphan :P
Για να βγάλουμε τα πακέτα αυτά μπορούμε να κάνουμε:
apt-get --purge remove `deborphan`
Στο bash shell ότι βάζουμε μέσα σε "`" αντικαθίσταται με το output του.

5) Επειδή είναι πιθανό να έχουν ξεμείνει configuration αρχεία από παλιότερες εγκαταστάσεις ή από παλιότερες εκδώσεις προγραμμάτων, καλό είναι κατά διαστήματα να ψάχνουμε για τέτοια configuration αρχεία. Ένας τρόπος είναι:
dpkg --list | grep '^rc\b' | awk '{ print $2 }'
Τι κάνει αυτή η εντολή:
- dpkg --list : πετάει μια λίστα με όλα τα πακέτα που υπάρχουν στο σύστημα
- grep '^rc\b' : ψάχνει για το string 'rc' στο output του dpkg --list και επιστρέφει μόνο αυτά που βρίσκει
- awk '{ print $2 }' : από αυτά που βρήκε η grep, μας διαλέγει μόνο τη δεύτερη στήλη η οποία είναι το package name.

Αν στο τέλος περάσουμε το αποτέλεσμα πάλι στο dpkg μέσω xargs, μπορούμε να τα διώξουμε οριστικά!
dpkg --list | grep '^rc\b' | awk '{ print $2 }'| xargs dpkg -P
Το -P στο dpkg είναι το PURGE.
Την ίδια λειτουργία μπορούμε να κάνουμε και με το deborphan: deborphan --find-config

Ορφανά, άχρηστα, παλιά πακέτα είναι αυτά που είτε δεν χρησιμοποιούνται πλέον από το σύστημα, είτε δεν υπάρχουν στα repositories. Οι λόγοι είναι διάφοροι όπως:
- δεν υπάρχει πλέον maintainance του πακέτου
- το πακέτο μπορεί να έχει μείνει ορφανό χωρίς developer εδώ και καιρό και να μην είχε και πολλούς χρήστες οπότε και η debian QA ομάδα μπορεί να το έχει απομακρύνει
- η τελευταία έκδοση του εν λόγω software μπορεί να έχει πακεταριστεί με άλλο όνομα είτε επειδή έχουν γίνει πολλές αλλαγές, είτε για να μην υπάρχει confict με την παλιότερη έκδοση για λόγους συμβατότητας
- το πρόγραμμα έχει αλλάξει όνομα, ο maintainer το έχει μετονομάσει αλλά έχει κρατήσει κάποια μεταβατικά πακέτα με το παλιό και μετά αυτά έχουν απομακρυνθεί από τα repos.

Όποιος και να 'ναι ο λόγος, πλέον ξέρετε πως να ξεφορτωθείτε τα παλιά αυτά πακέτα!

hyperworks