PostgreSQL coub express.js freeware git jquery laravel links linux macos mysql node.js php powershell python ubuntu vim virtualbox анекдот блог игры интересно стихи цитаты

Наверное у многих веб-разработчиков (и не только) есть проблема с тестированием больших и сложных регулярок которыми они как-то обрабатывают рабочий контент. Мне приходится делать это постоянно и иногда выражения бывают трудно воспринимаемы просто одной головой. Вот в этой ситуации мне обычно помогает Regex Coach. Он просто подсвечивает участки которые попадают под выбранное условие. На примере показан простенький реплейс подстроки при помощи регулярки (понятно он же match). Очень удобная штука. Обновлялась в 2008м году. Скачать можно здесь. Интерфейс не выделяется ничем, но оно и не нужно. Обычная рабочая лошадка. Интересно есть ли другие похожие разработки.

основное окно программы

regex coach


Писался на коленке при помощи гугла. Цель была зарезервировать список папок и список БД mysql с одного хоста.

#!/bin/bash
##################### config
dirs_to_save="/home/ci1.loc /home/smarty /home/TTT"
my_dir_for_backups="/home/captain/backups"
mysql_databases_to_save="content mysql test"
mysql_user_name="root"
##################### /config
target_dir=`date +%F`
backup_dir="$my_dir_for_backups/$target_dir/"
echo "
-------------------------------------------------------------------
ijin reserv_copy script v.1.1 | Wed 02 Sep 2009 02:53:30 PM MSD
hello at: "`date`"
i'll save dump to: "$backup_dir"
-------------------------------------------------------------------
"
# create dir for current dump
mkdir -p $backup_dir
echo "dumping directories: 
--------------------"
# pack all src dirs
for cur_dir in $dirs_to_save; do
   dst_file=${cur_dir//\//-} # change slashes to -
   dst_file=$backup_dir${dst_file/-/}".tar.gz" # remove first - and create full dst file name
   echo $cur_dir" -> "$dst_file 
   tar -czf $dst_file $cur_dir &> /dev/null # no output from tar
done
read -s -p "
enter pass for mysql please: " MYSQL_PASS
echo "
dumping databases: 
------------------"
# pack all src databases
for cur_db in $mysql_databases_to_save; do
    dst_file=$backup_dir$cur_db".sql"
    echo $cur_db" -> "$dst_file 
    mysqldump -u $mysql_user_name --password=$MYSQL_PASS $cur_db > $dst_file 2> /dev/null ### hide error messages
    if [ $? != 0 ] ### result of execution of mysqldump
    then
        echo "=> WARNING: can't dump database. Check login:pass and privileges."
        unlink $dst_file
    else
        echo "=> OK: "$cur_db" dumped ok. I'll gzip it now.."
        gzip $dst_file
    fi
done
echo "
-------------------------------------------------------------------
all done.
bye at: "`date`"

"
sleep 1
Естественно прав на папки и базы у пользователей должно хватать. Вывод будет примерно такой:
bash script


Задача простая. Есть удаленный хост с MySql. Удаленные подключения запрещены. Локальные для нашего пользователя разрешены. Таким образом как нам получить на свою машину доступ к удаленному хосту через какой-нибудь графический MySql клиент, а не только через консоль в шелле (самая надежная безглючная фигня кстати и лучше с боевой БД работать именно через неё, ага). Для этого cуществует утилита plink. Она поможет нам пробросить шелл соединение и забиндить под него локальный порт. Делается это просто. Делаем батничек lala.bat в нем пишем:
REM plink -N -L local_port:remote_localhost:remote_port remote_host_user@remote_host

plink -N -L 4500:localhost:3306 lala@lala-host.ru

Где:

  • lala - имя юзера
  • lala-host.ru - ваш хост
  • -N - не стартовать шелл, коммандная строка не нужна
  • -L - [listen-IP:]listen-port:host:port форвард локального порта на удаленный адрес
Для linux тоже самое будет немного иначе
ssh -N -f -L local_port:remote_localhost:remote_port remote_host_user@remote_host

В примере мы вешаем на свою локальную машину, на порт 4500 коннект к удаленному 3306 порту мускуля через ssh соединение. Потом берем любой клиент для бд и подключаемся к локалхосту на порт 4500. И все дела. Естественно должен быть шелл-доступ к удаленному хосту с мускулем и plink должен оставаться запущенным и авторизованным на время работы с бд.



Как? Погуглив... Нашел. Оказалось совсем несложно, как обычно..

# для директорий используем -type d 
cd
/home/target_dir
find
. -type d -exec chmod 755 {} \;  

# для файлов -type f

cd /home/target_dir
find
. -type f -exec chmod 644 {} \;  

# по маске имени с параметром -name
cd
/home/target_dir
find
. -type f -name '*.htm*' -exec chmod 644 {} \;  

# для наглядности можно выполнить

find
/home/target_dir/ -type f -name '*.php' -exec echo '-- '{} \;
Хороший человек объяснил подробности. ";" - терминатор екзека и шелла одновременно, поэтому его в шелле надо заэксейпить. Ну а "{}" результат файнда построчно.


Простенько двигаемся по папочкам и просто так считаем чего сколько. Для *nix придется сменить слеш в пути. А работать всё равно будет.

import os   
# settings: src dir 
sSrc='d:\\Install'   

def show_all(sSrc,iDirs=0,iFiles=0): 
    for file in os.listdir(sSrc): 
        # full pathname  
        file=os.path.join(sSrc,file)   
        if os.path.isdir(file): 
            # if directories 
            print '['+file+']' 
            iDirs+=1 
            iDirs,iFiles=show_all(file,iDirs,iFiles) 
        else: 
            # else files 
            print ' '+file 
            iFiles+=1 
    return iDirs,iFiles

iDirs,iFiles=show_all(sSrc,0,0)   

print """
total dirs: """,iDirs,""" 
total files: """,iFiles


aghr