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

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

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

Почему порой так сложно вводить текст в терминал

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров17K

Как-то раз я спросила у пользователей Mastodon, что их не устраивает в работе с терминалом, и одним из ярких замечаний оказалось «редактирование уже введённой команды».

Мне эта проблема тоже реально знакома. Несмотря на то, что ввод текста и его редактирование является «базовой» задачей, мне потребовалось около 15 лет каждодневной работы с терминалом, чтобы привыкнуть к использованию Ctrl+A для перехода к началу строки (или Ctrl+E для перехода в конец — я использовала вместо этого Home/End).

Так что сегодня речь пойдёт о том, что ввод текста порой вызывает сложности. Я также поделюсь с вами кое-какими советами, которые сама была бы рада услышать давно.
Читать дальше →
Всего голосов 52: ↑46 и ↓6+55
Комментарии33

Взламываем игры с помощью Python

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

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

А на днях мне вдруг захотелось вспомнить молодость и поиграть в бумерский диаблойд под названием Titan Quest, выпущенный аж в 2006 году. Да вот только времени на беготню, прокачку, и вот это вот всё, у меня нет. И ArtMoney нет. Зато есть определенные знания программирования. Вот я и решил совместить приятное с полезным, написав аналог ArtMoney на Python, а заодно стать супербогатым, хотя бы в Titan Quest.

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

Что такое Spring Framework? От внедрения зависимостей до Web MVC

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


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


  • Чтобы понять, что такое Spring Framework
  • Как работают ее основные фичи: такие как внедрение зависимостей или Web MVC
  • Это также исчерпывающий FAQ (Перечень часто задаваемых вопросов)

Примечание: Статья ~ 9000 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже. И даже на компьютере ешь читай этого слона по одному кусочку за раз :-)


Содержание


  • Введение
  • Основы внедрения зависимостей
  • Контейнер Spring IOC / Dependency Injection
  • Spring AOP (Аспектно-ориентированное программирование) и прокси
  • Управление ресурсами Spring
  • Spring Web MVC
  • Дополнительные модули Spring Framework
  • Spring Framework: часто задаваемые вопросы
  • Заключение
Читать дальше →
Всего голосов 17: ↑14 и ↓3+17
Комментарии14

Обзор Spring-компонентов. Часть 1 – Spring Boot и фреймворк интеграции

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

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

Читать далее
Всего голосов 14: ↑13 и ↓1+16
Комментарии1

Обзор Spring-компонентов. Часть 2 – Spring Cloud

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

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

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

Тысяча и одна библиотека С++

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

В жизни каждого программиста С++ рано или поздно возникает задача, которую кто-либо уже решил. Однако найти это решение бывает очень непросто в силу разных причин: оно недостаточно разрекламировано, либо имеет нечеткую документацию, или возникает проблема языкового барьера, ну, или поисковики просто плохо ищут).

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++
Всего голосов 82: ↑81 и ↓1+92
Комментарии23

Frame object в Python. Что с ним можно, а что нельзя (в production и другом приличном месте) делать

Время на прочтение6 мин
Количество просмотров27K
О Python на Хабре было много хороших статей. Как об особенностях реализации, так и о прикладных фичах, отсутствующих в других мейнстримных языках. Однако я с удивлением обнаружил (поправьте, если не прав), что есть одна важная тема, не раскрытая ни на Хабре, ни в русскоязычном интернете вообще. Эта статья будет посвящена такой штуке, как stack frame. Скорее всего она не скажет ничего, ну или может с учетом последнего пункта почти ничего нового опытным python-разработчикам, однако будет полезна новичкам (а может и вредна, но все примеры ниже).

Я постарался написать статью так, чтобы её было удобно читать, открыв параллельно repl и бездумно копировать туда код эксперементируя. Поэтому по возможности большая часть примеров имеет вид «однострочники в интерпретаторе».

Начнем мы немного издалека, с того что заметим, что Traceback это тоже объект, а потом найдем где там стековый кадр и уже перейдем к делу.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии4

Профилирование и отладка Python, инструменты

Время на прочтение14 мин
Количество просмотров109K
В предыдущей статье мы на практике разобрались, где и в каких случаях можно использовать ручное профилирование, а так же познакомились со статистическими профайлерами.

Сегодня мы познакомимся с основной и самой многочисленной группой инструментов — событийными профайлерами.

Приступим!
Всего голосов 72: ↑69 и ↓3+66
Комментарии9

Секреты логических операторов в Python

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров19K

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

not — логическое отрицание

and — логическое умножение

or — логическое сложение

В этой статье мы поговорим о неочевидных деталях и скрытых особенностях работы логических операторов в Python.

Читать далее
Всего голосов 46: ↑44 и ↓2+52
Комментарии37

Проблемная секунда

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров26K

Сегодня каждый может легко проверить текущее время множеством способов. У нас есть смартфоны, часы, компьютеры, ТВ, холодильники и так далее. Все знают, какой на дворе год, и что он означает. Мы разбираемся во временны́х зонах и знаем, что такое всемирное координированное время (UTC). Всё кажется таким тривиальным. Однако с точки зрения IT-систем здесь существует множество сюрпризов, вынуждающих нас сталкиваться с проблемами, которые возникают очень редко.

В различных IT-системах можно встретить множество нюансов, касающихся времени. Чаще всего они связаны с точностью его измерения и синхронизации между машинами в распределённых системах. В этой же статье я разберу одну странную ситуацию, которая за всю историю случалась лишь несколько раз.
Читать дальше →
Всего голосов 63: ↑60 и ↓3+73
Комментарии63

IDE и редакторы кода для разработчиков. Подборка

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

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

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

Читать далее
Всего голосов 27: ↑10 и ↓17-4
Комментарии30

Как хакеры уничтожили «цифровую жизнь» IT-журналиста за считанные минуты. История Мэтта Хоннана

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

Даже если ты прожженный компьютерный журналист и блогер, написавший сотни статей о высоких технологиях, хакеры могут превратить твою цифровую жизнь в руины за считанные минуты. Именно это произошло в 2012 году с техническим экспертом и автором Wired Мэттом Хоннаном: в течение нескольких часов он потерял доступ к своим аккаунтам Google, Amazon, Apple и Twitter, а также лишился всех данных на iPhone, iPad и MacBook. Личная информация, семейные фотографии, рабочие документы были утеряны. Это случилось в результате тщательно спланированной хакерской атаки, и стало возможным потому, что Мэтт возлагал слишком большие надежды на облачные технологии. Впрочем, они же в конечном итоге и помогли ему вернуть утраченное. Однако обо всем по порядку.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+30
Комментарии21

Почему умение дебажить — один из самых важных навыков для разработчика

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

Привет! Меня зовут Абакар, и я работаю главным техлидом в Альфа-Банке. Меня часто посещает вопрос: «А какой навык всё-таки самый полезный для разработчика?». Понятное дело, что ответ на этот вопрос обязан быть комплексным, и скилл-сет разраба не должен ограничиваться одним навыком. Но умение дебажить — действительно хороший показатель уровня разработчика. Давай разберем на нескольких примерах, почему я так считаю.

Читать далее
Всего голосов 36: ↑35 и ↓1+39
Комментарии24

Лорд Кельвин и его аналоговый компьютер

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6.9K
Изобретённая Уильямом Томсоном гениальная машина для прогнозирования приливов позволяла всего за четыре часа простроить график приливов и отливов на год вперёд

В 1870 году Уильям Томсон пребывал в трауре в связи со смертью своей супруги и, располагая приличной суммой денег, вырученных за патенты, связанные с прокладыванием первого трансатлантического кабеля, решил купить яхту. Приобретённая им шхуна, Лалла Рук, стала для Томсона летним домом и местом проведения светских встреч учёных. В процессе её эксплуатации Уильям также непосредственно столкнулся с проблемой точного прогнозирования приливов.

Мореплаватели всегда старались учитывать приливы и отливы, чтобы не оказаться внезапно выброшенными на мель, а адмиралы хранили графики приливов как сверхсекретную информацию. Различные цивилизации издревле осознавали связь между приливами и лунными циклами, но только в 1687 году Исаак Ньютон объяснил, как конкретно на приливную активность влияют гравитационные силы Солнца и Луны. Спустя девяносто лет, французский астроном и математик Пьер-Симон Лаплас предположил, что приливы можно выразить как гармонические колебания. А ещё через столетие Томсон на основе этой идеи разработал первое устройство для их прогнозирования.
Читать дальше →
Всего голосов 53: ↑52 и ↓1+74
Комментарии2

Фоновые асинхронные задачи в FastAPI и их мониторинг

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

Привет! Меня зовут Иван, я бэкенд-разработчик в KTS.

Сегодня расскажу, как в FastAPI эффективно работать с фоновыми задачами и настроить их мониторинг в Prometheus.

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

В статье опишу 5 вариантов: встроенный в FastAPI Background Tasks и 4 библиотеки — ARQ, SAQ, FastStream, адаптированный к асинхронному коду Celery.

В конце расскажу, как мониторить фоновые задачи.

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

CPU планировщики в Linux

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров11K

В статье будет рассказано про основные алгоритмы, которые ядро Linux использует для планирования задач, готовых к выполнению. Как влияет приоритет задач и указанная для неё политика на то, как она будет получать процессорное время и сколько.

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

Разработка и применение систем разграничения доступа на базе атрибутов

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

Привет! Меня зовут Михаил, в Positive Technologies я руковожу бэкенд-разработкой метапродукта MaxPatrol O2. В этой статье я расскажу, зачем нам в компании понадобилось разграничение доступа на основе атрибутов. Его еще называют ABAC (attribute-based access control). Рассмотрим, чем ABAC отличается от других способов разграничения доступа, как это реализуется и что мы в итоге сделали у себя.

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

Логирование: понятие, механизмы и уровни

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

Что такое логи?

Лог (log) - это хронологическая запись наиболее значимой информации о работе системы. Подобная фиксация событий дает представление и том, что происходило в системе, в какой именно момент, какой пользователь спровоцировал то или иное событие, какие ошибки возникли и т.д.

Читать далее
Всего голосов 4: ↑2 и ↓2+2
Комментарии7

Заблуждения программистов об именах

Время на прочтение3 мин
Количество просмотров87K
Две недели назад на Хабре публиковался перевод «Заблуждения программистов о времени», который по своей структуре и стилю основан на этом классическом тексте Патрика Макензи, опубликованном два года назад. Поскольку заметка о времени была крайне благоприятно воспринята аудиторией, то, очевидно, имеет смысл перевести и исходную статью об именах и фамилиях.

Джон Грэхем-Камминг (John Graham-Cumming) сегодня жаловался в своём блоге, что компьютерная система, с которой он работал, не приняла его фамилию из-за недопустимых символов. Конечно, там нет недопустимых символов, потому что любой способ, как человек представляет себя, — по определению — является подходящим идентификатором. Джон выразил сильную досаду насчёт данной ситуации, и он имеет полное право, потому что имя — суть нашей индивидуальности, практически по определению.
Читать дальше →
Всего голосов 94: ↑78 и ↓16+62
Комментарии223

Python Multiprocessing. Обмен данными между процессами. Передача объектов пользовательских классов

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров21K

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

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

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

О том, как с этим обходиться, я и расскажу в этой статье.

Читать далее
Всего голосов 20: ↑17 и ↓3+19
Комментарии19

Информация

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