en
Feedback
ToCode

ToCode

Open in Telegram

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

Show more
1 421
Subscribers
+124 hours
No data7 days
No data30 days
Posts Archive
ToCode
1 421
# 讛诪讚专讙讛 讛讘讗讛 讗讞转 讛砖讗诇讜转 砖讛讻讬 讞砖讜讘 诇砖讗讜诇 讻砖诇讜诪讚讬诐 砖驻转 转讻谞讜转 讛讬讗 "讗讬讱 诪讬砖讛讬 注诐 谞讬住讬讜谉 讘砖驻讛 讝讜 讛讬转讛 驻讜转专转 讗转 讛讘注讬讛". 讗驻砖专 诇拽专讜讗 诇砖讗诇讛 讛讝讜 讛诪讚专讙讛 讛讘讗讛. 讻讬 讻砖讗谞讞谞讜 讘讗讬诐 诇诇诪讜讚 砖驻转 转讻谞讜转 讞讚砖讛 讻讘专 讬砖 诇谞讜 讘专讗砖 讗转 讛 if 诪 Java 讜讗转 讛 class 诪 Python 讜讘注爪诐 讻诪注讟 讻诇 诪讬诇讛 讘砖驻讛 讛讞讚砖讛 讟注讜谞讛 讘讻诇 诪讬谞讬 诪砖诪注讜讬讜转 诪驻注诐, 讜诇讻谉 讛驻讬转专讜谉 讛专讗砖讜谉 砖讗谞讬 讞讜砖讘 注诇讬讜 诇讘注讬讛 讛讜讗 驻砖讜讟 讬讬砖讜诐 砖诇 讛讚讘专讬诐 砖讗谞讬 专讙讬诇 诇讻转讜讘 诪砖驻讛 讗讞专转 诇转讜讱 讛砖驻讛 讛讞讚砖讛. 讜诇诪讛 讝讛 专注? 讘讙诇诇 砖砖驻讜转 砖讜谞讜转 讜住讘讬讘讜转 砖讜谞讜转 诪转谞讛讙讜转 讗讞专转, 讘讙诇诇 砖诪讘谞讛 砖讬讛讬讛 讬注讬诇 讘诪拽讜诐 讗讞讚 注讜讘讚 诪诪砖 专注 讘诪拽讜诐 讗讞专. 讞讜住专 讛讬讚注 讜讞讜住专 讛谞讬住讬讜谉 讘砖驻讛 讛讞讚砖讛 讗讜诪专 砖讗谞讬 注讚讬讬谉 诇讗 专讜讗讛 讗讬讱 讛讚讘专讬诐 砖讗谞讬 讻讜转讘 讛讜诇讻讬诐 诇讛讬砖讘专. 讻砖专拽 讛转讞诇转讬 诇讻转讜讘 专讬讬诇住 砖诪讞转讬 诇讙诇讜转 讗转 讛 ORM 砖诇讜 讜讛砖转诪砖转讬 讘诪讞诇拽讜转 砖讞讝专讜 诪讘住讬住 讛谞转讜谞讬诐 讻讗讬诇讜 讛讬讜 诪讞诇拽讜转 专讙讬诇讜转 诪 Java. 讝讛 讛讬讛 诪讗讜讚 谞驻讜抓 诇专讗讜转 讘拽讜讚 砖诇讬 诇讜诇讗讜转 诪讛住讜讙 讛讝讛:
users.map do |user|
    puts user.profile.nickname
end
讻砖讛讬讜诐 注诐 讛谞讬住讬讜谉 砖讬砖 诇讬 讘专讬讬诇住 注讜诪住 讛谞拽讜讚讜转 讘砖讜专讛 诪讬讚 诪讻谞讬住 讗讜转讬 诇诪转讞. 讘诇讬诪讜讚 砖驻讛 讞讚砖讛 讛讗转讙专 讛讜讗 诇讗 诇讻转讜讘 拽讜讚 砖注讜讘讚. 讛专讘讛 讬讜转专 讞砖讜讘 诇讻转讜讘 拽讜讚 砖诪转讗讬诐 诇 Ecosystem 砖讗转 讘讗讛 诇诇诪讜讚.

ToCode
1 421
# 讗讬讱 诇驻转讜讞 讘诇讜讙 讙'拽讬诇 讜诇讗讞住谉 讗讜转讜 讘讞讬谞诐 注诇 讙讬讟讛讗讘 注专谉 讛注讘讬专 讛讬讜诐 讜讜讘讬谞专 注诇 讙'拽讬诇 讜讛讝讻讬专 诇讬 讻诪讛 讻讬祝 诇驻转讜讞 讘诇讜讙讬诐. 讗讞专讬 讛讜讜讘讬谞专 讛诪砖讻转讬 诇砖讞拽 注诐 讛讻诇讬 注讚 砖讛爪诇讞转讬 诇砖讬诐 诪砖讛讜 讘讗讜讜讬专 讜讝讛 谞专讗讛 讻讱: https://ynonp.github.io/ynonlearnsrussian/ 讘砖讘讬诇 砖讬讛讬讛 拽诇 诇砖讞讝专 讗转 讛讛讬砖讙 注诐 讘诇讜讙讬诐 注转讬讚讬讬诐 砖讗专爪讛 讗讜 砖讗转诐 转专爪讜 诇驻转讜讞, 讗谞讬 诪住讻诐 讻讗谉 讗转 讛爪注讚讬诐 讛诪专讻讝讬讬诐 讘讬爪讬专转 讜驻转讬讞转 讘诇讜讙 讜讗讞住讜谞讜 讗讜谞诇讬讬谉 讘讞讬谞诐 注诇 讙讬讟讛讗讘. ## 讛转拽谞转 讛讻诇讬诐 讘讙讚讜诇 转爪讟专讻讜 讗转 讙'拽讬诇 注诇 诪讻讜谞转 讛驻讬转讜讞 砖诇讻诐. 讙'拽讬诇 讛讜讗 讙'诐 诇专讜讘讬 诇讻谉 讘讛谞讞讛 砖讬砖 诇讻诐 专讜讘讬 诪住驻讬拽 诇讛驻注讬诇 驻注诐 讗讞转:
gem install jekyll
讜讗转诐 诪住讜讚专讬诐. ## 讬爪讬专转 砖诇讚 诇驻专讜讬拽讟 讛驻拽讜讚讛 jekyll new 讬讜爪专转 讘诇讜讙 讞讚砖 注诐 诪讘谞讛 转讬拽讬讜转 讬讞住讬转 诪讬谞讬诪诇讬住讟讬 砖诇 讙'拽讬诇:
$ jekyll new <blogname>
讗讞专讬 讛讬爪讬专讛 转讜讻诇讜 诇讛讬讻谞住 诇讘诇讜讙, 诇注讚讻谉 讗转 讛拽讜讘抓 about.markdown 讘砖讘讬诇 诇砖谞讜转 讗转 诪住讱 讛"讗讜讚讜转" 讗讜 讗转 讛拽讜讘抓 index.markdown 讘砖讘讬诇 诇砖谞讜转 讗转 讛讚祝 讛专讗砖讬. 诪讛 砖讬讜转专 诪注谞讬讬谉 讬讛讬讛 砖转讜讻诇讜 诇讬爪讜专 驻讜住讟讬诐 讘讗诪爪注讜转 讛讜住驻转 拽讘爪讬诐 诇转讬拽讬讬转 _posts. 讻诇 驻讜住讟 讛讜讗 拽讜讘抓 砖砖诪讜 诪转讞讬诇 讘转讗专讬讱 讜诇讗讞专 诪讻谉 slug, 诇讚讜讙诪讗 讘讘诇讜讙 砖诇讬 讛驻讜住讟 讛讬讞讬讚 砖诪讜专 讘拽讜讘抓 讘砖诐 2019-10-31-welcome-to-jekyll.markdown. 转讜讻谉 讛拽讜讘抓 讻转讜讘 讘 markdown 讜讗讞专讬 砖转讻谞住讜 诇拽讜讘抓 讛讚讜讙诪讗 砖讙'拽讬诇 讬爪专 转专讗讜 砖讝讛 诪诪砖 驻砖讜讟 诇拽专讜讗 讜诇讻转讜讘 讻讗诇讛. 讗讞专讬 砖讻诇 讛砖讬谞讜讬讬诐 讘诪拽讜诐 转讜讻诇讜 诇讛驻注讬诇:
$ jekyll serve
讜诇拽讘诇 砖专转 诪拽讜诪讬 砖专抓 注诇 localhost:4000 注诐 讛讘诇讜讙 砖诇讻诐. ## 砖讬谞讜讬 讛拽讘爪讬诐 讜讛转讗诪转 讛注讬爪讜讘 讛讘注讬讛 讛专讗砖讜谞讛 砖谞转拽诇转讬 讘讛 讗讞专讬 讬爪讬专转 讛讘诇讜讙 讛讬讗 砖专爪讬转讬 诇砖谞讜转 讗转 讛注讬爪讜讘 讘砖讘讬诇 讛注讘专讬转 (讜讘讻诇诇 讘砖讘讬诇 讛讞讬讬诐). 讙'拽讬诇 砖讜诪专 讗转 讻诇 拽讘爪讬 讛注讬爪讜讘 讻讞诇拽 诪讛 Theme 讜讻讘专讬专转 讛诪讞讚诇 诇讗 诪讬讬爪专 诇讻诐 讗转 讛拽讘爪讬诐 讛讗诇讛 讘转讬拽讬讬转 讛驻专讜讬拽讟. 讝讛 讗讜诪专 砖讘砖讘讬诇 诇砖谞讜转 讗讜转诐 谞爪讟专讱 拽讜讚诐 诇拽讞转 讗讜转诐 诪讛 Theme 讗诇讬谞讜 讜专拽 讗讝 谞讜讻诇 诇注讚讻谉. 注专讻转 谞讜砖讗 讘专讬专转 讛诪讞讚诇 谞拽专讗转 minima. 讛驻拽讜讚讛 讛讘讗讛 诪爪讬讙讛 讗讬驻讛 注诇 讛诪讞砖讘 砖诇讻诐 讛讬讗 诪讜转拽谞转:
$ bundle show minima
讗爪诇讬 讛转讜爪讗讛 讛讬讗:
/Users/ynonperek/.rvm/gems/ruby-2.6.3/gems/minima-2.5.1
谞讻谞住转讬 诇转讬拽讬讛 讜诇拽讞转讬 讗转 讻诇 讛拽讘爪讬诐 诪诪谞讛 诇转讬拽讬转 讛驻专讜讬拽讟. 讗诐 讗转诐 注诇 诇讬谞讜拽住 讗讜 诪拽 诪住驻讬拽 诇讛专讬抓 讗转 讛驻拽讜讚讛 讛讘讗讛 诪转讜讱 转讬拽讬讬转 讛讘诇讜讙 讛专讗砖讬转:
$ cp -R $(bundle show minima)/* .
注讻砖讬讜 讬砖 诇谞讜 讻讘专 讛诪讜谉 拽讘爪讬诐 讘讘诇讜讙 讜讗驻砖专 诇讛转讗讬诐 讗讜转诐 诇爪专讻讬诐 砖诇谞讜, 诇讚讜讙诪讗 讛 CSS 讬砖讘 讘拽讜讘抓 assets/main.scss. ## 讛注诇讗讛 诇讙讬讟讛讗讘 讛讞诇拽 讛诪住讜讘讱 讛专讗砖讜谉 讛讜讗 诇讛注诇讜转 讗转 讛讘诇讜讙 砖诇讻诐 诇讙讬讟讛讗讘. 讛砖转诪砖转讬 讘诪谞讙谞讜谉 砖谞拽专讗 Github Pages 砖注讜讘讚 讻讱: 1. 讗谞讞谞讜 讬讜爪专讬诐 驻专讜讬拽讟 讙讬讟讛讗讘 讞讚砖 讜讘讜 注谞祝 讞讚砖 讘砖诐 gh-pages. 2. 讗谞讞谞讜 诪讞讘专讬诐 讗转 讛讘诇讜讙 砖诇谞讜 诇注谞祝 gh-pages 讘驻专讜讬拽讟. 3. 讗谞讞谞讜 诪注讚讻谞讬诐 讗转 讛讘诇讜讙 讻讱 砖讬讙讬砖 讗转 讻诇 讛谞讻住讬诐 注诐 讛 base 讛谞讻讜谉. 4. 讗谞讞谞讜 讙讜诇砖讬诐 诇讻转讜讘转 诪讬讜讞讚转 砖诇 github pages 讻讚讬 诇专讗讜转 讗转 讛讘诇讜讙. 讗谞讬 诪谞讬讞 砖讗转诐 讬讜讚注讬诐 诇讬爪讜专 驻专讜讬拽讟 讙讬讟讛讗讘 讞讚砖 (诇讗 讬讜讚注讬诐? 讬砖 拽讜专住 讙讬讟 诪注讜诇讛 讻讗谉 讘讗转专). 讗讞专讬 砖讬爪专转诐 讜讛注诇讬转诐 讗转 讛注谞祝 转讜讻诇讜 诇讛讬讻谞住 诇讛讙讚专讜转 讛驻专讜讬拽讟 讜诇讙诇讜诇 诇诪讟讛, 讜砖诐 转诪爪讗讜 拽讟注 砖谞拽专讗 GitHub Pages 讘转讜讻讜 转诪爪讗讜 讗转 讛 URL 诇讗转专 砖诇讻诐. 讗谞讞谞讜 爪专讬讻讬诐 诇拽讞转 讗转 讛 URL 讛讝讛 讘转讜专 base 讘 html. 讘砖讘讬诇 讝讛 谞讻谞住 诇拽讜讘抓 _includes/head.html 讜砖诐 谞讜住讬祝 讗转 讛讗诇诪谞讟:
 <base href="{{ site.baseurl }}/">
讘谞讜住祝 讘拽讜讘抓 _config.yml 诪讛转讬拽讬讛 讛专讗砖讬转 砖诇 讛讘诇讜讙 谞专砖讜诐 讘砖讚讛 url 讗转 讛讚讜诪讬讬谉 讚专讱 讙讬讟讛讗讘 讘讜 讛讘诇讜讙 谞诪爪讗 (讗爪诇讬 讝讛 https://ynonp.github.io/) 讜讘砖讚讛 baseurl 谞专砖讜诐 讗转 讛谞转讬讘 诇讘诇讜讙, 砖讝讛 砖诐 讛驻专讜讬拽讟 (讗爪诇讬 讝讛 "/ynonlearnsrussian"). 砖诪讬专讛 讜讚讞讬驻讛 讜讗诐 注砖讬转诐 讛讻诇 谞讻讜谉 转讜讻诇讜 诇讛谞讜转 诪讛讘诇讜讙 砖诇讻诐 讘讻转讜讘转 讘讛 讙讬讟讛讗讘 诪驻专住诪讬诐 讗讜转讜. 讛拽讜讚 讛诪诇讗 诇讘诇讜讙 砖诇讬 谞诪爪讗 讻讗谉 诇诪拽专讛 砖驻住驻住转诐 诪砖讛讜 诪讛住讘专 讛讟拽住讟 讗讜 砖转专爪讜 诇拽讘诇 注讜讚 专注讬讜谞讜转: https://github.com/ynonp/ynonlearnsrussian/tree/gh-pages

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

ToCode
1 421
# 讘讬讟讜诇 诪讞讬拽讛 讘专讬讬诇住 (讻诪讜 讘讙'讬诪讬讬诇) 诪讻讬专讬诐 讗转 讛讻驻转讜专 Undo 砖诪讜驻讬注 讘讙'讬诪讬讬诇 讗讞专讬 砖诪讞拽转诐 讛讜讚注讛? 注诐 讛讟讻谞讜诇讜讙讬讛 砖诇 讛讬讜诐 诇讗 讞讬讬讘讬诐 诇讛讬讜转 诪讛谞讚住转 讘讙讜讙诇 讘砖讘讬诇 诇讘谞讜转 讚讘专 讻讝讛 讙诐 诇诪注专讻转 砖诇讻诐. 讛谞讛 诪讚专讬讱 拽爪专 诇诪讬诪讜砖 讘专讬讬诇住. ## 讘讙讚讜诇 - 讗讬讱 讝讛 注讜讘讚 诇讗 讬讜讚注 诪讛 讙讜讙诇 注砖讜 讗讘诇 讚专讱 驻砖讜讟讛 诇讘谞讜转 讻讝讛 诪谞讙谞讜谉 诪讜专讻讘转 诪诪住驻专 砖诇讘讬诐: 1. 讛讻讬 讞砖讜讘 诇讗 讘讗诪转 诇诪讞讜拽 讗转 讛讛讜讚注讜转, 讗诇讗 专拽 诇注砖讜转 讻讗讬诇讜. 诇讻谉 谞讬爪讜专 注诪讜讚讛 讘 DB 讘砖诐 archived 讜讛讜讚注讜转 砖谞诪讞拽讜 讬住讜诪谞讜 讘转讜专 true 讘注诪讜讚讛 讝讜. 2. 讻诇 驻注诐 砖讗谞讞谞讜 "诪讜讞拽讬诐" 讛讜讚注讛 爪专讬讱 诇讝讻讜专 诪讝讛讛 砖诇 驻注讜诇转 讛诪讞讬拽讛, 讻讚讬 砖讗驻砖专 讬讛讬讛 诇讘讟诇 讗转 诪讞讬拽转 讻诇 讛讛讜讚注讜转 讘诪讻讛 讗讞转. 谞讜住讬祝 诇讻谉 注诪讜讚讛 谞讜住驻转 讘砖诐 recover_token 砖转讻讬诇 诪讝讛讛 讗拽专讗讬 诪诪砖. 3. 讘专讙注 砖诪砖转诪砖 诪讜讞拽 讛讜讚注讛 讗谞讞谞讜 谞注讘讬专 讗转 讛讛讜讚注讛 诇讗专讻讬讜谉 讜谞讙专讬诇 诪讝讛讛 讗拽专讗讬 诪诪砖 注讘讜专 recovery_token. 讘讚祝 讛讗讬谞讚拽住 讛讞讜讝专 谞砖诇讞 讗转 讛诪讝讛讛 讛讝讛. 诪砖转诪砖 讬讜讻诇 诇驻谞讜转 诇谞转讬讘 讞讚砖 (谞拽专讗 诇讜 recover) 讘爪讬专讜祝 讛诪讝讛讛 讛讗拽专讗讬 讜讻讱 诇砖讞讝专 讗转 讛讛讜讚注讜转 砖讘讟注讜转 诪讞拽, 诪讛 砖谞拽专讗 Undo. 拽讜讚? 讬讗诇诇讛 拽讜讚. ## 驻注讜诇转 讛诪讞讬拽讛 讛诪专讜讘讛 讘 Controller 谞转讞讬诇 注诐 诪讞讬拽讛 诪专讜讘讛. 诪砖转诪砖 砖诪讙讬注 诇讻讗谉 住讬诪谉 诪住驻专 讛讜讚注讜转 讚专讱 驻专诪讟专 message_ids 讜讛驻讜谞拽爪讬讛 爪专讬讻讛 诇讛注讘讬专 讗转 讻诇 讛讛讜讚注讜转 诇讗专讻讬讜谉. 讘砖讘讬诇 诇讗驻砖专 undo 讛驻讜谞拽爪讬讛 转讙专讬诇 讜转砖诪讜专 讙诐 讗转 讛 token:
  def destroy_multiple
    recover_token = SecureRandom.hex(25)
    Message.where(id: params[:message_ids]).update_all(archived: true, recover_token: recover_token)

    flash[:recover_token] = recover_token
    redirect_to messages_path
  end
## 驻注讜诇转 砖讞讝讜专 诇驻讬 Token 讗讞专讬 诪讞讬拽讛 诪讜爪诇讞转 讗谞讞谞讜 专讜爪讬诐 诇讗驻砖专 讙诐 砖讞讝讜专 (讗讜 undo). 讘讜讗讜 谞谞讬讞 砖诪砖转诪砖 诪讙讬注 注诐 讟讜拽谉, 讗讝 讻诇 诪讛 砖爪专讬讱 诇注砖讜转 讝讛 诇诪爪讜讗 讗转 讛讛讜讚注讜转 砖拽砖讜专讜转 诇讟讜拽谉 讛讝讛 讜诇讛讞讝讬专 讗讜转谉 诇讞讬讬诐. 讛拽讜讚 谞专讗讛 讻讱:
  def recover
    recover_token = params[:token]
    Message.where(recover_token: recover_token).update_all(archived: false)
    redirect_to messages_path
  end
## 讞讬讘讜专 讛驻注讜诇讜转 诇谞转讬讘讬诐 讘拽讜讘抓 config/routes.rb 谞专爪讛 诇讞讘专 讗转 砖转讬 讛驻注讜诇讜转 讛讞讚砖讜转 砖诇谞讜 诇 Controller. 讗转 讛驻专讜讬拽讟 诇讚讜讙诪讗 讛转讞诇转讬 注诐 Scaffold 讻讱 砖讛拽讜讘抓 讬讞住讬转 专讬拽, 讛谞讛 讛讜讗 注诐 讛转讜住驻转:
Rails.application.routes.draw do
  resources :messages do
    collection do
      delete 'destroy_multiple'
      post 'recover'
    end
  end
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
## 讛爪讙转 讛拽讬砖讜专 注诇 讛讚祝 讜诇住讬讜诐 讚祝 专砖讬诪转 讛讛讜讚注讜转 砖爪专讬讱 注讻砖讬讜 诇讻诇讜诇 讗转 讛拽讬砖讜专 讛诪讬讜讞讚. 讗诐 转讙诇诇讜 诇诪注诇讛 转讜讻诇讜 诇专讗讜转 砖砖诪专转讬 讗转 讛拽讬砖讜专 讘 flash, 讜诇讻谉 讛讜讗 讝诪讬谉 诇讚祝 讛讗讬谞讚拽住. 讗诐 拽讬讘诇谞讜 讟讜拽谉 讻讝讛 讘讚祝 讛讗讬谞讚拽住 谞爪讬讙 讗转 讛拽讬砖讜专 讘讗讜驻谉 讛讘讗:
  <% if undo_token = flash[:recover_token] %>
    Messages were deleted. 
    <%= link_to('undo ?', recover_messages_path(token: undo_token), method: :post) %>
  <% end %>
## 诪讞砖讘讜转 诇注转讬讚 讛拽讜讚 注讚讬讬谉 诇讗 讙谞专讬 讜讬讛讬讛 拽砖讛 诇讛砖转诪砖 讘讜 注诇 注讜讚 诪讜讚诇讬诐 讘诪注专讻转. 讻谞专讗讛 砖注讚讬祝 诇讛讜住讬祝 讘诪讜讚诇 驻讜谞拽爪讬讬转 诪讞讬拽讛 讘讟讜讞讛 讜诇拽专讜讗 诇讛 诪讛 Controller, 讜讗讝 讗驻讬诇讜 诇讛讜爪讬讗 讗讜转讛 诇 Concern 讻讚讬 砖讗驻砖专 讬讛讬讛 诇讛砖转诪砖 讘讛 讘注讜讚 诪讜讚诇讬诐. 讘注讜诇诐 注讜讚 讬讜转专 讬驻讛 讛讬讬谞讜 砖讜诪专讬诐 States 砖诇 讛诪讜讚诇讬诐 砖诇谞讜 讘讟讘诇讗 谞驻专讚转 讜诪谞讛诇讬诐 讗转 讛讻诇 诪讞讜抓 诇诪讜讚诇讬诐, 讜讻讱 讬讻讜诇讬诐 诇讟驻诇 讙诐 讘 Undo 诇砖讬谞讜讬 讜诇讗 专拽 诇诪讞讬拽讛. 讝讛 诪讛 砖注讜砖讛 讛讙'诐 诪诪谞讟讜. 讛注诇讬转讬 讗讙讘 诇讙讬讟讛讗讘 讗转 驻专讜讬拽讟 讛讚讜讙诪讗 讗讝 讗诐 讬砖 讞诇拽讬诐 讘拽讜讚 砖诪注谞讬讬谞讬诐 讗转讻诐 讜砖讻讞转讬 诇讛讚讘讬拽 讻讗谉 诪讜讝诪谞讬诐 诇讛注讬祝 诪讘讟 讘拽讬砖讜专 https://github.com/ynonp/undo-demo

ToCode
1 421
# 诪转讻谞转讬诐 砖讗谞讬 专讜爪讛 诇注讘讜讚 讗讬转诐 诪拽专讬讗讛 讘诪讜讚注讜转 讚专讜砖讬诐 谞专讗讛 诇驻注诪讬诐 砖讻讜诇诐 诪讞驻砖讬诐 谞讬谞讙'讜转 讗讜 转讜转讞讬诐 讗讜 住讜驻专住讟讗专讬诐 讗讜 诪讛 砖诇讗 讬讛讬讛, 讜讝讜 讟专诪讬谞讜诇讜讙讬讛 拽爪转 诪诇讞讬爪讛. 专讜讘 讛讗谞砖讬诐 诇讗 讬讙讚讬专讜 讗转 注爪诪诐 讘转讜专 谞讬谞讙'讜转 讜讘讬谞讬谞讜 讗谞讬 诇讗 讘讟讜讞 砖讛讬讬转讬 专讜爪讛 诇注讘讜讚 注诐 讗诇讛 砖讻谉. 讜讘讻诇 讝讗转 讗谞讞谞讜 讬讜讚注讬诐 砖讬砖 诪转讻谞转讬诐 讜诪转讻谞转讜转 砖诪爪诇讬讞讬诐 转诪讬讚 诇诪爪讜讗 注讘讜讚讛 讙诐 讘讟讻谞讜诇讜讙讬讛 砖讗祝 驻注诐 诇讗 谞讙注讜 讘讛, 讜讬砖 讻讗诇讛 砖讙诐 讗讞专讬 5 砖谞讬诐 谞讬住讬讜谉 注讚讬讬谉 讬转拽砖讜 诇讛讞讝讬拽 讘诪砖专讛. 讗讝 讻谉 讗谞讬 讞讜砖讘 砖讗谞讞谞讜 爪专讬讻讬诐 砖诐 讗讞专 讘砖讘讬诇 讛讗谞砖讬诐 讛讗诇讛 砖讗谞讞谞讜 专讜爪讬诐 诇注讘讜讚 讗讬转诐, 讗讘诇 讗转 讛转讻讜谞讜转 砖诇讛诐 讬讞住讬转 拽诇 诇讝讛讜转: ## 诇讛转注拽砖 诇诪爪讜讗 驻讬转专讜谞讜转 讗谞讬 转诪讬讚 诪注讚讬祝 诇注讘讜讚 注诐 讗谞砖讬诐 砖诪讜爪讗讬诐 讗转 讛讚专讱 诇驻讬转专讜谉, 讙诐 讻砖讛驻讬转专讜谉 讛讘专讜专 诇讗 注讜讘讚. 讛转砖讜讘讛 "讻转讘转讬 讗转 讝讛 讻讻讛 讻讬 讝讛 诪讛 砖注讘讚" 讛专讘讛 讬讜转专 讟讜讘讛 诪"讜讬转专转讬 注诇 讛驻讬爪'专 讻讬 诇讗 讛爪诇讞转讬 诇讙专讜诐 诇讜 诇注讘讜讚". ## 讝讛 诇讗 讛诪讞砖讘, 讝讛 讗转讛 诪转讻谞转讬诐 讟讜讘讬诐 讗祝 驻注诐 诇讗 讬讗砖讬诪讜 讗转 讛诪讞砖讘, 讻讬 讛诐 讬讜讚注讬诐 砖讛讘注讬讛 讛讗诪讬转讬转 讛讬讗 讘诪讬 砖讻讜转讘 讗转 讛拽讜讚. 讻讘专 诇驻谞讬 注砖专 砖谞讬诐 驻讬专住诐 讙'祝 讗讟讜讜讚 诪讗诪专 诪注讜诇讛 注诐 讛讻讜转专转 讛讻诇诇 讛专讗砖讜谉 砖诇 转讻谞讜转: 讝讜 转诪讬讚 讗砖诪转讱, 讜讛讜讗 爪讜讚拽 讻诪讜讘谉. 诇诪转讻谞转讬诐 讟讜讘讬诐 讗讬谉 讘注讬讛 诇爪诇讜诇 诇驻讬谞讜转 讛讻讬 讗驻诇讜转 砖诇 讛拽讜讚 讻讚讬 诇诪爪讜讗 诪讛 砖讘讜专, 讜诇诪讛 诪谞讙谞讜谉 诪住讜讬诐 诇讗 注讜讘讚 讻诪讜 砖讻转讜讘 讘讛讜专讗讜转. ## 诇讚注转 诇转转 诇驻谞讬 砖诇讜拽讞讬诐 诪转讻谞转讬诐 讟讜讘讬诐 讬砖诇讞讜 Pull Requests 诇驻专讜讬拽讟讬诐 讘讛诐 讛砖转诪砖讜 诪讙讬讟讛讗讘 讻砖爪专讬讱 诇转拽谉, 讬驻转讞讜 Issue 讻砖爪专讬讱 诇驻转讜讞 讗讞讚 讜诪讘诇讬诐 讞诇拽 诪砖诪注讜转讬 诪讛讝诪谉 砖诇讛诐 讘诇注讝讜专 诇诪转讻谞转讬诐 讗讞专讬诐. 讜诇讗, 诇注讝讜专 诇讗讞专讬诐 讝讛 诇讗 诇驻转讜专 诇讛诐 讗转 讛讘注讬讜转 - 诇注讝讜专 诇讗讞专讬诐 讝讛 诇讛专讗讜转 诇讛诐 讗转 讛讘注讬讜转. 诪转讻谞转讬诐 讟讜讘讬诐 讬讜讚注讬诐 砖讻砖讛讗谞砖讬诐 砖住讘讬讘诐 讬讚注讜 诇专讗讜转 讘注讬讜转 讘爪讜专讛 讟讜讘讛 讬讜转专 讻讜诇诐 讬专讜讜讬讞讜, 讜砖讙诐 讛讛爪诇讞讜转 砖诇谞讜 诪讙讬注讜转 讘诪讬讚讛 专讘讛 讘讝讻讜转 讛拽讛讬诇讛 讜讛讗谞砖讬诐 砖注讝专讜 讜注讜讝专讬诐 诇谞讜 诇讗讜专讱 讛讚专讱. 讝讗转 讛住讬讘讛 砖讛讚讘专 讛专讗砖讜谉 砖讗谞讬 诪住转讻诇 注诇讬讜 讘驻专讜讬拽讟 Github 砖诇 诪转讻谞转 讬讛讬讛 讗讬讝讛 Pull Requests 讛讜讗 砖诇讞 讜讗讬讝讛 诪讛诐 讛转拽讘诇讜, 讛专讘讛 诇驻谞讬 砖讗住转讻诇 注诇 驻专讜讬拽讟讬 讛爪讚 讜讛拽讜讚 砖讗讜转讜 诪转讻谞转 讻转讘. ## 诇讛转讗诪抓 诇诪爪讜讗 讗转 讛讚专讱 讛拽诇讛 诇讗专讬 讜讜诇 讻转讘 驻注诐 注诇 砖诇讜砖转 讛转讻讜谞讜转 讛讞砖讜讘讜转 讘讬讜转专 诇诪转讻谞转讬诐 砖讛谉: 注爪诇谞讜转, 讞讜住专 住讘诇谞讜转 讜讛讬讘专讬住. 砖讬诇讜讘 砖诇 讻诇 讛砖诇讜砖 讛讜讗 砖讚讜讞祝 讗讜转谞讜 诇讛转讗诪抓 诇诪爪讜讗 讗转 讛讚专讱 讛拽诇讛 讗驻讬诇讜 讻砖诪诪砖 诇讗 讘专讜专 诪讛讬, 讜讘讚专讱 诇讻转讜讘 驻讬转专讜谞讜转 讬爪讬专转讬讬诐 讜讞讚砖谞讬讬诐 诇讘注讬讜转. 诪转讻谞转讬诐 砖讗谞讬 专讜爪讛 诇注讘讜讚 讗讬转诐 讬注讘讚讜 诪讗讜讚 拽砖讛 讘砖讘讬诇 诇讻转讜讘 转讜讻谞讬讜转 砖讞讜住讻讜转 诇讛诐 讝诪谉, 驻砖讜讟 讻讬 讛诐 诪转注爪诇讬诐 诇注砖讜转 讗转 讗讜转讛 注讘讜讚讛 砖讙专转讬转 砖讜讘 讜砖讜讘. ## 诇诇诪讜讚 诪讻诇 诪讬 砖讗驻砖专 诪讻诇 讛讗谞砖讬诐 讗诇讛 砖讛讻讬 诪诇讞讬爪讬诐 讗讜转讬 讛诐 讗诇讛 砖讞讜砖讘讬诐 砖讛诐 讻讘专 讬讜讚注讬诐 讛讻诇 讜讻讘专 专讗讜 讛讻诇. 讻砖讗谞讬 砖讜诪注 诪转讻谞转 讗讜诪专 诇讬 砖讻诇 砖驻讜转 讛转讻谞讜转 讛谉 讗讜转讜 讚讘专, 讗讜 砖讗讞专讬 砖讻转讘转 讻诪讛 讗驻诇讬拽爪讬讜转 讗转讛 讻讘专 诪讘讬谉 讗讬讱 讚讘专讬诐 注讜讘讚讬诐, 讗谞讬 诪讞讬讬讱 讜讘讜专讞. 讛诪转讻谞转讬诐 砖讗谞讬 专讜爪讛 诇注讘讜讚 讗讬转诐 讬讞驻砖讜 转诪讬讚 讗转 讛讚讘专 讛砖讜谞讛, 讛讞讚砖, 讗转 讛讚讘专 讛谞讜住祝 砖讗驻砖专 诇诇诪讜讚 - 诪讛驻专讜讬拽讟, 诪砖驻转 讛转讻谞讜转 讗讜 诪讛讞讘专讬诐 诇爪讜讜转.

ToCode
1 421
# 诪讬砖诇讘 讗转专 诪讬诇讜讙 诪讙讚讬专 讗转 讛诪讬诇讛 诪讬砖诇讘 讘转讜专 状专诪讛 诇砖讜谞讬转 讘讛转讗诐 诇住讬讟讜讗爪讬讛 讗讜 诇诪注诪讚 讛讞讘专转讬状. 砖讜讜讛 诇讝讻讜专 砖讙诐 讻砖讗转诐 讻讜转讘讬诐 讜拽讜专讗讬诐 拽讜讚 讬砖 诪砖诪注讜转 诇诪讬砖诇讘, 讬砖 转讘谞讬讜转 诪住讜讬诪讜转 砖讗讜驻讬讬谞讬讜转 诇拽讘讜爪讜转 诪转讻谞转讬诐 诪住讜讬诪讜转 讜讗讞专讜转 砖诪讗驻讬讬谞讜转 拽讘讜爪讜转 讗讞专讜转. 讛诪讬砖诇讘 讛讜讗 砖诪讗驻砖专 诇讬 诇讚注转 讛诪讜谉 注诇 诪转讻谞转 讗讜 诪转讻谞转转 专拽 诪诇拽专讜讗 拽讟注 拽爪专 砖诇 拽讜讚 砖讛诐 讻转讘讜. 讛讛讘讚诇 讘讬谉 砖转讬 讛驻讜谞拽爪讬讜转 讛讘讗讜转 讛讜讗 转讛讜诪讬, 诇诪专讜转 砖砖转讬讛谉 讻转讜讘讜转 讘讗讜转讛 砖驻讛 讜注讜砖讜转 讘讚讬讜拽 讗转 讗讜转讜 讚讘专:
function ReturnFirstElement(array) {  
  if (array.length > 0) {
    var result = array[0];
  }
  else {
    var result = undefined;
  }
  return result;
}

const returnFirstElement = (arr) => arr[0];
讜讗谞讬 诇讗 专讜爪讛 诇讛转讞讬诇 讘讻诇诇 诇讚讘专 注诇 讛讛讘讚诇 讘讬谉 砖转讬 讛驻讜谞拽爪讬讜转 讛讗诇讛:
function fib1(n) {
  let [x, y] = [0, 1];
  for (let i=0; i < n; i++) {
    [x, y] = [y, x + y];
  }

  return x;
}

function fib2(n) {
  let [x, y] = [0, 1]
  for (let i=0; i < n; i++) {
    [x, y] = [y, x + y]
  }

  return x
}
讗转诐 讬讻讜诇讬诐 诇讻转讜讘 拽讜讚 讘诪砖诇讘 诪住讜讬诐 讘诪讜讚注 讗讜 砖诇讗 讘诪讜讚注, 讗讘诇 讗转诐 诇讗 讬讻讜诇讬诐 诇讻转讜讘 拽讜讚 谞讬讬讟专诇讬. 讻诪注讟 转诪讬讚 诪砖转诇诐 诇砖讗讜诇 - 诪讬 讛讗谞砖讬诐 砖讗谞讬 专讜爪讛 诇讚讘专 讻诪讜讛诐? 讜讗讝 诇专讗讜转 讗讬讱 讛诐 讻讜转讘讬诐 讜诇讛砖转诪砖 讘讚讬讜拽 讘讗讜转讛 砖驻讛. 讻讬 讘转讻谞讜转 讘讚讬讜拽 讻诪讜 讘砖驻讛 诪讚讜讘专转 讙诐 讛住讙谞讜谉 诪注讘讬专 讛专讘讛 诪讛诪住专.

ToCode
1 421
# 诇诪讛 讜讗讬讱 诇驻转讜讞 讘诇讜讙 诪拽爪讜注讬 讘诇讜讙 诪拽爪讜注讬 讛讜讗 讻诇讬 注讘讜讚讛 诪讗讜讚 讞砖讜讘 诇诪转讻谞转讬诐 讛讬讜诐, 讜诇驻讞讜转 讘砖讘讬诇讬 讛讻转讬讘讛 讘讘诇讜讙 讝讛 诪砖讛讜 砖讗谞讬 诪讞讻讛 诇讜 讘诪讛诇讱 讛讬讜诐. 诇驻注诪讬诐 讝讛 讘注拽讘讜转 讛转诪讜讚讚讜转 注诐 转拽诇讛 诪注谞讬讬谞转, 诇驻注诪讬诐 讗讞专讬 砖诇诪讚转讬 诪砖讛讜 讞讚砖 讜诇驻注诪讬诐 讘注拽讘讜转 转讜讘谞讛 诇讙讘讬 讛诪砖讱 讛拽专讬讬专讛. 讘诇讜讙 诪拽爪讜注讬 (诇驻讞讜转 讘砖讘讬诇讬) 诪住驻拽 砖诇讜砖讛 讻讬讜讜谞讬 讛转驻转讞讜转 讘专讬讗讬诐 诇拽专讬讬专讛: 1. 讘诇讜讙 注讜讝专 诇住讚专 讗转 讛诪讞砖讘讜转 - 讗讞专讬 讛转诪讜讚讚讜转 注诐 讘讗讙 讗讜 讘注讬讛 转讻谞讜转讬转 诪注谞讬讬谞转 讛转砖讜讘讛 讛专讗砖讜谞讛 砖讗谞讬 诪讙讬注 讗诇讬讛 讛讬讗 讛专讘讛 驻注诪讬诐 诇讗 讛讟讜讘讛 讘讬讜转专. 讻谉, 讗谞讬 诪爪诇讬讞 诇讛讙讬注 诇拽讜讚 砖注讜讘讚, 讗讘诇 专拽 讗讞专讬 砖讗谞讬 诪谞住讛 诇讛住讘讬专 诇注爪诪讬 讜诇讻诐 诇诪讛 讛拽讜讚 讛讝讛 注讘讚 讗谞讬 诪讘讬谉 砖讘注爪诐 驻住驻住转讬 讻诪讛 谞拽讜讚讜转 讞砖讜讘讜转 讗讜 讻诪讛 诪拽专讬 拽爪讛, 讜讗讝 讗谞讬 讞讜讝专 诇砖讜诇讞谉 讛砖专讟讜讟讬诐 讻讚讬 诇转拽谉 讗转 讛驻讬转专讜谉. 讛讻转讬讘讛 注诇 讛讘注讬讛 驻讜转讞转 讗讜转讛 诪讞讚砖 讜谞讜转谞转 讛讝讚诪谞讜转 诇讞砖讜讘 砖讜讘 注诇 讛驻讬转专讜谉 讜诇谞住讜转 诇砖驻专. 驻讜住讟 砖诪讚讘专 注诇 驻讬转专讜谉 诪住讜讬诐 讙诐 注讜砖讛 讞砖拽 诇讞驻砖 讗转 讛驻讬转专讜谉 讛讟讜讘 讘讬讜转专 砖讗谞讬 讬讻讜诇 诇讘注讬讛. 2. 讘诇讜讙 注讜讝专 诇讗讞专讬诐 诇讛讻讬专 讗转讻诐 - 讘驻讜住讟 讬讞住讬转 讞讚砖 诪讛讘诇讜讙 诪讗讬讛 讻讜转讘转 讗诇讙讜专讬转诪讬诐 诪住驻专 诪讗讬讛 讗讬讱 讛转讞讬诇讛 诇拽讘诇 讛爪注讜转 注讘讜讚讛 诪注讜诇讜转 讗讞专讬 驻讬专住讜诐 砖诇 讛讘诇讜讙 砖诇讛 讘诇讬谞拽讚讗讬谉. 讗谞讬 诇讙诪专讬 诪讝讚讛讛. 讛讬讜诐 诪住诪讱 拽讜专讜转 讞讬讬诐 讻诪注讟 诇讗 讗讜诪专 讻诇讜诐 注诇 讛讘谉 讗讚诐, 讻讬 讻讜诇诐 讻讜转讘讬诐 拽讜专讜转 讞讬讬诐 诪驻讜爪爪讬诐. 讘诇讜讙 讟讜讘 诇注讜诪转 讝讗转 讝讛 住讬驻讜专 讗讞专 诇讙诪专讬. 讘诇讜讙 谞讜转谉 诇讱 讛讝讚诪谞讜转 诇讛住讘讬专 讚讘专讬诐 诇注讜诪拽 讜诇讗讞专讬诐 (砖诪转注谞讬讬谞讬诐) 讘讗讜转诐 讚讘专讬诐 讛讝讚诪谞讜转 诇拽专讜讗 讜诇讛转注诪拽 讘驻讬转专讜谞讜转. 讗讞专讬 砖拽讜专讗讬诐 讗转 讛讘诇讜讙 砖诇 诪讗讬讛 讗驻砖专 诇拽讘诇 讗转 讛专讜砖诐 讻讗讬诇讜 讬砖讘转诐 讗讬转讛 诇驻转讜专 讬讞讚 讘注讬讛 讟讻谞讬转 (讗讜 10). 讘诇讜讙讬诐 诪拽爪讜注讬讬诐 专讘讬诐 砖讗谞讬 拽讜专讗 谞讜转谞讬诐 讗转 讛讛专讙砖讛 讛讝讜 讜讝讛 讻诪讜讘谉 讚讘专 砖驻讜转讞 讛专讘讛 讚诇转讜转. 3. 讘诇讜讙 注讜砖讛 讞砖拽 诇谞住讜转 讚讘专讬诐 讞讚砖讬诐 - 诪讻讬专讬诐 讗转 讛诪讞砖讘讛 讛讝讗转 砖诇 "诪注谞讬讬谉 讗讬讱 诪谞讙谞讜谉 讻讝讛 讜讻讝讛 注讜讘讚?" 砖讘讗讛 讜讗讝 谞注诇诪转? 讜讘讻谉 讗诐 讬砖 诇讻诐 讘诇讜讙 讗转诐 专拽 诪讞讻讬诐 诇诪讞砖讘讜转 讻讗诇讛 讜诪诪砖 诇讗 谞讜转谞讬诐 诇讛谉 诇讘专讜讞. 诪讞砖讘讛 讻诪讜 "诪注谞讬讬谉 讗讬讱 讻讜转讘讬诐 驻讜转专 住讜讚讜拽讜" 讛讜驻讻转 诇讞讜诪专 讛讙诇诐 诪诪谞讜 讗转诐 诪讬讬爪专讬诐 讗转 讛驻讜住讟 讛讘讗, 讜讻讱 驻讜住讟 讗讞专讬 驻讜住讟 讗转诐 诪谞住讬诐 讬讜转专 讚讘专讬诐 讜讻讱 诇讜诪讚讬诐 讘注爪诪讻诐 讬讜转专. 讜讗诐 砖讻谞注转讬 讗转讻诐 诇驻转讜讞 讘诇讜讙 讗讝 讻诇 诪讛 砖谞砖讗专 讝讛 诇讛专讗讜转 讗讬讱, 讜讘砖讘讬诇 讝讛 讛讝诪谞转讬 诇讬讜诐 讞诪讬砖讬 讗转 注专谉 讙讜诇讚诪谉-诪诇讻讗 诇讛注讘讬专 讜讜讘讬谞专 砖诇 砖注讛 注诇 讻诇讬 谞驻诇讗 砖谞拽专讗 Jekyll. 讙'拽讬诇 讛讜讗 讻诇讬 拽讜讚 驻转讜讞 砖讗诐 讛讬讬转讬 爪专讬讱 诇讘讞讜专 讛讬讜诐 讛讬讬转讬 讘讟讜讞 讘讜讞专 讘讜 讻讚讬 诇驻转讜讞 讗转 讛讘诇讜讙 砖诇讬: 讛讛转拽谞讛 拽诇讛, 讛讜讗 诪讗讜讚 讬讚讬讚讜转讬 诇诪转讻谞转讬诐 讜讻诇 讛讘诇讜讙 谞砖诪专 讘诇讬 爪讚 砖专转 讜专拽 注诐 讚驻讬诐 住讟讟讬讬诐. 讗讝 讗诐 讬砖 诇讻诐 砖注讛 驻谞讜讬讛 讘讞诪讬砖讬 讘讘讜拽专, 讜讗讞专讬 讝讛 注讜讚 讻诪讛 砖注讜转 讘砖讘讜注 讻讚讬 讗砖讻专讛 诇讻转讜讘 讘讘诇讜讙, 诪讜讝诪谞讬诐 诇讛爪讟专祝 讗诇讬谞讜 讘拽讬砖讜专: https://www.tocode.co.il/workshops/88 谞.讘. 讗诐 讬砖 诇讻诐 讻讘专 讘诇讜讙 讜专讜爪讬诐 诇砖转祝 诪诪砖 讗砖诪讞 诇拽讬砖讜专 讘转讙讜讘讜转 (注讚讬祝 讗讞讚 砖讗驻砖专 诇拽专讜讗 讘专住住).

ToCode
1 421
# 讛讬讜诐 诇诪讚转讬: 讛转拽谞转 讞讘讬诇讜转 讗讜驻诇讬讬谉 注诐 Node.JS 讻砖讛诪拽讜诐 讘讚讬住拽 讛拽砖讬讞 砖诇讬 诪转讞讬诇 诇讛讬讙诪专 讗谞讬 注讜讘专 注诐 讝讻讜讻讬转 诪讙讚诇转 注诇 讻诇 讛拽讘爪讬诐 讜讛转讬拽讬讜转 讜诪讞驻砖 诪讛 讗驻砖专 诇诪讞讜拽, 讻讬 讘转讞讜砖讛 砖诇讬 讚讬住拽 拽砖讬讞 砖诇 讞爪讬 讟专讛 爪专讬讱 诇讛住驻讬拽 诇驻讞讜转 诇讻诇 讛讞讬讬诐. 讘讻诇 诪拽专讛 讘转讜讱 讛讞讬驻讜砖 诪爪讗转讬 住驻专讬讛 拽讟谞讛 讘转讬拽讬讬转 讛讘讬转 砖谞拽专讗转 ~/.npm 砖转讜驻住转 诇讬 讛讬讜诐 拽爪转 诪注诇 讙'讬讙讛. 诪讛 砖讬讜转专 诪驻转讬注 讛讬讛 转讜讻谉 讛转讬拽讬讛: 讛讬讗 诪讻讬诇讛 讗转 讻诇 讛讞讘讬诇讜转 砖讗讬 驻注诐 讛转拽谞转讬 讜讘讻诇 讛讙讬专住讗讜转 砖诇讛谉. 讝讛 讻讗讬诇讜 诪讬砖讛讜 诇拽讞 讗转 讻诇 转讬拽讬讜转 讛 node_modules 砖诇 讛注讜诇诐 讜讛讚讘讬拽 讗转 讛讻诇 讬讞讚 诇转讜讱 转讬拽讬讛 讗讞转. 讗讝 讛诇讻转讬 诇转讬注讜讚 讜诪住转讘专 砖讝讛 讘讚讬讜拽 诪讛 砖 npm 注讜砖讛 讻诇 驻注诐 砖讗谞讞谞讜 诪转拽讬谞讬诐 讞讘讬诇讛. 注讜讚 拽爪转 讞讬讟讜讟 讘转讬注讜讚 讜诪住转讘专 砖讗驻砖专 诇讛砖转诪砖 讘 cache 讛讝讛 讻讚讬 诇讛驻讜讱 讗转 讛讛转拽谞讜转 砖诇讻诐 诇讛专讘讛 讬讜转专 诪讛讬专讜转. 讛注讘专转 讛讚讙诇 --offlinenpm install 讙讜专诪转 诇 npm 诇讛转拽讬谉 讗转 讛住驻专讬讛 诪讛诪讟诪讜谉 讛诪拽讜诪讬 讘诇讬 诇讘拽专 讘讗讬谞讟专谞讟 讻诇诇. 讛谞讛 讛砖讜讜讗转 讝诪谞讬诐 拽讟谞讛 讘砖讘讬诇 诇注砖讜转 讙诐 诇讻诐 讞砖拽:
$ time npm install --save express
real 0m3.625s

$ time npm install --offline --save express
real 0m1.646s
注讻砖讬讜 专拽 谞砖讗专 诇诪爪讜讗 讗讬讱 诇讛讙讘讬诇 讗转 讙讜讚诇 住驻专讬讬转 ~/.npm 讻讚讬 砖诇讗 转转驻讜住 诇讬 讗转 讻诇 讛讚讬住拽.

ToCode
1 421
# 注讘讚 讗爪诇讬 注诇 讛诪讻讜谞讛 讗讞讚 讛讚讘专讬诐 砖诪转讻谞转讬诐 讛讻讬 讗讜讛讘讬诐 诇注砖讜转 讻砖诪爪讘讬注讬诐 诇谞讜 注诇 拽讜讚 砖讻转讘谞讜 讜诇讗 注讜讘讚 讛讜讗 诇讛转专讙讝 讜讗讝 诇诪诇诪诇 砖讝讛 注讘讚 讗爪诇讬 注诇 讛诪讻讜谞讛. 讘讬谞讬谞讜 诪讘讞讬谞转 讛诇拽讜讞 讝讛 讬讻诇 诇注讘讜讚 讗爪诇讱 注诇 讛诪讻讜谞讛, 讗爪诇讱 讘诪拽专专 讗讜 注诇 诪讗讚讬诐 - 诪讛 砖讞砖讜讘 讝讛 砖注讻砖讬讜 讘诪讞砖讘 砖诇 讛诇拽讜讞 讛拽讜讚 诇讗 注讜讘讚. 讘讻诇 诪拽专讛 讗讞专讬 砖诪爪讗谞讜 诪讛 诇讗 注讘讚 讜讙诐 转讬拽谞讜 讗谞讞谞讜 注讚讬讬谉 讬讻讜诇讬诐 诇讘讞讜专 讘讬谉 砖谞讬 住讬驻讜专讬诐 - 讗驻砖专 诇讟注讜谉 砖讛讘讗讙 讛讝讛 讘讗诪转 讛住转转专 讻砖讻转讘转讬 讗转 讛拽讜讚 讗爪诇讬 注诇 讛诪讻讜谞讛, 讜讗讬 讗驻砖专 讛讬讛 诇爪驻讜转 砖诪砖讛讜 讻讝讛 讬拽专讛 讻砖诪注诇讬诐 讗转 讛拽讜讚 诇砖专转. 讗驻砖专 诇讛诪砖讬讱 讜诇讟注讜谉 砖讗诇讛 讛讞讬讬诐 讜转诪讬讚 讻砖诪注诇讬诐 讙讬专住讗 讬砖 讘注讬讜转 讜讗爪诇 讻讜诇诐 讝讛 讻讻讛. 讜诪诪讬诇讗 诇讗 谞讙专诐 谞讝拽 专爪讬谞讬 讜驻转专谞讜 讗转 讛讘注讬讛 转讬拽 转拽. 讗讜 砖讗驻砖专 诇讞驻砖 讛专讙诇讬 转讻谞讜转 讟讜讘讬诐 讬讜转专, 砖讬讟讜转 注讘讜讚讛 讟讜讘讜转 讬讜转专 讜诪谞讙谞讜谞讬 讘讚讬拽讛 讜 Deployment 讟讜讘讬诐 讬讜转专 讻讚讬 诇诪谞讜注 讗转 讛讘注讬讜转 讛讗诇讛 讘注转讬讚. 讜讻谉 讘专讜专 砖砖讬谞讜讬 讛专讙诇讬诐 诇讜拽讞 讝诪谉 讜砖讬谞讜讬 转讛诇讬讻讬 注讘讜讚讛 讘讗专讙讜谉 诇讜拽讞 讝诪谉. 讗诐 讛讞诇讟转诐 讘爪讜讜转 诇讛转讞讬诇 诇讻转讜讘 讘讚讬拽讜转 讗讜讟讜诪讟讬讜转 诇诪注专讻转 讛讜诇讱 诇拽讞转 诇讻诐 诇驻讞讜转 讞爪讬 砖谞讛 注讚 砖讛讘讚讬拽讜转 讛讗诇讛 讬转讞讬诇讜 诇讝讛讜转 讘注讬讜转 讗诪讬转讬讜转 (诇驻注诪讬诐 讙诐 讬讜转专). 讝讛 砖讻专 讛诇讬诪讜讚 砖讗谞讞谞讜 诪砖诇诪讬诐 注诇 讛诪砖讞拽 讛讝讛 砖谞拽专讗 拽专讬讬专讛 讘讛讬讬讟拽, 砖讻专 诇讬诪讜讚 砖讗祝 驻注诐 诇讗 谞讙诪专.

ToCode
1 421
# 讟讬驻 讜讜讘驻讗拽: 讛讚专讱 讛讻讬 拽诇讛 诇讛讘讬谉 讗讬讱 讜讜讘驻讗拽 讘讜谞讛 讗转 讛讘讗谞讚诇 砖诇讻诐 讗讞讚 讛讗转讙专讬诐 讘驻讬注谞讜讞 讜驻讬专讜拽 讘讗谞讚诇讬诐 讙讚讜诇讬诐 讛讜讗 诇讛讘讬谉 讗讬讝讛 诪讜讚讜诇讬诐 谞讻谞住讜 诇讘讗谞讚诇 讜诇诪讛 讜讜讘驻讗拽 讘讞专 诇讛讻谞讬住 讻诇 讗讞讚 诪讛诐. 砖谞讬 讚讙诇讬诐 砖诇 讜讜讘驻讗拽 砖讗谞讬 诪讗讜讚 讗讜讛讘 讛讜驻讻讬诐 讗转 讛讗转讙专 讛讝讛 诇诪诪砖 驻砖讜讟: 讛讚讙诇 display-modules 诪爪讬讙 讗转 讻诇 讛诪讜讚讜诇讬诐 砖讜讜讘驻讗拽 讛讻谞讬住 诇讘讗谞讚诇, 讜讛讚讙诇 display-reasons 诪爪讬讙 讗转 讛住讬讘讜转. 讘讛驻注诇讛 诇讚讜讙诪讗 讝讛 谞专讗讛 讻讱:
localhost:after ynonperek$ npx webpack --display-reasons
Hash: 1a41b54711f73da75381
Version: webpack 4.39.2
Time: 387ms
Built at: 10/23/2019 9:02:26 PM
 Asset      Size  Chunks             Chunk Names
app.js  1.16 KiB       0  [emitted]  main
Entrypoint main = app.js
[0] ./src/main.js + 1 modules 387 bytes {0} [built]
    single entry ./src/main.js  main
    | ./src/main.js 58 bytes [built]
    |     single entry ./src/main.js  main
    | ./src/panel.js 329 bytes [built]
    |     harmony side effect evaluation ./panel  ./src/main.js 1:0-28
    |     harmony import specifier ./panel  ./src/main.js 3:0-5
讛讘讗谞讚诇 讻讜诇诇 谞拽讜讚转 讻谞讬住讛 讗讞转 讘砖诐 ./src/main.js 砖诪讜专讻讘转 诪砖谞讬 拽讘爪讬诐: 讛拽讜讘抓 main.js 讛讜讗 谞拽讜讚转 讛讻谞讬住讛, 讜讛拽讜讘抓 panel.js 砖讬讜讘讗 讘讗诪爪注讜转 import 诪转讜讱 main.js. 讬讜转专 诪讝讛 - 讗谞讞谞讜 专讜讗讬诐 砖砖讜专讛 1 讘拽讜讘抓 main.js 讛讬讗 砖讛驻注讬诇讛 讗转 讛 import (讘讙诇诇 讛讛讜讚注讛 harmony side effect evaluation 砖谞诪爪讗转 诇讬讚讛), 讜讘砖讜专讛 3 讘拽讜讘抓 main.js 讬砖 拽专讬讗讛 诇驻讜谞拽爪讬讛 诪转讜讱 讛拽讜讘抓 panel 讛诪讬讜讘讗. 注诐 讛讗讬谞驻讜专诪爪讬讛 诪讜诇 讛注讬谞讬讬诐 讗谞讬 讬讻讜诇 诇讛转讞讬诇 讗转 讛讗讜驻讟讬诪讬讝爪讬讜转 - 讗讬讝讛 拽讘爪讬诐 讙讚讜诇讬诐 诪讚讬 讬砖 诇讬 讘讘讗谞讚诇? 讛讗诐 讗驻砖专 诇讛讜爪讬讗 讞诇拽 诪讛诐 诇讟注讬谞讛 讘 ajax? 讜讗讬讝讛 诪讜讚讜诇讬诐 谞讻谞住讜 诇讘讗谞讚诇 诇诪专讜转 砖讛讬讬转讬 讘讟讜讞 砖讻讘专 诪讞拽转讬 讗讜转诐?