4 заметки с меткой MySQL
📅 2 марта 2020

Титов Иван Андреевич

37 лет, Москва, м. ВДНХ

Образование

МФТИ · факультет радиотехники и кибернетики (неполное высшее)

МИЭТ · кафедра телекоммуникационных сетей

Опыт работы

Создание сайтов «под ключ» и веб-сервисов — с 2005 года.

Где и кем работал:

• Creative People (флешер, верстальщик),
• казино Бакара (дизайнер полиграфии),
• рекламные агентства Diaclub, LineWeb (дизайн и вёрстка сайтов),
• ресторан Дружба народов (разработка сайта, дизайн полиграфии),
• Safetybox (анимация обучающих курсов),
• Автодети (разработка сайта, с 2010 года по н.в.)

Предыдущее значимое место работы

С 2010 по 2018 год работал в компании Ивановъ и партнеры (строительство загородных посёлков, продажа участков).

Чем занимался:

— Создание и поддержка сайта и собственной CMS.
— Развитие внутренней CRM системы.
— Дизайн мобильной версии CRM.
— Разработка удобных инструментов для продавцов.
— Повышение конверсии в продажи за счёт сайта.
— Интеграция сайта с CRM, Яндекс.Метрикой, Calltouch и т.п.
— Построение уникальных отчетов, которых нет в Яндекс.Метрике.
— Проведение сложных А/Б-тестирований.
— Дизайн полиграфии и наружной рекламы.

Для организации работы мы использовали планировщик задач Мегаплан. Есть опыт в постановке и ведении коллективных задач.

Компания «Ивановъ и партнеры» прекратила своё существование в 2018 году, в связи с этим я ищу новую стабильную работу на долгосрочную перспективу (желательно с возможностью работать удалённо).

Примеры моих работ

Сайт загородных посёлков
Сайт компании Автодети
Сайт компании NENCOM
Калькулятор стоимости переезда
Химический редактор
Электронное строение атома
3D-вращение во флеше
Сервис проверки зрения
Панель управления фарами
Калькулятор вероятностей

Остальные работы можно посмотреть в разделе Работы.

Основные умения

• Увлекаюсь алгоритмами со средней школы, люблю сложные интересные задачи.

• В основном, использую чистый javascript, PHP, MySQL, jQuery, API Яндекс карт.

• Быстро осваиваю новые библиотеки, используемые в проекте.

• Люблю оптимизировать сайты в плане юзабилити и расходования ресурсов.

• Анализирую и замечаю сильные и слабые места в интерфейсах.

• Небольшие сайты пишу с нуля, используя собственные наработки.

• Аккуратно рисую техническую графику (иконки, пиктограммы) в SVG.

• Разбираюсь в хитростях и современных фишках в CSS.

• Умею быстро вникать в чужой код на различных языках программирования (как front-end, так и back-end).

Например, часто встречается такая задача: исправить ошибку на сайте или добавить новый блок на сайт по ftp, где сотни файлов лежат беспорядочно, а код переделывали много раз случайные фрилансеры.

• При необходимости быстро изучаю новые средства разработки.

Например, в 2019 году получил заказ на разработку обучающего курса для сотрудников Сбербанка в среде adapt. Внешне это простое приложение типа Microsoft Power Point, но работа включала доработку имеющихся плагинов для этой среды (типа навигации по меню). Для этого пришлось развернуть adapt на локальном компьютере, минимально освоить grunt, git, установку npm-пакетов.

• При решении нестандартных задач всегда пользуюсь песочницей с примерами или stackoverflow, чтобы не изобретать велосипед, и сделать какую-то вещь быстро и более современно.

• Владею графическими и мультимедиа редакторами: Photoshop, Illustrator, Corel, Flash, After Effects, Adobe Audition, Adobe Premiere. Люблю осваивать новые современные редакторы.

Особенности работы

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

Обычно я работаю один (удалённо) или в небольшом коллективе, где умеют и не боятся отстаивать свою точку зрения.

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

Иностранные языки

Английский — средний уровень. Лучше всего чтение и написание технических текстов. Хороший словарный запас, но мало опыта в разговорной речи.

О себе

Женат, двое детей. С семьёй любим проводить свободное время за городом, выезжая на автомобиле в новые места.

Я интересуюсь современными тенденциями в IT: смотрю уроки, читаю статьи на Хабре. Последнее время особенно интересно почитать истории людей, у которых меняется профиль деятельности, как они адаптируются к новым условиям.

Хобби: игра на клавишных инструментах, в группе, сочинение музыки на компьютере, чтение, радиотехнические самоделки, компьютерные игры (стратегии и RPG).

Цели: самореализация, гармония с внутренним и внешним миром, разумный баланс между работой, семьёй, творчеством.

📅 5 марта 2017

Как найти дубликаты в MySQL

По работе столкнулся с проблемой: некоторые объекты на карте имели одинаковые координаты. Это приводило к ошибке кластеризации на Яндекс.Картах. Чтобы исправить данную проблему, мне понадобилась функция поиска дубликатов в таблице MySQL. Найденные координаты нужно было исправить, чтобы они немного отличались (например, если объекты находятся в одном доме, их можно разнести по разным подъездам этого дома).

Дубликаты одного поля

Найти дубликаты переменной x в таблице table_name:

SELECT * FROM table_name WHERE x IN(SELECT x FROM table_name GROUP BY x HAVING COUNT(x)>1) ORDER BY x

Эта функция ищет дубликаты только одного поля. Если нужно сравнивать несколько полей, например, координаты (x,y) или (имя,фамилия,отчество) — принцип тот же. Насколько я понял, умных алгоритмов для поиска дубликатов в MySQL нет, поэтому мы просто объединяем нужные поля в одно слово командой z=CONCAT(a,b,c ....) — и ищем дубликаты по переменной z.

Дубликаты нескольких полей

Найти дубликаты пар (x,y) в таблице table_name:

SELECT * FROM table_name WHERE CONCAT(x,y) IN (SELECT CONCAT(x,y) AS z FROM table_name GROUP BY z HAVING COUNT(z)>1)

В скобках может быть указано любое кол-во полей.

Дополнительные условия

В моём случае нужно дополнительно исключить ситуации с нулевыми координатами (это ещё не заполненные поля):

SELECT * FROM table_name WHERE CONCAT(x,y) IN (SELECT CONCAT(x,y) AS z FROM table_name WHERE x!=0 AND y!=0 GROUP BY z HAVING COUNT(z)>1)

📅 23 февраля 2017

Сохранить данные в базе данных в виде текста

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

Например, расписание занятий по фитнесу. Занятия могут проходить в двух разных залах.

В БД хранится одно текстовое поле:

19:00^Фитнес микс|Zumba^|^|^|^Фитнес микс|^|
20:00^|^|^Здоровая спина|Zumba^|^Zumba|^|
21:00^|^Zumba|^|^|^|^|

Время, далее дни с ПН по СБ, и каждый день поделен на два зала.

Текстовое представление удобно для разработчика: оно визуально подобно блоку на сайте или в админке. Ещё один плюс — всего один запрос к БД.

Вывести это на сайт или в админку просто: заранее придуманные символы-разделители — в нашем случае это ^ и | — заменяются на теги tr, td или div или любые другие. На теги навешиваются стили, и получается красивый блок:

Расписание на сайтеРасписание на сайте

В админке структура полностью сохраняется, это удобно для менеджера:

Строчки можно добавлять, удалять, все поля редактируемые, названия занятий — любыеСтрочки можно добавлять, удалять, все поля редактируемые, названия занятий — любые

После редактирования html-код обратными заменами превращается в чистый текст:

19:00^Фитнес микс|Zumba^|^|^|^Фитнес микс|^|
20:00^|^|^Здоровая спина|Zumba^|^Zumba|^|
21:00^|^Zumba|^|^|^|^|

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

📅 31 мая 2013

Как изменить порядок столбцов в MySQL

Порядок столбцов обычно ни на что не влияет (кроме эстетической красоты), поэтому данному вопросу в интернете уделено мало внимания.

Но вот я пишу CMS-ку, которая сама определяет структуру таблиц и выводит их в таком же виде, как в базе (как в phpmyadmin). Как изменить структуру уже созданных таблиц, чтобы их было удобнее редактировать в админке?

Мне подошла функция MODIFY COLUMN, которая перемещает заданный столбец на позицию до или после (BEFORE / AFTER) другого столбца:

ALTER TABLE table_name MODIFY COLUMN col1_name col1_type AFTER col2_name

После имени столбца надо обязательно указать его тип, например, int(5) — без этого не работает. Не понятно, почему это уточнение является обязательным — ведь логичнее всего переставлять столбец в том виде, как он есть, без изменения типа.

© 2004 – 2021