Как стать автором
Обновить
2095.26
Сначала показывать

React: разрабатываем кастомный useEffect

Время на прочтение10 мин
Количество просмотров6.5K


Привет, друзья!


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


Предполагается, что вы хорошо знакомы с тем, как работает хук useEffect, а также с тем, когда и почему происходит повторный рендеринг React-компонентов. Если нет, вот парочка ссылок:



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


Код проекта, с которым мы будем работать, можно найти здесь.


Начнем с примера.

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии8

Настолки Древней Руси

Время на прочтение7 мин
Количество просмотров19K


В продолжение темы древних игр (Во что поиграть, если шахматы ещё не придумали, а ты фараон/викинг/вождь майя), я решила узнать, во что играли в Древней Руси.

Под катом фотки, правила и ссылочки на браузерные версии «монополий» и «три в ряд» времен средневековой Руси.

Я веду канал в Telegram GameDEVils и блог на Substack . Подписывайтесь, я делюсь там материалами про геймдизайн, разработку и историю игр.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Комментарии20

Формальное описание менеджера пакетов

Время на прочтение11 мин
Количество просмотров2K
image

Однажды автор решил помочь Грэму Кристенсену в сборе средств на проект Great Slate – и подарил ему два технических поста на выбор самого Кристенсена. Затем Грэм купил у него еще один текст и попросил написать.

Что-нибудь, касающееся Nix или NixOS.


Далее – от автора.

Для меня это был тот еще вызов, ведь на тот момент я еще даже не знал, что такое Nix. Я им никогда не пользовался, до сих пор не пользуюсь и не собираюсь переходить в обозримом будущем – так как единственный компьютер, которым я сейчас пользуюсь, работает под Windows.(1) К счастью, формулировка «что-нибудь» дает некоторое поле для маневра, и я быстро сориентировался, о чем могу написать. Nix позиционируется как «полнофункциональный» менеджер пакетов. В самом деле, что же это означает? Мужайтесь, ниже речь пойдет о формализации. Я опишу некоторое множество «теоретически возможных» менеджеров пакетов, и мы обсудим, какие достоинства (и, возможно, недостатки) есть у «полнофункционального» менеджера пакетов.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Паттерн внедрение зависимостей в .NET nanoFramework для микроконтроллеров

Время на прочтение11 мин
Количество просмотров3.9K
.NET nanoFramework Weatherstation

Сегодня сломаем привычный мир инженеров и разработчиков встраиваемых систем на микроконтроллерах. В .NET существует замечательный паттерн программирования, как внедрение зависимостей (Dependency injection, DI). Суть паттерна заключается в предоставление механизма, который позволяет сделать взаимодействующие в приложение объекты слабосвязанными. Эти объекты будут связаны между собой через абстракции, например, через интерфейсы, что делает всю систему более гибкой, более адаптируемой и расширяемой. Но когда ведется разработка для микроконтроллеров, все зависимости обычно жестко завязаны на используемых устройствах, и замена датчика иногда приводит к существенному переписыванию программного кода. Напишем приложение на .NET nanoFramework для микроконтроллера ESP32, используя паттерн DI с возможностью легкой замены датчиков и LCD экрана.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии12

Kincony KC868-E16S: контроллер в стиле стимпанк

Время на прочтение6 мин
Количество просмотров6.5K


Смотрю я на KC868-E16S и не могу понять, что он мне больше напоминает — ламповый усилитель Hi-End класса, девайс из вселенной киберпанка или артефакт от советской шаговой АТС — пожалуй вариант с киберпанком мне нравится больше, если ещё добавить немного меди и что-то вроде двигателя Стирлинга, то было бы совсем круто.

На самом деле Kincony KC868-E16S производит довольно внушительное впечатление — его приятно держать в руках: вес 16-и реле придаёт контроллеру некую монументальность, чувствуется, что держишь в руке «настоящую вещь».

Да и остальная начинка в стиле KC868-й серии весьма интересна, приглашаю вас познакомиться с содержимым KC868-E16S и посмотреть что и как там устроено…

(Кстати, вы заметили, что буква «A» в названии контроллера сменилась на «E»? Это нам как бы прозрачно намекает, что сама компания Kincony относит это изделие к классу «умных релейных блоков», я бы даже сказал «очень слишком умных релейных блоков».)
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии36

День рождения операционной системы, которой не должно было быть

Время на прочтение4 мин
Количество просмотров46K

Еще до официального релиза Windows 98, на мероприятии под названием Windows Hardware Engineering Conference руководитель корпорации Microsoft Билл Гейтс во всеуслышание заявил о том, что эта версия ОС станет последней в линейке 9х, и все последующие редакции Windows будут разрабатываться на платформе NT. Однако он все-таки слегка обманул уважаемую публику. Уже 5 мая 1999 года случилось «второе пришествие» в виде Windows 98 Second Edition, а ровно 22 года назад, 14 сентября 2000-го, неожиданно вышла она — Windows ME, Millennium Edition, которую русскоязычные пользователи сразу же нежно окрестили «линолеум эдишн», а их заокеанские коллеги — «Mistake Edition» (версия-ошибка).
Читать дальше →
Всего голосов 80: ↑79 и ↓1+78
Комментарии104

Поздравляем с Днем программиста

Время на прочтение3 мин
Количество просмотров14K

Пожалуй, нет на свете ни одного другого праздника, который менял бы собственную дату столь же часто, как этот. Сегодня мы отмечаем День программиста — профессиональный праздник всех тех специалистов, без которых любое компьютерное «железо» навсегда останется мертвым и безжизненным. Хотя стоп! Почему именно сегодня?
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии69

TypeScript в деталях. Часть 2

Время на прочтение11 мин
Количество просмотров13K


Привет, друзья!


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


Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

10 принципов хорошего левел дизайна

Время на прочтение10 мин
Количество просмотров14K


Я откопала видео про 10 принципов хорошего левел дизайна с Game Developers Conference аж 2013. Это как 10 принципов дизайна Диттера Рамса, только про игры. Часовое выстуление на английском по ссылке. Мне так понравился этот подход, что я решила сделать конспект на 5-7 минут чтения.

Вот эти 10 принципов, а примеры из игр под катом.

Хороший левел дизайн:

  1. Доставляет удовольствие от навигации;
  2. Не полагается на слова;
  3. Сообщает игроку что делать, но не как;
  4. Постоянно учит чему-то новому;
  5. Удивляет;
  6. Наделяет игрока возможностями;
  7. Позволяет игроку контролировать сложность;
  8. Эффективен;
  9. Создает эмоции;
  10. Основывается на игровых механиках.

Я веду канал в Telegram GameDEVils и блог на Substack . Подписывайтесь, я делюсь там материалами про геймдизайн, разработку и историю игр.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии25

Магия орбитального рандеву

Время на прочтение12 мин
Количество просмотров11K
Мы привыкли к тому, что космические корабли рутинно летают к орбитальным станциям, сближаются и стыкуются. Но даже симулятор уровня Kerbal Space Program показывает, насколько это нетривиальная задача — то по расстоянию промахнулись, то скорость не та, то в тень вошли, то слишком много топлива потратили. А ведь в реальной космонавтике были истории, когда после отказа техники сближались вручную, причем, используя инструменты, которые, казалось, давно остались в прошлом. Сегодня мы поговорим о рандеву разнообразных космических аппаратов, от «Джемини» и первых «Союзов» до летающих сейчас к МКС Crew Dragon, Boeing Starliner и «Союзов», научившихся сверхкороткой схеме сближения.


Астронавт Александр Герст проводит эксперименты по навигации в космосе с секстантом, фото NASA
Читать дальше →
Всего голосов 89: ↑89 и ↓0+89
Комментарии14

Поздравляем с днем тестировщика

Время на прочтение4 мин
Количество просмотров7K


Программисты, дизайнеры, системные администраторы, даже блогеры — пожалуй, каждый из представителей IT-индустрии имеет своей профессиональный праздник. «День тестировщика» отмечают сегодня, 9 сентября. Однако с самой этой торжественной датой дела обстоят не так просто, как кажется!
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии13

Как привлечь первых пользователей в свою игру или приложение

Время на прочтение13 мин
Количество просмотров10K

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

Написали на Хабре 8 лет назад. Если тогда рынок мобильных игр был перенасыщен, то сейчас я не знаю, какое слово назвать. А ещё я не знаю, что такое сдаваться, так что продолжаю разматывать клубок геймдева. Под катом подробнее про способы привлечения игроков:

  1. Условно-бесплатное

    1.1. App Store Optimization;
    1.2. Социальные сети;
    1.3. Реферальные программы и приглашения.
  2. С разовыми инвестициями

    2.1. Инфлюенсеры;
    2.2. PR + пресса.
  3. Платное привлечение

    3.1. Реклама в соцсетях VS контекстная реклама;
    3.2. Платформы роста (отзывы про 4 самых популярных).

Ещё я веду канал в Telegram GameDEVils и блог на Substack , делюсь там материалами про геймдизайн, разработку и историю игр.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии9

TypeScript: разбираем исходный код Radash

Время на прочтение13 мин
Количество просмотров4.8K


Привет, друзья!


Radash — это современная альтернатива Lodash, библиотека, предоставляющая набор часто используемых утилит (вспомогательных функций), реализованных на TypeScript. В данной статье мы вместе с вами разберем исходный код нескольких наиболее интересных утилит.


Репозиторий с кодом библиотеки находится здесь.


Обратите внимание: я позволил себе немного модифицировать отдельные утилиты для повышения читаемости и сокращения шаблонного кода. Также в нескольких местах пришлось поправить типы.


Для тех, кому интересно, вот большая коллекция сниппетов JavaScript.


Начнем с чего-нибудь попроще.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии14

Kincony KC868-A8S: Wi-Fi, Ethernet, Bluetooth, 433 МГц, RS485 и GSM в одном флаконе

Время на прочтение7 мин
Количество просмотров6.1K


Сегодня на обзоре Кольцо Всевластия Моя Прелесть контроллер Kincony KC868-A8S — это модернизированная версия рассмотренного ранее контроллера KC868-A8. Модернизированная настолько, что по сути это уже совсем другой контроллер с гораздо более широкими возможностями, главной из которых является возможность работы в GSM сетях.

Разработчики постарались на славу и в лице Kincony KC868-A8S мы имеем устройство, которое позволяет (одновременно) коммуницировать по Wi-Fi, Ethernet, Bluetooth, 433 МГц, RS485 и GSM, получать, отправлять и перераспределять различные IoT данные и команды.

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

Далее мы посмотрим чем ещё нас порадовала компания Kincony в модели KC868-A8S…
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии9

Самый мощный суперкомпьютер 60-х. Краткая история IBM Stretch

Время на прочтение5 мин
Количество просмотров7.6K


42 года назад, 5 сентября 1980 года в Университете Бригама Янга был навсегда выключен последний суперкомпьютер IBM Stretch. Этот сверхмощный мейнфрейм, известный также под наименованием IBM 7030, стал результатом научно-исследовательского проекта, который корпорация IBM начала еще в 1955 году — его целью было построить суперкомпьютер, в сотни раз превосходящий по мощности все, что еще было создано до этого. Stretch по праву считался самым быстрым и продвинутым компьютером на всем земном шаре в конце 70-х и начале 80-х годов прошлого века, и в то же время снискал славу провального проекта, принес компании многомиллионные убытки и в итоге был выведен из эксплуатации. Почему его судьба сложилась именно таким образом? Все дело в завышенных ожиданиях.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии16

Краткая (очень) история боёв роботов

Время на прочтение14 мин
Количество просмотров13K
1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.
2. Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.
3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.

В этих известных постулатах Азимова ощущалась некоторая неполнота, и поэтому в 1986 году в романе «Роботы и Империя» (англ. Robots and Empire) он предложил Нулевой Закон:

0. Робот не может причинить вред человечеству или своим бездействием допустить, чтобы человечеству был причинён вред.

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


Читать дальше →
Всего голосов 88: ↑88 и ↓0+88
Комментарии30

TypeScript в деталях. Часть 1

Время на прочтение6 мин
Количество просмотров26K


Привет, друзья!


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


Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии9

React: разрабатываем HOC и хук для наблюдения за элементами

Время на прочтение9 мин
Количество просмотров9.3K


Привет, друзья!


В данной статье мы с вами разработаем HOC (Higher-Order Component — компонент высшего порядка) и хук (custom hook) для наблюдения за DOM-элементами на странице с помощью Intersection Observer API.


Функционал нашего HOC будет похож на функционал, предоставляемый такими пакетами, как react-lazyload или react-lazy-load. Основное его назначение будет состоять в отложенной (ленивой — lazy) загрузке компонентов. Суть идеи заключается в рендеринге только тех компонентов, которые находятся в области просмотра (viewport — вьюпорт), что может существенно повысить производительность приложения.


Назначением хука будет регистрация пересечения (intersection) наблюдаемого (observable) элемента с областью просмотра (или другим элементом). Этот хук предоставляет очень интересные возможности, парочка из которых будет рассмотрена в соответствующем разделе.


Репозиторий с кодом проекта


При разработке инструментов я буду применять систему типов, предоставляемую TypeScript.


Если вам это интересно, прошу под кат.

Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии2

NORVI Agent 2: агент под прикрытием (встраивается куда угодно)

Время на прочтение7 мин
Количество просмотров3.3K


Сегодня на обзоре несколько необычное устройство из линейки контроллеров Norvi — встраиваемая модель NORVI Agent 2 (AP01-BC1). От своих собратьев она отличается тем, что имеет корпус специально предназначенный для встраивания в различные агрегаты и приборы.

Просто делаем прямоугольное отверстие в корпусе какого-либо агрегата, вставляем Второго Агента, подключаем провода и агрегат сразу значительно «умнеет» — у него появляются беспроводная Wi-Fi и Bluetooth связь (LoRa или NB-IoT), возможность получения данных от датчиков, управления оборудованием по интерфейсу RS485 и т. д.

В целом это интересное решение, которое мы далее постараемся подробно разобрать и узнать что и как там устроено, итак…
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии10

Нетривиальные способы применить блокчейн на практике

Время на прочтение9 мин
Количество просмотров4K
image

Введение


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

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

Что, если бы мы хотели гарантировать следующее: всякий раз, когда мы вытягиваем код из VCS (системы контроля версий) этот код будет ровно одинаковым, независимо от того, когда мы его вытянем?
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии7

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud