Vim -- Проблем с shell auto completion

Идеята е, че с VIM когато използвам шел "!sh" не ми прави допълване на командите с TAB за да се оправи това трябва да се коригира подразбиращия шел shell (него ползва vim shell). В моя случай е dash. Избран е този понеже от към бързина е по- добър от bash именно заради липсата на автоматично дописване. Сега ще го премахнем като default shell:

sudo dpkg-reconfigure dash

Избиране "No" и сме готови :)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Проблем при ssh логване- Cannot determine realm for numeric host address

Проблема е, че при логване с ssh към машина извежда следното съобщение:

machine:~# time ssh [email protected] -p 33 -v
OpenSSH_4.3p2 Debian-9, OpenSSL 0.9.8c 05 Sep 2006
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 93.155.205.1 [93.155.205.1] port 33.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5
debug1: match: OpenSSH_5.1p1 Debian-5 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3p2 Debian-9
debug1: An invalid name was supplied
Cannot determine realm for numeric host address

debug1: An invalid name was supplied
A parameter was malformed
Validation error

debug1: An invalid name was supplied
Cannot determine realm for numeric host address

debug1: An invalid name was supplied
A parameter was malformed
Validation error

debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '93.155.205.1' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:4
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Next authentication method: password
[email protected]'s password:

real    0m15.717s
user    0m0.030s
sys    0m0.010s

Време за изпълнение 15 секунди

За да се коригира този проблем трябва да се изключи GSSAPIAuthentication (Керберос).
Временно се прави така:

machine:~# time ssh -o "GSSAPIAuthentication=no" [email protected] -p 33 -v
OpenSSH_4.3p2 Debian-9, OpenSSL 0.9.8c 05 Sep 2006
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.0.1 [192.168.0.1] port 33.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5
debug1: match: OpenSSH_5.1p1 Debian-5 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3p2 Debian-9
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.0.1' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:4
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Next authentication method: password
[email protected]'s password:

real    0m5.448s
user    0m0.030s
sys    0m0.000s

Виждаме, че времето от 15 секунди се свеждо до 5 секунди.

За се запише за постоянно се редактира файл: /etc/ssh/ssh_config
и стойността на "GSSAPIDelegateCredentials" се прави на "no"

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Какво е ezSQL и как да го ползваме

Какво е ezSQL?

ezSQL е Open Source PHP клас за връзка с бази данни. Негов автор е Justin Vincent. Този клас поддържа следните бази данни: МySQL, Oracle8, SQLite (PHP).

Защо да ползваме ezSQL?
1. С него се пести време при писането на PHP код.
2. Поддържа кеширане на SELECT заявките.
3. Напълно безплатен, с възможност да се ползва абсолютно във всички възможни проекти.
4. Има възможност за debug .
5. Класа ezSQL поддържа Smarty.
6. Много малък и простичък клас които е напълно функционален и лесен за редактиране при необходимост :)
7. Използването на DB абстрактен слой позволява лесното мигриране от една DB към  друга. Пример: Необходимо е мигриране от Oracle към MySQL. В този случай единственото необходимо нещо да се направи е include на подходящия допълнителен клас към ezSQL.
8. За мен WordPress е сериозен пример за добър проект писан от добри PHP разработчици и именно това дава една положителна точка на ezSQL , понеже DB класа на WordPress "wpdb" е базиран на ezSQL.
9. Чрез ezSQL се пести доста код.

За да не изпадам в излишна теория и обща информация ще започна с примерите(в този случай примерите са най- добрата документация):

Първо трябва да се изтегли ezSQL класа от официалния сайт на Justin Vincent-> Сайт на ezSQL

След като се изтегли е необходимо в нашия пример да се включи( (include) ядрото на ezSQL (ez_sql_core.php) и след това базата с която ще се работи(в случая е MySQL: (ez_sql_mysql.php) ):

include_once "../shared/ez_sql_core.php";
include_once "ez_sql_mysql.php";
$db = new ezSQL_mysql('db_user','db_password','db_name','db_host');

Сега вече можем да правим примера.

1. Простa INSERT/UPDATE заявка:

$db->query("INSERT INTO users (id, name, email) VALUES (NULL,'Ribok','[email protected]')");

или

$db->query("UPDATE users SET name = 'Ribok' WHERE id = 4");

2. SELECT заявка за извеждане на един ред:

$user = $db->get_row("SELECT name, email FROM users WHERE id = 4");

echo $user->name;
echo $user->email;

3. Бързо асоцииране на променлива с резултат от просто select с един ред:

$var = $db->get_var("SELECT count(*) FROM users");

echo $var;

4. SELECT заявка и извеждане на многобройни редове:

$results = $db->get_results("SELECT name, email FROM users");

foreach ( $results as $user )
{
echo $user->name;
echo $user->email;
}

5. Select заявка за конкретна колона:

foreach ( $db->get_col("SELECT name,email FROM users",0) as $name )
{
echo $name;
}

6. Изследване на заявките, чрез DEBUG(Активира се по- следния начин):

$db->debug();

7. Активиране на кеширането на заявки:

$db->cache_timeout = 24;
$db->cache_dir = '/tmp/ezsql_cache';
$db->use_disk_cache = true;
$db->cache_queries = true;

Времето се измерва в часове, но ако желаете да бъде в секунди е необходимо да се направи малка корекция.
Във файл "ez_sql_core.php" ,  ред "317" се заменя:

if ( (time() -- filemtime($cache_file)) > ($this->cache_timeout*3600) )

със:

if ( (time() -- filemtime($cache_file)) > ($this->cache_timeout) )

PS0: Ако някои има някакви допълнения или коментари може да ги сподели.

PS1: В никакъв случай не твърдя, че това е най- страхотния клас, защото има и други добри като AdoDB които е с доста дълга история. Идеята на това ръководство е да бъде в полза на някои търсещ или ползващ такъв клас :).

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

MySQL бележки за работа с повече таблици :)

Прави се заявка за изтриване на всички таблици започващи с oc от база "comptech":

SELECT CONCAT("DROP TABLE ",GROUP_CONCAT(TABLE_NAME)) AS stmt FROM information_schema.TABLES WHERE
TABLE_SCHEMA = "comptech" AND TABLE_NAME LIKE "oc%";

Прави се заявка за изтриване на всички таблици от база "comptech" с изключение на foo,bar,baz

SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
FROM information_schema.tables
WHERE table_schema = 'comptech' AND table_name NOT IN ('foo', 'bar', 'baz');

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Промяна на Vbulletin парола през MySQL или phpMySQL

Идеята е на форум Vbulletin с userid ='1' да се сетна парола 'parola'(това е администратора):

UPDATE user set password = MD5(concat(MD5('parola'), user.salt)) WHERE userid = 1

Ако таблицата има префикс:

UPDATE labuser set password = MD5(concat(MD5('parola'), labuser.salt)) WHERE userid = 1

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Грешки при опит за ssh login

Когато се логвах на една машина на един приятел през SSH получих следните грешки. По- долу съм описал и техните решения.

Грешка 1: ssh_exchange_identification: Connection closed by remote host

Решение: Да се проверят следните файлове
/etc/hosts.deny и /etc/hosts.allow

Грешка 2: PTY allocation request failed on channel 0

Решение 2: rm -rf /dev/ptmx;mknod /dev/ptmx c 5 2;chmod 666 /dev/ptmx;umount /dev/pts;rm -rf /dev/pts;mkdir /dev/pts;mount /dev/pts;

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Инсталиране на php -- Image Magick на Cent OS

Основни пакети

1. yum install ImageMagick.i386
2. yum install ImageMagick-devel.i386
3. pecl install imagick

4. След като се инсталира imagick трябва да се зареди в php.ini
Kомпилирания модул може да се намери в /usr/lib/php/modules .

echo 'extension=imagick.so' >>  /etc/php.ini

6. Рестартиране на apache2

/etc/init.d/httpd restart

7. Проверяване дали всичко е инсталирано правилно:

Прави се файл info.php със съдържание:

<?php phpinfo(); ?>

Ако всичко е наред вътре ще има секция "imagick"

Грешки възникнали при изпълнение на публикацията:

В1. Няма инсталиран pecl

О1. yum install php-pear

В2. При инсталиране на imagick дава грешка

downloading imagick-3.0.1.tgz …
Starting to download imagick-3.0.1.tgz (93,920 bytes)
…………………done: 93,920 bytes
13 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
Please provide the prefix of Imagemagick installation [autodetect] :
building in /var/tmp/pear-build-root/imagick-3.0.1
running: /tmp/tmp2lZYQm/imagick-3.0.1/configure --with-imagick
checking for egrep… grep -E
checking for a sed that does not truncate output… /bin/sed
checking for cc… no
checking for gcc… no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
ERROR: `/tmp/tmp2lZYQm/imagick-3.0.1/configure --with-imagick' failed

О2. yum install gcc

В3. Втора грешка при инсталиране на imagick

sh: make: command not found
ERROR: `make' failed

О3. yum install make

Други интересни неща

За да се видят какви файлове са записани от пакета ImageMagick.i386

yum install yum-utils

repoquery --list ImageMagick.i386

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

VNC сървър на Debian

Инсталиране:

apt-get update && apt-get install tightvncserver xtightvncviewer

Стартиране:

vncserver :1 -geometry 1024×768 -depth 16 -pixelformat rgb565

Спиране:

vncserver -kill :1

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Насочване на под домейни в Kloxo

Идеята е всеки под домейн да сочи към root директорията на главния домейн т.е.

sub1.domain.tld -> domain.tld (root directory)
sub2.domain.tld -> domain.tld (root directory)
sub3.domain.tld -> domain.tld (root directory)

Идеята е контрола върду домейна и под домейните да се направи от PHP

1. Прави се A запис на DNS сървъра отговарящ за домейна:

* A IP ADDRESS

2. Настройва се kloxo по същия начин както в точка 1

admin -> Server :linux -> Domains -> domain.tld -> Manage Dns

3. Указваме на apache да приема всички под домейни в root директорията на главния домейн
Редактирам конфигурационния файл на Apache за Vhost-a през SSH които в случая е:

/home/httpd/domain.tld/conf/kloxo.domain.tld

Преди:
ServerAlias www.domain.ltd

След:
ServerAlias *.domain.ltd

След промените записваме файла

4. Рестартираме httpd от меню admin-> Server :linux -> Services -> httpd

Добавка към тази публикация: http://mpetrov.net/nasochvane-na-pod-domejni-v-kloxo-chast-2-podredba

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Увеличаване размера на виртуалния диск на VMware Machine

Проблема е следния: Понеже имам един Windows под VMware с диск 3GB, а в този момент се оказа, че не ми достига мястото заради едно приложение реших да го увелича на 4.5 GB .

В този пост ще стане ясно как се увеличава размер на диск във VMware машина.

1. Първо трябва физически да увеличим размера

Virtual Machine Settings -> Hard Disk (SCSI) -> Utilities -> Expand

избира се новият размер на вирталния диск във VMware

и след известно конвертиране излиза хубавото съобщение, че всичко е готово:

The disk was successfully expanded. You now need to repartition the disk and expand the filesystems from within the guest operating system.

Има и други методи за оразмеряване, но на този е най- лесен:

Друг начин за resize на виртуален диск във VMware е:
1. vmware-vdiskmanager -x {diskSize}GB "virtual_file.vmdk"
2. VMWare converter

2. След като го увеличихме физически остава и Windows-а да види разликата защото в момента си вижда стария размер. За да се получи крайния ефект ще ползваме GParted Live CD които ще boot-нем.

За да накараме VMware да зареди през CD-то ще влезем в BIOS с F2 и ще сложим като първо зареждащо устройство CD-to. След като заредим Gparted ще видим, че стария размер на дяла се вижда съвсем нормално, а новият допълнителен размер се вижда като unallocated. Маркираме стария дял и с десния бутон натискаме Resize като избираме максималната стойност.

След като потвърдим това действие със Apply и рестартираме машината(ще премахнем CD зареждането на Gparted за да си зареди нормално Windows-a) ще видим, че новият размер на дяла е видим за този Windows и всичко е супер.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Личен Блог на Мартин Петров