#вакансии
👨🏻💻 Senior PHP developer (Telecom)
REDSMS — компания, разрабатывающая сервис отправки сообщений через разные каналы, приглашает PHP разработчика
Что и как?
▪️ От 450 000 ₽
▪️ График 5/2
▪️ Опыт от 3 до 6 лет
▪️ Удалёнка (РФ) / Гибрид (Москва)
📩 Изучить вакансию
👨🏻💻 Senior PHP developer (Telecom)
REDSMS — компания, разрабатывающая сервис отправки сообщений через разные каналы, приглашает PHP разработчика
Что и как?
▪️ От 450 000 ₽
▪️ График 5/2
▪️ Опыт от 3 до 6 лет
▪️ Удалёнка (РФ) / Гибрид (Москва)
📩 Изучить вакансию
hh.ru
Вакансия Senior PHP developer (Telecom) в Москве, работа в компании РЕДСМС
Зарплата: от 450000 ₽ за месяц. Москва. Требуемый опыт: 3–6 лет. Полная. Дата публикации: 02.02.2025.
#ЧеКак
🤔 Какой командой можно отменить kmid?
Команда kmid (Kinematic Motion In-Dispenser) не является общепринятой командой или термином в большинстве систем. В зависимости от контекста, возможно, речь идёт о специфической команде или понятии, используемом в рамках определённой системы или программного обеспечения.
Если у вас есть более точное определение или контекст, связанный с kmid, это поможет дать более точный ответ.
🚩 Прерывание команд в Unix-подобных системах
🟠 Прерывание текущего процесса
Ctrl + C: Останавливает выполнение текущей команды в терминале.
🟠 Управление процессами
kill: Завершает процесс по его идентификатору (PID).
killall: Завершает все процессы с указанным именем.
🟠 Отмена последней команды
В оболочке
🚩 Пример использования команд в Unix-подобных системах
Чтобы узнать PID процесса, можно использовать команду
После нахождения PID процесса, его можно завершить
Чтобы завершить все процессы с именем
👉 Новости 👉 Платформа
Команда kmid (Kinematic Motion In-Dispenser) не является общепринятой командой или термином в большинстве систем. В зависимости от контекста, возможно, речь идёт о специфической команде или понятии, используемом в рамках определённой системы или программного обеспечения.
Если у вас есть более точное определение или контекст, связанный с kmid, это поможет дать более точный ответ.
Ctrl + C: Останавливает выполнение текущей команды в терминале.
kill: Завершает процесс по его идентификатору (PID).
kill <PID>
killall: Завершает все процессы с указанным именем.
killall <process_name>
В оболочке
bash
сочетание клавиш Ctrl + Z
приостанавливает текущий процесс и переводит его в фоновый режим. Если потребуется, можно использовать команду kill
для завершения этого процесса.Чтобы узнать PID процесса, можно использовать команду
ps
или pgrep
pgrep process_name
ps aux | grep process_name
После нахождения PID процесса, его можно завершить
kill 1234
Чтобы завершить все процессы с именем
example_process
killall example_process
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Что такое инкапсуляция?
Это принцип ООП, при котором детали реализации скрыты от внешнего мира, предоставляя доступ к данным через методы. В PHP это реализуется с помощью модификаторов доступа (private, protected, public). Она обеспечивает безопасность данных и облегчает поддержку кода.
👉 Новости 👉 Платформа
Это принцип ООП, при котором детали реализации скрыты от внешнего мира, предоставляя доступ к данным через методы. В PHP это реализуется с помощью модификаторов доступа (private, protected, public). Она обеспечивает безопасность данных и облегчает поддержку кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Что такое рекурсия?
Это метод программирования, при котором функция вызывает сама себя для решения подзадачи более сложной задачи. Рекурсия используется для решения задач, которые можно разбить на аналогичные подзадачи меньшего размера.
🚩 Основные аспекты рекурсии
🟠 Базовый случай (условие выхода)
Каждый рекурсивный алгоритм должен иметь базовый случай, который останавливает рекурсивные вызовы. Это условие, при котором дальнейшие рекурсивные вызовы не нужны.
🟠 Рекурсивный случай
Определяет, как задача разбивается на одну или несколько подзадач меньшего размера, и как результат этих подзадач комбинируется для получения решения исходной задачи.
🚩 Плюсы
➕ Простота и ясность
Рекурсивные решения могут быть проще и понятнее, чем их итеративные аналоги, особенно для задач, которые естественно определяются рекурсивно (например, обход деревьев, вычисление факториалов, задачи, связанные с последовательностями).➕ Элегантность
Код может быть более элегантным и легко читаемым.
🚩 Минусы
➖ Производительность
Рекурсивные решения могут быть менее эффективны по сравнению с итеративными из-за накладных расходов на вызовы функций. Это может привести к большему потреблению памяти и времени выполнения.
➖ Риск переполнения стека
При слишком глубокой рекурсии (например, при отсутствии базового случая или при слишком большом числе рекурсивных вызовов) может произойти переполнение стека, что приведет к сбою программы.
🚩 Оптимизация рекурсии
🟠 Мемоизация
Это техника оптимизации, при которой результаты дорогостоящих вызовов функций запоминаются и повторно используются при последующих вызовах с теми же аргументами. Пример:
🟠 Хвостовая рекурсия
Это особый вид рекурсии, при котором рекурсивный вызов является последней операцией в функции. Многие компиляторы и интерпретаторы могут оптимизировать хвостовую рекурсию, избегая увеличения стека вызовов. Пример:
👉 Новости 👉 Платформа
Это метод программирования, при котором функция вызывает сама себя для решения подзадачи более сложной задачи. Рекурсия используется для решения задач, которые можно разбить на аналогичные подзадачи меньшего размера.
Каждый рекурсивный алгоритм должен иметь базовый случай, который останавливает рекурсивные вызовы. Это условие, при котором дальнейшие рекурсивные вызовы не нужны.
Определяет, как задача разбивается на одну или несколько подзадач меньшего размера, и как результат этих подзадач комбинируется для получения решения исходной задачи.
def factorial(n):
if n == 0:
return 1 # Базовый случай
else:
return n * factorial(n-1) # Рекурсивный случай
print(factorial(5)) # Выведет 120
Рекурсивные решения могут быть проще и понятнее, чем их итеративные аналоги, особенно для задач, которые естественно определяются рекурсивно (например, обход деревьев, вычисление факториалов, задачи, связанные с последовательностями).
Код может быть более элегантным и легко читаемым.
Рекурсивные решения могут быть менее эффективны по сравнению с итеративными из-за накладных расходов на вызовы функций. Это может привести к большему потреблению памяти и времени выполнения.
При слишком глубокой рекурсии (например, при отсутствии базового случая или при слишком большом числе рекурсивных вызовов) может произойти переполнение стека, что приведет к сбою программы.
Это техника оптимизации, при которой результаты дорогостоящих вызовов функций запоминаются и повторно используются при последующих вызовах с теми же аргументами. Пример:
def fibonacci(n, memo={}):
if n in memo:
return memo[n]
if n <= 1:
return n
memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo)
return memo[n]
print(fibonacci(10)) # Выведет 55
Это особый вид рекурсии, при котором рекурсивный вызов является последней операцией в функции. Многие компиляторы и интерпретаторы могут оптимизировать хвостовую рекурсию, избегая увеличения стека вызовов. Пример:
def factorial_tail_recursive(n, accumulator=1):
if n == 0:
return accumulator
else:
return factorial_tail_recursive(n-1, n * accumulator)
print(factorial_tail_recursive(5)) # Выведет 120
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Вакансии
👨💻 Middle/senior symfony developer (PHP)
Компании Интелико Системс, разрабатывающей интернет-ориентированное программное обеспечение, требуется PHP разработчик
Что и как?
▪️ Middle / Senior
▪️ От 2000 $ net
▪️ Офис (Минск)
📩 Изучить вакансию
Компании Интелико Системс, разрабатывающей интернет-ориентированное программное обеспечение, требуется PHP разработчик
Что и как?
▪️ Middle / Senior
▪️ От 2000 $ net
▪️ Офис (Минск)
📩 Изучить вакансию
Please open Telegram to view this post
VIEW IN TELEGRAM
hh.ru
Вакансия Middle/senior symfony developer (PHP) в Минске, работа в компании Интелико Системс (вакансия в архиве c 23 января 2025)
Зарплата: от 2000 $ за месяц. Минск. Требуемый опыт: 3–6 лет. Полная. Дата публикации: 24.12.2024.
🤓 Какой метод используется для проверки, установлена ли переменная и не равна ли она null?
Anonymous Quiz
14%
var_exists()
64%
isset()
14%
exists()
7%
check_var()
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Какой метод используется для удаления
cookie в PHP?
cookie в PHP?
Anonymous Quiz
11%
delete_cookie()
33%
unset_cookie()
11%
remove_cookie()
44%
setcookie() с параметром с истекшим сроком действия
#ЛитКод
🤔 Задача: 605. Can Place Flowers
У вас есть длинная клумба, на которой некоторые участки засажены, а некоторые нет. Однако цветы нельзя сажать на соседних участках.
Дан целочисленный массив
Пример:
👨💻 Алгоритм:
1⃣ Решение очень простое. Мы можем определить максимальное количество дополнительных цветов, count, которые можно посадить для данного расположения клумбы. Для этого мы проходим по всем элементам массива flowerbed и находим те элементы, которые равны 0 (означает пустую позицию).
2⃣ Для каждого такого элемента проверяем, пусты ли обе его соседние позиции. Если да, мы можем посадить цветок в текущей позиции, не нарушая правило соседних цветов. Для первого и последнего элементов не нужно проверять предыдущие и следующие соседние позиции соответственно.
3⃣ Если полученное количество count больше или равно n, требуемому количеству цветов для посадки, мы можем посадить n цветов на пустые места, иначе - нет.
😊 Решение:
👉 Новости 👉 Платформа
У вас есть длинная клумба, на которой некоторые участки засажены, а некоторые нет. Однако цветы нельзя сажать на соседних участках.
Дан целочисленный массив
flowerbed
, содержащий 0 и 1, где 0 означает пустой участок, а 1 — занятый участок, и целое число n
. Верните true
, если n
новых цветов можно посадить на клумбе, не нарушая правила о соседних цветах, и false
в противном случае.Пример:
Input: flowerbed = [1,0,0,0,1], n = 1
Output: true
class Solution {
function canPlaceFlowers($flowerbed, $n) {
$count = 0;
for ($i = 0; $i < count($flowerbed); $i++) {
if ($flowerbed[$i] == 0) {
$emptyLeft = $i == 0 || $flowerbed[$i - 1] == 0;
$emptyRight = $i == count($flowerbed) - 1 || $flowerbed[$i + 1] == 0;
if ($emptyLeft && $emptyRight) {
$flowerbed[$i] = 1;
$count++;
}
}
}
return $count >= $n;
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Зачем придумали анонимные классы?
Анонимные классы (anonymous classes) были введены и предназначены для создания одноразовых объектов без необходимости явно именовать класс. Они обеспечивают более удобный и компактный способ определения классов, которые используются один или несколько раз.
🚩 Основные плюсы
➕ Упрощение кода и повышение читаемости
Позволяют создавать и использовать классы на месте, что уменьшает количество кода и делает его более читаемым, особенно в случае одноразового использования.
➕ Инкапсуляция и локализация кода
Помогают инкапсулировать функциональность в пределах небольших участков кода, что делает их более локализованными и уменьшает риск конфликтов имен.
➕ Быстрое создание прокси-объектов и заглушек
Могут использоваться для создания временных объектов, таких как прокси, заглушки для тестирования или объекты, реализующие интерфейсы для конкретного случая.
➕ Облегчение тестирования
Упрощают создание тестовых экземпляров, особенно когда требуется создать объект для одного теста.
🚩 Практические примеры
🟠 Замена одноразовых классов
Когда вам нужен класс, который используется только в одном месте, использование анонимного класса может быть более целесообразным, чем объявление именованного класса.
🟠 Создание адаптеров и декораторов на лету
Анонимные классы удобны для создания адаптеров и декораторов, которые изменяют или расширяют поведение объектов на месте.
👉 Новости 👉 Платформа
Анонимные классы (anonymous classes) были введены и предназначены для создания одноразовых объектов без необходимости явно именовать класс. Они обеспечивают более удобный и компактный способ определения классов, которые используются один или несколько раз.
Позволяют создавать и использовать классы на месте, что уменьшает количество кода и делает его более читаемым, особенно в случае одноразового использования.
$obj = new class {
public function sayHello() {
return "Hello, World!";
}
};
echo $obj->sayHello(); // Выведет "Hello, World!"
Помогают инкапсулировать функциональность в пределах небольших участков кода, что делает их более локализованными и уменьшает риск конфликтов имен.
function getLogger() {
return new class {
public function log($msg) {
echo $msg;
}
};
}
$logger = getLogger();
$logger->log("Logging message"); // Выведет "Logging message"
Могут использоваться для создания временных объектов, таких как прокси, заглушки для тестирования или объекты, реализующие интерфейсы для конкретного случая.
interface Logger {
public function log($msg);
}
function getCustomLogger() {
return new class implements Logger {
public function log($msg) {
echo $msg;
}
};
}
$logger = getCustomLogger();
$logger->log("Custom log message"); // Выведет "Custom log message"
Упрощают создание тестовых экземпляров, особенно когда требуется создать объект для одного теста.
$testObject = new class {
public function testMethod() {
return true;
}
};
// Использование testObject в тесте
assert($testObject->testMethod() === true);
Когда вам нужен класс, который используется только в одном месте, использование анонимного класса может быть более целесообразным, чем объявление именованного класса.
$processor = new class {
public function process($data) {
return array_map('strtoupper', $data);
}
};
$data = ['apple', 'banana', 'cherry'];
$processedData = $processor->process($data);
print_r($processedData); // Выведет ['APPLE', 'BANANA', 'CHERRY']
Анонимные классы удобны для создания адаптеров и декораторов, которые изменяют или расширяют поведение объектов на месте.
class SomeService {
public function execute() {
return "Executing service";
}
}
$service = new SomeService();
$decoratedService = new class($service) {
private $service;
public function __construct($service) {
$this->service = $service;
}
public function execute() {
return $this->service->execute() . " with added functionality";
}
};
echo $decoratedService->execute(); // Выведет "Executing service with added functionality"
Please open Telegram to view this post
VIEW IN TELEGRAM
#Вакансии
👨💻 Senior PHP developer
Локация: Удалённо
Компания: NovaSpin
ЗП: от 3 000 до 4 500 $
Занятость: Полная
NovaSpin - инновационная компания, занимающаяся разработкой онлайн-казино! Мы с гордостью предлагаем возможность присоединиться к нашей команде, которая работает в самом сердце игровой индустрии.
🚩 Задачи
▪️Разработка и поддержка веб-приложения с использованием фреймворка Laravel.
Интеграция и работа с Centrifugo для организации WebSocket соединений.
▪️Проектирование и оптимизация баз данных на PostgreSQL
▪️Настройка и управление очередями сообщений с помощью RabbitMQ.
▪️Оптимизация производительности приложений с использованием Laravel Octane.
▪️Участие в архитектурном планировании и ревью кода.
🚩 Ожидания от кандидата
▪️Глубокие знания и опыт работы с PHP (5+ лет).
▪️Опыт работы с Laravel (3+ лет).
▪️Опыт работы в igaming сфере.
▪️Знание и опыт работы с вебсокетами.
▪️Уверенные знания PostgreSQL, умение писать и оптимизировать SQL-запросы.
▪️Опыт работы с Redis и RabbitMQ.
▪️Знание и опыт использования Laravel Octane.
▪️Опыт работы с системами контроля версий (Git).
▪️Понимание принципов ООП, шаблонов проектирования и лучших практик разработки.
▪️Опыт работы с Docker.
▪️Навыки отладки и профилирования приложений.
▪️Хорошие коммуникативные навыки и умение работать в команде.
▪️Желание расти, развивать продукт и делать новые качественные фичи!
🚩 Преимущества
▪️Опыт работы с высоконагруженными системами и оптимизации производительности.
▪️Опыт работы с CI/CD и DevOps практиками.
🚩 Что мы предлагаем
▪️Конкурентоспособная зарплата с выплатами два раза в месяц в USDT.
▪️Удаленная работа с гибким графиком.
▪️Сотрудничество и поддержка в рабочей среде.
▪️Возможности для непрерывного обучения и профессионального развития.
💬 Резюме отправлять: @vasinyaroslav
👉 Новости 👉 Платформа
Локация: Удалённо
Компания: NovaSpin
ЗП: от 3 000 до 4 500 $
Занятость: Полная
NovaSpin - инновационная компания, занимающаяся разработкой онлайн-казино! Мы с гордостью предлагаем возможность присоединиться к нашей команде, которая работает в самом сердце игровой индустрии.
▪️Разработка и поддержка веб-приложения с использованием фреймворка Laravel.
Интеграция и работа с Centrifugo для организации WebSocket соединений.
▪️Проектирование и оптимизация баз данных на PostgreSQL
▪️Настройка и управление очередями сообщений с помощью RabbitMQ.
▪️Оптимизация производительности приложений с использованием Laravel Octane.
▪️Участие в архитектурном планировании и ревью кода.
▪️Глубокие знания и опыт работы с PHP (5+ лет).
▪️Опыт работы с Laravel (3+ лет).
▪️Опыт работы в igaming сфере.
▪️Знание и опыт работы с вебсокетами.
▪️Уверенные знания PostgreSQL, умение писать и оптимизировать SQL-запросы.
▪️Опыт работы с Redis и RabbitMQ.
▪️Знание и опыт использования Laravel Octane.
▪️Опыт работы с системами контроля версий (Git).
▪️Понимание принципов ООП, шаблонов проектирования и лучших практик разработки.
▪️Опыт работы с Docker.
▪️Навыки отладки и профилирования приложений.
▪️Хорошие коммуникативные навыки и умение работать в команде.
▪️Желание расти, развивать продукт и делать новые качественные фичи!
▪️Опыт работы с высоконагруженными системами и оптимизации производительности.
▪️Опыт работы с CI/CD и DevOps практиками.
▪️Конкурентоспособная зарплата с выплатами два раза в месяц в USDT.
▪️Удаленная работа с гибким графиком.
▪️Сотрудничество и поддержка в рабочей среде.
▪️Возможности для непрерывного обучения и профессионального развития.
Please open Telegram to view this post
VIEW IN TELEGRAM