5/jekyll_site/ru/index.md
2025-01-31 09:24:34 +03:00

65 lines
6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Код с комментариями
description: Заметки на тему программирования с примерами кода и комментариями. Решения задач и описания решений.
sections: [Решения задач и описания решений]
tags: [java,javascript,linux,bash,алгоритмы,реализация,текст,шрифты,комбинации,изображения,картинки,криптография]
canonical_url: /
url_translated: /en/
title_translated: Code with comments
---
{%- assign articles = "" | split: "" %}
{%- assign articles = articles | push: "Дерево каталогов со ссылками" %}
{%- capture article_brief %}
Напишем скрипт Bash для построения дерева каталогов для репозитория в файле Markdown. Будем
использовать только встроенные средства Bash и базовое ПО Linux — `ls`, `sed`, `tr` и `printf`
— без дополнительных программ. Полученный файл `DIRECTORY_TREE.md` пригодится в вёб-интерфейсе
для навигации по объектам репозитория.
Создаём рекурсивную функцию и с её помощью обходим все файлы и каталоги репозитория, за
исключением списка из `.gitignore` — строим структуру каталогов в форме дерева. Выводим
элементы в виде ссылок `<a>`, сворачиваем папки с одним вложенным элементом в одну строку,
помещаем собранное дерево в контейнер `<pre>` и добавляем заголовок — в результате получаем
краткий и лаконичный файл Markdown со ссылками.
{%- endcapture %}
{%- assign articles = articles | push: article_brief %}
{%- assign articles = articles | push: "Генератор паролей" %}
{%- capture article_brief %}
Пишем программу на JavaScript для формирования случайных 20-значных комбинаций из латинских букв, цифр и
спецсимволов. На выбор 60 вариантов — 4 столбца по 15 строк. Первый символ — всегда буква, все символы в
каждой комбинации идут без повторов. Будем формировать пароли для вёб-сайтов в браузере.
Давно пользуюсь этим алгоритмом — у меня все пароли для вёб-сайтов по этой схеме сгенерированы,
поэтому рекомендую. Первая версия была написана на Java, но для вёб-сайтов проще получается на
JavaScript, чтобы далеко не ходить.
{%- 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* — будем рисовать простую капчу для сайта или блога.
Спецсимволы тоже рассмотрим, но использовать их не будем, потому что угадать спецсимволы пользователю
будет сложно с таким оформлением текста. Например, плюс `+` угадать ещё можно, а вот минус `-` или
нижнее подчёркивание `_` уже с трудом, и даже если угадаешь, тогда найти эти кнопки с трудом, особенно
на телефоне. Поэтому для капчи будем использовать комбинацию только из заглавных латинских букв и цифр.
{%- endcapture %}
{%- assign articles = articles | push: article_brief %}
{%- include main_page.html articles = articles -%}