#вопросы_с_собеседования
Что такое loop devices? Как их можно использовать?
В Unix-подобных операционных системах устройство цикла , vnd (диск vnode) или lofi (интерфейс файла цикла) является псевдоустройством, которое делает компьютерный файл доступным как блочное устройство.
Перед использованием петлевое устройство должно быть подключено к существующему файлу в файловой системе. Ассоциация предоставляет пользователю интерфейс прикладного программирования (API), который позволяет использовать файл вместо блочного специального файла (см. Файловую систему устройства). Таким образом, если файл содержит всю файловую систему, файл может быть смонтирован, как если бы это было дисковое устройство.
Файлы этого типа часто используются для CD образов ISO и дискет образов. Монтирование файла, содержащего файловую систему, с помощью такого монтирования цикла делает файлы в этой файловой системе доступными. Они появляются в каталоге точки монтирования.
Петлевое подключение имеет несколько применений. Это удобный метод автономного управления и редактирования образов файловой системы, которые в дальнейшем используются для нормальной работы системы. Сюда входят образы CD или DVD или системы установки. Его можно использовать для установки операционной системы в файловую систему без повторного разбиения диска. Он также обеспечивает постоянное разделение данных, например, при имитации съемных носителей на более быстром и удобном жестком диске или инкапсуляции зашифрованной файловой системы.
Что такое loop devices? Как их можно использовать?
🔥6🥰1🎉1
#memes
Защита от белок 🐿️ чтобы провод не грызли.
Раньше ели шнурок, а теперь антенну почти сточили 😂
Защита от белок 🐿️ чтобы провод не грызли.
Раньше ели шнурок, а теперь антенну почти сточили 😂
😁6🤩6
Очередной #дайджест инструментов и материалов по DevOps
🟡 Container Security Fundamentals — автор серии видосов, рассказывает теорию погружения в тему безопасности контейнеров с примерами кода в консоли
🟡 GitHub Actions могли бы быть намного лучше — описание раздражающих нюансов в работе Гита, которые влияют на автора
🟡 Размышления о 10 000 часах DevOps — некоторые размышления после 10 000 часов работы в сфере DevOps
🟡 Темная сторона SRE — хронический стресс, карьерный застой и профессиональный риск, такое тоже может быть
🟡 SRE Stories — SRE, DevOps-инженеры, системные администраторы рассказывают про свою работу и профессиональный путь
🟡 Container Security Fundamentals — автор серии видосов, рассказывает теорию погружения в тему безопасности контейнеров с примерами кода в консоли
🟡 GitHub Actions могли бы быть намного лучше — описание раздражающих нюансов в работе Гита, которые влияют на автора
🟡 Размышления о 10 000 часах DevOps — некоторые размышления после 10 000 часов работы в сфере DevOps
🟡 Темная сторона SRE — хронический стресс, карьерный застой и профессиональный риск, такое тоже может быть
🟡 SRE Stories — SRE, DevOps-инженеры, системные администраторы рассказывают про свою работу и профессиональный путь
🤩11❤🔥11👍4🥰1
Forwarded from Библиотека питониста | Python, Django, Flask
🔤 Азбука SQL в примерах. Часть 2. Ограничения, которые упрощают жизнь
В предыдущей части мы выяснили, что такое SQL, создали свою первую базу данных и добавили в неё первую таблицу. Пришло время узнать, как сделать добавление данных в неё более простым и надёжным.
🔗 Читать статью
🔗 Зеркало
В предыдущей части мы выяснили, что такое SQL, создали свою первую базу данных и добавили в неё первую таблицу. Пришло время узнать, как сделать добавление данных в неё более простым и надёжным.
🔗 Читать статью
🔗 Зеркало
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Rustypaste
Это минималистичный и простой сервис загрузки, написанный на Rust и реализованный с использованием веб-фреймворка Actix, как наиболее подходящий фреймворк с точки зрения безопасности, производительности и простоты.
Самый простой способ взаимодействия с сервером rustypaste — использовать curl, но вы можете использовать инструмент командной строки под названием rpaste, который написан на Rust.
Возможности:
〽️ Загрузка файла, сокращение URL и загрузка по ссылке
〽️ Один бинарник
〽️ Простая конфигурация
〽️ Простота развертывания
〽️ Нет базы данных
〽️ Self-hosted
Это минималистичный и простой сервис загрузки, написанный на Rust и реализованный с использованием веб-фреймворка Actix, как наиболее подходящий фреймворк с точки зрения безопасности, производительности и простоты.
Самый простой способ взаимодействия с сервером rustypaste — использовать curl, но вы можете использовать инструмент командной строки под названием rpaste, который написан на Rust.
Возможности:
〽️ Загрузка файла, сокращение URL и загрузка по ссылке
〽️ Один бинарник
〽️ Простая конфигурация
〽️ Простота развертывания
〽️ Нет базы данных
〽️ Self-hosted
🔥8👍5👏3🎉3🥰2
🧪🧪📥 Email Alchemy — автономные почтовые сервисы
О настройке собственного сервера электронной почты. Обстоятельно, с объяснениями и конфигами
Подготовьтесь к длиннопосту 😉
#гайд
О настройке собственного сервера электронной почты. Обстоятельно, с объяснениями и конфигами
Подготовьтесь к длиннопосту 😉
#гайд
🔥6👍4
😱🔥 Intel 4004, первому процессору исполнилось 40 лет
15 ноября 1971 года Intel представила первый однокристальный процессор — 4 бита, 16 контактов и 740 КГц
15 ноября 1971 года Intel представила первый однокристальный процессор — 4 бита, 16 контактов и 740 КГц
❤15👍3🤔2🔥1🥰1
🥷💪 Шпаргалка по ZFS
Информация о пулах / файловых системах (ФС) на пулах
Управление пулами / дисками
Создание и свойства ФС
zfs create zfspool/backups создать ФС backups, обе ФС будут бесконтрольно расти, пока не выставлены квоты
Монтирование
Снапшоты
modinfo zfs | head -n 9
— узнать версию ZFS и другие подробностиИнформация о пулах / файловых системах (ФС) на пулах
zpool list
— статус пуловzpool status -v
— статус пулов подробныйzfs list
— список ФС, так называются монтируемые разделы в пулахzfs get all
— вся информация по пуламУправление пулами / дисками
ls -lha /dev/disk/by-id/
— выяснить id дисков чтобы потом на них создать пул (не юзайте имя диска типа sda — они динамически меняются)zpool create zfspool disk-id-1 disk-id-2
— может быть сколько угодно дисковzpool create -m /mnt/backups zfspool disk-id-1
— создать пул с указанием папки zpool destroy zfspool
— уничтожить пулmkfile 100m disk1 disk2
— создать файлы дисковzpool create backups /disk1 /disk2
- создать пул backups на созданных файлахzpool create zfspool mirror /disk1 /disk2
— создать пул zfspool с зеркалированием на 2 дискаzpool add zfspool /disk3
— добавить диск в пулzpool attach zfspool /disk3
— добавить устройство в пул, если он в зеркале — добавится в зеркало, если простой — пул расширитсяzpool detach zfspool /disk3
— исключить устройство из пулаzpool remove zfspool /disk3
— удаление устройства из пулаzpool add zfspool spare /disk3
— добавление диска горячей замены в пулzpool remove zfspool spare /disk3
— удаление диска горячей замены из пулаzpool offline zfspool /disk1
— отключить устройство, на него не будет чтения/записи, если добавить ключ -t, то после ребута станет онлайнzpool online zfspool /disk1
— включить disk1zpool replace zfspool /disk1 /disk3
— заменить disk 1, на disk3zpool upgrade -v
— увидеть версию, и фичи текущего ZFS, -a обновит все пулы до новейшей версииСоздание и свойства ФС
zfs create zfspool/data
— создать ФС datazfs create zfspool/backups создать ФС backups, обе ФС будут бесконтрольно расти, пока не выставлены квоты
zfs destroy -fr zfspool/backups/old
— уничтожит ФС old, ключ -r — рекурсивно, если внутри ещё несколько ФС, -f — форситьzfs set reservation=1G zfspool/data
— зарезервировать 1 Гигабайт, который ФС гарантированно получит, а другие не займутzfs list -o quota zfspool/backups
— выяснить квоту в пуле на ФС backupszfs set quota=1G zfspool/backups
— установить квоту в 1 Гигабайт на ФС backupszfs list -o compression
— проверить включена компрессия или нетzfs set compression=on zfspool/backups
— включить компрессию на ФС backups в пуле zfspool
zfs set sharesmb=on zfspool/backups
— расшарить по SMB ФС backups средствами ZFSzfs set sharenfs=on zfspool/backups
— расшарить по NFS ФС backups средствами ZFSМонтирование
zfs mount
— показать все примонтированные ФСzfs mount zfspool/backups
— примонтировать backupszfs umount zfspool/backups
— размонтировать ФС backupszfs mount -a
— смонтировать все ФСzfs umount -a Umount
— размонтировать все ФССнапшоты
zfs list -t snapshot
— отобразить все снапшотыzfs list -o space
— сколько занимают места снапшотыzfs snapshot zfspool/backups@test
— создать снапшот ФС backups с названием testzfs rollback zfspool/backups@test
— вернуться к снапшоту backups с названием test, с ключом -r рекурсивно уничтожит промежуточные снапшоты, с ключом -f форсит анмаунт и ремаунтzfs destroy zfspool/backups@test
— уничтожить снапшот backups с названием testzfs send zfspool/backups@march2021 > /home/backups/march2021.bak
— сделать локальный бекап снапшота march2021zfs receive zfspool2/backups2 < /home/backups/march2021.bak
— восстановить из локального снапшота ФС на другом пулеzfs send zfspool/backups@march2021 | ssh COMP02 «zfs receive testpool/testfs»
— отправить снапшот по SSH на хост COMP02zfs clone zfspool/backups@march2021 /clones/backups
— клонировать существующий снапшотzfs destroy zfspool/backups@march2021
— уничтожить клон👍7🔥3🤔2❤1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
❤4👍3
💪🧑🏫 Мощный курс от Cisco CCNA
Бесплатный и полный курс CCNA, охватывающий все, что вам нужно для сдачи последней версии экзамена CCNA (код экзамена 200-301). Нет лучшего способа начать свою карьеру в сфере ИТ, чем сертификация Cisco CCNA. Среди основных тем:
♦️ Network Devices
♦️ Anki Flashcards
♦️ Packet Tracer Introduction
♦️ Interfaces and Cables
♦️ Connecting Devices
♦️ OSI Model & TCP/IP Suite
♦️ OSI Model
♦️ Intro to the CLI
♦️ Basic Device Security
♦️ Ethernet LAN Switching
На данный момент доступно 118 видео
#видео
Бесплатный и полный курс CCNA, охватывающий все, что вам нужно для сдачи последней версии экзамена CCNA (код экзамена 200-301). Нет лучшего способа начать свою карьеру в сфере ИТ, чем сертификация Cisco CCNA. Среди основных тем:
♦️ Network Devices
♦️ Anki Flashcards
♦️ Packet Tracer Introduction
♦️ Interfaces and Cables
♦️ Connecting Devices
♦️ OSI Model & TCP/IP Suite
♦️ OSI Model
♦️ Intro to the CLI
♦️ Basic Device Security
♦️ Ethernet LAN Switching
На данный момент доступно 118 видео
#видео
❤🔥22👍4🔥3❤2
Очередной #дайджест инструментов и материалов по DevOps
🔹 Terraform-docs — полное руководство по документации Terraform с помощью terraform-docs
🔹 Б значит не Безумие, а Безопасность — автор делится реальным опытом и рассказывает про работу над проектом с кибербезопасностью, безопасностью инфраструктуры и DevSecOps
🔹 Kubernetes Global Balancer — решение для балансировки нагрузки на сервисы, ориентированное на использование облачных технологий и работу с Kubernetes
🔹 Как использовать Serverless для решения ваших задач — как развернуть бота в Telegram для отправки сообщений? Как записать данные в YDB или автоматизировать работу с Object Storage — обо всем в видосах
🔹 New Azure DevOps scopes — новиночка для приложений Microsoft Identity OAuth с делегированным потоком
🔹 Terraform-docs — полное руководство по документации Terraform с помощью terraform-docs
🔹 Б значит не Безумие, а Безопасность — автор делится реальным опытом и рассказывает про работу над проектом с кибербезопасностью, безопасностью инфраструктуры и DevSecOps
🔹 Kubernetes Global Balancer — решение для балансировки нагрузки на сервисы, ориентированное на использование облачных технологий и работу с Kubernetes
🔹 Как использовать Serverless для решения ваших задач — как развернуть бота в Telegram для отправки сообщений? Как записать данные в YDB или автоматизировать работу с Object Storage — обо всем в видосах
🔹 New Azure DevOps scopes — новиночка для приложений Microsoft Identity OAuth с делегированным потоком
👍8👏5🥰3🎉3🤩3
#вопросы_с_собеседования
df сообщает о наличии 20 Гб занятого пространства, подсчёт занятого файлами места при помощи du даёт результат в 20 Мб. При каких обстоятельствах может возникнуть описанная ситуация?
Когда файл удален т. к. файловый дескриптор «держит» его.
Ищем файл через:
lsof -a +L1 | grep var | grep httpd
При удалении файла, который в этот момент был «занят» процессом — его имя удаляется, но inode — остаётся в файловой системе до тех пор, пока не завершится процесс, который «держит» этот файл.
Соответственно, что бы «освободить» уже удалённые файлы — необходимо перезапустить процесс, который этот файл держит.
df сообщает о наличии 20 Гб занятого пространства, подсчёт занятого файлами места при помощи du даёт результат в 20 Мб. При каких обстоятельствах может возникнуть описанная ситуация?
❤22👍8🥰1
🧠Чему вы бы хотели научиться?
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
❤6
Чем отличаются файлы .bashrc .bash_profile .profile и т.п.
Основное различие этих конфигурационных файлов заключается в том, что некоторые из них читаются только оболочками входа (login). Например, при входе в систему с другого хоста или при входе в текстовую консоль локальной unix-машины. Используются файлы .login .profile .zlogin. Зависит от того какая у вас оболочка.
Далее идут конфигурационные файлы, которые читаются «интерактивными» оболочками. То есть подключенными к терминалу или псевдотерминалу. Это файлы с именами .bashrc, .tcshrc, .zshrc и т.д.
Файл .bashrc читается только интерактивной и non-login оболочкой, поэтому большинство людей в конечном итоге инклудят в файле .bash_profile чтение файла .bashrc, например:
А файл .profile, это просто сценарий входа в систему. И изначально использовался в /bin/sh. Оболочка Bash, будучи обратно совместимым с sh, будет читать .profile, если он конечно же существует.
Пример файла .profile
В дистрибутивах семейства Debian сначала выполняется .profile, а потом уже .bash_profile. А вот в дистрибах производных от RHEL, сначала выполняется .bash_profile, а уже потом .profile. Ну вот прям каша!
В документации bash хорошо объясняется, при каких обстоятельствах читается каждый файл. И поведение на разных машинах в целом одинаково.
Выжимка из man bash:
Основное различие этих конфигурационных файлов заключается в том, что некоторые из них читаются только оболочками входа (login). Например, при входе в систему с другого хоста или при входе в текстовую консоль локальной unix-машины. Используются файлы .login .profile .zlogin. Зависит от того какая у вас оболочка.
Далее идут конфигурационные файлы, которые читаются «интерактивными» оболочками. То есть подключенными к терминалу или псевдотерминалу. Это файлы с именами .bashrc, .tcshrc, .zshrc и т.д.
Файл .bashrc читается только интерактивной и non-login оболочкой, поэтому большинство людей в конечном итоге инклудят в файле .bash_profile чтение файла .bashrc, например:
[[ -r ~/.bashrc ]] && . ~/.bashrcДругие оболочки ведут себя по-другому. Например, в zsh, файл .zshrc всегда читается для интерактивной оболочки, независимо от того, является ли она login или нет.
А файл .profile, это просто сценарий входа в систему. И изначально использовался в /bin/sh. Оболочка Bash, будучи обратно совместимым с sh, будет читать .profile, если он конечно же существует.
Пример файла .profile
if [ "$BASH" ]; thenКак видим, при login’е заинклудится файл .bashrc.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
В дистрибутивах семейства Debian сначала выполняется .profile, а потом уже .bash_profile. А вот в дистрибах производных от RHEL, сначала выполняется .bash_profile, а уже потом .profile. Ну вот прям каша!
В документации bash хорошо объясняется, при каких обстоятельствах читается каждый файл. И поведение на разных машинах в целом одинаково.
Выжимка из man bash:
/bin/bash - The bash executable
/etc/profile - The systemwide initialization file, executed for login shells
/etc/bash.bashrc - The systemwide per-interactive-shell startup file
/etc/bash.bash.logout - The systemwide login shell cleanup file, executed when a login shell exits
~/.bash_profile - The personal initialization file, executed for login shells
~/.bashrc - The individual per-interactive-shell startup file
~/.bash_logout - The individual login shell cleanup file, executed when a login shell exits
~/.inputrc - Individual readline initialization file
👍14🔥7❤5🥰5👏5
Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы прочесть позже #самыйсок
∞ Дорожная карта DevOps-инженера в 2023 году
⚖️ 25 курсов, книг и подкастов для развития критического мышления
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
📰❌ 10 признаков фейковой вакансии
🔤 Азбука SQL в примерах. Часть 1. Создаем базу данных и первую таблицу
🔤 Азбука SQL в примерах. Часть 2. Ограничения, которые упрощают жизнь
∞ Дорожная карта DevOps-инженера в 2023 году
⚖️ 25 курсов, книг и подкастов для развития критического мышления
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
📰❌ 10 признаков фейковой вакансии
🔤 Азбука SQL в примерах. Часть 1. Создаем базу данных и первую таблицу
🔤 Азбука SQL в примерах. Часть 2. Ограничения, которые упрощают жизнь
❤3👍1🥰1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in the widget
VIEW IN TELEGRAM
😍4