Как стать автором
Обновить
2
0.2

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

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

Курс «PostgreSQL для начинающих»: #4 — Анализ запросов (ч.1 — как и зачем читать планы)

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

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции мы узнаем, что такое план выполнения запроса, как и зачем его читать (и почему это совсем непросто), и о каких проблемах с производительностью базы он может сигнализировать. Разберем, что такое Seq Scan, Bitmap Heap Scan, Index Scan и почему Index Only Scan бывает нехорош, чем отличается Materialize от Memoize, а Gather Merge от "просто" Gather.

Как обычно, для предпочитающих смотреть и слушать, а не читать - доступна видеозапись (часть 1, часть 2).

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

Как донести секреты до dev-тачки и не пролить?

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

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

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

Этот текст — продолжение серии CI/CD в каждый дом, в прошлый раз мы обсуждали, как организовать сборочный цех базовых docker-образов.

TL;DR: На dev-тачках должны светиться только персональные/локальные секреты. Короткоживущие секреты лучше вечных. Храним безопасно. Передаём шифрованно. Употребляем сессионно.

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

Актуально ли сегодня ООП?

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

Почти каждый день возникают дискуссии с критикой или восхвалением объектно-ориентированного программирования. «Java устарела!», «Java потрясающая!». В этой статье я проведу прагматичное исследование ООП на 2024 год.

Термин объектно-ориентированное программирование придумал Алан Кэй. Кэй был членом команды PARC, которая изобрела графический интерфейс пользователя, сделавший таким полезным современный Интернет, персональные компьютеры, планшеты и смартфоны. Ещё она изобрела некоторые из объектно-ориентированных языков, на которых мы сегодня реализуем эти GUI.

Если отсечь все эмоции, связанные с ООП, то что останется? По-прежнему ли ООП является эффективным инструментом разработки ПО, или оно превратилось в устаревшее увлечение? Профессионалам важно знать ответ на этот вопрос!
Читать дальше →
Всего голосов 80: ↑60 и ↓20+65
Комментарии179

Всё ещё храните музыку в формате Hi-Res? Тогда мы идем к вам

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

Люди делятся на 2 лагеря: те, кто слышит разницу между lossless и lossy, и те, кто нет. Формат аудио с потерей качества — это интересная тема, но сегодня мы поговорим о звуке в высоком разрешении — это PCM 24/96 и выше, а также DSD во всех его проявлениях. Я не буду рассказывать теорию, чем отличаются эти форматы, такие статьи легко гуглятся. Лишь вскользь упомяну о теореме Котельникова (Найквиста — Шеннона), которая гласит следующее: «Для того, чтобы оцифровать аналоговый сигнал, а потом его БЕЗ ПОТЕРЬ восстановить, необходимо и ДОСТАТОЧНО, чтобы частота дискретизации была в 2 раза СТРОГО больше максимальной частоты полезного сигнала».

Читать далее
Всего голосов 152: ↑148 и ↓4+180
Комментарии449

Анемичная модель предметной области и логика в сервисах

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

Анемичная модель предметной области (Anemic domain model) это такая модель, где сущности содержат только свойства, а бизнес-логика находится в сервисах. Ее противоположность это богатая модель предметной области (Rich domain model), где логика находится в сущностях, а cервиcы рекомендуют писать только в редких случаях.

В этой статье я хочу показать, почему логика в сервисах является более правильным подходом. Мы рассмотрим пример бизнес-требований и их реализацию с Anemic domain model.

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

Люди не понимают ООП

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

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Всего голосов 126: ↑119 и ↓7+140
Комментарии461

Полезные команды GNU/Linux для разработчика. Часть 1

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

В этой статье поговорим про команды GNU/Linux, которые удобно использовать разработчику для решения повседневных задач. Подборка ориентирована на тех, кто не хочет залезать глубоко в систему, но по работе вынужден иногда ходить на Linux-сервер. Здесь мы собрали то, чем пользуемся сами и к чему привыкли, однако почти все упомянутые задачи можно решить и другими способами.

Статья написана по мотивам ИТ-посиделки, где мы обменивались полезными лайфхаками. Все команды, которые успели обсудить, мы разделили на две части. В первой поговорим про запросы общей информации о пользователях и системе, работу с файлами, процессами и текстом. Во второй части - о bash и работе с сетью, в частности ssh.

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

Как защищать свои ключи SSH. Почему не сертификаты?

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


В марте 2023 года на популярном сайте для хостинга кода Github случился инцидент с утечкой секретного ключа RSA SSH, который использовался для операций на хосте github.com.

Такие инциденты — совсем не редкость. Чаще всего они квалифицируются как «человеческая ошибка», то есть недосмотр какого-то конкретного сотрудника, который случайно выложил секретные данные в открытый доступ. В данном случае сотрудник случайно закоммитил секретный ключ в открытый репозиторий.

Конечно, проще всего возложить вину на отдельного человека. Но если система безопасности допускает такие ошибки, то следует задуматься об изменениях системы в первую очередь.
Читать дальше →
Всего голосов 11: ↑6 и ↓5+5
Комментарии5

Ультимативная дорожная карта для изучения SQL и баз данных в 2023 году + источники для знаний

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

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

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

Все еще работаете с access token на клиенте? Тогда мы идем к вам

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

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

В статье рассмотрим причины необходимости работы с токеном на клиенте веб-приложений, узнаем ,что лучше для хранения токена: localStorage, sessionStorage или cookie без флага HttpOnly (спойлер, ничего из этого), а также посмотрим на меры воздействия, которые можно использовать для снижения риска утечки токена посредством различных уязвимостей.

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

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

Курс по Ruby+Rails. Часть 5. Паттерн MVC

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

MVC — это главный архитектурный принцип, вокруг которого строится не только Ruby on Rails, но и любой другой фреймворк, работающий со сложными структурами данных и их отображением. Этот архитектурный паттерн появился довольно давно, на заре объектно-ориентированного программирования, но он не сразу был принят веб-программистами. 

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

Давайте подробнее разберёмся во взаимодействиях и рассмотрим каждый элемент в отдельности.

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

Мягкое удаление чаще всего не нужно

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

Те, кто знаком хотя бы с парой разных окружений баз данных продакшена, скорее всего, знают паттерн «мягкого удаления» (soft deletion): вместо удаления данных напрямую конструкцией DELETE таблицы получают дополнительную временную метку deleted_at и удаление выполняется конструкцией обновления:

UPDATE foo SET deleted_at = now() WHERE id = $1;

Мягкое удаление необходимо для того, чтобы удаление выполнялось безопаснее и было обратимым. После того, как запись удалили «жёстким» DELETE, теоретически её всё равно можно восстановить, углубившись в слой хранения, но нужно сказать, что вернуть её очень сложно. В теории, при мягком удалении достаточно снова присвоить deleted_at значение NULL, и на этом всё:

-- и волшебным образом всё вернулось на место!!
UPDATE foo SET deleted_at = NULL WHERE id = $1;
Читать дальше →
Всего голосов 28: ↑25 и ↓3+28
Комментарии50

Цифровая свобода. Часть 1. Менеджер паролей

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

Всем привет! Я хочу запустить цикл статей с инструкциями которые помогут, отвязаться от сервисов и вернут вам контроль над вашими данными. Тут будут представлены opensource аналоги сервисов, которыми все мы пользуемся каждый день и утилиты для бекапа ваших данных из цепких лап вендоров. Я не ставлю цель 100% уйти на опенсорс и селфхостед, всё таки сервисы должны быть удобными и доступными. Поэтому это не только полноценные аналоги, иногда это будут утилиты для бекапов. Главное это удобство, бесплатность и контроль над своими данными.

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

JSON Web Token и Secure Sockets Layer

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

Для начала разберем небольшую задачу. Она поможет читателю получить представление об основах шифрования.

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

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

Неважно, худой ты или толстый. Главное, что не жирный

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

Привет всем цифрам на весах! Сегодня хотим поговорим о весе, лишнем или не очень. Чтобы начать разговор, предлагаем откинуть предрассудки. Вот несколько спорных моментов, которые хочется привести в подтверждение того, что нельзя однозначно считать какой-то вес «нездоровым» или «лишним»:

Читать далее
Всего голосов 58: ↑52 и ↓6+63
Комментарии77

48 полноценных бесплатных книг для программистов (happy developer's day)

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

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

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

Читать далее
Всего голосов 83: ↑82 и ↓1+98
Комментарии55

Обезьяна по имени Человек Разумный. Моё первое интервью со Станиславом Владимировичем Дробышевским

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

Самир Ефимов: Здравствуйте.

Станислав Дробышевский: Здравствуйте.

Самир Ефимов: Рад вас видеть. Стоит рассказать, что и как всё будет происходить. Это приветствие нашим подписчикам. Итак, поскольку наше сообщество (Фанерозой) развивается и расширяется, то и темы, о которых мы будем разговаривать, тоже начинают выходить за рамки мира животных и людей. Давно известно, что сообщество «Фанерозой» ведут три человека: Маргарита Маяк, Александр Яскин и я, Самир Ефимов.

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

Психотронная тюрьма риторики: история о том, что мешает нам мыслить здраво

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

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

Познакомился я с ними, когда работал академконсультантом в США: помогал получать высшее образование так, чтобы иметь хорошие оценки и не тратить слишком много денег. В колледжах США риторику изучают все гуманитарии на первом курсе, иногда даже технари. И так как всю риторику сводили именно к способам убеждения, мои клиенты из Ближнего Востока и Китая часто этим возмущались. И спрашивали меня, какой скрытый смысл в том, чтобы изучать такие очевидные вещи.

Что же, ответ у меня есть. Я считаю, что этос — это бич мыслящего человека. Кайрос — кандалы, который выковал информационный век. А понимание того, как работает риторика — базовый инструмент критического мышления. Особенно для IT-специалиста.

Я так много рассказывал об этом на кухнях и в чатах, что решил написать статью. А получился лонгрид с научными исследованиями, разбором влияния алгоритмических новостных лент, и безумным комиксом из мемов, который я делал 4 часа в Фигме. Поехали!

UPD Большое спасибо всем тем людям, что помогли мне исправить ошибки и очепятки! Только на Хабре так стремятся помочь, и это неоценимо.
Читать дальше →
Всего голосов 148: ↑135 и ↓13+169
Комментарии353

7 французских слов, которые бесят тех, кто изучает английский

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

Французский язык крайне сильно повлиял на английский в ходе исторического развития. Даже сейчас в языке Шекспира есть примерно 10 000 лексем, которые прямо заимствованы с французского, без изменений в орфографии. 

А в целом примерно 40% корней английских слов восходят к общим предкам с французскими лексемами. 

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

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

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

Я живу, а они — умирают: бактерии в моем теле

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

Одна из самых значимых книг по проблеме долголетия людей «Этюды оптимизма» была написана великим русским  естествоиспытателем, лауреатом Нобелевской премии И. И. Мечниковым. В своей работе он впервые предположил, что причиной страданий человека могут быть микробы кишечника, которые при неправильном их соотношении образуют яды, отравляя организм. Книга была написана еще в начале прошлого века. За 120+ лет наука ушла далеко вперед, теперь мы знаем, какие микробы ответственны за гнилостные процессы и можем контролировать их количество. Но мы всё ещё в начале большого пути по исследованию того микромира, который существует в нас и определяет не только наше физическое, но и психическое, и духовное здоровье.

Когда я говорю «мы», я имею в виду учёных в целом и учёных-биологов из Новосибирского Академгородка в частности, одним из которых я и являюсь. Мы рассматриваем микробиоту, то есть совокупность всех микроорганизмов, населяющих человека, как целостный метаболически активный орган. Этот орган подвижен в своем составе и зависим от множества факторов — состояния здоровья человека, его диеты, качества продуктов, климата, образа жизни и даже социального окружения. Лично я живу с идеей «причинения пользы» людям через эту научную область — я вижу, как культура заботы о микробиоме улучшает качество жизни здоровых людей и облегчает состояние больных. Научно-прикладной фундамент этой темы мы с коллегами прорабатываем с 1992 года, работая над живыми пробиотиками серии «Биовестин». Здесь я хочу рассказать подробнее о том, как и зачем восстанавливать и поддерживать этот орган под названием микробиом — и, возможно, посеять в вас живой интерес к моей теме.

Читать дальше
Всего голосов 18: ↑13 и ↓5+17
Комментарии107
1
23 ...

Информация

В рейтинге
2 499-й
Зарегистрирован
Активность