Как стать автором
Обновить
14
0.1
Rive @Rive

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

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

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

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров13K

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

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

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров5K

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

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

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

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

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

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров19K
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL). Однако, многие пункты можно также применить и к другим СУБД.
Читать дальше →
Всего голосов 55: ↑51 и ↓4+47
Комментарии382

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

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров27K

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

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


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

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

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

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

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

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров13K

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

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

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

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

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

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров210K

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

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

Читать далее
Всего голосов 120: ↑117 и ↓3+114
Комментарии216

Не Unity единым…

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров36K

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

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

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

Основы Unity + Mirror

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

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

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

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

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

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров14K


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


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

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

Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии3

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

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров18K

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

Читать далее
Всего голосов 16: ↑14 и ↓2+12
Комментарии57

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

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров10K

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

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

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

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

О статье


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


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

Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии11

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

Время на прочтение5 мин
Количество просмотров153K
В этой теме хотелось бы познакомить читателей с относительно новым подходом к контролю доступа под названием Attribute-based access control. Знакомство будет происходить на примере сравнения с популярным нынче Role-based access control.
Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии47

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 31: ↑27 и ↓4+23
Комментарии27

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

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров19K

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

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

Читать далее
Всего голосов 62: ↑60 и ↓2+58
Комментарии17

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

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.7K

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

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

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

Теория:

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

Практика:

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

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

Теория

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

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

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

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

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

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

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

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

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров7.9K

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

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

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

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

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

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

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

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


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

Читать дальше →
Всего голосов 56: ↑48 и ↓8+40
Комментарии66
1
23 ...

Информация

В рейтинге
3 126-й
Зарегистрирован
Активность

Специализация

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