Oracle + Тинькофф. Заключение
Заканчиваю эпопею с Тиньком.
Еще в 2018м году я прошел собеседование в Тинькофф банк. Тогда я выбирал между ним и Qiwi. Выбрал Qiwi ❤️
В этот раз я не получил оффер 😌
💬HR: "По техническим навыкам вопросов нет. Их смутили софты. Будет сложно влиться в команду, так как не увидели мотивации быть эффективным членом команды. На мотивацию они действительно обращают большое внимание."
Раскусили казачка засланного. Слишком самоуверенный и чутка нагловатый подход на собеседовании не идет на пользу кандидату 😂
Я не буду оценивать простоту или сложность прохождения всех этапов. Очень субъективно. С уверенностью можно сказать, на успех влияет сумма факторов: hard + soft skills. В вашей истории может быть совсем другой итог. Если вы мидл и не ответите на некоторые технические вопросы - это не значит, что вы не пройдете 😉 Пытайтесь.
Еще раз. Тем, чем предстоит заниматься - заманчиво🔥 Это отличный задел на развитие вас как специалиста-технаря (Oracle, Java-стек), так и руководителя в будущем. Тинькофф-банк достойный работодатель с возможностью работать удаленно в РФ и в некоторых странах ближнего зарубежья.
Если интересны реальные истории о прохождении собеседований, можете накинуть идей в чат куда еще стоит отправить резюме 😉
Всем хороших выходных!🌞
#тинькофф #собеседование
Oracle Developer
Заканчиваю эпопею с Тиньком.
Еще в 2018м году я прошел собеседование в Тинькофф банк. Тогда я выбирал между ним и Qiwi. Выбрал Qiwi ❤️
В этот раз я не получил оффер 😌
💬HR: "По техническим навыкам вопросов нет. Их смутили софты. Будет сложно влиться в команду, так как не увидели мотивации быть эффективным членом команды. На мотивацию они действительно обращают большое внимание."
Раскусили казачка засланного. Слишком самоуверенный и чутка нагловатый подход на собеседовании не идет на пользу кандидату 😂
Я не буду оценивать простоту или сложность прохождения всех этапов. Очень субъективно. С уверенностью можно сказать, на успех влияет сумма факторов: hard + soft skills. В вашей истории может быть совсем другой итог. Если вы мидл и не ответите на некоторые технические вопросы - это не значит, что вы не пройдете 😉 Пытайтесь.
Еще раз. Тем, чем предстоит заниматься - заманчиво🔥 Это отличный задел на развитие вас как специалиста-технаря (Oracle, Java-стек), так и руководителя в будущем. Тинькофф-банк достойный работодатель с возможностью работать удаленно в РФ и в некоторых странах ближнего зарубежья.
Если интересны реальные истории о прохождении собеседований, можете накинуть идей в чат куда еще стоит отправить резюме 😉
Всем хороших выходных!🌞
#тинькофф #собеседование
Oracle Developer
Друзья, всем привет!
30.11 у коллег закончилось трехмесячное путешествие по миру PL/SQL 🚀
Рад сообщить, о старте уже восьмого потока курса “Oracle PL/SQL.Основы” 🎓
Будет полезен: QA-инженерам, разработчикам, аналитикам.
Цель: научить вас читать чужой и писать свой PL/SQL-код, достаточный для современной разработки и закрытия рабочих задач.
🔹22 видео;
🔹18 практик = единый проект;
🔹13 онлайн встреч в Zoom с разбором вопросов;
🔹закрытый телеграм-канал;
Шаг за шагом, вы будете создавать API для прототипа платежной системы. Начав с анонимных блоков вы закончите своим фреймворком для Unit-тестирования. Пример.
Подробности и программа - здесь. Видео-отзывы - здесь.
Для тех кто заинтересован, но пока не уверен, я создал промо-группу курса, в которой буду размещать подробности, отрывки с занятий, отвечать на вопросы (да вы можете их сразу задавать) и даже встретимся онлайн. Залетайте!
⚠️ Группа 10 человек. Даты проведения: 13.01 - 31.03
Отличное время прокачаться 🎓
#plsql_basic
Oracle Developer
30.11 у коллег закончилось трехмесячное путешествие по миру PL/SQL 🚀
Рад сообщить, о старте уже восьмого потока курса “Oracle PL/SQL.Основы” 🎓
Будет полезен: QA-инженерам, разработчикам, аналитикам.
Цель: научить вас читать чужой и писать свой PL/SQL-код, достаточный для современной разработки и закрытия рабочих задач.
🔹22 видео;
🔹18 практик = единый проект;
🔹13 онлайн встреч в Zoom с разбором вопросов;
🔹закрытый телеграм-канал;
Шаг за шагом, вы будете создавать API для прототипа платежной системы. Начав с анонимных блоков вы закончите своим фреймворком для Unit-тестирования. Пример.
Подробности и программа - здесь. Видео-отзывы - здесь.
Для тех кто заинтересован, но пока не уверен, я создал промо-группу курса, в которой буду размещать подробности, отрывки с занятий, отвечать на вопросы (да вы можете их сразу задавать) и даже встретимся онлайн. Залетайте!
⚠️ Группа 10 человек. Даты проведения: 13.01 - 31.03
Отличное время прокачаться 🎓
#plsql_basic
Oracle Developer
Задача. Ревью. Замена домена в email ✉️
Представьте, что вам на код-ревью junior отправил код процедуры (см ниже).
Функционал: замена домена в email’ах некой таблицы broker.
Предполагается, что объем измененных данных будет около 100К строк.
Обсудить в нашем ламповом чатике.
Анализ, как всегда, в четверг 🎓
#задача
Oracle Developer
Представьте, что вам на код-ревью junior отправил код процедуры (см ниже).
Функционал: замена домена в email’ах некой таблицы broker.
Предполагается, что объем измененных данных будет около 100К строк.
create or replace procedure change_domain(p_olddomainname varchar2
,p_newdomainname varchar2) is
cursor c_emailaddress is
select broker_number
,email_address
from broker
where lower(email_address) like '%@' || lower(p_olddomainname);
v_brokernumber broker.broker_number%type;
v_emailaddress broker.email_address%type;
v_localaddress broker.email_address%type;
v_atposition number(2, 0);
begin
open c_emailaddress;
loop
fetch c_emailaddress
into v_brokernumber
,v_emailaddress;
exit when c_emailaddress%notfound;
v_atposition := instr(v_emailaddress, '@');
v_localaddress := substr(v_emailaddress, 1, v_atposition);
update broker
set email_address = v_localaddress || p_newdomainname
where broker_number = v_brokernumber;
end loop;
close c_emailaddress;
end;
/
❓ Пропустите ли вы такой код? Если нет, то почему? Есть ли в нем проблемы? Какие рекомендации дадите разработчику?Обсудить в нашем ламповом чатике.
Анализ, как всегда, в четверг 🎓
#задача
Oracle Developer
Решение. Ревью. Замена домена в email
Всем привет!
Постановка: в посте вторника.
Анализ
Сразу скажу, у меня такой код не прошел бы ревью. Объясню причины.
1️⃣ Работа с данными выполняется по одной строке, используя курсор.
2️⃣ Работая с пачками, для обновления таблицы broker, стоит использовать forall - оператор множественного связывания.
3️⃣ Код не закрывает корректно курсор, в случае возникновения исключений.
Обычно это выполняется через блок обработки ошибок в конце процедуры.
Главный вопрос - а зачем нам тут курсор и построчная обработка❓
С учетом объема строк (100К), одного обычного update вполне хватит, чтобы решить эту задачу. Обертка в виде процедуры - дело конкретной реализации.
Код получился очень простой и лаконичный.
В задаче не рассмотрен вопрос оптимизации выполнения запроса.
Простое правило: если вы пишете слово cursor в вашем коде, подумайте хорошенько “надо ли”, может можно сделать все проще 🤷♂️
Хотите научиться писать PL/SQL-код, за который не будет стыдно? Знать когда применять курсоры, а когда нет?
Новый набор на 8-й поток курса “Основы PL/SQL” уже начался. Старт занятий - 13 января 🎓
Палец вверх, если задача понравилась 👍 Обсудить в чатике.
#решениезадачи #cursor
Oracle Developer
Всем привет!
Постановка: в посте вторника.
Анализ
Сразу скажу, у меня такой код не прошел бы ревью. Объясню причины.
1️⃣ Работа с данными выполняется по одной строке, используя курсор.
fetch c_emailaddress into v_brokernumber, v_emailaddress;ничего не мешает вычитывать данные пачками, с использованием конструкции limit.
2️⃣ Работая с пачками, для обновления таблицы broker, стоит использовать forall - оператор множественного связывания.
3️⃣ Код не закрывает корректно курсор, в случае возникновения исключений.
Обычно это выполняется через блок обработки ошибок в конце процедуры.
exceptionНо это всё так… мелочи.
when others then
if c_emailaddress%isopen then
close c_emailaddress;
end if;
raise;
end;
Главный вопрос - а зачем нам тут курсор и построчная обработка❓
С учетом объема строк (100К), одного обычного update вполне хватит, чтобы решить эту задачу. Обертка в виде процедуры - дело конкретной реализации.
create or replace procedure change_domain(p_olddomainname varchar2/
,p_newdomainname varchar2) is
update broker
set email_address = ...
where lower(email_address) like '%@' || lower(p_olddomainname);
end;
Код получился очень простой и лаконичный.
В задаче не рассмотрен вопрос оптимизации выполнения запроса.
Простое правило: если вы пишете слово cursor в вашем коде, подумайте хорошенько “надо ли”, может можно сделать все проще 🤷♂️
Хотите научиться писать PL/SQL-код, за который не будет стыдно? Знать когда применять курсоры, а когда нет?
Новый набор на 8-й поток курса “Основы PL/SQL” уже начался. Старт занятий - 13 января 🎓
Палец вверх, если задача понравилась 👍 Обсудить в чатике.
#решениезадачи #cursor
Oracle Developer
Code-review процедуры "Перевод платежа в ошибку"
Всем привет!
Задача в формате код-ревью 👍
Джун отправил код. Процедура в пакете - перевод платежа в статус "ошибка".
Пропустите ли вы такой код? Если нет, то почему? Есть ли в нем проблемы? Какие рекомендации дадите разработчику?
1️⃣ Константы определены в спецификации:
c_active constant payment.status%type := 0; — платеж активный
c_error constant payment.status%type := 2; — платеж в ошибке
c_err_code_status_is_not_active constant number(10) := -20101;
c_err_code_payment_is_not_found constant number(10) := -20102;
2️⃣ Определение таблицы можно посмотреть здесь.
3️⃣ Многосессионная среда, есть конкуренция за данные.
——-
Обсудить в нашем ламповом чатике.
Анализ, как всегда, в четверг 🎓
Для тех кто хочет подтянуться свои знания в PL/SQL, портал возможностей откроется с 13.01 - 8й поток курса Основы PL/SQL. Записывайтесь, пока еще, есть несколько мест 🔥
#задача
Oracle Developer
Всем привет!
Задача в формате код-ревью 👍
Джун отправил код. Процедура в пакете - перевод платежа в статус "ошибка".
Пропустите ли вы такой код? Если нет, то почему? Есть ли в нем проблемы? Какие рекомендации дадите разработчику?
procedure fail_payment(p_payment_id payment.payment_id%typeУточнения (на самом деле, не сильно влияет на анализ задачи):
,p_reason payment.status_change_reason%type)
is
v_status payment.status%type;
e_status_is_not_active exception;
begin
select status
into v_status
from payment
where payment_id = p_payment_id;
if v_status != c_active then
raise e_status_is_not_active;
end if;
update payment
set status = c_error
,status_change_reason = p_reason
where payment_id = p_payment_id;
exception
when e_status_is_not_active then
raise_application_error(c_err_code_status_is_not_active, 'Платеж не активный');
when no_data_found then
raise_application_error(c_err_code_payment_is_not_found, 'Платеж не найден');
end;
/
1️⃣ Константы определены в спецификации:
c_active constant payment.status%type := 0; — платеж активный
c_error constant payment.status%type := 2; — платеж в ошибке
c_err_code_status_is_not_active constant number(10) := -20101;
c_err_code_payment_is_not_found constant number(10) := -20102;
2️⃣ Определение таблицы можно посмотреть здесь.
3️⃣ Многосессионная среда, есть конкуренция за данные.
——-
Обсудить в нашем ламповом чатике.
Анализ, как всегда, в четверг 🎓
Для тех кто хочет подтянуться свои знания в PL/SQL, портал возможностей откроется с 13.01 - 8й поток курса Основы PL/SQL. Записывайтесь, пока еще, есть несколько мест 🔥
#задача
Oracle Developer
Пишем свой framework для Unit-тестирования на PL/SQL
Друзья всем привет!
Традиционно хотел вас порадовать перед новым годом.
Думал думал и родилась идея 💡
А что если взять прямо в онлайн в зум-конфе при вас написать небольшой фреймворк для организации Unit-тестирования? С нуля с объяснениями?
Заодно про принципы написания Unit-тестов рассказать?
Займет наша кодинг-сессия около часа.
Была бы интересная такая часовая туса в следующий понедельник (26.12) в 19:30(МСК)?
Если пост насобирает хотя бы 1️⃣0️⃣0️⃣ 👍 - проведу.
Обсудить в чатике.
Кстати, примерно тоже самое делают студенты у меня на курсе по PL/SQL. Кто еще думает - идти или нет. 100% идти 😁
——
UPD: Пост набрал 100 👍 - встрече быть 😉
Ссылку на Zoom скину в понедельник.
Oracle Developer
Друзья всем привет!
Традиционно хотел вас порадовать перед новым годом.
Думал думал и родилась идея 💡
А что если взять прямо в онлайн в зум-конфе при вас написать небольшой фреймворк для организации Unit-тестирования? С нуля с объяснениями?
Заодно про принципы написания Unit-тестов рассказать?
Займет наша кодинг-сессия около часа.
Была бы интересная такая часовая туса в следующий понедельник (26.12) в 19:30(МСК)?
Если пост насобирает хотя бы 1️⃣0️⃣0️⃣ 👍 - проведу.
Обсудить в чатике.
Кстати, примерно тоже самое делают студенты у меня на курсе по PL/SQL. Кто еще думает - идти или нет. 100% идти 😁
——
UPD: Пост набрал 100 👍 - встрече быть 😉
Ссылку на Zoom скину в понедельник.
Oracle Developer
Code-review процедуры "Перевод платежа в ошибку". Анализ
Задача: см пост вторника
Анализ
С первого взгляда, код вполне себе невинен. Отрабатываются основные ситуации:
1️⃣ статус платежа не подходящий для изменений (if v_status != c_active then).
2️⃣ когда платежа нет (when no_data_found then);
Однако в обработке каждой ситуации заложена архитектурная ошибка 🤷♂️
1️⃣ Проверка статуса
БД, в принципе, многосессионная среда. Это API для работы с отдельной сущностью. Подобные обертки в основном реализуются не в DWH, в котором работа с данными выполняется в чуть более свободном режиме.
Соответственно, могут возникать ситуации, когда с одной и той же сущностью работают более чем 1 сессия. Могут возникать race condition.
Если совсем на пальцах: между тем, когда мы считали статус платежа (select status) и тем, когда мы совершаем update payment, статус мог измениться. В многосессионной среде так и будет. Разруливаются подобные проблемы - блокировками.
Первый вариант: добавить for update с опциями, которые соответствуют бизнес-задаче.
2️⃣ Обработка отсутствия платежа.
В текущей реализации - это бомба замедленного действия. Как правильно заметили в комментариях, рано или поздно будет добавлен еще один select и общий NO_DATA_FOUND на весь блок будет отрабатывать не только отсутствие платежа, но и другие запросы.
Как надо бы сделать - обернуть select, возбудить в нем пользовательское исключение и уже в общем блоке его обработать.
—
Продолжая тему: лучше выделить функционал в отдельную процедуру типа try_lock_payment, в которой блокировать платеж, проверять его state и наличие. Т.к. api-процедур по работе с платежом более чем одна.
Подобный код пишут студенты на курсе Основы PL/SQL, в котором мы разбираем не только синтаксис и объекты, но и архитектурные принципы построения API. Старт - 12.01. Записывайтесь, пока еще, есть несколько мест 🔥
#решениезадачи #блокировки #исключения
Oracle Developer
Задача: см пост вторника
Анализ
С первого взгляда, код вполне себе невинен. Отрабатываются основные ситуации:
1️⃣ статус платежа не подходящий для изменений (if v_status != c_active then).
2️⃣ когда платежа нет (when no_data_found then);
Однако в обработке каждой ситуации заложена архитектурная ошибка 🤷♂️
1️⃣ Проверка статуса
БД, в принципе, многосессионная среда. Это API для работы с отдельной сущностью. Подобные обертки в основном реализуются не в DWH, в котором работа с данными выполняется в чуть более свободном режиме.
Соответственно, могут возникать ситуации, когда с одной и той же сущностью работают более чем 1 сессия. Могут возникать race condition.
Если совсем на пальцах: между тем, когда мы считали статус платежа (select status) и тем, когда мы совершаем update payment, статус мог измениться. В многосессионной среде так и будет. Разруливаются подобные проблемы - блокировками.
Первый вариант: добавить for update с опциями, которые соответствуют бизнес-задаче.
select status … for update с опциями;Второй вариант: проверять в update статус. Если строка заблокирована, то выполнение повиснет до освобождения блокировки.
2️⃣ Обработка отсутствия платежа.
В текущей реализации - это бомба замедленного действия. Как правильно заметили в комментариях, рано или поздно будет добавлен еще один select и общий NO_DATA_FOUND на весь блок будет отрабатывать не только отсутствие платежа, но и другие запросы.
Как надо бы сделать - обернуть select, возбудить в нем пользовательское исключение и уже в общем блоке его обработать.
beginИтог: код не прошел code review.
select …
exception
when no_data_found then
raise e_payment_not_found;
end;
—
Продолжая тему: лучше выделить функционал в отдельную процедуру типа try_lock_payment, в которой блокировать платеж, проверять его state и наличие. Т.к. api-процедур по работе с платежом более чем одна.
Подобный код пишут студенты на курсе Основы PL/SQL, в котором мы разбираем не только синтаксис и объекты, но и архитектурные принципы построения API. Старт - 12.01. Записывайтесь, пока еще, есть несколько мест 🔥
#решениезадачи #блокировки #исключения
Oracle Developer
Сегодня пятница и немного баянного юмора не помешает😉
Всем хороших выходных 🎊
Перетереть в чатике 💬
#юмор
Oracle Developer
Всем хороших выходных 🎊
Перетереть в чатике 💬
#юмор
Oracle Developer
Пишем свой framework для Unit-тестирования на PL/SQL
Друзья всем привет!
В прошлую среду анонсировал встречу или, как модно говорить, вебинар на тему “Пишем свой framework для Unit-тестирования на PL/SQL”. Исходя из количества лайков, понимаю, что тема интересна.
Что обсудим?
- что такое тестирование;
- что такое unit-тестирование;
- пример написания теста в общем;
- напишем свой простенький фреймворк для Unit-тестирования с нуля;
- чуть затронем фреймворк utPL/SQL;
- отвечу на вопросы, в том числе по курсу Основы PL/SQL.
Продолжительность: 1-1.5 часа как пойдет.
Начало вебинара: 19:30 МСК сегодня.
Подключиться можно будет по зум. Данные для подключения:
https://qiwi.zoom.us/j/99405211225?pwd=eU9YaFpEVjRaYUloTnYxZ2VxWWZXQT09
Идентификатор конференции: 994 0521 1225
Код доступа: 724031
Будет ли запись? Будет.
До встречи ✌🏻
#webinar #видео #подкаст
Oracle Developer
Друзья всем привет!
В прошлую среду анонсировал встречу или, как модно говорить, вебинар на тему “Пишем свой framework для Unit-тестирования на PL/SQL”. Исходя из количества лайков, понимаю, что тема интересна.
Что обсудим?
- что такое тестирование;
- что такое unit-тестирование;
- пример написания теста в общем;
- напишем свой простенький фреймворк для Unit-тестирования с нуля;
- чуть затронем фреймворк utPL/SQL;
- отвечу на вопросы, в том числе по курсу Основы PL/SQL.
Продолжительность: 1-1.5 часа как пойдет.
Начало вебинара: 19:30 МСК сегодня.
Подключиться можно будет по зум. Данные для подключения:
https://qiwi.zoom.us/j/99405211225?pwd=eU9YaFpEVjRaYUloTnYxZ2VxWWZXQT09
Идентификатор конференции: 994 0521 1225
Код доступа: 724031
Будет ли запись? Будет.
До встречи ✌🏻
#webinar #видео #подкаст
Oracle Developer
Коллеги, всем спасибо за участие!
Получилось долго, но надеюсь продуктивно 😉
Запись вебинара обязательно залью.
Пожалуйста, дайте обратную связь, мне это важно 🤝
Материалы
🔹 презентация по Unit-тестам
🔹 код с объектам и примером юнит-тестов
🔸 промо-страница курса Oracle PL/SQL
🔸 отзывы студентов об обучении
🔸 написать мне в личку
Получилось долго, но надеюсь продуктивно 😉
Запись вебинара обязательно залью.
Пожалуйста, дайте обратную связь, мне это важно 🤝
Материалы
🔹 презентация по Unit-тестам
🔹 код с объектам и примером юнит-тестов
🔸 промо-страница курса Oracle PL/SQL
🔸 отзывы студентов об обучении
🔸 написать мне в личку
Ribbon vs Classic Menu в PL/SQL Developer
Друзья всем привет!
Иногда замечаю у коллег, студентов огромное меню панели инструментов в PL/SQL Developer’e. Ввели его с 10й что ли версии.
На мой взгляд, занимает пол экрана. Полезная площадь бесполезно расходуется 😱
Переключиться на классическое компактное меню можно в настройках.
Configure -> Preferences -> Appearance -> мотаем до конца окна и выбираем Switch to Menu.
💡 Больше места - больше пространства для кода - удобней работать.
#ide
Oracle Developer
Друзья всем привет!
Иногда замечаю у коллег, студентов огромное меню панели инструментов в PL/SQL Developer’e. Ввели его с 10й что ли версии.
На мой взгляд, занимает пол экрана. Полезная площадь бесполезно расходуется 😱
Переключиться на классическое компактное меню можно в настройках.
Configure -> Preferences -> Appearance -> мотаем до конца окна и выбираем Switch to Menu.
💡 Больше места - больше пространства для кода - удобней работать.
#ide
Oracle Developer
Standard SQL Functions Cheat Sheet
Друзья, всем привет!
Случайно попалась шпаргалка по SQL. На мой взгляд, довольно концентрированная информация с графическими иллюстрациями. Для junior, middle, вполне себе, отличное подспорье.
Шпаргалочка не совсем прям 100% про Oracle. С ходу нашел некоторые отличия.
🔹 тип Date не хранит время (в Oracle хранит);
🔹 наличие - Named Window Definition (в Oracle отсутствует).
🔹 возможно, что-то еще.
Можем устроить мини-соревнование в чатике - "кто найдет больше всего несоответствий между SQL и Oracle SQL" 😁
Сохраняйте, отправляйте коллегам 😉
Oracle Developer
Друзья, всем привет!
Случайно попалась шпаргалка по SQL. На мой взгляд, довольно концентрированная информация с графическими иллюстрациями. Для junior, middle, вполне себе, отличное подспорье.
Шпаргалочка не совсем прям 100% про Oracle. С ходу нашел некоторые отличия.
🔹 тип Date не хранит время (в Oracle хранит);
🔹 наличие - Named Window Definition (в Oracle отсутствует).
🔹 возможно, что-то еще.
Можем устроить мини-соревнование в чатике - "кто найдет больше всего несоответствий между SQL и Oracle SQL" 😁
Сохраняйте, отправляйте коллегам 😉
Oracle Developer
Друзья, всем привет!
На прошлой недели, для канала, проходил собес в одну из компаний. Позже расскажу - что куда и как😉
Помимо всех прочих вопросов про оптимизацию, секционирование, кэширование и архитектуру построения приложений были вопросы про коллекции и курсоры.
💬 Интервьювер: какой best-practice по применению курсоров? Какие виды коллекций и кейсы применения? Как передавать данные между разными модулями и слоями приложения?
Что вы ответите? Если в голове возникает сумбурная картинка, то не удивляйтесь, что собеседование вы можете не пройти ❌
Однако, это "база". Эти темы мы проходим в курсе основы PL/SQL, разбираем множество примеров с коллекциями и курсорами, применяем их на практике.
У кого до сих пор в голове путница, я рекомендую посетить 3х месячный курс по PL/SQL.
Даже те ребята, которые программируют не первый год, находят для себя много нового 😉
Помимо синтаксиса мы еще затрагиваем темы:
🔹 чистый код, именования, форматирование;
🔹best-практисы в компаниях;
🔹архитектуру приложений и многие другие.
С 12.01 по 31.03 пройдет очередной поток. Места еще есть, но их немного. Продажи закроются 23:59 31.12.
В любые времена вложения в свое здоровье и образование было отличной идеей 👌
Время тикает, не упустите шанс 😉🔥
PS. Кстати, если будет желание при отличной успеваемости смогу рекомендовать вас HR из Qiwi, кто знает, вдруг вы станете частью Qiwi-семьи 😉
Ссылки
🔸 Промо-страница курса
🔸 Оплатить участие в курсе
🔸 Оплатить участие в курсе (в рассрочку)
🔸 Три урока бесплатно
🔸 Плей-лист с демо-уроками
На прошлой недели, для канала, проходил собес в одну из компаний. Позже расскажу - что куда и как😉
Помимо всех прочих вопросов про оптимизацию, секционирование, кэширование и архитектуру построения приложений были вопросы про коллекции и курсоры.
💬 Интервьювер: какой best-practice по применению курсоров? Какие виды коллекций и кейсы применения? Как передавать данные между разными модулями и слоями приложения?
Что вы ответите? Если в голове возникает сумбурная картинка, то не удивляйтесь, что собеседование вы можете не пройти ❌
Однако, это "база". Эти темы мы проходим в курсе основы PL/SQL, разбираем множество примеров с коллекциями и курсорами, применяем их на практике.
У кого до сих пор в голове путница, я рекомендую посетить 3х месячный курс по PL/SQL.
Даже те ребята, которые программируют не первый год, находят для себя много нового 😉
Помимо синтаксиса мы еще затрагиваем темы:
🔹 чистый код, именования, форматирование;
🔹best-практисы в компаниях;
🔹архитектуру приложений и многие другие.
С 12.01 по 31.03 пройдет очередной поток. Места еще есть, но их немного. Продажи закроются 23:59 31.12.
В любые времена вложения в свое здоровье и образование было отличной идеей 👌
Время тикает, не упустите шанс 😉🔥
PS. Кстати, если будет желание при отличной успеваемости смогу рекомендовать вас HR из Qiwi, кто знает, вдруг вы станете частью Qiwi-семьи 😉
Ссылки
🔸 Промо-страница курса
🔸 Оплатить участие в курсе
🔸 Оплатить участие в курсе (в рассрочку)
🔸 Три урока бесплатно
🔸 Плей-лист с демо-уроками
Друзья всем привет!
Это уже третий новый год, с которым я поздравляю вас в нашем канале 🥳
Что сказать про уходящий 22й? Вы и без меня все знаете… Лично мои планы на обучающие программы были полностью нарушены. Новых видео на канале практически не было. Предыдущие года были более продуктивными с точки зрения контента. Как-то не располагала обстановка к творчеству 🤦🏻♂️
Конечно, хочется, чтобы 2023 был другим. Более позитивным и эффективным.
Моя главная задача на следующий год - добить курс по Основам оптимизации SQL. Половина уже написана, половина осталась. Надеюсь сделаю, если опять не случится какая-нибудь непредвиденная дичь.
Плюс, пилить контент для вас, мои дорогие 😁 Спасибо, что остаетесь на канале 🤝
От себя хочу пожелать - здоровья, счастья и успехов во всех делах, развиваться, быть здоровой клеткой. Берегите себя и своих близких. Мирного неба над головой 🕊
С наступающим 2️⃣0️⃣2️⃣3️⃣ годом! 🎄
Создатель канала Oracle Developer, Кивилёв Денис
Это уже третий новый год, с которым я поздравляю вас в нашем канале 🥳
Что сказать про уходящий 22й? Вы и без меня все знаете… Лично мои планы на обучающие программы были полностью нарушены. Новых видео на канале практически не было. Предыдущие года были более продуктивными с точки зрения контента. Как-то не располагала обстановка к творчеству 🤦🏻♂️
Конечно, хочется, чтобы 2023 был другим. Более позитивным и эффективным.
Моя главная задача на следующий год - добить курс по Основам оптимизации SQL. Половина уже написана, половина осталась. Надеюсь сделаю, если опять не случится какая-нибудь непредвиденная дичь.
Плюс, пилить контент для вас, мои дорогие 😁 Спасибо, что остаетесь на канале 🤝
От себя хочу пожелать - здоровья, счастья и успехов во всех делах, развиваться, быть здоровой клеткой. Берегите себя и своих близких. Мирного неба над головой 🕊
С наступающим 2️⃣0️⃣2️⃣3️⃣ годом! 🎄
Создатель канала Oracle Developer, Кивилёв Денис
Видео с вебинара
Друзья всем привет!
Ну что? как вам в 2023м? 😁
К сожалению, в конце прошлого года я приболел и не успел выложить видео с вебинара “Пишем свой framework для Unit-тестирования на PL/SQL”.
Выполняю обещание.
Вебинар вместо одного часа получился аж на два.
🔸30 минут ушло на теорию тестирования и примеры;
🔸1 час на написание простенького фреймворка для тестирования;
🔸остальное на различные вопросы-ответы, в том числе про сертификацию и курс PL/SQL.
В видео есть тайминги, поэтому будет проще ориентироваться.
Спасибо кто оставил обратную связь 👍 подкинули некоторые темы на будущие вебинары.
Пользуясь случаем, скажу, что осталось 1️⃣ место на поток по Oracle PL/SQL, который стартанет 12.01. Если хотите попасть - пишите мне в личку.
Всем приятного просмотра 🎥
#webinar #видео #подкаст #utplsql #тестирование
Oracle Developer
Друзья всем привет!
Ну что? как вам в 2023м? 😁
К сожалению, в конце прошлого года я приболел и не успел выложить видео с вебинара “Пишем свой framework для Unit-тестирования на PL/SQL”.
Выполняю обещание.
Вебинар вместо одного часа получился аж на два.
🔸30 минут ушло на теорию тестирования и примеры;
🔸1 час на написание простенького фреймворка для тестирования;
🔸остальное на различные вопросы-ответы, в том числе про сертификацию и курс PL/SQL.
В видео есть тайминги, поэтому будет проще ориентироваться.
Спасибо кто оставил обратную связь 👍 подкинули некоторые темы на будущие вебинары.
Пользуясь случаем, скажу, что осталось 1️⃣ место на поток по Oracle PL/SQL, который стартанет 12.01. Если хотите попасть - пишите мне в личку.
Всем приятного просмотра 🎥
#webinar #видео #подкаст #utplsql #тестирование
Oracle Developer
YouTube
Вебинар 26.12.2022. Пишем свой фреймворк Unit-тестирования на Oracle PL/SQL
Вебинар проходил 26.12.2022.
Цель: рассказать про концепцию Unit-тестирования, показать на простых примерах и написать свой примитивный фреймворк для Unit-тестирования.
Так же немного поговорили про utPL/SQL и курс Oracle PL/SQL Основы.
Рекомендую выставить…
Цель: рассказать про концепцию Unit-тестирования, показать на простых примерах и написать свой примитивный фреймворк для Unit-тестирования.
Так же немного поговорили про utPL/SQL и курс Oracle PL/SQL Основы.
Рекомендую выставить…
Инструкция создания Oracle XE в Docker
Друзья всем привет!
Установка Oracle на ваш ПК (не сервер) с дистрибутива это уже совсем позавчерашний день.
Современная парадигма - контейнеризация. Docker - один из представителей.
Можно развернуть что угодно в контейнере, не затрагивая вашу главную ОС.
Я уже делал видосы по установке Oracle в Docker (раз, два, три). К сожалению, для тех кто с РФ эти способы немного устарели.
Предлагаю красивую альтернативу. Развертывание происходит гораздо быстрей и нет проблем со скачиванием дистрибутива с официального сайта.
Готовые собранные контейнеры - https://hub.docker.com/r/gvenzl/oracle-xe
Они же используются для тестирования с использованием testcontainers (джавистам на заметку).
Доступны - 11, 18, 21 версии. Начиная с 18й версии редакция XE обладает всеми опциями, что и Enterprise Edition (EE). Так что её хватит сполна.
Продолжение ⬇️
Друзья всем привет!
Установка Oracle на ваш ПК (не сервер) с дистрибутива это уже совсем позавчерашний день.
Современная парадигма - контейнеризация. Docker - один из представителей.
Можно развернуть что угодно в контейнере, не затрагивая вашу главную ОС.
Я уже делал видосы по установке Oracle в Docker (раз, два, три). К сожалению, для тех кто с РФ эти способы немного устарели.
Предлагаю красивую альтернативу. Развертывание происходит гораздо быстрей и нет проблем со скачиванием дистрибутива с официального сайта.
Готовые собранные контейнеры - https://hub.docker.com/r/gvenzl/oracle-xe
Они же используются для тестирования с использованием testcontainers (джавистам на заметку).
Доступны - 11, 18, 21 версии. Начиная с 18й версии редакция XE обладает всеми опциями, что и Enterprise Edition (EE). Так что её хватит сполна.
Продолжение ⬇️
Краткая инструкция (для Windows):
1️⃣ Устанавливаете Docker в вашу ОС.
https://docs.docker.com/desktop/install/windows-install/
2️⃣ Скачиваете image с нужной версией Oracle.
Версию выбираете на страничке проекта.
Выполняете в командной строке:
3️⃣ Создаете контейнер из image с указанием параметров
Например:
Контейнер создастся практически мгновенно.
4️⃣ Скачиваете Oracle client и настраиваете network\admin\tnsnames.ora
Добавляете в него алиас на новую БД.
Внутрь контейнера можно попасть через
PS. Параметров создания БД гораздо больше, можно настроить очень гибко.
По умолчанию, удаленное подключение (не с сервера) к SYS + пароль не доступно (не важно как вы устанавливаете БД). Для настройки нужно выполнять доп. приседания.
Обсудить в чатике 💬
#docker #oraclexe
Oracle Developer
1️⃣ Устанавливаете Docker в вашу ОС.
https://docs.docker.com/desktop/install/windows-install/
2️⃣ Скачиваете image с нужной версией Oracle.
Версию выбираете на страничке проекта.
Выполняете в командной строке:
docker pull gvenzl/oracle-xe:21.3.0Скорость скачивания зависит от вашего интернета.
3️⃣ Создаете контейнер из image с указанием параметров
Например:
docker run --name oradb21xe -d -p 1523:1521 -e ORACLE_PASSWORD=booble34 gvenzl/oracle-xe:21.3.0имя контейнера oradb21xe, порт доступа - 1523, пароль для sys/system - booble34
Контейнер создастся практически мгновенно.
4️⃣ Скачиваете Oracle client и настраиваете network\admin\tnsnames.ora
Добавляете в него алиас на новую БД.
oradb21xe =Всё 🔥
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1523))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xepdb1)
)
)
Внутрь контейнера можно попасть через
docker exec -it oradb21xe /bin/bashК БД можно подключиться
sqlplus system/booble34@oradb21xeДля Mac/*nix почти тоже самое.
PS. Параметров создания БД гораздо больше, можно настроить очень гибко.
По умолчанию, удаленное подключение (не с сервера) к SYS + пароль не доступно (не важно как вы устанавливаете БД). Для настройки нужно выполнять доп. приседания.
Обсудить в чатике 💬
#docker #oraclexe
Oracle Developer
Друзья всем привет!
Объявляю эту неделю - неделей знакомства с PostgreSQL. Одной из главных альтернатив Oracle на международном и российском рынке, в частности. Ведь PostgreSQL версии Pro прошла сертификацию ФСТЭК и внесена в реестр отечественного ПО.
Рано или поздно вы столкнетесь с этой СУБД, если еще не.
продолжение ⬇️
Объявляю эту неделю - неделей знакомства с PostgreSQL. Одной из главных альтернатив Oracle на международном и российском рынке, в частности. Ведь PostgreSQL версии Pro прошла сертификацию ФСТЭК и внесена в реестр отечественного ПО.
Рано или поздно вы столкнетесь с этой СУБД, если еще не.
продолжение ⬇️
Немного истории
PostgreSQL был создан в 1986 году в Университете Массачусетса в Бостоне. Он вырос из проекта POSTGRES, который затем был переименован в СУБД PostgreSQL.
В начале 1990-х годов PostgreSQL стал открытым исходным программным обеспечением. С тех пор PostgreSQL набрала значительную популярность среди СУБД. Достаточно взглянуть на тренды.
Одним из главных контрибьютеров открытого комьюнити был и есть Олег Бартунов 🇷🇺. Олег часто участвует в конференциях, на Youtube есть множество докладов.
В 2015 году он и его коллеги стали развивать платную версию - Postgres Pro (Professional), которая имеет дополнительные фишки (автономные транзакции, секционирование из коробки и др), а также тех поддержку.
Да, эта та самая СУБД в реестре отечественного ПО.
Их же компания пишет отличную документацию на русском и создает обучающие курсы.
Фишки из платных версий Pg постепенно перетекают в бесплатную версию.
продолжение ⬇️
#postgresql
Oracle Developer
PostgreSQL был создан в 1986 году в Университете Массачусетса в Бостоне. Он вырос из проекта POSTGRES, который затем был переименован в СУБД PostgreSQL.
В начале 1990-х годов PostgreSQL стал открытым исходным программным обеспечением. С тех пор PostgreSQL набрала значительную популярность среди СУБД. Достаточно взглянуть на тренды.
Одним из главных контрибьютеров открытого комьюнити был и есть Олег Бартунов 🇷🇺. Олег часто участвует в конференциях, на Youtube есть множество докладов.
В 2015 году он и его коллеги стали развивать платную версию - Postgres Pro (Professional), которая имеет дополнительные фишки (автономные транзакции, секционирование из коробки и др), а также тех поддержку.
Да, эта та самая СУБД в реестре отечественного ПО.
Их же компания пишет отличную документацию на русском и создает обучающие курсы.
Фишки из платных версий Pg постепенно перетекают в бесплатную версию.
продолжение ⬇️
#postgresql
Oracle Developer
Возможности СУБД
PostgreSQL это мощная объектно-реляционная СУБД, которая предлагает широкий спектр функциональности, включая:
1️⃣ Поддержка ACID (Atomicity, Consistency, Isolation, Durability) транзакций для обеспечения целостности данных.
2️⃣ Поддержка хранения и управления данными в различных форматах, таких как JSON, XML и др.
3️⃣ Расширенные возможности аналитики и агрегации, включая поддержку оконных функций, группирования и анализа данных.
4️⃣ Репликация и высокая доступность, включая поддержку резервного копирования, асинхронной репликации и репликации с нескольких источников.
5️⃣ Механизмы управления безопасностью, включая поддержку ролей, прав доступа и контроля доступа к данным.
6️⃣ Расширенные возможности индексирования и оптимизации запросов, включая поддержку различных типов индексов, таких как B-Tree, Hash, GIN и др.
7️⃣ Поддержку языков программирования и расширений, таких как PL/pgSQL, PL/Tcl, PL/Perl и др.
8️⃣ Открытый исходный код и активную комьюнити, которая разрабатывает и улучшает функциональность.
9️⃣ Огромные возможности для расширения функциональности с помощью сторонних модулей и плагинов.
🔟 Производительность, надежность и масштабируемость, которые делают ее подходящей для решения широкого спектра задач в небольших и крупных организациях.
Конечно, в любом ПО есть свои плюсы и минусы.
—-
Завтра я расскажу, как можно развернуть PG локально в пару команд 😉
#postgresql
Oracle Developer
PostgreSQL это мощная объектно-реляционная СУБД, которая предлагает широкий спектр функциональности, включая:
1️⃣ Поддержка ACID (Atomicity, Consistency, Isolation, Durability) транзакций для обеспечения целостности данных.
2️⃣ Поддержка хранения и управления данными в различных форматах, таких как JSON, XML и др.
3️⃣ Расширенные возможности аналитики и агрегации, включая поддержку оконных функций, группирования и анализа данных.
4️⃣ Репликация и высокая доступность, включая поддержку резервного копирования, асинхронной репликации и репликации с нескольких источников.
5️⃣ Механизмы управления безопасностью, включая поддержку ролей, прав доступа и контроля доступа к данным.
6️⃣ Расширенные возможности индексирования и оптимизации запросов, включая поддержку различных типов индексов, таких как B-Tree, Hash, GIN и др.
7️⃣ Поддержку языков программирования и расширений, таких как PL/pgSQL, PL/Tcl, PL/Perl и др.
8️⃣ Открытый исходный код и активную комьюнити, которая разрабатывает и улучшает функциональность.
9️⃣ Огромные возможности для расширения функциональности с помощью сторонних модулей и плагинов.
🔟 Производительность, надежность и масштабируемость, которые делают ее подходящей для решения широкого спектра задач в небольших и крупных организациях.
Конечно, в любом ПО есть свои плюсы и минусы.
—-
Завтра я расскажу, как можно развернуть PG локально в пару команд 😉
#postgresql
Oracle Developer
Инструкция создания БД PostgreSQL в Docker
Создание БД в Docker - отличный способ быстро приступить к экспериментам. Процесс элементарный.
1️⃣ Устанавливаем Docker на вашу ОС
Win Mac Linux
2️⃣ Запускаем контейнер с 14-й версией
3️⃣ Проверяем, что контейнер запущен
⚠️ СУБД поднимается в самой минимальной конфигурации.
Продолжение завтра 😉
#docker #postgresql
Oracle Developer
Создание БД в Docker - отличный способ быстро приступить к экспериментам. Процесс элементарный.
1️⃣ Устанавливаем Docker на вашу ОС
Win Mac Linux
2️⃣ Запускаем контейнер с 14-й версией
docker run -p 5434:5432 --name mypgdb14 -e POSTGRES_PASSWORD=mypass -d postgres:14Если у вас еще нет образа (image) c postgres:14, то он будет скачан. Время запуска зависит от вашей скорости интернета. Последующие создания контейнеров будут занимать пару секунд.
mypgdb14 - название pg-кластера
mypass - пароль
5434:5432 - проброс стандартного порта на 5434
postgres:14 - версия Pg
3️⃣ Проверяем, что контейнер запущен
docker ps4️⃣ Подключаемся к консоли
docker exec -it mypgdb14 psql -U postgresВсё, теперь можно эксплуатировать контейнер в хвост и гриву.
⚠️ СУБД поднимается в самой минимальной конфигурации.
Продолжение завтра 😉
#docker #postgresql
Oracle Developer