Я создал на веб-сервисе «GitHub» (далее я буду называть его «Гитхабом», чтобы можно было склонять) репозиторий, в который постепенно загружал файлы через веб-интерфейс, как по одному, так и группами. На данный момент в этом репозитории хранится около полутора сотен файлов в разных папках, в том числе с вложением папок разной глубины. Файлы имеют разные расширения.
Мне понадобилось переименовать сразу 157 файлов в описанном репозитории по следующему принципу:
00-00_имя-файла.ext # было
00-000_имя-файла.ext # стало, добавился '0'
В этом блоке кода показаны шаблоны. Вместо .ext
могут быть разные расширения (в моем случае это расширения .cpp
и .h
). Вместо имя-файла
могут быть разные названия из нескольких слов, эти названия могут быть разной длины. Вместо 00-00
могут быть, например, следующие последовательности символов: 00-01
, 00-02
, ..., 01-00
, 01-01
, ..., 02-00
, 02-01
, 02-02
и так далее. То есть мне понадобилось расширить второй номер, который идет после дефиса, с двух разрядов до трех, поэтому мне нужно переименовать все файлы, добавляя символ 0
в указанное выше место в названии файлов.
Я знаю, как через веб-интерфейс «Гитхаба» можно переименовывать файлы по одиночке, об этом можно прочитать в отдельной статье документации «Гитхаба», но там не описано, как переименовать сразу множество файлов проекта. Быстро, одной операцией, это сделать у меня не получилось, поэтому я разбил задачу на несколько более простых пунктов.
План действий
Клонировать репозиторий (создать копию) на свой компьютер;
Написать скрипт для переименования множества файлов проекта и переименовать их;
Создать коммит со всеми переименованиями;
Отправить изменения в оригинальный репозиторий на «Гитхабе».
1. Клонирование репозитория на свой компьютер
Я работаю в операционной системе «Windows 10» и пользуюсь программой (системой управления версиями) «Git for Windows» из командной строки. В качестве программы-оболочки я использую «PowerShell» версии 7. В качестве программы-«эмулятора терминала» использую «Windows Terminal».
Клонирование (создание копии) репозитория с «Гитхаба» на мой компьютер (иногда я буду сокращать путь к текущему местоположению с помощью многоточия ...
, чтобы команда влезла в формат статьи):
PS C:\...\repos> git clone https://github.com/ilyachalov/learncpp-com-examples
Команде git clone
просто передаём URL-адрес репозитория на «Гитхабе». Авторизация при этом не требуется. Насколько я понимаю, это потому, что этот мой репозиторий публичный. В результате этой команды в текущем местоположении создалась папка «learncpp-com-examples» с файлами репозитория. Для дальнейших действий удобнее перейти в эту папку и работать из нее.
PS C:\Users\Илья\source\repos> cd learncpp-com-examples
PS C:\Users\Илья\source\repos\learncpp-com-examples>
Для удобства далее я буду обозначать это местоположение так:
PS ..\learncpp-com-examples>
2. Скрипт для переименования файлов и его применение
За основу скрипта я взял код из примера 4 статьи про командлет «Rename-Item» документации программы-оболочки «PowerShell». Я переписал тот код под свои нужды, добавил регулярные выражения и получил следующее:
файл «rename-files.ps1» (в кодировке UTF-8 без BOM, окончания строк CRLF)
Get-ChildItem -File -Recurse |
Rename-Item -NewName {
$_.Name -replace '^(\d\d)-(\d\d)_(.*)', '$1-0$2_$3'
}
Данный скрипт просматривает только файлы (папки отбрасываются, это обеспечивается параметром -File
командлета «Get-ChildItem»), начиная с текущей папки и вглубь, во вложенных папках (это обеспечивается параметром -Recurse
командлета «Get-ChildItem»). Командлет «Get-ChildItem» отбирает все файлы, поэтому параметр -Path
командлету «Get-ChildItem» не требуется, он опущен. Файлы, отобранные командлетом «Get-ChildItem», передаются по конвейеру |
командлету «Rename-Item», который и выполняет переименования.
Я написал еще один вариант этого скрипта, который делает то же самое, но еще выдает во время своей работы сообщения в окно консоли, информирующие о ходе переименований. По окончании работы он выдает в окно консоли сообщение с информацией о количестве просмотренных файлов, а также о том, сколько из просмотренных файлов было переименовано:
файл «rename-files.ps1» (в кодировке UTF-8 без BOM, окончания строк CRLF)
$total = 0
$renamed = 0
Get-ChildItem -File -Recurse |
Rename-Item -NewName {
$old = $_.Name
$new = $old -replace '^(\d\d)-(\d\d)_(.*)', '$1-0$2_$3'
$script:total++
if ($old -ne $new) {
Write-Host "$old --> $new"
$script:renamed++
} else {
Write-Host "$new"
}
$new
}
"Проверено файлов всего: $total, из них переименовано: $renamed"
У меня есть более подробный разбор этого скрипта.
Для переименования файлов я поместил файл «rename-files.ps1» со скриптом в нужную папку клонированного репозитория и запустил его:
PS C:\Users\Илья\source\repos\learncpp-com-examples\chapters> .\rename-files
rename-files.ps1
00-00_helloworld.cpp --> 00-000_helloworld.cpp
00-01_helloworld-wait.cpp --> 00-001_helloworld-wait.cpp
00-02_cpp17compat.cpp --> 00-002_cpp17compat.cpp
00-03_cpp20compat.cpp --> 00-003_cpp20compat.cpp
01-00_snippet.cpp --> 01-000_snippet.cpp
...
02-98_io.cpp --> 02-098_io.cpp
02-98_main.cpp --> 02-098_main.cpp
02-99_io.cpp --> 02-099_io.cpp
02-99_io.h --> 02-099_io.h
02-99_main.cpp --> 02-099_main.cpp
Проверено файлов всего: 158, из них переименовано: 157
После окончания переименования файл «rename-files.ps1» скрипта следует из папки проекта удалить, чтобы он не мешал при создании коммита.
3.1. Проверка настроек Git-репозитория
Перед созданием коммита, который позже попадет на «Гитхаб», имеет смысл проверить настройку имени автора коммита и адреса электронной почты автора коммита, если вы не хотите «светить» их в интернете.
Для проверки настроек Git-репозитория удобно использовать следующую команду из папки проекта (благодаря параметру --show-origin
вы сможете увидеть, в каких файлах хранятся настройки Git-репозитория; часто разные настройки хранятся в разных файлах):
PS ..\learncpp-com-examples> git config --list --show-origin
Чтобы просмотреть только две интересующие меня настройки (имя автора коммита, его адрес электронной почты), можно использовать следующие две команды:
PS ..\learncpp-com-examples> git config user.name
Ilya Chalov
PS ..\learncpp-com-examples> git config user.email
почта@домен.ru
Имя у меня такое и зарегистрировано на «Гитхабе», а вот адрес электронной почты «светить» там не хотелось бы. «Гитхаб» по желанию пользователя создает для коммитов, выполняемых через веб-интерфейс, «служебный» адрес электронной почты, который «прикрывает» реальный адрес электронной почты пользователя.
Этот «служебный» адрес электронной почты можно посмотреть в настройках своей учетной записи на «Гитхабе» (меню «Settings / Emails», если заходить через свою аватарку в правом верхнем углу страниц веб-сервиса) по следующему URL-адресу (он сработает, если вы уже авторизованы на веб-сервисе):
Меню «Settings / Emails» (если заходить через свою аватарку)
https://github.com/settings/emails
Меняю адрес электронной почты в настройках текущего (параметр --local
) Git-репозитория:
PS ..\learncpp-com-examples> git config --local user.email служебный@github.com
3.2. Создание коммита со всеми переименованиями
Команду git mv
я не смог использовать для переименований, так как в ней, вроде бы, нельзя использовать регулярные выражения (можно использовать символы-джокеры, но их недостаточно). Однако, как пишут в известной книге про «Git», на самом деле команда git mv
— это совмещение трех команд: 1) переименование файла средствами операционной системы или с помощью других программ, 2) git rm
для файла с названием до переименования, 3) git add
для файла с названием после переименования.
Пункт первый из трех вышеперечисленных я уже выполнил ранее с помощью своего скрипта «rename-files.ps1». Оставшиеся два пункта можно выполнить для всех 157 переименованных файлов одной следующей командой:
PS ..\learncpp-com-examples> git add --all
Теперь все изменения помещены в индекс и можно, наконец, создать коммит:
PS ..\learncpp-com-examples> git commit -m "Переименование группы файлов (157 штук)"
4. Отправка изменений в оригинальный репозиторий на «Гитхабе»
При отправке изменений в оригинальный репозиторий на «Гитхабе» потребуется авторизация. Когда я попытался ввести свой пароль, «Гитхаб» сообщил мне, что с 13 августа 2021 года аутентификация с помощью пароля больше не используется. Мне было предложено пройти в документацию по следующей ссылке и почитать про действующие способы аутентификации.
Я выбрал способ аутентификации с помощью токена доступа и создал гранулированный токен доступа (сейчас на «Гитхабе» есть две действующие реализации токенов доступа: старая (классическая) и новая (гранулированные токены доступа, по-английски «fine-grained access token»)). У меня есть отдельная подробная статья про создание гранулированного токена доступа. Использовать токен доступа несложно: при аутентификации его нужно просто ввести (вставить из буфера обмена) вместо пароля.
Отправляю изменения в оригинальный репозиторий на «Гитхабе»:
PS C:\Users\Илья\source\repos\learncpp-com-examples> git push origin main
Username for 'https://github.com': ilyachalov
Password for 'https://ilyachalov@github.com':
При вводе пароля (в моем случае — токена доступа) ввод не отражается в окне консоли, но в действительности происходит. Вероятно, такой подход принят в целях безопасности, чтобы никто из посторонних не мог увидеть длину вводимой последовательности символов.
Заключение
После отправки изменений на «Гитхаб» я открыл оригинальный репозиторий в браузере и проверил получение отправленного коммита. Всё получилось так, как я и планировал. Вот ссылка на коммит с переименованием сразу 157 файлов в оригинальном репозитории.
Комментарии (54)
cat_chi
01.07.2023 21:29+29В статье я рассказываю, как в репозитории веб-сервиса «GitHub» можно переименовать сразу множество файлов одним коммитом.
Простите, но мне кажется, что вам рановато писать статьи. Для начала стоило бы их почитать...
Например, о том, что такое git вообще. Потому что единственная причина, которая могла послужить для создания этой статьи и которая приходит мне в голову – в том, что вы вообще не понимаете, что такое github и зачем он нужен. Для вас это какая-то магическая сущность которая работает по каким-то магическим принципам.
Почитайте. Разберитесь. И поймите, что писать пространные статьи о настолько рутинных операциях, которые буквально каждый разработчик делает несколько раз в день, на Хабре – это плохая идея. Вас просто не поймут.
ilyachalov Автор
01.07.2023 21:29-2Вы правы, я многого не понимаю. Если вам несложно, может быть, вы дали бы мне какие-нибудь более конкретные замечания? Я был вам за это благодарен.
вы вообще не понимаете, что такое github и зачем он нужен
Я использую этот веб-сервис для хранения файлов с кодом. Это удобно. От администрации веб-сервиса я никаких страйков за это не получал, значит, мне кажется, всё в порядке.
поймите, что писать пространные статьи о настолько рутинных операциях, которые буквально каждый разработчик делает несколько раз в день, на Хабре – это плохая идея. Вас просто не поймут.
Вы молодец, у вас много знаний. Но я рассчитывал на людей, которые только начинают изучать Git, GitHub и так далее. Такие есть, их много. Для них эта статья будет интересной и полезной.
Дело в том, что опытные разработчики не будут писать такие статьи, как вы и сказали сами, потому что для них это слишком просто. Откуда тогда начинающим разработчикам узнавать основы? Кто пишет для них? Мне кажется, Хабр предназначен не только для опытных разработчиков, но и для начинающих.
Areso
01.07.2023 21:29+2Средний
ну тогда как минимум уровень статьи имело бы смысл понизить.
ilyachalov Автор
01.07.2023 21:29-10При выборе уровня «Средний» я ориентировался на справку Хабра. Там сказано, что «Средний» уровень подразумевает знание читателем основ, которые автор не будет разъяснять. В данной статье я не объясняю, что такое «Git», для чего нужен «GitHub», как работать из командной строки и что это такое, что такое программа-оболочка, что такое программа-«эмулятор терминала», что такое регулярные выражения, что такое скрипт и так далее. То есть в этой статье огромное количество терминов, которые читатель должен знать и понимать, я это всё не разъясняю. Поэтому уровень статьи «Средний», хотя я бы с удовольствием выбрал «Простой», но данная статья объективно ему не соответствует.
Daimonn
01.07.2023 21:29то, что вы написали в статье это тоже основы основ
ilyachalov Автор
01.07.2023 21:29-2Мне кажется, нужна более сложная классификация. Вместо простой-средний-сложный, нужно что-то вроде
для вообще начинающих (домохозяйка)
для начинающих, но знакомых с основами (джуниор)
для среднего уровня (сеньор)
для сложных тем (тимлид)
И описание этих категорий, наверное, стоит сделать более подробным.
ryanl
01.07.2023 21:29У лида квалификация не выше Сеньора, скорее наоборот, так как он загружен больше административной работой.
orenty7
01.07.2023 21:29+3Я не автор начального комента, но попробую ответить. Ваша статья техническая. Обычно стрельнувшие технические статьи содержат или крутую идею, или реализацию чего-то по-настоящему сложного. Эта не содержит сложной идеи и при этом является комбинацией работы с PowerShell и git. Инструкции к каждому из этих инструментов легко гуглятся, как и готовые примеры к ним. Формально в вашей статье ничего неправильного нет, но зачем она, если такой скрипт собирается просто гуглингом? Имхо, это не уровень хабра
P.S. Примеры крутых статей:
Areso
01.07.2023 21:29+5Автор, то, что вы сделали - это подходит только для случая write-once файлов. То есть вам не нужен git blame для них.
git mv, с рядом оговорок, сохраняет историю изменений; ваше не делает так (тоже с оговорками, впрочем).
Как бы сделал я:find . -name "*" -exec sh -c 'x={}; git mv "$x" $(echo $x | sed 's/-/-0/g')' \;
ilyachalov Автор
01.07.2023 21:29-2Я работаю в «Windows 10», не в «Linux», но спасибо за ваш код. Насколько я понял, вы предлагаете таки использовать команду
git mv
, но до ее запуска в строке конструировать параметры для нее в нужном виде. Таким образом, всё же можно будет использовать регулярные выражения, несмотря на то, чтоgit mv
сама по себе их не поддерживает.Думаю, это можно реализовать и в PowerShell.
saboteur_kiev
01.07.2023 21:29+5вы может быть удивитесь, но попробуйте выполнить вышеуказанную команду в виндовс, где стоит гит, и обнаружите что вместе с гитом у вас теперь на виндовс есть и find и sed и даже git-bash
ilyachalov Автор
01.07.2023 21:29Спасибо за подсказку. Я попробую этим воспользоваться. Но мне так же интересно попробовать переписать это и на PowerShell.
rezdm
01.07.2023 21:29+1UnixUtils
uutils
...
git/bash
Это всё прекрасно работает в Windows, и там всё это можно делать. В PS тоже можно, конечно.
serge-sb
01.07.2023 21:29+2Даже если не брать в расчёт "десятку" (о чём уже написали в комментариях до меня), то начиная с самых древних винд (а может и в досах это уже было? UPD: появилось в досе со второй версии) есть конструкция FOR. Дальше только дело техники вычленить нужные части имени файла и соорудить новое имя.
fshp
01.07.2023 21:29Git достаточно умный, что бы автоматически определить переименовывание по содержимому. Даже если оно было немного изменено.
Однако это дорого, поэтому есть лимиты на количество сравниваемых файлов в угоду производительности, которые по умолчанию довольно низкие.
Areso
01.07.2023 21:29+1Я об этом вспомнил и вставил оговорку.
Плюс хорошо разделять переименование и изменение содержимого файлов на разные коммиты.
ryanl
01.07.2023 21:29А еще есть утилита rename, которая на вход умеет wildcard-ы принимать.
Кстати, На DistroTube-канале у Derek Taylor есть видос, где довольно много способов переименования описано.
iig
01.07.2023 21:29Ну не знаю.. Оно попытается что-то сделать с файлами внутри .git, у него не получится, но осадочек останется. Еще меня смущает, если мы переименовали файл - не найдет ли его find повторно?
Areso
01.07.2023 21:29Да, это спорный скрипт; но я его сделал за 5 минут, он выполнил задачу (я специально сделал тестовый репозиторий, создал в нём файлы по маске, и поделал в них изменения), и вроде бы последствий на тестовой репе не было.
Поэтому я его привёл как рабочий пример (идею), который можно дальше тюнить в любую сторону.
ilyachalov Автор
01.07.2023 21:29Я написал что-то похожее на PowerShell:
Get-ChildItem -File -Recurse | ForEach-Object { $old = $_.Name $new = $old -replace '^(\d\d)-(\d\d)_(.*)', '$1-0$2_$3' if ($old -ne $new) { $path = $_.DirectoryName Invoke-Expression "git mv $path\$old $path\$new" } }
Спасибо еще раз за подсказку, плюсанул в карму.
selivanov_pavel
01.07.2023 21:29+27Опять какой-то препод требует статей на хабре для зачёта? Что это тут делает? "Я переименовал файлы и запушил". Предлагаю темы следующих статей: "я зашёл по ssh на сервер и посмотрел список процессов", "я запустил докер-контейнер, а потом остановил", "я включил компьютер, на мониторе появилось изображение".
iig
01.07.2023 21:29Самый короткий рассказ, способный растрогать кого угодно.
Я что-то нажал и все пропало. :D
vitaly_il1
01.07.2023 21:29+5Коллеги, по-моему, вы уж слишком напали на автора.
Все когда-то начинали.tommyangelo27
01.07.2023 21:29+13Но не все писали об этом на Хабр
IvanPetrof
01.07.2023 21:29+1Каждый раз про это думаю, когда вижу неожиданно заплюсованную статью, которую мог бы написать и сам.. но... Проклятый синдром самозванца..
delphinpro
01.07.2023 21:29+7Написать скрипт для переименования множества файлов проекта и переименовать их;
Скрипт, конечно, получился несложный и пишется быстро, если хорошо знаешь PowerShell, но я бы обошелся функционалом "Групповое переименование" в Total Commander.
В остальном статья совсем не про переименование файлов, а про то, как клонировать репу, делать коммит и пуш. Эти примитивные операции описаны в учебнике по гиту на https://git-scm.com/book/ru/v2ilyachalov Автор
01.07.2023 21:29-2Мне интереснее написать скрипт на PowerShell.
Эти примитивные операции описаны в учебнике по гиту
В любом случае, спасибо за ссылку, мне всегда интересно добавить хорошую книжку в коллекцию. Но эту я уже знаю, читал. В статье есть ссылка на эту книгу.
13werwolf13
01.07.2023 21:29+2несмотря на заголовок (и частое отхождение в теле статьи) это статья не про git (и уж тем более не про github) а про то как накостылять на powershell то что без него можно сделать в одну строку (что выше и показали).
я так понимаю про git автор добавил исключительно потому что иначе текста было маловато, а github приплёл просто за компанию.randomsimplenumber
01.07.2023 21:29+2Powershell не умею, но получилось ужасно. Среди 100500 способов переименовать файлы автор выбрал, пожалуй, самый странный. Интересно, как так получилось, что у него в репозитории все файлы .cpp оказались вот с такими вот именами? И какую задачу призвано решить переименование?
ilyachalov Автор
01.07.2023 21:29Среди 100500 способов переименовать файлы автор выбрал, пожалуй, самый странный.
Мне нравится язык PowerShell, поэтому я пишу скрипты на нем. Но эта статья написана в том числе и для того, чтобы узнать возможные альтернативы. Кое-что мне посоветовали в комментариях. Я благодарен тем, кто посоветовал.
Интересно, как так получилось, что у него в репозитории все файлы .cpp оказались вот с такими вот именами?
Я читаю учебник по языку C++ и создаю файлы с кодом для всех примеров и упражнений из этого учебника. Файлы нумерую по принципу
00-00
, где первые две цифры — для номера главы учебника, следующие две цифры (после дефиса) — номер примера/упражнения в рамках главы.И какую задачу призвано решить переименование?
Количество примеров/упражнений в рамках главы превысило 99 штук, цифр стало не хватать, этого я изначально не предвидел. Поэтому решил увеличить место для номера с двух до трех цифр. Теперь доступна нумерация до 999 штук.
voldemar_d
01.07.2023 21:29+1Я читаю учебник по языку C++ и создаю файлы с кодом для всех примеров и упражнений из этого учебника
Подход понятен. В этом учебнике нет рекомендаций по поводу того, что все сущности в программах нужно называть осмысленно? И переменные, и функции, и классы, и сами файлы? Не должно быть названий вроде "MyStruct", "SomeClass", "CoolProject" и "00.cpp", "001.cpp" и т.д. Даже в учебных и тестовых проектах нужно приучать себя давать везде и всему осмысленные названия.
ilyachalov Автор
01.07.2023 21:29У меня осмысленные названия, их можно увидеть в статье. Например:
00-000_helloworld.cpp 00-001_helloworld-wait.cpp 00-002_cpp17compat.cpp ...и так далее
За осмысленность отвечает часть названия, которая идет после нумерации. Там, где автор учебника даёт названия файлам, я оставляю авторские названия, только добавляю свою нумерацию в начало названия файла (автор учебника не всем файлам дает достаточно информативные названия, потому что это лишь учебные примеры; сам учебник достаточно хорош, там о наименовании файлов, переменных и т.п. довольно емко написано).
iig
01.07.2023 21:29КМК
00-000_helloworld.cpp
ничем не лучше0-0_helloworld.cpp.
ilyachalov Автор
01.07.2023 21:29При просмотре списка файлов при вашем подходе файлы в списке могут отсортироваться не по порядку (зависит от системы и от способа сортировки).
iig
01.07.2023 21:29Если это не плейлист для автоматического плеера - неважно. Сбой будет в ровно 1 месте, при переходе 99-100. Я сомневаюсь, что у вас больше 200 примеров в главе ;) И вы же их по папкам (глава == папка) раскидали? Раскидали, правда? ;)
randomsimplenumber
01.07.2023 21:29После 00-99 спокойно следует 00-100 ;) Можно спокойно оставить как было, ничего для программного кода не изменится.
ЗЫ: у меня достаточно часто возникает похожая задача с переименованием чужих картинок. Чтобы порядок в слайдшоу не ломался. Это 1 строчка на bash, но никак не статья в хабр.
ЗЫЫ: складывать 100500 файлов с программным кодом, никак друг с другом не связанных, в одну папку - это ужасно. Идея о вложенных папках должна возникнуть не позже чем на 11 задании ;)
ilyachalov Автор
01.07.2023 21:29После 00-99 спокойно следует 00-100
Конечно, можно было и так, но это неудобно из-за сортировки. Некоторые системы, в которых я просматриваю списки файлов, отображают файлы так, что файл 00-100 идет в списке вместе с файлами 00-10, 00-11, 00-12 и т.д., а не после 00-99, как мне нужно. Насколько я помню, в веб-интерфейсе «Гитхаба» файлы сортируются именно так.
Это 1 строчка на bash, но никак не статья в хабр.
Тут не просто переименование файлов или переименование файлов в Git-репозитории, а переименование файлов на веб-сервисе «Гитхаб». Я думал, что мне посоветуют какой-нибудь способ автоматизации на самом этом веб-сервисе. Там, вроде, есть средства автоматизации, но я с ними незнаком. Пока ничего такого не посоветовали, к сожалению.
складывать 100500 файлов с программным кодом, никак друг с другом не связанных, в одну папку - это ужасно
В данном случае это не совсем программный проект, поэтому подход другой. Пользоваться этими файлами удобно, если плясать от чтения учебника. Я делаю этот проект для людей, которые будут учиться по данному учебнику, для них группировка по главам удобна. У меня уже был подобный опыт с учебником Роберта Лафоре пару лет назад. Получилось неплохо.
voldemar_d
01.07.2023 21:29Я делаю этот проект для людей, которые будут учиться по данному учебнику
ИМХО, весьма ограниченная аудитория у статьи получается. Я ни разу не видел ни в одном проекте такого.
DieSlogan
01.07.2023 21:29Совет для PowerShell, предваряйте скрипты установкой данной переменной. Она завершает выполнение скрипта на первой же ошибке.
$ErrorActionPreference = "Stop"
smind
т.е. вы сделали:
git pull
rename_some_files
git add .
git commit -m "renamed files"
git push
про это статья?
ilyachalov Автор
В частности, и про это тоже.
Я недавно начал использовать Git и GitHub. Цель написания этой статьи — возможное получение полезных советов от опытных пользователей. Я думал, возможно, кто-нибудь посоветует альтернативные способы переименования множества файлов, более оптимальные, чем я описал.
Lainhard
Эм, вы то есть вы недавно познакомились с технологией и решили об этом написать на техническом ресурсе (или уже не торт)? Ресурсе, который, в сути своей, подразумевает несколько более высокий уровень вовлечения в технологию.
Знаете, я недоволен.????
ilyachalov Автор
Я могу вас понять. С другой стороны, как автор может определить необходимый уровень статьи, который подходит для Хабра? Я не видел в справке Хабра никаких конкретных условий по этому поводу. Я готов соблюдать такие условия, если их пропишут.
ZEvS_Poisk
Когда-то Ричард Фейнман взорвал бутылку в институтской лаборатории. Взорвал в результате эксперимента. И ещё ректор изрёк, что опыты новичков должны проводится в лаборатории для новичков... Фейнман стал нобелевским лауреатом.
О чем я? Выводы сами делайте.
Если не хотите читать такие статьи, то может плашку-хештег придумать "для новичков".
P.S. не судите человека строго.
Areso
Ну вот, плашку уже придумали, она отображается перед тем как зайти. Мы ее здесь обсудили https://habr.com/ru/articles/745312/#comment_25708846
dopusteam
Ни о чем
fedorro
Эта претензия скорее к администрации Хабра их политике - "Даешь любой контент, главное больше конверсии" (возможно за исключением совсем лютого трэша и запрещенки, возможно рекламы в обход партнерок).
dolovar
Обратите внимание на существование рядом ресурса для получения советов и прочих ответов на вопросы: qna.habr.com
ilyachalov Автор
Хорошее замечание, спасибо. Как-то забыл про этот сервис (в отличие от Stack Overflow, на котором я задал вопрос, но отклика пока не получил). Но я не уверен, что на указанном сервисе можно задавать вопросы с большим текстом (сравнимым по размерам со статьей), содержащим разное сложное форматирование. Я заходил туда, там обычно вопросы на несколько абзацев и почти без форматирования. Этого недостаточно.