Сохранен 21
https://2ch.hk/pr/res/3330915.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Тред плагинов с нейронками для ИДЕ и ИДЕ уже интегрированными с ними.

 Аноним 28/11/24 Чтв 09:13:42 #1 №3330915 
image.png
В этом треде делимся винами по поводу своего опыта пользования разными приблудами, упрощающими жизнь макаки.

1. Codeium
Описание:
Codeium — это бесплатный AI-инструмент для автодополнения кода. Работает с большинством популярных IDE и поддерживает множество языков программирования.

Достоинство: Бесплатный доступ без ограничений.
Недостаток: В некоторых случаях автодополнение бывает менее точным по сравнению с конкурентами, такими как Copilot.

2. Windsurf
Описание:
Windsurf — это ИДЕ с AI, ориентированный на скорость и минимализм. Основной упор сделан на интеграции с ИИ.

Достоинство: Быстрая интеграция, без необходимости установки сложных плагинов.
Недостаток: Ограниченная функциональность по сравнению с более крупными инструментами.

3. Double.Bot
Описание:
Double.Bot — это AI-помощник для разработки, который помогает автоматизировать задачи, такие как написание кода, исправление ошибок и оптимизация.

Достоинство: Высокая степень автоматизации рутинных задач.
Недостаток: Меньшая узнаваемость и поддержка по сравнению с популярными конкурентами.

4. ClaudeDev
Описание:
ClaudeDev — версия AI-модели Claude, специально настроенная на разработчиков. Она помогает с анализом кода, генерацией сложных решений и предложением архитектурных паттернов.

Достоинство: Глубокое понимание контекста и сложных задач.
Недостаток: Может быть медленнее в обработке запросов по сравнению с другими AI.

5. Continue.dev
Описание:
Continue.dev — инструмент для улучшения и продолжения кода. Работает как интерактивный AI, который помогает дописывать или рефакторить код в реальном времени.

Достоинство: Гибкость в работе с продолжающимся кодом и рефакторингом.
Недостаток: Зависит от качества исходного кода, иногда предлагает не совсем корректные варианты.

6. Cursor
Описание:
Cursor — это AI-помощник разработчика, который помогает писать и редактировать код, а также предоставляет советы по оптимизации.

Достоинство: Простота использования и интерфейс, ориентированный на эффективность.
Недостаток: Ограниченная поддержка сложных архитектурных решений.

7. GitHub Copilot
Описание:
GitHub Copilot — один из самых известных AI-инструментов для автодополнения кода. Разработан на базе модели OpenAI Codex и интегрируется в большинство популярных IDE.

Достоинство: Точность и адаптация под стиль разработчика.
Недостаток: Он тупой. У него платный доступ, что может быть минусом для некоторых пользователей.
Аноним 28/11/24 Чтв 10:18:01 #2 №3330943 
Никогда этим говном не пользовался, поясни на примере не хеловорда на хуй оно нужно?
Аноним 28/11/24 Чтв 11:51:46 #3 №3331025 
>>3330943

Мне тестами нравится покрывать код, используя эти штуки

Писать тесты - это самое тупое, что приходится делать руками.
А тут гпт сам за тебя напишет тест - выводится ли в консольку твой холоворлд.
Аноним 28/11/24 Чтв 12:01:17 #4 №3331031 
>>3331025
Проверять кем-то написанные тесты на корректность чуть ли менее приятно, чем писать самому.
Аноним 28/11/24 Чтв 12:32:16 #5 №3331051 
>Писать тесты - это самое тупое, что приходится делать руками.
Ну такое, ты же поверяешь критические участки кода, это очень важно, тем более какой тест что покрывает ты то же понимаешь
Аноним 28/11/24 Чтв 14:08:24 #6 №3331123 
>>3330943

вот я спросил клад сонет:

`console.log("Hello world!");`

- напиши как можно больше тестов jest по поводу этого кода
Аноним 28/11/24 Чтв 14:09:19 #7 №3331124 
>>3331123

describe('Console log tests', () => {
let consoleSpy;

// Перед каждым тестом создаем шпиона для console.log
beforeEach(() => {
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
});

// После каждого теста очищаем моки
afterEach(() => {
consoleSpy.mockRestore();
});

test('console.log should be called', () => {
console.log("Hello world!");
expect(consoleSpy).toHaveBeenCalled();
});

test('console.log should be called exactly once', () => {
console.log("Hello world!");
expect(consoleSpy).toHaveBeenCalledTimes(1);
});

test('console.log should be called with "Hello world!"', () => {
console.log("Hello world!");
expect(consoleSpy).toHaveBeenCalledWith("Hello world!");
});

test('console.log should not be called with wrong text', () => {
console.log("Hello world!");
expect(consoleSpy).not.toHaveBeenCalledWith("Goodbye world!");
});

test('console.log argument should be a string', () => {
console.log("Hello world!");
expect(typeof consoleSpy.mock.calls[0][0]).toBe('string');
});

test('console.log argument should have correct length', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0].length).toBe(12);
});

test('console.log argument should contain "Hello"', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0]).toContain('Hello');
});

test('console.log argument should match exact string', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0]).toMatch(/^Hello world!$/);
});

test('console.log should be called with non-empty string', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0]).not.toBe('');
});

test('console.log argument should start with "Hello"', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0]).toMatch(/^Hello/);
});

test('console.log argument should end with "!"', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0]).toMatch(/!$/);
});

test('console.log should be called with string containing space', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0]).toContain(' ');
});

test('console.log argument should have correct words count', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0].split(' ').length).toBe(2);
});

test('console.log argument should be case sensitive', () => {
console.log("Hello world!");
expect(consoleSpy.mock.calls[0][0]).not.toBe('hello world!');
});
});

// Тесты на обработку ошибок
describe('Console log error handling', () => {
test('should throw if console is undefined', () => {
const tempConsole = global.console;
global.console = undefined;

expect(() => {
console.log("Hello world!");
}).toThrow();

global.console = tempConsole;
});

test('should throw if log method is undefined', () => {
const tempLog = console.log;
console.log = undefined;

expect(() => {
console.log("Hello world!");
}).toThrow();

console.log = tempLog;
});
});

// Тесты производительности
describe('Console log performance', () => {
test('should execute within 1ms', () => {
const start = performance.now();
console.log("Hello world!");
const end = performance.now();

expect(end - start).toBeLessThan(1);
});
});

// Тесты на последовательные вызовы
describe('Console log sequential calls', () => {
let consoleSpy;

beforeEach(() => {
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
});

afterEach(() => {
consoleSpy.mockRestore();
});

test('multiple calls should work correctly', () => {
console.log("Hello world!");
console.log("Hello world!");
console.log("Hello world!");

expect(consoleSpy).toHaveBeenCalledTimes(3);
expect(consoleSpy.mock.calls).toHaveLength(3);
expect(consoleSpy.mock.calls[0][0]).toBe("Hello world!");
expect(consoleSpy.mock.calls[1][0]).toBe("Hello world!");
expect(consoleSpy.mock.calls[2][0]).toBe("Hello world!");
});
});
Аноним 28/11/24 Чтв 14:24:49 #8 №3331140 
>>3330915 (OP)
V0.dev

https://github.com/yoheinakajima/ditto

https://www.opensourcealternative.to/
https://osssoftware.org/open-source-alternatives/
Аноним 28/11/24 Чтв 16:30:22 #9 №3331211 
изображение.png
>>3330915 (OP)

Предлагаю тест на БАЗУ

Начну с Yandex Code Assistant
Аноним 28/11/24 Чтв 18:38:24 #10 №3331335 
>>3331211

не могу найти плагин для vscode
Аноним 28/11/24 Чтв 19:29:35 #11 №3331370 
>>3331335
нужно подать ЗАЯВКУ
Аноним 29/11/24 Птн 13:34:11 #12 №3331848 
Что скажете про tabine?
Аноним 29/11/24 Птн 13:51:39 #13 №3331859 
>>3331848

Бесплатный. Работает в РФ, на GPT4o + Claude Sonnet 3.5.
Жду, когда смогут сделать анализ всего проекта, как это было в Windsurf, пока они не забанили Россию.
Аноним 29/11/24 Птн 13:53:27 #14 №3331861 
Подскажите, кто настраивал ВПН на винде, чтобы бы буржуи не знали, что я ими пользуюсь из РФ. Кто как решил эту задачу?
Аноним 12/12/24 Чтв 17:39:21 #15 №3340138 
пользовался клоном вскод Cursor - за неделю перелопатил столько кода, как за полгода без него.
Там давали премиум на 2 недели или 500 запросов к ИИ. Когда запросы заканчивались, регал новый акк и продолжал.

Сегодня выскочило сообщение:
Too many free trial accounts used on this machine. Please upgrade to pro. We have this limit in place to prevent abuse. Please let us know if you believe this is a mistake.

- как сбросить эту настройку. Пока предполагаю, что надо настроить какое-то виртуальное окружение, чтобы после израсходования триала Курсор переводить в исходное состояние, после чего регать новый акк.
Какие идеи, как это сделать?
Аноним 13/12/24 Птн 15:47:29 #16 №3340622 
>>3330943
Писать бойлерплейт, писать логирование, писать тесты, писать документацию, особенно по коду который писал не ты, делать ревью, работать за стековерфлоу. Я по приколу одному сервису даже архитектуру сгенерил с техзаданием и после пары правок эта же сеточка по тз приложуху написала с тестами, докерфайлами, чартами и так далее. Костыль этот давно в проде.

> Проверять кем-то написанные тесты
Хули там проверять? Зелёные строчки видишь - значит работают.
Аноним 14/12/24 Суб 16:02:43 #17 №3341193 
>>3340622
А какой AI тул может сервису архитектуру сгенерить?
Аноним 15/12/24 Вск 19:08:18 #18 №3341857 
>>3341193
Да в общем-то любой. Это же чисто на костылях делается. План примерно следующий:
1) Пишешь в любой чат "ты техлид, у нас используется такой-то стек, вот такие входные данные, проведи со мной интервью чтобы выяснить детали архитектуры", отвечаешь на наводящие вопросы
2) Просишь по C4 модели сгенерить диаграмму, контекста, контейнеров, компонентов, по ходу поправляешь
3) Скармливаешь итоговый диалог, просишь сгенерить ридми, тз, ерд, умлки, план разработки
4) Добавляешь файлы в проект, чтобы они попали в контекст сеточки, и дальше любой кодописалкой по очереди копипастишь задачи из TODO.md
Я делал в aider, но в cursor composer, говорят, это проще делается
Аноним 15/12/24 Вск 20:32:55 #19 №3341932 
image
>>3341857
>ерд, умлки
Можешь разъяснить что это?
Аноним 15/12/24 Вск 20:40:17 #20 №3341936 
IDE GigaIDE https://gigaide.ru/
Кто тестировал уже?
Я бы потестил, но жду когда выпустят плагин для VSCode, потому что житбрейнсы закрыли нахуй скачивание плагинов без костылей.
Аноним 15/12/24 Вск 20:58:53 #21 №3341958 
>>3341932
https://ru.wikipedia.org/wiki/ER-модель
https://ru.wikipedia.org/wiki/UML
comments powered by Disqus