Как стать автором
Обновить
0
Алиса Черткова @alisa_ch read⁠-⁠only

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

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

PostgreSQL: обеспечение уникальности записи с проверкой даты валидности

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

Как бы вы решали такую задачу? Предположим, есть таблица с купонами, и у купонов есть некая дата устаревания valid_until. Вам надо обеспечить такое ограничение (constraint) на уровне БД, чтобы у одного человека мог быть только один действующий купон.


Т.е., таблица изначально выглядит так:


CREATE TABLE coupons (
    id  bigint primary key generated by default as identity,
    user_id bigint not null,
    created_at timestamp not null,
    valid_until timestamp not null
)
Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Комментарии 18

Двухтрубные системы отопления тупикового и попутного типа. Мнимая магия «петли Тихельмана»

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

Двухтрубные системы отопления тупикового и попутного типа. В чём разница и что об этом говорят современные строительные нормы.

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

Теперь настала очередь рассмотреть особенности проектирования и эксплуатации двухтрубных систем, которые крайне популярны у частных домовладельцев в ИЖС.

Так же двухтрубные вертикально-стояковые системы отопления пытаются применять и в многоквартирных домах.

Далее мы рассмотрим гидравлический расчёт систем для одного этажа частного дома с периметром в те же 50м для дом 10х15м по внутренним стенам (150м.кв на этаж).

А позже попытаемся применить те же подходы для максимальной высоты 50м в стояковой системе высотного дома.

Тупиковая система

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

Читать далее
Всего голосов 74: ↑70 и ↓4 +66
Комментарии 173

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения

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

Размер экрана — краеугольный камень мира современных смартфонов. Кто-то считает, что дисплеи должны становиться только больше, а рамки — меньше, кто-то любит «средние» дисплеи диагональю в 5+", ну а кто-то остаётся ярым поклонником и приверженцем компактных смартфонов с крошечными дисплейчиками. В наше время, купить новый смартфон с относительно небольшим дисплеем за приемлемые деньги почти нереально — самые бюджетные модели будут слишком тормозными для современного пользователя. Некоторое время назад, я купил себе бюджетный крошечный смартфон 2012 года выпуска — Samsung Galaxy Pocket, причём всего за 100 рублей. Конечно же мне захотелось довести его до ума — а доводить пришлось руками и навыками прожженного программера! Какой смартфон можно получить за 100 рублей? Читаем в статье!
Читать дальше →
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 34

Как с помощью практики на LeetCode я получил несколько офферов

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

После рассказа о том, как я получил работу в Amazon, в этом посте на reddit мне задали множество вопросов о том, как мне помог LeetCode в подготовке к собеседованиям.

В статье я отвечу на эти вопросы.

Сколько времени это заняло?

Я начал готовиться за 2-3 месяца до собеседований в BigTech. В то время я тратил по 2-3 часа в день на подготовку.

Читать далее
Всего голосов 46: ↑40 и ↓6 +34
Комментарии 54

Golang — архитектурный линтер

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

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

В данной статье расскажу про свой бесплатный, open-source, линтер под MIT лицензией и чем он может быть полезен.

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

В 100 раз быстрее Wi-Fi: Li-Fi, беспроводная связь на базе видимого спектра, стандартизирована. Перспективы технологии

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

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

Читать далее
Всего голосов 27: ↑23 и ↓4 +19
Комментарии 57

Генерация Пещер

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

Генерация пещер. Генерация на языке программирования С++, на основе клеточных автоматов с регулируемыми настройками.

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

Карательная стоматология или «Нижегородская резня»

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

Я заранее прошу убрать от экранов слишком уж впечатлительных граждан, беременных животных, неуравновешенных детей, моралистов и фанатов врачебной этики.
Читать дальше →
Всего голосов 189: ↑177 и ↓12 +165
Комментарии 216

Девять способов выстрелить себе в ногу с PostgreSQL

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

Большинство этих проблем связано с масштабируемостью. Это то, что не повлияет на вас, пока база данных мала. Но если когда-нибудь вам захочется, чтобы база данных перестала быть маленькой, о таких вещах стоит подумать заранее. В противном случае они нанесут вам удар исподтишка, возможно, в самый неудобный момент. Плюс во многих случаях работы потребуется меньше, если делать всё правильно с самого начала, чем менять уже работающую систему.
Читать дальше →
Всего голосов 30: ↑28 и ↓2 +26
Комментарии 2

Ультимативный гайд по HTTP. Структура запроса и ответа

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

Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture. Я решил написать цикл статей об истории и развитии HTTP, рассмотреть каждую из его версий и проблемы, которые они решали и решают сейчас. 

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

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

Принципы для разработки: KISS, DRY, YAGNI, BDUF, SOLID, APO и бритва Оккама

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

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

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

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

Принципов много. Мы остановимся на семи самых важных. Их использование поможет вам в развитии и позволит стать лучшим программистом.

1. YAGNI

You Aren’t Gonna Need It / Вам это не понадобится

Этот принцип прост и очевиден, но ему далеко не все следуют. Если пишете код, то будьте уверены, что он вам понадобится. Не пишите код, если думаете, что он пригодится позже.

Этот принцип применим при рефакторинге. Если вы занимаетесь рефакторингом метода, класса или файла, не бойтесь удалять лишние методы. Даже если раньше они были полезны – теперь они не нужны.

Может наступить день, когда они снова понадобятся – тогда вы сможете воспользоваться git-репозиторием, чтобы воскресить их из мертвых.
Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 9

Пишем высокопроизводительный http клиент на примере fasthttp. Александр Валялкин (VertaMedia)

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

Библиотека Fasthttp — ускоренная альтернатива net/http из стандартных пакетов Golang.
Как она устроена? Почему она такая быстрая?


Предлагаю вашему вниманию расшифровку доклада Александра Валялкина Fasthttp client internals.
Паттерны из Fasthttp можно использовать для ускорения ваших приложений, вашего кода.



Кому интересно, добро пожаловать под кат.

Всего голосов 26: ↑23 и ↓3 +20
Комментарии 5

Dolly 2 — открытый аналог ChatGPT со свободной лицензией

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

В конце марта 2023г., компания Databricks выпустила Dolly, большую языковую модель, подобную ChatGPT, дообученную на платформе Databricks Machine Learning Platform. Результат оценки работы модели Dolly показывает, что модель с открытым исходным кодом двухлетней давности (GPT-J) при дообучении на публичном датасете, собранном в Стэнфорде (Stanford Alpaca), на небольшом наборе данных из 50 000 диалогов (вопросов и ответов), может демонстрировать удивительно высокое качество обучения, не характерное для родительской модели (GPT-J), на которой она основана.

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

Чтобы исправить эту проблему, в апреле 2023г. Databricks выпустила
Dolly 2 - большую языковую модель с открытым исходным кодом и открытой лицензией для научных и коммерческих целей.

Dolly 2 - это языковая модель с 12 млрд. параметров, основанная на семействе моделей EleutherAI pythia и дообученная исключительно на новом датасете высокого качества, созданном сотрудниками Databricks с использованием RL from Human Feedback (RLHF).

Databricks открыли исходный код Dolly 2, включая код обучения, сам датасет и веса модели, подходящие для коммерческого использования. Это означает, что любая организация может создавать, владеть и настраивать комплексные модели, не платя за доступ к API или передавая данные третьим сторонам.

Читать далее
Всего голосов 34: ↑32 и ↓2 +30
Комментарии 9

Go: Должен ли я использовать указатель вместо копии моей структуры?

Время на прочтение 4 мин
Количество просмотров 17K
image
Иллюстрация, созданная для «A Journey With Go», из оригинального гофера, созданного Рене Френч.

С точки зрения производительности систематическое использование указателей вместо копирования самой структуры для совместного использования структур многим Go разработчикам представляется наилучшим вариантом. Для того чтобы понять влияние использования указателя вместо копии структуры мы рассмотрим два варианта использования.
Читать дальше →
Всего голосов 32: ↑23 и ↓9 +14
Комментарии 27

Предотвращаем утечки памяти в Go, ч. 1. Ошибки бизнес-логики

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

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

Но, по сообщениям некоторых пользователей, у программ, написанных на Go, течёт память. Issue-трекер языка Go на github по запросам «high memory usage», «memory leak», «out of memory» выдаёт сотни и тысячи тикетов. А в самом популярном вопросе на stackoverflow по словосочетанию «golang memory» автор пытается разобраться, почему потребление оперативной памяти в рантайме в 4 раза превышает количество реально сделанных аллокаций. Обращения, в которых люди рапортуют о перерасходе оперативной памяти в Go, стали массовым явлением.

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

Читать далее
Всего голосов 73: ↑71 и ↓2 +69
Комментарии 9

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

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

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


Слева видно три импланта, ставших виновниками гнойного расплавления нервной и костной тканей

Чтобы вы не питали иллюзий, сразу отмечу основные вещи:

  • У них есть срок службы. Обычно он составляет 20–25 лет, после чего нужно будет сделать «капремонт». Собственно, поэтому в цену хорошего импланта входит поддержка производителем 25 лет, иначе есть шансы не обнаружить комплектующие и вырывать его, а потом ставить новый. Так себе удовольствие.
  • Искусственные зубы нужно чистить. Да, они искусственные, но вот бактерии на них прилетают вполне себе живые.
  • Не стоит пропускать ТО: это та же самая полугодовая гигиена, что для живых зубов, но другими инструментами (без металла).
  • Требования к домашней чистке у имплантированных зубов выше, чем у «родных»: нужны ирригатор, ёршики и нить.

Разумеется, мы время от времени встречаем пациентов, забывших про «ТО рта», но этого случая не было бы в обучающих, если бы всё пошло как обычно. Так что осторожнее: ниже будут кровь и разные органы на фото, особенно в той части, где «пошло не по плану».
Читать дальше →
Всего голосов 86: ↑80 и ↓6 +74
Комментарии 78

Децентрализованный мир: как выглядит блокчейн-разработка и зачем ее сегодня изучать

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

За два года на Бали я успел убедиться, что это настоящая Мекка для людей, связанных с криптовалютой. Сюда стекаются инвесторы, трейдеры, разработчики и основатели стартапов, здесь постоянно запускаются новые проекты и проводятся свои форумы. Чем больше общаешься с представителями местного криптосообщества, тем лучше понимаешь, что число связанных с криптовалютой проектов растет огромными темпами. Мне как руководителю HR-агентства в сфере IT интересно за этим наблюдать с профессиональной точки зрения: сервисы, связанные с криптой, пишутся на блокчейне — так что увеличение их числа автоматически повышает спрос на блокчейн-разработчиков. 

Впрочем, это не только мои наблюдения: на Indeed (крупнейшая международная площадка по поиску работы) число вакансий в области крипты и блокейна в прошлом году выросло на 118%. В США примерно за тот же период спрос на этих специалистов увеличился в 6 раз. Разработчиков на блокчейне ищут не только стартапы, но и крупные компании — например, банк JPMorgan.

Рынок труда

Оценивать спрос на блокчейн-разработчиков по вакансиям на рекрутинговых площадках не очень удобно: часто поиск ведется внутри криптосообщества или на специализированных ресурсах. Но даже если изучить Linkedin, только в Евросоюзе сейчас ищут более 2 тысяч специалистов по программированию на блокчейне, в Северной Америке — 6,8 тысяч, в Азиатско-Тихоокеанском регионе — 4,6 тысячи. Причем львиная доля компаний ищет сотрудников на удаленку — то есть эти предложения доступны и для соискателей из России, которые не хотят релоцироваться. Например, в Северной Америке удаленный формат предполагает почти половина вакансий.

Читать далее
Всего голосов 12: ↑3 и ↓9 -6
Комментарии 21

Впечатления от Weekend Offer для бэкенд-разработчиков

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

В прошлой статье я рассказывал про One Day Offer Fronted, сегодня поделюсь впечатлениями об аналогичном мероприятии для бэкенд разработчиков.

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

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

Ищем боттлнеки за 30 минут с помощью Jaeger трейсов

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

Всем привет! Меня зовут Артем, я бэкенд-разработчик в команде клиентского бэкенда. Одна из важных частей моей работы — это снижение латенси нашего бэкенда. История, о которой я расскажу в статье, как раз и началась с одной из таких задач. Звучала она следующим образом:


В одном из эндпоинтов чекаута 99 перцентиль латенси пробивает SLO. Нужно это исправить.

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

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

Не трогайте разработчиков. Отстаньте. Просто не беспокойте

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


Всем привет! Меня зовут Ян, я руководитель разработки Департамента ИТ инвестиционного бизнеса Газпромбанка. Совершенно неожиданно я занял первое место на конференции Highload++ с докладом про то, как организована работа в наших командах разработки.

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

В результате из простой задачи «не трогайте разработчиков» получилось сделать и очень правильное обучение (если вы дежурите, то у вас нет шансов не разбираться во всех процессах команды), и снижение техдолга (дежурный не берёт таски по фичам на спринты, но может заниматься документацией и всякими вещами в наведении порядка, до чего обычно не доходят руки), и много чего ещё. Сначала казалось, что за это мы платим снижением эффективности команды на 8–10 % (ведь мы выключаем дежурного из разработки), но на деле оказалось, что эффективность даже растёт. Есть ряд вещей, которые очень поменялись и в управлении такими командами в лучшую сторону.

Естественно, такой подход имеет кучу подводных камней и подходит далеко не всем и не каждому типу команд.

Сейчас расскажу про практический опыт.
Читать дальше →
Всего голосов 190: ↑172 и ↓18 +154
Комментарии 79
1

Информация

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

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

Backend Developer
Middle
Golang
Apache Kafka
PostgreSQL
PHP
MongoDB
Aerospike