Search
Write a publication
Pull to refresh
1
0
Send message

«Живи, вкалывай, вкалывай, вкалывай, сдохни! Репортаж с темной стороны Кремниевой долины» Отзыв о книге

Reading time3 min
Views28K
image

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

Кори Пайн
Читать дальше →

ICFP Contest 2020 от идеи до воплощения. Как организовать контест и выжить

Reading time17 min
Views5.8K


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

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

Объясните, почему мой рокет-саенс бэкенд билдится пару секунд, а четыре формы на фронте — полгода

Reading time6 min
Views64K

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

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

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

Читать далее

Текстовый индекс по котировкам в памяти на Go

Reading time5 min
Views3.7K

Недавно понадобилось реализовать поиск по началу строки, по сути WHERE name LIKE 'начало%'. Это был поиск по названию биржевых символов (AAPL, AMZN, EUR/USD и пр.). Хотелось, чтобы поиск работал быстро, и не нагружал лишний раз БД. В итоге пришел к реализации поиска по дереву в памяти, об этом и расскажу.

Читать далее

О реализации структуры данных Map в V8

Reading time9 min
Views16K

В стандарте ECMAScript 2015, известном как ES6, появилось много новых JavaScript-коллекций, таких, как Map, Set, WeakMap и WeakSet. Они, судя по всему, стали отличным дополнением к стандартным возможностям JavaScript. Они получили широкое применение в различных библиотеках, в приложениях, в ядре Node.js. Сегодня мы поговорим о коллекции Map, попытаемся разобраться с особенностями её реализации в V8 и сделаем некоторые практические выводы, основанные на полученных знаниях.

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

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

Как видно, спецификация даёт тем, кто создаёт JS-движки, большую свободу. Но при этом здесь нет определённых указаний, касающихся конкретного подхода, используемого для реализации Map, его производительности, характеристик потребления памяти. Если в критически важной части вашего приложения используются структуры данных Map, и если вы записываете в такие структуры данных большие объёмы информации, то основательные знания о реализации Map, определённо, принесут вам большую пользу.
Читать дальше →

std::atomic. Модель памяти C++ в примерах

Reading time11 min
Views131K

Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.

Читать далее

Вред хранимых процедур

Reading time3 min
Views55K

В чат подкаста «Цинковый прод» скинули статью о том, как некие ребята перенесли всю бизнес-логику в хранимые процедуры на языке pl/pgsql. И так как у статьи было много плюсов, то значит, есть люди, а может быть, их даже большинство, которые положительно восприняли такой рефакторинг.

Я не буду растекаться мыслью по древу, а сразу накидаю кучку минусов использования хранимых процедур.
Читать дальше →

Думал, что добьюсь большего к своим 35

Reading time3 min
Views116K


Уже два часа дня? Ничего за сегодня не сделал. Проснулся, потянулся, видел 6 голосовых сообщений — проигнорировал, принял душ, съел 3 вафли и улегся с мыслями, что мне 35, а я так и не выучил французский. Стоп, я не был в душе, это было вчера.


Попытался купить себе новые конверсы (кроссовки), но не смог выбрать между серым и обсидиановым, оба цвета мне не нравятся. Затем я отвлекся на лайфхаки на Medium, залип там минут на 90. Мне 35! Я думал, что уже давным-давно куплю себе крутую обувь и снимусь в фильме. Мой друг Сэнджей и то снялся в инди фильме. Все время рассказывает об этом.

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

В TypeScript 4.0 наконец появилось то, чего я очень ждал

Reading time3 min
Views22K
6 августа сего года Microsoft объявила о выходе релиз-кандидата TypeScript 4.0. Там появилась поддержка кортежей с маркированными элементами (Labeled Tuple Elements). А это — именно то, появления чего я ждал в TypeScript.


Наверху — аргументы, которым назначены содержательные метки. Внизу — аргументы с бесполезными именами

Почему я этого ждал? Объясню это на примере разработки функции.
Читать дальше →

Чистая архитектура с Go

Reading time12 min
Views36K
Меня зовут Эдгар (ZergsLaw), я работаю в компании, которая занимается  финтех-разработкой для b2b и b2c. Когда только устроился в компанию, то попал в команду большого финтех-проекта и получил «в нагрузку» небольшой микросервис. Мне поручили его изучить и подготовить план рефакторинга, чтобы в дальнейшем выделить отдельную команду поддержки для сервиса.



«Мой» сервис — это proxy между определенными модулями большого проекта. На первый взгляд изучить его можно за один вечер и браться за дела поважнее. Но приступив к работе я понял, что ошибся. Сервис был написан полгода назад за пару недель с задачей протестировать MVP. Всё это время он отказывался работать: терял события и данные, или переписывал их. Проект перекидывали из команды в команду, потому что никто не хотел им заниматься, даже его создатели. Теперь стало ясно почему под него искали отдельного программиста.

«Мой» сервис — это пример плохой архитектуры и изначально неправильного проектирования. Все мы понимаем, что так делать нельзя. Но почему нельзя, к каким последствиям это приводит и как попытаться все исправить, я и расскажу.
Читать дальше →

Настройка Gmail API для замены расширения PHP IMAP и работы по протоколу OAuth2

Reading time13 min
Views12K
Оказавшись одним из счастливчиков, совершенно не готовым к тому, что с 15 февраля 2021 года авторизация в Gmail и других продуктах будет работать только через OAuth, я прочитал статью "Google хоронит расширение PHP IMAP" и загрустил начал предпринимать действия по замене расширения PHP IMAP в своём проекте на API Google. Вопросов было больше, чем ответов, поэтому заодно нацарапал мануал.
Читать дальше →

После 220 лет поисков ученые наконец-то нашли глобальные волны Лапласа

Reading time5 min
Views12K
Еще в XVIII веке великий французский физик предсказал существование “симфонии” из атмосферных волн, охватывающей всю планету. И вот, 220 лет спустя, ученые наконец-то сумели ее услышать.

image

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

Но это не испугало французского ученого Пьер-Симона маркиза де Лапласа, который в 18 веке сумел предсказать одну простую, но важную особенность поведения атмосферы Земли. Пусть Лаплас ни разу за свою жизнь не видел глобальной карты погоды, он разработал теорию, которая предсказывала, что по нашей планете постоянно несутся волны с перепадами давления.

“До конца 20го века моделирование атмосферы проводилось карандашом на бумаге и было довольно грубым, но Лапласу это удалось, — рассказывает Дэвид Рэндалл (David Randall), ученый-специалист в области наук об атмосфере из Университета штата Колорадо. — Это невероятно.”

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

И вот этот квест подошел к концу. В новом наборе метеорологических данных современные ученые обнаружили то, что не заметили миллионы барометров: “симфонию” из волн, которые окутывают всю Землю лоскутным одеялом из зон со слабым и сильным давлением.

Вот такое вот прекрасное подтверждение старой теории. Но давайте обо все по порядку.

Струны планеты


image

Лаплас в мундире канцлера Сената. Фрагмент портрет кисти Жана-Батиста Герена, 1838

Всё началось с того, что Лаплас заинтересовался влиянием притяжения Луны на атмосферу Земли. Он решил проанализировать, какие типы волн рождаются в результате этого взаимодействия.
Читать дальше →

Чего можно ждать от Vue 3 и как готовиться к его скорому приходу?

Reading time7 min
Views14K
Вокруг грядущего релиза Vue 3 поднято много шума. Это вызвало у меня желание помочь сообществу разработчиков подготовиться к выходу следующей версии данного популярного фреймворка. Надеюсь, мой рассказ поможет вам успешно встретить Vue 3 и ни о чём не беспокоиться.


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

Знакомство с Rome от создателей Babel — компилятор, сборщик, линтер, тесты в одном флаконе

Reading time3 min
Views5.5K


Почти две недели назад вышла запись в блоге по поводу Rome.

Rome представляет собой целый набор инструментов — линтер, компилятор, сборщик, тест раннер и даже больше. Нацелен он на JS, TS, HTML, JSON, Markdown, CSS. Проект пытается унифицировать набор инструментов необходимых для фронт-енд разработки.

Rome монолитный и включает все традиционные инструменты фронт-енд экосистемы. Команда разработчиков называет это toolchain. Важным моментом является, то, что это не попытка объединить существующий набор инструментов, а разработать полностью новый набор инструментов. Все это должно быть в одном пакете и единой кодовой базой.

Rome разрабатывается как замена Babel, ESLint, Webpack, Prettier, Jest и прочих.
Читать дальше →

Линус Торвальдс, Бьёрн Страуструп и Брендан Грегг контрибьютят в мой хобби-проект. Зачем?

Reading time8 min
Views70K

Смотрите сами: вот проект, вот история коммитов.



Список контрибьюторов с главной страницы репозитория:



Ссылки на аватарках ведут на странички профилей реальных людей.


Всё на месте. Кроме плашечки "Verified" как здесь:





Знатоки Git и GPG, не торопитесь проматывать ленту: эта статья не про необходимость подписывать свои коммиты. Она про неявные допущения, которые мы делаем, пользуясь "интуитивно-понятными" монстрами GitHub и GitLab и доверяя им контроль доступа к нашим репозиториям.

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

Разработка инструмента командной строки: сравнение Go и Rust

Reading time12 min
Views19K
Эта статья посвящена разбору моего эксперимента по написанию небольшого инструмента командной строки с использованием двух языков, в программировании на которых у меня не особенно много опыта. Речь идёт о Go и Rust.



Если вам не терпится увидеть код и самостоятельно сравнить один вариант моей программы с другим — то вот репозиторий Go-варианта проекта, а вот — репозиторий его варианта, написанного на Rust.
Читать дальше →

Как мы нарисовали на карте несколько тысяч интерактивных объектов без вреда для перформанса

Reading time9 min
Views20K

Привет, меня зовут Дарья, и я Frontend-разработчик юнита Гео в Авито. Хочу поделиться опытом того, как мы сделали на вебе новый поиск по карте, заменив кластеры более удобным решением и сняв ограничение на количество отображаемых объектов.


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


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

Concurrent Mode в React: адаптируем веб-приложения под устройства и скорость интернета

Reading time10 min
Views26K
В этой статье я расскажу о конкурентном режиме в React. Разберёмся, что это: какие есть особенности, какие новые инструменты появились и как с их помощью оптимизировать работу веб-приложений, чтобы у пользователей всё летало. Конкурентный режим — новая фишка в React. Его задача — адаптировать приложение к разным устройствам и скорости сети. Пока что Concurrent Mode — эксперимент, который может быть изменён разработчиками библиотеки, а значит, новых инструментов нет в стейбле. Я вас предупредил, а теперь — поехали.

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



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

Android изнутри: сравнение Dalvik и ART

Reading time6 min
Views41K
Привет, Хабр! Около полугода назад я публиковал подробный «гайд» по JVM. Пост, в целом, зашел, а в комментариях спросили, не планируется ли “чего-то по андроиду”. Наконец, у меня дошли руки.



В этом посте поговорим о среде выполнения в Android. В частности, я постараюсь кратко, но емко изложить, чем отличается ART и Dalvik, и как со временем улучшились средства разработки в Android. Тема явно не новая, но, надеюсь, придется кстати тем, кто только начинает вникать. Кому интересно — добро пожаловать под кат.
Читать дальше →

Null safety в Dart

Reading time9 min
Views27K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Announcing sound null safety» автора Filip Hracek с моими комментариями:

Null safety — безопасная работа с пустыми ссылками. Далее по тексту для краткости и по причине устойчивости термина будет использоваться английское наименование null, null safety. Да и перевод «нулевая безопасность» наводит совсем на противоположные мысли.
sound — в данном контексте (sound null safety) можно перевести как «надежный».
Если есть предложения по улучшению перевода или нашли ошибки — пишите в личку, постараемся исправиться.
Наступил важный этап для команды Dart с их представлением технического превью наработок по null safety. Null safety позволяет избежать целого класса ошибок, которые часто трудно обнаружить, а в качестве бонуса обеспечивает ряд улучшений производительности. На данный момент мы выпустили предварительное техническое превью и ждем от вас обратной связи.

В этой статье мы раскроем планы команды Dart по развертыванию null safety, а также объясним, что скрывается за термином Sound null safety, и чем этот подход отличается от других языков программирования.
Читать дальше →

Information

Rating
Does not participate
Location
Херсон, Херсонская обл., Украина
Registered
Activity