Pull to refresh
10
0
Денис Старцев @startsevdenis

User

Send message

Telegram бот на Firebase

Reading time9 min
Views21K

В основном, про Firebase рассказывают в контексте создания приложений под IOS или Android. Однако, данный инструмент можно использовать и в других областях разработки, например при создании Telegram ботов. В этой статье хочу рассказать и показать насколько Firebase простой и удобный инструмент (а ещё и бесплатный, при разумных размерах проекта).

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments12

VueUse — обязательная библиотека для Vue 3

Reading time6 min
Views13K

Для тех, кто незнаком с этой библиотекой, советую попробовать, так она может де-факто стать стандартом для использования в проектах на Vue 3, как, например, в свое время была библиотека lodash для почти любых проектов на js.

Остальные наверное уже успели заценить весь обширный функционал, который она предоставляет. Некоторые уже использовали ее на Vue 2, но далеко не все новые функции поддерживают старую версию. Арсенал библиотеки впечатляет, тут и простые утилиты вроде клика вне элемента, и различные интеграции с Firebase, Axios, Cookies, QR, локальным хранилищем, браузером, RxJS, анимации, геолокации, расширения для стандартных Vue-хуков, медиа-плеер и многое другое. Среди спонсоров отмечен сам Эван Ю, что как бы намекает. Библиотека регулярно получает обновления, баги закрываются, а сообщество растет. В общем у нее есть все для успеха.

Update: Исправлен баг очистки предыдущей истории изменений.
Update 2: Добавлен более актуальной код примеров.

Читать далее
Total votes 16: ↑10 and ↓6+4
Comments17

Слабо поднять такой крошечный контейнер? Создаем контейнеризованный HTTP-сервер на 6kB

Reading time4 min
Views13K
TL;DR  я решил создать самый маленький образ контейнера, при помощи которого все-таки можно сделать что-нибудь полезное. Опираясь на преимущества многоступенчатых сборок, базового образа scratch и крошечного http-сервера на основе этой сборки, я смог ужать результат до 6.32kB!





Если предпочитаете видео, вот ролик по статье, выложенный на YouTube!

Раздутые контейнеры


Контейнеры часто превозносятся как панацея, позволяющая справиться с любыми вызовами, связанными с эксплуатацией ПО. Притом, как мне нравятся контейнеры, на практике мне часто попадаются контейнерные образы, отягощенные разнообразными проблемами. Распространенная беда – размер контейнера; у некоторых образов он достигает многих гигабайт!  

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

Задача


Правила довольно просты:
Total votes 60: ↑58 and ↓2+56
Comments37

Разработка с Docker на Windows Subsystem for Linux (WSL)

Reading time4 min
Views97K



Для полноценной работы с проектом на docker'е в WSL необходима установка WSL 2. На момент написания заметки ее использование возможно только в рамках участия в программе предварительной оценки Windows (WSL 2 доступна в сборках 18932 и выше). Так же отдельно стоит упомянуть, что необходима версия Windows 10 Pro для установки и настройки Docker Desktop.


Важно! В WSL 2 пропала острая необходимость в Docker Desktop для Windows 10. Как обходиться без него описано в пункте Про Docker в Ubuntu.


Читать дальше →
Total votes 24: ↑18 and ↓6+12
Comments76

Docker для Symfony 4 — от локалки до production

Reading time15 min
Views50K

Предистория


Одним прекрасным днём мне понадобилось развернуть среду разработки для своего проекта. 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 хостинг (либо собственный сервер). Далее рассказ пойдёт опираясь именно на эти две составляющие.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments46

Spiral: высокопроизводительный PHP/Go фреймворк

Reading time8 min
Views18K


Привет, Хабр. Меня зовут Антон Титов, CTO компании Spiral Scout. Сегодня я хотел бы рассказать вам про нашего PHP-слона. А точнее про вторую версию опен-сорсного full-stack PHP/Go фреймворка — Spiral.

Spiral — это компонентный full-stack фреймворк, разрабатываемый нашей компанией более одиннадцати лет и обслуживающий под сотню реальных проектов. Программный пакет основан на множестве открытых и собственных библиотек, включая RoadRunner и Cycle ORM.

Фреймворк совместим с большинством PSR рекомендаций, поддерживает MVC и работает в 5-10 раз быстрее Laravel/Symfony.

Если вы никогда не слышали о Spiral и гадаете, что такое PHP/Go фреймворк и куда делась первая версия — добро пожаловать под кат.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments61

5 способов деплоя PHP-кода в условиях хайлоада

Reading time14 min
Views21K
Если бы хайлоад преподавали в школе, в учебнике по этому предмету была бы такая задача. «У соцсети N есть 2 000 серверов, на которых 150 000 файлов объемом по 900 Мб PHP-кода и стейджинг-кластер на 50 машин. На серверы код деплоится 2 раза в день, на стейджинг-кластере код обновляется раз в несколько минут, а еще дополнительно есть „хотфиксы“ — небольшие наборы файлов, которые выкладываются вне очереди на все или на выделенную часть серверов, не дожидаясь полной выкладки. Вопрос: считаются ли такие условия хайлоадом и как в них деплоить? Напишите не менее 5 вариантов деплоя». Про задачник по хайлоаду можем только мечтать, но уже сейчас мы знаем, что Юрий Насретдинов (youROCK) точно бы решил эту задачу и получил «пятерку».


На простом решении Юрий не остановился, а дополнительно провел доклад, в котором раскрыл тему понятия «деплой кода», рассказал про классические и альтернативные решения масштабного деплоя кода на PHP, проанализировал их производительность и презентовал самописную систему деплоя MDK.
Total votes 48: ↑44 and ↓4+40
Comments19

Современная Android разработка на Kotlin. Часть 1

Reading time15 min
Views106K
Данная статья является перевом статьи от Mladen Rakonjac

Очень сложно найти один проект, который охватывал бы всё новое в разработке под Android в Android Studio 3.0, поэтому я решил написать его. В этой статье мы разберём следующее:



  1. Android Studio 3
  2. Язык программирования Kotlin
  3. Варианты сборки
  4. ConstraintLayout
  5. Библиотека привязки данных Data Binding
  6. Архитектура MVVM + паттерн repository (с mapper'ами) + Android Manager Wrappers
  7. RxJava2 и как это помогает нам в архитектуре
  8. Dagger 2.11, что такое внедрение зависимости, почему вы должны использовать это.
  9. Retrofit (Rx Java2)
  10. Room (Rx Java2)

Каким будет наше приложение?


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

Я попытаюсь объяснить как можно больше строк кода. Вы всегда можете посмотреть код, который я опубликовал на GitHub.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments7

7+ превосходных инструментов для оптимизации изображений

Reading time5 min
Views105K
Перевод статьи 8 Excellent Tools for Optimizing Your Images
К сожалению на момент перевода один из сервисов перестал работать. Но хабровчане предложили еще много хороших решений!

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

Есть несколько бесплатных инструментов помогающих уменьшить и оптимизировать изображения. В этой статье вы найдете удобные инструменты для создания картинок для веба настолько маленьких по весу, насколько это возможно.
Обзор инструментов — под катом.
Читать дальше →
Total votes 86: ↑78 and ↓8+70
Comments72

Стрелочные LED-часы для обучения пайке SMD компонентов

Reading time4 min
Views25K
Последний год в нашем хакспейсе параллельно развиваются несколько проектов, которые время от времени порождают на этот свет новые железки, прежде всего, образовательного характера.

В этой статье я расскажу об одной такой интересной штуковине, которую мы сделали некоторое время назад. Это набор для обучения SMD пайке — LED часы. Под катом подробное описание набора, причины появления, и видеоурок по SMD пайке!

image
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments134

Анонс Dart 2.0: Оптимизированный для клиентской разработки

Reading time5 min
Views19K
Сегодня мы анонсируем Dart 2, перезагрузку языка, которая более полно отражает наше видение Dart как уникально оптимизированного языка для клиентской разработки на Web и мобильных платформах.

Dash - официальный маскот языка
Dash — официальный маскот языка
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments27

Стеклянный коврик для мыши своими руками

Reading time5 min
Views45K


Стеклянный коврик для мыши обладает следующими достоинствами:

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

Есть и недостатки:

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

Чтобы стекло стало ковриком для мыши, т.е. чтобы сенсор мог считывать изображение поверхности, необходимо эту поверхность сделать матовой. Матирование стекла можно сделать тремя основными способами — химическим, пескоструйным и механическим с помощью абразивов.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments208

ZX Spectrum 128k своими руками

Reading time5 min
Views106K
image

«8 лет я играл в Спектрум в черно-белом цвете и все знаете почему, да потому что наши доблестные телики RGB сигнал вообще не понимали». Хотел бы сказать я, понастольгировать, вспомнить что раньше солнце было ярче а трава зеленее. Но не скажу, в моем детстве слово Спектрум вообще никто никогда не произносил. Все свое детство я играл в денди, позже в сегу, у друзей иногда в супернинтендо. Ни в передаче Денди «Новая Реальность», ни в «От винта», ни в каком либо журнале я не слышал об этом компьютере. Я краем уха слышал о компьютерах, загружающихся с кассет, но никогда их не видел и не знал их названия. Впервые я о нем узнал только когда у меня появился интернет. Почитывал форумы, завидовал тем людям которые в конце 80х начале 90х собирали сами свои компьютеры, а я годноту пропустил. Хотя в те годы я был маленький и при всем желании свой клон спектрума бы не собрал. Много ли я потерял? Вот этот вопрос я не так давно себе стал задавать. Год назад наткнулся на очень хороший видосик где один парень очень подробно рассказал и показал как спаять клон спектрума «Ленинград». Его я пересматривал не раз и в итоге решил «Я соберу свой компьютер с нуля!».
Читать дальше →
Total votes 91: ↑90 and ↓1+89
Comments294

Многозадачная Ардуина: таймеры без боли

Reading time7 min
Views116K
Не каждый ардуинщик знает о том, что помимо стартового кода в setup и бесконечного цикла в loop, в прошивку робота можно добавлять такие кусочки кода, которые будут останавливать ход основного цикла в строго определенное заранее запланированное время, выполнять свои дела, затем аккуратно передавать управление в основную программу так, что она вообще ничего не заметит. Такая возможность обеспечена механизмом прерываний по таймеру (обычное дело для любого микроконтроллера), с её помощью в прошивку можно вносить элементы реального времени и многозадачности.

Еще меньше используют такую возможность на практике, т.к. в стандартном не слишком богатом API Arduino она не предусмотрена. И, хотя, доступ ко всем богатствам внутренних возможностей микроконтроллера лежит на расстоянии вытянутой руки через подключение одного-двух системных заголовочных файлов, не каждый пожелает добавить в свой аккуратный маленький скетч пару-тройку экранов довольно специфического настроечного кода (попутно потеряв с ним остатки переносимости между разными платами). Совсем единицы (тем более, среди аудитории Ардуино) решатся и смогут в нем разобраться.

Сегодня я избавлю вас от страданий.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments24

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

Reading time14 min
Views66K

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


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


Введение в Dependency Injection


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

Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments19

Установка ArchLinux ARM рядом с Android без chroot

Reading time4 min
Views35K
Я испробовал множество средств для установки Linux на свое Android устройство, но все они или не работали вовсе, или были слишком глючные. К счастью я использую на ПК ArchLinux и узнав о проекте ArchLinux ARM решил попробовать его в деле. И не просто установить в chroot, а заставить его работать и без него.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments21

ЧПУ (SEF URLs) в Symfony 3 — автогенерация slug, настройка и маршрутизация

Reading time10 min
Views11K
Всем доброго времени суток!

Третьего дня мне понадобилось провести блиц вебинар на тему ЧПУ в Symfony. Вообще время вебинара у меня ограничено двумя часами, при этом я должен был рассказать еще и про автогенерацию CRUD функционала (scaffolding) в той же Symfony, и про простейший способ создать постраничность. Это создало проблему, так как я знаю как сделать ЧПУ «ручками», не прибегая к автоматизированным под эту задачу инструментам, но рассказ получился бы долгий и оказались бы затянутыми в обсуждение лишние темы. Поэтому я пошел спрашивать у Интернета как сделать все проще. И вот я оказался в той редкой ситуации, когда такая популярная платформа как Symfony не имеет банального обучающего материала на тему «ЧПУ в три клика». Смотрел так же и на английском языке, но там тоже пусто (может плохо искал — время было ограничено). В общем я справился с поиском разрозненного материала по данной теме, а так же со сбором его в единое повествование, так что почему бы не поделиться со всеми?


Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments19

Пошёл обратный отсчёт: до ICO «Полибиуса» осталось 7 дней

Reading time1 min
Views11K
Уже несколько месяцев подряд мы рассказываем в нашем блоге о разработке проекта финансовой организации «Полибиус»: универсального банка с эстонско-швейцарскими корнями, работающего на блокчейне и ИИ. И каждый наш пост мы заканчивали обещанием озвучить дату, когда наш проект выйдет на краудфандинг. Момент настал: ICO-кампания банка «Полибиус» стартует уже через 7 дней, 31 мая.



ICO «Полибиуса» будет проходить в виде распродажи дивиденд-токенов «Полибиус»: смарт-контрактов, гарантирующих долю в прибыли банка. Токены будут продаваться по $10, но в течение первого дня токены «Полибиус» будут продаваться с бонусом 25%, поэтому есть смысл зайти на polybius.io уже 31 мая.
Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments36

Иерархия исключений в современном PHP-приложении

Reading time4 min
Views11K

Задача публикации: доступно изложить способ организации иерархии исключений и их обработки в приложении. Без привязки к фреймворкам и конкретной архитектуре. Описываемый способ является де-факто стандартом в сообществе: он используется во многих серьёзных библиотеках и фреймворках. В том числе Zend, Symfony. Не смотря на его логичность и универсальность, формального описания предлагаемого подхода на русском языке я не нашёл. После неоднократного устного изложения концепции коллегам, родилась мысль оформить её в виде публикации на Хабрахабр.


В языке PHP, начиная с 5-ой версии, доступен механизм исключений. В актуальной, 7-ой, версии этот механизм был улучшен и переработан с целью единнобразной обработки разных ошибок при помощи конструкции try{} catch...


В стандартной библиотеке (SPL) PHP предоставляет готовый набор базовых классов и интерфейсов для исключений. В 7-ой версии этот набор был расширен интерфейсом Throwable. Вот диаграмма всех имеющихся в версии 7 типов (изображение — ссылка):


Диаграмма типов исключения в PHP7

Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments25

Information

Rating
Does not participate
Location
Тверь, Тверская обл., Россия
Date of birth
Registered
Activity