Как стать автором
Обновить
5
0
JSmitty @JSmitty

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

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

Фильтр Блума

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



У каждого разработчика есть набор инструментов для решения различных задач. Однако со временем возникает необходимость расширять этот набор, чтобы эффективно справляться с более сложными задачами. В этой статье я хочу познакомить вас с инструментом, которым вы, скорее всего, раньше не пользовались. И хотя он подходит для решения узкого спектра задач, его использование может оказаться весьма полезным. Знакомьтесь — "фильтр Блума" (Bloom filter).

Читать дальше →
Всего голосов 41: ↑44.5 и ↓-3.5+48
Комментарии12

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

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

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

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

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

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

Под капотом у Mobx. Пишем свою реактивную библиотеку с нуля

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

Первое мое знакомство с Mobx началось с удивления. Я не понимал всю магию библиотеки и задавал себе вопрос: “А как это возможно?”. Кажется, в ней используются какие-то подкапотные возможности JS или Mobx вообще написан на другом языке. 

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

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

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

JavaScript: заметка о requestAnimationFrame и requestIdleCallback

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


Привет, друзья!


Можете ли вы ответить на вопрос о том, в чем заключается разница между requestAnimationFrame и requestIdleCallback?


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


Сразу уточним, что названные интерфейсы предоставляются браузером и к ECMAScript отношения не имеют.


Что касается поддержки, то с requestAnimationFrame все хорошо, а с requestIdleCallback, в основном из-за Safari, этого современного IE, ситуация хуже.


Рассматриваемые интерфейсы позволяют разработчикам получать доступ к процессу рендеринга страницы. Также они очень тесно связаны с циклом событий (event loop) браузера.

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

Физика на вашей футболке: векторные поля и генеративное искусство

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

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

Мы уже писали о полях течений, а сегодня, к старту курса о визуальной части веб-разработки, делимся переводом статьи, где вы найдёте генератор абстрактных картин как на КДПВ и, конечно же, его код.

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

Блокировки в PostgreSQL: 1. Блокировки отношений

Время на прочтение14 мин
Количество просмотров85K
Два предыдущих цикла статей были посвящены изоляции и многоверсионности и журналированию.

В этом цикле мы поговорим о блокировках (locks). Я буду придерживаться этого термина, но в литературе может встретиться и другой: замóк.

Цикл будет состоять из четырех частей:

  1. Блокировки отношений (эта статья);
  2. Блокировки строк;
  3. Блокировки других объектов и предикатные блокировки;
  4. Блокировки в оперативной памяти.

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

Индексы:

  1. Механизм индексирования;
  2. Интерфейс метода доступа, классы и семейства операторов;
  3. Hash;
  4. B-tree;
  5. GiST;
  6. SP-GiST;
  7. GIN;
  8. RUM;
  9. BRIN;
  10. Bloom.

Изоляция и многоверсионность:

  1. Изоляция, как ее понимают стандарт и PostgreSQL;
  2. Слои, файлы, страницы — что творится на физическом уровне;
  3. Версии строк, виртуальные и вложенные транзакции;
  4. Снимки данных и видимость версий строк, горизонт событий;
  5. Внутристраничная очистка и HOT-обновления;
  6. Обычная очистка (vacuum);
  7. Автоматическая очистка (autovacuum);
  8. Переполнение счетчика транзакций и заморозка.

Журналирование:

  1. Буферный кеш;
  2. Журнал предзаписи — как устроен и как используется при восстановлении;
  3. Контрольная точка и фоновая запись — зачем нужны и как настраиваются;
  4. Настройка журнала — уровни и решаемые задачи, надежность и производительность.


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

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

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

Да, могут.

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

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

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

Как вычисляют сумасшедших — 2: блеск и нищета патопсихологической диагностики

Время на прочтение52 мин
Количество просмотров135K
Привет, Хабр!

Меня зовут Кристина, я клинический психолог. Около двух лет назад я опубликовала на Geektimes пост о патопсихологической диагностике, в котором рассказала о том, как производится исследование психики пациентов в психиатрическом стационаре на предмет наличия или отсутствия нарушений мышления, памяти и других функций психики.

image
Всё, что нужно знать о нашей патопсихологической диагностике. Источник: [43, стр. 133-134].

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

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

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

Пост написан в соавторстве с Лобановым Виталием (hdablin). Текст получился довольно длинным, в нём мало картинок и много пространных рассуждений. Но если вам интересны проблемы диагностики в психиатрии и смежных дисциплинах, добро пожаловать под кат.
Читать дальше →
Всего голосов 154: ↑142 и ↓12+130
Комментарии606

Введение в React Hooks

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


Если вы читаете Twitter, вы, вероятнее всего, знаете что Hooks  -  это новая фича React, но вы можете спросить, как мы на практике можем их использовать? В этой статье мы покажем вам несколько примеров использования Hooks.
Одна из ключевых идей для понимания заключается в том, что Hooks позволяют использовать state и другие возможности React без написания классов.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии36

Занимательный JavaScript: Без фигурных скобок

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

image


Меня всегда удивлял JavaScript прежде всего тем, что он наверно как ни один другой широко распространенный язык поддерживает одновременно обе парадигмы: нормальные и ненормальное программирование. И если про адекватные best-практики и шаблоны прочитано почти все, то удивительный мир того, как не надо писать код но можно, остается лишь слегка приоткрытым.


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

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

Полёт свиньи, или Оптимизация интерпретаторов байт-кода

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


"No matter how hard you try, you can't make a racehorse out of a pig. You can, however, make a faster pig" (комментарий в исходном коде Емакса)

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


Во второй части серии статей об интерпретаторах байт-кодов я на примере небольшой стековой виртуальной машины ПВМ («Поросячья Виртуальная Машина») постараюсь показать, что не всё потеряно для трудолюбивых поросят с амбициями и что в рамках (в основном) стандартного C вполне возможно ускорить работу таких интерпретаторов по меньшей мере в полтора раза.

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

CSS Grid — швейцарский армейский нож для макетов сайтов и приложений

Время на прочтение9 мин
Количество просмотров52K
В течение последних двух месяцев я углубился в изучение CSS Grid. В этой заметке я хочу поделиться своими основными соображениями. Чтобы было более понятно, я объясню все с помощью диаграмм.

Вероятно, вы уже знакомы с блоковой моделью CSS для обычных элементов. Давайте начнем с аналогичного «общего обзора» для CSS Grid:


В основе структуры CSS Grid находится основной контейнер, представляющий собой обычный div, имеющий margin, border и padding. Для создания CSS grid контейнера добавим свойство display: grid. Элементы сетки — это потомки, размещенные внутри родительского контейнера. Они обычно определяются как список, описывающий header, sidebar, footer или другие аналогичные элементы макета сайта, зависящие от его дизайна.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии21

Применяем мозаику Вороного, пикселизацию и геометрические маски в шейдерах для украшения сайта

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

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


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

Всего голосов 31: ↑31 и ↓0+31
Комментарии12

Реактивность в JavaScript: простой и понятный пример

Время на прочтение12 мин
Количество просмотров55K
Во многих фронтенд-фреймворках, написанных на JavaScript (например, в Angular, React и Vue) имеются собственные системы реактивности. Понимание особенностей работы этих систем пригодится любому разработчику, поможет ему более эффективно использовать современные JS-фреймворки.



В материале, перевод которого мы сегодня публикуем, продемонстрирован пошаговый пример разработки системы реактивности на чистом JavaScript. Эта система реализует те же механизмы, которые применяются в Vue.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии14

RabbitMQ против Kafka: применение Kafka в событийно ориентированных приложениях

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

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


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

RabbitMQ против Kafka: два разных подхода к обмену сообщениями

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

В прошлых двух статьях мы рассказывали об IIoT — индустриальном интернете вещей — строили архитектуру, чтобы принимать данные от сенсоров, паяли сами сенсоры. Краеугольным камнем архитектур IIoT да и вообще любых архитектур работающих с BigData является потоковая обработка данных. В ее основе лежит концепция передачи сообщений и очередей. Стандартом работы с рассылкой сообщений сейчас стала Apache Kafka. Однако, для того, чтобы разобраться в ее преимуществах (и понять ее недостатки) было бы хорошо разобраться в основах работы систем очередей в целом, механизмах их работы, шаблонах использования и основной функциональности.



Мы нашли отличную серию статей, которая сравнивает функциональность Apache Kafka и другого (незаслуженно игнорируемого) гиганта среди систем очередей — RabbitMQ. Эту серию статей мы перевели, снабдили своими комментариями и дополнили. Хотя серия и написана в декабре 2017 года, мир систем обмена сообщениями (и особенно Apache Kafka) меняется так быстро, что уже к лету 2018-го года некоторые вещи изменились.

Читать дальше →
Всего голосов 87: ↑82 и ↓5+77
Комментарии41

Почему Гаусс? (100 способов решить систему уравннений)

Время на прочтение6 мин
Количество просмотров13K
Что вы будете делать, если вас попросят решить простенькую систему с тремя неизвестными? У каждого сформировался свой собственный и наиболее удобный лично для него подход. Существует масса способов решить систему линейных алгебраических уравнений. Но почему предпочтение отдается именно методу Гаусса?
Читать дальше →
Всего голосов 41: ↑26 и ↓15+11
Комментарии5

Three.js — 3D в браузере своими руками или WebGL становится ближе

Время на прочтение7 мин
Количество просмотров32K
Тема про three.js от mrdoob в свое время проскакивала на хабре, но детально еще не рассматривалась. В этой и(возможно) последующих статьях я постараюсь исправить это упущение. К сожалению, three.js не предоставляет никакой внятной документации, поэтому все знания по нему получены экспериментальным путем и ковырянием спеки WebGL, т.е. любые дополнения автору топика только приветствуются.

В этой статье мы создадим простенькое приложение, которое продемонстрирует базовые возможности этого движка, поработаем с камерой, светом и тенью, а также научим наши объекты перемещаться. В конце статьи ссылка на файлы демки и скриншот. Итак, к делу!
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии22

Антипаттерны тестирования ПО

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

Введение


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

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

Терминология


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


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

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

9 полезных приёмов для тех, кто программирует на JavaScript

Время на прочтение4 мин
Количество просмотров38K
Автор материала, перевод которого мы сегодня публикуем, рассказывает о девяти полезных приёмах работы, которые могут пригодиться JavaScript-программисту. Он говорит о том, что эти приёмы позволяют экономить время, и о том, что ими пользуются профессионалы.


Читать дальше →
Всего голосов 38: ↑33 и ↓5+28
Комментарии20

Информация

В рейтинге
5 051-й
Зарегистрирован
Активность