Обновить
2K+
59

Пользователь

21
Подписчики
Отправить сообщение

Идеальный инструмент для создания прогрессивных веб-приложений или Всё, что вы хотели знать о Workbox. Часть 1

Время на прочтение30 мин
Охват и читатели16K

Что такое Workbox?


Workbox (далее — WB) — это библиотека (точнее, набор библиотек), основной целью которой является "предоставление лучших практик и избавление от шаблонного кода при работе с сервис-воркерами" (далее — СВ).


Если вы впервые слышите о СВ, то перед изучением данного руководства настоятельно рекомендуется ознакомиться со следующими материалами:



WB предоставляет следующие возможности:


  • предварительное кэширование
  • кэширование во время выполнения
  • стратегии (кэширования)
  • обработка (перехват сетевых) запросов
  • фоновая синхронизация
  • помощь в отладке

На что похож WB API?


Ниже приведены примеры основных подходов к разработке прогрессивных веб-приложений (приложений, в которых используются возможности, предоставляемые СВ).

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

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

Время на прочтение10 мин
Охват и читатели7.2K
Для современного энтерпрайз-архитектора критически важно разбираться в пограничных вычислениях (edge computing). В этой статье будут рассмотрены основы пограничных вычислений и приведены примеры использования этой технологии на практике.



Пограничные вычисления – определенно существенная часть современного технологического ландшафта. Объем рынка для продукции и услуг, связанных с пограничными вычислениями, более чем удвоился с 2017 года. Причем, согласно статистическому сайту Statista, к 2025 году ожидается взрывной рост этого рынка (см. рисунок 1 ниже). 


Рисунок 1: Объем мирового рынка пограничных вычислений: текущая ситуация и прогноз на 2025 год (в миллиардах долларов США) (Statista)

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

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

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

Как подружиться со своей интернет-зависимостью: практическое руководство

Время на прочтение12 мин
Охват и читатели40K

В этом переводе автор подробно описывает 9 правил разумного потребления цифрового контента, которые он успешно протестировал на себе.



Бывает у вас такое, что вы сели почитать любимую книгу, но ваш разум начинает… блуждать. Есть ли у вас проблемы с концентрацией на работе или учёбе? Раньше у меня даже во время просмотра фильмов или шоу регулярно появлялось желание проверить почту, социальные сети, новостную ленту и так далее. 


Возможно, вы злитесь из-за того, что не можете сконцентрироваться. А тут ещё портят настроение эти идиотские новости о том, что кто-то опять пытается разрушить нашу планету. И возможно, вы думаете: «Почему вся эта информация приплывает именно ко мне? Почему мне так важно, кто кого лайкнул в соцсетях? Почему мне есть дело до всего этого?»


Если это про вас, то у меня есть три новости — одна плохая и две хорошие.


  1. Плохая новость: в вашем мозгу нарушился естественный процесс получения вознаграждения.
  2. Первая хорошая новость: это распространённая проблема, с которой до вас справились многие. 
  3. Вторая хорошая новость: в этой статье я расскажу о девяти правилах, которые позволили мне справиться с этим.

Если вы считаете, что ваш способ взаимодействия с цифровым миром портит вам жизнь, снижает уровень продуктивности, делает вас менее креативным и мотивированным, добро пожаловать под кат. 

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

Карманная книга по TypeScript. Часть 7. Классы

Время на прочтение17 мин
Охват и читатели39K

image


Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



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


Члены класса (class members)


Вот пример самого простого класса — пустого:


class Point {}

Такой класс бесполезен, поэтому давайте добавим ему несколько членов.

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

Ищем уязвимости в Python-коде с помощью open source инструмента Bandit

Время на прочтение6 мин
Охват и читатели20K


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

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

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

В этом туториале мы рассмотрим, как даже в очень простом коде могут появиться уязвимости и как использовать утилиту Bandit для их поиска.
Читать дальше →

Разработчик популярного веб-фреймворка FastAPI — об истории его создания и перспективах аннотаций типов Python

Время на прочтение7 мин
Охват и читатели13K


Python-девелопер и писатель Рики Уайт взял интервью у Себастьяна Рамиреса, разработчика из Explosion AI. Но Себастьян не просто разработчик, это заметная фигура в open source сообществе, создатель популярных фреймворков FastAPI и Typer. В основном речь шла про широкие возможности применения аннотаций типов Python, историю создания фреймворка FastAPI и его дальнейшее развитие. Кроме того, Себастьян рассказал о своих планах по работе над другими open source проектами. Без лишних слов, давайте перейдем к интервью.

Рики: Спасибо, что пришёл, Себастьян. Сначала я бы хотел задать тебе те же вопросы, что и другим своим гостям. Как ты начал программировать? Когда познакомился с Python?

Себастьян: Спасибо, что пригласил [улыбается].

Я начал программировать, когда мне было пятнадцать. Я пытался создать веб-сайт для бизнеса своих родителей. Первым моим настоящим «кодом» был JavaScript внутри HTML — модальное диалоговое окно (alert) с фразой «Hello World». Я до сих пор помню, как обрадовался, увидев это маленькое окно с сообщением, и испытал чувство всемогущества от мысли, что это запрограммировал я.

Я много лет боялся изучать какой-либо другой язык, думая, что сначала должен «хотя бы» освоить JavaScript. Но потом на одном из многих онлайн-курсов, которые я проходил, возникла необходимость использовать Python для управления искусственным интеллектом в Pac-Man и для некоторых других задач. Курс состоял из одного длинного туториала по основам Python, и этого было достаточно. Мне очень хотелось попробовать.

Я быстро влюбился в Python и пожалел, что не начал раньше!
Читать дальше →

Карманная книга по TypeScript. Часть 6. Манипуляции с типами

Время на прочтение18 мин
Охват и читатели32K

image


Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



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


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


Дженерики


Создадим функцию identity, которая будет возвращать переданное ей значение:


function identity(arg: number): number {
 return arg
}
Читать дальше →

Десятикратное улучшение производительности React-приложения

Время на прочтение6 мин
Охват и читатели13K

image


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


Около года назад в Techgoise я получил возможность поработать с большим React-приложением. Мы получили (унаследовали) готовую кодовую базу, внесли основные правки и начали добавлять в приложение новые интересные возможности.


Однако, мы часто получали жалобы от тестировщиков и конечных пользователей о том, что они видят эту злополучную ошибку. После проведенного анализа мы установили, что причина происходящего состоит в том, что приложение расходует целых 1,5 Гб памяти!


В данной статье я расскажу о том, как нам удалось добиться уменьшения этой цифры с 1,5 Гб до 150 Мб, что, как следствие, привело к улучшению производительности почти в 10 раз, и мы больше никогда не сталкивались с Ошибкой.


Поиск узких мест в производительности


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


1. Профилирование компонентов с помощью расширения для Google Chrome

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

Rust в ядре Linux

Время на прочтение12 мин
Охват и читатели19K


В более ранней публикации  компания Google объявила, что в Android теперь поддерживается язык программирования Rust, применяемый в разработке этой ОС как таковой. В связи с этим авторы данной публикации также решили оценить, насколько язык Rust востребован в разработке ядра Linux. В этом посте на нескольких простых примерах рассмотрены технические аспекты этой работы.

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

Реверс инжиниринг приборной панели Nissan Murano Z50

Время на прочтение7 мин
Охват и читатели20K
Имеем Nissan Murano 2005 года выпуска. Американец. Ни блютуза ни, уж тем более, цифровой приборной панели, а хочется. Если с блютузом проблема решается прикручиванием устройств подобных этому:

…то оцифровать приборную панель уже будет посложнее. Однако, глаза боятся, а руки делают.

Для экспериментов я приобрел приборку от европейца, но принципиально она ничем от американца не отличается, кроме как расположением кнопок одометра и стоп-сигнала, и настройками тока для стрелочки спидометра (а еще она не такая жирная и не пытается найти у меня нефть). Дело в том, что у европейца и американца отличается максимальная скорость на спидометре, соответственно при 240км/ч на американце, европеец покажет приблизительно 210. Таким образом, графическая накладка не взаимозаменяемая:


Далее, согласно документации на приборную панель (файл Приборка.pdf, все архивы оставлю в конце) подключаем питание к приборке.  Контакты 22, 23, 24 черные провода, на схеме обозначены буквой «B» подключаем к минусу (один или все вместе неважно), и контакты 21«Y/R» — желтый с красной полосой и 20«O» — оранжевый (оба сразу) к + 12 вольтам. Контакт 15«R/W» красный с белой полосой это освещение приборки, то же 12 вольт, но подключать не обязательно. Важное замечание: фактический номер контакта может отличатся от указанного в схеме, ибо инженеры нисан – японцы на всю голову и именуют номер контакта по японскому! То есть на плате три штекера — один основной для подключения к тачке и два для подключения кнопок стоп-сигнала и сброса одометра. Так вот вместо того, чтобы обозначить в каждом штекере контакты от 1 и до максимального, они объединили номера всех трех штекеров в одну группу, таким образом первый по номеру контакт находится на первом штекере, а последний на третьем. Короче ориентируйтесь по цветам и моим картинкам. Вот фото задней части:
Читать дальше →

Находим и устраняем уязвимости бинарных файлов в Linux — с утилитой checksec и компилятором gcc

Время на прочтение9 мин
Охват и читатели11K

Изображение: Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0

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

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

Checksec — это простая утилита, позволяющая определить, какие свойства были включены при компиляции. В этой статье я расскажу:

  • как использовать утилиту checksec для поиска уязвимостей;
  • как использовать компилятор gcc для устранения найденных уязвимостей.

Установка checksec


Для Fedora OS и других систем на базе RPM:

$ sudo dnf install checksec

Для систем на базе Debian используйте apt.

Быстрый старт с checksec


Утилита сhecksec состоит из единственного скриптового файла, который, впрочем, довольно большой. Благодаря такой прозрачности вы можете узнать, какие системные команды для поиска уязвимостей в бинарных файлах выполняются под капотом:
Читать дальше →

Как защититься от синдрома запястного канала? 

Время на прочтение9 мин
Охват и читатели68K


Наряду с компьютерным зрительным синдромом, о котором мы уже рассказывали ранее, среди IT-специалистов распространен и другой весьма серьезный недуг — синдром запястного канала. В чем проявляется данное заболевание и можно ли предотвратить его развитие? Давайте разбираться. 

Причины и симптоматика синдрома запястного канала


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

Человеческий организм имеет огромное количество подобных мест: на одной лишь руке могут развиться 8 разных туннельных синдромов. Поэтому с медицинской точки зрения называть синдром запястного канала, о котором пойдет речь в сегодняшней статье, просто туннельным синдромом, без уточнения локализации патологического процесса, некорректно. Хотя справедливости ради стоит сказать, что именно карпальный туннельный синдром (так называют синдром запястного канала неврологи) является самой распространенной формой компрессионно-ишемической невропатии из всех существующих: его общая доля в популяции составляет около 5%, а ежегодный прирост заболеваемости достигает 3 случаев на каждую тысячу населения.
Читать дальше →

StreetWriter: собираем устройство для печати водой по асфальту

Время на прочтение15 мин
Охват и читатели7.4K


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




Вступление


Я начал заниматься этим проектом, потому что хотел оставить свой след в мире, но не хотел оставлять никаких последствий.

Я также хотел сложного проекта для моего нового 3D-принтера, который включал бы программирование для Arduino.

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

Как можно увидеть в моих видео, StreetWriter соответствует всему этому. Он пишет сообщения высотой 8 дюймов (20,32 см) водой на тротуаре, во время движении и не оставляет следов, когда вода испаряется.

Я построил два StreetWriter-а с небольшими различиями в конструкции между ними. Эта инструкция основана на второй сборке, которая несколько улучшена.

В StreetWriter-е вода под давлением подается в коллектор, в который содержит 8 автомобильных топливных форсунок. Во время движения StreetWriter-а — Arduino управляет топливными форсунками, разбрызгивая воду на тротуар. Наносимое сообщение является одним из 8, которые были записаны на SD-карту, подключенную к Arduino. Оператор может легко выбирать среди сообщений и может записывать новые сообщения на SD-карту, с помощью компьютера. Нет ограничений на длину сообщения, кроме количества воды в резервуаре. Самое длинное сообщение, которое я написал на данный момент — число Пи, с точностью до 300 знаков.

Механические мониторы

Время на прочтение8 мин
Охват и читатели13K


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

Особенно это стало ярко проявляется в тот момент, когда появились миниатюрные сложные электронные схемы, помещенное внутрь компактных корпусов — интегральные микросхемы.

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

Конечно, с точки зрения нашего современного момента, это кажется невероятным, что телевидение может быть механическим, — у современного человека даже не укладывается в голове!

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

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

Карманная книга по TypeScript. Часть 5. Объектные типы

Время на прочтение13 мин
Охват и читатели29K

image


Доброго времени суток, друзья! Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



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


В JS обычным способом группировки и передачи данных являются объекты. В TS они представлены объектными типами (object types).


Как мы видели ранее, они могут быть анонимными:


function greet(person: { name: string, age: number }) {
 return `Привет, ${person.name}!`
}

или именоваться с помощью интерфейсов (interfaces):


interface Person {
 name: string
 age: number
}

function greet(person: Person) {
 return `Привет, ${person.name}!`
}
Читать дальше →

Секты: кто на них зарабатывает, как вербуют сторонников и как защитить своих близких

Время на прочтение22 мин
Охват и читатели45K

А теперь Господь хочет, чтобы вы вышли на эту сцену и положили один доллар в этот ящик

Согласно просочившимся налоговым документам, Международная Церковь Саентологии и Церковь Духовной Технологии в США в 2012 году имели совокупные активы в 1.7 миллиарда долларов в дополнение к годовым доходам, оцениваемым в 200 миллионов долларов в год. И это только в США — существует еще Международная ассоциации саентологов.

Процент самоубийств и смертей из-за отказа принимать помощь медиков среди саентологов просто зашкаливает: на сайте посвященном жертвам саентологии сообщается о 165 задокументированных смертях, из которых 90 — это самоубийства, убийства, аварии и другие формы насилильственной смерти (при нормальном показателе случаев насильственной смерти в 6.5% в США, риск умереть от насильственной смерти у саентологов возрастает в 8 раз). 

Почему люди вступают в такие организации и почему несут им деньги? 

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

Другие громкие случаи, освещенные СМИ: чем опасны секты


В 1978 году в общине секты «Храм народов» под названием Джонстаун 909 человек, среди которых было более 200 детей, совершили массовое религиозное самоубийство. 
Читать дальше →

Собираем и устанавливаем свою Linux-систему на микроконтроллер STM32MP1

Время на прочтение12 мин
Охват и читатели22K

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

В этой статье мы автоматизируем процесс сборки и установки Linux-системы на микроконтроллер STM32MP157-DK2. ОС будет обладать минимальной функциональностью, но зато мы соберём из исходников собственную систему. А поможет нам в этом Buildroot — система сборки Linux-дистрибутивов. 

Что такое Buildroot?


Сначала вспомним, что Linux-система состоит из достаточно большого количества разных компонентов. Так как мы здесь говорим про embedded-платформы, выделим следующие компоненты:
Читать дальше →

Карманная книга по TypeScript. Часть 4. Подробнее о функциях

Время на прочтение15 мин
Охват и читатели45K

image


Я продолжаю серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



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


Функции — это основные строительные блоки любого приложения, будь то функции, импортируемые из другого модуля, или методы класса. В TS существует несколько способов описания того, как фукнции вызываются.


Тип функции в форме выражения (function type expressions)


Простейшим способом описания типа функции является выражение. Такие типы похожи на стрелочные функции:

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

Гибкая печатная плата своими руками

Время на прочтение6 мин
Охват и читатели28K
Туториалов по созданию обыкновенных печатных плат на просторах интернета более чем достаточно, а вездесущие китайцы упростили этот процесс до заводского качества. Однако, когда речь заходит о создании гибких плат, тут приходится изгаляться в меру своей смекалки. Хотя, справедливости ради, надо сказать, что и такие вещи китайцы тоже делают, хоть и не дёшево. Но мы будем говорить о ситуации, когда надо вот прямо сейчас и из подручных материалов. Собственно, я непосредственно и столкнулся с такой проблемой и одним из способов ее решения хочу поделиться.

Для начала пару слов что же это такое и в каких случая используется. В этом случае Википедия справедливо утверждает, что гибкая печатная плата (далее ГПП), это такая штука, которая может свободно изгибаться. Не поспоришь. В наиболее распространенном случае ГПП используется в виде соединительных шлейфов, как например на картинке ниже:



В более продвинутом варианте, на нем же распаивают некоторые компоненты. Те, кто разбирал старые сидюки, видел, что весь обвес головки выполнен как раз-таки на такой ГПП. Вот типичнейший пример:
 

Тащим с айфонов все, что плохо лежит через дырявый Apple Find My

Время на прочтение14 мин
Охват и читатели14K


После состоявшегося недавно релиза технологии AirTags от Apple я заинтересовался, можно ли злоупотреблять системой оффлайнового поиска «Find My», чтобы загружать в Интернет произвольные данные с устройств, не подключенных к WiFi или мобильному интернету. Эти данные могли бы широковещательно транслироваться по Bluetooth с низким энергопотреблением и подхватываться устройствами Apple, расположенными поблизости. Эти устройства, стоит им подключиться к Интернету, сразу переправляли бы эти данные на сервера Apple, откуда их впоследствии можно извлечь. Такой прием мог бы использоваться небольшими сенсорами в неконтролируемых окружениях, чтобы не тратить лишнюю энергию на использование мобильного Интернета. Кроме того, она могла бы быть интересна для кражи данных из мест, защищенных клеткой Фарадея, стоит туда только заглянуть человеку с айфоном. 

Теоретически такое должно быть возможным: если удастся эмулировать два AirTags, то можно закодировать данные, активировав в конкретный момент времени лишь один из них. В таком случае устройство-получатель должно проверить, какой AirTag был активен в какое время, и декодировать данные обратно в исходный вид. Однако такая схема представляется исключительно ненадежной и, пожалуй, непригодной к использованию в реальных практических ситуациях по причине очень узкой полосы передачи данных (особенно с учетом ограничения в 16 AirTag на Apple ID представлялось, что объем передаваемых данных не может превышать нескольких бит в час).

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность