Привет. Постоянно, когда я общаюсь с новым человеком, я до мелочей запоминаю весь разговор и всю информацию о собеседнике, но не могу назвать его имени, которое мне назвали пару минут назад. Я решил разобраться, почему так происходит, и выяснил, что с этой проблемой сталкиваются многие люди из моего окружения и в этом виноваты не наши интеллектуальные способности, а простейшая логика по которой работает наш мозг.
Рубрика «типы данных»
Я не запоминаю имена или логика и данные
2024-12-10 в 8:12, admin, рубрики: данные, логика, математика, мозг, околонаучные течения, типы данныхОхота на недостающий тип данных
2024-03-15 в 13:00, admin, рубрики: nosey parker, python, ruvds_перевод, sparql, sql, Алгоритмы, графы, типы данныхВсе графы созданы с помощью graphviz (источник)
В сфере разработки ПО графы используются повсеместно:
- Зависимости пакетов, как и импорт модулей, формируют направленные графы.
- Интернет — это граф, состоящий из ссылок между веб-страницами.
- При проверке моделей анализ выполняется путём изучения «пространства состояний» всех возможных конфигураций. Узлы — это состояния, а рёбра — это допустимые переходы между ними.
- Реляционные базы данных — это графы, в которых узлы являются записями, а рёбра — внешними ключами.
- Графы — это обобщение связанных списков, двоичных деревьев и хэш-таблиц.1
Кроме того, графы также широко используются в бизнес-логике. Научные работы со ссылками формируют графы цитат. Транспортные сети представляют графы маршрутов. Социальные сети — это графы связей. Если вы работаете в сфере разработки, то рано или поздно встретитесь с графами.
Я вижу графы повсюду и использую их для анализа всевозможных систем. В то же время я побаиваюсь использовать их в коде. Какой из популярных языков программирования ни возьми, поддержка графов в них практически отсутствует. Ни в одном её нет в виде встроенного типа, очень мало где они прописаны в стандартной библиотеке, и у многих языков нет для этой функциональности надёжного стороннего пакета. Чаще всего мне приходится создавать графы с нуля. Существует большой разрыв между тем, как часто инженерам ПО могут понадобиться графы и тем, в какой степени экосистема их поддерживает. Где все графовые типы?Читать полностью »
Свод правил по работе с целыми числами в C-C++
2021-04-09 в 9:00, admin, рубрики: c++, char, long, ruvds_перевод, short, Блог компании RUVDS.com, Программирование, типы данных, целые числа
В основу статьи легли мои собственные выработанные нелегким путем знания о принципах работы и правильном использовании целых чисел в C/C++. Помимо самих правил, я решил привести список распространенных заблуждений и сделать небольшое сравнение системы целочисленных типов в нескольких передовых языках. Все изложение строилось вокруг баланса между краткостью и полноценностью, чтобы не усложнять восприятие и при этом отчетливо передать важные детали.Читать полностью »
Go: десериализация JSON с неправильной типизацией, или как обходить ошибки разработчиков API
2020-05-15 в 14:13, admin, рубрики: Go, golang, json, MarshalJSON, marshalling, UnmarshalJSON, unmarshalling, десериализация, сериализация, типы данных
Недавно мне довелось разрабатывать на 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 (истина и ложь соответственно).
Читать полностью »
Оптимизация строк в ClickHouse. Доклад Яндекса
2020-03-18 в 10:22, admin, рубрики: clickhouse, mysql, string, Администрирование баз данных, Блог компании Яндекс, высокая производительность, строки, типы данныхАналитическая СУБД ClickHouse обрабатывает множество разных строк, потребляя ресурсы. Для ускорения работы системы постоянно добавляются новые оптимизации. Разработчик ClickHouse Николай Кочетов рассказывает о строковом типе данных, в том числе о новом типе, LowCardinality, и объясняет, как можно ускорить работу со строками.
— Сначала давайте разберемся, как можно хранить строки.
Читать полностью »
Когда фильтр Блума не подходит
2020-03-05 в 7:04, admin, рубрики: CloudFlare, ddos, IP-спуфинг, Алгоритмы, вероятностная структура данных, Клиентская оптимизация, парадокс дней рождения, поисковые технологии, Программирование, профилирование, Серверная оптимизация, типы данных, фильтр блума, фильтр кукушки, хэширование
Я ещё с университета знал о фильтре Блума — вероятностной структуре данных, названной в честь Бёртона Блума. Но у меня не было возможности её использовать. В прошлом месяце такая возможность появилась — и эта структура буквально очаровала меня. Впрочем, вскоре я нашёл у неё некоторые недостатки. В этой статье — рассказ о моей краткой любовной связи с фильтром Блума.
Читать полностью »
Нескучный туториал по NumPy
2019-10-08 в 8:55, admin, рубрики: numpy, python, Алгоритмы, векторные операции, линейная алгебра, Программирование, Совершенный код, типы данных, эффективностьМеня зовут Вячеслав, я хронический математик и уже несколько лет не использую циклы при работе с массивами…
Ровно с тех пор, как открыл для себя векторные операции в NumPy. Я хочу познакомить вас с функциями NumPy, которые чаще всего использую для обработки массивов данных и изображений. В конце статьи я покажу, как можно использовать инструментарий NumPy, чтобы выполнить свертку изображений без итераций (= очень быстро).
Не забываем про
import numpy as np
и поехали!Читать полностью »
Часто задаваемые вопросы о системах типов
2019-08-07 в 9:30, admin, рубрики: javascript, TypeScript, Блог компании RUVDS.com, разработка, Разработка веб-сайтов, типы данныхАвтор статьи, перевод которой мы сегодня публикуем, говорит, что источником вдохновения для её написания послужил этот пост и комментарии к нему. По его словам, IT-специалисты имеют неправильные представления о типах, используют некорректную терминологию и, обсуждая вопросы, связанные с типами, приходят к ошибочным выводам. Он отмечает то, что не является защитником статической системы типов. Единственное, что его беспокоит — это правильное использование терминов. Это позволяет вести конструктивные дискуссии. Автор говорит, что написал этот материал спонтанно, но надеется на то, что в нём нет ошибок. Если же он что-то и напутал — он просит дать ему об этом знать.
Давайте раз и навсегда разберёмся во всём том, что вызывает неразбериху при разговорах о системах типов.
Читать полностью »
Магические трансформации типов данных в Rust: Интринсика mem::transmute<T, U>
2019-04-16 в 10:54, admin, рубрики: Rust, unsafe code, безопасность данных, интринсики, ненормальное программирование, неопределённое поведение, превращение типов, работа с памятью, синтаксические особенности, системное программирование, стандартная библиотека, типы данных
Введение
Язык программирования Rust, невзирая на всеохватывающую идеологию безопасности данных, располагает и небезопасными методиками программирования, ведь порой они могут повышать скорость путём устранения лишних вычислений, а порой это просто жизненная необходимость.
Одной из них является наш сегодняшний экземпляр — интринсика mem::transmute<T, U>
, предназначенная для того и другого понемногу, пригождаясь в крайне необычных ситтуациях.
Основные структуры данных. Матчасть. Азы
2018-09-04 в 10:45, admin, рубрики: Алгоритмы, дерево, массив, Матчасть, очередь, перевод, Программирование, стек, типы данных, хешВсе чаще замечаю, что современным самоучкам очень не хватает матчасти. Все знают языки, но мало основы, такие как типы данных или алгоритмы. Немного про типы данных.
Еще в далеком 1976 швейцарский ученый Никлаус Вирт написал книгу Алгоритмы + структуры данных = программы.
40+ лет спустя это уравнение все еще верно. И если вы самоучка и надолго в программировании пробегитесь по статье, можно по диагонали. Можно код кофе.