В основном, про Firebase рассказывают в контексте создания приложений под IOS или Android. Однако, данный инструмент можно использовать и в других областях разработки, например при создании Telegram ботов. В этой статье хочу рассказать и показать насколько Firebase простой и удобный инструмент (а ещё и бесплатный, при разумных размерах проекта).
User
VueUse — обязательная библиотека для Vue 3
Для тех, кто незнаком с этой библиотекой, советую попробовать, так она может де-факто стать стандартом для использования в проектах на Vue 3, как, например, в свое время была библиотека lodash
для почти любых проектов на js.
Остальные наверное уже успели заценить весь обширный функционал, который она предоставляет. Некоторые уже использовали ее на Vue 2, но далеко не все новые функции поддерживают старую версию. Арсенал библиотеки впечатляет, тут и простые утилиты вроде клика вне элемента, и различные интеграции с Firebase, Axios, Cookies, QR, локальным хранилищем, браузером, RxJS, анимации, геолокации, расширения для стандартных Vue-хуков, медиа-плеер и многое другое. Среди спонсоров отмечен сам Эван Ю, что как бы намекает. Библиотека регулярно получает обновления, баги закрываются, а сообщество растет. В общем у нее есть все для успеха.
Update: Исправлен баг очистки предыдущей истории изменений.
Update 2: Добавлен более актуальной код примеров.
Слабо поднять такой крошечный контейнер? Создаем контейнеризованный HTTP-сервер на 6kB
scratch
и крошечного http-сервера на основе этой сборки, я смог ужать результат до 6.32kB!Если предпочитаете видео, вот ролик по статье, выложенный на YouTube!
Раздутые контейнеры
Контейнеры часто превозносятся как панацея, позволяющая справиться с любыми вызовами, связанными с эксплуатацией ПО. Притом, как мне нравятся контейнеры, на практике мне часто попадаются контейнерные образы, отягощенные разнообразными проблемами. Распространенная беда – размер контейнера; у некоторых образов он достигает многих гигабайт!
Поэтому я решил устроить челлендж себе и всем желающим и попытаться создать настолько компактный образ, насколько возможно.
Задача
Правила довольно просты:
Разработка с Docker на Windows Subsystem for Linux (WSL)
Для полноценной работы с проектом на docker'е в WSL необходима установка WSL 2. На момент написания заметки ее использование возможно только в рамках участия в программе предварительной оценки Windows (WSL 2 доступна в сборках 18932 и выше). Так же отдельно стоит упомянуть, что необходима версия Windows 10 Pro для установки и настройки Docker Desktop.
Важно! В WSL 2 пропала острая необходимость в Docker Desktop для Windows 10. Как обходиться без него описано в пункте Про Docker в Ubuntu.
Docker для Symfony 4 — от локалки до production
Предистория
Одним прекрасным днём мне понадобилось развернуть среду разработки для своего проекта. Vagrant уже порядком поднадоел и хотелось иметь единую среду разработки для всех участников проекта которая была бы идентичной production серверу. Соответственно наслушавшись информации про хипстерский docker, я решил начать с ним разбираться. Далее я постараюсь максимально подробно описать все шаги начиная от установки докера на локалке вплоть до разворачивания продуктива на KVM.
Исходный стек технологий:
— Docker
— Symfony 4
— nginx
— php-fpm
— postgresql
— elasticsearch
— rabbitmq
— jenkins
Железо:
— ноутбук под ОС Ubuntu 16.04
— продакшн сервер на хостинге KVM
Почему кроме технологического стека я перечислил ещё и стек железа?
Если вы никогда ранее не работали с докером, то вы можете столкнуться с рядом проблем, связанных именно с железом, операционной системой вашего ноутбука или типом виртуализации на хостинге.
Первый и наверно самый важный аспект при начале работы с докером — это операционная система вашего ноутбука. Проще всего работать с докером именно на linux системах. Если вы работаете на Windows или Mac то у вас 100 % будут некоторые сложности, но эти сложности не будут являться критическими и при желании «нагуглить» как это исправляется не составит никаких проблем.
Второй вопрос — это хостинг. Зачем нужен Hosting именно с типом виртуализации KVM? Причина в том, что виртуализация VPS разительно отличается от KVM и установить сам docker на VPS у вас попросту не выйдет, так как VPS распределяет ресурсы сервера динамически.
Подитог: для самого быстрого старта на докере резоннее всего выбирать Ubuntu в качестве локальной операционки и KVM хостинг (либо собственный сервер). Далее рассказ пойдёт опираясь именно на эти две составляющие.
Spiral: высокопроизводительный PHP/Go фреймворк
Привет, Хабр. Меня зовут Антон Титов, CTO компании Spiral Scout. Сегодня я хотел бы рассказать вам про нашего PHP-слона. А точнее про вторую версию опен-сорсного full-stack PHP/Go фреймворка — Spiral.
Spiral — это компонентный full-stack фреймворк, разрабатываемый нашей компанией более одиннадцати лет и обслуживающий под сотню реальных проектов. Программный пакет основан на множестве открытых и собственных библиотек, включая RoadRunner и Cycle ORM.
Фреймворк совместим с большинством PSR рекомендаций, поддерживает MVC и работает в 5-10 раз быстрее Laravel/Symfony.
Если вы никогда не слышали о Spiral и гадаете, что такое PHP/Go фреймворк и куда делась первая версия — добро пожаловать под кат.
5 способов деплоя PHP-кода в условиях хайлоада
На простом решении Юрий не остановился, а дополнительно провел доклад, в котором раскрыл тему понятия «деплой кода», рассказал про классические и альтернативные решения масштабного деплоя кода на PHP, проанализировал их производительность и презентовал самописную систему деплоя MDK.
Современная Android разработка на Kotlin. Часть 1
Очень сложно найти один проект, который охватывал бы всё новое в разработке под Android в Android Studio 3.0, поэтому я решил написать его. В этой статье мы разберём следующее:
- Android Studio 3
- Язык программирования Kotlin
- Варианты сборки
- ConstraintLayout
- Библиотека привязки данных Data Binding
- Архитектура MVVM + паттерн repository (с mapper'ами) + Android Manager Wrappers
- RxJava2 и как это помогает нам в архитектуре
- Dagger 2.11, что такое внедрение зависимости, почему вы должны использовать это.
- Retrofit (Rx Java2)
- Room (Rx Java2)
Каким будет наше приложение?
Наше приложение будет самым простым, которое охватывает все перечисленные выше вещи: у него будет только одна функция, которая извлекает все репозитории пользователя googlesamples из GitHub, сохраняет эти данные в локальной базе данных и показывает их пользователю.
Я попытаюсь объяснить как можно больше строк кода. Вы всегда можете посмотреть код, который я опубликовал на GitHub.
Интеграция с ЕСИА на базе oauth2-client (PHP)
Представляем yet another PHP-пакет интеграции с ЕСИА — ekapusta/oauth2-esia
. Реализован как адаптер к популярному league/oauth2-client
.
7+ превосходных инструментов для оптимизации изображений
К сожалению на момент перевода один из сервисов перестал работать. Но хабровчане предложили еще много хороших решений!
Одним из самых простых способов уменьшить время отклика страниц на вашем сайте является оптимизация изображений.
Есть несколько бесплатных инструментов помогающих уменьшить и оптимизировать изображения. В этой статье вы найдете удобные инструменты для создания картинок для веба настолько маленьких по весу, насколько это возможно.
Обзор инструментов — под катом.
Стрелочные LED-часы для обучения пайке SMD компонентов
В этой статье я расскажу об одной такой интересной штуковине, которую мы сделали некоторое время назад. Это набор для обучения SMD пайке — LED часы. Под катом подробное описание набора, причины появления, и видеоурок по SMD пайке!
Анонс Dart 2.0: Оптимизированный для клиентской разработки
Dash — официальный маскот языка
Стеклянный коврик для мыши своими руками
Стеклянный коврик для мыши обладает следующими достоинствами:
— постоянство свойств скольжения т.к. нет стирания текстуры поверхности;
— отсутствие залипания (чтобы сдвинуть мышь с места, требуется усилие большее, чем при скольжении);
— легко чистится (достаточно протереть влажной тряпочкой и потом вытереть сухой);
— скольжение очень легкое, но при этом присутствует достаточный контроль.
Есть и недостатки:
— запотевание поверхности если некоторое время происходит контакт с неподвижной рукой;
— требует слежения за чистотой поверхности — при попадании твердой пыли, она иногда застревает в ножках мыши и скольжение ухудшается.
Чтобы стекло стало ковриком для мыши, т.е. чтобы сенсор мог считывать изображение поверхности, необходимо эту поверхность сделать матовой. Матирование стекла можно сделать тремя основными способами — химическим, пескоструйным и механическим с помощью абразивов.
ZX Spectrum 128k своими руками
«8 лет я играл в Спектрум в черно-белом цвете и все знаете почему, да потому что наши доблестные телики RGB сигнал вообще не понимали». Хотел бы сказать я, понастольгировать, вспомнить что раньше солнце было ярче а трава зеленее. Но не скажу, в моем детстве слово Спектрум вообще никто никогда не произносил. Все свое детство я играл в денди, позже в сегу, у друзей иногда в супернинтендо. Ни в передаче Денди «Новая Реальность», ни в «От винта», ни в каком либо журнале я не слышал об этом компьютере. Я краем уха слышал о компьютерах, загружающихся с кассет, но никогда их не видел и не знал их названия. Впервые я о нем узнал только когда у меня появился интернет. Почитывал форумы, завидовал тем людям которые в конце 80х начале 90х собирали сами свои компьютеры, а я годноту пропустил. Хотя в те годы я был маленький и при всем желании свой клон спектрума бы не собрал. Много ли я потерял? Вот этот вопрос я не так давно себе стал задавать. Год назад наткнулся на очень хороший видосик где один парень очень подробно рассказал и показал как спаять клон спектрума «Ленинград». Его я пересматривал не раз и в итоге решил «Я соберу свой компьютер с нуля!».
Многозадачная Ардуина: таймеры без боли
Еще меньше используют такую возможность на практике, т.к. в стандартном не слишком богатом API Arduino она не предусмотрена. И, хотя, доступ ко всем богатствам внутренних возможностей микроконтроллера лежит на расстоянии вытянутой руки через подключение одного-двух системных заголовочных файлов, не каждый пожелает добавить в свой аккуратный маленький скетч пару-тройку экранов довольно специфического настроечного кода (попутно потеряв с ним остатки переносимости между разными платами). Совсем единицы (тем более, среди аудитории Ардуино) решатся и смогут в нем разобраться.
Сегодня я избавлю вас от страданий.
Используем IoC-контейнер Laravel на полную мощность
Laravel имеет мощный IoC-контейнер, но, к сожалению, официальная документация Laravel не описывает все его возможности. Я решил изучить его и задокументировать для собственного использования.
Примеры в данной статье основаны на Laravel 5.4.26, другие версии могут отличаться.
Введение в Dependency Injection
Я не буду объяснять, что такое DI и IoC в этой статье — если вы не знакомы с этими принципами, вы можете прочитать статью "What is Dependency Injection?" от Fabien Potencier (создателя фреймворка Symfony).
Установка ArchLinux ARM рядом с Android без chroot
ЧПУ (SEF URLs) в Symfony 3 — автогенерация slug, настройка и маршрутизация
Третьего дня мне понадобилось провести блиц вебинар на тему ЧПУ в Symfony. Вообще время вебинара у меня ограничено двумя часами, при этом я должен был рассказать еще и про автогенерацию CRUD функционала (scaffolding) в той же Symfony, и про простейший способ создать постраничность. Это создало проблему, так как я знаю как сделать ЧПУ «ручками», не прибегая к автоматизированным под эту задачу инструментам, но рассказ получился бы долгий и оказались бы затянутыми в обсуждение лишние темы. Поэтому я пошел спрашивать у Интернета как сделать все проще. И вот я оказался в той редкой ситуации, когда такая популярная платформа как Symfony не имеет банального обучающего материала на тему «ЧПУ в три клика». Смотрел так же и на английском языке, но там тоже пусто (может плохо искал — время было ограничено). В общем я справился с поиском разрозненного материала по данной теме, а так же со сбором его в единое повествование, так что почему бы не поделиться со всеми?
Пошёл обратный отсчёт: до ICO «Полибиуса» осталось 7 дней
ICO «Полибиуса» будет проходить в виде распродажи дивиденд-токенов «Полибиус»: смарт-контрактов, гарантирующих долю в прибыли банка. Токены будут продаваться по $10, но в течение первого дня токены «Полибиус» будут продаваться с бонусом 25%, поэтому есть смысл зайти на polybius.io уже 31 мая.
Иерархия исключений в современном PHP-приложении
Задача публикации: доступно изложить способ организации иерархии исключений и их обработки в приложении. Без привязки к фреймворкам и конкретной архитектуре. Описываемый способ является де-факто стандартом в сообществе: он используется во многих серьёзных библиотеках и фреймворках. В том числе Zend, Symfony. Не смотря на его логичность и универсальность, формального описания предлагаемого подхода на русском языке я не нашёл. После неоднократного устного изложения концепции коллегам, родилась мысль оформить её в виде публикации на Хабрахабр.
В языке PHP, начиная с 5-ой версии, доступен механизм исключений. В актуальной, 7-ой, версии этот механизм был улучшен и переработан с целью единнобразной обработки разных ошибок при помощи конструкции try{} catch...
В стандартной библиотеке (SPL) PHP предоставляет готовый набор базовых классов и интерфейсов для исключений. В 7-ой версии этот набор был расширен интерфейсом Throwable
. Вот диаграмма всех имеющихся в версии 7 типов (изображение — ссылка):
Information
- Rating
- Does not participate
- Location
- Тверь, Тверская обл., Россия
- Date of birth
- Registered
- Activity