Pull to refresh

Technotext

О разных данных на бытовом уровне

Reading time6 min
Views9.5K

Мне как фриланс-архитектору часто приходится сталкиваться с людьми из бизнеса, которые не понимают что такое ИТ, как там все происходит и зачем все эти страшные слова.

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

Часто встречаясь с одними и теми же проблемами, в конце концов, я решил поделиться своим опытом, возможно, это кому-то будет полезно в чистом виде, а кто-то поймёт принцип и придумает примеры и объяснения получше.

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

Читать далее

«Невозможный» параллельный алгоритм неотрицательной суммы

Reading time4 min
Views9.6K

Рецепт параллельных вычислений Fork/Join или Map/Reduce:
- разбить задачу на куски;
- посчитать куски по-отдельности;
- склеить вместе.

Неотрицательная сумма (a, b) -> max(0, a + b) неассоциативна и результат зависит от порядка склейки. Она сломает Fork/Join и результат будет некорректен. Магией моноида починить на Java, SQL и Haskell за 5 минут, но

сломать мозг

А все ли врут? Продолжаем издеваться над NVME

Reading time10 min
Views40K

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

Для многих из нас nvme означает, что мы купили новый компьютер или ультрабук. Жёсткий диск, подключённый напрямую к шине PCIE, позволяет существенно снизить задержки передачи данных и ускорить любую систему. NVME — это ключ к загрузке любой системы за 3 секунды.

Но, на самом деле сам по себе NVME — это не стандарт для жёстких дисков. NVME расшифровывается как NVM Express. NVM, в свою очередь, означает Non-volatile memory, И в первую очередь — это спецификация протокола, который позволяет производить эффективный доступ к данным, хранящимся в энергонезависимой памяти.

А как мы хорошо знаем, протоколы можно запускать на разных носителях. В этой статье мы будем издеваться над моим лэптопом с Ubuntu Linux 21 на борту, подключая его жёсткий диск к разным серверам. Вы можете посетовать, что всё это игрушки, но хороший администратор со свитчем, позволяющим поддерживать скорости более 10 гигабит в секунду, должен взять это на заметку. Вы можете получить удалённый доступ к вашим nvme жёстким дискам через tcp/ip без уловок и мошенства.

Поехали.
Читать дальше →

Ruby-Дайджест за неделю (27 дек — 3 янв)

Reading time2 min
Views1.8K

В этом дайджесте:

• Обновление популярных гемов.
• Статистика по гемам за год.
• Интересные open-source проекты на GitHub #2.
• Подборка полезных гемов #2.
• Интересный контент, связанный с Ruby.
• Рейтинги языка за 2021 год.

Читать RubyDigest

Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Reading time6 min
Views15K

Привет, Хабр! В этой статье расскажу, в чём особенности тестирования приложения на Flutter под iOS и Android и чем оно отличается от тестирования нативного приложения.

Читать далее

Бизиборд? Power bank? Супернажималка

Reading time9 min
Views13K

Летнюю самоизоляцию мы с семьей провели у тещи в деревне. У жены – отпуск, а нас, инженеров-проектировщиков, почти всех перевели на удаленку. Работать в «домике в деревне» значительно приятнее, чем в городе в панельной хрущевке. Так у меня появилась не только отдельная комната, но и дополнительные полтора часа свободного времени, которые в мирное время уходили на дорогу до офиса и обратно. Все это позволило довести до конца электронно-деревянно-кнопочный проект, который задумал еще лет 6 назад.

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

Читать далее

Как мы искали связь между Mēris и Glupteba, а получили контроль над 45 тысячами устройств MikroTik

Reading time5 min
Views21K
Неделю назад стало известно о рекордной DDoS-атаке на компанию Яндекс с впечатляющим значением в 21,8 млн RPS. Сотрудники Яндекса совместно с компанией Qrator Labs рассказали,
что инструментом проведения атаки был ботнет Mēris, состоящий из сетевых устройств компании Mikrotik. При этом они отметили, что изучить образец бота у них не было возможности, но утверждение, что Mēris – это «вернувшийcя Mirai», не совсем точно из-за различия в сетевых уровнях атаки (L7 и L3).



Мы уверены, что данные обстоятельства привлекли внимание многих специалистов
по информационной безопасности в попытках изучения внутреннего устройства ботнета Mēris
и природы его возникновения. Мы в Solar JSOC CERT не стали исключением и пришли к выводу, что, возможно, Mēris начал зарождаться еще в 2018 году с помощью вредоносного семейства Glupteba, которое до сих пор является «поставщиком» устройств для Mēris. Так же нам удалось получить контроль над 45 тысячами устройств MikroTik.
Читать дальше →

Архитектурное мышление на примере одиночного велопутешествия по Алтаю

Reading time11 min
Views17K

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


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


image


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

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

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем

Reading time25 min
Views167K
Привет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.

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

Что такое дизайн информационных систем


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

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

Как я собрал «умный» органайзер для электронных компонентов

Reading time13 min
Views32K
Привет. Я Александр Бурага, разработчик из команды роботов и беспилотных автомобилей Яндекса. Но сегодня речь пойдёт не о них, а о моём личном проекте, над которым тружусь дома.

Сложно найти радиолюбителя, который не занимался бы монтажом печатных плат. Ещё сложнее — того, кто задумывается об удобном хранении деталей прежде, чем поиск чего-то нужного среди запасов превращается в сущий кошмар. Инструменты для ведения проектов, написания кода и контроля версий в последние десятилетия развиваются очень быстро. ПО, упрощающее монтаж, тоже обновляется, хотя и не так стремительно. А вот системы хранения электронных компонентов практически не изменились с 90-х: помните кассетницы из спичечных коробков?



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

Шпаргалка по функциональному программированию

Reading time23 min
Views43K

Привет, меня зовут Григорий Бизюкин, я преподаватель Школы разработки интерфейсов и фронтенд-разработчик в Яндексе. Давайте поговорим о функциональном программировании в мире JavaScript. Мы все про ФП что-то слышали, нам всем оно интересно, но у меня, когда я искал полезные материалы для подготовки к лекциям, сложилось такое впечатление: есть куча статей, каждая из которых либо говорит об ФП общими словами, либо раскрывает отдельный маленький кусочек темы, чего, конечно, недостаточно.



Добавим функционального света


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

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

Новая Яндекс.Станция Мини. Большая история маленького устройства

Reading time15 min
Views64K
На днях в продажу поступила обновлённая версия одного из самых популярных устройств с Алисой — Станции Мини. Может показаться, что это эволюционное развитие, работать над которым было проще, чем создавать оригинал. Но новая Мини отличается от предыдущей примерно всем: от внешнего вида и начинки до условий производства — ковид и глобальный дефицит компонентов стали для hardware-команды большим вызовом.



Сегодня я поделюсь с вами несколькими историями о новой колонке. Вы узнаете про одно из самых необычных применений фазоинвертора, про то, как мы достаточно комично сушили фотополимерные модели в домашних условиях. Расскажу, где спрятан сервисный разъём и как работает управление просмотром ТВ через ещё одно новое устройство — Модуль. Будут и другие детали, которые показались нам интересными.
Читать дальше →

«Я не робот»: история Яндекса о том, как победить ботов, а не людей

Reading time6 min
Views42K

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

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

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

Я не робот

Коля и его истории про фулфилмент

Reading time11 min
Views11K
Фулфилмент — весь путь вещи, заказанной вами в интернете, до порога вашего дома. Он начинается где-то на далёком складе: вещь нужно найти, собрать и упаковать. Этот этап не всегда простой, он гораздо менее заметен, чем доставка, но не менее интересен. Сейчас я постараюсь вам это доказать.


Эффективность процесса зависит от его устройства, но если я сходу попробую объяснить, как устроены склады большого маркетплейса, мой рассказ вызовет много вопросов «Почему так сложно?». Поэтому я начну с основ процесса сборки, а потом постепенно, в несколько шагов, увеличу сложность и покажу, какую задачу решает каждое из усложнений. Мне понравились посты на Хабре про стажёра Васю, поэтому добавлю нового вымышленного персонажа — Колю. Он пройдёт с нами весь путь и настроит процессы на складе. Поехали!
Читать дальше →

Как Яндекс делает обычные автомобили беспилотными

Reading time8 min
Views36K


Привет, меня зовут Антон Чистяков. Пару лет назад я работал в хелпдеске Яндекса и даже писал здесь про то, как мы придумали вендомат с аксессуарами. Теперь отвечаю за сборку беспилотных автомобилей и роботов-доставщиков. Под катом расскажу, как мы делаем простые машины беспилотными: от момента покупки авто и выбора имени до сборки и калибровки, на которых всё, впрочем, не заканчивается.
Читать дальше →

Создаём игру на KPHP с помощью FFI и SDL

Reading time16 min
Views7K

KPHP теперь поддерживает механизм Foreign Function Interface (FFI). Мы с Владом решили продемонстрировать его возможности и за сутки написали первую в мире графическую игру на KPHP.


Игру делали с использованием библиотеки SDL:


  • работали со звуком,
  • обрабатывали события клавиатуры,
  • рисовали шрифты, спрайты, UI.

API и семантика нашего FFI идентичны PHP. Поэтому созданная игра запустится и на KPHP, и на PHP.


Если вам интересны детали реализации, заглядывайте под кат!


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

Сколько сотрудников ВКонтакте нужно, чтобы открыть авиакомпанию

Reading time12 min
Views4.8K

Современное IT-образование невозможно представить без практических проектов, соединяющих университеты и индустрию. Например, в Санкт-Петербурге благодаря Computer Science Center активные студенты могут поработать вместе с сотрудниками IT-компаний. Что классно: можно основываться на рабочих кейсах или развивать идею pet-проекта. Главное — познакомить ребят с реальными задачами и современными технологиями.

В этой статье мы расскажем о проекте, который делали вместе с двумя студентами Computer Science Center, из СПбГУ и ИТМО. Наставником выступил я — Андрей Шубин, ВКонтакте занимаюсь бэкенд-разработкой в команде электронной коммерции. К программе менторства решил присоединиться потому, что мне самому в своё время очень не хватало наставника из числа практикующих специалистов. Такого, который бы рассказал, как всё устроено на самом деле, а не в сферическо-вакуумном мире из учебников и методичек.

Читать далее

UIKit ты вообще про UI?

Reading time11 min
Views32K

Спойлер - нет! Ну, не совсем. Мы привыкли воспринимать UI как визуальную составляющую, но ведь UI – это User Interface. Так вот, интерфейс – это то, с помощью чего пользователь взаимодействует с нашим приложением. В случае с графическим интерфейсом пользователь его видел и воспринимает информацию. Однако он статичный и, когда пользователь хочет взаимодействовать с ним, он использует другие интерфейсы: тачскрин, клавиатуру или мышку. Да, это тоже интерфейсы. И UIKit как раз таки отвечает не за графический интерфейс, а за распознавание пользовательских жестов и их обработку.

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

Так как же он устроен? У нас же есть базовый класс UIView и куча его стандартных наследников. Мы можем сами создавать свои вью и как угодно их кастомизировать. И все это видим на экране. Почему тогда UIKit и UIView – это не про графический интерфейс? Давайте разбираться.

Читать далее

Шёпот и эмоции в Алисе: история развития голосового синтеза Яндекса

Reading time15 min
Views38K


Четыре года назад мы запустили Алису. С самого начала она обладала собственным, узнаваемым голосом. Хотя проблемы тоже были: интонации хромали, эмоции скакали от слова к слову, а омонимы и вовсе ставили синтез в тупик. Алиса звучала пусть и не как робот, но ещё и не как человек.

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

Сейчас мы переходим на следующий уровень: учим Алису управлять эмоциями и стилем своей речи, распознавать шёпот и отвечать на него шёпотом. Казалось бы, что в этом сложного и почему всё это было невозможно ещё несколько лет назад? Вот об этом я и расскажу сегодня сообществу Хабра.
Читать дальше →