[Перевод] О дженериках в PHP и о том, зачем они нам нужны

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

Continue reading

К вопросу о константах

Есть ли в мире что либо более постоянное, чем временные переменные.

Просматривая тематический форум, увидел традиционное «Не работает скетч, подскажите, в чем дело» — таких постов чуть меньше, чем все, но в заголовке фигурировала работа с SD карточкой, поэтому решил глянуть. Больше всего порадовала фраза, что «скорее всего, дело в карточке, но решил попросить посмотреть код, может, что интересного увидите» — не ручаюсь за точность цитаты, но смысл передал верно. Действительно, интересного там наблюдалось много, мой взгляд зацепился за выражение
unsigned long Interval = 2000;…
while (micros() < StartInterval + Interval) {};
причем дальше эта переменная использовалась, как константа в запуске задержки. Оставим за скобками способ обращения с временем, сейчас речь не об этом.

Сначала я, действуя на автомате, написал, что следует применять #define, «да призадумалась, а сыр во рту держала». Может быть, я чего-то не знаю, и применение констант в таком формате может быть выгодно при определенных условиях? Вдумчивое чтение мануалов на разные микроконтроллеры (МК) привело к интересным находкам, которыми (вместе с ответом на мой вопрос) и собираюсь поделиться под катом.
Continue reading

Russian Code Cup — по следам отборочного раунда

14 мая прошёл отборочный раунд Russian Code Cup 2017. По традиции выкладываем разбор задач и подводим итоги.

A. Маленькие числа
B. Новая клавиатура
C. Складывание фигуры
D. Остроугольные треугольники
E. Объединение массивов
F. Два поддерева

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

Continue reading

Прокторинг в онлайн-экзаменах: как это работает?

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

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

Continue reading

Скит, Core, рок-н-ролл: как прошёл DotNext 2017 Piter

Когда IT-конференция проходит много лет подряд, она становится своего рода «годичными кольцами»: по ней можно проследить, как технологии росли и развивались со временем. Скажем, в прошлом июне можно было увидеть на петербургском DotNext, как Дино Эспозито распекал (ASP).NET Core за неготовность к реальным задачам. А в декабре на московском DotNext интонация уже изменилась: мол, тащить Core в продакшен ещё не требуется, но вот разбираться с ним уже стоит.

Теперь в Петербурге прошёл новый DotNext (впервые длившийся два дня вместо одного). Какое состояние .NET Core показал он? Какие ещё тенденции можно было заметить по его докладам? Как выступил Джон Скит и другие звёзды .NET-мира? Кто это такой харизматичный на фотографии выше? Все подробности — под катом.

Continue reading

Удваиваем ёмкость радиосети. Результаты внедрения Cambium Elevate на сетях операторов


Как бы сотовые операторы ни пропагандировали сети 4G, а теперь и будущий 5G – рынок фиксированной беспроводной широкополосной связи даже и не думает уменьшаться.
Как показала практика, сколько бы G не было в стандарте сотовой связи — обеспечить действительно безлимитную связь в рамках сотовой технологии невозможно, и даже с новыми G-стандартами мы по-прежнему считаем GB трафика, а контент становится всё тяжелее (спасибо 4K-кино и обилию тяжеловесной рекламы).
Кстати, контент влияет и на запросы клиентов сетей фиксированной радиосвязи. Если раньше им хватало скоростей 1-3 Мбит/с, то сейчас этого явно недостаточно — нужны десятки и сотни мегабит каждому. С другой стороны, пути экстенсивного развития (получения дополнительных частот) практически исчерпаны — эфир не резиновый, да и дорого это. Поэтому сейчас как никогда остро встал вопрос об эффективности использования имеющегося частотного ресурса.
Именно для такого случая компания Cambium в прошлом году предложила идею Elevate — софт для недорого железа, который позволяет ему (без замены абонентов) работать с базовыми станциями Cambium с всеми их преимуществами — переиспользованием частот и честным TDMA. Прошло несколько месяцев, и вот первые практические результаты.
Continue reading

Корейские коллеги: понять и простить

Всем привет!
Я работаю простым разработчиком в одной маленькой, но гордой корейской компании. Как показывает опыт, совместный труд с корейцами редко проходит бесследно: кто-то в ужасе увольняется во время испытательного срока, кто-то учится квасить кимчхи, у кого-то при виде корейца дёргается глаз. Ну а ваша покорная слуга двинулась настолько, что внезапно пошла учиться на востоковеда. Теперь наши корейские друзья для меня — это не только дорогие коллеги, но и объект исследования. Я очень хочу понять, как строить деловые и трудовые отношения с корейцами так, чтобы извлечь как можно больше пользы (кроме вреда). Сегодня я поделюсь кое-какими мыслями на этот счёт.

image
Continue reading

С чем столкнулись при переводе проекта на Android Studio 3.0 Preview и Gradle 4.0-milestone-1

После того как на Google IO 2017 Keynote анонсировали новую Android Studio 3.0 Preview и Gradle 4.0-milestone-1, конечно же, руки сразу чесались все это попробовать. Если в первой просто появилось много интересных фишечек, то во втором серьезно поменялось API.

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

Continue reading

[Перевод] Путь к трансдьюсерам на чистом JavaScript

Если вы наслышаны о так называемых «трансдьюсерах», но до сих пор не применяете их в JavaScript-разработке, сегодня у вас есть шанс найти ответы на вопросы: «Что такое трансдьюсеры?» и «Как ими пользоваться?». Это позволит вам понять, нужны ли они в ваших проектах, и, если нужны — поможет приступить к их использованию.

Речь пойдёт о том, как писать код, который предназначен для построения хорошо подходящих для компоновки конвейеров преобразований данных, не потребляющий слишком много памяти. Для того, чтобы как следует разобраться в концепции трансдьюсеров, начнём мы с более простых механизмов, редьюсеров, или функций для свёртки данных.
Continue reading

У вас есть право на анонимность. Часть 2. Законодательство против анонимности

image

Первые попытки ликвидировать анонимность в Сети на законодательном уровне в России начали появляться в 2013 году.

Так, Федеральным законом №97-ФЗ от 05.05.2014 («Закон о блогерах и организаторах распространения информации», разработан годом ранее) владельцам страничек в социальных сетях или личных сайтов с суточной аудиторией более трех тысяч пользователей было запрещено анонимное использование собственных блогов в сети. Согласно дополненной ст.10.2 Федерального закона №149-ФЗ «Об информации» лицо, признанное Роскомнадзором блогером обязано разместить на своих сайте или странице сайта в сети «Интернет» свои фамилию и инициалы, электронный адрес для направления ему юридически значимых сообщений. На текущий момент в соответствующий реестр блогеров внесено со стороны надзорного ведомства более 2000 пабликов и личных страниц во ВКонтакте, YouTube, Instagram, Facebook, Google Plus и др. Да и обычных, личных небольших сайтов тоже внесено в данные реестр nn-ое количество.

Но в этом же законе есть еще и статья про «организаторов распространения информации» — это владельцы сетевых сервисов, веб-сайтов и разработчики ПО, которых обязали ФСБ и Роскомнадзор осуществлять сбор метаданных своих пользователей (все действия и взаимодействия), их хранение и предоставление по первому требованию компетентным органам. А с 1 июля 2018 года, с момента вступления в силу «пакета Яровой» (№374-ФЗ от 06.07.2016), точнее — тех пунктов этого закона, которые касаются внедрения тотальной телефонной и интернет-слежки за гражданами, организаторы распространения информации (как и операторы связи) обязаны будут собирать, хранить и делиться со спецслужбами не только метаданными пользователей, но и всей их перепиской, звонками, осуществленным файлообменом — всем генерируемым на их площадках или через их ПО трафиком.
Continue reading