Обновить
343.25

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга

Как установить ThisArgument вручную?

Пришло время зафиналить тему контекста исполнения: в новом выпуске нашего открытого курса по JavaScript веб-разработчик Василий Новиков рассказывает про способы вызова функции и методы bind, call и apply.

Из одиннадцатой серии вы узнаете:

  • как автоматически установить thisArgument для функций;

  • как работают методы bind, call и apply при ручной установке;

  • как ведут себя стрелочные функции при привязке this через bind, call и apply.

Больше информации о сериях, а также полезных материалах к ним можно найти на сайте курса JS.

Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.

Теги:
Всего голосов 14: ↑13 и ↓1+14
Комментарии0

Современные пользовательские интерфейсы часто требуют значительных усилий при использовании из-за того, что представляют обширные объёмы разнородной информации. Это создает значительную нагрузку на управление вниманием и когнитивные ресурсы пользователей.

Исследования показывают, что общий показатель интеллекта (Full-Scale IQ), являющийся агрегированным измерением когнитивных способностей, коррелирует с успехом выполнения задач, более быстрым их завершением и снижением субъективного восприятия ментальной нагрузки при работе с компьютерами. Особенно важно, что объём рабочей памяти объясняет значительную часть различий в эффективности выполнения компьютерных задач, подчеркивая её ключевую роль в успешной работе с интерфейсами.

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

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

https://pdf.sciencedirectassets.com/272548/1-s2.0-S1071581924X00099/1-s2.0-S107158192400137X/main.pdf

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Доклад Особенности фреймворка $mol (+ слайды) с PiterJS #72.

О фичах $mol, которых нет в других фреймворках, и о том, зачем они нужны.

Автор - Станислав Яременко. Герой Hyper Dev, Синьор $mol-разработчик.

Писал на Vue, Svelte. Пробовал и другие фреймворки. Как-то раз я загуглил "лучший ui фреймворк", и на первом месте в выдаче оказался $mol. Конечно, я не поверил и начал разбираться...

Теги:
Всего голосов 12: ↑5 и ↓70
Комментарии14

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

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

Лишь немногие хостеры дают возможность прямого редактирования файла robots.txt, который мог бы использоваться для блокировки веб-сканеров. Также отсутствуют простые и понятные механизмы, которые могли бы помочь авторам выразить желание ограничить использование их контента ИИ.

https://arxiv.org/pdf/2411.15091

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

Раз в год-два мне приходится вспоминать, что Python — не C++.

В этот раз я наткнулся на случай, когда отформатировать и склеить колонки результата запроса на стороне PostgreSQL и распарсить Python-ом оказалось эффективнее, чем запрашивать колонки как отдельные значения.

Конкретнее, при переходе от этого запроса:

SELECT * FROM o_relations ORDER BY id DESC LIMIT %(limit)s

к этому:

SELECT CONCAT(entry_id::text, '|', tag_id::text) AS ids FROM o_relations ORDER BY id DESC LIMIT %(limit)s

скорость извлечения данных увеличилась примерно в 4 раза.

Причиной тому тяжёлая конвертация данных из формата С в формат Python внутри Psycopg.

За подробностями можно сходить ко мне в блог: https://tiendil.org/ru/posts/fun-case-of-speeding-up-data-retrieval-with-psycopg

Теги:
Всего голосов 14: ↑4 и ↓10-6
Комментарии4

Extended-use designs (EUD) - что-то похожее на dark patterns в вебе - оказались весьма распространены среди популярных онлайн платформ, таких как Booking или AliExpress. Эти практики можно сгруппировать в четыре категории, отражающие лежащие в их основе стратегии:

  • давление (pressuring)

  • соблазнение (enticing)

  • ловушка (trapping)

  • усыпление бдительности пользователей для вовлечения (lulling users into engaging)

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

https://arxiv.org/pdf/2411.12083

Теги:
Рейтинг0
Комментарии0

Результаты исследования показывают, что GDPR негативно повлиял на количество пользователей, причем этот эффект усиливается со временем. В краткосрочной перспективе (через 3 месяца после введения GDPR) еженедельные посещения на сайте снизились на 4,88%, а в долгосрочной (через 18 месяцев) уменьшение достигло 10,02%. Эти данные подчеркивают важность отслеживания последствий GDPR на протяжении длительного периода для полного понимания его влияния.

GDPR создал две основные проблемы для веб-сайтов: им становится сложно либо привлекать пользователей, либо удерживать их внимание. Анализ показывает, как оценить экономический ущерб для сайтов, выявляя средние потери в доходах примерно в $7 миллионов для сайтов электронной коммерции и $2,5 миллиона для сайтов, основанных на рекламе, за 18 месяцев после введения GDPR.

https://arxiv.org/pdf/2411.11589

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Как инициализировать контекст исполнения?

Об этом веб-разработчик Василий Новиков рассказывает в новой серии нашего открытого курса по JavaScript. Из десятой серии вы узнаете про:

  • три вида записей окружения: LexicalEnvironment, VariableEnvironment и PrivateEnvironment;

  • шаги каждого из четырех алгоритмов контекста исполнения;

  • инициализацию глобального контекста исполнения.

Больше информации о сериях, а также полезных материалах к ним можно найти на сайте курса JS.

Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.

Теги:
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Как защититься от самых популярных кибератак: советы экспертов из крупных компаний

Масштабы киберугроз в России растут: только за 9 месяцев 2024 года зафиксировано более 100 утечек данных. Атаки злоумышленников становятся всё более изощренными. Но есть конкретные шаги, которые помогут уберечь ценные данные и выстроить верную защиту ваших систем.

В новой статье на New Retail
эксперты из OZON, F.A.C.С.T, Flowwow и AGIMA рассказали о самых типичных схемах мошенников и методах борьбы с ними. Вот главные тезисы:

📌Атакуют всех: злоумышленники используют старые утечки данных, анализируют оборот компаний и шифруют ценные данные для выкупа. Группировка Conti, к примеру, требует до 4% оборота за расшифровку.

📌 Security by Design. Это принцип разработки, при котором безопасность системы закладывается еще на этапе планирования архитектуры. Он помогает исключить уязвимости и защитить продукт еще до запуска.

📌 Фишинг — одна из главных угроз. Имитация фишинговых атак и проведение тестов на проникновение (пентестов) помогут подготовить команду к реальным угрозам. Строго проверяйте отправителей во входящих письмах и заведите правило не переходить по подозрительным ссылкам.

📌 Автоматизация мониторинга. ИИ-решения и системы автоматической обработки угроз помогут быстро выявлять аномалии и реагировать на них за считаные минуты вместо часов.

Эти и другие советы из статьи помогут защитить корпоративную инфраструктуру и данные, минимизировать риски утечек и сохранить репутацию вашей компании.

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии0

Всё чаще слышно про подключение ИИ к процессу код-ревью. Звучит круто, но есть нюансы.

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

Кроме того, AI смотрит только на код в текущем PR, не понимая ни архитектуры проекта, ни бизнес-требований. В итоге выдает технически правильные, но часто бесполезные рекомендации. Особенно это заметно в крупных проектах, где каждое изменение влияет на кучу связанных компонентов. Где есть "исторически сложившееся"

Код-ревью — это не только поиск багов. Это обмен опытом и обсуждение подходов. AI не может понять, подходит ли решение для конкретной команды, насколько оно масштабируемо и как впишется в существующую кодовую базу.

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

Поэтому AI в код-ревью лучше использовать как доп помощника - базовые проверки и очевидные ошибки. А разработчики-люди всё еще нужны для работы с пониманием контекста.

Приглашаю всех подписаться на мой канал https://t.me/crossjoin

Теги:
Всего голосов 7: ↑3 и ↓4+1
Комментарии1

После внедрения GDPR количество трекеров на сайтах издателей как из ЕС, так и за его пределами возросло, однако для издателей из ЕС рост оказался значительно меньше. Таким образом, GDPR достигла своей цели, сократив количество трекеров на 14,79% по сравнению с ожиданиями без регулирования.

Тем не менее, даже после введения GDPR на сайтах издателей остаётся множество трекеров, и инфраструктура для сбора, хранения и обмена данными остаётся практически неизменной. Примечательно, что GDPR не привела к значительному сокращению числа рекламных трекеров и лишь незначительно уменьшила количество аналитических трекеров.

Теги:
Рейтинг0
Комментарии0

Оркестрация с помощью Temporal: как это устроено и как применять на практике — Антон Цитульский / Ural Digital Weekend 2024

Опубликовали запись доклада секции «Разработка» с Ural Digital Weekend 2024.

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

Антон подробно рассказал о работе Temporal, начиная с архитектуры кластера и заканчивая внедрением конкретных бизнес-процессов. Особое внимание уделил детерминизму, версионированию в Temporal, а также использованию gRPC для взаимодействия. И показал, как механизм Event History в Temporal способствует достижению отказоустойчивости, позволяя контролировать каждый аспект процесса и предотвращать потерю заказов.

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

Ссылка на запись доклада в ВКонтакте.

Ссылка на презентацию: https://goo.su/tQchSie

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Ближайшие события

Совет по Joomla: используем Promise в Ajax-запросах

В статье Ajax-запросы нативными средствами Joomla было подробно разобрано, как с помощью Joomla.request можно легко создавать Ajax-запросы в Joomla.

В одном из комментариев был вопрос по поводу Promise, а умеет ли Joomla? Умеет, но начиная с Joomla 4. Достаточно при создании запроса выставить флаг promise в true и результатом выполнения запроса будет Promise:

Joomla.request({
    url: Joomla.getOptions('system.paths', '').root+'/index.php?option=com_ajax&format=json&module=example',
    method: 'POST',
    promise: true
})
.then(response => {
    let text = JSON.parse(response.text);
    return text.data;
})
.catch(error => {
    console.log(error);
});

Таким образом мы можем эффективно строить асинхронные цепочки, добавив всего один флаг к вызову Joomla.request.

Теги:
Всего голосов 8: ↑8 и ↓0+11
Комментарии0

Трассировка микросервисов или когда метрик и логов недостаточно — Руслан Гайнанов / Ural Digital Weekend 2024

Опубликовали запись доклада секции «Разработка» с Ural Digital Weekend 2024.

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

Спикер рассказал, что необходимо для запуска систем трассировок на базе open-source решений, показал на простых примерах как настроить сбор трейсов с микросервисов на Python (fastapi, SQLAlchemy, httpx), как потом работать с трейсами и какую полезную информацию можно извлечь.

Ссылка на запись доклада в ВКонтакте.

Ссылка на презентацию: https://goo.su/MHEIxt

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Frontend Fortified: как стать неприступным для атак — Зар Захаров / Ural Digital Weekend 2024

Опубликовали запись доклада секции «Разработка» с Ural Digital Weekend 2024.

Стратегии и практики безопасности для Frontend-разработчиков. В докладе Зар рассмотрел основные угрозы в мире frontend, обсудил ключевые аспекты безопасности при разработке web-приложений, включая защиту от XSS, CSRF и других угроз. А также способы их предотвращения.

Ссылка на запись доклада в ВКонтакте.

Ссылка на презентацию: https://goo.su/GZeAy

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

50 оттенков кеширования: от in memory к многоуровневому redis-кластеру — Леонид Ченский / Ural Digital Weekend 2024

Опубликовали запись доклада секции «Разработка» с Ural Digital Weekend 2024.

При разработке команда логистики часто сталкивалась с высокими нагрузками в несколько сотен тысяч rps и очень жесткими SLO времени ответа. При этом с каждым годом менялись функциональные и нефункциональные требования. В выступлении спикер рассказал, как в команде боролись с такими нагрузками, а также о том, с какими трудностями пришлось столкнуться, и какие ошибки допустили.

Сначала Леонид кратко поговорил о проблеме быстрой отдаче сроков доставки. А далее о том, как c каждым годом они адаптировали архитектуру и какие решения для этого использовали.

Итерация 1: in memory cache.

Итерация 2: удаленный шардированный кэш-кластер (redis vs memmcached).

Итерация 3: N-уровневый кэш.

Итерация 4: шардированно-реплицированный multi-DC кэш-кластер Redis.

В конце выступления спикер подвел итог и поговорил об альтернативах KV.

Ссылка на запись доклада в ВКонтакте.

Ссылка на презентацию: https://goo.su/2ik4N

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Контекст исполнения: что это и какие виды бывают?

В девятом выпуске нашего открытого курса по JavaScript вместе с веб-разработчиком Василием Новиковым подробно разбираем Execution Context — контекст исполнения.

Из нового выпуска вы узнаете:

  • как объяснить Execution Context простым языком;

  • какие бывают виды контекста исполнения;

  • каким образом реализуется концепция Environment Record.

Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.

Теги:
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

AGIMA — российский интегратор цифровых решений, один из лидеров в сфере веб- и мобильной разработки по версии Tagline и RUWARD. Среди клиентов — АльфаСтрахование, Мегафон, Росбанк, World Class, Магнит и др.

Компания искала новое облако с выделенным инфраструктурным кластером, широкими каналами связи и большими ресурсами для моментального масштабирования.

За 2 месяца AGIMA развернула у нас 100 виртуальных машин с управлением через Proxmox Cluster, внутри которых размещаются DWH, Jira Dev, Keycloak, Sentry, GitLab Runner и другие внутренние сервисы.

О том, как это удалось, читайте в кейсе → 

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

От чего на самом деле зависит скорость загрузки сайта

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

Между тем неосторожно отмечу, что самое узкое место при загрузке сайта — скорость интернет соединения. Это логично до безобразия, не так ли? Загружались бы со скоростью в гигабайт в секунду — не было бы смысла корячиться с методами загрузки, работой с кэшем и подстраивать под это архитектуру.

Можно годами спорить о том, какой метод позволит быстрее загружать в каждом отдельно взятом случае, да оно и верно — не сидеть же сложа руки! Да и кривые оные поломают любое решение. Но на самом деле самую крупную работу в этом плане делаем вовсе не мы, рядовые, а те, кто может, например, поднять среднюю скорость интернет соединения раз в 5–10 по стране. Это не чудо, а новые технологии и оптимизации на глубоком уровне (вспомните, как развивался HTTP и WiFi).

Оптимизация — дело правое, но на нашем уровне — весьма незначительное.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

Вклад авторов