Mutare fisier transaction log pe alt disk

Din considerente care tin de performanta este recomandat ca fisierul Transaction log al unei baze de date MSSQL sa se afle pe alta partitie decat baza de date. Pentru mutarea acestui fisier pe alta partitie se va utiliza instrumentul SQL Server Management Studio (SSMS). In pricipiu aceiasi pasi pot fi urmati pentru mutarea oricarui alt fisier din componenta unei baze de date MSSQL.

  1. Autentificare in SSMS
  2. Click dreapta pe baza de date asupra careia trebuie intervenit > Tasks > Detach
  3. Mutarea fisierului Transaction log la locatia dorita
  4. Click dreapta pe Databases > Attach
  5. Se va cauta locatia fisierului principal al bazei de date
  6. In dreptul fisierului Transaction log (sau al oricarui fisier mutat in alta locatie) va apare eroarea ca fisierul nu a fost gasit. Pentru fiecare eroare se va naviga la locatia corecta si se va alege fisierul.
  7. Ok

Daca, dupa detach, apare eroare ca nu se mai poate conecta la serverul SQL (una din cauze poate fi ca la detach s-a bifat Drop connections, ceea ce a intrerupt inclusiv conexiunea din SSMS), atunci in fereastra de conectare > Options > Connection Properties > in campul Connect to database se scrie master (nu se cauta in lista), apoi Connect, dupa care se pot urma pasii de mai sus pentru Attach.

Instalare si configurare memcached si memcache

Memcached este un mecanism de stocare a informatiei sub forma unei perechi (cheie:valoare) in memoria RAM, reducand prin aceasta accesul la disk sau executarea unor interogari asupra unei baze de date. Memcached este distribuit gratuit si poate rula pe diverse sisteme de operare cum sunt Linux, Windows sau Mac OS.

Instalarea si configurarea memcached sunt destul de simple. Pentru utilizare, intr-un scenariu obisnuit (server Linux, Apache, MySQL, Php) sunt necesare 2 pachete software:

  • memcached (serviciul memcached)
  • php-pecl-memcache (extensia php care faciliteaza comunicarea cu serviciul memcached).

    Read More

Deblocare Mio Spirit 690 LM

Valabil pentru Mio Spirit S555, Mio Spirit 690 LM

1. Pe cardul SD se creaza folderul Default
2. Se copiaza fisierele MioAutoRun.exe, MioAutoRun.mscr si MortScript.exe in folderul Default si se redenumesc primele doua fisiere in Auto.exe si Auto.mscr.
3. Se introduce cardul SD in aparat.
4. Se reseteaza aparatul din butonul de pornire.
5. Se apasa pe ecran pentru a porni aplicatia dorita.

Descarca fisierele pentru unlock

MSSQL Index Fragmentation

Identificarea indecsilor cu fragmentare mai mare de 80% (TOP 10 – primele 10 inregistrari):

SELECT TOP 10 OBJECT_NAME(i.OBJECT_ID) AS TableName, i.name AS IndexName, indexstats.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') indexstats
INNER JOIN sys.indexes i ON i.OBJECT_ID = indexstats.OBJECT_ID
WHERE indexstats.avg_fragmentation_in_percent > 80 AND i.index_id = indexstats.index_id;

Read More

Instalare Plesk 12 pe un server CentOS 7

Partitionare recomandata pentru Plesk

Partitiile si dimensiunile acestora sunt stabilite in functie de recomandarile Plesk si recomandarile CentOS, pe un harddisk cu capacitatea de 500GB. Sistemul CentOS 7 a fost instalat cu profilul Minimal install.

/swap = 4GB
/boot = 500MB
/ (root) = 15-20GB
/tmp = 3-5GB (min 3GB)
/var = restul

Configurare/Pregatire instalare

Hostname: web.example.com
IP fix: 192.168.2.7

Dezactivare SELINUX:

In fisierul /etc/selinux/config  se efectueaza modificarea:

SELINUX=disabled

Oprire si dezactivare serviciu firewalld:

[root@web tmp]# systemctl stop firewalld
[root@web tmp]# systemctl mask firewalld

Instalare serviciu iptables:

[root@web tmp]# yum install iptables-services

Activare serviciu iptables:

[root@web tmp]# systemctl enable iptables

Generare/salvare fisier configuratie iptables:

[root@web tmp]# service iptables save

Acest fisier se poate edita pentru a deschide anumite porturi,

-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8447 -j ACCEPT

dupa care serviciul iptables trebuie restartat:

[root@web tmp]# service iptables restart

Instalare diverse utilitare:

[root@web tmp]# yum install wget mc gcc php-devel

Dupa ce toate setarile au fost efectuate este recomandat sa fie restartat si server-ul inainte de pornirea instalarii Plesk. Asadar:

[root@web tmp]# reboot

Instalare

[root@web tmp]# wget http://autoinstall.plesk.com/plesk-installer
[root@web tmp]# sh ./plesk-installer

Daca, in schimb, se doreste instalarea din interfata web se va rula comanda:

[root@web tmp]# ./plesk-installer --web-interface

apoi se va deschide in browser adresa https://ip-address:8447.

Daca instalarea se opreste cu eroarea ca psa-mod_fcgid intra in conflict cu mod_fcgid, atunci trebuie dezinstalat mod_fcgid (conform http://kb.sp.parallels.com/en/116134), dupa care se reporneste manual instalarea:

[root@web tmp]# yum remove mod_fcgid
[root@web tmp]# sh ./plesk-installer

Documentatia Plesk:
http://download1.parallels.com/Plesk/PP12/12.0/Doc/en-US/online/plesk-installation-upgrade-migration-guide/index.htm?fileName=65780.htm

CentOS: informatii despre harddisk, partitii si memorie

lsblk – afiseaza informatii despre organizarea discurilor si partitiilor (except RAM disks)

df – raporteaza spatiul liber pentru fiecare partitie

pvs, pvdisplay  – afiseaza atributele volumelor fizice

vgdisplay – display attributes of volume groups

dmsetup ls –tree – managementul partitiilor logice (low level)

hdparm – managementul parametrilor pentru device-urile de stocare (SATA/IDE)

hdparm -I /dev/sda

Detalii: http://www.cyberciti.biz/faq/find-hard-disk-hardware-specs-on-linux/

sdparm – acceseaza parametrii device-urilor SCSI

mdadm –  managementul si monitorizarea device-urilor RAID software

lshw – furnizeaza informatii detaliate despre configuratia hardware (procesor, memorie, hdd, usb, cdrom, etc…)

fdisk – managementul partitiilor

parted – managementul partitiilor

badblocks – utilitar pentru verificarea bad-urilor unui harddisk

Modificare adresa IP server Plesk

Mai intai se modifica adresa IP pe interfata de retea a sistemului, apoi se face modificarea in Plesk folosind scriptul dedicat acestei operatiuni:

/usr/local/psa/bin/reconfigurator.pl map_file

Daca fisierul map_file nu exista, acesta va fi creat si va contine configuratia actuala. Se editeaza acest fisier conform configuratiei dorite apoi se ruleaza din nou comanda.

Detalii: http://kb.sp.parallels.com/en/943

Daca dupa schimbarea adresei de IP, vechea adresa IP ramane in configuratia Plesk, iar la stergerea ei este afisata eroarea

Cannot remove the IP address 192.168.2.6 because it is the primary IP address of
a network interface.

se merge la Tools & Settings > Ip Address > Reread IP, iar vechea adresa IP va fi detectata ca fiind cu probleme. In acest moment se poate sterge vechea adresa din configuratia Plesk.

Detalii: http://kb.sp.parallels.com/en/237

Instalare SAPRFC 7.20 pe un server CentOS 7

Libraria SAPRFC este o extensie pentru php4 si php5 si permite comunicarea cu sistemele SAP R/3. Este distribuita sub licenta PHP si nu este creata de SAP AG. Pentru instalare este necesara si libraria RFCSDK, care poate fi obtinuta din Sap Service Marketplace, asa cum este descris mai jos. Pentru descarcarea din Sap Service Marketplace este necesar un ID de client SAP.

In continuare sunt detaliati pasii pentru instalarea librariei SAPRFC pe un server CentOS 7. Server-ul CentOS 7 a fost instalat cu profilul Basic Web Server si include PHP Support.

1. Descarcare SAPCAR

Sap Service Marketplace > Products > Software Downloads > Support Packages and Patches > Browse Download Catalog > Additional Components

Se descarca utilitarul SAPCAR pentru platforma corespunzatoare. Pentru ca SAPCAR e mai usor de utilizat in Windows, am descarcat versiunea pentru Windows si toate dezarhivarile le-am efectuat sub Windows apoi am transferat fisierele pe server-ul Linux.

SAPCAR este un utilitar pentru arhivare/dezarhivare construit de SAP. Cateva detalii despre utilizarea lui pot fi gasite aici: http://www.easymarketplace.de/SAPCAR.php. Pentru dezarhivarea unui fisier de tip .sar cu utilitarul SAPCAR, indiferent de platforma, se foloseste comanda:

SAPCAR_[version].exe -xvf [SAR filename].sar

2. Descarcare SAP RFC SDK (Non-Unicode)

Sap Service Marketplace > Products > Software Downloads > Support Packages and Patches > Browse Download Catalog > Additional Components

De aici se descarca pachetul SAP RFC SDK Non-UNICODE pentru platforma corespunzatoare (in cazul meu am descarcat versiunea 7.20 pentru Linux on x86_64 64bit).  Dupa dezarhivare, folderul rfcsdk se copiaza pe serverul Linux la locatia /usr/src/rfcsdk.

3. Descarcare librfc

Sap Service Marketplace > Products > Software Downloads > Support Packages and Patches > Browse Download Catalog > Additional Components > SAP Kernel > SAP Kernel 64bit > SAP Kernel 7.20 64bit > Linux on x86_64 64bit > #Database independent

De aici se descarca fisierul librfc_715-10007252.sar. Se dezarhiveaza cu utilitarul SAPCAR, apoi se copiaza fisierul librfccm.so pe serverul Linux la locatia /usr/src/rfcsdk/lib. Daca exista deja acolo un fisier cu acelasi nume trebuie suprascris.

Nota 413708 – detalii despre libraria RFC curenta.
Nota 955397 – detalii despre utilizarea RFC SDK sub Linux
Nota 27517 – detalii despre instalarea RFC SDK (sub Windows)

4. Download si instalare re2c (optional)

wget http://pkgs.repoforge.org/re2c/re2c-0.13.5-1.el6.rf.x86_64.rpm
rpm -Uvh re2c-0.13.5-1.el6.rf.x86_64.rpm

Detalii: http://pkgs.repoforge.org/re2c/

5. Instalare instrumente suplimentare

yum install php-devel
yum group install Development Tools

6. Instalare SAPRFC

[root@localhost tmp]# cd /tmp
[root@localhost tmp]# wget http://nchc.dl.sourceforge.net/project/saprfc/saprfc/1.4.1/saprfc-1.4.1.tar.gz
[root@localhost tmp]# tar -zxf saprfc-1.4.1.tar.gz
[root@localhost tmp]# cp -R saprfc-1.4.1 /usr/src
[root@localhost tmp]# cd /usr/src/saprfc-1.4.1
[root@localhost saprfc-1.4.1]# export SAPRFC_DIR=/usr/src/rfcsdk/
[root@localhost saprfc-1.4.1]# export PATH=$SAPRFC_DIR/bin:$PATH
[root@localhost saprfc-1.4.1]# phpize
[root@localhost saprfc-1.4.1]# ./configure
[root@localhost saprfc-1.4.1]# make (se ignora erorile zend deprecated)
[root@localhost saprfc-1.4.1]# make install

Daca comanda make se finalizeaza cu eroare:

compilation terminated.
make: *** [saprfc.lo] Error 1

atunci se editeaza fisierul saprfc.c, la linia 47, si se modifica  function_entry in zend_function_entry (detalii aici).

Daca eroarea se refera la lipsa fisierului rfcsi.h, atunci acest fisier trebuie copiat in /usr/src/rfcsdk/include. Fisierul se poate obtine dintr-o librarie rfcsdk mai veche (versiunea 6.40), care poate fi descarcata dupa instructiunile de la pasul 2.

La final, pentru adaugarea extensiei saprfc in php, se editeaza fisierul /etc/php.ini si se adauga linia:

extension=saprfc.so

dupa care se restarteaza serviciul httpd.

Pentru a testa daca instalarea a avut succes, se copiaza fisierul /usr/src/saprfc-1.4.1/saprfc_test.php in locatia /var/www/html (sau /var/www/vhosts/default – in cazul unui server administrat cu Plesk). Se acceseaza adresa http://sever-ip/saprfc_test.php, si daca se incarca formularul de autentificare inseamna ca libraria a fost instalata cu succes.

Toate fisierele utilizate pentru instalarea SAPRFC pot fi descarcate si de aici:
SAPCAR (windows)
SAPCAR (linux)
SAP RFC SDK Non-UNICODE
LIBRFC (librfc_715-10007252.sar)

Detalii: http://saprfc.sourceforge.net/

Selectarea celor mai recente/vechi inregistrari in SQL JOIN

Se considera tabela clienti, cu urmatoarea structura:

+-----------+-------------+
| client_id | client_name |
+-----------+-------------+
|         1 | Lorand      |
|         2 | Mihai       |
+-----------+-------------+

Si tabela adrese_clienti, cu urmatoarea structura:

+------------+-----------+----------------+---------------------+---------------------+
| address_id | client_id | client_address | date_from           | date_to             |
+------------+-----------+----------------+---------------------+---------------------+
|          1 |         1 | Adresa 1       | 2015-01-01 10:23:21 | 2015-01-17 11:24:31 |
|          2 |         1 | Adresa 2       | 2015-01-17 11:24:31 | 2015-02-21 13:28:57 |
|          3 |         1 | Adresa 3       | 2015-02-21 13:28:57 | 9999-01-01 00:00:00 |
|          4 |         2 | Adresa 4       | 2015-01-01 13:12:53 | 2015-01-31 09:19:22 |
|          5 |         2 | Adresa 5       | 2015-01-31 09:19:22 | 2015-02-11 08:23:19 |
|          6 |         2 | Adresa 6       | 2015-02-11 08:23:19 | 9999-01-01 00:00:00 |
+------------+-----------+----------------+---------------------+---------------------+

Pentru fiecare client se pastreaza istoricul modificarilor adreselor, in aceeasi tabela, fiecare inregistrare pastrand perioada de valabilitate in campurile date_from si date_to. Inregistrarea actuala pentru fiecare client este marcata de valoarea 9999-01-01 00:00:00 in campul date_to.

Doua probleme

1. Se doreste selectarea celei mai vechi adrese pentru fiecare client:

SELECT c.client_id, c.client_name, c2.client_address
FROM clienti AS c
INNER JOIN (
    SELECT client_id, MIN(address_id) AS address_id
    FROM adrese_clienti GROUP BY client_id
) AS c1 ON (c1.client_id = c.client_id)
INNER JOIN adrese_clienti AS c2 ON (c2.address_id = c1.address_id);

Rezultat:

+-----------+-------------+----------------+
| client_id | client_name | client_address |
+-----------+-------------+----------------+
|         1 | Lorand      | Adresa 1       |
|         2 | Mihai       | Adresa 4       |
+-----------+-------------+----------------+

2. Se doreste selectarea adresei actuale pentru fiecare client:

SELECT c.client_id, c.client_name, c2.client_address
FROM clienti AS c
INNER JOIN (
    SELECT client_id, MAX(address_id) AS address_id
    FROM adrese_clienti GROUP BY client_id
) AS c1 ON (c1.client_id = c.client_id)
INNER JOIN adrese_clienti AS c2 ON (c2.address_id = c1.address_id);

sau mai simplu (datorita campului date_to):

SELECT c.client_id, c.client_name, c1.client_address
FROM clienti AS c
INNER JOIN adrese_clienti AS ac
    ON (ac.client_id = c.client_id AND ac.date_to = '9999-01-01 00:00:00');

Rezultat:

+-----------+-------------+----------------+
| client_id | client_name | client_address |
+-----------+-------------+----------------+
|         1 | Lorand      | Adresa 3       |
|         2 | Mihai       | Adresa 6       |
+-----------+-------------+----------------+

Descarcare imagini iso Windows

Windows 7 Home Premium 32Bit: http://msft.digitalrivercontent.net/win/X17-58996.iso
Windows 7 Home Premium 64Bit: http://msft.digitalrivercontent.net/win/X17-58997.iso

Windows 7 Professional 32Bit: http://msft.digitalrivercontent.net/win/X17-59183.iso
Windows 7 Professional 64Bit: http://msft.digitalrivercontent.net/win/X17-59186.iso

Windows 7 Ultimate 32Bit: http://msft.digitalrivercontent.net/win/X17-59463.iso
Windows 7 Ultimate 64Bit: http://msft.digitalrivercontent.net/win/X17-59465.iso

Verificare listare in baza de date anti-spam

Pentru a verifica daca o anumita adresa IP sau domeniu este listat intr-o baza de date antispam se pot utiliza urmatoarele instrumente care ofera informatii din mai multe astfel de baze de date:

http://whatismyipaddress.com/blacklist-check
http://www.blacklistalert.org/
http://mail-blacklist-checker.online-domain-tools.com/
http://www.dnsbl.info/dnsbl-database-check.php
http://multirbl.valli.org/lookup
http://mailboxtools.com/tools/blc.aspx
http://mxtoolbox.com/blacklists.aspx

Optimizarea performantelor site-ului smashingmagazine.com – studiu de caz

Un articol excelent despre imbunatatirea performantelor unui site de dimensiuni relativ mari. Un studiu de caz cu explicatii exhaustive pentru fiecare sectiune, cum au gandit si ce solutii au gasit pentru a obtine un scor de 99/100 de puncte la Google PageSpeed Insights.

http://www.smashingmagazine.com/2014/09/08/improving-smashing-magazine-performance-case-study/

Verificare propagare DNS

Pentru verificarea propagarii DNS:

https://www.whatsmydns.net
Verifica propagarea DNS pe 21 de servere din locatii diferite (aleator). La fiecare refresh al paginii se schimba locatiile.

http://ceipam.eu/en/dnslookup.php
Verifica propagarea DNS la diferiti provideri de internet (inclusiv RDS, UPC, Romtelecom, Vodafone, Euroweb)

Altele:
http://viewdns.info/
http://www.nexcess.net/resources/tools/global-dns-checker/
http://checkdnspropagation.com/
https://www.dnsunlimited.com/propagation_check