Обновить
1
0
Inessa Matuznaya@Incher

Backend Developer

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

Когда умрёт мой SSD — расчёт срока жизни

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


У каждого SSD есть ресурс на количество циклов перезаписи, то есть объём записанной информации в течение всей жизни. Физика и механика SSD очень сложные, но долговечность накопителя в итоге сводится к простому правилу — чем больше на него пишешь, тем меньше он проживёт.

У одних SSD критический сбой происходит через несколько месяцев, другие работают годами. Это зависит от качества комплектующих, условий эксплуатации и везения. В общем, как у людей.
Читать дальше →

Микросервисные паттерны проектирования

Время на прочтение6 мин
Охват и читатели103K
Здравствуйте, Хабр!

В ближайшее время читайте пост о русском переводе долгожданной книги "Создание Микросервисов" Сэма Ньюмена, которая уже отправилась в магазины. Пока же мы предлагаем почитать перевод статьи Аруна Гупты, автор которой описывает самые интересные паттерны проектирования, применимые в микросервисной архитектуре
Читать дальше →

Код выгорания: как пофиксить баги в своей собственной жизни

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


Все мечтают ворваться в IT ради красивой жизни, высоких зарплат и «императорских» условий работы. Но так ли сладко живётся инженеру, как это малюют? Несмотря на все блага, доступные среднестатистическому разработчику, исследования фиксируют средний уровень благополучия, самочувствия и удовлетворённости жизнью. Оказывается, стакан полон только наполовину. IT-специалисты страдают от переработок, выгорания и не умеют справляться со стрессом. Это пост о заботливом отношении к себе. Здесь мы собрали конкретные практики, как наладить work-life balance, о котором так много говорят, повысить стрессоустойчивость, справиться с выгоранием и улучшить качество жизни, если ты в IT.

Приятного чтения!

Полное руководство по Prometheus в 2019 году

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


DevOps- и SRE-инженеры уже, наверное, не раз слышали о Prometheus.


Prometheus был создан на SoundCloud в 2012 году и с тех пор стал стандартом для мониторинга систем. У него полностью открытый исходный код, он предоставляет десятки разных экспортеров, с помощью которых можно за считанные минуты настроить мониторинг всей инфраструктуры.


Prometheus обладает очевидной ценностью и уже используется новаторами в отрасли, вроде DigitalOcean или Docker, как часть системы полного мониторинга.


Что такое Prometheus?
Зачем он нужен?
Чем он отличается от других систем?


Если вы совсем ничего не знаете о Prometheus или хотите лучше разобраться в нем, в его экосистеме и всех взаимодействиях, эта статья как раз для вас.

Собираем «Тревожный чемоданчик». Мнение спортивного туриста

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

Мне почему-то не хочется делать вид, что ничего не происходит. Потому что нынешняя военная эскалация напоминает затишье перед бурей, похожие ощущения были в январе 2020, когда «коронавирус же не у нас, он в Китае». В итоге жизнь подтвердила несостоятельность подобного «психологического» трюка. Поэтому, думая про худшее и надеясь на лучшее, я написал недавно эмоциональную заметку про «тревожный чемоданчик». Написана она с учетом моего опыта спортивного туризма (инструктор гор/пеш), поэтому профессиональные военным (выживальщикам?) просьба отнестись с пониманием. Писалось с акцентом на беларускую аудиторию, и вот искренне надеюсь, что (НЕ) пригодится всем. Просьба не политизировать данную статью, а воспринимать as is. Те кто затевает войны — Хабр не читают. Мы все в одной лодке, надеюсь написанное под катом хоть немного поможет этой «лодке» быть на плаву…


Собираем тревожный чемоданчик вместе

Как я решил стать трейдером и проигрался, а потом отыгрался, потому, что я программист. Мой опыт

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


Таким я себя видел в своих мечтах. Freepik


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


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

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

Список полезных идей для высоконагруженных сервисов

Время на прочтение5 мин
Охват и читатели19K
В этой статье я решил собрать сборную солянку из советов о том, как разрабатывать высоконагруженные сервисы, полученных практическим путем. Для каждого совета я постараюсь приводить небольшое обоснование, без подробностей (иначе статья бы получилась бы сравнима по размеру с войной и миром). Поскольку обоснований я буду приводить не очень много, не стоит воспринимать эту статью, как догму — в каждом конкретном случае приведенные здесь советы могут быть вредны. Всегда думайте своей головой перед тем, как что-то делать.

1. Думайте своей головой и проверяйте факты


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

Введение в анализ сложности алгоритмов (часть 1)

Время на прочтение10 мин
Охват и читатели401K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы покажутся чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он будет полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Введение


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

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

Введение в анализ сложности алгоритмов (часть 2)

Время на прочтение11 мин
Охват и читатели178K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Опубликовано ранее:
Часть 1

Сложность


Из предыдущей части можно сделать вывод, что если мы сможем отбросить все эти декоративные константы, то говорить об асимптотике функции подсчёта инструкций программы будет очень просто. Фактически, любая программа, не содержащая циклы, имеет f( n ) = 1, потому что в этом случае требуется константное число инструкций (конечно, при отсутствии рекурсии — см. далее). Одиночный цикл от 1 до n, даёт асимптотику f( n ) = n, поскольку до и после цикла выполняет неизменное число команд, а постоянное же количество инструкций внутри цикла выполняется n раз.
Читать дальше →

Введение в анализ сложности алгоритмов (часть 3)

Время на прочтение6 мин
Охват и читатели130K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Опубликовано ранее:
Часть 1
Часть 2

Логарифмы


image
Если вы знаете, что такое логарифмы, то можете спокойно пропустить этот раздел. Глава предназначается тем, кто незнаком с данным понятием или пользуется им настолько редко, что уже забыл что там к чему. Логарифмы важны, поскольку они очень часто встречаются при анализе сложности. Логарифм — это операция, которая при применении её к числу делает его гораздо меньше (подобно взятию квадратного корня). Итак, первая вещь, которую вы должны запомнить: логарифм возвращает число, меньшее, чем оригинал. На рисунке справа зелёный график — линейная функция f(n) = n, красный — f(n) = sqrt(n), а наименее быстро возрастающий — f(n) = log(n). Далее: подобно тому, как взятие квадратного корня является операцией, обратной возведению в квадрат, логарифм — обратная операция возведению чего-либо в степень.
Читать дальше →

Введение в анализ сложности алгоритмов (часть 4)

Время на прочтение5 мин
Охват и читатели104K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Опубликовано ранее:
Часть 1
Часть 2
Часть 3

Оптимальная сортировка


Поздравляю! Теперь вы знаете о том, как анализировать сложность алгоритмов, что такое асимптотическая оценка и нотация «большое-О». Вы также в курсе, как интуитивно выяснить является ли сложностью алгоритма O( 1 ), O( log( n ) ), O( n ), O( n2 ) и так далее. Вы знакомы с символами o, O, ω, Ω, Θ и понятием «наихудшего случая». Если вы добрались до этого места, то моя статья уже выполнила свою задачу.

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

Самый древний и один из самых красивых кораблей Европы, сохранившийся до наших дней. Загадка корабля из Осеберга

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

Автор Лысый Камрад (@LKamrad)

Осебергский корабль удивительно красив. Построенный двенадцать веков назад он выглядит так, как будто совсем недавно спущен на воду, такова его сохранность. Это не реконструкция– 90% деревянных деталей подлинные, даже 60% железных болтов* те же самые, что использовались при его постройке. Нос и корма судна украшены великолепной резьбой и имеют навершия спиральной формы, имитирующие хвост и голову дракона или морского змея.

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

Читать далее

Я написал более быстрый алгоритм сортировки

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

Может показаться откровенной наглостью в наши дни утверждать, что Вы изобрели алгоритм сортировки, который на 30% быстрее, чем лучший существующий. Увы, я должен сделать гораздо более наглое заявление: я написал алгоритм сортировки, который в два раза быстрее, чем std :: sort для многих входных данных. И за исключением случаев, когда я специально конструирую воспроизведение нахудших для него ситуаций, алгоритм никогда не бывает медленнее, чем std :: sort (и даже когда попадаются эти худшие случаи, они обнаруживаются и происходит автоматический возврат к std :: sort).

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

Читать далее

ClickHouse: Путь джедая, искавшего дом для своих данных

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

В разные эпохи развития нашего проекта в качестве основного хранилища которое было как источник данных для аналитики у нас были хранилища MySQL, ElasitcSearch, Exasol и ClickHouse. Последний нам очень нравится и вообще вызывает дикий восторг как инструмент для работы с большими массивами данных, но если посчитать итоговую стоимость владения с учётом внедрения кластера, обучения и поддержки — лучше подумайте два раза, прежде чем тащить его в ваше стек. На наших объёмах данных вложенные усилия окупаются, но если бы мы были чуть меньше, то, наверное, экономика не сошлась бы.

Главная проблема ClickHouse — это практическое отсутствие удобных и стабильно работающих инструментов для эксплуатации и большое кол-во решение рядом в погоне добиться того же пользовательского опыта как при работе с классическим RDBMS (MySQL или PostgreSQL). Вам придется приложить не мало усилий чтобы понять как эффективно применить clickhouse для ваших задач анализировать придется много: начиная от вопросов развертывания до выбора оптимальных моделей данных под профиль вашей нагрузки, в общем доступе не так много рекомендаций по выбору конфигураций под разные типы задач.

С другой стороны, его киллер-фича — это возможность работать с огромными массивами данных невероятно быстро для решений в этой области, то что раньше нам приходилось делать в Spark или через другие реализации map reduce, теперь мы можем делать внутри clickhouse. И бесплатно, потому что такими же плюсами обладают многие MPP решения вроде Vertica или Exasol. Но ClickHouse открытый, и за это мы платим налог на использование не прогнозируемым объемом поддержки или развития системы. Не всем это подходит: например, есть опыт компаний, которые сначала было влезли в это дело, потом поняли, что это не то — и взяли платные продукты с платной поддержкой с экспертизой в решении архитектурных задач именно их продуктами. В платных продуктах есть готовые инструменты, которые понятно, как применять.

Читать далее

Ультра быстрый Cron с шагом в миллисекунду, или когда тестовые задания такими прикидываются

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

Давным-давно наш коллега @novar разместил на Хабре статью с описанием вот такого незатейливого ТЗ, полученного им от потенциального работодателя:

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

Хочу предложить алгоритм, приближающийся к O(1) во всех возможных ситуациях, вместо оригинального O(n). Интересующихся прошу под кат.

Ах да. Если вы тот самый работодатель, вот готовый код под ваше ТЗ. Правда на Java, а не на C#. Но вы же не думали, что всё будет так просто?

Читать далее

Микросервисы. Не всё то золото, что хайп

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

Привет, меня зовут Владимир Кустиков, я — архитектор решений в e-Legion. И сегодня я хотел бы рассказать вам про микросервисы.

Наверное, я где-то неправ. А возможно, что у меня просто подгорело. Но в какой-то момент после запроса рассказать о том, в каких проектах я успешно применял микросервисы, мое терпение лопнуло. Ни в каких, понятно?! И это мой персональный повод для гордости. Если вам вдруг стало интересно, что еще может рассказать этот странный безумец с пылающим взором, то у меня есть хорошая новость — ниже о микросервисах будет адаптированный под хаброформат рассказ с картинками. А если нет — смело закрывайте эту статью.

Читать далее

О выгорании в СССР из книжки 1973 года

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

Досталась мне от бати книжка издания 1973 года, отпечатанная на ротапринте. Наткнулся в ней на вещи, которые бы мы сейчас назвали проблемой "выгорания". Термина в то время еще не было, но проблема была. Я выписал кое-какие вещи чисто для себя, но потом решил все же опубликовать, может кому пригодится...

Читать далее

Почему твоя мама всё ещё не прогает?

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

Случай с бомжом

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

Обычно вместо денег я даю попрошайкам-мужчинам телефон отдела кадров одной курьерской компании, которая постоянно нуждается в сотрудниках. Но у него не было ног… Тогда я подумал: «Чувак, у тебя полным полно времени. Работа за компом — лучшее, что может случиться в твоей жизни. Купон со скидкой на курс по PHP — вот, что должны были положить тебе на койку туда, где раньше были ноги, когда ты очнулся после ампутации».

Я решил предложить ему изучить программирование. В его положении он должен был быть чертовски мотивирован. Но получится ли у него?

Читать далее

Книга «Грокаем глубокое обучение»

Время на прочтение5 мин
Охват и читатели48K
image Привет, Хаброжители! Книга закладывает фундамент для дальнейшего овладения технологией глубокого обучения. Она начинается с описания основ нейронных сетей и затем подробно рассматривает дополнительные уровнии архитектуры.

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

Предлагаем ознакомится с отрывком «Что такое фреймворк глубокого обучения?»
Читать дальше →

TensorFlow vs PyTorch в 2021: сравнение фреймворков глубокого обучения

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

Всем привет! Меня зовут Дмитрий, я занимаюсь разработкой в области компьютерного зрения в команде MTS AI. Так исторически сложилось, что в своей работе я использую, как правило, связку устаревшей версии TensorFlow 1 и Keras. Пришло время двигаться дальше, но прежде чем полностью перейти на TensorFlow 2, я решил сравнить наиболее популярные на сегодня фреймворки глубокого обучения: TensorFlow и PyTorch. Эта статья будет полезна всем Data Scientist'ам, кто желает узнать чуть больше про особенности и производительность TensorFlow и PyTorch.

Читать далее

Информация

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