Pull to refresh
55
0
Variable name @kahi4

Database administrator

Send message

Упущенный импакт tNPS: потенциал, как основа ранжирования

Reading time 6 min
Views 9K

Привет, Хабр! Меня зовут Сергей Барановский, я руководитель проектов по аналитике МТС.

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

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

Как работает React: подробное руководство

Reading time 22 min
Views 43K


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


В этой статье я покажу вам, с чего начинается React.


Что это означает? Это означает, что мы разработаем мини-версию React, которая сможет выполнять следующий код:


import '../style.scss'
import MyReact from './my-react'

const buttonStyles = {
 border: 'none',
 outline: 'none',
 padding: '0.3rem 0.5rem',
 marginLeft: '0.5rem',
 backgroundImage: 'linear-gradient(yellow, orange)',
 borderRadius: '2px',
 boxShadow: '0 1px 2px rgba(0, 0, 0, 0.2)',
 cursor: 'pointer'
}

/** @jsx MyReact.createElement */
function Counter() {
 const [value, setValue] = MyReact.useState(1)
 const [count, setCount] = MyReact.useState(1)

 return (
   <section>
     <h1 className='title'>Hello from MyReact!</h1>
     <div className='box'>
       <input
         style='width: 80px; padding: 0.15rem 0.5rem;'
         type='number'
         value={value}
         onInput={(e) => {
           setValue(Number(e.target.value))
         }}
       />
       <button
         style={buttonStyles}
         onClick={() => {
           setCount((count) => count + value)
         }}
       >
         Increment
       </button>
     </div>
     <h2 className='subtitle'>
       Count: <span className='count-value'>{count}</span>
     </h2>
     <ul className='list'>
       {['React', 'from', 'scratch'].map((item) => (
         <li>{item}</li>
       ))}
     </ul>
   </section>
 )
}

MyReact.render(<Counter />, document.getElementById('app'))

Как вы могли догадаться, наша версия будет называться MyReact.


Исходный код проекта.


Скриншот:





Песочница:

При разработке мы будем придерживаться архитектуры исходного кода React. Вместе с тем, следует отметить, что за последние 2 года исходный код React претерпел значительные изменения, поэтому некоторые вещи, которые мы будем рассматривать, помечены в нем как legacy. Несмотря на это, общие принципы и подходы остаются прежними.

Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 5

Прямоугольные тайловые миры

Level of difficulty Medium
Reading time 17 min
Views 25K

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

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

Читать далее
Total votes 98: ↑98 and ↓0 +98
Comments 11

Аркадный автомат своими руками (ретрогейминг с динамической подсветкой)

Reading time 15 min
Views 25K

Всем привет! Любите ли вы играть в игры? А точнее в классику игровой индустрии? Классические, ретро-игры на NES, Sega? Или, быть может, скучаете и хотели бы иметь свой кусочек 80х - настоящий аркадный автомат? Вот я хотел и сделал такой универсальный ретро-автомат своими руками.

Читать далее
Total votes 20: ↑20 and ↓0 +20
Comments 10

Как создавать красивые карты с помощью Python

Reading time 4 min
Views 22K
Мне всегда нравились карты городов, и несколько недель назад я решил создать свою собственную, художественную версию. Немного погуглив, я обнаружил крутое руководство, написанное Фрэнком Себальосом. Оно увлекательно и полезно, но я предпочитаю более подробные/реалистичные карты-схемы. Из-за этого я решил создать свою собственную версию карт. Итак, давайте посмотрим, как мы можем создавать красивые карты с помощью Python и данных OpenStreetMap.

Приятного чтения!
Total votes 27: ↑24 and ↓3 +21
Comments 11

Декодируем сигнал метеоспутника NOAA в 50 строчек кода

Reading time 5 min
Views 20K
Привет, Хабр.

Продолжим тему декодирования различных видов радиосигналов. Одним из интересных форматов, разработанных еще в прошлом веке, является APT (Automatic Picture Transmission). Он используется для передачи изображений Земли из космоса, и что для нас гораздо более интересно и актуально, прием сигналов APT прост и доступен радиолюбителям.


Спутник NOAA © en.wikipedia.org/wiki/NOAA-15

Для тех, кому интересно, продолжение под катом.
Читать дальше →
Total votes 44: ↑44 and ↓0 +44
Comments 11

Связанные одним тросом: NASA показала новый планетоход DuAxel из двух половинок

Reading time 2 min
Views 6.6K
Фото: NASA

Лаборатория реактивного движения (Jet Propulsion Laboratory) NASA разработала новый прототип вездехода DuAxel. Несмотря на схожесть с другими марсоходами, DuAxel гораздо маневренее, поскольку состоит из пары двухколесных транспортных средств.

NASA опубликовала запись испытаний планетохода Duaxel. Двухколесная передняя часть вездехода может отделяться и работать какое-то время автономно. Она остается сцепленной с планетоходом тросом, но может перемещаться самостоятельно. Такая конструкция дает возможность исследовать сложнодоступные места и рельефную местность.
Total votes 24: ↑24 and ↓0 +24
Comments 14

Факторизация и эллиптическая кривая. Часть III

Reading time 21 min
Views 7.3K



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

Если пройтись по Интернету и по статьям об ЭК на Хабре, то после этого возникает мысль, что существует определенный пробел всех без исключения публикаций, включая и объемные бумажные книги. Авторы почему-то считают само-собой разумеющимся понимание природы ЭК и ее аддитивной группы, ее появление. На самом деле ЭК и ее группа (мое мнение) — это чудо!

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

Правда для этого ему пришлось открыть свои законы движения/тяготения и изобрести дифференциальное и интегральное исчисления. Задача взятие двукратного интеграла от второго закона Ньютона, в котором ускорение — вторая производная пути, решением имеет плоскую кривую второго (не третьего, не путать эллипсы — траектории планет, спутников и эллиптические кривые в криптологии) порядка, что до И. Ньютона было открыто И.Кеплером.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 0

Запуск Unix-подобной ОС на самодельном CPU с помощью самодельного компилятора C

Reading time 12 min
Views 14K
image

Два года назад я начал работать разработчиком ПО. Иногда я рассказывал своим коллегам о студенческом проекте, которым занимался на третьем курсе университета, и они восприняли его настолько хорошо, что я решил написать этот пост1.

Позвольте задать вам вопрос: вы когда-нибудь проектировали собственную архитектуру набора команд (ISA), создавали на FPGA процессор на основе этой ISA и собирали для него компилятор? Запускали ли вы операционную систему на этом процессоре?

А у нас это получилось.

В этом посте я расскажу о своей учёбе в 2015 году, о четырёх месяцах создания самодельного CPU на самодельной архитектуре набора команд RISC, создании самодельного тулчейна C и портировании на этот процессор Unix-подобной ОС Xv6.

Процессорный эксперимент в Токийском университете


Всё это делалось в рамках студенческого экспериментального проекта под названием CPU Experiment. Давайте начнём с того, что же такое CPU experiment.
Читать дальше →
Total votes 44: ↑44 and ↓0 +44
Comments 13

Чек-лист перед калибровкой модели машинного обучения

Reading time 3 min
Views 3.7K
Часто в теории работа модели выглядит просто и складно, но когда вы получаете набор реальных данных и задачу их посчитать, это может вызвать ступор. Даем 7 полезных советов от Петра Лукьянченко, ex-Team Lead Analytics в Lamoda и руководителя онлайн-курса «Математика для Data Science. Продвинутый уровень».





Привет! Это Петр Лукьянченко (PetrPavlovich). Мой чек-лист — подборка мыслей, которые выработались за годы набитых шишек и допущенных ошибок.
Читать дальше →
Total votes 13: ↑10 and ↓3 +7
Comments 1

Как обезопасить свой веб-сайт?

Reading time 6 min
Views 36K


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

Этот небольшой, но важный список конкретных действий, который следует производить каждому со своим веб-ресурсом, если репутация компании, безопасность веб-ресурсов и данных клиентов – это не пустые слова для вас.
Читать дальше →
Total votes 41: ↑29 and ↓12 +17
Comments 2

Security Week 03: принципы ответственного багрепорта

Reading time 4 min
Views 1.7K
Седьмого января команда Google Project Zero, специализирующаяся на поиске уязвимостей в ПО, сообщила об изменениях в правилах раскрытия информации об обнаруженных багах (новость, пост в блоге). В 2020 году Project Zero будет раскрывать информацию об уязвимостях через 90 дней после первого уведомления «пострадавшего» вендора. Дедлайн не изменился, но до этого исследователи из Project Zero могли опубликовать отчет о проблеме быстрее, если разработчику ПО удалось выпустить патч до этого срока. Теперь Project Zero будет ждать 90 дней вне зависимости от наличия заплатки.

Новые правила представляют интерес по ряду причин. Во-первых, нет единого стандарта — сколько времени давать разработчику ПО на анализ уязвимости и ее устранение. Команда Project Zero, регулярно обнаруживающая серьезные уязвимости в ПО, принимает такие решения самостоятельно и таким образом пытается влиять на всю индустрию. Во-вторых, важно изменение приоритетов: вместо «давайте закроем этот баг побыстрее» разработчиков мотивируют устранять уязвимость надежно. Иначе регулярно выходит, что патч либо не решает проблему вовсе, либо добавляет новые баги.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 3

Быстрое ознакомление с SwiftUI

Reading time 2 min
Views 7.8K
SwiftUI — это новый удобный способ для создания пользовательских интерфейсов на Xcode. Если хотите быстрое ознакомление с SwiftUI, тогда этот блог пост для вас.

Для начала давайте создадим проект с поддержкой SwiftUI. Минимально необходимые для этого требования системы — это macOS Catalina и Xcode 11. Создайте новый проект “File > New > Project…”, выберите “Single View App” и убедитесь, что выбрано “User Interface: SwiftUI”.



Проект будет выглядеть примерно так:



Как могли заметить, теперь можно видеть все изменения сразу же на Preview. Например, попробуйте изменить текст на “Привет, Хабр!”. Круто да?
Читать дальше →
Total votes 21: ↑17 and ↓4 +13
Comments 0

Используем passwordstore.org — менеджер паролей в стиле KISS

Reading time 11 min
Views 16K

Всем привет. В этой статье я хотел бы поделиться своим опытом настройки и использования pass — менеджера паролей для Linux и не только, примечательного своей простотой, использованием уже присутствующих в системе инструментов и возможностью работать исключительно из консоли. Конкретнее, будут затронуты проблемы, связанные с генерацией и хранением секретного ключа gpg, а также с настройкой совместной работы pass, gpg, git, github и браузера. Всё — под Linux, Windows и Android.

Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 2

IT Релокация. Из Бангкока в Сидней

Reading time 13 min
Views 35K


Доброго времени суток дорогой читатель. Если ты знаком с моей историей переезда в Бангкок, то, я думаю, тебе будет интересно послушать еще один мой рассказ. В начале апреля 2019 года я переехал в самый лучший город на Земле — Сидней. Занимай свое уютное кресло, завари теплый чаек и добро пожаловать под кат, где тебя ждет множество фактов, сравнений и мифов о Австралии. Что же, погнали!

Читать дальше →
Total votes 111: ↑100 and ↓11 +89
Comments 105

Как разрабатываются и производятся процессоры: проектирование ЦП

Reading time 9 min
Views 34K
image

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

Часть 1: Основы архитектуры компьютеров (архитектуры наборов команд, кэширование, конвейеры, hyperthreading)
Часть 2: Процесс проектирования ЦП (электрические схемы, транзисторы, логические элементы, синхронизация)
Часть 3: Компонование и физическое производство чипа (VLSI и изготовление кремния)
Часть 4: Современные тенденции и важные будущие направления в архитектуре компьютеров (море ускорителей, трёхмерное интегрирование, FPGA, Near Memory Computing)

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

Существует два основных типа транзисторов, используемых в современных процессорах: pMOS (PМОП) и nMOS (NМОП). nMOS-транзистор пропускает ток, когда затвор (gate) заряжен или имеет высокое напряжение, а pMOS-транзистор пропускает ток, когда затвор разряжен или имеет низкое напряжение. Сочетая эти типы транзисторов комплементарным образом, мы можем создавать логические элементы КМОП (CMOS). В этой статье мы не будем подробно разбирать особенности работы транзисторов, но коснёмся этого в третьей части серии.
Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 8

Элегантная обработка ошибок в JavaScript с помощью монады Either

Reading time 18 min
Views 22K
Давайте немного поговорим о том, как мы обрабатываем ошибки. В JavaScript у нас есть встроенная функция языка для работы с исключениями. Проблемный код мы заключаем в конструкцию try...catch. Это позволяет прописать нормальный путь выполнения в разделе try, а затем разобраться со всеми исключениями в разделе catch. Неплохой вариант. Это позволяет сосредоточиться на текущей задаче, не думая о каждой возможной ошибке. Определённо лучше, чем засорять код бесконечными if.

Без try...catch трудно проверять результаты каждого вызова функции для неожиданных значений. Это полезная конструкция. Но у неё есть определённые проблемы. И это не единственный способ обрабатывать ошибки. В статье мы рассмотрим использование монады Either в качестве альтернативы try...catch.

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

Не волнуйтесь, если сразу запутались. У всех так. В конце статьи я перечислил несколько ссылок, которые могут помочь. Не сдавайтесь. Эти штуки опьяняют, как только проникают в мозг.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 12

Выбираем бюджетный карманный осциллограф

Reading time 7 min
Views 96K
Приветствую!

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

Почему речь пойдет про карманные и компактные — потому что это самые бюджетные варианты. Настольные осциллографы – это более громоздкие, функциональные устройства, и, как правило, достаточно дорогие модели ($200-400 и дороже) на 4 канала со множеством функций.
А вот компактные модели на 1 канал для простых измерений и оценки формы сигнала можно приобрести буквально за $20...$40.


Читать дальше →
Total votes 39: ↑35 and ↓4 +31
Comments 66

Нужна небольшая клавиатура – сделайте её сами

Reading time 8 min
Views 41K


Если вам нужна клавиатура, вы можете её приобрести. Если вам нужна небольшая клавиатура, то тут всё сложнее. Кроме вариантов с переделкой клавиатуры от Blackberry или возни с крохотными тактильными переключателями, нормальных решений для получения небольших, тонких и специализированных клавиатур нет. Однако есть один вариант: силиконовые клавиатуры. Пока этого никто не делал, поэтому я решил – почему бы и не попробовать.

К сожалению, готовой информации по проектированию, созданию или производству собственных силиконовых клавиатур не существует. Документации крайне мало, и все изготавливающие их фабрики, судя по всему, копируют информацию друг у друга. Спрашивать у китайской компании, как это делается – всё равно, что играть в «испорченный телефон». Но, несмотря на всё это, я сумел сделать собственную силиконовую клавиатуру, и теперь делюсь информацией о том, как это делается.
Читать дальше →
Total votes 41: ↑37 and ↓4 +33
Comments 42

Анонсирован Windows Vision Skills (Preview)

Reading time 1 min
Views 4.9K
Недавно была анонсирована превью-версия Windows Vision Skills, являющяяся частью набора пакетов NuGet, который облегчают разработчикам приложений решение целого комплекса проблем компьютерного зрения с помощью простого набора API.

image
Рисунок 1 — Слева направо вы видите в действии: Object Detector, Skeletal Detector и Emotion Recognizer.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 1

Information

Rating
Does not participate
Date of birth
Registered
Activity