Предлагаю сыграть в игру.
Представим, что у нас есть 2 таблицы:
🔶
🔶
🔹
🔹
🎮 Я буду давать задания на написание SQL запросов к этим таблицам. А вы в комментах пишите запрос.
🎮 Задания будут постепенно усложняться. После первого правильного ответа я даю следующее задание.
🎮 Победит тот, кто даст больше всех правильных ответов.
Задание 1
Вывести все данные из таблицы "Employees"
Представим, что у нас есть 2 таблицы:
🔶
Employees:🔹employee_id (целое число, первичный ключ)🔹first_name (строка, имя сотрудника)🔹last_name (строка, фамилия сотрудника)🔹department_id (целое число, внешний ключ, связан с department_id в таблице Departments)🔹salary (дробное число, зарплата сотрудника)🔶
Departments:🔹
department_id (целое число, первичный ключ)🔹
department_name (строка, название отдела)Задание 1
Вывести все данные из таблицы "Employees"
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2
Самая простая игра на Java которую ты можешь написать уже сейчас!
В далеком 2007 году, в маленьком городе Нальчик, я ехал в маршрутке к репетитору по программированию. Тогда я еще не знал, что в тот вечер мне будет дано задание написать игру на паскале. И уж тем более не подозревал, что спустя 17 лет, я буду сидеть в Санкт-Петербурге и предлагать уже другим людям написать ту самую, маленькую, но очень гордую игру.
И словно для того, чтобы я продолжал эксплуатировать стереотипы о кавказцах, эта игра называется Быки и Коровы.
Суть ее проста.
Компьютер загадывает число определенной длины (минимум 4-ех значное)
Задача человека - угадать число.
В ответ на каждую попытку компьютер выводит два числа: количество верно угаданных цифр и количество верно угаданных цифр, стоящих в правильной позиции.
Например.
Две цифры угаданы верно (3, 4) и обе стоят в нужной позиции.
Задача игрока - вычислить задуманное число за минимальное количество попыток.
Попробуйте написать такую игрушку и поделиться своим решением. Способов создать такую игру много.
И еще, кто-нибудь может объяснить почему игра называется Быки и Коровы?
В далеком 2007 году, в маленьком городе Нальчик, я ехал в маршрутке к репетитору по программированию. Тогда я еще не знал, что в тот вечер мне будет дано задание написать игру на паскале. И уж тем более не подозревал, что спустя 17 лет, я буду сидеть в Санкт-Петербурге и предлагать уже другим людям написать ту самую, маленькую, но очень гордую игру.
И словно для того, чтобы я продолжал эксплуатировать стереотипы о кавказцах, эта игра называется Быки и Коровы.
Суть ее проста.
Компьютер загадывает число определенной длины (минимум 4-ех значное)
Задача человека - угадать число.
В ответ на каждую попытку компьютер выводит два числа: количество верно угаданных цифр и количество верно угаданных цифр, стоящих в правильной позиции.
Например.
Компьютер загадал число: 4356Две цифры угаданы верно (3, 4), но 0 цифр угаданы в нужной позиции
Первая попытка: 1234
Вывод компьютера: 2, 0.
Вторая попытка: 4321
Вывод компьютера: 2, 2
Две цифры угаданы верно (3, 4) и обе стоят в нужной позиции.
Задача игрока - вычислить задуманное число за минимальное количество попыток.
Попробуйте написать такую игрушку и поделиться своим решением. Способов создать такую игру много.
И еще, кто-нибудь может объяснить почему игра называется Быки и Коровы?
🔥10👍2🦄2👨💻1
Всем привет!
Вот тут я спрашивал у вас, о чем бы вам было интересно посмотреть видос.
Получил несколько сообщений о том, что было бы интересно послушать о брокерах сообщений.
Мне кажется (сугубо мое имхо), что для джуна знание и умение работать с брокерами сообщений не обязательно.
Но в ходе размышлений на эту тему, решил что полезно будет осветить некоторые вещи, лежащие в основе брокеров сообщений.
В связи с этим, хочу предложить вам подумать над рядом вопросов, а чуть позже, выложу пост на эту тему.
Есть 2 шаблона проектирования:
1. Наблюдатель
2. Издатель - подписчик
❓❓❓
Вопросы:
1. Какую задачу решают эти шаблоны?
2. В чем отличие одного от другого?
3. Не могли бы вы придумать кейс, в котором уместно было бы использовать 1 из них (ну или использовать брокер сообщений)
Если знаете ответы, поделитесь, пожалуйста. Если не знаете - предлагаю погуглить и постараться ответить, как вы это понимаете.
А чуть погодя сделаю пост, где сам постараюсь раскрыть эту тему.
PS на собесах про брокеры сообщений спрашивают гораздо реже, чем про паттерны проектирования. Заготовьте себе крутой ответ на такой вопрос, ответив на три моих вопроса выше 😎
Вот тут я спрашивал у вас, о чем бы вам было интересно посмотреть видос.
Получил несколько сообщений о том, что было бы интересно послушать о брокерах сообщений.
Мне кажется (сугубо мое имхо), что для джуна знание и умение работать с брокерами сообщений не обязательно.
Но в ходе размышлений на эту тему, решил что полезно будет осветить некоторые вещи, лежащие в основе брокеров сообщений.
В связи с этим, хочу предложить вам подумать над рядом вопросов, а чуть позже, выложу пост на эту тему.
Есть 2 шаблона проектирования:
1. Наблюдатель
2. Издатель - подписчик
❓❓❓
Вопросы:
1. Какую задачу решают эти шаблоны?
2. В чем отличие одного от другого?
3. Не могли бы вы придумать кейс, в котором уместно было бы использовать 1 из них (ну или использовать брокер сообщений)
Если знаете ответы, поделитесь, пожалуйста. Если не знаете - предлагаю погуглить и постараться ответить, как вы это понимаете.
А чуть погодя сделаю пост, где сам постараюсь раскрыть эту тему.
PS на собесах про брокеры сообщений спрашивают гораздо реже, чем про паттерны проектирования. Заготовьте себе крутой ответ на такой вопрос, ответив на три моих вопроса выше 😎
Telescope
Java Mentor
🔥5❤🔥3❤2🦄2👍1
Шаблон проектирования: Наблюдатель
В прошлом посте я коснулся темы шаблонов проектирования Наблюдатель и Издатель-Подписчик.
Постараюсь разобрать первый из двух, а потом рассмотрим и второй.
Как известно, шаблоны проектирования бывают:
⭐️ Порождающие
⭐️ Структурные
⭐️ Поведенческие
Наблюдатель является поведенческим шаблоном проектирования, который позволяет одним объектам следить и реагировать на события, происходящие в других объектах, благодаря механизму подписки.
Иными словами, я как часть программы, подписываюсь на изменения в определенных объектах, и меня, в случае таких изменений, оповещают. Мол, братан, там чет поменялось, ты просил пнуть тебя, если че-то поменяется.
Но на кой черт мне просить оповещать меня? Ситуация, скажем прямо, не повседневная.
Для ответа на вопрос "Нах Зачем?", рассмотрим пример из врачебной практики.
Представьте себе диспетчера, который сидит перед монитором, и видит на нем как разная техника ездит по дорогам.
И вдруг, о Боже! Один экскаватор замигал красными огнями. Код красный, код красный, экскаватор в беде. Пукан диспетчера взрывается😫 , что побуждает его совершить определенные действия 🛠 .
Теперь рассмотрим эту же ситуацию изнутри. Диспетчер видит технику. Как эта информация поступает к нему? Он должен видеть изменения координат каждой машинки🚗 .
Вариантов реализовать это 2.
Первый вариант. Фронт шлет запросы на сервер. Много запросов. И спрашивает: "Чувак, че нить поменялось? А теперь? А теперь?" И сервер на каждый такой запрос говорит: "Да, поменялось, вот эти машинки были тут, теперь они здесь. А еще у экскаватора припадок".
Это не очень эффективно, так как ну много запросов, нагрузка большая.
Специально для таких кейсов умные ребята в странных свитерах придумали другой протокол. WebSocket
Веб-сокет это такой протокол, при котором между двумя системами открывается канал для передачи сообщений, который длительное время может быть открытым .
В отличии от HTTP, где у нас всегда есть запрос-ответ, в веб-сокете это совсем не обязательно. Возможно отправлять безграничное множество сообщений от одного сервиса в другой и наоборот. Например 10 в одну сторону 20 в другую. Количество ничем не ограничено, как и очередность💌 ✉️ 💌
Это позволяет отправлять информацию на фронт, не дожидаясь от него запроса на получение этой информации.
Теперь наденем резиновые перчатки🎮 и погрузимся еще глубже в эту ситуацию.
🎮 Заглянем в бэкенд 🎮
Представьте себе класс, отвечающий за отправку веб-сокет сообщений во все веб-сокет сессии.
Но как этот класс должен понимать, что ему нужно отправить сообщение? Должен ли он постоянно мониторить состояние техники? Должен ли он постоянно самолично интересоваться состоянием каждой техники? Это было бы сложно.
Именно тут на сцену выходит
Observer - Наблюдатель
Шаблон, который позволит серверу держать фронт в актуальном состоянии, и разработчику не взорвать мозг при проектировании сложной логики.
Что произойдет?
Класс, который отвечает за отправку веб-сокет сообщений, просто единожды подпишется на изменения состояний техники, а когда эти изменения произойдут, наш класс будет оповещен, и отправит сообщение в веб-сокет сессию.
Согласен, можно было бы придумать что попроще, но мне хотелось показать вам реальные задачи, которые решаются с помощью изучаемых вами материалов.
Теперь, попробуем обернуть все в код.
В примере сознательно допущены упрощения, для лучшего восприятия. Хороший пример данного шаблона вы можете найти здесь.
В прошлом посте я коснулся темы шаблонов проектирования Наблюдатель и Издатель-Подписчик.
Постараюсь разобрать первый из двух, а потом рассмотрим и второй.
Как известно, шаблоны проектирования бывают:
Наблюдатель является поведенческим шаблоном проектирования, который позволяет одним объектам следить и реагировать на события, происходящие в других объектах, благодаря механизму подписки.
Иными словами, я как часть программы, подписываюсь на изменения в определенных объектах, и меня, в случае таких изменений, оповещают. Мол, братан, там чет поменялось, ты просил пнуть тебя, если че-то поменяется.
Но на кой черт мне просить оповещать меня? Ситуация, скажем прямо, не повседневная.
Для ответа на вопрос "
Представьте себе диспетчера, который сидит перед монитором, и видит на нем как разная техника ездит по дорогам.
И вдруг, о Боже! Один экскаватор замигал красными огнями. Код красный, код красный, экскаватор в беде. Пукан диспетчера взрывается
Теперь рассмотрим эту же ситуацию изнутри. Диспетчер видит технику. Как эта информация поступает к нему? Он должен видеть изменения координат каждой машинки
Вариантов реализовать это 2.
Первый вариант. Фронт шлет запросы на сервер. Много запросов. И спрашивает: "Чувак, че нить поменялось? А теперь? А теперь?" И сервер на каждый такой запрос говорит: "Да, поменялось, вот эти машинки были тут, теперь они здесь. А еще у экскаватора припадок".
Это не очень эффективно, так как ну много запросов, нагрузка большая.
Специально для таких кейсов умные ребята в странных свитерах придумали другой протокол. WebSocket
Веб-сокет это такой протокол, при котором между двумя системами открывается канал для передачи сообщений, который длительное время может быть открытым .
В отличии от HTTP, где у нас всегда есть запрос-ответ, в веб-сокете это совсем не обязательно. Возможно отправлять безграничное множество сообщений от одного сервиса в другой и наоборот. Например 10 в одну сторону 20 в другую. Количество ничем не ограничено, как и очередность
Это позволяет отправлять информацию на фронт, не дожидаясь от него запроса на получение этой информации.
Теперь наденем резиновые перчатки
Представьте себе класс, отвечающий за отправку веб-сокет сообщений во все веб-сокет сессии.
Но как этот класс должен понимать, что ему нужно отправить сообщение? Должен ли он постоянно мониторить состояние техники? Должен ли он постоянно самолично интересоваться состоянием каждой техники? Это было бы сложно.
Именно тут на сцену выходит
Observer - Наблюдатель
Шаблон, который позволит серверу держать фронт в актуальном состоянии, и разработчику не взорвать мозг при проектировании сложной логики.
Что произойдет?
Класс, который отвечает за отправку веб-сокет сообщений, просто единожды подпишется на изменения состояний техники, а когда эти изменения произойдут, наш класс будет оповещен, и отправит сообщение в веб-сокет сессию.
Согласен, можно было бы придумать что попроще, но мне хотелось показать вам реальные задачи, которые решаются с помощью изучаемых вами материалов.
Теперь, попробуем обернуть все в код.
В примере сознательно допущены упрощения, для лучшего восприятия. Хороший пример данного шаблона вы можете найти здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤5👍3
public class Main {
/**
* Менеджер наблюдателей с возможностью подписки,
* отписки и оповещения
*/
public static class EventManager {
// Список наблюдателей
List<EventListener> listeners = new ArrayList<>();
/**
* Подписка наблюдателя
* @param listener наблюдатель
*/
public void subscribe(EventListener listener) {
listeners.add(listener);
}
/**
* Отписка наблюдателя
* @param listener наблюдатель
*/
public void unsubscribe(EventListener listener) {
listeners.remove(listener);
}
/**
* Оповещение наблюдателей
* @param data данные для передачи наблюдателям
*/
public void notify(String data) {
for (EventListener listener : listeners) {
listener.update(data);
}
}
}
/**
* Сервис, отвечающий за изменения состояний техники
*/
public static class TransportService {
public EventManager eventManager;
public TransportService(EventManager eventManager) {
this.eventManager = eventManager;
}
/**
* Метод для изменения координат
* @param coordinates новые координаты
*/
public void changeCoordinates(String coordinates) {
// Оповещение всех подписчиков о смене координат
eventManager.notify(coordinates);
}
}
/**
* Наш наблюдатель
*/
public interface EventListener {
/**
* Метод, который будет выполнен, когда наблюдателя оповестят об изменении
* @param data данные изменения
*/
void update(String data);
}
/**
* Класс, отвечающий за отправку WebSocket сообщений
*/
public static class WsNotificationListener implements EventListener {
/**
* Демо метод отправки сообщений. Будет вызван при изменении
* Состояний техники
* @param data данные изменения
*/
@Override
public void update(String data) {
System.out.println("Sending message to ws session: " + data);
}
}
public static void main(String[] args) {
// Отправитель ws сообщений
WsNotificationListener wsNotificationListener = new WsNotificationListener();
// Манагер наблюдателей
EventManager eventManager = new EventManager();
// Отправитель ws сообщений подписывается на изменения
eventManager.subscribe(wsNotificationListener);
// Сервис транспорта. Передаем ему манагера наблюдателей
TransportService service = new TransportService(eventManager);
Random random = new Random();
for (int i = 0; i < 100; i++) {
// В сервисе транспорта меняем координаты, по выводу в консоль убеждаемся что происходит отправка ws сообщений
service.changeCoordinates(String.format("New Coordinates [%s, %s]", random.nextInt(), random.nextInt()));
}
}
}Задачка
Есть класс Car с двумя полями: brand и model.
Также есть List<Car> - список машин различных брендов и моделей.
Задача 1
Привести список к мапе со вложенностью:
Здесь ключ внешней мапы - brand. Значение - мапа со всеми моделями данной марки, в которой ключ - это модель авто, а значение - сам объект.
Задача 2
Отфильтровать
Для фильтра используется объект класса Filter с двумя полями: Set<String> brands и Set<String> models;
Правила фильтрации:
Если brands == null, тогда не фильтруем по этому полю. Иначе только те марки машин, которые перечислены в поле brands
Если models == null, тогда не фильтруем по этому полю. Иначе только те модели авто, которые перечислены в поле models
Задача 3
Собрать из
Код всего что нужно для решения - в коментах к этому посту.
Постарайтесь использовать Stream API для решения этой задачи.
Есть класс Car с двумя полями: brand и model.
Также есть List<Car> - список машин различных брендов и моделей.
Задача 1
Привести список к мапе со вложенностью:
Map<String, Map<String, Car>>
Здесь ключ внешней мапы - brand. Значение - мапа со всеми моделями данной марки, в которой ключ - это модель авто, а значение - сам объект.
Задача 2
Отфильтровать
List<Car>Для фильтра используется объект класса Filter с двумя полями: Set<String> brands и Set<String> models;
Правила фильтрации:
Если brands == null, тогда не фильтруем по этому полю. Иначе только те марки машин, которые перечислены в поле brands
Если models == null, тогда не фильтруем по этому полю. Иначе только те модели авто, которые перечислены в поле models
Задача 3
Собрать из
Map<String, Map<String, Car>> список List<Car>Код всего что нужно для решения - в коментах к этому посту.
Постарайтесь использовать Stream API для решения этой задачи.
🔥5👍2
Media is too big
VIEW IN TELEGRAM
Ну а теперь немного интересных новостей.
Закончил работу над последним проектом со своим учеником.
Посмотрите какой клевый бот для записи к барберу получился😍
И вместе с работой над этим проектом подошло к концу мое наставничество со всеми ребятами.
Я обязательно поделюсь с вами этим опытом, кажется я узнал не меньше, чем мои ученики 😅
А еще расскажу о своем следующем проекте, который гораздо масштабнее и я надеюсь круче, чем занятия 1 на 1, и принесет пользы гораздо большему числу людей.
Stay tuned, как говорится )
Закончил работу над последним проектом со своим учеником.
Посмотрите какой клевый бот для записи к барберу получился
И вместе с работой над этим проектом подошло к концу мое наставничество со всеми ребятами.
Я обязательно поделюсь с вами этим опытом, кажется я узнал не меньше, чем мои ученики 😅
А еще расскажу о своем следующем проекте, который гораздо масштабнее и я надеюсь круче, чем занятия 1 на 1, и принесет пользы гораздо большему числу людей.
Stay tuned, как говорится )
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5❤4
Проблема с Spring Security заключается в том, что не существует единого то гайда на все случаи жизни.
Это потому, что веб-приложениях (и тут не важно на джаве они написаны или на любом другом языке) существует довольно много способов и протоколов аутентификации и авторизации.
От такого многообразия новичку сносит башню.
На чем же сосредоточиться в начале пути?
Наиболее распространен способ аутентификации через JWT токен. Такой способ используется в REST приложениях.
JWT не подсходит, если у вас html странички.
Дело в том, что JWT токен передается в заголовке запроса. Без JavaScript в голом html сделать это невозможно.
Для начала, лучше отказаться от реализации аутентификации и авторизации через JWT токен.
Я бы рекомендовал в начале попробовать реализовать этот механизм через логин форму. Простую html форму, в которой передается логин и пароль.
Что гуглить для этого?
два 3 варианта:
1. Отказаться от фронта, и делать просто REST приложение. Чисто backend. Тогда тестировать приложение нужно будет через постман.
2. Научиться с помощью JavaScript управлять токенами и передавать их на бэк в заголовке запроса.
3. Изучить реакт и делать полноценное фронтенд приложение (если есть лишний год времени).
Здесь может быть заманчивой перспектива стать фулл-стэк разработчиком. Но на рынке не очень большая потребность в такой связке Java-React. Я бы не рекомендовал этот путь избирать вначале. Мне кажется, что если очень хочется изучить реакт, лучше делать это после трудоустройства джавистом куда-нибудь.
Теперь ссылки. Почитайте Обзор способов и протоколов аутентификации в веб-приложениях
Туториал для JWT
Если прям очень сильно хочется в React, то вот неплохой курс из 100 уроков, бесплатно и на русском.
PS-Disclaimer данный пост сделан в качестве ответа на вопрос заданный в чатике, не является прям полноценным гайдом.
Это потому, что веб-приложениях (и тут не важно на джаве они написаны или на любом другом языке) существует довольно много способов и протоколов аутентификации и авторизации.
От такого многообразия новичку сносит башню.
На чем же сосредоточиться в начале пути?
Наиболее распространен способ аутентификации через JWT токен. Такой способ используется в REST приложениях.
JWT не подсходит, если у вас html странички.
Дело в том, что JWT токен передается в заголовке запроса. Без JavaScript в голом html сделать это невозможно.
Для начала, лучше отказаться от реализации аутентификации и авторизации через JWT токен.
Я бы рекомендовал в начале попробовать реализовать этот механизм через логин форму. Простую html форму, в которой передается логин и пароль.
Что гуглить для этого?
spring form login tutorial
Если все-таки хотите jwt, у вас 1. Отказаться от фронта, и делать просто REST приложение. Чисто backend. Тогда тестировать приложение нужно будет через постман.
2. Научиться с помощью JavaScript управлять токенами и передавать их на бэк в заголовке запроса.
3. Изучить реакт и делать полноценное фронтенд приложение (если есть лишний год времени).
Здесь может быть заманчивой перспектива стать фулл-стэк разработчиком. Но на рынке не очень большая потребность в такой связке Java-React. Я бы не рекомендовал этот путь избирать вначале. Мне кажется, что если очень хочется изучить реакт, лучше делать это после трудоустройства джавистом куда-нибудь.
Теперь ссылки. Почитайте Обзор способов и протоколов аутентификации в веб-приложениях
Туториал для JWT
Если прям очень сильно хочется в React, то вот неплохой курс из 100 уроков, бесплатно и на русском.
🔥10👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Знание английского больше не нужно!!!
Пост для тех, у кого беда с английским.
Сорян за кликбейтный заголовок, но мало ли, вдруг кто-то еще не в курсе.
Яндекс браузер позволяет переводить видосы налету.
А это значит, что вы можете смотреть любой туториал на английском с мгновенным переводом на русский, бесплатно и без регистрации😏
Работает как на компе, так и на мобиле.
Пожелал бы вам удачи в обучении, но с этой штукой удачи нужно уже не так много 😉
Пост для тех, у кого беда с английским.
Сорян за кликбейтный заголовок, но мало ли, вдруг кто-то еще не в курсе.
Яндекс браузер позволяет переводить видосы налету.
А это значит, что вы можете смотреть любой туториал на английском с мгновенным переводом на русский, бесплатно и без регистрации
Работает как на компе, так и на мобиле.
Пожелал бы вам удачи в обучении, но с этой штукой удачи нужно уже не так много 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤6👍5
А под что вы кодите?
Anonymous Poll
8%
Китайский чай
36%
Обычный черный чай
19%
Обычный зеленый чай
53%
Кофе
3%
Матча
8%
Кефир
11%
Бокал красного
8%
Свой вариант в комментах
Тут в чатике задали вопрос на тему:
Что делать после того, как изучил Spring?
Запишу для вас небольшой аудиоподкаст на эту тему и поделюсь своим мнением.
PS Залетайте в чатик, задавайте свои вопросы, так вы получите ответы, а я инфоповод для контента 😎
Что делать после того, как изучил Spring?
Запишу для вас небольшой аудиоподкаст на эту тему и поделюсь своим мнением.
PS Залетайте в чатик, задавайте свои вопросы, так вы получите ответы, а я инфоповод для контента 😎
👍5
Сидел, никого не трогал, писал свою реализацию игры быки и коровы для следующего видоса на YouTube, как вдруг бабах 🤯
Придумал для вас интересную задачку на кругозор и сообразительность
Необходимо создать случайное четырех значное число содержащие только уникальные цифры
ВНИМАНИЕ! Класс Random использовать запрещается 🚫
Успеете разгадать до того, как выложу видос? 😳 Но чур не гуглить и не джипитить 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
В общем, здравствуйте!
Неделька выдалась плодотворной, пришлось впервые конвертировать объекты в GeoJSON. Опыт интересный, но повторять его не хочется 😅
По мотивам этой деятельности родилась идея задать вам еще одну задачку.
Только давайте на этот раз договоримся, что вы потешите немного мое эго, и притворитесь, что задачка сложная и интересная, а не как в прошлый раз за 10 минут скинете правильный ответ 😂
Понеслась🎮
Представим себе что у нас есть объект - здание (Building).
У него есть характеристики:
🎮 Адрес
🎮 Количество помещений
🎮 Тип
Есть два типа зданий: Коммерческие и частные
Частные здания обладают дополнительной характеристикой:
🎮 Имя владельца
Коммерческие здания обладают дополнительными характеристиками:
🎮 Список компаний (которые размещаются в данном здании, можно просто List<String>)
🎮 Номер телефона администрации
Задача - спроектировать данные классы таким образом, чтобы можно было иметь объект Building и через него иметь доступ к дополнительной информации о здании.
Как вы поняли, дополнительная информация разная у объектов разного типа (Коммерческих и частных зданий).
Ограничения - все классы - final (от них нельзя наследоваться). Да и вообще необходимо решить данную задачу без использования наследования.
Решением будет считаться код класс(а/ов).
Неделька выдалась плодотворной, пришлось впервые конвертировать объекты в GeoJSON. Опыт интересный, но повторять его не хочется 😅
По мотивам этой деятельности родилась идея задать вам еще одну задачку.
Только давайте на этот раз договоримся, что вы потешите немного мое эго, и притворитесь, что задачка сложная и интересная, а не как в прошлый раз за 10 минут скинете правильный ответ 😂
Понеслась
Представим себе что у нас есть объект - здание (Building).
У него есть характеристики:
Есть два типа зданий: Коммерческие и частные
Частные здания обладают дополнительной характеристикой:
Коммерческие здания обладают дополнительными характеристиками:
Задача - спроектировать данные классы таким образом, чтобы можно было иметь объект Building и через него иметь доступ к дополнительной информации о здании.
Как вы поняли, дополнительная информация разная у объектов разного типа (Коммерческих и частных зданий).
Ограничения - все классы - final (от них нельзя наследоваться). Да и вообще необходимо решить данную задачу без использования наследования.
Решением будет считаться код класс(а/ов).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🗿1
Этим летом я впервые попробовал себя в качестве наставника.
Моим вторым учеником был Нурбакыт. Самый воспитанный и скромный среди прочих, он сталкивался с рядом трудностей.
Основной его трудностью, как выяснилось, был я😁 . Только когда наставничество закончилось, он признался, что кодить, когда я стою над душой - то еще удовольствие.
Однажды я заставил Нурбакыта удалить весь код по пройденной теме и написать все по новой, так как понял, что тема недостаточно хорошо усвоена😫
Короче говоря я дизморалил человека как мог, но несмотря на все трудности на прошлой неделе Нурик сумел таки пробиться на собесы😎
Их было два, и по итогу одного из них ему предложили сделать тестовое задание:
Написать бэк на спринге, а фронт на реакте.
Наверное вспомнив, как я кошмарю людей, Нурик написал все самостоятельно, и отправил итоговый вариант в компанию.
В начале этой неделе ему сделали Job Offer👍 🤝 🎉 💰
Я очень рад за него, также как и за всех других своих учеников, кому я имел счастье помочь найти работу.
Также как и за себя. Теперь я со всей ответственностью могу заявить, что ВСЕ, кого я учил, плюс минус за пол года нашли работу.
PS я пишу это просто чтобы поделиться радостью, у меня нет цели рекламировать себя как наставника (по крайней мере сейчас). И чуть позже я хочу поделиться своими дальнейшими планами
Моим вторым учеником был Нурбакыт. Самый воспитанный и скромный среди прочих, он сталкивался с рядом трудностей.
Основной его трудностью, как выяснилось, был я
Однажды я заставил Нурбакыта удалить весь код по пройденной теме и написать все по новой, так как понял, что тема недостаточно хорошо усвоена
Короче говоря я дизморалил человека как мог, но несмотря на все трудности на прошлой неделе Нурик сумел таки пробиться на собесы
Их было два, и по итогу одного из них ему предложили сделать тестовое задание:
Написать бэк на спринге, а фронт на реакте.
Наверное вспомнив, как я кошмарю людей, Нурик написал все самостоятельно, и отправил итоговый вариант в компанию.
В начале этой неделе ему сделали Job Offer
Я очень рад за него, также как и за всех других своих учеников, кому я имел счастье помочь найти работу.
Также как и за себя. Теперь я со всей ответственностью могу заявить, что ВСЕ, кого я учил, плюс минус за пол года нашли работу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤🔥4👍4👏1
Hello, world!
Проект был завершен почти на половину, но работы были приостановлены. Он не мог понять, что мешает ему двинуться дальше. Задачка пустяковая, нужно просто написать пару ендпоинтов, html страничек, прикрутить авторизацию. При удачном стечении мотивации делов-то на несколько часов работы. Но что-то не давало продвинуться дальше. Словно кость вставшая поперек горла. Всеобъемлющая апатия и алгоритмический паралич не давали сдвинуться с места ни на символ.
Он прокручивал в голове этот сценарий много раз: "Сначала нужно сделать проект, затем спроектировать план курса, затем просто все отснять". Но все колом встало на этапе "сделать проект". При мыслях об html завтрак начинал стучаться обратно в глотку просясь наружу.
Так день шел за днем, пока однажды эта агония не прекратила свое существование вместе с внезапным приходом ответа на вопрос: "Да почему я не могу продолжить?". Вдруг, черепашьим голосом мастера Огвей из кунг-фу панды прозвучало: "Просто у тебя не стоит на этот проект, выбери другой".
Бинго! "Ты всем говоришь заниматься пет-проектами, которые решают проблемы бизнеса, так зачем ты делаешь этот виш-лист?"
Виш-лист, проект которых миллионы в сети. Очередной пустозвонный туториал по тому, как надо писать хэлло ворлд на спринге. Меня тошнит просто от мысли нажимать кнопки ради этого.
Удалить все. Сначала CTRL+A, а затем размашисто и жирно послать все на три буквы DEL.
Другой проект... решение для бизнеса.... Точно! Вдруг стало совершенно очевидно что нужно делать, и как...
Всем доброго утра!
Да, я разрабатываю свой курс, и да, я все еще вижу галлюцинации.
Отвечу на ряд вопросов, которые поступают в лс:
1. Когда выйдет курс - не знаю. Не ждите меня, сила у вас внутри)
2. Беру ли я новых учеников - Нет
3. Планирую ли я брать новых учеников - возможно когда-нибудь
Пока я делаю свой курс я:
1. Постараюсь радовать вас контентом, полезным, бесполезным. Мне нравится возможность порой упорото себя вести.
2. Буду пить чай с печеньками
Проект был завершен почти на половину, но работы были приостановлены. Он не мог понять, что мешает ему двинуться дальше. Задачка пустяковая, нужно просто написать пару ендпоинтов, html страничек, прикрутить авторизацию. При удачном стечении мотивации делов-то на несколько часов работы. Но что-то не давало продвинуться дальше. Словно кость вставшая поперек горла. Всеобъемлющая апатия и алгоритмический паралич не давали сдвинуться с места ни на символ.
Он прокручивал в голове этот сценарий много раз: "Сначала нужно сделать проект, затем спроектировать план курса, затем просто все отснять". Но все колом встало на этапе "сделать проект". При мыслях об html завтрак начинал стучаться обратно в глотку просясь наружу.
Так день шел за днем, пока однажды эта агония не прекратила свое существование вместе с внезапным приходом ответа на вопрос: "Да почему я не могу продолжить?". Вдруг, черепашьим голосом мастера Огвей из кунг-фу панды прозвучало: "Просто у тебя не стоит на этот проект, выбери другой".
Бинго! "Ты всем говоришь заниматься пет-проектами, которые решают проблемы бизнеса, так зачем ты делаешь этот виш-лист?"
Виш-лист, проект которых миллионы в сети. Очередной пустозвонный туториал по тому, как надо писать хэлло ворлд на спринге. Меня тошнит просто от мысли нажимать кнопки ради этого.
Удалить все. Сначала CTRL+A, а затем размашисто и жирно послать все на три буквы DEL.
Другой проект... решение для бизнеса.... Точно! Вдруг стало совершенно очевидно что нужно делать, и как...
Всем доброго утра!
Да, я разрабатываю свой курс, и да, я все еще вижу галлюцинации.
Отвечу на ряд вопросов, которые поступают в лс:
1. Когда выйдет курс - не знаю. Не ждите меня, сила у вас внутри)
2. Беру ли я новых учеников - Нет
3. Планирую ли я брать новых учеников - возможно когда-нибудь
Пока я делаю свой курс я:
1. Постараюсь радовать вас контентом, полезным, бесполезным. Мне нравится возможность порой упорото себя вести.
2. Буду пить чай с печеньками
🔥7❤3👍3🦄2
И первая вещь, которой хочется с вами поделиться и которая совершенно никакого отношения к программированию не имеет, но произвела на меня большое впечатление. Это интервью с 4-ех кратным доктором наук, который расскажет как правильно выбрать спутника жизни, и почему долголетие напрямую зависит от того, ставите вы перед собой цели или нет.
https://www.youtube.com/watch?v=0H9TfRJz_fY&t=1s
https://www.youtube.com/watch?v=0H9TfRJz_fY&t=1s
YouTube
Алексей Ситников. Как помочь мозгу ставить правильную цель?
Витамины Александра Дзидзария https://ipsumvitamin.ru/
Клиника мужского здоровья доктора Дзидзария Biochek (Москва, Кутузовский проспект 18) +7 (903) 799-30-30 (запись в Вотсап)
Полезный Телеграм канал доктора Дзидзария: https://news.1rj.ru/str/DrDzari
Пройти тест…
Клиника мужского здоровья доктора Дзидзария Biochek (Москва, Кутузовский проспект 18) +7 (903) 799-30-30 (запись в Вотсап)
Полезный Телеграм канал доктора Дзидзария: https://news.1rj.ru/str/DrDzari
Пройти тест…
🔥6👍4❤🔥1👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Объявляется конкурс «проведи аналогию с программированием»
Моя версия: «Когда джуны увидели на какие костыли способен сеньор» 😂
Моя версия: «Когда джуны увидели на какие костыли способен сеньор» 😂
🤣5❤4🙈2