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

Программируемая Логическая Интегральная Схема (ПЛИС) может реализовать произвольную логику, что угодно, от микропроцессора до генератора видеосигнала или майнера криптовалюты. ПЛИС состоит из множества логических блоков, каждый из которых обычно состоит из триггера и логической функции, а также из сети проводников, соединяющей логические блоки. Что делает ПЛИС особенной, это то, что она является программируемым аппаратным обеспечением, вы можете сконфигурировать каждый логический блок и соединения между ними. В результате вы можете построить сложную цифровую схему без физического соединения каждого логического элемента и триггера, что обошлось бы вам в стоимость разработки заказной интегральной схемы.

Обратная разработка XC2064 — первой микросхемы FPGA - 1
Фотография показывает один из 64 блоков микросхемы XC2064. Слои металлизации убраны, мы видим кремний и поликремниевые транзисторы, лежащие под металлизацией. По ссылке вы можете увидеть фото в большем масштабе: siliconpr0n.
Читать полностью »

Сегодня мне пришел баг-репорт от пользователя Debian, который скормил какую-то ерунду в утилиту scdoc и получил SIGSEGV. Исследование проблемы позволило мне провести отличное сравнение между musl libc и glibc. Для начала посмотрим на стектрейс:

==26267==ERROR: AddressSanitizer: SEGV on unknown address 0x7f9925764184
(pc 0x0000004c5d4d bp 0x000000000002 sp 0x7ffe7f8574d0 T0)
==26267==The signal is caused by a READ memory access.
    0 0x4c5d4d in parse_text /scdoc/src/main.c:223:61
    1 0x4c476c in parse_document /scdoc/src/main.c
    2 0x4c3544 in main /scdoc/src/main.c:763:2
    3 0x7f99252ab0b2 in __libc_start_main
/build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
    4 0x41b3fd in _start (/scdoc/scdoc+0x41b3fd)

В исходниках на данной строчке написано вот что:

if (!isalnum(last) || ((p->flags & FORMAT_UNDERLINE) && !isalnum(next))) {

Подсказка: p — это корректный, ненулевой указатель. Переменные last и next имеют тип uint32_t. Сегфолт случается на втором вызове функции isalnum. И, самое важное: воспроизводится только при использовании glibc, но не musl libc. Если вам пришлось перечитать код несколько раз, вы не одиноки: тут попросту нечему вызывать сегфолт.Читать полностью »

Вероятно, самое сложное в любом Data Science-проекте — это придумать оригинальную, но реализуемую идею. Специалист, который ищет такую идею, легко может попасться в «ловушку наборов данных». Он тратит многие часы, просматривая существующие наборы данных и пытаясь выйти на новые интересные идеи. Но у такого подхода есть одна проблема. Дело в том, что тот, кто смотрит лишь на существующие наборы данных (c Kaggle, Google Datasets, FiveThirtyEight), ограничивает свою креативность, видя лишь небольшой набор задач, на которые ориентированы изучаемые им наборы данных.

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

Выработка уникальных идей для Data Science-проектов за 5 шагов - 1

Как вырабатывать новые идеи? Для того чтобы найти ответ на этот вопрос, я совместила собственный опыт и результаты исследований креативности. Это привело к тому, что мне удалось сформировать 5 вопросов, ответы на которые помогают находить новые идеи. Тут же я приведу и примеры идей, найденных благодаря предложенной мной методике. В процессе поиска ответов на представленные здесь вопросы вы пройдёте по пути создания новых идей и сможете задействовать свои креативные возможности на полную мощность. В результате у вас будут новые уникальные идеи, которые вы сможете реализовать в ваших Data Science-проектах.
Читать полностью »

Вначале был монолит: как мы меняем нашу архитектуру, не мешая бизнесу - 1

Всем привет! Меня зовут Игорь Наразин, я тим-лид команды в направлении логистики Delivery Club. Хочу рассказать, как мы строим и трансформируем нашу архитектуру и как это влияет на наши процессы в разработке.

Сейчас Delivery Club (как и весь рынок фудтеха) растёт очень быстро, что порождает огромное количество вызовов для технической команды, которые можно обобщить двумя самыми важными критериями:

  • Нужно обеспечивать высокую стабильность и доступность всех частей платформы.
  • Одновременно с этим держать высокий темп разработки новых фич.

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

Но нам удаётся (пока) и то, и другое. О том, как мы это делаем, и пойдет речь далее.
Читать полностью »

K8s в проде и в разработке: четыре мифа - 1

Начав экспериментировать с Kubernetes, многие сталкиваются с одним из самых больших заблуждений: они считают в проде K8s будет работать так же, как и в среде разработки или тестирования.

Не будет.

Когда речь заходит о Kubernetes, и вообще о контейнерах и микросервисах, существует большая разница между запуском в «лабораторных» условиях и в полноценной эксплуатации. Такая же разница, как между просто запуском и запуском с обеспечением безопасности и надёжности.

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

О чем речь 

Как сделать фасетный поиск в интернет-магазине? Как формируются значения в фильтрах фасетного поиска? Как выбор значения в фильтре влияет на значения в соседних фильтрах? В поиске ответов дошел до пятой страницы поисковой выдачи Google. Исчерпывающей информации не нашел, пришлось разобраться самому. Статья описывает:

  1. как реагирует UI, когда пользователь использует фильтры;
  2. алгоритм формирования значений фильтров; 
  3. шаблоны запросов и структуры индекса ElasticSearch с пояснениями.

Здесь нет готовых решений. Скопировать и вставить не получится. Для решения собственной задачи придется вникнуть.

Фасетные фильтры: как готовить и с чем подавать - 1

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

Бизнес-процессы на прокачку: как Process Intelligence помогает компаниям определить, что, где и когда автоматизировать - 1

Как вы, возможно, слышали, в прошлом году ABBYY приобрела компанию TimelinePI – разработчика платформ Process Intelligence. Теперь, помимо интеллектуальной обработки информации, продукты ABBYY помогают компаниям решать новый класс задач – анализировать бизнес-процессы, понимать, как они устроены изнутри и как их изменить в лучшую сторону.

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

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

Введение

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

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

В данном примере разберем создание базы данных в MS SQL Server для сервиса поиска соискателей на работу.

Также данный материал можно перенести и на другую СУБД такую как MySQL или PostgreSQL.
Читать полностью »

За годы работы архитектором я видел разных заказчиков, и одна из самых частых ошибок формулирования ТЗ и хотелок заказчика — это смешение разных уровней абстракции. Приходит человек и говорит:
— Мне нужна железка, которая будет управлять приводом дверей, и показывать на семисегментном экране текущее состояние, и обязательно с внешним сервером для удаленного управления, чтобы по TCP общалось с этим сервером, а для панели управления взять VueJS.

image

Вроде, понятно, что человек хочет. У кого-то даже такое ТЗ вызывает энтузиазм — человек, казалось бы, четко понимает, чего хочет. Зачастую он даже указывает на конкретные контроллеры/компоненты/фреймверки/протоколы.
И по такому заказу, безусловно, можно сделать нужную железку. И она даже будет работать, если подобранные компоненты не противоречат друг другу. Но если расчет идет не на проект, а на продукт, и его потом необходимо будет поддерживать, то гораздо полезнее потратить время и аккуратно разделить эти хотелки по уровням, понять, зачем именно такой экран, почему TCP, и причем тут VueJS. Вполне может оказаться, что это технологии, к которым заказчик испытывает приятные чувства из-за синдрома утенка. Или он просто не знает, что есть и другие типы экранов.
Читать полностью »

Добрый день. Меня зовут Никита Башун, работаю дата-аналитиком в группе компаний «Везёт». Мой рассказ будет о том, как мы командой из трёх человек с нуля создавали систему антифрода для сервиса заказа поездок.

image

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


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