Обновить
0
@Lifehack043read⁠-⁠only

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

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

Что же такого прекрасного в функциональном программировании?

Время на прочтение18 мин
Охват и читатели22K

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

Однако вы можете задаться вопросом: должна же быть какая-то причина того, почему эти адепты настолько восхищены? По моему личному опыту, интерес к функциональному программированию обретают не ленивые и некомпетентные программисты. [Один из тех, кому я показал эту статью, прореагировал интересным образом. Он сказал что-то вроде: «Вообще-то я люблю функциональное программирование, потому что я ленивый и компетентный. Благодаря нему мне не приходится думать о многих вещах».] Скорее наоборот, осваивать его были склонны самые умные кодеры, которых я знал; люди, сильнее всех стремившиеся писать хороший код. (Хотя они обычно были исследователями.) И это вызывает вопрос: отчего же они все в таком восторге?
Читать дальше →

Я решил 500 задач на LeetCode — и они действительно меня чему-то научили

Время на прочтение5 мин
Охват и читатели302K

Много кто знает, что такое Leetcode. Это своего рода решебник — задачи, которые дают на технических собеседованиях в крупных компаниях (в том числе и из FAANG) и их решения.

Такие задания, заточенные на знание структур данных и алгоритмов, все чаще встречаются и на собеседованиях в небольших компаниях. Многим кандидатам это не нравится — они утверждают, что навыки «литкодинга» ничего не говорят о том, как человек справится с реальной работой. Согласен. Если вы не можете слёту решать задачи c LeetCode, это не значит, что вы плохой разработчик. Возможно, вам в реальной работе вообще никогда не понадобится, скажем, инвертировать бинарное дерево. Однако глупо отрицать, что на LeetCode можно изучить массу подходов и инструментов, которые окажутся полезными. В этой статье я расскажу о том, что вынес для себя из работы с платформой.

Уроки Литкода

Развёртывание в Kubernetes из GitLab

Время на прочтение31 мин
Охват и читатели51K

Развёртывание в Kubernetes из GitLab


Развёртывание в Kubernetes из GitLab


Это продолжение предыдущего туториала про командную разработку с использованием GitLab. Фокус предыдущей статьи был на организации непрерывной поставки в работе команды. В этой статье мы уделим основное внимание именно практическим действиям необходимым для развёртывания из GitLab в Kubernetes.


А именно мы возьмём максимально простое но достаточно содержательное приложение на React.js, докеризуем его, затем развернём в Kubernetes локально при помощи Docker Desktop. После этого развернём его уже на Google Cloud Platform (GCP), и завершим разработкой CI/CD конвейера в GitLab для публикации нашего приложения в Google Kubernetes Engine.


Желательны но необязательны базовые знания


  • Docker;
  • Kubernetes;
  • Git;
  • Node.js;
  • React;
  • Bash.

В дальнейшем мы сделаем следующее.


  • ? Познакомимся c нашим приложением, обсудим из чего оно состоит.
  • ? Докеризуем наше приложение.
  • ☸️ Развернём наше приложение в Kubernetes локально на Docker Desktop.
  • ☁️ Обсудим особенности GCP и как нужно изменить наше приложение, а затем ещё раз развернём наше приложение в Kubernetes но уже в GCP.
  • ? Завершим наш туториал созданием конвейера для развертывания приложения в GCP при помощи GitLab.

Разные этапы от докеризации до Kubernetes на Google Cloud Platform

Читать дальше →

О мозге и его материальности

Время на прочтение63 мин
Охват и читатели10K

Мозги есть у всех, просто не все разобрались с инструкцией. Хью Лори

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

Читать далее

Запросы в PostgreSQL: 6. Хеширование

Время на прочтение20 мин
Охват и читатели25K

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

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

Читать далее

Под капотом Ruby. GVL

Время на прочтение8 мин
Охват и читатели5.4K

Давным давно уже уже была написана статья о том что такое GVL (или GIL, кому как привычнее) и как он работает, однако с того времени некоторые вещи поменялись (к примеру, , а так же в Ruby 3.0 завезли Ractor'ы - новую абстракцию для реальной параллельной работы тредов. Мне стало интересно узнать что поменялось в планировщике ruby для реализации множества GVL. В этой статье я попытаюсь понять алгоритм, по которому GVL передается от одного треда к другому, как блокирующее IO позволяет продолжить работать другим тредам, а так же выяснить до сих пор ли операция добавления элемента в массив является атомарной операцией

Читать далее

Виниры нужны не только для красоты

Время на прочтение9 мин
Охват и читатели18K
image

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

Иногда у людей бывают настолько жёсткие эстетические проблемы, что простым пломбированием, отбеливанием и другими процедурами вопрос решить невозможно. Например, вам не повезло и всё детство вы провели в местности, где вода содержит больше 2,5 мг/л фтора. В результате — тяжёлая эрозивная форма флюороза зубов. Это состояние, когда эмаль закладывается хаотично из-за дефектной минерализации. Кариесом такие пациенты, правда, почти не болеют, но это слабое утешение в ситуации с некрасивыми окрашенными дефектами.

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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №482 (23 — 29 августа 2021)

Время на прочтение2 мин
Охват и читатели7.3K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

Читать дальше →

Запросы в PostgreSQL: 1. Этапы выполнения

Время на прочтение17 мин
Охват и читатели113K

Привет, Хабр! Начинаю еще один цикл статей об устройстве PostgreSQL, на этот раз о том, как планируются и выполняются запросы.

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

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

Материал перекликается с нашим учебным курсом QPT «Оптимизация запросов», но ограничивается только подробностями внутреннего устройства и не затрагивает оптимизацию как таковую. Кроме того, я ориентируюсь на еще не вышедшую версию PostgreSQL 14. А курс мы тоже скоро обновим (правда, на версию 13; приходится бежать со всех ног, чтобы только оставаться на месте).

Поехали

PostgreSQL Antipatterns: «где-то я тебя уже видел...»

Время на прочтение4 мин
Охват и читатели31K

Иногда при анализе производительности запроса на предмет "куда ушло все время" возникает стойкое ощущение deja vu, что вот ровно этот же кусок плана ты уже где-то раньше видел...

Пролистываешь выше - и таки-да, вот он рядом - но почему он там оказался, и как выйти из Матрицы самому и помочь коллегам?

Читать далее

Как мы использовали расширенную статистику Postgres и ускорились в 2850 раз

Время на прочтение9 мин
Охват и читатели14K

В этом переводе к старту курса по Fullstack-разработке на Python напоминаем о том, насколько важно знать технологии в деталях, грамотно применять их и планировать работу в целом. Цифра 2850 в заголовке — не преувеличение: ранее занимавший две минуты запрос в базе данных компании Affinity сегодня выполняется за 42 миллисекунды. Подробности, как всегда, под катом. А если вам нужен план развития навыков с большим количеством практики, вы можете обратить внимание на наши курсы.

Читать далее

Компоненты-конструкторы: мощь ng-content в Angular

Время на прочтение9 мин
Охват и читатели20K

Проекция контента — одна из базовых возможностей Angular, о которой слышали почти все. А с недавних пор по ней появилась и хорошая официальная документация. Тем не менее в реальных задачах разработчики часто обходят ng-content стороной, прибегая к более сложным и перегруженным решениям и усложняя дальнейшее использование и поддержку компонента.

В этой статье я хотел бы показать несколько типовых кейсов для ng-content при разработке многократно используемых компонентов. А еще — рассказать о преимуществах, которые они могут нам дать.

Давайте посмотрим

ФИАС с человеческим лицом

Время на прочтение5 мин
Охват и читатели8.9K

Всем привет. Некоторое время назад пришлось разбираться в ФИАСе, хочу поделиться своими наработками. Эта статья расскажет о том как базу развернуть, как её обновлять и как ей пользоваться.

К счастью мне не пришлось во всём разбираться самому, потому что на Хабре есть хорошая серия статей о ФИАС (Адреса ФИАС в среде PostgreSQL), и у этих статей не менее ценные коменты. На их основе у меня получилось написать скрипты и написать Докер образ, всё опубликовано на ГитХабе.

Как работать с образом описано в README.md, здесь я распишу всё тоже самое но более подробно.

Читать далее

Не «Оперой» единой. Выбираем proxy-сервис вместо Opera VPN

Время на прочтение4 мин
Охват и читатели101K


Признаюсь, я никогда не считал себя преданным фанатом Opera. Тем не менее этот браузер был установлен на всех моих компьютерах — из-за простой и удобной функции VPN (который даже не VPN, а, скорее, продвинутый прокси), позволявшей при необходимости быстро менять внешний IP-адрес и локацию, что бывает просто необходимо в целом ряде случаев — скажем, в процессе отладки веб-приложений. Да мало ли по какой причине благородному дону вдруг понадобится предстать в сети канадским фермером или испанским кабальеро? И вот с недавних пор сервис Opera VPN был отключен для российских пользователей разработчиками браузера. Что ж, настало время искать альтернативу!
Читать дальше →

Publish-Subscribe на TypeScript — уменьшаем связанность

Время на прочтение5 мин
Охват и читатели7K

Известно, что одним из признаков хорошего архитектурного дизайна является слабая связанность между отдельными модулями приложения. Достичь этого можно разными способами: Dependency Injection, с помощью паттернов проектирования Mediator, Publish-Subscribe и некоторыми другими, многие из которых так или иначе реализуют принцип инверсии зависимостей, ответственных за уменьшение связанности. Об одном из таких паттернов, а именно о Publish-Subscribe (далее PubSub) мы сегодня и поговорим. А заодно, предлагаю рассмотреть мою собственную реализацию на TypeScript, построенную на декораторах - люблю я декларативный подход, ничего тут не сделаешь.

Читать далее

Nginx. Фазы обработки запроса. If is Evil?

Время на прочтение2 мин
Охват и читатели24K

Самое страшное зло в Nginx - это if в location. Об этом написано много, в том числе на nginx.com. Процитируем кусочек:

The only 100% safe things which may be done inside if in a location context are:
- return ...;
- rewrite ... last;

Казалось бы, если использовать конструкцию вида

location / {
if ( $condition ) {
return 418;
}
...
}

то ничего страшного не произойдет, однако, при определенном "умении", можно сломать даже то, что должно работать на 100%. Но будет ли виноват в нашей поломке if?

Читать далее

Easy canvas — простая js библиотека, которая невероятно упрощает работу с canvas html

Время на прочтение3 мин
Охват и читатели11K

Ссылка на GitHub

Очень простая библиотека javascript, которая сильно упрощает работу с canvas html.

Очень простая библиотека javascript, которая сильно упрощает работу с canvas html.

Читать

Сборка и запуск Angular приложения в Docker контейнере

Время на прочтение2 мин
Охват и читатели31K

В этой статье мы рассмотрим как собирать и запускать Angular приложение в Docker контейнере.

Читать далее

Антирекламный щит рядового пользователя: Яндекс без дзена, YouTube без рекламы, Хабр без баннера

Время на прочтение7 мин
Охват и читатели160K

Контроль над содержимым web должен принадлежать в т.ч. рядовому пользователю, а не только маркетологам. Юзер сам в состоянии определять, что для него является пагубной рекламой, а что полезным контентом. Если пользователь считает, что новости или дзен Яндекса - это своего рода реклама, то он может ограничить себя от „вредоносного для него контента“ совершенно законно в „касание“ и без красноглазия. Решение — под катом.

Под кат

Загадка трубы, или AsyncPipe в Angular

Время на прочтение5 мин
Охват и читатели22K

Всем привет. Меня зовут Дима, я фронтенд-разработчик в Тинькофф.

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

Читать далее
1
23 ...

Информация

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