Pull to refresh
14
0.1
Rive @Rive

Пользователь

Send message

Четыре способа оптимизации ПО

Level of difficultyMedium
Reading time13 min
Views13K

Преждевременная оптимизация может оказаться корнем всех зол, а запоздалая — корнем безысходности. Каким бы быстрым ни становилось аппаратное обеспечение, мы находим способы писать медленные программы. И зачастую проявляется это не сразу. Пользователи могут годами не обращать внимания на проблему в производительности ПО, пока она не становится очевидной, что порой происходит в течение одного дня.
Читать дальше →
Total votes 67: ↑62 and ↓5+57
Comments12

Всё /var/lib/docker пожрал … docker

Level of difficultyEasy
Reading time2 min
Views4.8K

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

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

Как мне кажется, получилось довольно смешно. Всё написанное в статье выдумка, любые совпадения с реальным миром случайны, если вы вводите в консоль sudo или его аналог - вы делаете это на свой страх и риск. Слова, замененные на другие для соблюдения правил Хабра, выделил курсивом, но думаю всё поймут, что было в оригинале написано.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments9

Рекомендации по ведению SQL-кода

Level of difficultyEasy
Reading time8 min
Views19K
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL). Однако, многие пункты можно также применить и к другим СУБД.
Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments382

Вам не нужен для этого JavaScript

Level of difficultyMedium
Reading time11 min
Views27K

Прошу вас не возмущаться названием статьи. Я не ненавижу JavaScript, я люблю его. Ежедневно я пишу на нём кучу кода. Но ещё я люблю CSS и даже люблю JSX HTML. Я люблю все эти три технологии по причине, которая называется…

▍ Правило наименьших полномочий


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

В случае веба это означает, что нужно по возможности выбирать HTML вместо CSS, а затем CSS вместо JS. JS — самый универсальный язык из всех трёх, потому что на нём вы описываете, как должен вести себя браузер; но также он может ломаться, отказываться загружаться, требует дополнительных ресурсов для скачивания, парсинга и исполнения. Кроме того, при его использовании очень легко ограничить доступ пользователей, выполняющих браузинг при помощи клавиатуры или специальных возможностей.

В отличие от JS с его императивностью, HTML и CSS декларативны. Вы говорите браузеру, что делать, а не как это делать. Это значит, что браузер сам выбирает, как это делать, и может сделать это наиболее эффективным образом.

Так как функции HTML и CSS обрабатываются браузером, они могут быть более производительными, более нативными, более адаптируемыми к предпочтениям пользователя и в общем случае иметь бОльшую accessibility. Это не значит, что так будет всегда (особенно когда дело касается accessibility), но когда все сложные задачи берёт на себя браузер, от этого обычно выигрывают конечные пользователи.
Читать дальше →
Total votes 97: ↑95 and ↓2+93
Comments38

Исчерпывающее руководство по одномерным массивам в Java

Level of difficultyEasy
Reading time20 min
Views13K

Для хранения данных, используемых при работе программы, применяются переменные того или иного типа. Например, если требуется сохранить имя игрока, то создается переменная String name, если целочисленное значение, то int number и т. д. Когда таких значений немного или их количество заранее известно, то для них приемлемо использовать отдельные переменные.

Но что делать, когда в программе задействовано не одно, а 10 чисел, или их количество становится известно только на этапе запуска приложения, когда пользователь вводит его с клавиатуры? Или в какой-то игре может участвовать разное количество игроков, устанавливаемое при ее старте. В таких ситуациях отдельными переменными уже не обойтись, т. к. их точное количество будет невозможно определить. Да и, если все же попытаться это сделать, код станет громоздким и не универсальным, а работа с ним будет крайне ограниченной из-за невозможности использования цикла для автоматизированной обработки данных.

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

Читать далее
Total votes 8: ↑7 and ↓1+6
Comments8

Fooocus v2 — бесплатный Midjourney у вас на компьютере. Подробная инструкция по установке и использованию нейросети

Level of difficultyEasy
Reading time10 min
Views207K

Друзья, всем привет! Сегодня я хочу рассказать вам про самую простую и доступную для понимания нейросеть, которая создает изображения по вашему текстовому описанию. Она называется Fooocus и основана на знаменитой Stable Diffusion XL. Это идеальное решение в качестве вашей первой нейросети, и необходимый инструмент для любого дизайнера или контент мейкера.

Внутри много тяжелых изображений.

Читать далее
Total votes 120: ↑117 and ↓3+114
Comments216

Не Unity единым…

Level of difficultyEasy
Reading time15 min
Views36K

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

Существует более сотни игровых движков, каждый из них содержит как минимум одну фичу которой нет ни в каком другом. Всех возможностей вместе нет ни в одном, и это прекрасно - иначе бы такой движок монополизировал рынок. Хм, Unreal5 ты ли это? Иногда полезно пробежать по release notes движка, чтобы оставаться в курсе последних новостей. Возможно вы разрабатываете свое решение и эта статья натолкнет вас на новые идеи. Готовы узнать что ваша любимая игры была сделана не на Unity, а на православном SDL?

Читать далее
Total votes 95: ↑95 and ↓0+95
Comments89

Основы Unity + Mirror

Reading time16 min
Views46K

UPD. Актуализировал на момент 26.11.2022.

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

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments2

Ликбез по распространенным Client-Side уязвимостям

Level of difficultyMedium
Reading time15 min
Views14K


В этой статье мы покажем:


  • как в разных ситуациях манипулировать веб-сайтом таким образом, чтобы он передавал пользователям вредоносный JavaScript.
  • как скомпрометировать администратора сайта, отправив ему личное сообщение;
  • как атаковать разом всех пользователей при помощи комментария под статьей;
  • как заставить пользователя отправить запрос на действия, которые он не собирается выполнять;
  • как прослушивать WebSocket-соединения;
  • и коротко объясним, как предотвратить все эти безобразия.

В общем, под катом вас ждет рассказ про распространенные уязвимости на стороне клиента и некоторые методы Client-Side защиты.

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments3

Отправка и обработка HTTP запросов в PostgreSQL

Level of difficultyMedium
Reading time7 min
Views17K

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

Читать далее
Total votes 16: ↑14 and ↓2+12
Comments57

Внутреннее представление и оптимизации строк в JavaScript-движке V8: «отмываем» строки, «обгоняем» C++

Level of difficultyMedium
Reading time8 min
Views10K

С самого рождения JavaScript в каком-то смысле был языком для манипулирования текстом — от веб-страничек в самом начале до полноценных компиляторов сейчас. Неудивительно, что в современных JS-движках достаточно много сил уделено оптимизации внутреннего представления строк и операций над ними.

В этой статье я хочу рассмотреть, как могут быть представлены строки в движке V8. Попытаюсь продемонстрировать их эффект, обогнав C++ в очень честном бенчмарке. А также покажу, в каких случаях они могут, наоборот, привести к проблемам с производительностью, и что в таких случаях можно сделать.
Читать дальше →
Total votes 84: ↑83 and ↓1+82
Comments15

Mockito и как его готовить

Reading time21 min
Views298K

О статье


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


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

Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments11

Подходы к контролю доступа: RBAC vs. ABAC

Reading time5 min
Views153K
В этой теме хотелось бы познакомить читателей с относительно новым подходом к контролю доступа под названием Attribute-based access control. Знакомство будет происходить на примере сравнения с популярным нынче Role-based access control.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments47

YOLOv7 pose vs MediaPipe при оценке позы человека

Reading time10 min
Views3.8K

Поза YOLOv7 была представлена в репозитории YOLOv7 через несколько дней после первоначального выпуска в июле ‘22. Это одноступенчатая модель оценки позы для нескольких человек. Поза YOLOv7 уникальна, поскольку она отличается от обычных двухэтапных алгоритмов оценки позы. Благодаря снижению сложности одноступенчатых моделей мы можем ожидать, что они будут быстрее и эффективнее.

Поехали
Total votes 5: ↑5 and ↓0+5
Comments2

Каким должен быть Feature Store, чтобы оптимизировать работу с ML-моделями

Reading time6 min
Views4.8K

В работе с данными для обучения нейросетей много рутины: под каждую ML-модель нужно создать датасет, потом «вычеркнуть» лишние признаки (фичи) и протестировать точность предсказаний. Иногда при изменении датасета нужно собирать данные по новой. Это неудобно, если нужно переиспользовать уже собранные фичи для обучения новых моделей. Чтобы оптимизировать работу с данными, ML-инженеры объединили разные практики и сформировали парадигму Feature Store.

По мотивам выступления Артёма Глазкова (@Allront), ведущего эксперта MLOps в Polymatica, рассказываем о том, что нужно бизнесу от Feature Store сегодня, и разбираем архитектуру «эталонного» решения. Подробности под катом.
Читать дальше →
Total votes 45: ↑45 and ↓0+45
Comments2

Оптимизация Dockerfile для уменьшения размера и быстрой сборки образов

Reading time6 min
Views14K

У каждого образа Docker есть свой размер, который он занимает на жёстком диске. Порой бывает так, что контейнер с запущенным приложением на языке программирования Go, который содержит в себе всего лишь одну строчку с выводом фразы «Hello, world!» может занимать сотни Мб, в то время как существуют образы содержащие легковесные ОС весом всего лишь 5 Мб (alpine).

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

Читать далее
Total votes 31: ↑27 and ↓4+23
Comments27

Долгоиграющие приложения на PHP

Level of difficultyMedium
Reading time15 min
Views19K

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

Меня зовут Александр Пряхин, я TechUnit Lead в Авито. В IT работаю уже 14 лет. Из них 8 лет руковожу командами. Параллельно с этим преподаю и менторю. Сегодня разберём, как готовить демонов на PHP — от А до Я, и почему это актуально.

Читать далее
Total votes 62: ↑60 and ↓2+58
Comments17

3D анимация Флекса или простого танца через циклы в Maya

Level of difficultyEasy
Reading time6 min
Views3.7K

* Крокодил на главной картинке (КДПВ) красиво танцевал, но модераторы убрали гифку 5,79 МБ весом

Привет! Не так давно мне пришлось сделать более 20 анимаций цикличных танцев для разных существ в Аллоды Онлайн, в основном животных, но пайплайн к которому я пришел может пригодиться во многих цикличных анимациях.

Статья разделена на 2 части:

Теория:

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

Практика:

В практике гифки, скрины, кнопки и процесс создания анимации

Так что кто не любит читать и хочет сразу за станок, можете пропускать теорию)

Теория

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

 Условия и ограничения приводят к интересным пайплайнам.

Требовалось делать минимум 1 анимацию в день, вне зависимости от сложности рига.

Танец может быть простым, вплоть до одного цикла

Танец должен быть ритмичным и, естественно, восприниматься как танец, или хотя бы флекс).

Все это заставляет думать, какие танцы я буду делать, если у меня не так много времени?

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments3

ML-подходы по поиску похожих изображений

Level of difficultyMedium
Reading time16 min
Views7.8K

Привет, Хабр!

Меня зовут Паймеров Владимир, я Data Scientist и участник профессионального сообщества NTA.

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

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments24

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

Reading time5 min
Views16K

Неожиданно ценные люди для нашего будущего

Не читать, если кушаете! Я предупредил.


Оказывается, разнообразие бактерий в нашем кишечнике стремительно сокращаются. Люди всё чаще питаются плюс-минус одним и тем же. Многие уникальные биомы мы уже потеряли. Чтобы сохранить разнообразные бактерии человечества, ученые запустили большой проект, в ходе которого они собирают, замораживают и хранят экскременты со всего мира. Создается целый подземный банк таких «богатств», который хотят оставить для будущих поколений. Как хранилище семян в Шпицбергене, только… скажем так, не настолько романтично.

Читать дальше →
Total votes 56: ↑48 and ↓8+40
Comments66
1
23 ...

Information

Rating
2,374-th
Registered
Activity

Specialization

Game Developer, Web Developer
Middle
Express
Vue.js
Symfony
Nginx
Docker
MySQL
PostgreSQL
Redis