ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+130 kunlar
Postlar arxiv
1 419
# ืฉืืืฉื ื ืืกืื ืฉืืชื ืืืืืื ืืื ืืช ืืื ืืืืขื ืืืื ื
ืืืจืืช ืฉืื ื ืื ืืืื ืืช ืืกืื ืื, ืื ืืคืฉืจ ืืืชืืืื ืขื ืืคืชืื ืืืฉื ืฉืืืืจ ืฉืขืืืฃ ืืืื ืื ืืื ืืืื ืืืฉืจ ืืชืช ืื ืื. ืืืืืื ืืช ืืืฉืื ืืืื ืืืคืฉืจืช ืืื ืืื ืืืืฉืื ืืืฉืชืืฉ ืื ืืื ืฉืืจืฆื.
ืืืืชื ืืืคื ืื ืื ื ืืืฉืืื ืขื ืืืืื ืืื ื ืืกืื ืืืื ืืกืฃ. ืืืกืฃ ืืืื ืฆืืจื ืืืืื ืืื ืืก ืืืื ืืขืืืจ ืื ื ืืืจืืืื ืขืื ืืขืื ืืกืฃ ืืืืจื ืืื. ืืืง ืืื ืืกืื ืฉื ืืขืืื ืืืืืจื ื ืื ืงืฉืื ืืืฉืื ืืืงืจืื: ื ืื"ื, ืชืืืจ ืืงืืื ืื ืืืชื ืืืง, ืืืื ืืืืื ืขืจื ืืฉืืขืืชื ืืืขืืื ืฉืืื ืืื ืืื ืืื ืืืจืฉ ืืฉืงืขื ืืฉืืขืืชืืช ืืืกืฃ ืืืืื ืืคื ื ืฉืืชืืืืื ืืจืืืช ืชืืฆืืืช.
ืืื ืืืื ืืจื ื ืืืืืืื ืืืืืจื ืืช ืืืฆืจืื ืื ืกืื ืืืฉ ืฉื ื ืืกืื, ื ืืกืื ืฉืืืจืฉืื ืืขื ืืืื ืืฉืงืขื ืืกืคืืช ืืฉืื ืืื ืืืื ืืื ืืช ืืืืจื ืืื ืืืืืช. ืื ื ืฉืืืฉ ืืืืืืืช ืื ืืกืื ืืืื ืฉืืืื ืื ืืืคืื ืืชืื ืืขืฉืืจืื ืืื ืืืืื ืืขืืจื ืืืืฆืจ ืืืื ืืืชืจ ื ืืืื:
## ืงืฉืจืื
ืืื ืืืืืืืื ืืืคืื ืฉืฉืืขืชื ืืืงืฉืจ ืืื ืืื Connection Economy ืฉืื ืืืกืืืจ ืฉืงืฉืจืื ืขื ืื ืฉืื ืืืจืื ืืคืื ืื ืืก ืืืืื ืืื ืืืจ. ืืขืืื ืืืื ืืจื ื ืื ืื ื ืืืืืื ืืืฆืืจ ืงืฉืจืื ืืงืฆืืขืืื ืืขืื ืืฉืืขืืช ืขื ืืืืช ืขืฆืืื ืฉื ืื ืฉืื, ืืืจืื ืคืขืืื ืืคืืื ืืื ืืคืืืฉ ืืืชื ืคื ืื ืื ืคื ืื. ืคื ืืืจืฅ ืืืฆื ืืคืืื ืืืชืจ ืืืฆืื ืื ืืืจืืงืื ืงืื ืื ืืืฉ ืืจืื ืงืืืืืช ืืืงืืช ืฉืืืืฆืจืืช ืืคืืฉืื ืคืืืืื ืืืืจืื.
ืจืื ืืื ืฉืื ืกืืืืื ืืืงืคืื ืื ืืืื ืืืื ืกืืฃ ืคืืจืกืืืืช ืืืืจ ื ืืืื ื ืืืืืื ืืจืขืฉ ืฉืืื. ืืขืืืช ืืืช ืจืืื ื ืฉืืืื ืืงืื ืืืืฆื ืืืืจ ืขื ืืืฆืจ ืฉืืื ืืื ืื ืขื ืืขื ืืงืฆืืข ืฉืขืืจ ืื. ืกืคืฆืืคืืช ืืขืืื ืืคืืชืื, ืื ืืืช ืคืจืืืงื-ืฆื ืขื ืขืื ืื ืฉืื, ืืคืืฉ ืืื ืก ืืืขืืจืช ืืจืฆืื, ืื ืืคืืื ืขืืจื ืืงืืืฆืช ืคืืืกืืืง ืืืืืื ืืขืืืจ ืืื ืฉืื ืืืืืจ ืืชืื ืืงืฆืืขืืช. ืืขืชืื ืืฉืื ืืฆืืจืื ืืขื ืืงืฆืืข ืื ืืืคืฉื ืืืืืก ืขืืื ืืชื ืชืงืคืฆื ืืจืืฉ ืืจืฉืืื.
ืืืจื ืืื ืืืื ืืคืชื ืงืฉืจืื ืืื ืคืฉืื ืืขืืืจ ืืงืฆืืขืืช ืืื ืฉืื ืืื ืืืืื ืืช ืฉืืฉ ืืื, ืืืืืฆืจ ืขืื ืืขืื ืืืืื ืืืืช ืืืื - ืื ืื ืืืืช ืืื ืกืื, ืืืฆืืจืฃ ืืคืืชืื ืฉื ืคืจืืืงื ืงืื ืคืชืื ืฉืงืจืื ืืืืื, ืืืงืื ืืขืจืืช ืืืชื ืืืืช ืฉืชืคืชืืจ ืืขืื ืืืจืืื ืฉืงืจืื ืืืืื, ืืขืืืจ ืืงืืืฆืืช ืคืืืกืืืง ืืืืืจื, ืืงืืฆืืจ ืืืคืฉ ืืจืืื ืืขืืืื ืืงืฆืืขืืช ืขื ืืขืืืื ืฉืื ืื ืืจืืืื ืฉื ืื ืฉืื.
## ืืืืื ืืช ืืื ืืช
ืขืืื ืืขืืืื ืืืคื ื ืืฉืชื ืืืงืฆืืขื ืืืชืจ ืืืืชืจ ืื ืฉื ื ืืืืจืืฉื ืืืคืชืืื ืืงืฆืืขืืื ืจืง ืืืื. ืืืืชื ืืื ืืื ืืกืคืืง ืื ืฉืื ืฉืืืื ืื ืืืฉืงืืข ืืกืคืืง ืืคืืชืื ืืืืืื ืืช ืืืงืฆืืขืืช ืฉืืื. ืื ื ืืฆืจ ืืฆื ืฉืืฆื ืืื ืืฉ ืืืื ื'ืื ืืืจืื ืฉืืืคืฉืื ืขืืืื ืืืืืืง ืืืฆื ืฉื ื ืืฉ ืืืื ืืฉืจืืช ืคื ืืืืช ืฉืืืจืืช ืื ืืฆืืืืืช ืืืืืฉ ืื "ืืื ืื ืฉืื ืืืืื".
ืืคืฉืจ ืืืืืื ืืช ืขืืืื ืืืืืืง ืืคืืื ืฆืืืืื ืืกืืืจืื ืืคืืจืืืื ืืืฉืจ ืืชืืชืืช ืืคืืจืืืื ืื ืื ื ืืืฆืืื ื'ืื ืืืจืื ืืื ืฉืื ืืื ื ืืกืืื ืืืื ืฉืขืืืื ืืจืืช ืืืืืื ืืช ืืฉ ืคืืืช ืื ืฉืื ืืชืืืืื.
ืืฉืงืขื ืืืืืื ืืช ืืืืฆืขืืช ืืืืื ืงืืจืก, ืืืฆืืข ืคืจืืืงื-ืฆื ืืืื ืืืืืื ืืืฉื, ืืฉืชืชืคืืช ืืคืจืืืงื ืงืื-ืคืชืื ืืจืืื ืืขืืื ืืชืืื ืฉืืื, ืืชืืงืืืช ืืขืืื ืชืืื ืกืคืฆืืคื ืืืืืจืืช ืขื ืื ืื ืฉืงืืจื ืื ืื ืืื ืืจื ืืืจืช ืชืขืืืจ ืืื ืืขืืืช ืฉืืืื ืืคืืจืืืื. ืืืืื ืืช ืืื ืืช ืืื ื ืืก, ืื ืืื ืชืืคืฉืจ ืืื ืชืืื ืืืฆืื ืขืืืื ืืชื ืืื ืฉืืชืืืืื ืืื.
## ืื ืืืช ืคืจืืืงื SaaS ืืืืืช
ื ืืก ืฉืืืฉื ืฉืืชื ืืืืืื ืืื ืืช ืืืืจื ืืื (ืืื ืืืขืชื ืืื ืืงืฉื ืืืืชืจ) ืืื ืืขืจืืช ืชืืื ื ืฉืื ืฉืื ืืืจืื ืืืื ืืืื ืื ืืฉืื ืขืืื. ืืชื ืื ืฆืจืืืื ืืืชืืจืืช ืืืืื ืื ืืคืืืกืืืง, ืืกืคืืง ืืืืืจ ื ืืฉื ืฉืืฃ ืืืจืช ืกืืืจื-ืืค ืื ืขื ืงืืช ืืื ืืืืืื ืื ืืชืขื ืืื ืช ืื, ืืคืชืืจ ืืื ืฉืื ืืขืื ืกืคืฆืืคืืช ืืืืฆืืข ืืืืจ ืืืจืงืืืื.
ืืกืคืจ Start Small Stay Small ืืฆืืข ืืกืืื ืืฉืืื ืืืื ืืื ื ืืคืืชืื ืคืจืืืงื Saas ืขืืืจ ืืชืื ืชืื ืฉืจืืฆืื ืืืฆืืื ืืืืืืช ืขืฆืื ืืื ื ืืืื ืืืืืฅ ืืงืจืื ืืืชื ืื ืื ืืฉืื ืฉืืืืจ ืืืืื.
ืืืชืจ Indie Hackers ืืคืฉืจ ืืืฆืื ืืื ืกืืฃ ืกืืคืืจืื ืขื ืคืจืืืงืืื ืงืื ืื ืฉืื ืืขื ืืื ืืืคืฉืจืื ืืืคืชืืื ืฉืืื ืืืืืช ืืืืื ืจืง ืืืืื ืกืืช ืืืืชื ืคืจืืืงื.
ื ืืก ืชืืื ื ืฉืืื ืืืื ืื ืคืืืช ืืื ืื ืืช ืคืืืืช, ืืื ืืื ืื ืฉืื ืืืขื ืื ืืืจืฉืช ืืฉืงืขื ืืกืคืืช ืืื ืื ืฉืื ืขืืืืื ืืืืืื ืืืฉืงืืข ืื ืืก ืืื ืืฉืขืืช ืืคื ืื.
ืืฉ ืืื ืจืขืืื ืืช ืื ืืกืื ื ืืกืคืื ืฉืื ืื ื ืืืืืื ืืคืชื ืืื ืืืืืช? ืืืืื ืื ืืืื ืืฉืชืฃ ืืชืืืืืช.
1 419
const newTreeData = await loadChildren(treeData, key, children);
setTreeData(newTreeData);
};
return (
<Tree loadData={onLoadData} treeData={treeData} />
);
}
## ืืืคื ืืืืื ืขืื
ืืขืฅ ืฉื antd ืืฉ ืขืื ืืืื ืืืืืืช ืืืคืฉืจ ืืงืจืื ืขืืืื ืขื ืืืืืืืช ืืืฃ ืืชืืขืื ืฉื ืืขืฅ ืืื:
https://ant.design/components/tree/
ืืืืืง ืืืืชืจ ืืขื ืืื ืืืฃ ืืื ืจืฉืืืช ืืงืืืคืื ื ืืืช ืืฆื ืฉืืื. ืคืฉืื ืชืืืฆื ืขื ืื ืงืืืคืื ื ืื ืืืจืฉืืื ืืื ืืจืืืช ืื ืืื ืขืืฉื ืืืื ืืืฉืชืืฉ ืื.1 419
# ืืฉืืงืื ืขื Antd - ืงืืืคืื ื ืืช ืขืฅ ืืกืื ืืจืื ืืช
ืกืคืจืืืช antd ืืื ืืืช ืืกืคืจืืืช ื UI ืืคืืคืืืจืืืช ืืจืืืงื ืืื ื ืืืืจื ืืืื ืืื. ื API ืืืื ืคืฉืื, ืืฉ ืืจืื ืงืืืคืื ื ืืืช ืฉื ืจืืืช ืืื ืืืคืฉืจ ืืืจืืื ืืืชื ืืืกืืช ืืงืืืช. ืื ื ืืืืื ืืงืืืคืื ื ืื ืฉื ืืขืฅ ืฉืืื ืืืฉืืืืฉ ืืกืื ืืจืื ื ืื ืืื ืืืืฆื ืืืืข ืฉื ืืขื ืืฉืจืช.
## ืื ืื ืื ื ืืื ืื
ืืืืืื ืฉื ืืืื ืชืฉืชืืฉ ืืงืืืคืื ื ืืช Tree ืฉื antd ืืื ืืืจืืืช ืขืฅ ืฉืืฆืื ืืช ืื ืืกืจืืื ืฉื ืืืืืช ืืืืืืื, ืืืฉืืืืฆืื ืขื ืกืจื ืืื ืืืขื ืืช ืฉืืืช ืื ืืืืืืืช ืืืืชื ืกืจื ืืืฆืื ืืืชื ืืชืืจ ืืืืื ืืขืฅ. ืืื ืื ื ืจืื ืืขืืื ืืงืืืกื ืืืืงืก:
<iframe src="https://codesandbox.io/embed/fervent-robinson-bse0b?fontsize=14&hidenavigation=1&module=%2Fsrc%2FApp.js&theme=light"
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
title="fervent-robinson-bse0b"
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"></iframe>
## ืืื ืื ืื ืขืฅ
ืืฉืืื ืืืฆืื ืขืฅ ืขื ืงืืืคืื ื ืืช ืขืฅ ืฉื antd ืื ืื ื ืฆืจืืืื ืืื ื ื ืชืื ืื ืฉืืืื ืืขืจื ืฉื ืืืืืงืืื, ืืืฉืจ ืืื ืืืืืงื ืืฉ ืืืคืืื key ืืืืืื, ืืืคืืื title ืืืคืฆืืื ืืื ืฉืืืื ืืช ืืืงืกื ืฉื ืืืืืืงื ืืืืคืืื children ืืืคืฆืืื ืืื ืฉืืืื ืืช ืื ืืืืืื. ืื ืืชื ืืืืขืื ืฉืื ืืืื ืืืืื ืืฆืืืช ืืกืืื ืืคืฉืจ ืืืืกืืฃ ืืืคืืื isLeaf ืขื ืืขืจื true. ืืืืืืงื ืืื ืืืืฆื ืขืฅ ืืืืืื:
[
{ key: 'a', title: 'A', children: [] },
{ key: 'b', title: 'B', children: [
{ key: 'bb', title: 'B-1', isLeaf: true },
{ key: 'bc', title: 'B-2', isLeaf: true },
}}
];
ืื ืืกืื ืฉืื ืจืฆืืชื ืืืจืืืช ืขืฅ ืฉื ืกืจืืื ืื ืฉืืจืื ืืืืฆืื ืืช ืืืืชืจ ืชืืื ืจืฉืืื ืฉื ืกืจืืื ืืืื ืกืจื ืืืืืื ืืืื ืืืืืืืช ืฉืืืคืืขืืช ืืืืชื ืกืจื. ืืฉืืื ืืื ืืช ืืช ืืขืฅ ืื ื ืืชืืื ืขื ืจืฉืืืช ืืกืจืืื ืฉื ืืฆืืช ืืงืืฉืืจ https://swapi.py4e.com/api/films/, ืืื ืืคืขืื ืืช ืืคืื ืงืฆืื ืืืื ืืื ืืืคืื ืืช ืืจืฉืืื ืืขืฅ:
function initTree(films) {
return films.map((film) => ({
key: `film-${film.episode_id}`,
title: film.title,
children: film.characters.map((url) => ({
key: url,
isLeaf: true,
})),
}));
}
## ืื ืงืืจื ืืฉืืฉืชืืฉ ืืืืฅ ืขื ืกืจื
ืขืืฉืื ืฉืืฉ ืื ื ืืช ืืจืื ืฉื ืืกืจืืื ืืคืฉืจ ืืืืฉืื ืืืจืืืช ืื ืงืืจื ืืฉืืฉืชืืฉ ืืืืฅ ืขื ืกืจื. ืืชืฉืืื ืืื ืฉืื ืื ื ืฆืจืืืื ืืืฆืืจ ืืช ืื ื ืชืื ื ืืขืฅ ืืืืฉ ืขื ืืขืฅ ืืืขืืืื. ืืขืืืื ืขื ืืื ื ื ืชืื ืื ืืืจืืืื ืฉืฆืจืืืื ืืืืฉืืจ ืืกืืืื ืื ื ืืืื ืืืฉืชืืฉ ืืกืคืจืื immer ืฉื ืืชื ืช ืื ืืืฉืช ืืืื ื ืื ืชืื ืื ืืื ืฉืืืืชื ืืืชื JavaScript ืจืืื ืืืืคืืช ืืช ืืงืื ืืืืฉื Immutable, ืืืืืจ ืืืืืจื ืืื ื ื ืชืื ืื ืืืฉ ืจืง ืขื ืืฉืื ืืืื ืฉืืืฆืขืชื. ืืขืืจืช immer ืืชืืชื ืืช ืฉืชื ืืคืื ืงืฆืืืช ืืืืืช ืฉืืืงืืืช ืขืฅ ืืืคืชื ืฉื ืกืจื ืืืืืืืช ืืช ืืืืืื ืฉื ืืกืจื ืื ืชืื ื ืืืืืืืช ืืืืืชืืืช ืืืืชื ืืกืจื:
async function loadCharacter(node) {
const res = await fetch(node.key);
const data = await res.json();
return { key: node.key, title: data.name, isLeaf: true };
}
async function loadChildren(treeData, filmKey, children) {
return produce(treeData, async (draft) => {
const node = draft.find((n) => n.key === filmKey);
node.children = await Promise.all(children.map(loadCharacter));
});
}
ืื ืขืืื ืื ืฉืืจื ื ืืืจ ืงืืื ื children ืฉื ืื ืกืจื ืจืฉืืื ืฉื ืืืืื ืฉืืืคืชื ืฉื ืื ืืื ืืื ืืืืืง ื URL ืฉื ืืืืืช. ืื ื ืืฉืชืืฉ ืืื ื Promise.all ืืื ืืืืืื ืืื ืฉืื ืืงืฉืืช ืืจืฉืช ืืืฉืืื ืืืงืืื ืืื ืืืช ืืืจื ืืฉื ืื.
ืืืืง ืืืืจืื ืฉื ืฉืืจ ืืงืื ืืื ืืงืืืคืื ื ืื ืขืฆืื ืฉืืืืืงื ืืช ืื ืืคืื ืงืฆืืืช ืฉืืชืื ื ืืืื ื ืจืืืช ืื:
import React, { useState, useEffect } from 'react';
import produce from "immer"
import { Tree } from 'antd';
import 'antd/dist/antd.css';
export default function Demo() {
const [treeData, setTreeData] = useState(initTreeData);
useEffect(() => {
async function flow() {
const res = await fetch('https://swapi.py4e.com/api/films/');
const data = await res.json();
setTreeData(initTree(data.results));
};
flow();
}, []);
const onLoadData = async ({ key, children }) => {1 419
npm ERR! this command with --force, or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! See /Users/ynonp/.npm/eresolve-report.txt for a full report. npm ERR! A complete log of this run can be found in: npm ERR! /Users/ynonp/.npm/_logs/2021-12-16T20_16_00_413Z-debug.logืจืืืื ืื ืืืขืื ืืื? ื ืืื ืฉ npm install ื ืืฉื, ืืื ืืื ืื ืืฆืืข ืฉื ื ืคืืชืจืื ืืช ืฉืืช ืฉื ืืื ืื ืฉืื ื ืืืื ืืืคืขืื ืืืขื ืืื ืืืฉืื. ืืืืืจ ืืืจื ืฉืืืฉืื ืฉืจืืฆื ืืืฉืชืืฉ ืืกืคืจืื ืฉืืื ืจืืื ืืืืขื ืืืืช ืืืื ืกืืื ืงื ืืจืืฉืื ืืื ืื ืกืืช ืืืคืขืื:
$ npm install --force
ืฉืืืืื ืขืืื ืขื Warnings, ืืืชืงืื ืืช ืืืจืกื 16.8.1 ืฉื ืจืืืงื ืืชืืงืืืช node_modules ืืจืืฉืืช ืืื ืืชืงืื ืืื ืืช ืืืจืกื 17:
$ npm ls react
myapp@1.0.0 /Users/ynonp/tmp/mynpm/myapp
โโโฌ mylib@1.0.2
โ โโโ react@16.8.1 deduped invalid: "^17.0.2" from node_modules/mylib
โโโ react@16.8.1 invalid: "^17.0.2" from node_modules/mylib
npm ERR! code ELSPROBLEMS
npm ERR! invalid: react@16.8.1 /Users/ynonp/tmp/mynpm/myapp/node_modules/react
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/ynonp/.npm/_logs/2021-12-16T20_18_56_638Z-debug.log
ืื ื ืืื ืื ืืคืฉืจ ืืืืจืื ืืืฉืื ืืืฉืชืืฉ ืืืืจืกื ืฉืื ืฉื ืกืคืจืื, ืืื ืื ืืฉ ืืืื ืืืืื ืืื ืืืืืช ืื ืืืฉืื ืืชืงืื ืืืจืกื ืฉืื ืืืืฆืช ืขืืื ืืืืื ืื ืืงืื ืื ืขืืื. ืื ื ืื ืฉืืฉืื ืืืืืจ:
1. ืืืืืจื ืืช ืืืืจืื ืฉืืชื ืจืืฆืื ืฉืืืจืื ืืชืงืื ื ืืชืืจ Peer Dependencies.
2. ืื ืงืื ืืงืื ืฉืืฉืชืืฉ ืืกืคืจืื ืื ืขืืื, ืืฉืชืืฉื ื npm ls ืืื ืืืืื ืฉืืชืืืืืช ืฉืจืฆืืชื ืืืืช ืืืชืงื ืืช ืืื ืฉืฆืจืื.
3. ืชืงื ื ืืช ืืชืืืืืช ืืื ืชืฉืชืืฉื ื --force, ืืคืืื ืฉืื ืขืืื.1 419
# ืืืื ืืืืชื: ืื ืืคืฉืจ ืืืืจืื ืืงืื ืืืชืงืื ืกืคืจืืืช Node.JS (ืืื ืืคืฉืจ ืืืชืงืจื ืืื)
ืืื ืฉืืืื ืื ืืืชืจ ืืื ืืื ืืืืืืื ืืืืจืื ืื ืืืื ืืืชื ืืงื ืืฉืื ืขื npm ืืืขืืงืจ ืขื ืืชืื ืชืื ืื ืื ื ืืืชื ืืื ืืื ืื ืืฉืืื ืืืชืงืืื ืืืื ืืืกืื ืืื ืคืืืืืืช ืืืืืช.
ืืกืืคืืจ ืืื ืคืฉืื - ืื ืืชื ืืืชืืื ืืืืืช Node.JS ืื ืืชื ืืืืืื ืืฆืืื 3 ืจืฉืืืืช ืฉื ืชืืืืืช ื package.json ืฉืืื:
1. ืจืฉืืืช dependencies ืืืืืจื ืจืฉืืื ืฉื ืกืคืจืืืช ืฉืืชื ืืืจืฉืื ืฉืืืงืื ืืชืงืื ืกืคืฆืืคืืช ืขืืืจืื ืืฉืืื ืืชืงืื ืืช ืืกืคืจืื ืฉืืื.
2. ืจืฉืืืช peerDependencies ืืืืืจื ืจืฉืืื ืฉื ืกืคืจืืืช ืฉืืชื ืืืจืฉืื ืฉ"ืืืื ืฉื" ืืฉืืงืื ืืชืงืื ืืช ืืกืคืจืื ืฉืืื, ืืืืืจ ืกืคืจืืืช ืฉืื ืืชื ืืฉืชืืฉืื ืืื ืืื ืงืื ืืืงืื ืืฉืชืืฉ ืืื.
3. ืจืฉืืืช devDependencies ืืืืืจื ืจืฉืืื ืฉื ืชืืืืืช ืฉืจืง ืืชื ืืชืงืื ืื ืืืฆื ืคืืชืื.
ืื ืขืืฉืื ืืืื ื ืืืืง ืื ืงืืจื ืืืืืื ืืฉืื ื ืืื ื ืกืคืจืื ืฉืืฉืชืืฉืช ืืจืืืงื 17 ืืฆืจืืื ืฉืืืงืื ืืชืงืื ืืช ืจืืืงื 17 ืืื ืืขืืื ืืืชื.
## ืฉืืืืฉ ื devDependencies
ืื ืื ื ืืืืืจ ืืช ืจืืืงื ืืชืืจ devDependency ืืืืฆืขืืช ืืืืืง ืืื ืืงืืืฅ package.json ืืกืคืจืื ืฉืื:
"devDependencies": {
"react": "^17.0.2"
}
ืื ืืฉืื ื ืืขืื ืืช ืืกืคืจืื ื npm ืืืืฉืื ืืืจ ืืคืขืื npm install ืขืืื, ืืืชื ืืืฉืื ืืืจ ืื ืืงืื ืืช react ืืืื. ืจืืืงื ืืืชื ืืฉืืืืฉ ืจืง ืืืื ืฉืคืืชืืชื ืืช ืืกืคืจืื ืืื ืืืื ืืฉืืืืฉ ืื.
## ืฉืืืืฉ ื dependencies
ืื ืื ื ืืืืืจ ืืช ืจืืืงื ืืชืืจ dependency ืืืืฆืขืืช ืืืืืง ืืื ืืงืืืฅ package.json ืืกืคืจืื ืฉืื:
"dependencies": {
"react": "^17.0.2"
}
ืื ืืืงืื ืฉืืชืงืื ืืช ืืกืคืจืื ืฉืื ืืงืื ืืชืืงืืืช node_modules ืฉืื ืืช ืืกืคืจืืืช ืืืืืช:
node_modules
โโโ js-tokens
โโโ loose-envify
โโโ mylib
โโโ object-assign
โโโ react
ืืื ืืืจ ื ืจืื ืืื! ืืืืืจ ืืืงืื ืงืืื ืื ืืช ืจืืืงื ืืื ืืช ืื ืืกืคืจืืืช ืฉืจืืืงื ืชืืืื ืืื. ืืื ืืืื ืืฆื ื ืืช ืืืชืืืืืช. ืื ืขืืื ืจืง ืืืื ืฉืืืงืื ืชืืื ืจืง ืืกืคืจืื ืฉืื. ืื ืืื ืืืกืืฃ ืชืืืช ืืกืคืจืื ืฉืฆืจืืื ืืืจืกื ืืฉื ื ืืืชืจ ืฉื ืจืืืงื, ืื ืืคืืื ืชืืืช ืกืคืฆืืคืืช ืืืืจืกื ืืฉื ื ืืืชืจ ืฉื ืจืืืงื ืืืืื ืืืืืื ืืืกืชืื.
ื ื ืื ืฉืงืื ืืืงืื ืฉืื ืืืื ืืช ืืืืืง ืืื ืืงืืืฅ package.json ืฉืื:
"dependencies": {
"mylib": "file:../mylib/mylib-1.0.1.tgz",
"react": "16.8.1"
}
ืื ืขืืฉืื ืืืคืขืื ืฉื npm install ืืื ืืงืื ืืชืืงืืืช node_modules ืืช:
node_modules
โโโ js-tokens
โโโ loose-envify
โโโ mylib
โโโ object-assign
โโโ prop-types
โโโ react
โโโ react-is
โโโ scheduler
ืฉืื ื ืจืื ืืืืื ืื ืืื ืื ืืื ืืชืงืื ืืช ืจืืืงื ืืื ืืืืช ืฉืืื ืืชืงืื ืฉืชื ืืืจืกืืืช ืฉื ืจืืืงื:
$ npm ls react
myapp@1.0.0 /Users/ynonp/tmp/mynpm/myapp
โโโฌ mylib@1.0.1
โ โโโ react@17.0.2
โโโ react@16.8.1
ืืืืืช ืืชืื ืชืืงืืืช node_modules/mylib ืื ื ืืืฆื ืชืืงืืืช node_modules ื ืืกืคืช ืฉืืชืืื ืืฉ ืืช ืจืืืงื ืืืืจืกื 17.0.2, ืืืชืืงืืืช node_modules ืืจืืฉืืช ืื ื ืืืฆื ืืช ืจืืืงื ืืืืจืกื 16.8.1.
ืืื ืืืืจืช dependencies ืื ืืืืช ืืืคืฉืจืช ืื "ืืืืจืื" ืืงืื ืืืชืงืื ืกืคืจืื ืืืืจืกื ืืกืืืืช. ืื ืกืคืจืื ืืืจืช ืฉืืื ืชืืื ืื, ืื ืืื ืขืฆืื, ืืืงืฉืื ืืืจืกื ืืืจืช ืื ืื ืชืงืื ืขืืืคืืช ืืืืืจืกื ืฉืื ื ืชืืื ืื ืชืืชืงื ืืฆืืจื ืคืจืืืช ื node_modules ืฉื ืืกืคืจืื ืฉืื.
## ืฉืืืืฉ ื peerDependencies
ืืืคืฆืืืช peerDependencies ืืืชื ืฆืจืืื ืืืืืช ืืจืืฉืื ื ืื ืืกืื ืื ืืคื ืืชืืขืื ืืื ืขืืฉื ืืืืืง ืืช ืื ืฉืื ืื ื ืืืคืฉืื. ืืื ืืืืืจื ืฉืื ื ืชืืื ืืกืคืจืื ืืืจืช ืืื ืชืืืช ืฆืืืืจืืช, ืืืืืจ ืฉืื ื ืืืจืฉ ืฉืืกืคืจืื ืืืืจืช ืชืืื ืืคืจืืืงื ืืืืจืกื ืฉืื ื ืจืืฆื.
ืืืืืช ืืืชื ืืืืช ืฉื peerDependencies ืืื ืืคืขื ืืืฉ ืืืฆืืืช. ืื ืืฉ ืื ื package.json ืฉื ืืกืคืจืื ืฉืื ืืช ืืืืืง ืืื:
"peerDependencies": {
"react": "^17.0.2"
}
ืืืืงืื ืฉืื ืืืืืง ืงืืืฅ package.json ืขื ืืืืง ืืื:
"dependencies": {
"mylib": "file:../mylib/mylib-1.0.1.tgz",
"react": "16.8.1"
}
ืื ืืฉืืื ืื ืกื ืืืชืงืื ืืื ืืงืื ืืช ืืืืืขื:
$ npm install
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: myapp@1.0.0
npm ERR! Found: react@16.8.1
npm ERR! node_modules/react
npm ERR! react@"16.8.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.2" from mylib@1.0.2
npm ERR! node_modules/mylib
npm ERR! mylib@"file:../mylib/mylib-1.0.2.tgz" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry1 419
next_child = next(child for child in doc if '/'+child["key"] == pos+'/'+path[0])
except StopIteration:
doc.append({ "type": "d", 'key': key, 'title': path[-1], 'children': [] })
next_child = doc[-1]
return add_node(next_child["children"], path[1:], key, pos+'/'+path[0])
doc = []
for root, dirs, files in os.walk('.'):
key = root[1:].split('/')[1:]
node = add_node(doc, key, '/'.join(key))
prefix = '/'.join(key) + '/' if len(key) > 0 else ''
node.extend([{ "type": "f", "title": f, "key": f"{prefix}{f}", "children": [] } for i, f in enumerate(files)])
print(json.dumps(doc))
ื ืชืืื ืืืืืง ืืฉื ื - ืืคืื ืงืฆืื os.walk:
1. ืืคืขืืืื ืืช os.walk ืืชืื for ืืื ืืจืืฅ ืขื ืื ืืงืืฆืื ืืืชืืงืืืช ืืฆืืจื ืจืงืืจืืืกืืช ืืขืฅ ืืชืืงืืืช.
2. ืื ืื ืืกื ืืืืฃ ืืืืืื ืืืืจืช ืฉื ืื ืกืชื ืืชืืงืื ืืืฉื. ืื ื ืืคืขืื ืืช ืืคืื ืงืฆืื add_node ืืื ืืืืกืืฃ ืฆืืืช ืืืฉ ืืขืฅ ืืืืืง ืืืงืื ืฉืืชืืื ืืืืชื ืชืืงืื. ืคืื ืงืฆืืืช add_node ืืืืืจื ืืช ืืขืจื ืืืืืื ืฉื ืืชืืงืื ืฉืืื ืืจืืข ืืืกืืคื.
3. ืืืจื ืื ืื ื ืืฉืชืืฉ ืืืฉืชื ื files ืฉืืืืจ ืืืืชื ืืืืจืืืจ ืืื ืืืืกืืฃ ืื ืืช ืื ืืงืืฆืื ืืืืื ืืืืฆืขืืชื ืืช ืืขืจื ืืืืืื.
ืืคืื ืงืฆืื add_node ืืืืืืช ืืฆืืจื ืจืงืืจืืืกืืช ื Dictionary ืืคื ืืืื ื ืฉื ืืืืื ืืงืืฆืื ืืืืกืืคื ืชืืงืื ืืืฉื ืืืงืื ืื ืืื. ืืื ืืฉืชืืฉืช ื key ืฉื ืื ืืืืืงื ืืื ืืืขืช ืืืืื ื ืชืืืื ืื ืืื ืืชืื ื Dictionary.1 419
# ืขืื ืืืืื ื os.walk ื Python
ืืคืื ืงืฆืื os.walk ืืกืคืงืช ืืจื ืงืื ืืขืืืจ ืขื ืื ืขืฅ ืืงืืฆืื ืืืชืืงืืืช ืืื ืื ืงืืืช ืืชืืื ืืกืืืืช. ืืืืืื ืืคืืกื ืืืื ืืฉืชืืฉ ืื ืืื ืืื ืืช ืืืืืงื JSON ืฉืืชืืื ืืขืฅ ืงืืฆืื ืืชืืงืืืช ืืคืืจืื ืืกืืื.
## ืื ืื ืื ื ืืื ืื
ื ืชืื ืขืฅ ืงืืฆืื ืืชืืงืืืช ืฉื ืจืื ืื:
.
โโโ a
โ โโโ b
โ โ โโโ 00
โ โ โ โโโ 11
โ โ โ โโโ 22
โ โ โ โโโ 33
โ โ โ โโโ 44
โ โ โโโ c
โ โ โ โโโ c1.txt
โ โ โ โโโ c2.txt
โ โ โ โโโ d
โ โ โโโ ff
โ โ โโโ gg
โ โโโ f1.txt
โ โโโ f2.txt
โโโ build_json.py
ืืื ื ืจืืฆื ืืืคืื ืืืชื ืืืืืืงื JSON ืฉื ืจืื ืื:
[
{
"type": "f",
"title": "build_json.py",
"key": "build_json.py",
"children": []
},
{
"type": "d",
"key": "a",
"title": "a",
"children": [
{
"type": "f",
"title": "f1.txt",
"key": "a/f1.txt",
"children": []
},
{
"type": "f",
"title": "f2.txt",
"key": "a/f2.txt",
"children": []
},
{
"type": "d",
"key": "a/b",
"title": "b",
"children": [
{
"type": "d",
"key": "a/b/00",
"title": "00",
"children": [
{
"type": "d",
"key": "a/b/00/11",
"title": "11",
"children": [
{
"type": "d",
"key": "a/b/00/11/33",
"title": "33",
"children": []
},
{
"type": "d",
"key": "a/b/00/11/44",
"title": "44",
"children": []
},
{
"type": "d",
"key": "a/b/00/11/22",
"title": "22",
"children": []
}
]
}
]
},
{
"type": "d",
"key": "a/b/ff",
"title": "ff",
"children": [
{
"type": "d",
"key": "a/b/ff/gg",
"title": "gg",
"children": []
}
]
},
{
"type": "d",
"key": "a/b/c",
"title": "c",
"children": [
{
"type": "f",
"title": "c1.txt",
"key": "a/b/c/c1.txt",
"children": []
},
{
"type": "f",
"title": "c2.txt",
"key": "a/b/c/c2.txt",
"children": []
},
{
"type": "d",
"key": "a/b/c/d",
"title": "d",
"children": []
}
]
}
]
}
]
}
]
ืืื ืฉืืชืืื ืืงืืืคืื ื ืื ืฉืืฆืืื ืขืฅ ืืฆืืจื ืืจืคืืช ืขื ืืืกื. ืืืื ื ืืืื ืืื:
1. ืืืืืืงื ืืจืืฉื ืืื ืืขืจื ืฉื ืืืืืงืืื
2. ืื ืืืืืงื ืืืขืจื ืืืื 4 ืฉืืืช: ืฉืื type ืฉืืืื ืืืืืช d ืื f ืืื ืืฆืืื ืื ืื ืชืืงืื ืื ืงืืืฅ; ืฉืื key ืฉืืืื ืืช ืื ืชืื ืืืื ืืืืจ (ืืืื ืืืืืื ืืื ืืขืฅ); ืฉืื title ืฉืืืื ืืช ืฉื ืืืืจ ืืฉืื ืืฉื children ืฉืืืื ืืขืจื ืฉื ืืืืืงืืื ืืืืชื ืืื ื ืืืืืง.
3. ืื ืืืืืืงื ืืื ืงืืืฅ ืื ืืขืจื ืืืืืื ืฉืื ืจืืง.
4. ืื ืืืืืืงื ืืื ืชืืงืื ืื ืืขืจื ืืืืืื ืฉืื ืืืืฆื ืืช ืืงืืฆืื ืืืชืืงืืืช ืฉื ืืฆืืื ืืชืื ืืชืืงืื.
ืืืืื ืื ืื ืกืืช ืืื ืืช ืืช ืืื ืื ืื ืืืืจื ืื ืืืืฉืื ืืงืื ืืืืืื ืฉืื.
## ืืชืืื ืืช
ืขื os.walk ืื ืื ื ืืืืืื ืืืชืื ืื ืชืืื ืืช ืฉืขืืืจืช ืขื ืขืฅ ืืงืืฆืื ืืฆืืจื ืคืฉืืื ืืืื ืืืืช ืืืืืื ืืืขืจ. ืืคืื ืงืฆืื ืืืืืจื ืืืืจืืืจ ืฉืืื ืืืืจืฆืื ืืืืจ ืชืืงืื ืืืจืช ืืืืืืจ ืืช ืจืฉืืืช ืืงืืฆืื ืืืชืืงืืืช ืืืืชื ืชืืงืื ืฉืืื ืืืจ. ืืืืืจืฆืื ืืื ืืคื ืืกืืจ ืืืืืชื ืฉื ืืงืืฆืื ืืืชืืงืืืช ืืืื ื ืื ืืืฉืชืืฉ ืื ืืื ืืื ืืช ืืช ืืืืืงื ื JSON.
ืื ืืื ืืคืืชืจืื ืฉืื:
import os, json
def add_node(doc, path, key, pos=''):
if len(path) == 0:
return doc
try:1 419
# ืืืืื ืืช ืฉื ืืืฉืื ืืืจืื ืืืชื ืืคืฉืจืืื
ืืฉ ืืืื ืฉืื ื ืืืื ืืจืืืช ืืืืจืืจ ืืช ืืืจื ืืคื ืืฉื, ืืคืืื ืื "ืฉื" ืื ืืงืื ืืืื ืจืืืง ืืืืคื ืฉืื ื ื ืืฆื. ืื ื ืืืื ืฉืื ืืื ืืฉ ื ืงืืืืช ืืืจื ืืืื ืฉืคืชืืื ืจืืืื ืืืื ืืืช ืกืืืจื ืฉื ืฆืขืืื ืฉืื ืจืง ืืฆืืื ืืื ืืืืข ืืืืจ ืืื ืฉื ืจืื ืืจืืข ืืืื ืจืืืง ืืืืชื ืืคืฉืจื.
ืืืฉ ืืืื ืฉืืื ืื ื ืื ืจืืื ืืช ืืืจื ืืืื. ืฉืืืืืจืืช ื ืขืืืช ืืืืจืืง ื ืจืื ืืืชื ื ืืชื ืืืืฉืืจ. ืืืืช ืฉืจืื ืืืืื ืื ืืืื - ืืืืื ืื ืืืจืื ืืกืืืืื ื ืจืืื ืืจืื ืคืขืืื ืืืชื ืืคืฉืจืืื.
ืืืจื ืืฆืืช ืืืคืจืืืงืก ืืฉืจืืฆืื ืืืฉืื ืืืจ ืืืชื ืืคืฉืจื ืืื ืงืืื ืื ืืืืื ืฉืืืืจ ืืื ืืื ืื ืืคืฉืจื - ืคืฉืื ืืกืืื. ืืืืฉืื ืืืจืื ืืกืืืืื ืื ืืจืื ืืืชืจ ืงื ืืืืฉืื ืืืจืื ืืืชื ืืคืฉืจืืื. ืืื ืื ืงื ืืืืื ืฉืืฉืื ืืื ืืคืฉืจื ืคืฉืื ืืกืืื, ืคืฉืื ืืกืชืืืื ืขื ืื ืฉืื ืืืจืื ืฉืืฆืืืื ืืืชื ืื ืขื ืืืืกืืืจืื ืฉืืื ืื ืืฆืืืชื ืืืจืื ืืืืื. ืื ื ืืืืข, ืื ืื ื ืจืืืืื ืืืฉืื ืฉืืฉืื ืืื ืืคืฉืจื ืจืง ืื ืื ืื ื ืจืืืื ืืช ืืืจื ืืืืื ืืืื ืืฉื. ืืื ืืืช ืคืจืืืืืืืื ืฉืื ืฉืื ืฉืืืืืื ืืื ืื ืืืืืื ืืกืืื ืขืืื.
ืืฆืขื ืืฉื ื ืืื ืืืืื ืฉืืืจื ืืืฉืื ืืืจืื ืืกืืืืื ืืื ืงืฉื, ืืจืืื ืืืกืืืืช (ื ื, ืืืจืช ืื ืืืื ื ืฆืจืืืื ืคืืกื ืขื ืื), ืืจืื ืืืื ืฉื ืืื ืื ืืืื ืืืืื ืฉื ืขืจืคื, ืืืืื ืืื ืื ืืคืฉืจ ืืืืืื ืืคืืื ืืช ืืืจื ืืืื ืืฉื. ืืืืื ืืื ืื ื ืจืื ืฉืืฉ ืงืฉืจ ืืื ืืืฉืืื ืฉืืชื ืขืืฉื ืขืืฉืื ืืืื ืืืืจ ืืืืชื ืืคืฉืจื ืฉืืชื ืจืืฆื ืืืฉืื.
ืืืจื ืืืืื ืืืืื ืืช ืืืฉื ืืื ืืื ื ืกืืขื ืขื ืืืืฉ ืืฉืื ืืขืจืคืืื. ืืคืฉืจ ืืจืืืช ืืื ืืืจืื ืงืืืื - ืืืช ืืืฉืืื ืืืืืืืืช ืื ืืืืืช ืฉืืชื ืขืืื ืขืืื - ืืื ืงืฉื ืืืื ืืจืืืช ืืื ืืืชื ืืฉืืื ืืืืื ืืกืืฃ ืืชืืืื ืืชืืฆืื ืืจืฆืืื. ืืืืื ืื ืื ืื ืงืฉื ืืืชืืื ืืืฉืืื ืื ืืืืืช, ืืืืืืื ืื ืืื ืืฉืขืืืช, ืงืฉื, ืืชืกืืืช, ืืืขืืกื ืื ืืืฆืจืช ืจืืฉืืช ืฉืืืืืื ืืืจืื ืืื ืกืื. ืืื ืืฉืืืืช ืงืฉืืช ื ืืืืช ืืขืฉืืช ืืช ืื.
ืืื ืืืืื ืืช ืฉื ืืืฉืื ืืืจืื ืืืชื ืืคืฉืจืืื ืืืืื ืืืกืชืื ืืฉืชื ื ืงืืืืช:
1. ืืฉืืฉ ืจืืข ืฉื ืืืืจืืช, ืื ืื ืืฉ ืืืจ ืฉืืืจ ืืชื ืชืืื ืืช ืฉืืชื ืืืืืื ืืงืืช - ืชืื ื ืืื ืชืืื ืืช ืขืืืื ืืกืืืจืช, ืืคืืจืืช ืืืชืืื. ืืื ืืืืืช ืืืืืช ืืชืืื ืื ืืืจืืฉ ืืื ืชืืืืง ืืื ืืืจ ืืืื.
2. ืืื ืฉืืจ ืืืื ืชืขืืื ืชืืื ืขื ืืืฉืืื ืืืื ืืชืืื ืืช ืขืืืื. ืืืชืจ ืืืืืืฃ ืชืืื ืืช ืขืืืื ืจืง ืืจืืข ืฉื ืืืืจืืช ืื ืื ืกืืืืชื ืืช ืื ืืืฉืืืืช ืฉืื.
ืฉืืขืืจ ืืืจื ืฉืืขืืจ, ืืฉืืื ืืืจื ืืฉืืื ืืฆืขื ืืืจื ืฆืขื ืื ืืืจื ืฉืื ื ืืืฉืื ืื ืืช ืืืืจืื ืฉื ืจืืื ืืืื ืืืชื ืืคืฉืจืืื.
1 419
1. ืคืื ืืื ืงืื ืืืื ืจ. ืื ืืคืืืช ืืชืงืืคื ืืงืจืืื ืืืื ืื ื ื ืื ืืืื ืืืฉืื ืขืืื ืืชืืจ ืงืื ืืืื ืจ. ืคืื ืื ืืฉืื ืฉืจืฅ ืขื ืฉืจืช ืืชืื ืืืื', ืืงืืืจื ืืืก ืืืืื ืฉืืืชื ืคืื ืืืฉืื ืืจืืฅ ืื ืขืื ืฆืจืื ืืืชื ืืื ืืื ืืชืจืกืง ืงืืืจื ืืก ืืจืื ืืื ืืืฉ ืืืงืืื.
2. ืืืคืืืืื ื ืื ืื ืฉืืืฆืจ ืืช ืืคืืืื, ืืืืืจ ืืืช ืืชืงื ื ืฉื ืชืืื ื. ืืจืืข ืฉืฉืืืชื Deployment ืืงืืืจื ืืืก ืืื (ืืื?) ืื ืกื ืืืฆืืจ ืงืื ืืืื ืจืื (ืคืืืื) ืืชืื ืืชืืืืจ ืฉืืืคืืข ื Deployment.
3. ืกืจืืืก ืืืช ืืืจื ืฉืื ื ืืืชืืืจ ืืคืื. ืชืืืจื ืฉืืงืืืจื ืืืก ืืฉ ืงืืืกืืจ ืฉืื ืฉื ืฉืจืชืื ืขืืื ืืื ืืืื ืืืจืืฅ ืืช ืืคืื ืฉืืื, ืืื ืื ืืฉืขืื ืื ืื ืื ืืื ืืฉืจืชืื ืืืื ืขืืืก ืงืืืจื ืืืก ืืืื ืืืืื ืืช ืืคืื ืืฉืจืช ืืฉืจืช. ืกืจืืืก ืื ืกืื ืฉื ืืืคืื ืคืืจืืื ืฉืืืืจ ืฉืืฉืืชืืืจืื ืืคืืจื ืืกืืื ื IP ืืฆืืืืจื ืฉื ืืงืืืกืืจ ืื ืงืืืจื ืืืก ืฆืจืื ืืืืจ ืืชืื ืืคืื ืืืชืืื, ืืืคื ืฉืืื ืื ืจืฅ ืืจืืข.
ืื ืืื ืืืฉืืืฉื ืืืื ืืืืืช ืืืืฆื ืขื ืืื ืงืืืฅ YAML ืฉืืชืืจ ืืช ืืืืคืืื ืื ืฉืื. ืจืืื ื ืืืจ ืงืืืฅ YAML ืขืืืจ Deployment, ืืื ืืชื ืกืงืจื ืื ืื ืื ื ืงืืืฅ YAML ืคืฉืื ืขืืืจ ืกืจืืืก:
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.25.0 (a70f80cc)
creationTimestamp: null
labels:
io.kompose.service: nginx
name: nginx
spec:
type: NodePort
ports:
- name: "80"
port: 80
targetPort: 80
selector:
io.kompose.service: nginx
status:
loadBalancer: {}
ืืงืืืฅ ืืชืืจ ืกืจืืืก ืฉืืชืืืจ ื Deployment ืฉื ื nginx ืฉืืฆืจื ื ืงืืื. ืืืคืชื ืืืืื ืืช ืืงืืืฅ ืืื ืืืืืง ืฉืืชืืื ืืืืื selector, ืฉืงืืืข ืืืืื ืชืืื ืืช ืืกืจืืืก ืืื ืฆืจืื ืืืืจ ืืืชื ื, ื port ืฉืงืืืข ืืืืื ืคืืจื ืฆืจืื ืืืชืืืจ ืฉื.
# ืงืืืจื ืืืก ืืืขื ื: ืืชืงื ื ืงืื ืืคืื
ืขื ืืคื ืจืืื ื ืฉืงืืืจื ืืืก ืืื (ืืื?) ืืขืจืืช ืืคืขืื ืืงืืืกืืจืื. ืจืืื ื ืฉืืชืคืงืื ืฉืื ืืื ืืืคืขืื ืชืืื ืืืช, ืืืืืจ ืืืื'ืื, ืืืืืฆืจ ืืื ืงืื ืืืื ืจืื ืืืืืื ืฉืืืชื ืงืื ืืืื ืจืื ืืืฉืืืื ืืจืืฅ ืืืงืืืื ืืช ืืฉืืื ืืฉืจืช ืฉืื ืฆืจืืืื.
ืืืื ื ืืกืฃ ืื ืื ืืืืืืช ืืขืจืืช ืืืคืขืื ืชืขืืืจ ืื ื ืืืืื ืืช ืงืืืจื ืืืก ืืื ืืืืฉื ืืืชืงื ื ืงืื ืืคืื. ืืขืจืืช ืืคืขืื ืืืืืจ ืืื ืืืืจืช ืืช ืืชืืื ืืืช ืฉืจืฆืืช ืขื ืืืืฉื ืขื ืืืืืจื ืฉื ืืืืฉื ืืืืฆืขืืช ืืจืืืืจืื. ืชืืื ืืช ืื ืืืชืืช ืืฉืืจืืช ืืืืกืง ืืื ืืชืืืื ืืขืจืืช ืืืคืขืื. ืชืืื ืืช ืื ืงืืจืืช ืืฉืืจืืช ืืืืงืืืช ืืื ืืชืืืื ืืขืจืืช ืืืคืขืื.
ืืืืชื ืืืืคื ืงืืืจื ืืืก ืืชืืื ืืช ืืืืฉื ืฉื ืืงืื ืืืื ืจืื ืืืฉืืืื ืืืฆืื ืืื ืฉื ืฉืืจืื ืืขื ื. ืืืืืื:
1. ืืขืจืืช ืืงืืฆืื ืฉื ืงืื ืืืื ืจ ืื ืฉืืจืืช ืืฉืืงืื ืืืื ืจ ื ืกืืจ. ืืชืืืื ืงืืืจื ืืืก ืืงืื ืืืื ืจ ืืืื ืืงืื Volume ืฉืื ืืงืื ืขื ืืืืกืง ืฉืืคืฉืจ ืืืชืื ืืืื ืืืืืืข ืืืฉืืจ ืื ืืฉืืงืื ืืืื ืจ ืืืกืืจ.
2. ืงืื ืืืื ืจ ืืืื ืืงืื ืืืืข ืกืืื ืืืืฆืขืืช ืื ืื ืื Secrets ืฉื ืงืืืจื ืืืก.
3. ืงืื ืืืื ืจ ืืืื ืืงืื ืืฉืชื ื ืกืืืื ืฉืืืขืืจืื ืืืื ืืชืื ืงืืืจื ืืืก.
ืงืืืกืืจืื ืฉืื ืื ืืืืืื ืืืืฉ ืืช ืืืชืงื ืื ืืืืฆืื ืืื ืืืจืืื ืฉืื ืืช: ืืืืืื ืงืืืกืืจ ืงืืืจื ืืืก ืฉืจืฅ ืขื ืขื ื ืฉื Azure ืืืื ืืืืจ Volume ืืืื ื ืืืกืื ืืขื ื ืฉื ืืืืจ, ืืงืืืกืืจ ืืืจ ืฉืจืฅ ืขื ืืืืื ืืืืจ ืืช ื Volume ืืืื ื ืืืกืื ืืขื ื ืฉื ืืืืื. ืืืืื ืช ืืชืืื ืืช ืฉืื ื ืฉืจืฆื ืืชืื ืืงืืืกืืจ ืืืืฉื ืืื ืืื ืืฉื ื ืืืงืจืื. ืื ืื ื ืืงืืืื Volume ืืงืืืจื ืืืก ืืืจืื ืขื ืืืคืื ืืืชื Volume ืืืชืงื ืืืืืกืื ืืืืฆืื ื.
## ืืื ืืืฉืืืื ืืืื
ืืื ืืืงืืื ืืืืช ืขืฉืชื ืืื ืืฉืง ืืืืฉืื ืืืืืื ืงืืืจื ืืืก ืชืฉืืื ืืฉืืืข ืฉืืฉ ืืื ืกืืฃ ืืืจืืืื ืืืืื ืืจืฉืช ืืืื ืืืื ืฉืืชื ื ืืื ืืชืจืื ืืฆืืจื ืืื ืืจืงืืืืืช. ืื ื ืืืืืฅ ืืืชืืื ืืืงืืฉืืจ ืืื:
https://kubernetes.io/docs/tutorials/kubernetes-basics/ ืฉืืืื ืกืืืจื ืฉื 6 ืืืืืจืืืืก ืืื ืืจืงืืืืืื ืืขืืืื ืขื ืงืืืจื ืืืก ืืืชืงื ืช ืืืฉืืืื ืืืืฆืขืืชื.
ืขืืื ืืชืืขืื ืืจืืฉื ืฉื ืงืืืจื ืืก ืืื ืื ืืงืื ืืืืื ืืฆืืื ืื ืืชื ืืืืืื ืืงืจืื ืืืืืืช ืฉื ืืงืกื (ื ื ืื ืชืืืื ืืฉ ืื ืชืืื ืืช). ืงืืฉืืจ:
https://kubernetes.io/docs/concepts/1 419
# ืืืฉืืื ืืกืืกืืื ืืงืืืจื ืืืก
ืฉืืขืชื ืขื ืงืืืจื ืืืก ืืื ืื ืืืืืื ืื ืื? ืจืืฆืื ืืืืื ืืื ืืืืขืื ืืคืืื ืืืคื ืืืชืืื? ืืคืืกื ืืื ืืฉืืืืื ืืื ื ืืงืืื ืฉืืฆืืื ืืขืฉืืช ืงืฆืช ืกืืจ ืืืืงืืื ืืก ืฉื ืงืจื ืงืืืจื ืืืก, ืืคืืืช ืืืชืืื ืฉืื.
## ืงืืืจื ืืืก ืืื ืืขืจืืช ืืคืขืื ืืงืืืกืืจืื
ืืชื ืืืืขืื ืืืจ ืฉืืืืฉืืื ืืฉ ืืขืจืืืช ืืคืขืื: ืืฉ Windows, Linux ื OS/X; ืืืืคืื ืื ืืฉ ืืช Android ื iOS ืืขืื ืืื ืืื ืืืฉืืจื IOT ืืจืื ืคืขืืื ืืืืขืื ืขื ืืืืืฉืื ืืขืจืืช ืืคืขืื ืืืืกืกืช ืืื ืืงืก.
ืื ืฉืื ืื ืื ืืื ืืืืืืืื ืืื ืืืืฉืื ืฉืืคืฉืจ ืืืืฆืจ ืืขืจืืช ืืคืขืื ืื ืืืฉืื ืฉืืื ืื ืืืฉื. ืืืฉืื ืืืื ืืืชืจ ืืืืฉื. ืืืงืจื ืฉืื ื ืืืืกืฃ ืฉื ืฉืจืชืื. ืืืกืฃ ืฉื ืฉืจืชืื ื ืงืจื Cluster ืืงืืืจื ืืืก ืืื (ืืื?) ืืขืจืืช ืืคืขืื ืืงืืืกืืจืื.
ืืขืจืืช ืืคืขืื ืจืืืื ืฉื ืืืฉื ืืืจืืืช ืขื ืืคืขืืช ืชืืื ืืืช ืื ืืืื ืืืืืงืช ืืฉืืื ืืืขืจืืช ืืชืืื ืืืช ืฉืจืฆืืช. ืืื ืื ืืืืืช ืฉืชืืื ืืืช ืื ืืืจืกื ืืืช ืืช ืืฉื ืื, ืืืกืคืงืช ืืชืืื ืืืช ืืืฉื ืงืื ืืืืืื ืืืชืงื ื ืืงืื ืคืื ืฉื ืืืืฉื. ืืืืืจ ืื ืืฉ ืื ืชืืื ืืช ืฉืืชืืื ืืืขืจืืช ืืคืขืื Windows, ืื ืื ืื ืืฉื ื ืื ืืืื ืกืื ืืงืืืช ืืืืืจืช ืืืืฉื ืื ืืคืืื ืื ืื ืืงืืืช ืืืืืืืช. ืืชืืื ืืช ืืงืืืช ืืช ืืงืื ืืืืฆืขืืช ืืชืืืื ืฉื ืืขืจืืช ืืืคืขืื ืืืืืื ืืขืืื ืืืืชื ืฆืืจื ืขื ืื ืืืงืืืืช.
ืืขืจืืช ืืคืขืื ืฉื ืงืืืกืืจ ืืืงืืช ืงืื ืกืคื ืืืื, ืืืืคืฉืจืช ืื ื ืืืชืื "ืชืืื ืืืช" ืฉืจืฆืืช ืขื ืืงืืืกืืจ. ืชืืื ืืช ืฉืจืฆื ืขื ืงืืืกืืจ ืชืืื ืืืจื ืืื ืกืื ืฉื ืกืจืืืก ืฉืืงืื ืืงืฉืืช ืืฉืืื ืชืฉืืืืช - ืืื Web Application ืื ืืกืืก ื ืชืื ืื. ืงืืืจื ืืืก ืชืคืขืื ืืช ืืืืฉืืืื ืืืื, ืชืืื ืืืืง ืืื ืืช ืืฉืืื ืืงืืืกืืจ - ืืืืืจ ืชืืืื ืื ืืจืืฅ ืขื ืืืื ืฉืจืช ืืืืื ืืืง ืืืฉืจืช ืืื ืืงืื - ืืชืืื ืืืฉืืืจ ืืืชื ืืืืื ืืืืคืขืื ืืืชื ืืืืฉ ืื ืืื ืืื ืืชืจืกืง.
ืืืื ืฉืชืืื ืืช ืจืืืื ืื ืฆืจืืื ืืืืืจ ืืช ืืืืืจื ืขืฆืื ืขืืื ืืื ืจืฆื, ืื ืืื ืชืืื ืขืืืืช ืืชืืืื ืืขืจืืช ืืืคืขืื, ืื ืชืืื ืืช ืฉืจืฆื ืืชืื ืงืืืจื ืืืก ืื ืืืืืช ืืืืืจ ืืช ืืฉืจืชืื ืขืฆืื ืขืืืื ืืื ืจืฆื, ืืืืืื ืืื ืื ืฉืื ืืชื ืืืื ืืฆืืจื ืืกืืืืช - ืืคื ืืืืฉืง ืฉืืชืืื ืืช ืืงืืืช ืืงืืืจื ืืืก, ืืืืืจ ืืืขืจืืช ืืืคืขืื.
## ืชืืื ืืืช ืื ืืืื'ืื, ืชืืืืืื ืื ืงืื ืืืื ืจืื
ืืื ืฉืืขืจืืช ืืคืขืื ืฉื ืืืฉืืื ืืืืขืช ืืงืืช ืงืืฆื ืืคืขืื - ืืืืืื ื Windows ืงืืฆื EXE - ืืืืคืขืื ืืืชื, ืืืืืจ ืืืฆืืจ ืืื ืชืืืืืื ืขื ืืืืฉื, ืื ืงืืืจื ืืืก ืืืืขืช ืืงืืช ืงืืฆื ืืคืขืื ืฉืื OCI Images ืืืืฆืืจ ืืื ืชืืืืืื ืฉืื Containers.
ืืืื' ืืื ืื ืื ืฉืืชื ืืืืจืื ืืขืืืื ืขื Docker ืื Podman. ืื ืืืืข ืืื ืืจื ืฉืืชืืจ ืืคืืืงืฆืื ืืกืืืืช ืืืช ืื ืืชืืืืืช ืฉื ืืืชื ืืคืืืงืฆืื. ืืืื'ืื ืืืืืกื ืื ื Registries ืืื ืืคื ื ืงืืืจื ืืืก ืืืขื ื ืืืคืขืื ืงืื ืืืื ืจ ืืชืื ืืืื' ืขื ืืืงืจ ืืืืืื ืืืืฆืขืืช ืืคืขืืช:
$ docker run hello-world
ืงืืืจื ืืืก ืืชืืจ ืืขืจืืช ืืคืขืื ืืืืข (ืืืืขืช?) ืืงืืช ืืืื'ืื ืืื ื hello-world ืฉืื ื ืืืืจืืฅ ืืืชื ืขื ืืงืืืกืืจ, ืืืืืจ ืืื ืืช ืืื ืงืื ืืืื ืจ ืืืชืช ืืืืช ืืืืื ืืช ืืงืืืกืืจ ืืืจืืฅ ืืช ืืงืื ืืืื ืจ ืืื. ืงืืืจื ืืืก ืื ืชืฉืื ืื ืื ืืงืื ืืืื ืจ ืืชืจืกืง ืืชืืข ืืืคืขืื ืงืื ืืืื ืจ ืืืฉ ืืืืชื ืืืื'.
ืืืขืจืืช ืืคืขืื ืจืืืื ืื ืื ื ืืฉืชืืฉืื ืืชืืื ืช Installer ืืื ืืืชืงืื ืืช ืืชืืื ืืืช ืฉืื ื. ืื ืื ื ืืืจ ืืืืจืื ืืืจืฉืช ืงืืืฅ ืืกืืืืช msi, ืืืจืืฅ ืืืชื ืืื ืืงืื ืชืืื ื ืืืืช ืื ืืืจืช ืืืื ื ืื ื ืขื ืืืืฉื. ืืงืืืจื ืืืก ืืืชืงื ื ืืชืืฆืขืช ืืืืฆืขืืช ืงืืฆื ืืงืกื ืืคืืจืื YAML ืฉืืชืืจืื ืืงืืืกืืจ ืื ืืืืื' ืฉืื ืื ื ืจืืฆืื ืืืชืงืื ืืื ืืจืืฉืืช ืืืขืจืืช ืฉืืื ืฆืจืื.
ืืืืืื ืืงืืืฅ ืืื ืืื YAML ืฉืืืืืจ Deployment (ืฉืื ืืชืงื ื) ืฉื ืืืื' ืฉื ืฉืจืช ืืืื nginx:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.25.0 (a70f80cc)
creationTimestamp: null
labels:
io.kompose.service: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: nginx
strategy: {}
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.25.0 (a70f80cc)
creationTimestamp: null
labels:
io.kompose.service: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
resources: {}
restartPolicy: Always
status: {}
## ืคืืืื, ืืืคืืืื ืืก ืืกืจืืืกืื
ืฉืืืฉื ืืืฉืืื ืฉืืืื ืืืืืจ ืืืจ ืืชืืืืช ืืขืืืื ืฉืืื ืขื ืงืืืจื ืืก ืื Pod, Deployment ื Service (ืืฉ ืขืื ืืจืื, ืืื ืืช ืฉืืืฉืช ืืื ื ืฆืืจื ืืืฉ ืืืฉื ืื ืืจืืฉืื ื):1 419
ืื ืืงืืฉืืจ ืืงืจืืื ืืืืชืจ ืื ืขืื ืืื ืืืื ืื ืืงืืฉืืจ
https://www.tocode.co.il/blog/2021-12-css-sticky-overflow
1 419
# ืืืื ืืืืชื: CSS Sticky ื overflow ืื ืืืืืื ืืื ืืื
ืืืคืืื CSS Sticky ืืื ืืืจื ืืื ืงืื ืืืื ืืืืืืจ ืฉืคืก ืขืืืื ืืืขืืื ืืืฉืื ืืืืืช ืืืชื ื ืืฉืื ืื ื ืืืืืื ืืืื, ืืืขืฆื "ืืืืืง" ืืจืืฉ ืืขืืื. ืืื ื ืื ืืืืืื ืืฉืืฉ ืืื ืืืื ืืืชื ืจืืฆืื ืฉืฉืืจืช ืืืืชืจืช ืชืืฉืื ืืืืืช ืืช ืืืืืฉ ืื ืื ืืื ืืืื ืืืื ืืช ืืฉืืจืืช ืขืฆืื. ืื ืฉืืืืื ื sticky ืื ืืืื ืืืืืจืช overflow: scroll ืขื ืืืืื ืื ืฉืื ืื ื ืื ืืืืฆืจืื ืฉื ื ืคืกื ืืืืื (ืืื ืืืฆืื ื ืืขืืื ืืืฉื ื ืคื ืืื ืืืืื) ืืื ืืฉืชืืฉ ืืืื ืืคืก ืืืืืื ืืจืืื ืืืืฆืื ื ืฉื ืืขืืื ืืืฉืฉืืจืช ืืืืชืจืช ืฉื ืืืืื ืืืืขื ืืืืง ืืขืืืื ืฉื ืืขืืื ืืื ืคืฉืื ื ืืืงืช ืืฉื.
ืืงืืฆืืจ ืืืกืคืชื ืืช ืืืืืจืืช ืืืชืืืืืช ื position: sticky ืืืืืง ืืื ืืชืืขืื ืืฆืคืืชื ืืืืื ืืฉืฉืื ืืืจ ืื ืขืื. ืื ื ืืงืื, ืชืืืื ื HTML ืืืืจืื ื CSS (ืืืืื ื ืืช ืื ืขื ืืืืช ืฉืืจืืช):
<div class="root">
<table>
<thead>
<tr>
<th>name</th>
<th>hair color</th>
<th>city</th>
<th>gender</th>
</tr>
</thead>
<tbody>
<tr>
<td>bob</td>
<td>blue</td>
<td>foo</td>
<td>agender</td>
</tr>
<tr>
<td>bob</td>
<td>blue</td>
<td>foo</td>
<td>agender</td>
</tr>
</tbody>
<table>
</div>
.root {
overflow: hidden;
}
thead th {
position: sticky;
top: 0;
background: #d2d2d2;
padding: 2px 5px 2px 0;
}
table {
border-collapse: collapse;
}
ืืืงืืืคื:
<iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/qBPqXNQ?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/ynonp/pen/qBPqXNQ">
Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
ืืงื ืืจืืืช ืฉืืืืื ืฉื ืืืกื ืื ืืืืช ืืฉืืืจื ืืช ืฉืืจืช ืืืืชืจืช "ืืืืงื" ืืจืืฉ ืืขืืื. ืื ืงืืจื ืคื?
ืืชืฉืืื ืืกืชืชืจืช ืืืฉืคื ืืื ืืชืื MDN:
> Note that a sticky element "sticks" to its nearest ancestor that has a "scrolling mechanism" (created when overflow is hidden, scroll, auto, or overlay)
ืื ืืขืืจืืช - ืืืื ืฉืืขื ืืืืื ืืฉ ืื div ืขื ืืืคืืื overflow: hidden, ืืืจืืช ืฉื div ืืื ืืื ืืืืืช ืืืื ืืืื ืื ืืืืฆืจ ืืืืื ืคื ืืืืช, ื sticky ืฉื ืืืืื ืืืื ืืืืง ืืืืก ืืืื ืืื ืืืืก ื body. ืืืืืื ืืืจืืช ืฉืืจืช ืืืืชืจืช ืฉื ืืืืื ืืื ื ืืืงืช ืืืืง ืืขืืืื, ืคืฉืื ืืืืง ืืขืืืื ืฉื ื div ืฉืขืืืฃ ืืืชื, ืืืื ืื ืืืขืื ืืืืฅ ืืืืง ืฉืื ืื ื ืจืืืื.
ืืคืืชืจืื? ืืื ืชืืื ืคืฉืื ืืฉืืืืขืื. ืื ืคืขื ืฉืจืืฆืื ืืืฉืชืืฉ ื position: sticky ืืฉ ืืืืื ืฉืืื ืืขืืืื ืืืื ื ืขื overflow. ืื ื ืืงืืืคื ืืืชืืงื:
<iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/gOGLxrO?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/ynonp/pen/gOGLxrO">
Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>1 419
# ืืชื ืืชืืืืื ืืืืคื ืืืฆืืื ืืื?
ืืื ืฉืชื ืฉืืืืช ืฉืื ืืช. ืื ืชื ืกื ืืืืจ ืืื ืืื.
ืืจืื ืคืขืืื ืื ืื ื ืืืฉืืื ืขื ืืฉืืื ืืืืืืืช ืืืืื ืื ืืื ืืฉืงืขื ืฆืจืื ืืฉืืื ืืืฆืข ืืืชื, ืืืืื ืื ืฉืืื ืื ื ืขืืฉืื ืืช ืืืฉืืืื ืืืืื ืืขืฉืืช ืืช ืื, ืืื ืืืืื ืืช ืืืชืืื. ื ืืื, ืื ื ืืืืจ ืืขืฆืื, ืื ื ืืืื ืืืฆืื ืฉืขื ืืฉืืืข ืืืืื CSS, ืืื ืื ื ืื ืืืืข ืฉืฉืขื ืืฉืืืข ืื ืชืกืคืืง ืืฉืืื ืืืืืข ืืืืฉื ืืฉืืขืืชื ืื ืขืืืฃ ืืืฉืงืืข ืืช ืืฉืขื ืืคื ืืื ืฉืื ืืฉืืืข ืืืฉืื ืืืจ.
ืืชืืฆืื ืฉื ืื ืืื ืืืื ืืื ืกืืคืืช ืฉื ืืืจืื ืฉืื ืื ื ืจืืฆืื ืืขืฉืืช ืื ืืฃ ืคืขื ืื ืืคืฉืจ ืืืฆืื ืขืฉืจ ืฉืขืืช ืืฉืืืข ืืืฉืงืืข ืืืืืื CSS.
ืื ืฉืืืคืืฃ ืืกืคืืง ืืืืจื ืืืืื ืคื ืืืื ืฉืืคื ื ืฉืืชืืชื ืื ืืื ืืชืืชื ืคืขืืืื ืืฉืืืข, ืืืคื ื ืื ืืชืืชื ืคืขื ืืฉืืืข. ืืืืืื ืืืชืืื ืืืชืื ืืืื ืื ืืืชื ืืชืืคืฉืจืช ืื ืืจืืฉ ืืืืชื ืืืฉื ืฉืฆืจืื ืืืชืื ืคืืกื ืื ืืื. ืืืืชื ื ืงืืื ืฉืจืง ืืชืืืชื, ืืชืืื ืื ืืื ื ืจืืชื ืื ืืื ืืฉืงืขื ืืืืจืคืช. ืคืขื ืืฉืืืข ืืื ืืฉืื ืืจืื ืืืชืจ ืกืืืจ.
ืืืขื ืฉืื ื ืืืื ื ืืฉืืื, ืืืืงืช ืืื ืื ืืืืืืืช ืืืฆืื ืืื ืืืืจืื ืืฉืชื ื ืขื ืืืื. ืืื ืฉืื ืื ื ืขืืืง ืืืชืจ ืืชืื ืคืจืืืงื ืื ืงื ืืืชืจ ืืืืฉืื ืืืืฆืื ืืืชืจ ืืื ืขืืืจื. ืืชืืื ืืืจืฉืช ืืจืื ืืืชืจ ืื ืจืืื ืืืืืฉื ืืฉืขื ืืชืืืืช ืืคืจืืืงื ืืื ืืจืื ืืืชืจ "ืงืฉื" ืืฉืขื ืืืืฆืข ืฉืื.
ืื ืืฉ ืืื ืืืื ืฉืขื ืืืื ืืืืื CSS ืื ืืืื. ืืื ืื ืืชื ืจืืฆืื ืืืขืช CSS ืืื ืืืชืจ ืืืฉ ืืื ืจืง ืฉืขื ืืฉืืืข ืืฉืืื ืื - ืื ืชืืื. ืืื ืฉืชืชืงืืื ืขื ืืืืืื ืชืจืื ืฉืฉืขื ืืฉืืืข ืืืคืืช ืืฉืขืชืืื, ืฉืขืชืืื ืืืจืืข ืืืกืืฃ ืืืืขืื ืืฉืขื ืืืื ืืงืืืช. ืืชืืืืื ืืืื. ืืช ืืืื ืืคืฉืจ ืืืฆืื ืืืืฉื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
