Pull to refresh
52
0
Андрей Кравчук @prefrontalCortex

Software Engineer

Send message

Собираем генератор данных на Blender. Часть 1: Объекты

Reading time5 min
Views6.6K

Привет, Хабр! Меня зовут Глеб. Я работаю в компании Friflex над проектами по оцифровке спорта. Работая над idChess (приложением для распознавания и аналитики шахматных партий), мы расширяем наш датасет синтетическими данными. В качестве движка используем Blender. В этой статье рассмотрим основы взаимодействия с объектами, получение доступа через API, перемещение, масштабирование и вращение.

Читать далее

Неожиданная находка, которая освобождает 20 GB неиспользованного индексного пространства

Reading time14 min
Views37K

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

Начнем с конца: в итоге нам удалось освободить более чем 70 GB не оптимизированного и неиспользуемого пространства без удаления индексов и данных. 

Читать далее

Возрождение простых сайтов. Статика, 0kB JS, ничего лишнего

Reading time8 min
Views42K

Как мы обсуждали в прошлый раз, удручающее ожирение сайтов и софта вернуло моду на простые, маленькие проекты. И сейчас происходит своеобразный ренессанс веба 90-х, вплоть до стиля Geocities (такой был бесплатный хостинг) и веб-страниц в виде PDF. Таковы примеры самореализации. У каждого человека — уникальный сайт, который отличается от остальных и отражает его личность.

Статический сайт можно выполнить в одном файле HTML, а динамический — в одном бинарнике (под катом). Тенденция видна везде. Современные фреймворки даже хвалятся «0кБ JavaScript» по дефолту, а браузеры внедрили технические усовершенствования, которые во многом аннулируют преимущества использования SPA.
Читать дальше →

Цифровой кочевник, или тернистый путь релокации

Reading time11 min
Views10K

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

Автор за последние двадцать лет работал и/или учился на стыке финансов и IT в семи странах: России, Германии, Канаде, США, Гонконге, Китае и Австралии. В каждой из них автор старался быть не просто «вахтовиком», а понять ту тонкую материю, что движет людьми, как в профессии, так и в повседневной жизни. Возможно, этот опыт поможет тем, кто сейчас стоит перед непростым выбором.

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

Начнем с главного. Современному поколению айтишников эмигрировать на порядок проще, чем это было раньше – у них с первого дня есть востребованная и актуальная профессия. Это важно. Если ранее эмиграция почти всегда означала потерю одного поколения – эмигрировали ради детей – то теперь уже первое поколение имеет все шансы вписаться в новую жизнь практически без «раскачки» и потери социального статуса. Уже нет необходимости жертвовать собой и своей карьерой. И это колоссальная разница между эмиграцией сейчас и, скажем, эмиграцией нулевых. Разумеется, это касается в основном айтишников, и в первую очередь – разработчиков, где начальные требования к знанию языка не слишком высоки. Тем не менее, нужно понимать, что в долгосрочном плане полноценная интеграция в общество и социальный статус все равно зависят от свободного владения языком. И это касается всех стран без исключения.

Читать далее

Я два года выпускаю крошечные проекты

Reading time6 min
Views42K

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

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

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

В этом посте мне хочется рассказать о запущенных проектах и поделиться тем, чему научился в процессе создания этих крошечных Интернет-проектов.
Читать дальше →

Ехать или не ехать? Check list

Reading time5 min
Views60K

Эта статья не даст вам советов, ехать или не ехать. Принять решение вы должны сами, однако, я попытаюсь систематизировать аргументы ЗА и ПРОТИВ так как сам жил и работал за границей по 3 года дважды - в Америке и Франции.

Читать далее

Профилируем sort во FreeBSD

Reading time5 min
Views1.7K

Программа сортировки FreeBSD (sort) считывает строки из ввода или файла и возвращает те же строки в отсортированном порядке. У NetBSD есть аналогичная программа, есть такая же и у GNU. Недавно мы получили багрепорт, в котором говорилось, что сортировка FreeBSD намного медленнее, чем сортировка NetBSD или GNU.

Читать далее

Введение в OpenSSL: основы криптографиии

Reading time14 min
Views44K

Эта статья является первой в серии из двух статей, посвященных основам криптографии, используемой в OpenSSL — библиотеке инструментов промышленного уровня, популярной и в среде Linux, и за ее пределами. (Чтобы установить самую последнюю версию OpenSSL, перейдите сюда.) Что касается взаимодействия с библиотекой, то вы можете вызывать ее функции из кода, а также в вашем распоряжении есть утилиты командной строки. Примеры кода для этой статьи приведены на C — на том же языке, на котором написана сама библиотека OpenSSL.

Читать далее

Музыка для игр: где брать треки инди-разработчикам

Reading time3 min
Views16K

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

Сегодня мы расскажем о трех ресурсах, где можно найти royalty free треки для своих игровых экспериментов — IndieGameMusic, Unminus Music и cchound.

Читать далее

Киргизия: интернет без цензуры, величественные горы и парадокс водителей

Reading time19 min
Views74K

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

Я не был исключением. Мой выбор пал на горную Киргизию. За последние два месяца я увидел очень мало отзывов и рассказов от айтишников, которые уехали в Бишкек, поэтому я решил написать свой. Если вам интересно, как живется в Бишкеке, как тут обстоят дела с интернетом и работой и как киргизы относятся к русским, то добро пожаловать под кат!

Читать далее

Куда уходит время? Боремся за миллисекунды в Kubernetes

Reading time7 min
Views22K

Привет, Хабр! Меня зовут Вова, я разрабатываю observability-платформу в Ozon. Как-то раз в наш уголок на 42 этаже заглянули коллеги — и поделились наблюдением. Если открыть рядом графики времён запросов и ответов двух живущих в Kubernetes и общающихся между собой микросервисов, то иногда можно наблюдать большую разницу в высоких квантилях: клиент считает, что один ответ из сотни ему приходит за сто миллисекунд, сервер же говорит, что успевает ответить за десять.

Куда ушло время? Можно ли его вернуть? Под катом расскажу о том, с какими граблями может столкнуться микросервис, живущий в типичной инсталляции Kubernetes.

Читать далее

fork() — зло; vfork() — добро; afork() — лучше; clone () — глупо

Reading time12 min
Views6.6K

Недавно я наткнулся на реализацию popen() (та же идея, другой API) с использованием clone(2), где я открыл issue с запросом использования vfork(2) или posix_spawn() в целях лучшей переносимости на другие платформы. Оказывается, для Linux есть одно очень важное преимущество в использовании clone(2). И вот я думаю, что мне следует раскрыть тему, которую я там затронул, где-нибудь еще: в гисте, в блоге, да где угодно.

Итак, начнем.

Давным-давно я, как и многие фанаты Unix, думал, что fork(2) и модель порождения процессов fork-exec были лучшим решением в мире, а Windows нервно курил в сторонке, имея только exec*() и _spawn*(), последний из которых был чистым виндоусизмом.

После многих лет практики я пришел к выводу, что fork(2) на самом деле является злом. А vfork(2), долгое время считавшийся злом, на самом деле является добром. Изящная вариация vfork(2), которая избегает необходимости блокировать родителя, была бы даже лучше (об этом чуть позже).

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

Я не буду утруждать себя объяснением, что такое fork(2) - если вы это читаете, я полагаю, вы уже знаете. Но я расскажу про vfork(2) и почему он считается опасным. vfork(2) очень похож на fork(2), но новый процесс, который он создает, запускается в том же адресном пространстве, что и родительский, как если бы он был потоком. Он даже разделяет тот же стек с потоком, который вызвал vfork(2)! Два потока не могут совместно использовать стек, поэтому родительский процесс останавливается до момента, когда дочерний выполнит свою задачу: либо exec*(2), либо _exit(2).

Читать далее

Полный перевод Unix-коанов на русский язык

Reading time16 min
Views76K


Представляю на ваш суд ещё один перевод коанов о Мастере Фу на русский язык. В данный сборник вошли все коаны, на данный момент опубликованные на сайте Эрика Реймонда. Надо сказать, что сам Эрик личность весьма неординарная, но упоминания в данной статье стоящая. Помимо холиваров в списках рассылки всевозможных проектов за его авторством также несколько серьёзных трудов о Unix — в том числе и о сообществе, без которого экосистема современных открытых проектов не была бы возможной (полный список книг). Идея перевести коаны в очередной раз пришла мне в голову во время чтения одного из таких трудов, а именно «The Art of Unix Programming», поскольку многое из скрытого смысла коанов становится ясно только после прочтения очередной главы оттуда.

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

Итак

Лямбда-исчисление в 397 байтах

Reading time22 min
Views16K

Лямбда-исчисление — это язык программирования с единственным ключевым словом. Это асфальтовая топь Тьюринга, обнаруженная научным руководителем Тьюринга. В этом посте я расскажу о совершенно новой 397-байтной реализации двоичного лямбда-исчисления в виде Linux ELF для x86-64. Также в нём представлены удобно портируемый код на C и собранные двоичные файлы APE для других платформ.
Читать дальше →

Возвращаем RSS к жизни

Reading time6 min
Views36K

RSS-агрегатор NetNewsWire

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

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

6 наблюдений о хорошем сюжете для видеоигр

Reading time5 min
Views18K

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

Своими наблюдениями об игровых сюжетах поделился сценарист инди-игр, а мы перевели.

Дисклеймер: под катом идет мнение автора оригинальной статьи. Местами очень спорное, местами любопытное. Делитесь своим в комментариях.

Читать далее

Как айтишнику получить визу зарубеж на основании удаленной работы в 2022 году

Reading time11 min
Views37K

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

Читать дальше →

В простых системах меньше даунтайм

Reading time5 min
Views7.2K

Четырёхсотметровый контейнеровоз Maersk класса Triple-E перевозит 18 тысяч контейнеров на 11 тысяч морских миль между Европой и Азией, а вся его команда легко поместится в московской маршрутке

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

В простых системах меньше даунтайм.

На кораблях максимально простые системы. До боли понятные интерфейсы. Всё многократно дублируется. Если систему легко понять и ей легко управлять, то будет легко и чинить, что уменьшает время простоев. Это очень важное качество для корабля, где «даунтайм» может означать аварию за тысячу километров от ближайшей помощи.
Читать дальше →

Простые сайты снова в моде. Минимализм возвращается

Reading time8 min
Views47K


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

Такая ситуация напрягает и самих веб-разработчиков. Приходится тратить кучу времени на оптимизацию, тестирование новомодных фич в разных браузерах, осваивать сложные CMS. Зачем? На самом деле HTML и CSS — исключительно мощные инструменты, если ими умело пользоваться.
Читать дальше →

Information

Rating
10,132-nd
Location
Подгорица, Подгорица, Черногория
Works in
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer
Senior
From 5,000 €
Lisp
Clojure
Unix
Linux
Docker