Pull to refresh
0
0
Дмитрий Селезнёв @selim13

User

Send message

[апрель 2024] Настройка проекта AstroJS: VS Code, Prettier, ESlint, Stylelint, Tailwind CSS, PostCSS, минификация файлов

Level of difficultyMedium
Reading time9 min
Views5.2K

AstroJS изначально был движком для создания статичных сайтов. Теперь там есть работа с API, server-side рендеринг, гибридный режим сервера. Можно написать код сайта в Astro-файлах на обычном html + js, а можно подключить визуальный фреймворк на свой выбор: React, Preact, Vue, Solid, Svelte. Подключаем CMS или backend-as-a-service - вот уже замена именитым NextJS и NuxtJS.

Но перед активной фазой создания сайта давайте потратим 10 минут. Настройка проекта для работы в команде займет каких-то шагов 20...

Читать далее
Total votes 5: ↑4 and ↓1+4
Comments3

Если это не трудно, значит за это не стоит браться

Reading time6 min
Views38K
image

Согласно психологическим исследованиям, эмоции от ожидания события почти всегда превосходят по накалу переживание самого события.

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

Занятно, что ваш разум может обмануть вас и сделать идею чего-либо более приятной, чем сам этот предмет, так что вы наслаждаетесь самой идеей, и не воплощаете её в жизнь. В своей новой книге «Эго – это враг» [Ego is the Enemy], Райан Холидэй [Ryan Holiday] объясняет, что главным препятствием на пути к успеху является представление об успехе.

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

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

В результате, пробуя непосредственно само действие, вы натыкаетесь на стену сопротивления. Чаще всего вы отвлекаете себя от этого дискомфорта неким сиюминутным удовольствием. Роберт Грин объясняет в своей книге «Мастерство» [Mastery], что можно научиться любить это внутреннее сопротивление. Он пишет: «Вы находите некое извращённое удовольствие в том, чтобы двигаться сквозь боль, которую это может принести».
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments47

Из счетчика Гейгера, спичек и ардуины. Часть первая — теория

Reading time11 min
Views44K
Давно не проблема купить прибор под условным названием «бытовой дозиметр» (были б деньги — в этом смысле, Фукусима радиофобам и радиофилам (TM) подгадила), но думаю, что этот прибор было бы интересно сделать своими руками.

image

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

Итак, начнем.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments31

Во что поиграть от топографического кретинизма: игры на зрительно-пространственную функцию

Reading time27 min
Views25K


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

У некоторых детей освоение ориентировки на плоскости, а потом и в пространстве вызывает больше затруднений, чем у других. Например, она труднее дается левшам и девочкам, причем по одной и той же причине – из-за особенностей межполушарного взаимодействия. Когда женщина говорит, что надо повернуть налево, имея в виду, что надо повернуть направо, то это как раз про то, что у нее есть небольшой дефицит зрительно-пространственной функции. Многим женщинам из-за этого трудно читать карты, и чтобы понять, в какую сторону идти, им вначале нужно сориентировать карту так, чтобы она совпадала с местностью.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments29

«Пора валить из фронтенда»: Андрей Ситник о стагнации сообщества, опенсорсе и не только

Reading time27 min
Views84K


Андрей Ситник из Злых марсиан — одно из самых известных российских имён во фронтенде: у его проектов PostCSS и Автопрефиксер счёт GitHub-звёзд идёт на десятки тысяч. Но поскольку Андрей живёт в Нью-Йорке, а путешествует по всей планете, застать в России его можно нечасто.

В мае он будет в Петербурге на конференции HolyJS, и по этому поводу его подробно расспросили участники программного комитета HolyJS Дмитрий DmitryMakhnev Махнёв и Максим Юзва. Почему Андрей считает, что фронтенд стагнирует, а код наших проектов излишне разбухший? В чём различия IT-сообществ разных стран? Как учить английский и почему это менее важно, чем кажется? Куда пропал проект Logux, презентованный на HolyJS ещё в 2016-м?
Читать дальше →
Total votes 102: ↑88 and ↓14+74
Comments296

Стажёр Вася и его истории об идемпотентности API

Reading time11 min
Views233K

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Total votes 219: ↑216 and ↓3+213
Comments163

Распознавание номеров. Практическое пособие. Часть 1

Reading time6 min
Views104K
Пример распознавания номерных знаков

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

И в один прекрасный день МВД Украины открыло доступ к реестру транспортных средств. Теперь по номерному знаку стало возможным проверять некоторую информацию про автомобиль (марку, модель, год выпуска, цвет и т.д. )! Скучная рутина линейного программирования померкла перед новой свехзадачей — считывать номера по всей базе фото и валидировать эти данные с теми, что указывал пользователь. Сами знаете как это бывает «глаза загорелись» — вызов принят, все остальные задачи на время стали скучны и монотонны… Мы принялись за работу и получили неплохие результаты, чем, собственно и решили поделиться с сообществом.
Для справки: на сайт AUTO.RIA.com, в день добавляется около 100 000 фото.
Датасаентисты давно уже знают и умеют решать подобные задачи, поэтому мы с dimabendera написали эту статью именно для программистов. Если вы не боитесь словосочетания «сверточные сети» и умеете писать «Hello World» на питоне — милости просим под кат…
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments58

Сергей и научный метод

Reading time7 min
Views19K
Все совпадения случайны.
Кто не спрятался, я не виноват.
— Проходи, что стоишь как не родной?

Сергей огляделся — в квартире своего учителя-профессора он еще не бывал. Обыкновенная московская, в старом доме — видимо, еще с тех времен, когда их выдавали… или не выдавали, черт его знает, он-то эти времена уже не застал. Бардак конечно, но рабочий — повсюду книги и распечатки каких-то статей. Похоже, профессор продолжает вести активную научную работу, несмотря на свой возраст…
Читать дальше →
Total votes 51: ↑45 and ↓6+39
Comments39

Вторая версия Монитора качества воздуха

Reading time1 min
Views11K
image

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

И вот появилась новая версия прибора.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments19

5 правил работы с суммами

Reading time8 min
Views81K
В современном программном обеспечении очень часто возникает необходимость выполнять различные операции с всевозможными суммами денег. Однако до сих пор мне нигде не попадалось документации, в которой были бы сведены воедино основные правила представления сумм и реализации финансовых вычислений. В этой статье я попробую сформулировать те правила, которые составил сам на основании личного опыта.


Читать дальше →
Total votes 126: ↑120 and ↓6+114
Comments241

Дизайн и математика игр-кликеров

Reading time25 min
Views89K
image

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

Что такое инкрементная игра?


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

В сущности, такова общая структура «инкрементной» игры. Она кажется простой, даже примитивной, но в игровом процессе есть неожиданная глубина и привлекательность. Стили игры могут быть разными — от коммерчески успешных и казуальных Clicker Heroes и AdVenture Capitalist до более экспериментальных или хардкорных примеров, таких как Candy Box, Cookie Clicker и Sandcastle Builder.


Cookie Clicker, самое начало.

Что же самое важное в инкрементной игре? Хотя в этом жанре есть множество вариаций и экспериментов, фундаментальными аспектами дизайна являются:

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

Именно цикл накопления, реинвестиций и ускорения определяет основы жанра и отличает его от игр, в которых присутствует просто увеличивающийся счёт. Например, в примечательной Cookie Clicker игрок стремится к росту количества «печенек», которое изначально увеличивается нажатием на огромное печенье, а потом тратит печенье на покупку апгрейдов, позволяющих создавать ещё больше печенья.
Читать дальше →
Total votes 53: ↑53 and ↓0+53
Comments36

Реализация, аналог и адаптация для «чистого» JavaScript'а JQuery функции JQuery(); и прилегающие к ней

Reading time20 min
Views14K
Когда-то библиотека jQuery была хорошим помощником для программистов. Так как она позволяла в разы облегчить создание функционала, который в то время с помощью одного JavaScript было почти нереально написать, и предоставляла очень хорошую кроссбраузерность.

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

В этой статье я расскажу про самую главную функцию jQuery — jQuery();.
Читать дальше →
Total votes 18: ↑13 and ↓5+8
Comments21

Преимущества интерактивного прототипирования

Reading time9 min
Views18K


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

Так было раньше и это работало. Я сам прибегал к таким хитростям неоднократно. Однако, мир вокруг стремительно меняется. Современный продукт настолько сложен, что одна картинка не даст понимания и ответов на вопрос “Как это работает?”. Схематичное или wireframe прототипирование тоже постепенно угасает в закате, так как черно-белые линии и прямоугольники не дают клиенту полного понимания. Всё больше желающих сегодня видеть живой прототип, а не серию картинок…
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments15

Понимание событийной архитектуры Node.js

Reading time11 min
Views39K


Большинство Node-объектов — вроде HTTP-запросов, ответов и потоков (streams) — реализуют модуль EventEmitter, благодаря которому они могут генерировать и прослушивать события.


const EventEmitter = require('events')

Простейшая форма управления по событиям — это callback-стиль некоторых популярных Node.js-функций, к примеру fs.readFile. По этой аналогии событие генерируется однократно (когда Node готов к вызову коллбэка), а коллбэк действует как обработчик события. Давайте сначала разберём эту базовую форму событийно-управляемой архитектуры.

Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments9

Реверс-инжиниринг игры Lost Vikings

Reading time31 min
Views25K
После интересной обратной разработки игрового движка Comprehend (см. Recomprehend) я подбирал новый проект для реверс-инжиниринга игры под DOS. За долгие годы разные люди реверсировали множество старых популярных игр и опубликовали для них спецификации и инструменты. Например, на сайте shikadi.net есть куча информации об играх, в которые я играл в детстве.

Я обнаружил, что для реверс-инжиниринга игры The Lost Vikings компании Blizzard (тогда она называлась Silicon and Synapse), похоже, не предпринималось никаких серьёзных попыток. Игра была выпущена в 1993 году, на закате эры DOS, и очень нравилась мне в юности. The Lost Vikings — это головоломка-платформер, в которой игрок управляет тремя викингами, каждый из которых имеет собственные умения. Викингам нужно объединить свои силы для решения загадок и прохождения уровней с различной тематикой: космический корабль, доисторический мир, Древний Египет. На изображении ниже показан первый уровень игры (источник: Strategy Wiki):

image

Казалось, что эту игру разобрать будет довольно просто. Уровни основаны на тайловых картах и содержат простые загадки: кнопки, включающие и отключающие объекты, передвижные ящики и поднимающий предметы кран. И на самом деле, бóльшая часть проекта по обратной разработке была достаточно прямолинейной. У игры есть один пакетный файл данных, содержащий сжатые блоки файлов. Блоки кодируют различные ресурсы игры, такие как спрайты, карты, звуки и т.д. Я написал несколько утилит, которые можно использовать для просмотра ресурсов игры: The Lost Vikings Tools.
Total votes 58: ↑58 and ↓0+58
Comments20

Лекции Техносферы: Программирование на Go

Reading time2 min
Views53K

image


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


Список лекций:


Total votes 73: ↑68 and ↓5+63
Comments52

Увидеть невидимое: заглядываем внутрь тепловизора Seek Thermal (и не просто так)

Reading time6 min
Views29K
Доброго дня, %username%! Сегодня я расскажу (и немного покажу), что можно (но не всегда нужно) делать с тепловизором Seek Thermal.


Синяя изолента, куда ж мейкеру без нее.

В последнее время на гиктаймс было немало статей про эту тепловизионную камеру. Почитать можно, например, тут, тут и вот здесь даже с подключением к STM-32, но мы сегодня не об этом — скучной теории и картинок котиков не будет, только мякотка. Под катом рассказ о том, как сделать из iOS-версии Seek Thermal версию для Android и Raspberry Pi, зачем это нужно и что еще интересного можно узнать в процессе копания во внутренностях тепловизора. Интересующихся прошу.
Total votes 42: ↑40 and ↓2+38
Comments34

Трудные уроки: пять лет с Node.js

Reading time11 min
Views35K
После пяти лет работы с Node.js я многое понял. Я уже делился некоторыми историями, но в этот раз хочу рассказать о том, какие знания дались труднее всего. Баги, проблемы, сюрпризы и уроки, которые вы можете использовать в собственных проектах!

Базовые концепции


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

Классы


Когда я только начал работать с Node.js, то написал скрапер. Очень быстро я понял, что если ничего не предпринять, то он будет осуществлять много запросов параллельно. Одно это стало важным открытием. Но поскольку я ещё не полностью усвоил мощь экосистемы, то сел и написал собственный ограничитель параллелизма. Он работал и проверял, что в каждый момент времени активны не более N запросов одновременно.
Читать дальше →
Total votes 33: ↑27 and ↓6+21
Comments8

MakiseGUI — бесплатная библиотека графического интерфейса для микроконтроллеров

Reading time6 min
Views33K

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


Назвал я её MakiseGui.


Total votes 66: ↑65 and ↓1+64
Comments57

Терминальная графика

Reading time8 min
Views55K
Когда printf — мало, а ncurses — много


Когда данных становится слишком много, бывает не хватает стандартного вывода printf в консольной программе. Особенно если различных событий много и различные данные превращаются в безумный листинг. Эти данные могут поступать от контроллера через UART, и тут нечего и думать о какой-то gui-программе. Может так же быть и обычный bash-скрипт, к которому хочется прикрутить какой-никакой псевдографический интерфейс.
Читать дальше →
Total votes 61: ↑54 and ↓7+47
Comments69
1
23 ...

Information

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