Как стать автором
Обновить
4
0.2

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

Отправить сообщение

Юнит-тестирование на PHP в примерах

Время на прочтение31 мин
Количество просмотров20K

Сегодня юнит-тесты невероятно полезны. Думаю, они есть в большинстве из недавно созданных проектов. Юнит-тесты являются важнейшими в enterprise-приложениях с обилием бизнес-логики, потому что они быстрые и могут сразу сказать нам, корректна ли наша реализация. Однако я часто сталкиваюсь с проблемами, которые связаны с хорошими тестами, хотя те и крайне полезны. Я дам вам несколько советов с примерами, как писать хорошие юнит-тесты.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+25
Комментарии3

Как сделать волоконно-оптическую светодиодную лампу

Время на прочтение4 мин
Количество просмотров46K

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

Приятного чтения!
Всего голосов 47: ↑46 и ↓1+59
Комментарии20

Программист учится рисовать. Дневник Емели

Время на прочтение16 мин
Количество просмотров35K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Всего голосов 105: ↑104 и ↓1+142
Комментарии123

Визуализируй это: LED-куб на базе Raspberry Pi показывает уровень загрузки процессора

Время на прочтение5 мин
Количество просмотров15K

На днях в сети появилось описание оригинального DIY-проекта на основе Raspberry Pi и светодиодных панелей. Цель проекта — визуализировать уровень загрузки процессора ПК. Для этого используются анимация на LED-панелях самодельного устройства.

Чем выше нагрузка на CPU, тем выше температура чипа и тем более «горячими» становятся цвета светодиодных панелей. Минимальная нагрузка — голубой и синий цвета, максимальная — оранжевый и красный. Общее количество задействованных светодиодов достигает 12 000. Под катом — описание проекта, его элементов, плюс исходный код ПО, которое обеспечивает работу гаджета.
Всего голосов 33: ↑31 и ↓2+41
Комментарии4

Методика проектирования архитектурных слоев на основе анемичной модели и DDD

Время на прочтение11 мин
Количество просмотров12K
В результате выполнения методики будут выделены архитектурные слои с максимальной специализацией по уровням прикладных задач и разделением ответственности по SRP.

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

Как следствие, это выражается:

  • в непредсказуемости сроков разработки
  • большим временем локализации ошибок
  • увеличением требования к квалификации разработчиков и сложной заменяемости

Но как выйти на другой уровень качества приложения и разработки?

Если сравнивать архитектуру систем с архитектурой зданий, то на определённом этапе, переполненную хрущёвку надо превратить в небоскрёб. Методика описывает то, КАК это сделать.

image
Читать дальше →
Всего голосов 4: ↑2 и ↓2+1
Комментарии16

Чистая архитектура на PHP. Как её измерять и контролировать?

Время на прочтение24 мин
Количество просмотров26K

Предисловие


Как ты уже понял из названия, говорить я тут собрался о самом, что ни на есть, “высоком” — Чистой архитектуре. А толчком к развитию всей этой истории послужила книга Роберта Мартина “Чистая архитектура”. Если еще не читал, осмелюсь порекомендовать! Автор раскрывает много важных тем, активно делится своим богатым жизненным опытом (из проф. области естественно) и сделанными на его основе выводами, эпизодически вплетает в главы истории о том, как виртуозно говнокодили (ну и не только, конечно же) наши отцы и деды в далёких 60-х, 70-х, 80-х и даже лихих 90-х, как по крупинкам собирали всеми любимые принципы SOLID и их аналоги в мире компонентов, и чему научились за прошедшие полвека. В процессе чтения книги хорошо прослеживается линия развития индустрии разработки ПО, типичные проблемы, с которыми пацанам приходилось сталкиваться, и способы их решения.

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

Мне кажется, статья будет полезна всем. Те, кто с книгой уже знаком, смогут освежить в своей памяти некоторые ее моменты, или просто пропустить первую часть и сразу приступить к знакомству с инструментом. Те, кто ранее книгу не читал, возможно, и в первой части найдут для себя что-то новое.
Читать дальше →
Всего голосов 24: ↑21 и ↓3+30
Комментарии23

Букварь по дизайну систем (Часть 1 с дополнениями по микросервисам)

Время на прочтение37 мин
Количество просмотров24K


Несколько лет назад, для закрытия одного их предметов мне довелось перевести данный букварь. Де-факто этот вариант стал официальным переводом. Но развитию этого перевода мешает, тот факт, что он был написан в Google Drive и закрыт на редактирования. Сегодня я уделил время на переформатирования всего этого текста в MD формат с помощью редактора Хабра, с радостью публикую здесь и вскоре отдам текущим контрибьюторам.


Словарь


Node — нода — узел с каким либо ресурсом
Content — контент — данныe
Traffic — трафик — запрос/ответ, данные которые передаются от сервера клиенту и наоборот
Hardware — железо — аппаратная часть
Instance — инстанс — созданный объект какой либо сущности. Например инстанс сервера API
Headers — хедеры — заголовки (как правило TCP пакета, но может быть и HTTP запроса)



Читать дальше →
Всего голосов 31: ↑28 и ↓3+29
Комментарии3

Законы программирования

Время на прочтение20 мин
Количество просмотров58K

Законы, теории, принципы и закономерности, полезные для разработчиков


Введение


Перевод репозитория github.com/dwmkerr/hacker-laws

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

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

Законы


Закон Амдала


Закон Амдала — это формула, демонстрирующая потенциал ускорения вычислительной задачи, которого можно достичь при увеличении количества ресурсов системы. Обычно он используется в параллельных вычислениях, и может предсказать наличие реальных преимуществ от увеличения количества процессоров с учётом ограничений параллелизуемости программы.
Читать дальше →
Всего голосов 67: ↑65 и ↓2+80
Комментарии21

Реверс-инжиниринг мозга. Память

Время на прочтение13 мин
Количество просмотров20K
image

Мозг — мой давний сосед. Учитывая то, сколько времени мы провели, и сколько нам еще предстоит быть вместе, не интересоваться им — полнейшая бестактность.

Ходишь с черным ящиком внутри черепной коробки, и этот ящик понимает, что он сам себе дает такое описание. Это же очень любопытно. Если бы мне дали железку с такими возможностями, я бы все свободное время убил на то, чтобы понять, как она работает. Собственно, я и убиваю. Объект исследования всегда при мне — очень удобно. Жаль только, внутри покопаться нельзя.

Мозг записывает и обрабатывает информацию. Но как? Почему что-то хранится долго, а что-то забывается за пару дней? Как это связано с нейронами?

Можно ли, основываясь на информации из нейробиологии, построить модель мозга дающую похожее на реальный мозг поведение?

А что гадать? Давайте просто попробуем.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии58

Светодиодный костюм

Время на прочтение3 мин
Количество просмотров26K
Это первая часть моей публикации, в которой я постараюсь кратко и лаконично изложить технологию построения современного светодиодного костюма.

image

Уже более 4-х лет на рынке доступны цифровые светодиодные ленты на базе IC LED чипов (смарт пикселей). Суть таких пикселей довольно проста, в RGB SMD/DIP светодиод интегрируется микросхема, которая им управляет. Такие ленты обеспечивают высокую плотность — 144/100/60 пикселей на метр, малый вес, низкое напряжение питания, и простоту управления внешним контроллером.

image

Среди наиболее распространенных и популярных LED чипов можно выделить: WS2812B, WS2813, APA102, SK9822, UCS1903 с питанием 3,5-5В. В настоящее время также набирают популярность IC LED чипы с питанием +12В, это WS2815, GS8208.

image

Каждый пиксель такой ленты может управляться индивидуально, также как пиксель на экране монитора, т.о. это дает возможность построить на базе цифровой светодиодной ленты продвинутый LED костюм или «Пиксельный костюм».
Читать дальше →
Всего голосов 23: ↑22 и ↓1+29
Комментарии24

Принцип единственной ответственности: глубокое погружение

Время на прочтение17 мин
Количество просмотров50K
Про принцип единственной ответственности (The Single Responsibility Principle, SRP) уже было написано множество статей. В большинстве из них даётся лишь поверхностное его описание мало чем отличающееся от информации в википедии. А те немногие статьи что затрагивают ключевые особенности SRP делают это вскользь, не акцентируя на них внимания и не развивая тему дальше.

Эта статья — попытка дать более глубокое объяснение принципу единственной ответственности, а также показать как его всё таки можно применять на практике. Кому интересно — добро пожаловать под кат.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+34
Комментарии106

Используем IoC-контейнер Laravel на полную мощность

Время на прочтение14 мин
Количество просмотров68K

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


Примеры в данной статье основаны на Laravel 5.4.26, другие версии могут отличаться.


Введение в Dependency Injection


Я не буду объяснять, что такое DI и IoC в этой статье — если вы не знакомы с этими принципами, вы можете прочитать статью "What is Dependency Injection?" от Fabien Potencier (создателя фреймворка Symfony).

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии19

Не учите паттерны, учите концепции

Время на прочтение3 мин
Количество просмотров41K
Добрый день (или вечер, или утро, в зависимости от того, когда выйдет этот пост).

Я хочу высказаться об элитарной части программирования и донести, в общем-то, очевидную мысль до начинающих в back-end (и не только) разработке, попутно используя попытку начать писать на Хабре.

Итак


Любой программист с хоть немного хорошим вкусом, начавший программировать по своей воле, после понимания основ языка и написания первых проектов, будет задаваться вопросом не «как сделать что-то», а «как сделать что-то правильно» и «какие тут есть стандарты красоты».
Читать дальше →
Всего голосов 93: ↑68 и ↓25+43
Комментарии107

Выбор размера монитора: теория угловых размеров, обоснование и сравнение

Время на прочтение7 мин
Количество просмотров254K


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

Надеюсь, мои изыскания кому-то также пригодятся, а также позволят сохранить зрение и нервы.
Читать дальше →
Всего голосов 80: ↑75 и ↓5+70
Комментарии242

Препарируем PHP. Как устроены while, foreach, array_walk и некоторые другие страшные слова

Время на прочтение7 мин
Количество просмотров21K


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

Исходники от master ветки (это сейчас 7.4 с вкраплениями 8)
Генератор опкодов от php 7.3.0.
Замеры производились на 7.3.6.

Дисклеймер для зануд: упоминание пары наносекунд и тактов процессора – это такой полемический приём под названием «гипербола».

Может быть, на самом деле, там десятки или сотни наносекунд и тысячи тактов, но это всё равно настолько малые величины, что необходимость экономить на них говорит о том, что что-то в вашем коде не так.
Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии26

Шпаргалка по шаблонам проектирования

Время на прочтение2 мин
Количество просмотров1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Всего голосов 192: ↑179 и ↓13+166
Комментарии66

О поиске себя

Время на прочтение10 мин
Количество просмотров18K

Предисловие


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

Я считаю, у меня сейчас есть чувство, что я нашел то, что искал.

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

Сразу, конечно, хочу оговориться, что все нижеописанное не в полной мере история, но и не универсальное руководство. Это обобщения из того пути, который я прошел из военного ВУЗа до психологии, маркетинга, и в итоге пришел в IT сферу.
Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии20

42 оператора расширенного поиска Google (полный список)

Время на прочтение15 мин
Количество просмотров299K
Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

Большинство операторов легко запомнить, это короткие команды. Но уметь эффективно их использовать — совсем другая история. Многие специалисты знают основы, но немногие по-настоящему овладели этими командами.

В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
Читать дальше →
Всего голосов 127: ↑124 и ↓3+121
Комментарии40

Как генерировать осмысленные коммиты. Применяем стандарт Conventional Commits

Время на прочтение8 мин
Количество просмотров123K


Привычный хаос в названиях коммитов. Знакомая картина?

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

Меня зовут Ержан Ташбенбетов, я работаю в одной из команд Яндекс.Маркета. И сегодня я расскажу читателям Хабра, какие инструменты для создания осмысленных коммитов мы используем в команде. Приглашаю присоединиться к обсуждению этой темы.

Читать дальше →
Всего голосов 72: ↑71 и ↓1+70
Комментарии84

Тридцать шесть градусов красоты

Время на прочтение11 мин
Количество просмотров16K
Сеточные системы координат, в которых плоскость делится на одинаковые симметричные элементы — на квадраты, треугольники, шестиугольники, достаточно известны. Им соответствуют квадратная, треугольная, шестиугольная симметрия. Но еще существует симметрия десятиугольная.

В ней плоскость не делится на десятиугольники, вместо этого все линии расположены под углами кратными 36°. Координаты в этой системе можно записывать целыми числами, по два целых числа на горизонтальное и вертикальное направление.



Расскажу как это нарисовать.
Читать дальше →
Всего голосов 84: ↑84 и ↓0+84
Комментарии22

Информация

В рейтинге
2 446-й
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность