Рубрика «Блог компании Mail.Ru Group» - 117

image

4 февраля в нашем московском офисе снова соберутся Perl-программисты сообщества Moscow.pm. Участники всемирной ассоциации Perl Mongers регулярно встречаются, чтобы обсуждать актуальные вопросы, рассказывать об интересных случаях из практики и обмениваться опытом. Программу мероприятия читайте под катом.
Читать полностью »

image

В декабре в открытом международном картографическом сообществе OpenStreetMap, данными которого пользуются многие известные проекты и приложения, такие как MAPS.ME, Mapbox, OsmAnd, CityMaps2Go, прошли выборы в Совет OSM Foundation. Один из разработчиков MAPS.ME, Илья Зверев вошёл в состав Совета решением большинства голосов, став первым русскоговорящим советником за всю девятилетнюю историю сообщества. Мы расспросили Илью о том, как работает OSMF и какие изменения ждут сообщество в ближайшие 2–4 года (столько работают избранные члены Совета).
Читать полностью »

image

На сегодняшний день разработчики PHP ведут работу над API уровня С. И в этом посте я буду по большей части рассказывать о внутренней разработке PHP, хотя если по ходу повествования встретится что-то интересное с точки зрения пользовательского уровня, то я буду делать отступление и объяснять.
Читать полностью »

Приглашаем на Moscow CocoaHeads 29 января - 1

Приглашаем 29 января, в пятницу, iOS/OS X-разработчиков на встречу сообщества CocoaHeads, которая пройдёт в московском офисе Mail.Ru Group. В программе — 3 доклада и, конечно, неформальное общение. Программа мероприятия ждет вас под катом.
Читать полностью »

Привет! Я работаю в Mail.Ru Group в отделе разработки плагинов JIRA. Плагины позволяют расширять или изменять функциональность приложения. Например, с их помощью можно создавать новые типы полей, гаджеты, JQL-запросы, панели с различной информацией, графики и многое другое.

Большинство наших плагинов требуют хранения дополнительных данных, которые они используют. В этой статье я хочу рассказать, как мы решаем эту задачу. Существует два основных способа хранения таких данных: Active Objects и Plugin Settings. Рассмотрим их поподробнее и разберемся в каком случае лучше и удобнее использовать один, а в каком — другой.

image
Читать полностью »

Итоги научно-популярного лектория Set Up - 1

В начале декабря в офисе Mail.Ru Group прошёл первый научно-популярный лекторий Set Up, на котором был представлен ряд лекций по самым разным областям знания. Также в рамках лектория прошли мастер-классы и небольшая выставка гаджетов. Мы были приятно удивлены не только большим количеством гостей, пришедших на лекторий, но и тем, что подавляющее большинство составляла молодёжь. Не верьте тем, кто говорит, что молодых не интересует наука — прошедший Set Up полностью опроверг эту теорию. Если же вам не удалось посетить наш первый научно-популярный лекторий, то под катом вы можете ознакомиться с видеозаписями лекций.
Читать полностью »

И вновь в эфире цикл переводов полезных советов для веб-разработчика. На этот раз автор расширил спектр исследуемых инструментов, добавив туда редактор Sublime Text и фреймворк Node.js. Предыдущие части: 1-16, 17-32.

Поехали!

Содержание:
   33.  Разворачивание упрощенной записи CSS-свойств
   34.  Определение совпадения селекторов по цвету
   35.  Использование визуальной навигации и просмотр снятых скриншотов процесса загрузки страницы
   36.  Sublime Text: нечеткий поиск при помощи функциональности GOTO
   37.  Быстрое изменение значения CSS-свойств при помощи клавиатуры и колеса мыши
   38.  Прокрутка элемента в области видимости
   39.  Node.js: Использование Babel для запуска ES6
   40.  Переход к просмотру и редактированию CSS или Javascript-файлов из панели «Elements»
   41.  Отображение значений Javascript-переменных рядом с кодом в процессе отладки
   42.  Использование цветовой группировки в панели «Network» для упрощения идентификации типа ресурса
   43.  Активация псевдо классов DOM-элемента
   44.  Инспектирование самих инструментов разработчика
   45.  Запуск выбранного блока кода из панели «Sources»
   46.  Установка условных точек останова
   47.  Переход к следующему вхождению выбранной строки при помощи горячих клавиш
   48.  Редактирование CSS-файла в панели «Sources» и упрощенное изменение значений CSS-свойств
Читать полностью »

Детали test-first, которых так не хватало - 1 Все мы не раз слышали о test-first — философии разработки, которая призывает писать тесты раньше кода. Уверен, что любой, кто пытался применять этот метод на практике, сталкивался с тем, что у него просто не получается написать тест до функции (обычно в этом случае просто игнорируют эту проблему и локально нарушают test-first). Я считаю, что причина подобных провалов фундаментальна, и попытаюсь показать почему.

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

Вам может показаться, что индустрия давно разобралась со всеми проблемами, связанными с test-first, и причина всех возможных провалов лишь в том, что мы как разработчики не обладаем достаточной квалификацией для успешного применения нужных техник, а вовсе не в каких-то фундаментальных проблемах. Увы, здесь и там разные программисты задают одни и те же вопросы, как именно делать test-first, и получают порой невразумительные ответы. Думаю, без преувеличения можно сказать, что комьюнити по всему миру что-то подозревает, но многое остается недоговоренным.
Читать полностью »

Опасное видео: как я нашёл уязвимость в видеохостингах и не умер через 7 дней - 1

Всем привет! В сегодняшнем посте я хочу рассказать об одной довольно интересной уязвимости, которую нашёл и зарепортил в bug bounty нескольких крупных компаний, за что получил солидное вознаграждение. Уязвимость заключается в следующем: если сформировать специальный видеофайл и загрузить его на сервер, то:

  • можно получить на нём SSRF;
  • можно получить local file read;
  • если пользователь скачает этот файл, то автоматически будет подвержен уязвимостям, даже если его не откроет: можно будет получить доступ к данным на компьютере пользователя и узнать его имя.

Читать полностью »

image

На сегодняшний день две мои самые любимые темы — SQLite и key-value базы данных. И в этот раз я пишу сразу про обе: этот пост посвящён Python-обёртке для используемого в SQLite 4 key-value хранилища на основе LSM.

Я не слишком внимательно отслеживаю релизы SQLite, но версия 3.8.11 привлекла моё внимание, поскольку в её описании заявлено серьёзное увеличение производительности по сравнению с 3.8.0. В сопроводительной информации я наткнулся на упоминание о новом экспериментальном расширении для полнотекстового поиска (о котором писал когда-то), и потому мне стало интересно, какая складывается ситуация с SQLite 4.

Изучив доступную информацию, я обратил внимание, что одной из задач разработчиков было обеспечить в новых версиях интерфейс для подключаемых движков баз данных. На момент написания этого поста в SQLite 4 уже было два встроенных бэкенда, один из которых — key-value хранилище на основе LSM. В последние пару месяцев мне доводилось поиграться с Cython, пока я писал Python-обёртку для встроенных k-v хранилищ UnQLite и Vedis. И я подумал, что было бы неплохо применить Cython для создания интерфейса движка БД на основе LSM, используемого в SQLite 4.

Разобравшись с исходным кодом SQLite 4 и крохотным заголовочным файлом LSM, я написал python-lsm-db (документация).
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js