Search
Write a publication
Pull to refresh
0
@AndrianPrytularead⁠-⁠only

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

Send message

Переиспользуемый компонент Svelte: чтобы никому не было больно

Reading time9 min
Views6.4K

Переиспользуемый компонент Svelte: чтобы никому не было больно


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


За последние года полтора для фреймворка Svelte уже создано множество различных компонентов, которые можно найти на NPM, GitHub или официальном списке. К сожалению, не все из них правильно "приготовлены" и порой их использование раздует размер бандла приложения сильнее, чем должно быть. А бывает, что такие пакеты просто невозможно использовать, потому что его автор не силён в подготовке пакетов и упустил какие-то важные моменты.


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

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

Как учить рекурсию разработчикам программного обеспечения

Reading time11 min
Views9.8K

Пришло время переосмыслить обучение рекурсии с помощью реальных кейсов вместо элегантных математических уравнений




Для программистов, особенно программистов-самоучек, первое знакомство с миром «рекурсии» в основном связано с математикой. При упоминании рекурсии программисты сразу вспоминают некоторые из наших любимых слов на F – нет, не те самые слова на F, а:

Фибоначчи

function fibonacci(position) {
 if (position < 3) return 1;
 return fibonacci(position - 1) + fibonacci(position - 2);
}

Факториал

function factorial(num) {
 if (num === 1) return num;
 return num * factorial(num - 1);
}

Приятного чтения!

Получаем бесплатные сервера в Oracle Cloud Free Tier

Reading time6 min
Views157K

Искал я как-то себе дешевый VPS сервер. Ну для отладки чего-нибудь, моделирования сетей... Да мало ли еще для чего может понадобится личный сервер? И вот в результатах поиска всплыло, что Oracle предоставляет возможность получить бесплатно и "пожизненно" до двух виртуальных машин (Oracle Cloud Infrastructure Compute). А также еще кое-какие вкусняшки. Зарегистрировался, получил - действительно выдают, действительно работает, и действительно бесплатно. Но хочется же подключить полученные машинки в свою сеть! И, желательно, штатными средствами. Вот из экспериментов и получились две статьи, может быть кому-то они сэкономят часа четыре рабочего времени.

Читать далее

20 лет VideоLAN Client Player: 8 неочевидных возможностей программы

Reading time6 min
Views32K

20 лет — большой срок, даже Windows не сильно старше. Многие удачные проекты, сохраняющие популярность годами, не выдерживали испытания временем и сдулись: помните Winamp, бесспорного фаворита среди аудио-плееров? Или foobar2000 — универсальный, удобный, имеющий огромное количество возможностей… Настоящий медиа-комбайн, только не снискал большой популярности. Или не менее культовый Media Player Classic, заброшенный много лет назад.

VLC это универсальный медийный комбайн, который успешно пережил их всех. Но подавляющее большинство использует его на едва ли на 1% всех возможностей, исключительно как обычный плеер для видеофайлов. В этой статье я расскажу о интересных и неочевидных возможностях VLC: например, как использовать его с PornHub, торрентами, как рисовать ASCII-код и многое другое.
Читать дальше →

Tagged Unions в PHP (примерно как в Rust)

Reading time3 min
Views3.9K

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


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


Однако та реализация enums — лишь часть глобального плана. Сегодня мы рассмотрим следующий пункт, tagged unions, по-русски это переводится как "тип-сумма".


Голосования по нему пока не проходило, но предлагается также включить его в PHP 8.1.


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


Зачем всё это вообще нужно?


Result как в Расте


Если вы писали на языке Rust, то наверняка встречали встроенный enum Result. В Rust, Go и т.д. нет механизма exception, так как в этих языках считается, что явная обработка ошибок гораздо надёжнее. Язык вынуждает тебя явно проработать все варианты событий, а не кидать исключение в надежде, что кто-то наверху знает о нём и умеет правильно обрабатывать. (Не будем здесь холиварить, на тему exceptions vs return type, у каждого своё мнение). Если говорить конкретно про Раст, то результатом вызова функции, которая может породить ошибку, часто делают значение типа Result.


Result состоит из двух вариантов (case-ов в терминологии enum в PHP): Ok и Err. Варианты мы могли бы сделать и с помощью предыдущего функционала enum, или даже констант, но нам нужно возвращать еще и сами значения. Причем, в случае успеха значением может быть строка, а в случае ошибки какой-нибудь другой тип. Например, integer (статус HTTP-ответа).


Как это будет выглядеть в PHP, если голосование будет успешным:


enum Result {
    case Ok(public string $json);
    case Err(public int $httpStatus);
}

function requestApi($url): Result {
    //
}
Читать дальше →

Решение забавной задачки на JavaScript

Reading time9 min
Views17K
Наша история начинается с твита Томаша Лакомы, в котором он предлагает представить, что такой вопрос встретился вам на собеседовании.



Мне кажется, что реакция на такой вопрос на собеседовании зависит от того, в чём конкретно он заключается. Если вопрос действительно в том, каково значение tree, то код можно просто вставить в консоль и получить результат.

Однако если вопрос в том, как бы вы решили эту задачу, то всё становится достаточно любопытным и приводит к проверке знаний тонкостей работы JavaScript и компилятора. В этой статье я попробую разобрать всю эту неразбериху и получить интересные выводы.
Читать дальше →

Перестаньте использовать Page Objects (РО) и начните использовать App Actions

Reading time22 min
Views16K

Написание поддерживаемых сквозных тестов — это сложная задача. Часто тестировщики создают косвенный слой веб-страницы, называемый page objects, для выполнения общих действий. В этой статье я утверждаю, что page objects — это плохая практика, и предлагаю непосредственно обратить внимание на внутренний алгоритм работы приложения. Это отлично работает с современным test runner Cypress.io, который запускает тестовый код непосредственно вместе с кодом приложения.

Читать далее

SSD на базе QLC — убийца жёстких дисков? На самом деле нет

Reading time11 min
Views129K
SSD-накопители уже давно вышли из разряда дорогой и ненадежной экзотики и стали привычным компонентом компьютеров всех уровней, от бюджетных офисных «печатных машинок» до мощных серверов.

В этой статье мы хотим рассказать о новом этапе эволюции SSD — очередном повышении уровня записи данных в NAND: о четырехуровневых ячейках, хранящих по 4 бита, или QLC (Quad-Level Cell). Накопители, сделанные по этой технологии имеют большую плотность записи, это упрощает увеличение их объема, а стоимость оказывается меньше, чем у SSD с «традиционными» ячейками MLC и TLC.



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

Как это происходило, появился ли новый «убийца HDD» и надо ли бежать в магазины, меняя все HDD и SSD прошлых поколений на новые — расскажем ниже.
Читать дальше →

Солидные фронтенды: конфигурация

Reading time6 min
Views8.3K

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

Читать далее

Как понять свойство clip-path в CSS

Reading time7 min
Views72K
В те далёкие времена, когда я впервые столкнулся со свойством CSS clip-path, мне потребовалось больше времени, чем я ожидал, и я изо всех сил старался запомнить, как работает свойство. Не знаю точно, почему так получилось, но, может быть, потому, что я не пользовался им часто? Во всяком случае, я изучу его снова вместе с вами. В этой статье я стремлюсь дать чёткое, детальное объяснение того, как работает clip-path, когда его использовать и как вы можете воспользоваться им в своих проектах веб-разработки. Вы готовы?


Тогда ныряем!

Насколько маленьким может быть ядро linux?

Reading time5 min
Views39K
Некоторое время назад я научился конвертировать виртуальные машины в oracle cloud из ubuntu 20.04 в gentoo. Машины предоставляемые в рамках always free tier весьма маломощны. Это в частности приводит к тому, что перекомпиляция ядра превращается в достаточно длительный процесс. У исходного ядра ubuntu 20.04 в конфиге было 7904 параметра. После того, как я сделал:

make localmodconfig && make localyesconfig

число параметров уменьшилось до 1285. Мне стало интересно попробовать выбросить из ядра все лишнее и посмотреть, что получится.
Читать дальше →

Git для новичков (часть 1)

Reading time5 min
Views738K

Git - это консольная утилита, для отслеживания и ведения истории изменения файлов, в вашем проекте. Чаще всего его используют для кода, но можно и для других файлов. Например, для картинок - полезно для дизайнеров.

С помощью Git-a вы можете откатить свой проект до более старой версии, сравнивать, анализировать или сливать свои изменения в репозиторий.

Читать далее

Прогрессивный рендеринг для лучшей производительности веб-приложений

Reading time6 min
Views16K

Понимание концепций рендера веб-страниц и измерение производительности рендера с помощью Chrome DevTools




Не важно, насколько хорош ваш сайт; если его загрузка занимает слишком много времени, никто не будет ждать, чтобы его увидеть. Если ваш сайт загружается более 3 секунд, есть большая вероятность, что вы потеряете часть посетителей. Но знаете ли вы, что можно значительно улучшить время загрузки своего веб-приложения, используя прогрессивный рендеринг? Прогрессивный рендеринг не только увеличивает скорость загрузки, но и решает некоторые серьёзные проблемы в методах рендеринга на стороне клиента и на стороне сервера. Чтобы лучше понять прогрессивный рендеринг, давайте посмотрим, как работает рендеринг на стороне клиента и на стороне сервера.
Приятного чтения!

Enum в PHP 8.1 — для чего нужен enum, и как реализован в PHP

Reading time3 min
Views61K

Через несколько дней заканчивается голосование по первой итерации реализации enum в PHP 8.1 . Уже видно, что голосов “за” гораздо больше, так что давайте кратко пройдемся и посмотрим, что же нам приготовили авторы языка.


Зачем нужны enum?


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


class Car {
    private string $color;

    function setColor(string $color): void {
        $this->color = $color;
    }
}

Если мы опишем цвет машины как простой string, то во-первых при вызове $myCar->setColor(..) непонятно, что за строку туда писать. “red” или “RED” или “#ff0000”, а во вторых, легко ошибиться, просунув туда случайно что-то не то (пустую строку, к примеру). То же самое будет, если использовать не строки, а числа, например.

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

Почему линукс использует swap-файл, часть 2

Reading time7 min
Views24K
Первая часть маленького «срывания покрова» о работе подсистемы виртуальной памяти, связи механизмов mmap, разделяемых библиотек и кэшей вызвало такое бурное обсуждение, что я не смог удержаться от того, чтобы не продолжить исследование на практике

Поэтому, сегодня мы сделаем… Крошечную лабораторную работу. В виде крошечной же программы на C, которую мы напишем, скомпилируем и проверим в деле — со свапом и без свапа.

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

На что обратить внимание украинскому IT-бизнесу в 2021 году? Советы юриста

Reading time4 min
Views1.7K

Пандемия усилила и без того динамичное развитие украинской IT сферы. Однако, “в параллельном мире” мы всё ещё слышим новости об уголовных делах и обысках у крупнейших компаний.

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

Наш опыт работы с IT-бизнесом в 2020 году ярко демонстрирует, что проблемы крупного и среднего бизнеса всегда одинаковые. Это неправильное построение бизнес-модели и быстрый, хаотический рост.

Как происходит сегодня

На старте бизнеса фаундер работает как директор, программист, sales, PM, HR или, если это потребуется, юрист. Набирая в команду product-менеджера, front-end разработчика и других специалистов, юридические вопросы по-прежнему остаются “на потом”. В лучшем случае фаундер полагается на друзей-юристов и «экспертов» из Интернета.

Далее сценарий выглядит так: накопив большое количество заказов и получив предоплату за разработку продуктов, в условиях жесткого дедлайна, фаундер отказывается от заключения договоров и оформления необходимой документации на разработку программных продуктов. Потому что всё ещё надеется “на потом”. А потом, юридические просчёты становятся отличной темой для очередного f*ck-up night.

Интеллектуальная собственность

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

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

На этом вопросы налоговой полиции к компании только начались. Одним из них стал “Как вам удалось получать доходы от хозяйственной деятельности без юридической регистрации?”.

Читать далее

Аутсорсинг в IT: как устроен и кому подходит

Reading time8 min
Views14K

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

Чтобы узнать, как устроен аутсорсинг изнутри, я поговорил об этом с Анаром Бабаевым, генеральным директором компании Distillery, оказывающей сервисные услуги по разработке программного обеспечения, включая дизайн, тестирование и сопровождение.

читать интервью

Вам показалось! Все о Perceived Performance

Reading time12 min
Views12K

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

В большинстве случаев с ростом реальной производительности улучшается и Perceived Performance. А когда реальная производительность не может быть с легкостью увеличена, существует возможность поднять видимую. В своем докладе на Frontend Live 2020 бывший разработчик Avito Frontend Architecture Алексей Охрименко рассказал о приемах, которые улучшают ощущение скорости там, где ускорить уже нельзя.

Читать далее

9 самых популярных PHP-фреймворков

Reading time6 min
Views73K
Десятки лет PHP был самым любимым языком программирования в мире. И это не случайно. PHP-разработка ведётся быстро, получающиеся в итоге проекты отличаются высоким уровнем безопасности, их легко поддерживать. Кроме того, в ходе разработки PHP-проектов приходится писать не слишком много собственного кода благодаря тому, что существует огромное количество PHP-библиотек. В наши дни PHP используется приблизительно на 79% веб-сайтов.



Разработчикам в деле создания их замечательных проектов помогают различные PHP-фреймворки. Но что это за фреймворки? Почему программисты выбирают именно их? Сейчас мы попытаемся в этом разобраться и заодно выясним то, какие именно фреймворки лучше всего подходят для веб-проектов различных видов.
Читать дальше →

Пара слов о спецификациях

Reading time11 min
Views4.8K

Всем доброго времени суток! Удивительно, но упоминание о шаблоне "Спецификация" в контексте php встречается крайне редко. А ведь с его помощью можно не только избежать комбинаторного взрыва методов репозитория, но и улучшить переиспользование кода. Я же в свою очередь хотел бы остановиться на еще одной возможности, предоставляемой данным паттерном. С ее помощью можно решить проблему, которая возникает почти в каждом веб-приложении. И лично мне очень не хватало этого знания еще пару лет назад.

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

Information

Rating
Does not participate
Date of birth
Registered
Activity