Как стать автором
Обновить
38
0.3

Senior Back-End Developer .NET Core C#

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

Мини-гайд по погашению технического долга

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

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

А у вас накопились долги?

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

Пять факторов, которые влияют на выбор базы данных

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

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

Сегодня есть гораздо больше баз данных, чем когда-либо. В декабре 2012 года, когда DB-Engines.com впервые начал ранжировать базы данных, у него получился список из 73 систем (существенный рост по сравнению с самым первым списком из 18 систем). Спустя десять лет, на декабрь 2022 года в списке было уже почти четыреста систем. За последнее десятилетие произошёл настоящий кембрийский взрыв технологий баз данных. Нужно ориентироваться в обширном пространстве вариантов: SQL, NoSQL, множество «многомодельных» баз данных, которые могут быть сочетанием SQL и NoSQL, или множественные модели данных NoSQL (сочетающие две или более опций: документы, ключи-значения, широкие столбцы, графы и так далее).

Кроме того, пользователи не должны путать популярность с применимостью для них. Хотя сетевой эффект имеет свои преимущества («Все пользуются X, поэтому не ошибусь, если выберу её»), он также может привести к групповому мышлению, торможению инноваций и конкуренции.

Мы с моим коллегой Артуром Песа недавно рассмотрели пять факторов, которые пользователи должны учитывать в первую очередь при выборе и сравнении баз данных.
Читать дальше →
Всего голосов 30: ↑25 и ↓5+29
Комментарии3

Сколько стоит жизнь в Канаде. Расходы за год

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

За 2022 год в Торонто мы потратили более 100 тысяч канадских долларов (или более 80 000 USD). Далее все суммы в статье указаны в канадских долларах (CAD), чтобы перевести их в американские - достаточно просто умножить число на 0.8. Курс этих двух валют достаточно стабилен и на протяжении многих лет меняется незначительно в ту или иную сторону.

Читать далее
Всего голосов 102: ↑99 и ↓3+125
Комментарии790

Boson — разработка СУБД «с нуля» (часть II)

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

В первой части статьи мы обсуждали разработку самого нижнего слоя СУБД Boson - CachedFileIO. Как упоминалось, статистика такого явления как Locality of Reference говорит о том, что в реальных приложениях ~95% запросов к данным локализованы в 10-15% базы данных. При этом среднее соотношение чтения/записи - 70%/30%. Это делает эффективным использование кэша (cache) работающего на основе алгоритма Least Recently Used (LRU). Реализовав его, мы получили 260%-600% прироста скорости чтения при 87%-97% cache hits.

Следующим после кэша слоем СУБД Boson является хранилище записей RecordFileIO. Это уже первый прообраз базы данных, который начинает приносить прикладную пользу. Сформулируем верхнеуровневую спецификацию требований:

Читать далее
Всего голосов 20: ↑19 и ↓1+27
Комментарии30

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

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

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

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

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

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

Охота за тараканами: как я ходил на групповую психотерапию

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

90% проблем в нашей жизни — это проблемы во взаимоотношениях с другими людьми. Конфликты на работе, сложности в близких отношениях или одиночество из-за страха, что никто не примет тебя с твоими тараканами. И самое неприятное, что для этих проблем характерна бесконечная воспроизводимость.

Читать далее
Всего голосов 74: ↑63 и ↓11+74
Комментарии68

Что читать техлиду: 7 увлекательных книг

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

Какие качества отличают хорошего технического лида? Уверены, как минимум инициативность, стратегическое видение, интерес к новым практикам и инструментам, идущие рука об руку с желанием постоянно развиваться. Немалую роль в lifelong learning техлида могут сыграть правильно подобранные книги.

Немет, Луц, Лав, Танненбаум, Страуструп, Олифер, Лукас — вот лишь некоторые известные авторы, о которых мы сегодня не будем говорить. Надеемся, что раз вы стали лидером технической команды, то с фундаментальной литературой в своей области знаний знакомы не понаслышке.

Под катом рекомендуем 7 изданий о soft-skills, методологиях, управлении командами и проектами.

Читать далее
Всего голосов 57: ↑55 и ↓2+60
Комментарии16

English Tenses — моё представление времён в английском языке

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

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

Сразу хочу отметить, что я не являюсь педагогом и у меня вообще нет никакого ни лингвистического, ни педагогического образования. Данной статьей я просто хочу поделиться своей диаграммой по изучению времен, возможно кому-то она будет полезной и поможет в понимании времен и того, как и когда использовать, то или иное время. Данная диаграмма будет поверхностной и не будет углубляться во все подробности языка (и так она получилась огромной), она не охватывает все многообразие времен и конструкций в английском. Уровень данной диаграммы А2-В1.

И сразу начну с диаграммы:

Читать далее
Всего голосов 16: ↑14 и ↓2+15
Комментарии32

Советы по архитектуре кода для начинающих

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

Для кого статья

Вы уже написали свои первые 1000 строк кода и сейчас хотите сделать их понятнее, потому что внесение изменений занимает столько-же времени, сколько написать заново, но советы из ООП, SOLID, clean architecture и т.д. непонятны вам.

О чем статья

Эта статья - не объяснение принципов ООП, SOLID своими словами, а попытка создать промежуточный уровень между никакой и чистой архитектурами. 100% советы будут накладываться друг на друга и перефразировать SOLID, но так даже лучше.

От кого статья

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

Отказ от ответственности

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

Формат статьи - наводящие советы / вопросы.

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

Убьет ли HTTP/2 лонг поллинг и вебсокеты?

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

В новом тексте по итогам Ruby Russia 2022 Full-Stack разработчик и консультант Learning Tapestry Александр Уланов рассуждает, есть ли у Server-sent events потенциал обойти websocket-ы и long polling.

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

Boson — разработка СУБД «с нуля» (часть I)

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

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

Каждый разработчик "кровавого" enterprise в своей работе использует СУБД (SQL/NoSQL) и меня всегда искренне интересовало как они устроены в самом сердце, на самом низком уровне. Почитав документацию и исходный код SQLite и MongoDB, про используемые в индексах и интерпретаторах запросов алгоритмы, осознал, что несмотря на широкую распространенность и некую привычность, системы управления базами данных (СУБД) - это сложные программные продукты, реализация которых не всем под силу. Отлично - как раз то, что мне надо. С мотивацией разобрались, перейдем к делу.

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

Читать далее
Всего голосов 71: ↑68 и ↓3+82
Комментарии60

Рельсовая революция

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


<< До этого: Пар высокого давления, часть 2: первая паровая железная дорога

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

Локомотивы: традиции Тревитика


Эволюция технологии локомотивов шла с 1810-х по 1820-е годы исключительно в угледобывающих регионах севера Британии, а там – практически только вдоль побережья реки Тайн в районе Ньюкасла. В воды этой реки стекался поток угля, прибывавший к ней по клубку рельсовых дорог. Поэтому самым долговечным вкладом Тревитика в историю стал не Пенидаррен, не «Дракон», не «Поймай-кто-сможет», а паровая машина, построенная для Кристофера Блэкета, собственника каменноугольной шахты Тайнсайда в деревне Уайлэм. Шахта Блэкета станет самым плодотворным центром строительства локомотивов 1810-х.
Читать дальше →
Всего голосов 107: ↑107 и ↓0+107
Комментарии48

Личный опыт подтягивания английского к собеседованиям

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

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

Читать далее
Всего голосов 27: ↑24 и ↓3+23
Комментарии18

Ещё одна подборка книг по фронтенду

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

«Под поверхностью машины движется программа. Без усилий, она расширяется и сжимается. Находясь в великой гармонии, электроны рассеиваются и собираются. Формы на мониторе — лишь рябь на воде. Суть остаётся скрытой внутри…» Мастер Юан-Ма, Книга программирования.

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

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

От Isolation к Consistency — дорога длиной в 30 лет

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

Участвую в стартапе, в котором разрабатывается СУБД нового типа (работает поверх некоторых kv-движков, кардинально расширяя их возможности, про это немного можно прочитать здесь). Для того, чтобы сравнить то, что понемногу получается, с тем, что имеется в индустрии, пришлось на глубоком уровне проработать первоисточники по темам Isolation и Consistency (уточню, что имеется ввиду не та Consistency, что в ACID). Обнаружил интересные нюансы, которые и излагаю в этой статье.


Тезисно:


  • Термин Phantom Read является продуктом испорченного телефона
  • Смысл понятий Lost Update, Write Skew и Read Skew для разделения уровней изоляций неочевиден и относителен
  • Движок, который обеспечивает уровень изоляции Serializable, в распределённом мире может вести себя весьма причудливо, например, всегда возвращать пустой результат для read-only транзакций — и ему за это по стандарту "ничего не будет"
  • Strong consistency в Cosmos DB — предел мечтаний? (спойлер: нет)

Ну, и ещё кое-что по мелочи. В конце рассмотрим вот такой венец творения человеческого разума:


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

Нестандартный полиморфизм. Паттерн Type Erasure

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

Нестандартный полиморфизм. Паттерн Type Erasure.

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

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

15 причин, почему ты всё ещё джун

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

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

Итак, что обычно мешает условному джуну подтянуться до условного мидла?

Перейти к просветлению
Всего голосов 67: ↑40 и ↓27+18
Комментарии104

PostgreSQL под капотом. Часть 1. Цикл сервера

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

Продолжаем изучать исходный код PostgreSQL

В этот раз исследуем главный цикл сервера:

- Принятие входящих подключений;

- Проверка окружения;

- Обработка упавших воркеров.

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

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

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

Такая история всегда начинается одинаково. Вам показывают демку, в которой набор проблем, ранее казавшийся сложным, решается на раз — достаточно запустить некий Волшебный Инструмент. Зачастую такой инструмент рекомендуют Большие Тузы из отрасли, либо не только рекомендуют, но и сами поддерживают. У вас в организации отыскиваются коллеги, ратующие за то, чтобы немедленно взять эту технологию на вооружение. Буквально наутро этот новый инструмент приравнивается к «решению всех наших проблем».

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

К тому моменту, как его обсуждение доходит до руководителей высшего звена, инструмент уже раскручен в пресс-релизах. Вы видите статьи в духе «Технология X морально устарела, время обзаводиться Волшебным Инструментом». Те из вас, кто не так давно работает в технической отрасли, могут предположить, что, пожалуй, была сделана какая-то добросовестная оценка, призванная проверить, в самом ли деле Волшебный Инструмент так хорош, или безопасен, или уместен именно в вашем бизнесе. Нет, вы ошибаетесь. 

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

Насколько быстр ASP.NET Core?

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

В последние годы команда .NET усиленно рекламирует ASP.NET Core как один из самых быстрых веб-фреймворков на рынке. Источником этих утверждений всегда были бенчмарки TechEmpower Framework Benchmarks.

Скотт Хантер - директор по управлению программами .NET, утверждает, что .NET более чем в 10 раз быстрее, чем Node.js.

Скотт также утверждает, что .NET быстрее, чем Java, Go и даже C++.

Читать далее
Всего голосов 64: ↑63 и ↓1+72
Комментарии31

Информация

В рейтинге
2 101-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Backend Developer
Senior
C#
.NET Core
SQL