Pull to refresh
3
0
FlameStorm @FlameStorm

Человек

Send message

Карта, золото, «Герои»: продолжаем разбираться в технико-исторической части HeroWO.js — браузерного клона культовой игры

Level of difficultyEasy
Reading time11 min
Views6.3K

TL;DR для тех, кому некогда читать™:




День пятый
Total votes 43: ↑42 and ↓1+41
Comments10

Почему некоторые ноты гармонично звучат вместе

Reading time4 min
Views45K


Вы никогда не задумывались, почему некоторые ноты больше подходят друг другу, чем другие? Как связаны между собой частоты их волн? Почему ноты одной тональности звучат «хорошо»? Почему «хорошо» звучат ноты в составе аккорда?
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments65

О, «Герои»? Дайте две! Как я писал очередной браузерный клон легендарной стратегии, в который уже почти* можно играть

Level of difficultyEasy
Reading time14 min
Views35K


TL;DR для тех, кому некогда читать™:




Вот как всё начиналось
Total votes 191: ↑191 and ↓0+191
Comments79

UKNC Back to Life!

Reading time4 min
Views6.5K

История разработки одного эмулятора


1. Зачем?

Можно сказать, что всю свою программерскую жизнь я был программистом-прикладником. Участвовал в разработке и коробочных продуктов, и под заказ, в небольших компаниях и побольше. Это интересная и разнообразная работа. Но ничего близко связанного с железом я до этого ни разу писал, и по цифровой схемотехнике имел довольно поверхностные знания, если не сказать — никакие. Зато моя программерская юность прошла за освоением C++ под Win32/MFC :) В какой-то степени мне хотелось проверить свои силы — смогу ли.

2. Почему УКНЦ?
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments15

garbage.collect()

Reading time20 min
Views25K
Браузеру для исполнения JavaScript нужно немножко памяти, нужно же где-то хранить объекты, примитивы, функции, которые создаются на все действия пользователя. Поэтому браузер сначала выделяет нужный объем RAM, а когда объекты не используются — чистит её самостоятельно.

В теории звучит хорошо. На практике пользователь открывает 20 вкладок с YouTube, соцсетями, что-то читает, работает, браузер ест память, как Hummer H2 — бензин. Сборщик мусора, как этот монстр с шваброй, бегает по всей памяти и добавляет неразберихи, все тормозит и падает.



Чтобы таких ситуаций не происходило и производительность наших сайтов и приложений не страдала, фронтенд-разработчику стоит знать, как мусор влияет на приложения, как браузер его собирает и оптимизирует работу с памятью и как это все отличается от суровой реальности. Как раз об этом доклад Андрея Роенко (flapenguin) на Frontend Conf 2018.

Мы пользуемся сборщиком мусора (не дома — во фронтенд-разработке) каждый день, но особо не задумываемся, что он вообще есть, чего это нам стоит и какие у него есть возможности и ограничения.

Если бы в JavaScript действительно работала сборка мусора, большинство npm-модулей удаляли бы сами себя сразу после установки.

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

Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments23

Эволюция теории струн до М-теории

Reading time7 min
Views56K
Доброго времени суток, уважаемое хабрасообщество. После моего долгого отсутствия я решил вновь взяться за перо клавиатуру. Сегодня мы попробуем проследить эволюцию теории струн до М-теории, и найти ответы на вопросы: что подтолкнуло ученых к развитию данной теории, с какими проблемами им пришлось столкнуться, и над чем сейчас ломают головы лучшие умы человечества.

Теория струн


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

При дальнейших проверках этот факт получил подтверждение, интересно было и то, что ранее данная функция в основном применялась при описании колебаний натянутых струн.
Читать дальше →
Total votes 130: ↑128 and ↓2+126
Comments119

AccessUSB: «флешка всевластия» для телевизоров LG

Reading time7 min
Views50K

Многие современные телевизоры имеют скрытые сервисные меню, через которые можно посмотреть и изменить различные параметры, недоступные в обычном пользовательском меню. В телевизорах LG есть 2 основных сервисных меню - InStart и EzAdjust, которые можно вызвать посылкой "секретных" ИК кодов, отсутствующих на обычном пульте. Подробности о том, как открыть эти меню, легко найти в интернете, не буду на этом останавливаться, один из вариантов - в этой статье. К сожалению, многие интересные опции в сервисных меню были недоступны для изменения.

В меню InStart меня заинтересовала строка Access USB Status. Гугление не давало никакой информации о том, что это за Access USB, но интуиция подсказывала, что это что-то интересное.

Читать далее
Total votes 186: ↑186 and ↓0+186
Comments46

Стоит ли стремиться в FAANG или Большие минусы известных компаний

Reading time13 min
Views35K

Привет, Хабр! Заметил, что в сети достаточно много авторских и переводных материалов по темам «как попасть в FAANG», «как пройти собеседование в FAANG», «как подготовиться к собеседованию в FAANG» и т.д. У меня сложилось впечатление, что само попадание в FAANG стало целью многих инженеров.

С одной стороны мотивация понятная, ведь такая работа — это престиж и высокий доход. Но с другой стороны (по моему скромному мнению) — это и сделка с совестью, потому что технологические гиганты делают много такого, в сравнении с чем прошлогодняя попытка Rambler отнять NGNIX у Игоря Сысоева, поднявшая всё сообщество на уши, покажется невинной шалостью. Об этом сегодня и поговорим, пройдясь по грешкам этих корпораций.

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

Читать далее
Total votes 38: ↑33 and ↓5+28
Comments40

Как жить с ограничениями внешних API на количество запросов

Reading time7 min
Views7.9K

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

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments3

Эмулятор компьютера с linux на JavaScript

Reading time2 min
Views45K
Никакой серверной части. Только JS: полноценный эмулятор компьютера с линуксом на борту.

bellard.org/jslinux
(внимание, только хром и FF4)

Я долго с ним игрался — это не имитация, линукс ведёт себя как настоящий линукс — компилированные программы работают, ошибки в них вызывают segmentation fault, повреждение корневой файловой системы вызывает бурю возмущения в dmesg и т.д.
Эмулятор PC на JS с линуксом на борту

dd показывает при работе с памятью более чем приличную производительность — более 40 мб/с (не забываем, что это эмулятор, и что это JS в вашем браузере!).

Я никогда не думал, что мы доживём до подобного.

… А теперь начинается оргия:

* С использованием локального хранилища мы можем организовать диски (каждый key-value соответствует одному сектору).
* С использованием web-socket мы можем создать паравиртуализированный драйвер сети с выходом на железный машрутизатор и получить нормальную сеть.
* С использованием существующих технологий (NUMA, DRBD, corosync) можно организовать вычислительный кластер из браузеров.

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

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

Никто не мешает создать паравиртуализированный драйвер видео с помощью canvas, у вас есть webGL, для которого можно написать свой вариант cuda и получить довольно мощную акселерацию вычислений…

Ну и финал — запуск хрома внутри эмулируемой виртуальной машины.

Итак, эмуляция дошла до браузеров…
Total votes 362: ↑333 and ↓29+304
Comments356

Настроили мониторинг. Что дальше?

Reading time8 min
Views3.3K
Всем привет! Меня зовут Мазеин Михаил, я занимаюсь бекенд-разработкой в ManyChat.
Одна из моих задач — анализ и повышение качества нашего продукта через системы мониторингов, алармов и сопутствующих процессов. Я на своем опыте убедился в том, что выстроить мониторинг — недостаточно. Сегодня я поделюсь тремя историями из жизни нашей команды: расскажу, как мы искали решения и какие выводы сделали. На мой взгляд, пост может оказаться полезен и разработчикам, и QA-инженерам, и системным администраторам, и тимлидам/техлидам.

Эта статья основана на моем докладе с онлайн-конференции TechLead Conf 2020. Если вам приятнее смотреть видео, оно доступно на YouTube.



Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments4

Как же всё-таки не ошибаться?

Reading time11 min
Views4.6K
Всем привет! Меня зовут Виктория Головнева, я работаю джуниор аналитиком. Как и любой джун, я постоянно прохожу какие-то курсы, читаю статьи и книги по рабочей (и околорабочей) тематике, чтобы прокачивать мой уровень знаний в SQL, статистике, методах визуализации данных и многом другом.

Недавно мне попалась книга «Как не ошибаться. Сила математического мышления», Джордана Элленберга — о ней и пойдёт речь.

В этой статье я хочу привести несколько простых математических/логических задач, которые:

  • Помогут немного размять мозги;
  • Возможно, кому-то помогут узнать новые понятия из математики и статистики.

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

Заинтересовались? Тогда погнали под кат!


Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments9

Как ManyChat на PHP8 переезжал

Reading time10 min
Views9.7K

Привет, меня зовут Максим, я бэкенд-разработчик в ManyChat. 

Эта статья – о нашем переходе на PHP8. Однажды мы решили немного поисследовать – посмотреть, чего нам будет стоить возможный переход на новую версию, и запланировать эти работы на следующий год, сразу на 8.1. Перспектива переезда тогда вызывала у нас чувства примерно как на КДПВ: от мыслей обо всех тестах и внешних зависимостях было немного неуютно.

Однако в процессе исследования выяснилось, что нельзя просто так взять и остановиться. Одно за другим, и вот мы уже полностью на PHP 8. 

Эта статья – о шагах, из которых складывался переезд, и проблемах, которые мы встретили в процессе. Надеюсь, статья будет полезна для тех, кому ещё только предстоить перейти на PHP 8 – поможет подготовиться хотя бы морально. Для всех остальных (кто уже на PHP 8 или не собирается) – давайте сверимся по ощущениям.

Читать далее
Total votes 48: ↑48 and ↓0+48
Comments4

Coroutines в PHP и работа с неблокирующими функциями

Reading time18 min
Views79K
Одним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.

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

Генераторы


Суть генератора в том, что это функция, которая возвращает не просто одно значение, а последовательность значений, где каждое значение выброшено одно за другим. Или, другими словами, генераторы позволяют вам реализовать итератор, без лишнего кода.
Читать дальше →
Total votes 111: ↑103 and ↓8+95
Comments57

Война с компилятором и собой: об оптимизациях вещественной арифметики на Эльбрусе

Reading time24 min
Views27K

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

Читать дале
Total votes 185: ↑183 and ↓2+181
Comments114

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

Reading time24 min
Views166K

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее
Total votes 435: ↑423 and ↓12+411
Comments300

Горизонтальное масштабирование. Что, зачем, когда и как?

Reading time17 min
Views118K
Александр Макаров

Александр Макаров ( SamDark )


Здравствуйте! Я Александр Макаров, и вы можете меня знать по фреймворку «Yii» — я один из его разработчиков. У меня также есть full-time работа — и это уже не стартап — Stay.com, который занимается путешествиями.

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

Что такое масштабирование, вообще? Это возможность увеличить производительность проекта за минимальное время путем добавления ресурсов.

Обычно масштабирование подразумевает не переписывание кода, а либо добавление серверов, либо наращивание ресурсов существующего. По этому типу выделяют вертикальное и горизонтальное масштабирование.
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments17

Скорость света ближе, чем казалось: ученые создали первый пузырь Алькубьерре

Reading time6 min
Views228K


Еще одна технология из Star Trek оказалась больше наукой, чем фантастикой. Ученые под финансированием DARPA создали так называемую «warp bubble» — область пространства, способную расширяться или уменьшаться быстрее скорости света. Об этом сообщает бывший специалист НАСА по варп-двигателям Гарольд Уайт. Это первый настоящий «пузырь варп-движения», созданный в лаборатории. Который, как минимум, подтверждает, что такое возможно. И, по словам Уайта, устанавливает новую перспективу для тех, кто захочет создать первый космический корабль, способный к деформации.

Читать дальше →
Total votes 188: ↑147 and ↓41+106
Comments255

Принтеры на помойку: ЭДО без операторов ЭДО, как поставить в ступор банк или бюрократа который требует подпись на бумаге

Reading time10 min
Views23K

21 век формально давно наступил. А фактически — дайте копию вашего паспорта без отметок, распечатайте этот документ, подпишите, отсканируйте и отправьте нам по почте, привезите нам справку, что вы не верблюд, заверьте у нотариуса, придите лично подписать. Что?! Стоп! Хватит это терпеть! Проталкиваем и бьёмся за будущее всеми доступными средствами! УКЭП и 63-ФЗ подходит и физическим лицам, чтобы не ходить ногами. В статье расскажу про непростой наш опыт перехода на электронный документооборот (ЭДО) при колоссальном сопротивлении многих контрагентов и даже наших сотрудников.

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

Читать далее
Total votes 24: ↑22 and ↓2+20
Comments79

Дефицит есть, а денег не дают. Почему?

Reading time27 min
Views292K

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

Читать далее
Total votes 618: ↑603 and ↓15+588
Comments1205
1
23 ...

Information

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