Feb. 24, 2025
В прошлой статье мы выяснили, что отмывание часов, есть деятельность, направленная на обоснование повышенного объёма времени, требуемого на решение конкретной задачи, при условии, что исполнителю известно, каким образом решить задачу за меньший (от 1% до 50%) объем, присвоив себе оставшееся время в качестве бонуса.
В моем примере присваивание оставшегося объёма имело прямой практический смысл, так как количество отмеченных (или списанных) на задачу часов напрямую влияло на заработную плату. Отмывание может иметь смысл и в отрыве от подобной схемы - для выделения свобоного времени, особенно на удаленке.
Основной задачей отмывания часов является убеждение заказчика в том, что оценка объема работ верна, соответствует сложившейся практике, и не вычисляется по формуле “берем максимальную оценку, удваиваем, прибавляем еще пару недель\месяцев”.
Feb. 22, 2025
Мне правда очень не хочется, чтобы эта статья выглядела как среднестатистическая дипломная работа выпускника специальности “Что-то там с чем-то, но точно есть слово “экономика” или “экономический\ая\ие”, где воды во введении больше, чем во всем мировом океане, но статья как раз про экономику и оплату труда.
Заинтригованы заголовком, а? Ну-ка, признавайтесь! Хотя ладно, и так же понятно, что слова “мыть” и “пилить” означают некую “неправильную” заинтересованность в получении дополнительного бонуса к ежемесячной заработной плате. Попробую в рамках нижеизложенного собрать этакий overview по всем аспектам, технологиям, и последствиям подобных действий.
Oct. 6, 2024
Зачем вообще писать UI, если есть web? В некоторых случаях да, проще сделать web-приложение, тем более что фреймворки, типа Quasar во-первых имеют встроенную библиотеку ui-компонент, а во-вторых умеют собираться под разные платформы (в том числе и iOS\Android), и быть PWA, устанавливаемой на ПК\смартфон.
Но в некоторых случаях нужно либо придать более дружелюбный пользователю интерфейс к изначально консольной утилите, либо же действительно сделать утилиту для локального запуска с поддержкой GUI.
Nov. 12, 2023
Данная crackme является оконным приложением, и написана на assembler. Наша задача состоит в том, чтобы понять алгоритм генерации ключа, найти валидный серийный номер, и написать кейген.
Для анализа и проверки гипотез нам понадобится:
- IDA
- Python
Nov. 11, 2023
Решение crackme это (время от времени) достаточно увлекательное занятие, позволяющее взглянуть на некоторые вещи под непривычным углом. В этой статье я расскажу о том, как можно патчить скомпилированные .NET-приложения не прибегая к перекомпиляции.
Автор crackme говорит, что ключ (понимание алгоритма генерации которого обычно, вместе с написанием генератора валдиных ключей, и является решением) случайным образом генерируется при старте приложения, и наша цель заключается в том, чтобы получить пропатченую версию, принимающую любой ключ.
Sep. 21, 2023
If you are reading this article I guess that you are interested in programming and building tools from scratch. Today I would like to tell you how to build a simple programming language and a virtual machine for its execution. Nowadays the community has a lot of technologies, languages and frameworks, so our current goal is not to invent “yet another useless language, and present it like a silver bullet”, but to understand how to design and animate programs written in our own language.
Sep. 21, 2023
Every programmer who wants to deeply understand the principles of the computer’s low-level work rules thinks about writing their own operating system. No matter how complicated your OS is going to be, the first thing you need to do is to implement the Main Boot Record (MBR). MBR is the first program that BIOS executes on the bootable device. That article describes how to implement custom MBR protected with a password.
Sep. 21, 2023
Every python programmer who worked over increasing the IO performance of their script knows about async and its powerful cooperative multitasking abilities. As you may know async in Python becomes possible because of enhanced generators implementation by PEP-342. Along 2 and 3 versions, the abilities of generators in Python grew up, and today we have a powerful mechanism that allows suspension and resuming tasks of the main application thread.
In this article I would like to tell you about the solution to a specific problem, that is placed between generators and coroutines. That problem can be defined as a lack of ability to natively apply timeouts to asynchronous generators. Each yield pushes value to the caller function, but the caller never knows if the next value is being yielded or not. This situation takes place when you build an RPC service over RabbitMQ. I’ll say a few words about it.