Кратки съвети

Тук може да намерите полезни съвети и примери за много ситуации.

 

1 2 3 4 5 6

Регулярен израз за изваждане на съдържанието на span елемент по id или class атрибут

Това е регулярен израз за изваждане на съдържанието на всички span елементи от даден HTML текст в променливата $data по id или class атрибут:

$regex = '/\<span\s*class=[\'"]?classname[\'"]?\s*>([^\<]+)\<\/span\>/imu';
preg_match_all($regex, $data, $matches, PREG_PATTERN_ORDER);
print_r($matches[1]);

$regex = '/\<span\s*id=[\'"]?spanid[\'"]?\s*>([^\<]+)\<\/span\>/imu';
preg_match_all($regex, $data, $matches, PREG_PATTERN_ORDER);
print_r($matches[1]);

 


Забрана за промяна на данните в таблица в Oracle (таблица само за четене)


Удобен начин за предотвратяване на промяна на данните (update, delete, insert) в дадена таблица е да се създаде тригер, който винаги генерира грешка:
 
create or replace no_dml
before insert or update or delete
on my_table
begin
    raise_application_error (-20000, 'my_table is read-only!');
end;

По този начин може да се определят и вида на операциите, които икаме да забраним. Например таблица, в която се вмъкват редове, без възможност за промяна на данните.

 

Изследване на ограниченията (constraints) на Oracle по дадено име


Когато се създава таблица в Oracle с наложени ограничения (constraints), например primary key, unique, foreign key, е добре да се именуват, за да може в последствие да се идентифицират по-лесно при грешки. Но какво става ако това не е направено? Получават се подобни грешки:
 
ORA-00001: unique constraint (MYUSER.SYS_C00009843) violated
 
В такъв случай, за да се идентифицират колоните, таблицата и типа на ограничението (constraint), пуснете следната заявка:
 
select cons.table_name, cons.constraint_name, cons.constraint_type,
    cols.table_name, cols.column_name, cols.position
from user_constraints cons 
    inner join user_cons_columns cols 
        on cons.owner = cols.owner and cons.constraint_name = cols.constraint_name 
where cons.constraint_name = 'SYS_C00009843'

 


Рекурсивно преименуване на всички файлове от едно разширение в друго с bash


Следния скрипт преименува всички файлове с разширение .jad в текущата директория и поддиректориите в разширение .java

for file in `find . -type f -name *.jad`
do
    mv $file `dirname $file`/`basename $file .jad`.java
done


Откриване на файлове, които не са притежание на даден потребител

Следната команда открива файловете в домашната директория на потребителя foo, които не са притежание на foo

find /home/foo ! -user foo

 


Игнориране на празните символи при svn diff от командния ред


За разлика от командата diff, svn diff на subversion няма толкова много опции за модифициране на резултата, като например игнориране на празните символи. За да се постигне такова поведение е нужно да се покаже на subversion да използва външна програма за генериране на diff посредством --diff-cmd:

svn diff --diff-cmd diff -u -w working/copy/file


Добавяне на всички нови файлове в работното копие на subversion с една команда

Когато има много нови файлове в работното копие, не е удобно да се добавят един по дин на ръка. Ето как става това наведнъж, само с една команда:

svn stat /local/working/copy | grep "^?" | awk -F "      " '{print $2}' | xargs svn add


1 2 3 4 5 6