Pull to refresh
6
0
Иван GiB$ON @gibson_dev

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

Send message

Эффектное программирование. Часть 2: генераторы в полевых условиях

Reading time8 min
Views3.7K

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

Эта статья также может быть полезна тем, кто хочет разобраться, как работает redux-saga.

Также я давно хотел познакомиться с Deno (альтернатива Node) и использовал его в качестве среды для запуска кода, так что примеры будут в этот раз на typescript.

Читать далее

Мониторинг многопоточных приложений Node.JS

Reading time7 min
Views7.6K
В этой статье мы разберем особенности мониторинга многопоточного Node.JS приложения на примере нашего коллектора для сервиса мониторинга и анализа логов серверов PostgreSQL.


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

Итерируемые объекты и итераторы: углублённое руководство по JavaScript

Reading time15 min
Views28K

Эта статья представляет собой углублённое введение в итерируемые объекты (iterables) и итераторы (iterators) в JavaScript. Моя главная мотивация к её написанию заключалась в подготовке к изучению генераторов. По сути, я планировал позднее поэкспериментировать с комбинированием генераторов и хуками React. Если вам это интересно, то следите за моим Twitter или YouTube!

Вообще-то я планировал начать со статьи про генераторы, но вскоре стало очевидно, что о них сложно рассказывать без хорошего понимания итерируемых объектов и итераторов. На них мы сейчас и сосредоточимся. Буду исходить из того, что вы ничего не знаете по этой теме, но при этом мы значительно углубимся в неё. Так что если вы что-то знаете об итерируемых объектах и итераторах, но не чувствуете себя достаточно уверенно при их использовании, эта статья вам поможет.
Читать дальше →

Череда проблем длиною в 16 лет

Reading time12 min
Views11K
Не так давно, на заре этого тысячелетия, холодным ноябрьским днем 2004го я сел писать эмулятор сервера для некой онлайн игры. Писалось мне весьма хорошо, на радующем глаз C# и .Net Framework версии 1.1. Особых целей перед собой я не ставил, а опыт имел сравнительно небольшой. По какой-то причине сообщество оценило эту поделку (может, потому что она появилась раньше официального старта основной игры?) и через несколько месяцев я столкнулся с взрывным ростом онлайна, а заодно и серьезными проблемами производительности. Проект прожил 6+ лет, достиг заметных высот (2500 онлайна в пике, порядка 20000 MAU), а затем и почил в бозе. И вот спустя полтора десятилетия я решил сделать собственную ММО игру на тех же “проверенных временем” наработках и столкнулся с аналогичными же проблемами, не смотря на то, что они были уже единожды мною решены.
Читать дальше →

МГЛ (ДРИ) для освещения в квартире или на рабочем месте, основы и выбор + обзор ламп на 35Вт

Reading time3 min
Views19K

Хочу вам рассказать о «самой слабой», ну почти самой слабой лампе МГЛ, доступной в общей продаже. Лампы лучше выбирать «стандартной мощности» они (почти)всегда есть в свободной продаже 35/70/150Вт (остальное "экзотика" - могут быть проблемы с ЭПРА и/или лампами).

Честный индекс цветопередачи CRI >80(теплые)/ >90(холодные). Присутствуют все видимые человеком цвета 380-780нм. Примерная яркость ламп (незначительно различается от бренда, ЦТ, методов измерения): 35Вт ~3400лм, 70Вт ~6800лм, 150Вт ~14000лм.

Лампы HCI/CDM (T/TC) мощностью 35в и упаковка от них.

T – цоколь G12 (слева), TC – цоколь G8.5, они не совместимы с патронами от обычных «галогенок» можете не пробовать впихать не впихуемое, единственный вариант это изобретать «своими руками» (например клемники).

Хочу узнать большее

YC Startup Library на русском: Чем питч для инвесторов отличается от питча для клиентов (Майкл Сайбл)

Reading time4 min
Views2.5K
9 ноября 2020 стартовала Школа стартапов для будущих основателей (Startup School for Future Founders от Y Combinator) и мы будем публиковать полезные переводы для тех, кто планирует стать основателем стартапа международного уровня. Следите за новостями в телеграм-канале YC library на русском.

image

Майкл Сайбл — сооснователь (в 25 лет) стартапов Justin.tv/Twitch (капитализация $15 млрд) и Socialcam, член правления Reddit. На данный момент исполнительный директор (CEO) Y Combinator.

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

image

Общение с клиентами


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

image

Игра слов не для ослов: как переводить и понимать каламбуры на английском

Reading time7 min
Views46K


Перевод каламбуров — личный ад для каждого переводчика. Сложнее переводить только стихи.

Вот только огромная часть английского юмора строится именно на каламбурах. Если просто убрать их — сериалы и фильмы станут скучными и неинтересными.

К примеру, мультсериал «Гриффины» чертовски популярен в США, но при этом в других странах у него мало поклонников. Главная причина — каламбуры. Весь юмор мультика строится на них, а при переводе теряются почти все шутки, за которые и любят мультик.

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

Как генерируются UUID

Reading time7 min
Views139K

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

Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Читать дальше →

Чем гель отличается от сорбента или крема и как его готовить в реакторе

Reading time10 min
Views22K
image

Я тут обнаружила, что не все знают, чем гель и крем отличаются друг от друга. Если очень коротко — гель это почти твёрдое тело, только сейчас почему-то жидкое или мягкое, а крем — это эмульсия (смесь несмешиваемого). С точки зрения потребительницы косметики, это отличие заключается в текстуре. На деле же там всё куда интереснее.

Первая практическая разница в том, что гель — это каркас из чего-то твёрдого и полезная нагрузка. Сетка или матрица геля может образовываться из оксида алюминия, из желатина (да, он твёрдый, пока не образовал гель), поливинилового спирта и разных полимеров. Это высокомолекулярная фракция, то есть макромолекулы, пустоты в геометрии которых заполняются грузом — низкомолекулярной фракцией геля. Она называется дисперсной фазой. Часто это вода, простые спирты или органические соединения (углеводороды).

Тот самый силикагель, который лежит в упаковках с электроникой и регулирует в них влажность, — сухой гель. Полисорб (коллоидный диоксид кремния), который некоторые из вас пили при отравлениях, — тоже высушенный гель. И так далее.
А ещё гель может стать жидким кристаллом и обратно. Это важное свойство бислоя биомембран клеток, которое критически важно при гибернации животных.

Теперь давайте разберёмся с тем, почему и когда гель используется вместо крема, и что вообще такое крем.
Читать дальше →

Ядерное наследие первенца атомной энергетики СССР

Reading time10 min
Views32K
В 1954 году в СССР, в Обнинске, построили и запустили Первую в мире атомную станцию. Ее реактор АМ (Атом мирный) был небольшой мощности, вся станция выдавала всего 5 МВт электроэнергии, но ее запуск положил начало освоению мирной атомной энергии. Через 4 года, в 1958 г., был введён в эксплуатацию первый энергоблок Сибирской атомной электростанции мощностью 100 МВт, на Сибирском химическом комбинате. Однако, эта станция была двойного назначения. Ее реактор ЭИ-2 стали использовать для производства электроэнергии и тепла, но основной его задачей было производство оружейного плутония. Первой же гражданской атомной станцией большой мощности стала Белоярская АЭС. Сейчас ее первые реакторы уже остановлены. Эта статья как раз об их истории, о сложностях обращения с накопленным отработанным ядерным топливом и путях решения связанных с ним проблем.


Белоярская АЭС. На переднем плане первая очередь станции с реакторами АМБ. Источник.

Опенсорсные альтернативы Google Analytics на своём хостинге

Reading time5 min
Views25K

Веб-интерфейс опенсорсного сервиса аналитики Matomo

Дегуглификация онлайновой жизни требует внедрения свободных альтернатив во всех областях. Защитники приватности ведут списки таких продуктов по категориям.

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

К счастью, есть ряд свободных, опенсорсных альтернатив Google Analytics, которые к тому же работают быстрее, поскольку скрипты меньше по размеру и загружаются с вашего собственного хостинга, а не со стороннего сервера. Информация о пользователях никуда не отправляется, а многие сервисы не используют куки и соответствуют законодательству GDPR о защите личных данных.
Читать дальше →

Оптимизация производительности фронтенда. Часть 2. Event loop, layout, paint, composite

Reading time11 min
Views65K

Ночь. Стук в дверь. Открыть. Стоят двое. "Верите ли вы в Event loop, нашу главную браузерную цепочку?" Вздохнуть. Закрыть дверь. Лечь досыпать. До начала рабочего дня еще 4 часа. А там уже ивент лупы, лейауты и прочая радость…


В первой части мы говорили о первой загрузке и работе с ресурсами. Сегодня я расскажу о второй части оптимизации производительности фронтенда. О том, что происходит с нашей страницей, когда она загружена, на что уходит процессорное время и что с этим делать. Ключевые слова: event loop, paint \ repaint, layout \ reflow, composite.


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

Трюки с SQL от DBA. Небанальные советы для разработчиков БД

Reading time22 min
Views34K

Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:

  • АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
  • АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.

АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно работать над несколькими проектами.
Читать дальше →

#КБ1. Как получить работу мечты благодаря смертельному диагнозу

Reading time4 min
Views16K
В этой истории, как и положено, всё кончилось хорошо, но позвольте до конца сохранить интригу.

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

Как я изучаю языки

Reading time14 min
Views19K
image

Привет, хабровчане! Давным-давно, когда динозавры ходили по земле, a автор этих строк училась в шестом классе, на глаза мне попалась небольшая книжечка венгерской переводчицы Като Ломб «Как я изучаю языки». Я прочла её и — пропал калабуховский дом. Передо мной открылся совершенно новый мир, заворожила красота и логика построения разных языковых конструкций. А ещё было ясно с самого начала, что каждый новый язык — это новый шанс. Под катом я расскажу, какие шансы удалось использовать, а какие — нет и почему так вышло.
Читать дальше →

Равномерное перемещение объекта вдоль кривой

Reading time6 min
Views19K


В процессе разработки игры в совершенно различных жанровых категориях может возникнуть потребность «запустить» какой-либо игровой объект вдоль гладкой кривой с постоянной или контролируемой скоростью, будь то грузовик, следующий из города А в город Б, выпущенная по хитрой траектории ракета, или самолет противника, выполняющий заложенный манёвр.

Наверное, каждый имеющий отношение к теме знает или, по крайней мере, слышал, про кривые Безье, B-сплайны, сплайны Эрмита и прочие интерполяционные и сглаживающие сплайны и совершенно правильно предложил бы использовать в описанной ситуации один из них, но не всё так просто, как хотелось бы.
Читать дальше →

Go Your Own Way. Часть вторая. Куча

Reading time11 min
Views1.9K
Серия статей о GC

Мы продолжаем цикл статей о сборщике мусора в языке D. Этот вторая часть статьи, посвящённой выделению памяти за пределами GC. В первой части говорилось о выделении памяти на стеке. Теперь мы рассмотрим выделение памяти из кучи.


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


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

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

Go Your Own Way. Часть первая. Стек

Reading time7 min
Views1.8K
Серия статей о GC

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


Когда сборщик мусора отключён через GC.disable или запрещён к использованию атрибутом функции @nogc, память всё ещё надо откуда-то выделять. И даже если вы используете GC на всю катушку, всё равно желательно минимизировать объём и количество выделений памяти через GC. Это означает выделение памяти или на стеке, или в обычной куче. Эта статья будет посвящена первому. Выделение памяти в куче будет предметом следующей статьи.

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

Собеседование наоборот: вопросы соискателя к компании

Reading time6 min
Views77K
Всем привет! Хочу очередной раз поднять тему про найм. Только я собираюсь поговорить об этом с точки зрения кандидата, а не работодателя. Ведь собеседование, вопреки многим стереотипам, процесс двусторонний — вопросы может задавать не только интервьюер, но и сам соискатель. За прошлый год я провёл порядочное количество собеседований, и абсолютное большинство кандидатов огорчило меня отсутствием вопросов о компании, всего 5 человек стали меня расспрашивать о работе.

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

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity