Posted on 18 октября, 2024
Базовая работа с git для начинающих
В локальном git у нас есть ветка master
Слздадим свою ветку uuid для работы и сразу переключимся в нее:
git checkout -b uuid
Сделаем свои изменения в коде, и в отправим эти изменения на сервер. Для начала проверим статус наших изменений:
git status
Вы увидите список файлов, которые были изменены, добавлены или удалены.
1.Чтобы отправить изменения из локальной ветки uuid на сервер, выполните следующие шаги: 1. Добавление изменений в индекс:
git add .
Эта команда добавит все изменения в индекс, готовя их к коммиту.
2. Создание коммита:
git commit -m "Описание изменений"
Здесь Описание изменений — это текст, который описывает сделанные вами изменения. Это важно, так как другие разработчики смогут понять, что именно было изменено.
3. Переключение на ветку master:
git checkout master
Это необходимо, чтобы убедиться, что вы работаете с основной веткой.
4. Слияние изменений из ветки uuid в ветку master:
git merge uuid
Эта команда объединит изменения из ветки uuid с текущей веткой master.
5. Отправка изменений на сервер:
git push origin master
Здесь origin — это имя удаленного репозитория, а master — это имя ветки, которую вы хотите отправить. Эта команда отправит изменения на сервер.
если хотим отправить изменения в новую ветку то делаем:
git push origin новая_ветка
Здесь origin — это имя удаленного репозитория, а новая_ветка — это имя новой ветки, которую вы хотите отправить на сервер.
6. Удаление локальной ветки uuid (по желанию):
git branch -d uuid
Если вы больше не нуждаетесь в ветке uuid, вы можете удалить её локально. Однако, если вы хотите сохранить историю изменений, оставьте эту ветку.
7. Удаление удаленной ветки uuid на сервере (по желанию):
git push origin --delete uuid
Posted on 28 августа, 2024
Как устроен роутинг в Laravel
Роутинг в Laravel — это механизм, который связывает URL-адреса с контроллерами или действиями, которые должны быть выполнены при обращении к этим URL-адресам. Роутинг в Laravel является одним из ключевых компонентов фреймворка и предлагает удобные инструменты для управления маршрутами.
Основные элементы роутинга в Laravel:
1. Файл маршрутов
В Laravel маршруты определяются в файлах, расположенных в директории routes/. Основные файлы для маршрутов:
web.php: используется для маршрутов, доступных через веб-интерфейс (браузер). Эти маршруты получают сессию, CSRF-защиту и другие возможности, характерные для веб-приложений.api.php: используется для API-маршрутов. Эти маршруты по умолчанию не имеют состояния и обычно используются для RESTful API.console.php: содержит маршруты, связанные с Artisan-командами.channels.php: используется для определения маршрутов каналов, связанных с веб-сокетами.
2. Определение простых маршрутов
Простейший маршрут в Laravel может быть определен следующим образом:
Route::get('/home', function () {
return view('welcome');
});
В этом примере, когда пользователь обращается к /home, возвращается представление welcome.
3. Типы маршрутов
Laravel поддерживает различные HTTP-методы:
Route::get: для обработки GET-запросов.Route::post: для обработки POST-запросов.Route::put: для обработки PUT-запросов.Route::delete: для обработки DELETE-запросов.Route::patch: для обработки PATCH-запросов.Route::options: для обработки OPTIONS-запросов.
Пример:
Route::post('/submit', [FormController::class, 'submit']);
4. Маршруты с параметрами
Laravel позволяет определять маршруты с параметрами, которые могут передаваться в действия контроллера.
- Обязательные параметры:
Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});
- Необязательные параметры:
Route::get('/user/{name?}', function ($name = 'Guest') {
return 'User '.$name;
});
5. Именованные маршруты
Laravel позволяет давать маршрутам имена, что упрощает их использование в коде:
Route::get('/profile', [UserController::class, 'show'])->name('profile');
Теперь вы можете ссылаться на этот маршрут по его имени:
return redirect()->route('profile');
6. Группы маршрутов
Для организации и применения общих настроек ко множеству маршрутов используются группы:
- Группировка с префиксом:
Route::prefix('admin')->group(function () {
Route::get('/dashboard', function () { // Доступно по адресу /admin/dashboard
});
});
- Группировка с middleware:
Route::middleware(['auth'])->group(function () {
Route::get('/profile', function () {
// Только для аутентифицированных пользователей
});
});
7. Контроллеры ресурсов
Laravel предлагает удобный способ создания маршрутов для CRUD-операций с использованием ресурсных контроллеров:
Route::resource('photos', PhotoController::class);
Это автоматически создаст набор маршрутов для операций CRUD (create, read, update, delete).
8. Маршруты с замыканиями и контроллерами
Маршруты могут использовать либо замыкания (анонимные функции), либо методы контроллеров для обработки запросов:
- С использованием замыканий:
Route::get('/greeting', function () {
return 'Hello, World!';
});
- С использованием контроллеров:
Route::get('/user/{id}', [UserController::class, 'show']);
9. Route model binding
Laravel позволяет автоматически извлекать модели на основе параметров маршрута:
Route::get('/user/{user}', function (App\Models\User $user) {
return $user->email;
});
В этом примере параметр {user} будет автоматически сопоставлен с моделью User.
10. Middleware в маршрутах
Вы можете применить middleware к маршрутам, чтобы ограничить доступ или выполнить другую промежуточную логику:
Route::get('/admin', function () {
// Доступ только для администраторов
})->middleware('admin');
Таким образом, роутинг в Laravel предоставляет гибкий и мощный инструмент для управления маршрутизацией запросов в приложении, позволяя легко создавать как простые, так и сложные маршруты с учетом всех требований современной веб-разработки.
Posted on 26 августа, 2024
Коллекции в Laravel
В Laravel коллекции представляют собой расширенные, мощные обертки вокруг массивов PHP. Они предоставляют удобный и выразительный API для работы с данными, позволяя легко выполнять различные операции, такие как фильтрация, сортировка, трансформация и агрегация данных.
Основные характеристики и возможности коллекций в Laravel:
Создание коллекции: Коллекцию можно создать из любого массива или результата базы данных. Для этого используется класс
Illuminate\Support\Collection;
$collection = collect([1, 2, 3, 4, 5]);
Методы коллекций: Коллекции предоставляют множество методов для работы с данными. Вот несколько наиболее часто используемых:
map: применяет заданную функцию ко всем элементам коллекции и возвращает новую коллекцию с измененными элементами.
collection = collect([1, 2, 3, 4, 5]);
$squared = $collection->map(function ($item) { return $item * $item; });
filter: фильтрует коллекцию на основе заданного условия.
$filtered = $collection->filter(function ($value) { return $value > 2; });
reduce: сворачивает коллекцию до одного значения, используя указанную функцию.
$sum = $collection->reduce(function ($carry, $item) { return $carry + $item; });
pluck: извлекает определенное значение из каждого элемента коллекции.
$collection = collect([
['name' => 'John', 'age' => 30],
['name' => 'Jane', 'age' => 25],
]);
$names = $collection->pluck('name');
sortBy: сортирует коллекцию по указанному ключу.
$sorted = $collection->sortBy('age');
Ленивые коллекции: Laravel также поддерживает ленивые коллекции, которые обрабатывают данные по мере необходимости, что полезно для работы с большими наборами данных.
Illuminate\Support\LazyCollection; $lazyCollection = LazyCollection::make(function () { for ($i = 0; $i < 10000; $i++) { yield $i; } });
Цепочка вызовов: Один из наиболее мощных аспектов коллекций — это возможность объединять вызовы методов в цепочки, что делает код более читаемым и выразительным.
$result = collect([1, 2, 3, 4, 5])->filter(function ($item) { return $item > 2; })->map(function ($item) { return $item * 2; }) ->all();
Коллекции делают код в Laravel более лаконичным и понятным, позволяя сосредоточиться на логике приложения, а не на технических деталях манипуляций с данными.
Posted on 5 сентября, 2023
Стили Chat GPT
Благодаря обучению на разнообразном массиве текстов, GPT-4 способен имитировать многие стили написания, если предоставить ему соответствующую подсказку или указание.
Вы можете указать модели написать текст в определенном стиле, предоставив конкретное направление. Например:
«Напиши стих в стиле Пушкина».
«Опиши эту ситуацию, как бы это делал Шекспир».
«Создай рекламный текст для кроссовок в стиле научной фантастики».
Тем не менее, эффективность модели в имитации конкретного стиля может варьироваться. В некоторых случаях GPT-4 может очень убедительно имитировать заданный стиль, а в других может потребоваться несколько попыток или дополнительное редактирование.
Стоит также отметить, что в будущем разработчики или сторонние исследователи могут добавить новые функции или адаптации к GPT или аналогичным моделям, которые позволят лучше контролировать стиль или другие аспекты генерируемого текста.
Posted on 5 сентября, 2023
Температура в Chat GPT
В контексте моделей языка, таких как Chat GPT, «температура» — это гиперпараметр, который контролирует степень случайности при генерации текста. Этот параметр влияет на то, как модель выбирает следующее слово в последовательности.
Высокая температура Chat GPT (например, 1.0 или выше):
Приводит к более случайным и разнообразным результатам при генерации текстов в Chat GPT.
Модель менее вероятно будет придерживаться строгих структур или повторяющихся фраз.
Это может быть полезно, если вы хотите получить более креативные или неожиданные ответы, но также может привести к менее согласованным или менее точным результатам.
Низкая температура Chat GPT (например, 0.2 или ниже):
Приводит к более предсказуемым и последовательным результатам.
Модель склонна выбирать наиболее вероятные слова или фразы, основываясь на обученных данных.
Это может быть полезно, если вы хотите получить ответы, которые ближе к «среднему» или наиболее типичному содержанию, но может привести к менее креативным ответам.
Как это работает на практике?
Когда модель решает, какое слово добавить далее, она рассматривает набор вероятностей для каждого возможного слова. Температура затем меняет эти вероятности. При высокой температуре разница между вероятностями сокращается, делая выбор менее предсказуемым. При низкой температуре разница увеличивается, делая выбор более предсказуемым.
Температура предоставляет способ управления балансом между креативностью и предсказуемостью при использовании моделей языка.
Posted on 6 октября, 2022
PHP оператор ??
Оператор ?? позволяет инициализировать переменную, только в том случае, если эта переменная раньше не была инициализированна или она не содержит null.
Простыми словами если переменная инициализированна, то используется её значение, если не инициализированна или она равна null — то используется значение, указанное после ??
$x = ‘Привет’;
$x = $x ?? ‘Хай’;
echo $x; // Выдаст Привет
Posted on 6 октября, 2022
PHP тернарные операции
В PHP есть возможность сократить конструкции if с помощью тернарных операторов. Выглядит это так:
выражение1 ? выражение2 : выражение3
Сначала вычисляется выражение1, если оно истинно, то вычисляется выражение2, и оно становится результатом. Если выражение1 ложно, то вычисляется выражение3, и оно становится результатом.
$x = -20;
$x = $x < 0 ? -$x : $x;
echo $x; // выдаст 20
Posted on 5 октября, 2022
ООП в PHP тема 1
Концепция ООП позволяет сократить код, сделать его более читабельным и масштабируемым. Начнем с понятия класс.
КЛАСС — это своего рода чертеж объекта.
В классе мы описываем из каких запчастей будет состоять объект — СВОЙСТВА ОБЪЕКТА (переменные)
И как эти запчасти будет работать — МЕТОДЫ ОБЪЕКТА (функции)
Если КЛАСС — это чертеж, то ОБЪЕКТ это готовое изделие созданное по этому чертежу.
Давайте создадим с вами автомобиль. Сначала чертеж, потом само изделие, и проверим как он будет работать.
Создадим наш первый класс (чертеж будущего объекта). Сначала в нем не будет ничего кроме 4х дверей (свойства объекта), которые будут только открываться (методы объекта)
class MyAuto {
public $door1;
public $door2;
public $door3;
public $door4;
public function openDoor($door)
{
$door = 'open';
}
}
Отлично! Чертеж у нас есть, теперь создадим наш первый автомобиль, откроем его первую дверь, и посмотрим, что из этого получилось.
$auto = new MyAuto;
$auto->openDoor($auto->$door1);
echo $auto->$door1
Спецификаторы доступа
Posted on 3 августа, 2022
Ispmanager неправильное отображение времени при загрузке файлов по FTP
Если пользуетесь ispmanager, думаю вы не раз сталкивались с глюками со временем при закачке файлов по FTP. Обычно мы видим в дате создания/изменения минус 3 или 4 часа. Как с этим бороться?
Правильно выставляем локальное время:
(консоль) ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Проверим что получилось:
(консоль)ls -l /etc/localtime
lrwxrwxrwx 1 root root 33 мар 24 06:01 /etc/localtime -> /usr/share/zoneinfo/Europe/Moscow
Далее в конфигах сервера ( конфиг лежит по /etc/proftpd/proftpd.conf ) добавляем:
TimesGMT off
SetEnv TZ :/etc/localtime
Далее перезапустим сервер
(консоль) /etc/init.d/proftpd restart
Пробуем загрузить что нибудь по FTP, и смотрим что у нас получилось.
Posted on 22 июня, 2022
Поведенческие факторы для коммерческих сайтов
К коммерции не важна дина сессии. Ни количество просмотров страниц. Яндекс ориентируется на то, решил ли ваш сайт проблему клиента или нет.
