Πέμπτη 16 Ιουνίου 2011

Έλληνας Γραφίστας

Kubuntu με
GIMP
inkscape
openshot
LibreOffice

+++ sk1

Για τό sk1:

Ανοίγετε το Synaptic και πηγαίνετε στο μενού Ρυθμίσεις -> Repositories (ή αν το έχετα κάνει ελληνικά Αποθετήρια) και προσθέτετε το:
deb http://ppa.launchpad.net/stani/ppa/ubuntu jaunty main
(έχει και 32 και 64bit)
Μην κάνετε ακόμα ανανέωση.
Σε ένα παράθυρο τερματικού γράφετε:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com
Για να πάρει και το κλειδί του αποθετηρίου.
Κάντε τώρα ανανέωση.
Πάλι σε παράθυρο τερματικού γράφετε
sk1
και πατάτε enter
ή, εναλλακτικά,
δεξί κλικ στην επιφάνεια εργασίας
Δημιουργία εκκινητή...
Στο όνομα και στο σχόλιο ότι θέλετε
Στο Εντολή
sk1
και αποθήκευση.
Αν θέλετε αλλάζετε και το εικονίδιο:
Δεξί κλικ -> ιδιότητες
Κλικ στο εικονίδιο
Επιλογή άλλου εικονίδιου κλπ
(Αν δεν ξέρετε που έχετε τα εικονίδια λυπάμαι γιατί ούτε κι εγώ ξέρω... και γι'αυτό δεν το άλλαξα)

Δευτέρα 13 Ιουνίου 2011

Hylafax Server, φαξ σέρβερ

Θα χρειαστείτε:
Έναν υπολογιστή (όχι πολύ παλιό όμως)
Ενα modem σειριακό (όχι modem-router για DSL)
Τηλεφωνική γραμμή και γραμμή Internet.

Εγκαταστήστε το UBUNTU ή το DEBIAN.
Από το Synaptics εγκαταστήστε το Hylafax.
Ανοίξτε ενα τερματικό.
Πληκτρολογείστε
Για UBUNTU
sudo faxsetup

Για DEBIAN
su
faxsetup

Σε όλα απαντάτε ναι (απλά, δηλαδή enter)
Εκτός από τα:
Country code: για Ελλάδα δώστε
30
Protection mode for received fax: δώστε
644
Protection mode for session logs: δώστε
644
Protection mode for ttySx: (x θα είναι κάποιο νούμερο μάλλον το 0) δώστε
666
Θα σας ζητηθεί να επιβεβαιώσετε τα στοιχεία.
Μετά θα ψάξει για το modem σας. Αν το βρει θα προσπαθήσει να το σετάρει.
Θα σας ζητήσει να αποφασίσετε αν το φαξ σας θα υποστηρίζει Class 1 ή/και Class 2
Εδώ θα πρέπει να βάζετε πάντα το
Class 1
ώστε να υποστηρίζονται τα παλιά φαξ (που θα σας στέλνουν ή θα τους στέλνετε)
Αφού τα κάνει όλα αυτά θα σας δείξει τις τιμές για επιβεβαίωση (οπότε τις επιβεβαιώνετε) και θα ζητήσει να σετάρει και άλλο modem. Πείτε του όχι.

Θα πρέπει να έχετε πλέον τα εξής αρχεία:
/etc/hylafax/config.ttyS0
(αν το modem είναι σε άλλη σειριακή τότε θα έχετε το /etc/hylafax/config.ttyS1 ή κάτι ανάλογο)
/etc/default/hylafax
/etc/hylafax/hosts.hfaxd

Στο αρχείο
/etc/hylafax/config.ttyS0
(ή το αντίστοιχο) πρέπει να αλλάξετε τα εξής:
Για ελλάδα:
CountryCode: 30
Για Αθήνα:
AreaCode: 21
Το νούμερό σας: πχ. για το 2101234567
FAXNumber: +30.21.01234567
Δώστε μόνο 1 χτύπημα πριν απαντήσει:
RingsBeforeAnswer: 1
(Μη βάλετε μηδέν γιατί τότε θα απαντάει μόνο και δεν θα στέλνει φαξ)
Αν θέλετε να ακούτε και τον ήχο την ώρα που προσπαθεί να επικοινωνήσει με το άλλο φαξ (όχι την ώρα που θα ανταλλάσουν φαξ) δώστε:
SpeakerVolume: high
Πρέπει να βάλετε και το όνομά σας:
LocalIdentifier: "to onoma tis etaireias mou"
Με λατινικούς χαρακτήρες για την ώρα αφού ακόμα δεν έχει φτιαχτεί η υποστήριξη UTF-8.
Δώστε και το μέγιστο επικοινωνίας υπολογιστή-modem:
ModemRate: 38400
(τα περισσότερα είναι τόσο)
ModemFlowControl: xonxoff
(τα περισσότερα είναι έτσι)
Αυτά όλα δεν πρέπει να έχουν μπροστά τους κανένα σημάδι (δίεση-κάγκελο # ή ερωτηματικό ;) και δεν πρεπει να υπάρχουν δύο φορές, εκτός αν η δεύτερη φορά έχει μπροστά: δίεση-κάγκελο (#)

Από το Synaptics εγκαταστήστε το gfax.
Αφού εγκατασταθεί (για λόγους τεμπελιάς δεν έχει ολοκληρωθεί ακόμα η πλήρης εγκατάσταση και έτσι πρέπει να δημιουργήσετε κάποια αρχεία και φακέλους με το χέρι) σε ένα τερματικό πληκτρολογείστε:
sudo mkdir -m 777 /var/spool/gfax
sudo cp -f /usr/lib/gfax/cups-gfax /usr/lib/cups/backend/
sudo chmod 755 /usr/lib/cups/backend/cups-gfax
sudo ln -sf /usr/lib/cups/backend/cups-gfax /usr/lib/cups/backend-available/cups-gfax
sudo lpadmin -p Gfax_Facsimile_Printer -v cups-gfax:/ -m lsb/usr/cups-included/postscript.ppd -E
Με αυτόν τον τρόπο θα τρέξει το πρόγραμμα gfax
Υπάρχει στα προγράμματα οπότε ανοίξτε το. Θα γίνει μινιμάουζ οπότε κάντε του κλικ εκεί για να εμφανιστεί. Επιλέξτε τις προτιμήσεις και επιλέξτε το ότι χρησιμοποιείτε Hylafax και όχι efax. Βάλτε και το τηλέφωνό σας (αν καλείτε μέσα από κέντρο που χρειάζεται πρόθεμα για να πάρει εξωτερική γραμμή βάλτε το στο αντίστοιχο κουτάκι Dial Prefix).
Η ενημέρωση των πληροφοριών δεν είναι εντελώς αυτόματη οπότε πατήστε κάποιο άλλο Tab (Fascimiles to send ή Completed Jobs) και ξανά το προηγούμενο για να είστε σίγουροι ότι βλέπετε τις τελευταίες πληροφορίες.
Τώρα έχετε ένα έτοιμο φαξσέρβερ. Δοκιμάστε να στείλετε από άλλο μηχάνημα φαξ μια τυχαία σελίδα. Αν δουλέψει δοκιμάστε να στείλετε από το μηχάνημα αυτό ένα φαξ σε κάποιον άλλο. Ανοίξτε ένα πρόγραμμα π.χ. το gedit, και γράψτε κάτι. Πατήστε το εκτύπωση και διαλέξτε τον εκτυπωτή Gfax_Facsimile_Printer.
Επιλέξτε να τα τυπώσει όλα και όχι μόνο κάποιες σελίδες (ακόμα δεν δουλεύει καλά αυτό)
Θα ανοίξει ένα παράθυρο που πρέπει να του βάλετε το νούμερο που θέλετε να καλέσετε και να πατήσετε enter ώστε να πάει από κάτω με ένα κουτάκι κλικαρισμένο δίπλα του.
Πατήστε το εκτύπωση.
Αν όλα πάνε καλά τότε έχετε έτοιμο τον faxServer.
Αν θέλετε περισσότερα όπως πως να στέλνετε τα εισερχόμενα φαξ με e-mail στο λογαρισμός σας κλπ τότε ψάξτε το λίγο ή ζητήστε τεχνική υποστήριξη από την 123pc.gr

How to get a modern PC enviroment out of a MAC68 one

Install ubuntu 11.04!!!
BUT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
----Do not select the automatic login.
When computer starts...
Before typing your password, click on your user name.
At the bottom will be some options (such as Keyboard etc.)
Select Classic UBUNTU
Now type your password at the password field and....
VOILA!!!
A modern environment!!!
End of MAC68 (19th century) environment.
--------------------------------------------------------------
If you are stack with an already installed system then:
On the left there is an icon with a plus sign.
Click on it.
On the top to the right there is an application "menu".
Click on it.
Select the System (from the submenu which will pop up).
On the presented applications there is a group installed (not the first group, not the third group but the second).
It shows some of the installed applications (o lala!!! IBM-PC DOS 1900 something).
Click on the word who says to show more.
Find the "Login Screen".
Click on it.
An application that will let you choose if you want to be automatically login will open (maybe it will take some time so do not worry).
Maybe some times your password will be asked.
There is a button to unlock the application.
Click on it.
There you can select the UBUNTU Classic as environment.
Save it.
Click on the up right corner and select reboot.
Now you have a modern (21st century) environment instead of Apple's MAC68 environment (renamed as UBUNTU).
As Microsoft did (some years ago with IE) there is no way to completely remove and/or blacklist "unity" so it may come back again accidentally or by UBUNTU's policy.
So keep this page printed (or at least the URL) and in case UBUNTU's geeks will try hiddenly restore your environment to MAC68 look, re-disable it. Some clicks (or a bunch of them I may say) are worth if you want to be modern with a modern environment.

Κυριακή 22 Μαΐου 2011

greek ΑΦΜ

Αντιγράφετε το παρακάτω κείμενο σε έναν επεξεργαστή κειμένου.
Το αποθηκεύετε.
Ορίζετε ότι είναι εκτελέσιμο.
Ετοιμο το προγραμματάκι που ελέγχει αν το ΑΦΜ είναι σωστό. Μπορείτε να το καλείτε από γραμμή εντολών ή από άλλο πρόγραμμα.
Εγώ το ονόμασα isΑΦΜ.
Εσείς μπορείτε να του δώσετε άλλο όνομα.
(Αν πρόκειται να του δώσετε άλλο όνομα αλλάξτε τη γραμμή 27
example usage: user@user-desktop:~$ isΑΦΜ 999888777
με
example usage: user@user-desktop:~$ toonomapoythelete 999888777
ώστε να εμφανίζεται η βοήθεια σωστά.)

#!/bin/bash

# Greek ΑΦΜ check for Linux.
# Takes only one parameter: the ΑΦΜ.
# Exit code 9 if first parameter is not 9 digits long.
# Exit code 8 if first parameter is not only digits.
# Exit code 0 for good ΑΦΜ.
# Exit code 1 or 10 for bad ΑΦΜ.
# Exit code 2 if script goes, for any other reason, to end.
# Copyright (C) 2011. ilias iliadis
# simsonbike-spam@yahoo.gr
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# On Debian GNU/Linux systems, the text of the GPL license,
# version 2, can be found in /usr/share/common-licenses/GPL-2.
LOCALSUCCESS=0
LOCALFUNCTIONFAILURE=3
LOCALUSAGE="example usage: user@user-desktop:~$ isΑΦΜ 999888777"
isdigit () # Tests whether *entire string* is numerical.
{ # In other words, tests for integer variable.
[ $# -eq 1 ] || return $LOCALFUNCTIONFAILURE

case $1 in
*[!0-9]*|"") return $LOCALFUNCTIONFAILURE;;
*) return $LOCALSUCCESS;;
esac
}

#if length of parameter 1 (the only one used for the moment) is not 9
if [[ ${#1} != 9 ]]
# then exit with code 9
then {
echo >&2 'error 9. Not 9 digits in ΑΦΜ (first parameter).'
echo >&2 $LOCALUSAGE
exit 9
}
fi
#if has at only digit characters
if isdigit "$1"
then
# do nothing
:
else
#return error 8
echo >&2 'error 8. Non digits in ΑΦΜ (first parameter).'
echo >&2 $LOCALUSAGE
exit 8
fi

#initialize to zero (just in case ...)
teliko=0
endiameso=0
#depending on the position find the partial checksum
for position in 0 1 2 3 4 5 6 7
do
endiameso=$(( $(( 2 ** $(( 8 - $position )) )) * ${1:$position:1} ))
#and add it to full checksum
teliko=$(( $endiameso + $teliko ))
done
#find the modulo 11 of checksum
modoffirst8=$(( $teliko % 11))
#if modulo 11 equals 10 then check if last digit is 0
if [[ $modoffirst8 = 10 ]]
then {
if [[ ${1:8:1} = 0 ]]
#if yes then ΑΦΜ is OK
then {
echo >&2 "ΑΦΜ OK"
exit $LOCALSUCCESS
}
else {
#else ΑΦΜ is wrong
echo >&2 "error 10. Not a real ΑΦΜ (first parameter)."
exit 10
}
fi
}
#else check if last digit equals modulo
else {
if [[ ${1:8:1} = $modoffirst8 ]]
then {
echo >&2 "ΑΦΜ OK"
exit $LOCALSUCCESS
}
else {
#else ΑΦΜ is wrong
echo >&2 'error 1. Not a real ΑΦΜ (first parameter).'
exit 1
}
fi
}
fi
#just in case
echo >&2 "error 2"
exit 2

Πέμπτη 14 Απριλίου 2011

LibreOffice

Install LibreOffice on UBUNTU in 4 steps:
sudo apt-get remove openoffice*.*
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice libreoffice-gnome language-support-en


(για Ελληνάρες ισχύει το παρακάτω παρμένο από http://osarena.net/2011/04/diagrapste-to-openoffice-ke-egkatastiste-to-libreoffice-me-4-entoles.html)

εγκαταστήστε το LibreOffice με 4 εντολές!

sudo apt-get remove openoffice*.*
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice libreoffice-gnome libreoffice-l10n-el libreoffice-help-el language-support-el

bye-bye OOo
There's a new guy in town. His name is LibreOffice!

Πέμπτη 10 Μαρτίου 2011

How to delete useless Windows Files in Ubuntu Linux

http://en.tuxero.com/2007/09/how-to-delete-useless-windows-files-in.html

If the files are in a samba directory you must use sudo

ex.
sudo find /my_path -type f -name "desktop.ini" -exec rm -f {} \;

Δευτέρα 21 Φεβρουαρίου 2011

Encryption and Byte[] manipulation.

encoding - decoding routine written in GAMBAS

Published under the Creative Commons Attribution-ShareAlike (CC-BY-SA) 3.0 license.


PRIVATE SUB encodedecode(whichFileIn AS String, whichFileOut AS String, whichCode AS Integer, OPTIONAL howmanybits AS Integer = 8, OPTIONAL frombit AS Integer = 0) AS Integer
'only deals with files of size up to 2.147.483.647-(whichcode+howmanybits+1) bytes
'change all declarations to "Long" if you want bigger files or "codes"
'And is memory depended because it loads all of the file to memory.
'(No check is done here)
'There is a cryptographic "leak" to consider:
'In every group of "howmanybits" bytes the first byte
'is decreased in every turn.
DIM PRERROROPENINFILE AS Integer = -1
DIM PRERRORRESIZINGARRAY AS Integer = -2
DIM PRERRORREADINFILE AS Integer = -3
DIM PRERRORKILLINGOUTFILE AS Integer = -4
DIM PRERROROPENOUTFILE AS Integer = -5
DIM PRERRORWRITEOUTFILE AS Integer = -6
DIM PRERROROPT1 AS Integer = -7
DIM PRERROROPT2 AS Integer = -8
DIM PRERROROPT1OR2 AS Integer = -9

DIM xcounter AS Integer 'using a temporary counter for small "FOR..NEXT"s
DIM prhFileIn AS File 'holds "file in" handle
DIM prhFileOut AS File 'holds "file out" handle
DIM prhBytesIn AS NEW Byte[] 'holds content of file in handle
DIM prhBitCollection AS NEW Integer[] 'a "collection" of bit potisions
DIM prhCode AS Integer 'holds a number for decrementing "code"
DIM prhTemp8 AS Integer 'holds a temporary index to "collection" of bit positions
DIM prhBitToXOR AS Integer 'holds the actual bit position to "XOR"
'We can use prhCode and find which byte to change
'but I think that will decrease the speed
DIM prhByteToChangeCounter AS Integer

IF howmanybits > 8 OR howmanybits < 1 THEN
'debuging:Message.Error("Bits must be from 1 to 8")
RETURN PRERROROPT1
END IF
IF frombit < 0 THEN
'debuging:Message.Error("frombits must be >=0")
RETURN PRERROROPT2
END IF
IF howmanybits + frombit > 8 THEN
'debuging:Message.Error("howmanybits + frombit must be <=8")
RETURN PRERROROPT1OR2
END IF

TRY prhFileIn = OPEN whichFileIn FOR READ
IF ERROR THEN
'debuging:Message.Error("Unable to open the 'IN' file")
RETURN PRERROROPENINFILE
END IF
'resize the byte array which will hold the in values
TRY prhBytesIn.Resize(Lof(prhFileIn))
IF ERROR THEN
'debuging:Message.Error("Unable to resize the array. Maybe not enough memory.")
RETURN PRERRORRESIZINGARRAY
END IF
'this actually reads all bytes in a byte array
TRY prhBytesIn.Read(prhFileIn)
IF ERROR THEN
'debuging:Message.Error("Unable to read the 'IN' file")
RETURN PRERRORREADINFILE
END IF
CLOSE prhFileIn
'create a "code" based on byte array size and number given from user
prhCode = whichCode + prhBytesIn.Max
'add bits of one "howmanybits" plus one so that, at the end,
'we allways have a number greater then howmanybits
'even if user gave as code 0 (zero)
prhCode += howmanybits + 1
'add as many bytes as groups of "howmanybits" bytes exists in source
prhCode += Int(prhCode / howmanybits) + 1 'added
'set the counter of bytes changed to zero
prhByteToChangeCounter = 0
'initialize the "collection" of bit positions
FOR xcounter = 0 TO howmanybits - 1
prhBitCollection.Add(xcounter)
NEXT
DO
'if we have changed all bytes then exit loop
IF prhByteToChangeCounter > prhBytesIn.Max THEN BREAK
'find which of the remaining "positions" of bits we must change
prhTemp8 = prhCode MOD (prhBitCollection.Max + 1)
'find which bit to xor from the "collection"
prhBitToXOR = prhBitCollection[prhTemp8]
'debuging:
TextArea1.Text &= prhBitToXOR
'remove that position from the collection
prhBitCollection.Remove(prhTemp8)
'"xor" the n'th position (=prhBitToXOR)
prhBytesIn[prhByteToChangeCounter] = BChg(prhBytesIn[prhByteToChangeCounter], prhBitToXOR + frombit)
'decrease "code"
DEC prhCode
IF prhBitCollection.Count < 1 THEN
'"reinitialize" the "collection" of bits
'debuging:TextArea1.Text &= "\n"
FOR xcounter = 0 TO howmanybits - 1
prhBitCollection.Add(xcounter)
NEXT
DEC prhCode 'added
END IF
'increease the counter of bytes changed
INC prhByteToChangeCounter
LOOP

IF Exist(whichFileOut) THEN
TRY KILL whichFileOut
IF ERROR THEN
'debuging:Message.Error("Unable to kill the "OUT" file")
RETURN PRERRORKILLINGOUTFILE
END IF
END IF
TRY prhFileOut = OPEN whichFileOut FOR CREATE 'WRITE 'CREATE
IF ERROR THEN
'debuging:Message.Error("Unable to open the "OUT" file")
RETURN PRERROROPENOUTFILE
END IF

TRY prhBytesIn.Write(prhFileOut)
IF ERROR THEN
'debuging:Message.Error("Unable to write to the "OUT" file")
RETURN PRERRORWRITEOUTFILE
END IF
CLOSE prhFileOut
RETURN prhBytesIn.Count
END

PUBLIC SUB sampleusageENcodefile()
DIM prhReturnedVar as Integer
prhReturnedVar=encodedecode("original.jpg", "encoded.notajpg", 12345)
IF prhReturnedVar<0 THEN
'an error occured
'do something here
'debuging:Message.Error("Unable to write to the "OUT" file")
ELSE
'no error occured
'
END IF
END

PUBLIC SUB sampleusageDEcodefile()
DIM prhReturnedVar as Integer
prhReturnedVar=encodedecode( "encoded.notajpg", "decoded.jpg", 12345)
END