All streams
Search
Write a publication
Pull to refresh
41
0
Andrey Helldar @Helldar

Senior PHP Developer

Send message

Заметки о codestyle

Reading time3 min
Views3.5K

Довольно часто сталкиваюсь с одним вопросом касательно кода: "Почему написано именно так, а не так?". И я объясняю чем это обусловлено, после чего слушаю мнение оппонента, вследствие чего принимаю решение либо продолжать следовать своим установкам, либо менять на более лучший вариант.

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

Читать далее

Распространенные ошибки безопасности в приложениях Laravel

Reading time14 min
Views20K

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

CyberPanda Team

Читать далее

Mikrotik: Ограничение скорости скачивания для определенных IP-адресов

Reading time4 min
Views45K
Предыстория: имеем Интернет-соединение со скоростью «до 50 Мбит/с», имеющее «фичу» разгоняться до 100 если канал свободен. Пользуясь облачным хранилищем заметил проблему, что выгрузив или загрузив около 50-100 файлов клиент для работы с облаком «зависает» и либо качает файлы на крайне низкой скорости (порядка 50-200 Кбит/с), либо вообще «молчит». При этом, сайты в браузере открываются без всяких проблем.

Как такое может быть? Ограничение ширины канала по определенным IP-адресам при скачке за определенный промежуток времени.

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

Псевдонимы (алиасы) bash для Laravel

Reading time8 min
Views19K
image

Bash-алиасы («псевдонимы») — это ярлыки к файлам, позволяющие ссылаться на другую команду через более запоминающиеся слова, сокращения или символы. Например, если вы используете Git, вы можете запускать git-статус много раз в течение дня, поэтому, чтобы сэкономить время и количество нажатий клавиш, вы можете присвоить ему алиас, который вызовет правильную команду.
Читать дальше →

Первые впечатления о Laravel API Resources

Reading time3 min
Views23K
image

Прошлой ночью Taylor Otwell наконец представил что может стать началом замены Fractal при разработке API на фреймворке Laravel 5.5. Это моя пробная версия статьи, поехали.
Читать дальше →

Laravel 5.3: Подготовка к разработке (для новичков)

Reading time11 min
Views123K
Приветствую тебя, Хабра-сообщество и новички в мире Laravel!

Данная статья написана для новичков в сфере Лары и призвана помочь им в начальной стадии освоения фреймворка.

В статье будут рассмотрены, так сказать, «базовые» пакеты, без которых лично мне трудно работать над каким-либо проектом.

Итак, если Вам интересна тема, прошу под кат.

Laravel 5.3

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

Вышел релиз Laravel 5.3

Reading time4 min
Views20K
Команда Laravel с гордостью объявляет о релизе Laravel 5.3, доступной для всех. Новые возможности версии 5.3 направлены на улучшение скорости разработчика за счет добавления и улучшения функций «из коробки».

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

Ниже краткий обзор некоторых основных моментов новой 5.3 версии.

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

jQuery 3.0 Final Released

Reading time9 min
Views57K
9 июня 2016 года состоялся официальный релиз jQuery 3.0, которая была в разработке с октября 2014 года. Нашей целью было создание более легкой и быстрой версии jQuery (конечно, с обратной совместимостью). Мы удалили все старые костыли для IE и использовали некоторое более современное веб API там, где это необходимо. jQuery 3.0 является продолжением ветки 2.x, но с некоторыми изменениями, которые давно хотели внести. Такие ветки как 1.12 и 2.2 будут получать критические патчи в течение некоторого времени, но ожидать новый функционал в них не стоит. jQuery 3.0 — это будущее jQuery. Если вдруг Вам нужна поддержка IE 6-8, Вы можете продолжать использовать релиз версии 1.12.

image
Подробнее

Зомбикод: когда поддержка не нужна

Reading time5 min
Views119
image

Вы молод, ловок, быстр, и можете кодить словно ветер. Но вы пишете настолько простой поддерживаемый код, что любой его может изменить?

Да, говорите? Зачем?

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

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

Универсальный скрипт переключения 2-х каналов интернета Mikrotik

Reading time8 min
Views69K
Около 2,5 лет назад писал статью на тему автоматического переключения канала Интернет на резервный. Скрипт, конечно, и по сей день работает «на отлично», но его внешний вид и некоторые нюансы…

Итак, встала задача улучшить скрипт, максимально устранив побочные эффекты. Что ж, приступим.

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

Число прописью в Laravel 5

Reading time1 min
Views5.6K
Иногда необходимо вывести число прописью при формировании какой-либо формы и нам приходит на помощь модуль DigitText, разработанный специально для фреймворка Laravel.

Он позволяет обрабатывать любое число на любом языке

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

Создание беспарольной аутентификации в Laravel, используя только email

Reading time6 min
Views17K
Недавно я работал над проектом, где одной из болевых точек был пароль пользователя. Администратор добавлял пользователей в приложение, поэтому они не имеют пароля, а заставлять их придумывать пароль при первом после регистрации входе было крайне неудобно.

Итак, мы решили попробовать метод беспарольного входа. Если Вы никогда не имели возможности работать с этим, мы расскажем как это работает:

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

Начнем творить!

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

Предварительный просмотр отправляемого email из Laravel

Reading time2 min
Views5.5K
Как написал Саид в своем канале Твиттера:


«Мой новый пакет для @laravelphp конвертирует отправляемые Вами письма в .html для проверки корректности на стадии разработки.»

Этот пакет представляет новый драйвер для предварительного просмотра почты в Laravel. При необходимости, он будет производить вывод отправленных сообщений электронной почты, сохранив его как HTML-документ, позволяя проверять его внешний вид.

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

Скрипт автоматического обновления DDNS для No-IP

Reading time4 min
Views40K
Прочитав множество руководств и примеров написания скрипта для работы Mikrotik с сервисом noip.com, так и не удалось найти готового решения.
Что не устраивало в других руководствах, например, здесь:
при написании необходимо прямо в тексте скрипта указывать имя интерфейса, с которого он будет получать внешний IP-адрес, а что если интерфейсов два, три или десять?
В моем случае имеется 2 канала: pppoe-client и ethernet без пароля, но с динамически получаемым адресом…
Читать дальше →

Полуавтоматическое инкрементирование версии проекта при работе с GIT в Visual Studio

Reading time5 min
Views21K
В Интернетах написано немало статей об инкрементировании версий своих приложений и каждый использует свой метод. У кого-то ревизии используются в качестве «билдов», у кого-то это количество секунд текущих суток (например, Microsoft), у кого-то что-то другое.

В моем проекте используются 4 определяющие версии.

Например, 1.2.34.56, где:
1 — Major version: Критические изменения проекта (введен новый функционал, в корне переработан существующий и пр.). Устанавливается вручную;
2 — Minor version: Изменение функциональных частей приложения, значительное улучшение кода и пр. Устанавливается вручную;
24 — Build: номер релиза, попадающего в общество. Назначается автоматически;
56 — Revision: номер ревизии, полученный с GIT. Назначается автоматически.

Я не буду рассматривать кто какими методами пользуется, поэтому напишу как достиг данного результата.

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

Mikrotik: автоматическое переключение канала на резервный и обратно

Reading time5 min
Views197K
Написать данный пост меня сподвигла ситуация с отключением одного из каналов Интернета.
В самом же Интернете ответов по данному вопросу много, но не каждый является рабочим.

Что я хотел сделать, если отключается основной канал Интернета:
1. Переключиться на резервный канал (после «появления», разумеется, вернуться на основной);
2. Отправить уведомление по email о факте изменения состояния.

Кому интересно, прошу под кат.
Читать дальше →

Узнаем пароль администратора в телефоне Grandstream GXP2124

Reading time2 min
Views33K
Сегодня столкнулся с проблемой: кто-то изменил пароль администратора к телефону. Почитав в сети информацию, сделал вывод, чтобы:

  • Изменить пароль администратора, нужен пароль администратора;
  • Сбросить телефон в заводские настройки, нужен пароль администратора;
  • Перепрошить телефон — вновь нужен тот отсутствующий пароль...

Как же найти выход из сложившейся ситуации? Да легко!
Для «узнавания» пароля мной был использован самый обычный браузер Google Chrome с установленным компонентов Furebug, плюс, другой телефон Grandstream GXP2124, доступ к которому у меня есть.

image
Дальше ход действий был следующий:
Узнать пароль администратора Grandstream GXP2124...

Асинхронное обновление программы на C#

Reading time10 min
Views20K
Доброго времени суток, друзья!

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

image

В работе моя программа использует следующие файлы, находящиеся в той же папке, что и исполняемый файл:
  • Ionic.Zip.dll — реализация архивирования файлов дебага;
  • LanguagePack.dll — собственная библиотека, содержащая перевод названия элементов формы на нужный язык;
  • Newtonsoft.Json.dll — JSON-библиотека;
  • ProcessesLibrary.dll — своя библиотека, содержащая список процессов;
  • restart.exe — утилита перезапуска основного приложения;
  • updater.exe — утилита обновления основного приложения
  • settings.xml — файл настроек.

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
From 350,000 ₽
PHP
MySQL
Git
OOP
Docker
Redis
SQL
Laravel
Elasticsearch