Сообщество - Лига программистов
Добавить пост

Лига программистов

1 520 постов 11 428 подписчиков

Популярные теги в сообществе:

Задачи с собеседования по SQL про псевдостолбцы

Задачи с собеседования по SQL про псевдостолбцы Программирование, IT, Собеседование, База данных, Oracle, Mysql, Ms SQL, Postgresql, SQL, Длиннопост

Здравствуйте, друзья!

Готовы порешать SQL-задачи на тему псевдостолбцов? Что такое псевдостолбцы и примеры их использования можно почитать тут.

Эти и другие задачи с собеседования опубликованы в нашем Телеграм-канале.

Итак, задача номер 1:

В таблице TEMP_TABLE один столбец и пять строк.
Запрос SELECT 1 FROM TEMP_TABLE

а) выведет данные из первого столбца для всех строк;

б) выведет просто цифру 1;

в) выведет пять строк, в каждой из которых будет цифра 1;

г) выдаст ошибку.

Здесь нужно поставить чтение на паузу и выбрать правильный вариант ответа.
На сегодня разброс ответов на задачу такой (правильный ответ в зелёном цвете):

Задачи с собеседования по SQL про псевдостолбцы Программирование, IT, Собеседование, База данных, Oracle, Mysql, Ms SQL, Postgresql, SQL, Длиннопост

Объяснение: данный в задаче запрос выводит данные из таблицы TEMP_TABLE (так как SELECT..FROM TEMP_TABLE), поэтому будут выводиться строки из неё (все сколько есть). Но в блоке SELECT не указан ни один из (настоящих) столбцов таблицы. Не выбираются данные из какого-либо столбца.
В нашем примере указано что пока выводятся строки из таблицы TEMP_TABLE нужно выводить цифру 1, а не показывать данные какого-либо столбца.

Задача 2:
Дана следующая таблица TEST_TABLE с тремя строками:
SELECT * FROM TEST_TABLE
ID  NAME
1  NULL
2  NULL
3  NULL
Каков будет результат следующего запроса: SELECT SUM(1) FROM TEST_TABLE?

Здесь опять нужно поставить чтение на паузу и написать правильный вариант ответа. На сегодня разброс ответов на задачу такой (правильный ответ в зелёном цвете):

Задачи с собеседования по SQL про псевдостолбцы Программирование, IT, Собеседование, База данных, Oracle, Mysql, Ms SQL, Postgresql, SQL, Длиннопост

Объяснение: здесь тоже речь идёт о псевдостолбце. Пока выводятся данные из TEST_TABLE блок SELECT выводит единицу, а не какой-либо реальный столбец таблицы. Пока не смотрите на функцию SUM. Итого единица выведется три раза (по количеству строк в таблице). И вот теперь, с помощью функции SUM получим сумму всех введённых чисел (единичек), то есть число 3.

Ещё больше SQL-задач с собеседований и реальной практики в разных СУБД в нашем Телеграм-канале.

Заходи на наш Youtube-канал и найдёшь много интересного и полезного про базы данных и язык SQL.

Показать полностью 2

Что вам делать с вашими крутыми идеями для стартапа

Из канла Kinda Digital Nomad

Так как я разработчик, мне люди часто говорят, что у них есть классная идея для приложения. Что его срочно нужно делать, что это бомба, мы заработаем миллионы и станем знаменитыми. И каждый раз мне приходит разочаровывать их, объясняя, как на самом деле это делается.

Что вам делать с вашими крутыми идеями для стартапа Идея, Бизнес-идея, Стартап, IT, Программирование, Программист, Проект, Бизнес, Разработка, Приложение, Приложение на Android, Приложение на iOS

В IT для этого существует целая отдельная роль. Product owner – человек, который определяет целевую аудиторию, общается с людьми, собирает и анализирует требования. И только проделав уйму работы, он приходит к разработчикам и говорит им, что нужно что-то запрограммировать.

На начальном этапе, если ваша идея ориентирована на обычных людей, нужно провести что-то около ста интервью. Если вашей ЦА являются бизнес-компании, то хватит десяти. На интервью следует задавать правильные вопросы, иначе вы рискуете получить ложноположительный результат и ввести себя в заблуждение. Про это пишут целые книги, рекомендую прочесть пару. К примеру, "Спроси маму: Как общаться с клиентами и подтвердить правоту своей бизнес-идеи, если все кругом врут?" Р. Фитцпатрика.

В идеале, интервью должно закончиться предпродажей. Если человек радостно кивает, когда вы ему изложили свою идею, то это вовсе не значит, что он будет готов за нее платить, когда у вас через полгода на руках будет готовое приложение. Внесенная предоплата будет маркером того, что человек действительно заинтересован. Вообще, лучше ничего не упоминать о вашей идее, а узнать, есть ли  у человека проблема, которую вы хотите решить.

И даже если таких людей наберется много, не бегите к программистам раньше времени. Программировать очень долго и дорого. Для начала нужно сделать прототип из палок и сами знаете чего. В интернете полно сервисов (вот, к примеру, несколько https://netpeaksoftware.com/ru/blog/10-programm-dlya-sozdani...), которые позволяют создать макет приложения и даже сделать его живым. Сделать кнопки кликабельными, анимировать переходы. Для этого даже не нужно уметь рисовать или программировать. Все, что вам потребуется, это время и упорство.

В итоге вы сможете вернуться к этим же людям и спросить, то ли это приложение, которое они себе представляли. Если да, то я вас поздравляю: вы прошли свою первую итерацию разработки. Их еще будет очень много. Вам нужно будет разбить ваше приложение на части так, чтобы разработку тоже можно было проводить итерациями. Чем короче итерация, тем лучше. Чем раньше люди смогут начать пользоваться приложением, тем быстрее вы поймете, работает ваша идея или нет. Непрерывная связь с пользователями важна на каждом этапе разработки. Изучите, что такое Customer Development и Lean. Эти методологии вам помогут.

Показать полностью 1

Cron теперь Notion Calendar

Некоторое время назад Notion купил Cron, и вот недавно состоялся релиз, теперь Cron - это Notion календарь, в котором доступна интеграция, как с гугл календарём, так и с базами в Notion.

Базы отображаются в левом нижнем углу, а записи - в верхней части календаря.

https://calendar.notion.so

#notion

Cron теперь Notion Calendar Кросспостинг, Pikabu Publish Bot, Notion, Google Calendar, Управление проектами

https://t.me/cherkashindev/159

Ответ на пост «Про программистов 1с»

Автор спрашивает, почему 1С-ников "не считают программистами".

Сам я кодер на PHP, плюс немного всё, что относится к веб, 1С тоже трогал пару раз)

Я не согласен, что "1С-ник не программист", однако...

  1. В любом языке можно найти сообщество, которому достаточно задать вопрос, и тебе бесплатно помогут. В 1С есть 1 сайт с форумом и множество клонов, где можно спросить и бесплатно пойти нахуй.

  2. Почти все решения платные. Причем, если заплатишь, не факт, что заработает. Потому что в 1С важно не только сама платформа, а и на какой конфигурации её запускаешь.

  3. Если хочешь сделать оригинальный компонент посложнее, чем пара строк, никто не скажет время и цену. Потому что на каждом предприятии зачастую уже своя отработанная годами система. Сделать с нуля часто проще, и цену и сроки скажут)))

  4. Вы не только программируете. Вы, как и написано в оригинальном посте, ОБЯЗАНЫ разбираться в бухгалтерии или в кадрах или в продажах или во всём сразу. Зачастую лучше других. Знаю случай, когда программиста взяли на работу в бухгалтерию замом гл. бухгалтера, потому что работы было ещё много и она действительно неплохо разбиралась в бухучёте.

  5. В целом 1С тусовка более закрыта, чем представители других языков.

В общем, 1С-ник не похож на обычного программиста (с тем же стажем). Его работа - оптимизация бизнес-процессов через программирование. И поскольку цена ошибки 1С-ника высока, его зарплата также выше. По-моему, справедливо. Но у некоторых бомбит)

Codeium — бесплатная альтернатива копайлоту

Пару месяцев назад я упоминал codeium — бесплатную альтернативу копайлоту. На новогодних праздниках наконец-то попробовал его на своём пет-проекте, и довольно часто он действительно ускоряет разработку. На скриншотах можно увидеть как codeium:

- Выводит значение enum’а
- Помогает писать тернарники
- Генерирует код по запросу в чате
- Может сгенерировать JSDoc или объяснить код

В текущих реалиях нужно включать VPN, чтобы работать с ChatGPT из России, здесь же есть встроенный чат, который работает без VPN 👍.

Codeium — бесплатная альтернатива копайлоту Кросспостинг, Pikabu Publish Bot, Искусственный интеллект, Видео, ChatGPT, Программирование, IT, Без звука, Длиннопост
Codeium — бесплатная альтернатива копайлоту Кросспостинг, Pikabu Publish Bot, Искусственный интеллект, Видео, ChatGPT, Программирование, IT, Без звука, Длиннопост
Codeium — бесплатная альтернатива копайлоту Кросспостинг, Pikabu Publish Bot, Искусственный интеллект, Видео, ChatGPT, Программирование, IT, Без звука, Длиннопост
Codeium — бесплатная альтернатива копайлоту Кросспостинг, Pikabu Publish Bot, Искусственный интеллект, Видео, ChatGPT, Программирование, IT, Без звука, Длиннопост
Codeium — бесплатная альтернатива копайлоту Кросспостинг, Pikabu Publish Bot, Искусственный интеллект, Видео, ChatGPT, Программирование, IT, Без звука, Длиннопост
Показать полностью 5

Полиморфизм

Сначала определение из википедии - способность функции обрабатывать данные разных типов.

Полиморфизм Опрос, Программирование, Oop, Ооп, IT, Длиннопост

1 + '1' и другие приколы

PHP - язык с динамической и слабой типизацией, это значит, что в процессе работы программы тип переменной может быть изменен. Более того, операнды не обязаны быть одного типа и интерпретатор сможет обработать такие варианты операций без ошибок:

<?php

echo 1 . 1; // 11

echo PHP_EOL;

echo 1 + 1; // 2

echo PHP_EOL;

echo 1 + '1'; // 2

?>

Такое поведение уже формально подпадает под определение, но мы конечно хотим от полиморфизма совсем другого.

Практическая польза от полиморфизма в том, чтобы использовать один и тот же код для обработки данных полученных из разных функций, классов файлов и других источников.

Например, у нас есть новостной сайт. И мы получаем из базы данных информацию о новостях, чтобы вывести их пользователю. Чтобы не подключать бд к php песочнице, определим формат новости как json объект:

{

"title": "This is title",

"text": "This is text",

"time": "2024-01-13 12:00:00"

}

Напишем функцию, которая разберет этот json на отдельные поля и выведет на экран с нужным форматированием.

<?php

$jsonString = '{"title": "This is title", "text": "This is text", "time": "2024-01-13 12:00:00"}';

function publish($jsonString){

$jsonObject = json_decode($jsonString);

echo "<h1>$jsonObject->title</h1>";

echo PHP_EOL;

echo "<p>$jsonObject->text</p>";

echo PHP_EOL;

echo "<span>$jsonObject->time</span>";

}

publish($jsonString);

?>

Пока что неплохо справляемся и без ооп с полиморфизмом. Давайте добавим на наш сайт не только новости, но еще и статьи. В статьях не будет времени публикации, но будет имя автора. К сожалению, наша функция перестанет работать, если мы передадим такой json в нее. И тогда надо писать другую. И так для каждого типа контента. Конечно можно добавить несколько if - else и перерисовать дизайн блоков в зависимости от типов, но есть способ получше.

Теперь нам придется написать несколько классов.

<?php

class News

{

private $jsonString;

public function __construct()

{

$this->jsonString = '{"title": "This is title", "text": "This is text", "time": "2024-01-13 12:00:00"}';

}

public function publish()

{

$jsonObject = json_decode($this->jsonString);

echo "<div class='news'>";

echo "<h1>$jsonObject->title</h1>";

echo "<p>$jsonObject->text</p>";

echo "<span>$jsonObject->time</span>";

echo "</div>";

}

}

class Article

{

private $jsonString;

public function __construct()

{

$this->jsonString = '{"title": "This is title", "text": "This is text", "author": "Pikabu Member"}';

}

public function publish()

{

$jsonObject = json_decode($this->jsonString);

echo "<div class='article'>";

echo "<h2>$jsonObject->title</h2>";

echo "<p>$jsonObject->text</p>";

echo "<span>$jsonObject->author</span>";

echo "</div>";

}

}

$contents[] = new News();

$contents[] = new Article();

foreach($contents as $content){

$content->publish();

echo PHP_EOL."<div class='divider'></div>".PHP_EOL;

}

?>

Классы News и Article имеют одно приватное свойство jsonString. Заполняют его при создании объекта в конструкторе и выводят информацию из этого свойства в методе publish.

Таким образом мы можем использовать один метод для отрисовки данных из разных классов. И в главном потоке программы использовать простую конструкцию foreach(){$content->publish} для вывода разных отформатированных блоков.

Кто-то также говорит, что многие реализации должны принадлежать одному интерфейсу. То есть, мы должны определить общий интерфейс для классов его реализующих. На этапе вызова общего метода проверить принадлежность к интерфейсу. Таким образом мы сможем расширять программу многими классами и не задумываться об изменении главной программы.

<?php

interface IContent

{

function publish();

}

class News implements IContent

{

private $jsonString;

public function __construct()

{

$this->jsonString = '{"title": "This is title", "text": "This is text", "time": "2024-01-13 12:00:00"}';

}

public function publish()

{

$jsonObject = json_decode($this->jsonString);

echo "<div class='news'>";

echo "<h1>$jsonObject->title</h1>";

echo "<p>$jsonObject->text</p>";

echo "<span>$jsonObject->time</span>";

echo "</div>";

}

}

class Article implements IContent

{

private $jsonString;

public function __construct()

{

$this->jsonString = '{"title": "This is title", "text": "This is text", "author": "Pikabu Member"}';

}

public function publish()

{

$jsonObject = json_decode($this->jsonString);

echo "<div class='article'>";

echo "<h2>$jsonObject->title</h2>";

echo "<p>$jsonObject->text</p>";

echo "<span>$jsonObject->author</span>";

echo "</div>";

}

}

$contents[] = new News();

$contents[] = new Article();

foreach($contents as $content){

if ($content instanceof IContent) {

$content->publish();

echo PHP_EOL."<div class='divider'></div>".PHP_EOL;

}

}

?>

Вместо заключения. Хоть праздники уже закончились, но статью я дописал только сейчас, поэтому - Желаю всем счастливого нового года, денег, тепла и мира.

Спасибо всем, кто смог дочитать этот пост до конца несмотря на ужасное оформление, примеры на php и общую безграмотность. Отдельное спасибо всем, кто заходит и подписывается на ютуб канал. Я начинаю готовить видео на тему ООП. Может быть примеры кода на видео будут более понятны.

Ссылки на полезные документы:

Ну и в конце добавлю опрос

Что рассмотрим в следующий раз?
Всего голосов:
Показать полностью 1 1

Продолжение поста «Java Simple Server для микросервисов?»

Продолжим собирать критику.

Погнали)



После прочтения комментариев к прошлому посту (особенно от @Deadwire, @MJcom и @user5097930) внес ряд изменений в библиотеку.

Коротко:

  1. Аннотации. Да они появились (аж целых две)

  2. Логирование. Пока не везде, но уже имеется.

  3. Автостартер сервера.


Есть два варианта запуска библиотеки:

  1. С аннотациями

  2. Без аннотаций

С аннотациями

Без наследования

Продолжение поста «Java Simple Server для микросервисов?» Java, Код, Длиннопост, Ответ на пост

С наследованием

Продолжение поста «Java Simple Server для микросервисов?» Java, Код, Длиннопост, Ответ на пост

Итого надо запомнить, что:

  1. Метод или класс, который запускает сервер, должен быть аннотирован @InitWebServer.

  2. @InitWebServer принимает два параметра: port и threads. По умолчанию port равен 8080, а threads равен 1.

  3. Метод, который реализует логику конечной точки, должен быть аннотирован @Endpoint.

  4. @Endpoint принимает четыре параметра: path, httpMethod, statusCode и filterContentLength. По умолчанию httpMethod равен HttpMethod.GET, statusCode равен 200, а filterContentLength равен -1.

Без аннотаций

Продолжение поста «Java Simple Server для микросервисов?» Java, Код, Длиннопост, Ответ на пост

Запуск без аннотаций больше похож на старый подход (тем не менее старая реализация помечена как устаревшая в первую очередь из-за изменений в классе Server. Теперь используется класс ServerNext).

Ничего умнее для названия класса ServerNext в голову не пришло.

Кто хочет - может кинуть в меня тапком. Для этого даже есть канал в дискорде))

Кидать в ZooMMaX`а

https://github.com/ZooMMaX/SimpleServer/wiki/ru

https://github.com/ZooMMaX/SimpleServer

Показать полностью 3

И еще три мока на неделе

И еще три мока на неделе
Отличная работа, все прочитано!