Как стать автором
Обновить
0
@compilebreatheread⁠-⁠only

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

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

Как я перестал беспокоиться и полюбил тестирование React-компонентов

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

Как тестировать React-компоненты? Какую библиотеку использовать? Как тестировать компоненты, которые берут данные из Redux, а не из пропсов? Как тестировать компоненты, в которых используется роутинг с помощью React-router-dom? Что делать, если в компоненте есть асинхронный код?

...Мои вопросы, когда на работе впервые попросили покрыть тестами компонент. Я, разумеется, стал гуглить тестирование React-компонентов в связке с Redux и React-router-dom, и понял, что в сети есть много ответов на вопрос, зачем нужно тестирование, но мало кто объясняет, как написать тесты. А если и объясняет, то в  общих чертах на абстрактных примерах. Мне не хватало статьи, вооружившись которой, начинающий разработчик мог бы выполнить тест на реальном продукте. Поэтому я решил написать ее сам.

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

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

Инвестиции в IPO: научно доказанный способ зарабатывать 18% в день, или как акулы Уолл-стрит наживаются на Цукербергах

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

Профильные Телеграм-каналы и брокеры уверяют, что на вложениях в IPO легко получать по 100% годовых, и даже больше. В этой статье я разбираю, почему ученые-финансисты в чем-то склонны с ними согласиться — и кто на самом деле зарабатывает огромные деньги на IPO (спойлер: скорее всего, это будете не вы).

Читать далее
Всего голосов 53: ↑51 и ↓2+49
Комментарии17

Интервью с переводчиком Лема (+ ответы на вопросы читателей Хабра)

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


Биографическая книга Виктора Язневича о Станиславе Леме и его философском наследии, содержит большое количество цитат из работ Лема про философов.

Я открыл для себя Виктора Язневича, когда изо всех сил искал перевод эссе «Безопасна ли техника безопасности», он мне помог и быстро отвечал на email. Это было 5 лет назад. 12 сентября 2021 Лему стукнуло 100 лет и я вновь написал письмо этому удивительному переводчику. Мне захотелось сделать с ним интервью (и попросить хабрачитателей, чтобы они помогли мне с вопросами для этого человека).

На русском есть два интервью с Виктором (раз, два), вот выжимка из них:

  • Виктор Язневич 40+ лет собирал коллекцию книг Лема (1000+ книг, 40+ языков, из 50+ стран).
  • Виктор — составитель сборников «Молох», «Так говорил Лем», «Мой взгляд на литературу», «Хрустальный шар», «Черное и белое».
  • Большинство переводов философских и «компьютерных» работ Лема — за его авторством.
  • Общий тираж Лема — 40 млн (13 млн — 330 книг на русском языке, 10 млн — немецкий язык, 7,5 польский язык).
  • «Солярис» переведен на 42 языка.
  • С 1988 года Лем перестал писать художественные произведения и переключился на публицистику, философию и футурологию.
  • Беллетристика Лема была переведена полностью к 1998 году, а философские работы — только «Сумма технологии», Виктор захотел познакомить русскоязычных читателей с «Мегабитовой бомбой» и «Тайной китайской комнаты».

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

Обращение к Javascript-сообществу: перестаньте писать квадраты

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

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

Read more
Всего голосов 216: ↑213 и ↓3+210
Комментарии355

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

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

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

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

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

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

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

Математика и IT

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

Джорджо де Кирико. Великий метафизик (The Grand Metaphysician), 1917.

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


1) CS — создание подходов, имеющих научную новизну. Разработка новых алгоритмов. Основная цель: научная новизна, развитие CS, решение проблем CS.


2) Инженерно-конструкторская деятельность – комбинирование уже известных подходов (алгоритмов, ЯП, библиотек, технологий, исходных кодов), их адаптация под конкретную задачу. Основная цель: создание продукта для решения конкретной практической задачи.


3) Техническое обеспечение — решение типовых (зачастую тривиальных) проблем в ходе эксплуатации “железа” и софта. Обеспечение бесперебойной работы ПО и оборудования с учетом возникающих требований.


Очевидно, что в такой классификации риск неудачи убывает в каждом пункте. При работе над новым алгоритмом или устройством обычно невозможно полностью гарантировать успех. При использовании уже известных алгоритмов, языков, технологий, библиотек и готовых деталей машин – вероятность успешного исполнения работы возрастает. В последнем случае (обеспечение ) работник (должность может быть разная: инженер, системный программист, системный администратор и т.д.) исходит из минимизации замен по принципу: “не трогать то, что хорошо работает”.


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


Кому и насколько в IT нужна математика? — Попробуем ответить на этот вопрос (хотя бы частично).

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

Как сохранить тесную коммуникацию в стремительно растущей команде

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

Какие бывают проблемы роста, кроме очевидных, когда из 15 человек становится 80, а из одной команды вырастает 10? Почему разработчики начинают удаляться от пользователей и перестают чувствовать их боль? Как им не выпадать из коммуникационных процессов?

Я Дмитрий Шаронов, и я расскажу, как мы в Tarantool преодолевали проблемы роста и пытались избежать разделения между разработчиками при переходе из опенсорса в ентерпрайз. Какие решения использовали, зачем привлекали новичков и стажеров. Мы выделили 4 проблемы коммуникации в стремительно растущей команде и унифицировали инструменты для этого.

Это расшифровка доклада, прочитанного мной на TechLeadConf 2021. Видео доклада можно посмотреть тут.

Читать далее
Всего голосов 27: ↑26 и ↓1+25
Комментарии2

Расширения Chrome для программистов и сочувствующих

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

На Хабре уже есть посты в духе «10 браузерных расширений, которые нужны КАЖДОМУ УВАЖАЮЩЕМУ СЕБЯ РАЗРАБОТЧИКУ». Но в них меня смущает то, что там вперемешку совсем разные вещи для разных людей. От React Developer Tools до съёмки полностраничных скриншотов — и всё это просто списком через запятую.

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

Разумеется, в комментариях приветствуются дополнения, мне знакомо далеко не всё.

Читать далее
Всего голосов 33: ↑30 и ↓3+27
Комментарии12

Specification By Example – BDD для прагматиков

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

На Хабре довольно много упоминаний о BDD. К сожалению, статьи, которые я читал, так и не дали мне ответа на вопрос «а зачем мне все это нужно?» Ответ пришел с неожиданной стороны. Когда я всерьез занялся вопросом автоматизации приемочного тестирования, мне под руку попалась книга Gojko Adzic (не уверен в транскрипции, поэтому не стал переводить имя автора) Specification By Example.
Читая ее, я не уставал удивляться: каждая новая глава описывала шишки, которые я набивал на своем личном опыте, и предлагала решения аналогичные или лучшие, чем те, к которым я приходил сам методом проб и ошибок.

Эта статья – первая в цикле «BDD для прагматиков». В ней описаны ключевые элементы наиболее эффективного, на мой взгляд, процесса разработки коммерческого ПО в современных условиях. Два продолжения будут посвящены работе со SpecFlow и автоматизации приемочного тестирования.
Часть первая - живая документация
Всего голосов 34: ↑31 и ↓3+28
Комментарии32

Автобиография Айзека Азимова

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

Только и разговоров что про «Дюну», ну, а я про другое. Посмотрел первые три серии «Основания» и полез проверить другую книгу Азимова, о которой мечтал 10 лет. И удача: на Авито нашел продавца и, бац, у меня на столе уникальный трёхтомник без ISBN: биография Азимова, написанная им самим же.

Мне очень интересно сформировать более точную карту (и развеять мифы типа «изюмова») и проследить, как формировалась картина мира и стиль мышления столь значимого фантаста, писателя, популяризатора науки и философа. А так же, что было за кулисами создания шедевров «Сами Боги», «Конец вечности», «Стальных пещер» и «Основания».

Кто уже прочитал его автобиографию — делитесь впечатлением в комментариях, а я только приступаю к прочтению и по ходу буду делиться интересными находками про жизнь и про творчество. (Какое было основание у «Основания»?) А пока что пара фактов про Азимова из открытых источников и несколько его полезных эссе про креативность и мышление.

Кстати, мои любимые произведения Азимова — «Приход ночи» и «Профессия». А ваши?

  • Фамилия «Азимов» происходит от "озимый хлеб" (а не «изюм»)
  • Законов робототехники не три, а четыре (отсчет с нулевого).
  • Азимов написал около 500 книг.
  • Илон Маск положил книгу Азимова «Основание» в бардачок Теслы и она полетела на орбиту.
  • Пол Кругман, нобелевский лауреат по экономике, вспоминает, что именно концепция психоистории Азимова вдохновила его изучать экономику.
  • Получил PhD в 28 лет.
  • Айзек Азимов описывал Марвина Минского как одного из двух людей, которые умнее, чем он сам; вторым, по его мнению, был Карл Саган.
  • В первые 40 лет писательской карьеры Азимов публиковал в среднем 1000 слов в день, в следующие 20 лет — по 1700 слов в день.
  • Азимов никогда не изучал русский язык.
  • Азимов боялся открытых пространств и мог работать только в комнатах без окон.
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии21

Консистентно о Консенсусе

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

Здравствуйте, меня зовут Дмитрий Карловский. А вы на канале Core Dump, где мы берём различные темы из компьютерной науки и раскладываем их по полочкам.


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



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

Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии6

Сортировка слабой кучей

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

Из всего зоопарка куч, эта структура, пожалуй, самая необычная. При этом элегантная простота алгоритма вполне под стать его удивительной неординарности.

При сортировке с помощью слабой кучи всегда меньше количество сравнений и обменов, чем если использовать обычную кучу. Так что да, слабая куча сильнее, чем обычная куча.
Траффик
Всего голосов 27: ↑26 и ↓1+25
Комментарии10

Неожиданные причины торможения программ и систем

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

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

Я назвал пост Surprisingly Slow потому, что замедление было для меня неожиданным, или неоптимальные практики, ведущие к замедлению, настолько распространены, что многие программисты будут удивлены их существованию.

Разделы поста чаще всего никак не связаны друг с другом, поэтому можете выбирать самые интересные для вас.
Читать дальше →
Всего голосов 112: ↑111 и ↓1+110
Комментарии88

Отключаем блокировку DHT в популярных торрент-клиентах

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

На многих так называемых «приватных» трекерах торренты раздаются с установленным флагом, не позволяющим использовать сеть DHT. Цель этого — не допускать раздачу материала клиентам, не зарегистрированным на данном трекере. Однако для пользователя это означает уменьшение количества сидеров, иногда — значительное.

Ниже мы рассмотрим, как отключить такое ограничение в популярных торрент-клиентах. Будет рассмотрен общий подход, а также практическое применение к актуальной версии uTorrent и qBitTorrent.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии50

Как разобраться в исходном коде React

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

React самая популярная библиотека для построения пользовательских интерфейсов. Мы знаем про виртуальное дерево, движок fiber, процедуру reconcilation, хуки и другие прекрасные возможности react. Но как это работает на уровне исходного кода? Ответить на этот вопрос смогут очень небольшое количество программистов.

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

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

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

Cohesion и Coupling: отличия

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

Эта статья является переводом материала «Cohesion and Coupling: the difference». 

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

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

Как (не) нужно строить базу знаний для проекта с нуля. Часть Первая, утопическая

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

Сентябрь 2020 года. В этот момент, моей Суперучилке (имя вымышленное), платформе по поиску репетиторов в США, требуется срочно новая команда поддержки, потому что старая не справляется с бизнес-логикой и создает проблемы. А для новой команды нужна новая база знаний, чтобы обучить новичков с учетом ошибок ветеранов.

В октябре начинался новый сезон и приходили новые клиенты. Собеседовать и обучить новую команду надо позарез за неделю до сезона, чтобы успеть потренироваться. У меня есть три недели, и часики уже тикают. И все происходит в условиях качелей между удаленкой и офисом: собеседовал новичков я вживую, а учились мы уже в Google Meet.  

Тут мой воспаленный мозг начал шевелиться. В июле как раз выстрелила моя статья о Zettekasten, методе ведения личной базы знаний для работы и творчества. Я уже полтора месяца сидел в сообществе Zettelkasten и проникался прелестями ассоциативных, нелинейных и экзотичных баз знаний. Мне за советом в телеграм пишут каждый день, и я добросовестно прокрастинирую, отвечая на вопросы.
Давай, приключение на 15 минут, туда и обратно!
Всего голосов 30: ↑30 и ↓0+30
Комментарии5

Всё плохо

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

image


Что ж, всё плохо. Немного забавно так говорить: на конференции (Web à Québec) было много разговоров об удивительном будущем и вещах, возможных благодаря новым технологиям. О новых средствах и устройствах, которые должны сделать нашу жизнь проще. Мои знакомые знают, что у меня обычно очень циничный взгляд на технологии; лично я боюсь всех этих умных устройств, которые реагируют на мои слова, чем восхищались другие спикеры.


В основном потому, что чем больше времени я трачу на программирование и провожу в этой отрасли, тем больше узнаю, как всё работает изнутри, и тем меньше доверия всё это мне внушает. Я подобрал изображение для слайда. Это картина «Триумф смерти» Питера Брейгеля. В некоторой степени она раскрывает моё отношение к «умному дому».

Читать дальше →
Всего голосов 65: ↑62 и ↓3+59
Комментарии44

Кажется, мы стали забывать основы фронтенда

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

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

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

Читать далее
Всего голосов 100: ↑98 и ↓2+96
Комментарии191

Нужно ли чистить строки в JavaScript?

Время на прочтение6 мин
Количество просмотров79K
Что? Строки могут быть «грязными»?

Да, могут.

//.....Какой-то код
console.log(typeof str); // string
console.log(str.length); // 15
console.log(str); // "ччччччччччччччч"

Вы думаете, в этом примере строка занимает 30 байт?

А вот и нет! Она занимает 30 мегабайт!
Читать дальше →
Всего голосов 220: ↑219 и ↓1+218
Комментарии224
1
23 ...

Информация

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