Как да копираме това което ни е необходимо:) (cp GNU/Linux)

Във връзка с една предишна публикация за  "Как да намеря това което търся и това което НЕ търся (Find в GNU/Linux)" ми се наложи подобно нещо, но да копирам конкретни папки от една папка с много папки  такива(повечето са тези които ми трябват).

Ще разгледам конкретен случай в които имаме следните директории:

0папка1
0папка2
3папка3
4папка4
5папка5
6папка6
7папка7
8папка8

Аз искам да копирам всички папки с изключение на тези които започват с "0"(нула). Задачката-играчката има няколко решения:

1. Преместваме всичките 0*папка* на друго място и копираме всички останали папки * като след това връщаме папките с 0папка*.- Не рационално.

2. Копираме желаните папки като аргументи. Пример: cp 3папка3 4папка4 5папка5 … и т.н. -- Не рационално.

Ето го моето решение:

cp -Rvp [!0*]* destination_dir

Това ще копира всички папки с изключение на тези които започват с "0" (нула).- Рационален

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

Инсталиране на TOR == Анонимност в Интернет

torВ тази публикация ще опиша с няколко стъпки как  се инсталира, конфигурира и ползва Tor в GNU/Linux- Debian. Идеята е криптиране на връзката която ползвате или да имате по- добра анонимност в Интернет. Приложението е възможно освен за GNU/Linux така и за MS Windows и OS X и BSD.

Статията е за напълно начинаещи с напълно основни познания по всичко :)(Просто се изпълнява подред и това е :) )

1. Редактиране на файл: /etc/apt/sources.list :
#За Etch
deb     http://deb.torproject.org/torproject.org etch main
#За Lenny
deb     http://deb.torproject.org/torproject.org lenny main
#и т.н.

2. Инсталиране на sudo
apt-get install sudo

3. Зареждане на ключове:

gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add --

4. Ъпдейтване и инсталиране на tor

apt-get update && apt-get install tor tor-geoipdb privoxy

5. Редактиране на конф. файл на provixy (/etc/privoxy/config)
Добавете това(по този начин пренасочваме tor порта към 8118:

#added by amri
forward-socks4a / localhost:9050 .

6. Рестартиране на tor и privoxy
/etc/init.d/tor restart;
/etc/init.d/privoxy restart;

7. Тестване за анонимност

7.1 Тест, чрез links
links -http-proxy 127.0.0.1:8118 http://check.torproject.org/

7.2  Тест, чрез lynx
export http_proxy="http://127.0.0.1:8118";
lynx http://check.torproject.org/;

#Бележка: Когато сетвате http_proxy това важи и за apt т.е. ако искате да инсталирате нещо през apt-get ще минете през това прокси. За да го премахнете премахнете променливата или: export http_proxy="

PS: За Firefox е повече от ясно как се въвежда всичко :)

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

Спиране на sms съобщенията от Големият кеш- 500

Абсолютно съм против да получавам sms-и от мобилните оператори за играта "Големият Кеш".  Именно поради тази причина позовавайки се на общите условия на "Големият кеш" цитирани по- долу се отказвам от "услугата"- "Големият кеш" :) .

Написах този пост понеже видях, че доста хора нямат идея как да прекратят това масово изпращане на sms-и от "Големият Кеш".

С няколко думи за да се откажа от получаването на sms-те от "Големият кеш" изпратих sms със съдържание "Stop" на номер 500 .

Извадка от ОБЩИ УСЛОВИЯ за участие във Викторината “Големият кеш”->Общи разпоредби:

Чл.50. В случай, че участник желае да не получава рекламни съобщения от Викторината, може да заяви това на организатора по всяко време като изпрати sms с текст Stop на номер 500 или чрез обаждане до номер 123 /0.03 лв с ДДС за обаждане за абонати и ползватели на Глобул/, *500 /безплатно за абонати и ползватели на Мобилтел/, *500 /безплатно за абонати и ползватели на Vivacom/. С изпращането на този sms, респективно с извършването на обаждането, рекламните съобщения до участника във Викторината се спират. В случай, че желае да възобнови участието си участникът следва да изпрати един sms към номер 500 .

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

Прост Bash скрипт за създаване на mysql потребител и база

Ето едно просто скриптче което ще ви помогне лесно да създавате лесно MySQL потребител с неговата парола и едновременно създаване на база.

#!/bin/sh
mysqlpassword=$2;
mysqluser=$1;
mysqldb=$3;

if [ $# -eq 3 ]
then

echo "Create Database $mysqldb";
mysql -e "CREATE DATABASE $mysqldb" -p;
echo "Create user $mysqluser -- GranT all on db:$mysqldb";
mysql -e "GRANT ALL ON $mysqldb.* TO $mysqluser@localhost IDENTIFIED BY '$mysqlpassword' WITH GRANT OPTION;" -p
echo "Flush Privileges";
mysql -e "FLUSH PRIVILEGES;" -p;
echo "Create Table fsearch";
exit;
fi;
echo "$0 mysqluser mysqlpass mysqlDB";

Пример за ползване:
sh mysql_create_user.sh mysql_user mysql_pass mysql_db

PS: Потребителят които се създава има пълни права в/у базата

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 скриптове които ползват много памет

Всъщност тук ще обсъдя случаите в които се пише php скрипт при изпълнението на които се извежда съобщение като:" Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 500520576 bytes) in /var/www/a.php on line 4" или с няколко думи скрипта използва повече памет от колкото му е заделена предварително. Идеята тук е защо излиза това съобщение и  как да го поправим(действието :) ).

1. Предварително заделенета памет се определя от конфигурационния файл /etc/php5/php.ini) php.ini :

memory_limit = 32M      ; Maximum amount of memory a script may consume (32MB)

В този конфигурационен файл паметта която може да използва php скрипт е максимум 32 MB. Тази стойност може да се променя разбира се.

След промяна в php.ini трябва да се рестартира apache2. След това може да се изпълни phpinfo(); и ще видите новата заделена памет за php/скрипт.

2. Друг вариант за промяна на memory_limit е за при php5-cli (command-line interpreter for the php5 scripting language) или пример:

php -d memory_limit=512M a.php

По този начин при изпълненито на a.php се заделя 512 MB памет като се пренебрегва тази стойност от php.ini

3. Интересна функция в php е memory_get_usage() която връща текущата използва памет от php скрипта:

<?php

echo memory_get_usage() . "\n"; // 48504

$a = str_repeat("mpetrov.net",100104 );

echo memory_get_usage() . "\n"; // 1150084

unset($a);

echo memory_get_usage() . "\n"; // 48504

?>

По този начин може да се направи извод колко памет ползва php от самото php. Последния пример показва всъщност, че трябва да се unset всички променливи които няма да се ползват повторно за да не заемат памет :)

Извод: Бяха разгледани няколко причини и решения за грешката в php: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 500520576 bytes)

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

Стартиране на soffice

Днес ми се наложи да пусна soffice заради едни журналисти които ползват терминална система за своите работни станции(X ползвам като сървър на една машина, а другите са просто терминали(това вече 4 години)). Днес реших и на нея да пусна soffice. Ето как инсталирах soffice:

1. Инсталиране на soffice:
apt-get install openoffice.org python-uno sun-java6-jre xvfb

2. Стартиране на fakeX(ако нямаш X инсталирано се ползва fakeX):

/bin/rm -Rf /tmp/.X25-lock
xavf_log='/tmp/a.log';
nohup /usr/X11R6/bin/Xvfb :99  >> $xavf_log 2>> $xavf_log &
soffice -headless -accept='socket,host=localhost,port=8100;urp' -nofirststartwizard -nologo -nolockcheck -display :99

3. Стартиране на soffice:
soffice -headless -accept='socket,host=localhost,port=8100;urp' -nofirststartwizard -nologo -nolockcheck -display :1001

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

Хранилище за Sun-Java -- Debian Lenny

Ето ги и хранилищата за да си инсталирате Sun Java на вашата система :) :

deb http://ftp2.de.debian.org/debian/ lenny main non-free
deb-src http://ftp2.de.debian.org/debian/ lenny main non-free

deb http://security.debian.org/ lenny/updates main non-free
deb-src http://security.debian.org/ lenny/updates main non-free

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 функция за извеждане на дублиращи елементи от масив

Търсих вградена функция на PHP за извеждане на дублиращите елементи в конкретен масив, но не успях да намеря такава. Има за извеждане на уникалните и т.н. познатите …, но точно такава не успях да намеря. Затова реших да си напиша такава(Супер дълга и сложна е :) )(Обичам простите, прозрачни и ясни неща):

<?php

function arrayDuplicate($array)
{
return array_unique(array_diff_assoc($array1, array_unique($array1)));
};
?>

Пример:

Код:

<?php
$arr1 = array('foo', 'bar', 'xyzzy', '&', 'xyzzy',
'baz', 'bat', '|', 'xyzzy', 'plugh',
'xyzzy', 'foobar', '|', 'plonk', 'xyzzy',
'apples', '&', 'xyzzy', 'oranges', 'xyzzy',
'pears','foobar');

$result=arrayDuplicate($arr1);
print_r($result);exit;
?>

Изход:

Array
(
[4] => xyzzy
[12] => |
[16] => &
[21] => foobar
)

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

Как да намеря това което търся и това което НЕ търся (Find в GNU/Linux)

Всъщност тук идеята е да се листнат всички файлове с изключение на конкретни. Например да се листнат всички файлове с изключение на .doc файловете. Това не успях(говоря за стандартната търсачка) да го направя под Windows(просто за фън едвали щях да разчитам на него да го направи :) ).
Затова Ви препоръчвам ако ще правите това да го направите под GNU/Linux ;)

Задача: Да се изведат всички файлове които не са с разширение *.doc:
Решение: find $PWD -type f ! -name "*.doc"

Задача: Да се изтрият всички файлове с изключение на тези които не са с разширение *.doc:
Решение:  find $PWD -type f ! -name "*.doc" -exec rm -f {} \;

PS: Всяко нещо е просто до доказване на противното респективно, всяко нещо е сложно до доказване на противното

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

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