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

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

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

Будильник изменений: когда приходит время личных трансформаций и как его отследить

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

Привет, Хабр! Меня зовут Марина, и я бизнес-аналитик в Петрович-Техе. 

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

Двигатель изменений мы запускаем осознанно, но есть периоды жизни, побуждающие действовать. И их можно спрогнозировать. От нас зависит, во что выльется желание изменений: в домашние DIY-кейсы или в смену карьерной стратегии. На моем пути случался полный цикл работы этого двигателя. А еще были будильники изменений, которые каждый из вас может найти у себя. 

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

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

Игра в бисер на Python

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

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

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

Интеграция 1С с DLL с помощью Python

Время на прочтение4 мин
Количество просмотров29K
Привет Хабр! Недавно я разработал алгоритм для логистики, и нужно было его куда-то пристроить. Помимо веб-сервиса решено было внедрить данный модуль в 1С, и тут появилось довольно много подводных камней.

Начнем с того, что сам алгоритм представлен в виде dll библиотеки, у которой одна точка входа, принимающая JSON строку как параметр, и отдающая 2 колбэка. Первый для отображения статуса выполнения, другой для получения результата. С web-сервисом все довольно просто, у питона есть замечательный пакет ctypes, достаточно подгрузить нужную библиотеку и указать точку входа.

Выглядит это примерно так:

import ctypes
def callback_recv(*args):
	print(args)

lib = ctypes.cdll.LoadLibrary('test.dll')
Callback = ctypes.CFUNCTYPE(None, ctypes.c_int, ctypes.c_char_p)
my_func = getattr(lib, '_ZN7GtTools4testEPKcPFviS1_E')
cb_func = Callback(callback_recv)
my_func(ctypes.c_char_p('some data'), cb_func)
 

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

Данное коверканье метода происходит из-за того, что компилятор манглит («mangle» — калечить) название всех точек входа, причем разные компиляторы «калечат» по разному. В примере указан метод полученный MinGW
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии15

Создание «искусственной жизни» на компьютере

Время на прочтение10 мин
Количество просмотров109K
Всем привет. В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.

Как это выглядит?

картинка кликабельна

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

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

А мне остаётся только наблюдать за развитием мира.

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

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

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

Внутреннее устройство кода — это самое интересное в проекте.

Код должен быть простым и выдерживать различные модификации (случайное изменение любого элемента в коде) над собой без синтаксических ошибок.
Читать дальше →
Всего голосов 214: ↑210 и ↓4+206
Комментарии393

AI монстров и поиск пути с помощью тепловых карт

Время на прочтение5 мин
Количество просмотров25K
image Допустим, у нас есть плоская карта, состоящая из тайлов. На некоторых тайлах стоят монстры, а на некоторых других – всякие штуки, которые монстров интересуют: игрок, оружие, зелья, боеприпасы и прочее в том же духе. Задача состоит в том, чтобы объяснить монстрам, к каким штукам им идти и как. Путь должен быть близким к оптимальному, а время вычисления – настолько маленьким, насколько это возможно. Один из самых простых способов – использовать тепловую карту дистанций до определённой цели или целей.
Читать дальше →
Всего голосов 61: ↑61 и ↓0+61
Комментарии26

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность