Kotlin: Переменные, типы данных и вывод на экран

В этом уроке разберём основы работы с данными: как хранить информацию, какие типы существуют и как показывать текст прямо в интерфейсе приложения.

Переменные: "val" vs "var"


В Kotlin две ключевые конструкции для объявления переменных:
  • val — неизменяемая переменная (аналог константы). После присвоения значения его нельзя поменять.
  • var — изменяемая переменная. Значение можно перезаписывать.

Пример в коде (MainActivity.kt):
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val greeting = "Привет!"          // val — нельзя изменить
    var counter = 0               // var — можно менять
    counter = counter + 1         // работает
    // greeting = "Пока!"          // ошибка: нельзя перезаписать val
}

Когда что использовать
  • val — для данных, которые не должны меняться (названия, настройки).
  • var — для счётчиков, динамических значений.

Основные типы данных


  • String: (Пример: "Текст") С
...

Kotlin: Введение

Kotlin — это современный статически типизированный язык программирования, работающий на платформе JVM (Java Virtual Machine). Разработан компанией JetBrains и официально представлен в 2011 году. В 2017 году Google объявил Kotlin приоритетным языком для разработки под Android.

Ключевые преимущества


  • Совместимость с Java: можно использовать существующие Java-библиотеки.
  • Краткость кода: меньше шаблонного кода по сравнению с Java.
  • Безопасность: встроенная защита от NullPointerException.
  • Функциональные возможности: лямбды, расширения, корутины.
  • Мультиплатформенность: поддержка Android, серверных приложений, фронтенда (через Kotlin/JS).

Установка среды разработки



Шаг 1. Установите Android Studio:
...

Программы для разработки Android-приложений

Ссылки на необходимые программы для разработки Android-приложений:

Java Development Kit (JDK)


Необходим для работы Android Studio, так как она основана на Java. Можно использовать JDK от Oracle: https://www.oracle.c ... gies/downloads/.

Android Studio


Официальная интегрированная среда разработки (IDE) от Google. Скачать можно с официального сайта для разработчиков Android: https://developer.android.com/....

JavaScript: Что такое javascript:void(0)?

javascript:void(0) — это синтаксическая конструкция, которую традиционно использовали в атрибуте href HTML‑ссылок для предотвращения перехода по умолчанию.

Пример:
<a href="javascript:void(0)" onclick="doSomething()">Кликни меня</a>

При клике браузер выполняет JavaScript‑код, но void(0) возвращает undefined, что принудительно отменяет навигацию (переход на другую страницу).

Как это работает на практике


  1. Браузер видит href="javascript:..." и интерпретирует содержимое как JS‑код.
  2. void(0) вычисляется в undefined.
  3. Поскольку возвращаемое значение не является валидным URL, переход блокируется.

Почему этот подход считается устаревшим


Несмотря на работоспособность, javascript:void(0) имеет критические недостатки:

Проблемы с доступностью (a11y)
  • Скринридеры озвучивают javascript:void(0) как текст ссылки, создавая путаницу.
  • Клавиатурная навигация (Tab) работает некорректно.
  • Нарушается принцип семантической разметки.

SEO‑риски
  • Поисковые роботы игнорируют ссылки с javascript:.
  • Может расцениватьс
...

PHP: Как определить поворот изображения с помощью exif_read_data()

Что такое EXIF и зачем он нужен


EXIF (Exchangeable Image File Format) — это стандарт, позволяющий добавлять к изображениям и другим файлам метаданные: информацию о камере, настройках съёмки, дате, геолокации и ориентации снимка.

Эти данные записываются камерой или смартфоном при создании фото и могут быть прочитаны специальными инструментами, в том числе PHP‑функцией exif_read_data().

Как EXIF хранит информацию о повороте


Ключевой параметр для определения поворота — поле Orientation (ориентация). Оно принимает значения от 1 до 8, каждое из которых описывает определённое положение камеры при съёмке:
  • 1: нормальное положение (0°);
  • 3: повёрнуто на 180°;
  • 6: повёрнуто на 90° по часовой стрелке;
  • 8: повёрнуто на 90° против часовой стрелки.

Остальные значения (2, 4, 5, 7) описывают зеркальные повороты, которые встречаются реже.

Практический пример на PHP
Шаг 1. Чтение EXIF‑данных
Используйте функцию exif_read_data(), чтобы получить метаданные изображения:
$exifData =
...