ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
+17 kunlar
-430 kunlar
Postlar arxiv
1 419
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:245:24)
at Module.require (node:internal/modules/cjs/loader:1547:12)
at require (node:internal/modules/helpers:152:16)
at test2.js:5:17
at embedderRunCjs (node:internal/main/embedding:89:10) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/Users/ynonp/tmp/blog/node-sea/sea' ]
}
Node.js v25.5.0
ืฉืืืื ืงืืฆืื ืืืืืขืื
ืืจื ื ืืกืคืช ืืฉืื ืงืืฆืื ืืืฆืื ืืื ืืื ืืืืฆืขืืช Assets. ืืกืืื ืืืืืขื ืืชืื ืงืืืฅ ืืืื ืืจื ืืื ืืกืงืจืืคื ืืืืื ืืืื ืื ืืชืืื ืืช ืฉืื ื ืืืื ืจืืฆื. ืืคืฉืจ ืืืืืืข ืืื ืืจืื ืืืจืื ืืื ืชืืื ืืช ืืืคืฉืจ ืื ืืืืืืข ืงืืฆื ืงืื. ืืืื ื ื ืกื ืืช ืื ืขื ืืงืืืฅ utils.js ืืืืืืื ืืงืืืืช. ืื ื ืืขืืื ืืช ืงืืืฅ ืืงืื ืคืืืืจืฆืื ืืื ืืืืื ืืช ืืงืืืฅ ืืชืืจ ืงืืืฅ ืืืืืข:
{
"main": "test3.js",
"executable": "/Users/ynonp/.nvm/versions/node/v25.5.0/bin/node",
"disableExperimentalSEAWarning": true,
"output": "sea",
"assets": {
"utils": "./utils.js"
}
}
ืื ื ื ืืืฉ ืืงืืฆืื ืืืืืืขืื ืืจื ืคืื ืงืฆืื ืืฉื sea.getAsset. ืืงืื ืืื ืืืืข ืืืขืื ืืืืื ืืชืื ืงืืืฅ ืืืืืข ืืืืฆืขืืช ืคืื ืงืฆืืืช requireFromString ืฉืืฉืชืืฉืช ื API ืืื ืืชืืขื module.prototype._compile:
const sea = require('node:sea');
const utilsSource = sea.getAsset('utils', 'utf8');
function requireFromString(src, filename) {
var m = new module.constructor();
m.paths = module.paths;
m._compile(src, filename);
return m.exports;
}
const {twice} = requireFromString(utilsSource, 'utils.js');
const user = process.env["USER"];
console.log(\Hello ${user}. 2 * 2 = ${twice(2)}\);
ืงืืืคืื ืืืคืขืื ืฉื ืืชืืื ืืช ืืืืจืื ื ืืืจืื ืืืคืชืขื ืขืืื ืื ืืชื ืื ืืืคืขืื ืืช ืืคืื ืงืฆืื twice ืื ืื ืื ื ืืืื ืืช ืงืืืฅ ืืืื ืืจื ืฉื ืืฆืจ ืืืงืื ืืืจ.
ืกื ืืื ืืคืืืงืฆืืืช ืงืืืฅ ืืืื ืื ืจืขืืื ืืืืืง ืืืืื ืืืกืื ืืชืงื ื ืฉื node ืื ืฉื ืืจืกื ืจืืืื ืืืช ืฉื node ืขื ืืืื ื ืฉื ืืงืื. ืืืขืชื ืื ืขืื ืืืืืืฉ ืืื ืืืืขื ืฉื ืกืงืจืืคื ืืชืื ืืืื ืืจื ืฉื node ืืืืืจ ืฉืืืืื ืฉื ืืงืืืฅ ืืืฆื ืืขื 100 ืืื, ืืื ืขืื ืืื ืืจื ืงืื ืืืฉืชืืฉ ืืืืืืืื ืฆื-ืฉืืืฉื ืื ืฉืื ืื ืืืืจื ืืืฉืชืืฉ ืืื.1 419
ืืื ื ืืกืืชื: ืคืืชืื ืืคืืืงืฆืืืช ืงืืืฅ ืืืื ืขื node 25
ืืจืกื 25 ืฉื node.js ืืืกืืคื ืคืืฆ'ืจ ืืืคื ืืื ืฉืื ืฉืืืชืืื ืืื ืฉืืจืช ืคืงืืื ืฉื ืงืจื Single Executable Application. ืืงืฆืจื ืืื ืืืคืฉืจ ืืืืืืข ืชืืื ืืช node ืืชืื ืงืืืฅ ืืืคืขืื ืฉื node.js ืขืฆืื ืืื ืืืคืืฅ ืืช ืืงืืืฅ ืืื ืืชืืจ ืืคืืืงืฆืืืช ืงืืืฅ ืืืื, ืืืืืจ ืืงืื ืืงืื ืงืืืฅ ืืคืขืื ืืื ืฉืืื ืฉืืคืขืืืื ืืืชื ืืืฆืข ืืช ืืงืื ืืกืงืจืืคื ืฉืืืืืข.
ืืืื ื ืจืื ืืื ืื ืขืืื ืืจื 3 ืืืืืืืช.
ืืคืืืงืฆืืืช ืฉืืื ืขืืื
ืืคืืืงืฆืืืช ืงืืืฅ ืืืื ื ืืชืืืช ืจืง ื CommonJS (ืื ื ืืงืืื ืฉืื ืฉืืืชื ืืืจ ืฉืื ืงืืื. ืืื ืืงืจื ืื ืืืชืื ืขื ื require ืืืืคืืื ื ื node ืืืงืื ืืชืื ื import) ืืืืจืฉืืช ืงืืืฅ ืงืื ืคืืืืจืฆืื ืขื ืกืืืืช json ืฉืืืื ืืช ืืคืจืืื ืืืืื:
{
"main": "/path/to/bundled/script.js",
"executable": "/path/to/node/binary", // Optional, if not specified, uses the current Node.js binary
"output": "/path/to/write/the/generated/executable",
"disableExperimentalSEAWarning": true, // Default: false
"useSnapshot": false, // Default: false
"useCodeCache": true, // Default: false
"execArgv": ["--no-warnings", "--max-old-space-size=4096"], // Optional
"execArgvExtension": "env", // Default: "env", options: "none", "env", "cli"
"assets": { // Optional
"a.dat": "/path/to/a.dat",
"b.txt": "/path/to/b.txt"
}
}
ืืฉืืื ืื ืืกืื ืื ื ืืืฆืจ ืงืืืฅ ืงืื ืคืืืืจืฆืื ืืฉื sea-config.json ืขื ืืชืืื ืืืื ืืืื ืืื:
{
"main": "test1.js",
"executable": "/Users/ynonp/.nvm/versions/node/v25.5.0/bin/node",
"disableExperimentalSEAWarning": true,
"output": "sea",
}
ืืงืืืฅ test1.js ืขื ืืชืืื ืืื:
console.log('hello world');
ืืคืขืื ืืฉืืจืช ืืคืงืืื ืืช ืืคืงืืืืช ืืืืืช ืืคื ืืืืจืืืช ืืชืืขืื:
$ node --build-sea sea-config.json
$ codesign --sign - sea
ืืืฉ ืื ืงืืืฅ ืืคืขืื ืืฉื sea ืฉืืืื ืืช node.js ืืืช ืืกืงืจืืคื. ืืคืฉืจ ืืืคืขืื ืืืชื ืืืจืืืช ืืช ืืชืืฆืื:
$ ./sea
hello world
ืืืช ืื ืจืื ืชืืื ืืช ื hello world ืืืืื ืืขืืื ืื ืืงืืืฅ ืฉืืงื 125 ืืื, ืืื ืื ืืจืืจ ืื ืืื ืืืืข ืขื ืื ืืงืื ืฉื node.js ืขืฆืื.
ืืขืื ืช ืงืืืฅ ืืืฆืื ื
ืืืืืื ืืฉื ืื ืจืฆืืชื ืืจืืืช ืืื ืืขืืื ืขื ืงืืืฅ ืืืฆืื ื. ืืฆืจืชื ืงืืืฅ ืืฉื utils.js ืขื ืืชืืื ืืื:
function twice(x) {
return x * 2;
}
module.exports = {
twice
}
ืืงืืืฅ ืืฉื test2.js ืขื ืืชืืื ืืื:
const process = require('node:process');
const {twice} = require('./utils.js');
const user = process.env["USER"];
console.log(\Hello ${user}. 2 * 2 = ${twice(2)}\);
ืขืืื ืชื ืืช ืฉื ืงืืืฅ ืืืงืืจ ืืงืื ืคืืืืจืฆืื ื test2.js ืืื ืืชื ืืคื ืืืืจืืืช. ืืชืืฆืื ืืคืขื ืคืืืช ืืืฆืืืช:
$ ./sea
node:internal/main/embedding:113
throw new ERR_UNKNOWN_BUILTIN_MODULE(id);
^
Error [ERR_UNKNOWN_BUILTIN_MODULE]: No such built-in module: ./utils.js
at embedderRequire (node:internal/main/embedding:113:11)
at test2.js:2:15
at embedderRunCjs (node:internal/main/embedding:89:10) {
code: 'ERR_UNKNOWN_BUILTIN_MODULE'
}
Node.js v25.5.0
ืคืงืืืืช require ืืชืื single executable application ืืืืขืืช ืืขืืื ืจืง ืขื ืืืืืืื ืืืื ืื ื node ืืื ืขื ืงืืฆืื ืืืฆืื ืืื. ืืฉืืื ืืืขืื ืงืืืฅ ืืืฆืื ื ืื ืื ื ืฆืจืืืื ืืฉืื ืืืชื ืขื ืืืืื ื ืื ื ืคืขืื ืืช ืืืคืืืงืฆืื (ืืืืืจ ืื ืืืจ ืชืืื ืืคืืืงืฆืืืช ืฉื ื ืงืืฆืื) ืืืขืืื ืืช ืืงืื ืฉื test2.js:
const process = require('node:process');
const { createRequire } = require('node:module');
require = createRequire(__filename);
const {twice} = require('./utils.js');
const user = process.env["USER"];
console.log(\Hello ${user}. 2 * 2 = ${twice(2)}\);
ืืื ืขืืื ืื ืขืื ืืงืืืฅ utils.js ื ืืฆื ืืืืชื ืชืืงืื ืืื ื ืื ื ืืคืขืื ืืช ืืงืื. ืื ืื ื ืืืืง ืืช ืืืืืื ืื ืืืื ืืช sea ืืชืืงืื ืืืจืช ืื ื ืืงืื ืืช ืืฉืืืื:
$ ./sea
node:internal/modules/cjs/loader:1450
throw err;
^
Error: Cannot find module './utils.js'
Require stack:
- /Users/ynonp/tmp/blog/node-sea/sea
at Module._resolveFilename (node:internal/modules/cjs/loader:1447:15)
at defaultResolveImpl (node:internal/modules/cjs/loader:1058:19)
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1063:22)
at Module._load (node:internal/modules/cjs/loader:1233:25)1 419
ืืืจืืง ืขื ืืขืจืืืช ืืื ืื
ืืฉืืฉ ืืืชืจ ืืื ืืื ืื ืื ื ืืืืืืื ืืืชื. ืืคืชื ืฉืืืื ืืื ืืช ืคืืฆ'ืจ ืืฉืืืข ืืืงืื ืืืืฉืืื ืืื ืืคืชื ืืช ืื ืืขืืื ืืืชืจ ืืื (ืื ืื ืื ืืืืืข) ืืืขืฉื ืขืืืื ืืืืชืจืช. ืืจืฆื ืฉืชืื ื ืืืื ืืืืจ ืฉื ืฉืขื ื-8 ืฉืขืืช ืืืฆื ืืช ืขืฆืื ืืืืจ ืขื ืืืชื ืืืืืืืช ืืืกืืฃ ืืฉืืจืจ ืืช ืืชืืืืืื ืฉืขืชืืื ืืคื ื ืืืื.
ืืฉืืฉ ืคืืืช ืืื ืืื ืื ืื ื ืืขืืืื ืคืื ืืช ืืื ืืืกืคืืง ืืืืืืข ืืืขื. ืืชืื ืช ืฉืืืื ืืื ืืช ืคืืฆ'ืจ ืืฉืืืข ืืื ืืงืื ืืืืืื ืืฉืืืื ืืืื ืืืืชืจ ืขื ืืืืืงืืช, ืืืื ืขื ืืขืืฆืื, ืืืื ืขื ืืืืืช ืืืืข ืืืืื ืืืื ืื ืืกืืื ืืืื. ืืจืฆื ืฉืชืื ื ืืืื ืืืืจ ืฉื ืฉืขืชืืื ืืฉืขื ืืืืจ ืืืจ ืืื ืืื ืืขืืืจ ืืช ืืืกืจ.
ืืจืืจ ืฉืืืื ืืืชืืื ืืช ืืืืืช ืืืื ืื ืืืฉืืื. ืืืืืื ืืืกืืจืืืืช ืืื ืืืืื ืฆื ืขืืืฃ ืืืขืืช. ืืฉืืืฉืืื ืขื ืืืงืกืื ืืขืจื ืฉื ืืขืืืื ืฉืื ื ืืจืืจ ืืื ืืืขื ืชืืื ืขืืืฃ ืืืขืืช ืืืขืจืืช ืืชืจ ืืืฉืจ ืืืขืจืืช ืืกืจ.
1 419
ืื ืงืื ืขืืฉื ืกืืืจืืืืื ื
ืืื ืืื ืืืฆืืื ืื ืืขื AI ืฉืืืืขืื ืืคืชื ืชืืื ื ืืื ืจืง ืืืืฆืจ ืฉืืจืืช ืงืื. ืขื ืฉืื ืืงืจื ืื ื ืืื ืกืืคืืจืื ืืืฉืืืข ืืืืจืื ืฉืื ื ืืงืืื ืฉืืฉืื ืขื ืื ืืชืื ืืงืจืื ืืช ืืงืื ืฉืืืฆื ืืื ืืขื ืืฉืคื ืืืืืืื ืฉืืื:
1. ืกืืื ืงืืืื ืืืชื ืงืื ืคืื ืงืฆืืืช ืฆื ืฉืจืช ืฉืืงืืืช ืคืจืืืจ ืฉืืืจืื ืืฉืชื ืืืืื
user_name. ืืื ืืืฉืื ืืืชืื ืืช ืงืื ืฆื ืืืงืื ืืืืขืืช ืฉืืื ืืช ืืขืจื userName. ืืงืื ืื ืขืืื ืืื ื ืืืงืฉ ืืกืืื ืืงืืืื ืืชืงื (ืืื ืืืืชื ืฉืืื). "ืื ื ืจืืื ืฉืืฉ ืืขืื ืืฉื ืืืฉืชื ื ืืงืื ืฆื ืืืงืื ืฉืืื ืืืชื ืืฉื ืืืจ ืืื ืฉืืฉืจืช ืืฆืคื ืืงืื. ืื ืืื ืืชืื ืฉื ืืกืืื ืืืื ืื ืื ื ืืฉืื ืืช ืืขืจื ืื ืขื ืืฉื ืื ืืื ืืื ืขื ืืฉื ืืฉืืื". ืืชืืฆืื - ืงืื ืขืืื ืฉืฉืืื ืืืืข ืืคืื ืืฉืจืช.
2. ืืืงืฉ ืืกืืื ืงืืืื ืืชืงื ืืืืงื ืฉืื ืขืืจื. ืืกืืื ืืืื ืฉืืืืืงื ืคืื ื ืืฉืจืช, ืืฆืคื ืืงืื ืืขืจื ืืื ืืืืงืช ืืืจืื ืืืื ืืคืจืืืื ืืชืื ืืืขืจื. ืืฉืจืช ืืืืืจ ืขืจื ืืกืื ืืืจ ืืืื ืืืืืงื ื ืืฉืืช. ืกืืื ืืงืืืื ืฉืจืืฆื ืืชืงื ืืช ืืืืืงื ืืืื ืืช ืืืขืื ืืืืกืืฃ ืชื ืื - ืื ืืฉืจืช ืืืืืจ ืืฉืื ืฉืืื ื ืืขืจื ืชืกืื ืืช ืืืืืงื ืืืฆืืื.
3. ืกืืื ืงืืืื ืืชืืงืฉ ืืืืฉ ืคืื ืงืฆืื ืืืืืื ืืชืงืื ืืืืื ืืืฉ ืืงืืช ืขืจื ืืชืืื. ืืงืื ืืื ืืจืืื ืืืกืืื ืืืชื:
name = payload[:name] || payload['name']
ืืชืืืืจืื ืงืื "ืืืง" ืฉืชืืื ืืขืืื ืื ืืฉื ื ืืื ืืืืขื ืืืื ืืขืจืืื. ืืคืจืงืืืงื ืงืื ืืืืื ืื ืืคืื ืงืฆืื ืืืคืขืืช ืขื ืืืืืงื ืกืคืฆืืคื ืืืชื ืืื ืืกืืืืื. ืื ืงืืื ืืืืช ืืงืื ืื ืื ื ืืืืขืื ืืืืืง ืื ืืืคืืกื ืืืคืชืืืช ื payload. ืงืื ืฉืืืคื ืืืงืจืื ืื ืงืืืืื ืื ืขืืืจ ืืืื ื ืื ืืืฆืืืืช ืฉื ืืืขืจืืช, ืืื ืจืง ืืืคืฉืจ ืืืงืจืื ืื ืืืืื ืืื ืืืชืจืกืง ืืืงืื ืืืจ.
ืืืขืื ืืื ืฉืื 3 ืืืืืืืืช ืขืฉืืืืช ืืืืจืืืช ื ืืื ืืช ืืื ืฉืื ืืืืจ ืืช ืืืื ืืืืืื, Best Practices ืื ืฉืคืช ืืชืื ืืช ืืจืืืื ืืืช. ืงืื ืืกืคืจ ืกืืคืืจ ืืืื ืฉืืกืืคืืจ ืื ืื ืืื ืืืชืจ ืื ืงื ืื ื ืืืชืจ ืืืจืืื ืืืชืืืง ืืช ืืืขืจืืช.1 419
ืื ืฆืจืื ืืฉืืื ืืืืื
ืืืืก ืงืื ืืื ืืืชื:
> Writing code by hand gave me the pace of thought I needed to understand a problem deeply. After a couple of years at a company, I knew the codebase by heart, every corner of it, every service, and every script.
> I find it difficult to say the same thing now.
ืืืืื ืืืชื ื ืืฉืืื ืืืืืชืจืช: "ืื ืฆืจืื ืืฉืืื ืืืืื"?
ืืฉ ืื ืฉืื ืฉืฆืจืืืื ืืืชืื. ืื ืืฉ ืื ืืืชืืื ืขืฆืื ืืฉืืขืชื ืืืื ืื ืฉืื ืืืืืฆืื ืฉืืฉืืื ืืืืืจ ืืืืื ืืฉืคื ืืืฉื ืืืฉื ืืืื ืืืชืื ืืืชื ืืืฉ ืขื ืืจืืืกืืืช.
ืืฉ ืื ืฉืื ืฉืืืื ืื ืืื ืืืชืจ ืืจื ืชืจืฉืืืื. ืื ืจืืฆืื ืืจืืืช ืืช ืืชืืื ื ืืืืืื, ืื ืงืฉืืจ ืืื, ืชืจืฉืืื UML, ืชืจืฉืืื ืืจืืืืงืืืจื, ืจืืืืขืื ืขื ืืื. ืจืืข, ืืื ืืจืืืืข ืืื ืืชืืืจ, ืืื ืงืืจื ืืฉืืจืืืืข ืืื ืืคืกืืง ืืืืื.
ืืฉ ืื ืฉืื ืฉืฆืจืืืื ืืจืืืช ืืฉืื ืืื ืคืขืืื ืืื ืืืืื ืืืชื. ืืืืจืชืืืช ืขืืฉื ืขืืืจื ืืช ืืงืกื ืืขืืืฃ ืืื ืคืขืืื ืืฆืืจืืช ืฉืื ืืช, ืืืฉื ืงืืื ืืจืืืช ืืืืืช ืงืื, ืืืจื ืื ืืืชืื ืืืช, ืืืจื ืื ืืฉืืืข ืคืืืงืกื ืฉืืกืืืจ ืขื ืืงืื ืืื ืืื ืืืืื ืืื ืืงืจืื ืืื ืืืืืื ืืื ืืืชืื ืืืืื ืืืจืช ืขื ืืืชื ืคืื ืงืฆืืืช.
ืืฉ ืืช ืืื ืฉืคืฉืื ืฆืจืืืื ืืื. ืื ืจืืืื ืืฉืื ืืื ืืืฉืืืื ืืืื ืืืื ืฉืขืืช ืื ืืืื ืืืจ ืื ืคืชืืื ืืืกืืืื ื ืืคื ืืื ืื ืืืืืื ืืืืืจ ืืืืกืืืจ ืื ืืช ืืืืจ ืืื ืื ืืืืืจ ืืืื ืืื ืืืืื ืขืื ืงืฆืช. ืฆ'ืืื'ืืคืืื ืืื ืจืขืืื ืืืืื ืืื ืฉืื ืืืื ืฉืืชื ืชืงืื ืืื ืคืชืืื ืืืจื ืืื ืฉืขืืช ืฉืืืืื ืืช ื AI ืฉืืื ืืื ืฉืื ืืชื ืชืงืื ืขื ืืฉืืื ืืืื. ืืืื ืจืฅ ืื ืืฉื ืจืื ืฉืื ืขืืฉืื ืืืจืื ืืืจืื.
ืืฉ ืืช ืื ืฉืืืืืื ืืฉืื ืืกืืืจืื ืืืืจืื. ืงื ืืืฆืื ืืจืฉืช ืืืืฆืืช ืืืืช ืืืจืฆืืช ืืื ืก ืื ืืคืชืื ืืืื ืืงืฆืืขื ืืื ืืืฉืชืคืจ ืื ืืืกืืืจ ืืืืจืื ืืืจืื ืืืชื ืืืืื ืืื ืืืชืจ ืืช ืืืืืจ.
ืืฉ ืื ืฉืื ืฉืืืืืื ืืจื ืขืฉืืื. ืื ืฆืจืืืื ืืืืจ ืฉืคื ืืื ืืืืืจ ืืืชื, ืื ืฆืจืืืื ืืืื ืงืื ืืืฉื ืืช ืืืชื. ืขืืืจื ืืฉืืื ืืืืืจ ืืขืจืืช ืืื ืืฉืื ืืืชืื ืื ืืืืงืืช, ืื ืื ืชืืืืง ืืช ืืืืืงืืช ืืกืืฃ ืื ืื ืืฉื ื. ืื ื ืืืฉื ืฉืื ืฉืื ืืื ืืืฆืืื ืืช ื TDD.
ืืจืื ืืื ืฉืื ืื ืจืื ืฆืจืืืื ืงืฆืช ืืื ืืืจ. ืฉืืืื ืฉื ืืฉืืืืช. ืื ืืกืช ื AI ืืขืืื ืืคืืชืื ืืฉื ื ืืช ืืืืคื ืื ืื ื ืขืืืืื ืืืื ืืื. ืื ืฉืื ืฉืืื ืจืืืืื ืืืืื ืืจื ืืืชืืื ืืืืื ืฉืื ืฉืืขืืจ ืงืจื ืืขืฆืื ืขืืฉืื ืืืจืฉ ืืฉืงืขื. ืืืจืื ืฉืืืืื ืืื ืฆืจืืืื ืืคืขืื ืืืจืช ืืื ืืืืื ืืช ืืงืื ืื ืจืืืื ืื ืืจืืืฉืื ืืช ืืืฆืืงื. "ืื ื ืืขืืื ืื ืืืื ืืชืื ืช Python ืืื ืื ืืชืืืชื ืืืืื ืคืืืชืื ืืืจื ืฉืืื AI" ืื ืคืื ืืืืชื ืฉื ืื ืฉืื ืฉืจืืืืื ืืืืื ืืืืืื ืืืจืื ืืฆืืจื ืืกืืืืช ืืืฆืืจื ืืืืช ืืืจ ืื ืงืืจืืช ืืขืฆืื.
ืืื ื ืืื ืื ืืื ืืก ืื ืืืคืฆืื. ืขืืื ื ืืืฆืื ืืช ืืืจืืื ืฉืื ื ืืืฆืืื ืืืืฉืชืคืจ, ืืืืืื ืืขืืื ืฉืื ืืืืจืื ืืืื ืื ืืงืจื ืืขืฆืื.
1 419
ืืื ืื ื ืขืืื ืขื git
ืืื ืืื ืืื ื ืืืื ืืืจืกืืืช ืืืจืืื ืืชืขืฉืืื ืืืื ืกืืคืจ ืืืืฉ. ืืืื ืืืืืฉืืช ืืคืฉืจ ืืืชืืื ืืืชื ืืื ืืจืืื ืืืื ืฉืืืช ืขืืืื ืฉืื ืืืจ ืืื, ืืื ืชืืฆืืช ืืืืื ืฉื ืืืืืช ืื ืืื ืฉืงื ืืืื ืืืชืืืื ืืืืืืจ ืฉืืืช ืขืืืื ืฉืื ืืชืืืื ืืื. ืืคืืกื ืืืื ืืฉืชืฃ ืฉื ื ืขืงืจืื ืืช ืื ืืื ืฉืขืืืจืื ืื ืืืืืื ืืื ืืขืืื ืขื ืืื ืืคืจืืืงื ืืืจืื ืืื ืืืืฉื ืืืชื ืืืกืคืจ ืกืืืืืฆืืืช.
ืขืงืจืื ืืช ืื ืืื
ืฉื ื ืืขืงืจืื ืืช ืืืืื ืืฉืืชืคืื ืืื ืคืจืืืงื ืงืื ืฉืขืืื ืขื ืืื:
1. ืืจืืข ืฉืฉืืืชื ืงืืืืืื ืืืืืจ ืืจืืืง ืงืฉื ืืืืฆืื ืืืชื
2. ืืื ืืื ืืืืจ ืืืืข
ืงืืืื ืืืื ืืื ืืื ืืืื ืฉื ืืจืงืช ืืชืื ืืืืจ ืงืฉื ืืืื ืืืืฆืื. ืืืฉืืง ืืจืืฉืื ืฉืื ื ืืื ืืืจืืง ืืื ืฉืคืืืช ืืื ืื ืืืืืืื ืืืืืืจ ืืืืจืืง ืืช ืืืื ืื ืืื ื ืืื ืืช. ืงืืืื ืืืื ืืช ืืฆื ืืคืจืืืงื ืืจืืข ื ืชืื. ืืจืืข ืฉืืืืคืื ืงืืืื ืขื ืืคืชื ืืืฉื ืืืื ืืงืืฆืื ืืืคืชื ืืื ืืืฉืืจ ืืจืืคื ืืขื, ืื ืื ืืงืืืื ืขืชืืื ื ืืืง ืืช ืืงืืืฅ. ืืจืืข ืฉืืืฉืื ืืงื ืงืืืื ืฉืื ืืืืฉืื ืืื ืืช ืขืืื ืงืื ืืืื ืงืฉื ืืืื ืืืื ืืช ืืงืืืื ืื ืืืชื ืงืื ืฉืคืืชื ืขื ืืกืืกื ืืืคืื ืืื ืจืืืื ืื.
ืืขืงืจืื ืืฉื ื ืืืืจ ืฉืืื ืืื ืืืืจ ืืืืข ืฉืืืืจ ืืขื ืืช ืื ืขื ืฉืืืืช ืืืื ืืงืื. ืืฉืื ื ืจืืื ืืืง ืืงืื ืฉืื ื ืื ืืืื ืื ืื ืืืื ืืช ืืืงืฉืจ ืื ืืืืคื ืืื ืืืืข ืื ื ืืืื ืืืื ืก ืืืื ืืืืืื ืืฉื ืืช ืื ืกืืคืืจ ืืจืงืข. ืืฉืืืืจ ืืืืืข ืื ืื ืืื ืื ืฉืื ืืฉืชืืฉืื ืื, ืืืืืื ืขื ืืงืื ืืืืืืื ืืงืื ืืืืืืช ืืืืืช ืืืชืจ. ืืืืจ ืืืืข ืฉืื ืื ืจืข ืืื ืืกืจ ืขืจื, ืืืฆืจ ืืืืื ืืืืจืื ืืืชื ื ืืชืงืฉืจ ืืืืฆืขืื ืืืจืื ืคืืืช ืืขืืืื.
ืืื ื ืงืืืื
ืงืืืื ืืืื ืืื ืขืืชืง ืืื ืฉื ืืคืจืืืงื ืื ืงืืื ืืกืืืืช ืืืื. ืืืกืชืืืืช ืขื ืืื ืืืืืจ ืืืืข ืงืืืื ืืืืฆื ืคืขืืื ืื ืฉืื ืื ืืฆื ืฉื ืืคืจืืืงื ืืืืืขืช ืืงืืืื ืฆืจืืื ืืืกืืืจ ืืช ืืฉืื ืื ืืื.
ืืื ืืืืืจ ืืืืข ืฆืจืื ืืืฆืื ืื ืืืกืืืจืื ืฉื ืืฉืื ืืืื ืืคืจืืืงื ืืืกืคืจ ืกืืคืืจ - ืื ืงืจื, ืื ืขืฉื, ืืื ืขืฉื, ืืื ืื ืืืคืื, ืืื ืืืคืื ืืืจ ืื, ืื ืืฉืื ืฉืืงืจื, ืื ืืืืช ืงืจื. ื ืืงื ืืืืืื ืืช ืืจืืคื ืฉื opencode ืื ืจืื ืืื ืงืืืืืื ืืืจืื ืื ืืฉื:
https://github.com/anomalyco/opencode/commits/dev/
ืงืืืื 0cc206a:
update: border radius on popover card
ืฉืื ืื ืืงืื ืืฉื ื ืืช ืขืจื border-radius ืืงืืืฅ ืฉื ืงืจื session-review.css. ืืืืืืขื ืื ื ืืืื ืฉืืขืจื ืืื ืืฉืืฉ ืืืฆืืช ืืจืืืก popover ืฉืื ืืื. ืืืืืขื ืื ืืกืืืจื ืืื ืืืืืื ืืฉื ืืช ืืช ืืขืจื, ืืื ืื ืืืง ืืฉืื ืื ืขืืฆืื ืืืื ืืืชืจ ืื ืืฉืื ื ืงืืืชื ืฉืขืื ืืืขืจื ืฉื ืืฉืชืืฉ ืื ืืืงืื ืืืจ. ืืงืืืื ืืกืคืจ ืื ืื ืขืฉื ืืื ืื ืืื ืขืฉื.
ืงืืืื c9215e8:
fix(ui): style review tab comment button to match file tab - blue background, white comment icon
ืืคืขื ืืืืืขื ืืกืคืจืช ืกืืคืืจ ืืืชืจ ืืื. ืืฉ ืคื ืชืืงืื ืฉื ืืืฉืง ืื ืขืงืื, ืืคืชืืจ comment ืืืื ื review ื ืจืื ืงืืื ืฉืื ื ืืืคืชืืจ commment ืืืื ื file. ืื ืืื ืืืืืจ ืืช ืืคืจืืืงื ืืืช ืืืืืื ืืฉืื ืื ืื ื ืืืื ืืืืคื ืื ืื ืืืื ืืืืืื ืืืฆืข ืืช ืืฉืื ืื. ืื ืืฉืื ืืืื ืขืฆืื ื CSS ืืืงืืืฅ ื tsx ืชืืืืื ืืช ืืืขืจื.
ืืฉื ื ืืงืืืืืื ืืฉืื ืืืื ืขืฆืื ืืงืื ืืืื ืืืืืงืื, ืืืืืจ ืขื 2-3 ืฉืืจืืช ืฉืืฉืชื ื.
ืืขืืืชื ืงืืืื c4d223e ืงืฆืช ืืืชืจ ืืืืื. ืืืืขืช ืืงืืืื ืืื:
perf(app): faster workspace creation
ืืชืืื ืืงืืืื ืืืื 329 ืฉืืจืืช ืฉื ืืกืคื ื 44 ืฉืืจืืช ืฉื ืืืงื. ืื ืื ื ืืืื ืืืงืฉ ื AI ืฉืืชืืฆืช ืื ืืช ืืฉืื ืื ืืคื ืืฉืื ืืืื ืืงืื ืืื ืื ื ืื ืืืื ืืืืืช ืืืื ืฉืืงืื ืชืฉืืื ืืืืืงืช. ืืืืชื ืฉืื ืืงืื ืืืืขื ืืจืืื ืืืชืจ ืฉืืกืืืจื ืื ืืืืืง ื ืขืฉื ืืื ืืฉืคืจ ืืช ืืืืจืืช ืืฆืืจืช ื workspace. ืื ืืืชื ืืืขืื ืืงืืืืช ืืืฆืืจืช ื workspace, ืืื ืคืชืจืชื ืืืชื ืืืื ืืฉ ืืฆืืื ืืื ืื ืืืคืืชื ืื ืืฉืื ืฉืืฉืืจืชื ืืขืชืื.
ืืืจ ื ืืกืฃ ืฉืื ื ืืืื ืืงืจืืืช ืืกื ืจืฉืืืช ืืงืืืืืื ืฉื opencode ืืื ืฉืคืฉืื ืืฉ ืฉื ืืืื ืงืืืืืื. ืืืืชื ืจืฆืฃ ืขืืืื ืกืคืจืชื ืืืขื 30 ืงืืืืืื, ืืืื ืชืืงืื ื UI ืฉืงืฉืืจืื ืืืืชื ื ืืฉื ืืืคืืืจืื ืขื ืคื ื 6-7 ืงืืืืืื ืฉืื ืื ืืืคืขืืื ืืืจืกืื ืืื ืืช ืืฉื ื. ืืืขืื ืืจืืืื ืงืืืืืื ืืกืื ืื ืืื ืฉืื ืืืืืขืืช ืืคืืฆืืืช ืืื ืืืื ืงืืืืืื ืืงืฉื ืืืืื ืืืื ืืืืขื ืฉืืืืช ืืืืื ืฉืื ืื ืงืื.
ื ืฉืืื ืืช ืื ืืขืฅ ืืงืืืืืื ืฉื ืงืืืงืก ืฉืืื ืืืจ ืืจืื ืืืชืจ ืืกืืืจ:
https://github.com/openai/codex/commits/main/
ืงืืืื 713ae22 ืืืืข ืขื ืืืืืขื ืืืื:
Another round of improvements for config error messages (#9746)
In a [recent PR](#9182), I made some
improvements to config error messages so errors didn't leave app server
clients in a dead state. This is a follow-on PR to make these error1 419
ืืืืืช ืงืื RAG ืืงืจืืช ืืืืืื ืจ ืืฉืืืข ืืื
ืืืื ืืืืฉื ืืืืจืื ืืืืจื ื ืืืืืื ืจ ืืฉืืืขื ืขื Embedding. ืจืืื ื ืืื ืืงืืช ืคืืกื ืืืืืื ืืืืคืื ืืืชื ืืืงืืืจ, ืืื ืืืฉื ืืจืืงืื ืืื ืืืงืืืจืื ืฉืืฆืื ื ืืจืืื ื ืฉืืฉืื ืื ื ืืืืฆืจืื ืืงืืืจืื ืืฉื ื ืคืืกืืื ืฉืืืืจืื ืขื ื ืืฉื ืืืื ืืืจืืง ืืื ืืื ืืืื ืงืฆืจ.
ืืื ืืฉืืืืฉืื ืืื ืื ืื ื Embedding ื ืงืจื RAG ืื Retrieval-augmented generation. ืืจืขืืื ืืื ืฉืืืจื ืฉืืฆืจื ื ืืงืืืจื Embedding ืืื ืืคืืกืืื ื ืืื ืืืฆืืจ ืืงืืืจ ืืื ืื ืืฉืืื ืฉื ืืฉืชืืฉ ืืื ื ืืกืืฃ ืืช ืืคืืกืืื ืืจืืืื ืืื ืืคืจืืืคื ืืฆืืจื ืืืืืืืืช.
ืืืื ื ืจืื ืืื ืื ืขืืื ืืขืืจืช ืคืจืืืงื ืืืืืื.
ืืชืงื ื ืืืคืขืื
ืืงืืฉืืจ:
https://github.com/ynonp/embedding-demo
ื ืืฆื ืืงืื ืฉื ืกืืื ืฆ'ืื ืืื ืืฉืืื RAG. ืืฉืืื ืืืจืืฅ ืืช ืืคืจืืืงื ืชืฆืืจืื ืืืจืื ืคืืกืืืจืก ืขื pgvector ืจืฆืื ืืืืงืจ ืขื ืืคืงืืื ืืืื:
$ docker run --rm -p 5454:5432 -e POSTGRES_PASSWORD=password pgvector/pgvector:pg18-trixie
ืชืฆืืจืื ืื ืืช ollama ืืืชืงื ืขื ืืืืฉื ืขื ืืืื ืืืืืืื ื nomic-embed-text-v2-moe:latest. ืืืืจ ืืื ืืคืฉืจ ืืืฆืืจ ืืช ืื ืชืื ืื ืืืกืืก ืื ืชืื ืื ืืืืืื ืขื ืืคืงืืืืช:
$ ./bin/rails db:migrate
$ ./bin/rails r script/scrape_data.rb
$ ./bin/rails r script/index_posts.rb
ืืืจื ืืคืขืืช ืฉืืืฉืช ืืคืงืืืืช ืชืงืืื ืืืกืืก ืื ืชืื ืื ืืืืช ืคืืกืืื ืขื 200 ืคืืกืืื ืืืจืื ืื ืืืืืื ืคื, ืืืื ืคืืกื ืืืื ืืงืืืจ Embedding ืฉืืชืืื ืื ืฉืืืฉื ืืืืฆืขืืช ืืืืื nomic-embed-text-v2-moe:latest.
ืืืฉืื ืืจืืง ืืคืจืืืคื
ื ืคืชื ืืช ืืงืืืฅ app/models/post.rb ืืฉื ื ืืฆื ืืช ืืคืื ืงืฆืื cosine_distance_from_prompt:
def cosine_distance_from_prompt(prompt, model: EMBED_MODEL)
return nil unless embedding.present?
# Calculate embedding for the prompt
embed = RubyLLM.embed(prompt, provider: :ollama, model:, dimensions: 768)
prompt_embedding = embed.vectors
# Calculate cosine distance using PostgreSQL's <=> operator
conn = self.class.connection.raw_connection
result = conn.exec_params(
"SELECT embedding <=> $1::vector AS distance FROM posts WHERE id = $2",
[prompt_embedding, id]
)
result.first['distance'].to_f
end
ืืืชืืื ืืงืืืช ืคืจืืืคื, ืืืฉืืช ืืงืืืจ ืืืืืื ื ืืื ื ืืืืืืจื ืืช ืืืจืืง ืืืคืจืืืคื ืืืืชื ืคืืกื. ืื ื ืืื ืืืืืืืช ืืคืขืื ืขื ืคืืกืืื ื ืืืจืื ืืืคืจืืืคื "ืกืื ืืช ืืืืื ื vs code":
3.3.5 :004 > Post.find_by(slug: '2026-01-vscode-tasks').cosine_distance_from_prompt("ืกืื ืืช ืืืืื ื vs code")
=> 0.6270134320979381
3.3.5 :005 > Post.find_by(slug: '2026-01-basic-knowledge').cosine_distance_from_prompt("ืกืื ืืช ืืืืื ื vs code")
=> 0.7205912733782678
3.3.5 :006 > Post.find_by(slug: '2026-01-learn-worktree-with-ai').cosine_distance_from_prompt("ืกืื ืืช ืืืืื ื vs code")
=> 0.658548735705814
3.3.5 :008 > Post.find_by(slug: '2026-01-aoc2025day8').cosine_distance_from_prompt("ืกืื ืืช ืืืืื ื vs code")
=> 0.6936170916427378
ืืืืืช ืืคืืกื ืขื tasks.json ืืื ืืื ืงืจืื ืืคืจืืืคื ืฉืื ืืืืื ื ืืื ืืืืืืื ืขืืืื ืื ืืืื ืืฉืืขืืชืืื. ืืฉ ืคื ืจืื ืฉืืืื ืืืื ืืืืืืื ื ืฉืืืจืชื ืื ืืกืคืืง ืืืืืง ืืชืืื ืฉื ืืืืื. ืขืื ื ืืืืจ ืืื ืื ื ืกื ืืช ืืืืืื ืขื ืืืื ืืืจ. ืืื ืชืืื ืืืื ื ืจืื ืื ืื ืืืืจ ืืฉืื ืคืืกืืื ืืกืืื.
ืืขืืจืช ืืืืข ื ืืกืฃ ืืกืืื
ืืกืืื ืืชืื ื Ruby ืืืฉืชืืฉ ืืกืคืจืืืช ruby_llm. ืืฉืืื ืืฉืืื ืฉืืื ื AI ืืกืคืจืื ืื ืื ืื ืฉืฆืจืื ืื ืงืจืืืช ืคืื ืงืฆืื ืืืช:
chat = Chat.create(model: "gpt-5-mini")
chat.ask "ืืื ืกืื ืืช ืืืืืื ื VS Code"
ืืคืขืืืื ืืช ืืคืจืืืงื ืขื ./bin/dev, ื ืื ืกืื ื localhost:3000/chats, ืืืืฆืื ืขื ืืืคืชืืจ ืืคืชืืืช ืฉืืื ืืืฉื ืืืงืืืืื ืืช ืืคืจืืืคื ืื ืืื ืืจืืืช ืืช ืืชืฉืืื ืืืกืืกืืช ืฉื ืืกืืื.
ืืคืื ืงืฆืื ืืืื ืืจืฉืืื ืขืืืื ืืืืื post ืืืจืืืช ืขื ืืืคืืฉ ืคืืกืืื ืฉืจืืืื ืืื ืืคืจืืืคื ืืกืืื:
def self.find_relevant_for_prompt(user_prompt, limit: 5)
# Calculate embedding for the prompt
embed = RubyLLM.embed(user_prompt, provider: :ollama, model: EMBED_MODEL)
prompt_embedding = embed.vectors
# Search database directly using vector search
conn = connection.raw_connection
conn.exec_params(
"SELECT *, embedding <=> $1::vector AS distance FROM posts ORDER BY embedding <=> $1::vector LIMIT $2",
[prompt_embedding, limit]
)
end1 419
ืืืื ืืืืชื: ืืื VS Code ืืชืขืงืฉ ืืฉืืื ืื ืคืขื ืื ืื ื ืกืืื ืขื ืืคืจืืืงื ืืื?
ืืื ืืืืืื ืฉืืืชืจ ืืขืืืฃ ืืืชื ื"ืืื ืืชื ืกืืื ืขื ืืคืจืืืงื ืืื" ืฉืืืคืืข ืื ืคืขื ืืคื ื ืฉืื ื ืคืืชื ืคืจืืืงื ื VS Code. ืืฆื ืืื ืืจืืจ ืฉืืกืืจ ืืคืชืื ืืืจืื ืืื ืื ืืืื ืฆืจืื ืืืืืง ืืคืจืืืงื ืืคื ื ืฉืคืืชืืื ืืืชื ื VS Code, ืืื ืื ืืืืจ ืฉืื ื ืกืืื ืขื ืืคืจืืืงื?
ืื ืื ื ืขืืืื ืื ืืืืข ืืขื ืืช ืขื ืื ืืฉืืืืช ืืื ืืคืืกื ืืืื ืื ื ืจืืฆื ืืืจืืืช ืืื ืืงื ืืืช ืฉื ืคืจืืืงืืื ืืืื ืืื ืืืฉืชืื ืื ื ืขื ืืืืฉืืื ืืืคืืื ืืื ืืช ืคืจืืืงื ืืืื ื ืืืืืื ืืืชื, ืืืืื ืืงื ืฉืื ื ืืืืจ ืขืืื ืืื ืืงืืืฅ tasks.json.
ืืฆืืจืช ืคืจืืืงื ืืืื ื
ืืงืืืฅ tasks.json ื ืืขื ืืื ืืืคืฉืจ ืืืคืชืืื ืืืจืืฅ ืืืจืื ืืฆืืจื ืงืื ืืชืื ืืขืืจื, ืืืฉื ืืืจืืฅ ืงืืืคืืืฆืื, ืืฉืืืช ืงืื ืืฉืจืช ืืจืืืง ืื ืืืืงื ืืืืืืืืช. ืืืื ื ื ืกื ืืช ืื, ืื ื ืืืฆืจ ืชืืงืืื ืืืฉื ืืคืืชื ืืืชื ื VS Code ืืื ืืืฆืจ ืชืืงืื ืืืฉื ืืฉื
.vscode ืืืชืืื ืงืืืฅ ืืืฉ ืืฉื tasks.json. ืืชืื ืืงืืืฅ ืื ื ืืืชื ืืช ืืงืื:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Ynon Run Tests",
"type": "shell",
"command": "echo Run Tests"
}
]
}
ืฉืืืจ ืืืืืฅ Ctrl+Shift+P ืืฉืืื ืืืื ืก ืืชืคืจืื ืืื ืืืืจ Tasks: Run Task. ืืืคืืข ืื ืืืืืื ืืืืืจืช ืืฉืืื ืืืืจื ืืื ื ืืืื ืืืืืจ ืืช ืืืฉืืื ืฉืื ืืฉื ืืืจืืืช ืืช ืืกืงืจืืคื ืฉืื ืจืฅ. ืขื ืคื ืืื ืงื.
ืื ืฉืืืคื ืืช ืืคืจืืืงื ืืืืื ื ืืื ืืคืชื runOptions ืฉื ื ืืชื ืืืืืืจ ืืชื ืืืฉืืื ืชืจืืฅ ืืืืืืืืช. ืืืื ื ื ืกื ืืช ืื ืขื ืขืื ืืื ืชืืกืคืืช ืื ืืชืื ืืงืืืฅ ืืช ืืชืืื ืืื:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Ynon Run Tests",
"type": "shell",
"command": "date >> tests.txt",
"problemMatcher": [],
"isBackground": true,
"presentation": {
"reveal": "never",
},
"runOptions": {
"runOn": "folderOpen"
}
}
]
}
ืืืืจืช problemMatcher ืจืืง ืืืืืช ืืช ืืืืืืื ืฉืฉืื ืืื ืืืฆืื ืฉืืืืืช, ืืืืจืช isBackground ืืืคืฉืจืช ืืืฉืืื ืืจืืฅ ืืจืงืข, ืืืืจืช reveal: never ืืื ืขืช ืืช ืืฆืืช ืืืกืืฃ ืขื ืคืื ืืืฉืืื ื runOn: folderOpen ืืืืจืช ืฉืืืฉืืื ืชืจืืฅ ืื ืคืขื ืฉืคืืชืืื ืงืืืฅ ืืชืื ืืชืืงืืื.
ืขืืฉืื ืืคืฉืจ ืืฆืืช ื VS Code ืืืืื ืก ืืืืฉ ืืืจืืืช ืฉืืคืงืืื ืืชืืฆืขื, ื ืืฆืจ ืงืืืฅ ืืืฉ ืืฉื tests.txt ืืื ืืชืืจืื ืืืื ืืืจืฆื. ืืคืงืืื ืชืืฉืื ืืจืืฅ ืฉืื ืืฉืื ืืจืงืข ืืฉื ืคืชื ืขืื ืงืืฆืื ืืคืจืืืงื.
ืื ืขืืฉืื
ืกืืจืื ืืชืช ืืืื ืืคืจืืืงืืื ืืื ืืก ืืชืื ืืืฆื ืืืืื ืืขืืืื. ืืืฆื ืืืืื ืื ื ืืชื ืืืจืืฅ ืืฉืืืืช ืืชืื tasks, ืื ื ืืชื ืืืื ืก ืืืฆื Debugging ืืืฉ ืืืืืืช ืืชืืกืคืื ืฉื VS Code ืฉืืคืขืื ืืฆืืจื ืืืืืืช.
ืืื ืืืืืืืช ืืืืจืื ืฉืื ืขืืืืื ืืืฆื ืืืืืื:
1. ืืฆืืช ืชืืื ืืช ืืืกืืฃ
2. ืืฆืืช ืืืกืืืจืื ืืืกืืฃ
3. ืชืืงืื ืืืืจ ืืคืงืืืืช ืืกืืฃ
4. ืฉืืืืฉ ื Skills ืืขืืืื ืขื AI
5. ืฉืืืืฉ ืืงืืฆื Agents.md ืืขืืืื ืขื AI
ืกื ืืื ืืคืฉืจ ืืืืื ืืขืจืื ืงืืฆืื ืืืฆื ืืืืื ืืื ืืขืืื ืขื ืคืจืืืงื ืืื ืืฉืจืืฆืื ืืขืืื ืืฆืืจื ืจืฆืื ืืช ืืืืืืื ืืฉืื ืขืืืื ืขื ืกืืื ื ืงืืืื ืื ืืื ืืืจืฆืื ืขื ืืืกืืฃ ืืืจืื ืืชืืืืื ืืืกืชืื. ืืคืฉืจ ืืจืืืช ืืืืืจืืช ืืช ืืจืฉืืื ืืืืื.
ืืฆื ืฉื ื ืขืืืื ืืืฆื "ืืืื ืืืื" ืคืืชืืช ืืืช ืืงืื ืืืื ื ืืจืืฅ ืืื ืืฉืืื ืขื ืืืืื ื.
ืืื ืืชื ืจืืืืื ืืขืืื? ืืคืฉืจ ืืืืื ืืืืื ืื ืืืืืจื.1 419
ืื ืฉืื ืื ืขื ืืืข ืืกืืกื ืืขืืืื ืขื ืืื AI ืืืื ืืืืืช ืืืื ืจืืืื ืื
ืืช ืืืฉืคื ืืื ืฉืืขืชื ืืืจืฆืื ืขื AI: "ืืืืืก ื'ืื ืืืจืื, ืื ืฉืื ืื ืขื ืืืข ืืกืืกื ืืขืืืื ืขื ืืื AI ืื ืจืืืื ืื".
ืื ืื ืืชื ืฉืืขืชื ืืืจืื ืืืืื ืืืงืฉื ืงืื ืืืืืจ. ืืขืืืื ืขื ื'ืื ืืืจืื ืืืขืื ืฉืื ื ืืื ืขืืืฃ ืฉืืืืฉ ืืืื AI:
1. ื'ืื ืืืจืื ื ืืชื ืื ื AI ืืืชืื ืงืื ืืฉืืืืื PR ืืื ืืืืื ืื ืืืฆืข.
2. ื'ืื ืืืจืื ืืืฉืืื ืฉืื ืืืื ืื ืืื ืืขืฆื ืงืจืื ืจืง ืืช ืื ืฉื AI ืืชื ืืื ืืืืชื ืืช ืื ืืื ืืชืืขืื ืืจืฉืื.
3. ื'ืื ืืืจืื ืื ืขืฆืจื ืืืคืฉ ืคืชืจืื ืืช ืืขืืืื ืืืชืจ ืืื ืืฉืื ืืื ืืกืคืจ ืืืคืฆืืืช.
4. ื'ืื ืืืจืื ืื ืจืื ืืช ืืขืืืช ืืืืืื ืฉืื ืืื ืืกื ืืืขืจืืช.
ืื ืืืื, ืืืืืืื ืืื ืฉ AI ืืืื ืก ืืืชืจ ืืขืืืง ืืืืจืืช, ืื ืื ื ืฆืจืืืื ืื ืฉืื ืฉืืืื ืื ืืช ืืืกืืืืช. ืื ืฉืื ืขื ืืฉืืื ืืืงืืจืชืืช, ืื ืฉืื ืฉืืืืขืื ืืงืืช ืืืจืืืช ืขื ืงืื ืืืจืืืืงืืืจื. ืื ืฉืื ืฉืืืืขืื ืืืฉืื ืขื ืืขืจืืช ืชืืื ื ืืืืืจ ืืช ืืืืงืื ืืฆืืจื ืืืื ื.
ืืืืื ืงืื ื ืืขืืื ืฉืืคืืจ ืืืฆืืขื ืืขืจืืช Full Stack - ืืจืื ืืืชืจ ืืฉืื ืืืืื ืืขืืืง ืื ืืืจื ืืืืืืืช ืืื ื Trade Offs ืืจืืืื ืืื ืืืฉืจ ืืืืื ืืื ืืืืจ ืืช ืืืืืืืืก ื MCP ืืื ืฉืงืืื ืืฉืคืจ ืืืฆืืขืื ืืืืืืื.
1 419
ืืืค ืืื: ืฉืื ืื ืืงืืื ืืื ืงืืืื ืขื ืงืืฆืื ืืืขืงื
ืืชื ืืืจ ืืืืจืื ืืช gitignore ืืืช
.git/info/exclude ืืืืืจืื ืืช ืืืขืื ืืืขืฆืื ืช ืืฉื ืืื: ืื ืื ืื ืืืชืขืืืืช ืืืคืฉืจ ืืืชืขืื ืืงืืฆืื ืงืืืืื ืขื ืืืืกืง ืฉืืื ื ืืจืืคื. ืืื ืืจืืข ืฉืงืืืฅ ื ืืฆื ืืจืืคื ืื ืืฉื ื ืืื ืคืขืืื ืชืืชืื ืืืชื ื gitignore ืืฉืื ืืืื ืื ืชืืื ืืืคืืขื ื status. ืงืืืฅ ืฉื ืืฆื ืืืขืงื ืขืืงืฃ ืืช ื gitignore.
ืื ืื ืขืืฉืื ืขื ืฉืื ืืืื ืืงืืืืื ืืงืืฆืื ืืืขืงื ืฉืื ืฆืจืืืื ืืืืื ืก ืืจืืคื? ืืืืืื ืฉืื ืื ืืงืืืฅ docker-compose ืฉืืฉื ื ืืช ืืืคืืื ืืคืืจืืื ืกืคืฆืืคืืช ืขื ืืืืฉื ืฉืืื.
ืืชืฉืืื ื ืงืจืืช skip worktree bit ืืืคืฉืจ ืืงืจืื ืขืืื ืืืฃ ืืชืืขืื man git-update-index. ืืงืฆืจื ืื ืืชื ืฉื ืฉืืจ ืืงืืืืช ืืฆืืื ืืืืืจ ืืืื ืืฉืืืจ ืขื ืืฉืื ืืืื ืืืงืืืืื ืฉืืื ืื ืขืื ืืคืฉืจ. ืื ืื ื ืืืืืงืื ืืืชื ืืงืืืฅ ืืกืืื ืขื:
git update-index --skip-worktree docker-compose.yml
ืืืืืืื ืขื:
git update-index --no-skip-worktree docker-compose.yml
ืืืืื? ืืื. ื ืืฆืืจ ืจืืคื ืขื ืฉื ื ืงืืฆืื:
$ git init .
$ date > a.txt
$ date > b.txt
$ git add .
$ git commit -m 'initial commit'
ืขืืฉืื ื ืฉื ื ืืช b.txt ืื ืจืื ืืกืืืืก ืืช ืืฉืื ืื:
$ date > b.txt
ynonp@ynons-MacBook-Air ~/tmp/blog/skipworktree (main*) $ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: b.txt
no changes added to commit (use "git add" and/or "git commit -a")
ื ืืืืง ืืช skip worktree bit:
$ git update-index --skip-worktree b.txt
ynonp@ynons-MacBook-Air ~/tmp/blog/skipworktree (main) $ git status
On branch main
nothing to commit, working tree clean
ืืขืืฉืื ืืฉืื ืื ืืืงืืื ืฉืื ืื ืืคืจืืข ืืขืืืื ืืฉืืืคืช. ื ืกืืื ืืืืืง ืืช ืืฉืื ืื ืืืงืืื ืฉืื ืขื restore ืื ืขืืื ืืืื ืืืืจ ืฉืืื ืื ืืืืจ ืืช ืืงืืืฅ:
$ git restore b.txt
error: pathspec 'b.txt' did not match any file(s) known to git
ื ls-files ืืขืืืช ืืืช ืืงืืืฅ ืื ืืืคืืข:
$ git ls-files
a.txt
b.txt
ืืื ื ืืกืืฃ -v ื ืืื ืืจืืืช ืฉืืื ืืืฆื S ืืืืืจ skip-worktree:
$ git ls-files -v
H a.txt
S b.txt
ืืฉืื ื ืืืฆืจ ืขื ืฃ ืืืฉ ืืงืืืฅ ืขืืืื ืฉืืืจ ืขื ืืฉืื ืื ืืืงืืื ืฉืื ืืื ืื ื ืื ืกื ืืฉื ืืช ืืืชื ืืืืื ืืก ืืืื ืื ื ืืงืื ืืืืขืช ืฉืืืื ื add.
ืืกืืืื ืืงืืืฅ ืืืขืฉื ืงืืื "ืืื ืช ืืื" - ืืื ืืขืฉื ืืื ืืื ืื ืืืจืืก ืืช ืืฉืื ืื ืืืงืืื ืฉืื ืืื ืืืคืฉืจ ืื ืืืื ืืก ืืช ืืฉืื ืื ืืืงืืื ืฉืื ืืจืืคื. ืคืืฆ'ืจ ืืืื ืฉืืืืฉื ืืฉืจืืฆืื ืืืื ืขื ืงืืฆืื ืขื ืฉืื ืืืื ืืงืืืืื, ืื ืขืื ืืชื ืืืืจืื ืฉืืืืงืชื ืืช ืืืื ืืื ืืชืืืืืื ืืฉืืื ืืืื ืขื ืืฉืื ืืืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
