Блогът на Борис Димитров

my personal blog
  • Home
  • За мен
8 фев 2010

find & replace recursive

Много мразя като ми се налага да променям едно и също нещо в много различни файлове !
Затова е следният ред :

find * -type f -exec sed -i ’s/ТОВА ТЪРСИМ/ПРОМЕНЯМЕ С ТОВА/’ {} \;

Казах ли колко обичам sed ?

8 февруари, 2010 at 19:51 by admin

Tags: admin, Freebsd, Linux, полезно
Posted in Freebsd, Linux, Без категория | No Comments »

8 фев 2010

Perl конференция 2010

На 30.1.2010 в София се проведе втория (за България) Perl Workshop в София , част от ежегодни такива събития по целия свят. Миналата година за съжаление неможах да присъствам на събитието , но тази година грешката беше поправена :)

Накратко :
Гост от Русия беше Андрей Шитов който направи интересна презентация на Gearman. Идеята на gearman е да бъде диспечър за задачи (има клиенти освен за perl и за други езици за програмиране , дори и за бази данни – mysql , postgre) на локален или отдалечен сървър. Досега не съм ползвал такъв вид софтуер, но ми се струва удобно всички скриптове да се изпълняват на машина преназначена само затова. С презентацията си Андрей показа солидни разлики във времето на изпълнение със и без gearman, също така като голям плюс e балансирането на задачите. Лесен е за използване и добре документиран. Понеже на съм го ползвал (засега :) повече немога да споделя , мисля , че трябва да се пробва!
Самата презентация можете да видите тук :

http://www.slideshare.net/andy.sh/gearman-and-perl

Втората презентация беше за Catalyst Perl web framework от Петър Шангов (дано да се пише така на Български името му).Тази презентация за мен беше доста интересна защото ми се е налагало да работя с MVC Frameworks в миналото , но на PHP , интересен ми беше начинът как идеята е реализирана с perl. Оказа се че разликите не са чак толкова големи а идеята общо взето е една и съща. Много подробна презентация с добри обяснения за MVC модела като цяло и доста примери за реални ситуации. Това на което наблегна Петър е , че Catalyst сравнен с останалите frameworks в момента идва изцяло без никакви модули (разбира се на разположение на developer-a e да си изтегли такива от CPAN), а core-a е особено малък като размер и слоевете MODEL , VIEW са доста така да се каже олекотени за сметка на CONTROLLER-ите.Също ми се стори доста удобно , че Интересна презнетация.

Третата и най-интересна за мен като системен администратор презентация беше на Мариян Маринов , който говори за Event Driven Programming с perl модула AnyEvent. За мен това е нова концепция в системното програмиране която със сигурност ще пробвам. Идеята е ако ще се пишат демони за следене на даден процес или събитие да не се блокират системни ресурси които могат да се ползват за други задачи или приложения в същото време. Найстина е важно да се мисли от началото на проекта за performance-a на системата , защото с разширяването на задачите и усложняването им програмата започва да изисква повече и повече ресурси и това започва да вляе негативно на цялостния performance. Имам да чета доста по темата , по-натам ще пиша пак.

Останах с много добри впечатления от конференцията и хората там като цяло и съм им много благодарен за усилията които са положили за да я организират. Надявам се по-често да има такива събития в България.

8 февруари, 2010 at 16:37 by admin

Tags: admin, Perl
Posted in Freebsd, Linux, Perl | No Comments »

7 яну 2010

PHP-конвертиране на число в дума

Много полезен PHP клас за конвертиране на число в дума – по нета има и други скриптове но този членува правилно думите на български .

Източник – http://webstik.com/blog/page/kak-da-preobrazuvame-chislova-stoynost-v-dumi-chrez-php.html


class TextualNumber
{
var $units = array();
var $teens = array();
var $hundredth = array();
var $tens = array();
var $suffix = array();

function TextualNumber()
{
$this->units = array('нула',
'едно',
'две',
'три',
'четери',
'пет',
'шест',
'седем',
'осем',
'девет');
$this->teens = array('десет',
'единадесет',
'дванадесет',
'тринадесет',
'четеринадесет',
'петнадесет',
'шестнадесет',
'седемнадесет',
'осемнадесет',
'деветнадесет');
$this->hundredth=array(1=>'сто',
'двеста',
'триста',
'четеристотин',
'петстотин',
'шестстотин',
'седемстотин',
'осемстотин',
'деветстотин');
$this->tens = array(2 => 'двадесет',
'тридесет',
'четеридесет',
'петдесет',
'шестдесет',
'седемдесет',
'осемдесет',
'деветдесет');
$this->suffix = array('хиляди',
'милиона',
'милиарда',
'trillion',
'quadrillion');
}

function ToString($int)
{
if (!preg_match('#^[\d.]+$#', $int)) {
echo('Невалидни символи! Моля въведете числова стойност.');
return;
}

if (strpos($int, '.') !== false) {
$decimal = substr($int, strpos($int, '.') + 1);
$int = substr($int, 0, strpos($int, '.'));
}

$int = ltrim($int, '0');

if ($int == '') {
$int = '0';
}

if ($negative = ($int < 0)) {
$int = substr($int, 1);
}

if (strlen($int) > 18) {
echo('Числото съдържа повече от 18 цифри!');
return;
}

$orig = $int;

switch (strlen($int)) {

case '1':
$text = $this->units[$int];
break;

case '2':
if ($int{0} == '1') {
$text = $this->teens[$int{1}];

} else if ($int{1} == '0') {
$text = $this->tens[$int{0}];
if($this->flag == 3) $text = 'и '.$text;
echo $this->flag."
";
$this->flag = 0;
} else {
$text = $this->tens[$int{0}] . ' и ' . $this->units[$int{1}];
}
break;

case '3':
if ($int % 100 == 0) {
$text = $this->hundredth[$int{0}];
} else {
$int_tmp = substr($int, 1);
if($int_tmp{0} == '0' || $int_tmp{0} == '1') $add = 'и';
$this->flag = 3;
$text = $this->hundredth[$int{0}] . " $add " . $this->GetText(substr($int, 1));
}
break;

default:
$pieces = array();
$suffixIndex = 0;

$num = substr($int, -3);
if ($num > 0) {
$pieces[] = $this->GetText($num);
}
$int = substr($int, 0, -3);

while (strlen($int) > 3) {
$num = substr($int, -3);

if ($num > 0) {
$pieces[] = $this->GetText($num) . ' ' . $this->suffix[$suffixIndex];
}
$int = substr($int, 0, -3);
$suffixIndex++;
}

if (substr($int, -3) == 1)
{
$t = $this->suffix[$suffixIndex];
if($suffixIndex == 0 && $int == 1) $ending = 'а';
else $preff = 'един ';
$pieces[] = $preff . substr($t,0,-2) . $ending;
}
else
{
$pieces[] = $this->GetText(substr($int, -3)) . ' ' . $this->suffix[$suffixIndex];
}

$pieces = array_reverse($pieces);

if (count($pieces) > 1 AND strpos($pieces[count($pieces) - 1], ' и ') === false) {
$pieces[] = $pieces[count($pieces) - 1];
$pieces[count($pieces) - 2] = 'и';
}

$text = implode(' ', $pieces);

if ($negative) {
$text = 'минус ' . $text;
}
break;
}

if (!empty($decimal)) {
$pieces = array();
$decimal = preg_replace('#[^0-9]#', '', $decimal);

$text .= ' точка ' . $this->GetText($decimal);
}

return $text;
}

function GetText($int)
{
return $this->ToString($int);
}

/**
* Returns text and number for a randomly generated number.
*
* @return array Array of number and textual representation
*/
function Get()
{
$int = mt_rand(1, 99999);
return array($int, $this->ToString($int));
}

/**
* Returns currency version of a given number.
*
* @param string $int Number to convert
* @param string $major Word to use for left hand side of decimal point
* @param string $minor Word to use for right hand side of decimal point
* @return string Resulting string
*/
function GetCurrency($int, $major = 'pound', $minor = 'pence')
{
if (strpos($int, '.') !== false) {
$left = substr($int, 0, strpos($int, '.'));
$right = substr($int, strpos($int, '.') + 1);

// Plural $major ?
if ((int)abs($left) != 1) {
$major .= 's';
}

$text = $this->GetText($left) . " $major and " . $this->GetText($right) . " $minor";

} else {
$text = $this->GetText($int) . " $major";
}

return $text;
}
}

?>

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


require_once("number2textBG.class.php");
$number = '12345678';
$t2n = new TextualNumber;
$txt = $t2n->GetText($number);
echo $txt;
?>

7 януари, 2010 at 11:45 by admin

Tags: PHP, полезно
Posted in PHP | No Comments »

9 сеп 2009

virtualbox-ose и freebsd7.2 guest OS

Ако ви се наложи да инсталирате Freebsd7.x под VirtalBox-OSE този ред със сигурност ще ви спести доста нерви :

# vboxmanage modifyvm VM_NAME -nictype1 Am79C970A

Явно FreeBSD имат някакъв проблем с емулацията на networking-а във VirtualBOX , но както и да е – този ред решава проблема :)

Повече инфо има тук :
click

9 септември, 2009 at 4:10 by admin

Tags: Freebsd, полезно
Posted in Freebsd | No Comments »

8 юни 2009

Предишен/следващ ред от таблица mysql

Previous ID:

SELECT id FROM $mytable WHERE id < $id ORDER BY ID DESC LIMIT 1;

Next ID:

SELECT id FROM $mytable WHERE id > $id ORDER BY ID ASC LIMIT 1;

8 юни, 2009 at 13:07 by admin

Tags: admin
Posted in Без категория | No Comments »

4 юни 2009

партия лидер ли ?

Най-мазните хора които съм виждал от доста време насам , искали промяна виждаш ли – сещам се аз каква ще е промяната , ще има С-класи и вили по морето , от тоя плакат ТЕЧЕ МАЗНЯ !! шибаняци нещастни

lider

Това е моето мнение !

4 юни, 2009 at 13:15 by admin

Tags: срам
Posted in България | No Comments »

3 юни 2009

Скрипт за проверка дали даден процес е жив

Леко скриптче за проверка дали даден процес е жив (в случая snmpd) :

#!/bin/bash

hostname=b2.sysadmins-bg.net
email=billy@microsoft.com
snmpd_test=`pgrep snmpd`

# SNMPD TEST
if [ $snmpd_test != 1 ]
then
echo `echo host $hostname report: SNMPD DAEMON NOT RUNNING !!!|mail -s CHECK-IT-NOW $email`
fi

в crontab на 5 минути:

*/5 * * * * check-snmpd.sh > /dev/null 2>&1

толкоз .

3 юни, 2009 at 10:19 by admin

Tags: admin, Linux, Servers, полезно
Posted in Linux, Servers | No Comments »

20 май 2009

Master and Slave DNS zone update BIND9

Ако ви се налага да направите нов secondary dns сървърили просто да ъпдейтвате с нови зони съществуващ такъв , новите зони се налага да ги описвате на ръка . Ето едно решение за динамичен ъпдейт (не DDNS) на конфига на secondary (slave) dns сървъра, което копира конфигурационня файл на primary сървъра и след това прейменува зоните на slave.
Ще трябва да си направите и ключ за ssh за да може скрипта да влиза без парола , ще пиша и за това , но в друга статия.

master dns : 192.168.0.1
slave dns : 192.168.0.2

И самия скрипт (нищо сложно) :

#!/bin/sh

# Script to copy slave dns zones from master dns
# release 1.0
# b2 (at) playtime.bg

# first we need master dns zone config local to make changes on it
# this is how we do it

scp user@192.168.0.1:/etc/namedb/named.conf /root/work/named_master.conf

# now we need to change some things in the config and save it as slave

for domain in `grep ^zone /root/work/named_master.conf |awk ‘{print $2}’ |sed ’s/\(.*\)./\1/’ |sed ’s/.\(.*\)/\1/’`

do

/usr/bin/printf “

zone \“$domain\“ {
type slave;
file \“/etc/bind/slaves/$domain\“;
masters { 192.168.0.1; };
};\n“

done > /root/work/slavefile.conf

# now it is time to (smoke some weed and) move it on /etc/bind && reload our server
cp slavefile.conf /etc/bind/named.conf.local && /etc/init.d/bind9 reload

# let’s do some checks to be sure bind daemon is up & running

bind_status=`/etc/init.d/bind9 status`
status_ok=“bind9 is running.“

if [ "$bind_status" = "$status_ok" ];
then

# all done – mail admins and go to sleep :)
echo „MASTER/SLAVE ZONES SYNCRONIZATION COMPLETED – YOU CAN GET DRUNK NOW !“ |mail -s „ZONES SYNCRONIZATION COMPLETED“ admin ( at ) playtime.bg

else
# fuck , something wrong here !
echo „SLAVE DNS SERVER NOT RUNNING ALTER SYNCRONIZATION – DO SOMETHING NOW !“ |mail -s „SLAVE DNS DOWN AFTER SYNCRONIZATION“ admin ( at ) playtime.bg

fi
exit 0

също и в crontab-а на root вмъкнете :

0 4 * * * /path/to/script

всеки ден в 4 часът през нощта скрипта ще се изпълнява.
Това е !

20 май, 2009 at 17:39 by admin

Tags: admin, dns, Linux
Posted in Linux, Servers | 1 Comment »

24 апр 2009

Простест пред парламента на 29.04.2009

Вчера прочетох статия която меко казано ме вбеси , за пореден път през последните месеци тройната коалиция демонстрира неуважение , безхаберие и тотално незачитане на конституцията на република България и да си го кажем направо – отново ни плюят в лицето !!! Нашите управляващи май разбраха че бавно , но сигурно си заминават и то за дълго и започнаха да правят неща които МНОГО ТРУДНО ЩЕ СЕ ОПРАВЯТ ОТ СЛЕДВАЩОТО ПРАВИТЕЛСТВО , дори и при най-добра воля от същото … просто незнам вече … мисля си , че ни мразят. След всичките циркове с законите за лекарства , ЗЕС , неработеща съдебна система , наложени санкции от ЕС и какво ли не , вече неможем и да протестираме в близост до работните места на богоизбраните … БЕСЕН СЪМ ! ДЕМОКРАЦИЯ НЯМА , СПРАВЕДЛИВОСТ НЯМА , РАВЕНСТВО НЯМА , ЧОВЕШКИ ПРАВА НЯМА , СВОБОДА НА СЛОВОТО НЯМА – това направихте за последните четири години господа управляващи.

Призовавам всеки който не иска да живее в такава държава да излеза на 29.04.2009 на площад Народно събрание и да протестира срещу тези нови промени чиято единствена цел е да наложи ЦЕНЗУРА върху общественото мнение и за пореден път да потъпче нашите права на свободни граждани живеещи в демократична държава.

Нека заедно всички им покажем че ни пука за България и че няма да ги оставим да правят каквото си искат с живота и правата ни !

Date:
Wednesday, April 29, 2009
Time:
11:00am – 7:00pm
Location:
пред НАРОДНОТО СЪБРАНИЕ

24 април, 2009 at 9:36 by admin

Tags: демокрация, протест, срам
Posted in България | No Comments »

18 мар 2009

Как се добавят VLANs (802.1q) на FreeBSD

Доста елементарно се оказа но поради факта , че не ми се беше налагало – не го знаех :) ))
Искаме влан 100 да си го разтагнем на BSD машинката и да му вдигнем IP адрес – какво правим ?
Ето това :

Зареждаме модула в ядрото :

# kldload if_vlan

Създаваме VLAN-а :

# ifconfig vlan100 create

Вдигаме му IP адрес :

# ifconfig vlan100 10.17.0.71 netmask 255.255.255.252 vlan 100 vlandev nve0

И всичко спи :)

18 март, 2009 at 13:45 by admin

Tags: Freebsd, полезно
Posted in Networking, Servers | No Comments »

« Older Entries
  • Subscribe

    • Entries (RSS)
    • Comments (RSS)
  • Archives

  • Calendar

    • февруари 2010
      П В С Ч П С Н
      « яну    
      1234567
      891011121314
      15161718192021
      22232425262728
  • Categories

    • Freebsd (3)
    • Linux (4)
    • Networking (1)
    • Perl (1)
    • PHP (1)
    • Servers (5)
    • Без категория (2)
    • България (2)
    • Лични (1)
  • ИТ

    • Корпоративни интернет решения
  • Приятели

    • :: KnowHow by Sto. :: line-by-line on commandline
    • Instudio54 Lifestyle Online Radio
    • Блогът на Иван Тодоров
  • Meta

    • Вход
    • Validerande XHTML
    • XFN
    • WordPress
Boris Dimitroff's Facebook Profile
Блогът на Борис Димитров powered by WordPress
Hosted at Sysadmins-bg.net
Design & code by Jonk
Entries (RSS) and Comments (RSS).
19 queryes | 2,922 seconds.