uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

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

Ko'proq ko'rsatish
1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
ToCode
1 419
# ื”ื™ื•ื ืœืžื“ืชื™: ืื™ืš ืœื“ื‘ื’ ืชื•ื›ื ื™ืช ื‘ืงื•ื ื˜ื™ื™ื ืจ ืื—ืจ ื“ื•ืงืจ ื‘ื ื•ื™ ื›ืœ ื›ืš ื˜ื•ื‘ ืฉืงืœ ืœืฉื›ื•ื— ืฉื‘ืขืฆื ื›ืœ ื”ืชื•ื›ื ื™ื•ืช ืฉืจืฆื•ืช ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจื™ื ืจืฆื•ืช ืขืœ ื”ืžื—ืฉื‘ ืฉืœื™ ื•ืœื ืขืœ ืื™ื–ื• ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช. ืžื”ืกื™ื‘ื” ื”ื–ืืช ื’ื ืื™ืŸ ื‘ืขื™ื” ืœื“ื‘ื’ ืชื•ื›ื ื™ืช ื‘ื™ืŸ ืงื•ื ื˜ื™ื™ื ืจื™ื, ื›ืฉื” gdb ืจืฅ ื‘ืงื•ื ื˜ื™ื™ื ืจ ืื—ื“ ื•ื”ืชื•ื›ื ื™ืช ื‘ืงื•ื ื˜ื™ื™ื ืจ ืื—ืจ. ื›ื›ื” ื ืขืฉื” ืืช ื”ื—ื™ื‘ื•ืจ: ## ื”ืคืขืœืช ืงื•ื ื˜ื™ื™ื ืจ ืขื ืชื•ื›ื ื™ืช ืคืฉื•ื˜ื” ื›ืชื‘ืชื™ ืชื•ื›ื ื™ืช c ืžืื•ื“ ืคืฉื•ื˜ื” ืฉื‘ืชื•ืš ืœื•ืœืื” ืื™ื ืกื•ืคื™ืช ืžื“ืคื™ืกื” ื›ืœ ืคืขื ื”ื•ื“ืขื” ืœืžืกืš ื•ืื– ืœื•ืงื—ืช ืฉื ื™ื” ืœื™ืฉื•ืŸ. ื–ื” ื”ืงื•ื“:
#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
  int c = 0;

  while(1) {
    sleep(1);
    printf("Keep going..., %d seconds passed\n", c);
  }
}
ื™ืฉ ืฉื ืžืฉืชื ื” ืฉืจืฆื™ืชื™ ืœื”ืขืœื•ืช ืื•ืชื• ื‘-1 ื‘ื›ืœ ืื™ื˜ืจืฆื™ื”, ืื‘ืœ ืฉื›ื—ืชื™ ืœื›ืชื•ื‘ ืืช ื”ืฉื•ืจื” ื›ื“ื™ ืฉื™ื”ื™ื” ื‘ืื’ ื‘ืชื•ื›ื ื™ืช. ืืช ื”ืชื•ื›ื ื™ืช ื‘ื ื™ืชื™ ื‘ gcc ืขื ืกืžืœื™ ื“ื™ื‘ื’ ื•ื™ืฆืจืชื™ ืžืžื ื” ืื™ืžื’' ื ื˜ื•ืœ ื”ืคืฆื” ืขื ื” Dockerfile ื”ื–ื”:
FROM gcc:4.9 as build
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN gcc -g -o myapp buggy.c

CMD ["./myapp"]

FROM gcr.io/distroless/nodejs:14
WORKDIR /app
COPY --from=build --chown=nonroot:nonroot /usr/src/myapp/myapp .
USER nonroot

ENTRYPOINT ["./myapp"]
ืคื™ืจืกืžืชื™ ืื•ืชื• ื›ื‘ืจ ื‘ื“ื•ืงืจ ื”ืื‘ ืื– ืืชื ื™ื›ื•ืœื™ื ื’ื ืœื”ืจื™ืฅ ืงื•ื ื˜ื™ื™ื ืจ ืžื”ืื™ืžื’' ื”ื–ื” ืขื:
docker run -it ynonp/buggy-demo
## ื—ื™ื‘ื•ืจ gdb ืœืงื•ื ื˜ื™ื™ื ืจ ืจืฅ ืื ื™ ืžืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจ ืžื”ืื™ืžื’' ื›ืžื• ืฉืกื™ืคืจืชื™ ืœื›ื ืขื:
docker run --name myapp -it ynonp/buggy-demo
ื•ืขื›ืฉื™ื• ืจื•ืฆื” ืœื—ื‘ืจ ืืœื™ื• gdb ื›ื“ื™ ืœื“ื‘ื’ ืื•ืชื•. ื”ืžืคืชื— ื”ื•ื ื”ืคืงื•ื“ื” ื”ื‘ืื” ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจ ื“ื™ื‘ืื’:
docker run --cap-add=sys_admin --cap-add=sys_ptrace --security-opt seccomp=unconfined --pid container:myapp -it ubuntu
ืงื•ื ื˜ื™ื™ื ืจ ื”ื“ื™ื‘ืื’ ืฉืžื•ืคืขืœ ืจื•ืื” ืืช ืื•ืชื ืชื”ืœื™ื›ื™ื ืฉื™ืฉ ื‘ืงื•ื ื˜ื™ื™ื ืจ myapp, ืื‘ืœ ื™ืฉ ืœื• ืื™ืžื’' ืฉื•ื ื”, ื”ื•ื ืจืฅ ืžืื™ืžื’' ืฉืœ ubuntu. ื‘ื’ืœืœ ื–ื” ืื ื™ ื™ื›ื•ืœ ืœื”ืชืงื™ืŸ ืขืœื™ื• ื›ืœื™ื ื›ืžื• gdb. ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ ื”ื“ื™ื‘ืื’ ืื ื™ ืžืจื™ืฅ:
apt-get update
apt-get install gdb
ืขื›ืฉื™ื• ืฆืจื™ืš ืœืžืฆื•ื ืืช ืงื•ื‘ืฅ ื”ืชื•ื›ื ื™ืช myapp, ื•ืืช ื”ืงื•ื“ ื”ืžืงื•ืจื™ buggy.c ื›ื™ gdb ืฆืจื™ืš ืืช ืฉื ื™ื”ื ื‘ืฉื‘ื™ืœ ืœืขื‘ื•ื“ ื˜ื•ื‘. ืœื’ื‘ื™ ืงื•ื‘ืฅ ื”ืžืงื•ืจ ื‘ื’ืœืœ ืฉืื ื™ ื™ืฆืจืชื™ ืื•ืชื• ืื ื™ ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื”ืขืชื™ืง ืืช ื”ืงื•ื“ ืœืงื•ื ื˜ื™ื™ื ืจ ื”ื“ื™ื‘ืื’ ื•ืœืฉืžื•ืจ ืื•ืชื• ื‘ืฉื /tmp/buggy.c. ืœื’ื‘ื™ ื”ืงื•ื‘ืฅ myapp ื”ื•ื ืžืกืชืชืจ ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืฉืœ ื”ืงื•ื ื˜ื™ื™ื ืจ myapp. ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืืœื™ื• ืื ื™ ืžืฉืชืžืฉ ื‘ืชื™ืงื™ื” /proc ื•ืžืคืขื™ืœ ืžืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ ื”ื“ื™ื‘ืื’:
cp /proc/1/root/app/myapp /tmp
ื”ื ืชื™ื‘ /proc/1/root ื”ื•ื ืœื™ื ืง ืกื™ืžื‘ื•ืœื™ ืœืฉื•ืจืฉ ืขืฅ ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืฉืœ ืชื”ืœื™ืš ืžืกืคืจ 1. ื‘ืชื•ืš ื”ืงื•ื ื˜ื™ื™ื ืจ ืชื”ืœื™ืš ืžืกืคืจ 1 ื”ื•ื ื”ืืคืœื™ืงืฆื™ื” ืฉื”ืงื•ื ื˜ื™ื™ื ืจ ื”ืจื™ืฅ, ื•ื‘ื’ืœืœ ืฉืงื•ื ื˜ื™ื™ื ืจ ื”ื“ื™ื‘ืื’ ื—ื•ืœืง ืืช ืžืกืคืจื™ ื”ืชื”ืœื™ื›ื™ื ืขื ื”ืงื•ื ื˜ื™ื™ื ืจ myapp ืื– ื”ืชื”ืœื™ืš ื™ื”ื™ื” myapp ื›ืœื•ืžืจ ื”ืชื”ืœื™ืš ืื•ืชื• ืื ื™ ืจื•ืฆื” ืœื“ื‘ื’. ืกืš ื”ื›ืœ ื‘ืงื•ื ื˜ื™ื™ื ืจ ื”ื“ื™ื‘ืื’ ื™ืฉ ืœื™ ืขื›ืฉื™ื• ื‘ืชื™ืงื™ื™ืช /tmp ื’ื ืืช ื”ืงื•ื‘ืฅ myapp ืฉื”ื•ื ืงื•ื‘ืฅ ื”ืชื•ื›ื ื™ืช ืฉื”ืจืฆืชื™ ื•ื’ื ืืช ืงื•ื‘ืฅ ื”ืžืงื•ืจ ืฉืœื• buggy.c. ืขื ืฉื ื™ ืืœื” ืืคืฉืจ ืœื”ืคืขื™ืœ ืืช gdb ื•ืœื”ืชื—ื‘ืจ ืœืชื”ืœื™ืš ืžืกืคืจ 1 ืฉื›ืจื’ืข ืจืฅ:
gdb ./myapp 1
ืื—ืจื™ ื–ื” ืื ื™ ื ื•ื—ืช ื‘ืชื•ืš gdb, ื™ื›ื•ืœ ืœืœื—ื•ืฅ l ื›ื“ื™ ืœืจืื•ืช ืืช ื”ืงื•ื“, next ื›ื“ื™ ืœื”ืจื™ืฅ ืืช ื”ืฉื•ืจื” ื”ื‘ืื” ื• print ื›ื“ื™ ืœื”ื“ืคื™ืก ืชื•ื›ืŸ ืฉืœ ืžืฉืชื ื™ื. ## ื .ื‘. ืœืžื” ืœื ืœื”ื™ื›ื ืก ืœืงื•ื ื˜ื™ื™ื ืจ ื”ืงื™ื™ื? ื‘ื ืงื•ื“ื” ื”ื–ืืช ืจื‘ื™ื ืžื›ื ืื•ืœื™ ื—ื•ืฉื‘ื™ื ืฉื”ื™ื” ืืคืฉืจ ืคืฉื•ื˜ ืœื”ื™ื›ื ืก ืœืงื•ื ื˜ื™ื™ื ืจ myapp ื•ืœื”ืจื™ืฅ ืขืœื™ื• gdb, ืžืฉื”ื• ื›ื–ื”:
docker exec -it myapp /bin/bash
ื”ืชืฉื•ื‘ื” ืฉืœืคื—ื•ืช ื‘ื“ื•ื’ืžื” ื›ืืŸ ื–ื” ืคืฉื•ื˜ ืœื ืขื•ื‘ื“, ื•ื”ื™ื ืœื ื”ื™ื—ื™ื“ื”. ื”ืงื•ื ื˜ื™ื™ื ืจ myapp ื”ื•ื ืงื•ื ื˜ื™ื™ื ืจ "ืœืœื ื”ืคืฆื”", ื–ื” ืื•ืžืจ ืฉื‘ืื™ืžื’' ืฉื”ื•ื ืžืจื™ืฅ ืื™ืŸ shell, ืื™ืŸ ืžื ื”ืœ ื—ื‘ื™ืœื•ืช, ืื™ืŸ ืืช gdb ื•ืื™ืŸ ื“ืจืš ืงืœื” ืœื”ืชืงื™ืŸ ืื—ื“. ื”ืจื‘ื” ืคืขืžื™ื ื›ืฉืื ื—ื ื• ื‘ื•ื ื™ื ืื™ืžื’'ื™ื ืœืคืจื•ื“ืงืฉืŸ ืื ื—ื ื• ืžื ืงื™ื ืื•ืชื ืžื›ืžื” ืฉื™ื•ืชืจ ื“ื‘ืจื™ื ื’ื ื›ื“ื™ ืœื ืœื”ืฉืื™ืจ ืžืงื•ื ืœื—ื•ืจื™ ืื‘ื˜ื—ื” ื•ื’ื ื‘ืฉื‘ื™ืœ ืฉื”ื›ืœ ืคืฉื•ื˜ ื™ืขื‘ื•ื“ ืžื”ืจ ื™ื•ืชืจ. ื›ืฉืงื•ื ื˜ื™ื™ื ืจ ื”ื™ืขื“ ื›ืžืขื˜ ืจื™ืง, ื—ื™ื‘ื•ืจ ืงื•ื ื˜ื™ื™ื ืจ ื ื•ืกืฃ ื•ื“ื™ื‘ืื’ ื“ืจื›ื• ื”ื•ื ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ืœื”ื’ื™ืข ืœื ืชื•ื ื™ื ื•ืœื‘ื“ื•ืง ืžื” ืฉื‘ื•ืจ. ื’ื ื‘ืขื‘ื•ื“ื” ืขื ื›ืœื™ื ืื—ืจื™ื (ืœื C), ืื ืงื•ื ื˜ื™ื™ื ืจ ื”ื™ืขื“ ืจื™ืง ื•ืืคื™ืœื• ืœื ื›ื•ืœืœ Shell, ืชืžื™ื“ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืื•ืชื• ื˜ืจื™ืง ื•ืœื—ื‘ืจ ืงื•ื ื˜ื™ื™ื ืจ ื“ื™ื‘ืื’, ื•ืœื”ื’ื™ืข ืœืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืฉืœ ืงื•ื ื˜ื™ื™ื ืจ ื”ื™ืขื“ ื“ืจืš ืชื™ืงื™ื™ืช /proc ื•ืฉื ืœื—ืงื•ืจ ืžื” ื”ื‘ืขื™ื”.

ToCode
1 419
# ื–ื”ื™ืจื•ืช: ืกืงืจื™ืคื˜ื™ื ื‘ืคืจื•ื“ืงืฉืŸ ื”ื™ื•ื ืœืžื“ืชื™ ืฉืื ืฉื™ื ืื•ื”ื‘ื™ื ืœื”ืขืชื™ืง ืงื˜ืขื™ ืงื•ื“ ื•ืœื”ื“ื‘ื™ืง ืื•ืชื ื‘ืคืจื•ื“ืงืฉืŸ, ื’ื ื›ืฉื”ืชื•ืฆืื” ืขืœื•ืœื” ืœืฉื‘ื•ืจ ืœื”ื ืืช ื”ืžืขืจื›ืช. ื‘ Issue ืฉื ืคืชื— ืขืœ ื”ื’ื™ืจืกื” ื”ื—ื“ืฉื” ืฉืœ ืืงืกื™ื•ืก ืื ื—ื ื• ืžื•ืฆืื™ื ื›ืžื” ืคื ื™ื ื™ื: > I am experiencing this breaking change, my production app is broken and unusable to my clients. > Me three. Prod is down. Got woken up here by confused users > It affected my app in production too, axios is not a function. > Confirmed as breaking production applications on my end as well. This is a big miss in testing coverage for a library like this. > Also having multiple broken production apps here. > Experiencing issues as well on production apps. Error: "axios is not a function" ื”ื‘ื ืชื ืืช ื”ืžืกืจ, ืืคืฉืจ ืœื”ื™ื›ื ืก ืœืงื™ืฉื•ืจ ืœืžืฆื•ื ืขื•ื“. ืื– ื›ืŸ ืืงืกื™ื•ืก ืฉื—ืจืจื• ื’ื™ืจืกื” ื—ื“ืฉื” ืฉืœื ืชื•ืืžืช ืื—ื•ืจื”. ื–ื” ื”ื•ืœืš ืœืงืจื•ืช ืขื ื›ืœ ืกืคืจื™ื” ืฉื ืขื‘ื•ื“ ืื™ืชื”. ืžื” ืฉื”ื•ื‘ื™ืœ ืœืงืจื™ืกืช ื”ื“ื•ืžื™ื ื• ื‘ืกื™ืคื•ืจ ืฉืœ ืืงืกื™ื•ืก, ืœืคื—ื•ืช ืžืžื” ืฉื”ื‘ื ืชื™ ืžืงืจื™ืืช ื” Issue, ื”ื™ื” ืœื™ื ืงื™ื ืœ"ื’ื™ืจืกื” ื”ื—ื“ืฉื” ื‘ื™ื•ืชืจ" ื“ืจืš unpkg:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
ืงื•ืคื™-ืคื™ื™ืกื˜ ืฉืœ ื–ื” ืœืงื•ื‘ืฅ html ื•ืฉื›ื—ืชื ืžืžื ื• ืขื“ ืฉืืงืกื™ื•ืก ืžืขืœื™ื ื’ื™ืจืกื” ื—ื“ืฉื” ืขื Breaking Changes. ื•ืžื” ืฉื›ื•ืื‘ ืคื” ื‘ืžื™ื•ื—ื“ ืฉืงืฉื” ืžืื•ื“ ืœืขืœื•ืช ืขืœ ื‘ืขื™ื•ืช ื›ืืœื” ื‘ื‘ื“ื™ืงื•ืช, ื›ื™ ื”ื›ืœ ืขื•ื‘ื“ ื•ืงืฉื” ืœืกืžืœืฅ ืžืฆื‘ ืฉ unpkg ืฉื•ืœื—ื™ื ืœื ื• ืงื•ื‘ืฅ ืœื ื ื›ื•ืŸ. ื•ืคื” ื”ื›ื— ืฉืœ ืžืคืชื—ื™ื ื•ืขื‘ื•ื“ื” ืœืคื™ Best Practices. ื”ืงืคื“ื” ืขืœ ืžืกืคืจ ื’ื™ืจืกื” ื‘ืชื’ื™ืช script ื•ืžืืคื™ื™ืŸ integrity ื”ื™ืชื” ืžื•ื ืขืช ืืช ื›ืœ ื”ื‘ืขื™ื•ืช. ื‘ื›ืชื™ื‘ืช ืงื•ื“, ื”ืžื˜ืจื” ืฉืœื ื• ืื™ื ื” ืœื™ื™ืฆืจ ืงื•ื“ "ืขื•ื‘ื“" ืืœื ืงื•ื“ "ื™ืฆื™ื‘".

ToCode
1 419
# ื’ื ื‘ืคืจื•ื™ืงื˜ ืงื˜ืŸ ื’ื ื‘ืคืจื•ื™ืงื˜ ืฆื“ ืงื˜ืŸ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ git ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจื™ ืฉื™ื ื•ื™ื™ื ื‘ืงื‘ืฆื™ื ืœืื•ืจืš ื–ืžืŸ. ืืคื™ืœื• ืฉืจื•ื‘ ื”ืกื™ื›ื•ื™ื™ื ืฉืœื ืชืฆื˜ืจื›ื• ืœื”ืฉื•ื•ืช ืœื”ื™ืกื˜ื•ืจื™ื”. ื’ื ื‘ืคืจื•ื™ืงื˜ ืฆื“ ืงื˜ืŸ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ Github Actions ื›ื“ื™ ืœื”ืขืœื•ืช ื’ื™ืจืกื” ืœืคืจื•ื“ืงืฉืŸ, ืืคื™ืœื• ืฉืืชื ื™ื•ื“ืขื™ื ืœื”ืคืขื™ืœ rsync ืœื‘ื“ ื•ื–ื” ื™ื™ืงื— ืœื›ื ื‘ื“ื™ื•ืง ืฉืชื™ ื“ืงื•ืช ืœื›ืœ ื’ื™ืจืกื”. ื’ื ื‘ืคืจื•ื™ืงื˜ ืฆื“ ืงื˜ืŸ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืงื•ื‘ืฅ ืกื•ื“ื•ืช ืžื•ืฆืคืŸ ื‘ืžืงื•ื ืœืฉืžื•ืจ ืžืคืชื—ื•ืช API ื‘ืชื•ืš ืงื•ื“ ื”ื™ื™ืฉื•ื. ืืคื™ืœื• ืฉืื™ืŸ ื‘ืืžืช ืกื›ื ื” ืฉื™ืคืจืฆื• ืœื›ื ืœืžืขืจื›ืช ื›ื™ ืืชื ื”ื™ื—ื™ื“ื™ื ืฉืขื•ื‘ื“ื™ื ืขืœ ื”ืงื•ื“ ื•ื™ืฉ ืฉื ื™ื™ื ื•ื—ืฆื™ ืžืฉืชืžืฉื™ื. ื’ื ืคืจื•ื™ืงื˜ ืฆื“ ืงื˜ืŸ ืืคืฉืจ ืœื”ืขืœื•ืช ืœืคืœื˜ืคื•ืจืžืช ืขื ืŸ ื›ืžื• AWS ื•ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ื ืฉื™ื›ื•ืœื™ื ืœื’ื“ื•ืœ. ืืคื™ืœื• ืฉื™ื”ื™ื” ืœื ื• ื”ืจื‘ื” ื™ื•ืชืจ ื–ื•ืœ ืœื”ืฉืชืžืฉ ื‘ VPS ืฉืœ 5$ ื‘ื—ื•ื“ืฉ. ืื– ืœืžื” ื‘ืขืฆื ืœื”ืชืืžืฅ? ื”ื”ืฉืงืขื” ื‘ืชืฉืชื™ื•ืช ื•ื‘ื”ืจื’ืœื™ ืขื‘ื•ื“ื” ื‘ืคืจื•ื™ืงื˜ ืฆื“ ืงื˜ืŸ ื”ื™ื ื”ื–ื“ืžื ื•ืช ืœื”ืชืจื’ืœ ืœืขื‘ื•ื“ื” ื ื›ื•ื ื” ื•ืœื”ื›ื™ืจ ืืช ื”ื›ืœื™ื ืฉืœืžื“ื ื• ืขืœื™ื”ื ื•ืื™ืš ื”ื ืžืชืคืงื“ื™ื ื‘ืขื•ืœื ื”ืืžื™ืชื™. ื‘ืจื•ืจ ืฉื”ื™ื™ืชื™ ืฉืžื— ืœื”ื’ื™ื“ ืœื›ื ืฉื›ืœ ืคืจื•ื™ืงื˜ ืฆื“ ืฉืชื›ืชื‘ื• ื™ืขืœื” ืœืื•ื•ื™ืจ ื•ื™ืจื•ื•ื™ื— ืžื™ืœื™ื•ื ื™ื, ืื‘ืœ ืœืคื—ื•ืช ืžื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ื–ื” ืœื ืžืžืฉ ืงื•ืจื”. ืžื” ืฉื›ืŸ ืงื•ืจื” ื”ื•ื ืฉืžื›ืœ ืคืจื•ื™ืงื˜ ืฆื“ ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ืื ื—ื ื• ืžืงื‘ืœื™ื ื ื™ืกื™ื•ืŸ, ื”ืจื’ืœื™ ืขื‘ื•ื“ื”, ื”ื™ื›ืจื•ืช ืขื ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื—ื“ืฉื•ืช ื•ื ืงื•ื“ืช ืคืชื™ื—ื” ื˜ื•ื‘ื” ื™ื•ืชืจ ืœืคืจื•ื™ืงื˜ ื”ื‘ื. ื•ืื ื–ืืช ื”ืžื˜ืจื” ืื– ื”ืžืืžืฅ ืœื›ืชื•ื‘ ื ื›ื•ืŸ ืจืง ืžืงืจื‘ ืืชื›ื ืœืฉื ื™ื•ืชืจ ืžื”ืจ.

ToCode
1 419
ืœืžื™ ืฉืคืกืคืกื• ื”ืงืœื˜ื” ืฉืœ ื•ื•ื‘ื™ื ืจ GraphQL ืฉืขื‘ืจ ืืชืžื•ืœ:

ToCode
1 419
# ืœื”ืชืงื“ื ื‘ืœื™ ืœื–ื•ื– ืื ืืชื ืชืงื•ืขื™ื ื‘ืขื‘ื•ื“ื” ืขื ื“ื“-ืœื™ื™ื ื™ื ืœื ื”ื’ื™ื•ื ื™ื™ื ืฉืœื ืžืืคืฉืจื™ื ืœืžื™ื“ื”, ื‘ืขื‘ื•ื“ื” ืขืœ ืžื•ืฆืจ ืžื™ื•ืฉืŸ, ื‘ืขื‘ื•ื“ื” ืขื ื˜ื›ื ื•ืœื•ื’ื™ื” ืฉื›ื‘ืจ ืืฃ ืื—ื“ ืœื ืฆืจื™ืš, ื‘ืขื‘ื•ื“ื” ืขื ืฉื™ื˜ื•ืช ืžื™ื•ืฉื ื•ืช - ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉืืชื ืงืžื™ื ื‘ื‘ื•ืงืจ ืื• ืžืกื™ื™ืžื™ื ืืช ื”ื™ื•ื ื‘ืชื—ื•ืฉื” ืฉื–ื” ื—ื™ื™ื‘ ืœื”ืฉืชื ื•ืช. ืื ื™ ืœื ืืฉื›ื— ืืช ื”ืชื—ื•ืฉื” ื›ืฉืœื™ืžื“ืชื™ ืงื•ืจืกื™ื ื‘ perl, ื›ืฉื›ืœ ืฉื ื” ื”ื™ื• ืœื™ ืคื—ื•ืช ื•ืคื—ื•ืช ืœืงื•ื—ื•ืช, ื•ื›ืฉืงื•ืจืกื™ื ื•ื™ื™ืขื•ืฆื™ื ื”ืชื—ื™ืœื• ืœื”ืชื‘ื˜ืœ. ืืช ื”ืœืงื•ื—ื•ืช ืฉืœืงื—ื• ืงื•ืจืก ืื• ื™ื™ืขื•ืฅ perl ืจืง ื‘ืฉื‘ื™ืœ ืฉืืขื–ื•ืจ ืœื”ื ืœื”ืžื™ืจ ืืช ื”ืงื•ื“ ืœืฉืคื” ืื—ืจืช. ื‘ืžืงื•ื ืื—ืจ ื•ืขื ื”ืจื‘ื” ื™ื•ืชืจ ื›ืกืฃ ื–ื” ื”ื™ื” ืกื˜ืคืŸ ืื™ืœื•ืค ืฉื ื™ืกื— ืืช ื”ืื‘ื—ื ื” ื”ืžืคื•ืจืกืžืช: > Nokia, our platform is burning. ื›ืฉืื ื—ื ื• ื ืžืฆืื™ื ืขืœ ืคืœื˜ืคื•ืจืžื” ื‘ื•ืขืจืช, ื›ืฉืื ื—ื ื• ืจื•ืื™ื ืื™ืš ื›ืœ ืฉื ื” ื”ืžื™ื•ืžื ื•ืช ืฉืœื ื• ืžื—ืœื™ื“ื” ื•ืื ื—ื ื• ื ื”ื™ื™ื ืคื—ื•ืช ืจืœื•ื•ื ื˜ื™ื ืœืฉื•ืง ื”ืขื‘ื•ื“ื”, ื“ื•ื•ืงื ืžืชื•ืš ื”ืคื—ื“ ื”ืžื•ื— ืžืืžืฅ ื›ืœ ืžื™ื ื™ ื”ืชื ื’ื“ื•ื™ื•ืช ืœืฉื™ื ื•ื™, ืœืžืฉืœ "ืขื›ืฉื™ื• ื–ื” ืœื ื–ืžืŸ ื˜ื•ื‘ ืœืขื–ื•ื‘ ื›ื™ ื‘ื“ื™ื•ืง ื—ื’ื™ื", ืื• "ืžื” ืื›ืคืช ืœื™ ืœื”ื™ืฉืืจ ื›ืœ ืขื•ื“ ืžืฉืœืžื™ื ื˜ื•ื‘", ืื• ืืคื™ืœื• "ื’ื ืงื•ื‘ื•ืœ ืขื“ื™ื™ืŸ ืœื ืžืชื”, ื‘ื˜ื— ืืกืชื“ืจ ื›ืžื• ืฉื”ืกืชื“ืจืชื™ ืขื“ ืขื›ืฉื™ื•". ื”ื‘ืขื™ื” ื”ื’ื“ื•ืœื” ื”ื™ื ืฉืœื”ื™ืฉืืจ ื‘ืžืงื•ื ืœื ืžืžืฉ ืขื•ื–ืจ, ื•ืื ื—ื ื• ืขื“ื™ื™ืŸ ืœื ื ืžืฆืื™ื ื‘ืžืงื•ื ืฉืžืืคืฉืจ ืœืฆืžื•ื— ืื• ืœื”ืžืฉื™ืš ื”ืœืื”. ืืฃ ืื—ื“ ืœื ื™ืงื‘ืœ ืื•ืชืš ืœื’ื•ื’ืœ ืขื ื”ื ื™ืกื™ื•ืŸ ื”ืœื ืจืœื•ื•ื ื˜ื™ ื•ื”ืžื™ื•ืžื ื•ืช ื”ืžื—ืœื™ื“ื”. ื•ืœื›ืŸ ื”ืคื™ืชืจื•ืŸ ื”ืคืฉื•ื˜ ืืš ืงืฉื” ืœื™ื™ืฉื•ื - ืœื’ื“ื•ืœ ืื™ืคื” ืฉืื ื—ื ื• ื ืžืฆืื™ื. ื–ื” ืื•ืžืจ: 1. ืœืžืฆื•ื ื“ืจื›ื™ื ืœื”ื›ื ื™ืก ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžืชืงื“ืžื•ืช ืœืงื•ื“ ื”ื ื•ื›ื—ื™, ื’ื ื‘ืกืชืจ ื•ื’ื ืื ื”ื‘ื•ืกื™ื ืœื ืžืจื•ืฆื™ื ืžื–ื” (ืงืŸ ืช'ื•ืžืคืกื•ืŸ ืคื™ืชื— ืืช ื™ื•ื ื™ืงืก ื‘ืžืจืชืฃ ื•ืื—ืจื™ ืฉื”ืคืจื•ื™ืงื˜ ื‘ื•ื˜ืœ). ื‘ืžืงืจื” ืฉืœื ื• ืืคืฉืจ ืœื”ื—ืœื™ื˜ ืฉืขืœ ื›ืœ ืคื™ืฆ'ืจ ื ื•ืกื™ืฃ ื’ื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืื• ืชื™ืขื•ื“ ื˜ื•ื‘, ืืคืฉืจ ืœื ื”ืœ ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉืœื ื• ืขืœ ืžืื’ืจ ื’ื™ื˜ ืคืจื˜ื™, ืืคืฉืจ ืœื›ืชื•ื‘ ืื•ื˜ื•ืžืฆื™ื•ืช ื’ื ืื ืœื ื‘ื™ืงืฉื• ืžื›ื. 2. ืœืœืžื•ื“, ื’ื (ื•ื‘ืžื™ื•ื—ื“) ื“ื‘ืจื™ื ืฉืœื ืงืฉื•ืจื™ื ืœืขื‘ื•ื“ื”. 3. ืœืฉื™ื ืœื‘ ืœื“ื‘ืจื™ื ืฉืืชื ื›ืŸ ืื•ื”ื‘ื™ื ื‘ืขื‘ื•ื“ื” ื•ืœืขื‘ื•ื“ ืขืœ ื”ืื•ืฉืจ ืฉืœื ื• ื‘ื™ื•ื ื™ื•ื. ื›ื›ืœ ืฉืื ื—ื ื• ื™ื•ืชืจ ืžืชืœื”ื‘ื™ื ืžื”ืขื‘ื•ื“ื”, ืžื”ืื ืฉื™ื, ืžื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืื• ืžื›ืœ ื“ื‘ืจ ืื—ืจ ืฉืงืฉื•ืจ ื‘ืžื•ืฆืจ, ื›ืš ื™ืฉ ืœื ื• ื™ื•ืชืจ ืจืฆื•ืŸ ื•ืื ืจื’ื™ื” ืจื’ืฉื™ืช ืœืฉื ื•ืช. ื”ืžื˜ืจื” ื‘"ืœื’ื“ื•ืœ ืื™ืคื” ืฉืื ื—ื ื• ื ืžืฆืื™ื" ื”ื™ื ืœื ืœื”ืชื—ื™ืœ ืžื™ื“ ืœืขืฉื•ืช ื“ื‘ืจื™ื ื—ื“ืฉื™ื, ืืœื ืœื™ืฆื•ืจ ืืช ื”ืžืจื—ื‘ ืฉื‘ื• ื ื•ื›ืœ ืœื—ืงื•ืจ ื•ืœื’ื“ื•ืœ ืขื“ ืฉื ื”ื™ื” ื‘ื ืงื•ื“ืช ื”ื—ืœื˜ื” ื˜ื•ื‘ื” ื™ื•ืชืจ. ื‘ืกื™ืคื•ืจ ืฉืœื™ ืขื perl ืžืกืœื•ืœ ื›ื–ื” ื”ื™ื” ื™ื›ื•ืœ ืœื”ืชืžืงื“ ื‘ืื•ืชื ืœืงื•ื—ื•ืช ืฉื“ื•ื•ืงื ืจืฆื• ืœื‘ืจื•ื— ืž perl. ื”ื™ื” ืืคืฉืจ ืœื™ืฆื•ืจ ืงื•ืจืกื™ื ืกืคืฆื™ืคื™ื™ื ืฉืœ "ืคื™ื™ืชื•ืŸ ืœืžืชื›ื ืชื™ ืคืจืœ", ืœื‘ื ื•ืช ืกื˜ืืจื˜ืจื™ื ื•ืกืคืจื™ื•ืช ืชืจื’ื•ื ื˜ื•ื‘ื•ืช ื•ืœื’ื“ื•ืœ ื™ื—ื“ ืขื ื”ืœืงื•ื—ื•ืช ื‘ืžืงื•ื ืฉื‘ื• ื”ื™ื™ืชื™ ื›ื“ื™ ืœืขืฉื•ืช ืืช ื”ืžืขื‘ืจ ื™ื—ื“ ืขื ื”ืœืงื•ื—ื•ืช. ื•ื›ืŸ ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉื–ื” ื™ื‘ื•ื ืขืœ ื—ืฉื‘ื•ืŸ ื“ื‘ืจื™ื - ื›ืชื™ื‘ืช ืื•ื˜ื•ืžืฆื™ื” ื‘ืื” ืขืœ ื—ืฉื‘ื•ืŸ ื“ื“-ืœื™ื™ื ื™ื ืœื˜ื•ื•ื— ืงืฆืจ; ืžื—ืงืจ ื•ืœื™ืžื•ื“ ืœื•ืงื—ื™ื ื–ืžืŸ ืฉื’ื ืื•ืชื• ืจื•ื‘ ื”ื–ืžืŸ ืื™ืŸ. ืื‘ืœ ื—ืฉื•ื‘ ืœื–ื›ื•ืจ ืฉื‘ืจื•ื‘ ืžืงื•ืžื•ืช ื”ืขื‘ื•ื“ื” ื™ืฉ ืœื›ื ื”ืจื‘ื” ื™ื•ืชืจ ื—ื•ืคืฉ ืคืขื•ืœื” ืžืžื” ืฉืืชื ืžื“ืžื™ื™ื ื™ื, ื•ื‘ืžื™ื•ื—ื“ ื‘ืžืงื•ืžื•ืช ืขื‘ื•ื“ื” ืžื™ื•ืฉื ื™ื ืฉื™ื•ื“ืขื™ื ืฉืื™ืŸ ืœื”ื ืื™ืš ืœื’ื™ื™ืก. ืืคืฉืจ ืœื”ืชืงื“ื ื‘ืœื™ ืœื–ื•ื–. ื•ืฉื•ื•ื” ืœื”ืชืืžืฅ ื‘ืฉื‘ื™ืœ ื–ื”, ื›ื™ ื”ืืœื˜ืจื ื˜ื™ื‘ื” ืงืฉื” ื™ื•ืชืจ.

ToCode
1 419
ื‘ื•ืงืจ ื˜ื•ื‘ ืœื›ืœ ืžื™ ืฉืžืชื—ืจื˜.ืช/ืคืกืคืก.ื”/ืฉื›ื—.ื” ื‘ืขื•ื“ ืขืฉืจ ื“ืงื•ืช ื ืคื’ืฉื™ื ื‘ื–ื•ื ืœืœืžื•ื“ ืขืœ GraphQL ืืคืฉืจ ืขื“ื™ื™ืŸ ืœื”ืฆื˜ืจืฃ ื‘ืงื™ืฉื•ืจ ื”ื–ื”: https://us06web.zoom.us/j/83970209603?pwd=bVZPOCtEaHplVGtzczVWSW5UVk9jZz09

ToCode
1 419
# ื”ืกืชื›ืœื•ืช ืงื“ื™ืžื” ื‘ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืืจื™ื™ื ืฉืคืช Rust ืœื ื›ื•ืœืœืช ืชืžื™ื›ื” ืžื•ื‘ื ื™ืช ื‘ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืืจื™ื™ื, ื•ื‘ืžืงื•ื ื–ื” ื™ืฉ ืกืคืจื™ื™ืช ื”ืจื—ื‘ื” (crate) ื‘ืฉื regex ืฉืืžื•ืจ ืœืชืช ืžืขื ื”. ืžืฉืคื˜ ืื—ื“ ืžืชื™ืขื•ื“ ื”ืคืชื™ื— ืฉืœ ื”ืกืคืจื™ื” ืžื™ื“ ืชื•ืคืก ืืช ื”ืขื™ืŸ:
This crate provides a library for parsing, compiling, and executing regular expressions. Its syntax is similar to Perl-style regular expressions, but lacks a few features like look around and backreferences.
ืžื” ื”ื ืื•ืชื look around features ื•ืื™ื–ื” ื›ื•ื—ื•ืช ืขืœ ื”ื ืžื•ืกื™ืคื™ื ืœื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืืจื™ื™ื? ื‘ื•ืื• ื ื’ืœื”. ## ืืชื’ืจ ืคืจืœ ื”ืฉื‘ื•ืขื™ 185 ื‘ืืชื’ืจ ื”ืคืจืœ ื”ืฉื‘ื•ืขื™ ืžื•ื—ืžื“ ืžืฆื™ืข ืืช ืฉื ื™ ื”ืชืจื’ื™ืœื™ื ื”ื‘ืื™ื ื›ืื™ืœื• ืœืคื™ ื”ื–ืžื ื”: 1. ื ืชื•ืŸ ืงืœื˜ ืฉื ืจืื” ื›ืžื• ื›ืชื•ื‘ืช Mac ื‘ืคื•ืจืžื˜ abc1.20f1.345a; ื”ืคื›ื• ืื•ืชื• ืœืคื•ืจืžื˜ ab:c1:20:f1:34:5a. 2. ื ืชื•ืŸ ืงืœื˜ ืฉื ืจืื” ื›ืžื• ืžื—ืจื•ื–ืช ื˜ืงืกื˜ ืขื ืชื•ื•ื™ ื”ืคืจื“ื” ื‘ื™ืŸ ื—ืœืง ืžื”ืื•ืชื™ื•ืช (ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ื‘ื›ืœ ืžืงื•ื), ืœื“ื•ื’ืžื” 123.abc.420. ื”ืคื›ื• ืืช 4 ื”ืื•ืชื™ื•ืช ื”ืจืืฉื•ื ื•ืช ืœ x-ื™ื. ื™ืฉ ืžื™ืœื™ื•ืŸ ื“ืจื›ื™ื ืœืคืชื•ืจ ื›ืœ ืกืขื™ืฃ ื•ืืชื ื™ื›ื•ืœื™ื ืœืงืคื•ืฅ ืœื“ืฃ ื”ืืชื’ืจ ื•ืœื”ื’ื™ืฉ ืคื™ืชืจื•ืŸ ื‘ื›ืœ ืฉืคื” ืฉืชืจืฆื•. ืื ื™ ืืกืชืคืง ื‘ืกืขื™ืฃ ื”ืจืืฉื•ืŸ ื•ื‘ืคื™ืชืจื•ืŸ ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ื›ื“ื™ ืœืœืžื•ื“ ืขืœ ื”ืกืชื›ืœื•ืช ืงื“ื™ืžื” ื‘ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืืจื™ื™ื. ## ื”ืกืชื›ืœื•ืช ืงื“ื™ืžื” ื‘ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืืจื™ื™ื ื‘ื—ืœืง ื”ืจืืฉื•ืŸ ืื ื—ื ื• ืจื•ืฆื™ื ืœืฉื ื•ืช ืืช ื”ืคื•ืจืžื˜ ืฉืœ ื›ืชื•ื‘ืช ืžืง ื•ืœื”ื•ืกื™ืฃ ื ืงื•ื“ื•ืชื™ื™ื ื‘ื™ืŸ ื›ืœ ืฉืชื™ ืกืคืจื•ืช. ื”ื—ืœืง ื”ืงืœ ื”ื•ื ืœื”ื•ืจื™ื“ ืืช ื”ื ืงื•ื“ื•ืช:
echo '1ac2.34f0.b1c2' | perl -pe 's/[^a-z0-9]//g'

1ac234f0b1c2
ื•ื™ืฉ ืœื™ ื’ื ืจืขื™ื•ืŸ ืื™ืš ืœื”ื•ืกื™ืฃ ื ืงื•ื“ื•ืชื™ื™ื ื‘ื™ืŸ ื›ืœ ืฉื ื™ ืชื•ื•ื™ื:
echo '1ac2.34f0.b1c2' | perl -pe 's/[^a-z0-9]//g' | perl -pe 's/(..)/$1:/g'
ืื‘ืœ ื™ืฉ ื‘ืขื™ื” ืขื ื”ืคื™ืชืจื•ืŸ ื”ื–ื”. ื›ืš ื ืจืื” ื”ืคืœื˜:
1a:c2:34:f0:b1:c2:
ื›ืžืขื˜ ืžื” ืฉืจืฆื™ืชื™, ืžืœื‘ื“ ื”ื ืงื•ื“ื•ืชื™ื™ื ื‘ืกื•ืฃ. ื‘ืขืฆื ื”ื™ื™ืชื™ ืจื•ืฆื” ืœืขื“ื›ืŸ ืืช ื”ื‘ื™ื˜ื•ื™ ื”ืจื’ื•ืœืืจื™ ื•ืœื”ื’ื™ื“ "ืชื—ืœื™ืฃ ื›ืœ ืฉื ื™ ืชื•ื•ื™ื ื‘ืื•ืชื ืฉื ื™ ืชื•ื•ื™ื ืขื ื ืงื•ื“ื•ืชื™ื™ื ืื—ืจื™, ืื‘ืœ ืจืง ืื ื–ื” ืœื ื”ื–ื•ื’ ื”ืื—ืจื•ืŸ" ืื• ื‘ื ื™ืกื•ื— ืื—ืจ "ืชื—ืœื™ืฃ ื›ืœ ืฉื ื™ ืชื•ื•ื™ื ืฉืื—ืจื™ื”ื ื™ืฉ ืขื•ื“ ืชื• ื‘ืื•ืชื ืฉื ื™ ืชื•ื•ื™ื ืขื ื ืงื•ื“ื•ืชื™ื™ื ืื—ืจื™". ื”ืžื™ืœื™ื "ืฉืื—ืจื™ื”ื ื™ืฉ ืขื•ื“ ืชื•" ื ืงืจืื•ืช Positive Look Ahead ื•ื‘ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ื›ื•ืชื‘ื™ื ืืช ื–ื” ืขื ืกื•ื’ืจื™ื™ื ืขื’ื•ืœื™ื ื•ื‘ืชื•ื›ื ืกื™ืžืŸ ืฉืืœื”, ืกื™ืžืŸ ืฉื•ื•ื” ื•ืื—ืจื™ื• ืžื” ืฉืจื•ืฆื™ื ืœืžืฆื•ื. ืœื›ืŸ ื‘ืฉื‘ื™ืœ ืœื–ื”ื•ืช ืฉื ื™ ืชื•ื•ื™ื ืฉืื—ืจื™ื”ื ื™ืฉ ืขื•ื“ ืชื• ืื ื™ ืžืคืขื™ืœ:
echo '1ac2.34f0.b1c2' | perl -pe 's/[^a-z0-9]//g' | perl -pe 's/(..)(?=.)/$1:/g'

1a:c2:34:f0:b1:c2
ื•ืื ืืชื ื—ื•ืฉื‘ื™ื ืฉืืคืฉืจ ื”ื™ื” ืœืคืชื•ืจ ืืช ื–ื” ืขื ื”ืชืืžื” ื™ื•ืชืจ ืืจื•ื›ื” (ืฉืœื•ืฉื” ืชื•ื•ื™ื ื‘ืžืงื•ื ืฉื ื™ื™ื), ืชืฆื˜ืจื›ื• ืœืงื—ืช ืื•ื•ื™ืจ ื•ืœื—ืฉื•ื‘ ืฉื•ื‘ - ืื ื”ืชืืžืชื™ ื›ื‘ืจ ืืช ื”ืชื• ื”ืฉืœื™ืฉื™ ืื– ื”ื‘ื™ื˜ื•ื™ ื”ืจื’ื•ืœืืจื™ ืœื ื™ืžืฆื ืื•ืชื• ื‘ื”ืชืืžื” ื”ื‘ืื”. ื‘ืžื™ืœื™ื ืื—ืจื•ืช ื–ื” ืœื ืขื•ื‘ื“:
echo '1ac2.34f0.b1c2' | perl -pe 's/[^a-z0-9]//g' | perl -pe 's/(..)(.)/$1:$2/g'

1a:c23:4f0:b1c:2
ืืช ื”ื—ืœืง ื”ืฉื ื™ ืื ื™ ืœื ื—ื•ืฉื‘ ืฉืืคืฉืจ ืœืคืชื•ืจ ืขื ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืืจื™ื™ื ื‘ืœื‘ื“. ืื ื™ืฉ ืœื›ื ืจืขื™ื•ืŸ ืืฉืžื— ืฉืชืฉืชืคื• ื‘ืชื’ื•ื‘ื•ืช.

ToCode
1 419
# ื”ืชื—ื™ื‘ื•ืช ืื• ื”ืขืจื›ื” ื›ืฉืื ื™ ืžืขืจื™ืš ืฉื™ื™ืงื— ืœื™ ืฉื‘ื•ืข ืœืกื™ื™ื ืคื™ืฆ'ืจ, ืื ื™ ืžืชื›ื•ื•ืŸ ืฉืื ื™ ื”ื•ืœืš ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“ ืœืคื™ ื” Best Practices ืฉืื ื™ ืžื›ื™ืจ ื‘ื“ื™ื•ืง ื›ืžื• ืฉืขื‘ื“ืชื™ ืขื“ ืขื›ืฉื™ื•, ื•ืœื™ื™ืฆืจ ืชื•ื›ื ื” ื‘ืื•ืชื” ืจืžื” ืฉื™ื™ืฆืจืชื™ ืขื“ ืขื›ืฉื™ื•, ื•ื‘ื”ื™ื ืชืŸ ื›ืœ ืžื” ืฉืื ื™ ื™ื•ื“ืข ืขืœ ื”ืคื™ืฆ'ืจ ื•ืขืœ ื”ืžืขืจื›ืช ื‘ืขื•ื“ ืฉื‘ื•ืข ื”ืคื™ืฆ'ืจ ื™ื”ื™ื” ืžื•ื›ืŸ. ื›ืฉืื ื™ ืžืชื—ื™ื™ื‘ ืœืกื™ื™ื ืคื™ืฆ'ืจ ืชื•ืš ืฉื‘ื•ืข ืื ื™ ืžืชื›ื•ื•ืŸ ืฉืกื™ื•ื ื”ืคื™ืฆ'ืจ ื™ื•ืชืจ ื—ืฉื•ื‘ ืžื”ืื™ื›ื•ืช ื”ื›ื•ืœืœืช ืฉืœ ื”ืžืขืจื›ืช ืื• ื›ืžื•ืช ื”ื‘ืื’ื™ื ืฉื™ื•ื•ืฆืจื•, ืื• ืืคื™ืœื• ืžื” Spec ื”ืกืคืฆื™ืคื™ ืฉืœ ื”ืคื™ืฆ'ืจ. ืื ืื ื™ ืžืชื—ื™ื™ื‘ ืฉืชื•ืš ืฉื‘ื•ืข ืืคืฉืจ ื™ื”ื™ื” ืœืฉืœื ื‘ื‘ื™ื˜ืงื•ื™ืŸ ืื ื™ ื‘ืื•ืชื” ื ืฉื™ืžื” ืžืกื›ื™ื ืœื•ื•ืชืจ ืขืœ ืชืชื™-ืคื™ืฆ'ืจื™ื ื‘ืชื•ืš ืื•ืชื• ืคื™ืฆ'ืจ ื’ื“ื•ืœ (ืžื” ืชื”ื™ื” ื”ืขืžืœื”? ืžื” ื™ื”ื™ื” ื™ื—ืก ื”ื”ืžืจื”? ื›ืžื” ืขื‘ื•ื“ื” ืžืฉืชืžืฉื™ื ื™ืฆื˜ืจื›ื• ืœืขืฉื•ืช ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ืคื™ืฆ'ืจ? ื›ืžื” ื–ื” ื™ื”ื™ื” ืœื”ื ื ื•ื—?). ื‘ื›ืœ ืคืจื•ื™ืงื˜ ื™ืฉ ืžืงื•ื ืœื›ืœ ืื—ืช ืžืฉืชื™ ื“ืจื›ื™ ื”ืขื‘ื•ื“ื” ื•ืจื•ื‘ ื”ืคืจื•ื™ืงื˜ื™ื ืžืฉืœื‘ื™ื ืืช ื”ืฉืชื™ื™ื. ื›ืŸ ื—ืฉื•ื‘ ืœื”ื™ื•ืช ื‘ืจื•ืจื™ื ืœืžื” ืืชื ืžืชื›ื•ื•ื ื™ื ื•ืžื” ื”ืฆื™ืคื™ื•ืช ืฉืœ ืฉืืจ ื”ืฆื•ื•ืช ื›ืฉืžืชื—ื™ืœื™ื ืœืขื‘ื•ื“ ืขืœ ืคื™ืฆ'ืจ ืื• ืžืฉื™ืžื”.

ToCode
1 419
# ื˜ื™ืค ื˜ื™ื™ืคืกืงืจื™ืคื˜: ืžื—ืœื™ืคื™ื if ื‘ switch ืงื•ื“ ื”ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื”ื‘ื ืœื ืžืชืงืžืคืœ, ืœืžืจื•ืช ืฉืื™ืŸ ื‘ื• ืฉื•ื ื“ื‘ืจ ืœื ื‘ืกื“ืจ:
type AB = "a"|"b";

function test(x: AB): number {
    if (x === "a") {
        return 1;
    } else if (x === "b") {
        return 2;
    }
}
ื–ื” ื”ืœื™ื ืง ืœืคืœื™ื™ื’ืจืื•ื ื“ ืื ืืชื ืฆืจื™ื›ื™ื ื”ื•ื›ื—ื”: https://www.typescriptlang.org/play?#code/C4TwDgpgBAggQlAvFARAQxQHxQIxQbgChCAzAVwDsBjYASwHsKpgIBnYACgA8AuWOAJR8KZALY4IAJygBvQlAVRaJKNySJk6FANnzF+yRGBlJTAIxF9AXygQANq2jLVXdZrw65+g0ZNMATJaKVoRWQA ื”ืงื• ื”ืื“ื•ื ื”ื•ื ืžืชื—ืช ืœืžื™ืœื” number ื‘ืชื™ืื•ืจ ืขืจืš ื”ื”ื—ื–ืจ ืฉืœ ื”ืคื•ื ืงืฆื™ื”, ื‘ื’ืœืœ ืฉื˜ื™ื™ืคืกืงืจื™ืคื˜ ืœื ืžืฉื•ื›ื ืข ืฉื‘ื›ืœ ื”ืžืงืจื™ื ื”ืคื•ื ืงืฆื™ื” ืื›ืŸ ืชื—ื–ื™ืจ ืขืจืš ืžืกืคืจื™. ื™ื›ื•ืœ ืœื”ื™ื•ืช, ื”ื•ื ื—ื•ืฉื‘, ืฉืืฃ if ืœื ื™ืชืงื™ื™ื ื•ื”ืคื•ื ืงืฆื™ื” ืชื—ื–ื™ืจ undefined. ืื ื—ื ื• ื™ื•ื“ืขื™ื ืฉื–ื” ืœื ื™ื›ื•ืœ ืœืงืจื•ืช ื›ื™ ื‘ื“ืงื ื• ืืช ื›ืœ ื”ืืคืฉืจื•ื™ื•ืช ืฉืœ x, ื•ื”ื™ื™ื ื• ืจื•ืฆื™ื ืœืฉื›ื ืข ื‘ื–ื” ื’ื ืืช ื˜ื™ื™ืคืกืงืจื™ืคื˜. ื“ืจืš ืื—ืช ืœืขืฉื•ืช ืืช ื–ื” ื”ื™ื ืœืขื‘ื•ืจ ืœ switch:
function test(x: AB): number {
    switch(x) {
        case "a": return 1;
        case "b": return 2;
    }
}
ืขื ื–ื” ืื™ืŸ ื‘ืขื™ื” ื›ื™ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืžื‘ื™ืŸ ืฉื” switch ืžื›ืกื” ืืช ื›ืœ ื”ืžืฆื‘ื™ื. ื™ื•ืชืจ ืžื–ื”, ืื ื‘ืขืชื™ื“ ืื ื™ ืืฉื ื” ืืช ื”ื’ื“ืจืช ื”ื˜ื™ืคื•ืก AB ืื– ืืงื‘ืœ ืงื• ืื“ื•ื ื‘ื”ื’ื“ืจืช ื”ืคื•ื ืงืฆื™ื” ื•ืื“ืข ืฉืฆืจื™ืš ืœืชืงืŸ ืื•ืชื”. ื‘ืžืฉื‘ืฆืช ื”ืชื™ืงื•ื ื™ื ื”ืคื—ื•ืช ื˜ื•ื‘ื™ื ืืคืฉืจ ืœืžืฆื•ื ืืช ื–ื”:
function test(x: AB): number {
    if (x === "a") {
        return 1;
    } else if (x === "b") {
        return 2;
    } else {
        // never happens
        return 0;
    }
}
ืฉืžืชืงืŸ ืืช ื”ื‘ืขื™ื” ืื‘ืœ ืœื ืžื’ืŸ ืขืœื™ื™ ืžืฉื™ื ื•ื™ ืขืชื™ื“ื™ ื‘ AB. ื•ื’ื ืืช ื–ื” ืฉืกื•ื‘ืœ ืžืื•ืชื” ื‘ืขื™ื”:
// @ts-ignore
function test(x: AB): number {
    if (x === "a") {
        return 1;
    } else if (x === "b") {
        return 2;
    }
}
ืชื™ืงื•ืŸ ืื—ืจื•ืŸ ืœืคื•ืกื˜ ืฉืขื•ื‘ื“ ื”ืคืขื ืื‘ืœ ืคื—ื•ืช ืžื•ืžืœืฅ ื‘ืžืงืจื” ื”ื›ืœืœื™ ื”ื•ื:
function test(x: AB): number {
    return {
        "a": 1,
        "b": 2,
    }[x];
}
ื’ื™ืจืกื” ื–ื• ืชื–ืจื•ืง ืฉื’ื™ืื” ืื ื ืฉื ื” ืืช ื” Union, ืื‘ืœ ื”ื—ื™ืกืจื•ืŸ ืฉืœื” ื”ื•ื ืฉื”ื™ื ืžื—ืฉื‘ืช ืืช ื›ืœ ื”ืขืจื›ื™ื ื‘ืœื™ ืงืฉืจ ืœืขืจืš ืฉืœ x. ื›ืืŸ ื–ืืช ืœื ื‘ืขื™ื” ื›ื™ ื›ื•ืœื ืงื‘ื•ืขื™ื ืื‘ืœ ื‘ืžืงืจื” ื”ื›ืœืœื™ ืœื ืชืžื™ื“ ื–ื” ืืคืฉืจื™ ืื• ืจืฆื•ื™.

ToCode
1 419
# ืคืจื™ืœืื ืก ื•ืขืจืš ืœืœืงื•ื— ื‘ืขื•ืœื ื”ืคื™ืชื•ื— (ื•ื›ื ืจืื” ื‘ืขื•ืœืžื•ืช ื™ืฆื™ืจืชื™ื™ื ื ื•ืกืคื™ื), ื”ื”ืงืœื“ื” ื”ื™ื ื”ื—ืœืง ื”ืงืœ ื‘ืขื‘ื•ื“ื”. ื”ืงื•ืฉื™ ื”ื•ื ืœื”ื‘ื™ืŸ ืžื” ืฆืจื™ืš ืœื›ืชื•ื‘. ืขืœ ื ื•ืฉื ืฉื›ื‘ืจ ืœื™ืžื“ืชื™ ืขืฉืจื•ืช ืคืขืžื™ื ืื ื™ ื™ื›ื•ืœ ื‘ืฉืขื” ืœื›ืชื•ื‘ ืžืฆื’ืช ืžืขื•ืœื” ื•ืœื”ืขื‘ื™ืจ ืื•ืชื” ื‘ืฆื•ืจื” ืžืขื ื™ื™ื ืช ืฉืชืขื–ื•ืจ ืœืื ืฉื™ื ืœืจืื•ืช ืืช ื”ืงืกื ื‘ื ื•ืฉื ื•ืชื—ืกื•ืš ืœื”ื ื˜ืขื•ื™ื•ืช ื•ื–ืžืŸ ืœื™ืžื•ื“ ื™ืงืจ. ืขืœ ื ื•ืฉื ืฉืœื ืœื™ืžื“ืชื™ ืืฃ ืคืขื, ืื ื™ ื™ื›ื•ืœ ืœืฉื‘ืช ืฉื‘ื•ืขื•ืช ืœื›ืชื•ื‘ ืžืฆื’ืช (ื‘ืื•ืชื• ืื•ืจืš), ื•ืœื”ื’ื™ืข ืœืชื•ืฆืื” ื”ืจื‘ื” ืคื—ื•ืช ื˜ื•ื‘ื”. ื•ื›ืืŸ ื”ืกื•ื“ ืฉืœ ืคืจื™ืœืื ืก - ืื ืืชื ื™ื›ื•ืœื™ื ืœืžืฆื•ื ื“ื‘ืจ ืงื˜ืŸ ืฉืืชื ืขื•ืฉื™ื ื™ื•ืชืจ ืžื”ืจ ื•ื™ื•ืชืจ ื˜ื•ื‘ ืžื›ืœ ื”ืื—ืจื™ื (ื›ื™ ืขืฉื™ืชื ืืช ื–ื” ื›ื‘ืจ ืขืฉืจื•ืช ืคืขืžื™ื, ื›ื™ ื™ืฉ ืœื›ื ื›ื™ืฉืจื•ืŸ ืœื“ื‘ืจ ื”ื–ื”, ื›ื™ ื”ืฉืงืขืชื ื”ืจื‘ื” ื™ื•ืชืจ ืžืžื” ืฉื›ืœ ืื—ื“ ืื—ืจ ืžื•ื›ืŸ ืœื”ืฉืงื™ืข ื‘ืœื”ื™ื•ืช ื”ื›ื™ ื˜ื•ื‘ื™ื ื‘ืขื•ืœื ื‘ื“ื‘ืจ ื”ืงื˜ืŸ ื”ื–ื”), ื‘ืงื™ืฆื•ืจ "ืื" ืขืฉื™ืชื ืืช ื”ืขื‘ื•ื“ื”, ืชื•ื›ืœื• ืœืžื›ื•ืจ ืืช ื”ืชื•ืฆืื” ื‘ืžื—ื™ืจ ื’ื‘ื•ื” ื‘ื”ืจื‘ื” ืžื”ืขืœื•ืช ื”ืฉืขืชื™ืช ืฉืœ ืื•ืชื• ืคืจื•ื™ืงื˜. ื”ืชืฉืœื•ื ื”ื•ื ืœื ืคืจ-ืฉื•ืจืช ืงื•ื“, ืืœื ืขื‘ื•ืจ ืขืฉืจื•ืช ืื• ืžืื•ืช ื”ืฉืขื•ืช ืฉื”ื•ืฉืงืขื• ื‘ืœื”ื’ื™ืข ืœืื•ืชื” ืžื™ื•ืžื ื•ืช ื‘ื›ืชื™ื‘ืช ื”ืฉื•ืจื”. ื•ื›ืืŸ ื’ื ื”ืžืคืชื— ืœื”ืฆืœื—ื” ื›ืคืจื™ืœืื ืกืจื™ื - ื‘ืžืงื•ื ืœื—ืคืฉ ืคืจื•ื™ืงื˜ื™ื ื™ืฉ ืœื—ืคืฉ ื“ื‘ืจื™ื ืฉืืชื ืžืกื•ื’ืœื™ื ืœื”ื™ื•ืช ื˜ื•ื‘ื™ื ื‘ื”ื, ื•ืฉืื ืฉื™ื ืื—ืจื™ื ืจื•ืฆื™ื ืื• ืงื•ื ื™ื ืื•ืชื ื›ื‘ืจ ื”ื™ื•ื.

ToCode
1 419
# ื”ื–ืžื ื” ืœื•ื•ื‘ื™ื ืจ: ื”ื™ื›ืจื•ืช ืขื GraphQL ื”ืžื—ืฉื‘ื” ืžืื—ื•ืจื™ REST ื”ื™ืชื” ื’ืื•ื ื™ืช ื‘ืคืฉื˜ื•ืชื” - ืคืจื•ื˜ื•ืงื•ืœ ืฉืื—ืจืื™ ืขืœ ื”ืขื‘ืจืช State ืžืฉืจืช ืœืœืงื•ื—, ื•ื‘ืฉืžื• ื”ืžืœื Representational State Transfer. ื”ืœืงื•ื— ื ื›ื ืก ืœืงื™ืฉื•ืจ ืฉืžื™ื™ืฆื’ State ืžืกื•ื™ื ื‘ื™ื™ืฉื•ื, ื•ื”ืฉืจืช ื‘ืชื’ื•ื‘ื” ืฉื•ืœื— ืืช ื›ืœ ื”ืžื™ื“ืข ืฉืœ ื”ืกื˜ื™ื™ื˜ ื”ื–ื” ื‘ื“ืจืš ื›ืœืœ ื›ืื•ื‘ื™ืงื˜ JSON. ืจืกื˜ ื”ื™ื” (ื•ื›ื ืจืื” ืขื”ื•ื ืขื“ื™ื™ืŸ) ื”ื“ืจืš ื”ืจื’ื™ืœื” ืœื›ืชื™ื‘ืช ืคืจื•ื˜ื•ืงื•ืœื™ ืชืงืฉื•ืจืช ื‘ืขื•ืœื ื” Web, ืœืคื—ื•ืช ืžืื– ืฉื”ืคืกืงื ื• ืœื”ืฉืชืžืฉ ื‘ SOAP ื•ืœืฉืœื•ื— XML-ื™ื ืžืฆื“ ืœืฆื“. ืื‘ืœ ื”ืคืฉื˜ื•ืช ืฉืœ REST ื”ื™ื ื’ื ื”ื‘ืขื™ื” ื”ื›ื™ ื’ื“ื•ืœื” ืื™ืชื•, ืฉื‘ืื” ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ื›ื›ืœ ืฉื™ื™ืฉื•ืžื™ื ื”ื•ืคื›ื™ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ ื•ื›ื›ืœ ืฉืžืชื—ื–ืงืช ื”ื”ืคืจื“ื” ื‘ื™ืŸ ืฆื•ื•ืชื™ ื”ืคื™ืชื•ื—: 1. ืœืžืขืจื›ืช ื™ืฉ ืžืกืคืจ ืœืงื•ื—ื•ืช (ืœืžืฉืœ Web ื• Mobile), ื•ื›ืœ ืื—ื“ ืžื”ื ืฆืจื™ืš ืœื”ืฆื™ื’ ืžื™ื“ืข ืฉื•ื ื”, ื›ืœื•ืžืจ State-ื™ื ืฉื•ื ื™ื. 2. ืžืื—ืจ ื•ื›ืœ State ืžื™ื•ืฆื’ ื‘ REST ืขืœ ื™ื“ื™ Endpoint ื‘ืฉืจืช, ืื ื—ื ื• ื ืฉืืจื™ื ืœื‘ื—ื•ืจ ืื—ืช ืžืฉืชื™ ื’ื™ืฉื•ืช ื‘ืขื™ื™ืชื™ื•ืช - ืื• ืฉื ื‘ื ื” Endpoints ื ืคืจื“ื™ื ื‘ืฉืจืช ืœื›ืœ ื™ื™ืฉื•ื, ืื• ืฉื›ืœ ื™ื™ืฉื•ื ื™ืฆื˜ืจืš ืœื’ืฉืช ืœื›ืžื” Endpoints ื›ื“ื™ ืœืžืฉื•ืš ืืช ื”ืžื™ื“ืข ืฉื”ื•ื ืฆืจื™ืš. ื’ืจืฃ ืงื™ื• ืืœ ื”ื•ื ื“ืจืš ื—ื“ืฉื” ืœื›ืชื•ื‘ ืคืจื•ื˜ื•ืงื•ืœื™ ืจืฉืช ืฉืžืขื‘ื™ืจ ืืช ื”ื›ื— ืžื”ืฉืจืช ืœืœืงื•ื—, ื•ืžืืคืฉืจ ืœืฉืจืช ืœื™ื™ืฆื’ "ืžืฉืื‘ื™ื" ื•ืœืœืงื•ื— ืœื”ื—ืœื™ื˜ ืื™ื–ื” ืžืฉืื‘ื™ื ื”ื•ื ืฆืจื™ืš ื‘ื›ืœ ืžืกืš. ื‘ืขื–ืจืช GraphQL ืืคืฉืจ ืœื›ืชื•ื‘ ืงื•ื“ ืฆื“-ืฉืจืช ื•ื™ื™ืฉื•ืžื™ ืฆื“-ืœืงื•ื— ื‘ืฆื•ืจื” ืžื ื•ืชืงืช ืื—ื“ ืžื”ืฉื ื™. ื’ืจืฃ ืงื™ื• ืืœ ืžืืคืฉืจ ืœืฆื•ื•ืชื™ื ื’ื“ื•ืœื™ื ืœืขื‘ื•ื“ ื™ื—ื“ ื‘ืœื™ ืœืคื’ื•ืข ื‘ืื™ื›ื•ืช ื”ืžื•ืฆืจ ื•ื‘ื‘ื™ืฆื•ืขื™ื, ื•ื‘ืœื™ ืœื™ืฆื•ืจ ืชืœื•ื™ื•ืช ื‘ื™ืŸ ื”ืฆื•ื•ืชื™ื, ื•ื›ืš ื”ื•ื ืžื”ื•ื•ื” ืคื™ืชืจื•ืŸ ืžื•ืฉืœื ืœืžืขืจื›ื•ืช ืฉืžืคื•ืชื—ื•ืช ื‘ื’ื™ืฉืช Micro Services. ื‘ื™ื•ื ื—ืžื™ืฉื™ ื”ืงืจื•ื‘ ื‘ืชืืจื™ืš 6/10 ื‘ืฉืขื” 10:00 ืฉืขื•ืŸ ื™ืฉืจืืœ ืืขื‘ื™ืจ ื•ื•ื‘ื™ื ืจ ืฉืœ ืฉืขื” ืขืœ GraphQL ื‘ื• ืืกืคืจ ืขืœ ื”ืคืจื•ื˜ื•ืงื•ืœ ื•ืืจืื” ืื™ืš ืœืงื—ืช ื™ื™ืฉื•ื Node.JS ืฉื‘ื ื•ื™ ื‘ื’ื™ืฉืช REST ื•ืœื”ืคื•ืš ืื•ืชื• ืœ GraphQL ื‘ืืžืฆืขื•ืช ื›ืชื™ื‘ืช Schema ื• Resolver. ื”ื•ื•ื‘ื™ื ืจ ื™ืขื‘ื•ืจ ื‘ื–ื•ื ื•ืืชื ืžื•ื–ืžื ื™ื ืœื”ื™ืจืฉื ื•ืœื”ืฆื˜ืจืฃ ื‘ืงื™ืฉื•ืจ: https://www.tocode.co.il/workshops/123