Рубрика «Программирование» - 27

Почему десктопные приложения работают на веб-платформе? - 1


Где мы свернули не туда? Как получилось, что современный десктопный GUI по умолчанию использует платформу HTML/CSS/JavaScript, которая изначально не предназначена для нативной работы на десктопе? Она создана конкретно для браузера и веба. Зачем из нативного софта делать веб-страницы в браузерной оболочке?

Джефф Этвуд (автор Stack Overflow) предсказал этот феномен ещё в 2007 году. Он тогда сформулировал так называемый закон Этвуда:

Любое приложение, которое можно написать на JavaScript, будет в итоге написано на JavaScript.

Так и вышло.
Читать полностью »

Я знаю, какое у вас сейчас лицо:

лицо человека, который узнает что кто-то пишет код на VBA

лицо человека, который узнает что кто-то пишет код на VBA

Но на самом деле идея не нова и изначально я даже думал не изобретать велосипед, ведь есть по описанию неплохой vba-blocks, с открытым исходным кодом. Бери не хочу.
Читать полностью »

Код-ревью – это хорошо. Оно помогает улучшить качество кода, наладить сотрудничество в команде, познакомить каждого разработчика с самыми отдаленными уголками кодовой базы, до которых он бы не скоро добрался, делая только назначенные ему задачи. Из всего того, чем обычно занимаются программисты, именно в код-ревью лучше всего видна справедливость поговорки «Одна голова – хорошо, а две – лучше». 

Читать полностью »

Постпятничные клеточные автоматы: альтернативные окрестности и HROT - 1

👾!

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

Сегодняшний обзор мы совместим с ещё одним расширением: в статье об LtL было упомянуто, что параметры рождения и выживания клетки могут поддерживать множество значений и диапазонов в некоторых прочих конфигурациях. В первую очередь речь шла о HROT (Higher-Range Outer-Totalistic) – обобщении LtL конфигурации, на котором и будут наши сегодняшние примеры.
Читать полностью »

ArrayPool<T>: подводные камни - 1

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

Для уменьшения аллокаций в современном .NET предусмотрены Span/Memory<T>, stackalloc с поддержкой Span, структуры и другие средства. Но если без объекта в куче не обойтись, например, если объект слишком большой для стека, или используется в асинхронном коде — этот объект можно переиспользовать. И для самых крупных объектов — массивов, в .NET встроены несколько реализаций ArrayPool<T>.

В этой статье я расскажу о внутреннем устройстве реализаций ArrayPool<T> в .NET, о подводных камнях, которые могут сделать пулинг неэффективным, о concurrent-структурах данных, а также о пулинге объектов, отличных от массивов.

Читать полностью »

Как контрибьютить в проект, о котором ничего не знаешь - 1

Bun

В последнее время мне очень нравится Bun. Это новая среда исполнения JavaScript / TypeScript, схожая с Deno / Node. Она имеет одно преимущество по сравнению с другими средами исполнения, которое очень важно для меня: очень быстрый запуск (по крайней мере, для JS). Когда я впервые запустил в ней небольшой кусок кода, то просто не мог поверить.

Когда я перешёл с Ruby на Node, меня оттолкнуло то, что тесты в Node выполняются о-о-очень медленно. Написание одной и той же бизнес-логики и её тестирование на этих языках — совершенно разный опыт. Неудивительно, что сообщество JS-разработчиков ненавидит юнит-тестирование, когда нужно думать, например, распределять ли тесты на несколько файлов, или нет.

Однако на то есть причина. Как бы вы ни оптимизировали инструменты для выполнения тестов наподобие Vitest, Jest или Ava, первый прогон теста (без watch) всегда будет выполняться чрезвычайно медленно в Node, потому что для запуска V8 и разрешения модулей требуется куча времени. Когда ты распределяешь работу на несколько процессов, чтобы использовать все ядра, это требует ещё больше ресурсов!
Читать полностью »

«Скачал плагин и опингвинился». Полезные инструменты для работы с IDE - 1

Эффективность разработки зависит не только от скиллов программиста, но и от рабочего окружения. Так, чтобы оптимизировать процесс, можно использовать специальные плагины или расширения IDE. В тексте собрали самые полезные, по мнению специалистов Selectel, инструменты. Сохраняйте подборку в закладки и делитесь своими вариантами в комментариях.
Читать полностью »

Разработка небольшого солнечного трекера - 1


Всем привет. Решил немного отдохнуть от гексапода и пощупать проекты с солнечными панелями. Первое, что пришло в голову — установка для автоматического позиционирования солнечных панелей (солнечный трекер). Его главная задача — выставить солнечные панели под максимально эффективным углом для получения наибольшего КПД. В этой статье мы посмотрим, как на коленке можно собрать датчик положения источника света и на его основе создать систему позиционирования. Этот проект никогда не окупится, но и не для этого он делается — мы просто развлекаемся!Читать полностью »

Как устроено индексирование баз данных - 1


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

Детектив kesn всегда готов помочь!

Детектив kesn всегда готов помочь!

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

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js