en
Feedback
ToCode

ToCode

Open in Telegram

讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽

Show more
1 419
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
ToCode
1 419
# 讚讜拽专 拽讜诪驻讜讝 诇驻讬转讜讞 讛谞讛 讟专讬拽 讚讜拽专 驻砖讜讟 砖讞住讱 诇讬 讛专讘讛 讝诪谉 讛讬讜诐 讜讞砖讘转讬 诇砖转祝. 讚诪讬讬谞讜 砖讬砖 诇讻诐 诪注专讻转 砖诪讜专讻讘转 诪诪住驻专 诪讬拽专讜 住专讘讬住讬诐 讜诪住驻专 讘住讬住讬 谞转讜谞讬诐 讜转讜专讬 讛讜讚注讜转 讻讚讬 诇讞讘专 讗转 讻诇 讛讘诇讗讙谉 讛讝讛. 注讻砖讬讜 讘住讘讬讘转 驻专讜讚拽砖谉 讛讻诇 讟讜讘 讬砖 诇谞讜 讗讬诪讙'讬诐 诪住讜讚专讬诐 诇讻诇 讛诪注专讻讜转 讜讻讜诇诐 砖诪讞讬诐. 讗讘诇 诪讛 拽讜专讛 讘驻讬转讜讞? 讘诪爪讘 驻讬转讜讞 讗谞讞谞讜 诪砖谞讬诐 拽讜讚 讻诇 讛讝诪谉 讜专讜爪讬诐 诇专讗讜转 讗转 讛转讜爪讗讛 诪讬讚 讘诇讬 诇讘谞讜转 诪讞讚砖 讗转 讻诇 讛讗讬诪讙'讬诐. 讜讛讟专讬拽 讘砖讘讬诇 诇讛砖讬讙 讗转 讛讗驻拽讟 讛讝讛 谞拽专讗 Docker Volumes. 讻诇讜诪专 讘诪爪讘 驻讬转讜讞, 讘诪拽讜诐 诇讛专讬抓 讗转 讛拽讜讚 诪讛讗讬诪讙' 讗谞讞谞讜 谞讬拽讞 讗转 讛拽讜讚 诪讻讜谞谉 注诇 讛诪讞砖讘 讛诪讗专讞. 讻诇 砖讬谞讜讬 拽讜讚 讗爪诇讬 注诇 讛诪讞砖讘 讛诪讗专讞 讗讜讟讜诪讟讬转 讬讬拽诇讟 讘转讜讱 讛拽讜谞讟讬讬谞专 讜讬讙专讜诐 诇讟注讬谞讛 诪讞讚砖 砖诇 讛拽讜讚. 讛谞讛 拽讜讘抓 docker-compose.yml 拽讟谉 诇讛诪讞砖讛:
version: "3.9"

services:
  mongo:
    image: mongo

  rabbitmq:
    image: rabbitmq

  web:
    build: ./mainapp
    command: ["/usr/bin/wait-for-it.sh", "rabbitmq:5672", "--", "bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]
    volumes:
      - ./mainapp:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - rabbitmq

  service:
    build: ./service
    command: ["/usr/bin/wait-for-it.sh", "mongo:27017", "--", "/usr/bin/wait-for-it.sh", "rabbitmq:5672", "--", "nodemon", "main.js"]
    volumes:
      - ./service:/myapp
    depends_on:
      - rabbitmq
      - mongo
讛拽讜讘抓 诪转讗专 讘住讬住 谞转讜谞讬诐 诪讜谞讙讜, 转讜专 讛讜讚注讜转 rabbitmq, 讗驻诇讬拽爪讬讬转 专讬讬诇住 专讗砖讬转 讜 Micro Service 讬讞讬讚 讘 node.js. 讛拽讜讘抓 诪讜转讗诐 诇住讘讬讘转 驻讬转讜讞 讜讘住讘讬讘转 驻专讜讚拽砖谉 讬讛讬讛 诇谞讜 docker-compose.yml 讗讞专. 讛拽讜讘抓 诪转讬讬讞住 诇砖转讬 转讬拽讬讜转 砖谞诪爪讗讜转 讗讬转讜 讘讗讜转讜 诪讬拽讜诐: 讘转讬拽讬讛 service 谞诪爪讗 Micro Service 砖讻转讜讘 讘 Node.js 讜讘转讬拽讬讛 mainapp 谞诪爪讗转 讗驻诇讬拽爪讬讬转 专讬讬诇住. 诇讻诇 讗讞讚 诪讛诐 讬砖 Dockerfile 诪砖诇讜 讜讘讙诇诇 讝讛 讛砖讬诪讜砖 讘 build. 讗讘诇 讗讜转讜 Dockerfile 诪讙讚讬专 讗转 讛转讬拽讬讛 /myapp 讘转讜专 转讬拽讬讬转 讛讘讬转 讘讗诪爪注讜转 讛驻拽讜讚讛:
WORKDIR /myapp
注讻砖讬讜 讻砖诪讙讬注讬诐 诇讛专讬抓 讗转 讛驻拽讜讚讛 讛专讗砖讬转 砖诇 讛拽讜谞讟讬讬谞专 诪讛 砖讛拽讜谞讟讬讬谞专 专讜讗讛 讘转讜专 转讬拽讬讬转 讛讘讬转 讝讛 讘注爪诐 讛转讬拽讬讛 service 砖谞诪爪讗转 讗爪诇讬 注诇 讛诪讻讜谞讛. 讛 nodemon 砖专抓 讘转讜讱 讛拽讜谞讟讬讬谞专 注讜拽讘 讗讞专讬 砖讬谞讜讬讬诐 讘拽讜讚 砖拽讜专讬诐 讗爪诇讬 注诇 讛诪讻讜谞讛, 讜讻砖讗谞讬 诪砖谞讛 讗转 讛拽讜讚 讘住专讘讬住 讗讜讟讜诪讟讬转 nodemon 讬讟注谉 讗转 讛拽讜讚 诪讞讚砖. 注诐 拽讜讘抓 讛 docker-compose.yml 讛讝讛 诪住驻讬拽 诇讛驻注讬诇 驻注诐 讗讞转:
$ docker compose build
讜讗讞专讬 讝讛 讘转讞讬诇转 讛驻讬转讜讞:
$ docker compose up
讜讛诪注专讻转 注讜诇讛 注诐 讻诇 讛住专讘讬住讬诐 讜讛讗驻诇讬拽爪讬讜转 讜讘住讬住讬 讛谞转讜谞讬诐 讜诪讛 诇讗. 讬砖 诇讻诐 讟专讬拽讬诐 谞讜住驻讬诐 诇驻讬转讜讞 拽诇 注诐 docker-compose 讗讜 docker? 讗砖诪讞 诇砖诪讜注 讜诇诇诪讜讚, 诪讜讝诪谞讬诐 诇砖转祝 讘转讙讜讘讜转.

ToCode
1 419
# 讜诪讛 诇诪讚转诐 讛讬讜诐? 讘转讬 讞专讜砖转 注讜讘讚讬诐 诪住讘讬讘 诇砖注讜谉 讜讻诇 讬讜诐 诪讬讬爪专讬诐 讚讘专讬诐 讘拽爪讘 拽讘讜注 讜讬讚讜注 诪专讗砖. 讘转讬 住驻专 谞讬住讜 诇讞拽讜转 讗转 讛讟讻谞讬拽讛 讜讻讱 谞讜爪专讜 转讜讻谞讬转 讛诇讬诪讜讚讬诐, 讛砖讬注讜专讬诐, 讛诪讘讞谞讬诐 讜讙诐 讛砖讗诇讛 砖讛讛讜专讬诐 讗讜讛讘讬诐 诇砖讗讜诇 讗转 讛讬诇讚讬诐 讘住讜祝 讛讬讜诐: "讜诪讛 诇诪讚转 讛讬讜诐 讘讘讬转 住驻专?". 注诐 讛砖谞讬诐 讛驻谞诪谞讜 讗转 讛诪住专 讜讘诪注讘专 诇注讜诇诐 讛注讘讜讚讛 讛转讞诇谞讜 诇砖讗讜诇 讗转 注爪诪谞讜 "讜诪讛 讘谞讬转 讛讬讜诐?", 讜诇爪驻讜转 砖讛砖拽注讛 转讬讬爪专 讛转拽讚诪讜转. 诇爪驻讜转 砖讗诐 爪专讬讱 诇讻转讜讘 诪注专讻转 砖诇 讗诇祝 砖讜专讜转 讗讝 讻诇 诪讛 砖爪专讬讱 讛讜讗 诇讻转讜讘 100 砖讜专讜转 讘讬讜诐 讻讚讬 诇住讬讬诐 讘 10 讬诪讬诐. 讗讬讝讛 拽讬砖拽讜砖. 拽讬讚讜讚, 讻诪讜 讛专讘讛 诪拽爪讜注讜转 讬爪讬专转讬讬诐, 讗讬谞讜 诇讬谞讗专讬 讜讗讬谞讜 爪驻讜讬. 讝讗转 讛住讬讘讛 砖讗谞讞谞讜 "诪驻砖诇讬诐" 讘讛注专讻讜转 讝诪谞讬诐 讜讙专讜注讬诐 讻诇 讻讱 讘讬砖讬讘讜转 讛住讟讟讜住. 讗谞讬 讬讻讜诇 诇砖讘转 砖讘讜注 注诇 诪砖讬诪讛 砖转讬拽讞 诇诪讬砖讛讜 讗讞专 砖注讛, 讜讘讛讝讚诪谞讜转 讗讞专转 讗讜转讜 诪讬砖讛讜 讗讞专 讬砖讘 砖讘讜注 注诇 诪砖讬诪讛 砖转讬拽讞 诇讬 砖注讛. 讗谞讬 诇驻注诪讬诐 讘讟讜讞 砖诪砖讬诪讛 诪住讜讬诪转 转讬拽讞 讙讙 讞爪讬 砖注讛 讜讘住讜祝 讻砖讛讬讗 诇讜拽讞转 砖讘讜注讬讬诐 讗谞讬 诪住转讻诇 注诇 讛拽讜讚 讜讘注爪诪讬 诇讗 诪讘讬谉 诪讛 拽专讛 砖诐. 讝讛 诇讗 讘讗讙 讘砖讬讟讛, 讻讻讛 讛砖讬讟讛 注讜讘讚转. "诪讛 诇诪讚转 讛讬讜诐", 讘诪砖诪注讜转 讛讗讜转谞讟讬转 砖诇讛 诇讗 讘转讜专 "讻诪讛 讛转拽讚诪转诐 讛讬讜诐 讘转讜讻谞讬转 讛诇讬诪讜讚讬诐" 讗诇讗 讘讗诪转 "诪讛 诇诪讚转 讛讬讜诐?", "诇诪讛 砖诪转 诇讘 讛讬讜诐?", "诪讛 专讗讬转 讛讬讜诐?" - 讗诇讛 讛砖讗诇讜转 砖讻讚讗讬 诇砖讗讜诇 讗讞讚 讗转 讛砖谞讬 讜讗转 讛讬诇讚讬诐 砖诇谞讜, 讻讚讬 诇讬讬砖专 拽讜 注诐 讛讗讜驻讬 砖诇 讛注讘讜讚讛 讛讬爪讬专转讬转 砖诪讞讻讛 诇讛诐.

ToCode
1 419
# 讗诐 诇讗 转讚注 诪讛 讛讘注讬讛 砖讬讞拽转讬 讛讬讜诐 注诐 讛诪讚专讬讱 讛讝讛 讻讚讬 诇讬爪讜专 Web API 讘 C#. 讜讻诪讜讘谉 砖讗讞专讬 讻诪讛 爪注讚讬诐 诇驻讬 讛讛讜专讗讜转 驻转讗讜诐 讘讗讞讚 讛住注讬驻讬诐 诇讗 讘讚讬讜拽 拽讬讘诇转讬 讗转 讛驻诇讟 讛谞讻讜谉 讜讘诪拽讜诐 讗讞专 驻拽讜讚讛 诇讗 讘讚讬讜拽 注讘讚讛. 讘砖诇讘 讛讘讚讬拽讛 拽讬讘诇转讬 诪住讱 诇讘谉. 诇讗 诇讚讗讜讙 - 讗谞讬 诪转讻谞转. 讬砖 讛诪讜谉 讚讘专讬诐 砖讗驻砖专 诇注砖讜转 讻讚讬 诇讙专讜诐 诇拽讜讚 诇注讘讜讚: 1. 讗驻砖专 诇讛讚讘讬拽 讗转 讛讜讚注转 讛砖讙讬讗讛 讘讙讜讙诇 讜诇拽讜讜转 砖讬注诇讛 讗讬讝讛 讚祝 诪 Stack Overflow. 2. 讗驻砖专 诇诪讞讜拽 讗转 讛讻诇 讜诇讛转讞讬诇 诇注拽讜讘 诪讛讛转讞诇讛 讗讞专讬 讛讛讜专讗讜转. 3. 讗驻砖专 诇谞住讜转 Tutorial 讗讞专. 4. 讗驻砖专 诇讛讬讻谞住 诇驻专讜讬拽讟 讜诇讛转讞讬诇 诇砖谞讜转 拽讜讚 讘讗拽专讗讬 讗讜 诇讛讜住讬祝 讛讜讚注讜转 讛讚驻住讛. 讗讘诇 讛讗诪转 砖讬砖 专拽 讚讘专 讗讞讚 诪注谞讬讬谉 诇注砖讜转 讻讗谉 - 诇讛讘讬谉 诪讛 讛讘注讬讛. 讜讝讛 拽砖讛, 讻讬 讗诐 讗转讛 诇讗 诪讻讬专 讗转 讛讟讻谞讜诇讜讙讬讛 讘讻诇诇 讗讝 讛"诇讛讘讬谉 诪讛 讛讘注讬讛" 讛讜诇讱 诇拽讞转 讗讜转讱 诇诪住注 讻讚讬 诇讘讚讜拽 讗讬讝讛 拽讜讚 诪转讞讘专 诇讗讬讝讛 Route, 讜诪讛 讝讛 讘讻诇诇 Controller, 讜讗讬讝讛 Middlewares 谞诪爪讗讬诐 讘砖讬诪讜砖 讘讬讬砖讜诐 ASP.NET 讚讬驻讜诇讟讬, 讜诪讛 讝讛 讘讻诇诇 appsettings.json, 讜讗讬讱 讛讜讗 诪讞诇讬讟 注诇 讗讬讝讛 驻讜专讟 诇讛拽砖讬讘, 讜诇诪讛 讛诐 讻讜转讘讬诐 诪讬诇讬诐 讘转讜讱 住讜讙专讬讬诐 诪专讜讘注讜转 诪注诇 砖诪讜转 砖诇 诪讞诇拽讜转 讗讜 诪转讜讚讜转. 讘诪讘讟 专讗砖讜谉 讝讗转 诇讗 谞专讗讬转 讻诪讜 讛讚专讱 讛拽爪专讛 讘讬讜转专 诇讙专讜诐 诇讬讬砖讜诐 诇注讘讜讚. 讘诪讘讟 砖谞讬 拽诇 诇专讗讜转 砖讻砖讬讜讚注讬诐 诇注谞讜转 注诇 讻诇 讛砖讗诇讜转 砖专讗讬谞讜 讜讬讜讚注讬诐 诇讞驻砖 讗转 讛讘注讬讛, 讙诐 讛专讘讛 讬讜转专 拽诇 诇驻转讜专 讗讜转讛 注讘讜专 讬讬砖讜诐 讝讛 讜注讘讜专 讛讬讬砖讜诪讬诐 讛讘讗讬诐 砖谞讻转讜讘.

ToCode
1 419
# 讻讬砖诇讜谉 讬讚讜注 诪专讗砖 讗谞讬 讚讬 讘讟讜讞 砖讗谞讬 讬讻讜诇 诇驻转讜专 转专讙讬诇 讞砖讘讜谞讬, 讙诐 讗诐 讛讜讗 讬讛讬讛 诪住讜讘讱 注诐 讛诪讜谉 诪住驻专讬诐. 讜讗谞讬 讚讬 讘讟讜讞 砖诇讗 诪砖谞讛 讻诪讛 讗谞住讛 讗谞讬 诇讗 讛讜诇讱 诇讙诇讜转 转专讜驻讛 诇住专讟谉. 讛讬讚注 砖讗谞讬 讬讻讜诇 诇驻转讜专 诪砖讛讜 诪砖驻讬注 注诇 讛讙讬砖讛 砖诇讬 讻诇驻讬 讗讜转讜 讗转讙专. 讗谞讬 诪讜讻谉 诇谞住讜转 注讜讚 讻诪讛 驻注诪讬诐 诇驻谞讬 砖讗转讬讬讗砖, 讜讗谞讬 诪讜讻谉 诇拽专讜讗 讗转 讛讛讜专讗讜转 讬讜转专 讘注讬讜谉 讜诇讞驻砖 讘讝讻讜讻讬转 诪讙讚诇转 讗讬驻讛 讛拽讜讚 砖诇讬 诇讗 讘讚讬讜拽 讻转讜讘 讻诪讜 砖爪专讬讱 - 专拽 讘讙诇诇 砖讗谞讬 讬讜讚注 砖讗谞讬 讬讻讜诇 诇驻转讜专 讗转 讝讛 讜砖讘讟讞 讬砖 诪砖讛讜 拽讟谉 砖爪专讬讱 诇转拽谉 讜讗讝 讝讛 讬住转讚专. 讗讘诇 讘专讙注 砖讗转讙专 诪住讜讬诐 谞专讗讛 诇讬 讻诪讜 讞讬驻讜砖 转专讜驻讛 诇住专讟谉, 讻诇 讛转诪讜谞讛 诪转讛驻讻转 讜讗谞讬 讗驻讬诇讜 诇讗 诪谞住讛. 诪讛 讛讟注诐 诇讛诪砖讬讱 注讜讚 住讬讘讜讘 讗诐 诪诪讬诇讗 讛转砖讜讘讛 诪住讜讘讻转 诪讚讬 讜诇注讜诇诐 诇讗 讗讙讬注 讗诇讬讛? 专讜讘 讛诪砖讬诪讜转 讜讛讗转讙专讬诐 讛谉 讗讬驻砖讛讜 讘讗诪爪注. 讬砖 讻讗诇讛 砖讬讜转专 拽专讜讘讜转 诇讚讘专讬诐 砖注砖讬转讬 讜诇讻谉 讗谞讬 讚讬 讘讟讜讞 砖讝讛 讬爪诇讬讞, 讜讗讞专讜转 砖诪专讙讬砖讜转 诪诪砖 讻诪讜 讛专驻转拽讗讛. 讞砖讜讘 诇砖讬诐 诇讘 砖诇讗 诪砖谞讛 讘转讜讱 讗讬讝讛 讗转讙专 讗谞讞谞讜, 讛讛讘谞讛 砖诪砖讛讜 "讗驻砖专讬" 诪讙讬注讛 专拽 讗讞专讬 砖讛爪诇讞谞讜 讗讜转讜, 讜讛讛讘谞讛 砖诪砖讛讜 "诇讗 讗驻砖专讬" 讗讜 诇驻讞讜转 "诇讗 讗驻砖专讬 讘诪住讙专转 讛讝诪谉 讜讛转拽爪讬讘" 讬讻讜诇讛 诇讛讙讬注 专拽 讻砖讛讝诪谉 讜讛转拽爪讬讘 谞讙诪专讬诐. 诇驻谞讬 砖讗谞讬 诪转讞讬诇 诪砖讬诪讛 讗谞讬 讗讜讛讘 诇讛拽爪讬讘 诇讛 诪住讙专转 讝诪谉. 讻砖讛讝诪谉 讬讬讙诪专, 讘讬谉 讗诐 讛爪诇讞转讬 讜讘讬谉 讗诐 诇讗, 讗谞讬 讗讜讻诇 诇讛讞诇讬讟 讗诐 讛诪砖讬诪讛 "讗驻砖专讬转" 讜讘住讱 讛讻诇 诇拽讞转讬 讻讬讜讜谉 诇讗 谞讻讜谉 讗讜 砖爪专讬讻讛 讬讜转专 讝诪谉; 讗讜 砖讛诪砖讬诪讛 "讙讚讜诇讛 注诇讬讬" 讜爪专讬讱 诇讞转讜讱. 讗讘诇 注讚 砖讛砖注讜谉 诪爪诇爪诇? 讝讛 讛讝诪谉 砖诇讻诐 诇讛转谞讛讙 讻讗讬诇讜 讗转诐 驻讜转专讬诐 转专讙讬诇 讞砖讘讜谞讬 驻砖讜讟: 讘专讜讙注, 转讜讱 拽专讬讗讛 讘注讬讜谉 砖诇 讛讛讜专讗讜转, 讛拽讜讚 讜讛转讬注讜讚, 讜诪转讜讱 讛专讙砖讛 砖讛讻诇 讛讜诇讱 诇注讘讜讚 讜讬砖 专拽 注讜讚 砖讟讬拽 讗讞讚 拽讟谉 诇驻转讜专. 讻诇 讛转谞讛讙讜转 讗讞专转 专拽 诪讙讚讬诇讛 讗转 讛住讬讻讜讬讬诐 砖诇讻诐 诇讻讬砖诇讜谉 讬讚讜注 诪专讗砖.

ToCode
1 419
# 讻砖讗谞讬 讬讜讚注 讬讜转专 诪讛诪讞砖讘 讗讞转 讛住讬讘讜转 砖 TypeScript 诪专讙讬砖讛 讻诪讜 讘讝讘讜讝 讝诪谉 讛讬讗 砖讘专讜讘 讛诪拽专讬诐 讗谞讬 讞讜砖讘 砖讗谞讬 讬讜讚注 讬讜转专 诪讛诪讞砖讘. 讛谞讛 拽讟注 拽讜讚 驻砖讜讟 诇讚讜讙诪讛:
interface IObject {
  a: number;
  b: number;
}

const o : IObject = { a: 10, b: 20 };
const k = JSON.parse('"a"');

console.log(o[k]);
讝讛 拽讜讚 TypeScript 砖诇讗 注讜讘专 拽讜诪驻讬诇爪讬讛 诇诪专讜转 砖讗讬谉 讘讜 讗祝 讟注讜转. 讗谞讬 讬讜讚注 砖注专讱 讛诪砖转谞讛 k 转诪讬讚 讬讛讬讛 a, 讗讘诇 讛诪讞砖讘 诇讗 讬讜讚注 讗转 讝讛 注讚讬讬谉. 讛讜讗 注讜讚 诇讗 讛专讬抓 讗转 JSON.parse 讜诇讻谉 诇讗 讬讻讜诇 诇讚注转 诪讛 转讛讬讛 讛转讜爪讗讛 砖诇讜. 讝讛 谞讛讬讛 讬讜转专 诪住讜讘讱 讻砖讘诪拽讜诐 JSON.parse 讗谞讬 爪专讬讱 诇诇讻转 诇砖专转 诇讛讘讬讗 讗转 讛注专讱 砖诇 诪驻转讞 诪住讜讬诐. 谞讬住讬讜谉 诇拽诪驻诇 讗转 讛拽讜讚 诪拽驻讬抓 讗转 讛砖讙讬讗讛:
Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'IObject'.
讛讙讬讜谞讬. 讟讬讬驻住拽专讬驻讟 砖诐 诇讘 砖讛讙讚专转诐 讟讬驻讜住 诇诪砖谞讛 o 讜诇讻谉 诪谞讬讞 砖讗转诐 专讜爪讬诐 砖讛讜讗 讬砖诪讜专 注诇讬讻诐 讘注讘讜讚讛 注诐 诪砖转谞讛 讝讛. 讗驻砖专 诇驻转讜专 讗转 讛讘注讬讛 讘砖转讬 讚专讻讬诐 驻砖讜讟讜转 讘专讙注 砖讗谞讞谞讜 诪讘讬谞讬诐 诪讛 拽专讛 讻讗谉: 1. 讗驻砖专 诇讘拽砖 诪 TypeScript 砖讬注讝讜讘 讗讜转讬 讘砖拽讟 讜诇讗 讬砖诪讜专 注诇 讛诪砖转谞讛 o 讘讻诇诇. 2. 讗驻砖专 诇讛讙讬讚 诇 TypeScript 砖讗谞讬 讬讜讚注 诪讛 砖讗谞讬 注讜砖讛 讜讛转爪讜讗讛 砖诇 JSON.parse 讘讗诪转 讛讜诇讻转 诇讛讬讜转 诪驻转讞 诪转讜讱 讛诪诪砖拽 IObject. 讛讻讬讜讜谉 讛专讗砖讜谉 谞专讗讛 讻讱 讜诪转拽诪驻诇:
interface IObject {
  a: number;
  b: number;
}

const o : Record<string, any> = { a: 10, b: 20 };
const k = JSON.parse('"a"');

console.log(o[k]);
讜讛讻讬讜讜谉 讛砖谞讬 谞专讗讛 讻讱 讜讙诐 诪转拽诪驻诇:
interface IObject {
  a: number;
  b: number;
}

const o : IObject = { a: 10, b: 20 };
const k: keyof IObject = JSON.parse('"a"');

console.log(o[k]);

ToCode
1 419
# 讛讗诐 讘讗诪转 爪专讬讱 诇讛讻讬专 5 驻讬转专讜谞讜转 诇讗讜转讛 讛讘注讬讛? 砖讗诇讛 讝专讬讝讛 (讗诇 转住驻专讜 诇讬 讗转 讛转砖讜讘讛. 转注谞讜 讘专讗砖): 讻诪讛 诪讻诐, 讗讞专讬 砖住讬讬诪转诐 诇讻转讜讘 驻讬爪'专 讗讜 诇驻转讜专 讘讗讙, 讞讜讝专讬诐 讗讞讜专讛 注诐 git reset --hard 讜讗讝 诪谞住讬诐 驻讬转专讜谉 谞讜住祝? 讜驻讬转专讜谉 砖诇讬砖讬? 讜专讘讬注讬? 讜讞诪讬砖讬? 讛讗诐 讗讬 驻注诐 讘讞讬讬诐 砖诇讻诐 讻诪转讻谞转讬诐 驻转专转诐 讗转 讗讜转讛 讘注讬讛 讞诪砖 驻注诪讬诐 讘讞诪砖 讚专讻讬诐 砖讜谞讜转, 专拽 讻讚讬 诇诪爪讜讗 讗转 讛驻讬转专讜谉 讛讟讜讘 讘讬讜转专? 讗谞讬 诪讜讻谉 诇讛诪专 砖注讘讜专 专讜讘谞讜 讛转砖讜讘讛 讛讬讗 "诇讗". 讘驻讜住讟 砖拽专讗转讬 诇讗 诪讝诪谉 专爪讜 诇讛讚讙讬砖 注讚 讻诪讛 专讗讬讜谞讜转 注讘讜讚讛 诇讗 拽砖讜专讬诐 诇诪爪讬讗讜转, 讗讝 讛诐 爪讬讟讟讜 讗转 讛砖讗诇讛 砖讘讻讜转专转 讜注谞讜 讘谞讞专爪讜转 "诇讗". 诇驻转讜专 讗转 讗讜转讛 讘注讬讛 讻诪讛 驻注诪讬诐 讜诇谞住讜转 诇诪爪讜讗 讗转 讛驻讬转专讜谉 讛讗讬讚讗诇讬 讝讛 拽讟注 砖诇 专讗讬讜谞讜转 注讘讜讚讛, 诇讗 诪砖讛讜 砖讬砖 讝诪谉 注讘讜专讜 诇诪转讻谞转讬诐 讗诪讬转讬讬诐 砖爪专讬讻讬诐 诇讛注诇讜转 诪讜爪专. 讗讘诇... 讗诐 讘讗诪转 讘注讘讜讚讛 讛讬讜诐 讬讜诪讬转 砖诇讻诐 讗转诐 注讜爪专讬诐 讘驻讬转专讜谉 讛专讗砖讜谉. 讗诐 讛讻讬 专讞讜拽 砖讗转诐 诪讙讬注讬诐 讝讛 诇讞驻砖 拽爪转 讘讛转讞诇讛 讻诪讛 讻讬讜讜谞讬诐 讜讘住讜祝 诇讛转拽讚诐 专拽 注诐 讗讞讚 诪讛诐. 讗讝 讗讬讱 讗转诐 诪转讻谞谞讬诐 诇诇诪讜讚 讜诇讛砖转驻专? 讜讗谞讬 诇讗 诪讚讘专 注诇 诇讙诇讜转 讗讬讝讜 讟讻谞讜诇讜讙讬讛 讬讜转专 诪转讗讬诪讛 诇诪讜爪专 讘讗诪爪注讜转 讻转讬讘转 POC 讘讻诪讛 讟讻谞讜诇讜讙讬讜转 砖讜谞讜转. 讗转 讝讛 讗谞讬 讬讜讚注 砖讗转诐 注讜砖讬诐. 讗谞讬 诪讚讘专 注诇 讘讞讬专转 讛诪讞诇拽讜转 诇驻讬转专讜谉 诪住讜讬诐. 讗谞讬 诪讚讘专 注诇 讞诇讜拽转 讛注讘讜讚讛 讘讬谉 讛 Micro Services 砖讗转诐 讻讜转讘讬诐. 讗谞讬 诪讚讘专 注诇 讛讘讞讬专讛 讘讬谉 讻转讬讘转 砖讗讬诇转转 SQL 诪住讜讘讻转 诇讘讬谉 驻讬注谞讜讞 讛诪讬讚注 讘拽讜讚 爪讚 砖专转. 讗谞讬 诪讚讘专 注诇 讛讛转讘诇讟讜转 注讚 讻诪讛 诇砖谞讜转 讗转 拽讜讚 讛诪拽讜专 讘砖讘讬诇 砖讬讛讬讛 拽诇 诇讘讚讜拽 讗讜转讜 诇注讜诪转 讻诪讛 Mock-讬诐 诇讘谞讜转 讻讞诇拽 诪讛讘讚讬拽讛. 讗诇讛 砖讗诇讜转 诪注谞讬讬谞讜转 砖专拽 讗讞专讬 砖讗谞讞谞讜 讻讜转讘讬诐 讗转 砖转讬 讛讗驻砖专讜讬讜转 讗谞讞谞讜 谞诪爪讗讬诐 讘诪拽讜诐 诇讛砖讜讜转 讘讬谞讬讛谉. 讬砖 谞拽讜讚讛 讘讞讬讬诐 砖诇 诪转讻谞转讬诐 砖讗谞讞谞讜 讻讘专 诪爪诇讬讞讬诐 诇讛讘讬谉 讗讬讱 诇注砖讜转 讗转 讛讚讘专 讛讘讗 讘诇讬 讬讜转专 诪讚讬 拽讜砖讬. 砖讗谞讞谞讜 诪爪诇讬讞讬诐 诇讘谞讜转 讻诇 驻讬爪'专 砖谞讜转谞讬诐 诇谞讜 讗讜 诇驻转讜专 讻诇 讘讗讙 砖讗谞讞谞讜 谞转拽诇讬诐 讘讜. 谞讻讜谉, 讬讛讬讜 讻讗诇讛 砖诇讜拽讞讬诐 拽爪转 讬讜转专 讝诪谉 讜讬讛讬讜 诇驻注诪讬诐 讘注讬讜转, 讗讘诇 讘讙讚讜诇 讗谞讞谞讜 讬讜讚注讬诐 砖讝讛 讬讬驻转专 讜讝讛 讘讗诪转 谞驻转专 讘住讜祝. 讛拽驻讬爪讛 讛讘讗讛 诪讛谞拽讜讚讛 讛讝讗转 讛讬讗 诇讗 诇驻转讜专 注讜讚 转专讙讬诇 讗讜 诇讘谞讜转 注讜讚 驻讬爪'专. 讝讛 讻讘专 诇讗 讬注讬诇. 讘谞拽讜讚讛 讛讝讗转 讛拽驻讬爪讛 讛讘讗讛 讛讬讗 诇讛讻讬专 讬讜转专 驻讬转专讜谞讜转 诇讗讜转讛 讘注讬讛. 诇讛讻讬专 诇注讜诪拽, 诇讛讘讬谉, 诇讻转讜讘, 砖谞讬讬诐, 砖诇讜砖讛, 讗专讘注讛 驻讬转专讜谞讜转 诇讗讜转讛 讘注讬讛. 诇专讗讜转 诪讬 诪讛诐 驻讜注诇 讬讜转专 诪讛专 讜讘讗讬讝讛 诪爪讘讬诐. 诇专讗讜转 讗讬讱 讻诇 驻讬转专讜谉 讙讚诇 讗讜 谞砖讘专. 讜诇讛讬讜转 诪住讜讙诇讬诐 诇讛爪讬讙 讗转 讛讬转专讜谞讜转 讜讛讞住专讜谞讜转 砖诇 讻诇 讚专讱 注诐 讛谞讬讜讗谞住讬谞讬诐 讛讚拽讬诐 砖诪讘讚讬诇讬诐 讘讬谉 讛讚专讻讬诐. 讛讗诐 讘讗诪转 爪专讬讱 诇讛讻讬专 5 驻讬转专讜谞讜转 诇讗讜转讛 讛讘注讬讛? 讗诐 讗谞讞谞讜 诪讻讜讜谞讬诐 诇讛讬讜转 讛诪转讻谞转讬诐 讛讻讬 诪拽爪讜注讬讬诐 砖讗谞讞谞讜 讬讻讜诇讬诐 - 讛转砖讜讘讛 讘讛讞诇讟 讻谉.

ToCode
1 419
# 讛讛讞诪爪讛 讛专讗砖讜谞讛 专讜讘 讛讗谞砖讬诐 砖谞专砖诪讬诐 诇讞讚专 讻讜砖专 诪驻住讬拽讬诐 诇讘讜讗 讗讞专讬 讛讞讜讚砖 讛专讗砖讜谉. 专讜讘 讛讗谞砖讬诐 砖诪转讞讬诇讬诐 诇诇诪讜讚 砖驻讛 讞讚砖讛 讬驻住讬拽讜 诇驻谞讬 砖讬讙讬注讜 诇专诪转 讚讬讘讜专 砖讜讟祝 讜讗驻讬诇讜 专讜讘 讛讗谞砖讬诐 砖讬转讞讬诇讜 诇诇诪讜讚 转讻谞讜转 诇讗 讬讙讬注讜 诇讻转讜讘 诪注专讻转 砖诇诪讛 讗讜 诇注讘讜讚 讘转讞讜诐. 讗讬讱 讝讛 拽讜专讛? 诇诪讛 讗谞讞谞讜 诪专讙讬砖讬诐 砖讗谞讞谞讜 讬讻讜诇讬诐 诇注砖讜转 诪砖讛讜, 诪讚诪讬讬谞讬诐 讗转 注爪诪谞讜 诪砖拽讬注讬诐 讗转 诪讛 砖爪专讬讱 讘砖讘讬诇 诇讛爪诇讬讞 讜讘住讜祝 讗讞专讬 讛讛讞诪爪讛 讛专讗砖讜谞讛 诪讜讜转专讬诐? 诪讛 拽讜专讛 讘专讙注 讛讝讛 砖讚讘专讬诐 讻讘专 诇讗 谞专讗讬诐 讗驻砖专讬讬诐? 讻诇 讛专讙诇 砖讗谞讞谞讜 诪谞住讬诐 诇讗诪抓 诪讘讬讗 砖讬谞讜讬 讘住讙谞讜谉 讛讞讬讬诐, 讜讻诇 砖讬谞讜讬 诪讜专讻讘 诪讞诇拽讬诐 砖讗谞讞谞讜 讬讜转专 讗讜讛讘讬诐 讜讞诇拽讬诐 砖驻讞讜转. 讗诐 转讞诇讬讟讜 诇讗诪抓 讛专讙诇 砖诇 Life Long Learning, 讻诇讜诪专 砖讬诇讜讘 诇讬诪讜讚 讘转讜专 讞诇拽 讗讬谞讟讙专诇讬 诪讛讞讬讬诐 (讙诐 讻砖讻讘专 讬砖 诇讻诐 注讘讜讚讛, 讜诇讗 专拽 讘诇讬诪讜讚讬诐 诇转讜讗专), 讗转诐 转讙诇讜 砖诇讛砖拽讬注 讻诪讛 砖注讜转 讘砖讘讜注 讘诇讬诪讜讚讬诐 诇驻注诪讬诐 讞讜砖祝 讗转讻诐 诇专注讬讜谞讜转 讞讚砖讬诐 讜注讜讝专 诇讻诐 诇讞砖讜讘 讟讜讘 讬讜转专, 讗讘诇 诇驻注诪讬诐 讙诐 诪专讙讬砖 讻诪讜 讘讝讘讜讝 讝诪谉 讻砖讛诇讻转诐 诇诇诪讜讚 诪砖讛讜 砖诇讗 讛转讞讘专转诐 讗诇讬讜. 讬讜转专 诪讝讛, 讗转诐 转讙诇讜 砖诇讗 讘讻诇 砖讘讜注 诪转讞砖拽 诇讻诐 诇诇诪讜讚 讜砖诇驻注诪讬诐 诪讟诇讜转 砖诇 诇讬诪讜讚讬诐 讘讗诪转 诪专讙讬砖讜转 讻诪讜 砖讬注讜专讬 讘讬转. 讻砖讗谞讞谞讜 诪讗诪爪讬诐 讛专讙诇 讞讚砖 讗谞讞谞讜 注讜砖讬诐 讛诪讜谉 讘讞讬专讜转 拽讟谞讜转 诇讙讘讬 讗讜转讜 讛专讙诇. 讘讚讜讙诪讛 砖诇 诇讬诪讜讚讬诐 讝讛 讬讻讜诇 诇讛讬讜转: 讻诪讛 驻注诪讬诐 讘砖讘讜注 诇诇诪讜讚, 讘讗讬讝讛 住讚专, 讘讗讬讝讛 讟讻谞讬拽讜转, 诇讘讚 讗讜 注诐 讞讘专讬诐, 诇诇诪讜讚 讚讘专讬诐 砖拽砖讜专讬诐 诇注讘讜讚讛 讗讜 谞讜砖讗讬诐 砖讗谞讬 诇讗 诪讘讬谉 讘讛诐 讻诇讜诐, 诇诇诪讜讚 讘讘讜拽专 讗讜 讘注专讘, 讜注讜讚 讗讬谞住驻讜专 讘讞讬专讜转 拽讟谞讜转 砖诪砖驻讬注讜转 注诇 讛转讛诇讬讱. 讗讜住祝 讛讘讞讬专讜转 讜讛谞讬讜讗谞住讬谞讬诐 讬讜爪专 砖讬讜讜讬 诪砖拽诇. 讞诇拽 诪讛讚讘专讬诐 诇讙讘讬 讛讛专讙诇 讛讞讚砖 讘讗讬诐 诇讬 讘讟讜讘 讜注讜讝专讬诐 诇讬 诇讛诪砖讬讱 诇讛砖拽讬注 讘讜, 讜讞诇拽 讗讞专 讛谉 讛诪讟诇讜转 砖讗谞讬 驻讞讜转 讗讜讛讘 讜诪讜专讬讚讜转 诇讬 讗转 讛诪讜讟讬讘爪讬讛 讻诇 驻注诐 砖讗谞讬 诪谞住讛 诇讛转拽讚诐. 诇讗讜专讱 讝诪谉 砖讬讜讜讬 诪砖拽诇 砖诇讬诇讬, 讘讜 讬砖 讬讜转专 诪讟诇讜转 诪注讬拽讜转 讗讜 砖讛谉 诪拽讘诇讜转 诪砖拽诇 讙讚讜诇 讬讜转专, 讬讜爪专 讞讜住专 讗讬讝讜谉 讜讗讜讘讚谉 诪讜讟讬讘爪讬讛. 诇驻注诪讬诐 讗驻砖专 诇转拽谉 讞讜住专 讗讬讝讜谉 讻讝讛 注诐 诪讜讟讬讘爪讬讛 讞讬爪讜谞讬转 ("讗诐 诇讗 转诇诪讚 转拽讘诇 爪讬讜谉 谞诪讜讱", 讗讜 "讗诐 转拽讘诇 诪注诇 80 讘拽讜专住 转拽讘诇 诪讬诇讙讛"). 讛专讘讛 驻注诪讬诐 诇讗. 讻砖讗转诐 诪讙讬注讬诐 诇讛讞诪爪讛 讛专讗砖讜谞讛, 诇讗讬诪讜谉 讛专讗砖讜谉 砖讚讬诇讙转诐 注诇讬讜, 诇驻讜住讟 讛专讗砖讜谉 砖诇讗 讻转讘转诐 讘讝诪谉, 诇转专讙讬诇 讛专讗砖讜谉 砖诇讗 讛讙砖转诐 - 讛讬讝讛专讜 诇讗 诇拽讞转 讗转 讝讛 讻住讬诪谉 砖讻诇 讛注住拽 诇讗 讘砖讘讬诇讻诐. 讝讛 驻砖讜讟 诇讗 谞讻讜谉. 讛讛讞诪爪讛 讛专讗砖讜谞讛 讗讜诪专转 砖诪砖讛讜 讘砖讬讜讜讬 讛诪砖拽诇 砖讘谞讬谞讜 注讘讜专 讛讛专讙诇 讛讞讚砖 诇讗 注讘讚. 讜讝讛 诪讗讜讚 讛讙讬讜谞讬: 讝讗转 讛驻注诐 讛专讗砖讜谞讛 砖讗转诐 诪讬讬爪专讬诐 诇注爪诪讻诐 讗转 讛讛专讙诇 讛讝讛. 讘专讜专 砖诇讗 转爪诇讬讞讜 诇讛讙讬注 诇讗讬讝讜谉 讛谞讻讜谉 讘谞讬住讬讜谉 讛专讗砖讜谉. 讘诪拽讜诐 诇讝专讜拽 讗转 讛讻诇 砖讜讜讛 诇讛转讞讬诇 诪讞讚砖 注诐 讘讞讬专讜转 拽爪转 讗讞专讜转. 讘诪拽讜诐 诇诇诪讜讚 讘注专讘 谞住讜 诇砖讬诐 砖注讜谉 讜诇诇诪讜讚 讘讘讜拽专 诇驻谞讬 砖讻讜诇诐 拽诪讬诐 (讗讜 诇讛讬驻讱). 讘诪拽讜诐 诇诇诪讜讚 注诐 讞讘专讬诐 谞住讜 诇诇诪讜讚 诇讘讚 (讗讜 诇讛讬驻讱). 讛转讛诇讬讱 砖诇 讗讬诪讜抓 讛专讙诇 讞讚砖 讛讜讗 讗讬砖讬 讜讻讜诇诇 讞讬驻讜砖 讗讞专 讛讚专讱 讛住驻爪讬驻讬转 讘讛 讛讛专讙诇 讛讝讛 讬注讘讜讚 讘砖讘讬诇讻诐. 讜讻砖砖讬讜讜讬 讛诪砖拽诇 讟讜讘 讛讻讚讜专 诪转讙诇讙诇 诪注爪诪讜.

ToCode
1 419
# 讗讬讱 诇讬爪讜专 Docker Image 讘诇讬 Dockerfile 讛讚专讱 讛诪拽讜讘诇转 诇讬爪讜专 讗讬诪讙' 诇讚讜拽专 讛讬讗 诇讻转讜讘 Dockerfile, 砖讝讛 拽讜讘抓 注诐 讛讜专讗讜转 诇讚讜拽专 讗讬讱 讘讚讬讜拽 诇讘谞讜转 讗转 讛讗讬诪讙'. 砖讬诪讜砖 讘 Dockerfile 注讜讝专 诇砖诪讜专 注诇 住讚专: 1. 讚讜拽专驻讬讬诇 讛讜讗 拽讜讘抓 讘驻讜专诪讟 讟拽住讟, 讻讱 砖讗驻砖专 诇讛转讬讬讞住 讗诇讬讜 讘转讜专 拽讜讚 诪拽讜专 诇讻诇 讚讘专. 2. 讗驻砖专 诇砖诪讜专 讗转 讛 Dockerfile 讘讙讬讟 讜诇谞讛诇 注诇讬讜 讙讬专住讗讜转. 3. 讗驻砖专 诇砖转祝 讗转 讛 Dockerfile 注诐 讞讘专讬诐 讻讚讬 砖讬讜讻诇讜 讘注爪诪诐 诇讘谞讜转 讗转 讛讗讬诪讙' 诇驻讬 讗讜转谉 讛讜专讗讜转. 4. 拽诇 诪讗讜讚 诇转讞讝拽 讗讬诪讙'讬诐 讜诇砖谞讜转 讗讜转诐 讻砖讬砖 诇讱 讘讬讚 讗转 讛 Dockerfile 砖讘讜谞讛 讗转 讛讗讬诪讙'. 讛讞讬住专讜谉 讛诪专讻讝讬 讘讻转讬讘转 Dockerfile 讛讜讗 讘谞讜讞讜转 讛驻讬转讜讞: 讻砖讻讜转讘讬诐 Dockerfile 讜专讜爪讬诐 诇讘讚讜拽 讗讜转讜 爪专讬讱 诇讘谞讜转 讗讜转讜, 诇讘谞讜转 诪诪谞讜 拽讜谞讟讬讬谞专, 诇讛专讬抓 讗转 讛拽讜谞讟讬讬谞专 讜诇专讗讜转 讗诐 讛讻诇 讬爪讗 讻诪讜 砖爪专讬讱. 讗诐 诇讗 讗讝 爪专讬讱 诇讞讝讜专 诇注专讜讱 讗转 讛 Dockerfile 讜砖讜讘 诇注砖讜转 讗转 讻诇 讛住讬讘讜讘. 讗诐 讻诇 诪讛 砖讗谞讬 爪专讬讱 讝讛 诇讘谞讜转 讗讬诪讙' 讞讚-驻注诪讬, 诇诪砖诇 讘砖讘讬诇 转专讙讬诇 诇拽讜专住 讗讜 讘砖讘讬诇 诇砖转祝 讛讚讙诪讛 注诐 讞讘专, 讗谞讬 讬讻讜诇 诇讬爪讜专 讗讬诪讙' 讬砖讬专讜转 诪转讜讱 拽讜谞讟讬讬谞专 拽讬讬诐 讘诇讬 Dockerfile 讜讘诇讬 诇讝讻讜专 诪讛 注砖讬转讬 讻讚讬 诇讛讙讬注 诇诪爪讘 讛诪住讜讬诐 砖诇 讛拽讜谞讟讬讬谞专. 讝讛 注讜讘讚 讻讻讛: 1. 讬讜爪专讬诐 拽讜谞讟讬讬谞专 讞讚砖 讜诪专讬爪讬诐 讗讜转讜, 诇诪砖诇 注讘讜专 讗诇驻讬谉 诇讬谞讜拽住 讗驻砖专 诇讛驻注讬诇:
$ docker run -d --rm alpine sleep infinity
2. 谞讻谞住讬诐 诇拽讜谞讟讬讬谞专 讜诪转讞讬诇讬诐 诇讬爪讜专 砖诐 拽讘爪讬诐 讗讜 诇砖谞讜转 讚讘专讬诐 讘诪讻讜谞讛 (砖讬诪讜 诇讘 诇砖谞讜转 讗转 讛 Container ID 诇注专讱 砖诪讜驻讬注 讗爪诇讻诐):
$ docker exect -it 2b090ffbd1fb /bin/sh
3. 讘砖讘讬诇 讛诪砖讞拽 讗谞讬 诪驻注讬诇 讘转讜讱 讛诪讻讜谞讛 讗转 讛驻拽讜讚讛 讛讘讗讛 讻讚讬 诇讬爪讜专 诪砖转诪砖 讞讚砖:
/ # adduser ynon
讗讞专讬 砖讘讞专转讬 住讬住诪讛 讗谞讬 讬讜爪讗 诪讛拽讜谞讟讬讬谞专 讜讘诪讻讜谞讛 讛专讗砖讬转 砖诇讬 诪驻注讬诇 (砖讜讘 砖讬诪讜 诇讘 诇讛讞诇讬祝 讗转 讛 Container ID 诇诪讛 砖诪讜驻讬注 讗爪诇讻诐):
$ docker commit 2b090ffbd1fb
4. 讛拽讜诪讬讟 讬爪专 讗讬诪讙' 讞讚砖, 讜讻砖谞住转讻诇 讘 docker images 谞讜讻诇 诇专讗讜转 讗讜转讜 注讚讬讬谉 诇诇讗 砖诐:
<none>               <none>          3030ab2039c3   30 seconds ago   5.58MB
5. 谞砖讗专 专拽 诇转转 砖诐 诇讗讬诪讙' 讻讚讬 砖讗驻砖专 讬讛讬讛 诇讚讞讜祝 讗讜转讜 诇 docker hub (讜砖讜讘 砖讬诪讜 诇讘 诇砖谞讜转 讗转 讛 Image ID 诇讝讛 砖讛讜驻讬注 讗爪诇讻诐, 讜讗转 砖诐 讛讗讬诪讙' 诇诪砖讛讜 砖诪转讗讬诐 诇诪砖转诪砖 讚讜拽专讛讗讘 砖诇讻诐):
$ docker image tag 3030ab2039c3 ynonp/commit-demo
6. 讜讘住讜祝 讗驻砖专 诇讚讞讜祝 讗转 讛讗讬诪讙' 讛讞讚砖 诇讚讜拽专讛讗讘 讻讚讬 砖讻讜诇讻诐 转讜讻诇讜 诇讛砖转诪砖 讘讜:
$ docker push ynonp/commit-demo
7. 讗诇讛 诪讻诐 砖讬专爪讜 诇砖讞拽 注诐 讛讗讬诪讙' 讛讞讚砖 砖讬爪专转讬 爪专讬讻讬诐 注讻砖讬讜 专拽 诇讛专讬抓:
$ docker run -it --rm ynonp/commit-demo /bin/sh
讘砖讬讟讛 讛讝讗转 讛专讘讛 讬讜转专 拽砖讛 诇讝讻讜专 诪讛 注砖讬谞讜 讘转讜讱 讛拽讜谞讟讬讬谞专 讜讗讬讱 讘讚讬讜拽 讬爪专谞讜 讗转 讛讗讬诪讙', 讜诇讻谉 诇讗 讛讬讬转讬 诪砖转诪砖 讘讛 诇驻专讜讬拽讟 讗诪讬转讬, 讗讘诇 诇讚讜讙诪讗讜转 讗讜 转专讙讜诇讬诐 讘拽讜专住讬诐 讗讜 砖讬转讜祝 拽讜讚 注诐 讞讘专讬诐 讛讬讗 讬讻讜诇讛 诇注讘讜讚 诪诪砖 讘拽诇讜转.

ToCode
1 419
# 讗专讘注 砖谞讬诐 谞讬住讬讜谉 讗专讘注 砖谞讬诐 诇诪讚转讬 注专讘讬转 讘讘讬转 住驻专. 讗专讘注 砖谞讬诐 讘讛谉 讻诇 砖讘讜注 讬砖讘转讬 诇砖诪讜注 讗转 讛诪讜专讛 诪住驻专转 讻诇 诪讬谞讬 讚讘专讬诐, 驻转专转讬 转专讙讬诇讬诐 讘讞讜讘专讜转 讜诪讚讬 驻注诐 讗驻讬诇讜 讛讻谞转讬 砖讬注讜专讬 讘讬转. 讜讗讞专讬 讻诇 讝讛 住讬讬诪转讬 讗转 讻讬转讛 讬' 讻砖讗谞讬 讬讜讚注 讘拽讜砖讬 砖转讬 诪讬诇讬诐 讘注专讘讬转 讜注讚讬讬谉 诇讗 诪爪诇讬讞 诇拽专讜讗 讗讜 诇讻转讜讘. 讝讛 诇讗 诪驻转讬注. 讘砖讘讬诇 诇诇诪讜讚 诇讗 诪住驻讬拽 诇注砖讜转 讗转 讛转专讙讬诇讬诐 讗讜 诇讛拽砖讬讘 诇砖讬注讜专. 讘砖讘讬诇 诇诇诪讜讚 爪专讬讱 讙讬砖讛 诇讬诪讜讚讬转: 爪专讬讱 诇专爪讜转 诇讛讘讬谉, 诇专爪讜转 诇讝讻讜专, 诇讞驻砖 讗转 讛砖讗诇讜转 讜诇砖讘讜专 拽爪转 讗转 讛讞讜拽讬诐 讻讚讬 诇专讗讜转 诪讛 注讜讘讚 讜诪讛 诇讗 注讜讘讚. 诇讬诪讜讚 讛讜讗 讞讜讜讬讛 讗拽讟讬讘讬转. 讜讻诪讜 砖讛砖谞讬诐 讘讘讬转 住驻专 诇讗 讗讜诪专讜转 讻诇讜诐 注诇 专诪转 讛讬讚注 砖诇 讛转诇诪讬讚 讘注专讘讬转 (讗讜 讘讻诇 诪拽爪讜注 讗讞专 诇爪讜专讱 讛注谞讬讬谉), 讻讱 讙诐 拽砖讛 诪讗讜讚 诇讘谞讜转 注诇 砖谞讜转 谞讬住讬讜谉 讘注讘讜讚讛 讻讚讬 诇讛讘讬谉 讻诪讛 诪讬讜诪谞转 讛诪转讻谞转转 砖诪讜诇讻诐. 讗驻砖专讬 讘讛讞诇讟 诇讛注讘讬专 4 砖谞讬诐 讘注讘讜讚讛 讘讛注转拽讜转 讜讛讚讘拽讜转 砖诇 拽讜讚 讘诇讬 诇讛讘讬谉 讬讜转专 诪讚讬 诪讛 拽讜专讛, 讜诇诪爪讜讗 讗转 注爪诪讱 讘住讬讜诐 转讛诇讬讱 注诐 4 砖谞讜转 谞讬住讬讜谉 讘拽讜专讜转 讞讬讬诐 讜谞讻砖诇 讘专讗讬讜谞讜转 注讘讜讚讛. 砖谞讬 讟讬驻讬诐 注诇 讛谞讜砖讗 讛讝讛: 1. 讗诐 讗转诐 讻讘专 砖诐 - 讻诪讜 讗谞讬 讘注专讘讬转 - 讛爪注讚 讛专讗砖讜谉 讛讜讗 诇讛讻讬专 讘注讜诪拽 讛讘讜专 讜诇讛转讞讬诇 诇注讘讜讚. 拽讞讜 拽讜专住, 转转讞讬诇讜 诪讗驻住 诇驻转讜专 讗转 讻诇 讛转专讙讬诇讬诐, 讜转砖拽讬注讜 讗转 讝诪谉 讛诇讬诪讜讚 砖诇讗 讛住驻拽转诐 诇讛砖拽讬注 讘诪讛诇讱 讛-4 砖谞讬诐 讛讗讞专讜谞讜转 讘注讘讜讚讛. 讛讝诪谉 砖讻谉 讛注讘专转诐 砖诐 诇讗 讛讬讛 诇砖讜讜讗 讜讛讜讗 讬注讝讜专 诇讻诐 诇讛爪诇讬讞 讟讜讘 讬讜转专 讘拽讜专住 讜诇住讬讬诐 讗讜转讜 讬讜转专 诪讛专. 讗讘诇 讗诇 转讚诇讙讜 注诇 讛讘住讬住 讜讗诇 转住驻专讜 诇注爪诪讻诐 砖讘讙诇诇 讛谞讬住讬讜谉 讚讘专讬诐 诪住讜讬诪讬诐 诇讗 专诇讜讜谞讟讬诐 诇讻诐. 2. 讜讗诐 讗转诐 爪注讚 讗讞讚 拽讜讚诐, 讻诇讜诪专 注讜讘讚讬诐 讘诪拽讜诐 讜诪讜爪讗讬诐 讗转 注爪诪讻诐 诪注转讬拽讬诐 讜诪讚讘讬拽讬诐 拽讜讚 诪讛专 专拽 讘砖讘讬诇 砖驻讬爪'专讬诐 讬注讘讚讜, 讘诇讬 诇讛讘讬谉 诇注讜诪拽 诪讛 讗讜诪专转 讻诇 砖讜专讛 - 讘诪爪讘 讻讝讛 砖讜讜讛 诇注砖讜转 诪讗诪抓 讗拽讟讬讘讬 诇讛讗讟. 诇讻转讜讘 驻讞讜转 驻讬爪'专讬诐 讗讜 诇讻转讜讘 讗讜转诐 讬讜转专 诇讗讟, 诇拽专讜讗 讜诇讛讘讬谉 诇注讜诪拽 诪讛 讻诇 讚讘专 注讜砖讛 讜诇谞住讜转 诇讘谞讜转 讗转 讗讜转讜 诪谞讙谞讜谉 讘讻诪讛 讚专讻讬诐 砖讜谞讜转 讻讚讬 诇讛讘讬谉 诪讛讬 讛讚专讱 讛讟讜讘讛 讘讬讜转专. 讻讻诇 砖转转讗诪爪讜 诇砖诇讘 诇讬诪讜讚讬诐 讜注讘讜讚讛 (讘诪讬谞讜谉 砖诪转讗讬诐 诇讻诐 讜诇讘讜住), 讻讱 转讙讚讬诇讜 讗转 讛住讬讻讜讬 砖讗讞专讬 4 砖谞讬诐 转爪诇讬讞讜 诇讛诪砖讬讱 讛诇讗讛 讜诇讛讬讻谞住 诇注讘讜讚讛 讛讘讗讛.

ToCode
1 419
# 讗讬讱 诇诪讝讙 拽讘爪讬 JSON (讗讜 讻诇 拽讜讘抓 诪讬讜讞讚 讗讞专) 注诐 git 诪谞讙谞讜谉 讛诪讬讝讜讙 讜驻讬转专讜谉 讛拽讜谞驻诇讬拽讟讬诐 砖诇 讙讬讟 注讜讘讚 诪讗讜讚 讟讜讘 诇拽讘爪讬 讟拽住讟, 讜诇驻注诪讬诐 驻讞讜转 讟讜讘 讘拽讘爪讬诐 诪住讜讙讬诐 讗讞专讬诐, 讘诪讬讜讞讚 讘拽讘爪讬诐 讘注诇讬 诪讘谞讛 拽砖讬讞 砖诇讗 谞专讗讬诐 讻诪讜 拽讘爪讬 拽讜讚. 讚讜讙诪讛 拽诇讛 讛讬讗 拽讘爪讬 JSON, 讜讘诪讬讜讞讚 讛拽讜讘抓 package.json 诇诪转讻谞转讬 Front End 讗讜 诪转讻谞转讬 Node.JS. 讻砖讗谞讞谞讜 诪讜住讬驻讬诐 诪讜讚讜诇 讘注谞祝 讗讞讚 讘讙讬讟, 讜讘注谞祝 讗讞专 诪讜住讬驻讬诐 诪讜讚讜诇 讗讞专, 讻诪注讟 转诪讬讚 谞拽讘诇 拽讜谞驻诇讬拽讟. 讛谞讛 讚讜讙诪讛 拽讟谞讛 砖诇 package.json 讗讞专讬 谞讬住讬讜谉 merge, 讻砖注谞祝 讗讞讚 讛转拽讬谉 诪讜讚讜诇 讘砖诐 cowsay 讜注谞祝 讗讞专 讛转拽讬谉 诪讜讚讜诇 讘砖诐 mocha:
{
  "name": "driverdemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
<<<<<<< HEAD
  "dependencies": {
    "cowsay": "^1.4.0"
=======
  "devDependencies": {
    "mocha": "^8.3.2"
>>>>>>> feature2
  }
}

讗诐 讙讬讟 讛讬讛 拽爪转 讬讜转专 讞讻诐 讛讜讗 讛讬讛 诪讘讬谉 砖讗讬谉 拽砖专 讘讬谉 讛诪驻转讞 dependencies 诇诪驻转讞 devDependencies, 讜砖讘砖讘讬诇 诇砖诇讘 讗转 讛拽讘爪讬诐 讛讜讗 驻砖讜讟 爪专讬讱 诇砖诪讜专 讗转 砖谞讬 讛诪驻转讞讜转 讘讗讜讘讬拽讟 讛专讗砖讬. 诪住转讘专 砖讗谞讞谞讜 讬讻讜诇讬诐 诪诪砖 讘拽诇讜转 诇讛驻讜讱 讗转 讙讬讟 诇拽爪转 讬讜转专 讞讻诐 讘讗诪爪注讜转 诪谞讙谞讜谉 砖谞拽专讗 Merge Driver. 讚专讬讬讘专 诪讬讝讜讙, 讗讜 merge driver, 讛讜讗 驻砖讜讟 转讜讻谞讬转 砖 git 讬驻注讬诇 讻砖讛讜讗 爪专讬讱 诇诪讝讙 砖谞讬 拽讘爪讬诐. 讛转讜讻谞讬转 转拽讘诇 讘转讜专 驻专诪讟专讬诐 讗转 砖谞讬 讛拽讘爪讬诐 讜讙诐 讗转 讛拽讜讘抓 讘讙讬专住转 讛 merge-base 砖诇讛诐, 讻诇讜诪专 讛拽讜讘抓 "讛诪拽讜专讬" 诪诪谞讜 砖谞讬讛诐 讬爪讗讜. 讗谞讞谞讜 讬讻讜诇讬诐 诇讻转讜讘 讚专讬讬讘专讬诐 讻讻诇 砖谞专爪讛 讜诇讘拽砖 诪讙讬讟 诇讛驻注讬诇 讗讜转诐 注诇 拽讘爪讬诐 诪住讜讙 诪住讜讬诐 讘讗诪爪注讜转 转讜住驻转 讛讙讚专讛 讘拽讜讘抓 .git/config. 讚专讬讬讘专 诪讬讝讜讙 砖讻讘专 拽讬讬诐 讜注讜讘讚 讟讜讘 诇拽讘爪讬 JSON 谞拽专讗 git-json-merge. 讗谞讬 诪诪诇讬抓 诇讛住转讻诇 讙诐 注诇 讛拽讜讚 砖诇讜 讻讚讬 诇专讗讜转 讗讬讱 谞专讗讛 merge driver 讜讻讬 讘住讱 讛讻诇 讛讜讗 讚讬 驻砖讜讟. 讘砖讘讬诇 诇讛转拽讬谉 讗转 讛讚专讬讬讘专 谞驻注讬诇:
npm install --global git-json-merge
讜注讻砖讬讜 谞诪砖讬讱 诇讛讙讚讬专 讗转 git-json-merge 讘转讜专 讛讚专讬讬讘专 砖讬诪讝讙 拽讘爪讬 JSON 讘驻专讜讬拽讟 砖诇谞讜. 拽讜讚诐 讻诇 讬砖 诇讬爪讜专 讘转讬拽讬讬转 讛驻专讜讬拽讟 拽讜讘抓 讘砖诐 .gitattributes 讜讘讜 讛转讜讻谉 讛讘讗:
*.json merge=json
讛拽讜讘抓 诪讙讚讬专 砖讻诇 拽讜讘抓 注诐 住讬讜诪转 json 讬讛讬讛 拽讜讘抓 诪住讜讙 json. 讗转诐 讬讻讜诇讬诐 诇讘讞讜专 讻诇 诪讬诇讛 讘诪拽讜诐 json, 讜讻诇 转讘谞讬转 诇转驻讬住转 拽讘爪讬诐 - 讻讱 砖转讜讻诇讜 诇讛讙讚讬专 讚专讬讬讘专 诪住讜讬诐 砖讬驻注诇 专拽 注诇 拽讜讘抓 讗讞讚 住驻爪讬驻讬, 讗讜 注诇 package-lock.json 讘诇讘讚. 讛拽讜讘抓 讛砖谞讬 讘住讬驻讜专 砖诇谞讜 讛讜讗 .git/config 砖诐 谞讜住讬祝 讗转 讛讘诇讜拽:
[merge "json"]
    name = custom merge driver for json files
    driver = git-json-merge %A %O %B
讛驻拽讜讚讛 git-json-merge 讛讬讗 讛转讜讻谞讬转 砖讛专讙注 讛转拽谞讜, 讜砖诇讜砖转 讛讗讜转讬讜转 讗讞专讬讛 诪讬讬爪讙讜转 讗转 砖诇讜砖转 讛讙讬专住讗讜转 砖诇 讛拽讜讘抓: %A 讛拽讜诪讬讟 诪讛注谞祝 讛谞讜讻讞讬, %O 讛拽讜讘抓 讛诪拽讜专讬 诪 merge-base 讜 %B 讛拽讜讘抓 诪讛注谞祝 讛砖谞讬. 注讘讜专 拽讘爪讬 JSON 讗驻砖专 诇住讬讬诐 讻讗谉. 砖讜诪专讬诐 讗转 讛砖讬谞讜讬讬诐 讘讻诇 讛拽讘爪讬诐 讜讘驻注诐 讛讘讗讛 砖讙讬讟 讬爪讟专讱 诇诪讝讙 拽讘爪讬 JSON 讛讜讗 讻讘专 讬爪诇讬讞 诇注砖讜转 注讘讜讚讛 讛专讘讛 讬讜转专 讟讜讘讛. 讻讱 谞专讗讛 讛拽讜讘抓 package.json 讗讞专讬 讛诪讬讝讜讙 讛讞讚砖:
{
  "name": "driverdemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "mocha": "^8.3.2"
  },
  "dependencies": {
    "cowsay": "^1.4.0"
  }
}
讜讗诐 讬砖 诇讻诐 拽讘爪讬诐 谞讜住驻讬诐 讘驻讜专诪讟讬诐 讬爪讬专转讬讬诐 砖讜讜讛 诇讛住转讻诇 讘拽讜讚 砖诇 git-json-merge 讜诇讻转讜讘 讙讬专住讛 诪讜转讗诪转 诇诪讬讝讜讙 讛拽讘爪讬诐 砖诇讻诐.