Mount /usr/ports във Freebsd Jail
Имам 3 Jail-a искам да си инсталирам и в 3те нещо от /usr/ports :
mount_nullfs /usr/ports/ /usr/jails/ns/usr/ports
mount_nullfs /usr/ports/ /usr/jails/mail/usr/ports
mount_nullfs /usr/ports/ /usr/jails/www/usr/ports
Протест против промените в ЗЕС
ДО МЕДИИТЕ И ВСИЧКИ ГРАЖДАНИ
В Сряда, 17 февруари, Парламентът ще гласува на второ четене промените в Закона за електронните съобщения (ЗЕС), даващи достъп на МВР до трафичните данни на гражданите. По традиция, както се вижда от нееднократните и повтарящи се опити за промени и допълнения на този закон, МВР се домогва до безконтролно и нерегламентирано проследяване на трафичните данни на гражданите. Известният с лоша слава „интерфейс“ за проследяване на трафичните данни на гражданите, въпреки обещанията на премиера Борисов и министър Цветанов да бъде премахнат, в предложената за второ четене версия на промените в ЗЕС се заменя със „система от мониторинг център и други входно-изходни програмно-технически средства“. Играейки си с думите, депутатите от ГЕРБ ще “поправят най-голямата грешка” на Бойко Борисов, за каквато той сам обяви в медиите това, че се е вслушал в общественото мнение. Така милиционерската, ретроградна и рестриктивна философия на предложенията за промени в закона ще бъде запазена.
При тези обстоятелства, макар и в последния възможен момент, рано сутрин, и в работен ден, неформалната организация на млади български граждани и блогъри „България е наша“ ви призовава на протест:
СРЯДА
17 ФЕВРУАРИ
(извън “обозначената зона” от 20 метра отстояние от Народното Събрание)
ПЛОЩАД НАРОДНО СЪБРАНИЕ
09:00 до 11:00 ч.
„България е наша“ се противопоставя на обръщането на презумпцията за невинност, с което всеки български гражданин се превръща в потенциален престъпник, терорист или педофил. Ние сме против ограничаването и нарушаването на фундаментални човешки права, гарантирани от Конституцията на Република България, извинявайки това с несъществуващи изисквания на ЕС и Директива 24/2006. Ние вярваме, в конституционните основи, че всички граждани представляват държавата, а гражданските права са фундамент на държавността. Следователно всяка форма на неоснователно, своеволно и ненужно нарушение на гражданските права подронва устоите на държавата и демократичните принципи на управление. Ние определяме промените в ЗЕС като лоши и създаващи възможност за безнаказано извършване на престъпления и злоупотреби от страна на държавните институции и МВР. И ние се противопоставяме на това!
Ние от „България е наша“ призоваваме всички – граждани, депутати, полицаи, пожарникари, граждански организации, правозащитни организации, политически партии, определящи се като демократични, всички българи, ТЕБ, четящия тези редове, да се присъедините към нас. Да не допуснем приемането на калпав, недемократичен и ретрограден закон, за да направим България по-добра за всички, защото:
БЪЛГАРИЯ Е НАША!
shell recursive rename
Ако искаме да сменим ‘foo’ с ‘bar’ в имената на ВСИЧКИ (recursive) файлове в даден директория :
Само принтира промените :
find . -type f -print0 | xargs -0 rename -n ’s/foo/bar/g’
Прави промените :
find . -type f -print0 | xargs -0 rename ’s/foo/bar/g’
shell find & replace recursive
Много мразя като ми се налага да променям едно и също нещо в много различни файлове !
Затова е следният ред :
find * -type f -exec sed -i ’s/ТОВА ТЪРСИМ/ПРОМЕНЯМЕ С ТОВА/’ {} \;
Казах ли колко обичам sed ?
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. Имам да чета доста по темата , по-натам ще пиша пак.
Останах с много добри впечатления от конференцията и хората там като цяло и съм им много благодарен за усилията които са положили за да я организират. Надявам се по-често да има такива събития в България.
PHP-конвертиране на число в дума
Много полезен PHP клас за конвертиране на число в дума – по нета има и други скриптове но този членува правилно думите на български .
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');
}
/*
* @param string $int The number to convert. Optional.
* @return text Resulting text
*/
function ToString($int)
{
// Check for purely numeric chars
if (!preg_match('#^[\d.]+$#', $int)) {
echo('Невалидни символи! Моля въведете числова стойност.');
return;
}
// Handle decimals
if (strpos($int, '.') !== false) {
$decimal = substr($int, strpos($int, '.') + 1);
$int = substr($int, 0, strpos($int, '.'));
}
// Lose insignificant zeros
$int = ltrim($int, '0');
// Check for valid number
if ($int == '') {
$int = '0';
}
// Lose the negative, don't use abs() so as to allow large numbers
if ($negative = ($int < 0)) {
$int = substr($int, 1);
}
// Number too big?
if (strlen($int) > 18) {
//throw new Exception('Out of range');
echo('Числото е повече от 18 символа!');
return;
}
// Keep original number
$orig = $int;
/**
* Main number deciphering bit thing
*/
switch (strlen($int)) {
// Single digit number
case '1':
$text = $this->units[$int];
break;
// Two digit number
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;
// Three digit number
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;
// Anything else
default:
$pieces = array();
$suffixIndex = 0;
// Handle the last three digits
$num = substr($int, -3);
if ($num > 0) {
$pieces[] = $this->GetText($num);
}
$int = substr($int, 0, -3);
// Now handle the thousands/millions etc
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($int) . ' ' . $this->suffix[$suffixIndex];
}
/**
* Figure out whether we need to add "and" in there somewhere
*/
$pieces = array_reverse($pieces);
if (count($pieces) > 1 AND strpos($pieces[count($pieces) - 1], ' и ') === false) {
$pieces[] = $pieces[count($pieces) - 1];
$pieces[count($pieces) - 2] = 'и';
}
// Create the text
$text = implode(' ', $pieces);
// Negative number?
if ($negative) {
$text = 'минус ' . $text;
}
break;
}
/**
* Handle any decimal part
*/
if (!empty($decimal)) {
$pieces = array();
$decimal = preg_replace('#[^0-9]#', '', $decimal);
/*
for ($i=0, $len=strlen($decimal); $i<$len; ++$i) {
$pieces[] = $this->teens[$decimal{$i}];
}
*/
if(strlen($decimal) == '1')
{
$text .= ' лева и ' . $this->tens[$decimal{0}];
$text .= ' стотинки. ';
}
else
{
$text .= ' лева и ' . $this->GetText($decimal);
$text .= ' стотинки. ';
}
}
return $text;
}
/**
* Returns text for given number. Parameter should ideally
* be a string (to handle large numbers) though integers are
* OK.
*
* @param string $int Number to convert
* @return string Resulting textual representation
*/
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;
?>
Източник – http://webstik.com/blog/page/kak-da-preobrazuvame-chislova-stoynost-v-dumi-chrez-php.html
virtualbox-ose и freebsd7.2 guest OS
Ако ви се наложи да инсталирате Freebsd7.x под VirtalBox-OSE този ред със сигурност ще ви спести доста нерви :
# vboxmanage modifyvm VM_NAME -nictype1 Am79C970A
Явно FreeBSD имат някакъв проблем с емулацията на networking-а във VirtualBOX , но както и да е – този ред решава проблема
Повече инфо има тук :
click
Предишен/следващ ред от таблица 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;
партия лидер ли ?
Най-мазните хора които съм виждал от доста време насам , искали промяна виждаш ли – сещам се аз каква ще е промяната , ще има С-класи и вили по морето , от тоя плакат ТЕЧЕ МАЗНЯ !! шибаняци нещастни

Това е моето мнение !
Скрипт за проверка дали даден процес е жив
Леко скриптче за проверка дали даден процес е жив (в случая 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
толкоз .