Ruslan Brest, rb.labtodo.com

Разработка ПО, сайтов и веб-сервисов. CodeIgniter, PHP, MySQL, W3C CSS/XHTML, MaxSite CMS, OpenCart, PrestaShop

Web development

Подписаться на эту рубрику по RSS

Opencart module extract (Linux shell script)

Опубликовано: 5 апреля 2012.
Автор: Ruslan Brest.

Рубрика: Linux | Web development | OpenCart.
Метки: .

Mодули для Opencart обычно используют одно и то же имя для контроллеров, моделей, view и языковых файлов, поэтому этот скрипт может облегчить задачу по поиску и извлечению всех файлов модуля из рабочей копии магазина с сохранением всей структуры каталогов.

Навеяно модулем http://opencartforum.ru/topic/8272-module-extract-извлечение-модулей/, но мне показалось, что линуксоидам будет проще и удобней одной строкой в шелле это делать (локально или на сервере), без установки модуля в Opencart (установить, разрешить, зайти, найти, скопировать...)

Ни я, ни тот модуль не занимаются анализом PHP-кода и действительно полным выковыриванием всех используемых модулем файлов. Так что результат, конечно, не гарантирует полное и точное извлечение. Но будет работать в подавляющем большинстве случаев.

Далее...

OpenCart 1.5.1.x exploited (RFI)

Опубликовано: 5 марта 2012.
Автор: Ruslan Brest.

Метки: .

OpenCart 1.5.1.x exploited (RFI) http://code.google.com/p/opencart/issues/detail?id=596

Чтобы избежать неприятностей, надо как минимум менять ключ шифрования в настройках Opencart.

Не помешает также в папку download поместить файл .htaccess со строчкой SetHandler send-as-is.

Почему я уважаю email (и может ещё Jabber), а скайп, аську и прочую чатико-переписку (VK, FB) -- нет

Опубликовано: 6 января 2012.
Автор: Ruslan Brest.

Преимущества email:

  • не отвлекает тогда, когда ему хочется. В работе программиста это очень важный момент. Критически важный;
  • Переписка может без доп. усилий храниться в одном месте, на сервере. И быть доступной с нескольких компьютеров (в т.ч. чужих) и телефонов.

Аська, скайп, телефон:

  • очень мешают тем, что могут прервать мыслительный процесс в самый неподходящий момент;
  • историю хранить в едином месте нереально. Особенно этим страдает Скайп и телефон;
  • в телефоне логов разговоров вообще не остается. Особенно при деловых разговорах. Или обсуждении деталей задач. Или условий. Человек иногда с удивлением узнает, что именно он говорил или писал. Даже самый искренний. Потому что совершенно искренне считал, что сказал по-другому. И привычка фиксации часто спасает от скандалов. Речь вообще даже не о злом умысле. Просто об особенностях психологии и памяти человека в стрессовых условиях;
  • Скайп имеет самый идиотскую реализацию просмотра истории и поиска, которую я видел. А внутренности логов лежат не в виде текста, HTML или XML, а в бинарном виде. Но если бы это позволяло ему хотя бы быстро работать... Так нет же. Дождаться загрузки длинного лога - целая вечность проходит;
  • если угораздило обсуждать что-то важное в дороге и забыл или не смог перенести это вовремя на десктоп или в онлайн-хранилище -- найти потом, где это было, когда и на каком девайсе -- целый подвиг. Особенно если дел много. Совсем другое дело при использвоании email.
  • в аське часты сообщения "привет" и "ты здесь?", после которых нет ничего. Представьте себе, что чувствует занятый человек, просматривая раз в 10-30 минут накопившиеся сообщения, чтобы ответить на самое важное, а остальные минут 20-30 иметь возможность посвятить очередной задаче без отвлечний? Я на такие вопросы и приветы обычно вообще не отвечаю, и вот почему. Если есть что-то важное - человек обычно пишет о проблеме сразу, а я могу быстро отреагировать, когда в свободный промежуток увидел конкретный вопрос среди десятка других бестолковых сообщений-пустышек. Если там только "приветы", то обычно человеку просто одиноко и разговоры в аське превращаются не в решение проблем, а долгое обмусоливание и размышения вслух;
  • обсуждение одного и того же вопроса по email занимает 10-20 минут, в ICQ -- минимум час-полтора. Поскольку паузы в разговоре возникают (то у одного, то у другого собеседника), и писать "словесного мусора" приходится гораздо больше, чем обычно пишешь в ответе на email. В общем, чат отвлекает от дел гораздо больше.

Резюме

Почта удобна тем, что я в нее смотрю, когда свободен. И вся переписка хранится в едином месте. Доступная и с телефона, и с любого компьютера. В отличие от асек и скайпов, где концов не соберешь, потому что понять невозможно, где обсуждали тот вопрос, а где этот, а где файлы и пароли присылались, и на каком компьютере или телефоне этот лог разговора остался и где его теперь искать.

Поэтому я за почту.

Как облегчить процесс публикации изменений на сервер

Опубликовано: 18 декабря 2011.
Автор: Ruslan Brest.

Метки: .

[Git, FTP] Для FTP и shared hosting (без SSH доступа и полноценной консоли)

Рекомендую готовый скрипт: Extract changed files from Git and prepare a deployment (Bash script).

По команде, в которой указывается диапазон коммитов, создаёт папку .deployment с готовым деревом и изменившимися файлами. И список удаленных файлов, которые придётся удалить вручную (если пользуетесь FTP клиентом) или через SSH на сервере (если есть такая возможность).

[Git, SSH] При полноценном хостинге (с SSH доступом)

Судя по всему, у меня сделано один в один как в http://habrahabr.ru/blogs/Git/127213/, поэтому не вижу смысла описывать то же самое. У меня немного отличается структура папок проектов, но это несущественно. Суть проста - на сервере лежит как Git-репозиторий, так и обычная рабочая копия (на которую смотрит веб-сервер). Точнее, на одну из папок репозитория - public_html. Потому что в репозитории хранится ещё документация, служебные скрипты, тестовые и чистые SQL дампы.

И при новых коммитах от разработчиков (git push) репозиторий по хуку делает автоматически две операции - обновление локальной серверной копии (git pull origin dev) и копирование набора файлов из config_sets (здесь у меня хранятся файлы, специфические для разных конфигураций: для одного разработчика, для другого, для dev2-windows, dev2-linux, для production1, production-dev и так далее, если надо ещё больше). Понятна идея? Требуемый набор конфигов просто перезаписывается поверх того, что есть в репозитории (а туда могут попасть и локальные конфиги девелоперов, если они не исключены через .gitignore), и получается чистая и настроенная конфигурация. Быстро, без чек-листов, ручных проверок-исправлений и условий-ветвлений с множеством девелоперских конфигов (зачем они на сервере?).

Естественно, на сервере настроено использование SSH-ключей, чтобы избавиться от необходимоси ввода пароля после git pull.

Есть, конечно, мелкие особенности - за неделю мы уже наступили на пару граблей и может это стоило бы описать.

См. также

[PHP, FTP] Web based FTP Sync Tool written in PHP. Есть возможность запрещать синхронизацию для отдельных файлов/папок.

Завёл репозиторий для MaxSite CMS на GitHub-е

Опубликовано: 3 декабря 2011.
Автор: Ruslan Brest.

Рубрика: Web development | MaxSite CMS.
Метки: .

https://github.com/rb2/MaxSite-CMS

Основная причина - неудобство предлагаемого способа обновления между релизами. Мне не хватает diff-ов и легкого способа их получения для чистых версий, чтобы иметь возможность накатить эти изменения вручную на модифицированный движок. Обновляться заменой файлов мне чрезвычайно неудобно.

Если кто-то хочет присоединиться к переводу на английский или правке украинского - теперь есть куда:

  • Исключительно языковые файлы живут и переводятся в соответствующих ветках репозитория https://github.com/g3d/MaxSite-TC (сейчас там украинский в ветке master и английская заготовка в ветке english).
  • Участвовать в корректировке переводов может любой человек, даже понятия не имеющий и не желающий разбираться с Git-ом: достаточно оставлять комментарии к строкам файлов при их просмотре. Тем, кто дружит с Git-ом, объяснять наверное ничего не надо.
  • Файлы скачивать можно там же: переключиться на соответствующую ветку ("Current branch" справа) и скачать ZIP.

В https://github.com/rb2/MaxSite-CMS живёт полностью CMS. Языки туда по мере готовности будут периодически вливаться.

Если автор MaxSite CMS переберётся на GitHub - это значительно упростит дело: можно будет предлагать/публиковать дополнения гораздо проще. Пока что я предполагаю держать этот репозиторий (по крайней мере основную ветку) только для "чистых" релизов версий CMS. И пускать разработчиков только с условием коммитить любые дополнения и модификации в соседние ветки, но не в master. Master branch сейчас - исключительно для оригиналов и получения списка отличий между ними.

Загрузка jQuery по требованию

Опубликовано: 13 ноября 2011.
Автор: Ruslan Brest.

Оригинал: Load jQuery on demand | Web-developer notepad

Для загрузки jQuery по требованию вы можете пользоваться скриптом loadJquery.js.

Быстрый старт

Загрузите скрипт по этой ссылке, отредактируйте его нижнюю часть после слов PUT YOUR CODE HERE, вот эту:

(function () {
...
    /* -------------------- PUT YOUR CODE HERE ------------------ */
    loadJquery({
        url: 'http://code.jquery.com/jquery-latest.min.js',
        timeout: 5000, //ms
        success: function ($) {
            $('h1').css('border', '2px solid red');
        },
        error: function () {
            alert("Can't load jQuery.");
        }
    });
}());

Преимущества скрипта:

  • кроссбраузерность
  • основан на коде jquery 1.7.2
  • отлов исключений при помощи try/catch
  • возможность указания таймаута загрузки
  • загрузка не будет производиться, если jQuery уже загружен.
  • простота использования для конечного пользователя: просто пишите свой код в success/error-колбеки
  • отсутствие конфликтов с другими js-библиотеками типа prototype.js
  • скрипт проходит jslint-валидацию

Теперь больше информации для тех, кто хочет узнать подробности.

Далее...

Цветовые схемы для Geany

Опубликовано: 1 октября 2011.
Автор: Ruslan Brest.

Рубрика: Linux | Web development.
Метки: .

Одновременно с появлением вчера шрифтов Ubuntu Mono и Ubuntu Condensed вспомнил, что хотел ещё цвета в Geany настроить.

В итоге обзавёлся десятком (или даже двумя) новых светлых и тёмных тем Далее...

Яндексу потребовалось 12 дней, чтобы проиндексировать наш интернет-магазин

Опубликовано: 23 сентября 2011.
Автор: Ruslan Brest.

Метки: , .

Я удивлён таким чудовищным сроком. Sitemap.xml был добавлен 11-го числа на http://webmaster.yandex.ua/, и только сегодня (23 сентября) наконец-то сайт попал в поисковую выдачу, а надпись про "сайт успешно добавлен в очередь, ждите" сменилась информацией о том, что столько-то страниц проиндексировано.

Обычно люди говорят о 2-3 днях на индексацию.

Я уж думал, что мы попали в немилость -- предположим, посчитали злостными копипастерами. В той области, кстати, которой мы занялись, выглядеть оригинально по части текстов весьма затруднительно. По фотографиям тоже, поскольку основная масса фото берётся с сайтов производителей и, разумеется, в сотнях магазинов одинаковые. Но мы над этим работаем.

Для сравнения: Google понадобилось меньше дня. Я даже не собирался проверять раньше, чем через сутки, но приятель накатал всем членам команды вопль радости по email :) Мол, ура, всем радоваться - мы попали в поисковую выдачу. Он случайно обнаружил, я даже не успел сказать ему, что занялся поисковиками.

Google Webmaster Tools

Яндекс.Вебмастер

Хотите грохнуть репозиторий на Google Code, но не знаете как?

Опубликовано: 22 сентября 2011.
Автор: Ruslan Brest.

Рубрика: Web development.
Метки: , .

Смените тип репозитория с SVN на Git. Это не сконвертирует его, как можно было бы предположить, а молча удалит. Сюрприз!

Git User's Survey 2011

Опубликовано: 21 сентября 2011.
Автор: Ruslan Brest.

Рубрика: Web development | Git, SVN.

UPD: This survey is currently closed. More information can be found on http://git.wiki.kernel.org/index.php/GitSurvey2011

----

Все на выборы!

В смысле заполните анкетку: https://www.survs.com/survey/VCAGZA8CT5

Результаты наверное будут многим пользователям Git интересны.

Я по ходу дела узнал много новых букв названий интересного Git-софта.