Обновить
0
0

PHP-Dev

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

Нетривиальное слияние репозиториев с помощью git-filter-repo

Время на прочтение4 мин
Охват и читатели8K

Вторая часть истории про слияние репозиториев. Суть проблемы вкратце такова: надо слить репозиторий с подрепозиторием с сохранением истории. Решение на gitpython работало за 6 часов и выдавало удовлетворительный результат. Но, что-то не давало мне покоя...

Читать далее

Как оставаться отказоустойчивым, переходя на микросервисы на PHP (и как правильно падать)

Время на прочтение8 мин
Охват и читатели13K

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

Но вот вы заехали в Swarm. Все приложения — это набор контейнеров. А контейнеры это, по сути, набор микросерверов со своей файловой системой, своей памятью, своими процами. И они уже не всегда рядом. Соответственно, это тянет за собой некоторые изменения. 

Читать далее

5 книг для летнего чтения от Билла Гейтса

Время на прочтение3 мин
Охват и читатели3K

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

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

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

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

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

Читать далее

Wireshark для всех. Лайфхаки на каждый день

Время на прочтение7 мин
Охват и читатели131K

Пакет с сертификатами от Хабра

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

Карманная книга по TypeScript. Часть 1. Основы

Время на прочтение7 мин
Охват и читатели82K

Обратите внимание: для большого удобства в изучении книга была оформлена в виде прогрессивного веб-приложения.



С сегодняшнего дня мы начинаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".


Каждое значение в JavaScript при выполнении над ним каких-либо операций ведет себя определенным образом. Это может звучать несколько абстрактно, но, в качестве примера, попробуем выполнить некоторые операции над переменной message:


// Получаем доступ к свойству `toLowerCase`

// и вызываем его

message.toLowerCase()

// Вызываем `message`

message()

На первой строке мы получаем доступ к свойству toLowerCase и вызываем его. На второй строке мы пытаемся вызвать message.


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


  • Является ли переменная message вызываемой?
  • Имеет ли она свойство toLowerCase?
  • Если имеет, является ли toLowerCase вызываемым?
  • Если оба этих значения являются вызываемыми, то что они возвращают?

Ответы на эти вопросы, как правило, хранятся в нашей памяти, поэтому остается только надеяться, что мы все помним правильно.

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

5 шагов к быстрым веб-шрифтам

Время на прочтение9 мин
Охват и читатели11K
Настройте файлы шрифтов и оптимизируйте стратегию загрузки для максимальной скорости + минимум FOUT

image


В предыдущем посте я писал о системных шрифтах и ​​их преимуществах перед веб-шрифтами. Я поддерживал подход «сначала системные шрифты», утверждая, что по сравнению с системными шрифтами веб-шрифты (а) могут отрицательно повлиять на производительность, (б) использовать больше данных и (в) увеличить энергопотребление вашего сайта. Но сеть без веб-шрифтов была бы гораздо менее интересной — возможно, используя веб-шрифты более ответственно, мы сможем получить все их преимущества, сведя к минимуму недостатки.

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

Благодарим Зака ​​Лезермана, который подробно писал о веб-шрифтах на своем сайте. Стоит прочитать все его статьи, особенно The Font Loading Checklist и A Comprehensive Guide to Font Loading Strategies (которое действительно очень исчерпывающее), обе из которых оказались очень полезными, пока я писал этот пост.
Читать дальше →

TypeScript: Раскладываем tsconfig по полочкам. Часть 2 — Всё про строгость

Время на прочтение18 мин
Охват и читатели46K

В данной статье я хочу предоставить переработанную и упорядоченную выжимку документации по настройке "флагов строгости" tsconfig.json. Статья будет полезна как тем, кто только начинает работать с TypeScript, так и тем кто уже давно работает, но при этом использует конфиг по умолчанию. Для разработчиков, которые хорошо ориентируются в вопросах строгости в TypeScript статья может открыть некоторые тонкости работы флагов и послужить шпаргалкой.

Читать далее

И еще один сервис проверки паспортов или опять вопрос сколько гигабайт в одном мегабайте

Время на прочтение10 мин
Охват и читатели5.6K

Какое-то время назад появилась возможность уделить внимание языку Go и удачно на глаза попалась публикация «Паспортный контроль, или Как сжать полтора гигабайта до 42 мегабайт» . В статье кратко, но информативно, рассказывается о тестовой задаче по разработке сервиса проверки номеров российских паспортов на предмет наличия их в списке недействительных паспортов.  Среди основных требований к реализации – это скорость проверки и доступность сервиса.  

После прочтения статьи для себя решил, что именно на этой практической задаче можно построить свое обучение Go.  Действительно, задача c проверкой недействительных паспортов, хоть и избитая, но интересная, а раз уж требования по производительности здесь в приоритете, то реализация на Go здесь будет вполне уместна.

Кроме того, в упомянутой выше статье затронуты вопросы эффективной, с точки зрения памяти, организации битовых массивов (bitmap). И эта тема достаточно актуальна и востребована в разных прикладных решениях, например, в виде bitmap-индексов для СУБД.

Итак, есть желание посмотреть на новый для себя язык Go, есть интересная проблематика в виде организации и использования bitmap, есть практическое применение, на котором эти две задачи можно отработать. 

Читать далее

Полное руководство по CSS Flex + опыт использования

Время на прочтение6 мин
Охват и читатели59K

Как и CSS Grid, Flex Box довольно сложен, потому что состоит из двух составляющих: контейнера и элементов внутри него.

Когда я начал изучать Flex, я хотел увидеть все, на что он способен. Но мне не удалось найти подробное руководство с примерами всех возможностей. Поэтому я решил самостоятельно создать диаграммы свойств Flex с «высоты птичьего полета».

Читать!

Хорошие времена рождают слабаков

Время на прочтение4 мин
Охват и читатели21K
В статье «Моё разочарование в софте» мы увидели, как программное обеспечение деградировало за последние два десятилетия. В 2019 Джонатан Блоу (разработчик игр Braid и The Whitness) выступил с докладом, в котором объяснил, почему это может происходить:



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

Кризис программного обеспечения носит системный и поколенческий характер. Скажем, первое поколение работает над проектом X. После того, как X создан и становится популярным, проходит время, и приходит следующее поколение программистов и работает уже над проектом Y, основанное на X. Им не нужно точно знать, как построен проект X, почему он был построен таким образом, или как написать альтернативный X с нуля. Они не хуже и не ленивее, у них просто нет реальной необходимости создавать X2, поскольку X уже существует и позволяет им решать многие насущные задачи.

Самым важным моментом выступления было то, что если вы работаете над Y, а Y основано на X, то это не означает то, что вы автоматом знаете и X. Даже если люди, которые создают X, все еще существуют, их знания не передаются автоматически и без реальной необходимости уйдут с людьми, которые изначально владели ими.

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

Гайд по мобильной рекламе для тех, кто задумался о монетизации

Время на прочтение11 мин
Охват и читатели16K

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

Читать далее

Одноэтажный дом — какой бы строил для себя (может и вам пригодится)

Время на прочтение5 мин
Охват и читатели31K

Приветствую.

Так как в комментариях к предыдщей статье "Строю правильный дом «под ключ» с микроклиматом без/с автоматизацией по цене квартиры — 1. Введение" возникло живое обсуждение одноэтажных домов, то решил написать статью о том, какой одноэтажный дом делал бы для себя (может и вам пригодится).

Дом-КУБОИД - 1х1,618 - 14400х9000х4200 - 1этаж

ТЭП (выборочные):
- габариты = 14400 х 9000 х 4200 (возможно 4400 будет оптимальней с учетом парапета);
- площадь застройки = 130м2 (+ пристройка 58м2; + отмостка 74м2);
- площадь полезная вутренняя = 98м2 или 103м2;
- высота потолков в чистоте = 3600мм;

Принцип такой же как и в доме КУБ-8400х8400х8400 - ничего лишнего - максимальная простота и удобство во всем (начиная строительством дома и заканчивая его эксплуатацией) - минимализм во всех смыслах.

Оба дома являются универсальными заготовками:

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

Оба дома максимально равнозначны.
Таким образом остаются в основном субъективные нюансы - кому что больше нравится.

Стоимость вышла ~ на 20% выше, энергоэффективность на 10-20% ниже, чем у дома серии КУБ - с другой стороны площадь крыши и террасы увеличились.

В следующей статье сравню эти 2 варианта дома.

З.Ы. :

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

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

Читать далее

Дайджест свежих материалов из мира фронтенда за последнюю неделю №454 (8 — 14 февраля 2021)

Время на прочтение3 мин
Охват и читатели9.2K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

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

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

Время на прочтение9 мин
Охват и читатели6.8K

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


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


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


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

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

Интересные CSS-находки в дизайне Twitter

Время на прочтение7 мин
Охват и читатели16K
Хочу в очередной раз рассказать о результатах исследования дизайна сайта, который привлёк моё внимание. В прошлый раз я писал о CSS-механизмах, лежащих в основе нового дизайна Facebook. А теперь мне стало любопытно исследовать CSS-код Twitter. Новый дизайн Twitter появился почти год назад. В CSS-коде Twitter я нашёл много интересного: кое-что кажется мне просто замечательным, а кое-что — странным.


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

Отложенные задачи в рамках микро-сервисной архитектуры

Время на прочтение9 мин
Охват и читатели19K

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

Для решения такой задачи было создано очередное решение под названием Trigger Hook. Принципиальная схема работы показана на рисунке 1. На схеме показано, что происходит с заданиями в течения всего их жизненного цикла. Смена цвета означает смену статуса задачи.

Читать далее

Как реализовать drag&drop на чистом JavaScript

Время на прочтение9 мин
Охват и читатели60K

В этом туториале мы рассмотрим, как реализовать эффект drag & drop на ванильном JavaScript. Дословный перевод с английского — «потяни и брось» — отражает суть эффекта, это хорошо знакомое любому пользователю перетаскивание элементов интерфейса. Drag & drop может понадобиться при сортировке карточек в таск-трекере, переносе между списками или вообще при перетаскивании файлов в окно браузера.

Мы разберём drag & drop на примере сортировки. Для этого создадим интерактивный список задач.

Читать далее

Хьюстон, у нас проблемы с интерпретацией ошибок

Время на прочтение8 мин
Охват и читатели6.4K


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


В ожидании комбинаторного взрыва

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

Настройка Xdebug3 для Laravel-приложения в Docker

Время на прочтение4 мин
Охват и читатели19K

Настройка локального отладчика Xdebug в IDE PhpStorm для Laravel-приложения в Docker.

Читать далее

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

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

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

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

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

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Bielefeld, Nordrhein-Westfalen, Германия
Зарегистрирован
Активность