Как стать автором
Обновить
0
@TenDai read⁠-⁠only

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

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

Как не надо индексировать

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

Развитие происходит по спирали: когда-то люди не умели правильно индексировать, потом (в основном) научились, потом пришли noSQL и все снова забыли знание древних. Что вы будете делать, когда последние из старых DBA отплывут в Валинор?

Снова и снова и сталкиваюсь с полным набором антипаттернов индексирования. Я их перечислю, но! Для каждого антипаттерна есть исключение, когда именно это и стоит делать. Поэтому кликбейтно сформулированное правило верно в 95% случаях, но если вы хотите копнуть глубже, то прочитайте про исключения.

И в конце полезные скрипты для MSSQL, Postgres и MySQL.

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

Базовые принципы Availability

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

О чем статья

В этой статье речь пойдет о БАЗОВЫХ подходах и принципах к такому quality attribute (QA) как Availability. Никаких сложных случаев, ничего слишком сложного, только теория с двумя примерами, скипайте, если искали что-то эдакое.

Вся информация основана на парах книг, статей, и моем опыте. В конце статьи я покажу, какие именно. Также, эта статья - по суть перевод моей же статьи, только написанной на английском.

Что такое Availability?

Перед тем, как рассматривать паттерны и техники для обеспечения availability мы должны определить сам термин.

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

Индексы в PostgreSQL — 1

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

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Всего голосов 104: ↑103 и ↓1 +102
Комментарии 59

Кэш в асинхронных python приложениях

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

Всем привет! Кэш один из "слонов" современного веба. Так почему мы так мало его используем на уровне приложения, нашего кода? Тому, кто хочет восполнить этот пробел и не хочет ударить в грязь лицом при написании очередного декоратора - добро пожаловать под кат

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

Основы Postman для самых маленьких

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

В этой статье поговорю про основы работы с Postman для начинающих тестировщиков. Сама я столкнулась с этим инструментом как раз на последнем проекте. 

Расскажу, как с его помощью создавать простейшие автотесты и уменьшать объем рутины с помощью переменных.

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

Квантовая разработка с использованием QDK

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

В нашем блоге Q# мы часто сосредотачиваемся на инструментах, включенных в Quantum Development Kit, новых функциях или конкретных приложениях. На этот раз давайте сделаем шаг назад и посмотрим на рабочий процесс квантовой разработки программного обеспечения, этапы, через которые квантовая программа переходит от идеи до полной реализации, и инструменты, предлагаемые QDK для каждого этапа.

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

Метаклассы в Python

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

Привет, Хабр! У нас продолжается распродажа в честь черной пятницы. Там вы найдете много занимательных книг.

Возможен вопрос: а что такое метакласс? Если коротко, метакласс относится к  классу точно как класс к объекту.

Метаклассы – не самый популярный аспект языка Python; не сказать, что о них воспоминают в каждой беседе. Тем не менее, они используется в весьма многих статусных проектах: в частности, Django ORM[2], стандартная библиотека абстрактных базовых классов (ABC)[3] и реализации Protocol Buffers [4].

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

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

Пишем веб сервис на Python с помощью FastAPI

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

Знаю, знаю, наверное вы сейчас думаете «что, опять?!».

Да, на Хабре уже неоднократно писали о фреймворке FastAPI. Но я предлагаю рассмотреть этот инструмент немного подробнее и написать API своего собственного мини Хабра без кармы и рейтингов, зато с блэкджеком и с тестами, аутентификацией, миграциями и асинхронной работой с БД.
Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 27

Очень простое объяснение принципов SOLID

Время на прочтение 5 мин
Количество просмотров 67K
Disclaimer: Всем можно, ну а я чем хуже?!

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

Попробуем разобраться в этих принципах на пальцах, без примеров кода и СМС.
Читать дальше →
Всего голосов 60: ↑53 и ↓7 +46
Комментарии 60

Простое объяснение принципов SOLID

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


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

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

Чтобы понять принципы SOLID, нужно чётко понимать, как использовать интерфейсы. Если у вас такого понимания нет, то сначала почитайте документацию.

Я буду объяснять SOLID самым простым способом, так что новичкам легче будет разобраться. Будем рассматривать принципы один за другим.
Читать дальше →
Всего голосов 46: ↑38 и ↓8 +30
Комментарии 201

Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования

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

Дисклеймер:


Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
Читать дальше →
Всего голосов 201: ↑196 и ↓5 +191
Комментарии 342

Сравнение производительности HTTP/3 и HTTP/2

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


Мы в Cloudflare объявили о поддержке HTTP/3 в сентябре прошлого года, когда отмечали девятый день рождения. Наша задача всегда состояла в улучшении интернета. Сотрудничество в области стандартов — важная часть процесса, и нам повезло участвовать в разработке HTTP/3.

Хотя HTTP/3 ещё на стадии черновика, мы заметили большой интерес к новому протоколу со стороны наших пользователей (инфраструктура Cloudflare обслуживает более 10% сайтов интернета — прим. пер.). К настоящему моменту поддержку HTTP/3 активировали более 113 000 зон, и если у вас экспериментальный браузер, то теперь вы можете получить доступ к этим зонам по новому протоколу! Здорово, что его включили так много людей: работа по HTTP/3 большого количества реальных веб-сайтов означает, что можно тестировать больше разнообразных свойств со стороны браузеров.
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 8

Английский по-программистски

Время на прочтение 4 мин
Количество просмотров 19K
Чуть менее года назад я всерьез решил подтянуть английский, изучая его самостоятельно всеми доступными методами: прослушивание новостей, подкастов и книг, чтение художественной литературы, в том числе и в слух, ведение дневника и, конечно же, с помощью различных программ. Столкнувшись с последними, я понял, что можно написать аналоги как минимум не хуже. Что у меня в итоге получилось — под котом.


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

Внедри это полностью. DI-in-JS

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

Всем привет! Сегодня я попробую поэкспериментировать с Dependency Injection на чистом JavaScript. Тех кто не в курсе, что это за дичь и как ее готовить, приглашаю ознакомиться. Ну а у тех кто в курсе будет повод написать важный и полезный комментарий. Итак, погнали…

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

К чёрту мотивацию, вам нужна дисциплина

Время на прочтение 4 мин
Количество просмотров 121K
Если вы желаете что-то сделать, то есть два способа этого достичь.

Первый, более распространённый и в значительной мере неправильный вариант — попытаться мотивировать себя.

Второй, весьма непопулярный, но абсолютно правильный выбор — воспитание дисциплины.

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

В чём же разница?
Читать дальше →
Всего голосов 62: ↑53 и ↓9 +44
Комментарии 63

4 толковых канала на Youtube про технические собеседования

Время на прочтение 4 мин
Количество просмотров 25K
Смотрю разные каналы ребят, которые проходят/проводят интервью в крупных компаниях и рассказывают про это. На русском прям что-то крутое не попадалось, но вот личный топ каналов на английском:


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

Полезные советы по Python, которых вы ещё не встречали. Часть 2

Время на прочтение 7 мин
Количество просмотров 37K
Недавно мы опубликовали перевод материала, в котором были приведены полезные советы для Python-программистов. У того материала есть продолжение, которое мы представляем вашему вниманию сегодня.


Читать дальше →
Всего голосов 68: ↑65 и ↓3 +62
Комментарии 24

Секрет эффективности — качественный код, а не эффективный менеджер

Время на прочтение 4 мин
Количество просмотров 7.5K
Одна из самых перегруженных идиотами специальностей — менеджеры, управляющие программистами. Не все, а те, которые сами программистами отродясь не были. Те, которые думают, что можно «повышать» эффективность (или повышать «эффективность»?) методами из книжек. Даже не удосужившись эти самые книжки прочитать — видосик ведь есть цыганский.

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

Те, которых большинство.

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

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

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

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

Ну всё, хватит про менеджеров. Теперь по делу, для программистов. Как повысить эффективность разработки, научившись писать качественный код.
Читать дальше →
Всего голосов 53: ↑30 и ↓23 +7
Комментарии 31

Распространенные ошибки при работе с промисами в JavaScript, о которых должен знать каждый

Время на прочтение 5 мин
Количество просмотров 21K
Доброго времени суток, друзья!

Хотел бы я знать об этих ошибках, когда изучал JavaScript и промисы.

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

Поэтому в данной статье я бы хотел поговорить о самых распространенных ошибках при работе с промисами в JS, на которые многие не обращают внимания.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 12

Стоит ли жаловаться на собеседования?

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

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


Первая тема — "мне слили карму, систему кармы надо изменить/отменить".
Вторая тема — "меня не взяли на работу, процесс приема надо изменить".


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


Итак, "Васю" не взяли на работу, потому что интервью проводили идиоты с дебильными вопросами. Что должен Вася делать и надо ли писать об этом на Хабр?

Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Комментарии 87

Информация

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