Replace на един стринг с друг в MySQL

Случвало ли ви се е в MySQL таблица да имате 1 мил. реда като в една от колонките имате стринг "гад" които желаете да премахнете. Сещам се за две решения едното е чрез някакъв език(php,perl …) да обходихте всички редове (select) и да ги обновите(update)  което са си две операции т.е. 1 000 001 (1 000 000 пъти -- update и 1 път select).
Вторият и най- рационален вариант за мен е, чрез функцията REPLACE която е вградена в MySQL.

Ето Ви пример:

update nasha_tablica set kolonka=replace(kolonka,'gad','pich');

Тук в таблица "nasha_tablica" в колона "kolonka" ще бъде презаписано "gad" със "pich".

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

Рекурсивно преименуване на файлове в GNU/Linux

Наложи ми се да конвертирам всички *.SH файлове в *.sh но тези файлове са в куп директории и под директории. Веднага ми доиде на ум как да го направя с find , но реших да гугълна да видя дали има по- рационално решение. Е не видях такова. Видях решения от рода на цикли с bash, perl и какво ли не, но решение с "one line" не видях.

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

find $PWD -name "*.SH" -exec rename 'y/.SH/.sh/' "{}" \;

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

Как да копираме това което ни е необходимо:) (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)

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