Примеры:
1. Ввод JavaScript-кода в поле формы, который отображается в браузере без фильтрации.
2. Перехват сессий через подделку cookies.
Как защититься:
1. Валидировать и экранировать пользовательский ввод.
2. Использовать CSP (Content Security Policy) для ограничения выполнения скриптов.
3. Хранить куки с флагом HttpOnly.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from easyoffer
Привет, ребята!
1,5 года я учился на программиста, а сайт easyoffer.ru стал моим пет-проектом. Я создавал его, потому что:
а) нужно было добавить хоть какой-нибудь проект в резюме
б) подготовиться к прохождению собесов
И всё получилось! Благодаря еasyoffer я успешно прошёл собеседование и устроился Python Junior-разработчиком на удаленку с зарплатой 115 тысяч рублей.
Однако ещё во время разработки я понял, что у этого проекта есть потенциал. Казалось, что сайт может стать популярным и, возможно, превратиться в стартап.
По-этому я с самого начала заложил в проект минимальную бизнес-модель, на случай, если сайт начнёт набирать трафик. Я предложил пользователям полный доступ к сайту в обмен на подписку на Telegram-каналы. Это позволяло развивать аудиторию, а в будущем — зарабатывать на рекламе.
Результат превзошёл ожидания!
С момента запуска easyoffer посетило 400 тысяч человек. А когда доход с рекламы превысил мою зарплату программиста, я принял решение уйти с работы и полностью посвятить себя разработке новой версии сайта.
Вот так, зайдя в IT, через 4 месяца вышел через свой же пет-проект. Мне очень повезло
Уже год я работаю над easyoffer 2.0.
Это будет более масштабный и качественной новый проект:
– Появится тренажер
– Появятся задачи из собесов
– Фильтрация контента по грейдам
и еще очень много фич, о которых я расскажу позже.
Хочу, довести easyoffer до ума, чтобы сайт стал настоящим помощником для всех, кто готовится к собеседованиям.
По этому в ближайшее время я объявлю о старте краудфандинговой кампании, чтобы ускорить разработку и я готов щедро отблагодарить всех, кто поддержит проект.
А те, кто поддержат проект первыми, получат специальные лимитированные выгодные вознаграждения. Следите за этим телеграм каналом, если хотите стать первыми сапортерами.
1,5 года я учился на программиста, а сайт easyoffer.ru стал моим пет-проектом. Я создавал его, потому что:
а) нужно было добавить хоть какой-нибудь проект в резюме
б) подготовиться к прохождению собесов
И всё получилось! Благодаря еasyoffer я успешно прошёл собеседование и устроился Python Junior-разработчиком на удаленку с зарплатой 115 тысяч рублей.
Однако ещё во время разработки я понял, что у этого проекта есть потенциал. Казалось, что сайт может стать популярным и, возможно, превратиться в стартап.
По-этому я с самого начала заложил в проект минимальную бизнес-модель, на случай, если сайт начнёт набирать трафик. Я предложил пользователям полный доступ к сайту в обмен на подписку на Telegram-каналы. Это позволяло развивать аудиторию, а в будущем — зарабатывать на рекламе.
Результат превзошёл ожидания!
С момента запуска easyoffer посетило 400 тысяч человек. А когда доход с рекламы превысил мою зарплату программиста, я принял решение уйти с работы и полностью посвятить себя разработке новой версии сайта.
Вот так, зайдя в IT, через 4 месяца вышел через свой же пет-проект. Мне очень повезло
Уже год я работаю над easyoffer 2.0.
Это будет более масштабный и качественной новый проект:
– Появится тренажер
– Появятся задачи из собесов
– Фильтрация контента по грейдам
и еще очень много фич, о которых я расскажу позже.
Хочу, довести easyoffer до ума, чтобы сайт стал настоящим помощником для всех, кто готовится к собеседованиям.
По этому в ближайшее время я объявлю о старте краудфандинговой кампании, чтобы ускорить разработку и я готов щедро отблагодарить всех, кто поддержит проект.
А те, кто поддержат проект первыми, получат специальные лимитированные выгодные вознаграждения. Следите за этим телеграм каналом, если хотите стать первыми сапортерами.
Это метод программирования, при котором функция вызывает саму себя для решения подзадачи, являющейся частью общей задачи. Такой подход применяется, когда проблему можно разделить на более мелкие аналогичные части.
При вызове рекурсивной функции создается новый контекст выполнения, в котором хранятся ее локальные переменные и текущий прогресс. Каждый новый вызов функции откладывается в стек вызовов, пока не будет достигнуто базовое условие (условие выхода), после чего начинается обратный процесс – возвращение значений и сворачивание стека.
например, обход деревьев (DFS) или графов.
например, алгоритм "разделяй и властвуй" (быстрая сортировка, сортировка слиянием).
вычисление факториала, чисел Фибоначчи, генерация перестановок.
например, в компиляторах для обработки синтаксических деревьев.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Защита от воровства:
- Использовать атрибут HttpOnly: предотвращает доступ к куки через JavaScript.
- Включить Secure: куки передаются только через HTTPS.
- Установить флаг SameSite: предотвращает отправку куки при межсайтовых запросах.
2. Защита от подделки:
- Подписывать куки с использованием HMAC или JWT.
- Хранить минимально необходимую информацию в куки, основную — на сервере.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
Основные различия между ними касаются структуры данных, модели управления данными, масштабируемости, и подходов к транзакциям.
MySQL использует фиксированную схему, что означает, что структура таблиц (колонки, типы данных) должна быть определена заранее и изменения могут быть сложными. Данные хранятся в таблицах с фиксированным набором столбцов.
MySQL использует SQL для определения, манипуляции и управления данными. Поддерживает ACID (Atomicity, Consistency, Isolation, Durability) свойства, что обеспечивает надежные и согласованные транзакции.
Легче масштабировать вертикально (увеличение мощности одного сервера), но горизонтальная масштабируемость (распределение на несколько серверов) сложнее и требует дополнительных усилий (например, шардинг).
Хорошо подходит для приложений с четко определенными структурами данных, такими как CRM, ERP системы, финансовые приложения и системы управления содержимым (CMS).
NoSQL базы данных поддерживают гибкие и динамические схемы данных, что позволяет легко изменять структуру данных без необходимости изменения схемы. Поддерживают различные модели данных, включая документные, ключ-значение, графовые и колонковые базы данных.
Используют разные способы доступа и управления данными, которые не требуют использования SQL. NoSQL базы данных часто следуют принципу CAP-теоремы (Consistency, Availability, Partition tolerance), делая акцент на доступности и устойчивости к разделению, иногда жертвуя строгой консистентностью.
Легко масштабируются горизонтально, распределяя данные и нагрузку на несколько серверов, что позволяет эффективно работать с большими объемами данных и высокой нагрузкой.
Подходят для приложений, работающих с большими объемами данных и требующих высокой скорости обработки, таких как социальные сети, интернет-магазины, системы аналитики, IoT приложения.
MySQL: Фиксированная схема, данные хранятся в таблицах.
NoSQL: Гибкая схема, данные могут храниться в документах, ключ-значение, графах или столбцах.
MySQL: SQL для запросов и управления данными.
NoSQL: Различные модели данных и запросов, не обязательно SQL.
MySQL: Поддерживает ACID транзакции.
NoSQL: Поддержка транзакций варьируется, часто следуют CAP-теореме, обеспечивая доступность и устойчивость к разделению.
MySQL: Для вертикальной масштабируемости.
NoSQL: Для горизонтальной масштабируемости.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Forwarded from easyoffer
Ищу работу пол года
Практически под каждым постом в этом канале я вижу комментарии от людей, которые ищут работу по полгода. Это перерастает в обсуждение того, как нужно (или не нужно) искать работу, почему процесс найма сломан и как они откликались на фейковые вакансии.
Честно говоря, искать работу полгода — это нонсенс. Очевидно, что человек делает что-то не так. Главная ошибка, которую совершают многие, — это создание иллюзии поиска работы.
То есть человек вроде бы ищет работу, но делает это неэффективно, тратя время на нецелевые действия. Например:
➖ Просматривает вакансии перед откликом.
➖ Пытается понять, подходит ли он под вакансию. Если считает, что не подходит — не откликается.
➖ Пишет сопроводительные письма (иногда даже уникальные под каждую вакансию).
➖ Заполняет анкеты, проходит тесты.
Все эти действия отнимают время, но не приводят к результату.
Почему это не работает?
HR-менеджер не может вручную отсмотреть 2000 откликов, оценить каждое резюме и прочитать сопроводительные письма. Поэтому компании используют ATS-системы (системы автоматического подбора), которые анализируют резюме и определяют процент его соответствия вакансии.
Что делать, чтобы повысить шансы?
1️⃣ Добавить ключевые навыки в резюме — и в основной текст, и в теги. Возьмите их с easyoffer.ru
2️⃣ Убрать нерелевантный опыт, оставить только подходящий.
3️⃣ Оформить опыт так, чтобы он выглядел релевантным. Если у вас его нет, укажите проекты, стажировки или другой опыт, который можно представить как работу от 1 года. Если опыт слишком большой, сузьте его до 6 лет.
4️⃣ Откликаться на все вакансии без разбору. Если вы Junior, не ищите только стажер или Junior-вакансии — пробуйте везде. Не отказывайте себе сами, пусть это решит HR
5️⃣ Сделать резюме публичным, потому что HR-менеджеры часто ищут кандидатов не только среди откликов, но и в базе резюме.
6️⃣ Используйте ИИ по минимуму – ATS-системы считывают это и помечают "сгенерировано ИИ"
‼️ Главное правило: чем больше откликов — тем выше шанс получить оффер. Делайте резюме удобным для ATS-систем, и вас заметят.
1. Посмотрите видео о том как я вывел свою резюме в Топ1 на HH
2. Посмотрите видео как я нашел первую работу
3. Прочитайте этот кейс про оптимизацию резюме
Если прям вообще тяжело.
Создайте несколько разных резюме. Создайте 2, 3 да хоть 10 резюме. Настройте авто-отлики и ждите приглашения на собесы.
Не нужно создавать иллюзию поиска работы, сделайте несколько простых и актуальных действий.
Практически под каждым постом в этом канале я вижу комментарии от людей, которые ищут работу по полгода. Это перерастает в обсуждение того, как нужно (или не нужно) искать работу, почему процесс найма сломан и как они откликались на фейковые вакансии.
Честно говоря, искать работу полгода — это нонсенс. Очевидно, что человек делает что-то не так. Главная ошибка, которую совершают многие, — это создание иллюзии поиска работы.
То есть человек вроде бы ищет работу, но делает это неэффективно, тратя время на нецелевые действия. Например:
Все эти действия отнимают время, но не приводят к результату.
Почему это не работает?
HR-менеджер не может вручную отсмотреть 2000 откликов, оценить каждое резюме и прочитать сопроводительные письма. Поэтому компании используют ATS-системы (системы автоматического подбора), которые анализируют резюме и определяют процент его соответствия вакансии.
Что делать, чтобы повысить шансы?
1️⃣ Добавить ключевые навыки в резюме — и в основной текст, и в теги. Возьмите их с easyoffer.ru
2️⃣ Убрать нерелевантный опыт, оставить только подходящий.
3️⃣ Оформить опыт так, чтобы он выглядел релевантным. Если у вас его нет, укажите проекты, стажировки или другой опыт, который можно представить как работу от 1 года. Если опыт слишком большой, сузьте его до 6 лет.
4️⃣ Откликаться на все вакансии без разбору. Если вы Junior, не ищите только стажер или Junior-вакансии — пробуйте везде. Не отказывайте себе сами, пусть это решит HR
5️⃣ Сделать резюме публичным, потому что HR-менеджеры часто ищут кандидатов не только среди откликов, но и в базе резюме.
6️⃣ Используйте ИИ по минимуму – ATS-системы считывают это и помечают "сгенерировано ИИ"
‼️ Главное правило: чем больше откликов — тем выше шанс получить оффер. Делайте резюме удобным для ATS-систем, и вас заметят.
1. Посмотрите видео о том как я вывел свою резюме в Топ1 на HH
2. Посмотрите видео как я нашел первую работу
3. Прочитайте этот кейс про оптимизацию резюме
Если прям вообще тяжело.
Создайте несколько разных резюме. Создайте 2, 3 да хоть 10 резюме. Настройте авто-отлики и ждите приглашения на собесы.
Не нужно создавать иллюзию поиска работы, сделайте несколько простых и актуальных действий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Git-flow — это модель ветвления в Git, предложенная Винсентом Дриссеном, которая структурирует разработку, упрощает выпуск версий и поддерживает стабильность проекта.
master: Эта ветка содержит стабильные и готовые к выпуску версии продукта. Каждый коммит в master должен представлять собой релизную версию.
develop: Эта ветка используется для интеграции всех новых разработок. Она содержит последний готовый к выпуску код, но ещё может быть нестабильной.
feature: Эти ветки создаются для разработки новых функций. Они ответвляются от develop и сливаются обратно в develop после завершения работы. Например,
feature/новая-функция.release: Эти ветки создаются для подготовки нового релиза. Они ответвляются от develop, и после завершения всех необходимых исправлений и тестирования сливаются в master и develop. Например
release/1.0.0hotfix: Эти ветки используются для срочных исправлений в стабильной версии продукта. Они ответвляются от master и после завершения работы сливаются в master и develop. Например,
hotfix/исправление-ошибки.Создайте ветку feature от develop.
Разработайте новую функцию.
Слейте feature ветку обратно в develop.
Создайте ветку release от develop.
Проведите финальное тестирование и внесите мелкие исправления.
Слейте release ветку в master и develop.
Создайте тег для новой версии на master.
Создайте ветку hotfix от master.
Исправьте проблему.
Слейте hotfix ветку в master и develop.
Создайте тег для новой версии на master.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Это набор принципов для гибкой разработки, основанный на ценностях из Agile Manifesto. Он подчеркивает сотрудничество между командами, быструю доставку продукта и адаптацию к изменениям. Agile применяет такие методологии, как Scrum и Kanban, чтобы сократить цикл разработки и обеспечить обратную связь от заказчиков.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Это метод, используемый для оценки значений функции в точках, находящихся между известными значениями. В программировании и математике интерполяция помогает найти промежуточные значения между данными точками, что особенно полезно в задачах аппроксимации, анализа данных и компьютерной графики.
Самый простой и широко используемый метод интерполяции. Предполагает, что значения между двумя известными точками изменяются линейно.
Использует полиномы для аппроксимации значений функции. Чем выше степень полинома, тем точнее можно аппроксимировать функцию, но это также может привести к проблемам с осцилляциями между точками (эффект Рунге). Интерполяция Лагранжа, интерполяция Ньютона.
Использует кусочно-полиномиальные функции (сплайны) для интерполяции. Самый популярный вид — кубические сплайны, которые обеспечивают гладкую и плавную кривую между точками. Преимущество сплайнов в том, что они минимизируют осцилляции и обеспечивают гладкость первой и второй производных.
Использует синусоидальные функции для интерполяции, что полезно для данных, которые имеют волнообразный характер.
Интерполяция используется для заполнения пропущенных данных, аппроксимации значений в точках, где данные не были измерены, и для сглаживания данных.
Интерполяция используется для анимации и отрисовки графики, включая интерполяцию цветов, координат и других параметров.
Интерполяция используется для создания контурных карт, аппроксимации высот, температуры и других параметров на основе точечных измерений.
Интерполяция применяется для увеличения разрешения сигнала и восстановления пропущенных данных.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤯1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤯1
Передача данных через HTTPS (SSL/TLS) обеспечивает шифрование данных между клиентом и сервером, что предотвращает их перехват и чтение третьими лицами. Настройте ваш веб-сервер для использования HTTPS, получив и установив SSL/TLS сертификат.
Куки передаются только по HTTPS-соединениям. Добавьте флаг Secure при установке куки.
Set-Cookie: sessionId=abc123; Secure
Куки недоступны через JavaScript, что предотвращает их кражу с помощью XSS (Cross-Site Scripting) атак. Добавьте флаг HttpOnly при установке куки.
Set-Cookie: sessionId=abc123; HttpOnly
Предотвращает отправку куки на другие сайты, что защищает от CSRF (Cross-Site Request Forgery) атак. Добавьте флаг SameSite при установке куки. Варианты включают
Strict, Lax, и None.Set-Cookie: sessionId=abc123; SameSite=Strict
Делает данные бесполезными для злоумышленников, даже если они смогут украсть куки. Используйте серверные библиотеки для шифрования и дешифрования данных в куки перед отправкой и после получения.
С помощью HMAC (Hash-based Message Authentication Code) позволяет проверить целостность и подлинность данных в куки. Используйте секретный ключ для генерации HMAC подписи и добавьте её к куки.
import hmac
import hashlib
secret_key = b'secret'
cookie_value = b'sessionId=abc123'
signature = hmac.new(secret_key, cookie_value, hashlib.sha256).hexdigest()
cookie = f'{cookie_value.decode()}; Signature={signature}'
Могут использоваться для кражи куки. Включает в себя валидацию и фильтрацию пользовательских вводов, использование Content Security Policy (CSP) и безопасное кодирование данных. Внедрите валидацию и фильтрацию вводов на стороне сервера, настройте CSP заголовки.
Content-Security-Policy: script-src 'self'
Значений куки и установка короткого срока действия уменьшает временное окно для атакующих. Устанавливайте короткий срок действия и обновляйте значение куки при каждой сессии.
Set-Cookie: sessionId=abc123; Max-Age=3600 # 1 час
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
- Порождающие (Singleton, Factory, Abstract Factory) – для создания объектов.
- Структурные (Adapter, Decorator, Facade) – для упрощения структуры кода.
- Поведенческие (Observer, Strategy, Command) – для управления взаимодействием объектов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤔1
Это команда в системе управления версиями Git, которая позволяет выбрать один или несколько конкретных коммитов из одной ветки и применить их в другую ветку. Это полезно, когда нужно перенести отдельные изменения без необходимости слияния целых веток.
Позволяет выбрать конкретные изменения из истории одной ветки и перенести их в другую ветку.
В отличие от обычного слияния (merge), cherry-pick переносит только выбранные коммиты, а не всю историю изменений.
Основной синтаксис
git cherry-pick <commit_hash>
Переключитесь на ветку, в которую нужно перенести изменения.
git checkout target-branch
Используйте команду cherry-pick, чтобы применить нужный коммит.
git cherry-pick a1b2c3d4
Если во время cherry-pick возникают конфликты, Git предложит их решить. Разрешите конфликты, затем завершите процесс:
git add <resolved_files>
git cherry-pick --continue
Предположим, у вас есть коммит с хешем
a1b2c3d4 в ветке feature-branch, который вы хотите перенести в main-branch.git checkout main-branch
git cherry-pick a1b2c3d4
Когда нужно быстро перенести исправление из одной ветки в другую (например, багфикс из
develop в release).Когда нужно перенести конкретную функцию или изменение без переноса всей ветки.
Перенос коммитов может вызвать конфликты, особенно если изменяемые файлы были модифицированы в целевой ветке.
Частое использование cherry-pick может запутать историю изменений, так как один и тот же коммит будет существовать в нескольких ветках с разными хешами.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Существуют различные типы баз данных, каждый из которых предназначен для определенных задач и сценариев использования. Основные типы баз данных включают:
Организуют данные в таблицы с заранее определенными схемами. Используют SQL для управления данными. MySQL, PostgreSQL, Oracle, Microsoft SQL Server.
Хранят данные в виде документов (обычно в формате JSON или BSON), что позволяет хранить сложные и гибкие структуры данных. MongoDB, CouchDB.
Хранят данные столбцами вместо строк, что оптимизирует производительность для операций чтения и агрегации. Apache Cassandra, HBase.
Хранят данные в виде пар "ключ-значение", что позволяет быстрое извлечение данных по ключу. Redis, Riak, Amazon DynamoDB.
Оптимизированы для хранения и обработки графовых структур, таких как узлы, ребра и свойства, что удобно для социальных сетей, рекомендательных систем и др. Neo4j, ArangoDB, Amazon Neptune.
Специализируются на хранении и анализе временных рядов данных, таких как метрики, события или показания датчиков. InfluxDB, TimescaleDB.
Хранят данные в виде объектов, как в объектно-ориентированном программировании, что позволяет хранить более сложные структуры данных. db4o, ObjectDB.
Поддерживают несколько типов моделей данных (например, реляционные, документные, графовые) в рамках одной базы данных. ArangoDB, OrientDB.
Оптимизированы для работы с большими массивами данных, часто используемыми в научных вычислениях и аналитике. SciDB, Rasdaman.
Распределяют данные по нескольким узлам или серверам, обеспечивая масштабируемость и отказоустойчивость. Google Spanner, CockroachDB.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Асинхронные операции эффективны для выполнения долгих процессов, таких как запросы к API или работа с файлами. Они позволяют основному потоку продолжать выполнение, не блокируясь, и повышают производительность приложения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В PostgreSQL можно использовать различные методы для блокировки конкретных полей или строк таблицы, чтобы предотвратить их изменение или обеспечить управление конкурентным доступом к данным. Наиболее распространенные способы включают использование транзакционных блокировок и политик доступа.
PostgreSQL поддерживает блокировки уровня строки с помощью команд
SELECT FOR UPDATE и SELECT FOR SHARE. Эти команды позволяют заблокировать конкретные строки для изменения другими транзакциями, пока текущая транзакция не завершится.SELECT FOR UPDATE:BEGIN; -- Начало транзакции
-- Выбираем и блокируем строки для обновления
SELECT * FROM my_table WHERE id = 1 FOR UPDATE;
-- Выполняем необходимые операции
UPDATE my_table SET field = 'new_value' WHERE id = 1;
COMMIT; -- Завершение транзакции
SELECT FOR SHARE:BEGIN; -- Начало транзакции
-- Выбираем и блокируем строки для чтения
SELECT * FROM my_table WHERE id = 1 FOR SHARE;
-- Выполняем необходимые операции
-- Изменение данных будет заблокировано для других транзакций
-- Однако, можно выполнять SELECT
COMMIT; -- Завершение транзакции
Политики безопасности на уровне строк позволяют определить, кто и при каких условиях может видеть или изменять данные в таблице. Это обеспечивается с помощью функций и политик безопасности.
-- Включаем безопасность на уровне строк для таблицы
ALTER TABLE my_table ENABLE ROW LEVEL SECURITY;
-- Создаем роль, которая будет иметь доступ
CREATE ROLE limited_role;
-- Создаем политику, которая позволяет только чтение данных
CREATE POLICY read_only_policy ON my_table
FOR SELECT
USING (true); -- Условие для выполнения SELECT
-- Применяем политику для роли limited_role
GRANT SELECT ON my_table TO limited_role;
Триггеры позволяют автоматически выполнять определенные действия перед или после операции
INSERT, UPDATE, DELETE. Можно создать триггер, который будет блокировать изменение конкретных полей.CREATE OR REPLACE FUNCTION prevent_update()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.field IS DISTINCT FROM OLD.field THEN
RAISE EXCEPTION 'Field "field" cannot be updated';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Применяем триггер к таблице
CREATE TRIGGER prevent_update_trigger
BEFORE UPDATE ON my_table
FOR EACH ROW
EXECUTE FUNCTION prevent_update();
Ограничения на уровне столбца могут использоваться для ограничения возможных значений или для создания выражений, которые должны быть выполнены для выполнения изменения.
ALTER TABLE my_table
ADD CONSTRAINT field_check CHECK (field IS NOT NULL);
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Это архитектурный стиль, использующий простые HTTP-методы (GET, POST, PUT, DELETE), а SOAP – строгий протокол с XML-сообщениями. REST легче и быстрее, подходит для веб-приложений, тогда как SOAP обеспечивает стандартизацию и высокую безопасность для корпоративных решений.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4