All streams
Search
Write a publication
Pull to refresh
56
0
Константин @kstep

Инженер-программист

Send message
Сколько не пытался юзать меркуриал, долго плевался и возвращался на гит. Зачем там дублирование хешей номерами коммитов, для застарелых свнщиков? А ветки там тоже такую боль приносят, чтобы привычнее после свна было? Не знаю, может мой мозг съеден гитом, но мекруриал мне кажется каким-то поломанным и недоделанным подобием гита.
Если у вас такие вопросы, вы не понимаете гит. Гит отслеживает не файлы, а изменения в них. И это круто, потому что когда ты спрашиваешь «откуда-куда скопирован файл», то скорее всего инетерсен не сам файл, а «откуда взялся здесь этот кусок кода?», и гит даёт ответ на этот вопрос (см. man git-log, флаг -S).

Как только понимаешь, что важен сам код, а не файлы, в которых он содержится, проблемы исчезают. За всё многолетнее использование гита никогда не было проблем с переименованием-копированием файлов. Такой вопрос, как у вас, возник только в самом начале знакомства с гитом, года 4 назад, но как только я разобрался с тем, что делает гит, вопрос исчез и больше никогда меня не беспокоил. Даже более того, поменялось отношение к коду, так что гит сделал меня лучним программистом.

Да, а «переименование/копирование» — это состояние файлов, и это не так важно, как кажется. Впрочем, гит вычисляет эти категории изменений на лету по «похожести» файлов.

См. githowto.com/changes_not_files
Checked exceptions по сути заувалированный Either<Error, T>, как и следует его рассматривать.
Мне docopt больше нравится тем, что с его помощью можно десериализовать аргументы в готовую структуру с нужными типами. Как это сделать с помощью clap без головной боли я так и не понял. Ну лениво мне самому аргрументы в инты парсить, гораздо проще сделать так:

struct Args {
  arg_count: usize,
}

let args: Args = Docopt::new(USAGE)
                            .and_then(|d| d.decode())
                            .unwrap_or_else(|e| e.exit());

Нет, если используете модуль raw. Ну и потом питон в минимальном виде не так уж тяжёл, раз уж вы уже ssh-сервер ставите. А если не используете всякие экзотические модули, то и дополнительных либ к питону ставить не нужно.
А вот у меня очень старый конфиг, и прикручивать всякие oh-my-zsh мне уже не с руки: github.com/kstep/zsh-config.
Как старый пользователь zsh, не могу не упомянуть zsh-syntax-highlighting (есть в репозиториях арчика), который добавляет подсветку синтаксиса в командную строку zsh, наподобие fish.
Не поможет. Как я понял оно только англоязычное пока что. Разве что пропускать текст через Google Translate, но что тогда получится…
Да, монада. Только монада выраженная через тип явно объявляет требуемую семантику компилятору, а исключение (которое может вылететь откуда угодно и когда угодно) — нет. В Java пытались это решить с помощью checked exceptions и ключевого слова throws, но побоялись пойти до конца и оставили лазейку в виде unchecked exceptions. Так что в случае исключений компилятор программисту не помощник, программист один в поле воин, а в случае явных типов (вроде Option или Result) компилятор друг и союзник.
Не всегда помогают. Они предусматривают только то, о чём подумал программист. Гораздо важнее то, о чём программист не подумал, и строгая типизацию + функциональный подход здесь спасают, т.к. заставляют компилятор «думать» о том, о чём программист (To err is human, кстати) может и забыть.
Основное отличие типа Result от простого кода ошибки — типобезопасность. Этот тип (точнее семейство типов Result<T, E> в общем случае) сохраняет тип ошибки, что позволяет проверять валидность кода во время компиляции. С простыми кодами ошибок в виде int это не прокатит, т.к. компилятор не знает семантическую нагрузку этого int-а.

P.S. Я не претендую на знание C#, но довольно давно пишу в функциональном стиле в т.ч. на Scala, Rust, Python и немного баловался с Haskell, так что в этой области чувствую себя относительно хорошо.
Извините, но здесь именно вы злоупотребляете нерусскими словами. Автор поста только неологизм «грок» использовал, остальной пост на хорошем русском языке. Я понимаю цель такого поведения, хотите довести до абсурда. Только вот это ваши комментарии заставляют плакать кровавыми слезами, а не статья.
«Грокать» — довольно старый неологизм, существующий и в русском языке, введён переводчиком как калька с английского «to grok» из книги Роберта Хайнлайна «Чужак в чужой стране», означает одновременно «понять что-либо во всей своей полноте и объёме» и «съесть». Так что это слово не требует перевода, не надо тут размусоливать.

P.S. А книгу рекомендую к прочтению.
Читайте, там расписано из чего получают, и про голых сборщиков в масле тоже есть. Чем не сбор и приготовление?
«Безобидная война» звучит как оксюморон.
Да, я в курсе. А вот наши законотворцы, похоже, нет. Надо делать базовый курс психологии обязательным перед избранием в органы власти.
Всё правильно сделали. Пусть будут последовательными. Почему не заблокирован сайт ООН? Почему медэнциклопедии ещё доступны? Почему медицинские сайты открываются?
Самое плохое, что можно сделать, это скрыть истинную информацию от человека, потому что отсутствие чёткого знания порождает мистификации, и открывает ум для внешних манипуляций, делает человека более податливым для контроля. Лично я собираюсь честно рассказать своим детям, что такое наркотики, как они влияют на организм человека, чтобы потом, когда, не дай бог, к ним подкатит дилер в подворотне, они знали, с чем имеют дело, и не повелись на его уговоры.
Я вот до этого комментария даже понятия не имел о такой вещи, как этот ваш «чарас», даже слова такого не знал, чтобы искать. Теперь знаю, спасибо. Внимание, вопрос! Какой смысл в блокировке, если она действует наоборот — просвещает людей по поводу вещей, которые пытается скрыть?

Information

Rating
Does not participate
Date of birth
Registered
Activity