Алгоритм Диффи-Хеллмана #криптография
Это специальный криптографический протокол, который позволяет нескольким сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритма симметричного шифрования. Но, к сожалению, он не такой безопасный, как может показаться, на него работает MITM атака. Но данный алгоритм и не задумывался решить эту проблему. Но одно из главных преимуществ этого алгоритма — ключ создается без прямого обмена им между сторонами.
Алгоритм Диффи-Хеллмана используется для того, чтобы две стороны могли создать общий секретный ключ, его еще называют "транспортный ключ", который затем используется для шифрования и дешифрования сообщений.
Это специальный криптографический протокол, который позволяет нескольким сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритма симметричного шифрования. Но, к сожалению, он не такой безопасный, как может показаться, на него работает MITM атака. Но данный алгоритм и не задумывался решить эту проблему. Но одно из главных преимуществ этого алгоритма — ключ создается без прямого обмена им между сторонами.
Алгоритм Диффи-Хеллмана используется для того, чтобы две стороны могли создать общий секретный ключ, его еще называют "транспортный ключ", который затем используется для шифрования и дешифрования сообщений.
👍1 1
Большое руководство по сетям и шифрованию, 1 и 2 часть #архив #статья #хабр #моё
Приветствую вас, читатели Хабра! В этой статье я бы хотел уделить внимание такой вещи как шифрование трафика на Linux системах. Наверное, каждый из нас прекрасно понимает, насколько важна защита нашей приватности. Ведь в эпоху, когда многие компании собирают данные, а иногда хакеры могут перехватить наш трафик, это становится особенно важно. Просто необходимо позаботиться о безопасности своих данных. Например, быть уверенным, что какая-либо корпоративная сеть не прослушивается злоумышленниками. Информационная безопасность сегодня — это не просто мода, а насущная необходимость. Постоянно растет киберпреступность, и защита трафика от перехвата — это основной аспект цифровой жизни человека или бизнеса.
В рамках этой статьи мы рассмотрим основные методы шифрования, которые можно использовать в Linux, и разберем, как их внедрить. Мы попытаемся разобраться, как работает криптография на уровне протоколов, как работает сеть в Linux, что такое сквозное шифрование и виртуальные частные сети.
Особенно эта статья будет актуальна для людей, которых заботит конфиденциальность и защита данных, в том числе для корпораций.
+ Первая часть
+ Вторая часть
Приветствую вас, читатели Хабра! В этой статье я бы хотел уделить внимание такой вещи как шифрование трафика на Linux системах. Наверное, каждый из нас прекрасно понимает, насколько важна защита нашей приватности. Ведь в эпоху, когда многие компании собирают данные, а иногда хакеры могут перехватить наш трафик, это становится особенно важно. Просто необходимо позаботиться о безопасности своих данных. Например, быть уверенным, что какая-либо корпоративная сеть не прослушивается злоумышленниками. Информационная безопасность сегодня — это не просто мода, а насущная необходимость. Постоянно растет киберпреступность, и защита трафика от перехвата — это основной аспект цифровой жизни человека или бизнеса.
В рамках этой статьи мы рассмотрим основные методы шифрования, которые можно использовать в Linux, и разберем, как их внедрить. Мы попытаемся разобраться, как работает криптография на уровне протоколов, как работает сеть в Linux, что такое сквозное шифрование и виртуальные частные сети.
Особенно эта статья будет актуальна для людей, которых заботит конфиденциальность и защита данных, в том числе для корпораций.
+ Первая часть
+ Вторая часть
🔥1👨💻1 1
#HEX • IT
Вы бы хотели поддержать канал финансово?
Если кто хочет, может задонатить
Сбер, СПБ: +79538762319
Ton coin:
USDT (trc20):
Часть средств пойдет на оплату сервера для нашего сайта.
Благодарю.
Сбер, СПБ: +79538762319
Ton coin:
UQCeNdt_oTXg9Y-oHuA7RDBA7MEzNKg-u-KCi6VH95VS9TlhUSDT (trc20):
TEWSFXhZmYmSm1ozVcE3615UzkZvRp5HVrЧасть средств пойдет на оплату сервера для нашего сайта.
Благодарю.
❤2👍2
Для анализа системы существует утилита systemd-analyze.
Итак, если вы запустите ее, то вы увидите следующее (на скрине)
Как мы видим, за 7 секунд загрузилось ядро а за 11 секунд — пользовательское пространство. Всего система загрузилась за 18.5 секунд.
Если вам этого недостаточно, то можно использовать команду systemd-analyze blame, которая показывает также время запуска сервисов:
Итак, если вы запустите ее, то вы увидите следующее (на скрине)
Как мы видим, за 7 секунд загрузилось ядро а за 11 секунд — пользовательское пространство. Всего система загрузилась за 18.5 секунд.
Если вам этого недостаточно, то можно использовать команду systemd-analyze blame, которая показывает также время запуска сервисов:
$ systemd-analyze blame
3.869s dev-sda2.device
2.288s NetworkManager.service
1.606s user@1000.service
1.467s systemd-tmpfiles-setup-dev-early.service
1.445s upower.service
1.215s systemd-udev-trigger.service
996ms systemd-journal-flush.service
996ms systemd-journald.service
919ms systemd-rfkill.service
900ms iio-sensor-proxy.service
769ms systemd-tmpfiles-setup.service
653ms systemd-logind.service
546ms accounts-daemon.service
518ms polkit.service
459ms systemd-udevd.service
445ms systemd-tmpfiles-clean.service
425ms systemd-userdbd.service
395ms udisks2.service
384ms systemd-timesyncd.service
# ...
👍2 2
Journalctl — это утилита из состава systemd, отвечающая за работу с журналами и демоном journald.
Итак, чтобы просто просмотреть логи, можно просто ввести команду journalctl.
Данная команда выводит все записи из всех журналов, начиная с момента загрузки системы. Время указано по локальному времени в системе, для того чтобы вывести время в формате UTC, надо использовать флаг --utc.
Итак, но допустим, мы не хотим читать абсолютно все логи, и нам нужны только ошибки.
Для уровней важности, приняты следующие обозначения:
0: emergency (неработоспособность системы)
1: alerts (предупреждения, требующие немедленного вмешательства)
2: critical (критическое состояние)
3: errors (ошибки)
4: warning (предупреждения)
5: notice (уведомления)
6: info (информационные сообщения)
7: debug (отладочные сообщения)
Для того, чтобы указать код важности, требуется флаг -p. Когда мы, например, будем использовать journalctl -p 3, то в журнале будут сообщения с 0, 1, 2 и 3 уровнем (то есть включая предыдущие).
Итак, чтобы просто просмотреть логи, можно просто ввести команду journalctl.
Данная команда выводит все записи из всех журналов, начиная с момента загрузки системы. Время указано по локальному времени в системе, для того чтобы вывести время в формате UTC, надо использовать флаг --utc.
Итак, но допустим, мы не хотим читать абсолютно все логи, и нам нужны только ошибки.
Для уровней важности, приняты следующие обозначения:
0: emergency (неработоспособность системы)
1: alerts (предупреждения, требующие немедленного вмешательства)
2: critical (критическое состояние)
3: errors (ошибки)
4: warning (предупреждения)
5: notice (уведомления)
6: info (информационные сообщения)
7: debug (отладочные сообщения)
Для того, чтобы указать код важности, требуется флаг -p. Когда мы, например, будем использовать journalctl -p 3, то в журнале будут сообщения с 0, 1, 2 и 3 уровнем (то есть включая предыдущие).
👍2⚡1❤1 1
#шпаргалка journalctl
Ниже я представил некоторые базовые флаги для просмотра информации о службах и журналах:
journalctl -n 100 — показывает первые 100 записей в журнале (вместо 100 можно использовать любое другое число)
journalctl _SYSTEMD_UNIT=earlyoom.service — просмотр записей, связанных с юнитом earlyoom.service
journalctl _COMM=sshd — показывает все записи, связанные с процессом sshd
journalctl _PID=1000 — показывает все записи, связанные с PID 1000
journalctl _UID=1000 — показывает все записи, связанные с UID 1000
journalctl _GID=1000 — показывает все записи, связанные с GID 1000
journalctl _HOSTNAME=linux — показывает все записи, связанные с хостом linux
journalctl --since 2024-01-01 — показывает все записи, начиная с указанной даты
journalctl --until 2024-01-01 — показывает все записи, заканчивая указанной датой
journalctl --since -1h — показывает все записи за последний час
journalctl --since -1days — показывает все записи за последние сутки
journalctl --vacuum-size=10M — удаляет записи, пока журнал не станет весом 10МБ.
journalctl --vacuum-time=1week — удаляет записи старше 1 недели.
journalctl --output=short — показывает записи в компактном виде
journalctl --output=verbose — показывает записи в расширенном виде
journalctl --output=json — показывает записи в json-формате
journalctl --verify — проверяет целостность журнала
journalctl -xeu "service" — отображает записи в формате JSON (-x) и единого события (-e) по указанной службе (-u).
journalctl -feu "service" — отображает записи в режиме реального времени (-f) и единого события (-e) по указанной службе (-u).
journalctl --list-boots — отображеает журналы, которые были созданы при загрузке системы
journalctl -b 0 — просмотреть журнал с текущего старта системы
journalctl -b -1 — просмотреть журнал с предыдущего старта системы
journalctl -k — просмотр сообщений ядра
Ниже я представил некоторые базовые флаги для просмотра информации о службах и журналах:
journalctl -n 100 — показывает первые 100 записей в журнале (вместо 100 можно использовать любое другое число)
journalctl _SYSTEMD_UNIT=earlyoom.service — просмотр записей, связанных с юнитом earlyoom.service
journalctl _COMM=sshd — показывает все записи, связанные с процессом sshd
journalctl _PID=1000 — показывает все записи, связанные с PID 1000
journalctl _UID=1000 — показывает все записи, связанные с UID 1000
journalctl _GID=1000 — показывает все записи, связанные с GID 1000
journalctl _HOSTNAME=linux — показывает все записи, связанные с хостом linux
journalctl --since 2024-01-01 — показывает все записи, начиная с указанной даты
journalctl --until 2024-01-01 — показывает все записи, заканчивая указанной датой
journalctl --since -1h — показывает все записи за последний час
journalctl --since -1days — показывает все записи за последние сутки
journalctl --vacuum-size=10M — удаляет записи, пока журнал не станет весом 10МБ.
journalctl --vacuum-time=1week — удаляет записи старше 1 недели.
journalctl --output=short — показывает записи в компактном виде
journalctl --output=verbose — показывает записи в расширенном виде
journalctl --output=json — показывает записи в json-формате
journalctl --verify — проверяет целостность журнала
journalctl -xeu "service" — отображает записи в формате JSON (-x) и единого события (-e) по указанной службе (-u).
journalctl -feu "service" — отображает записи в режиме реального времени (-f) и единого события (-e) по указанной службе (-u).
journalctl --list-boots — отображеает журналы, которые были созданы при загрузке системы
journalctl -b 0 — просмотреть журнал с текущего старта системы
journalctl -b -1 — просмотреть журнал с предыдущего старта системы
journalctl -k — просмотр сообщений ядра
👍1🔥1
Работа с сервисами через systemD #шпаргалка
systemctl — специальная утилита для взаимодействия с сервисами и systemd.
Основные команды я вынес ниже:
systemctl start "служба" — запуск определенной службы
systemctl stop "служба" — остановка определенной службы
systemctl restart "служба" — перезапуск службы
systemctl reload "служба" — перезагрузка конфига службы
systemctl status "служба" — статус службы
systemctl enable "service" — включение автозапуска службы
systemctl disable "service" — выключение автозапуска службы
systemctl is-enabled "service" — включен ли автозапуск службы
systemctl poweroff — выключение системы
systemctl suspend — перевод системы в спящий режим системы
systemctl hibernate — гибернация системы
systemctl reboot — перезагрузка системы
systemctl list-units — отображает все активные юниты
systemctl list-unit-files — отображает все доступные юнит-файлы
systemctl show "название юнита" — отображает подробную информацию об указанном юните
systemctl daemon-reload — перезагрузка и перечитывание всех конфигов юнитов.
systemctl isolate "системный уровень, таргет" — переключает систему в указанный системный уровень
systemctl mask "название юнита" — запрещает запуск данного юнита, маскирует его
systemctl unmask "название юнита" — разрешает запуск данного юнита
systemctl --failed — показывает все службы, которые не смогли запуститься из-за ошибки.
systemctl — специальная утилита для взаимодействия с сервисами и systemd.
Основные команды я вынес ниже:
systemctl start "служба" — запуск определенной службы
systemctl stop "служба" — остановка определенной службы
systemctl restart "служба" — перезапуск службы
systemctl reload "служба" — перезагрузка конфига службы
systemctl status "служба" — статус службы
systemctl enable "service" — включение автозапуска службы
systemctl disable "service" — выключение автозапуска службы
systemctl is-enabled "service" — включен ли автозапуск службы
systemctl poweroff — выключение системы
systemctl suspend — перевод системы в спящий режим системы
systemctl hibernate — гибернация системы
systemctl reboot — перезагрузка системы
systemctl list-units — отображает все активные юниты
systemctl list-unit-files — отображает все доступные юнит-файлы
systemctl show "название юнита" — отображает подробную информацию об указанном юните
systemctl daemon-reload — перезагрузка и перечитывание всех конфигов юнитов.
systemctl isolate "системный уровень, таргет" — переключает систему в указанный системный уровень
systemctl mask "название юнита" — запрещает запуск данного юнита, маскирует его
systemctl unmask "название юнита" — разрешает запуск данного юнита
systemctl --failed — показывает все службы, которые не смогли запуститься из-за ошибки.
👍1🔥1
Адреса памяти #система #компьютер
Память состоит из неких секций, ячеек. Каждая из них может хранить порцию информацию. Каждая ячейка имеет номер, который называется адресом. По адресу программы могут ссылаться на определенную ячейку. Если память содержит N ячеек. Они будут иметь адреса от 0 до N-1. Все ячейки памяти содержат одинаковое количество битов. Если ячейка состоит из k бит, она может содержать любую из 2^k комбинаций.
В компьютерах с двоичной системой исчисления (включая восьмеричное и шестнадцатеричное представление) адреса памяти выражаются, как не удивительно, тоже в двоичных числах. Если адрес состоит из m бит, то максимальное число адресуемых ячеек составит 2^m. Число битов в адресе определяет максимальное кол-во адресуемых ячеек памяти и не зависит от числа битов в ячейке.
Ячейка — минимальная адресуемая единица памяти. В последние годы практически все производители выпускают компьютеры с 8-разрядными ячейками, которые называются байтами (иногда октетами). Байты группируют в слова. В компьютере с 32-разрядным словами на каждое слово приходится 4 байт, а в 64 разрядном — 8 байт. Таким образом, 32 разрядная машина содержит 32-разрядные регистры и команды для манипуляций с 32 разрядными словами, а 64 разрядная машина имеет уже 64 разрядные регистры и манипуляции с соответствующими словами.
Байты в слове могут нумероваться слева направо или наоборот. Нумерация с высшего порядка, она относится к прямому порядку следования байтов (big endian). А также наоборот — обратный порядок следования байтов (little endian).
Важно понимать, что в обеих системах 32-разрядное целое число (например, 6) представлено битами 110 в трех крайних правых битах слова, а остальные 29 бит — нули. Если байты нумеруются слева направо, то биты 110 находятся в байте 0 (или 4, или 8, или 16 и т.д). В обеих системах слово содержащее это целое число, имеет адрес 0.
Память состоит из неких секций, ячеек. Каждая из них может хранить порцию информацию. Каждая ячейка имеет номер, который называется адресом. По адресу программы могут ссылаться на определенную ячейку. Если память содержит N ячеек. Они будут иметь адреса от 0 до N-1. Все ячейки памяти содержат одинаковое количество битов. Если ячейка состоит из k бит, она может содержать любую из 2^k комбинаций.
В компьютерах с двоичной системой исчисления (включая восьмеричное и шестнадцатеричное представление) адреса памяти выражаются, как не удивительно, тоже в двоичных числах. Если адрес состоит из m бит, то максимальное число адресуемых ячеек составит 2^m. Число битов в адресе определяет максимальное кол-во адресуемых ячеек памяти и не зависит от числа битов в ячейке.
Ячейка — минимальная адресуемая единица памяти. В последние годы практически все производители выпускают компьютеры с 8-разрядными ячейками, которые называются байтами (иногда октетами). Байты группируют в слова. В компьютере с 32-разрядным словами на каждое слово приходится 4 байт, а в 64 разрядном — 8 байт. Таким образом, 32 разрядная машина содержит 32-разрядные регистры и команды для манипуляций с 32 разрядными словами, а 64 разрядная машина имеет уже 64 разрядные регистры и манипуляции с соответствующими словами.
Байты в слове могут нумероваться слева направо или наоборот. Нумерация с высшего порядка, она относится к прямому порядку следования байтов (big endian). А также наоборот — обратный порядок следования байтов (little endian).
Фан-факт: эти термины взяты из книги Джонатана Свифта «Путешествия Гулливера» — он иронизировал по поводу спора королей, с какого конца разбивать яйца. Введены эти термины в статье Коэна 1981 года.
Важно понимать, что в обеих системах 32-разрядное целое число (например, 6) представлено битами 110 в трех крайних правых битах слова, а остальные 29 бит — нули. Если байты нумеруются слева направо, то биты 110 находятся в байте 0 (или 4, или 8, или 16 и т.д). В обеих системах слово содержащее это целое число, имеет адрес 0.
👍1👨💻1
X11: Архитектура и графический стек
X Window System (X11, или просто X) — это оконная система для растровых дисплеев, распространенная в Unix-подобных операционных системах.
X11 предоставляет графическую базу: создание, перемещение и удаление окон, взаимодействие с клавиатурой и мышью. X не определяет пользовательский интерфейс — этим занимаются отдельные программы. Таким образом стиль сред и оболочек, основанных на X, сильно различаются.
X был создан как часть проекта "Athena" в MIT в 1984 году. Протокол X имеет версию 11 (отсюда X11) с сентября 1987 года. Фонд X.Org возглавляет проект X с текущей эталонной реализацией, X.Org Server, доступный в виде открытого бесплатного программного обеспечения под лицензией MIT.
X11 (сам протокол) разрабатывался с целью быть расширяемым (т.е. с возможностью добавления новых фич без создания принципиально нового протокола и без потери обратной совместимости со старыми клиентами). Для примера, xeyes и oclock выглядят, скажем так, «нестандартно», из-за Shape Extension, которое позволяет использовать окна непрямоугольной формы. Если вам не очень понятно, с помощью какой магии эта функциональность появляется из ниоткуда, то вот ответ: магия тут ни при чём. Поддержка расширения должна быть добавлена на обеих сторонах — и у клиента, и у сервера. В базовой спецификации протокола есть специальный функционал для получения клиентами информации от сервера о доступных расширениях. С помощью этого функционала клиенты могут решать, что использовать, а что — нет.
X Window System (X11, или просто X) — это оконная система для растровых дисплеев, распространенная в Unix-подобных операционных системах.
X11 предоставляет графическую базу: создание, перемещение и удаление окон, взаимодействие с клавиатурой и мышью. X не определяет пользовательский интерфейс — этим занимаются отдельные программы. Таким образом стиль сред и оболочек, основанных на X, сильно различаются.
X был создан как часть проекта "Athena" в MIT в 1984 году. Протокол X имеет версию 11 (отсюда X11) с сентября 1987 года. Фонд X.Org возглавляет проект X с текущей эталонной реализацией, X.Org Server, доступный в виде открытого бесплатного программного обеспечения под лицензией MIT.
X11 (сам протокол) разрабатывался с целью быть расширяемым (т.е. с возможностью добавления новых фич без создания принципиально нового протокола и без потери обратной совместимости со старыми клиентами). Для примера, xeyes и oclock выглядят, скажем так, «нестандартно», из-за Shape Extension, которое позволяет использовать окна непрямоугольной формы. Если вам не очень понятно, с помощью какой магии эта функциональность появляется из ниоткуда, то вот ответ: магия тут ни при чём. Поддержка расширения должна быть добавлена на обеих сторонах — и у клиента, и у сервера. В базовой спецификации протокола есть специальный функционал для получения клиентами информации от сервера о доступных расширениях. С помощью этого функционала клиенты могут решать, что использовать, а что — нет.
👍1 1
Принципы X11
Боб Шейфлер и Джим Геттис изложили принципы X следующим образом:
Не добавляйте новую функциональность, если разработчик не может завершить реальное приложение без нее.
Решить, чем система не является, так же важно, как и решить, чем она является. Не удовлетворяйте все потребности мира; скорее, сделайте систему расширяемой, чтобы можно было удовлетворять дополнительные потребности совместимым образом.
Единственное, что хуже обобщения на основе одного примера, — это обобщение вообще без примеров.
Если проблема понята не до конца, вероятно, лучше вообще не предлагать никакого решения.
Если вы можете получить 90 процентов желаемого эффекта за 10 процентов работы, используйте более простое решение. (Смотрите также, Чем хуже, тем лучше.)
Максимально изолируйте сложность.
Предоставьте механизм, а не политику. В частности, передайте политику пользовательского интерфейса в руки клиентов.
Первый принцип был изменен во время разработки X11 следующим образом: Не добавляйте новую функциональность, если вы не знаете какого-либо реального приложения, которому это потребуется.
С тех пор X в основном придерживается этих принципов. Фонд X.Org разрабатывает эталонную реализацию с целью расширения и улучшения реализации, сохраняя при этом ее почти полную совместимость с первоначальным протоколом 1987 года.
Можно сказать, что эти принципы — это ответ на вопрос, как иксы дожили до наших дней.
Боб Шейфлер и Джим Геттис изложили принципы X следующим образом:
Не добавляйте новую функциональность, если разработчик не может завершить реальное приложение без нее.
Решить, чем система не является, так же важно, как и решить, чем она является. Не удовлетворяйте все потребности мира; скорее, сделайте систему расширяемой, чтобы можно было удовлетворять дополнительные потребности совместимым образом.
Единственное, что хуже обобщения на основе одного примера, — это обобщение вообще без примеров.
Если проблема понята не до конца, вероятно, лучше вообще не предлагать никакого решения.
Если вы можете получить 90 процентов желаемого эффекта за 10 процентов работы, используйте более простое решение. (Смотрите также, Чем хуже, тем лучше.)
Максимально изолируйте сложность.
Предоставьте механизм, а не политику. В частности, передайте политику пользовательского интерфейса в руки клиентов.
Первый принцип был изменен во время разработки X11 следующим образом: Не добавляйте новую функциональность, если вы не знаете какого-либо реального приложения, которому это потребуется.
С тех пор X в основном придерживается этих принципов. Фонд X.Org разрабатывает эталонную реализацию с целью расширения и улучшения реализации, сохраняя при этом ее почти полную совместимость с первоначальным протоколом 1987 года.
Можно сказать, что эти принципы — это ответ на вопрос, как иксы дожили до наших дней.
👍1👨💻1
Wayland кратко
Лишь один из протоколов, графических серверов дожил до наших дней и стал более-менее популярным и стабильным — это Wayland. Есть конечно Mir, но кому он нужен?
Для начала немного узнаем, что связано с вейландом:
Композитор/Compositor — композитный оконный менеджер. Можно сказать, что он отвечает за анимации, прозрачность и все остальное, то есть создает композицию графических эффектов. Вот примеры композиторов в мире линукса:
Weston — эталонный композитный менеджер для Wayland
Muffin — композитор в cinnamon
Mutter — композитор в Gnome (поддерживает wayland)
Marco — композитор MATE
KWin — композитор KDE (поддерживает Wayland)
Sway – тайлинговый композитный оконный менеджер. Sway использует wlroots – модульную реализацию Wayland, которая функционирует как база для нескольких композиторов.
Лишь один из протоколов, графических серверов дожил до наших дней и стал более-менее популярным и стабильным — это Wayland. Есть конечно Mir, но кому он нужен?
Для начала немного узнаем, что связано с вейландом:
Композитор/Compositor — композитный оконный менеджер. Можно сказать, что он отвечает за анимации, прозрачность и все остальное, то есть создает композицию графических эффектов. Вот примеры композиторов в мире линукса:
Weston — эталонный композитный менеджер для Wayland
Muffin — композитор в cinnamon
Mutter — композитор в Gnome (поддерживает wayland)
Marco — композитор MATE
KWin — композитор KDE (поддерживает Wayland)
Sway – тайлинговый композитный оконный менеджер. Sway использует wlroots – модульную реализацию Wayland, которая функционирует как база для нескольких композиторов.
❤1👍1 1
Последние посты в канале...
Anonymous Poll
22%
Мне не нравятся в принципе
11%
Мне не нравятся что их слишком много, но сами посты ок
0%
Мне не нравится что их слишком мало, но сами посты ок
44%
Мне нравится
0%
Мне нравится, но постов бы побольше
6%
Мне нравится, но постов бы поменьше
17%
Мне все нравится! Ждем сайт🔥
👍2
#HEX • IT
Последние посты в канале...
Прошу писать в комментарии, что не нравится, будем исправлять
👍2
Пространства имён в C++
Я не буду сильно углубляться в тему, просто расскажу минимальную информацию. Мы же все таки айтишники, а не сосиски в тесте.
Пространство имен позволяет сгруппировать функционал в отдельные контейнеры. Пространство имен представляет блок кода, который содержит набор компонентов (функций, классов и т.д.) и имеет некоторое имя, которое прикрепляется к каждому компоненту из этого пространства имен. Полное имя каждого компонента — это имя пространства имен, за которым следует оператор :: (оператор области видимости или scope operator) и имя компонента. Примером может служить оператор cout, который предназначен для вывода строки на консоль и который определен в пространстве имен std. Соответственно чтобы обратиться к этому оператору, применяется выражение std::cout.
Но также можно создавать и свои пространства:
Директива using позволяет ссылаться на любой компонент пространства имен без использования его имени:
Я не буду сильно углубляться в тему, просто расскажу минимальную информацию. Мы же все таки айтишники, а не сосиски в тесте.
Пространство имен позволяет сгруппировать функционал в отдельные контейнеры. Пространство имен представляет блок кода, который содержит набор компонентов (функций, классов и т.д.) и имеет некоторое имя, которое прикрепляется к каждому компоненту из этого пространства имен. Полное имя каждого компонента — это имя пространства имен, за которым следует оператор :: (оператор области видимости или scope operator) и имя компонента. Примером может служить оператор cout, который предназначен для вывода строки на консоль и который определен в пространстве имен std. Соответственно чтобы обратиться к этому оператору, применяется выражение std::cout.
#include <iostream>
int main() {
std::cout << "Hello, HEX!" << std::endl;
return 0;
}
Но также можно создавать и свои пространства:
#include <iostream>
namespace hello {
const std::string message{"hello work"};
void print(const std::string& text) {
std::cout << text << std::endl;
}
}
int main() {
hello::print(hello::message); // hello work
}
Директива using позволяет ссылаться на любой компонент пространства имен без использования его имени:
#include <iostream>
namespace console
{
const std::string message{"hello"};
void print(const std::string& text)
{
std::cout << text << std::endl;
}
}
using namespace console; // подключаем все компоненты пространства console
int main()
{
print(message); // указывать пространство имен не требуется
}
👍2🔥2😁1
Совет учащимся.
Друзья, если вы изучаете что-либо по книжке / курсам, то:
1. Изучите предлагаемый пример кода глазами. Читайте его несколько раз, пока вам не станет всё понятно. Каждая строчка должна быть достаточно очевидной.
2. Перепишите в тетрадку по памяти этот фрагмент. Этот совет может показаться олдскульным, но он реально работает! Вы вдруг обнаружите, что всё было не так очевидно. Я лично пишу сразу ручкой. Невозможность быстро и красиво исправить написанное заставляет более усердно думать, что я пишу. И если после исправлений листинг получается слишком грязный, его стоит переписать заново. По памяти.
3. Наберите по памяти то, что вы написали в тетрадку. Откомпилируйте / запустите, и ищите ошибки. Они, с большой вероятностью, всё равно будут. На этом этапе старайтесь самостоятельно разобраться, в чём причина, попробуйте не подсматривать в книжку с тем примером. Лучше полезьте в документацию, на стэковерфлоу, в гуглы, но найдите себе ответ на вопрос: почему этот код не работает? Найденный ответ запишите себе в тетрадку рядом с кодом. Или можете сохранить в отдельный текстовый файл, но мне лично больше нравится запись в тетрадке.
4. Уйдите от своего примера, расширьте его возможности, добавьте свои идеи. И добейтесь их воплощения. Вы можете прийти к совершенно неожиданным обнаружениям.
В таком режиме вы будете учиться очень медленно. Это значит, что 1 минута видео будет занимать примерно 30-60 минут работы.
Но! Всё изученное будет по-настоящему вашим. Полученные знания никто у вас никогда не сможет отобрать, и это то, за что вас будут ценить.
Всех люблю, всем удачи!
ИСТОЧНИК
Друзья, если вы изучаете что-либо по книжке / курсам, то:
1. Изучите предлагаемый пример кода глазами. Читайте его несколько раз, пока вам не станет всё понятно. Каждая строчка должна быть достаточно очевидной.
2. Перепишите в тетрадку по памяти этот фрагмент. Этот совет может показаться олдскульным, но он реально работает! Вы вдруг обнаружите, что всё было не так очевидно. Я лично пишу сразу ручкой. Невозможность быстро и красиво исправить написанное заставляет более усердно думать, что я пишу. И если после исправлений листинг получается слишком грязный, его стоит переписать заново. По памяти.
3. Наберите по памяти то, что вы написали в тетрадку. Откомпилируйте / запустите, и ищите ошибки. Они, с большой вероятностью, всё равно будут. На этом этапе старайтесь самостоятельно разобраться, в чём причина, попробуйте не подсматривать в книжку с тем примером. Лучше полезьте в документацию, на стэковерфлоу, в гуглы, но найдите себе ответ на вопрос: почему этот код не работает? Найденный ответ запишите себе в тетрадку рядом с кодом. Или можете сохранить в отдельный текстовый файл, но мне лично больше нравится запись в тетрадке.
4. Уйдите от своего примера, расширьте его возможности, добавьте свои идеи. И добейтесь их воплощения. Вы можете прийти к совершенно неожиданным обнаружениям.
В таком режиме вы будете учиться очень медленно. Это значит, что 1 минута видео будет занимать примерно 30-60 минут работы.
Но! Всё изученное будет по-настоящему вашим. Полученные знания никто у вас никогда не сможет отобрать, и это то, за что вас будут ценить.
Всех люблю, всем удачи!
ИСТОЧНИК
Telegram
楽園松本 in Python
Внезапно меня пробило на назидательную речь. Совет учащимся.
Друзья, если вы изучаете что-либо по книжке / курсам, то:
1. Изучите предлагаемый пример кода глазами. Читайте его несколько раз, пока вам не станет всё понятно. Каждая строчка должна быть достаточно…
Друзья, если вы изучаете что-либо по книжке / курсам, то:
1. Изучите предлагаемый пример кода глазами. Читайте его несколько раз, пока вам не станет всё понятно. Каждая строчка должна быть достаточно…
1👍3🔥1 1
Если вам не трудно, напишите в комментариях, какие конкретно посты вам понравились или что вы хотите видеть? (конкретно)
❤1👍1