Курсы по программированию

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

Основные курсы: Python, Django, Java, Компьютерная графика.

Войти Регистрация

Последние статьи

Python

Работа в терминале в Windows, Linux и MacOS (cli, shell, bash, cmd)

Интерфейс командной строки (Command line interface или CLI) - это один из первых интерфейсов взаимодействия с пользоватлем. Но до сих пор очень даже актуальный и востребованный.


CLI - это текстовый способ ввода и вывода информации. То есть вы печатаете команду и видите текстовый результат её работы.


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

Читать дальше →
1613 0
Gizzat Ablakov
Python

Делаем простого телеграм бота на Python

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

У вас должен быть установлен Python 3.  Если нет, то вы можете прочитать здесь как это сделать на Windows.

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

Читать дальше →
2890 0
Alisher Alikulov
Python

Как установить Python 3 на Windows?

Чтобы начать писать прграммы на языке Python, нужно обязательно скачать интерпретатор языка Python и все необходимое для выполнения Python-кода. Также вам нужна программа для написания кода(редактор). Я рекомендую для начала Sublime Text

Интерпретатор - это программа, которая будет считывать ваш код и исполнять его.

В этой статье я расскажу как скачать его на Windows 7 и Windows 10.

 

Читать дальше →
886 0
Alisher Alikulov
Python

Юнит-тесты на Python на примере функции находящей n-ное число Фибоначчи

Юнит-тестирование (англ. unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули программы.

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

В python для написания unit тестов рекомендуется использовать библиотеку unittest. О нем мы и сейчас поговорим. 

Читать дальше →
637 0
Alisher Alikulov
Компьютерная графика

Как рисовать на Python с помощью библиотеки Pillow?

В питоне есть библиотека PIL(Python Image Library) и его близнец Pillow(расширенная версия PIL). 

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

В этой статье я кратко расскажу как создавать свои изображения и рисовать графики на них.

Читать дальше →
6083 0
Alisher Alikulov
Компьютерная графика

Система частиц или как сделать крутые эффекты

Привет друзья! В этой статье мы поговорим о таких вещах как:

 -Что такое Particle System в Unity

 -Текстуры и материалы для эффектов

 -Создаем свой эффект

 -Где достать бесплатные текстурки

 -И немного советов новичкам :)

Читать дальше →
1594 0
Кривцов Артем
Компьютерная графика

3D модели и анимация. Что это и где искать?

В этой статье вы узнаете:

  - Что такое 3D модель?

  - Что такое текстура и карты?

  - Где найти модели бесплатно?

  - Что такое анимация и риг?

  - Как применить анимацию к модели?

  - Как всё это импортировать в Unity

Читать дальше →
1799 0
Христофориди Дмитрий Иванович
Компьютерная графика

Примитивный игровой движок на Java

Чтобы понять как работают игровые движки и сами игры, давайте попробуем сами написать простой 2D движок. 

Во всех играх есть основной игровой цикл, который непрерывно повторяется:

1. Чтение устройств ввода (клава, мышь, джойсткик, таймер)
2. Обновление игровых объектов
3. Отрисовка

И этот цикл повторяется пока игра запущена. FPS (frames per second) - сколько кадров в секунду отрисовал игровой движок или сколько циклов сделал данный цикл.

Читать дальше →
1662 0
Alisher Alikulov
Компьютерная графика

Примеры на обработку изображений

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

1. Дивергент

* В этом варианте спрячем зашифрованное изображение в красном канале.
* Нужно будет вытащить только красный канал, чтобы найти ответ.
Читать дальше →
642 0
Alisher Alikulov
Компьютерная графика

Работа с изображениями в Java: чтение, запись, изменение

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

Того, что здесь будет показано вполне достаточно чтобы выполнить все лабы. 

Итак, поехали. 

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

Читать дальше →
14488 0
Alisher Alikulov
Компьютерная графика

Введение в Unity3D: Создание 2D Игры НЛО

Наконец-то я начну писать про Unity3D. Эта статья будет переводом видео-туториала с официального сайта Unity3D. Вот ссылка на оригинальный туториал: https://unity3d.com/learn/tutorials/s/2d-ufo-tutorial

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

С помощью Unity довольно просто создать замечательные игры! Надеюсь вы будете удивлены и вам он понравится. 

Читать дальше →
2033 0
Alisher Alikulov
Компьютерная графика

Рисуем простой клеточной автомат на Java

Привет, всем! В этой статье покажу как используя ООП, написать простой клеточный автомат на языке Java. 

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

Для лабиринта правила такие:

Читать дальше →
1904 0
Alisher Alikulov
Компьютерная графика

Рисование и формы в Java, Python и JS

Привет всем!

Сегодня расскажу про то, как рисовать и создавать формы используя разные языки как Java, Python и JS. Эта статья поможет вам понять только основы и покажет несколько примеров. Все остальное придется вам изучить самим. 

Мы напишем программу, в которую можно будет добавлять разные геометрические фигуры и их анимировать. 
Рисование и формы в Js, Python, JS

Читать дальше →
2384 0
Alisher Alikulov
Веб-программирование

Мини соц сеть на Django. Часть 2.

В предыдущей статье мы создали основу для соцсети, где есть регистрация пользователей, заполнение дополнительных данных о пользователе и страница профиля.

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

Начнем с модели Поста.

Читать дальше →
3744 0
Alisher Alikulov
Веб-программирование

Мини соц сеть на Django. Часть 1.

Эта статья предполгает, что вы уже прочитали все предыдущие статьи про Django и освоили все, что там написано. 

Обещал всем показать как можно написать мини соц сеть на Джанго. Придется выполнить обещанное. Надеюсь статья станет полезным и входновит кого-то создать соцсеть намного лучше. 

Какой функционал будет в нашей мини соцсети:

 

Читать дальше →
6689 0
Alisher Alikulov
Веб-программирование

Модели и Базы данных в Django

Голова болит. Но все равно напишу эту статью.

В Django используется так называемый ORM чтобы хранить данные в БД. ORM - это такая штука, которая облегчает жизнь разработчика, избавляя его писать нудные SQL запросы. А вместо них предлагает работать с обычными классами, объектами и методами. 

Хочешь создать запись в таблице БД? Создай один объект и вызови метода save() И все готово! Классно, да?

Читать дальше →
2764 0
Alisher Alikulov
Веб-программирование

Регистрация пользователей в Django

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

Читать дальше →
5424 0
Alisher Alikulov
Веб-программирование

Расширение html-файлов в Django

Что это такое? Это нужно для того чтобы один и тот же код не писать повторно. Работает как наследование в ООП. Если вы заметили, все ваши html-страницы в начале и в конце одинаковые, и вам приходится один и тот же код писать во всех файлах, а если хотите изменить заголовок, то во всех страницах нужно поменять. 

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

Читать дальше →
1204 0
Alisher Alikulov
Веб-программирование

Статические файлы (js, css, картинки) в Django

Каждый из вас, кто уже попробовал свой сайт перевести на Django, скорее всего столкнулись с проблемой с файлами стилей и javascript. Вы наверное пробовали их засунуть в папку templates или куда-нибудь еще, но все равно не сработало. И ваш сайт загрустил без стилей и вместе с ним вы тоже. ☹️

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

Файлы которые, не меняются пока работает ваш сайт или веб-приложение, называется статическими(statiс files).

Читать дальше →
8612 0
Alisher Alikulov
Веб-программирование

Основы Django фреймворка

В предыдущей статье я рассказал как создать django проект и запустить его. Здесь я расскажу из чего состоит Django и как на нем сделать простое веб-приложение. 

Расскажу о трех важных вещах в Django:

1. urls - пути сайта
2. views - обработчики или контроллеры(вьюшки)
3. templates - шаблоны(html - файлы)
 

Читать дальше →
2790 3
Alisher Alikulov
Веб-программирование

Создаем веб-приложение на Django 3.0.6

В этой статье я расскажу как создать проект на Django 3.0.6 и запустить его. 

Вот такие шаги нужно выполнить чтобы создать сайт на Django.

1. Установить Python
2. Установить pip 
3. Установить virtualenv
4. Создать виртуальное окружение с помощью virtualenv
5. Активировать виртуальное окружение
6. Установить django
7. Создать django проект
8. Разработать проект
9. Запустить

Пройдемся по каждому шагу. 

Читать дальше →
2386 1
Alisher Alikulov
Веб-программирование

Разбор задач со 2-й лабы.

Привет, всем. 👋
Вы молодцы! Многие решили задачу на python. Конечно, они были очень очень простыми, но все равно, вы молодцы. 

Здесь я сделаю разбор этих задач и покажу как их решить с помощью python.

Задача 1409. Два бандита

Условия: http://acm.timus.ru/problem.aspx?space=1&num=1409

Читать дальше →
122 7
Alisher Alikulov
Веб-программирование

Как эффективно подготовиться к олимпиадам по программированию?

Михаил Рубинчик, менеджер Образовательные программы СКБ Контур, тренер команд УрФУ по спортивному программированию

Сейчас проводится много разных олимпиад по информатике и программированию. В России самую долгую историю имеют олимпиады по правилам ACM ICPC, а также довольно похожие на них олимпиады школьников. В целом они по подготовке очень похожи (хотя немного отличаются тактиками).

Читать дальше →
693 0
Alisher Alikulov
Веб-программирование

Делаем игру с Роботом на jQuery, HTML, CSS

Предыдущую классную работу все выполнили? Мне скинули всего 3-4 человека 😏. 

Ребята, спрашивайте если что-то не понятно! На этой неделе меня не будет, так что вам придется самим поработать. Эта работа небольшая. Будем делать маленького робота. 🤖 А чем он будет заниматься, я по ходу щас придумаю.

Здесь нам обязательно пригодится jQuery, которую можно скачать здесь (compressed production). Откройте ваш любимый редактор кода. Или скачайте: Brackets, Sublime Text, PyCharm

Приступим..

Читать дальше →
1134 4
Alisher Alikulov
Веб-программирование

Классная работа №2: Диско!

Привет, друзья! 

Буду иногда на сайте выкладывать как туториал то, что мы проходили на парах. Сегодня мы с вами научились работать с Инспектором браузера, выполнять скрипты в Консоли разработчика и познакомились с библиотекой jQuery. В этой статье будет как раз об этих вещах. 

Итак, поехали! 

Инспектор кода

Читать дальше →
888 10
Alisher Alikulov
Java

Автоматизация тестов!

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

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

Все современные среды для программирования как Intellij IDEA, PyCharm позволяют в удобном виде отображать результаты тестов. 

И так, напишем свой первый тест. 

Читать дальше →
745 22
Alisher Alikulov

Командная работа в Git

Прежде чем читать эту статью, вам нужно прочитать статью Работа с Git, что это такое - Git?

Командная работа в git

Git удобное средство для работы с кодом в команде. При этом он не ограничивает членов команды географически: члены команды могут находиться в любом месте планеты, в любое время работать с кодом. Главное периодически синхронизировать код с общим удаленным репозиторием: получать новые изменения и загружать свои изменения.

В этой статье я расскажу как это делается.

Читать дальше →
1050 15
Alisher Alikulov

Работа с Git, что это такое - Git?

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

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

Читать дальше →
1492 18
Alisher Alikulov
Java

Анимация и двойная буферизация при рисовании

В этой статье я создам простое приложение с анимацией. Если кто-то уже пробовал делать анимацию, наверное столкнулись с проблемой моргания при перерисовке. Я также покажу как избавиться от этого моргания используя двойную буфферизацию. Это значит что программа будет рисовать сначала не на экране, а в памяти, только потом будет перерисовывать на экране, и только те пиксели, которые изменились. Таким образом мы избавимся от морганию и сделаем анимацию гладкой и красивой. 

Итак, приступим. 

Создадим основной класс AnimationApp

Читать дальше →
930 10
Alisher Alikulov

Два способа разработки программного обеспечения, или Одна ночь из жизни программиста Миши

«Две тропинки идут рядом: путь жизни и путь смерти… Люди не идут никаким путём, ни путём жизни, ни путем смерти. Вихрь носит их, как солому.»

Густав Майринк, «Голем»

 

В офисе было тихо и темно, лишь стук клавиш и редкие щелчки мыши нарушали едва различимое жужжание кулера, да широкоформатный монитор освещал измождённое лицо regular developer'а Миши. Сторонний наблюдатель мог бы подумать, что идёт обычная рабочая ночь с пятницы на субботу. Так оно и было для тысяч других разработчиков по всему миру, но только не для Миши. Поставив очередную пустую бутылку под стол, он внезапно почувствовал, что граница, отделяющая его от гордого титула «senior developer», не так уж и далека.

Читать дальше →
563 8
Alisher Alikulov
Java

Работа с формами и рисование(график)

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

Как пример возьмем функцию sin(x). В приложение добавим возможность указывать цвет графика и название графика, чтобы было немного прикольно. 

И так приступим...

Читать дальше →
2789 9
Alisher Alikulov
Java

Как я решил задачу "Покер"

Мне самому тоже стало интересно решить задачи, которые я вам дал. Начал с задачи Покер, где нужно было сгенерировать два набора по 5 карт и определить какой набор выигрышный. 

Код, который будет здесь представлен, можно использовать только как пример. Не рекомендую его копировать или списывать.

Начало
Первая задача это генерация наборов карт. В стандартной колоде всего 52 карты, 4 масти(suit) и 13 достоинств(rank). У каждой карты есть ее достоинство и масть. Сначала я решил создать класс, который будет представлять одну карту и у которого будут два свойства: Достоинство и Масть. 

Читать дальше →
1110 18
Alisher Alikulov
Java

Рекурсия

Рекурсия - это когда что-то находится внутри себя или является частью самого себя. 

Например вот:

Рекурсия в Java

В программировании рекурсией называется когда какая-либо функция вызывает саму себя. 

 

Читать дальше →
781 12
Alisher Alikulov

Первая история из книги "Голос Монстра"

  Давным-давно, задолго до того, как появился этот город с дорогами и поезда с машинами, тут была зеленая долина, — повело рассказ чудовище. — Все холмы покрывали леса, а вдоль каждой дороги росли деревья. Они нависали над речными потоками и защищали дома, потому что в те времена уже были дома из камня и земли… Это было королевство.
— Что? — удивился Конор, оглядывая темный сад. — Где?
Чудовище с любопытством склонило голову на бок.
—  Ты об этом не слышал?

Читать дальше →
1390 525
Alisher Alikulov

Отладка(debugging) кода в PyCharm и Intellij IDEA

Debugging - (рус. Отладка) процесс нахождения и исправления ошибок в программе. Есть специальные инструменты для программистов для помощи при отладке кода. Например все среды разработки от JetBrains, такие как PyCharm, Intellij IDEA, Android Studio, имеют замечательный и мощный отладчик прямо из коробки. 

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

Хотите узнать больше?  

Читать дальше →
4176 10
Alisher Alikulov
Java

Как писать в стиле ООП?

В этой статье кратко расскажу как нужно писать в стиле ООП, зачем он нужен и в чем его особенность. 

ООП (Объектно-ориентированное программирование) - это стиль проектирования программы таким образом, что в программе уже не будет выполняться какая-то последовательность комманд, а будет взаимодействие отдельных объектов, каждый из которых отвечает за какую-то свою задачу. Это похоже на реальный мир, где люди взаимодействуют друг с другом, у каждого своя роль, когда кому-то что-то нужно, он обращается к тому, кто может предоставить ему это что-то. Люди взаимодействуют с другим вещами, обмениваются предметами, общаются.

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

Читать дальше →
2078 10
Alisher Alikulov
Java

Ввод и вывод данных с Консоли

В Java есть понятия "Стандартный ввод" (Systen.in) и "Стандартный вывод" (Systen.out). По умолчанию стандартный ввод и вывод связаны с Консолью, откуда запускается программа. Поэтому если мы хотим вывести данные в консоль, мы пишем в стандартный вывод(System.out) :

System.out.println("Я пишу в стандартный вывод");

Также чтобы чтобы считать данные с консоли нужно считать данные из стандартного ввода (System.in). Но, объект System.in сам по себе позволяет считывать данные только по байтам и это очень неудобно.

System.out.read();

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

Читать дальше →
1661 9
Alisher Alikulov
Java

Каты на каждый день

Что такое Каты? 

Это короткие упражнения, которые нужно повторять регулярно, чтобы держать себя в форме. С каждым разом у человека эти упражнения будут получаться все лучше и лучше. 

 

Каты на каждый день

 

В программировании также можно использовать каты, чтобы держать себя всегда в форме. Для этого нужно определенные задачи решать каждый день (желательно утром). При этом с каждым разом можно решать по разному, улучшая скорость решения, выполнения или чистоту кода. Самое главное: каждый раз писать код с нуля. 

Читать дальше →
748 6
Alisher Alikulov
Java

Классы: Холодильник и Еда

Задача: Написать класс Холодильник, в который можно класть Еду, проверять заполненность и т.п. 

Решение:
Создаем класс Food представляющий Еду

public class Food {
    public String name;
    public int size = 10;

    public Food(String name, int size){
        this.name = name;
        this.size = size;
    }
}

 

Читать дальше →
604 10
Alisher Alikulov

Ура! На сайте добавлены статьи!

Привет, всем!

Теперь на сайте есть статьи. Я буду давать разные материалы и писать уроки в статьях. Надеюсь вам это поможет. 

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

 

Simpsons

Читать дальше →
860 3
Alisher Alikulov