Pull to refresh
0
Василь Бєляєв @VXPread⁠-⁠only

C#, C++, Lua

Send message

File Uploader. Особенности компонента и к чему мы пришли

Level of difficultyEasy
Reading time7 min
Views4.6K

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

File Uploader представляет собой элемент интерфейса, который позволяет пользователям выбирать и загружать файлы. Обычно он состоит из кнопки «Выбрать файл» или поля для перетаскивания файлов, которые пользователь может выбрать для загрузки.

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

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

Читать далее

Два потока, одно ядро: как устроена одновременная многопоточность

Level of difficultyMedium
Reading time13 min
Views30K

Одновременная многопоточность (Simultaneous multithreading, SMT) — это функция, позволяющая процессору одновременно обрабатывать команды из двух разных потоков. Но задавались ли вы когда-нибудь вопросом, как это работает? Как процессор отслеживает два потока и распределяет ресурсы между ними?

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

Примечание: основная часть изложенного в статье относится к реализации SMT компании Intel, также называемой гипертредингом (hyper-threading). Она основана на научной статье компании, опубликованной в 2002 году.
Читать дальше →

Как подключить мультиметр к компьютеру

Level of difficultyMedium
Reading time5 min
Views17K

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

В бюджетных мультиметрах ZT102 и ZT301, которые построены на чипе DTM0660, можно реализовать подключение к компьютеру, но для этого придётся редактировать EEPROM и вносить изменения на печатную плату. Это несложно и Kerry Wong описывал как это сделать на примере мультиметра ennoLogic eM860T.

В тоже время у моего настольного мультиметра Agilent U3402A на задней панели уже есть порт RS232, но на нём указано "используется только для калибровки". Аналогичное предупреждение есть и в инструкции пользователя на русском и английских языках.

Читать далее

Как сделать безопасную загрузку с полностью зашифрованным диском на Linux без загрузчика на UEFI

Level of difficultyHard
Reading time14 min
Views15K

Наша новая статья — для довольно искушённых пользователей Linux. В ней DevOps-инженер Алексей Гаврилов разобрал, как установить Debian или аналогичный дистрибутив на полностью зашифрованный диск без загрузчика на UEFI с включённым Secure Boot. 

После завершения установки вы получите включённый Secure boot с использованием личных ключей для подписи EFI-файлов, подписанные ключом файл ядра и initramfs, а также зашифрованные разделы диска за вычетом EFI boot. Это позволит уменьшить возможность векторного взлома ноутбука и усложнит жизнь потенциальному взломщику, поскольку в его распоряжении будут только подписанные EFI-файлы.

Читать далее

JPEG XL лучше всех, но Google против

Level of difficultyEasy
Reading time6 min
Views27K

JPEG XL превосходит все форматы по уровню сжатия и визуальному восприятию (DSSIM), источник

Оригинальный формат JPEG разработан в далёком 1992 году и уже устарел. Вопрос в том, кто придёт ему на смену. Идеальной заменой казался JPEG XL, в сравнительных тестах он показывает превосходство над AVIF, WebP и другими форматами. Можно было бы сказать, что будущее за JPEG XL, если бы не один нюанс: в 2022 году корпорация Google почему-то удалила его поддержку из браузера Chrome. И не хочет возвращать обратно.
Читать дальше →

GET запросы на практике: правила, принципы и примеры

Reading time14 min
Views93K

Я думаю, что вы не раз уже гуглили, заглядывали в статьи, манифесты IT-гигантов о лучших практиках проектирования API. Я тоже.

Но в большинстве из них всё ограничивается описанием URL ресурса, мотивацией использовать пагинацию, сложными словами про кэширование и SSL. Это, безусловно, необходимо для общего понимания технологий, но практически не помогает, когда ты сидишь перед пустой страницей и надо начать “проектировать контракт”.

Я работаю тимлидом направления системного анализа в X5Tech и за все время развития карьеры сталкивалась с большим количеством кейсов проектирования Web систем. IT продукты в большинстве очень динамичны: постоянно изменяются требования, появляются новые, итеративно улучшается пользовательский опыт (по принципу 20% усилий на 80% результата, а остальное доделаем потом).

Часто при проектировании мне помогала следующая идея: было бы здорово проектировать контракт так, чтобы при малейшем изменении/добавлении бизнес-правил его не приходилось сильно трансформировать, так как API является стыковочным звеном между разными слоями приложения. По ходу повествования я приведу пару примеров, чтобы проиллюстрировать такие изменения.

В этой статье предлагаю спроектировать контракт по шагам, и на каждом из них я расскажу про общие рекомендации из копилочки “Полезное”, а также про личные правила и практики, полученные долгим опытом работы над постоянно меняющимися ИТ-продуктами, которые помогут для “дальновидного” проектирования GET REST API.

Читать далее

API от А до Я (теория и практика)

Level of difficultyEasy
Reading time11 min
Views91K

Я работаю с совершенно разными проектами и встречаюсь с разными технологиями: графы, пространственные данные, риалтайм обработка, ML и NER сервисы и т.п., но есть классические основы, которые должен знать каждый в ИТ от аналитиков до руководителей, так называемый фундамент без которого построить хорошую карьеру специалиста сложно. Так как я долго занимал различные аналитические должности, то прошу не обижаться, так как буду часто говорить о том для чего это аналитику.

Читать далее

26 к 1: легендарная серия в Монте-Карло и рождение «ошибки игрока»

Level of difficultyEasy
Reading time5 min
Views7.5K

История "ошибки игрока" неразрывно связана со знаменитым случаем, произошедшим в казино Монте-Карло 18 августа 1913 года.

Представьте себе эту сцену: переполненное казино, напряженная атмосфера за столом рулетки. После того, как черное выпало 10 раз подряд, среди игроков начинается настоящее безумие. Все вдруг решают, что теперь-то точно должно выпасть красное, и начинают массово ставить на этот цвет. Но черная полоса продолжается - 11, 12, 13 раз подряд... С каждым новым выпадением черного ставки на красное становятся все больше и отчаяннее.

В итоге эта удивительная серия достигла 26 подряд выпадений черного. Вероятность такого события крайне мала - примерно 1 к 136,8 миллионам. Однако игроки, поддавшись "ошибке игрока", продолжали верить, что вот-вот должно выпасть красное. В результате казино смогло заработать за эту ночь несколько миллионов франков.

Читать далее

Про каршеринг и отключение машины в лесу

Level of difficultyEasy
Reading time12 min
Views42K

Окирпичился каршеринговый авто. Как уйти и не оставить машину открытой?

Про каршеринг и отключение машины в лесу

Развернутый комментарий к этой истории и её комментариям.

Читать далее

Самый престижный мобильник: взлет и падение Vertu

Level of difficultyEasy
Reading time4 min
Views9.3K

История компании Vertu, занимающейся выпуском мобильных телефонов премиум-класса, начинается в 1998 году, когда Nokia открыла свое дочернее предприятие в Великобритании.

Читать далее

Алкогольное опьянение. Как влияет на мозг, как справиться с похмельем и есть ли в алкоголе зерно пользы?

Level of difficultyEasy
Reading time6 min
Views6.5K

Люди, которые говорят, что пить надо больше, и люди, которые говорят, что пить надо меньше, правы в одном. Пить надо. А вот что именно, в каких дозах и стоит ли уходить в алкогольное опьянение — мы и попробуем разобраться.

Читать далее

Создание аналога Google Photos на собственном сервере

Level of difficultyEasy
Reading time4 min
Views41K

Создание собственного облачного хранилища с автоматическим менеджером фотографий.

Изучение опенсорс софта, нацеленного на автоматический менеджинг фотографий, сравнение софта между собой, установка на тестовый сервер, просмотр с разных устройств.

Читать далее

Пьянство в пикселях. Самые интересные и забавные механики алкоголя в играх

Level of difficultyEasy
Reading time14 min
Views11K

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

Читайте далее, как реализован алкоголь...

Как я портировал свой игровой движок с JavaScript на C

Level of difficultyMedium
Reading time13 min
Views11K

high_impact


tl;dr: high_impact — это маленький игровой движок для 2D-игр жанра «экшн». Он написан на C, компилируется для Windows, Mac и Linux, а также для WASM в вебе. Он был написан «по мотивам» моего игрового движка Impact на JavaScript, разработанный в 2010 году. Название high_impact — отсылка к тем временам, когда C считался языком высокого уровня.

Движок имеет лицензию MIT, исходники выложены на Github: github.com/phoboslab/high_impact

Видео из моего твита за 5 июля, демонстрирующее геймплей Biolab Disaster
Читать дальше →

Как мы ускорили автоустановку ОС в четыре раза

Reading time13 min
Views19K

Привет! Меня зовут Лев, я системный администратор в Selectel. Ранее рассказывал об адаптации ARM-серверов под наши процессы. Тогда мы столкнулись со множеством проблем, одной из которых была интеграция автоустановки Ubuntu 22.04. Теперь поделюсь, как мы сделали новый процесс автоустановки быстрее, завезли несколько фич, а также ускорили добавление новых ОС.
Читать дальше →

Различные вычисления, многопоточность, асинхронность и мультипроцессность в Python

Level of difficultyMedium
Reading time9 min
Views15K

Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере. 

Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессорности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.

Читать далее

История оптимизации Python сервиса: пара простых системных улучшений

Level of difficultyMedium
Reading time9 min
Views4.5K

Привет, Хабр! В двух предыдущих статьях здесь и тут мы рассказывали историю создания одного из компонентов платформы экспериментов в компании Okko — сервиса сплитования трафика. В тех статьях говорилось о множестве изменений и улучшений, которые претерпел Python-код, чтобы работать достаточно быстро. Но как бы качественно не был написан код, все усилия могут сойти на нет, если он будет запущен в неправильной среде. В этой статье продолжим рассказ об оптимизациях и улучшениях, но сейчас речь будет идти не столько об особенностях предметной области и решаемой бизнес-задачи, сколько о том, как мы архитектурно организовали работу сервиса для получения минимального времени ответа.

Читать далее

Как поделить не деля или оптимизация деления компиляторам(и)

Level of difficultyMedium
Reading time5 min
Views11K

Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмотрите следущий snippet:

Смотреть код

Процесс, который продолжал умирать

Level of difficultyMedium
Reading time6 min
Views7.3K

В этой статье я изложил суть своего выступления, которое состоялось в рамках проводимой нашей компанией образовательной программы «Lunch n' Learn».

Если вас просто интересует, как искать утечки памяти в Node, переходите сразу к Части 2 (но тогда вы упустите всю невероятную предысторию).

Это рассказ об умершем процессе и о наших злоключениях в попытке найти его убийцу с целью призвать негодяя к правосудию. Если говорить точнее, то этот процесс продолжал умирать циклически, но такая картина нарушает проводимую мной аналогию, поэтому попрошу вас не придавать этому большого значения. Наша история начинается с периодического возникновения ошибки 502 Bad Gateway — загадки, которую предстояло разрешить.
Читать дальше →

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity