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

Памятка от редактора

В прошлой статье мы рассказали про релиз панели управления Voximplant, не забыв упомянуть обновленную IDE. Сегодня мы посвящаем этому инструменту отдельный лонгрид – наша коллега Geloosa заботливо описала как процесс выбора технологии, так и имплементацию с вкладками, автокомплитом и кастомными стилями. Садитесь удобнее, отложите остальные дела и заходите в подкат, где любопытных ждут кишки Monaco – не поскользнитесь, их там много :) Приятного чтения.

IDE нормального человека или почему мы выбрали Monaco - 1

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

Машинное зрение vs интуиция человека: алгоритмы нарушения работы программ распознавания объектов - 1

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

Полное руководство по switch-выражениям в Java 12 - 1

Старый добрый switch был в Java с первого дня. Мы все используем его и привыкли к нему — особенно к его причудам. (Кого-нибудь еще раздражает break?) Но теперь все начинает меняться: в Java 12 switch вместо оператора стал выражением:

boolean result = switch(ternaryBool) {
    case TRUE -> true;
    case FALSE -> false;
    case FILE_NOT_FOUND -> throw new UncheckedIOException(
        "This is ridiculous!",
        new FileNotFoundException());
        // as we'll see in "Exhaustiveness", `default` is not necessary
    default -> throw new IllegalArgumentException("Seriously?!");
};

В switch появилась возможность возвращать результат своей работы, который можно присвоить переменной; вы также можете использовать синтаксис в стиле "лямбда", который позволяет избавиться от сквозного прохода по всем case, в которых нет оператора break.

В этом руководстве я расскажу Вам обо всем, что необходимо знать о switch-выражениях в Java 12.

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

Привет!

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

Vue.js содержит много интересных и необычных подходов к валидации, которые помогут решить ваши проблемы. Обзор под катом!

Валидация форм во Vue.js - 1

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

Получи оффер за 1 день в backend-команду в день космонавтики - 1

Всем привет!

FunCorp продолжает расширяться в Москве: мы открываем новое направление и ищем в backend-команду Senior PHP и Senior Java разработчиков.

Нам очень понравился формат однодневного Hiring event’a, который мы проводили для QA-отдела 16 марта, поэтому мы решили провести подобное мероприятие и для backend.

Итак, FunCorp Cosmic Hiring event пройдёт 12 апреля (пятница) в московском офисе. Ссылка на мероприятие.Читать полностью »

Современный мир C++ серьёзно отличается от того, что был привычен нам во времена C++ 98. Кто-то этим восхищается, кого-то это раздражает, но факт остаётся фактом. Вот какие темы будоражат умы разработчиков сегодня:

  • Современные и новые возможности языка C++
  • Функциональное программирование
  • Метапрограммирование
  • Многопоточность, параллелизм, асинхронность и все-все-все
  • Как жить с имеющимися инструментами

Меньше чем через месяц пройдёт конференция, которая старается ответить на эти вопросы: C++ Russia 2019. Давайте коротко взглянем, как это у неё получится.

Обзор программы C++ Russia 2019. Что день грядущий нам готовит? - 1

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

«Игры на деньги вне блокчейна должны умереть» - 1

Дмитрий Пичулин, известный под ником «deemru», стал победителем игры Fhloston Paradise, разработанной Tradisys на блокчейне Waves.

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

Победу Дмитрию принес созданный им бот Patrollo. Дмитрий сделал всего восемь ставок по одному WAVES и в итоге выиграл 4700 WAVES (836300 руб.). В интервью Дмитрий рассказал о своем боте и перспективах игр на блокчейне.Читать полностью »

«Non-Blockchain Games Involving Money Must Die» - 1

Dmitry Pichulin, known under the nick «deemru», won the game Fhloston Paradise, developed by Tradisys on the Waves blockchain. Dmitry's winning recipe was the bot Patrollo, which he created. The bot paid just eight 1 WAVES stakes for Dmitry and eventually won him 4,700 WAVES ($13,100). In this interview, Dmitry discusses his bot and prospects of blockchain games.
Читать полностью »

Что такое исключения? Из названия понятно — они возникают, когда в программе происходит исключительная ситуация. Вы спросите, почему исключения — анти-паттерн, и как они вообще относятся к типизации? Я попробовал разобраться, и теперь хочу обсудить это с вами, читатели.

Проблемы исключений

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

Исключения трудно заметить

Существует два типа исключений: «явные» создаются при помощи вызова raise прямо в коде, который вы читаете; «скрытые» запрятаны в используемых функциях, классах, методах.

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

def divide(first: float, second: float) -> float:
    return first / second

Функция просто делит одно число на другое, возвращая float. Типы проверены и можно запустить что-то такое:  

result = divide(1, 0)
print('x / y = ', result)

Заметили? На самом деле до print исполнение программы никогда не дойдет, потому что деление 1 на 0 – невозможная операция, она вызовет ZeroDivisionError. Да, такой код безопасен с точки зрения типов, но его все равно нельзя использовать.
Читать полностью »

13 апреля в Санкт-Петербурге и 20 апреля в Москве будет проведен семинар CLRium #5, целиком и полностью посвященный подсистемам ядра CoreCLR и .NET Framework.

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

10 докладов. Исключительно про ядро. 6 из них — только про подсистему управления памятью.

Не надо думать о памяти, говорили они… Семинар CLRium #5: Garbage Collector - 1
Читать полностью »


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