Habrahabr лучшее

Лучшие публикации за последние 24 часа
Подписка на Лента Habrahabr лучшее Habrahabr лучшее


Некоторое время назад наш московский офис посетил Роберто Иерусалимский, автор языка Lua. Мы взяли у него интервью, в ходе которого задали и вопросы от читателей Хабра. Наконец-то мы можем поделиться с вами всей записью разговора.
Читать дальше →
Автор материала, перевод которого мы публикуем сегодня, занимается работой над фреймворком Quasar. Это — полнофункциональный расширяемый опенсорсный инструмент для разработки современных приложений различного назначения. Он построен на базе популярного фронтенд-фреймворка Vue.js и использует возможности Node.js, Webpack и Babel. Совсем недавно, в начале июля сего года, вышел первый стабильный релиз Quasar.

Читать дальше →
Привет!

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

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

Тем, кто уже стал, или еще только мечтает стать начинающим разработчиком, я могу дать следующие рекомендации:

  • Изучайте проблему самостоятельно
  • Сначала сообщайте цель, потом озвучивайте проблему
  • Пишите грамотно и по существу
  • Задавайте вопросы по адресу и делитесь решением
  • Уважайте чужое время
  • Смотрите шире

А теперь подробнее.
Читать дальше →
Все, кто работает с Redux, рано или поздно сталкиваются с проблемой асинхронных действий. Но современное приложение разработать без них невозможно. Это и http-запросы к бэкенду, и всевозможные таймеры/задержки. Сами создатели Redux говорят однозначно — по умолчанию поддерживается только синхронный data-flow, все асинхронные действия необходимо размещать в middleware.

Конечно, это слишком многословно и неудобно, поэтому тяжело найти разработчика, который пользуется одними только “нативными” middleware. На помощь всегда приходят библиотеки и фреймворки, такие как Thunk, Saga и им подобные.

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

async dispatch => { setTimeout(() => { try { await Promise .all([fetchOne, fetchTwo]) .then(([respOne, respTwo]) => { dispatch({ type: 'SUCCESS', respOne, respTwo }); }); } catch (error) { dispatch({ type: 'FAILED', error }); } }, 2000); }
На такой код больно даже смотреть, а поддерживать и расширять просто невозможно. Что делать, когда нужна более сложная обработка ошибки? А вдруг понадобится повтор запроса? А если я захочу переиспользовать эту функцию?

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

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

Как оказалось, это был сон, сон знаковый. Чтобы не злить Никиту Михалкова из моего сна, я, молодой парень из «ЛАНИТ-Интеграции», написал статью о внедрении DLP-системы на примере ритейла.

Читать дальше →

Мы в JSOC CERT расследуем инциденты. Вообще все 170 человек в JSOC занимаются расследованиями, но в руки экспертов CERT попадают наиболее технологически сложные случаи. Как, к примеру, обнаружить следы вредоноса, если злоумышленник прибрал за собой? Каким образом найти «волшебника», удалившего важные бизнес-документы с файлового сервера, на котором толком не настроено логирование? Ну и на сладкое: как может злоумышленник без проникновения в сеть получить пароли от десятков не связанных между собой доменных учеток? Подробности, как всегда, под катом. Читать дальше →
Иногда можно услышать такую фразу «чем старше продукт, тем он функциональнее». В век современных технологий, далеко идущего web и модели SaaS это утверждение почти не работает. Залог успешной разработки это постоянный мониторинг рынка, отслеживание запросов и требований клиентов, готовность сегодня услышать важное замечание, вечером его втащить в бэклог, а завтра начать разрабатывать. Именно так мы работаем над проектом HubEx — системой управления сервисом оборудования. У нас отличная и разнообразная команда инженеров, и мы могли бы разработать сервис знакомств, захватывающую мобильную игру, систему управления временем или самый удобный на свете todo-лист. Эти продукты быстро бы выстрелили на рынке, и мы могли бы почивать на лаврах. Но наша команда, выходцы из инжиниринговой компании, знает сферу, где много болей, проблем и сложностей — это сервис. Думаем, с частью этих болей сталкивался каждый из вас. А значит, нужно идти туда, где нас ждут. Ну мы надеемся, что ждут :-)

Читать дальше →
Несколько месяцев назад мы стартовали платформу поиска приключений — это туры, только очень необычные, есть короткие, есть на пару недель, есть с чем-то таким, что запомнится на всю жизнь. Главная наша проблема: когда приключений стало около 350, мы утонули в сортировках. Ситуация накалялась до тех пор, пока вариантов не стало около 800. Например, вот есть тег «экстрим». Кто-то считает, что поход на лошадях в гору — это экстрим (потому что нужна страховка выше спортивного уровня), а над ними издевательски смеются полярники, горные спасатели и преподаватели вождения на багги и стрелковой подготовки из Чечни.

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



Здесь мы добавили поле для свободного поиска и свои редакционные подборки. Это не сильно помогло. Читать дальше →
Приветствую всех читателей раздела «DIY или Сделай сам» на Habr! Сегодня хочу рассказать об очередном своем проекте, эта статья будет о датчике протечки воды на батарейном питании. Как и в предыдущих проектах, это устройство работает на микроконтроллере nRF52832. Есть три версии этого датчика, во всех трех версиях используются готовые модули с nRF52832, в этой статье речь пойдет о средней версии в котором используется модуль YJ-17103 от HOLYIOT.

Читать дальше →


Дорогие друзья, рад снова приветствовать вас! Мы уже многое обсудили на тему зубов мудрости, какие бывают, как удаляются, не болит не значит, что все в порядке, нечего делать в ЧЛХ и уж тем более «их вытягивать». Мне очень приятно, что многим из вас статьи понравились, но сегодня — я все же продолжу тему имплантации.

Все мы знаем, что наш народ ходит по врачам в исключительных случаях. Тогда, когда уже поздно. Поход к стоматологу, не является исключением. Конечно, это мало относится к пользователям Хабра, но мне бы хотелось рассказать, а главное показать вам, чем это может закончиться.
Читать дальше →


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

Стивен Визнер из Колумбийского университета в 1983 году предложил создать квантовые банкноты государственного образца, которые нельзя скопировать даже в том случае, если у желающего сделать это есть типографское оборудование и бумага, при помощи которых изготавливался оригинал. Вероятность изготовления точной копии оригинала, защищенного квантовыми технологиями, стремится к нулю.
Читать дальше →
Директор молча шелестел бумажками, словно что-то искал. Сергей безучастно смотрел на него, чуть прищурив глаза, и думал лишь о том, чтобы этот бессмысленный разговор побыстрее закончился. Странную традицию собеседований при увольнении придумали эйчары, подсмотрев в рамках модного нынче бенчмаркинга такой приём у какой-то особо эффективной, по их мнению, компании. Расчет уже был получен, немногочисленные вещи – кружка, эспандер и чётки – давно лежали в машине. Оставалось только поговорить с директором. Чего он там ищет?

Наконец, лицо директора осветилось легкой улыбкой. Видимо, он нашел, что искал – имя человека, с которым собирался беседовать.

— Итак, Сергей. – сложив руки на стол, обратился директор к программисту. – Я не отниму у вас много времени. Собственно, в вашем случае всё понятно.

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

— Я задам стандартный вопрос – что, по-вашему мнению, можно улучшить в нашей компании?

— Ничего. – пожал плечами Сергей. – В вашей компании всё прекрасно. Удачи вам, счастливо оставаться, ну и так далее.

— Как в песне?

— Как в песне. – улыбнулся Сергей, удивленный познаниями директора в современной музыке. Читать дальше →
Здравствуйте, коллеги.

Не так давно наше внимание привлекла почти готовая книга издательства Manning «Programming with types», подробно рассматривающая важность правильной типизации и ее роль при написании чистого и долговечного кода.



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

Diablo 1 — это классический roguelike 1996 года в жанре hack and slash. Это была одна из первых успешных попыток познакомить широкие массы с roguelike, которые до этого имели нишевую графику в виде ASCII-арта. Игра породила несколько сиквелов и множество имитаций. Она известна своей тёмной, мрачной атмосферой, сгущающейся по мере спуска игрока в подземелья, располагающиеся под городом Тристрам. Это была одна из первых для меня игр с процедурной генерацией карт, и возможность генерации столь правдоподобных уровней просто потрясла меня.

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

Благодарю Дэвида Бревика и команду Blizard North за создание такой потрясающей игры, а также galaxyhaxz и команду Devilution за их удивительную работу по восстановлению читаемого исходного кода проекта.
Читать дальше →
На днях победители чемпионата по программированию, который завершился в начале лета, получили заслуженные призы. Для этого мы позвали их, а также всех остальных финалистов из топ-20 каждого направления в московский офис Яндекса. Ещё раз поздравляем тех, кто сумел выйти в финал.

Тем временем мы подготовили разбор задач чемпионата, которые предлагались фронтенд-разработчикам. Это задачи из квалификационного этапа. Напоминаем, что чемпионат проводился по четырём направлениям: бэкенд, фронтенд, машинное обучение и аналитика.

A. Градусник пробок
Условие
Пользуясь навигатором, многие видели «градусник» при построении автомобильного маршрута. Он представляет собой разноцветную прямую, на которой изображена загруженность дорог на маршруте. В этой задаче предлагается написать функцию, которая адаптирует данные «градусника» для разных размеров экрана.

Читать дальше →
На прошлой неделе исследователь Джонатан Лейтсач опубликовал весьма эмоциональный пост об уязвимостях в клиенте для веб-конференций Zoom для операционной системы macOS. В данном случае не совсем понятно, была ли уязвимость непреднамеренным багом или заранее спланированной фичей. Попробуем разобраться, но если коротко, выходит так: если у вас установлен клиент Zoom, злоумышленник может подключить вас к своей телеконференции без спроса, более того — он может активировать веб-камеру, не спрашивая дополнительных разрешений.

Тот момент, когда вместо поиска пропатченной версии кто-то решит просто удалить клиент из системы. Но в данном случае это не поможет: вместе с клиентом устанавливается веб-сервер, который работает даже после деинсталляции — он даже способен «вернуть» клиентское ПО на место. В опасности, таким образом, оказались даже те, кто когда-то пользовался сервисами Zoom, но потом перестал. К ним на помощь пришла компания Apple, без особых фанфар удалившая веб-сервер апдейтом для ОС. Эта история — настоящая infosec-драма, в которой пользователям остается только наблюдать, как на их компьютерах появляется и исчезает разнообразный софт.
Читать дальше →
Все эти годы вы, frontend-разработчик, писали монолиты, хотя и понимали, что это дурная привычка. Вы делили свой код на компоненты, использовали require или import и определяли npm-пакеты в package.json или плодили гит-репозитории в вашем проекте, но все равно писали монолит.
Пришло время изменить положение.
Читать дальше →


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

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

Зато те компании, что берутся за подобное, становятся крупнейшими игроками на рынке — вслед за своими заказчиками. AGIMA одно из них. Коммерческий директор компании Виталий Дощенко, PR-директор Кристина Ляпцева и исполнительный директор Евгений Лобанов рассказали нам о своем опыте — о тендерах, конкурсах, роли пиара, компромиссах в выборе технологий и многом другом.
Agima получила на «Моём круге» среднюю оценку 4,6 и среднюю рекомендацию 93% от своих сотрудников, которые выше всего оценили карьерный рост, отношения с коллегами и связь с топ-менеджментом компании.
Читать дальше →
Время от времени читатели наших статей о проверке открытых проектов обращают внимание, что статический анализатор кода PVS-Studio выявляет большой процент ошибок, которые незначительны или вообще не влияют на работу приложения. Это действительно так. Большинство важных ошибок уже поправлены благодаря ручному тестированию, отзывам пользователей и иным дорогим методам. При этом, многие из этих ошибок можно было бы найти ещё на этапе написания кода и исправить с минимальными потерями времени, репутации, денег. В этой статье будет приведено несколько примеров реальных ошибок, которые были бы сразу исправлены, если бы авторы проектов использовали статический анализ кода.

Читать дальше →

Я присоединился к сообществу Erlang около 10 лет назад, посреди первой фазы хайпа. Нам говорили, что Erlang — это будущее конкурентности и параллелизма. Реализовать их на этом языке проще и быстрее всего, и вы ещё получите бесплатную распределённость. В то время будущее казалось невероятным. Виртуальная машина недавно получила поддержку SMP, но чтобы действительно использовать все процессоры, приходилось запускать на одном компьютере несколько виртуальных машин.

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

Страницы

Последние публикации

Новые комментарии