Pull to refresh
0
0

PHP-Dev

Send message

Генерация и валидация чисел по алгоритму Луна

Level of difficultyEasy
Reading time6 min
Views17K

Алгоритм Луна (Luhn algorithm) - это процесс вычисления контрольной цифры для числа в соответствии со стандартом ISO/IEC 7812. Процесс предназначен, в первую очередь, для выявления ошибок, вызванных с непреднамеренным искажением данных. Например, при ручном вводе номера карты или любого другого числа.

Разберём как он работает и рассмотрим инструмент для формирования номеров по алгоритму.

Читать далее
Total votes 13: ↑11 and ↓2+15
Comments32

Наследование Entity в Doctrine

Level of difficultyMedium
Reading time7 min
Views3.9K

В практике разработки веб-приложений иногда возникает необходимость расширения сущностей, которые представляют таблицы базы данных в коде. Для примера рассмотрим следующую ситуацию: в нашем проекте была реализация класса автотранспортного средства Car, но спустя некоторое время появилась возможность ввести еще один класс автотранспортного средства под названием Buggy. Новый класс, имел одинаковые поля и представлял схожую концепцию. Нам важно было иметь возможность работать с ним как с объединенным типом Auto, а также как с отдельным типом.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments10

PHP: атрибуты vs аннотации: оптимизируем метадату Doctrine

Reading time4 min
Views10K

Одним из нововведений PHP 8.0 являются атрибуты. Атрибуты содержат метадату для классов, полей, функций; которая доступна через Reflection API. Казалось бы, то же самое, что и аннотации, тогда зачем обращать внимание на эту фичу?

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments5

Многопоточность на фронте: абсурд или прекрасное архитектурное решение?

Reading time9 min
Views16K

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

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

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

Читать далее
Total votes 25: ↑24 and ↓1+27
Comments18

Физика вращения 3д тел

Reading time11 min
Views11K

Когда я раньше задумывался о вращении в 3д, мне было неуютно. Оно казалось сложным. Вспомнить, например, эффект Джанибекова с прецессией свободно вращающейся гайки. Настало время разобраться!

В статье Вас ждут математика, физика, а заодно численное моделирование и визуализация в libgdx.

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

Читать далее
Total votes 45: ↑45 and ↓0+45
Comments19

Веб-фреймворки для Golang в 2022 году: оптимальные варианты для разработчика

Reading time3 min
Views40K

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

Читать далее
Total votes 12: ↑8 and ↓4+6
Comments14

Прагматичный набор модификаций для Windows 10 на старом железе

Reading time7 min
Views44K

В статьях про раздувание софта часто упоминают лаги Windows 10/11. Главная причина — ожирение кода в новых версиях. Для работы ОС с каждым годом требуется всё больше ресурсов. После засорения системы приходится ждать 10–20 секунд, пока отрисуются пункты контекстного меню по правой кнопке…

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

Но что делать, если приходится поневоле сидеть под Win10/11? Тогда остаётся одно — бороться с ожирением софта хирургическим путём. А именно, отключить ненужные модули и компоненты, развестистый GUI, анимацию и спецэффекты, удалить лишний софт, почистить реестр. Другими словами, спустить жирок из системы. После мануальных процедур винда начинает шевелиться значительно бодрее.
Читать дальше →
Total votes 106: ↑51 and ↓55+21
Comments114

Как сделать удобную дизайн-систему. Цвета. Часть 1

Reading time3 min
Views10K

Дизайн-система позволяет быстро взаимодействовать с компонентами, легко вносить изменения во все макеты и в целом прививает дизайнеру навык организации больших объемов информации.

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

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

Читать далее
Total votes 10: ↑9 and ↓1+10
Comments4

7 советов в помощь дизайнеру интерфейсов

Reading time4 min
Views4.3K

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

Читать далее
Total votes 9: ↑4 and ↓50
Comments8

6 простых правил хорошего alt-текста

Reading time4 min
Views17K

Давайте поговорим о том, как написать хорошее описание фотографий в атрибуте alt, или альтернативный текст.

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

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

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments14

Память в браузерах и в Node.js: ограничения, утечки и нестандартные оптимизации

Reading time32 min
Views44K

Интро: почему я написал эту статью


Меня зовут Виктор, я разрабатываю страницу результатов поиска Яндекса. Несмотря на внешнюю простоту, поисковая выдача — сложная штука: на каждый запрос генерируется своя уникальная страница, на которой в зависимости от запроса может присутствовать блок Картинок, Карты, Переводчик, видеоплеер и многие другие компоненты. Все они должны запускаться и работать в памяти обычных бюджетных телефонов, которые использует большинство наших пользователей. Браузерам должно хватать ресурсов, чтобы пользователь не видел вот такого:



На своих серверах мы должны генерировать сотни миллионов уникальных страниц в сутки — это сложнее, чем просто отдавать одни и те же ресурсы. Генерация страницы не должна быть слишком требовательной к памяти сервера.


Разрабатывая проект на JavaScript (TypeScript, ClojureScript или каком-то другом языке, транслируемом в JavaScript), мы привыкли создавать объекты, массивы, строки и вообще писать код, как будто память бесконечна. Это не так. Я расскажу о видах проблем с памятью, о том, какие ограничения мы часто забываем и как их можно преодолеть. В ответ браузеры и пользователи скажут вам спасибо.


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

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

Reading time7 min
Views28K

Как я придумала и выпустила настольную игру Холивар без опыта, издательства, своего медиа или блога, краудфандинга, на свои деньги.

Игры - мое хобби. Холивар - моя вторая игра и первая настольная. Первая была мобильная PNLK, тетрис с панельками, сделанная за месяц на GoDot, которая неожиданно стала популярной, почти год стояла в виде стенда в Музее Советских Игровых автоматов, привлекла внимание и негодование Tetris inc, и последующие удаление из AppStore, но об этом как-нибудь в другой раз. 

Идея

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

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

Читать далее
Total votes 114: ↑109 and ↓5+134
Comments95

Адаптивный layout — как переверстать весь проект, не перевёрстывая его

Reading time9 min
Views17K


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


Всем привет! Меня зовут Юрий Голубев, я разрабатываю frontend в Почте Mail.ru. Сегодня я хочу поделиться опытом того, как мы добавили адаптивности и возможности кастомизации в интерфейс, а заодно — открыли новый для себя способ написания адаптивных компонентов.

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

Hello, Word! Разрабатываем браузерное расширение в 2021-м

Reading time5 min
Views19K
Привет!

Меня зовут Саша Коновалов, я разработчик в компании Oxonit и наставник на программе «Мидл фронтенд-разработчик» в Яндекс.Практикуме.

На примере разработки расширения «Hello, Word» я расскажу, как разрабатывать кроссбраузерное расширение со знаниями современного фронтенда:

  • для чего нужно кроссбраузерное расширение;
  • как его разработать под разные браузеры;
  • модульность кода, как переиспользовать компоненты и как современный фронтенд помогает в разработке расширений;
  • какие инструменты можно использовать для сборки и публикации расширений (webpack, web-ext).

Если вам интересно посмотреть исходники, я разместил их на GitHub.

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

Итак, создадим расширение – Hello, Word!


Hello, Word — это расширение для перевода и запоминания слов. Оно стало прототипом моего пет-проекта Wordzzz, поэтому в посте я буду приводить примеры из него.


Рисунок 1. Описание функциональности
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments11

Как с помощью циркуля и линейки находить корни, квадраты и обратные величины чисел

Reading time3 min
Views19K

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

Пошагово и с картинками
Total votes 32: ↑30 and ↓2+41
Comments61

10 игр для программистов, которые позволят улучшить свои навыки

Reading time5 min
Views96K

Планируете изучать Java, C++ или Python, но не знаете, с чего начать? А как насчёт игр для программистов?

Да, именно так.

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

Давайте же узнаем о том, как геймификация помогает нам лучше учиться и какие игры помогут стать программистом!
Читать дальше →
Total votes 40: ↑36 and ↓4+43
Comments42

Визуальное автотестирование сайтов с помощью Codeception

Reading time8 min
Views6.1K

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

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

Рейтинг лучших настольных 3D-принтеров 2021 года

Reading time34 min
Views136K

Весной прошлого года мы выпустили свой первый рейтинг лучших 3D-принтеров, основанный на данных ведущих американских порталов All3DP и 3DSourced. Он был размещен у нас, а также на сайтах партнеров, и имел огромный успех у читателей. Учитывая неослабевающий интерес к теме, мы решили сделать это традицией, и наш первый в этом году рейтинг составили на основе нашего экспертного мнения и реалий российского рынка, который имеют ряд отличий от американского по популярности и представленности оборудования. К примеру, российские производители неизвестны американским изданиям и, соответственно, не попадают в их рейтинги, так же как и в наши, аналогичным образом, не попадают некоторые американские и европейские. Тем не менее, мы будем использовать текущие рейтинги американских изданий как отправную точку и приведем ряд их оценок по моделям, которые являются одинаково популярными во всех странах.

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

Читать далее
Total votes 16: ↑11 and ↓5+12
Comments39
1
23 ...

Information

Rating
Does not participate
Location
Bielefeld, Nordrhein-Westfalen, Германия
Registered
Activity