Мне удобнее видеть кучу ошибок, как это происходит по умолчанию. Но всё равно, спасибо за совет. Я пользовался переменной $DebugPreference, а про упомянутую вами был не в курсе. Сейчас почитал про нее в документации.
Конечно, можно было и так, но это неудобно из-за сортировки. Некоторые системы, в которых я просматриваю списки файлов, отображают файлы так, что файл 00-100 идет в списке вместе с файлами 00-10, 00-11, 00-12 и т.д., а не после 00-99, как мне нужно. Насколько я помню, в веб-интерфейсе «Гитхаба» файлы сортируются именно так.
Это 1 строчка на bash, но никак не статья в хабр.
Тут не просто переименование файлов или переименование файлов в Git-репозитории, а переименование файлов на веб-сервисе «Гитхаб». Я думал, что мне посоветуют какой-нибудь способ автоматизации на самом этом веб-сервисе. Там, вроде, есть средства автоматизации, но я с ними незнаком. Пока ничего такого не посоветовали, к сожалению.
складывать 100500 файлов с программным кодом, никак друг с другом не связанных, в одну папку - это ужасно
В данном случае это не совсем программный проект, поэтому подход другой. Пользоваться этими файлами удобно, если плясать от чтения учебника. Я делаю этот проект для людей, которые будут учиться по данному учебнику, для них группировка по главам удобна. У меня уже был подобный опыт с учебником Роберта Лафоре пару лет назад. Получилось неплохо.
У меня осмысленные названия, их можно увидеть в статье. Например:
00-000_helloworld.cpp
00-001_helloworld-wait.cpp
00-002_cpp17compat.cpp
...и так далее
За осмысленность отвечает часть названия, которая идет после нумерации. Там, где автор учебника даёт названия файлам, я оставляю авторские названия, только добавляю свою нумерацию в начало названия файла (автор учебника не всем файлам дает достаточно информативные названия, потому что это лишь учебные примеры; сам учебник достаточно хорош, там о наименовании файлов, переменных и т.п. довольно емко написано).
Хорошее замечание, спасибо. Как-то забыл про этот сервис (в отличие от Stack Overflow, на котором я задал вопрос, но отклика пока не получил). Но я не уверен, что на указанном сервисе можно задавать вопросы с большим текстом (сравнимым по размерам со статьей), содержащим разное сложное форматирование. Я заходил туда, там обычно вопросы на несколько абзацев и почти без форматирования. Этого недостаточно.
Среди 100500 способов переименовать файлы автор выбрал, пожалуй, самый странный.
Мне нравится язык PowerShell, поэтому я пишу скрипты на нем. Но эта статья написана в том числе и для того, чтобы узнать возможные альтернативы. Кое-что мне посоветовали в комментариях. Я благодарен тем, кто посоветовал.
Интересно, как так получилось, что у него в репозитории все файлы .cpp оказались вот с такими вот именами?
Я читаю учебник по языку C++ и создаю файлы с кодом для всех примеров и упражнений из этого учебника. Файлы нумерую по принципу 00-00, где первые две цифры — для номера главы учебника, следующие две цифры (после дефиса) — номер примера/упражнения в рамках главы.
И какую задачу призвано решить переименование?
Количество примеров/упражнений в рамках главы превысило 99 штук, цифр стало не хватать, этого я изначально не предвидел. Поэтому решил увеличить место для номера с двух до трех цифр. Теперь доступна нумерация до 999 штук.
Эти примитивные операции описаны в учебнике по гиту
В любом случае, спасибо за ссылку, мне всегда интересно добавить хорошую книжку в коллекцию. Но эту я уже знаю, читал. В статье есть ссылка на эту книгу.
При выборе уровня «Средний» я ориентировался на справку Хабра. Там сказано, что «Средний» уровень подразумевает знание читателем основ, которые автор не будет разъяснять. В данной статье я не объясняю, что такое «Git», для чего нужен «GitHub», как работать из командной строки и что это такое, что такое программа-оболочка, что такое программа-«эмулятор терминала», что такое регулярные выражения, что такое скрипт и так далее. То есть в этой статье огромное количество терминов, которые читатель должен знать и понимать, я это всё не разъясняю. Поэтому уровень статьи «Средний», хотя я бы с удовольствием выбрал «Простой», но данная статья объективно ему не соответствует.
Я работаю в «Windows 10», не в «Linux», но спасибо за ваш код. Насколько я понял, вы предлагаете таки использовать команду git mv, но до ее запуска в строке конструировать параметры для нее в нужном виде. Таким образом, всё же можно будет использовать регулярные выражения, несмотря на то, что git mv сама по себе их не поддерживает.
Я могу вас понять. С другой стороны, как автор может определить необходимый уровень статьи, который подходит для Хабра? Я не видел в справке Хабра никаких конкретных условий по этому поводу. Я готов соблюдать такие условия, если их пропишут.
Вы правы, я многого не понимаю. Если вам несложно, может быть, вы дали бы мне какие-нибудь более конкретные замечания? Я был вам за это благодарен.
вы вообще не понимаете, что такое github и зачем он нужен
Я использую этот веб-сервис для хранения файлов с кодом. Это удобно. От администрации веб-сервиса я никаких страйков за это не получал, значит, мне кажется, всё в порядке.
поймите, что писать пространные статьи о настолько рутинных операциях, которые буквально каждый разработчик делает несколько раз в день, на Хабре – это плохая идея. Вас просто не поймут.
Вы молодец, у вас много знаний. Но я рассчитывал на людей, которые только начинают изучать Git, GitHub и так далее. Такие есть, их много. Для них эта статья будет интересной и полезной.
Дело в том, что опытные разработчики не будут писать такие статьи, как вы и сказали сами, потому что для них это слишком просто. Откуда тогда начинающим разработчикам узнавать основы? Кто пишет для них? Мне кажется, Хабр предназначен не только для опытных разработчиков, но и для начинающих.
Я недавно начал использовать Git и GitHub. Цель написания этой статьи — возможное получение полезных советов от опытных пользователей. Я думал, возможно, кто-нибудь посоветует альтернативные способы переименования множества файлов, более оптимальные, чем я описал.
MSVC я взял, потому что работаю с Windows 10 (мне кажется логичным использовать для Windows компилятор Microsoft). А в Ubuntu я выбирал между GCC и Clang и в итоге выбрал GCC, так как у него стаж на 20 лет побольше (это значит, что документации и примеров в интернете должно быть больше, для начинающих это важно).
Для кириллицы в последнее время использую только этот способ
Ваш код, насколько я понял, предназначен для работы с широкими символами (wchar_t)? То есть подразумевается кодировка UTF-16 (или UCS-2)? В статье упор сделан на UTF-8, то есть предполагается работа с узкими символами (char). В Linux это работает без костылей, а в Windows, думаю, в будущем тоже будет работать. Они там, насколько я знаю, сейчас активно над этим трудятся.
Вы правы, в Windows 10 есть проблемы со считыванием из консоли символов, не входящих в таблицу ASCII, если мы работаем с кодировкой UTF-8. Например, возьмем простой код
С другой стороны, код приведенной выше простой программы успешно работает с любыми символами UTF-8 в Ubuntu (у меня через WSL), а также в веб-компиляторе «OnlineGDB.com». И даже в Windows (как видно из листинга выше) при обучении пояснительные надписи можно вывести на русском (что лучше, чем ничего), а ввод делать на латинице, параллельно продемонстрировав прекрасную работу этого же кода в Linux с любыми символами.
Я согласен, что идеальная кроссплатформенность (для всех операционных систем) невозможна. В статье речь шла про Windows 10 и дистрибутив «Ubuntu» Linux. Использованные при этом компиляторы и ключи описаны в статье.
Согласен, простой «разворот» байтов в строке в случае работы с UTF-8 «поломает» символы, которые не из таблицы ASCII. Но, мне кажется, можно сначала дать такое задание для символов из таблицы ASCII, а затем объяснить, почему это не сработает в случае кодировки UTF-8, это в качестве дополнительного урока. Можно написать программу, которая «расшифровывает» исходную и развернутую строки в числа (байты), чтобы ученику было понятнее. На выходе что-то вроде такого:
Тут видно, как в первом случае (символы из таблицы ASCII) разворот байтов работает, а во втором случае (есть символы и из ASCII, и не из ASCII) - не работает. По-моему, такой урок будет гораздо нагляднее, чем только с ASCII.
Я был бы вам благодарен, если бы вы привели конкретный (код, если он короткий, или вместо кода ссылку) один пример задачи и ее решения, которые простые в имеющемся учебнике с ASCII, но станут сложными (или вообще не будут работать) при использовании литералов в кодировке UTF-8. (Я не сомневаюсь в существовании таких задач и в ваших словах вообще, но когда есть конкретный пример, то понятнее, о чем идет речь.)
Мне удобнее видеть кучу ошибок, как это происходит по умолчанию. Но всё равно, спасибо за совет. Я пользовался переменной
$DebugPreference
, а про упомянутую вами был не в курсе. Сейчас почитал про нее в документации.Я написал что-то похожее на PowerShell:
Спасибо еще раз за подсказку, плюсанул в карму.
При просмотре списка файлов при вашем подходе файлы в списке могут отсортироваться не по порядку (зависит от системы и от способа сортировки).
Конечно, можно было и так, но это неудобно из-за сортировки. Некоторые системы, в которых я просматриваю списки файлов, отображают файлы так, что файл 00-100 идет в списке вместе с файлами 00-10, 00-11, 00-12 и т.д., а не после 00-99, как мне нужно. Насколько я помню, в веб-интерфейсе «Гитхаба» файлы сортируются именно так.
Тут не просто переименование файлов или переименование файлов в Git-репозитории, а переименование файлов на веб-сервисе «Гитхаб». Я думал, что мне посоветуют какой-нибудь способ автоматизации на самом этом веб-сервисе. Там, вроде, есть средства автоматизации, но я с ними незнаком. Пока ничего такого не посоветовали, к сожалению.
В данном случае это не совсем программный проект, поэтому подход другой. Пользоваться этими файлами удобно, если плясать от чтения учебника. Я делаю этот проект для людей, которые будут учиться по данному учебнику, для них группировка по главам удобна. У меня уже был подобный опыт с учебником Роберта Лафоре пару лет назад. Получилось неплохо.
У меня осмысленные названия, их можно увидеть в статье. Например:
За осмысленность отвечает часть названия, которая идет после нумерации. Там, где автор учебника даёт названия файлам, я оставляю авторские названия, только добавляю свою нумерацию в начало названия файла (автор учебника не всем файлам дает достаточно информативные названия, потому что это лишь учебные примеры; сам учебник достаточно хорош, там о наименовании файлов, переменных и т.п. довольно емко написано).
Хорошее замечание, спасибо. Как-то забыл про этот сервис (в отличие от Stack Overflow, на котором я задал вопрос, но отклика пока не получил). Но я не уверен, что на указанном сервисе можно задавать вопросы с большим текстом (сравнимым по размерам со статьей), содержащим разное сложное форматирование. Я заходил туда, там обычно вопросы на несколько абзацев и почти без форматирования. Этого недостаточно.
Мне кажется, нужна более сложная классификация. Вместо простой-средний-сложный, нужно что-то вроде
для вообще начинающих (домохозяйка)
для начинающих, но знакомых с основами (джуниор)
для среднего уровня (сеньор)
для сложных тем (тимлид)
И описание этих категорий, наверное, стоит сделать более подробным.
Мне нравится язык PowerShell, поэтому я пишу скрипты на нем. Но эта статья написана в том числе и для того, чтобы узнать возможные альтернативы. Кое-что мне посоветовали в комментариях. Я благодарен тем, кто посоветовал.
Я читаю учебник по языку C++ и создаю файлы с кодом для всех примеров и упражнений из этого учебника. Файлы нумерую по принципу
00-00
, где первые две цифры — для номера главы учебника, следующие две цифры (после дефиса) — номер примера/упражнения в рамках главы.Количество примеров/упражнений в рамках главы превысило 99 штук, цифр стало не хватать, этого я изначально не предвидел. Поэтому решил увеличить место для номера с двух до трех цифр. Теперь доступна нумерация до 999 штук.
Мне интереснее написать скрипт на PowerShell.
В любом случае, спасибо за ссылку, мне всегда интересно добавить хорошую книжку в коллекцию. Но эту я уже знаю, читал. В статье есть ссылка на эту книгу.
Спасибо за подсказку. Я попробую этим воспользоваться. Но мне так же интересно попробовать переписать это и на PowerShell.
При выборе уровня «Средний» я ориентировался на справку Хабра. Там сказано, что «Средний» уровень подразумевает знание читателем основ, которые автор не будет разъяснять. В данной статье я не объясняю, что такое «Git», для чего нужен «GitHub», как работать из командной строки и что это такое, что такое программа-оболочка, что такое программа-«эмулятор терминала», что такое регулярные выражения, что такое скрипт и так далее. То есть в этой статье огромное количество терминов, которые читатель должен знать и понимать, я это всё не разъясняю. Поэтому уровень статьи «Средний», хотя я бы с удовольствием выбрал «Простой», но данная статья объективно ему не соответствует.
Я работаю в «Windows 10», не в «Linux», но спасибо за ваш код. Насколько я понял, вы предлагаете таки использовать команду
git mv
, но до ее запуска в строке конструировать параметры для нее в нужном виде. Таким образом, всё же можно будет использовать регулярные выражения, несмотря на то, чтоgit mv
сама по себе их не поддерживает.Думаю, это можно реализовать и в PowerShell.
Я могу вас понять. С другой стороны, как автор может определить необходимый уровень статьи, который подходит для Хабра? Я не видел в справке Хабра никаких конкретных условий по этому поводу. Я готов соблюдать такие условия, если их пропишут.
Вы правы, я многого не понимаю. Если вам несложно, может быть, вы дали бы мне какие-нибудь более конкретные замечания? Я был вам за это благодарен.
Я использую этот веб-сервис для хранения файлов с кодом. Это удобно. От администрации веб-сервиса я никаких страйков за это не получал, значит, мне кажется, всё в порядке.
Вы молодец, у вас много знаний. Но я рассчитывал на людей, которые только начинают изучать Git, GitHub и так далее. Такие есть, их много. Для них эта статья будет интересной и полезной.
Дело в том, что опытные разработчики не будут писать такие статьи, как вы и сказали сами, потому что для них это слишком просто. Откуда тогда начинающим разработчикам узнавать основы? Кто пишет для них? Мне кажется, Хабр предназначен не только для опытных разработчиков, но и для начинающих.
В частности, и про это тоже.
Я недавно начал использовать Git и GitHub. Цель написания этой статьи — возможное получение полезных советов от опытных пользователей. Я думал, возможно, кто-нибудь посоветует альтернативные способы переименования множества файлов, более оптимальные, чем я описал.
MSVC я взял, потому что работаю с Windows 10 (мне кажется логичным использовать для Windows компилятор Microsoft). А в Ubuntu я выбирал между GCC и Clang и в итоге выбрал GCC, так как у него стаж на 20 лет побольше (это значит, что документации и примеров в интернете должно быть больше, для начинающих это важно).
Ваш код, насколько я понял, предназначен для работы с широкими символами (
wchar_t
)? То есть подразумевается кодировка UTF-16 (или UCS-2)? В статье упор сделан на UTF-8, то есть предполагается работа с узкими символами (char
). В Linux это работает без костылей, а в Windows, думаю, в будущем тоже будет работать. Они там, насколько я знаю, сейчас активно над этим трудятся.Вы правы, в Windows 10 есть проблемы со считыванием из консоли символов, не входящих в таблицу ASCII, если мы работаем с кодировкой UTF-8. Например, возьмем простой код
Тестируем в консоли Windows 10:
Вместо русских букв (и любых не ASCII символов)
std::cin
возвращает нулевые байты.С другой стороны, код приведенной выше простой программы успешно работает с любыми символами UTF-8 в Ubuntu (у меня через WSL), а также в веб-компиляторе «OnlineGDB.com». И даже в Windows (как видно из листинга выше) при обучении пояснительные надписи можно вывести на русском (что лучше, чем ничего), а ввод делать на латинице, параллельно продемонстрировав прекрасную работу этого же кода в Linux с любыми символами.
Я согласен, что идеальная кроссплатформенность (для всех операционных систем) невозможна. В статье речь шла про Windows 10 и дистрибутив «Ubuntu» Linux. Использованные при этом компиляторы и ключи описаны в статье.
Согласен, простой «разворот» байтов в строке в случае работы с UTF-8 «поломает» символы, которые не из таблицы ASCII. Но, мне кажется, можно сначала дать такое задание для символов из таблицы ASCII, а затем объяснить, почему это не сработает в случае кодировки UTF-8, это в качестве дополнительного урока. Можно написать программу, которая «расшифровывает» исходную и развернутую строки в числа (байты), чтобы ученику было понятнее. На выходе что-то вроде такого:
Тут видно, как в первом случае (символы из таблицы ASCII) разворот байтов работает, а во втором случае (есть символы и из ASCII, и не из ASCII) - не работает. По-моему, такой урок будет гораздо нагляднее, чем только с ASCII.
Я был бы вам благодарен, если бы вы привели конкретный (код, если он короткий, или вместо кода ссылку) один пример задачи и ее решения, которые простые в имеющемся учебнике с ASCII, но станут сложными (или вообще не будут работать) при использовании литералов в кодировке UTF-8. (Я не сомневаюсь в существовании таких задач и в ваших словах вообще, но когда есть конкретный пример, то понятнее, о чем идет речь.)