Вас тоже взбудоражила новость о том, что сломался DNSSEC?
Лично меня нет, я опять все проспал и узнал все постфактум.
Помните, здоровый сон бережёт вашу нервную систему!
https://habr.com/ru/news/790188/
Лично меня нет, я опять все проспал и узнал все постфактум.
Помните, здоровый сон бережёт вашу нервную систему!
https://habr.com/ru/news/790188/
👍80😁26💯22🐳4✍2👎1👾1
Субботний стрим 03.02 10:00
Начинаю сбор вопросов на стрим, напоминаю, что у нас будет четыре секции:
- Зачем это надо? (ЗЭН)
- анализирую это (разбираем этапы работы javascript runtime)
- Сплетни нашего ютуба
- Донаты решают
В комментарии к этому посту скиньте вопросы на ЗЭН, они должны касаться АйТи.
Так же можно скинуть ссылки на свои репо, которые я могу посмотреть в прямом эфире и сказать мнение о коде и архитектуре, так же можно скинуть новость или ссылку на ютуб ролик, который можно обсудить в Сплетнях.
Начинаю сбор вопросов на стрим, напоминаю, что у нас будет четыре секции:
- Зачем это надо? (ЗЭН)
- анализирую это (разбираем этапы работы javascript runtime)
- Сплетни нашего ютуба
- Донаты решают
В комментарии к этому посту скиньте вопросы на ЗЭН, они должны касаться АйТи.
Так же можно скинуть ссылки на свои репо, которые я могу посмотреть в прямом эфире и сказать мнение о коде и архитектуре, так же можно скинуть новость или ссылку на ютуб ролик, который можно обсудить в Сплетнях.
👍20❤1👎1🔥1
Если вы разогнались и хотите еще какой-нибудь стрим посмотреть, то прямо сейчас стримит HollyJS ) - https://www.youtube.com/watch?v=GJOVUGL5v0I
YouTube
Тяжелое утро с HolyJS и Ольгой Булашовой #55: рекрутинг в IT
Подробнее о конференции HolyJS: https://jrg.su/EM4wwV
— —
Как устроен рекрутинг «у нас» и «у них»? Какие особенности у релокантских сообществ? Почему вам обязательно надо побывать в Нижнем Новгороде и зачем вести публичную деятельность?
Ответить на эти…
— —
Как устроен рекрутинг «у нас» и «у них»? Какие особенности у релокантских сообществ? Почему вам обязательно надо побывать в Нижнем Новгороде и зачем вести публичную деятельность?
Ответить на эти…
👍9👎1
Со мной часто спорят, когда я говорю, что онлайн банкинг штука очень небезопасная, мол действия мошенников возможны только если клиент ошибся и сам передал информацию злоумышленнику. Вот статья на хабре где 200 килорублей увели без действий со стороны пользователя
🤯31👍8🤡4😢2😱1
Разделение ответственности в UI компонентах
Привет, на связи @devmargooo и сегодня я хотела бы рассказать свои мысли насчет разделения ответственности в UI компонентах. В своей “Чистой архитектуре” Р. Мартин пишет, что принцип единственной ответственности (SRP) является следствием закона Конвея и определяет, что лучшей является такая структура программной системы, при котором каждый модуль может быть изменен только вследствие удовлетворения интересов одного единственного актора. На мой взгляд, при разработке библиотеки UI компонентов удобно использовать схожий принцип, который можно сформулировать следующим образом: каждая логическая зона UI может менять свое состояние вследствие изменения конфигурации одного и только одного компонента в коде. Под “логической зоной” я пониманию небольшой кусочек UI, который несет полезную нагрузку для пользователя и может находится в разных состояниях. Разберем на примере текстового инпута. В нем я выделяю следующие логические зоны: поле ввода (возможные состояния - пустое, непустое, задизабленное, с ошибкой), крестик возле инпута (возможные состояния - присутствует, отсутствует), иконка возле поля ввода, подпись под полем ввода. Библиотеки UI компонентов часто разрабатывают таким образом, что в них есть “самые базовые компоненты” (например, Input), и компоненты, которые построены на основе этих “самых базовых компонентов” (ErrorInput, LabelInput, IconInput etc) по принципу “матрешки”. Таким образом, нам нужно следить, чтобы в этой иерархии изменять состояние каждой логической зоны мог только компонент! Например, возможность рендера иконки рядом с полем ввода должен иметь только один компонент - или Input, или IconInput, и тд. Рассмотрим следующий пример реализации Input и ErrorInput на React:
При таком подходе возможна ситуация, когда в ErrorInput будут одновременно переданы пропсы
Привет, на связи @devmargooo и сегодня я хотела бы рассказать свои мысли насчет разделения ответственности в UI компонентах. В своей “Чистой архитектуре” Р. Мартин пишет, что принцип единственной ответственности (SRP) является следствием закона Конвея и определяет, что лучшей является такая структура программной системы, при котором каждый модуль может быть изменен только вследствие удовлетворения интересов одного единственного актора. На мой взгляд, при разработке библиотеки UI компонентов удобно использовать схожий принцип, который можно сформулировать следующим образом: каждая логическая зона UI может менять свое состояние вследствие изменения конфигурации одного и только одного компонента в коде. Под “логической зоной” я пониманию небольшой кусочек UI, который несет полезную нагрузку для пользователя и может находится в разных состояниях. Разберем на примере текстового инпута. В нем я выделяю следующие логические зоны: поле ввода (возможные состояния - пустое, непустое, задизабленное, с ошибкой), крестик возле инпута (возможные состояния - присутствует, отсутствует), иконка возле поля ввода, подпись под полем ввода. Библиотеки UI компонентов часто разрабатывают таким образом, что в них есть “самые базовые компоненты” (например, Input), и компоненты, которые построены на основе этих “самых базовых компонентов” (ErrorInput, LabelInput, IconInput etc) по принципу “матрешки”. Таким образом, нам нужно следить, чтобы в этой иерархии изменять состояние каждой логической зоны мог только компонент! Например, возможность рендера иконки рядом с полем ввода должен иметь только один компонент - или Input, или IconInput, и тд. Рассмотрим следующий пример реализации Input и ErrorInput на React:
interface InputProps {
value: string;
setValue: (newValue: string) => void;
icon?:string;
}
const Input = ({value, setValue, icon}:InputProps) => (
<div className="input">
{icon && <div className="icon">{icon}</div>}
<input type="text" value={value} onChange={(e) => setValue(e.target.value)}/>
</div>
)
interface ErrorInputProps extends InputProps {
is_error?: boolean;
}
const ErrorInput = (props:ErrorInputProps) => (
<div className="error_input">
{props.is_error && <div className="error_icon">X</div>}
<Input {...props}/>
</div>
)
При таком подходе возможна ситуация, когда в ErrorInput будут одновременно переданы пропсы
is_error
и icon
и в одной и той же логической зоне иконки будет отрендерено сразу две иконки, одна поверх другой. Следовательно,важно следить за тем, чтобы логическую зону иконки мог изменять только один компонент - в нашем случае это компонент Input. В своей практике я видела достаточно много багов, попавших на продакшн вследствие нарушения этого принципа.🤔25👎17👍7❤5🤨3❤🔥2🎅1
V набор NarisApp
Начинаю набор в V сезон. Информацию о проекте и порядке участия можно посмотреть здесь - https://s0er.ru/documents/article/6008
Коротко: NarisApp это OpenSource приложение которое мы делаем с командой SOER.PRO, подать заявку на участие может каждый желающий. Каждый раз мы набираем 30 человек, из которых до конца доходит 5-7 человек. Все очень весело и хардкорно.
Начинаю набор в V сезон. Информацию о проекте и порядке участия можно посмотреть здесь - https://s0er.ru/documents/article/6008
Коротко: NarisApp это OpenSource приложение которое мы делаем с командой SOER.PRO, подать заявку на участие может каждый желающий. Каждый раз мы набираем 30 человек, из которых до конца доходит 5-7 человек. Все очень весело и хардкорно.
👍15💩4❤3🔥3🤔2
В работе над новыми проектами есть свой вайб.
Особенно люблю момент, когда наступает "кристализация" идей в виде кода. Это когда из области "неосязаемого" проект переходит в рабочее состояние и становится понятно как реально "бегают" данные, нарабатываются шаблоны повторного использования, есть что править, результат можно измерить и сравнить.
Очень хочется, чтобы инженеров, которые понимают о чем я говорю, становилось больше. Ведь в этом и состоит кайф работы в профессии. Иначе смысл протирать штаны, дожидаясь пятницы и выходных?
Особенно люблю момент, когда наступает "кристализация" идей в виде кода. Это когда из области "неосязаемого" проект переходит в рабочее состояние и становится понятно как реально "бегают" данные, нарабатываются шаблоны повторного использования, есть что править, результат можно измерить и сравнить.
Очень хочется, чтобы инженеров, которые понимают о чем я говорю, становилось больше. Ведь в этом и состоит кайф работы в профессии. Иначе смысл протирать штаны, дожидаясь пятницы и выходных?
👍107💯23❤8✍3👎1
Залетайте на стрим. Сегодня будет просто разговор о том как прошла неделя, какие новости, какие интересные вещи делали. Ответы на вопросы.
👍12👎1 1
This media is not supported in your browser
VIEW IN TELEGRAM
Со следующего стрима хочу в таком виде показывать бой между "Ангуляром" и "Реактом". Но такой вопрос, кто-нибудь хочет присоединиться и попилить фичи для этого проекта?
Проект на Unity там можно сделать кучу улучшений - допилить механику, сделать тени и т.д.
Проект на Unity там можно сделать кучу улучшений - допилить механику, сделать тени и т.д.
🤔22🔥9😁9👍3🤡3🦄2🤮1
Альтернативный способ попасть в Соер Клуб - получить личное приглашение.
Я создал новую группу Soer Open Source (SOS) для тех кто делает свои проекты или хочет принять участие в чьем-то проекте. Цель группы вместе писать и обсуждать код.
Приглашать в клуб буду из числа участников группы, тех кто пишет реальный код и хочет быть настоящим соером.
Если нравится писать код или есть свои проекты - https://t.iss.one/+F0tfJEbG_H8xNWEy
Я создал новую группу Soer Open Source (SOS) для тех кто делает свои проекты или хочет принять участие в чьем-то проекте. Цель группы вместе писать и обсуждать код.
Приглашать в клуб буду из числа участников группы, тех кто пишет реальный код и хочет быть настоящим соером.
Если нравится писать код или есть свои проекты - https://t.iss.one/+F0tfJEbG_H8xNWEy
Telegram
S0ER.OpenSource
Группа для тех кто хочет писать код совместно с другими разработчиками
Находиться в группе формально нельзя, не принимаешь участие в написании кода - вылетаешь
Находиться в группе формально нельзя, не принимаешь участие в написании кода - вылетаешь
🔥19👍8❤3🤡2💩1
Отлично сказано про выгорание
«Истощение — это когда вы дошли до точки и больше не можете идти дальше. Выгорание же означает, что вы дошли до точки и всё равно заставляете себя двигаться вперед».
«Истощение — это когда вы дошли до точки и больше не можете идти дальше. Выгорание же означает, что вы дошли до точки и всё равно заставляете себя двигаться вперед».
vc.ru
«Вот он, парадокс культуры выгорания: это негативное состояние, но при этом многие стремятся приписать его себе» — Что почитать…
Таня Боброва Что почитать 3 февр
👍12❤7🤔4👎1
Как решать литкод
Всем привет, на связи снова @devmargooo и сегодня мы поговорим с вами о задачках с литкода. В то время, когда многие говорят о том, стоит ли вообще программисту тратить свое ценное время на решение задачек, преступно мало, на мой скромный взгляд, говорят о том, а как же их все-таки решить, эти задачки? В мануалах с ютуба все просто: блоггер читает условие и дальше решение зреет в его голове само собой, но на практике у многих людей почему-то так не происходит, сколько бы они не сидели перед ноутбуком и не вглядывались в свеженаписанный function declaration.
Итак, мой способ - это идти к общему правилу от частного случая, он же метод индукции. Для этого нужно искусственно сократить мощность множества поступающих на вход данных, короче говоря, решить задачу для одного частного случая, причем максимально простого.
В вашей функции на вход подаются число? Пускай это будет число 1. Строки? Возьмите строку из одного символа. Двоичные матрицы? Возьмите матрицу из одного элемента, максимально простого. И затем решите задачу для этого элемента. Как правило, такое решение не составляет труда, а написанный код не похож на свой финальный вариант. Далее возьмите еще один частный случай и решите задачу для него. Подумайте, можно ли объединить первые два случая в общее правило? Решите задачу для еще одного-двух случаев, и в этом момент вы уже начнете замечать закономерности, которые приведут вас к общему правилу.
Дальше берите на вход все новые и новые виды входных данных, для которых написанное правило не работает, и решайте задачу для них, до тех пор, пока для всех возможных видов данных ваша задача не будет решена.
Всем привет, на связи снова @devmargooo и сегодня мы поговорим с вами о задачках с литкода. В то время, когда многие говорят о том, стоит ли вообще программисту тратить свое ценное время на решение задачек, преступно мало, на мой скромный взгляд, говорят о том, а как же их все-таки решить, эти задачки? В мануалах с ютуба все просто: блоггер читает условие и дальше решение зреет в его голове само собой, но на практике у многих людей почему-то так не происходит, сколько бы они не сидели перед ноутбуком и не вглядывались в свеженаписанный function declaration.
Итак, мой способ - это идти к общему правилу от частного случая, он же метод индукции. Для этого нужно искусственно сократить мощность множества поступающих на вход данных, короче говоря, решить задачу для одного частного случая, причем максимально простого.
В вашей функции на вход подаются число? Пускай это будет число 1. Строки? Возьмите строку из одного символа. Двоичные матрицы? Возьмите матрицу из одного элемента, максимально простого. И затем решите задачу для этого элемента. Как правило, такое решение не составляет труда, а написанный код не похож на свой финальный вариант. Далее возьмите еще один частный случай и решите задачу для него. Подумайте, можно ли объединить первые два случая в общее правило? Решите задачу для еще одного-двух случаев, и в этом момент вы уже начнете замечать закономерности, которые приведут вас к общему правилу.
Дальше берите на вход все новые и новые виды входных данных, для которых написанное правило не работает, и решайте задачу для них, до тех пор, пока для всех возможных видов данных ваша задача не будет решена.
👍130😁9🤔8🤡8👎4❤3🔥2