Pull to refresh
0
0

PHP-Dev

Send message

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

Reading time4 min
Views6.4K

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

Читать далее

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

Reading time8 min
Views13K

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

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

Читать далее

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

Reading time3 min
Views2.8K

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

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

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

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

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

Читать далее

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

Reading time7 min
Views116K

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

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

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

Reading time7 min
Views73K

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



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


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


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

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

message.toLowerCase()

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

message()

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


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


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

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

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

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

Reading time9 min
Views10K
Настройте файлы шрифтов и оптимизируйте стратегию загрузки для максимальной скорости + минимум FOUT

image


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

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

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

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

Reading time18 min
Views40K

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

Читать далее

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

Reading time10 min
Views5.4K

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

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

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

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

Читать далее

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

Reading time6 min
Views56K

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

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

Читать!

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

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



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

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

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

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

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

Reading time11 min
Views14K

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

Читать далее

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

Reading time5 min
Views30K

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

Так как в комментариях к предыдщей статье "Строю правильный дом «под ключ» с микроклиматом без/с автоматизацией по цене квартиры — 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)

Reading time3 min
Views9.1K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

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

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

Reading time9 min
Views6.4K

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


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


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


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

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

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

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


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

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

Reading time9 min
Views18K

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

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

Читать далее

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

Reading time9 min
Views51K

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

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

Читать далее

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

Reading time8 min
Views6.2K


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


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

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

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

Reading time16 min
Views35K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

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

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

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

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

Information

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