Как стать автором
Обновить
-19
0

Software Engineer

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

Как я открыл и развалил сеть ночных клубов? От 6 городов к 4 млн долгов

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

С 2017 по 2018 год я открыл сеть ночных клубов SODA night club & concert hall в городах: Великий Новгород, Псков, Мурманск, Орел, Белгород и Липецк.

4 года отдавал долги и теперь можно вспомнить как это было: плюсы и минусы собственного ночного клуба.

Читать далее
Всего голосов 157: ↑137 и ↓20+156
Комментарии158

Пишем Python-расширение на Ассемблере (зачем?)

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

Прим. Wunder Fund: в жизни каждого человека случается момент, когда ему приходиться позаниматься реверс-инжинирингом. В статье вы найдёте базовые особенности работы с ассемблером, а также прочитаете увлекательную историю господина, который решил написать Питон-библиотеку на ассемблере и многому научился на своём пути.

Иногда, чтобы полностью разобраться с тем, как что-то устроено, нужно это сначала разобрать, а потом собрать. Уверен, многие из тех, кто это читают, в детстве часто поступали именно так. Это были дети, которые хватались за отвёртку для того, чтобы узнать, что находится внутри у чего-то такого, что им интересно. Разбирать что-то — это невероятно увлекательно, но чтобы снова собрать то, что было разобрано, нужны совсем другие навыки.

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

Эксперимент, о котором я хочу рассказать, пронизан тем же духом. Мне хотелось узнать о том, смогу ли я написать расширение для CPython на чистом ассемблере.

Зачем мне это? Дело в том, что после того, как я дописал книгу CPython Internals, разработка на ассемблере всё ещё была для меня чем-то весьма таинственным. Я начал изучать ассемблер для x86-64 по этой книге, понял какие-то базовые вещи, но не мог связать их со знакомыми мне высокоуровневыми языками.

Вот некоторые вопросы, ответы на которые мне хотелось найти:

— Почему расширения для CPython надо писать на Python или на C?
— Если C-расширения компилируются в общие библиотеки, то что такого особенного в этих библиотеках? Что позволяет загружать их из Python?
— Как воспользоваться ABI между CPython и C, чтобы суметь расширять возможности CPython, пользуясь другими языками?

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

Автоматизированная сборка Delphi-приложения

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

Я довольно часто сталкивался с тем, что разработчики на Delphi (можно сказать традиционно) компилируют свои приложения "ручками", что далеко не production-решение, а со стороны выглядит кустарщиной и "делаем на-коленке", хотя продукты бывают весьма серьёзными и продаваемыми. Вероятно, это пошло ещё с тех пор, когда для автоматизации нужно было придумывать свои батнички, которые запускали компилятор командной строки dcc32 с нужными параметрами. Некоторые даже сделали свой "Публикатор" — Delphi-expert, который делает работу сервера сборок: компилирует (правда, открытый в IDE) проект, выставляя ему взятый из какой-то БД инкрементированный номер версии, записывает некий changelog и копирует это куда-то в сетевой каталог.


Я не буду вдаваться в исторический экскурс как было раньше. Я расскажу как есть/можно сейчас, и как это использовать для повышения эффективности своей работы.


Файл проекта современной версии Delphi — это .dproj-файл (здесь и далее я буду ориентироваться на Delphi 10 Rio, но с небольшими отличиями это верно для всех более ранних версий Delphi, начиная с 2007). В нём хранятся все настройки проекта, которые обычно изменяют в IDE (меню Project - Options (Ctrl+Shift+F11)). В рамках данной статьи я сконцентрируюсь на "основных", которые понадобятся для демонстрации общих принципов: это Config — конфигурация, Platform — платформа, OutputDirectory — путь выходного файла и ConditionalDefines (директивы условной компиляции). Остальные настройки, если таковые нужно менять при сборке, я предлагаю выявить самостоятельно. Этот же .dproj-файл, если в него заглянуть обычным текстовым редактором, является ничем иным как скриптом сборки MSBuild (давайте создадим простое консольное приложение и назовём его DelphiAutomatedBuild):

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

Переставляя кровати

Время на прочтение9 мин
Количество просмотров40K
«Если лень работать – скажи, что надо всё поменять» © (только что придумал).

«Когда в борделе продажи падают, надо работниц менять, а не кровати переставлять» © (какой-то анекдот).

Ну всё, хватит цитат и умстований. Расскажу, как переставляли кровати на одном милом и уютном предприятии. Их прям хлебом кормить не надо было, дай только кроватки подвигать.
Читать дальше →
Всего голосов 53: ↑47 и ↓6+56
Комментарии23

Как из фрилансера создать работника

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

image

А что такое эти ваши трудовые отношения


Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии2

Эти токсичные, токсичные собеседования

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


Всё началось, когда автор Ruby on Rails признался миру:

Всего голосов 205: ↑197 и ↓8+189
Комментарии734

Информация

В рейтинге
4 633-й
Откуда
Минск, Минская обл., Беларусь
Дата рождения
Зарегистрирован
Активность

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

Software Developer, Backend Developer
Lead
От 3 200 $
OOP
Git
C++
Multiple thread