Pull to refresh
10
0
Send message

Typescript ENUM — баланс использования

Level of difficultyMedium
Reading time4 min
Views7.6K

Привет Всем.

Меня зовут Михаил. В НЛМК нахожусь на должности Frontend-разработчика.  Занимаюсь разработкой внутренних информационных систем на React + Typescript.

В этой статье поговорим про тип enum (перечисление) в Typescript, о случаях когда его можно и нужно использовать, а когда нет.

Перечисления бывают числовыми и строковыми. Например, представим в виде перечисления должности работников кафе.

Рассмотрим перечисления с числовыми значениями:

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

Странный мир путей файлов в Windows

Reading time6 min
Views62K

Пути файловых систем в Windows страннее, чем можно подумать. В любой производной от Unix системе пути на удивление просты: если нечто начинается с /, то это путь. Но всё совершенно иначе в Windows, которая имеет озадачивающее разнообразие схем составления пути.

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

Стоит заметить, что статья ограничивается только тем типом путей, который видит пользователь приложений Windows (обусловленный Win32 API). Под этим слоем есть ещё больше любопытного, в основном касающегося тех, кто пишет драйверы оборудования и тому подобное.
Читать дальше →
Total votes 179: ↑179 and ↓0+179
Comments100

Почему типичные дизайн-подходы оказались неприменимы к интерфейсу для производств

Level of difficultyEasy
Reading time6 min
Views23K

После того как я впервые съездила на завод, стало понятно, почему в дизайнеров кидаются тапками.

Мы работали на ярких прикольных аймаках, проектируя интерфейсы MES-систем в соответствии с трендами. А потом своими глазами увидели, в какой ад для сотрудников производства это превратилось.

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

Читать далее
Total votes 75: ↑74 and ↓1+84
Comments133

Работа по ИП или ТК РФ (выбор «IT-шника»)

Reading time12 min
Views44K


В этой статье хочу провести анализ особенностей работы в качестве ИП, раскрыть некоторые юридические аспекты, провести сравнение ИП и работы в штате, также затронуть финансовую сторону вопроса (куда же без этого). Я надеюсь, что информация, представленная в статье, окажется полезной, особенно тем, кто сейчас также стоит перед подобным нелегким выбором или только начинает задумываться на эту тему.
Читать дальше →
Total votes 27: ↑25 and ↓2+28
Comments202

Да кто вообще такой этот продуктовый разработчик?

Reading time8 min
Views13K
Сегодня в названиях вакансий всё чаще появляются приставки «продуктовый» — дизайнер, аналитик, разработчик… Компании, придерживающиеся продуктового подхода, ожидают от кандидатов определённого образа мышления, хороших технических скиллов бывает недостаточно. Меня зовут Михаил Мазеин, я тот самый продуктовый разработчик в ManyChat, занимаюсь бекэндом и участвую в процессе найма. Давайте расскажу, как это выглядит изнутри.

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


@innubis

Читать дальше →
Total votes 17: ↑12 and ↓5+9
Comments16

Объектно-ориентированный JavaScript простыми словами

Reading time23 min
Views104K


Доброго времени суток, друзья!

В JavaScript существует 4 способа создать объект:

  • Функция-контруктор (constructor function)
  • Класс (class)
  • Связывание объектов (object linking to other object, OLOO)
  • Фабричная функция (factory function)

Какой метод следует использовать? Какой из них является лучшим?

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

Давайте начнем с того, что такое объектно-ориентированное программирование (ООП).
Total votes 12: ↑10 and ↓2+13
Comments2

Знакомство с ООП на примере JavaScript

Reading time17 min
Views84K

Всем привет! В этой статье мы рассмотрим основные характеристики объектно-ориентированного программирования (ООП) на практических примерах JS-кода. В ходе обсуждения мы осветим основные принципы ООП, а также ответим на вопросы, почему и когда этот стиль может быть полезен.
Читать дальше →
Total votes 40: ↑35 and ↓5+44
Comments33

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

Reading time22 min
Views44K


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


В этой статье я покажу вам, с чего начинается 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 21: ↑19 and ↓2+20
Comments5

Blogged Answers: (почти) полное руководство по особенностям рендеринга в React. Часть 1

Reading time8 min
Views23K

Подробности о том, как происходит рендеринг в React и как влияет на рендеринг применение контекста.

Я часто сталкиваюсь с недопониманием относительно того, как, почему и когда React повторно рендерит компоненты и каким образом применение контекста и React-Redux влияет на время и объем повторного рендеринга. С десяток раз понабивав на клавиатуре различные вариации ответов на эти вопросы, я подумал, что имеет смысл составить одно общее пояснение и при каждом удобном случае ссылаться на него. Учтите, что вся собранная здесь информация уже гуляет по сети и рассматривалась в ряде других замечательных статей и публикаций в блогах. Некоторые из них перечислены в качестве справки в конце оригинальной публикации, в разделе Further Information. Собрать разрозненные сведения в единую картину бывает нелегко, поэтому я надеюсь, что моя статья поможет кому-то разобраться в теме.

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

В человеческом кишечнике происходит массовое вымирание. Ученые пытаются сохранить наши бактерии для будущих поколений

Reading time5 min
Views16K

Неожиданно ценные люди для нашего будущего

Не читать, если кушаете! Я предупредил.


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

Читать дальше →
Total votes 43: ↑35 and ↓8+40
Comments66

Типобезопасность в JavaScript: Flow и TypeScript

Reading time11 min
Views12K
Все, кто имеют дело с разработкой UI в кровавом enterprise наверняка слышали о «типизированном JavaScript», подразумевая под этим «TypeScript от Microsoft». Но кроме этого решения существует как минимум ещё одна распространённая система типизации JS, и тоже от крупного игрока IT-мира. Это flow от Facebook. Из-за личной нелюбви к Microsoft раньше всегда использовал именно flow. Объективно это объяснял хорошей интеграцией с существующими утилитами и простотой перехода.

К сожалению, надо признать, что в 2021 году flow уже значительно проигрывает TypeScript как в популярности, так и в поддержке со стороны самых разных утилит (и библиотек), и пора бы его закопать поставить на полку, и перестать жевать кактус перейти на де-факто стандарт TypeScript. Но под этим хочется на последок сравнить эти технологии, сказать пару (или не пару) прощальных слов flow от Facebook.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments10

Как устроены цикл событий и стек вызовов в JavaScript

Reading time6 min
Views55K

Цикл событий (event loop) — ключ к асинхронному программированию на JavaScript. Сам по себе язык однопоточный, но использование этого механизма позволяет создать дополнительные потоки, чтобы код работал быстрее. В этой статье разбираемся, как устроен стек вызовов и как они связаны с циклом событий.

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

Читать далее
Total votes 8: ↑7 and ↓1+7
Comments9

Базовое понимание принципа Eventloop

Reading time4 min
Views39K

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

Читать далее
Total votes 21: ↑19 and ↓2+19
Comments9

1000 и 1 фидбэк. Как самому давать обратную связь и научить других, опыт Lamoda

Reading time16 min
Views49K
Привет! Меня зовут Евгения Голева, я выступила на TeamLeadConf с докладом про обратную связь и хочу поделиться с вами его вольной расшифровкой. Мне удалось под соусом совсем другого проекта научить инженеров давать обратную связь гораздо лучше, чем они делали это раньше. Для этого пришлось не только долго и тщательно объяснять «зачем и как», но и организовать множество подходов к снаряду под бдительным контролем и с мягкой поддержкой. Путь был непростым, усеян граблями и велосипедами, и я надеюсь, что некоторые неочевидные мысли и методы пригодятся тем, кто хотел бы привить культуру здорового фидбэка своей команде.

image
Читать дальше →
Total votes 43: ↑37 and ↓6+31
Comments7

npm audit работает неправильно — это настоящий театр безопасности

Reading time12 min
Views24K
Безопасность важна. Никто не хочет выступать против безопасности. Поэтому все замалчивают проблему с npm audit. Но кто-то должен сказать.

Думаю, придётся мне.

npm audit работает принципиально неправильно. Проверка по умолчанию на каждый npm install — поспешный, непродуманный и неадекватный подход.

Слышали историю про мальчика, который часто кричал «Волк!»? Спойлер: в результате волк съел овец. Если мы не хотим такого итога, нам нужны лучшие инструменты.

На сегодняшний день npm audit — это пятно на всей экосистеме npm. Надо было исправить его с самого начала, но лучше поздно, чем никогда.
Читать дальше →
Total votes 26: ↑22 and ↓4+25
Comments6

Пошаговая инструкция: как с Node.js организовать иконки из Figma в проекте

Reading time28 min
Views7K


Эта статья подробно описывает создание небольшого скрипта на Node.js для выгрузки векторных иконок из Figma в проект, а также универсального компонента для разных видов иконок, который удобно использовать в своём приложении.


Скрипт может пригодиться командам, которые ещё не определились с общим подходом к использованию и хранению иконок в проекте, и тем, кто стремится автоматизировать этот процесс.


Под катом – довольно длинный (мы предупредили!) и подробный текст, но с большим количеством полезного кода.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments2

Как ChatGPT за меня тестовое задание для собеседования писал

Reading time6 min
Views65K

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

И мне вдруг подумалось, а как хайповый chatGPT мог бы справиться с таким полуреальным, но вполне полезным для меня, заданием?

Читать далее
Total votes 45: ↑38 and ↓7+38
Comments110

Как получить доступ к chatGPT в России

Reading time4 min
Views1.5M

Всем привет! Перед началом статьи сразу скажу:

САМЫЙ ВАЖНЫЙ ДИСКЛЕЙМЕР: естественно, покупая смс на чужой номер вы полностью компрометируете безопасность своего аккаунта. Мало ли кто его потом еще купит для получения доступа. Поэтому, помните, что представленный в данной статье способ получения доступа - это только на "поиграться". Не стоит вводить туда свои реальные почты и использовать это в работе, так как полученный доступ может быть в любой момент взломан/прикрыт.

Но да ладно, приступим. Здесь без всякого объяснения того что такое ChatGPT - кому надо тот знает. В этой статье я хочу поделиться путем который вас за 30Р может к этому боту привести. Вдаваться в детали бота я не хочу, это чисто статья для ребят которые хотят без лишних запар пройти путь человека который доступ к боту уже получил :)

Как и многих вокруг, меня удивила новая технология от Open AI. Попытался зайти и зарегистрироваться через гугл, но...

Читать далее
Total votes 68: ↑62 and ↓6+67
Comments268

Полное визуальное руководство/шпаргалка по CSS Grid

Reading time7 min
Views347K

Сегодня мы с вами рассмотрим свойства CSS Grid (далее также — Грид), позволяющие создавать адаптивные или отзывчивые макеты веб-страниц. Я постараюсь кратко, но полно объяснить, как работает каждое свойство.


Что такое CSS Grid?



Грид — это макет для сайта (его схема, проект).


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


Вот простой пример макета сайта, созданного с помощью Грида.

Читать дальше →
Total votes 34: ↑33 and ↓1+39
Comments4

Рендеринг веб сайтов 101

Reading time7 min
Views46K
Вы вводите название сайта в адресную строку браузера, нажимаете enter, и по привычке видите запрашиваемую страницу. Все просто: ввел название сайта — сайт отобразился. Однако для более любознательных хочу рассказать, что происходит между тем как браузер начинает получать куски сайта (да, сайт приходит кусками, по-другому — чанками) и отображает полностью нарисованную страницу.


Total votes 14: ↑11 and ↓3+12
Comments9

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity