Рубрика «никто не читает теги» - 4

Как генерируются UUID - 1

Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.

Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Читать полностью »

Вид на Сан-Франциско с восточной стороны залива
Вид на Сан-Франциско с восточной стороны залива

Привет Хабр,

В этом посте я расскажу о том, как мы строили компанию в кремниевой долине. За четыре года мы прошли путь от стартапа из двух человек в подвале одного из зданий в Сан-Франциско до большой узнаваемой компании с инвестициями в более чем $30M от известных фондов, включая таких гигантов, как a16z.

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

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

Правило первое – будьте рациональны

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

Модернизация старого PHP-приложения - 1

Недавно мне выдалась случайная возможность поработать с несколькими старыми PHP-приложениями. Я заметил несколько распространённых антипаттернов, которые пришлось исправлять. Эта статья не о том, как переписывать старое PHP-приложение на <вставьте сюда название чудесного фреймворка>, а о том, как сделать его более удобным в сопровождении и менее хлопотным в работе.
Читать полностью »

Почему язык С не помешает вам делать ошибки - 1

Если вкратце: потому что мы так сказали.

:)

Ладно, это слишком короткое объяснение для статьи, дорогой читатель, и мои провокационные слова требуют объяснения.

Встреча Комитета по языку С — которую сначала планировали провести в германском Фрайбурге, но не срослось по понятным причинам, — завершилась 7 августа. Она прошла хорошо, мы продвинулись по всем фронтам. Да, мы действительно продвигаемся, уверяю вас, и язык С не умер.
Читать полностью »

Трюки с SQL от DBA. Небанальные советы для разработчиков БД - 1

Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:

  • АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
  • АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.

АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно работать над несколькими проектами.
Читать полностью »

Декодируем JPEG-изображение с помощью Python - 1

Всем привет, сегодня мы будем разбираться с алгоритмом сжатия JPEG. Многие не знают, что JPEG — это не столько формат, сколько алгоритм. Большинство JPEG-изображений, которые вы видите, представлены в формате JFIF (JPEG File Interchange Format), внутри которого применяется алгоритм сжатия JPEG. К концу статьи вы будете гораздо лучше понимать, как этот алгоритм сжимает данные и как написать код распаковки на Python. Мы не будем рассматривать все нюансы формата JPEG (например, прогрессивное сканирование), а поговорим только о базовых возможностях формата, пока будем писать свой декодер.
Читать полностью »

Влияние кризиса на IT: уволят ли нас всех - 1

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

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

Как всё могло ухудшиться в период, когда популярность онлайн-сервисов резко возросла? Как происходящее может сказаться на обычном айтишнике? И что ему делать, чтобы сказалось как можно меньше?

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

Производительность современной Java при работе с большим объёмом данных, часть 2 - 1

FYI: Первая часть.

Бенчмарк пакетного конвейера

Пакетный конвейер обрабатывает конечный объём сохранённых данных. Здесь нет потока результатов обработки, выходные данные агрегирующей функции нужно применить ко всему набору данных. Это меняет требования к производительности: задержка — ключевой фактор при потоковой обработке — здесь отсутствует, потому что мы обрабатываем данные не в реальном времени. Единственная важная метрика — общее время работы конвейера.

Поэтому мы выбрали Parallel. На первом этапе тестирования, при работе на одной ноде, этот сборщик действительно показал лучшую пропускную способность (но только после настройки). Однако это было получено ценой длительных пауз. Если одна из нод кластера останавливается на сборку мусора, это стопорит весь конвейер. А поскольку ноды собирают мусор в разное время, общее время сборки увеличивается с добавлением каждой ноды к кластеру. Мы проанализировали этот эффект, сравнив результаты тестирования на одной ноде и на кластере из трёх нод.

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

Дешёвый сервер из китайских запчастей. Часть 1, железная

Дешёвый сервер из китайских запчастей. Часть 1, железная - 1
Размытая кошка позирует на фоне настраиваемого сервера. На заднем плане – мышка на сервере

Привет!

В жизни каждого человека иногда назревает необходимость апгрейда компьютера. Иногда это покупка нового телефона взамен разбитого или в погоне за свежими андроидом или камерой. Иногда – замена видеокарты, чтобы тянула игру на минималках. Иногда – установка SSD в ноутбук, на который вы вкорячили десятую винду, а ей не очень нравится жить на Core2Duo и 2.5 гигабайтах адресуемой памяти, и она всё время выгружает неиспользуемые страницы в файл подкачки, изничтожая и без того не великую скорость обмена с 32-гиговым диском.

Моя история – апгрейд сервера, который был собран ещё на первом курсе института. Мои потребности за прошедшие шесть лет выросли, и он, конечно, получил прибавку как в оперативной памяти, так и в дисковой. Проблема в том, что с новыми знаниями были получены новые амбиции – желание применить эти знания на практике – и он с ними мог уже не совладать.

Сначала будет немного скучного вводного текста, а потом пойдут картинки.

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


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