Рубрика «Анализ и проектирование систем» - 119

Пути технологии неисповедимы. Три месяца назад к нам в Silicon Valley приехал бизнесмен из Украины Александр Романишин. Я пошел с Александром на выставку для разработчиков IoT, где мы встретили Дэвида Гарольда из британской части Imagination Technologies (компании, которая спроектировала PowerVR GPU внутри Apple iPhone).

Александр увидел у Дэвида демо платы MIPS Creator ci40 для «умных ферм», и минут двадцать рассказывал Дэвиду, что все правительство Украины начиная с Порошенко лично желает в порядке нахождения экономического будущего страны скрестить электронные технологии и сельское хозяйство.

Дэвид воспринял все это максимально буквально и сегодня утром я получил от начальника Дэвида письмо, откуда узнал, что они в Великобритании сделали онлайн вебинар по использованию MIPS Creator ci40 для построения системы умной ирригации, и соратники Александра могут зарегистрироваться для этого семинара, который состоится в среду 28 сентября в 11 утра по Silicon Valley / в 21.00 по киевскому времени:

Украинец подсказал британцу сделать вебинар для разработчиков IoT для сельского хозяйства. А мы поговорим о CPU внутри - 1

Украинец подсказал британцу сделать вебинар для разработчиков IoT для сельского хозяйства. А мы поговорим о CPU внутри - 2

По этому поводу я хочу копнуть глубже внутрь чипа и рассказать про историю и особенности процессорного ядра в показываемом в вебинаре устройстве. Внутри MIPS Creator ci40 стоит чип на основе многопоточного двухядерного кластера MIPS interAptiv, продвинутого отпрыска ядра MIPS 24KEc. Последний сейчас переживает вторую молодость внутри только что вышедшего на рынок Omega2, Linux-компьютера ценой $5 размером с почтовую марку. Чем же MIPS interAptiv внутри MIPS Creator ci40 отличается от MIPS 24KEc внутри Omega2 с точки зрения микроахитектуры и как это задевает программиста?
Читать полностью »

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

Сложно тем, кто видит потенциал в новом программном обеспечении, но не знает, как оно создается. Цикл статей о заказной разработке программного обеспечения, который будет полезен:

  • для владельца, руководителя организации, планирующего заказать разработку программного обеспечения для бизнеса;
  • для того, кто мечтает о стартапе, в основе которого программный продукт: коробочное ПО, веб сервис или мобильное приложение;
  • для юниора, планирующего выбрать или начинающего карьеру в области информационных технологий.

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

Павел Филонов (Positive Technologies)

Павел Филонов

В данном докладе я хочу поговорить о пересечении RabbitMQ и Pipeline архитектуры, и о том, как оно связанно с работой нашей компании.

Сначала немного в качестве пролога. Это приятная часть.

101 способ приготовления RabbitMQ и немного о pipeline архитектуре - 2

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

Вместе с такой задачей приходит и целая серия проблем.
Читать полностью »

Как-то раз мне на глаза попалась статья о том, что самой дорогой ошибкой в дизайне языков программирования было решение определять окончание строки в C по NULL-байту. Один из вариантов перевода этой статьи на Хабре: habrahabr.ru/post/126566 (хотя я, по-моему, читал другой). Эта статья меня немного удивила. Во-первых, как-будто в те времена экономии каждого бита памяти можно было шикануть и выделить ещё 2-4 байта в каждой строке на хранение её размера. Во-вторых, никаких особо катастрофических последствий это решения для программиста не несёт. Ошибок, которые можно по этому поводу совершить я могу придумать целых две: неверно выделить память для строки (забыть место под NULL) и неверно записать строку (забыть NULL). О первой ошибке уже предупреждают компиляторы, избежать второй помогает использование библиотечных функций. Всей-то беды.

О фундаментальных ошибках в дизайне языков программирования - 1Значительно большей проблемой времён дизайна языка С (и затем С++) мне кажется другое — оператор for. При всей его кажущейся безвредности — это просто кладезь потенциальных ошибок и проблем.

Давайте вспомним классическое его применение:
for (int i = 0; i < vec.size(); i++)
{...}

Что же здесь может пойти не так?
Читать полностью »

В сентябре мы выпустили плагин для IntelliJ IDEA с поддержкой Python и Java. О процессе разработки, и о том, почему плагин упростит жизнь учащихся программированию на Stepik.org, расскажем в этой статье.

Новый плагин от Stepik.org для IntelliJ IDEA - 1
Читать полностью »

Вы не любите кошек? Да вы просто не умеете их готовить! (с) Альф

image При проектировании достаточно объёмных реляционных баз данных часто принимается решение об отступлении от нормальной формы — «денормализации».
Причины могут быть разными. От попытки ускорения доступа к определённым данным, ограничений используемой платформы/фреймворка/средств разработки и до недостатка квалификации разработчика/проектировщика БД.
Впрочем, строго говоря, ссылка на ограничения фремфорка и т.п. — по сути попытка оправдать недостаток квалификации.

Денормализованные данные — слабое звено, через которое легко можно привести нашу базу в неконсистентное (нецелостное) состояние.

Что с этим делать?
Читать полностью »

Однажды программисты погубят этот мир - 1

1. История первая: воспоминание

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

А ведь самое логичное объяснение — он сам упал. Просто он рос, выбрасывал новые побеги, развивал и наращивал массу. Тянулся к солнцу. Однажды проекция центра тяжести цветка вышла за пределы опоры и он опрокинулся.

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

Раз уж мы затронули немножко в комментариях к предыдущей статье тему расширения PCI Express и вывода шины за пределы шасси, следует наверное рассказать об этом чуть подробнее.

Небольшой дисклеймер – информацию обо всем, о чем говорится ниже, можно найти используя Google. Мы, конечно, про некоторые вещи знаем гораздо больше подробностей, чем можем рассказывать исходя из условий NDA.

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

image
Инфографика в посте сделана на R по реальным данным из Тарификатора.

Вы сталкиваетесь с тарификацией доставки, когда делаете заказ в интернет-магазине. Тарификатор — IT-система, которая говорит каким способом товар доставят, на какие посылки разобьется корзина, сколько стоит доставка и когда привезут заказ. Тарификатор собирает информацию со склада и служб доставки, перерабатывает и выдает результаты покупателям интернет-магазина на сайте.

Цена за доставку товара для покупателя интернет-магазина редко совпадает с ценой, которую транспортная компания возьмет с самого магазина. Захотели вы привезти книги с помощью DHL в Новосибирск. OZON.ru выставит вам конкурентную цену за доставку — 500 руб. При этом DHL за эту доставку выставит OZON.ru счет на 1000 руб. Это кажется странным, но такова реальность, которую диктует рынок.
Читать полностью »

Еще в 2011 году нас спрашивали, зачем вводить номер телефона для выставления счета на стороне партнера, подключенного к QIWI? Мы давно хотели облегчить интеграцию API, но раньше сделать это было достаточно сложно. Что же изменилось в 2016? Сейчас расскажем, а также поэкспериментируем с хабровским R&D голосованием.

Извините, мы обновляем протокол - 1
Читать полностью »


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