Мастер на все руки — разработка сайта

Вы понимаете, о скольких вещах приходится одновременно переживать, когда работаешь над сайтом?

Знаете, когда хочешь сделать хороший продукт, но у тебя на всё просто не хватает рук…

Как думаете, большая ли команда разработчиков работает над сайтом? Может быть дизайн-студия?

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

  • Структурного дизайнера,
  • UI-дизайнера,
  • Клиентского Программиста,
  • Серверного Программиста
  • Верстальщика,
  • Редактора,
  • Художника,
  • Фоторедактора,
  • Ретушёра,
  • Аниматора,
  • Оптимизатора,
  • Тестировщика…

Приходится решать множество различных задач, начиная от того, чтобы всё выглядело красиво, заканчивая тем, чтобы никуда ничего не поехало на разных экранах.
Во многом мне помогает фреймворк, который я выбрал для вёрстки, но он совершенно не спасает от вёрстки конечных элементов!
Функциональные элементы так и просятся наружу, при любом вмешательстве в их изначальную структуру, не говоря уже о том, чтобы добавлять новые.
Выбор цветов — оставляю всегда художникам. «Я художник, я лучше вижу» для меня цвета не имеют определяющего значения, зато имеет значение то, куда будет смотреть пользователь и на каком этапе.

Но тут нужен взгляд опытного человека из определённой сферы, ближе к рекламе, чтобы понимать, куда нужно вести пользователя, чтобы он ткнул заветную кнопку «купить билет». Тут я сдаюсь, поскольку сфера не моя, и я не понимаю, как именно нужно пользователя вести.

С фотографиями швах. Приходится работать с тем, что есть.
Абсолютно не хватает времени на ретушь, не говоря уже о более серьёзной обработке.

Идейный замысел сайта уже был переигран множество раз.

 

Сегодня я снова поработал над сайтом с новым азартом, потому что понял, как сделать его лучше. Обвёл границы картинок золотыми рамочками. Так будет круче. Сделал золотые границы везде, где увидел. 

Подкорректировал двойку. Поколдовал немного с прозрачностью. Без анимации, конечно, не то.

Но вы представляете, сколько времени занимает анимация изображения? Тут нужна работа художника на 10 часов, не меньше!

Можно конечно снять видео… Но потом опять же будут проблемы со встраиванием, а также с нагрузкой на сайт. Потому что любое, даже самое маленькое видео будет долго грузиться.

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

Вот вчера, меня и вовсе добили фразой «а что, если нам попробовать тильду, у них очень красивые шаблоны выходят?»

Наверное, я про него не знал? Стоит посмотреть?
Да чёрт возьми, я уже хренову кучу сайтов сделал на этом конструкторе для безруких, у которых нет навыков вёрстки «от слова совсем». А они предлагают им воспользоваться?
Ну ок, выкидываем половину наработок и идей, которые бы нам были очень кстати, и делаем статичный сайт на тильде. Замечательно. Вот после таких предложений и руки опускаются делать что-то в этом поле.

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

Я уже несколько дней не занимаюсь этим сайтом, но это не значит, что я прекратил над ним работу. Просто я не понимаю, куда мы катимся, после того, как в игру включился продюсер, и ещё какая-то девушка со словами «добавьте красного и синего». У них своё видение проекта, а кому-то не нравятся текстурки.

Но ничего, скоро вернусь снова к работе, необходимо уже встретиться с этим человеком, и понять, что за взгляд они такой декларируют за моей спиной, и почему обговаривают, не обговаривая с тем, кто собственно делает всю систему?

Не кажется ли это странным, что люди: заказчики, любители крутых идей и красивой картинки, совсем не думают о том, как это технически должно быть реализовано внутри,  и почему всё складывается так, как оно получается?

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

Для меня работа с сайтом это прежде всего работа с техникой, а во вторую очередь это «красивая картинка». Если вам нужна красивая картинка, можете сами рисовать сайты в тильде или других статичных конструкторах, благо их развелось много в последнее время.

Сайт «Вернувшихся» — статичное дерьмо, с одним единственным видео, встроенным на главную страницу.

Сайт «Последнего испытания» — намного лучше. Много активных элементов, но этот чёртов параллакс, за который у нас зацепился заказчик.
Неужели это всё, что нам нужно? Ну ладно, будет вам параллакс, поскольку без дыма и анимации у нас тут вообще нечего смотреть пока.

Понимаю, что важно ещё поработать со шрифтами — но это в последнюю очередь, хотя понимаю, что они очень важны. Но на них тратится много времени. Надо бы выбрать уже один, и всё!

И больше всего расстраивает в этом то, что несмотря на то, что меня назначили главного по медиа-продукту (и я этому очень рад!), но всё таки все основные решения как-то проплывают мимо (например тот факт, что от электронной голосовалки отказались, меня уведомили постфактум), а визуальные составляющие обсуждают опять же без тебя, не очень то погружая в суть вещей. Да, эти чёртовы сроки горят. Я вообще ожидал, что к началу февраля мы сможем запустить рекламу на то, что у нас есть, а часть деталей можно доделать до определённого уровня позже, когда будет время. Но рекламу не запустили, поскольку проще свалить на «недостаточный уровень дизайна», который теперь отодвинул срок рекламы на неделю, а то и дольше. И придётся начинать с группы,  ведь «сайт совершенно ещё не готов!». А я что. Расстраиваюсь, успокаиваюсь. Сержусь непонятно на что. На ситуацию, на людей, которые со мной работают. И иду делать работу дальше. Потому что я, чёрт возьми, люблю своё дело.

Фух, накипело. Половину этой писанины можно смело выкинуть в мусорку, или сжечь в пламени, как излишне эмоциональное чтиво. Но есть и объективные моменты. Возможно их стоит обсудить с нашим продюсером, или с заказчиком, при очной встрече.

Какие алгоритмы нужно знать, чтобы стать хорошим программистом?

Данная статья содержит не только самые распространенные алгоритмы и структуры данных, но и более сложные вещи, о которых вы могли не знать. Читаем и узнаем!

Я предполагаю, что вы знаете как минимум один язык программирования и такие понятия, как объект и указатель. Алгоритмы и структуры данных будут перечисляться по степени их сложности.

Для начала давайте начнем с линейных структур данных и алгоритмов

  • Массивы
  • Связный список
  • Стек
  • Очереди

Перейдем к базовым алгоритмам

  • Сортировка — Сортировка слиянием, Сортировка вставками, Быстрая сортировка, Несколько взаимных перестановок.
  • Умножение матриц (Не обязательно реализовывать, главное — знать алгоритм)
  • Основные алгоритмы просеивания
  • Беззнаковая математика, включая умножение и деление
  • Алгоритм Евклида для нахождения НОД (наибольший общий делитель), Модульная инверсия, Быстрое возведение в степень
  • Числа Фибоначчи с матричным умножением
  • Нормальное распределение и математическое ожидание
  • Статистика – среднее вероятностное значение случайной величины, медиана, дисперсия, теорема Байеса

Также можно изучить популярные алгоритмические методы:

  • Алгоритмы декомпозиции – Бинарный поиск, Нахождение подмассива с наибольшей суммой элементов
  • Жадные алгоритмы – Выбор задач, кодирование по алгоритму Хаффмана
  • Динамичное программирование – Цепное матричное умножение, Алгоритм решения задачи по укладке ранца
  • Линейное программирование – Максимизация параметра, Линейное время сортировки
  • Криптографические алгоритмы – Алгоритм Манакера по нахождению длиннейшей подстроки-палиндрома, алгоритм нахождения наибольшей общей подпоследовательности (LSC), расстояние Левенштейна

Теперь перейдем к типичным нелинейным структурам данных

  • Деревья – Бинарное дерево, Дерево общего вида, Наименьший общий предок
  • Бинарное дерево поиска – Симметричный обход, Обход по уровням, Нахождение k’ого наибольшего элемента, Диаметр, Глубина, Количество узлов и т.д.
  • Динамическая память – Динамический массив, Двоичная куча, Пирамидальная сортировка
  • Алгоритм объединения-поиска
  • Хеш-таблица – Метод нахождения коллизий (Linear Probing), Открытая адресация, Предотвращение коллизий

Рассмотрим графы

  • Список смежных вершин графа, Матрица смежности графа, Взвешенные рёбра графа
  • Основные алгоритмы обхода – Поиск в ширину, Поиск в глубину и т.д.
  • Алгоритмы нахождения кратчайшего пути — Алгоритм Дейкстры, Алгоритм Флойда-Уоршелла, Алгоритм Беллмана-Форда
  • Минимальное остовное дерево — Алгоритм Крускала, Алгоритм Прима

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

Усложнённые деревья и графы

  • Сбалансированные деревья – AVL-дерево, Красно-черное дерево
  • Heavy-light декомпозиция, Б-деревья, Дерево квадрантов
  • Усложнённый граф – Минимальный разрез, Максимальный поток
  • Максимальное покрытие – Теорема о свадьбах
  • Гамильтонов цикл
  • Рёберный граф/ Линейный граф
  • Сильно связные компоненты
  • Главный подграф, Покрытие вершин, Задача коммивояжёра – Алгоритм аппроксимации

Продвинутые криптографические алгоритмы:

  • Алгоритм Кнута-Морриса-Пратта
  • Алгоритм Рабина-Карпа
  • Префиксные и суффиксные деревья
  • Автоматизация суффиксов – Алгоритм Укконена

Высшая математика

  • Быстрое преобразование Фурье
  • Проверка простоты
  • Вычислительная геометрия – Задача поиска ближайшей пары, Диаграмма Вороного, Выпуклая оболочка множества точек

Общие продвинутые темы:

  • Выполнение обхода всех комбинаций/перестановок
  • Поразрядная обработка

Ссылка на оригинальную статью
Перевод: Александр Давыдов
Источник