Они всё же разные. DeepSeek более новая и значительно зафайнтюнена на код - по программированию она даёт лучшие и самые ёмкие ответы, не расплываясь по контексту, без дурацких извинений. Сравнивал с llama70b, CodeLlama 70b, codestral и геммой обоих весов. Разве что оперативки на полные 128к контекста у меня не хватает, довольствуюсь 8000. WizardLM-2 не попадалась, но в теории могу потестить на ваших вопросах и сравнить.
Резюмируя: брать список актуальных плат под целевой процессор, сортировать по цене по убыванию, рассматривать верхние пару-тройку позиций :)
Пожалуй, брать какую-нибудь мать, у которой стоимость овер 90к рублей и 3кг радиаторов на борту суммарно - дичь, по крайней мере для меня. Ради жалких процентов производительности. Ну возьмут мои модули 6400 MHz, ура, +10% в играх за 100к на мать? Я свою-то взял за 50 ради полноценных pci-e 5 линий на ssd и собственно 4 слотов, плюс хорошей периферии и встроенных беспроводных модулей. Как упомянул, на сайте производителя больших объёмов там протесченных крайне мало, так что вы вероятно правы про уклон в тесты 2 модулей.
Звучит как брак. 1.1 довольно небольшое напряжение, при такой частоте там должны быть совершенно невменяемые тайминги (под 50?), а температура, наоборот, низкой. Не пробовали поднять до 1.25?
Не могу сказать. Я как сбросился до 3600MHz, так расстроился и прекратил эксперименты. Да и вряд ли брак, 2 разные пачки памяти. Cейчас, судя по аиде, при 1.1V тайминги 30-29-29-58. В профиле 5600MHz взлетают до 40-40-40-89, 1.25V (осталась фотка биоса с удачно запущенным сетапом). Притом у той же видеокарты 40 на чипе и 46 на памяти, у проца 56/53 по CCD, по матери 43. Т.е. сам корпус внутри не горячий. Вентиляторы на 300-500rpm крутятся, в зависимости от конкретной группы.
Возможно, нюанс в том, что сами по себе модули не обдуваются, потому что у меня водянка на проце, установленная сверху на выдув, и по факту модули обдаются тёплым воздухом с видеокарты и лишь частично вентиляторами на вдув спереди, которые сейчас как раз еле-еле вертятся на 300rpm.
Вообще странно. Паритет по скорости с моей системой просто из-за 4 канала против 2? Даже на нестабильных 5600 MHz мне не удавалось больше 2.3 tok/s увидеть.
Оффтоп: вы DeepSeek Coder V2 Lite тестили? У меня все её версии выдают тарабарщину - возможно, issue про китайский и кривую разметку инструкций. Запускаю через LM Studio.
Полностью согласен. Я для себя решил, что для нейросеток объём приоритетнее частоты (и угадал, deepseek v2 еле-еле влезла в q4, благо imat реализация квантизации даёт ещё 10 гб свободных), а для игор на моих играх (я знаю, что есть игры, что зависимы от памяти более, но свои самые тяжёлые я пробенчмаркал и разницы не увидел) разницы между 3600 и 5600 почти не было, поэтому я решил тупо забить все слоты памятью максимального объёма, даже переплачивать за паспортные 6400 вместо 5600 не стал, т.к. не заведётся ж. Для любой работы, понятно, такого объёма и скорости хватит - на моей системе свободно весь наш тестовый контур в кубере уместится и не подавится.
Брать Тредрипер для такой игро-рабочей системы и париться с полноценным четырёхканалом серверной памяти было бы нецелесообразно и дорого, а заниматься перебором памяти на текущей системе ради шанса заставить её работать как надо - тем более неразумно.
Интелы горят, но память работает с ними лучше - факты.
Нужна материнская плата с соответствующей топологией. Те, что под 2 заточены, конечно, всё равно шустрее будут, но не настолько, что они возьмут 7000+, а 4 даже на 5600 нестабильны.
Возможно. У моей ASUS X670E-F в таблице совместимости откровенно мало протестированных конфигураций с 4 модулями, а на объём выше 64 так вообще единицы.
Это амд-проблемы, по большей части.
Да, я отдельно это отметил в своих выводах: "желательно не Ryzen (на Intel 13-14 поколения результаты у людей получше)".
У вас просто не было нормальной мамки. (с) На 2 плашках берут и 8000+ с нормальными таймингами и не выходя за 1.5 вольт (сейчас, может, уже и за 1.4), никаких 70 градусов там и в помине нет.
Возможно. Но речь шла про 4 плашки, а не про 2. На 2 у меня всё заводилось стабильно и с первого раза. Но стоило начать втыкать следующие...
У меня лично обычная дешёвая память без особой настройки на 6200@30-34-34, там дай бог если 35-40 градусов будет при условии, что под ними видеокарта отдаёт 400 ватт тепла.
У меня с моей G.Skill Z5 Trident 5600MHz результаты другие, согласно hwinfo по моим плашкам при 1.1V температура от 58 до 61 градуса при тихом пресете на корпусную группу вентиляторов. Но свою систему я эталонной не считаю, так что настаивать сколько там должно быть - 35-40 или 60 - не буду. Лучше независимые тесты глянуть на такой группе плашек. Только вот беда - на ютубе нет нифига тестов на 4 плашки DDR5, особенно таких объёмов :D
Память G.Skill Trident, 4x48 GB, 5600MHz XMP/DOCP. Потенциально - да. В реальности, память такого объёма очень плохо поддаётся разгону и не имеет профилей под такую конфигурацию:
Модули Kingston Fury пришлось вернуть, т.к. в конфигурации 4х32 они отказывались брать любую частоту кроме стока (3600 MHz), сколько я ни колдовал с профилями и настройкой вольтажа/таймингов вручную.
Trident сначала взяли паспортные 5600 MHz (паспортные, с совпадением по таблице совместимости от матери, для двух модулей, но я-то юзаю 4), но они оказались нестабильны и уводили компьютер в ребут посреди игры или работы, либо просто гасили, либо не давали бутнуться. В итоге после очередного ребута после сброса BIOS они отказались вставать на том профиле и выше стока (3600 MHz) мне их также пока поднять не удалось. Зато описанные выше проблемы магически пропали. А более новые Trident Neo, которые по идее должны быть лучше для Ryzen-процов и поддерживать EXPO вместо DOCP, я найти не смог в РФ, да и переплата там ну очень заметная на 4 плашках.
Выводы, которые сделал по неделе проблем, попыток, вычитывания статей и отсмотра видео: разгонять 4 плашки большого объёма реально тяжело. Выше 64ГБ в сумме начинаются проблемы, 4 модуля больше 16гб тоже становятся нестабильны. Нужны и удачные экземпляры, и желательно не Ryzen (на Intel 13-14 поколения результаты у людей получше), и чтобы звёзды сложились нужным образом. Короче, третью партию памяти я брать не стал и забил - не стоят приросты того, ни в играх, ни в рабочих задачах. Лотерея. Такая скорость меня условно устраивает, когда можно скинуть какой-то вопрос по коду модели и минут на 10-20 забыть об этом, работая параллельно над задачей. Сколько дадут частоты, прирост с 2.2 до 2.5 tok/s? В пределах погрешности между вопросами получается, к тому же реальный прирост от роста частоты нелинейный и после 6000 MHz очень низок, почти отсутствует. А вы говорите о разгоне до "границ спецификации", да на таких параметрах будет конский вольтаж и с температурами за 70 градусов, и тайминги взлетят, а прироста - чуть. Можете посмотреть тесты 3600vs5600vs6000vs6400 и дальше. Чем выше параметры - тем ниже прирост и больше усилий для разгона, а как я упомянул выше, с объёмом и количеством плашек растёт лотерейность самого по себе процесса разгона. Проще говоря, не стоит игра свеч. Для сравнения: Gemma 2 9b Instruct int8, которая целиком лезет в мою 4080S, удалось получить 11 tok/s, а там и память GDDR6 на 23 ГГц, и архитектура другая, и собственно сам факт, что это видеокарта.
На 7950x3d с 192ГБ памяти с самой большой из скачанных у меня моделей (DeepSeek Coder v2 236b, int4 quant) скорость от 0.9 до 2.2 tok/s. Думаю, у этой модели будет не лучше точно. Может минут 10-20 спокойно печатать большой ответ.
С задачей про функцию локальный imat 4-х битный DeepSeek coder v2 (236b версия, не lite) справился с первого раза, но не вашим решением.
Примерно вот так
def remove_even_stars(text: str) -> str:
paragraphs = text.split('\n')
result_paragraphs = []
for paragraph in paragraphs:
stars = 0
non_consecutive_stars = []
for i, char in enumerate(paragraph):
if char == '*':
if i > 0 and paragraph[i-1] != '*':
stars += 1
else:
non_consecutive_stars.append('*')
else:
non_consecutive_stars.append(char)
if stars % 2 == 0:
result_paragraphs.append(''.join(non_consecutive_stars).replace('*', ''))
else:
result_paragraphs.append(paragraph)
return '\n'.join(result_paragraphs)
Для Раста попросил отдельно поработать со звёздочками как у вас написано, решение оцените сами.
А так с Rust
fn remove_even_stars(text: &str) -> String {
let paragraphs = text.split('\n');
let mut result_paragraphs = Vec::new();
for paragraph in paragraphs {
let chars: Vec<char> = paragraph.chars().collect();
let mut star_indices = Vec::new();
for (i, &ch) in chars.iter().enumerate() {
if ch == '*' {
if i > 0 && chars[i - 1] != '*' {
star_indices.push(i);
}
}
}
if star_indices.len() % 2 == 0 {
let mut result = String::new();
let mut last_index = 0;
for &index in &star_indices {
result.push_str(¶graph[last_index..index]);
last_index = index + 1;
}
result.push_str(¶graph[last_index..]);
result_paragraphs.push(result);
} else {
result_paragraphs.push(paragraph.to_string());
}
}
result_paragraphs.join("\n")
}
В целом от DeepSeek v2 впечатления отличные. Конечно выжирает почти всю оперативку: ~130 из 192гб, генерит в районе 0.9-2.2 tok/s, но! запускается локально и работает. Ну и огромное контекстное окно 128к, которое правда не лезет в мою оперативку уже. Из минусов - может по неизвестной причине зависнуть, то ли контекст не нравится, то ли ещё что, но бывает. Помогает создать новый чат. С тем же Gemma 27B Instruct (который я запускаю в int8 вообще), Gemma Coder или Llama 70B не сравнить. С клауд-сетками дела не имел, увы.
Не знаю, можно ли считать скриншот пруфом локального запуска, но пусть так
Хотя предполагается, наверное, что ты включил один раз и навсегда эту настройку, а не кликаешь туда-сюда каждый день.
Конечно, у нас же день или ночь только один раз наступают, а не каждый день
Во многих сервисах не хватает чего-то типа включения по расписанию, как на мобилках. Спасибо если есть "синхронизировать с системой" в некоторых, и то хорошо.
Можно. Фреймворк типа langchain + нужная вам модель как обработчик для этого. Ещё слышал про rasa, но он больше про интеграции, чем про сам эмбеддинг доков к модели.
Замечать новые проекты на Rust (и не только) весьма просто - достаточно в Github Explore в раздел Trending заходить время от времени, там что-нибудь да встретится. И новые проекты там есть, которые получают интерес сообщества, и старые, взлетевшие после апдейтов. В основном вижу там что-то на Python(привет бум всяких Stable Diffusion, Anything-With-ChatGPT и тд, чуть новость - всё забито этим), что-нибудь из существующих Java-проектов (новых вот убей не помню), обвязки на C/C++, облачные тулы стабильно на Go, какая-нибудь очередная CMS или новый UI на JS/TS, ну и проекты на Rust.
Trending основан не на интересах смотрящего, а на интересах сообщества, так что эффект наблюдателя там не сработает. Вкупе с листами гитхабовскими, помогает расширять кругозор.
В рамках компании юзаем Gitlab + EasyRedmine, с ними опыт есть. Space выглядит поприятнее и работает ЗАМЕТНО быстрее обоих. Фичи выдает каждые 1-2 недели.
On-premises пробовал у себя для домашних проектов, Cloud - в качестве среды для студентов.
Это на 99% правда. Найдите на crates.io хоть сколько-нибудь используемую библиотеку, в которой НЕ объявлен свой LibError и алиас вида type LibResult<T> = <Result<T, LibError>>. Это просто повсеместная практика обработки ошибок и выдачи значений. Все знают что такое Result, все знают что try_* методы должны выдавать Result, все привыкли к такого рода API и сообщество старается поддерживать единообразие. Более того, отсутствие unsafe/panic-free считается хорошим знаком и библиотеки выносят это наверх описания как плюс.
"Ложь"? Ну как сказать, я бы использование подавляющим процентом сообщества ряда подходов всё таки назвал общепринятым, если ограничивать общепринятость 100%, а не хотя бы на 99%, то ничто в мире не является общепринятым.
Обновление поиска это хорошо, однако он и раньше неплохо работал. Да, стало удобнее и логичнее в плане поиска по тому разделу, в котором ты находился. Однако есть более важные вещи. Об улучшении поиска никто не просил, однако о других вещах постоянно пишут. Когда приведут в порядок все версии? Почему десктоп/мобильная/веб отличаются настолько сильно, начиная от порядка кнопок и до того, что история есть только в веб, нормальный поток по жанрам и настроениям (не спрятанный как можно дальше от пользователя) только в десктопе, а нейромузыка - только в мобильной? Не говоря о том, что десктоп версия вылетает (а тикеты всё висят), а на вебе не работают клавиатурные аппаратные кнопки кроме старт/стоп. Это то, что раздражает буквально ежедневно, в отличие от поиска. Ну и да, "десктоп" же только на Windows существует, других платформ нет, хочешь управлять музыкой не ища мучительно вкладку браузера - страдай.
Вы уже сейчас можете делать плюс-минус тоже самое с помощью JetBrains Gateway https://www.jetbrains.com/help/idea/2021.3/remote-development-a.html#launch_gateway Просто Fleet - IDE специально для этого созданная и улучшающая опыт от удалённой разработки, а Gateway сделан на существующих технологиях и использует толстый клиент конкретной IDE на сервере, например, CLion, и тонкий клиент Gateway (который только рисует интерфейс толстого) с вашей стороны.
Моё знакомство с Rust началось совсем недавно, узнал я о нём по большей части из дискуссий на этом прекрасном сайте, однако одного знания было мало. Именно изучать его как язык меня сподвигла библиотека orjson для рабочего проекта по Python. Мне захотелось узнать, как она выглядит изнутри и изучить язык. Потом прошёлся по тегу Rust уже с какой-то целью, которой придерживался, и, наконец, установил себе rustup.
Когда я начал писать на нём первые строчки, изучать rustbook(спасибо переводчикам! даже со знанием английского, чтение на родном языке проще), решать алгоритмические задачи просто чтобы получше изучить синтаксис и собрать побольше шишек… появилось странное ощущение удовольствия от языка. Почему-то мне он кажется компромиссом между Python и C/C++, то есть глубокие системные возможности, производительность, но при этом язык не пытается убить меня синтаксисом и показывает вменяемые ошибки, а не плюёт в меня куском памяти из моего прошлого ввода.
Желаю языку дальнейшего развития, популяризации и улучшения в той же степени, в какой себе хотя бы когда-нибудь его понять :)
Зачем делать действие в таком виде? А если нужно будет сложить десяток строк? Конкатенация для каждого из плюсов создаёт промежуточный объект и является самым медленным способом работы со строками.
В данном случае лучше использовать либо метод " ".join(), куда вставить список строк для объединения, либо использовать упомянутый в пункте 8 синтаксис f-строк: f"{} {}".
Они всё же разные. DeepSeek более новая и значительно зафайнтюнена на код - по программированию она даёт лучшие и самые ёмкие ответы, не расплываясь по контексту, без дурацких извинений. Сравнивал с llama70b, CodeLlama 70b, codestral и геммой обоих весов. Разве что оперативки на полные 128к контекста у меня не хватает, довольствуюсь 8000. WizardLM-2 не попадалась, но в теории могу потестить на ваших вопросах и сравнить.
Пожалуй, брать какую-нибудь мать, у которой стоимость овер 90к рублей и 3кг радиаторов на борту суммарно - дичь, по крайней мере для меня. Ради жалких процентов производительности. Ну возьмут мои модули 6400 MHz, ура, +10% в играх за 100к на мать? Я свою-то взял за 50 ради полноценных pci-e 5 линий на ssd и собственно 4 слотов, плюс хорошей периферии и встроенных беспроводных модулей. Как упомянул, на сайте производителя больших объёмов там протесченных крайне мало, так что вы вероятно правы про уклон в тесты 2 модулей.
Не могу сказать. Я как сбросился до 3600MHz, так расстроился и прекратил эксперименты. Да и вряд ли брак, 2 разные пачки памяти. Cейчас, судя по аиде, при 1.1V тайминги 30-29-29-58. В профиле 5600MHz взлетают до 40-40-40-89, 1.25V (осталась фотка биоса с удачно запущенным сетапом).
Притом у той же видеокарты 40 на чипе и 46 на памяти, у проца 56/53 по CCD, по матери 43. Т.е. сам корпус внутри не горячий. Вентиляторы на 300-500rpm крутятся, в зависимости от конкретной группы.
Возможно, нюанс в том, что сами по себе модули не обдуваются, потому что у меня водянка на проце, установленная сверху на выдув, и по факту модули обдаются тёплым воздухом с видеокарты и лишь частично вентиляторами на вдув спереди, которые сейчас как раз еле-еле вертятся на 300rpm.
Вообще странно. Паритет по скорости с моей системой просто из-за 4 канала против 2? Даже на нестабильных 5600 MHz мне не удавалось больше 2.3 tok/s увидеть.
Оффтоп: вы DeepSeek Coder V2 Lite тестили? У меня все её версии выдают тарабарщину - возможно, issue про китайский и кривую разметку инструкций. Запускаю через LM Studio.
Полностью согласен. Я для себя решил, что для нейросеток объём приоритетнее частоты (и угадал, deepseek v2 еле-еле влезла в q4, благо imat реализация квантизации даёт ещё 10 гб свободных), а для игор на моих играх (я знаю, что есть игры, что зависимы от памяти более, но свои самые тяжёлые я пробенчмаркал и разницы не увидел) разницы между 3600 и 5600 почти не было, поэтому я решил тупо забить все слоты памятью максимального объёма, даже переплачивать за паспортные 6400 вместо 5600 не стал, т.к. не заведётся ж. Для любой работы, понятно, такого объёма и скорости хватит - на моей системе свободно весь наш тестовый контур в кубере уместится и не подавится.
Брать Тредрипер для такой игро-рабочей системы и париться с полноценным четырёхканалом серверной памяти было бы нецелесообразно и дорого, а заниматься перебором памяти на текущей системе ради шанса заставить её работать как надо - тем более неразумно.
Интелы горят, но память работает с ними лучше - факты.
Возможно. У моей ASUS X670E-F в таблице совместимости откровенно мало протестированных конфигураций с 4 модулями, а на объём выше 64 так вообще единицы.
Да, я отдельно это отметил в своих выводах: "желательно не Ryzen (на Intel 13-14 поколения результаты у людей получше)".
Возможно. Но речь шла про 4 плашки, а не про 2. На 2 у меня всё заводилось стабильно и с первого раза. Но стоило начать втыкать следующие...
У меня с моей G.Skill Z5 Trident 5600MHz результаты другие, согласно hwinfo по моим плашкам при 1.1V температура от 58 до 61 градуса при тихом пресете на корпусную группу вентиляторов. Но свою систему я эталонной не считаю, так что настаивать сколько там должно быть - 35-40 или 60 - не буду. Лучше независимые тесты глянуть на такой группе плашек. Только вот беда - на ютубе нет нифига тестов на 4 плашки DDR5, особенно таких объёмов :D
Память G.Skill Trident, 4x48 GB, 5600MHz XMP/DOCP. Потенциально - да. В реальности, память такого объёма очень плохо поддаётся разгону и не имеет профилей под такую конфигурацию:
Модули Kingston Fury пришлось вернуть, т.к. в конфигурации 4х32 они отказывались брать любую частоту кроме стока (3600 MHz), сколько я ни колдовал с профилями и настройкой вольтажа/таймингов вручную.
Trident сначала взяли паспортные 5600 MHz (паспортные, с совпадением по таблице совместимости от матери, для двух модулей, но я-то юзаю 4), но они оказались нестабильны и уводили компьютер в ребут посреди игры или работы, либо просто гасили, либо не давали бутнуться. В итоге после очередного ребута после сброса BIOS они отказались вставать на том профиле и выше стока (3600 MHz) мне их также пока поднять не удалось. Зато описанные выше проблемы магически пропали. А более новые Trident Neo, которые по идее должны быть лучше для Ryzen-процов и поддерживать EXPO вместо DOCP, я найти не смог в РФ, да и переплата там ну очень заметная на 4 плашках.
Выводы, которые сделал по неделе проблем, попыток, вычитывания статей и отсмотра видео: разгонять 4 плашки большого объёма реально тяжело. Выше 64ГБ в сумме начинаются проблемы, 4 модуля больше 16гб тоже становятся нестабильны. Нужны и удачные экземпляры, и желательно не Ryzen (на Intel 13-14 поколения результаты у людей получше), и чтобы звёзды сложились нужным образом. Короче, третью партию памяти я брать не стал и забил - не стоят приросты того, ни в играх, ни в рабочих задачах. Лотерея.
Такая скорость меня условно устраивает, когда можно скинуть какой-то вопрос по коду модели и минут на 10-20 забыть об этом, работая параллельно над задачей. Сколько дадут частоты, прирост с 2.2 до 2.5 tok/s? В пределах погрешности между вопросами получается, к тому же реальный прирост от роста частоты нелинейный и после 6000 MHz очень низок, почти отсутствует. А вы говорите о разгоне до "границ спецификации", да на таких параметрах будет конский вольтаж и с температурами за 70 градусов, и тайминги взлетят, а прироста - чуть. Можете посмотреть тесты 3600vs5600vs6000vs6400 и дальше. Чем выше параметры - тем ниже прирост и больше усилий для разгона, а как я упомянул выше, с объёмом и количеством плашек растёт лотерейность самого по себе процесса разгона. Проще говоря, не стоит игра свеч.
Для сравнения: Gemma 2 9b Instruct int8, которая целиком лезет в мою 4080S, удалось получить 11 tok/s, а там и память GDDR6 на 23 ГГц, и архитектура другая, и собственно сам факт, что это видеокарта.
На 7950x3d с 192ГБ памяти с самой большой из скачанных у меня моделей (DeepSeek Coder v2 236b, int4 quant) скорость от 0.9 до 2.2 tok/s. Думаю, у этой модели будет не лучше точно. Может минут 10-20 спокойно печатать большой ответ.
С задачей про функцию локальный imat 4-х битный DeepSeek coder v2 (236b версия, не lite) справился с первого раза, но не вашим решением.
Примерно вот так
Для Раста попросил отдельно поработать со звёздочками как у вас написано, решение оцените сами.
А так с Rust
В целом от DeepSeek v2 впечатления отличные. Конечно выжирает почти всю оперативку: ~130 из 192гб, генерит в районе 0.9-2.2 tok/s, но! запускается локально и работает. Ну и огромное контекстное окно 128к, которое правда не лезет в мою оперативку уже. Из минусов - может по неизвестной причине зависнуть, то ли контекст не нравится, то ли ещё что, но бывает. Помогает создать новый чат. С тем же Gemma 27B Instruct (который я запускаю в int8 вообще), Gemma Coder или Llama 70B не сравнить. С клауд-сетками дела не имел, увы.
Не знаю, можно ли считать скриншот пруфом локального запуска, но пусть так
Конечно, у нас же день или ночь только один раз наступают, а не каждый день
Во многих сервисах не хватает чего-то типа включения по расписанию, как на мобилках. Спасибо если есть "синхронизировать с системой" в некоторых, и то хорошо.
Можно. Фреймворк типа langchain + нужная вам модель как обработчик для этого. Ещё слышал про rasa, но он больше про интеграции, чем про сам эмбеддинг доков к модели.
Замечать новые проекты на Rust (и не только) весьма просто - достаточно в Github Explore в раздел Trending заходить время от времени, там что-нибудь да встретится. И новые проекты там есть, которые получают интерес сообщества, и старые, взлетевшие после апдейтов. В основном вижу там что-то на Python(привет бум всяких Stable Diffusion, Anything-With-ChatGPT и тд, чуть новость - всё забито этим), что-нибудь из существующих Java-проектов (новых вот убей не помню), обвязки на C/C++, облачные тулы стабильно на Go, какая-нибудь очередная CMS или новый UI на JS/TS, ну и проекты на Rust.
Trending основан не на интересах смотрящего, а на интересах сообщества, так что эффект наблюдателя там не сработает. Вкупе с листами гитхабовскими, помогает расширять кругозор.
JetBrains Space.
В рамках компании юзаем Gitlab + EasyRedmine, с ними опыт есть. Space выглядит поприятнее и работает ЗАМЕТНО быстрее обоих. Фичи выдает каждые 1-2 недели.
On-premises пробовал у себя для домашних проектов, Cloud - в качестве среды для студентов.
Это на 99% правда. Найдите на crates.io хоть сколько-нибудь используемую библиотеку, в которой НЕ объявлен свой
LibErrorи алиас видаtype LibResult<T> = <Result<T, LibError>>. Это просто повсеместная практика обработки ошибок и выдачи значений.Все знают что такое Result, все знают что try_* методы должны выдавать Result, все привыкли к такого рода API и сообщество старается поддерживать единообразие.
Более того, отсутствие unsafe/panic-free считается хорошим знаком и библиотеки выносят это наверх описания как плюс.
"Ложь"? Ну как сказать, я бы использование подавляющим процентом сообщества ряда подходов всё таки назвал общепринятым, если ограничивать общепринятость 100%, а не хотя бы на 99%, то ничто в мире не является общепринятым.
Обновление поиска это хорошо, однако он и раньше неплохо работал. Да, стало удобнее и логичнее в плане поиска по тому разделу, в котором ты находился.
Однако есть более важные вещи. Об улучшении поиска никто не просил, однако о других вещах постоянно пишут. Когда приведут в порядок все версии? Почему десктоп/мобильная/веб отличаются настолько сильно, начиная от порядка кнопок и до того, что история есть только в веб, нормальный поток по жанрам и настроениям (не спрятанный как можно дальше от пользователя) только в десктопе, а нейромузыка - только в мобильной? Не говоря о том, что десктоп версия вылетает (а тикеты всё висят), а на вебе не работают клавиатурные аппаратные кнопки кроме старт/стоп. Это то, что раздражает буквально ежедневно, в отличие от поиска.
Ну и да, "десктоп" же только на Windows существует, других платформ нет, хочешь управлять музыкой не ища мучительно вкладку браузера - страдай.
Вы уже сейчас можете делать плюс-минус тоже самое с помощью JetBrains Gateway https://www.jetbrains.com/help/idea/2021.3/remote-development-a.html#launch_gateway
Просто Fleet - IDE специально для этого созданная и улучшающая опыт от удалённой разработки, а Gateway сделан на существующих технологиях и использует толстый клиент конкретной IDE на сервере, например, CLion, и тонкий клиент Gateway (который только рисует интерфейс толстого) с вашей стороны.
Возможно, вам поможет инструмент создания приватных registry - meuse, в списке фич заявлено зеркалирование crates.io.
Моё знакомство с Rust началось совсем недавно, узнал я о нём по большей части из дискуссий на этом прекрасном сайте, однако одного знания было мало. Именно изучать его как язык меня сподвигла библиотека orjson для рабочего проекта по Python. Мне захотелось узнать, как она выглядит изнутри и изучить язык. Потом прошёлся по тегу Rust уже с какой-то целью, которой придерживался, и, наконец, установил себе rustup.
Когда я начал писать на нём первые строчки, изучать rustbook(спасибо переводчикам! даже со знанием английского, чтение на родном языке проще), решать алгоритмические задачи просто чтобы получше изучить синтаксис и собрать побольше шишек… появилось странное ощущение удовольствия от языка. Почему-то мне он кажется компромиссом между Python и C/C++, то есть глубокие системные возможности, производительность, но при этом язык не пытается убить меня синтаксисом и показывает вменяемые ошибки, а не плюёт в меня куском памяти из моего прошлого ввода.
Желаю языку дальнейшего развития, популяризации и улучшения в той же степени, в какой себе хотя бы когда-нибудь его понять :)
Пункт 35. Как объединить две строки
Зачем делать действие в таком виде? А если нужно будет сложить десяток строк? Конкатенация для каждого из плюсов создаёт промежуточный объект и является самым медленным способом работы со строками.
В данном случае лучше использовать либо метод
" ".join(), куда вставить список строк для объединения, либо использовать упомянутый в пункте 8 синтаксис f-строк:f"{} {}".