2023-12-17 07:57:42 +03:00
|
|
|
|
---
|
|
|
|
|
title: Код с комментариями
|
|
|
|
|
description: Заметки на тему программирования с примерами кода и комментариями. Решения задач и описания решений.
|
|
|
|
|
sections: [Решения задач и описания решений]
|
2023-12-17 08:10:27 +03:00
|
|
|
|
tags: [java,javascript,linux,bash,алгоритмы,реализация,текст,шрифты,комбинации,изображения,картинки,криптография]
|
2023-12-17 07:57:42 +03:00
|
|
|
|
canonical_url: /
|
|
|
|
|
url_translated: /en/
|
|
|
|
|
title_translated: Code with comments
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
{%- assign articles = "" | split: "" %}
|
2023-12-17 08:10:27 +03:00
|
|
|
|
{%- assign articles = articles | push: "Дерево каталогов со ссылками" %}
|
|
|
|
|
{%- capture article_brief %}
|
2023-12-17 08:23:05 +03:00
|
|
|
|
Напишем скрипт Bash для построения дерева каталогов для репозитория в файле Markdown.
|
|
|
|
|
Будем использовать только средства Bash и базовое ПО Linux — `ls`, `sed`, `tr` и `echo`
|
|
|
|
|
— без дополнительных программ. Полученный файл `DIRECTORY_TREE.md` будем использовать
|
|
|
|
|
в вёб-интерфейсе для навигации по объектам репозитория.
|
2023-12-17 08:10:27 +03:00
|
|
|
|
|
2023-12-17 09:51:44 +03:00
|
|
|
|
Создаём рекурсивную функцию и с её помощью обходим все файлы и каталоги репозитория, за
|
|
|
|
|
исключением списка из `.gitignore` — строим структуру каталогов в форме дерева. Выводим
|
|
|
|
|
элементы в виде ссылок `<a>`, сворачиваем папки с одним вложенным элементом в одну строку,
|
|
|
|
|
помещаем собранное дерево в контейнер `<pre>` и добавляем заголовок — в результате получаем
|
|
|
|
|
краткий и лаконичный файл Markdown со ссылками.
|
2023-12-17 08:10:27 +03:00
|
|
|
|
{%- endcapture %}
|
|
|
|
|
{%- assign articles = articles | push: article_brief %}
|
2023-12-17 07:57:42 +03:00
|
|
|
|
{%- assign articles = articles | push: "Генератор паролей" %}
|
|
|
|
|
{%- capture article_brief %}
|
|
|
|
|
Пишем программу на JavaScript для формирования случайных 20-значных комбинаций из латинских букв, цифр и
|
|
|
|
|
спецсимволов. На выбор 60 вариантов — 4 столбца по 15 строк. Первый символ — всегда буква, все символы в
|
2023-12-17 08:10:27 +03:00
|
|
|
|
каждой комбинации идут без повторов. Будем формировать пароли для вёб-сайтов в браузере.
|
|
|
|
|
|
|
|
|
|
Давно пользуюсь этим алгоритмом — у меня все пароли для вёб-сайтов по этой схеме сгенерированы,
|
|
|
|
|
поэтому рекомендую. Первая версия была написана на Java, но для вёб-сайтов проще получается на
|
|
|
|
|
JavaScript, чтобы далеко не ходить.
|
2023-12-17 07:57:42 +03:00
|
|
|
|
{%- endcapture %}
|
|
|
|
|
{%- assign articles = articles | push: article_brief %}
|
|
|
|
|
{%- assign articles = articles | push: "Рисуем сердечко в консоли" %}
|
|
|
|
|
{%- capture article_brief %}
|
|
|
|
|
Напишем два варианта алгоритма на Java для вывода сердечка в консоль в форме текстового
|
|
|
|
|
изображения — поздравим женщин с восьмым марта. Нарисуем график функции в форме сердечка
|
|
|
|
|
и в дополнение нарисуем символ *сердечко* в форме картинки, а картинку выведем текстом
|
|
|
|
|
— консольное поздравление с восьмым марта.
|
|
|
|
|
{%- endcapture %}
|
|
|
|
|
{%- assign articles = articles | push: article_brief %}
|
|
|
|
|
{%- assign articles = articles | push: "График функции в консоли" %}
|
|
|
|
|
{%- capture article_brief %}
|
|
|
|
|
Напишем алгоритм для вывода графика функции или системы уравнений в консоль в виде текста. Будем
|
|
|
|
|
использовать средства Java. Для вычислений будем использовать класс `Math`, а для обхода диапазона
|
|
|
|
|
координат — два вложенных цикла `for`. Нарисуем в консоли график окружности и графики вписанных
|
|
|
|
|
в неё ромба и квадрата.
|
|
|
|
|
{%- endcapture %}
|
|
|
|
|
{%- assign articles = articles | push: article_brief %}
|
|
|
|
|
{%- assign articles = articles | push: "Рисуем простую капчу" %}
|
|
|
|
|
{%- capture article_brief %}
|
|
|
|
|
Напишем алгоритм для отображения текста в виде картинки с использованием библиотеки Java AWT.
|
|
|
|
|
Символы и шрифт могут быть любыми, но для этого примера будем использовать комбинацию заглавных
|
|
|
|
|
латинских букв и цифр со шрифтом *Comic Sans* — будем рисовать простую капчу для сайта или блога.
|
|
|
|
|
|
2023-12-17 09:42:02 +03:00
|
|
|
|
Спецсимволы тоже рассмотрим, но пользоваться ими не будем, потому что угадать их с таким оформлением
|
|
|
|
|
текста будет сложно для пользователя. Например, плюс `+` угадать ещё можно, а вот минус `-` или
|
2023-12-17 07:57:42 +03:00
|
|
|
|
нижнее подчёркивание `_` уже с трудом, и даже если угадаешь, тогда найти эти кнопки с трудом,
|
|
|
|
|
особенно на телефоне. Поэтому для капчи будем использовать комбинацию только из заглавных
|
|
|
|
|
латинских букв и цифр.
|
|
|
|
|
{%- endcapture %}
|
|
|
|
|
{%- assign articles = articles | push: article_brief %}
|
|
|
|
|
{%- include main_page.html articles = articles -%}
|