Search
Write a publication
Pull to refresh
41
0

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

Send message

Пишем простого чат-бота для Telegram на PHP

Reading time8 min
Views237K
Шукюров Заур, разработчик @KinomanBot и @GaidarForum_bot, написал руководство по созданию простого чат-бота на PHP.

24 июня 2015 года разработчики Telegram открыли платформу для создания ботов (программ, которые выполняют определенные действия по заданному алгоритму).

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


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

Понимание джойнов сломано. Это точно не пересечение кругов, честно

Reading time4 min
Views379K

Так получилось, что я провожу довольно много собеседований на должность веб-программиста. Один из обязательных вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN.


Чаще всего ответ примерно такой: "inner join — это как бы пересечение множеств, т.е. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Для всех остальных строк добавляется null". Еще, бывает, рисуют пересекающиеся круги.


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


Дело в том, что этот ответ в общем случае неверен. Ну или, как минимум, не точен.

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

Потоки, блокировки и условные переменные в C++11 [Часть 1]

Reading time8 min
Views457K
В первой части этой статьи основное внимание будет уделено потокам и блокировкам в С++11, условные переменные во всей своей красе будут подробно рассмотрены во второй части
Читать дальше →

Популярные вопросы на собеседовании по C++ и ответы на них

Reading time9 min
Views352K
Здравствуйте!

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

О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
Читать дальше →

Базовые задачи на Promise в JavaScript

Reading time4 min
Views30K

Promise - специальный объект, который хранит своё состояние и используется для обработки результатов асинхронных операций.

Что будет в статье: основные задачи на Promsie, которые часто спрашивают на собеседованиях.

Читать далее

Резервное копирование Kubernetes: два практических подхода. Часть 1. Kasten

Reading time7 min
Views9.2K

У многих сочетание понятий «контейнеры» и «резервное копирование» вызывает недоумение. Зачем бэкапить те сущности, которые были созданы специально для быстрого развертывания и уничтожения? Однако в мире ИТ больших компаний такая «странность» необходима. Расскажем о ситуациях, когда резервные копии оказываются полезны, и подробно разберем бэкап двумя способами: с помощью Kasten — решения, установленного внутри кластера Kubernetes, — и внешнего CommVault. Но чтобы не cмешивать всё в одном посте, начнем с Kasten. Поехали!

Читать далее

Обзор Kalm — веб-интерфейса для деплоя приложений и управления ими в Kubernetes

Reading time9 min
Views9K

Kalm — бесплатное приложение с открытым исходным кодом. Представляет собой стандартный контроллер Kubernetes, который можно установить в любой кластер (версии v1.15 и выше), включая Amazon EKS и Google GKE. Основная цель Kalm — предоставить разработчикам простой пользовательский интерфейс, чтобы упростить работу с K8s.

Читать далее

Будущее DevOps: Основные тренды и прогнозы на 2021

Reading time5 min
Views6.4K

image


p.s: хоть и с опозданием..2021 почти подошел к концу уже


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


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


Вот примеры некоторых новых тенденций DevOps 2021, которые, вполне возможно, повлияют на бизнес ландшафт и изменят его в будущем:

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

Рутина и ноотропы: как удвоить личную эффективность, если работы по горло

Reading time10 min
Views37K

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

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

Читать далее

Миграция PostgreSQL в Kubernetes

Reading time7 min
Views6.4K

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

Миграция баз данных всегда сопряжена с рисками и простоями для бизнеса. Сегодня я продемонстрирую, насколько легко можно перенести базу данных PostgreSQL в Kubernetes с минимальными простоями. В этом мне поможет дистрибутив Percona для PostgreSQL Operator.

Читать далее

О чем думать на NALSD собеседовании

Reading time6 min
Views13K
Я описывал ранее типичное кодинг-интервью. Помимо кодинга почти всегда есть вопрос на проектирование систем. (Large) System Design. В случае собеседований на SRE, это еще более интересный (как по мне) зверь — NALSD. Non-abstract large system design. Главное отличие между SWE и SRE именно в этих буковках “NA”.

В чем же отличие, и как подготовиться к нему? Давайте разберём на примере. В качестве примера возьмём что-то весьма материальное, что-то такое, что точно никто никогда не спросит на реальном собеседовании (в гугл) :)

Например — давайте спроектируем библиотеку. Для бумажных книг, обычную такую. Весь текст ниже был написан в один присест за примерно час, чтобы примерно показать что можно успеть, и что важно успеть. Так что уж простите за сумбурность, но я так мыслю (а значит, так существую).
Читать дальше →

PHP 8 — Что нового?

Reading time19 min
Views142K

PHP, начиная с 7 версии, кардинально изменился. Код стал куда быстрее и надёжнее, и писать его стало намного приятнее. Но вот, уже релиз 8 версии! Ноябрь 26, 2020 — примерно на год раньше, чем обещали сами разработчики. И всё же, не смотря на это, мажорная версия получилась особенно удачной. В этой статье я попытаюсь выложить основные приятные изменения, которые мы должны знать.


1. JIT


Как говорят сами разработчики, они выжали максимум производительности в 7 версии (тем самым сделав PHP наиболее шустрым среди динамических ЯПов). Для дальнейшего ускорения, без JIT-компилятора не обойтись. Справедливости ради, стоит сказать, что для веб-приложений использование JIT не сильно улучшает скорость обработки запросов (в некоторых случаях скорость будет даже меньше, чем без него). А вот, где нужно выполнять много математических операций — там прирост скорости очень даже значительный. Например, теперь можно делать такие безумные вещи, как ИИ на PHP.
Включить JIT можно в настройках opcache в файле php.ini.
Подробнее 1 | Подробнее 2 | Подробнее 3


2. Аннотации/Атрибуты (Attributes)


Все мы помним, как раньше на Symfony код писался на языке комментариев. Очень радует, что такое теперь прекратится, и можно будет использовать подсказки любимой IDE, функция "Find usages", и даже рефакторинг!


Забавно, что символ # также можно было использовать для создания комментариев. Так что ничего не меняется в этом мире.
Читать дальше →

QtCreator: Qt кросс-компиляция из linux 64 в linux 32, win32, win64 и Mac OS X; upx, usb, dmg, etc

Reading time14 min
Views83K


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

Работа с COM портом в web-проекте

Reading time4 min
Views52K

Пролог


Один из клиентов нашего web-проекта захотел использовать для поиска заказов в системе сканер штрихкодов. Но, к сожалению, полностью отказался от идеи работы с ними в режиме имитации клавиатуры — только эмуляция COM-порта.
Вариантов решения было не особенно много:
  • отдельное нативное приложение, которое бы отправляло запрос на наш сервер, а сервер бы отдавал команду в браузер
  • работа с COM портом непосредственно из браузера

К счастью, есть способ решения проблемы вторым путём.

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

О строковом форматировании в современном C++

Reading time9 min
Views156K

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

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

6 лучших практик React в 2021 году

Reading time8 min
Views7.4K

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

В этой статье рассматриваются шесть лучших практик React 2021 года, чтобы улучшить свой код. Речь пойдет о следующих пунктах:

Читать далее

Экскурсия в подвал

Reading time5 min
Views7.3K
Математика суть красота, зеркало мысли человека. Грядущие открытия невообразимо прекрасны. Но уже сейчас чтобы добраться до вершины наблюдения известных красот нужно потратить много усилий, и при этом может не получиться. А если получится, то беда придёт с другой стороны — новые вопросы будут подвергать сомнению любые прежние договорённости, не стесняясь. Станет ясно, что по этим обширным загадочным местам бродить — не перебродить. Предлагаю, наоборот, посетить подвал математики — куда любителю красоты вход заказан. Причина проста: там всё очевидно, слишком очевидно.



Тот, кто послал тебя туда, не был к тебе добр. (Этот абзац — лирическое отступление)

Число, множество, аксиома — всё это базовые, простейшие понятия математики. А из подвала математики это всё выглядит сложными, сложноустроенными конструкциями. С одной стороны, может возникнуть впечатление, что это от искусственного переусложнения. С другой стороны, знать, что существуют вещи ещё более простые, и как именно они существуют, знать о более глубоком фундаменте, очень полезно. Природа не боится пользоваться этим уровнем, и человеку не стоит бояться.

При входе в подвал можно сразу обратить внимание на скучный пол. Это — понятие «равенство». Оно говорит всего лишь о разделении двух уровней: уровня объектов и уровня их имён. Об одном объекте можно говорить как о двух, ведь сами имена различаются. Объект один, а на словах два — прям достижение. Кроме факта равенства или неравенства об объектах, соответствующих разным именам, ничего не вывести, чистая скука. Ну, для разнообразия можно ещё и не знать, как оно.

Под полом равенства лежит сплошной бетон абсолюта — объект всего один, и равен он себе или не равен — не важно.

Первое что лежит на полу и подпирает всё остальное это вполне себе нескучный предмет.
Читать дальше →

Как ускорить приложение за счёт PHP-FPM (няшим FPM conf)

Reading time4 min
Views27K

Привет. 

Сегодня хочу поговорить о том, как ускорить приложение через конфигурирование PHP-FPM.

Сейчас самый популярный (из тех с которыми я сталкивался) стек на котором поднимается PHP приложение это веб сервер nginx и процесс-менеджер php-fpm. 

Я хочу поднять простое приложение с Laravel проектом, которое устанавливается со всеми параметрами по умолчанию. Попробуем это приложение нагрузить пользователями с помощью простого Javascript скрипта и посмотрим как ему удастся справиться с нагрузкой и как мы можем повысить обрабатываемую нагрузку только конфигурированием php-fpm. В конце статьи можно будет найти ссылку на GitHub и попробовать своими руками.

Для начала посмотрим на стандартную конфигурацию php-fpm и попытаемся понять где могут быть проблемы в производительности с коробки.

Итак, у меня есть простое приложение на PHP с NGINX и PHP-FPM предустановленными в стандартных конфигурациях и маршрут Laravel.

Читать далее

Эволюция Docker. Часть 1

Reading time14 min
Views20K

20 марта 2013 года на конференции PyCon 2013, Соломон Хайкс (CEO компании dotCloud) выступил с пятиминутной презентацией The future of Linux Containers. В ней широкой общественности впервые была представлена внутренняя разработка компании dotCloud под названием Docker, а спустя несколько дней ее исходный код был выложен в открытый доступ. Хотя технологии LXC и Aufs, на которых была основана первая версия Docker существовали и активно использовались уже порядка пяти лет, но именно появление Docker послужило началом стремительного роста и эволюции систем контейнеризации, что кардинально преобразило многие процессы разработки и деплоймента программного обеспечения.

Этой статьей я собираюсь начать небольшой цикл посвященный изучению развития исходного кода Docker на протяжении нескольких лет. В первой части мы посмотрим на то, что представлял собой код на момент создания git репозитория датированного январем 2013 года. Тогда исходный код Docker (за исключением тестов) состоял всего из шести файлов общим объемом ~600 строк кода, написанных на языке Go. Это больше походило на библиотеку/api, функционал которой состоял лишь в создании, удалении, запуске и остановке контейнеров. Мы разберем принцип работы и даже сможем запустить с ее помощью подготовленный контейнер. 

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

Читать далее

Шпаргалка для разработчика: создаём безопасное веб-приложение

Reading time17 min
Views22K

Эта статья — своего рода ‘cheat sheet’ для веб-разработчика. Она даёт представление о «программе-минимум» для создания веб-приложения, защищённого от самых распространённых угроз.

Читать далее

Information

Rating
Does not participate
Registered
Activity