Поводом для написания данной статьи послужил диалог в одном телеграмном чате. Кто-то выложил программу для "уникализации" файлов путем изменения хэша MD5, а другой бдительный участник чата проверил ее на Virustotal и из-за двух положительных (и 68 отрицательных) результатов обвинил программу в наличии недекларированных функций, в том числе даже в краже паролей от различных аккаунтов, а всех установивших ее - в "излишках" ума. Увещевания его и рассказ о возможных ложноположительных срабатываниях не дали желаемого результата, беседа перестала быть конструктивной и затухла.
Новости
Как модель оплаты может влиять на эффективность рекламной кампании для клиента и агентства. Gaming-кейс Adsbalance
Как можно перевыполнить KPI и, тем не менее, уйти в минус, а затем поменять схему работы и выйти в плюс для обеих сторон? Рассказываем на примере сотрудничества агентства Adsbalance с разработчиком игр Goat Games.
Неклассические контейнеры в C++
Контейнер - это объект, используемый для хранения других объектов. Контейнер берет на себя управление всей памятью, которые эти объекты занимают.
В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL и их отличия от классических контейнеров.
Кластер Postgres для 1С. Повествование об интеллектуальных скитаниях инженера со счастливым концом
Как и у многих, в нашей компании возник вопрос импортозамещения. В целом вопрос понятный, много раз обсужденный со всех точек зрения. И вот настал счастливый момент, когда слова трансформировались в конкретные задачи с конкретными сроками. И одна из них была о замене СУБД для 1С.
Ну и конечно же, первым делом был поднят вопрос о кластеризации этой истории. Никто подвоха особого не ожидал, ибо у нас есть уже зарекомендовавшее себя решение в виде связки pg_auto_failover версии 1.6 от Citus (далее PGAF для краткости) и keepalived. Это решение нас целиком и полностью устраивает, поэтому выбор наш был очевиден.
Но когда мы начали настраивать выяснился очень неприятный момент - обычная сборка PGAF просто не работает с версией СУБД от PostgresPro - все ломается из-за жестко прописанных зависимостей. Тут то и началось "веселье".
Был вариант игнорировать зависимости, но в таком случае мы получаем проблемы при обновлении. В итоге нашли альтернативу - собрать из исходников самим, настраивая пути и зависимости самостоятельно, о чем и расскажу. В моем повествовании нет какой-то особой магии, но пару дней сберечь точно поможет.
10 советов от Unity по геймдизайну для начинающего разработчика игр
Если бы меня попросили уместить все советы от Unity из перевода ниже в 30 секунд, то я бы сказала что-то вроде:
Заботьтесь о своих игроках, думайте о том, как создавать для них максимум фана, но при этом поддерживать интерес и сохранять баланс игры. Сделайте игру максимально понятной и интуитивной для игроков, пусть управление будет комфортным. Если вы хотите, чтобы в вашу игру играли, вам придется заниматься ее продвижением и менеджерить разработку (даже всё делает один человек и это вы сами). Под катом ссылки на полезные материалы и видео-туториалы с подсказками как именно этого добиться.
Кстати, Unity недавно выложили бесплатный гайд на 200 страниц по 2D артам, анимации и освещению для гейм художников.
Еще я веду канал в Telegram GameDEVils и блог на Substack , делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).
Сколько зарабатывают выпускники МГТУ им.Н.Э. Баумана. Опрос конца 2021 года
Во второй половине 2021 года был проведён опрос среди выпускников МГТУ имени Н.Э.Баумана. Так как сбор ответов растянулся по времени, опрошенных в начале 2022 года просил указать данные на декабрь 2021 года. Было разослано около 6000 сообщений через соцсеть VK (которая ограничивает количество сообщений людям, находящимся не в друзьях, двадцатью в 12 часов). После очистки от откровенно шуточных ответов осталось 2373 анкеты, которые использовались в дальнейшем анализе.
PHP Дайджест № 222/3 (26 марта – 25 апреля 2022)
Дисклеймер: Нет, это не дайджест авторства Романа Пронского. К сожалению, у меня нет достоверной информации - будет ли выходить его дайджест далее.
Однако я взял на себя смелость временно продолжить дело Романа и написать новый дайджест за тот месяц, что прошел с выхода последнего.
Если Роман сможет и захочет далее продолжать свой дайджест - он сам решит, как использовать мой текст: взять в свой проект, как его часть или нет. На всякий случай я ставлю нумерацию дайджеста через дробь. Однако не претендуя при этом на продолжение оригинального проекта.
Нецелевое использование утверждающих функций в TypeScript
Это ужасный (но очень полезный) хак, который я придумал для добавления типов в старый код. Вчера мой коллега, работающий над добавлением типов в одну из наших основных библиотек на LinkedIn, спросил меня, как быть со старым (и уже не рекомендуемым) паттерном. В качестве одного из вариантов решения мы попробовали применить утверждающую функцию. вразрез с её предназначением. В конечном итоге нам не удалось добиться конкретно желаемого 1, но мне этот паттерн показался достаточно интересным, чтобы им поделиться.
Как правильно имитировать Agile?
Подобная статья должна была появиться раньше, лет десять или пятнадцать назад, когда Agile только начинал внедряться в ИТ-компаниях. Сколько можно бы было избежать ошибок, проблем, конфликтов, , если бы менеджеры сразу подходили к вопросу правильно, не отвлекаясь на лишние действия …
Зато за это время накопился опыт "внедрений" Agile в разных условиях, в разных компаниях, который следует обобщить и повсеместно распространять.
Путь в IT. Или как я стал техдиром в 28 лет
Всем привет, меня зовут Дядиченко Григорий и чем я только не занимался. Сегодня хочется рассказать о своём пути в айти. Но цель статьи даже не в том, чтобы "рассказать историю". Я скорее хочу рассказать некоторые мысли о том, как лучше развивать свою карьеру в IT и некоторые советы, чтобы расти быстрее, чем средний специалист.
Отношения с IT. Часть десятая. Себестоимость и анализ фактических данных
Все персонажи и события являются вымышленными. Любое совпадение с реально живущими или когда-либо жившими людьми случайно.
- У нас нет пока понимания о том, сколько нам стоит каждый проект и разработка новых фичей. Часть проектов, по словам директора по денюжкам в разрезе 2 лет – убыточные, - бесстрастно объясняет СЕО.
- Это как?
- Мы инвестируем деньги в разработку стратегических продуктов и проекты. В этом смысле, мы – уникальная компания.
- Это я уже поняла, а что по себестоимости?
- С этим вопросом иди к директору по денежкам. - говорит сюзерен и машет рукой на дверь.
Аудиенция закончена.
Вопрос с оценкой себестоимости и оценкой трудозатрат для интеллектуальных продуктов является сложным (хотя, возможно только в России и только в некоторых компаниях?). Как следует рассчитывать доработки it-продуктов или работу с багами? Вернее так, этот вопрос сложный, если о нем не подумали с самого начала и разработка существует в вакууме, а не в рамках единого производственного комплекса компании.
Не секрет, что огромное количество it-компаний для учета пользуются трекерами, таймс шитами и пр., чекая количество времени на работу в том или ином проекте. Другой момент, что не все эту работу делают на регулярной основе, и не все потом используют полученные данные для анализа рентабельности разработанного продукта и сверки плановых и фактических затрат. Кроме того, хотя очевидно, что для принятия решения о разработке нового продукта предполагается подверженные цифрами исследования или экспертная оценка емкости рынка для нового продукта, не все его делают перед принятием решения о старте новой разработки.
Инфографика: Влияние «военных операций» на релокацию и доступность веб-ресурсов
Делюсь личными наблюдениями о сложившейся ситуации с Интернет-ресурсами на Украине. Возможно, тому кто занят в ИТ эта информация будет интересна или полезна, чтобы увидеть как примерно складывается ситуация в цифрах, понять поведенческие модели, объемы, направления миграции, оценить риски.
Всё что я хотел рассказать находится на инфографике, ниже скорее просто дополнительные комментарии о том из чего сложились данные, о методе исследования, погрешностях и некоторых выводах.
Дайджест недели (мобильная разработка) – #1
Привет, Хабр! Каждую неделю, в своем телеграм-канале Mobile Native, я публикую дайджест с интересными и полезными материалами (новости, статьи, инструменты, библиотеки и т.д.) для мобильных разработчиков. Решил попробовать публиковать эту рубрику и на Хабре. Посмотрим, что из этого получится.
Android 🤖
• Dependency Inversion Principle: How Google Developers write code
• Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
• Google запускает бесплатный курс Android Basics with Compose
• Опубликована программа Google I/O
• The first developer preview of Privacy Sandbox on Android
• Google Play запретил разработчикам загружать и обновлять платные приложения в России
• Learn Dagger 2 to Hilt for Android Easily in under 10 Minutes
• Jetpack Compose Dropdown
• S.O.L.I.D Principles (Examples in Kotlin)
• Kotlin-inline, crossline, noinline function and reified: Everything you need to know(Android) — Part 1
• 7 things to keep in mind while building jetpack composable’s.
• Architecture MAD Skills series wrap up
• Топ вопросов работодателю от Android-разработчика
• Isolate Koin Within an Android Module
• Kotlin, обрабатываем исключения в корутинах правильно
• The curious case of crashing Workers
• Material Components Android 1.6.0 Released
• Конвергенция в многомодульном приложении
• Passive Views: keep your UI code simple and stupid
• CI-CD: Firebase App Distribution with Fastlane on Android
• Creating reliable tests for Android notifications
iOS 🍏
• I replaced my native iOS app with a cross platform web app and no-one noticed
• Measuring app performance in Swift
• Types of memory in swift
• Improve Performance in Your iOS Applications — Part 1
• Swift 5.7: Unwrapping Optionals Gets an Improvement
• Clarifying criteria & new timing extension for App Store Improvements process
• Тест-ревью: как прошли два года написания unit-тестов
• Is It Possible to Have a Half-modal View in SwiftUI?
• Swift visitor design pattern
• Two Ways to Unit Test Notification Center in Swift
• Send Events from SwiftUI to UIKit and Vice Versa
• AsyncThrowingStream and AsyncStream explained with code examples
• AttributedString’s Codable format and what it has to do with Unicode
• SwiftUI Supporting External Screens
• Flow Navigation With SwiftUI (Revisited)
• Делаем патч для Pods библиотеки
• Как нативно визуализировать голос в iOS
• 6 Tips to improve Coding of Swift
Оптимизация высоконагруженных конфигураций: от “всё пропало, мы все умрем” до комфортной работы без страха за жизнь
Оптимизация высоконагруженных конфигураций: от “всё пропало, мы все умрем” до комфортной работы без страха за жизнь
NNHelper – пакет на языке Go для создания и использования нейронной сети
Данная статья описывает работу пакета nnhelper, предназначенного для создания и использования нейронных сетей в программах на языке Go.
Если Вы уже знакомы с машинным обучением и используете его в своей работе, то эта статья и описанные в ней примеры могут показаться вам слишком простыми. Если Вы в начале пути и хотите познакомиться с этой темой или вам хотелось бы научиться использовать нейроматрицу в ваших программах на языке Go, то вы попали точно по адресу.
Go пакет nnhelper разработан для быстрого создания нейронной сети и использовании ее в приложениях, написанных на языке Go. Для использования nnhelper не потребуется ничего дополнительного, кроме Go. Пакет nnhelper является надстройкой над пакетом gonn. И это единственная внешняя зависимость.
Как рисовать с помощью SQL?
Видимо я сделала какое-то очень плохое зло, поэтому живу во время перемен. Справиться с эмоциями и повысить конкурентоспособность на рынке Data Enigneer’ов мне помогает сайт Hackerrank. На пути к решению вообще всех задач по SQL с этого сайта мне попалась задачка на нетривиальные запросы.
В задачке требовалось звёздочками нарисовать прямоугольный треугольник...
Безопасность Web Apps в Telegram ботах
16 апреля 2022 Telegram презентовал новую фичу - Web apps, с помощью которой можно открывать веб страницы в боте без перехода в браузер. Подробнее можно почитать в источнике https://core.telegram.org/bots/webapps.
Однозначно это удобная функция для пользователей и для разработчиков. Но, так как это веб приложение, можно просмотреть что под капотом. Telegram привел в качестве примера бота @DurgerKingBot, его и разберем.
Не верьте улыбкам южноазиатов
Почти полвека я занимался Программированием и ИТ-проектами в разных странах мира. Совместная работа сплачивает ... или отдаляет людей друг от друга. Вот и я за эти годы обрёл множество знакомых и даже приятелей самых разных национальностей. (А также с некоторым, существенно меньшим числом людей мои отношения после проекта остались недружественными).
Коренные представители стран Южной Азии (японцы, корейцы, китайцы, вьетнамцы) отличаются от европейцев, американцев и индусов не только произношением, но и особым менталитетом.
Без претензий на глубокое знание национальной психологии этих народов, я хотел бы в этой истории, непосредственным участником которой я был сам, немного рассказать вам об этом.
:::
В большой немецкой фирме готовились к показу своих достижений на международной выставке CEBIT. Эта выставка в городе Ганновере просуществовала с 1996 по 2018 годы и в расцвете своих лет была настоящей Меккой компьютерщиков всего мира.
Подготовка к выставке была объявлена в фирме исключительно важным делом. Поэтому подготовленные достижения перед их отправкой в Ганновер пришёл посмотреть Самый Большой Начальник - Geschaftsführer фирмы, - высокий, молодой, источающий энергию руководитель многотысячного коллектива.
У важных начальников рабочий день расписан по минутам и всё равно его не хватает. Вот и этот просмотр был назначен на поздний вечер, когда рабочий день уже кончился.
Показывать было намечено систему интеграции трёх важных приборов. Поэтому на столе, имитирующим выставочный, располагались три прибора и ноутбук.
Вокруг больших начальников всегда трётся челядь. Отличительной особенностью челяди является способность разнюхать или предугадать, где можно попасться на глаза начальству и при возможности, напомнить о себе.
NBomber как альтернатива JMeter для .NET разработчика
Как и многие разработчики, впервые столкнувшиеся с нагрузочным тестированием, я начал с JMeter. Для ознакомления и простых сценариев JMeter полностью меня устраивал, но с усложнением задач и потребностью в большем контроле я начал задумываться о поиске более удобной альтернативы. Особенно хотелось чтобы инструмент легко адаптировался или уже был адаптирован под экосистему .NET.
В этой статье мы рассмотрим NBomber как легкую для освоения альтернативу JMeter, а также постараемся ответить на вопрос "Почему я должен проводить нагрузочное тестирование именно с NBomber ?".
Эта статья предназначена для .NET разработчиков, которые хотят пополнить свой инструментарий удобным инструментом для нагрузочного тестирования, а также тем кто рассматривает альтернативы JMeter для экосистемы .NET.
Навыки важнее дохода или мое хождение по мукам
Опыт хорош, если за него не заплачено слишком дорого (Томас Фуллер)
Этот материал можно свести к короткой фразе «навыки важнее заработка здесь и сейчас», но я хочу рассказать о том, как я попал в ловушку, поставив в приоритет сиюминутную выгоду, а также о последствиях этого. Возможно, кому-то будет полезно, чтобы не наступать на мои грабли. Все-таки лучше учится на чужом опыте.