Pull to refresh
8
0

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

Send message

Java и современный процессор, Часть 1: Память и иерархия кэша

Reading time 12 min
Views 8.1K

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

Читать далее
Total votes 15: ↑14 and ↓1 +13
Comments 3

Что на самом деле происходит, когда пользователь вбивает в браузер адрес google.com

Reading time 19 min
Views 410K


Эта статья является попыткой ответа на старый вопрос для собеседований: «Что же случается, когда вы печатаете в адресной строке google.com и нажимаете Enter?» Мы попробуем разобраться в этом максимально подробно, не пропуская ни одной детали.

Примечание: публикация основана на содержании репозитория What happens when...

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

Мы перенесли перевод в репозиторий GitHub и отправили Pull Request автору материала — оставляйте свои правки к тексту, и вместе мы сможем значительно улучшить его.
Читать дальше →
Total votes 85: ↑57 and ↓28 +29
Comments 22

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

Reading time 9 min
Views 18K

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

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

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

Читать далее
Total votes 88: ↑85 and ↓3 +82
Comments 60

Одноплатники декабря уходящего 2022 года: от RISC-V платы до сетевого хранилища для Raspberry Pi Compute Module

Reading time 4 min
Views 13K

Привет, Хабр! В декабре 2022 года производители электронных систем и компонентов продолжали свой труд по созданию все новых устройств. Их вышло достаточно много, а сегодня расскажем о 5 интересных моделях, которые могут заинтересовать многих. Это девайсы как для DIY-проектов, разрабатываемых в домашних условиях, так и для профессиональных систем. Все самое интересное — под катом.
Читать дальше →
Total votes 50: ↑47 and ↓3 +44
Comments 8

Налоги в Грузии — релокация и эмиграция в юрисдикцию, что нужно знать работнику и работодателю из России

Reading time 15 min
Views 38K

Друзья, всех приветствую! Сегодня, я хочу обсудить налогообложение физических лиц, граждан РФ в Грузии, поднять вопросы отсроченных налоговых рисков при смене и восстановлении статуса налогового резидента РФ, которые могут возникнуть у релокантов и эмигрантов, осуществляющих предпринимательскую или трудовую деятельность, в том числе удаленно с территории Грузии.

Читать далее
Total votes 14: ↑12 and ↓2 +10
Comments 13

Топ полезных SQL-запросов для PostgreSQL

Reading time 7 min
Views 79K

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

Читать далее
Total votes 83: ↑81 and ↓2 +79
Comments 15

Управление сроками на фрилансе: как не делать всё в последний момент и не опаздывать

Reading time 6 min
Views 3.4K

Это глава из «Книги нормального фрилансера», в которой я делюсь опытом проектировщика интерфейсов, работающего на себя.

Если видишь до дедлайна, что не сдашь работу в срок,
Не спеши писать клиенту и расстраивать его.
Лучше скройся и втихую доведи всё до конца —
И клиент, поволновавшись, будет вдвое рад тебе!

По-настоящему управлять сроками можно при соблюдении двух условий. Первое: сроки называет фрилансер, а не клиент. Второе: сроки не зависят от третьих лиц.

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

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

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 2

Как уехать из России: расширенная подборка полезных ссылок для эмиграции

Reading time 4 min
Views 56K

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

Читать далее
Total votes 70: ↑47 and ↓23 +24
Comments 72

Как научиться инвестировать с нуля: годные курсы

Reading time 3 min
Views 9.9K

Если вы много зарабатываете (ну, вдруг вы там айтишник, например?), то рано или поздно перед вами встанет вопрос инвестирования заработанных капиталов. Отдавать свои деньги в доверительное управление кому бы то ни было я бы не советовал (it's a trap!), но вот с обучением тоже могут возникнуть определенные проблемы.

Существует два основных типа курсов про то, «как правильно инвестировать»: 1) дорогие и бесполезные; 2) недорогие и толковые. Первых гораздо больше, но в этой статье речь пойдет про вторую категорию.

Читать далее
Total votes 22: ↑13 and ↓9 +4
Comments 12

Глубокое погружение в Java Memory Model

Reading time 53 min
Views 123K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

Читать дальше →
Total votes 109: ↑109 and ↓0 +109
Comments 60

Компьютеры быстры, но вы этого не знаете

Reading time 5 min
Views 34K

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

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

Смотрели ли вы эти видео?

  1. Сравнение размера Вселенной в 3D
  2. Измеряем богатство Джеффа Безоса в рисе

Второе нравится мне больше всего. Ежедневно я съедаю по чашке риса, так что измеряю состояние Джеффа не только наглядно, но и своим желудком.

Совсем недавно я внёс несколько оптимизаций в код, что помогло мне интуитивно понять, насколько быстро может работать компьютер. И я решил, что этим нужно поделиться.
Читать дальше →
Total votes 84: ↑80 and ↓4 +76
Comments 232

Потоковая обработка на go1.18

Reading time 7 min
Views 4.8K

В версии 1.18 языка Go появились генерики, дающие возможность писать обобщенный код, то есть код, не зависящий от конкретного типа данных. Например можно написать код, обрабатывающий потоки данных - применить к ним одну и ту же функцию, отфильтровать, просуммировать и т.д., не завязываясь на конкретные типы данных. Так как я вижу потенциал в парадигме поточной обработки с помощью итераторов/стримов и теперь есть возможность реализовать ее в Go, я решил сделать это.

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 6

Holy C++

Reading time 5 min
Views 30K

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

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

1 - union - сумм тип из 70х, в С идея хранения одного типа из нескольких в одном участке памяти выглядит неплохо и сейчас, ведь там все типы это набор байт с заданным размером.

В С++ же использование union это автоматическое undefined behavior, например:

Читать далее!
Total votes 90: ↑63 and ↓27 +36
Comments 362

Память в браузерах и в Node.js: ограничения, утечки и нестандартные оптимизации

Reading time 32 min
Views 40K

Интро: почему я написал эту статью


Меня зовут Виктор, я разрабатываю страницу результатов поиска Яндекса. Несмотря на внешнюю простоту, поисковая выдача — сложная штука: на каждый запрос генерируется своя уникальная страница, на которой в зависимости от запроса может присутствовать блок Картинок, Карты, Переводчик, видеоплеер и многие другие компоненты. Все они должны запускаться и работать в памяти обычных бюджетных телефонов, которые использует большинство наших пользователей. Браузерам должно хватать ресурсов, чтобы пользователь не видел вот такого:



На своих серверах мы должны генерировать сотни миллионов уникальных страниц в сутки — это сложнее, чем просто отдавать одни и те же ресурсы. Генерация страницы не должна быть слишком требовательной к памяти сервера.


Разрабатывая проект на JavaScript (TypeScript, ClojureScript или каком-то другом языке, транслируемом в JavaScript), мы привыкли создавать объекты, массивы, строки и вообще писать код, как будто память бесконечна. Это не так. Я расскажу о видах проблем с памятью, о том, какие ограничения мы часто забываем и как их можно преодолеть. В ответ браузеры и пользователи скажут вам спасибо.


Читать дальше →
Total votes 55: ↑55 and ↓0 +55
Comments 12

Распределенные Workflow на PHP. Часть 2

Reading time 11 min
Views 13K

В первой, теоретической, части статьи мы разобрали зачем нужны Workflow, где они применяются и какие способы их реализации существуют. Наша компания занимается разработкой энтерпрайз-софта — для нас это больная тема. Поэтому мы давно искали инструмент, который позволит легко вписывать новые шаги в любую схему, не ломая существующую бизнес-логику. Нашли и на его основе сделали свою новую разработку. Теперь давайте перейдём к более практической части и разберем, на что способен Temporal PHP SDK.

Меня зовут Антон Титов. Я более 15 лет занимаюсь коммерческой разработкой. Являюсь соавтором Spiral Framework, RoadRunner и Cycle ORM. Основной стек: PHP и Golang.

Читать далее
Total votes 29: ↑28 and ↓1 +27
Comments 10

Античность против Средневековья. Чьи армии сильней?

Reading time 39 min
Views 45K

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

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

Несмотря на то, что античность и средневековье вроде как плавно друг в друга перетекают, представляем мы себе их несколько иначе. Античность – это, стало быть, амфитеатры, колонны и солдаты в туниках, а средневековье – это рыцари, замки и турниры. При этом, несмотря на разницу между ними в 1000-1500 лет воюют они донельзя схожим образом – тыкают острыми и тупыми предметами друг в друга, на что невольно напрашивается вопрос – а кто сильнее?

Устраивайтесь поудобнее я вам расскажу.
Total votes 75: ↑65 and ↓10 +55
Comments 87

Псс, парень… индекс нужен?

Reading time 8 min
Views 19K

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

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

Читать далее
Total votes 22: ↑22 and ↓0 +22
Comments 24

Люди работают не так много, как вы думаете

Reading time 7 min
Views 47K

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

Читать далее
Total votes 103: ↑96 and ↓7 +89
Comments 67

Все хуки и концепты React в одной статье

Reading time 10 min
Views 36K

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

Читать далее
Total votes 13: ↑12 and ↓1 +11
Comments 38

Как мы ускорили выполнение запросов PostgreSQL в 100 раз

Reading time 10 min
Views 36K

Существует великое множество статей об оптимизации PostgreSQL — эта «кроличья нора» весьма глубока. Когда несколько лет назад я начал разрабатывать бэкэнд аналитического сервиса, у меня уже был опыт работы с другими СУБД, такими как MySQL и SQL Server. Тем не менее, раньше мне не приходилось так фокусироваться на производительности. В прошлых проектах, над которыми я работал, либо не было жестких требований к времени обработки (DS/ML), либо не требовалось обрабатывать много строк одновременно (обыкновенные веб-приложения). Однако в этот раз мои запросы:

состояли из 3-10 JOIN-ов по коррелирующим запросам;

уielded от 10 до 1,000,000 строк;

должны были выполняться в течение времени, определенного UX-ом;

не могли быть hinted — пока Cloud SQL, управляемый PostgreSQL в Google Cloud, не стал поддерживать pg_hint_plan в конце 2021 года;

запрещали прямой доступ к серверному процессу, чтобы, например, хакнуть некоторые perf — потому что PostgreSQL был managed.

Получение целого миллиона строк в одном API endpoint сигнализирует о проблеме в алгоритме или архитектуре. Конечно, все можно переписать и перепроектировать, но за это нужно платить.

У нас не нашлось «заклинания», которое решило бы все проблемы с производительностью SQL. Тем не менее, я упомяну здесь несколько дельных предложений, которые помогли нам и, надеюсь, смогут помочь читателю. Разумеется, это не какие-то сакральные знания. Но когда мы начинали оптимизацию, я был бы рад их прочитать или услышать.

Читать далее
Total votes 30: ↑27 and ↓3 +24
Comments 2

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity