Întrebări conjuncturale¶
“cmmdc” folosind Python¶
def cmmdc(a, b):
while b:
a, b = b, a % b
return a
Lansăm interpretorul, importăm modulul creat mai sus, apelăm funcţia “cmmdc()” conţinută de modulul nostru şi printăm rezultatul (dar cu un modul Python se poate opera şi în alte moduri, decât cel tocmai descris):
vb@vb:~/CCD-VS/web-lamp$ python
>>> import euclid
>>> gcd = euclid.cmmdc(120, 180)
>>> print gcd
60
>>>
Iar dacă vrem “cmmdc” pentru mai multe numere:
>>> d = reduce(euclid.cmmdc, [120, 180, 6000, 180000000, 6666660])
>>> print d
60
>>>
reduce(funcţie, listă) aplică funcţia indicată - care este de fapt un “pointer”: print euclid.cmmdc afişează <function cmmdc at 0xb770e454> - primei perechi de elemente, apoi continuă să o aplice rezultatului obţinut şi următorului item al listei, ş.a.m.d.
cum intru în mysql fără -u şi -p¶
Dacă avem acces la MySQL folosind user = ‘ccdvs’ şi password = ‘ilovevs’, atunci putem deschide shell-ul mysql tastând în linia de comandă a unui terminal:
mysql -u ccdvs -p
urmând să tastăm şi parola după apariţia mesajului “Enter the password”.
Dacă dorim să putem deschide mysql fără a mai folosi -u şi -p, putem proceda astfel: creem un fişier “ascuns” (numele începe cu caracterul punct) de configurare denumit .my.cnf, în rădăcina directorului propriu din /home:
touch ~/.my.cnf
Folosind un editor de text, înscriem în .my.cnf parola şi numele de user MySQL astfel:
[client]
user=ccdvs
password=ilovevs
După ce salvăm acest fişier, putem intra în mysql tastând simplu mysql (fără -u şi -p). Desigur, procedeul descris (şi ideea de a evita -u şi -p) “merge” pe calculatorul propriu, dar trebuie evitat în cazul serverului.
Pentru lămuriri puteţi vedeţi comentariile din fişierul /etc/mysql/my.cnf.
cum obţin HELP pentru comenzi MySQL¶
Dacă deschidem shell-ul mysql ca user ‘root’ (tastând pe linia de comandă a unui Terminal: mysql -u root -p) şi la promptul “mysql>” tastăm comanda show databases;, vedem că există o bază de date numită `mysql` (ea a fost creată automat, la instalarea MySQL). Folosind apoi use mysql; vedem ce tabele conţine (între ele - tabelul `user`). De regulă - de la instalare, deja - printre tabelele din baza de date `mysql` se găsesc 4 tabele relaţionate între ele denumite cu prefixul “help_”:
mysql> show tables like 'help%';
+-------------------------+
| Tables_in_mysql (help%) |
+-------------------------+
| help_category |
| help_keyword |
| help_relation |
| help_topic |
+-------------------------+
Aceste tabele sunt folosite de comanda HELP (probaţi help select;).
Dacă am vrea să obţinem un fişier de documentare pentru mai multe comenzi, putem proceda astfel: creem un fişier help.sql conţinând de exemplu:
help select;help join;
şi îl furnizăm spre execuţie shell-ului mysql, tastând pe linia de comandă a unui terminal:
mysql < help.sql > SQL.help
mysql va executa comenzile din fişierul sursă help.sql şi va înscrie rezultatele în fişierul SQL.help.
Auto-completare în shell-ul mysql¶
Bash permite “TAB-completion”: tastând pe linia de comandă de exemplu dpk şi apoi tasta TAB, linia se completează dpkg iar dacă acum tastăm TAB şi încă odată TAB - obţinem lista comenzilor care au prefixul “dpkg”; adăugând acum dpkg-r şi TAB, se completează dpkg-reconfigure.
În /etc/bash_completion.d/ se găsesc scripturi de configurare a facilităţii de auto-completare prin TAB pentru numeroase programe (şi le putem lua ca model pentru a adăuga eventual, un script propriu); există şi pentru mysqladmin, dar nu pentru mysql.
Explicaţia poate fi şi numai una de principiu: “mysqladmin” este un program pentru administrarea serverului MySQL şi deci, destinat liniei de comandă (astfel că sunt de dorit facilităţile de “TAB-completion”); dar “mysql” este destinat operării cu baze de date - operaţii care în mediul Web firesc nu se fac de la consolă, ci sunt angajate automat, din interiorul aplicaţiei Web curent executate.
Pe de altă parte, mysql însuşi permite să optăm sau nu, pentru “TAB-completion”: în /etc/mysql/my.cnf găsim:
[mysql]
no-auto-rehash # faster start of mysql but no tab completition
Dacă linia nu are la început “#” (caracterul de comentariu), atunci opţiunea “TAB-completion” este dezactivată (şi mysql va starta mai repede); în acest caz (“no-completion mode”), putem forţa citirea informaţiei de completare a numelor bazelor de date, a numelor tabelelor şi a numelor coloanelor tastând la promptul mysql> comanda rehash - după care vom beneficia de “TAB completion” în sesiunea de lucru curentă (dar numai pentru numele bazelor de date, tabelelor şi coloanelor, nu şi pentru comenzile MySQL).
Probabil că ne amintim ce frumos se face auto-completarea (inclusiv pentru comenzi) în fereastra “Command Window” din Microsoft Visual FoxPro… dar MySQL este destinat Internetului, nu Desktopului local şi este firesc ca facilităţile de acest tip să fie reduse la minimum (fiind totuşi posibil de creat prin scripturi proprii, ca în cazul oricărui produs “open-source”).
ce fişiere fac parte dintr-un pachet instalat¶
dpkg --listfiles mysql-server-5.1