Визуальное представление JOIN’ов в SQL

Давно хотел понять для себя смысл и принцип работы JOIN. Особо с ними не работал, так как весь необходимый функционал работы с БД при создании сайтов на MODx у меня всегда был под рукой в виде API. А в те несколько случаев необходимости использования JOIN я обошолся LEFT JOIN‘ом, а дальше лишнее обрабатывал уже в PHP. Знаю, это совсем неправильно, однако оно работало и мне было этого достаточно.

Сейчас я решил улучшить свои знания MySQL.  Почитал литературу, узнал много о типах БД, о настройке и т.п. Теперь пришло время разобраться с JOIN. Я нашел статью по теме, которая наглядно показывает что из себя представляет результат работы JOIN. Представляю вашему вниманию вольный ее перевод (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html).

Продолжить чтение

Самый простой способ узнать какой браузер использует посетитель

Не часто программирую на JavaScript’е, но иногда приходиться. Например, сегодня. Написал простенький скрипт, но он отказался работать в IE. Немного погуглив я нашел на Хабре наверное самый отличный способ идентификации браузера посетителя. Итак:

Теперь можно использовать это в наших скриптах. Например:

Граббер: cURL+regexp+"PHP Simple HTML DOM Parser"

Весь день сегодня провел за созданием граббера.

Первый шаг:  необходимо обойти сайт по всем внутренним ссылкам и занести все уникальные в базу.

Для этого я использовал cURL+regexp (сам реджексп не помню где именно нашел — но оказался кстати)

Второй шаг: необходимо вытащить нужные нам данные из вытащенного контента. Для этого я воспользовался наработкой PHP Simple HTML DOM Parser. Очень удобна, но кушает много памяти. У меня с первого раза вылетело из-за недостатка памяти. Для этого я обрезал контент после получения (убрал сайдбары, хедер). В итоге все нормально.
Синтаксис очень схожий с jQuery, по-этому многим будет легко начать.

Дальше уже дело техники и проработки. Можно совершенствовать под свои потребности сколько угодно, чем я и собираюсь завтра заняться 🙂

Полезные консольные команды

Просмотр установленных задач cron‘а для текущего пользователя

Редактирование установленных задач cron‘а. (У меня запускается редактор vi)

Программка для мониторинга процессов.

Команды в редакторе vi:

  • i — редактирование (до курсора)
  • a — редактирование (после курсора)

После того как мы закончили редактирование — жмем ESC и SHIFT+Q и пишем:

  • wq — для сохранения изменений и выхода из редактора
  • q! — для выхода без сохранения

Для запуска скрипта (например, в cron‘е) с пониженным/повышенным приоритетом пишем

где n — смещение приоритета (-20..+20). По умолчанию приоритет = 20. (И стоит отметить что понизить приоритет может любой пользователь, а повысить только root)

$argv и запись лога при использовании cron

Если мы запускаем наш сценарий из консоли (например, если мы используем cron) и нам нужно передать какой-либо параметр в наш скрипт, и результат записать в файл лога — то делаем это так

Каждую 50-ую минуту часа будет запускаться php-скрипт под именем my_script.php, внутри которого можно использовать переданные в него параметры, а именно $argv[0] — имя запущенного сценария (в данном случае my_script.php), $argv[1] == «param1«, $argv[2] == «param2«. При этом все что скрипт будет выводить на экран (с помощью есho, например) — будет записываться в файл, путь к которому указан после знака «>«.

Работа с SVN

На новой работе впервые столкнулся с svn. Это будет первая заметка, которая будет полезна, в первую очередь, мне.

В общем, если рабочая копия стала непонятно почему locked (у меня это случилось после создания новой ветки) — то нужно сделать

Если же для выполнения этой команды нету прав (тоже непонятно почему) — то необходимо сделать:

После этого выйти на уровень выше и выполнить

Тоесть заливаем заново из транка все. По-моему все. Если что-то вспомню — допишу.

Вышел MODx 1.0.4

В основном изменения коснулись безопасности. Было зафиксено несколько возможностей sql-иньекций.

Также изменения были сделаны в админ-панели:

  • Появилась кнопка «Создать копию» в режиме редактирования документа
  • Кнопка «Просмотр» теперь использует FURL (конечно, если они включены)

Из негативных фич можно отметить следующие:

  • После сохранения или отмены редактирования чанков/сниппетов/плагинов перебрасывает на страницу элементов, но теперь всегда с открытой вкладкой «Шаблоны». Совершенно непонятно зачем это было сделано
  • В отличии от версии 1.0.2 теперь при нажатии на название ресурса (документа) открывается страница с информацией о нём. Хотя раньше было намного удобнее переходить сразу к редактированию. Придется «допиливать» под себя

А так в общем ничего особо не изменилось. Никаких дополнительных знаний использовать не придется.

P.S. по поводу негативных сторон — нашел что все это настраивается в конфигурации сайта. Так что мои претензии забираю обратно 🙂