Hints and tips
These are some helpful hints on various topics.
Getting full directory path in bash and cmd prompt
To get the absolute path for the current or any other realtively addressed folder, for example the parent, use the following constructs:
bash
parent_dir=`cd .. && pwd`
cmd
set current_dir=%CD%
cd ..
set parent_dir=%CD%
cd %current_dir%
Regex for getting the content of given span by id or class
Here's a regex that extracts content of span with given id or class from an HTML text contained in $data variable:
$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]);
Creating read-only table in Oracle
A handy way to prevent any data modifications (update, delete, insert) in certain table in Oracle database is to create trigger that always fails:
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;
Using this approach you can select which tipe of data modifications to prevent. For example you can create table that allows only inserts without modifying existing data.
Find constraint details by its name in Oracle
When creating Oracle database schema it's useful to put names on all constraints to easily identify constraint violations later. But what happens if a constraint doesn't have name preset? Basicly you get a similar error:
ORA-00001: unique constraint (MYUSER.SYS_C00009843) violated
Now to identify which is the constraint and on which columns, run the following query:
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'
Recursively rename all files in a directory to another extension using bash
The following script renames all files in the current folder and its subfolders with extension .jad to .java
for file in `find . -type f -name *.jad`
do
mv $file `dirname $file`/`basename $file .jad`.java
done
Find files not owned by user
Here's how to find files in user foo home folder that are not owned by foo
find /home/foo ! -user foo
Ignoring whitespace in subversion command line diff
Unlike diff subversion's svn diff doesn't have many modifier flags, particularly ignoring whitespace. To achieve this force svn to use desired external diff command using --diff-cmd option:
svn diff --diff-cmd diff -u -w working/copy/file