Архив за 15 мая 2020 - 2

image

Недавно мне довелось разрабатывать на Go http-клиент для сервиса, предоставляющего REST API с json-ом в роли формата кодирования. Стандартная задача, но в ходе работы мне пришлось столкнуться с нестандартной проблемой. Рассказываю в чем суть.

Как известно, формат json имеет типы данных. Четыре примитивных: строка, число, логический, null; и два структурных типа: объект и массив. В данном случае нас интересуют примитивные типы. Вот пример json кода с четырьмя полями разных типов:

{
	"name":"qwerty",
	"price":258.25,
	"active":true,
	"description":null,
}

Как видно в примере, строковое значение заключается в кавычки. Числовое — не имеет кавычек. Логический тип может иметь только одно из двух значений: true или false (без кавычек). И тип null соответственно имеет значение null (также без кавычек).

А теперь собственно сама проблема. В какой-то момент, при детальном рассмотрении получаемого от стороннего сервиса json-кода, я обнаружил, что одно из полей (назовем его price) помимо числового значения периодически имеет строковое значение (число в кавычках). Т. е. один и тот же запрос с разными параметрами может вернуть число в виде числа, а может вернуть это же число в виде строки. Ума не приложу, как на том конце организован код, возвращающий такие результаты, но видимо, это связано с тем, что сервис сам является агрегатором и тянет данные из разных источников, а разработчики не привели json ответа сервера к единому формату. Тем не менее, надо работать с тем что есть.

Но далее меня ждало еще большее удивление. Логическое поле (назовем его active), помимо значений true и false, возвращало строковые значения «true», «false», и даже числовые 1 и 0 (истина и ложь соответственно).
Читать полностью »

Один из самых громких скандалов 2019 года — это, вне всякого сомнения, уголовное дело на разработчиков веб-сервера NGINX, заведённое по заявлению «Рамблера» и Lynwood Investments CY Ltd. о нарушении авторских прав: якобы авторы NGINX разрабатывали его в рабочее время и по заданию работодателя, а потом присвоили результат себе.

При этом отдельно важно отметить, что сам по себе сервер NGINX — некоммерческий продукт, он распространяется в исходных кодах под лицензией BSD и доступен всем желающим. Деньги компания зарабатывает на продуктах, строящихся на базе NGINX — например, веб-сервере и балансировщике нагрузки NGINX Plus и системе управления им NGINX Controller.

Больших сомнений в том, что перед нам традиционное «патентное рейдерство», не было уже на старте — даже если предположить, что претензии справедливы, момент для их предъявления был выбран совершенно недвусмысленный: несколькими месяцами ранее компания NGINX была куплена за $670M американской F5 Networks.

Так или иначе, но масштаб возмущения в IT-сообществе удивил многих — и, кажется, не в последнюю очередь менеджмент «Рамблера» и только что вложившегося в него «Сбербанка». После череды открытых писем и публичных заявлений «Рамблер» дал задний ход и пообещал во всём разобраться.

Увы, здесь включилась «российская изюминка» — сохранившаяся с прошлых десятилетий привычка отдельных бизнесменов решать вопросы через заведение уголовного дела. Заявленная сумма ущерба автоматически делает преступление тяжким, а следствие по таким делам не может быть прекращено по примирению сторон (ст. 25 УПК РФ).

О том, что ничего не закончилось, юристы говорили ещё в декабре, а со стороны людей, знакомых с образом мыслей крупного менеджмента, звучали предупреждения, что просто будет сделана пауза до весны: дать время шуму угаснуть, «Рамблеру» — дистанцироваться и восстановить репутацию.

И действительно, ничего не закончилось — ни тогда, ни сейчас.

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

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

Напомним, если кто забыл: Rust — это язык программирования общего назначения, который обладает средствами, позволяющими строить надёжное и эффективное программное обеспечение. Rust может быть использован в любой области: от ядра вашей операционной системы до вашего следующего web-приложения. Этот язык полностью построен участниками открытого многоликого сообщества, в основном волонтёрами, кто щедро делился своим временем и знаниями для того, чтобы помочь сделать Rust таким, какой он есть сейчас.

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

Меня зовут Александр Коцюруба, я руковожу разработкой внутренних сервисов в компании ДомКлик. Многим разработчикам, пишущим на Java, с опытом приходит понимание внутреннего устройства JVM. Чтобы облегчить этот путь Java-самурая, я решил простым языком изложить основы виртуальной машины Java (JVM) и работы с байткодом.

Что такое таинственный байткод и где он обитает?

Постараюсь ответить на этот вопрос на примере приготовления солений.

Варим байткод на кухне JVM - 1

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

Компания Sony представила два новых датчика изображения: IMX500 и IMX501. Они интересны тем, что это первые датчики, которые способны обрабатывать задачи искусственного интеллекта собственными силами. То есть все необходимые вычисления производятся в самих датчиках.

Для начала отметим, что IMX500 и IMX501 — это один и тот же датчик, просто в первом случае он поставляется без подложки, так что далее мы будем говорить о новом решение, как об одном продукте.

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

Как мы уже сообщали, на днях президент США Дональд Трамп продлил на один год указ, подписанный в мае 2019 года. Указ вводит чрезвычайную ситуацию в стране и запрещает американским компаниям использовать телекоммуникационное оборудование, изготовленное фирмами, «представляющими угрозу для национальной безопасности».

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

Одновременно с твердотельными накопителями серии 2210 компания Micron Technology представила накопители серии 2300. Это более производительные SSD, в которых используется 96-слойная флеш-память 3D NAND.

Накопители с интерфейсом PCIe Gen3 выполнены в типоразмере M.2-2280. Они поддерживают протокол NVMe 1.3. Серия включает модели объемом 256 ГБ, 512 ГБ, 1 ТБ и 2 ТБ. Все они демонстрируют скорость последовательного чтения 3300 МБ/с. Скорость последовательной записи в случае SSD минимального объема достигает 1400 МБ/с, все остальные обеспечивают скорость 2700 МБ/с.

Компания Micron Technology объявила о выпуске новой серии твердотельных накопителей потребительского сегмента, поддерживающих протокол NVMe. Особенностью SSD Micron 2210 является использование флеш-памяти 3D QLC NAND.

Накопители типоразмера M.2-2280 оснащены интерфейсом PCIe Gen3 x4 и поддерживают протокол NVMe 1.3. Они выпускаются объемом 512 ГБ, 1 ТБ и 2 ТБ. Скорость последовательной записи в первом случае достигает 1070 МБ/с, в двух других — 1800 МБ/с, а максимальная скорость последовательного чтения во всех случаях равна 2200 МБ/с.

В ноябре 2019 года люди услышали о первых случаях неизвестной смертельно опасной болезни в Китае. Теперь все знают о том, что эта болезнь называется COVID-19. Видимо, эпидемия навсегда изменила тот мир, который мы знали. Вирус опасен и очень заразен. И человечество пока не особенно много знает о нём. Очень надеюсь, что скоро будет найдено лекарство от этой болезни.

Go, Vue и 3 дня на разработку: система реального времени для мониторинга пациентов - 1

Природа вируса такова, что очень сложно помешать его распространению. В Шри-Ланке, где я живу, мы столкнулись с такой же ситуацией, с которой столкнулись люди в других странах. Здесь я хочу рассказать о том, как программисты смогли оказать посильную помощь тем, кто сражается с болезнью лицом к лицу.
Читать полностью »


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