Repomix: Pack your codebase into AI-friendly formats
Repomix - библиотека, которая запакует ваш репозиторий в формат, удобный для AI. Собранный документ затем можно кидать в любую LLM как проект, с которым можно работать.
Какой-то магии здесь нет - библиотека буквально формирует огромный файл, где структурировано расписано - какие файлы есть в проекте и какой у них контент. Как нибудь попробую поиграться с этим на пет-проекте.
https://repomix.com
#development #javascript #library #ai
Repomix - библиотека, которая запакует ваш репозиторий в формат, удобный для AI. Собранный документ затем можно кидать в любую LLM как проект, с которым можно работать.
Какой-то магии здесь нет - библиотека буквально формирует огромный файл, где структурировано расписано - какие файлы есть в проекте и какой у них контент. Как нибудь попробую поиграться с этим на пет-проекте.
https://repomix.com
#development #javascript #library #ai
Repomix
Pack your codebase into AI-friendly formats
👍8
Modern Node.js Patterns for 2025
Список современных бест-практисов nodejs в частном блоге. Часть бест-практисов уже "старые", часть - достаточно интересные. В любом случае полезно ознакомиться, возможно найдете что-то для себя
Из банальных советов: используйте ESM, fetch, async await, воркеры для сложных вычислений, кастомные классы ошибок. Менее банальные стоит расписать подробнее.
В основном бест-практисы связаны с использованием внутренних инструментов nodejs, вместо использования внешних библиотек, либо с использованием общих web-стандартов, вместо использования специфичного для nodejs решения.
В nodejs завезли test-runner, теперь можно запускать автотесты без внешних библиотек
В nodejs с самого начала была хорошая поддержка потоков (Streams). Теперь же потоки есть и в Web-стандартах, поэтому пора переходить на работу с ними, делая свой код кросс-платформенным.
Завезли новые удобные флаги для разработки -
Также в nodejs теперь есть возможность ограничивать возможность приложений как в deno. Правда, пока за экспериментальными флагами
В nodejs теперь есть возможность мониторить перформанс, что, опять же, убирает необходимость во внешних библиотеках
Если вам нужно доставлять nodejs-приложение единым файлом, то nodejs теперь умеет делать это сама (опять же - убирается зависимость от внешних тулов)
Также следует использовать новые возможности
https://kashw1n.com/blog/nodejs-2025/
#development #javascript #nodejs
Список современных бест-практисов nodejs в частном блоге. Часть бест-практисов уже "старые", часть - достаточно интересные. В любом случае полезно ознакомиться, возможно найдете что-то для себя
Из банальных советов: используйте ESM, fetch, async await, воркеры для сложных вычислений, кастомные классы ошибок. Менее банальные стоит расписать подробнее.
В основном бест-практисы связаны с использованием внутренних инструментов nodejs, вместо использования внешних библиотек, либо с использованием общих web-стандартов, вместо использования специфичного для nodejs решения.
В nodejs завезли test-runner, теперь можно запускать автотесты без внешних библиотек
В nodejs с самого начала была хорошая поддержка потоков (Streams). Теперь же потоки есть и в Web-стандартах, поэтому пора переходить на работу с ними, делая свой код кросс-платформенным.
Завезли новые удобные флаги для разработки -
--watch
, --env-file
, которые убирают необходимость во внешних библиотеках типа dotenv
и nodemon
Также в nodejs теперь есть возможность ограничивать возможность приложений как в deno. Правда, пока за экспериментальными флагами
# Run with restricted file system access
node --experimental-permission --allow-fs-read=./data --allow-fs-write=./logs app.js
# Network restrictions
node --experimental-permission --allow-net=api.example.com app.js
В nodejs теперь есть возможность мониторить перформанс, что, опять же, убирает необходимость во внешних библиотеках
import { PerformanceObserver, performance } from 'node:perf_hooks';
// Set up automatic performance monitoring
const obs = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
if (entry.duration > 100) { // Log slow operations
console.log(`Slow operation detected: ${entry.name} took ${entry.duration}ms`);
}
}
});
obs.observe({ entryTypes: ['function', 'http', 'dns'] });
// Instrument your own operations
async function processLargeDataset(data) {
performance.mark('processing-start');
const result = await heavyProcessing(data);
performance.mark('processing-end');
performance.measure('data-processing', 'processing-start', 'processing-end');
return result;
}
Если вам нужно доставлять nodejs-приложение единым файлом, то nodejs теперь умеет делать это сама (опять же - убирается зависимость от внешних тулов)
# Create a self-contained executable
node --experimental-sea-config sea-config.json
Также следует использовать новые возможности
node:diagnostics_channel
. Можно создать канал диагностики, куда можно публиковать события, которые можно затем передавать в специализированный тулингimport diagnostics_channel from 'node:diagnostics_channel';
// Create custom diagnostic channels
const dbChannel = diagnostics_channel.channel('app:database');
const httpChannel = diagnostics_channel.channel('app:http');
// Subscribe to diagnostic events
dbChannel.subscribe((message) => {
console.log('Database operation:', {
operation: message.operation,
duration: message.duration,
query: message.query
});
});
// Publish diagnostic information
async function queryDatabase(sql, params) {
const start = performance.now();
try {
const result = await db.query(sql, params);
dbChannel.publish({
operation: 'query',
sql,
params,
duration: performance.now() - start,
success: true
});
return result;
} catch (error) {
dbChannel.publish({
operation: 'query',
sql,
params,
duration: performance.now() - start,
success: false,
error: error.message
});
throw error;
}
}
https://kashw1n.com/blog/nodejs-2025/
#development #javascript #nodejs
👍20🔥6❤4
Speculative Optimizations for WebAssembly using Deopts and Inlining
Статья в блоге V8 про ускорение WASM в недавнем релизе V8. В целом WASM ранее не нуждался в каких-то спекулятивных оптимизациях т.к. сгенерированный wasm-код уже был эффективный. Но вот мы дошли до создания WASM Garbage Collector, чтобы позволить языкам типа Java, Kotlin, Dart компилироваться в WASM. И вот в WasmGC уже можно заниматься спекулятивными оптимизациями.
Статья, как и многие другие в блоге v8 - одновременно хардкорная и достаточно хорошо разжеванная для обычных людей. Цитировать что-то из нее не буду - если вам интересна тема - рекомендую окунуться в чтение.
https://v8.dev/blog/wasm-speculative-optimizations
#development #javascript #v8 #wasm #performance
Статья в блоге V8 про ускорение WASM в недавнем релизе V8. В целом WASM ранее не нуждался в каких-то спекулятивных оптимизациях т.к. сгенерированный wasm-код уже был эффективный. Но вот мы дошли до создания WASM Garbage Collector, чтобы позволить языкам типа Java, Kotlin, Dart компилироваться в WASM. И вот в WasmGC уже можно заниматься спекулятивными оптимизациями.
Статья, как и многие другие в блоге v8 - одновременно хардкорная и достаточно хорошо разжеванная для обычных людей. Цитировать что-то из нее не буду - если вам интересна тема - рекомендую окунуться в чтение.
https://v8.dev/blog/wasm-speculative-optimizations
#development #javascript #v8 #wasm #performance
v8.dev
Speculative Optimizations for WebAssembly using Deopts and Inlining · V8
This post explains two new optimizations in V8 for WebAssembly: speculative call_indirect inlining and deoptimization support for WebAssembly
👍7