Search
Write a publication
Pull to refresh
10
0.3

JavaScript-разработчик

Send message

Как писать на ассемблере в 2021 году

Reading time9 min
Views46K
Несмотря на наличие множества языков различной степени высокоуровневости, сегодня ассемблер не потерял своей актуальности и в индексе TIOBE находится на почётном 10-ом месте (на февраль 2021), обогнав такие модные языки как Go и Rust. Одна из причин его привлекательности – в простоте и максимальной близости к железу; с другой стороны, программирование на ассемблере всё ещё может рассматриваться как искусство и даёт совершенно особые эмоции.


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

Создаем веб-приложение на Haskell с использованием Reflex. Часть 1

Reading time11 min
Views9.3K

Часть 2.


Часть 3.


Введение


Всем привет! Меня зовут Никита, и мы в Typeable для разработки фронтенда для части проектов используем FRP-подход, а конкретно его реализацию на Haskell – веб-фреймоворк reflex. На русскоязычных ресурсах отсутствуют какие-либо руководства по данному фреймворку (да и в англоязычном интернете их не так много), и мы решили это немного исправить.


В этой серии статей будет рассмотрено создание веб-приложения на Haskell с использованием платформы reflex-platform. reflex-platform предоставляет пакеты reflex и reflex-dom. Пакет reflex является реализацией Functional reactive programming (FRP) на языке Haskell. В библиотеке reflex-dom содержится большое число функций, классов и типов для работы с DOM. Эти пакеты разделены, т.к. FRP-подход можно использовать не только в веб-разработке. Разрабатывать мы будем приложение Todo List, которое позволяет выполнять различные манипуляции со списком задач.


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

Гравицапа для межпланетных перелётов или гравитационный манёвр

Reading time9 min
Views21K

Вопрос эмиграции в последние десятилетия стоит наиболее остро. И если 40 лет назад пределом мечтаний было перебраться за океан, то в XXI веке умами овладела мечта о релокейшне на Марс, например. Однако там тоже в скором времени может стать тесно. Остаётся одна дорога — колонизация Солнечной Системы и экзопланет. Допустим, мы собрались покинуть внутреннюю область Солнечной Системы, а, если повезёт, то и совсем выбраться за её пределы. Помимо невероятных объёмов тушёнки и кислорода, необходимых для выживания в суровом Космосе, нам потребуется в разы на порядки большее количество топлива, чтобы всё это добро дотащить. И ещё столько же топлива, чтобы тащить то топливо. И ещё топливо.

И самое обидное, что скорее всего мы закончим свой век среди троянских астероидов Юпитера, померев от тоски. Потому что топлива всё равно ни на что не хватит. Однако присмотримся к нашей Солнечной системе повнимательнее. Вот те же «троянцы и греки» — не просто так столпились в точках Лагранжа L4 и L5 Юпитера. Их туда «затолкала» гравитация планеты-гиганта, не потратив ни единой капли гидразина.

Давайте же и мы применим дармовую энергию Природы для достижения благородной цели доставки полезной нагрузки в далёкий космос.
Читать дальше →

Javascript and Rocket Science

Reading time4 min
Views3.9K

Я уже два с половиной года пишу на Js, и почти повсюду вижу примеры решения типовых задач для этого языка . Отрисовать очередную онлайн-витрину, подать асинхронный запрос на бек за очередным JSON. Уровнем повыше - построить структуру данных для SPA и на ее основе отобразить визуальные компоненты. Но в Js есть полноценная библиотека математических функций, он обеспечивает неплохую для скриптового языка скорость вычислений (здесь сравнение производительности по бенчмаркам Питона vs Node ), так что почему бы не попытаться сделать еще один шаг и не решить с его помощью какую-нибудь инженерную задачу. Например - из космической области.

Выйти в космос

Google удалил расширение ClearURLs из Chrome Web Store

Reading time2 min
Views54K

Google по каким-то причинам удалил популярное расширение ClearURLs из Интернет-магазина Chrome.

Разработчик подал апелляцию в Google против блокировки расширения и получил ответ: в копии электронного письма, предоставленного разработчиком, Google утверждает, что описание расширения «слишком подробное» и нарушает правила интернет-магазина Chrome.

Читать далее

Упавшая звезда. Как выглядела самая первая ОС с графическим оконным интерфейсом

Reading time10 min
Views29K


Когда мы говорим «операционная система с графическим интерфейсом», первое, что обычно приходит в голову — это macOS и Microsoft Windows (кое-кто, конечно, сразу вспоминает Linux). Причем примерно в такой последовательности наиболее распространенные сегодня платформы с GUI и развивались исторически: считается, что первой на коммерческий рынок «операционок с окнами» вышла Apple, к которой спустя некоторое время подтянулись разработчики из Редмонда. Но еще задолго до этих двух компаний собственную графическую платформу начали разрабатывать в другой фирме, широко известной сегодня своими принтерами и копировальными аппаратами. Речь, как ни странно, идет о Xerox.

Сторонние куки: хранить нельзя блокировать? Браузер Brave подходит к снаряду

Reading time4 min
Views5K

С первого релиза Brave ведёт наиболее агрессивную из всех браузеров политику в отношении сторонних кук и других данных — мы по умолчанию делаем недоступными сторонние хранилища (и хранилище кук, и localStorage / indexedDB). Однако заход с такого козыря не только мощно повышает уровень пользовательской приватности, но и ломает массу сайтов. Рассказываем наш рецепт хранения, сортировки и выдачи кук.

Читать далее

Заметки фитохимика 2021. БОРЩЕВИК

Reading time25 min
Views56K
Когда-то давным-давно, после публикации статьи посвященной лампе Вуда (см. gReebok detected. Сам себе дерматовенеролог), я анонсировал «борьбу с борщевиком». Потом периодически то в телеграм-канале, то в патреоне читатели у меня спрашивали на предмет этого ненароком брошенного «бороться». Вот на улице весна и кое-где «главный ворог православного народа» начал показываться из-под земли. А значит, самое время описать свое видение того, а надо ли бороться вообще и только ли с борщевиком.

Если хочется узнать почему петрушка/укроп/лайм/бабушкин фикус не менее токсичны (?) чем борщевик Сосновского, как с помощью компонентов борщевика за пару дней стать негром или вылечить рак и облысение — добро пожаловать под кат!


Памятка по работе с борщевиком

Летаем на дроне легально

Reading time4 min
Views29K

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

Лет 5 назад мне подарили дрон, ноунейм дрон. Это была очень простая копия DJI Phantom 1, которая не умела держать высоту, летать против ветра и снимать лучше кнопочного телефона 2002 года. В общем, один раз запустили, у него сели батарейки, да и больше не было желания к нему прикасаться. Зато вновь появился интерес к радиоуправляемым моделям (дронам).

Дальше мне подарили DJI Spark - мой первый нормальный дрон, который умел снимать вот так

Читать далее

Самодельный спектрометр с высоким разрешением

Reading time3 min
Views35K

Хорошее разрешение достижимо

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

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

Идеальная версия недельной сетки календаря для печати

Reading time1 min
Views5.1K
Очень многие люди до сих пор пользуются печатными версиями ежедневников, и дело тут не в том, что существует нехватка онлайн-планировщиков, а в том, что это, скорее, когнитивная потребность.

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

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

Ink: инструмент для создания текстовых квестов как из лучших воспоминаний детства

Reading time8 min
Views21K


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

Соглашение Эйнштейна и einsum

Reading time8 min
Views21K

Удивительное дело, но в русскоязычном сегменте интернета почти нет материала, разъясняющего понятным языком соглашение Эйнштейна о суммировании. Не менее удивительно то, что материалов, позволяющих понять принцип работы функции einsum в русскоязычном интернете ещё меньше. На английском есть довольно развёрнутый ответ о работе einsum на stack overflow, а на русском только некоторое число сайтов, предоставляющих кривой перевод этого самого ответа. Хочу исправить эту проблему с недостатком материалов, и всех, кому интересно приглашаю к прочтению!

Погрузиться в einsum

Измеритель расстояния на HC-SR04 без микроконтроллера

Reading time6 min
Views17K

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

Читать далее

Поддержка JavaScript-приложений в долгосрочной перспективе

Reading time8 min
Views6.3K
Публикуем перевод статьи, в которой подробно описана многолетняя работа команды по созданию и поддержанию большого портала данных на JavaScript.

В 2019 была написана статья о поддержке больших приложений на JavaScript (Maintaining large JavaScript applications). В продолжение этого материала, хотели бы поделиться клиентским проектом, который моя команда поддерживает с 2014 года.
Читать дальше →

Быстрое сравнение double

Reading time1 min
Views16K
Вчера здесь вышла статья о быстром парсинге double, я зашёл во блог к её автору, и нашёл там ещё один интересный трюк. При сравнении чисел с плавающей точкой особое внимание приходится уделять NaN (восемь лет назад я писал про них подробнее); но если сравниваемые числа заведомо не NaN, то сравнить их можно быстрее, чем это делает процессор!

Положительные double сравнивать очень просто: нормализация гарантирует нам, что из чисел с разной экспонентой больше то, чья экспонента больше, а из чисел с равной экспонентой больше то, чья мантисса больше. Стандарт IEEE 754 заботливо поместил экспоненту в старшие биты, так что положительные double можно сравнивать просто как int64_t.



С отрицательными числами немного сложнее: они хранятся в прямом коде, тогда как int64_t — в дополнительном. Это значит, что для использования целочисленного сравнения младшие 63 бита double необходимо инвертировать (при этом получится -0. < +0., что не соответствует стандарту, но на практике не представляет проблемы). Явная проверка старшего бита и условный переход уничтожили бы всю выгоду от перехода к целочисленному сравнению; но есть способ проще!

inline int64_t to_int64(double x) {
	int64_t a = *(int64_t*)&x;
	uint64_t mask = (uint64_t)(a >> 63) >> 1;
	return a ^ mask;
}

inline bool is_smaller(double x1, double x2) {
	return to_int64(x1) < to_int64(x2);
}

a>>63 заполняет все 64 бита копиями знакового бита, и затем >>1 обнуляет старший бит.
Читать дальше →

Клавиатура своими руками под свои руки

Reading time24 min
Views349K

Для меня всё началось вот с этого топика о механических клавиатурах, желания научиться печатать быстрее (к своему стыду до недавних пор печатал двумя пальцами, несмотря на 25летний стаж программирования), и появившихся недавно неприятных ощущений в кистях после рабочего дня (да и вообще времени, проведённого за компьютером).
Провёл короткое исследование о том, что вообще есть из клавиатур для программистов и тех, кто много печатает, и написал вот этот обзорный топик. Купил себе Happy Hacking Lite (минималистичная клавиатура с мембранными переключателями), но печатать на ней оказалось ещё менее удобно, чем на ноутбучной, в основном из за ещё более компактного расположения клавиш.
Вскоре появился топик, в котором автор рассказывал о новоприобитённой им Truly Ergonomic, пожалуй, практически идеальной клавиатуры с моей точки зрения, но в комментариях автор же отметил, что спустя два месяца использования так и не смог совсем пересесть на неё, а положение рук совсем не так и удобно, как рекламируется.
Чуть позже появился топик о Kinesis Advantage, по отзыву автора к которой тоже не так легко привыкнуть, а цена так и просто пугает.
И я решил...

Как удалить «неудаляемые» приложения со смартфона

Reading time5 min
Views277K


Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →

Проблема логических языков программирования

Reading time5 min
Views11K
Некоторое время назад я писал про «Интернациональное программирование на естественных языках», в которой попытался представить достойную цель для абстрактного языка программирования, попробовав примерить на него роль связующего звена между миром программистов с компьютерами и не программистов.

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

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

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

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

Так почему этого так и не случилось? В чем проблема Пролога, да и любой системы / языка программирования, назначение которых анализировать факты и искать ответы на вопросы?

Эта проблема называется «Комбинаторный взрыв» — экспоненциальная (или более) зависимость времени работы алгоритма от количества входных данных. И есть как минимум два решения этой проблемы.
Читать

Сколько нужно примитивов для реализации форт системы?

Reading time3 min
Views5.1K
В 1992-м году проходил очередной конкурс по обфусцированному программированию на языке С. Один из представленных проектов был небольшой форт системой. Меня поразило, что виртуальная машина была реализована всего в 794 байтах С кода. Остальная часть форт системы загружалась из исходника на форте. После изучения проекта первоначальный восторг уступил место разочарованию, так как автор использовал не совсем “честный” трюк: для парсинга фортового исходника он использовал функцию scanf(). С этого момента меня терзал вопрос — сколько нужно примитивов для реализации форт системы без подобных трюков?
Читать дальше →

Information

Rating
3,507-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity