Обновить
1128.85

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга

Docker в каждый дом
Стрим FastAPI+Docker породил бурное обсуждение, а нужен ли докер в таком небольшом проекте. Наш ответ — обязательно! В современном мире разработки docker является такой же неотъемлемой частью разработки, как и git. Есть некоторые области без докера, например, разработка GUI, операционных систем или микроконтроллеров. Но весь backend, frontend и data science без докера вообще не живут. Давайте посмотрим, какие прямые выгоды даёт докер:

1. Всегда понятно, как запустить код. Dockerfile является однозначной инструкцией по сборке проекта. Bus-factor не мешает жить.

2. Легко включать новых людей в разработку. Инструкция в ридми сводится к docker build & docker run, что понятно даже junior-разработчикам.

3. Деплой можно производить где угодно. В пару команд можно запуститься на компе разработчика, на test или prod сервере, у заказчика на ноутбуке – и везде всё будет одинаково, нужен только сам Docker.

4. Проект одинаково себя ведёт везде. Это упрощает воспроизведение проблемы и сокращает время на багфикс.

5. Нет проблем с конфликтом зависимостей-библиотек. Вы можете на одной машине запустить проекты с условным django 3 и django 4, они никак друг другу не помешают.

6. Легко поднимать зависимости-компоненты. Для любой базы данных берётся готовый докер-образ, меняется конфиг и в одну команду запускается. С выходом на docker compose можно одной командой поднимать сборную солянку из backend, frontend, базы данных, nginx и Let's Encrypt.

7. Просто откатываться к старой версии. Версионирование докер-образов позволяет запустить новую версию, и, если что-то пошло не так, откатиться назад за десятки секунд.

8. Понятные внешние эффекты проекта. В команде docker run указаны проброшенные в контейнер каталоги и порты. Всё остальное изолированно.

В общем, со всех сторон одна польза. Минусы? Требуется изучить новый инструмент и best practices. Кажется, на этом всё. Даже дополнительных накладных расходов на виртуализацию нет. И помните – если docker вам мешает, скорее всего, вы что-то делаете неправильно.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Как с помощью ИИ починить любой сломанный код и заставить его работать. Теперь не нужно писать нейронке «код не работает» по 20 раз и смотреть на её мучения — достаточно этого промпта:

“Reflect on 5–7 different possible source of the problem, distill those down to 1–2 most likely sources, and the add logs to validate your assumptions before we move onto the implementing the actual code fix”.

Промпт универсальный и работает в любой нейронке и ИИ-среде — от ChatGPT до Cursor.

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии5

🗓 17.02.1983 - Утвepждeн cтaндapт языкa пpoгpaммиpoвaния «Ada» [вехи_истории]

Этот язык создавался для решения сложных задач в области критически важных систем – авиации, космоса, телекоммуникаций и военной техники. Он получил свое название в честь Ады Лавлейс, первой в истории женщины-программиста, которая еще в XIX веке работала над алгоритмами для аналитической машины Бэббиджа.

🗓 17.02.1983 - Утвepждeн cтaндapт языкa пpoгpaммиpoвaния «Ada»
🗓 17.02.1983 - Утвepждeн cтaндapт языкa пpoгpaммиpoвaния «Ada»

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

📼 ЯП применяются в том числе и для создания операционных систем, а про одну из них ролик уже на канале:
Удивительная история Android! Вы этого НЕ ЗНАЛИ
YouTube | VkVideo

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии2

Разработчик под ником madprops предложил способ для быстрого поиска команд в терминале

«Я очень часто обращаюсь к истории действий в shell, чтобы снова и снова запускать одни и те же команды. Пока нет эффективного способа сделать это. Я думаю, что это проблема, которую нужно решать с помощью специализированного инструмента. Я могу попробовать сделать инъекцию оболочки с помощью rofi позже. Но сейчас я придумал трюк, который помогает в работе. Добавьте значки к командам, чтобы вы могли мгновенно распознавать их по стрелкам вверх:

  • : ✅;./utils/check.sh

  • : ⚡;./scripts/tag.py

  • : 📚;./scripts/makedocs.sh

Обратите внимание на двоеточия и точки с запятой. Значки не являются частью команды, они ничего не делают. Но теперь ваше зрение очень быстро распознает нужный элемент. Вместо иконок можно использовать текст, который можно легко отфильтровать позже», — пояснил madprops.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Готовим валентинку в Python:

1. Заходим сюда;

2. Копируем и вставляем код:

print('\n'.join
 ([''.join
   ([('Name'[(x-y)%4 ]
     if((x*0.05)**2+(y*0.1)**2-1)
      **3-(x*0.05)**2*(y*0.1)
       **3<=0 else ' ')
        for x in range(-30,30)])
         for y in range(15,-15,-1)]))

Замените Name на название\имя, а число в конце этой же строки — на количество букв в этом слове;

3. Жмём Run.

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

Расширенные алерты в Amvera Cloud

Сегодня мы выпускаем функционал расширенных алертов.

Теперь каждый наш пользователь сможет получать уведомления в специальный бот, если:

  1. Проект ушел в ошибку.

  2. Произошло превышение ОЗУ или ЦПУ выше заданного порога

  3. Сработала Liveness или Readiness проба.

  4. Произошла ошибка сборки или запуска проекта.

  5. Встретилась заданная фраза в логе.

Amvera Cloud — это облако для простого деплоя приложений через git push. Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS или Kubernetes-кластера.

Теги:
Рейтинг0
Комментарии0

Почему Go — выбор крупных IT-компаний? Узнайте в нашем новом подкасте 🎧

В нем Владимир Балун, основатель Балун.Курсы, пообщался с командой Cloud.ru про тренды в программировании, опыт перехода на Go и подготовку к алгоритмическим собеседованиям.

А еще:

  • как глобальные изменения в отрасли влияют на требования к разработчикам;

  • почему Go стал одним из основных языков для веб-разработки и высоконагруженных приложений;

  • как AI и автоматизация формируют будущее простых задач, таких как верстка.

👉 Посмотреть подкаст также можно на YouTube.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

15 правил вайб-программироания от Cursor:

  • начинайте с шаблона — используй готовые репозитории с GitHub для старта.

  • используйте режим агента — для создания, редактирования и управления файлами с помощью команд на естественном языке.

  • используйте Perplexity — для поиска дизайнов и API из интернета, получения инструкций и примеров кода.

  • создавайте новые чаты в Composer — для каждой отдельной задачи, держи чаты короткими.

  • запускайте локально, тестируй часто — находи ошибки на ранних этапах.

  • итерируйте и дорабатывайте — не стремитесь к идеалу сразу, улучшай проект постепенно.

  • используйте голосовой ввод — например, Whispr Flow для быстрого ввода текста.

  • клонируйте и форкайте с умом — берите готовые репозитории, адаптируйте их под себя

  • копируйте ошибки и вставляйте в Composer — часто агент сразу предложит решение.

  • не забывайте, что можно восстановить старые чаты — сохраняйте работу, чтобы при необходимости вернуться к предыдущей версии.

  • храните данные в переменных среды — не прописывайте API-ключи в коде напрямую.

  • чаще коммитите в GitHub — регулярно фиксируйте прогресс.

  • разворачивайте проект рано — например, через Vercel, чтобы вовремя выявлять проблемы.

  • сохраняйте лучшие промпты — чтобы в будущем использовать их снова.

  • наслаждайся процессом – кодьте, экспериментируйте, учитесь и получайте удовольствие.

Ранее Сооснователь компании OpenAI, экс-директор по ИИ и бывший глава отдела разработки автопилота Tesla Андрей Карпаты сообщил, что занялся вайб-программированием и ему это нравится.

«Есть новый вид программирования, который я называю вайб‑программированием (vibe coding), где вы полностью отдаётесь вибрациям, принимаете экспоненты и забываете, что код вообще существует. Это возможно, потому что большие языковые модели (LLM, например, Cursor Composer w Sonnet) становятся слишком хороши. Также я просто общаюсь с Composer с SuperWhisper, поэтому я почти не касаюсь клавиатуры. Я прошу о самых глупых вещах, таких как „уменьшить отступ на боковой панели вдвое“, потому что мне слишком лениво, чтобы найти его. Я всегда „Принимаю всё“ (Accept All), я больше не читаю diffs. Когда я получаю сообщения об ошибках, я просто копирую и вставляю их без комментариев, обычно это исправляет ситуацию. Код выходит за рамки моего обычного понимания, мне приходится действительно читать его некоторое время. Иногда LLM не могут исправить ошибку, поэтому я просто обхожу её или прошу вносить случайные изменения, пока она не исчезнет. Это не так уж плохо для одноразовых проектов на выходные, но все равно довольно забавно. Я создаю проект или веб‑приложение, но это не совсем программирование — я просто вижу что‑то, говорю что‑то, запускаю что‑то и копирую, вставляю что‑то, и это в основном работает», 

рассказал Карпаты.

Теги:
Рейтинг0
Комментарии3

Должен же тимлид смотреть Merge Request (Pull Request)? 

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

  • контролировать качество кода программистов команды;

  • следить за соблюдением принятых стандартов;

  • управлять рисками кодовой базы команды;

  • обучать участников команды через ревью их кода;

  • держать руку на пульсе того, чем занимаются участники команды. 

Однако что делать, если у вас кросс-функциональная команда, состоящая из двух бэкендеров, пары фронтендов, QA и аналитика? Нужно ли вам просматривать все их MR? Сможете ли вы адекватно оценить код на PHP, код на React + TypeScript и автотесты на Python? Очевидно, что нет. 

Для разрешения данной ситуации вы можете:

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

Попросить разработчиков проводить код-ревью друг у друга. Однако всё довольно быстро превратится в формальные проверки, когда одобрения ставятся просто ради галочки.

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

 Как поступить?

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

Максимально возможное покрытие фитнес-функциями (автоматические форматтеры, автотестеры, анализаторы кода). Согласуйте с техлидами внедрение в проект автоматических анализаторов и добавьте их в пайплайны репозитория. Ни один MR не пойдёт на ревью до тех пор, пока не будет соответствовать установленным стандартам. Так вы сэкономите массу времени.

Автоматическое распределение код-ревью среди всех участников функции (все фронтенды, все бэкенды), вне зависимости от проекта, с фиксацией лица, поставившего одобрение. Автоматически напомните человеку, что он превысил установленные компанией сроки на проведение ревью.

То есть программисты из других команд могут не разбираться в вашем домене, но они способны проверить, что код не делает ничего лишнего и корректно функционирует в рамках проекта (при нагрузке, сущностях, подходах). А факт рандомности ревьювера и фиксации апрува, не позволит им проводить ревью формально.

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

В итоге, если тимлид вместе с техническими лидерами выстроит жёсткую систему доставки инкремента на продакшн, ему самому не обязательно просматривать каждый MR своей команды. Исключение составляют лишь те случаи, когда «душа просит».

P.s. Рекомендую: Эволюционная архитектура - автоматизированное управление программным обеспечением - Нил Форд`

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Запланируйте, какие вебинары посетите в феврале 📅

Регистрируйтесь на бесплатные вебинары, чтобы узнать больше про работу с сервисами платформы Cloud․ru Evolution:

А еще на каждом вебинаре будет сессия вопросов и ответов, на которой вы сможете задать экспертам любые интересующие вопросы по теме.

Присоединяйтесь!

Теги:
Рейтинг0
Комментарии0

База по JavaScript

Если вы только начинаете (или хотите начать) изучать JavaScript, то для вас есть подборка обучающих материалов. Все они доступны бесплатно. Регистрироваться, оставлять контактные данные или оформлять подписку тоже не нужно.

Если вы новичок, после прочтения материалов можете попробовать решить задачу про JavaScript-функцию (чур, не подглядывать в решение).

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Новые фичи JS, о которых стоит знать

Если долго использовать какой-то инструмент, мозг вырабатывает паттерны: мы повторяем одни и те же решения, не всегда задумываясь, что появились новые, более удобные способы. Так происходит и с JavaScript.

JS развивается каждый год, но многие продолжают писать код, как привыкли, не используя свежие возможности языка. Я стараюсь бороться с этим и внедрять новшества в свою повседневную работу и недавно пошел посмотреть что там нового подвезли в ECMAScript 2024 (ES15). А там оказалось довольно много интересного.

Например, новые методы массивов. Раньше методы вроде .sort() и .reverse() изменяли исходный массив, что могло привести к неожиданным багам.

const arr = [4,1,6,5]
const sortedArr = arr.sort()
console.log(sortedArr) //[1,4,5,6]
console.log(arr) // [1,4,5,6] оригинал также изменился

В ECMAScript2024 (ES15) были добавлены новые методы, которые позволяют работать с копиями массивов не трогая оригинал без дополнительного кода:

const nums = [1, 2, 3];
const reversedNums = nums.toReversed();
console.log(reversedNums); // [3, 2, 1]
console.log(nums); // [1, 2, 3] оригинал не изменился

Точно так же работают новые методы .toSorted() и .toSpliced(). Они делают код более предсказуемым и чистым.

Также, я с огромным восхищением прочитал про Temporal - новый объект для работы с датами и временем. Например, меня всегда поражало , что в Date месяцы индексируются с 0 (январь – это 0), а вот дни месяца начинаются с 1. Temporal фиксит эти проблемы и теперь можно:
✅ Создавать объекты только с датой или только со временем
✅ Удобно складывать и вычитать даты
✅ Работать с часовыми поясами без боли
В общем делать все, для чего мы раньше тащили в проекты всякие moment и day.js.

К огромному сожалению Temporal пока не поддерживается в браузерах, но когда выйдет – работа с датами в JS станет в разы удобнее.

Если вам интересны такие обновления подписывайтесь на мой Telegram-канал!

🔗 t.me/+qbK9ZPuAocI2MWUy

Там делюсь продакшн-опытом,новостями из мира веб-разработки и разбираю реальные кейсы. Подписывайтесь! 🚀

Теги:
Всего голосов 5: ↑3 и ↓2+2
Комментарии2

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

Курсы и задачи:

Интерактивные платформы:

Видеоуроки:

Книги:

Бонус: в Steam вышла игра Joy of Programming — Software Engineering Simulator от разработчика на Python.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Ближайшие события

Осваиваем 23 самых популярных языка программирования с нуля. Учебная база содержит практические курсы для начинающих разработчиков, которые хотят изучить новые ЯП, включая всю необходимую теоретическую часть с разделами по ООП и асинхронным программированием. На каждый урок есть практические задачи — читаем теорию и тут же оттачиваем навыки. Авторы проекта показали самые востребованные связки языков программирования и фреймворков. 

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

flushSync в React – костыль или спасение?

Вчера впервые попробовал flushSyncб который подвезли в React еще в 18 версии.
Классное решение для определенных моментов! Выглядит так, будто React выдал нам костыль, но сразу предупредил: пользоваться с осторожностью.

❓ Почему это вообще нужно? (Для тех, кто не совсем в теме)
В React изменения в useState или в useEffect выглядят синхронными, но на самом деле они асинхронны.

Простой пример:

...

const [count, setCount] = useState(0);

console.log(count); // 0

setCount(1); console.log(count); // Всё ещё 0! 😲

...

Кажется, что setCount(1) сразу меняет count, но на самом деле новое значение попадёт в консоль только при следующем ререндере.

То же самое в useEffect:

...

useEffect(() => { console.log("Эффект сработал!"); }, [count]);

setCount(1); console.log("А это после setCount");

...

Лог "А это после setCount" появится в консоли раньше, чем "Эффект сработал!", потому что useEffect выполняется уже после рендера.

Как flushSync меняет поведение?

Обычно React группирует обновления (batching) и откладывает ререндер до конца текущего цикла. flushSync ломает это поведение и заставляет React сразу выполнить ререндер.

function Example() { 
    const [count, setCount] = React.useState(0); 
    const ref = React.useRef(null);
    const handleClick = () => { 
        flushSync(() => setCount(count + 1)); 
        console.log("Высота элемента:", 
            ref.current?.offsetHeight); 
        };

    return (<button onClick={handleClick}>
        Добавить  {count}
    </button>); 
} 

Что тут происходит?
Без flushSync React подождал бы до конца текущего вызова и только потом обновил DOM.
С flushSync обновление происходит немедленно, и console.log видит уже новый DOM.

React нас предупреждает
В документации прямо сказано:

"flushSync – это низкоуровневый API. Используйте его только тогда, когда вам действительно нужно измерить DOM сразу после обновления состояния."

Когда не стоит использовать flushSync?
Если можно обойтись обычными useEffect или useLayoutEffect.
Если batching работает нормально и не мешает.
Если нет необходимости немедленного ререндера (иначе можно уронить производительность).

Итог
flushSync – мощный инструмент, но использовать его нужно осознанно. Он нужен в случаях, когда важно немедленно обновить стейт и тут же прочитать DOM (например, для анимаций).

Если понравился пост присоединяйтесь к моему каналу в Telegram по ссылке https://t.me/+qbK9ZPuAocI2MWUy.
Там я делюсь своим опытом и пишу материалы которые будут полезны как новичкам, так и матерым разработчикам.

Теги:
Рейтинг0
Комментарии0

Как эффектно ворваться в mob-программирование? Узнай из выступления нашего бэкенд-лида! 

В прошлом году Витя Михайлов, Backend lead Garage Eight, выступил на конференции TechLead 2024 с докладом про mob programming. Он рассказал про пользу этого подхода к разработке, а также трудности его внедрения. А еще поделился приемами, которые помогут вовлечь в этот процесс команду, справиться с «болячками» и сделать mob-программирование частью ежедневной работы.

Если не смог побывать на мероприятии, то самое время смотреть запись ;-)
> YouTube
> VK

Кстати, у Вити есть свой ламповый канал, где он разгоняет про бэкенд, менеджмент и процессы разработки. Заглядывай почитать! 

Теги:
Всего голосов 3: ↑0 и ↓3-3
Комментарии0

Три важных вопроса о регистрации программ в Роспатенте

Мы продолжаем нашу серию о защите программ в Роспатенте.

Если поменять название программы или часть кода, потребуется ли новая регистрация программы для ЭВМ?

Название программы не является объектом правовой охраны при регистрации программы для ЭВМ. Название нужно зарегистрировать как товарный знак и если вы его поменяете, нужно будет подать новую заявку на регистрацию товарного знака. 

А вот изменение части кода = появление новой версии программы. Однако по Гражданскому Кодексу каждая новая версия ПО — это формально новая программа, поэтому вам нужно будет подать новую заявку на регистрацию программы для ЭВМ.

Если исходный код программы для ЭВМ еще не дописан, можно ли начать процедуру регистрации в Роспатенте уже сейчас?

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

Срок и территория действия прав на программу для ЭВМ

Начало действия исключительного права на программу для ЭВМ отсчитывается с даты ее создания.

Срок действия прав — в течение всей жизни автора (создателя), и далее 70 лет с 1 января, следующего за датой его смерти.

Если авторы программы — это коллектив разработчиков, то срок действия истекает в год смерти последнего из них.

Территория. После регистрации программы она имеет правовую охрану не только в России, но и автоматически во всех странах, которые входят в Бернскую конвенцию (на 2022 год входит 181 государство).

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

Поиск по программам для ЭВМ

Регистрация программы для ЭВМ

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Модель TCP/IP (Transmission Control Protocol/Internet Protocol) является основой для функционирования Интернета и большинства современных компьютерных сетей. Она описывает, как данные передаются между устройствами, обеспечивая надежную и эффективную связь. Модель состоит из нескольких уровней, каждый из которых выполняет определенные функции и использует свои протоколы для обработки данных.

Основные Протоколы

Два ключевых протокола, на которых основана модель TCP/IP, это:

  • TCP (Transmission Control Protocol): отвечает за надежную передачу данных, гарантируя, что информация будет доставлена в целостности и в правильном порядке.

  • IP (Internet Protocol): отвечает за адресацию и маршрутизацию данных, разбивая их на пакеты для передачи по сети.

Уровни Модели TCP/IP

Модель TCP/IP делится на четыре основных уровня:

  1. Канальный уровень (Link Layer):

    • Этот уровень управляет передачей данных между узлами одной локальной сети.

    • Протоколы канального уровня определяют, как данные взаимодействуют с физической средой передачи (например, Ethernet).

    • Он обеспечивает передачу данных на физическом уровне и зависит от используемого оборудования.

  2. Сетевой уровень (Network Layer):

    • Отвечает за маршрутизацию пакетов данных по сети.

    • Основной протокол этого уровня — IP, который не гарантирует порядок доставки пакетов или их полное получение.

    • В настоящее время используются две версии IP: IPv4 и IPv6. IPv4 поддерживает около 4,3 миллиарда адресов, тогда как IPv6 предлагает значительно большее количество адресов (примерно 3.4×10383.4×1038) для решения проблемы исчерпания адресов.

  3. Транспортный уровень (Transport Layer):

    • Этот уровень инкапсулирует протоколы TCP и UDP.

    • TCP обеспечивает надежную передачу данных с контролем ошибок и гарантией порядка доставки.

    • UDP, в отличие от TCP, не устанавливает соединение и может использоваться для приложений, где скорость важнее надежности.

  4. Прикладной уровень (Application Layer):

    • Этот уровень включает протоколы, с которыми взаимодействуют пользователи и приложения (например, HTTP, FTP, SMTP).

    • Он обеспечивает интерфейс для программного обеспечения для обмена данными через сеть.

Значение Модели TCP/IP

Модель TCP/IP является краеугольным камнем современных сетевых технологий. Она обеспечивает совместимость между различными устройствами и операционными системами, позволяя пользователям обмениваться данными независимо от их местоположения или используемых технологий. Благодаря этой модели стало возможным создание множества интернет-приложений и сервисов, которые стали неотъемлемой частью повседневной жизни.

Заключение

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

Теги:
Всего голосов 8: ↑6 и ↓2+4
Комментарии0

Слева сидит Лёша

Он не смог решить задачу и был отчислен из вуза. Аппетита нет, шаверма остывает. А ведь нужно было просто написать программу, которая построит симметричную матрицу размерности NxN (1 < N <= 100).

Может, у вас получится помочь Алексею решить задачу? Тогда переходите в Академию Selectel.

Теги:
Всего голосов 9: ↑5 и ↓4+2
Комментарии2

Как продолжить изучение Python? Работа с БД, парсинг и идеи для пет‑проектов

В Академии Selectel вышел новый бесплатный курс по Python. Не рассказываем про основы — наоборот, помогаем сделать первые шаги в мире реального программирования.

После прохождения курса вы научитесь:

  • работать с базами данных и брокерами сообщений,

  • создавать приложения с графическим интерфейсом,

  • автоматизировать получение данных.

На вдумчивое ознакомление со всеми материалами уйдет около четырех часов.

Приглашаем изучить курс в Академии Selectel.

Теги:
Всего голосов 7: ↑7 и ↓0+8
Комментарии0

Вклад авторов