Задачи для стажеров


Для стажировки мы предлагаем небольшие задачи, возникающие в процессе нашей работы. Вы можете выбрать любую из предложенного списка. Допускается черновое решение задачи, либо какие-то свои идеи, как лучше сделать. Обсуждаются только конкретные решения, гипотезы вида "а что если..." не рассматриваются. Если у вас есть гипотеза – сделайте работоспособный скрипт и пришлите его нам.




1. Просмотр лога MySQL "на лету"

У MySQL есть файл конфигурации my.cnf. В нем можно выставить, чтобы все запросы к базе скидывались в файл (удобно при разработке – особенно когда чужие системы приходится доделывать). Проблема в том, что этот файл считывается при запуске. Т.е. либо ничего не пишется, либо пишется все. Нужно сделать так, чтобы можно было переключать "на лету". Т.е. наткнулся на непонятный момент – включил запись в лог, проверил – и снова выключил. Подойдет любой скрипт автоматизации. Возможно, есть какие-то готовые решения в интернете.




2. Сканер типовых ошибок

При разработке больших систем возникают типовые ошибки:
  • в файлах css остаются неиспользуемые стили
  • "SELECT *" в sql-запросах – может приводить к потере производительности
  • внутри цикла for стоит count или sizeof – аналогично потеря производительности
  • некоторые другие ошибки


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




3. Подгрузка изображений по мере прокрутки

Один из наших проектов – "Живая наука". Для примера возьмем одну статью из него:

http://livescience.ru/article_70/

Есть много картинок, и не факт, что все будут просмотрены пользователем. Допустим, кто-то поглядел только начало статьи, и понял, что не то. Естественно, вниз он не стал прокручивать. А картинки мы подгружаем все, расходуем зря трафик. Нужно найти решение (или придумать самому), как подгружать картинки по мере прокрутки.

Дополнение: из всех вариантов наиболее оптимально вот это – http://www.sebastianoarmelibattana.com/projects/jail/example1

Однако есть проблема: картинки имеют разный размер, поэтому каждая "заглушка" должна быть со своим размером. Нужно придумать, как в заглушку прописывать параметры "родной" картинки. Нюанс в том, что картинки лежат на другом сервере (для оптимизации), так что файловые операции к ним неприменимы. Скорее всего, нужно сделать сканер, который сделает рекурсивный обход папок на этом сервере и сделает таблицу соответствия "путь к картинке -> ее размеры". Потом, при выводе статьи будут просто браться размеры из этой таблицы, и создаваться заглушки нужного размера.
выполнено!




4. Исключить из сканирования файлов определенные папки

Продолжение задачи 3 (см. выше).

Сканер картинок сделан, рекурсивно перебирает все папки на хостинге. В ходе его использования выяснилось следующее: некоторые папки не должны обрабатываться сканером. Нужно доработать скрипт. Сам скрипт будет предоставлен.

выполнено!