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

Я множество раз слышал о том, что дизайн Generic типов в Java является неудачным. По большей части претензии сводятся к отсутствию поддержки примитивных типов (которую планируют добавить) и к стиранию типов, а конкретнее — невозможности получить фактический тип параметра в рантайме. Лично я не считаю стирание типов проблемой, как и дизайн Generic-ов плохим. Но есть моменты, которые меня порядком раздражают, но при этом не так часто упоминаются.

1

Например, мы знаем, что метод Class#getAnnotation параметризован и имеет следующую сигнатуру: public <A extends Annotation> A getAnnotation(Class<A> annotationClass). Значит, можно писать вот такой код:

Deprecated d = Object.class.getAnnotation(Deprecated.class);

Тут я решаю вынести Object.class в отдельную переменную и код перестаёт компилироваться:

Class clazz = Object.class;
// incompatible types:
// java.lang.annotation.Annotation cannot be converted to java.lang.Deprecated
Deprecated d = clazz.getAnnotation(Deprecated.class);

Где я ошибся?

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

Обзор изменений в новом мажорном релизе Node 8 - 1

30 мая 2017 года в 23:00 по московскому времени вышел новый долгожданный мажорный релиз Node.js 8.0.0. Именно эта линейка версий за номером 8 в октябре 2017 перейдет в Long Term Support — цикл длительной поддержки. Предлагаю вашему вниманию небольшой обзор того огромного количества изменений и дополнений, вошедших в этот релиз.

  • npm 5 (lock-файл!)
  • V8 5.8
  • Node.js API (N-API)
  • async_hooks
  • WHATWG URL парсер
  • повышение безопасности буфера
  • упрощенная промисификация
  • статичные коды ошибок
  • и многое другое!

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

image

В четверг, 25 мая, в офисе Avito прошла очередная встреча сообщества фронтенд-разработчиков MoscowJS. Обсуждали отладку анимации, создание WebGL визуализации, сборку webpack’ом и код-ревью. Сегодня публикуем видеозаписи докладов — профессионалам будет интересно. Приятного просмотра!
Читать полностью »

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

Сравнение Эльбрус-4С и Эльбрус-8С в нескольких задачах машинного зрения - 1

Эльбрус-8С — новый 8-ядерный процессор МЦСТ с VLIW-архитектурой. Мы тестировали инженерный образец с частотой 1.3 ГГц. Возможно, в серийном выпуске она еще возрастет.

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

Оглавление

  1. Односторонние диапазоны
  2. Строки
  3. Приватные объявления видимы в экстеншенах того же файла
  4. Умные ключи пути
  5. Архивирование и сериализация
  6. Улучшения в Dictionary и Set
  7. Метод MutableCollection.swapAt
  8. reduce с поддержкой inout
  9. Генеретики в сабскриптах
  10. Мостик для NSNumber
  11. Экземпляры классов и подтипов

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

Нейросеть генерирует код GUI по скриншотам - 1
Скриншот-задание и выдача нейросети pix2code на собственном языке, который компилятор потом транслирует в код для нужной платформы (Android, iOS)

Новая программа pix2code (научная статья) призвана облегчить работу программистов, которые занимаются муторным делом — кодированием клиентского GUI.

Дизайнер обычно создаёт макеты интерфейса, а программист должен написать код для реализации этого дизайна. Такая работа отнимает драгоценное время, которое разработчик может потратить на более интересные и творческие задачи, то есть на реализацию настоящих функций и логики программы, а не GUI. Скоро генерацию кода можно будет переложить на плечи программы. Игрушечная демонстрация будущих возможностей машинного обучения — проект pix2code, который уже вышел на 1-е место в списке самых горячих репозиториев на GitHub, хотя автор ещё даже не выложил исходный код и наборы данных для обучения нейросети! Такой огромный интерес к этой теме.
Читать полностью »

На субботу 3 июня в Москве обещают +11 и лёгкий дождь. Нелётная погода, ну то есть не велосипедная и не особо прогулочная. А душа требует лета, общения, азарта и новых событий. Мы придумали для вас мега насыщенный день в Телеграфе, где пройдёт IT-конференция «Продвижение». Неважно, фанатеете вы от React, занимаетесь дизайном, пытаетесь внедрить Agile или просто считаете себя гиком и книголюбом, — места, нетворкинга и интересных моментов программы хватит всем. Дело за малым — зарегистрироваться и прийти. Ну и почитать подробности под катом.

ИТ-конференция «Продвижение»: суббота с пользой - 1 
Читать полностью »

«Когда я задался целью получить действительно случайное число, то не нашел для этого ничего лучшего, чем обычная игральная кость» — писал в 1890 году Фрэнсис Гальтон в журнале Nature. «После того, как кости встряхивают и бросают в корзинку, они ударяются друг о друга и о стенки корзинки столь непредсказуемым образом, что даже после легкого броска становится совершенно невозможным предопределить его результат».

image
(Игральные кости времён Римской Империи)

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

Почему стоило посетить OS Day 17 - 1
Читая комментарии к статье о конференции OS Day 2017, я как разработчик одной из представленных в России ОСРВ Embox, был немного в шоке. Нет, в России все знают, что кроме BolgenOS и каких-то очередных распилов у нас ничего не умеют!
Но во-первых, мероприятие проходило в главном здании РАН, и вряд ли такая солидная организация пропустила бы поделки школьников, а во-вторых, комментарии писали пользователи хабра, а значит, технически грамотные люди, и в отсутствии у них осведомлённости об Alt Linux, KolibriOS, PhantomOS, ReactOS вряд ли можно усомниться. Я решил не вмешиваться в обсуждение, а написать собственное мнение о происходившем по итогам этой конференции.

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

Так зачем же мы пишем этот плохой код, который изо дня в день замедляет нашу работу?
Потому, что мы тогда вынуждены были сделать что-то быстрее!
Я оставлю вас наедине с это логической несостыковкой…
На одной из лекций Роберта Мартина

У нас на DevConf будет не самый обычный мастер-класс. Там не будут рассказывать о новых технологиях или хайлоаде. Будут говорить о коде. Хорошем, плохом. Называется он Принципы хорошего кода на реальных примерах. Расспросим немного автора.

Что тебя побудило на такой мастер-класс?

Удрученность текущей ситуации в отрасли. Все одержимы технологиями. В последнее время облачными. Читаешь вакансию, перечисляют используемые технологии, необходимый опыт(который почти никогда, на самом деле, не нужен). Очень круто звучит на собеседованиях. Приходишь на проект. Смотришь на код… и он печально говорит тебе: «Пристрели меня». Смотришь глубже и понимаешь всю его печаль. Он смертельно болен. Как раковые опухоли разрослись классы, которые кто-то, словно в шутку, назвал контроллерами. Как метастазы везде расползлись копипасты. На психологию кода давит то, что он лишь жалкая обвязка для крутых облачных технологий. Но пристрелить дорого.
Читать полностью »


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