Рубрика «Программирование» - 731

Обработка времени в SFML - 1

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

Приглашаем на Moscow Python Meetup 18 марта - 1

18 марта, в пятницу, приглашаем на Moscow Python Meetup 33 в офис Mail.Ru Group. На встрече планируются следующие выступления спикеров:

Приглашаем на Moscow Python Meetup 18 марта - 2— «QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Rambler&Co

Существуют три наисложнейшие проблемы в программировании: именование, кэширование и выход за границу массива. Проверка пограничных случаев поведения кода наиболее важна, но эта зона также наименее тестируема. Придумать и предугадать все возможные ситуации человеку тяжело, и порой мы что-то упускаем из виду. Вот было бы здорово, если бы тесты сами находили такие случаи, при которых код падает… Мечты? О том, как превратить их в реальность, пойдет речь в докладе.
Читать полностью »

Как именно в Netflix реализован код до этапа работы в облаке? Части этой истории мы рассказывали и прежде, но сейчас настало время добавить в неё больше деталей. В данном посте мы опишем инструменты и методы, позволившие нам пройти путь от исходного кода до развёрнутого сервиса, который позволяет наслаждаться фильмами и сериалами более чем 75 миллионам подписчиков со всего мира.

image

Схема выше – отсылка к предыдущему посту, представляющему Spinnaker, нашу глобальную непрерывную платформу передачи данных. Но до попадания в Spinnaker строке кода нужно пройти несколько этапов:

  • Код должен быть написан и локально испытан плагинами Nebula;
  • Изменения перемещаются в центральное хранилище git;
  • Jenkins запускает Nebula, которая создаёт, тестирует и подготавливает приложения для облака;
  • Билды «выпекаются» в Amazon Machine Image;
  • Spinnaker способствует разблокировке и активизации измененного кода.

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

Организационная культура, облако и микросервисы

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

Культура Netflix расширяет возможности инженеров в плане использования любого, по их мнению, подходящего инструментария ради решения поставленных задач. По нашему опыту, для того, чтобы какое-либо решение получило всеобщее признание, оно должно быть аргументированным, полезным и уменьшать когнитивную нагрузку на большинство инженеров Netflix. Команды свободны в выборе пути решения задач, но за это расплачиваются дополнительной ответственностью по поддержке этих решений. Предложения центральных команд Netflix начинают считаться частью «проторенной дорожки» (paved road). Сейчас именно она находится в центре нашего внимания и поддерживается нашими специалистами.
Читать полностью »

Алгоритм выявления курильщика по кардиограмме: Промежуточные итоги исследовательского конкурса - 1

На Geektimes уже писали о проекте мобильного кардиографа CardioQVARK, а на Хабре — о проводимом его командой исследовательском конкурсе для разработчиков и математиков. Вкратце, его суть заключается в разработке алгоритма распознавания курильщика по его кардиограмме.

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

На сегодняшний день миллионы разработчиков по всему миру используют технологии Microsoft.NET. Если вы один из них или хотите им стать, обязательно добавьте нижеперечисленные сайты в «Избранное», сохраните в закладки или просто запишите в блокнот (заодно вспомните, как это – писать ручкой на бумаге).

7 сайтов, о которых должен знать каждый .NET-разработчик - 1
Читать полностью »

Даже не знаю, поможет ли кому данная статья или нет, но так как в момент написания своей мини-игры я не нашёл ответа на данный вопрос, решил написать решений.

Месяцев 2 назад я начал писать мини-игру, просто для оттачивания имеющихся умений и приобретения новых. Игра была задумана 2D. Полистав немножко интернет, нашёл вполне нормальную библиотеку для начинающего (ну и не только) — SFML. Идея была придумана и библиотека выбрана.
Читать полностью »

image

Именно этой фразой нас приветствует библиотека для работы с OAuth — ScribeJava (https://github.com/scribejava/scribejava). Если быть точнее, то фраза звучит так: “Who said OAuth/OAuth2 was difficult? Configuring ScribeJava is so easy your grandma can do it! check it out:”.

И это действительно похоже на правду:

OAuth20Service service = new ServiceBuilder().apiKey(clientId).apiSecret(clientSecret)
    .callback("http://your.site.com/callback").grantType("authorization_code").build(HHApi.instance());
String authorizationUrl = service.getAuthorizationUrl();
OAuth2AccessToken accessToken = service.getAccessToken(code);

Готово! Этих трех строчек достаточно, чтобы начать делать OAuth запросы. А сам OAuth запрос можно будет сделать так:

OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.hh.ru/me", service);
service.signRequest(accessToken, request);
String response = request.send().getBody();

Данные о пользователе у нас в руках (в переменной response). И ни капли понимания, как в деталях работает OAuth. Хотим асинхронные http-запросы? Нам хватит тех же трех строчек. Ниже рассмотрим это на примере.
Читать полностью »

Разбор функции из стандартной библиотеки D - 1 Привет Хабр, хочу пригласить всех на небольшую экскурсию по языку D. Зачем? Ну зачем люди вообще на экскурсии ходят — чтобы развлечься, увидеть что-то новое и вообще — это интересно. D трудно назвать новым или хотя бы молодым, однако в последние пару лет шло бурное развитие, в сообщество пришел Андрей Александреску и быстро стал ведущим разработчиком, с его способностью предвидеть тренды он внес огромный вклад в концепции самого языка и особенно в стандартную библиотеку.

С самого своего возникновения D позиционировался как улучшенный C++ (по крайней мере в моем прочтении истории). Возможность отбросить некоторые устаревшие конструкции и внести вместо них то новое, что не могло быть реализовано в классическом C++, и одновременно бережное сохранение низкоуровневых возможностей, таких как встроенный ассемблер, указатели и использование библиотек С, делают D уникальным претендентом на звание «следующего в ряду C — C++ — ...». Ну это с моей точки зрения, сам я (наверное вежливо было бы добавить «к сожалению») абсолютно моноязычен, много лет пишу на C++ и любые попытки познакомиться с другими языками неизбежно заканчивались крепким здоровым сном. Однако я слышал от представителей других конфессий что D для них тоже интересен как язык, так что на экскурсию приглашаю всех.

Что я буду показывать? По D уже написано несколько очень хороших книг, поэтому я решил просто взять функцию getopt() из стандартной библиотеки и посмотреть на ее код, неоценимо полезное упражнение позволяющее оживить прочитанное в книгах. Почему именно эту функцию? Ну, она же всем знакома и системно независима, я лично ее использую 3-4 раза в неделю и в деталях представляю как она могла бы быть написана на 3-х различных языках. Кроме того, автором кода значится Александреску, я много раз видел учебные примеры его кода в книгах и никогда не видел кода написанного в продакшн, любопытно же. В конце я конечно же не удержался и написал свой велосипед (естественно улучшенный), в данном случае это совершенно уместно и не менее полезно чем разбор чужого кода.

Увидим мы далеко не все из того что бы стоило посмотреть, да и сам я далеко не эксперт, поэтому читайте сами кому интересно, ссылки в конце.
Читать полностью »

Обновленные онлайн-курсы Mail.Ru Group и интервью с их создателями - 1

В декабре и феврале на портале IT.Mail.Ru в партнерстве со Stepic мы запустили онлайн-курсы на основе материалов, читаемых в проектах Техносфера, Технопарк и Технотрек. На сегодняшний день мы провели обучение по трем курсам:

  • на курс «Алгоритмы и структуры данных» записались 3370 человек, 145 человек успешно прошли обучение, из них 105 — с отличием;
  • на курс «Подготовительная программа по программированию на С/C++» записались 2400 человек, 140 человек завершили обучение, из них 106 — с отличием;
  • на курс по анализу безопасности веб-проектов записались 4370 человек, 560 пользователей завершили обучение, из них 330 — с отличием.

Более того, мы доработали программу и снова открыли регистрацию на некоторые курсы!

В этом посте хотим поделиться с вами интервью участников проектов. Мы расспросили идейного вдохновителя, директора департамента исследований и образования Mail.Ru Group Дмитрия Волошина, а также наших преподавателей. Читайте интервью с ними под катом.
Читать полностью »

Об одной интересной ошибке в Lucene.Net - 1
Некоторые программисты, когда слышат про статический анализ, говорят о том, что он им не нужен, так как весь их код покрыт юнит-тестами, и этого достаточно, чтобы выловить все ошибки. Мне попалась ошибка, найти которую с помощью юнит-тестов теоретически возможно, но если о ней не знать, то написать такой тест практически нереально.

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


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