Как стать автором
Обновить
5
0
Станислав Томилов @zeezdev

full stack разработчик

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

Как не нужно использовать паттерн Repository

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

Данная статья является неким опытом, который был приобретен в результате весьма неприятной архитектурной ошибки, допущенной мной при длительной разработке проекта на Laravel5.

Я постараюсь рассказать, как использовал паттерн Repository в проекте, какие достоинства и недостатки были выявлены, как это повлияло на разработку в целом и какой профит был получен.
Читать дальше →
Всего голосов 30: ↑24 и ↓6+18
Комментарии100

Секреты айтишной карьеры, о которых лучше не рассказывать…

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

Секреты айтишной карьеры, о которых лучше не рассказывать...

...но которыми всё же с нами поделился QA lead "ITQ Group" Сергей Мурашов.

Давным-давно, когда трава была зеленой, а страна не пестрила рекламой IT-курсов, профессия тестировщика еще не была той самой ниточкой, за которую может зацепиться человек без сверхспособностей, чтобы попасть в мир IT. Именно тогда свой путь QA и начал автор этой статьи.

Читать далее
Всего голосов 55: ↑42 и ↓13+42
Комментарии34

Как не сжечь команду дотла, или Почему Work-life balance — задача руководителя

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

Всем привет! Я Саша Ворожищев, руководитель мобильной разработки в AGIMA. В интернете сотни статей о том, как важно не выматывать себя на работе, но всё без толку. Согласно недавнему исследованию Хабр Карьеры, более 90% российских IT-специалистов сталкивались с выгоранием. При этом более 40% доводят себя до поздних стадий, когда эмоциональное истощение уже перерастает в депрессию.

В этой ситуации будет полезным напомнить, что любой руководитель может влиять на состояние команды. И это важно не только с точки зрения человеколюбия, но и с точки зрения бизнеса. В конце концов энергичный сотрудник, который любит свою работу, принесет компании больше счастья, чем выгоревший и усталый. Поэтому давайте разберем, как мотивировать команду соблюдать Work-life balance.

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

Уровни изолированности транзакций для самых маленьких

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


Сегодня хотел бы довести крайне интересный, но часто покрытый тайнами для обычных смертных программистов раздел базы данных (БД) — уровни изолированности транзакций. Как показывает практика, многие люди, связанные с IT, в частности с работой с БД, слабо понимают зачем нужны эти уровни и как их можно использовать себе во благо.

Немного теории


Сами транзакции особых объяснений не требуют, транзакция — это N (N≥1) запросов к БД, которые выполнятся успешно все вместе или не выполнятся вовсе. Изолированность же транзакции показывает то, насколько сильно влияют друг на друга параллельно выполняющиеся транзакции.
Выбирая уровень транзакции, мы пытаемся прийти к консенсусу в выборе между высокой согласованностью данных между транзакциями и скоростью выполнения этих самых транзакций.
Стоит отметить, что самую высокую скорость выполнения и самую низкую согласованность имеет уровень read uncommitted. Самую низкую скорость выполнения и самую высокую согласованность — serializable.
Читать дальше →
Всего голосов 42: ↑36 и ↓6+30
Комментарии17

Уровни изоляции транзакций с примерами на PostgreSQL

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

Вступление


В стандарте SQL описывается четыре уровня изоляции транзакций — Read uncommited (Чтение незафиксированных данных), Read committed (Чтение зафиксированных данных), Repeatable read (Повторяемое чтение) и Serializable (Сериализуемость). В данной статье будет рассмотрен жизненный цикл четырёх параллельно выполняющихся транзакций с уровнями изоляции Read committed и Serializable.


Для уровня изоляции Read committed допустимы следующие особые условия чтения данных:


Неповторяемое чтение — транзакция повторно читает те же данные, что и раньше, и обнаруживает, что они были изменены другой транзакцией (которая завершилась после первого чтения).


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


Что же касается Serializable, то данный уровень изоляции самый строгий, и не имеет феноменов чтения данных.

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

Мои собеседования (Golang developer)

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

Привет, меня зовут Олег, я разработчик со стажем почти 10 лет.

Разработкой начал заниматься ещё со старшей школы, изучал C/C++ (очень пригодилось при написании скриптов в injection для ультимы онлайн). Профессионально начал работать разработчиком приблизительно с 2014, основной язык до 2020 года был C# с примесью C++. Сначала разрабатывал и поддерживал некоторые проекты в банковской сфере, потом резко поменял предметную область и ушёл писать софт для автоматизации работы одного строительного девелопера. На начальных этапах это было огромное легаси на C# от бывшего архитектора, решившего стать программистом, с кучей багов и неочевидных решений, пришлось много переписывать.

Со временем появились задачи, которые не были привязаны к языку и технологиям в принципе (изначально писал, по сути, плагины к CAD-приложениям), и я попробовал Golang, а вместе с ним и микросервисы, NoSQL, gRPC и прочие модные штуки. Побывал в шкуре админа-девопса, так как новые сервисы я запускал и поддерживал сам.

Некоторое время назад наткнулся на пост про собеседования и решил рассказать Хабру про свой опыт. Возможно, кому-то он окажется полезным.

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

Как я ощутимо улучшил свой английский бесплатно за 3 года

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

Учить какой-либо иностранный язык в России, объективно - дело недешевое.

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

Постараюсь подсказать вам, как сэкономить и при этом улучшить свои навыки, как в письменной речи, так и устной.

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

Читать далее
Всего голосов 40: ↑14 и ↓26-8
Комментарии42

Визуальные спецификации

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

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

Agile движение имеет свой взгляд на спецификации. Наиболее экстремальное крыло выражает свои взгляды так:

В жопу спецификации!
Дальше еще интереснее...
Всего голосов 125: ↑110 и ↓15+95
Комментарии38

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 1. Введение

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

Дабы исчерпать до дна тему сокетов в Python я решил изучить все возможные способы их использования в данном языке. Чтобы всех их можно было испытать и попробовать на зуб, были созданы 19 версий простого эхо-сервера: от примитивного использования класса socket до asyncio. Блокирующие и неблокирующие сокеты, процессы и потоки, select'ы и selector'ы, коллбеки и сопрограммы — все эти темы расположены в эволюционном порядке, чтобы один пример плавно перетекал в другой.

Отдельно разобрано появление асинхронности в Python. На примерах детально показано, как и зачем появились итераторы, из них — генераторы, сопрограммы. Ближе к концу построен учебный макет библиотеки asyncio с минимально необходимым кодом, чтобы любой (даже такой, как я) смог разобраться, как на самом деле устроена асинхронность, как там все внутри работает.

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

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

Герундий в английском языке: просто о сложном

Время на прочтение5 мин
Количество просмотров79K
В грамматике английского языка есть много нюансов, которых просто не существует в русском. И из-за этого многие русскоговорящие студенты путаются в грамматике.

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

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


Читать дальше →
Всего голосов 16: ↑15 и ↓1+22
Комментарии17

Django 3.0 будет асинхронным

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

Andrew Godwin опубликовал DEP 0009: Async-capable Django 9 мая, а 21 июля он был принят техническим советом Django, так что можно надеяться, что к выходу Django 3.0 успеют сделать что-нибудь интересное. Он уже упоминался где-то в комментариях Хабра, но я решил донести эту новость до более широкой аудитории путём его перевода — в первую очередь для тех, кто, как и я, не особо следит за новостями Django.



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


По мере развития экосистемы стало очевидно, что, хотя нет насущной необходимости расширять Django для поддержки отличных от HTTP протоколов, таких как вебсокеты, поддержка асинхронности даст много преимуществ для традиционной model-view-template структуры Django.


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

Всего голосов 22: ↑21 и ↓1+20
Комментарии18

Микросервисы: пожалуйста, не нужно

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


Иллюстрация @alvaro_sanchez


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


Естественно, в реальности все оказалось совсем наоборот. Когда смотришь назад, на произошедшее, то зрение оказывается ближе к 100%, чем когда смотришь с надеждой в будущее.


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

Читать дальше →
Всего голосов 89: ↑77 и ↓12+65
Комментарии111

Обширный обзор собеседований по Python. Советы и подсказки

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

Всем привет!


Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


Для кого эта статья? Для всех, кто, как и я, хотел (или хочет) найти для себя достойную хорошо оплачиваемую работу с интересным проектом, классным коллективом и всякими плюшками. А также для тех, кто желает поднять свой уровень знаний и мастерства.

Читать дальше →
Всего голосов 71: ↑70 и ↓1+69
Комментарии57

Самые быстрые Python веб-фреймворки в 2019

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


В 2018 году Python укрепил свои позиции популярности среди программистов и вошел в Top 3 самых популярных языков на github. Все больше и больше людей переходит на светлую сторону…то есть Python. Появилось еще большее количество разработчиков, которые интересуются данным языком и ведут разработку своих проектов с его помощью. Одним из популярных направлений для Python является web-разработка. Хочется, чтобы не только процесс разработки был удобным и быстрым, но и сами проекты могли похвастаться скоростью и стабильностью работы.

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

Мелкая питонячая радость #2: Starlette

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


Туннельное зрение


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


По этой причине у многих Python-разрабов складывается некое подобие туннельного зрения — их инженерный подход заперт между этими двумя библиотеками.

Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии14

Введение в fetch

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

Прощай, XMLHttpRequest!


fetch() позволяет вам делать запросы, схожие с XMLHttpRequest (XHR). Основное отличие заключается в том, что Fetch API использует Promises (Обещания), которые позволяют использовать более простое и чистое API, избегать катастрофического количества callback'ов и необходимости помнить API для XMLHttpRequest.
Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии145

Денормализация БД. Зачем? Когда? Как?

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

денормализация — это зло, или просто надо уметь её готовить?


Денормализация- это не результат кривых рук. Это не недоделанная нормализация, это намеренное нарушение нормальных форм, для увеличения производительности.
Вопрос о денормализации у меня возникал не раз. Каждый раз, когда приходилось идти на сделку с совестью, нарушая принципы нормальных форм, оставалось ощущение неудовлетворённости, ложное осознание своей некомпетентности. Со временем, при работе в команде, обнаружилось, что это не только моя проблема. Настало время разобраться: денормализация — это зло, или просто надо уметь её готовить?
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии22

Знай свой инструмент: Event Loop в libuv

Время на прочтение6 мин
Количество просмотров65K
image
Юдель Пэн. Часовщик. 1924

«Компьютер — это конечный автомат. Потоковое программирование нужно тем, кто не умеет программировать конечные автоматы» 
Алан Кокс, прим. Википедия


“Знай свой инструмент” — твердят все вокруг и все равно доверяют. Доверяют модулю, доверяют фреймворку, доверяют чужому примеру.

Излюбленный вопрос на собеседованиях по Node.js — это устройство Event Loop. И при всем том, очевидном факте, что прикладному разработчику эти знания будут полезны, мало кто пытается самостоятельно погрузиться в устройство событийного цикла. В основном, всех устраивает картинка сверху. Хоть это и похоже на пересказ фильма, который ты не смотрел, а о котором тебе рассказал друг.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии20

Bash-скрипты: начало

Время на прочтение11 мин
Количество просмотров1.8M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии123

Введение в Bash Shell

Время на прочтение14 мин
Количество просмотров130K
Всем привет. Это перевод из книги по подготовке к экзамену RedHat RHCE. На мой взгляд очень доступно рассказывается об основах bash.

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


Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии14

Информация

В рейтинге
6 002-й
Откуда
Россия
Зарегистрирован
Активность