Русский имеет статус международного, между прочим.
У меня в конторе, например, есть не то, чтобы распоряжение, просто правило для пограмистов писать комментарии и сообщения к комитам на русском.
Наверное потому что мы тут на русскоговорящем ресурсе торчим
Так он же выбрал русскоговорящий ресурс, а не linux.org, например.
Гитхаб — интернациональный ресурс.
Там нет требования к языку, на котором написаны проекты и/или документация к ним. Или укажите соответствующее место в его условиях использования. А то можно договориться, что Интернет — интернациональный ресурс и все сообщения в нём должны быть на английском.
Интересно мнение о том, что я сделал не так и как бы можно было отрефакторить код.
Пока только чисто стилистически:
local не обязательно делать по одной переменной на строку,
local query sort timesort
это не только улучшает обозримость, но и повышает скорость (я реально это тестировал).
query="$OPTARG" — с этим у меня уже руки опускаются бороться. Не нужны тут кавычки! Кавычки нужны для ~ ; и пробелов, даже для звездочек и [] при присваивании не нужны. В if [[ "$url" == "null" ]] тоже не нужны. Это так специально пишут, ибо нужно было б писать с кавычками для if [[ null == "$url" ]]
И зачем там куча пустых строк для единственного присваивания? Вполне стилистически правильно писать:
ъ) var=$OPTARG;;
[$(( $RANDOM % ${#urls[@]} + 1 ))] Тут $(()) не надо, это при вычислении индекса по умолчанию. Кстати, там точно надо +1?
Не стоит писать такие длинные строки, то что начинается с $( можно разбить до ) на сколько удобно строк. В конце концов у вас можно один раз сделать query+=всё_что_после_вопросика.
мне всегда казалось, что открытый код стремится быть максимально доступным максимальному количеству людей. В этом плане комментарии на русском языке хуже комментариев даже на китайском
Русский язык даже в пределах СНГ знает не 100% человек
Если речь про российскую организацию, то нанимать сотрудников в офис она будет на территории России. А на территории России знающих русский язык в несколько раз больше знающих английский.
что открытый код стремится быть максимально доступным максимальному количеству людей
Код сам по себе вряд ли к чему-то стремится. А автор кода может ставить очень разные цели. От самообучения до «сделать код максимально доступным среди некоего подмножества людей», например, посетителей linux.org.ru (а они определённо знаю русский лучше, чем английский, иначе выбрали бы для общения англоязычный ресурс).
Кроме того, русские комментарии любой программист мира может перевести на свой язык с помощью google translate и словаря. А если автор знает английский не идеально, то легко может сделать английские комментарии, которые сможет понять только русскоязычный.
быть максимально доступным максимальному количеству людей
Кстати, для литературы это утверждение чаще является истинным, чем для программного кода. Вы призываете всю литературу тоже писать исключительно на английском языке?
мне всегда казалось, что открытый код стремится быть максимально доступным максимальному количеству людей. В этом плане комментарии на русском языке хуже комментариев даже на китайском
А писать комментарии сразу в трёх переводах, английском, русском и китайском, даже лучше, чем только на английском.
Мы живём в третьем тысячелетии. Если кому-то приспичит понять твои комментарии, он их осилит хоть с гуглопереводчиком, не переживай.
А если не в офис, то по зарплате работодатель конкурирует с американскими организациями, которые тоже согласны на в офис. Получается либо очень дорого по-английски, либо за разумную зарплату по-русски (хороших программистов, не умеющих связно излагать мысли по-английски, достаточно много).
А писать комментарии сразу в трёх переводах, английском, русском и китайском, даже лучше, чем только на английском.
Кстати, для публичных проектов было бы неплохо иметь все комментарии и документацию на двух языках: международном (общем для проекта) и родном для автора. Потому что тогда есть шанс, что неправильный перевод кто-нибудь исправит.
Options:
action specify what action to do on these files (default=view)
debug be verbose about what’s going on
nopager ignore any «copiousoutput» directives and never use a «pager»
norun just print but don’t execute the command (useful with –debug)
Mime-Type:
any standard mime type designation in the form / – if
not specified, it will be determined from the filename extension
Encoding:
how the file (and type) has been encoded (only «gzip», «bzip», «bzip2»
and «compress» are supported) – if not specified, it will be determined
from the filename extension
Кстати, сама идея у ТС-а в принципе не правильна, если будет ‘/’ после ‘?’, надо менять местами basename и обрезание ?*. Ну и несовместимость с bash вроде делать не надо, подумаешь будет две операции…
в центральных городах РФ, но вполне солидная сумма в SEA
Разработчик в нецентральном городе РФ обойдётся ещё дешевле. В Тюмени, например, от 40 тысяч. А за 50 тысяч с опытом работы в 10 лет. И с точки зрения закона/бухгалтерии/налогов гораздо проще оформлять.
плюс удалёнщиков принято нанимать не на постоянку, а на время выполнения конкретного проекта
Ну вот. То есть основной костяк всё равно придётся нанимать в РФ и либо требовать два навыка (программирование и английский) и платить больше или требовать один навык и платить меньше.
Вот переписал ТС-а, универсально: zsh или bash. И красивее и кода меньше:
reddit-wallpaper() {
local target=$HOME/Pictures/Wallpapers/reddit
local url="https://gateway.reddit.com/desktopapi/v1/subreddits/wallpapers"
local useragent=Mozilla/5.0
local -i i pages=5 zsh=${ZSH_VERSION:+1}
local query sort timesort
local -a urls
local content j jq after
while getopts ":hq:s:t:p:u:" opt; do
case ${opt} in
h) echo "\
usage: $0 [-h] [-q <query>] [-s <sort={hot|new|controversial|top|rising}>] [-t <timesort={day|week|month|year|all}>] [-p <number of pages>] [-u <useragent>]"
return 2;;
q) query=$OPTARG;;
s) sort=$OPTARG;;
t) timesort=$OPTARG;;
p) pages=$OPTARG;;
u) useragent=$OPTARG;;
\?) echo "Invalid option: $OPTARG" 1>&2 ;;
:) echo "Invalid option: $OPTARG requires an argument" 1>&2 ;;
esac
done
if [[ -n $query ]]; then # -n need for zsh
url+="/search?q=${query}&"
jq=.tokens.posts
else
url+=?
jq=.token
fi
url+="sort=${sort}&t=${timesort}"
# isSponsored это реклама, замаскированная под посты
jq+=", (.posts[] | select(.preview != null and .isSponsored == false).preview.url)"
# Парсим первые n страниц, собирая ссылки на картинки
for (( i = 0; i < pages; i++ )); do
content=$(curl -A "$useragent" -s "${url}&after=${after}")
{ read after; while read j; do urls+=("$j"); done; } < <(jq -r "$jq" <<< "$content")
done
# Выбираем случайную ссылку (в zsh индексы начинаются с единицы)
url=${urls[$RANDOM % ${#urls[@]} + zsh]}
if [[ $url != null ]]; then
local filename=${url%%\?*}
filename=$target/${filename##*/}
[[ ! -f "$filename" ]] && curl -A "$useragent" --create-dirs -o "$filename" "$url"
gsettings set org.gnome.desktop.background picture-uri "file://$filename"
fi
}
Да ну, инфантилизм какой-то. Ну стоит много где, а скрипты тоже волшебным образом перепишутся с bash? С таким отношением вы только оттолкнёте авторов, которые может и снизошли к совместимости, но с only – просто пошлют.