Pull to refresh
4
0
RouR @RouR

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

Send message

Git, я хочу все отменить! Команды исправления допущенных ошибок

Reading time4 min
Views47K
image

Git — удобная, но довольно сложная система. Сложность, прежде всего, в том, что по невнимательности можно допустить ошибку, которую затем сложно или вообще невозможно исправить. Документация Git предоставляет описание множества команд, которые дают возможность исправить ошибку.

Но вся штука в том, что для исправления проблемы нужно знать точное название команды. И здесь у нас возникает типичная проблема курицы и яйца. В этой статье рассказывается о командах, которые помогают решить проблемные ситуации.
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments20

Как я чуть не выкинул 150к на ветер или история установки приточной вентиляции в квартире

Reading time19 min
Views627K

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


Читать дальше →
Total votes 375: ↑370 and ↓5+365
Comments595

Кастомные Subject'ы в Angular: выносим логику из компонентов для переиспользования

Reading time4 min
Views2.7K

В крупных проектах на Angular часто можно встречать повторяющееся поведение в компонентах. Такое поведение желательно выносить из компонента в отдельные классы, которые можно переиспользовать. Рассмотрю два достаточно популярных кейса: переключатель и множественный выбор сущностей.

Кейс 1: Переключалка (Toggle)

Часто в исходниках приходится видеть примерно такой код:

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments4

Производительность TypeScript

Reading time15 min
Views17K

Есть лёгкие способы конфигурирования TypeScript для ускорения компиляции и редактирования. И чем раньше их внедрить, тем лучше. Также есть ещё некоторые популярные подходы к изучению причин медленной компиляции и редактирования, некоторые исправления и распространенные способы помочь TypeScript-команде в расследовании проблем.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments4

Patroni и stolon инсталляция и отработка падений. Максим Милютин

Reading time32 min
Views16K


Patroni и Stolon — два наиболее известных и продвинутых решения для оркестрации PostgreSQL и обеспечения высокой доступности (автофейловера) кластеров Leader-Followers конфигурации. Однако инженеры, переходящие со старых проверенных решений (Corosync&Pacemaker) и встроенных из других СУБД, сталкиваются со сложностями в инсталляции этих инструментов и непониманием ролей каждого из компонентов. В данном мастер-классе будет рассмотрен типичный процесс инсталляции кластеров Patroni и Stolon на виртуальных машинах (не в контейнерах), а также разобрано поведение этих кластеров при различных фейлах в инфраструктуре. Весь процесс будет демонстрироваться на трёх виртуальных машинах под управлением vagrant с использованием предварительно подготовленных образов. При желании слушатель может следовать за процессом, предварительно подготовив своё окружение.

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2

Тестируем Android-приложение правильно

Reading time5 min
Views12K

Всем привет,


Меня зовут Андрей Рыжкин, я CTO AGIMA.


Сегодня я расскажу о том, как мы тестируем приложения на Android, а также поделюсь нашим чек-листом.


Чек-лист от команды AGIMA




В 2020 году количество приложений для Android вплотную приблизилось к трём миллионам (по данным Appbrain на 28 марта). И это число продолжает расти – каждый день появляются сотни новых программ для этой операционной системы. В том числе благодаря AGIMA. Мы создаем самые разные приложения для Android – простые и сложные, узкоспециализированные и «для всех». И можем немало рассказать о нюансах их разработки.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments2

Schedulers в RxJS

Reading time4 min
Views13K

Что вы знаете о Schedulers в RxJS? Они скрывают от разработчиков работу с контекстом выполнения Observable. Как те эльфы-домовики из Гарри Поттера, которые выполняют всю черную работу в Хогвартсе, а о них никто даже и не слышал. Давайте исправим это и узнаем о них чуть больше.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments12

Не храните в базах данных HTML

Level of difficultyMedium
Reading time11 min
Views6.3K

Часто информация, которая отображается пользователю и имеет свойства разметки, хранится в базе данных и сразу в формате HTML. Я уверен, что те, кто хоть раз создавал свой блог, Хабр или что-то подобное, скажут: «Да, было». Но что, если я предложу другой подход? Использовать JSON.


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


Мем

Читать дальше →
Total votes 9: ↑6 and ↓3+3
Comments32

Y Combinator: Школа стартапов для будущих основателей (Startup School for Future Founders)

Reading time5 min
Views6.6K
image

(Мы готовим полный перевод всех учебных материалов Startup School и YC Library, следите за новостями тут)

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

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

Итак, начиная с 9 ноября, мы рады объявить о новом курсе Startup School, который мы называем Startup School for Future Founders – стартап школа для будущих основателей. Этот курс рассчитан на 6 недель и предназначен для студентов, инженеров, креативщиков и всех, кто думает о создании стартапа, но не работает активно над ним прямо сейчас.

Мы разработали новый учебный план для этого трека. Он нацелен на будущих основателей и включает в себя классику YC, вроде лекции How to Talk to Users (видео с русскими субтитрами) и эссе Before the Startup (перевод), а так же новые лекции от партнеров YC, к примеру, How to Find Incredible Startup Ideas. Мы также разработали высокоэффективные упражнения, чтобы применить эти знания на практике. Упражнения охватывают ключевые ранние темы, такие как генерация хороших идей для стартапов, поиск/проверка соучредителя и проверка вашей идеи потенциальными клиентами.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments0

Оптимизация работы с PostgreSQL в Go: от 50 до 5000 RPS

Reading time14 min
Views28K

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


В ходе разработки калькулятора цены доставки возникла такая задача: есть структура базы данных PostgreSQL и запрос к ней от сервиса на Go. Нужно заставить всё это работать достаточно быстро. В итоге нам удалось поднять пропускную способность сервиса с 50 до 5000 RPS и выявить пару нюансов при общении сервиса с базой. Об этом и пойдёт рассказ.


Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments44

Знакомство с pg_probackup. Третья часть

Reading time7 min
Views11K


Завершающая часть из цикла "Знакомство с pg_probackup" (первая | вторая части).

В предыдущей статье мы решили сразу две задачи: в первой создали архив wal-файлов, перешли к PAGE-архивам, настроили политику удержания wal-файлов; во второй — реплику из бэкапа и настроили pg_probackup на снятие бэкапов с неё.

Сегодня мы с вами продолжим тему восстановления из бэкапов.

Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments2

Защита Linux-сервера. Что сделать в первую очередь

Reading time7 min
Views84K

Habib M’henni / Wikimedia Commons, CC BY-SA

В наше время поднять сервер на хостинге — дело пары минут и нескольких щелчков мыши. Но сразу после запуска он попадает во враждебную среду, потому что открыт для всего интернета как невинная девушка на рокерской дискотеке. Его быстро нащупают сканеры и обнаружат тысячи автоматически скриптовых ботов, которые рыскают по сети в поисках уязвимостей и неправильных конфигураций. Есть несколько вещей, которые следует сделать сразу после запуска, чтобы обеспечить базовую защиту.
Читать дальше →
Total votes 66: ↑59 and ↓7+52
Comments99

Дорогой DELETE. Николай Самохвалов (Postgres.ai)

Reading time20 min
Views8.9K


Когда-нибудь в далёком будущем автоматическое удаление ненужных данных будет одной из важных задач СУБД [1]. Пока же нам самим нужно заботиться об удалении или перемещении ненужных данных на менее дорогие системы хранения. Допустим, вы решили удалить несколько миллионов строк. Довольно простая задача, особенно если известно условие и есть подходящий индекс. "DELETE FROM table1 WHERE col1 = :value" — что может быть проще, да?

Total votes 20: ↑20 and ↓0+20
Comments2

Не лайтхаусом единым: как проверить свой сайт со всех сторон

Reading time3 min
Views18K


Когда мы говорим о веб-валидаторах и оптимизации сайта под них, мы чаще всего имеем ввиду Lighthouse/Pagespeed Insights от Google, который давно стал де-факто стандартом для оценки производительности сайта. Кто-то стремится к заветным 100 баллам даже на прототипах и шаблонных приложениях в две кнопки, кто-то в шутку создает абсолютно недоступный сайт с идеальным рейтингом, но для всех фронтендеров лайтхаус предоставляет вменяемую, хоть и довольно поверхностную, аналитику производительности сайта и поиск бутылочных горлышек. Однако скорость загрузки — лишь один из множества параметров, которые стоит проверять на своём сайте, и для большинства других есть свои валидаторы и скоринговые алгоритмы. Мы рассмотрим инструменты для каждого из значимых направлений и составим список, по которому стоит прогонять свой сайт, чтобы в дальнейшем не отлавливать проблемы вручную.
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments4

Мой топ IT книг из прошлого века, актуальных до сих пор

Reading time5 min
Views64K

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

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

В данном топе книги не упорядочены по важности, они все очень хорошие, но есть одна книга, которая равнее других.

Читать далее
Total votes 69: ↑68 and ↓1+67
Comments55

Простые TypeScript-хитрости, которые позволят масштабировать ваши приложения бесконечно

Reading time6 min
Views33K

Мы используем TypeScript, потому что это делает разработку безопаснее и быстрее.

Но, на мой взгляд, TypeScript из коробки содержит слишком много послаблений. Они помогают сэкономить немного времени JavaScript-разработчикам при переходе на TS, но съедают очень много времени в долгосрочной перспективе.

Я собрал ряд настроек и принципов для более строгого использования TypeScript. К ним нужно привыкнуть один раз — и они сэкономят массу времени в будущем.

Сэкономить время в будущем
Total votes 41: ↑39 and ↓2+37
Comments32

Как и зачем в Lyft улучшали Kubernetes CronJobs

Reading time18 min
Views3.6K
Прим. перев.: эту статью, в оригинале состоящую из двух частей, написал Kevin Yang — software engineer из компании Lyft, которая хорошо известна в Kubernetes-сообществе как минимум благодаря созданию Envoy. В новом материале автор делится интересным опытом миграции большого числа традиционных cron-задач из Linux на CronJobs в K8s. Можно в деталях узнать о том, к каким проблемам в масштабах Lyft это привело и как они были решены инженерами компании.



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

Распределенные системы могут быть сложны для понимания и анализа, и в этом смысле Kubernetes — не исключение. Несмотря на его многочисленные преимущества, мы выявили несколько проблемных моментов при переходе на CronJob — встроенную в Kubernetes систему для выполнения повторяющихся задач по расписанию. В этом цикле из двух статей мы обсудим технические и эксплуатационные недостатки Kubernetes CronJob при использовании в крупном проекте и поделимся с вами опытом их преодоления.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments1

Некоторые аспекты управления VDS-сервером под Linux

Reading time9 min
Views13K
VDS (Virtual Dedicated Server) — услуга, в рамках которой пользователь получает виртуальный выделенный сервер с максимальными привилегиями. Это эмуляция реального физического сервера, у него есть рутовый доступ, возможность установки произвольных операционных систем и любого софта. При этом он обходится значительно дешевле аренды сопоставимого по мощности физического сервера.

На сервер можно поставить ОС со своего образа или воспользоваться готовым образом в панели управления.



Предположим, мы поставили Debian 10 и веб-сервер Nginx, который идёт в стандартном репозитории (apt install nginx). Давайте посмотрим, какие полезные утилиты и команды помогут в управлении сервером под Linux. Рассмотрим и отдельно Nginx, и сам VDS-сервер в целом.
Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments9

Как управлять состоянием в Angular по мере роста приложения

Reading time26 min
Views31K


Допустим, перед вами стоит задача написать фронтенд-приложение. Есть ТЗ с описанием функционала, тикеты в баг-трекере. Но выбор конкретной архитектуры лежит на вас.


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


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

Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments4

Битва C# JSON сериализаторов для .NET Core 3

Reading time13 min
Views34K
Всем привет. В преддверии старта курса «Разработчик C#» подготовили для вас интересный перевод, а также предлагаем бесплатно посмотреть запись урока: «Шаблон проектирования Состояние (State)»





Недавно выпущенный .NET Core 3 принес с собой ряд нововведений. Помимо C# 8 и поддержки WinForms и WPF, в последнем релизе был добавлен новый JSON (де)сериализатор — System.Text.Json, и, как следует из его названия, все его классы находятся в этом пространстве имен.

Это серьезное нововведение. Сериализация JSON — важный фактор в веб-приложениях. На нее полагается большая часть сегодняшнего REST API. Когда ваш javascript клиент отправляет JSON в теле POST запроса, сервер использует десериализацию JSON для преобразования его в C# объект. И когда сервер возвращает в ответ объект, он сериализует этот объект в JSON, чтобы ваш javascript клиент мог его понять. Это большие операции, которые выполняются для каждого запроса с объектами. Их производительность может значительно повлиять на производительность приложений, что я и собираюсь сейчас продемонстрировать.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments15

Information

Rating
4,720-th
Location
Россия
Registered
Activity