uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
+124 soatlar
-17 kunlar
-530 kunlar
Postlar arxiv
ToCode
1 419
ื˜ื™ืค SQL: ื”ื—ื‘ืจื™ื ืฉืœ ื‘ื•ื‘ ืื—ื“ ื”ื“ื‘ืจื™ื ืฉืœื ื ื›ื ืกื• ืœืงื•ืจืก SQL ื”ื—ื“ืฉ ืฉื›ืชื‘ืชื™ ื”ื™ื” ืฉืื™ืœืชื•ืช ืจืงื•ืจืกื™ื‘ื™ื•ืช. ื•ื›ืŸ ืžืื•ื“ ืจืฆื™ืชื™ ืœื”ืงืœื™ื˜ ืขืœื™ื”ืŸ ืฉื™ืขื•ืจ ืื‘ืœ ื”ืจื’ืฉืชื™ ืฉื–ื” ื™ื•ืชืจ ืžื“ื™ ื‘ืฉื‘ื™ืœ ืงื•ืจืก SQL ื‘ืกื™ืกื™, ืื– ื‘ื•ืื• ื ืจืื” ืื•ืชืŸ ื‘ืคื•ืกื˜ ื‘ืžืงื•ื. ื™ืฆื™ืจืช ื”ื ืชื•ื ื™ื ืื ื™ ืžืชื—ื™ืœ ืขื ื˜ื‘ืœื” ืฉืœ ืื ืฉื™ื, ื‘ืฉื‘ื™ืœ ื”ื“ื•ื’ืžื” ืžืกืคื™ืง ืจืง ืฉืžื•ืช ื•ืžื–ื”ื™ื:
create table people(id integer primary key, name string);

insert into people(id, name) values
(1, 'Brian'),
(2, 'Bob'),
(3, 'John'),
(4, 'Mike'),
(5, 'Frank'),
(6, 'Sarah'),
(7, 'Layla'));
ื•ืื– ืื ื™ ื™ื•ืฆืจ ื˜ื‘ืœืช ื—ื™ื‘ื•ืจ ืจืง ืฉื‘ืžืงื•ื ืœื—ื‘ืจ ื‘ื™ืŸ ื˜ื‘ืœืช people ืœื˜ื‘ืœื” ืื—ืจืช, ื˜ื‘ืœืช ื”ื—ื™ื‘ื•ืจ ืฉืœื™ ืžื—ื‘ืจืช ื‘ื™ืŸ people ืœื‘ื™ืŸ ืขืฆืžื” - ื›ืœื•ืžืจ ื–ื• ื˜ื‘ืœืช ื—ื‘ืจื™ื ืฉื›ืœ ืฉื•ืจื” ื‘ื” ืื•ืžืจืช ืฉืฉื ื™ ืื ืฉื™ื ื”ื ื—ื‘ืจื™ื ืื—ื“ ืฉืœ ื”ืฉื ื™:
create table friends(id integer primary key, person_1 integer, person_2 integer);

insert into friends(person_1, person_2) values
(3, 5),
(3, 7),
(6, 7),
(2, 4);
ืงืœ ืœืจืื•ืช ืฉื™ืฉ ืœื ื• ื‘ื ืชื•ื ื™ื ืฉืชื™ ืงื‘ื•ืฆื•ืช ื—ื‘ืจื™ื - ื‘ืงื‘ื•ืฆื” ืื—ืช ื™ืฉ ืืช ื’'ื•ืŸ, ืคืจื ืง, ืฉืจื” ื•ืœื™ื™ืœื” (ืžื–ื”ื™ื 3, 5, 6 ื•-7) ื•ื‘ืงื‘ื•ืฆื” ื”ืฉื ื™ื™ื” ืืช ื‘ื•ื‘ ื•ืžื™ื™ืง (ืžื–ื”ื™ื 2 ื•-4). ืขื›ืฉื™ื• ื‘ื•ืื• ื ืจืื” ืื™ืš ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื™ื›ื•ืœ ืœื–ื”ื•ืช ืืช ืฉืชื™ ื”ืงื‘ื•ืฆื•ืช ื”ืืœื”. ื—ื™ืคื•ืฉ ื—ื‘ืจื™ื ื‘ืฉื‘ื™ืœ ืœื—ืคืฉ ื—ื‘ืจื™ื ืื ื™ ืฆืจื™ืš ืœื”ืชื—ื™ืœ ืžืžื–ื”ื” ืฉืœ ื‘ืŸ ืื“ื ื•ืœื—ืคืฉ ืื™ืคื” ื”ื•ื ืžื•ืคื™ืข ื‘ื˜ื‘ืœืช ื”ื—ื‘ืจื™ื - ืื ื”ืžื–ื”ื” ื”ื–ื” ืžื•ืคื™ืข ื‘ืฉื“ื” person_1 ืื– ืื ื™ ืœื•ืงื— ืืช person_2 ื‘ืชื•ืจ ื—ื‘ืจ, ืื ื”ืžื–ื”ื” ืฉืœื™ ืžื•ืคื™ืข ื‘ืขืžื•ื“ื” person_2 ืื– ืขืžื•ื“ืช person_1 ื”ื™ื ืžื–ื”ื” ื”ื—ื‘ืจ ืฉืœื•. ื‘ื“ื•ื’ืžื” ืฉืœื ื• ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ื‘ื˜ื‘ืœืช ื”ื—ื‘ืจื™ื ืื•ืžืจืช ืฉ 3 ื”ื•ื ื—ื‘ืจ ืฉืœ 5, ื•ืœื›ืŸ ืื ืื ื™ ืžืชื—ื™ืœ ืœื—ืคืฉ ื—ื‘ืจื™ื ืฉืœ 3 ืื ื™ ืงื•ื“ื ื›ืœ ืžื•ืกื™ืฃ ืœื—ื‘ื•ืจื” ืืช 5. ืื—ืจื™ ื–ื” ื‘ืฉื•ืจื” ื”ืฉื ื™ื™ื” ืื ื™ ืžื•ืกื™ืฃ ืืช 7 ื•ื‘ืฉื•ืจื” ื”ืฉืœื™ืฉื™ืช ืื ื™ ืžื–ื”ื” ืฉ 7 ื•-6 ื—ื‘ืจื™ื, 7 ื›ื‘ืจ ื ืžืฆื ืืฆืœื™ ื‘ืื•ืกืฃ ื”ืชื•ืฆืื•ืช ื•ืœื›ืŸ ืื ื™ ืžื•ืกื™ืฃ ื’ื ืืช 6. ื”ืชืจื’ื•ื ืฉืœ ื–ื” ืœ SQL ื ืจืื” ื›ื›ื”:
WITH RECURSIVE nodes(x) AS (
   SELECT 3
   UNION
   SELECT friends.person_1 FROM friends JOIN nodes ON friends.person_2 = nodes.x
   UNION
   SELECT friends.person_2 FROM friends JOIN nodes ON friends.person_1 = nodes.x
)
SELECT nodes.x, people.name FROM nodes
inner join people
on people.id = nodes.x;
ื”ืคืงื•ื“ื” WITH RECURSIVE ืžื’ื“ื™ืจื” "ืœื•ืœืื”" ื‘ SQL, ื•ื‘ืกื•ื’ืจื™ื™ื ืื ื™ ื›ื•ืชื‘ ืžื–ื”ื” ืœืขืžื•ื“ื”. ื‘ืžืงืจื” ืฉืœื ื• ื”ืœื•ืœืื” ืื•ืกืคืช ืชื•ืฆืื•ืช ืจืง ื‘ืขืžื•ื“ื” ืื—ืช ื•ื”ืขืžื•ื“ื” ื ืงืจืืช x. ืื ื™ ืžืชื—ื™ืœ ืขื ื”ืขืจืš 3 ื•ืžืฉืชืžืฉ ื‘ UNION ื›ื“ื™ ืœื”ืžืฉื™ืš ืืช ื”ืœื•ืœืื”. ื” SELECT ื”ืจืืฉื•ืŸ ืžื—ืคืฉ ืฉื•ืจื•ืช ืฉืขืžื•ื“ืช ื” person_1 ืฉืœื”ืŸ ื ืžืฆืืช ื‘ืจืฉื™ืžืช ื”ืชื•ืฆืื•ืช ืฉืœื™, ื•ื” SELECT ื”ืฉื ื™ ืžื—ืคืฉ ืืช ื”ืฉื•ืจื•ืช ืฉืขืžื•ื“ืช ื” person_2 ื ืžืฆืืช ื‘ืจืฉื™ืžืช ื”ืชื•ืฆืื•ืช. ืœืžืขืฉื” ื›ืœ ืคืขื ืฉืื—ื“ ื” SELECT-ื™ื ืžื”ืฉืœื•ืฉื” ืžื—ื–ื™ืจ ืžืฉื”ื• ื—ื“ืฉ ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื™ืฉืชืžืฉ ื‘ืจืฉื™ืžืช ื”ืชื•ืฆืื•ืช ื”ื—ื“ืฉื” ืฉื ื•ืฆืจื” ื›ื“ื™ ืœื—ืคืฉ ืขื•ื“ ืชื•ืฆืื•ืช, ื•ื™ืžืฉื™ืš ื‘ื–ื” ืขื“ ืฉื›ื‘ืจ ืœื ื™ื”ื™ื• ืชื•ืฆืื•ืช ื—ื“ืฉื•ืช. ื‘ืฆื•ืจื” ื›ื–ืืช ื”ืฉืื™ืœืชื” ืžื—ื–ื™ืจื” ืืช ื”ื—ื‘ื•ืจื” ื”ืจืืฉื•ื ื” - ื–ื• ืฉื›ื•ืœืœืช ืืช ืคืจื ืง, ื’'ื•ืŸ, ืœื™ื™ืœื” ื•ืฉืจื”. ื•ืื™ืš ืžื•ืฆืื™ื ืืช ื”ื—ื‘ืจื™ื ืฉืœ ื‘ื•ื‘? ืืช ื–ื” ืืชืŸ ืœื›ื ืœื’ืœื•ืช ืœื‘ื“.

ToCode
1 419
ื—ื“ืฉ ื‘ืืชืจ: ืงื•ืจืก SQL ื‘ืกื™ืกื™ ื”ื™ ื—ื‘ืจื™ื. ืžื” ืœื ื”ื™ื™ืชื™ ืขื•ืฉื” ื‘ืฉื‘ื™ืœ ืœื ืœืœืžื•ื“ SQL ... ืœืžื“ืชื™ ืจื™ื™ืœืก ื•ืืช ื” ORM ืฉืœื”ื ื•ืฉื›ื ืขืชื™ ืืช ืขืฆืžื™ ืฉ ORM ื–ื” ื”ื“ื‘ืจ ื•ืžืžื™ืœื ืืฃ ืื—ื“ ื›ื‘ืจ ืœื ื›ื•ืชื‘ SQL; ืœืžื“ืชื™ ืœืขื‘ื•ื“ ืขื ืžื•ื ื’ื• ื•ืื– ืขื ืกื™ื™ืคืจ ื•ื’ืจืžืœื™ืŸ ื•ืืคื™ืœื• ื“ื˜ื”ืœื•ื’ ื•ืฉื›ื ืขืชื™ ืืช ืขืฆืžื™ ืฉ NoSQL ื–ื” ื”ื“ื‘ืจ ื•ืชื›ืฃ ืืฃ ืื—ื“ ืœื ื™ืฆื˜ืจืš ื™ื•ืชืจ SQL; ื•ืืคื™ืœื• ืฉืžื—ืชื™ ื›ืฉ ChatGPT ื”ืชื—ื™ืœ ืœื›ืชื•ื‘ ืฉืื™ืœืชื•ืช ื•ืจืื™ืชื™ ืื™ืš ืžืžืฉ ืชื•ืš ืจื’ืข ื ื•ื›ืœ ืœืงื‘ืœ ืฉืื™ืœืชื•ืช ืžื”ื™ืจื•ืช ื•ื˜ื•ื‘ื•ืช ื™ื•ืชืจ ืžืžื” ืฉืืคืฉืจ ืœื›ืชื•ื‘ ืœื‘ื“. ื•ื›ืžื• ืื™ื–ื” ื’ื™ืจื•ื“ ืžืฆื™ืง ืฉืžืกืจื‘ ืœื”ื™ืขืœื ื” SQL ืชืžื™ื“ ื—ื•ื–ืจ ื•ืžื–ื›ื™ืจ ืœืš ืฉื™ืฉ ื“ืจืš ืงืœื” ืœื”ื•ืฆื™ื ืžื™ื“ืข ืžื‘ืกื™ืกื™ ื ืชื•ื ื™ื. ืฉื‘ืขืฆื ื–ื• ืจืง ืขื•ื“ ืฉืคื” ืขื ื›ืœืœื™ ื”ื“ื™ืงื“ื•ืง ืฉืœื” ื•ื”ืขืงืจื•ื ื•ืช ืฉืœื” ื•ืฉืฉืœื™ื˜ื” ื‘ื” ื™ื›ื•ืœื” ืœืฉืคืจ ืžืฉืžืขื•ืชื™ืช ืืช ืื™ื›ื•ืช ื”ืงื•ื“ ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื - ื‘ื™ืŸ ืื ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ ORM, ื‘ื™ืŸ ืื ืื ื—ื ื• ื ืขื–ืจื™ื ื‘ ChatGPT ื•ืืคื™ืœื• ื›ืฉืื ื—ื ื• ืขื•ื‘ื“ื™ื ืขื ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ืฉืœื ืžืฉืชืžืฉื™ื ื‘ SQL. ื•ืขื ื”ื”ื‘ื ื” ื”ื–ืืช ื™ืฉื‘ืชื™ ืœื›ืชื•ื‘ ื•ืœื”ืงืœื™ื˜ ืงื•ืจืก SQL ืžื™ื•ื—ื“ ืœืžืชื—ื™ืœื™ื ื•ืžืชื—ื™ืœื•ืช ืฉืžืชืื™ื ื’ื ืœืื ืฉื™ื ื‘ืœื™ ืฉื•ื ืจืงืข ืงื•ื“ื ื‘ืชื›ื ื•ืช. ื‘ืงื•ืจืก ืชืœืžื“ื• ืžื”ืฆืขื“ ื”ืจืืฉื•ืŸ ืœืžื” ื—ืฉื•ื‘ ืœืฉืžื•ืจ ืืช ื”ืžื™ื“ืข ื‘ืฆื•ืจื” ืžืื•ืจื’ื ืช, ืžื”ื™ ื˜ื‘ืœื” ื•ืื™ืš ื”ื™ื ืขื•ื–ืจืช ืœืฉืžื•ืจ ืžื™ื“ืข ื•ื”ื›ื™ ื—ืฉื•ื‘ ืชืœืžื“ื• ืืช ื”ืชื—ื‘ื™ืจ ืฉืœ ืฉืคืช SQL ื•ืื™ืชื• ืชื“ื‘ืจื• ืขื ื”ื ืชื•ื ื™ื ืฉืœื›ื. ื•ื›ืŸ ืขืœ ื”ื“ืจืš ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ื”ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ื‘ืกื™ืกื™ ื”ื ืชื•ื ื™ื ื”ืฉื•ื ื™ื, ื•ืื™ืš SQL ืžืืคืฉืจืช ืืช ื”ืฉื•ื ื™. ื”ืงื•ืจืก ื”ื•ื ื”ืžืฉืš ื•ื”ืจื—ื‘ื” ืฉืœ ืกื™ื“ืจืช ืคื•ืกื˜ื™ื ืฉื›ืชื‘ืชื™ ื‘ื ื•ืฉื, ื•ืื ืื”ื‘ืชื ืืช ื”ืกื™ื“ืจื” ืื ื™ ื‘ื˜ื•ื— ืฉืชืื”ื‘ื• ื’ื ืืช ื”ืงื•ืจืก. ื”ืคืจืง ื”ืจืืฉื•ืŸ ื—ื•ืคืฉื™ ืœื”ืชืจืฉืžื•ืช, ื”ืžืฉืš ื”ืงื•ืจืก ื‘ืžืกื’ืจืช ืชื•ื›ื ื™ืช ื”ืžื ื•ื™ื™ื (ืจืง 117 ืฉ"ื— ืœื—ื•ื“ืฉ ืœื’ื™ืฉื” ื—ื•ืคืฉื™ืช ืœื›ืœ ืชื›ื ื™ ื”ืืชืจ). ืคืจื˜ื™ื ื•ื”ืจืฉืžื” ื‘ืงื™ืฉื•ืจ: https://www.tocode.co.il/bundles/sql

ToCode
1 419
ื™ื“ืข ืžื™ื ื™ืžืœื™ ื”ื›ืจื—ื™ ืชืžื™ื“ ื”ื™ื• ืื ืฉื™ื ืฉื”ื™ื• ื™ื•ืชืจ ื˜ื•ื‘ื™ื ื‘ื—ื™ืคื•ืฉ ื‘ื’ื•ื’ืœ ืžืื—ืจื™ื. ืชืžื™ื“ ืื ื™ื“ืขืช ืžื” ืœื—ืคืฉ ืงื™ื‘ืœืช ืชื•ืฆืื•ืช ื˜ื•ื‘ื•ืช ื™ื•ืชืจ ื•ืžื”ืจ ื™ื•ืชืจ. ืชืžื™ื“ ื”ื™ื• ืฉื˜ื•ื™ื•ืช ื‘ืื™ื ื˜ืจื ื˜ ื•ืื ืฉื™ื ืฉืœื ืžืกืคื™ืง ืžื‘ื™ื ื™ื ื”ืืžื™ื ื• ืœื”ืŸ. ื•ื‘ื›ืœ ื–ืืช ื”ืขื‘ื•ื“ื” ืขื AI ืจืง ืžื—ื“ื“ืช ืืช ื”ื—ืฉื™ื‘ื•ืช ืฉืœ ืื•ืชื• "ื™ื“ืข ืžื™ื ื™ืžืœื™". ื‘ื“ื™ื•ืง ื‘ื’ืœืœ ืฉื”ืฉื˜ื•ืช ื ืจืื™ืช ื‘ื“ื™ื•ืง ื›ืžื• ื”ื“ื‘ืจ ื”ื ื›ื•ืŸ, ื•ื‘ื“ื™ื•ืง ื‘ื’ืœืœ ืฉืœืคื—ื•ืช ื‘ืชื—ื•ื ืฉืœื ื• - ื”ืฉื˜ื•ืช ื”ืจื‘ื” ืคืขืžื™ื ืขื•ื‘ื“ืช. ื–ื” ืœื ืกืชื ืฉ AI ืžืฆืœื™ื— ืœื›ืชื•ื‘ ื“ื•ื’ืžืื•ืช ืงื•ื“ ืงื˜ื ื•ืช ืื‘ืœ ืœื ืžืฆืœื™ื— ืœืขืฉื•ืช ืขื‘ื•ื“ื” ืืžื™ืชื™ืช ืขืœ ืคืจื•ื™ืงื˜ ื’ื“ื•ืœ (ื•ื›ืŸ Cursor AI ืžืจืฉื™ื ื‘ื™ื•ืชืจ ื•ื‘ื“ื™ื•ืง ืžืžื—ื™ืฉ ืืช ื”ืคืขืจ ื‘ื™ืŸ ื”ืจืฆื•ื™ ืœืžืฆื•ื™). ืื ื—ื ื• ืœื ืฉื. ื•ืื AI ืœื ืžื‘ื™ืŸ (ืœื ื™ื›ื•ืœ ืœื”ื‘ื™ืŸ) ืืช ื”ื”ืฉืœื›ื•ืช ืฉืœ ื”ื“ื‘ืจื™ื ืฉื”ื•ื ื›ื•ืชื‘, ื•ืœื ื›ื•ืœืœ ืชืคื™ืกืช ืขื•ืžืง ืฉืœ ื”ื‘ืขื™ื”, ื”ืงื•ื ื˜ืงืกื˜ ื•ื›ืœ ื”ืื™ืœื•ืฆื™ื ืกื‘ื™ื‘ื”, ืื– ืžื™ืฉื”ื• ืื—ืจ (ืื ื—ื ื•) ื™ื”ื™ื” ื—ื™ื™ื‘ ืœื”ืฉืœื™ื ืืช ื”ื—ืกืจ. ื™ื“ืข ืžื™ื ื™ืžืœื™ ื”ื›ืจื—ื™ ื”ื•ื ื”ื™ื“ืข ื”ืžื™ื ื™ืžืœื™ ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืขืœ ืื•ื“ื•ืช ื ื•ืฉื ืžืกื•ื™ื ื›ื“ื™ ืœืชืคืขืœ ืžื ื•ืข AI ื•ืœื”ื’ื™ืข ืœืชื•ืฆืื•ืช ื˜ื•ื‘ื•ืช. ื“ื•ื’ืžื” ืคืฉื•ื˜ื” ื‘ืจื™ืืงื˜ ื”ื™ื ื”ืงื•ื“ ื”ื–ื” ืฉ Chat GPT ื”ืฆื™ืข ืœื™ ื›ื“ื™ ืœื”ืฆื™ื’ ืืช ื™ืžื•ืช ื”ืฉื‘ื•ืข ื•ืชื™ื‘ืช ื—ื™ืคื•ืฉ ืขืœ ื”ื ืชื•ื ื™ื:
import React, { useState } from 'react';

const WeekDaysList = () => {
  const daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
  const [searchTerm, setSearchTerm] = useState('');

  const handleSearchChange = (event) => {
    setSearchTerm(event.target.value);
  };

  const filteredDays = daysOfWeek.filter(day =>
    day.toLowerCase().includes(searchTerm.toLowerCase())
  );

  return (
    <div>
      <h2>Days of the Week</h2>
      <input
        type="text"
        placeholder="Search days..."
        value={searchTerm}
        onChange={handleSearchChange}
      />
      <ul>
        {filteredDays.map((day, index) => (
          <li key={index}>{day}</li>
        ))}
      </ul>
    </div>
  );
};

export default WeekDaysList;
ืื ืื ื™ ืœื ืืฉืืœ ืื•ืชื• ื‘ืžืคื•ืจืฉ ืขืœ ื” keys ื•ืขืœ ื”ื‘ืขื™ื•ืช ื‘ืฉื™ืžื•ืฉ ื‘ืื™ื ื“ืงืก ื‘ืชื•ืจ ืžืคืชื— ืฉื ื”ื•ื ืœื ื™ื—ืฉื•ื‘ ืœื”ืฆื™ืฃ ืืช ื–ื” - ืคืฉื•ื˜ ื‘ื’ืœืœ ืฉื”ื•ื ืœื ื—ื•ืฉื‘. ื–ื” ื‘ืกื“ืจ ื‘ืฉื‘ื™ืœ ืžื ื•ืข AI, ืื‘ืœ ืœื ื‘ืกื“ืจ ื‘ืฉื‘ื™ืœ ืงื•ื“ ืืžื™ืชื™. ื‘ื”ื™ื‘ื˜ ืฉืœ ื” HTML ืื ืื ื™ ืœื ื™ื•ื“ืข ืœื‘ืงืฉ ื˜ื™ืคื™ื ืขืœ ื ื’ื™ืฉื•ืช ื” AI ืœื ื™ื—ืฉื•ื‘ ืœื”ืฉืชืžืฉ ื‘ label ื‘ืฉื‘ื™ืœ ืœื”ืฆื™ื’ ืืช ื”ื›ื•ืชืจืช. ื‘ืžื™ื•ื—ื“ ืขื›ืฉื™ื• ืฉืืคืฉืจ ืœืงื‘ืœ ื›ืœ ื›ืš ื”ืจื‘ื” ืขื‘ื•ืจ ืคืจื•ืžืคื˜ ื”ืจื‘ื” ื™ื•ืชืจ ื—ืฉื•ื‘ ืœื“ืขืช ืžื” ืœื‘ืงืฉ.

ToCode
1 419
ื”ื—ื•ื›ืžื” ื”ื™ื ืœื“ืขืช ืžื” ืœืฉืื•ืœ ื›ืฉืื ืฉื™ื ืจื•ืื™ื ื‘ืคืขื ื”ืจืืฉื•ื ื” ืื™ืš ืœื”ืฉืชืžืฉ ื‘ fetch ื›ืœื•ืžืจ ืืช ื”ืงื•ื“ ื”ื–ื”:
const res = await fetch(url);
const data = await res.json();
ื—ืœืง ืงื˜ืŸ ืžื”ื ื™ืฉืืœ "ืœืžื” ืฆืจื™ืš await ืคืขืžื™ื™ื". ื—ืœืง ืžืืœื” ืฉืฉืืœื• ื™ืกืชืคืงื• ื‘ืชืฉื•ื‘ื” "ื›ื™ json ืžื—ื–ื™ืจ Promise", ื•ืื•ืœื™ ืืคื™ืœื• ื™ื’ืœื• ืฉืืคืฉืจ ืœื•ื•ืชืจ ืขืœ await ืื—ื“ ืื ื™ื›ืชื‘ื•:
const res = await fetch(url).then(r => r.json());
ืื‘ืœ ืจืง ืžืขื˜ื™ื ื™ืฉืืœื• ืืช ื”ืฉืืœื” ื”ื—ืฉื•ื‘ื” - ืœืžื” json ืฆืจื™ืš ืœื”ื—ื–ื™ืจ Promise, ืื JSON.parse ื”ื•ื ืกื™ื ื›ืจื•ื ื™? ืžืจื’ืข ืฉืฉืืœืชื ืืช ื”ืฉืืœื” ืžืื•ื“ ืงืœ ืœื’ืœื•ืช ืืช ื”ืชืฉื•ื‘ื”. ื”ื™ื ื’ื ื‘ืชื™ืขื•ื“ ื•ื’ื Chat GPT ื™ื•ื“ืข ืœืชืช ื”ืกื‘ืจ ื“ื™ ื˜ื•ื‘. ืื‘ืœ ืœื ื”ืชื™ืขื•ื“ ื•ืœื ChatGPT ื™ืขื–ืจื• ืื ืœื ื ืฉืืœ ืื•ืชื. ื›ืŸ ืืคื™ืœื• ืฉื”ื›ืœื™ื ื ื”ื™ื™ื ื™ื•ืชืจ ื—ื›ืžื™ื ื›ืœ ื™ื•ื, ื•ืื•ืœื™ ื‘ืžื™ื•ื—ื“ ืœืื•ืจ ืขื•ื‘ื“ื” ื–ื•, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ืžืฉื™ืš ื•ืœื”ื™ื•ืช ื™ื•ืชืจ ืกืงืจื ื™ื ื•ื™ื•ืชืจ ืžืงืฆื•ืขื™ื™ื ืžืžื” ืฉืื™ ืคืขื ื”ื™ื™ื ื•. ื .ื‘. ืงืจื“ื™ื˜ ืœื˜ื•ื ื‘ืื™ื ื˜ืจื ื˜ ืขืœ ื”ื”ืฉืจืื”.

ToCode
1 419
ื’'ืืกื˜ ื“ื• ืื™ื˜ - ื”ืจืฆืช ืกืงืจื™ืคื˜ื™ื ืขื just ื‘ืžืงื•ื npm ื’'ืืกื˜ ื”ื•ื ื›ืœื™ ืœื”ืจืฆืช ืžืฉื™ืžื•ืช ืœืคืจื•ื™ืงื˜. ื”ื•ื ืขื•ื‘ื“ ืขื ื›ืœ ืฉืคื” ื•ื™ืฉ ืœื• ืชื—ื‘ื™ืจ ืฉืงืฆืช ื“ื•ืžื” ืœ make, ืจืง ืฉื‘ืขื•ื“ ืฉ make ื ื•ืขื“ ืกืคืฆื™ืคื™ืช ืœื‘ื ื•ืช ืžื•ื“ื•ืœื™ื ืœืคืจื•ื™ืงื˜, ื’'ืืกื˜ ื”ื•ื ื™ื•ืชืจ ื›ืœืœื™ ื‘ืžื˜ืจื” ืฉืœื• ื•ืžื›ื•ื•ืŸ ืœื”ืจืฆืช ืžืฉื™ืžื•ืช ื•ื ื™ื”ื•ืœ ื”ืชืœื•ื™ื•ืช ื‘ื™ื ื™ื”ืŸ. ื‘ื•ืื• ื ืจืื” ื“ื•ื’ืžื” ืงืฆืจื” ืื™ืš just ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื ื• ื‘ืคืจื•ื™ืงื˜ node ื›ืฉ npm ืžืชื—ื™ืœ ืœื”ืกืชื‘ืš. ื ื ื™ื— ืฉื™ืฉ ืœื™ ืงื•ื‘ืฅ package.json ื›ื–ื”:
{
  "name": "demo-project",
  "version": "1.0.0",
  "description": "A simple demo project",
  "main": "index.js",
  "scripts": {
    "start": "npm run build && NODE_ENV=production node index.js",
    "build": "echo building the app",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express": "^4.18.2"
  },
  "devDependencies": {
    "nodemon": "^2.0.22",
    "babel-cli": "^6.26.0"
  }
}
ืฉื™ืžื• ืœื‘ ืœื‘ืœื•ืง ื”ืกืงืจื™ืคื˜ื™ื ื•ื‘ืžื™ื•ื—ื“ ืœืกืงืจื™ืคื˜ start:
"start": "npm run build && NODE_ENV=production node index.js",
ื”ืกืงืจื™ืคื˜ ืžืจื™ืฅ ืฉื ื™ ื“ื‘ืจื™ื, ืงื•ื“ื ืืช build ื•ืื—ืจื™ ื–ื” ืžืคืขื™ืœ ืืช ื”ืชื•ื›ื ื™ืช. ื”ื•ื ื™ืคืขื™ืœ ืืช ื”ืชื•ื›ื ื™ืช ืจืง ืื build ื”ืฆืœื™ื— ื•ื‘ื”ืคืขืœืช ื”ืชื•ื›ื ื™ืช ื”ื•ื ื™ื’ื“ื™ืจ ืžืฉืชื ื” ืกื‘ื™ื‘ื” ื‘ืฉื NODE_ENV. ื–ื” ืกืงืจื™ืคื˜ ืฉื ื•ืขื“ ืœื”ืคืขืœื” ืจืง ืขืœ ืžืขืจื›ื•ืช ื™ื•ื ื™ืงืก ื•ืื™ืŸ ื‘ื• ื‘ืืžืช ื ื™ื”ื•ืœ ืชืœื•ื™ื•ืช ืœืžืจื•ืช ืฉื–ื” ืงืฆืช ื ืจืื” ื›ืžื•. ื ื“ืžื™ื™ืŸ ืฉืžื™ืฉื”ื• ื™ื•ืกื™ืฃ ืขื•ื“ ืกืงืจื™ืคื˜ ืœืงื•ื‘ืฅ:
publish: "npm run build && npm run start"
ืื– ื‘ืžืฆื‘ ื›ื–ื” ื” build ื™ืจื•ืฅ ืคืขืžื™ื™ื, ื›ื™ publish ื™ืงืจื ืœื• ื•ืื– start ื’ื ื™ืคืขื™ืœ ืื•ืชื•. ื›ืฉื” npm ืžืชื—ื™ืœ ืœื”ืกืชื‘ืš, just ื™ื›ื•ืœ ืœื”ืฆื™ืœ ืืช ื”ืžืฆื‘. ื’'ืืกื˜ ื”ื•ื ื›ืœื™ ืฉืจืฅ ืžืฉื•ืจืช ื”ืคืงื•ื“ื”, ืื‘ืœ ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ื•ืกื™ืฃ ืื•ืชื• ืœืงื•ื‘ืฅ ื” package.json ื‘ืชื•ืจ ืชืœื•ืช ื ื•ืกืคืช ืœืคื™ืชื•ื— ื›ื“ื™ ืฉืื ืฉื™ื ืœื ื™ืฆื˜ืจื›ื• ืœื”ืชืงื™ืŸ ืื•ืชื• ื‘ื ืคืจื“:
  "devDependencies": {
    "just-install": "2.0.2",
  }
ืื—ืจื™ ืฉื”ื•ืกืคื ื• ื•ื”ืชืงื ื• ืื•ืชื• ืื ื—ื ื• ื™ื•ืฆืจื™ื ืงื•ื‘ืฅ ื‘ืฉื justfile ื‘ืชื™ืงื™ื™ื” ื”ืจืืฉื™ืช ืฉืœ ื”ืคืจื•ื™ืงื˜ ืขื ืชื•ื›ืŸ ืฉื ืจืื” ื›ืžื• Makefile:
default:
  just --list

start: build
  NODE_ENV=production
  node index.js

build:
  echo building app
ื•ืขื›ืฉื™ื• ืืคืฉืจ ืœืžื—ื•ืง ืืช ื›ืœ ื‘ืœื•ืง ื”ืกืงืจื™ืคื˜ื™ื ืž package.json ื•ืœืขื‘ื•ืจ ืœืขื‘ื•ื“ ืขื just. ืื ื™ ืžืจื™ืฅ:
$ npx just
just --list
Available recipes:
    build
    default
    start
ื›ื“ื™ ืœืจืื•ืช ืืช ืจืฉื™ืžืช ื”ืืคืฉืจื•ื™ื•ืช, ื•ืื– ื‘ืฉื‘ื™ืœ ื”ืžืฉื—ืง ืื ื™ ืžืจื™ืฅ:
$ npx just start
echo building app
building app
NODE_ENV=production
node index.js
starting app
ื•ืื ื™ ืจื•ืื” ืฉ start ื”ืจื™ืฅ ื’ื ืืช build ื•ื’ื ืืช ืคืงื•ื“ืช ื” node. ื‘ืฉื‘ื™ืœ ืœื”ื•ืกื™ืฃ ืกืงืจื™ืคื˜ publish ืœ justfile ืื ื™ ื›ื•ืชื‘:
publish: build start
  echo publish
ื•ื‘ื”ืคืขืœื” ื‘ืจื•ืจ ืฉ build ืจืฅ ืจืง ืคืขื ืื—ืช:
$ npx just publish
echo building app
building app
NODE_ENV=production
node index.js
starting app
echo publish
publish
ื”ืชื™ืขื•ื“ ืฉืœ just ืžืฆื•ื™ืŸ ื•ื™ืฉ ืœื• ื”ืจื‘ื” ืคื—ื•ืช ืคื™ื ื•ืช ื—ื“ื•ืช ื‘ื”ืฉื•ื•ืื” ืœ make ื•ื’ื ChatGPT ืžื›ื™ืจ ืื•ืชื• ื“ื™ ื˜ื•ื‘ ืื– ืœื ืชื”ื™ื” ืœื›ื ื‘ืขื™ื” ืœื”ื™ืขื–ืจ ื‘ AI ื›ืฉืฆืจื™ืš. ืืคืฉืจ ืœืงืจื•ื ื™ื•ืชืจ ืขืœ ื”ื›ืœื™ ื‘ื’ื™ื˜ื”ืื‘ ืฉืœื”ื ื‘ืงื™ืฉื•ืจ: https://github.com/casey/just/

ToCode
1 419
ื ื™ืกื•ื™ ื“ื™ื ื• - ืžื” ืืคืฉืจ ืœืขืฉื•ืช ื”ื™ื•ื ืขื Deno ื• next.js ื‘ื“ืฃ ื”ืชื™ืขื•ื“ ืฉืœ ื“ื™ื ื• ื™ืฉ ืจืฉื™ืžื” ืฉืœ Web Frameworks ืฉื“ื™ื ื• ืชื•ืžืš ื‘ื”ื ื•ืื ื™ ืžื•ื“ื” ืฉื”ืคืจื™ื˜ ื”ืจืืฉื•ืŸ ื‘ืจืฉื™ืžื” ื‘ืœื‘ืœ ืื•ืชื™. ื›ืœื•ืžืจ ืฉืžืขืชื™ ืืช ืื ืฉื™ ื“ื™ื ื• ืžื“ื‘ืจื™ื ืขืœ ืชืžื™ื›ื” ื‘ next.js ืื‘ืœ ืœื ื”ื‘ื ืชื™ ืฉื”ื›ืœ ื›ื‘ืจ ืžื•ื›ืŸ, ื•ืื ื–ื” ืžื•ื›ืŸ ืœื ื‘ืจื•ืจ ืœืžื” ื”ืื ืฉื™ื ื‘ vercel ืœื ื ื•ืชื ื™ื ื™ื•ืชืจ ืคื™ืจืกื•ื ืœืกื™ืคื•ืจ. ืื ื™ ืžืคืจืกื ืคื” ื›ืžื” ื ื™ืกื•ื™ื™ื ืฉืขืฉื™ืชื™ ืขื ื”ืฉื™ืœื•ื‘, ืœืฆืขืจื™ ื‘ืœื™ ืžืกืงื ื•ืช ืžืœื”ื™ื‘ื•ืช. ืื™ืš ืœืคืชื•ื— ืคืจื•ื™ืงื˜ next.js ื—ื“ืฉ ืขื ื“ื™ื ื• ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืขื•ื‘ื“ ืขื ื”ื’ื™ืจืกื” ื”ื—ื“ืฉื” ืฉืœ ื“ื™ื ื• ืžื•ืชืงื ืช ื”ื•ื ื™ืฆื™ืจืช ืคืจื•ื™ืงื˜ next ื—ื“ืฉ. ืคืฉื•ื˜ ืžืคืขื™ืœื™ื:
deno run -A npm:create-next-app@latest my-next-app
ื‘ืื•ืคืŸ ืœื ื˜ื™ืคื•ืกื™ ืœ deno, ื”ืคืงื•ื“ื” ืžื™ื™ืฆืจืช ืชื™ืงื™ื™ืช node_modules ื•ืฉืžื” ื‘ื” ืืช ื›ืœ ื”ืกืงืจื™ืคื˜ื™ื ืฉืœ next ื•ืืช ื›ืœ ื”ืชืœื•ื™ื•ืช ืฉืœื”ื. ืืคืฉืจ ืœื”ืคืขื™ืœ ืืช ื”ืคืจื•ื™ืงื˜ ืขื ื“ื™ื ื• ื‘ืžืฆื‘ ืคื™ืชื•ื— ื•ื’ื ื–ื” ืขื•ื‘ื“:
deno task dev
ื•ื”ื•ื ื”ืฆืœื™ื— ืœื”ื’ื™ืฉ ืืช ื”ืคืจื•ื™ืงื˜ ื›ืฉื ื›ื ืกืชื™ ืขื ื”ื“ืคื“ืคืŸ ืœ localhost:3000. ืื™ืš ืœื•ื•ื“ื ืฉืื ื—ื ื• ื‘ Deno ืœืžืจื•ืช ืฉื”ืคืขืœืชื™ ืืช ื”ืคืจื•ื™ืงื˜ ืžื“ื™ื ื• ืขื“ื™ื™ืŸ ืœื ื”ื™ื™ืชื™ ืจื’ื•ืข - ืœืžื” ืฆืจื™ืš ืฉื ืชื™ืงื™ื™ืช node.js ื•ืื™ืš ื”ืกืงืจื™ืคื˜ื™ื ืฉืœ next ืขื•ื‘ื“ื™ื ืขื ืงื•ื“ ื“ื™ื ื•. ืื– ืขื“ื›ื ืชื™ ืืช ื”ื ืชื™ื‘ ื”ืจืืฉื™ ื•ื”ื•ืกืคืชื™ ืœื• ืงื•ื“ ืฉืงื•ืจื ืงื•ื‘ืฅ ืชื•ืš ืฉื™ืžื•ืฉ ื‘ API ืกืคืฆื™ืคื™ ืฉืœ ื“ื™ื ื•:
export default async function Home() {
  const serverRenderedValue = await Deno.readFile('./value.txt');
  const decoded = new TextDecoder().decode(serverRenderedValue);

  return (
    <div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]">
      <p>Text in file is: {decoded}</p>
    </div>
  );
}
ืœืžืจื‘ื” ื”ื”ืคืชืขื” ื–ื” ื’ื ืขื‘ื“ ื•ื”ืฆืœื—ืชื™ ืœืจืื•ืช ืืช ื”ืชื•ื›ืŸ ืฉืœ ื”ืงื•ื‘ืฅ ื‘ืงื•ืžืคื•ื ื ื˜ื” ืขืœ ื”ืžืกืš. ื”ื›ืœ ืขื•ื‘ื“ ื™ืคื” ืขื ื” Server Components ืฉืœ next. ืื™ืคื” ื”ื‘ืขื™ื” ื”ืืชื’ืจ ื”ื‘ื ื”ื™ื” ืœื—ืฉื•ื‘ ืขืœ Deployment ื•ืคื” ื”ื’ืขืชื™ ืœืกื•ืฃ ื”ืžืกืœื•ืœ ื‘ื ื™ืกื•ื™ ื”ื™ื•ื. ื”ืคืขืœื” ืฉืœ deno task build ื›ื“ื™ ืœื‘ื ื•ืช ืืช ื”ืคืจื•ื™ืงื˜ ื”ื—ื–ื™ืจื”:
Task build next build
  โ–ฒ Next.js 14.2.13

   Creating an optimized production build ...
 โœ“ Compiled successfully
   Linting and checking validity of types  ..Cannot read properties of undefined (reading 'bold')
ื–ื” ื”ื™ื” ืขื ื”ื’ื™ืจืกื” ื”ื—ื“ืฉื” ื‘ื™ื•ืชืจ ืฉืœ ื“ื™ื ื• (ื” RC ืœื’ื™ืจืกื” 2). ื‘ืขื™ืงืจื•ืŸ ืืคืฉืจ ื”ื™ื” ืœื”ืคืขื™ืœ npm run build ื›ื“ื™ ืœื‘ื ื•ืช ื‘ืขื–ืจืช node ืื‘ืœ ื–ื” ืœื ื™ืขื‘ื•ื“ ื›ื™ ื”ืฉืชืžืฉืชื™ ื‘ API ืกืคืฆื™ืคื™ ืœื“ื™ื ื• ื›ื“ื™ ืœืงืจื•ื ืงื•ื‘ืฅ:
> my-next-app@0.1.0 build
> next build

  โ–ฒ Next.js 14.2.13

   Creating an optimized production build ...
 โœ“ Compiled successfully
   Linting and checking validity of types  ..Failed to compile.

./src/app/page.tsx:6:37
Type error: Cannot find name 'Deno'.

  4 |
  5 | export default async function Home() {
> 6 |   const serverRenderedValue = await Deno.readFile('./value.txt');
    |                                     ^
  7 |   const decoded = new TextDecoder().decode(serverRenderedValue);
  8 |
  9 |   return (
ืคืงื•ื“ืช build ื ื—ื•ืฆื” ื›ื“ื™ ืฉืืคืฉืจ ื™ื”ื™ื” ืœื”ืคืขื™ืœ start ื• deploy ื•ืœืขื‘ื•ืจ ืœืกื‘ื™ื‘ืช ืคืจื•ื“ืงืฉืŸ. ืื™ืŸ ืกืคืง ืฉื“ื™ื ื• ืžืชืงื“ื ื‘ื›ื™ื•ื•ืŸ ื”ื ื›ื•ืŸ ืžื‘ื—ื™ื ืช ืชืื™ืžื•ืช ืื‘ืœ ืื ื™ ื—ื™ื™ื‘ ืœื”ื•ื“ื•ืช ืฉืื ื™ ืขื“ื™ื™ืŸ ืœื ืจื’ื•ืข. ืœืคื—ื•ืช ื‘ื”ื™ื‘ื˜ ืฉืœ next.js, ืงืฉื” ืœืจืื•ืช ืื™ืš ื”ื ื™ืฆืœื™ื—ื• ืœื‘ื ื•ืช ืชืื™ืžื•ืช ื‘ืœื™ ืขื–ืจื” ืฉืœ ื”ื—ื‘ืจื™ื ื‘ vercel, ื•ืฉื ื ืจืื” ืฉืžืขื“ื™ืคื™ื ืœื”ืชืžืงื“ ื‘ node. ืื– ื›ืŸ ืืคืฉืจ ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ next ื‘ deno ื•ืœืจื•ืฅ ืžืงื•ืžื™ืช ื‘ืžืฆื‘ ืคื™ืชื•ื—, ื•ืื ื”ืงืคื“ืชื ืœื”ืฉืชืžืฉ ืจืง ื‘ APIs ืฉืงื™ื™ืžื™ื ื‘ node ืชื•ื›ืœื• ื’ื ื‘ืขืชื™ื“ ืœื‘ื ื•ืช ืื•ืชื• ืœืคืจื•ื“ืงืฉืŸ ื‘ node, ืื‘ืœ ื‘ืžืฆื‘ ื›ื–ื” ืœื ื‘ืจื•ืจ ืœืžื” ืฉื ืจืฆื” ืœื‘ืฆืข ืืช ื›ืœ ื”ืคื™ืชื•ื— ื‘ deno.

ToCode
1 419
ื”ื™ื•ื ืœืžื“ืชื™ ืœื”ื™ื–ื”ืจ ืžื”ืคื•ื ืงืฆื™ื” contains ื‘ืงืœื•ื–'ืจ ื”ืืชื’ืจ ื”ื›ื™ ื’ื“ื•ืœ ืขื‘ื•ืจื™ ืขื ืงืœื•ื–'ืจ ื”ื•ื ื—ื•ืกืจ ื”ืขืงื‘ื™ื•ืช ืฉืœ ื”ืฉืคื”, ืื• ืฉืื•ืœื™ ื™ืฉ ืœื” ืื™ื–ืฉื”ื• ื”ื’ื™ื•ืŸ ืคื ื™ืžื™ ืฉืื ื™ ืœื ืžื‘ื™ืŸ. ื”ืงื™ื˜ื•ืจ ื”ื™ื•ื ื”ื•ื ืขืœ ื”ืคื•ื ืงืฆื™ื•ืช contains? ื• keys. ื”ืคื•ื ืงืฆื™ื” keys ื‘ืงืœื•ื–'ืจ ืžืงื‘ืœืช ืžืคื” ื•ืžื—ื–ื™ืจื” ืืช ื”ืžืคืชื—ื•ืช ืฉืœื”. ื–ื” ืงืœ:
user=> (keys {:a 10 :b 20 })
(:a :b)
ื‘ืจื•ืจ ืฉืื™ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ keys ืขืœ ื•ืงื˜ื•ืจ, ื›ื™ ืื™ืŸ ืœื• ืžืคืชื—ื•ืช. ืงืœื•ื–'ืจ ื”ื™ื ื”ืจื™ ืœื JavaScript ื•ื”ื™ื ืœื ื—ื•ืฉื‘ืช ืฉืžืคืชื—ื•ืช ืฉืœ ืžืขืจืš ื–ื” ื”ืื™ื ื“ืงืกื™ื ืฉืœื•. ื–ื” ืžื” ืฉืงื•ืจื” ืื ืžื ืกื™ื:
user=> (keys ["a" "b" "c"])
Error printing return value (ClassCastException) at clojure.lang.APersistentMap$KeySeq/first (APersistentMap.java:168).
class java.lang.String cannot be cast to class java.util.Map$Entry (java.lang.String and java.util.Map$Entry are in module java.base of loader 'bootstrap')
ื‘ื”ืชื‘ืกืก ืขืœ ื”ื”ื’ื™ื•ืŸ ื”ื–ื” ื”ืœื›ืชื™ ืœืฉื—ืง ืขื ื”ืคื•ื ืงืฆื™ื” contains? ื‘ืขื‘ื•ื“ื” ืขืœ ืžืคื”, ื”ืคื•ื ืงืฆื™ื” contains? ื‘ื•ื“ืงืช ืื ืขืจืš ืžืกื•ื™ื ื”ื•ื ืžืคืชื— ื‘ืžืคื”. ืขื“ ืคื” ื”ื›ืœ ื’ื ื”ื’ื™ื•ื ื™:
user=> (contains? {:a 10 :b 20} :a)
true
ื‘ื’ืœืœ ืฉ keys ืœื ืขื•ื‘ื“ืช ืขืœ ืžืขืจื›ื™ื, ื—ืฉื‘ืชื™ ืฉื’ื contains? ืœื ืืžื•ืจื” ืœืขื‘ื•ื“ ืขืœ ืžืขืจื›ื™ื, ื•ืงืฆืช ื”ื•ืคืชืขืชื™ ืœื’ืœื•ืช ืฉื”ื™ื ื“ื•ื•ืงื ืขื•ื‘ื“ืช ื•ืืคื™ืœื• ืœืคืขืžื™ื ืฆื•ื“ืงืช:
user=> (contains? [1 2 3] 2)
true
ืื‘ืœ ื–ื” ื”ื™ื” ืจืง ืžื•ืงืฉ. ืœืžืขืฉื” contains? ืขืœ ืžืขืจื›ื™ื ื‘ืงืœื•ื–'ืจ ื‘ื•ื“ืงืช ืื ื”ืคืจืžื˜ืจ ืฉื”ื™ื ืงื™ื‘ืœื” ื”ื•ื ืื™ื ื“ืงืก ื‘ืžืขืจืš - ื•ืœื ืขืจืš. ื”ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช ืขื‘ื“ื” ืจืง ื‘ืžืงืจื”. ื”ื ื” ื›ืžื” ื“ื•ื’ืžืื•ืช ื™ื•ืชืจ ื˜ื•ื‘ื•ืช:
user=> (contains? [1 2 3] 0)
true
user=> (contains? [1 2 3] 3)
false
user=> (contains? ['a' 'b' 'c'] 0)
true
user=> (contains? ['a' 'b' 'c'] 'a')
false
user=> (contains? ['a' 'b' 'c'] 9)
false
ื•ื ืฉืืจืชื™ ืขื ื”ืฉืืœื” - ืื ื”ืื™ื ื“ืงืกื™ื ืฉืœ ืžืขืจืš ื”ื ื”ืžืคืชื—ื•ืช ืฉืœื•, ืœืžื” keys ืœื ืžื—ื–ื™ืจื” ืืช ืจืฉื™ืžืช ื”ืื™ื ื“ืงืกื™ื? ื•ืื ื”ื ืœื ืžืคืชื—ื•ืช, ืœืžื” contains? ื‘ื•ื“ืงืช ืื ืขืจืš ืฉื”ื™ื ืงื™ื‘ืœื” ื”ื•ื ืื™ื ื“ืงืก ื—ื•ืงื™ ื‘ืžืขืจืš?

ToCode
1 419
ื‘ืกื•ืฃ ื–ื” ืชืžื™ื“ ื”ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ืžืฆืืชื™ ื”ืฉื‘ื•ืข ื‘ืื’ ืžืขื ื™ื™ืŸ ืคื” ื‘ืืชืจ ื‘ืคื•ื ืงืฆื™ื” ืฉืชืžื™ื“ ื ืจืืชื” ืœื™ ื›ืžื• ืงืกื. ื”ืกื™ืคื•ืจ ื”ื•ื ืคืฉื•ื˜, ืœืคืขืžื™ื ืื ืฉื™ื ืงื•ื ื™ื ืžื ื•ื™ ืœืืชืจ ืขื‘ื•ืจ ืขื•ื‘ื“ื™ื ืฉืœื”ื ื•ืื– ื”ืขื•ื‘ื“ ืžืงื‘ืœ ืงื™ืฉื•ืจ ืžื™ื•ื—ื“ ืœื”ืจืฉืžื”. ื›ืฉื”ืขื•ื‘ื“ ื ืจืฉื ื“ืจืš ื”ืงื™ืฉื•ืจ ื”ื•ื ืžื—ื•ื‘ืจ ืœืื•ืชื• ื—ืฉื‘ื•ืŸ ื—ื‘ืจื” ืฉื›ื‘ืจ ื ืงื ื” ืขื‘ื•ืจื• ื‘ืžืจื•ื›ื– ื•ื™ื›ื•ืœ ืœื’ืฉืช ืœืงื•ืจืกื™ื. ื”ืงื•ื“ ืฉื˜ื™ืคืœ ื‘ื™ืฆื™ืจืช ื‘ื—ื™ื‘ื•ืจ ื”ืขื•ื‘ื“ ืœืงื•ื“ ื”ืžื™ื•ื—ื“ ื”ื•ื ื‘ืกืš ื”ื›ืœ ื”ืฉื•ืจื•ืช:
create_user(!!params[:quickjoin]) do |user|
  user.after_confirmation
end
ื ื•, ืœืžืขืฉื” ื”ืžื™ืžื•ืฉ ื ืžืฆื ื‘ืชื•ืš ื”ื‘ืœื•ืง after_confirmation ืื‘ืœ ื–ื” ืœื ื—ืฉื•ื‘ ืœืฉื™ื—ื” ืฉืœื ื• ื›ืจื’ืข. ื•ืขื›ืฉื™ื• ืฉืื ื™ ืงื•ืจื ืืช ื–ื” ืื ื™ ื’ื ืœื ื‘ื˜ื•ื— ืžื” ืชืคืงื™ื“ ื”ืคืจืžื˜ืจ quickjoin, ืื‘ืœ ื’ื ื–ื” ืœื ื—ืฉื•ื‘ ืœืฉื™ื—ื” ืฉืœื ื• ื›ืจื’ืข. ืžื” ืฉื›ืŸ ื—ืฉื•ื‘ ื•ืงืฆืช ืงืฉื” ืœืจืื•ืช ืžื”ืžื‘ื ื” ื–ื” ืฉ create_user ื™ื›ื•ืœื” ืœื”ื™ื›ืฉืœ. ืœืžืฉืœ ืื ืžื™ืฉื”ื• ื‘ื—ืจ ืื™ืžื™ื™ืœ ืฉื›ื‘ืจ ืงื™ื™ื ื‘ืžืขืจื›ืช, ืœื ื‘ื—ืจ ืกื™ืกืžื” ืื• ืœื ื‘ื—ืจ ืฉื ืžืฉืชืžืฉ. ื‘ืžืฆื‘ ื›ื–ื” ื”ื‘ืœื•ืง ื”ืคื ื™ืžื™ ืœื ื ืงืจื ื•ื–ื” ื‘ืจื•ืจ ื›ื™ ืœื ื ื•ืฆืจ ืžืฉืชืžืฉ. ื”ืงื•ื“ ืฉืžื•ืคืขืœ ืื—ืจื™ ื›ื™ืฉืœื•ืŸ ื‘ื™ืฆื™ืจืช ืžืฉืชืžืฉ ืžืชื—ื‘ื ื‘ืชื•ืš ื”ืคื•ื ืงืฆื™ื” create_user ื•ื”ื•ื ื”ืฉื•ืจื•ืช:
clean_up_passwords resource
set_minimum_password_length
return redirect_to quickjoin_path, alert: resource.errors.full_messages.join(', ') if params[:quickjoin] == '1'

respond_with resource
ื‘ืคืจื˜ ืžื” ืฉืžืขื ื™ื™ืŸ ืื•ืชื ื• ื–ื• ื”ืฉื•ืจื” ื”ืื—ืจื•ื ื” - respond_with. ื”ื™ื ืžืขื ื™ื™ื ืช ื›ื™ ื”ื™ื ืขื•ื‘ื“ืช ืžืžืฉ ื‘ืกื“ืจ ืœื›ืœ ื”ืžืฉืชืžืฉื™ื ืฉื ืจืฉืžื™ื ืจื’ื™ืœ ืœืืชืจ. ื›ืฉื™ืฉ ื›ื™ืฉืœื•ืŸ ื‘ืจื™ืฉื•ื ื”ื™ื ืžื—ื–ื™ืจื” ืืช ื”ื ืจืฉื ืœื“ืฃ ื”ืจื™ืฉื•ื ื”ืจืืฉื™ ืฉื ื”ื•ื ื™ื›ื•ืœ ืœืชืงืŸ ืืช ื”ืฉื’ื™ืื” ื‘ืจื™ืฉื•ื ื•ืœื ืกื•ืช ืฉื•ื‘. ืื‘ืœ ืื ืžืจืืฉ ื”ืงื™ืฉื•ืจ ืœืจื™ืฉื•ื ื”ื™ื” ืฉื•ื ื” ื›ื™ ื”ื‘ืŸ ืื“ื ื”ื’ื™ืข ืžืชื•ืš ืงื™ืฉื•ืจ ืžื™ื•ื—ื“ ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ื—ืฉื‘ื•ืŸ ืžืชื ื”, ื”ืคื•ื ืงืฆื™ื” respond_with ืœื ืจื•ืื” ืืช ื–ื” ื•ืžื—ื–ื™ืจื” ืืช ื”ื ืจืฉื ืœื“ืฃ ื”ืจื™ืฉื•ื ื”ืจืืฉื™, ืฉื ื”ื•ื ืžื ืกื” ืฉื•ื‘ ืœื”ื™ืจืฉื ืื‘ืœ ื”ื—ืฉื‘ื•ืŸ ื›ื‘ืจ ืœื ืžื—ื•ื‘ืจ ืœื—ืฉื‘ื•ืŸ ืฉืงื ื• ืขื‘ื•ืจื•. ื‘ Rails ื”ืคื•ื ืงืฆื™ื” respond_with ื”ื™ื ืงื™ืฆื•ืจ ืœื–ื”:
def create
  @user = User.new(params[:user])
  respond_to do |format|
    if @user.save
      flash[:notice] = 'User was successfully created.'
      format.html { redirect_to(@user) }
      format.xml { render xml: @user }
    else
      format.html { render action: "new" }
      format.xml { render xml: @user }
    end
  end
end
ื‘ื›ืชื™ื‘ ื”ืžืœื ื”ื›ืœ ื‘ืจื•ืจ - ื›ืฉื™ืฆื™ืจืช ื”ืžืฉืชืžืฉ ื ื›ืฉืœื” ืžืฆื™ื’ื™ื ืืช ื”ื˜ื•ืคืก ืž new, ื•ืœื ืžื”ืงื™ืฉื•ืจ ื”ืžื™ื•ื—ื“ ื“ืจื›ื• ื”ื•ื ื ื™ืกื” ืœื”ื™ืจืฉื. ื‘ืจื™ืฉื•ื ื”ื‘ื ื”ืžืฉืชืžืฉ ื›ื‘ืจ ื™ื™ื›ื ืก ืœืืชืจ ื›ืžืฉืชืžืฉ ืจื’ื™ืœ ื•ืœื ืžื—ื•ื‘ืจ ืœื—ืฉื‘ื•ืŸ ืฉื”ื•ื›ืŸ ืขื‘ื•ืจื•. ืชื™ืงื•ื ื™ื? ืงืœ. ืงื•ื“ื ื›ืœ ื‘ create_user ืขื“ื™ืฃ ืœื”ื—ืœื™ืฃ ืืช respond_with ื‘ื’ื™ืจืกื” ื”ืืจื•ื›ื” ืฉืœื”, ื•ืื– ื‘ื›ื™ืฉืœื•ืŸ ื’ื ืœื”ืคืขื™ืœ redirect ืœืงื™ืฉื•ืจ ืžืžื ื• ื”ื•ื ื ื™ืกื” ืœื”ื™ืจืฉื. ื‘ื ื•ืกืฃ ืœื”ื•ืกื™ืฃ ื‘ื“ื™ืงื•ืช ืฆื“-ืœืงื•ื— ื‘ื˜ื•ืคืก ื”ืจื™ืฉื•ื. ื‘ื“ื™ืงื•ืช ืืœื” ืื•ืžื ื ืœื ื™ืชืคืกื• ืืช ื›ืœ ื”ื‘ืขื™ื•ืช ืื‘ืœ ื™ืฉืคืจื• ืืช ื”ื—ื•ื•ื™ื” ืœืžื™ ืฉืฉื›ื— ืœืžืœื ืชื•ื›ืŸ ื‘ืื—ื“ ื”ืฉื“ื•ืช.

ToCode
1 419
setState(() {
      _counter--;
    });
  }

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter Counter Example'),
      ),
      body: Center(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            IconButton(
              icon: const Icon(Icons.remove),
              onPressed: _decrementCounter,
            ),
            SizedBox(
              width: 100,
              child: TextField(
                controller: TextEditingController(text: _counter.toString()),
                textAlign: TextAlign.right,
                readOnly: true,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                ),
              ),
            ),
            IconButton(
              icon: const Icon(Icons.add),
              onPressed: _incrementCounter,
            ),
          ],
        ),
      ),
    );
  }
}
ืื ื™ ืœื ื™ื•ื“ืข ืื ื–ื” ืงืœื•ื“ ืื• ืฉื›ื›ื” dart, ืื‘ืœ ื’ื™ืจืกืช ื”ืคื™ื™ืชื•ืŸ ื ืจืื™ืช ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘.

ToCode
1 419
ื—ืžืฉ ื“ืงื•ืช ืขื flet ืขื ื›ืœ ื”ืื”ื‘ื” ืœืจื™ืืงื˜ ืื ื™ ื—ื™ื™ื‘ ืœื”ื•ื“ื•ืช ืฉืœื ื”ืฆืœื—ืชื™ ืœื™ื”ื ื•ืช ืžื›ืชื™ื‘ืช ืงื•ื“ React Native. ืชืžื™ื“ ื”ื™ื” ื™ื•ืชืจ ืžื“ื™ Boilerplate ื•ื“ื‘ืจื™ื ืœื ืขื‘ื“ื• ืžืกืคื™ืง ื›ืžื• ืฉืจืฆื™ืชื™ ืื• ืฉืœื ื ืจืื• ืžืกืคื™ืง ื˜ื•ื‘ ืขืœ ืžื›ืฉื™ืจื™ื ืฉื•ื ื™ื. ืื ื™ ื™ื•ื“ืข ืฉื™ืฉ ื”ืžื•ืŸ ืืคืœื™ืงืฆื™ื•ืช ื˜ื•ื‘ื•ืช ืฉื›ืชื•ื‘ื•ืช ื‘ืจื™ืืงื˜ ื ื™ื™ื˜ื™ื‘ ื•ื‘ื˜ื•ื— ืฉื”ื‘ืขื™ื” ื–ื” ืงื•ื“ื ื›ืœ ืื ื™ ืื‘ืœ ื–ื” ืžื” ืฉื™ืฉ ื•ืื ื™ ื—ื•ืฉื‘ ืฉืื ื™ ืœื ื”ื™ื—ื™ื“ ื‘ืกื™ืคื•ืจ ื”ื–ื”. ืžืฆื“ ืฉื ื™ ื”ืจื‘ื” ื–ืžืŸ ื’ื ื”ืชืจื—ืงืชื™ ืžืคืœืื˜ืจ ื‘ืขื™ืงืจ ื›ื™ ืœื ื”ื™ื” ืœื™ ื›ื— ืœ dart. ืœื›ืŸ ืฉืžื—ืชื™ ืœืžืฆื•ื ืœืื—ืจื•ื ื” ืืช flet, ืกื‘ื™ื‘ื” ืœืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ flutter ื‘ Python. ื”ืงื•ื“ ื™ืฆื ื”ืจื‘ื” ื™ื•ืชืจ ื ืงื™ ื•ืžืžื•ืงื“ ื‘ื”ืฉื•ื•ืื” ืœืžื” ืฉื–ื›ืจืชื™ ืืช dart ื•ื›ืžืขื˜ ืœื ื”ื™ื• ื”ืชืงื ื•ืช. ื›ื›ื” ื–ื” ืขื•ื‘ื“- ื”ืชืงื ื” ื•ืชื•ื›ื ื™ืช ืจืืฉื•ื ื” ืื ื™ ืžืคืขื™ืœ PyCharm ื ื›ื ืก ืœืชืคืจื™ื˜ ื”ื—ื‘ื™ืœื•ืช ื•ืžืชืงื™ืŸ ืืช ื”ื—ื‘ื™ืœื” flet. ืขื›ืฉื™ื• ื™ื•ืฆืจ ืงื•ื‘ืฅ ื—ื“ืฉ ื•ืžื“ื‘ื™ืง ืืช ื”ืชื•ื›ืŸ ื”ื‘ื (ืจื•ื‘ื• ืžื”ืชื™ืขื•ื“ ื‘ืืชืจ ืฉืœ ืคืœื˜ ืขื ืชื™ื‘ืช ื˜ืงืกื˜ ืฉืื ื™ ื”ื•ืกืคืชื™):
import flet as ft


def main(page: ft.Page):
    page.title = "Flet counter example"
    page.vertical_alignment = ft.MainAxisAlignment.CENTER

    txt_number = ft.TextField(value="0",
                              text_align=ft.TextAlign.RIGHT,
                              width=100)

    def minus_click(e):
        txt_number.value = str(int(txt_number.value) - 1)
        page.update()

    def plus_click(e):
        txt_number.value = str(int(txt_number.value) + 1)
        page.update()

    page.add(
        ft.Row(
            [ft.Text("Counter Example", size=18)],
            alignment=ft.MainAxisAlignment.CENTER,
        ),
        ft.Row(
            [
                ft.IconButton(ft.icons.REMOVE, on_click=minus_click),
                txt_number,
                ft.IconButton(ft.icons.ADD, on_click=plus_click),
            ],
            alignment=ft.MainAxisAlignment.CENTER,
        )
    )

ft.app(main)
ืงืจืืชื™ ืœืงื•ื‘ืฅ demo1.py ื•ื ื›ื ืกืชื™ ืœืžืกื•ืฃ ื‘ืชื•ืš ื” pycharm. ื‘ืชื•ืš ื”ืžืกื•ืฃ ื›ืชื‘ืชื™:
flet run -r demo1.py
ื–ื” ื”ืกืคื™ืง ืœ flet ื‘ืฉื‘ื™ืœ ืœื”ืฆื™ื’ ืžืžืฉืง ื’ืจืคื™ ืขืœ ื”ืžืกืš ืฉื›ืœืœ ืชื™ื‘ื” ืขื ืžืกืคืจ ื•ืฉื ื™ ื›ืคืชื•ืจื™ื ืกื‘ื™ื‘ื”, ืื—ื“ ืœืคืœื•ืก ื•ืฉื ื™ ืœืžื™ื ื•ืก. ืœื—ื™ืฆื•ืช ืขืœ ื”ื›ืคืชื•ืจื™ื ื›ืžื•ื‘ืŸ ืฉื™ื ื• ืืช ื”ืžืกืคืจ. ื›ืฉืฉื™ื ื™ืชื™ ืืช ื”ืงื•ื“ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื”ืžืžืฉืง ืขืœ ื”ืžืกืš ื”ืชืจืขื ืŸ ื›ื“ื™ ืœืฉืงืฃ ืืช ื”ืงื•ื“ ื”ื—ื“ืฉ. ืืžืจื™ืงื”. ืื—ืจื™ ื–ื” ื™ืฆืืชื™ ืžื”ืชื•ื›ื ื™ืช ื•ื›ืชื‘ืชื™ ื‘ืžืกื•ืฃ:
flet run --web -r demo1.py
ื•ื–ื” ื”ืกืคื™ืง ื‘ืฉื‘ื™ืœ ืฉ flet ื™ืคืชื— ืฉืจืช ืคื™ืชื•ื—, ื™ืจื™ืฅ ื“ืคื“ืคืŸ ืฉื™ืชื—ื‘ืจ ืืœื™ื• ื•ื™ืฆื™ื’ ืœื™ ื‘ื“ื™ื•ืง ืืช ืื•ืชื• ืžืžืฉืง ื‘ืชื•ืš ื”ื“ืคื“ืคืŸ. ื›ืžื• ืฉืืžืจืชื™ - ืืžืจื™ืงื”. ืžืื—ื•ืจื™ ื”ืงืœืขื™ื ืฆืจื™ืš ืœื”ื’ื™ื“, ื”ื—ื‘ืจ'ื” ื‘ flet ืงืฆืช ืžืจืžื™ื. ื”ื ืœื ืžืชืจื’ืžื™ื ืืช ื”ืคื™ื™ืชื•ืŸ ืฉืœื ื• ืœืคืœืื˜ืจ ืืœื ืžืฉืชืžืฉื™ื ื‘ืคืœืื˜ืจ ื›ื“ื™ ืœื”ืฆื™ื’ ืžืžืฉืง ืžืฉืชืžืฉ ืฉื‘ื’ื“ื•ืœ ื ื•ืฆืจ ื“ืจืš ื”ืคื™ื™ืชื•ืŸ ืฉืœื ื•. ื‘ืžืœื™ื ืื—ืจื•ืช: 1. ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื”ื™ื ืžืžืฉืง ืžืฉืชืžืฉ ืžืจื•ื ื“ืจ ื‘ืฉืจืช. 2. ื™ืฉ ืฉืจืช ืฉื–ื” ื™ื™ืฉื•ื ืฉื›ืชื•ื‘ ื‘ go ื•ื”ื•ื ืžืงื‘ืœ JSON-ื™ื ืฉืžืชืืจื™ื ืืช ืžืžืฉืง ื”ืžืฉืชืžืฉ. 3. ื™ืฉ ืœืงื•ื— ืฉื–ื” ืืคืœื™ืงืฆื™ื™ืช ืคืœืื˜ืจ ืฉืžื—ื•ื‘ืจืช ืœืฉืจืช ื•ืงื•ืจืืช ืžืžื ื• ืื™ื–ื” ืžืžืฉืง ืœื”ืฆื™ื’. 4. ืฉืจืช ื” go ืžืจื™ืฅ ืืช ืงื•ื“ ื”ืคื™ื™ืชื•ืŸ, ื”ืคื™ื™ืชื•ืŸ ืžืขื‘ื™ืจ ืืช ื” JSON-ื™ื ืœ go, ื” go ืžื™ื™ืฆืจ ื”ื’ื“ืจื•ืช ืคืœืื˜ืจ ื•ืฉื•ืœื— ืื•ืชืŸ ืœืืคืœื™ืงืฆื™ื™ืช ื” client. ื‘ืฆื•ืจื” ื›ื–ืืช ื‘ืคื™ื™ืชื•ืŸ ืื ื—ื ื• ืขื•ื‘ื“ื™ื ืขื ืจื›ื™ื‘ื™ UI ืฉืœ flet ื•ืœื ืจื›ื™ื‘ื™ื ืจื’ื™ืœื™ื ืฉืœ ืคืœืื˜ืจ. ื›ืŸ ืคืœืื˜ืจ ืฉื ืื‘ืœ ื”ื•ื ืžื•ื—ื‘ื ื˜ื•ื‘. ืžืฆืืชื™ ืœื ืžืขื˜ ื”ืชืœื”ื‘ื•ืช ื‘ืจืฉืช ืž flet ื•ื’ื ืžื”ืžืขื˜ ืฉืฉื™ื—ืงืชื™ ืื™ืชื• ื”ื›ืœ ืขื‘ื“ ื—ืœืง ื•ืžื”ืจ, ืื‘ืœ ืื™ ืืคืฉืจ ืœื”ืชื‘ืกืก ืขืœ "ืคืœืื˜ืจ" ื•ืœื—ืฉื•ื‘ ืฉืื ืืคืฉืจ ืœื‘ื ื•ืช ืžืฉื”ื• ื‘ืคืœืื˜ืจ ืื– ื‘ื˜ื•ื— ืืคืฉืจ ื™ื”ื™ื” ืœื‘ื ื•ืช ืืช ื–ื” ื‘ flet. ื”ืžื˜ืจื” ืฉืœ flet ื”ื™ื ื‘ื ื™ื™ื” ืžื”ื™ืจื” ืฉืœ ืžืžืฉืงื™ื ืœืืคืœื™ืงืฆื™ื” ืฉื›ื‘ืจ ื™ืฉ ืœื›ื, ืชื•ืš ืฉื™ืžื•ืฉ ื‘ื›ืœื™ื ื•ื‘ืกื‘ื™ื‘ืช ื”ืขื‘ื•ื“ื” ื”ืจื’ื™ืœื” ืฉืœื›ื. ื”ืฉื•ื•ืื” ืœ dart ื•ืคืœืื˜ืจ ืืžื™ืชื™ ืื ื™ ืžื•ื“ื” ืฉื–ื›ืจืชื™ ืฉ Dart ื”ื™ืชื” ืฉืคื” ืžืื•ื“ ืžืกื•ืจื‘ืœืช ืื– ื‘ืฉื‘ื™ืœ ื”ืžืฉื—ืง ื”ืœื›ืชื™ ืœ Claude ื•ื‘ื™ืงืฉืชื™ ืฉื™ืชืจื’ื ืœื™ ืืช ื”ืงื•ื“ ืœ dart. ื–ื” ืžื” ืฉืงื™ื‘ืœืชื™:
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Counter Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _decrementCounter() {