Рубрика «разработка» - 297

Присоединяйтесь к миллиону участников открытой онлайн академии MVA! Новые курсы для разработчиков

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

Онлайн-академия Microsoft Virtual Academy еще в начале года объявила о первом миллионе участников из 100 стран мира. Сегодня мы приветствуем новых участников и приглашаем вас присоединиться к нашему движению. С помощью курсов и тестирования MVA вы сможете быстро изучить новые технологии и проверить свои знания с помощью тестов, получив сертификат. И все это совершенно бесплатно! Вы можете найти подробности о академии MVA в этой статье на Хабре.

Мне приятно представить вам несколько новых курсов MVA, которые были специально опубликованы для русскоязычных разработчиков:

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

Привет!

Недавно на просторах рунета нашел способ зарегистрироваться на DreamSpark без загрузки документов. Зачем это нужно? Microsoft DreamSpark дает бесплатно лицензии школьникам, студентам, аспирантам и просто учащимся к некоторым своим продуктам (VS 2012 Professional в их числе).

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

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

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

Доброго времени суток! Пару недель назад зачесались руки гика — захотелось мне приобрести довольно нашумевший и всем известный одноплатный мини-компьютер Raspberry Pi. Модель была выбрана самая «крутая» — версия «B» с 512Mb ОЗУ на борту. История о покупке и первичной настройке не подходит к теме этого поста, тем более, что её можно прочитать вот здесь.

Этот пост о другом. После всех манипуляций с настройкой захотелось попробовать машинку, так сказать, «в деле». Идея возникла практически сразу. Дома у меня имеется 3 компьютера, 2 смартфона, бюджетный роутер, и внешний жёсткий диск на 2Tb — Seagate Expansion External. Интерфейс подключения у HDD — USB. Роутер из разъёмов имеет только Ethernet и дырку для шнура электропитания. Все мои устройства соединяются с роутером только по WiFi, и ни одно не может работать в постоянном режиме. Но тут появляется Raspberry. Миниатюрные размеры платы позволяют разместить систему вида [HDD<=USB=>RPi<=Ethernet=>DIR300NRU(роутер)<=WiFi=>LAN] прямо на подоконнике и использвать диск в локальной сети, а её мизерное энергопотребление позволяет держать включенной практически постоянно. RPi работает под управлением семейства ОС Linux, а именно я на неё установил Raspbian. Казалось бы, поставить сервер samba и расшарить диск… но это было бы слишком просто. Конечная задача усложнилась: необходимо делать внешний диск доступным в локальной сети, только в том случае, если мой смартфон к этой сети в данный момент подключён, иначе диск размонтировать, тем самым снижая на него нагрузку и его энергопотребление. Значит писать будем демон, и писать будем на Python. Поехали!
Читать полностью »

Изначально в нашем IMAP-сервере использовался epoll-реактор собственной разработки. Как всегда, в процессе эксплуатации и роста нагрузки потихоньку набегают замечания, в результате чего со временем начинает накапливаться технический долг и замедляться разработка.

В нашем случае были также изначальные архитектурные замечания.

  • Поток, обслуживающий реактор, никак не контролировался и при поступлении контрольных сигналов мог произойти race-condition. С другой стороны, останавливать или замедлять этот поток нельзя, поэтому возможные пути обхода выглядели неприемлемыми.
  • Реактор не умел работать в full-duplex режиме. Это ограничивало его использование только интерактивными протоколами, каким является IMAP. Однако между серверами мы часто используем протокол IProto, который подразумевает full-duplex связь.

Лирическое отступление про IProto: протокол очень простой: заголовок из трёх полей типа uint32_t: команда, номер пакета, длинна данных. За счет поля «номер пакета» сервер может отвечать на запросы в любом порядке, а клиент может ждать ответа в асинхронном стиле и слать следующий запрос. В Mail.Ru Group он используется повсеместно — начиная с нашей Tarantool, и заканчивая сервисом антибрутфорса.

Поэтому было решено сделать тестовую версию, используя boost::asio. В этом посте я расскажу о переезде на реактор boost::asio, о его преимуществах и о подводных камнях, с которыми мы столкнулись.

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

pointres, gnd

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

Сегодня мы представляем долгожданный клиент Яндекс.Диска для Linux. Можно было бы даже сказать «специально для Хабрахабра», так как ни одно упоминание Диска здесь не обходилось без вопросов о клиенте для Линукса.

У него есть вся основная функциональность, которая есть у клиентов для OS X и Windows, и даже больше (симлинки!), и одна особенность — он консольный.

image

Ниже читайте о том, как он настраивается, что конкретно умеет, и о том, как именно он устроен и что в нём было непросто сделать.

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

Цель данной статьи – показать, как можно рассчитать режим работы бустерного (от англ. Booster) преобразователя напряжения (БПН) постоянного тока так, чтобы извлекать максимум возможной мощности из батареи с постоянным внутренним сопротивлением.

Зачастую на практике используются интегральные микросхемы (ИМС), в которых на аппаратном уровне идет контроль получаемой мощности (например, SPV1040), но цена таких приборов достаточно высока.
Бывают случаи, когда создается простое устройство на батарейке, например – светодиодный фонарик. Хочется, чтобы батарейка использовалась рационально, но затраты на это должны быть адекватными.
Для простых схем, где сопротивление нагрузки и внутреннее сопротивление батарейки известны заранее, существует метод расчета режима работы бустерного преобразователя напряжения.
Читать полностью »

Думаю, многие слышали о законах роботехники, сформулированных Айзеком Азимовым:

  1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.
  2. Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.
  3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому и Второму Законам.

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

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

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

Если кому интересно — прошу под кат.

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


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