Pull to refresh
0
0

User

Send message

Мапы в Go: уровень Pro

Reading time16 min
Views21K

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

Читать далее
Total votes 19: ↑17 and ↓2+15
Comments10

Yii Validator — простой и мощный

Level of difficultyEasy
Reading time14 min
Views6.5K

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

Путь валидатора в Yii3 к релизу был долог. После множества мозговых штурмов, жарких обсуждений, а также нескольких глобальных рефакторингов (были даже публичные с Валентином Удальцовым и Леонидом Корсаковым), наконец, 22 февраля 2023 года состоялся релиз пакета Yii Validator.

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

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments15

Курс по изучению Kotlin и Android Studio с нуля до Junior. #1 Введение. Установка Android Studio

Level of difficultyEasy
Reading time4 min
Views17K

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

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

Читать далее
Total votes 15: ↑10 and ↓5+5
Comments11

Telegram WebApps. Как встроить веб-приложения в чат-бота?

Reading time5 min
Views80K

Относительно недавно команда Telegram выпустила обновление, с которым появилась возможность встраивать в мессенджер веб-приложения. Эта статья — обзор основных моментов внедрения веб-приложениий в телеграм-ботов.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments9

Мне не нравится то, во что превращается PHP

Reading time5 min
Views54K


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

Отвечу сразу, чтобы не было недомолвок:

  • Я профессионально программирую на PHP с 2004 года, то есть вот уже 16 лет на момент написания этой статьи, и продолжаю это делать каждый день
  • Я преподаю программирование, в том числе и на PHP, примерно 10 лет и за это время выпустил в свет несколько тысяч студентов
  • Я всегда был в восторге от каждой новой версии PHP, что выходила со времен от 5.0 до 7.4 и всегда был адептом подхода «пишем на самой свежей версии, тестируем на следующей»

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

Почти каждый принятый в PHP 8 RFC вызывает во мне боль и недоумение. И я готов объяснить и защитить свою позицию.
давайте разберемся вместе
Total votes 225: ↑198 and ↓27+171
Comments386

Анатомия каналов в Go

Reading time34 min
Views158K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Anatomy of Channels in Go" автора Uday Hiwarale.


Что такое каналы?


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


Создание канала


Go для создания канала предоставляет ключевое слово chan. Канал может передавать данные только одного типа, данные других типов через это канал передавать невозможно.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments7

Чем различаются Kafka и RabbitMQ: простыми словами

Reading time8 min
Views75K

Программные брокеры сообщения уже стали стандартом при построении больших и сложных систем. Однако до сих пор не все ИТ-специалисты понимают, как работают эти инструменты. Главный системный аналитик «Иннотех» Павел Малыгин помогает разобраться в брокерах сообщениях и их работе.

Читать далее
Total votes 61: ↑58 and ↓3+55
Comments33

Настройка Kafka для работы в режиме подтверждения о принятии сообщения (ack/nack)

Reading time3 min
Views14K

На новом проекте, на котором я работаю в качестве PHP Tech Lead. Команда столкнулась с вопросом наведения порядков, один из которых - унификация:

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

10 советов схемотехнику

Reading time20 min
Views115K
Недавно один мой знакомый, начавший интересоваться электроникой и схемотехникой, обратился ко мне с просьбой дать ему какие-то практические советы по разработке электронных устройств. Поначалу этот вопрос немного озадачил меня: как-то так получилось, что для себя я никогда не выделял какие-то перечни обязательных правил проектирования, всё это было у меня где-то на уровне подсознания. Но этот вопрос послужил хорошим толчком для того, чтобы сесть и сформулировать хотя бы небольшой список таких рекомендаций. Когда все было готово, я подумал, что, возможно, это будет интересно почитать кому-то еще, таким образом и получилась данная статья.


Читать дальше →
Total votes 212: ↑210 and ↓2+208
Comments244

Производительность I/O бэкэнда: Node vs. PHP vs. Java vs. Go

Reading time14 min
Views103K

image


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


Как и в большинстве других ситуаций с несколькими возможными решениями, дело не в том, какой из вариантов лучше, дело в понимании компромиссов. В этой статье мы сравним Node, Java, Go и PHP из-под Apache, обсудим модели ввода/вывода в разных языках, рассмотрим достоинства и недостатки каждой модели и прогоним простенькие бенчмарки. Если вас волнует производительность ввода/вывода вашего следующего веб-приложения, то эта статья для вас.

Читать дальше →
Total votes 106: ↑73 and ↓33+40
Comments160

7 способов отобразить видео с RTSP IP-камеры на веб-странице и 2 в мобильном приложении

Reading time5 min
Views173K
В этой статье покажем 7 технологически разных способов отображения видеопотока с IP-камеры с поддержкой RTSP на web-странице браузера.

Браузеры, как правило, не поддерживают RTSP, поэтому поток будет конвертироваться для браузера через промежуточный сервер.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments4

Построение гибких PHP приложений

Reading time8 min
Views32K
Эра фулстэк фрэймворков в прошлом. Современные разработчики фрэймворков разделяют свои монолитные репозитории на компоненты с помощью ответвлений в Git, позволяя разработчику выбрать то, что действительно необходимо его проекту. Это означает, что вы можете построить свое приложение на топовых Zend Service Manager, Aura Router, Doctrine ORM, Laravel (Illuminate) Eloquent, Plates, Monolog, Symfony Cache или любых других компонентах, которые можно установить через Composer.

image
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments23

Чат-бот для ВКонтакте на Python на Callback API

Reading time10 min
Views122K
Чат-боты стали уже очень распространенным явлением, и появляются во всех мессенджерах ежедневно.

В этой статье по шагам разберем создание бота с набором простых команд и узнаем, как в дальнейшем можно расширить его функционал. Статья будет полезна для самых новичков, которые никогда не пробовали создавать чат-ботов.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments10

Вход на сайт при помощи Telegram

Reading time4 min
Views45K
На сегодняшний день в интернете практически все сайты используют древнюю и проверенную временем схему регистрации/авторизации по email. Такая схема всегда отлично работала и продолжает работать по сей день, но она делает пользователя интернета зависимым от почтовых сервисов, и на мой взгляд, имеет ряд недостатков.
Читать дальше →
Total votes 57: ↑49 and ↓8+41
Comments92

Lightshot клиент для Ubuntu Linux (и не только)

Reading time2 min
Views54K
Давольно-таки давно пользуюсь сервисом для создания скриншотов Lightshot.

Что раздражало, так это то, что у них небыло клиента под Linux (а на работе я сижу под Ubuntu Linux, да и на части компов дома у меня тоже стоит Ubuntu Linux). А ставить wine меня не разу не улыбало.

Всех страждущих — прошу под кат.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments26

What the flask?

Reading time4 min
Views54K

kdpv
Вообще-то, это картинка от wtforms, но у меня гимп почему-то не запускается.


Эту статью я пишу в баре. Очень хочется похоливарить, но бармен на меня смотрит круглыми глазами, а кальянщик просто улыбается и мотает головой.


Однажды, меня спросили: что плохого во flask? Тогда меня полностью устраивал этот милый фреймворк. Поработав с ним какое-то время, я написал все, что думаю, в рабочий слак, на что мне ответили: "Мурад, будь добрее". Вообще, я добрый и пушистый, но wtf?!

Читать дальше →
Total votes 51: ↑39 and ↓12+27
Comments66

Простые стейт-машины на службе у разработчика

Reading time8 min
Views183K
Представьте на минутку обычного программиста. Допустим, его зовут Вася и ему нужно сделать анимированную менюшку на сайт/десктоп приложение/мобильный апп. Знаете, которые выезжают сверху вниз, как меню у окна Windows или меню с яблочком у OS X. Вот такое.

Начинает он с одного выпадающего окошка, тестирует анимацию, выставляет ease out 100% и наслаждается полученным результатом. Но вскоре он понимает, что для того, чтобы управлять менюшкой, хорошо бы знать закрыто оно сейчас или нет. Мы-то с вами тут программисты опытные, все понимаем, что нужно добавить флаг. Не вопрос, флаг есть.

var opened = false;

Вроде, работает. Но, если быстро кликать по кнопке, меню начинает моргать, открываясь и закрываясь не успев доанимироваться в конечное состояние. Вася добавляет флаг animating. Теперь код у нас такой:

var opened = false;
var animating = false;

function onClick(event) {
  if (animating) return;
  if (opened) close();
  else open();
}

Через какое-то время Васе говорят, что меню может быть полностью выключено и неактивно. Не вопрос! Мы-то с вами тут программисты опытные, все понимаем, что… нужно добавить ЕЩЕ ОДИН ФЛАГ! И, всего-то через пару дней разработки, код меню уже пестрит двустрочными IF-ами типа вот такого:

if (enabled && opened && !animating && !selected && finishedTransition && !endOfTheWorld && ...) { ... }

Вася начинает задаваться вопросами: как вообще может быть, что animating == true и enabled == false; почему у него время от времени все глючит; как тут вообще поймешь в каком состоянии находится меню. Ага! Состояния... О них дальше и пойдет речь.

Знакомьтесь, это Вася.


Читать дальше →
Total votes 114: ↑92 and ↓22+70
Comments96

Игра HellWorm. История разработки

Reading time5 min
Views18K
Доброго времени суток! Я хотел бы рассказать про свой опыт создания мобильной игры на Unity под названием HellWorm. Из названия можно понять, что игра про червяка. Ползаем, кушаем монетки, не врезаемся в препятствия. Казалось бы, клон классической игры, на которой большинство из нас выросло. Но, на самом деле, параллель со змейкой на этом заканчивается.


Игра же позиционирует себя как бесконечный раннер, в котором идет постоянное движение вперед, без возможности свернуть с вертикального маршрута. А сам червь, при всем при этом, может как угодно извиваться (да-да, и даже проползать через себя). Вследствие чего, хотелось бы заострить внимание на трудностях, которые я испытал пытаясь реализовать движение столь незамысловатого персонажа.
Читать дальше →
Total votes 40: ↑34 and ↓6+28
Comments22

Малоизвестные Git-команды

Reading time4 min
Views73K


У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.
Читать дальше →
Total votes 188: ↑162 and ↓26+136
Comments43

8 JavaScript библиотек для визуализации данных в виде интерактивных карт

Reading time7 min
Views43K
Визуализация данных стала неотъемлемой частью жизни практически каждого веб-разработчика. Если построение графиков, диаграмм, карт и дашбордов до сих пор никогда не были вашей головной болью, просто немного подождите: наверняка и вы скоро вступите в наш «клуб».

Данная статья дает общее, но вовлеченное представление о восьми самых интересных, на мой взгляд, JavaScript-библиотеках для построения интерактивных геовизуализаций. В целом, таких решений сейчас много, и выбрать оптимальное под тот или иной конкретный проект – задача порой непростая как минимум по времени. Этой публикацией я попытаюсь хотя бы немного упростить жизнь тем, кто только начинает разбираться в данной теме. Кстати, это слегка модифицированный перевод моей недавней статьи на Onextrapixel (оригинал на английском).

Заглавная картинка: визуализация данных с помощью интерактивных карт
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments14
1
23 ...

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity