Как стать автором
Обновить
21
0
Антон @gpaw

пишу код. надеюсь, хороший.

Отправить сообщение

Происхождение и эволюция аллокатора памяти в С

Время на прочтение11 мин
Количество просмотров23K

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

Аллокатор памяти в С - именно тот случай, когда при попытке ознакомиться с его современным устройством возникает стойкое желание остановиться, мысленно поблагодарить авторов и далее обращаться как с черным ящиком. Если же в читателе сильна любознательность, и/или есть желание постигнуть тайное знание, которое даст ощущение понимания странного поведения программ в нетривиальных случаях, добро пожаловать под кат.

Читать далее
Всего голосов 79: ↑78 и ↓1+102
Комментарии31

Схема разделения секрета Шамира в Hashicorp Vault

Время на прочтение9 мин
Количество просмотров4.2K

Реализация схемы разделения Шамира в Hashicorp Vault, которую я попытался описать.

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Задача коммивояжера (TSP) точное решение — метод ветвей и границ

Время на прочтение17 мин
Количество просмотров17K

Что делает код хорошим? Большинство программистов ответят: хороший код должен быть структурирован, легко читаем и понятен. Но так ли важно качество кода, если он медленный? В большинстве задач производительность кода не критична, хотя и желательна. Но есть задачи, время выполнения которых столь огромно, что выигрыш в производительности доминирует над всем остальным.

Я говорю про NP-трудные задачи (NP-трудность - недетерминированная полиномиальная трудность по времени) и на одной из данного класса хочу акцентировать ваше внимание. Задаче коммивояжера.

Мы не будем рассматривать эвристические алгоритмы, нам нужно точное решение.

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии42

Лучшие практики UX/UI в e-сommerce

Время на прочтение3 мин
Количество просмотров13K

Меня зовут Станислав Хрусталёв, я автор сайта hardclient.com. Работаю в управлении клиентским опытом с 2009 года. Пишу на эту тему, собираю лучшие практики из мира Customer Experience и оцениваю сервисные модели компаний.

Некоторое время назад я задался идеей: собрать базу лучших практик UX/UI в области электронной коммерции. Как сделать покупки в интернет-магазине максимально удобными для клиента? Чтобы он возвращался снова и рекомендовал вас друзьям и знакомым?

Время шло, и из небольшой статьи материал стал превращаться в крупнейшую (?) открытую русскоязычную базу с лучшими практиками UX/UI в сфере e-commerce.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии1

Невидимая рука паразитов

Время на прочтение7 мин
Количество просмотров25K

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

Читать далее
Всего голосов 39: ↑30 и ↓9+31
Комментарии70

Строки кода, которые изменили мир

Время на прочтение13 мин
Количество просмотров52K
image

{"__typename":"PageLikeAction","action_type":"LIKE","label":{"text":"Like"}


В 2009 году Facebook добавила в интерфейс своей социальной сети код, изменивший мир — кнопку «Like». «Лайк» был детищем нескольких программистов и дизайнеров — Лии Перлман и Джастина Розенштейна. Они предположили, что пользователи Facebook часто бывают слишком заняты, чтобы оставлять комментарии к постам своих друзей, и что поэтому им нужна простая кнопка, нажав которую можно было бы дать понять друзьям, что их пост вам понравился. Так оценивать и поощрять друг друга пользователям стало бы легче, а значит и делали бы они это чаще.

Это сработало — и даже слишком хорошо. К 2012 году пользователи прожали «лайк» триллион раз. У этого оказались и побочные эффекты. Многие стали публиковать фото/видео, чтобы потом сидеть и с тревогой обновлять страницу, ожидая, когда же число лайков возрастёт. Все стали гадать, почему кто-то другой получает больше лайков. Люди подсели на иглу одобрения (вместо того, чтобы сесть на чьё-то лицо), что отразилось на их повседневной онлайн-активности: старались публиковать как можно больше постов, чтобы казаться смешнее, умнее, красивее, спортивнее.

Небольшой фрагмент кода, который внёс почти незаметное изменение в пользовательский интерфейс социальной сети, изменил поведение людей. Ниже представлен список из примеров подобных важных фрагментов кода, которые изменили мир. И на самом деле это неполный список, учитывая огромное количество кода, который был написан.
Читать дальше →
Всего голосов 76: ↑65 и ↓11+69
Комментарии37

Platform V Works: как мы за год создали свой продукт для управления разработкой

Время на прочтение6 мин
Количество просмотров6.1K

Привет, Хабр! Меня зовут Ирина Львова, я ведущий эксперт по технологиям в СберТехе — компании, которая создаёт Platform V, цифровую платформу Сбера для разработки бизнес-приложений.

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

Эта статья — продолжение цикла материалов о Platform V Works, семействе инструментов для agile-разработки. В предыдущей статье мой коллега Сергей Петровский рассказывал о другом компоненте бандла — инструменте генерации связанных синтетических тестовых данных для сквозных интеграционных тестов, вот его статья.

Узнать больше о Platform V Works
Всего голосов 8: ↑7 и ↓1+11
Комментарии6

Алгоритм распознания арифметических выражений

Время на прочтение14 мин
Количество просмотров7.7K

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

Читать далее
Всего голосов 35: ↑6 и ↓29-20
Комментарии23

Разбираемся с Docker: как создаются образы

Время на прочтение13 мин
Количество просмотров48K

От любого инструмента, который внедряем в проект, мы ждём стабильной работы. Docker не исключение. Чтобы иметь возможность оперативно выявлять потенциальные проблемы и избегать сбоев, необходимо понимать внутренние особенности технологии. Эта статья — сборник заметок, которые помогут разобраться, как создаются образы контейнеров. 

Читать далее
Всего голосов 29: ↑28 и ↓1+33
Комментарии3

Многопоточность на фронте: абсурд или прекрасное архитектурное решение?

Время на прочтение9 мин
Количество просмотров16K

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

Практически во всех областях IT-разработки весь мир перешел на использование многопоточности: мобильные приложения, бэкенд, прикладное программирование. И даже процессоры развиваются в сторону увеличения количества ядер. Но на фронте многопоточность используют нечасто, и эта тема до сих пор почему-то не очень популярна, особенно в ру-сообществе.

Сегодня я постараюсь это исправить, открыв для вас фантастический мир многопоточности в браузере.

Читать далее
Всего голосов 25: ↑24 и ↓1+27
Комментарии18

Будьте другом своему пользователю, пишите осмысленные сообщения об ошибках

Время на прочтение7 мин
Количество просмотров4.3K
Сообщения об ошибках — повседневная часть нашей онлайн-жизни. Каждый раз, когда лежит сервер, или у нас отключился Интернет, или мы забыли ввести в форму обязательную информацию, мы получаем сообщение об ошибке. Классика — это «Что-то пошло не так». Но что пошло не так? Что произошло? И самое важное: как мне это исправить?


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

Так начался Errorgate 2021.

Всего за месяц мы изменили тысячи сообщений об ошибках в Wix.

Чтобы выполнить этот проект, нам сначала нужно было определиться с тем, что же считать плохим сообщением об ошибке, а что хорошим.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии5

Как отобразить таблицу на экране мобильного устройства: решения

Время на прочтение2 мин
Количество просмотров21K

В данной статье мы рассмотрим какие существуют решения по отображению таблиц с большими массивами данных на экранах мобильных устройств.

Читать далее
Всего голосов 51: ↑50 и ↓1+59
Комментарии17

Чек-лист — как тестировать поиск

Время на прочтение16 мин
Количество просмотров147K

Я посмотрела, как тестируют поиск начинающие тестировщики, и решила написать этот чит-лист проверок. Это такая серебряная пуля, которую можно применить на любом проекте, лишь немного варьируя под себя, под свой проект.

Поиск — он же есть практически в каждой системе. Поэтому здорово, когда есть шпаргалка «какие вопросы задать аналитику» и «какие проверки провести». Именно это мы в статье и обсудим. Сначала я дам чек-лист, а потом разберу каждый пункт отдельно.

Читать далее
Всего голосов 25: ↑22 и ↓3+25
Комментарии16

Базовая структура HTML-документа с объяснением каждой строчки

Время на прочтение9 мин
Количество просмотров112K
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width">

  <title>Unique page title - My Site</title>

  <script type="module">
    document.documentElement.classList.remove('no-js');
    document.documentElement.classList.add('js');
  </script>

  <link rel="stylesheet" href="/assets/css/styles.css">
  <link rel="stylesheet" href="/assets/css/print.css" media="print">

  <meta name="description" content="Page description">
  <meta property="og:title" content="Unique page title - My Site">
  <meta property="og:description" content="Page description">
  <meta property="og:image" content="https://www.mywebsite.com/image.jpg">
  <meta property="og:image:alt" content="Image description">
  <meta property="og:locale" content="en_GB">
  <meta property="og:type" content="website">
  <meta name="twitter:card" content="summary_large_image">
  <meta property="og:url" content="https://www.mywebsite.com/page">
  <link rel="canonical" href="https://www.mywebsite.com/page">

  <link rel="icon" href="/favicon.ico">
  <link rel="icon" href="/favicon.svg" type="image/svg+xml">
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
  <link rel="manifest" href="/my.webmanifest">
  <meta name="theme-color" content="#FF00FF">
</head>

<body>
  <!-- Content -->
  <script src="/assets/js/xy-polyfill.js" nomodule></script>
  <script src="/assets/js/script.js" type="module"></script>
</body>
</html>


Под катом — разбор каждой строчки
Читать дальше →
Всего голосов 44: ↑36 и ↓8+34
Комментарии9

Топ ошибок со стороны разработки при работе с PostgreSQL

Время на прочтение21 мин
Количество просмотров50K
HighLoad++ существует давно, и про работу с PostgreSQL мы говорим регулярно. Но у разработчиков все равно из месяца в месяц, из года в год возникают одни и те же проблемы. Когда в маленьких компаниях без DBA в штате случаются ошибки в работе с базами данных, в этом нет ничего удивительного. В крупных компаниях тоже нужны БД, и даже при отлаженных процессах все равно случаются ошибки, и базы падают. Неважно, какого размера компания — ошибки все равно бывают, БД периодически обваливаются, рушатся.



С вами такого, конечно, никогда не случится, но проверить чек-лист не трудно, а сэкономить будущих нервов он может очень прилично. Под катом перечислим топ типичных ошибок, которые совершают разработчики при работе с PostgreSQL, разберемся, почему так делать не надо, и выясним, как надо.


О спикере: Алексей Лесовский (lesovsky) начинал системным администратором Linux. От задач виртуализации и систем мониторинга постепенно пришел к PostgreSQL. Сейчас PostgreSQL DBA в Data Egret — консалтинговой компании, которая работает с большим количеством разных проектов и видит много примеров повторяющихся проблем. Это ссылка на презентацию доклада на HighLoad++ 2018.
Читать дальше →
Всего голосов 79: ↑77 и ↓2+75
Комментарии8

Как Asana упрощает работу с командой, документами и приносит больше профита

Время на прочтение8 мин
Количество просмотров63K
Asana создана для ленивых, но влюбленных в порядок. Знакомство с ней длится 10 минут, чтобы уже завтра КПД вашей команды вырос как минимум на 30%. Да, и тут есть радужные единороги, йети и котики.
image
Читать дальше →
Всего голосов 18: ↑13 и ↓5+8
Комментарии47

Пишем расширение под PHP (7.0.7) без знаний о С/C++ и как это вообще работает

Время на прочтение7 мин
Количество просмотров19K
Можно ли написать свой модуль (расширение) к PHP без особых знаний, требующих большого времени изучения теории? Если умеешь программировать на самом PHP, то написать простейший код на С не составит особого труда, тем более, что PHP позволяет генерировать каркас под разрабатываемое расширение, в рамках которого потом пишешь код. Есть еще набирающий популярность зефир на хабре для этого вопроса. Данная публикация для тех, кто решил покопаться в исходниках PHP, немного посмотреть его внутренности, преследуя цель лишь поверхностного исследования. В данный момент я тот же самый исследовать без необходимых знаний. На собеседованиях по PHP часто просят написать код подсчета факториала. Вот такую функцию мы и напишем сейчас на С, которую потом можно вызывать из кода PHP. Я буду описывать действия, которые я сам делал и при этом ничего не знаю изначально по этой части. В интернете можно найти много статей по этому вопросу, большинство из них описывает информацию с использованием zval «старого» формата, но я не думаю, что будет хуже если и я еще добавлю от себя.
Читать дальше →
Всего голосов 27: ↑20 и ↓7+13
Комментарии16

Информация

В рейтинге
Не участвует
Откуда
Рыбинск, Ярославская обл., Россия
Дата рождения
Зарегистрирован
Активность