├── .gitignore ├── abcrn ├── .floo ├── .flooignore ├── .flowconfig ├── .gitignore ├── .watchmanconfig ├── android │ ├── app │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ ├── react.gradle │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── Entypo.ttf │ │ │ │ ├── EvilIcons.ttf │ │ │ │ ├── FontAwesome.ttf │ │ │ │ ├── Foundation.ttf │ │ │ │ ├── Ionicons.ttf │ │ │ │ ├── MaterialIcons.ttf │ │ │ │ ├── Octicons.ttf │ │ │ │ └── Zocial.ttf │ │ │ ├── java │ │ │ └── com │ │ │ │ └── abcrn │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── app │ ├── components │ │ ├── StatusBarBackground.js │ │ └── ViewContainer.js │ ├── navigation │ │ └── AppNavigator.js │ ├── screens │ │ ├── PeopleIndexScreen.js │ │ └── PersonShowScreen.js │ └── styles │ │ └── colors.js ├── index.android.js ├── index.ios.js ├── ios │ ├── abcrn.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── abcrn.xcscheme │ ├── abcrn │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Base.lproj │ │ │ └── LaunchScreen.xib │ │ ├── Images.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── Info.plist │ │ └── main.m │ └── abcrnTests │ │ ├── Info.plist │ │ └── abcrnTests.m └── package.json ├── algolia ├── ExampleApp │ ├── .gitignore │ ├── Gemfile │ ├── Gemfile.lock │ ├── README.md │ ├── Rakefile │ ├── app │ │ ├── assets │ │ │ ├── config │ │ │ │ └── manifest.js │ │ │ ├── images │ │ │ │ └── .keep │ │ │ ├── javascripts │ │ │ │ ├── application.js │ │ │ │ ├── cable.js │ │ │ │ └── channels │ │ │ │ │ └── .keep │ │ │ └── stylesheets │ │ │ │ └── application.css │ │ ├── channels │ │ │ └── application_cable │ │ │ │ ├── channel.rb │ │ │ │ └── connection.rb │ │ ├── controllers │ │ │ ├── application_controller.rb │ │ │ ├── concerns │ │ │ │ └── .keep │ │ │ ├── pages_controller.rb │ │ │ ├── players_controller.rb │ │ │ └── tweets_controller.rb │ │ ├── helpers │ │ │ └── application_helper.rb │ │ ├── jobs │ │ │ └── application_job.rb │ │ ├── mailers │ │ │ └── application_mailer.rb │ │ ├── models │ │ │ ├── application_record.rb │ │ │ ├── concerns │ │ │ │ └── .keep │ │ │ ├── nba_player.rb │ │ │ └── tweet.rb │ │ └── views │ │ │ ├── layouts │ │ │ ├── application.html.erb │ │ │ ├── mailer.html.erb │ │ │ └── mailer.text.erb │ │ │ └── players │ │ │ └── index.html.erb │ ├── bin │ │ ├── bundle │ │ ├── rails │ │ ├── rake │ │ ├── setup │ │ ├── spring │ │ └── update │ ├── config.ru │ ├── config │ │ ├── application.rb │ │ ├── boot.rb │ │ ├── cable.yml │ │ ├── database.yml │ │ ├── environment.rb │ │ ├── environments │ │ │ ├── development.rb │ │ │ ├── production.rb │ │ │ └── test.rb │ │ ├── initializers │ │ │ ├── 1-api_keys.rb │ │ │ ├── application_controller_renderer.rb │ │ │ ├── assets.rb │ │ │ ├── backtrace_silencers.rb │ │ │ ├── cookies_serializer.rb │ │ │ ├── filter_parameter_logging.rb │ │ │ ├── inflections.rb │ │ │ ├── mime_types.rb │ │ │ ├── new_framework_defaults.rb │ │ │ ├── session_store.rb │ │ │ └── wrap_parameters.rb │ │ ├── locales │ │ │ └── en.yml │ │ ├── puma.rb │ │ ├── routes.rb │ │ ├── secrets.yml │ │ └── spring.rb │ ├── db │ │ ├── migrate │ │ │ ├── 20160806095721_create_nba_players.rb │ │ │ └── 20160807081218_create_tweets.rb │ │ ├── schema.rb │ │ └── seeds.rb │ ├── doc │ │ └── tweets.csv │ ├── lib │ │ ├── assets │ │ │ └── .keep │ │ └── tasks │ │ │ └── .keep │ ├── log │ │ └── .keep │ ├── public │ │ ├── 404.html │ │ ├── 422.html │ │ ├── 500.html │ │ ├── apple-touch-icon-precomposed.png │ │ ├── apple-touch-icon.png │ │ ├── favicon.ico │ │ └── robots.txt │ ├── test │ │ ├── controllers │ │ │ └── .keep │ │ ├── fixtures │ │ │ ├── .keep │ │ │ ├── files │ │ │ │ └── .keep │ │ │ ├── nba_players.yml │ │ │ └── tweets.yml │ │ ├── helpers │ │ │ └── .keep │ │ ├── integration │ │ │ └── .keep │ │ ├── mailers │ │ │ └── .keep │ │ ├── models │ │ │ ├── .keep │ │ │ ├── nba_player_test.rb │ │ │ └── tweet_test.rb │ │ └── test_helper.rb │ ├── tmp │ │ └── .keep │ └── vendor │ │ └── assets │ │ ├── javascripts │ │ └── .keep │ │ └── stylesheets │ │ └── .keep ├── ui1 │ ├── .gitignore │ ├── README.md │ ├── favicon.ico │ ├── index.html │ ├── package.json │ └── src │ │ ├── App.css │ │ ├── App.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ └── services │ │ ├── APIService.js │ │ └── AlgoliaService.js └── ui2 │ ├── .gitignore │ ├── README.md │ ├── favicon.ico │ ├── index.html │ ├── package.json │ └── src │ ├── App.css │ ├── App.js │ ├── index.css │ ├── index.js │ ├── logo.svg │ └── services │ ├── APIService.js │ └── AlgoliaService.js ├── amazon-echo └── lambda-function.js ├── background-processing └── ExampleApp │ ├── Gemfile │ ├── Gemfile.lock │ ├── Procfile │ ├── README.md │ ├── Rakefile │ ├── app │ ├── assets │ │ ├── config │ │ │ └── manifest.js │ │ ├── images │ │ │ ├── .keep │ │ │ └── sales-report.png │ │ ├── javascripts │ │ │ ├── application.js │ │ │ ├── cable.js │ │ │ └── channels │ │ │ │ └── .keep │ │ └── stylesheets │ │ │ └── application.css │ ├── channels │ │ └── application_cable │ │ │ ├── channel.rb │ │ │ └── connection.rb │ ├── controllers │ │ ├── application_controller.rb │ │ ├── concerns │ │ │ └── .keep │ │ ├── pages_controller.rb │ │ └── sales_controller.rb │ ├── helpers │ │ └── application_helper.rb │ ├── jobs │ │ └── application_job.rb │ ├── mailers │ │ └── application_mailer.rb │ ├── models │ │ ├── application_record.rb │ │ └── concerns │ │ │ └── .keep │ ├── views │ │ ├── layouts │ │ │ ├── application.html.erb │ │ │ ├── mailer.html.erb │ │ │ └── mailer.text.erb │ │ └── sales │ │ │ ├── index.html.erb │ │ │ └── report.html.erb │ └── workers │ │ └── report_worker.rb │ ├── bin │ ├── bundle │ ├── rails │ ├── rake │ ├── setup │ ├── spring │ └── update │ ├── config.ru │ ├── config │ ├── application.rb │ ├── boot.rb │ ├── cable.yml │ ├── database.yml │ ├── environment.rb │ ├── environments │ │ ├── development.rb │ │ ├── production.rb │ │ └── test.rb │ ├── initializers │ │ ├── 1-api_clients.rb │ │ ├── application_controller_renderer.rb │ │ ├── assets.rb │ │ ├── backtrace_silencers.rb │ │ ├── cookies_serializer.rb │ │ ├── filter_parameter_logging.rb │ │ ├── inflections.rb │ │ ├── mime_types.rb │ │ ├── new_framework_defaults.rb │ │ ├── session_store.rb │ │ └── wrap_parameters.rb │ ├── locales │ │ └── en.yml │ ├── puma.rb │ ├── routes.rb │ ├── secrets.yml │ └── spring.rb │ ├── db │ ├── development.sqlite3 │ └── seeds.rb │ ├── dump.rdb │ ├── lib │ ├── assets │ │ └── .keep │ └── tasks │ │ └── .keep │ ├── log │ ├── .keep │ └── development.log │ ├── public │ ├── 404.html │ ├── 422.html │ ├── 500.html │ ├── apple-touch-icon-precomposed.png │ ├── apple-touch-icon.png │ ├── favicon.ico │ └── robots.txt │ ├── test │ ├── controllers │ │ └── .keep │ ├── fixtures │ │ ├── .keep │ │ └── files │ │ │ └── .keep │ ├── helpers │ │ └── .keep │ ├── integration │ │ └── .keep │ ├── mailers │ │ └── .keep │ ├── models │ │ └── .keep │ └── test_helper.rb │ ├── tmp │ ├── .keep │ ├── cache │ │ └── assets │ │ │ └── sprockets │ │ │ └── v3.0 │ │ │ ├── 57 │ │ │ └── 57Tq38Hsbpm1ZsrOZlp22SqFLwm9WIwF4zWy6UsBMeo.cache │ │ │ ├── -e │ │ │ └── -e0ECS-ooK0sochKTgf57H1oDsqEcx-PDi1eXT4_qc8.cache │ │ │ ├── -n │ │ │ └── -nNpe7s96U0iGld-nPMpDye902z-ifBm2XIMnRwfaMU.cache │ │ │ ├── 2e │ │ │ └── 2eAr534jXGX387s3X5h0Qwqo0b7U6r62S3x6WU-0R1k.cache │ │ │ ├── 4a │ │ │ └── 4aWiDpuP3Xx86uMX2U3OC7UwJ-4H25xkTwtHdaWdcwk.cache │ │ │ ├── 5C │ │ │ └── 5Cz2SZfooz8vHZSRjuioeK8z-HYbUPaj8wx8Bbkx3-4.cache │ │ │ ├── 5Z │ │ │ └── 5ZfqjIcl34GiavyPtRbrmlym63GvR3G1OsOrp7C3Vtc.cache │ │ │ ├── 6O │ │ │ └── 6OM4eKWmyu8FP8ePoUbtvhdi-l6r99e2kGF0kAxXzr0.cache │ │ │ ├── 8k │ │ │ └── 8kcr07-k11ofJWEUPLi3K1EsSmA9CEEDNdKy0eRZJZU.cache │ │ │ ├── AQ │ │ │ └── AQ1vkyf4o7ylnFLe_I9XkbVtqlV5r1Q6xFETgCdgHNM.cache │ │ │ ├── Ac │ │ │ └── AcAkg8U307aS6HD-FSMXui3N7RBbJImZ3f2QRT801vk.cache │ │ │ ├── Ah │ │ │ └── Ah6cB36A7NhgovtgiAwhFoBvsQ-cO0Fg_H3_ymzHROo.cache │ │ │ ├── Ci │ │ │ └── CiFq9DzhRfXRBt3TeGmumDxWjdNIf4pxv0pC53BWIAs.cache │ │ │ ├── DL │ │ │ └── DLPb1Inxs2E5veB9tUyhAJLJfRwKJNBw9wQreVhC6Ys.cache │ │ │ ├── DU │ │ │ └── DUqDnReFIBxW72sAdVQ1xD6_mSy0WbalwBbQd0jUxFQ.cache │ │ │ ├── Eh │ │ │ └── Eh1OipvnTuooommCKM7Frx1LAbiYewIs2ttP0infO_s.cache │ │ │ ├── GA │ │ │ └── GAHjAcW18tNatNnAum9-_9XN8TyhYsSWAuqV_9JT_fo.cache │ │ │ ├── Gz │ │ │ └── GzPhHFHiZXvrJ00rOd21LsQ_DCdqv2DkLMksQ204Nms.cache │ │ │ ├── HS │ │ │ └── HSXm-9jpI_ixWNaHTDoUO0FC8leXHbou4ba0vo4OEQU.cache │ │ │ ├── Hk │ │ │ └── HkxOsloR6ijj2336LgIP-shihoIDBMHxw2pRY89KEKw.cache │ │ │ ├── Lf │ │ │ └── Lf3kseTPrGqs8g72ezzM3S78Udcv8oTc6MFtQ7ATy7k.cache │ │ │ ├── Ls │ │ │ └── Ls_YvC7bfIprxtq3lEmdkvGsYcruQsmAzo2q9hhPfsk.cache │ │ │ ├── N5 │ │ │ └── N5p3-qmvJu_bYTsN3_LLcH3dKIAfLqgCtZBDHxbbVtM.cache │ │ │ ├── Nu │ │ │ └── NuWD2BA8D70_h1KwJd9kzY_iUjmUGKEyZQfaY5KXK2w.cache │ │ │ ├── Qt │ │ │ └── Qtd466i3WdW7qq5RWSe6_7E6IPoD9LIGxhHp6EdzJgQ.cache │ │ │ ├── SJ │ │ │ └── SJcxVQJV3vmlE5zeKLPxnjiGASHlT5CDZSBZ5epjcso.cache │ │ │ ├── UF │ │ │ └── UFu2YKqU1ArRqKuyi8P-yCnTtO0P_OaPf3n3EiOOq70.cache │ │ │ ├── XS │ │ │ └── XSoAQvB_lvIEGtQN5ze-VbeB7qvTkd2PIum9D01xJqk.cache │ │ │ ├── Xc │ │ │ └── Xc2klhe_OBtCwaX7WPiQOr7ue6dEdMZDqz9UxkXSzvk.cache │ │ │ ├── ZY │ │ │ └── ZYogV3v9tSXdYMo9zNszB06BywrrRbqJSmjD_nN8_hw.cache │ │ │ ├── _B │ │ │ └── _Be7WwuLRzBG72WHV5RyxYKJvdmhKX_vuv4ALuhakYU.cache │ │ │ ├── _M │ │ │ └── _M02gJxatadj640TQWWZ9u6F2NT2WOczUBAsBdtJusM.cache │ │ │ ├── _R │ │ │ └── _RA6cjJaQ9eQDqMy80KMHekWFHahhj9T8el-EC7F71M.cache │ │ │ ├── _i │ │ │ └── _iC9ldvdH9eNOe7PeJtaXS7yD5fQOC8zf_OpTVjl_AE.cache │ │ │ ├── ad │ │ │ └── adJSEZJVJYhtHvpEUZqbmIR3jIbpRe4-CpRxp9cJ4sQ.cache │ │ │ ├── ch │ │ │ └── chv6Lh3x13vaGwSMya5058JeF66EzUA3-AYTkqw2ID4.cache │ │ │ ├── cx │ │ │ └── cxns4PJpMXGGfe7QVjxN9ZHJXvb4iBtp1RKkbJhSCAI.cache │ │ │ ├── dV │ │ │ └── dVfldJyMesrS-VsZrgEUpVXY5i-pS1v83WV1p4vbzUc.cache │ │ │ ├── ds │ │ │ └── dszcTK7gUTS0j1ELnWFBpwxAf3TUXXAAWo_1iT9k3uE.cache │ │ │ ├── i2 │ │ │ └── i2QwM0__LPkbJZv1QKyE4AXJXd67kYoUIgVSzCZ_uGc.cache │ │ │ ├── jV │ │ │ └── jVKf_Mgq6XreiiFR5_0laLBWaSrXnvvTJx8N0cciPKg.cache │ │ │ ├── kS │ │ │ └── kSJTqW2HoMSbifyleubBY9Pu50EsVekrBI_hBpVXa3o.cache │ │ │ ├── kT │ │ │ └── kTkjdgL0-F8hspo9Jj7h6LQdoCmH3Vdf5od1mf_B6-4.cache │ │ │ ├── n- │ │ │ └── n--7XWSPCnT9DgjJvO70jaqg6KeGw8tEYBtnOXnJris.cache │ │ │ ├── pU │ │ │ └── pU8CjjjoDNAEwaH73B9mr9Ls0BulSxPhW8pTKMP5hR4.cache │ │ │ ├── ql │ │ │ └── ql5KbnHNT6pHDIAt4X0T5edyeCsGtTsghSkJCCO4z9s.cache │ │ │ ├── ra │ │ │ └── rapd9mwwhj4fkZGp2svxw5CM0ZpEBauMLqgEbwJcJrQ.cache │ │ │ ├── rc │ │ │ └── rc8a2psqDvSV_L5rXHV0dULtz0PKp1_GQKicf3JgOMw.cache │ │ │ ├── sx │ │ │ └── sxZXLEzAfDTD9l9L5QsjuJdPCbRZt_qVmtstqM_wO04.cache │ │ │ ├── uU │ │ │ └── uUoSEcKX2S413t9Tx8TOpXtJIV3CI1fkOqjhEpNJh1o.cache │ │ │ ├── uk │ │ │ └── uk5YNd0CvhiIJ88Ofvran7afMKCV00D7BaMwUvyG_Dw.cache │ │ │ ├── vQ │ │ │ └── vQGPjUQZjagLZ7uNecevwrgjgoyXKulePMIw1xmpWw0.cache │ │ │ ├── xL │ │ │ └── xLQKHLwVVnvdj7oT8LLwv5fgfEFkdCOfOoLjGEZGPGA.cache │ │ │ ├── y4 │ │ │ └── y4IesAEmLz_DPEO5YvoG4nyBpFYE0e7OG2245Si0F18.cache │ │ │ └── ys │ │ │ └── ysijhNRcEk4Mqznymt8nJahmTMZhDZ-1uidlIoZn7hA.cache │ └── restart.txt │ └── vendor │ └── assets │ ├── javascripts │ └── .keep │ └── stylesheets │ └── .keep ├── clojurescript └── helloworld │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── doc │ └── intro.md │ ├── figwheel_server.log │ ├── project.clj │ ├── resources │ └── public │ │ ├── index.html │ │ ├── javascripts │ │ ├── cljs-dev │ │ │ ├── cljs │ │ │ │ ├── core.cljs │ │ │ │ ├── core.js │ │ │ │ ├── core.js.map │ │ │ │ ├── core │ │ │ │ │ ├── async.cljs │ │ │ │ │ ├── async.cljs.cache.edn │ │ │ │ │ ├── async.js │ │ │ │ │ ├── async.js.map │ │ │ │ │ └── async │ │ │ │ │ │ └── impl │ │ │ │ │ │ ├── buffers.cljs │ │ │ │ │ │ ├── buffers.cljs.cache.edn │ │ │ │ │ │ ├── buffers.js │ │ │ │ │ │ ├── buffers.js.map │ │ │ │ │ │ ├── channels.cljs │ │ │ │ │ │ ├── channels.cljs.cache.edn │ │ │ │ │ │ ├── channels.js │ │ │ │ │ │ ├── channels.js.map │ │ │ │ │ │ ├── dispatch.cljs │ │ │ │ │ │ ├── dispatch.cljs.cache.edn │ │ │ │ │ │ ├── dispatch.js │ │ │ │ │ │ ├── dispatch.js.map │ │ │ │ │ │ ├── ioc_helpers.cljs │ │ │ │ │ │ ├── ioc_helpers.cljs.cache.edn │ │ │ │ │ │ ├── ioc_helpers.js │ │ │ │ │ │ ├── ioc_helpers.js.map │ │ │ │ │ │ ├── protocols.cljs │ │ │ │ │ │ ├── protocols.cljs.cache.edn │ │ │ │ │ │ ├── protocols.js │ │ │ │ │ │ ├── protocols.js.map │ │ │ │ │ │ ├── timers.cljs │ │ │ │ │ │ ├── timers.cljs.cache.edn │ │ │ │ │ │ ├── timers.js │ │ │ │ │ │ └── timers.js.map │ │ │ │ ├── pprint.cljs │ │ │ │ ├── pprint.cljs.cache.edn │ │ │ │ ├── pprint.js │ │ │ │ ├── pprint.js.map │ │ │ │ ├── reader.cljs │ │ │ │ ├── reader.cljs.cache.edn │ │ │ │ ├── reader.js │ │ │ │ ├── reader.js.map │ │ │ │ ├── repl.cljs │ │ │ │ ├── repl.cljs.cache.edn │ │ │ │ ├── repl.js │ │ │ │ └── repl.js.map │ │ │ ├── clojure │ │ │ │ ├── set.cljs │ │ │ │ ├── set.cljs.cache.edn │ │ │ │ ├── set.js │ │ │ │ ├── set.js.map │ │ │ │ ├── string.cljs │ │ │ │ ├── string.cljs.cache.edn │ │ │ │ ├── string.js │ │ │ │ └── string.js.map │ │ │ ├── figwheel │ │ │ │ ├── client.cljs │ │ │ │ ├── client.cljs.cache.edn │ │ │ │ ├── client.js │ │ │ │ ├── client.js.map │ │ │ │ ├── client │ │ │ │ │ ├── file_reloading.cljs │ │ │ │ │ ├── file_reloading.cljs.cache.edn │ │ │ │ │ ├── file_reloading.js │ │ │ │ │ ├── file_reloading.js.map │ │ │ │ │ ├── heads_up.cljs │ │ │ │ │ ├── heads_up.cljs.cache.edn │ │ │ │ │ ├── heads_up.js │ │ │ │ │ ├── heads_up.js.map │ │ │ │ │ ├── socket.cljs │ │ │ │ │ ├── socket.cljs.cache.edn │ │ │ │ │ ├── socket.js │ │ │ │ │ ├── socket.js.map │ │ │ │ │ ├── utils.cljs │ │ │ │ │ ├── utils.cljs.cache.edn │ │ │ │ │ ├── utils.js │ │ │ │ │ └── utils.js.map │ │ │ │ ├── connect.cljs │ │ │ │ ├── connect.cljs.cache.edn │ │ │ │ ├── connect.js │ │ │ │ └── connect.js.map │ │ │ ├── goog │ │ │ │ ├── array │ │ │ │ │ └── array.js │ │ │ │ ├── asserts │ │ │ │ │ └── asserts.js │ │ │ │ ├── async │ │ │ │ │ ├── freelist.js │ │ │ │ │ ├── nexttick.js │ │ │ │ │ ├── run.js │ │ │ │ │ └── workqueue.js │ │ │ │ ├── base.js │ │ │ │ ├── debug │ │ │ │ │ ├── entrypointregistry.js │ │ │ │ │ └── error.js │ │ │ │ ├── deps.js │ │ │ │ ├── dom │ │ │ │ │ ├── browserfeature.js │ │ │ │ │ ├── dom.js │ │ │ │ │ ├── nodetype.js │ │ │ │ │ ├── safe.js │ │ │ │ │ ├── tagname.js │ │ │ │ │ └── tags.js │ │ │ │ ├── fs │ │ │ │ │ └── url.js │ │ │ │ ├── functions │ │ │ │ │ └── functions.js │ │ │ │ ├── html │ │ │ │ │ ├── safehtml.js │ │ │ │ │ ├── safestyle.js │ │ │ │ │ ├── safestylesheet.js │ │ │ │ │ ├── safeurl.js │ │ │ │ │ └── trustedresourceurl.js │ │ │ │ ├── i18n │ │ │ │ │ └── bidi.js │ │ │ │ ├── iter │ │ │ │ │ └── iter.js │ │ │ │ ├── labs │ │ │ │ │ └── useragent │ │ │ │ │ │ ├── browser.js │ │ │ │ │ │ ├── engine.js │ │ │ │ │ │ ├── platform.js │ │ │ │ │ │ └── util.js │ │ │ │ ├── math │ │ │ │ │ ├── coordinate.js │ │ │ │ │ ├── math.js │ │ │ │ │ └── size.js │ │ │ │ ├── mochikit │ │ │ │ │ └── async │ │ │ │ │ │ └── deferred.js │ │ │ │ ├── net │ │ │ │ │ └── jsloader.js │ │ │ │ ├── object │ │ │ │ │ └── object.js │ │ │ │ ├── promise │ │ │ │ │ ├── promise.js │ │ │ │ │ ├── resolver.js │ │ │ │ │ └── thenable.js │ │ │ │ ├── string │ │ │ │ │ ├── const.js │ │ │ │ │ ├── string.js │ │ │ │ │ ├── stringbuffer.js │ │ │ │ │ └── typedstring.js │ │ │ │ ├── structs │ │ │ │ │ ├── map.js │ │ │ │ │ └── structs.js │ │ │ │ ├── testing │ │ │ │ │ └── watchers.js │ │ │ │ ├── uri │ │ │ │ │ ├── uri.js │ │ │ │ │ └── utils.js │ │ │ │ └── useragent │ │ │ │ │ └── useragent.js │ │ │ ├── helloworld │ │ │ │ ├── core.cljc │ │ │ │ ├── core.cljc.cache.edn │ │ │ │ ├── core.cljs │ │ │ │ ├── core.cljs.cache.edn │ │ │ │ ├── core.js │ │ │ │ ├── core.js.map │ │ │ │ ├── title.cljs │ │ │ │ ├── title.cljs.cache.edn │ │ │ │ ├── title.js │ │ │ │ └── title.js.map │ │ │ ├── react.inc.js │ │ │ └── reagent │ │ │ │ ├── core.cljs │ │ │ │ ├── core.cljs.cache.edn │ │ │ │ ├── core.js │ │ │ │ ├── core.js.map │ │ │ │ ├── debug.cljs │ │ │ │ ├── debug.cljs.cache.edn │ │ │ │ ├── debug.js │ │ │ │ ├── debug.js.map │ │ │ │ ├── impl │ │ │ │ ├── batching.cljs │ │ │ │ ├── batching.cljs.cache.edn │ │ │ │ ├── batching.js │ │ │ │ ├── batching.js.map │ │ │ │ ├── component.cljs │ │ │ │ ├── component.cljs.cache.edn │ │ │ │ ├── component.js │ │ │ │ ├── component.js.map │ │ │ │ ├── template.cljs │ │ │ │ ├── template.cljs.cache.edn │ │ │ │ ├── template.js │ │ │ │ ├── template.js.map │ │ │ │ ├── util.cljs │ │ │ │ ├── util.cljs.cache.edn │ │ │ │ ├── util.js │ │ │ │ └── util.js.map │ │ │ │ ├── interop.cljs │ │ │ │ ├── interop.cljs.cache.edn │ │ │ │ ├── interop.js │ │ │ │ ├── interop.js.map │ │ │ │ ├── ratom.cljs │ │ │ │ ├── ratom.cljs.cache.edn │ │ │ │ ├── ratom.js │ │ │ │ └── ratom.js.map │ │ └── dev.js │ │ └── stylesheets │ │ └── styles.css │ ├── src │ └── helloworld │ │ ├── core.cljs │ │ ├── styles.css │ │ └── title.cljs │ └── test │ └── helloworld │ └── core_test.clj ├── docker ├── .notes.swp ├── Dockerfile ├── html-static-docker │ └── index.html ├── notes └── tmp │ ├── awscli-bundle.zip │ └── awscli-bundle │ ├── install │ └── packages │ ├── argparse-1.2.1.tar.gz │ ├── awscli-1.10.12.tar.gz │ ├── botocore-1.4.3.tar.gz │ ├── colorama-0.3.3.tar.gz │ ├── docutils-0.12.tar.gz │ ├── futures-3.0.5.tar.gz │ ├── jmespath-0.9.0.tar.gz │ ├── ordereddict-1.1.tar.gz │ ├── pyasn1-0.1.9.tar.gz │ ├── python-dateutil-2.5.0.tar.gz │ ├── rsa-3.3.tar.gz │ ├── s3transfer-0.0.1.tar.gz │ ├── simplejson-3.3.0.tar.gz │ ├── six-1.10.0.tar.gz │ └── virtualenv-13.0.3.tar.gz ├── react-part-2 └── simple │ ├── .sass-cache │ └── 9c37f3ad21fa5a015e111d5ea5db45ef93c694ba │ │ └── app.scssc │ ├── Procfile │ ├── README.md │ ├── app │ └── build │ │ ├── asset-manifest.json │ │ ├── favicon.ico │ │ ├── index.html │ │ └── static │ │ ├── css │ │ ├── main.9a0fe4f1.css │ │ └── main.9a0fe4f1.css.map │ │ ├── js │ │ ├── main.5cf84b5c.js │ │ └── main.5cf84b5c.js.map │ │ └── media │ │ └── logo.5d5d9eef.svg │ ├── build │ ├── asset-manifest.json │ ├── favicon.ico │ ├── index.html │ └── static │ │ ├── css │ │ ├── main.9a0fe4f1.css │ │ └── main.9a0fe4f1.css.map │ │ ├── js │ │ ├── main.5cf84b5c.js │ │ └── main.5cf84b5c.js.map │ │ └── media │ │ └── logo.5d5d9eef.svg │ ├── index.js │ ├── package.json │ ├── public │ ├── favicon.ico │ └── index.html │ └── src │ ├── .gitignore │ ├── components │ └── Nav.js │ ├── index.js │ ├── screens │ ├── Screen1.js │ ├── Screen2.js │ └── Screen3.js │ ├── services │ └── EtherService.js │ └── styles │ ├── app.css │ ├── app.css.map │ └── app.scss ├── simplereact ├── .gitignore ├── README.md ├── index.html ├── package.json └── src │ ├── App.css │ ├── App.js │ ├── App.test.js │ ├── favicon.ico │ ├── index.css │ ├── index.js │ └── logo.svg ├── twitch-bot └── bot.rb └── webpack-redux ├── .babelrc ├── .floo ├── .flooignore ├── dist └── bundle.js ├── index.html ├── index.js ├── package.json ├── styles └── simple.scss └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | **/node_modules/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /abcrn/.floo: -------------------------------------------------------------------------------- 1 | { 2 | "url": "https://floobits.com/AlwaysBCoding/abcrn" 3 | } -------------------------------------------------------------------------------- /abcrn/.flooignore: -------------------------------------------------------------------------------- 1 | #* 2 | *.o 3 | *.pyc 4 | *~ 5 | extern/ 6 | node_modules/ 7 | tmp 8 | vendor/ -------------------------------------------------------------------------------- /abcrn/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # Android/IJ 26 | # 27 | .idea 28 | .gradle 29 | local.properties 30 | 31 | # node.js 32 | # 33 | node_modules/ 34 | npm-debug.log 35 | -------------------------------------------------------------------------------- /abcrn/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /abcrn/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /abcrn/android/app/src/main/java/com/abcrn/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.abcrn; 2 | 3 | import com.facebook.react.ReactActivity; 4 | import com.oblador.vectoricons.VectorIconsPackage; 5 | import com.facebook.react.ReactPackage; 6 | import com.facebook.react.shell.MainReactPackage; 7 | 8 | import java.util.Arrays; 9 | import java.util.List; 10 | 11 | public class MainActivity extends ReactActivity { 12 | 13 | /** 14 | * Returns the name of the main component registered from JavaScript. 15 | * This is used to schedule rendering of the component. 16 | */ 17 | @Override 18 | protected String getMainComponentName() { 19 | return "abcrn"; 20 | } 21 | 22 | /** 23 | * Returns whether dev mode should be enabled. 24 | * This enables e.g. the dev menu. 25 | */ 26 | @Override 27 | protected boolean getUseDeveloperSupport() { 28 | return BuildConfig.DEBUG; 29 | } 30 | 31 | /** 32 | * A list of packages used by the app. If the app uses additional views 33 | * or modules besides the default ones, add more packages here. 34 | */ 35 | @Override 36 | protected List getPackages() { 37 | return Arrays.asList( 38 | new MainReactPackage(), 39 | new VectorIconsPackage() 40 | ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /abcrn/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /abcrn/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /abcrn/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /abcrn/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /abcrn/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | abcrn 3 | 4 | -------------------------------------------------------------------------------- /abcrn/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /abcrn/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.3.1' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | maven { 20 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 21 | url "$projectDir/../../node_modules/react-native/android" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /abcrn/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | android.useDeprecatedNdk=true 21 | -------------------------------------------------------------------------------- /abcrn/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /abcrn/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip 6 | -------------------------------------------------------------------------------- /abcrn/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'abcrn' 2 | 3 | include ':app' 4 | include ':react-native-vector-icons' 5 | project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../../node_modules/react-native-vector-icons/android') 6 | -------------------------------------------------------------------------------- /abcrn/app/components/StatusBarBackground.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import React, { Component, View } from 'react-native' 3 | 4 | class StatusBarBackground extends Component { 5 | 6 | render() { 7 | return ( 8 | 9 | 10 | ) 11 | } 12 | 13 | } 14 | 15 | const styles = React.StyleSheet.create({ 16 | 17 | statusBarBackground: { 18 | height: 20, 19 | backgroundColor: "white" 20 | } 21 | 22 | }) 23 | 24 | module.exports = StatusBarBackground 25 | -------------------------------------------------------------------------------- /abcrn/app/components/ViewContainer.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import React, { Component, View } from 'react-native' 3 | 4 | class ViewContainer extends Component { 5 | render() { 6 | return ( 7 | 8 | {this.props.children} 9 | 10 | ) 11 | } 12 | } 13 | 14 | const styles = React.StyleSheet.create({ 15 | 16 | viewContainer: { 17 | flex: 1, 18 | flexDirection: "column", 19 | justifyContent: "flex-start", 20 | alignItems: "stretch" 21 | } 22 | 23 | }) 24 | 25 | module.exports = ViewContainer 26 | -------------------------------------------------------------------------------- /abcrn/app/navigation/AppNavigator.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import React, { Component, Navigator, Text } from 'react-native' 3 | import PeopleIndexScreen from '../screens/PeopleIndexScreen' 4 | import PersonShowScreen from '../screens/PersonShowScreen' 5 | 6 | class AppNavigator extends Component { 7 | 8 | _renderScene(route, navigator) { 9 | var globalNavigatorProps = { navigator } 10 | 11 | switch(route.ident) { 12 | case "PeopleIndex": 13 | return ( 14 | 16 | ) 17 | 18 | case "PersonShow": 19 | return ( 20 | 23 | ) 24 | 25 | default: 26 | return ( 27 | {`YO YOU MESSED SOMETHING UP ${route}`} 28 | ) 29 | } 30 | } 31 | 32 | render() { 33 | return ( 34 | ({ 40 | ...route.sceneConfig || Navigator.SceneConfigs.FloatFromRight })} /> 41 | ) 42 | } 43 | 44 | } 45 | 46 | const styles = React.StyleSheet.create({ 47 | 48 | navigatorStyles: { 49 | 50 | } 51 | 52 | }) 53 | 54 | module.exports = AppNavigator 55 | -------------------------------------------------------------------------------- /abcrn/app/styles/colors.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/abcrn/app/styles/colors.js -------------------------------------------------------------------------------- /abcrn/index.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample React Native App 3 | * https://github.com/facebook/react-native 4 | */ 5 | 'use strict'; 6 | import React, { 7 | AppRegistry, 8 | Component, 9 | StyleSheet, 10 | Text, 11 | View 12 | } from 'react-native'; 13 | import message from './temp' 14 | 15 | class abcrn extends Component { 16 | render() { 17 | return ( 18 | 19 | 20 | Welcome to React Native! 21 | 22 | 23 | To get started, edit index.android.js 24 | 25 | 26 | Shake or press menu button for dev menu 27 | 28 | 29 | ); 30 | } 31 | } 32 | 33 | const styles = StyleSheet.create({ 34 | container: { 35 | flex: 1, 36 | justifyContent: 'center', 37 | alignItems: 'center', 38 | backgroundColor: '#F5FCFF', 39 | }, 40 | welcome: { 41 | fontSize: 20, 42 | textAlign: 'center', 43 | margin: 10, 44 | }, 45 | instructions: { 46 | textAlign: 'center', 47 | color: '#333333', 48 | marginBottom: 5, 49 | }, 50 | }); 51 | 52 | AppRegistry.registerComponent('abcrn', () => abcrn); 53 | -------------------------------------------------------------------------------- /abcrn/index.ios.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import React, { AppRegistry, Component, TabBarIOS } from 'react-native' 3 | import AppNavigator from './app/navigation/AppNavigator' 4 | import Icon from 'react-native-vector-icons/FontAwesome' 5 | 6 | class abcrn extends Component { 7 | constructor(props) { 8 | super(props) 9 | this.state = { 10 | selectedTab: "tab1" 11 | } 12 | } 13 | 14 | render() { 15 | return ( 16 | 18 | 19 | this.setState({selectedTab: "tab1"})}> 24 | 26 | 27 | 28 | this.setState({selectedTab: "tab2"})}> 33 | 36 | 37 | 38 | 39 | ) 40 | } 41 | 42 | } 43 | 44 | const styles = React.StyleSheet.create({ 45 | 46 | }) 47 | 48 | AppRegistry.registerComponent('abcrn', () => abcrn) 49 | -------------------------------------------------------------------------------- /abcrn/ios/abcrn/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /abcrn/ios/abcrn/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /abcrn/ios/abcrn/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UIViewControllerBasedStatusBarAppearance 38 | 39 | NSLocationWhenInUseUsageDescription 40 | 41 | NSAppTransportSecurity 42 | 43 | NSAllowsArbitraryLoads 44 | 45 | 46 | UIAppFonts 47 | 48 | Entypo.ttf 49 | EvilIcons.ttf 50 | FontAwesome.ttf 51 | Foundation.ttf 52 | Ionicons.ttf 53 | MaterialIcons.ttf 54 | Octicons.ttf 55 | Zocial.ttf 56 | 57 | 58 | -------------------------------------------------------------------------------- /abcrn/ios/abcrn/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "AppDelegate.h" 13 | 14 | int main(int argc, char * argv[]) { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /abcrn/ios/abcrnTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /abcrn/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abcrn", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node_modules/react-native/packager/packager.sh" 7 | }, 8 | "dependencies": { 9 | "lodash": "^4.6.1", 10 | "react-native": "^0.21.0", 11 | "react-native-vector-icons": "^1.3.2" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /algolia/ExampleApp/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile '~/.gitignore_global' 6 | 7 | # Ignore bundler config. 8 | /.bundle 9 | 10 | # Ignore the default SQLite database. 11 | /db/*.sqlite3 12 | /db/*.sqlite3-journal 13 | 14 | # Ignore all logfiles and tempfiles. 15 | /log/* 16 | /tmp/* 17 | !/log/.keep 18 | !/tmp/.keep 19 | 20 | # Ignore Byebug command history file. 21 | .byebug_history 22 | -------------------------------------------------------------------------------- /algolia/ExampleApp/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'rails', '~> 5.0.0' 4 | gem 'pg' 5 | gem 'pry-rails' 6 | gem 'watir' 7 | gem 'rack-cors' 8 | 9 | gem 'algoliasearch' 10 | 11 | gem 'puma', '~> 3.0' 12 | gem 'sass-rails', '~> 5.0' 13 | gem 'uglifier', '>= 1.3.0' 14 | gem 'coffee-rails', '~> 4.2' 15 | 16 | gem 'jquery-rails' 17 | gem 'jbuilder', '~> 2.5' 18 | 19 | group :development, :test do 20 | gem 'byebug', platform: :mri 21 | end 22 | 23 | group :development do 24 | gem 'web-console' 25 | gem 'listen', '~> 3.0.5' 26 | gem 'spring' 27 | gem 'spring-watcher-listen', '~> 2.0.0' 28 | end 29 | 30 | gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 31 | -------------------------------------------------------------------------------- /algolia/ExampleApp/README.md: -------------------------------------------------------------------------------- 1 | # README 2 | 3 | This README would normally document whatever steps are necessary to get the 4 | application up and running. 5 | 6 | Things you may want to cover: 7 | 8 | * Ruby version 9 | 10 | * System dependencies 11 | 12 | * Configuration 13 | 14 | * Database creation 15 | 16 | * Database initialization 17 | 18 | * How to run the test suite 19 | 20 | * Services (job queues, cache servers, search engines, etc.) 21 | 22 | * Deployment instructions 23 | 24 | * ... 25 | -------------------------------------------------------------------------------- /algolia/ExampleApp/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require_relative 'config/application' 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/assets/config/manifest.js: -------------------------------------------------------------------------------- 1 | //= link_tree ../images 2 | //= link_directory ../javascripts .js 3 | //= link_directory ../stylesheets .css 4 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/assets/images/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/app/assets/images/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. JavaScript code in this file should be added after the last require_* statement. 9 | // 10 | // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require jquery 14 | //= require jquery_ujs 15 | //= require_tree . 16 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/assets/javascripts/cable.js: -------------------------------------------------------------------------------- 1 | // Action Cable provides the framework to deal with WebSockets in Rails. 2 | // You can generate new channels where WebSocket features live using the rails generate channel command. 3 | // 4 | //= require action_cable 5 | //= require_self 6 | //= require_tree ./channels 7 | 8 | (function() { 9 | this.App || (this.App = {}); 10 | 11 | App.cable = ActionCable.createConsumer(); 12 | 13 | }).call(this); 14 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/assets/javascripts/channels/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/app/assets/javascripts/channels/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/app/assets/stylesheets/application.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This is a manifest file that'll be compiled into application.css, which will include all the files 3 | * listed below. 4 | * 5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 6 | * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. 7 | * 8 | * You're free to add application-wide styles to this file and they'll appear at the bottom of the 9 | * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS 10 | * files in this directory. Styles in this file should be added after the last require_* statement. 11 | * It is generally better to create a new file per style scope. 12 | * 13 | *= require_tree . 14 | *= require_self 15 | */ 16 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/channels/application_cable/channel.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Channel < ActionCable::Channel::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/channels/application_cable/connection.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Connection < ActionCable::Connection::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | protect_from_forgery with: :exception 3 | end 4 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/controllers/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/app/controllers/concerns/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/app/controllers/pages_controller.rb: -------------------------------------------------------------------------------- 1 | class PagesController < ApplicationController 2 | 3 | def homepage 4 | render text: "This is the homepage" 5 | end 6 | 7 | end 8 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/controllers/players_controller.rb: -------------------------------------------------------------------------------- 1 | class PlayersController < ApplicationController 2 | skip_before_filter :verify_authenticity_token 3 | 4 | def index 5 | render json: NbaPlayer.all.map { |player| player.serialize_algolia } 6 | end 7 | 8 | end 9 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/controllers/tweets_controller.rb: -------------------------------------------------------------------------------- 1 | class TweetsController < ApplicationController 2 | skip_before_filter :verify_authenticity_token 3 | 4 | def index 5 | render json: Tweet.all.map { |tweet| tweet.serialize_algolia } 6 | end 7 | 8 | end 9 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/jobs/application_job.rb: -------------------------------------------------------------------------------- 1 | class ApplicationJob < ActiveJob::Base 2 | end 3 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/mailers/application_mailer.rb: -------------------------------------------------------------------------------- 1 | class ApplicationMailer < ActionMailer::Base 2 | default from: 'from@example.com' 3 | layout 'mailer' 4 | end 5 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/models/application_record.rb: -------------------------------------------------------------------------------- 1 | class ApplicationRecord < ActiveRecord::Base 2 | self.abstract_class = true 3 | end 4 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/models/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/app/models/concerns/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/app/models/nba_player.rb: -------------------------------------------------------------------------------- 1 | class NbaPlayer < ApplicationRecord 2 | @@ALGOLIA_INDEX_NAME = "nba_players" 3 | 4 | after_create :index_to_algolia 5 | after_destroy :remove_from_algolia 6 | 7 | def serialize_algolia 8 | { 9 | objectID: self.id, 10 | display_name: self.display_name, 11 | position: self.position, 12 | team_display_name: self.team_display_name, 13 | points: self.points 14 | } 15 | end 16 | 17 | def self.algolia_import 18 | index = Algolia::Index.new(@@ALGOLIA_INDEX_NAME) 19 | index.add_objects(NbaPlayer.all.map(&:serialize_algolia)) 20 | end 21 | 22 | def index_to_algolia 23 | index = Algolia::Index.new(@@ALGOLIA_INDEX_NAME) 24 | index.save_object(self.serialize_algolia) 25 | end 26 | 27 | def remove_from_algolia 28 | index = Algolia::Index.new(@@ALGOLIA_INDEX_NAME) 29 | index.delete_object(self.id) 30 | end 31 | 32 | end 33 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/models/tweet.rb: -------------------------------------------------------------------------------- 1 | class Tweet < ApplicationRecord 2 | @@Algolia_Index_Name = "tweets" 3 | 4 | after_create :index_to_algolia 5 | after_destroy :remove_from_algolia 6 | 7 | def serialize_algolia 8 | { 9 | objectID: self.id, 10 | tweetID: self.tweet_id, 11 | in_reply_to_status_id: self.in_reply_to_status_id, 12 | in_reply_to_user_id: self.in_reply_to_user_id, 13 | timestamp: self.timestamp.to_i, 14 | source: self.source, 15 | text: self.text, 16 | retweeted_status_id: self.retweeted_status_id, 17 | retweeted_status_timestamp: self.retweeted_status_timestamp.to_i, 18 | expanded_url: self.expanded_url 19 | } 20 | end 21 | 22 | def self.algolia_import 23 | self.all.each_slice(1000) do |batch| 24 | index = Algolia::Index.new(@@Algolia_Index_Name) 25 | index.add_objects(batch.map { |tweet| tweet.serialize_algolia }) 26 | end 27 | end 28 | 29 | def index_to_algolia 30 | index = Algolia::Index.new(@@Algolia_Index_Name) 31 | index.save_object(self.serialize_algolia) 32 | end 33 | 34 | def remove_from_algolia 35 | index = Algolia::Index.new(@@Algolia_Index_Name) 36 | index.delete_object(self.id) 37 | end 38 | 39 | 40 | end 41 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ExampleApp 5 | <%= csrf_meta_tags %> 6 | 7 | <%= stylesheet_link_tag 'application', media: 'all' %> 8 | <%= javascript_include_tag 'application' %> 9 | 10 | 11 | 12 | <%= yield %> 13 | 14 | 15 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/views/layouts/mailer.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/views/layouts/mailer.text.erb: -------------------------------------------------------------------------------- 1 | <%= yield %> 2 | -------------------------------------------------------------------------------- /algolia/ExampleApp/app/views/players/index.html.erb: -------------------------------------------------------------------------------- 1 |

Hello World!!

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | <% @players.each do |player| %> 15 | 16 | 17 | 18 | 19 | 20 | 21 | <% end %> 22 | 23 |
Player NamePositionTeamPoints
<%= player.display_name %><%= player.position %><%= player.team_display_name %><%= player.points %>
24 | -------------------------------------------------------------------------------- /algolia/ExampleApp/bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /algolia/ExampleApp/bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError => e 5 | raise unless e.message.include?('spring') 6 | end 7 | APP_PATH = File.expand_path('../config/application', __dir__) 8 | require_relative '../config/boot' 9 | require 'rails/commands' 10 | -------------------------------------------------------------------------------- /algolia/ExampleApp/bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError => e 5 | raise unless e.message.include?('spring') 6 | end 7 | require_relative '../config/boot' 8 | require 'rake' 9 | Rake.application.run 10 | -------------------------------------------------------------------------------- /algolia/ExampleApp/bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | require 'fileutils' 4 | include FileUtils 5 | 6 | # path to your application root. 7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 8 | 9 | def system!(*args) 10 | system(*args) || abort("\n== Command #{args} failed ==") 11 | end 12 | 13 | chdir APP_ROOT do 14 | # This script is a starting point to setup your application. 15 | # Add necessary setup steps to this file. 16 | 17 | puts '== Installing dependencies ==' 18 | system! 'gem install bundler --conservative' 19 | system('bundle check') || system!('bundle install') 20 | 21 | # puts "\n== Copying sample files ==" 22 | # unless File.exist?('config/database.yml') 23 | # cp 'config/database.yml.sample', 'config/database.yml' 24 | # end 25 | 26 | puts "\n== Preparing database ==" 27 | system! 'bin/rails db:setup' 28 | 29 | puts "\n== Removing old logs and tempfiles ==" 30 | system! 'bin/rails log:clear tmp:clear' 31 | 32 | puts "\n== Restarting application server ==" 33 | system! 'bin/rails restart' 34 | end 35 | -------------------------------------------------------------------------------- /algolia/ExampleApp/bin/spring: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # This file loads spring without using Bundler, in order to be fast. 4 | # It gets overwritten when you run the `spring binstub` command. 5 | 6 | unless defined?(Spring) 7 | require 'rubygems' 8 | require 'bundler' 9 | 10 | if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m)) 11 | Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq.join(Gem.path_separator) } 12 | gem 'spring', match[1] 13 | require 'spring/binstub' 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /algolia/ExampleApp/bin/update: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | require 'fileutils' 4 | include FileUtils 5 | 6 | # path to your application root. 7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 8 | 9 | def system!(*args) 10 | system(*args) || abort("\n== Command #{args} failed ==") 11 | end 12 | 13 | chdir APP_ROOT do 14 | # This script is a way to update your development environment automatically. 15 | # Add necessary update steps to this file. 16 | 17 | puts '== Installing dependencies ==' 18 | system! 'gem install bundler --conservative' 19 | system('bundle check') || system!('bundle install') 20 | 21 | puts "\n== Updating database ==" 22 | system! 'bin/rails db:migrate' 23 | 24 | puts "\n== Removing old logs and tempfiles ==" 25 | system! 'bin/rails log:clear tmp:clear' 26 | 27 | puts "\n== Restarting application server ==" 28 | system! 'bin/rails restart' 29 | end 30 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require_relative 'config/environment' 4 | 5 | run Rails.application 6 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/application.rb: -------------------------------------------------------------------------------- 1 | require_relative 'boot' 2 | 3 | require 'rails/all' 4 | 5 | # Require the gems listed in Gemfile, including any gems 6 | # you've limited to :test, :development, or :production. 7 | Bundler.require(*Rails.groups) 8 | 9 | module ExampleApp 10 | class Application < Rails::Application 11 | 12 | config.middleware.insert_before 0, Rack::Cors do 13 | allow do 14 | origins '*' 15 | resource '*', :headers => :any, :methods => [:get, :post, :options] 16 | end 17 | end 18 | 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/boot.rb: -------------------------------------------------------------------------------- 1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) 2 | 3 | require 'bundler/setup' # Set up gems listed in the Gemfile. 4 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/cable.yml: -------------------------------------------------------------------------------- 1 | development: 2 | adapter: async 3 | 4 | test: 5 | adapter: async 6 | 7 | production: 8 | adapter: redis 9 | url: redis://localhost:6379/1 10 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/database.yml: -------------------------------------------------------------------------------- 1 | default: &default 2 | adapter: postgresql 3 | pool: 5 4 | timeout: 5000 5 | 6 | development: 7 | <<: *default 8 | database: algolia_development 9 | 10 | test: 11 | <<: *default 12 | database: algolia_test 13 | 14 | production: 15 | <<: *default 16 | database: db/production.sqlite3 17 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require_relative 'application' 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/environments/test.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # The test environment is used exclusively to run your application's 5 | # test suite. You never need to work with it otherwise. Remember that 6 | # your test database is "scratch space" for the test suite and is wiped 7 | # and recreated between test runs. Don't rely on the data there! 8 | config.cache_classes = true 9 | 10 | # Do not eager load code on boot. This avoids loading your whole application 11 | # just for the purpose of running a single test. If you are using a tool that 12 | # preloads Rails for running tests, you may have to set it to true. 13 | config.eager_load = false 14 | 15 | # Configure public file server for tests with Cache-Control for performance. 16 | config.public_file_server.enabled = true 17 | config.public_file_server.headers = { 18 | 'Cache-Control' => 'public, max-age=3600' 19 | } 20 | 21 | # Show full error reports and disable caching. 22 | config.consider_all_requests_local = true 23 | config.action_controller.perform_caching = false 24 | 25 | # Raise exceptions instead of rendering exception templates. 26 | config.action_dispatch.show_exceptions = false 27 | 28 | # Disable request forgery protection in test environment. 29 | config.action_controller.allow_forgery_protection = false 30 | config.action_mailer.perform_caching = false 31 | 32 | # Tell Action Mailer not to deliver emails to the real world. 33 | # The :test delivery method accumulates sent emails in the 34 | # ActionMailer::Base.deliveries array. 35 | config.action_mailer.delivery_method = :test 36 | 37 | # Print deprecation notices to the stderr. 38 | config.active_support.deprecation = :stderr 39 | 40 | # Raises error for missing translations 41 | # config.action_view.raise_on_missing_translations = true 42 | end 43 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/1-api_keys.rb: -------------------------------------------------------------------------------- 1 | Algolia.init(application_id: "4L9CPAAAZI", api_key: "fd9588d148d402e306130eb91b4becbd") 2 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/application_controller_renderer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # ApplicationController.renderer.defaults.merge!( 4 | # http_host: 'example.org', 5 | # https: false 6 | # ) 7 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | 9 | # Precompile additional assets. 10 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 11 | # Rails.application.config.assets.precompile += %w( search.js ) 12 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Specify a serializer for the signed and encrypted cookie jars. 4 | # Valid options are :json, :marshal, and :hybrid. 5 | Rails.application.config.action_dispatch.cookies_serializer = :json 6 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format. Inflections 4 | # are locale specific, and you may define rules for as many different 5 | # locales as you wish. All of these examples are active by default: 6 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 7 | # inflect.plural /^(ox)$/i, '\1en' 8 | # inflect.singular /^(ox)en/i, '\1' 9 | # inflect.irregular 'person', 'people' 10 | # inflect.uncountable %w( fish sheep ) 11 | # end 12 | 13 | # These inflection rules are supported but not enabled by default: 14 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 15 | # inflect.acronym 'RESTful' 16 | # end 17 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/new_framework_defaults.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | # 3 | # This file contains migration options to ease your Rails 5.0 upgrade. 4 | # 5 | # Read the Rails 5.0 release notes for more info on each option. 6 | 7 | # Enable per-form CSRF tokens. Previous versions had false. 8 | Rails.application.config.action_controller.per_form_csrf_tokens = true 9 | 10 | # Enable origin-checking CSRF mitigation. Previous versions had false. 11 | Rails.application.config.action_controller.forgery_protection_origin_check = true 12 | 13 | # Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. 14 | # Previous versions had false. 15 | ActiveSupport.to_time_preserves_timezone = true 16 | 17 | # Require `belongs_to` associations by default. Previous versions had false. 18 | Rails.application.config.active_record.belongs_to_required_by_default = true 19 | 20 | # Do not halt callback chains when a callback returns false. Previous versions had true. 21 | ActiveSupport.halt_callback_chains_on_return_false = false 22 | 23 | # Configure SSL options to enable HSTS with subdomains. Previous versions had false. 24 | Rails.application.config.ssl_options = { hsts: { subdomains: true } } 25 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.session_store :cookie_store, key: '_ExampleApp_session' 4 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # To learn more, please read the Rails Internationalization guide 20 | # available at http://guides.rubyonrails.org/i18n.html. 21 | 22 | en: 23 | hello: "Hello world" 24 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/routes.rb: -------------------------------------------------------------------------------- 1 | Rails.application.routes.draw do 2 | 3 | root to: "pages#homepage" 4 | 5 | get "/players" => "players#index", as: :players_index 6 | get "/tweets" => "tweets#index", as: :tweets_index 7 | 8 | end 9 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/secrets.yml: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key is used for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | 6 | # Make sure the secret is at least 30 characters and all random, 7 | # no regular words or you'll be exposed to dictionary attacks. 8 | # You can use `rails secret` to generate a secure secret key. 9 | 10 | # Make sure the secrets in this file are kept private 11 | # if you're sharing your code publicly. 12 | 13 | development: 14 | secret_key_base: 5e7e0b48c0a12527746e35ec0b05558d5c478ba2f4b137d463fe11be56baa975b870b4fcfa17c6e485552f909f489739739b10fb9e04fccdad5d63764060935c 15 | 16 | test: 17 | secret_key_base: 7dad6d68070aa7c5ac0062a8ed640a968b184273212c5f10db8d2d0e3a8d7e501e357a06ebbbb660c6f85acb0150f31f9aa5142be1cee94fe9e1b139bfe798ab 18 | 19 | # Do not keep production secrets in the repository, 20 | # instead read values from the environment. 21 | production: 22 | secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 23 | -------------------------------------------------------------------------------- /algolia/ExampleApp/config/spring.rb: -------------------------------------------------------------------------------- 1 | %w( 2 | .ruby-version 3 | .rbenv-vars 4 | tmp/restart.txt 5 | tmp/caching-dev.txt 6 | ).each { |path| Spring.watch(path) } 7 | -------------------------------------------------------------------------------- /algolia/ExampleApp/db/migrate/20160806095721_create_nba_players.rb: -------------------------------------------------------------------------------- 1 | class CreateNbaPlayers < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :nba_players do |t| 4 | t.string :display_name 5 | t.string :position 6 | t.string :team_display_name 7 | t.integer :points 8 | t.timestamps 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /algolia/ExampleApp/db/migrate/20160807081218_create_tweets.rb: -------------------------------------------------------------------------------- 1 | class CreateTweets < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :tweets do |t| 4 | t.string :tweet_id 5 | t.string :in_reply_to_status_id 6 | t.string :in_reply_to_user_id 7 | t.datetime :timestamp 8 | t.string :source 9 | t.string :text 10 | t.string :retweeted_status_id 11 | t.string :retweeted_status_user_id 12 | t.datetime :retweeted_status_timestamp 13 | t.string :expanded_url 14 | t.timestamps 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /algolia/ExampleApp/db/schema.rb: -------------------------------------------------------------------------------- 1 | # This file is auto-generated from the current state of the database. Instead 2 | # of editing this file, please use the migrations feature of Active Record to 3 | # incrementally modify your database, and then regenerate this schema definition. 4 | # 5 | # Note that this schema.rb definition is the authoritative source for your 6 | # database schema. If you need to create the application database on another 7 | # system, you should be using db:schema:load, not running all the migrations 8 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations 9 | # you'll amass, the slower it'll run and the greater likelihood for issues). 10 | # 11 | # It's strongly recommended that you check this file into your version control system. 12 | 13 | ActiveRecord::Schema.define(version: 20160807081218) do 14 | 15 | # These are extensions that must be enabled in order to support this database 16 | enable_extension "plpgsql" 17 | 18 | create_table "nba_players", force: :cascade do |t| 19 | t.string "display_name" 20 | t.string "position" 21 | t.string "team_display_name" 22 | t.integer "points" 23 | t.datetime "created_at", null: false 24 | t.datetime "updated_at", null: false 25 | end 26 | 27 | create_table "tweets", force: :cascade do |t| 28 | t.string "tweet_id" 29 | t.string "in_reply_to_status_id" 30 | t.string "in_reply_to_user_id" 31 | t.datetime "timestamp" 32 | t.string "source" 33 | t.string "text" 34 | t.string "retweeted_status_id" 35 | t.string "retweeted_status_user_id" 36 | t.datetime "retweeted_status_timestamp" 37 | t.string "expanded_url" 38 | t.datetime "created_at", null: false 39 | t.datetime "updated_at", null: false 40 | end 41 | 42 | end 43 | -------------------------------------------------------------------------------- /algolia/ExampleApp/db/seeds.rb: -------------------------------------------------------------------------------- 1 | # This file should contain all the record creation needed to seed the database with its default values. 2 | # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). 3 | # 4 | # Examples: 5 | # 6 | # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) 7 | # Character.create(name: 'Luke', movie: movies.first) 8 | -------------------------------------------------------------------------------- /algolia/ExampleApp/lib/assets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/lib/assets/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/lib/tasks/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/lib/tasks/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/log/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/log/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The page you were looking for doesn't exist (404) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The page you were looking for doesn't exist.

62 |

You may have mistyped the address or the page may have moved.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /algolia/ExampleApp/public/422.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The change you wanted was rejected (422) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The change you wanted was rejected.

62 |

Maybe you tried to change something you didn't have access to.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /algolia/ExampleApp/public/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | We're sorry, but something went wrong (500) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

We're sorry, but something went wrong.

62 |
63 |

If you are the application owner check the logs for more information.

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /algolia/ExampleApp/public/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/public/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /algolia/ExampleApp/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/public/apple-touch-icon.png -------------------------------------------------------------------------------- /algolia/ExampleApp/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/public/favicon.ico -------------------------------------------------------------------------------- /algolia/ExampleApp/public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /algolia/ExampleApp/test/controllers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/test/controllers/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/test/fixtures/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/test/fixtures/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/test/fixtures/files/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/test/fixtures/files/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/test/fixtures/nba_players.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /algolia/ExampleApp/test/fixtures/tweets.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /algolia/ExampleApp/test/helpers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/test/helpers/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/test/integration/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/test/integration/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/test/mailers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/test/mailers/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/test/models/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/test/models/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/test/models/nba_player_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class NbaPlayerTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /algolia/ExampleApp/test/models/tweet_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class TweetTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /algolia/ExampleApp/test/test_helper.rb: -------------------------------------------------------------------------------- 1 | ENV['RAILS_ENV'] ||= 'test' 2 | require File.expand_path('../../config/environment', __FILE__) 3 | require 'rails/test_help' 4 | 5 | class ActiveSupport::TestCase 6 | # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. 7 | fixtures :all 8 | 9 | # Add more helper methods to be used by all tests here... 10 | end 11 | -------------------------------------------------------------------------------- /algolia/ExampleApp/tmp/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/tmp/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/vendor/assets/javascripts/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/vendor/assets/javascripts/.keep -------------------------------------------------------------------------------- /algolia/ExampleApp/vendor/assets/stylesheets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ExampleApp/vendor/assets/stylesheets/.keep -------------------------------------------------------------------------------- /algolia/ui1/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | 6 | # production 7 | build 8 | 9 | # misc 10 | .DS_Store 11 | npm-debug.log 12 | -------------------------------------------------------------------------------- /algolia/ui1/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ui1/favicon.ico -------------------------------------------------------------------------------- /algolia/ui1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | React App 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /algolia/ui1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hello-world", 3 | "version": "0.0.1", 4 | "private": true, 5 | "devDependencies": { 6 | "react-scripts": "0.2.1" 7 | }, 8 | "dependencies": { 9 | "react": "^15.2.1", 10 | "react-dom": "^15.2.1", 11 | "q": "^1.4.1", 12 | "lodash": "^4.14.1", 13 | "algoliasearch": "^3.18.0" 14 | }, 15 | "scripts": { 16 | "start": "react-scripts start", 17 | "build": "react-scripts build", 18 | "eject": "react-scripts eject" 19 | }, 20 | "eslintConfig": { 21 | "extends": "./node_modules/react-scripts/config/eslint.js" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /algolia/ui1/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | 3 | } 4 | 5 | input:focus { 6 | outline: none; 7 | } 8 | 9 | h1 { 10 | margin-top: 0px; 11 | margin-bottom: 15px; 12 | } 13 | 14 | table { 15 | border-spacing: 50px 0; 16 | } 17 | 18 | tr { 19 | } 20 | 21 | th { 22 | 23 | } 24 | 25 | td { 26 | } 27 | 28 | .App-Header { 29 | background-color: #222; 30 | height: 100px; 31 | padding: 20px; 32 | color: white; 33 | display: flex; 34 | flex-direction: column; 35 | justify-content: center; 36 | align-items: center; 37 | } 38 | 39 | .App-Content { 40 | display: flex; 41 | flex-direction: row; 42 | justify-content: center; 43 | align-items: center; 44 | margin-top: 15px; 45 | } 46 | 47 | .App-intro { 48 | font-size: large; 49 | } 50 | 51 | .search { 52 | width: 50%; 53 | padding: 10px 5px 10px 5px; 54 | font-size: 1em; 55 | font-weight: bold; 56 | text-align: center; 57 | } 58 | -------------------------------------------------------------------------------- /algolia/ui1/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: sans-serif; 5 | } 6 | -------------------------------------------------------------------------------- /algolia/ui1/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | import './index.css'; 5 | 6 | ReactDOM.render( 7 | , 8 | document.getElementById('root') 9 | ); 10 | -------------------------------------------------------------------------------- /algolia/ui1/src/services/APIService.js: -------------------------------------------------------------------------------- 1 | import Q from 'q' 2 | 3 | class APIService { 4 | 5 | constructor(endpoint) { 6 | this.endpoint = endpoint; 7 | } 8 | 9 | getPlayers() { 10 | var deferred = Q.defer() 11 | 12 | fetch(`${this.endpoint}/players`, {}) 13 | .then((response) => { 14 | deferred.resolve(response.json()) 15 | }) 16 | .catch((error) => deferred.reject(error.message)) 17 | 18 | return deferred.promise 19 | } 20 | 21 | } 22 | 23 | module.exports = new APIService("http://localhost:3003") 24 | -------------------------------------------------------------------------------- /algolia/ui1/src/services/AlgoliaService.js: -------------------------------------------------------------------------------- 1 | import algolia from 'algoliasearch' 2 | 3 | class AlgoliaService { 4 | 5 | constructor() { 6 | this.client = algolia("4L9CPAAAZI", "c2fa5539341be8b38a94d152c9bf6553") 7 | this.index = this.client.initIndex('nba_players') 8 | } 9 | 10 | } 11 | 12 | module.exports = new AlgoliaService() 13 | -------------------------------------------------------------------------------- /algolia/ui2/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | 6 | # production 7 | build 8 | 9 | # misc 10 | .DS_Store 11 | npm-debug.log 12 | -------------------------------------------------------------------------------- /algolia/ui2/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/algolia/ui2/favicon.ico -------------------------------------------------------------------------------- /algolia/ui2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | React App 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /algolia/ui2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hello-world", 3 | "version": "0.0.1", 4 | "private": true, 5 | "devDependencies": { 6 | "react-scripts": "0.2.1" 7 | }, 8 | "dependencies": { 9 | "react": "^15.2.1", 10 | "react-dom": "^15.2.1", 11 | "q": "^1.4.1", 12 | "lodash": "^4.14.1", 13 | "algoliasearch": "^3.18.0" 14 | }, 15 | "scripts": { 16 | "start": "react-scripts start", 17 | "build": "react-scripts build", 18 | "eject": "react-scripts eject" 19 | }, 20 | "eslintConfig": { 21 | "extends": "./node_modules/react-scripts/config/eslint.js" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /algolia/ui2/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | 3 | } 4 | 5 | em { 6 | background-color: aqua; 7 | } 8 | 9 | input:focus { 10 | outline: none; 11 | } 12 | 13 | h1 { 14 | margin-top: 0px; 15 | margin-bottom: 15px; 16 | } 17 | 18 | table { 19 | border-spacing: 50px 0; 20 | } 21 | 22 | tr { 23 | } 24 | 25 | th { 26 | 27 | } 28 | 29 | td { 30 | } 31 | 32 | .App-Header { 33 | background-color: #222; 34 | height: 100px; 35 | padding: 20px; 36 | color: white; 37 | display: flex; 38 | flex-direction: column; 39 | justify-content: center; 40 | align-items: center; 41 | } 42 | 43 | .App-Content { 44 | display: flex; 45 | flex-direction: row; 46 | justify-content: center; 47 | align-items: center; 48 | margin-top: 15px; 49 | } 50 | 51 | .App-intro { 52 | font-size: large; 53 | } 54 | 55 | .search { 56 | width: 50%; 57 | padding: 10px 5px 10px 5px; 58 | font-size: 1em; 59 | font-weight: bold; 60 | text-align: center; 61 | } 62 | -------------------------------------------------------------------------------- /algolia/ui2/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: sans-serif; 5 | } 6 | -------------------------------------------------------------------------------- /algolia/ui2/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | import './index.css'; 5 | 6 | ReactDOM.render( 7 | , 8 | document.getElementById('root') 9 | ); 10 | -------------------------------------------------------------------------------- /algolia/ui2/src/services/APIService.js: -------------------------------------------------------------------------------- 1 | import Q from 'q' 2 | 3 | class APIService { 4 | 5 | constructor(endpoint) { 6 | this.endpoint = endpoint; 7 | } 8 | 9 | getPlayers() { 10 | var deferred = Q.defer() 11 | 12 | fetch(`${this.endpoint}/tweets`, {}) 13 | .then((response) => { 14 | deferred.resolve(response.json()) 15 | }) 16 | .catch((error) => deferred.reject(error.message)) 17 | 18 | return deferred.promise 19 | } 20 | 21 | } 22 | 23 | module.exports = new APIService("http://localhost:3003") 24 | -------------------------------------------------------------------------------- /algolia/ui2/src/services/AlgoliaService.js: -------------------------------------------------------------------------------- 1 | import algolia from 'algoliasearch' 2 | 3 | class AlgoliaService { 4 | 5 | constructor() { 6 | this.client = algolia("4L9CPAAAZI", "c2fa5539341be8b38a94d152c9bf6553") 7 | this.index = this.client.initIndex('tweets') 8 | } 9 | 10 | } 11 | 12 | module.exports = new AlgoliaService() 13 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | ruby '2.2.2' 3 | 4 | gem 'rails', '~> 5.0.0' 5 | gem 'pg' 6 | gem 'puma', '~> 3.0' 7 | gem 'pry-rails' 8 | gem "aws-sdk" 9 | 10 | gem 'sidekiq' 11 | gem 'sinatra', github: 'sinatra/sinatra' 12 | 13 | gem 'sass-rails', '~> 5.0' 14 | gem 'uglifier', '>= 1.3.0' 15 | gem 'coffee-rails', '~> 4.2' 16 | gem 'jquery-rails' 17 | gem 'turbolinks', '~> 5' 18 | gem 'jbuilder', '~> 2.5' 19 | 20 | group :development, :test do 21 | gem 'byebug', platform: :mri 22 | end 23 | 24 | group :development do 25 | gem 'web-console' 26 | gem 'listen', '~> 3.0.5' 27 | gem 'spring' 28 | gem 'spring-watcher-listen', '~> 2.0.0' 29 | end 30 | 31 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 32 | gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 33 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/Procfile: -------------------------------------------------------------------------------- 1 | web: bundle exec puma -C config/puma.rb 2 | reportworker: bundle exec sidekiq -c 1 3 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/README.md: -------------------------------------------------------------------------------- 1 | # README 2 | 3 | This README would normally document whatever steps are necessary to get the 4 | application up and running. 5 | 6 | Things you may want to cover: 7 | 8 | * Ruby version 9 | 10 | * System dependencies 11 | 12 | * Configuration 13 | 14 | * Database creation 15 | 16 | * Database initialization 17 | 18 | * How to run the test suite 19 | 20 | * Services (job queues, cache servers, search engines, etc.) 21 | 22 | * Deployment instructions 23 | 24 | * ... 25 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require_relative 'config/application' 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/assets/config/manifest.js: -------------------------------------------------------------------------------- 1 | //= link_tree ../images 2 | //= link_directory ../javascripts .js 3 | //= link_directory ../stylesheets .css 4 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/assets/images/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/app/assets/images/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/assets/images/sales-report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/app/assets/images/sales-report.png -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. JavaScript code in this file should be added after the last require_* statement. 9 | // 10 | // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require jquery 14 | //= require jquery_ujs 15 | //= require turbolinks 16 | //= require_tree . 17 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/assets/javascripts/cable.js: -------------------------------------------------------------------------------- 1 | // Action Cable provides the framework to deal with WebSockets in Rails. 2 | // You can generate new channels where WebSocket features live using the rails generate channel command. 3 | // 4 | //= require action_cable 5 | //= require_self 6 | //= require_tree ./channels 7 | 8 | (function() { 9 | this.App || (this.App = {}); 10 | 11 | App.cable = ActionCable.createConsumer(); 12 | 13 | }).call(this); 14 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/assets/javascripts/channels/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/app/assets/javascripts/channels/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/assets/stylesheets/application.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This is a manifest file that'll be compiled into application.css, which will include all the files 3 | * listed below. 4 | * 5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 6 | * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. 7 | * 8 | * You're free to add application-wide styles to this file and they'll appear at the bottom of the 9 | * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS 10 | * files in this directory. Styles in this file should be added after the last require_* statement. 11 | * It is generally better to create a new file per style scope. 12 | * 13 | *= require_tree . 14 | *= require_self 15 | */ 16 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/channels/application_cable/channel.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Channel < ActionCable::Channel::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/channels/application_cable/connection.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Connection < ActionCable::Connection::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | protect_from_forgery with: :exception 3 | end 4 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/controllers/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/app/controllers/concerns/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/controllers/pages_controller.rb: -------------------------------------------------------------------------------- 1 | class PagesController < ApplicationController 2 | 3 | def homepage 4 | render text: "HOMEPAGE" 5 | end 6 | 7 | end 8 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/controllers/sales_controller.rb: -------------------------------------------------------------------------------- 1 | class SalesController < ApplicationController 2 | 3 | def index 4 | end 5 | 6 | def report 7 | # generate_report() 8 | ReportWorker.perform_async("07-01-2016", "08-01-2016") 9 | render text: "REQUEST TO GENERATE A REPORT ADDED TO THE QUEUE" 10 | end 11 | 12 | private 13 | def generate_report 14 | sleep 30 15 | end 16 | 17 | end 18 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/jobs/application_job.rb: -------------------------------------------------------------------------------- 1 | class ApplicationJob < ActiveJob::Base 2 | end 3 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/mailers/application_mailer.rb: -------------------------------------------------------------------------------- 1 | class ApplicationMailer < ActionMailer::Base 2 | default from: 'from@example.com' 3 | layout 'mailer' 4 | end 5 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/models/application_record.rb: -------------------------------------------------------------------------------- 1 | class ApplicationRecord < ActiveRecord::Base 2 | self.abstract_class = true 3 | end 4 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/models/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/app/models/concerns/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ExampleApp 5 | <%= csrf_meta_tags %> 6 | 7 | <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 8 | <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 9 | 10 | 11 | 12 | <%= yield %> 13 | 14 | 15 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/views/layouts/mailer.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/views/layouts/mailer.text.erb: -------------------------------------------------------------------------------- 1 | <%= yield %> 2 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/views/sales/index.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |

Create A Sales Report

8 | 9 | 12 | 13 | 20 | 21 |
22 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/views/sales/report.html.erb: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 |

THIS IS THE SALES REPORT

10 | 11 | <%= image_tag "sales-report.png", class: "sales-report" %> 12 | 13 | 17 | 18 |
19 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/app/workers/report_worker.rb: -------------------------------------------------------------------------------- 1 | class ReportWorker 2 | include Sidekiq::Worker 3 | sidekiq_options retry: false 4 | 5 | def perform(start_date, end_date) 6 | puts "SIDEKIQ WORKER GENERATING A REPORT FROM #{start_date} to #{end_date}" 7 | end 8 | 9 | end 10 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError => e 5 | raise unless e.message.include?('spring') 6 | end 7 | APP_PATH = File.expand_path('../config/application', __dir__) 8 | require_relative '../config/boot' 9 | require 'rails/commands' 10 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError => e 5 | raise unless e.message.include?('spring') 6 | end 7 | require_relative '../config/boot' 8 | require 'rake' 9 | Rake.application.run 10 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | require 'fileutils' 4 | include FileUtils 5 | 6 | # path to your application root. 7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 8 | 9 | def system!(*args) 10 | system(*args) || abort("\n== Command #{args} failed ==") 11 | end 12 | 13 | chdir APP_ROOT do 14 | # This script is a starting point to setup your application. 15 | # Add necessary setup steps to this file. 16 | 17 | puts '== Installing dependencies ==' 18 | system! 'gem install bundler --conservative' 19 | system('bundle check') || system!('bundle install') 20 | 21 | # puts "\n== Copying sample files ==" 22 | # unless File.exist?('config/database.yml') 23 | # cp 'config/database.yml.sample', 'config/database.yml' 24 | # end 25 | 26 | puts "\n== Preparing database ==" 27 | system! 'bin/rails db:setup' 28 | 29 | puts "\n== Removing old logs and tempfiles ==" 30 | system! 'bin/rails log:clear tmp:clear' 31 | 32 | puts "\n== Restarting application server ==" 33 | system! 'bin/rails restart' 34 | end 35 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/bin/spring: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # This file loads spring without using Bundler, in order to be fast. 4 | # It gets overwritten when you run the `spring binstub` command. 5 | 6 | unless defined?(Spring) 7 | require 'rubygems' 8 | require 'bundler' 9 | 10 | if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m)) 11 | Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq.join(Gem.path_separator) } 12 | gem 'spring', match[1] 13 | require 'spring/binstub' 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/bin/update: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | require 'fileutils' 4 | include FileUtils 5 | 6 | # path to your application root. 7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 8 | 9 | def system!(*args) 10 | system(*args) || abort("\n== Command #{args} failed ==") 11 | end 12 | 13 | chdir APP_ROOT do 14 | # This script is a way to update your development environment automatically. 15 | # Add necessary update steps to this file. 16 | 17 | puts '== Installing dependencies ==' 18 | system! 'gem install bundler --conservative' 19 | system('bundle check') || system!('bundle install') 20 | 21 | puts "\n== Updating database ==" 22 | system! 'bin/rails db:migrate' 23 | 24 | puts "\n== Removing old logs and tempfiles ==" 25 | system! 'bin/rails log:clear tmp:clear' 26 | 27 | puts "\n== Restarting application server ==" 28 | system! 'bin/rails restart' 29 | end 30 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require_relative 'config/environment' 4 | 5 | run Rails.application 6 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/application.rb: -------------------------------------------------------------------------------- 1 | require_relative 'boot' 2 | 3 | require 'rails/all' 4 | 5 | # Require the gems listed in Gemfile, including any gems 6 | # you've limited to :test, :development, or :production. 7 | Bundler.require(*Rails.groups) 8 | 9 | module ExampleApp 10 | class Application < Rails::Application 11 | # Settings in config/environments/* take precedence over those specified here. 12 | # Application configuration should go into files in config/initializers 13 | # -- all .rb files in that directory are automatically loaded. 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/boot.rb: -------------------------------------------------------------------------------- 1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) 2 | 3 | require 'bundler/setup' # Set up gems listed in the Gemfile. 4 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/cable.yml: -------------------------------------------------------------------------------- 1 | development: 2 | adapter: async 3 | 4 | test: 5 | adapter: async 6 | 7 | production: 8 | adapter: redis 9 | url: redis://localhost:6379/1 10 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/database.yml: -------------------------------------------------------------------------------- 1 | default: &default 2 | adapter: postgresql 3 | pool: 5 4 | timeout: 5000 5 | 6 | development: 7 | <<: *default 8 | database: abc_sandbox_development 9 | 10 | test: 11 | <<: *default 12 | database: abc_sandbox_test 13 | 14 | production: 15 | <<: *default 16 | database: abc_sandbox_production 17 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require_relative 'application' 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/environments/test.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # The test environment is used exclusively to run your application's 5 | # test suite. You never need to work with it otherwise. Remember that 6 | # your test database is "scratch space" for the test suite and is wiped 7 | # and recreated between test runs. Don't rely on the data there! 8 | config.cache_classes = true 9 | 10 | # Do not eager load code on boot. This avoids loading your whole application 11 | # just for the purpose of running a single test. If you are using a tool that 12 | # preloads Rails for running tests, you may have to set it to true. 13 | config.eager_load = false 14 | 15 | # Configure public file server for tests with Cache-Control for performance. 16 | config.public_file_server.enabled = true 17 | config.public_file_server.headers = { 18 | 'Cache-Control' => 'public, max-age=3600' 19 | } 20 | 21 | # Show full error reports and disable caching. 22 | config.consider_all_requests_local = true 23 | config.action_controller.perform_caching = false 24 | 25 | # Raise exceptions instead of rendering exception templates. 26 | config.action_dispatch.show_exceptions = false 27 | 28 | # Disable request forgery protection in test environment. 29 | config.action_controller.allow_forgery_protection = false 30 | config.action_mailer.perform_caching = false 31 | 32 | # Tell Action Mailer not to deliver emails to the real world. 33 | # The :test delivery method accumulates sent emails in the 34 | # ActionMailer::Base.deliveries array. 35 | config.action_mailer.delivery_method = :test 36 | 37 | # Print deprecation notices to the stderr. 38 | config.active_support.deprecation = :stderr 39 | 40 | # Raises error for missing translations 41 | # config.action_view.raise_on_missing_translations = true 42 | end 43 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/1-api_clients.rb: -------------------------------------------------------------------------------- 1 | AWS_S3_CLIENT = Aws::S3::Client.new( 2 | region: "us-standard", 3 | credentials: Aws::Credentials.new( 4 | Rails.application.secrets.aws_access_key, 5 | Rails.application.secrets.aws_secret_key 6 | ) 7 | ) 8 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/application_controller_renderer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # ApplicationController.renderer.defaults.merge!( 4 | # http_host: 'example.org', 5 | # https: false 6 | # ) 7 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | 9 | # Precompile additional assets. 10 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 11 | # Rails.application.config.assets.precompile += %w( search.js ) 12 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Specify a serializer for the signed and encrypted cookie jars. 4 | # Valid options are :json, :marshal, and :hybrid. 5 | Rails.application.config.action_dispatch.cookies_serializer = :json 6 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format. Inflections 4 | # are locale specific, and you may define rules for as many different 5 | # locales as you wish. All of these examples are active by default: 6 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 7 | # inflect.plural /^(ox)$/i, '\1en' 8 | # inflect.singular /^(ox)en/i, '\1' 9 | # inflect.irregular 'person', 'people' 10 | # inflect.uncountable %w( fish sheep ) 11 | # end 12 | 13 | # These inflection rules are supported but not enabled by default: 14 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 15 | # inflect.acronym 'RESTful' 16 | # end 17 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/new_framework_defaults.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | # 3 | # This file contains migration options to ease your Rails 5.0 upgrade. 4 | # 5 | # Read the Rails 5.0 release notes for more info on each option. 6 | 7 | # Enable per-form CSRF tokens. Previous versions had false. 8 | Rails.application.config.action_controller.per_form_csrf_tokens = true 9 | 10 | # Enable origin-checking CSRF mitigation. Previous versions had false. 11 | Rails.application.config.action_controller.forgery_protection_origin_check = true 12 | 13 | # Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. 14 | # Previous versions had false. 15 | ActiveSupport.to_time_preserves_timezone = true 16 | 17 | # Require `belongs_to` associations by default. Previous versions had false. 18 | Rails.application.config.active_record.belongs_to_required_by_default = true 19 | 20 | # Do not halt callback chains when a callback returns false. Previous versions had true. 21 | ActiveSupport.halt_callback_chains_on_return_false = false 22 | 23 | # Configure SSL options to enable HSTS with subdomains. Previous versions had false. 24 | Rails.application.config.ssl_options = { hsts: { subdomains: true } } 25 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.session_store :cookie_store, key: '_ExampleApp_session' 4 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # To learn more, please read the Rails Internationalization guide 20 | # available at http://guides.rubyonrails.org/i18n.html. 21 | 22 | en: 23 | hello: "Hello world" 24 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/puma.rb: -------------------------------------------------------------------------------- 1 | workers Integer(ENV['WEB_CONCURRENCY'] || 2) 2 | threads_count = Integer(ENV['MAX_THREADS'] || 5) 3 | threads threads_count, threads_count 4 | 5 | preload_app! 6 | 7 | rackup DefaultRackup 8 | port ENV['PORT'] || 3000 9 | environment ENV['RACK_ENV'] || 'development' 10 | 11 | on_worker_boot do 12 | # Worker specific setup for Rails 4.1+ 13 | # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot 14 | ActiveRecord::Base.establish_connection 15 | end 16 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/routes.rb: -------------------------------------------------------------------------------- 1 | Rails.application.routes.draw do 2 | 3 | require 'sidekiq/web' 4 | mount Sidekiq::Web => "/sidekiq" 5 | 6 | root to: "pages#homepage" 7 | 8 | get "/sales" => "sales#index", as: "sales_index" 9 | get "/sales/report" => "sales#report", as: "sales_report" 10 | 11 | end 12 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/secrets.yml: -------------------------------------------------------------------------------- 1 | development: 2 | secret_key_base: 104e4f8072ff65128e391823bbea412825843831224962cdcb8852eb7a2622a941e6e6537eb0a03b07eec96097cc876af08aa5cc776d51f210a4815ddb8434e4 3 | aws_access_key: <%= ENV["ABC_SANDBOX_AWS_ACCESS_KEY"] %> 4 | aws_secret_key: <%= ENV["ABC_SANDBOX_AWS_SECRET_KEY"] %> 5 | 6 | test: 7 | secret_key_base: cc7d576841aeb78013fec7d29adca8c7a8b6c0b992837c81798f324791ff930ec5eb36feeb35cbc4e45f9cc1f49d9d3aaafb8178191a2c18c909da69770d026e 8 | 9 | # Do not keep production secrets in the repository, 10 | # instead read values from the environment. 11 | production: 12 | secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 13 | aws_access_key: <%= ENV["ABC_SANDBOX_AWS_ACCESS_KEY"] %> 14 | aws_secret_key: <%= ENV["ABC_SANDBOX_AWS_SECRET_KEY"] %> 15 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/config/spring.rb: -------------------------------------------------------------------------------- 1 | %w( 2 | .ruby-version 3 | .rbenv-vars 4 | tmp/restart.txt 5 | tmp/caching-dev.txt 6 | ).each { |path| Spring.watch(path) } 7 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/db/development.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/db/development.sqlite3 -------------------------------------------------------------------------------- /background-processing/ExampleApp/db/seeds.rb: -------------------------------------------------------------------------------- 1 | # This file should contain all the record creation needed to seed the database with its default values. 2 | # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). 3 | # 4 | # Examples: 5 | # 6 | # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) 7 | # Character.create(name: 'Luke', movie: movies.first) 8 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/dump.rdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/dump.rdb -------------------------------------------------------------------------------- /background-processing/ExampleApp/lib/assets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/lib/assets/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/lib/tasks/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/lib/tasks/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/log/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/log/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The page you were looking for doesn't exist (404) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The page you were looking for doesn't exist.

62 |

You may have mistyped the address or the page may have moved.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/public/422.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The change you wanted was rejected (422) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The change you wanted was rejected.

62 |

Maybe you tried to change something you didn't have access to.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/public/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | We're sorry, but something went wrong (500) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

We're sorry, but something went wrong.

62 |
63 |

If you are the application owner check the logs for more information.

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/public/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/public/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /background-processing/ExampleApp/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/public/apple-touch-icon.png -------------------------------------------------------------------------------- /background-processing/ExampleApp/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/public/favicon.ico -------------------------------------------------------------------------------- /background-processing/ExampleApp/public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/controllers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/test/controllers/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/fixtures/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/test/fixtures/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/fixtures/files/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/test/fixtures/files/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/helpers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/test/helpers/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/integration/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/test/integration/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/mailers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/test/mailers/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/models/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/test/models/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/test/test_helper.rb: -------------------------------------------------------------------------------- 1 | ENV['RAILS_ENV'] ||= 'test' 2 | require File.expand_path('../../config/environment', __FILE__) 3 | require 'rails/test_help' 4 | 5 | class ActiveSupport::TestCase 6 | # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. 7 | fixtures :all 8 | 9 | # Add more helper methods to be used by all tests here... 10 | end 11 | -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/-e/-e0ECS-ooK0sochKTgf57H1oDsqEcx-PDi1eXT4_qc8.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/-e/-e0ECS-ooK0sochKTgf57H1oDsqEcx-PDi1eXT4_qc8.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/-n/-nNpe7s96U0iGld-nPMpDye902z-ifBm2XIMnRwfaMU.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/-n/-nNpe7s96U0iGld-nPMpDye902z-ifBm2XIMnRwfaMU.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/2e/2eAr534jXGX387s3X5h0Qwqo0b7U6r62S3x6WU-0R1k.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/2e/2eAr534jXGX387s3X5h0Qwqo0b7U6r62S3x6WU-0R1k.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/4a/4aWiDpuP3Xx86uMX2U3OC7UwJ-4H25xkTwtHdaWdcwk.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/4a/4aWiDpuP3Xx86uMX2U3OC7UwJ-4H25xkTwtHdaWdcwk.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/57/57Tq38Hsbpm1ZsrOZlp22SqFLwm9WIwF4zWy6UsBMeo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/57/57Tq38Hsbpm1ZsrOZlp22SqFLwm9WIwF4zWy6UsBMeo.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/5C/5Cz2SZfooz8vHZSRjuioeK8z-HYbUPaj8wx8Bbkx3-4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/5C/5Cz2SZfooz8vHZSRjuioeK8z-HYbUPaj8wx8Bbkx3-4.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/5Z/5ZfqjIcl34GiavyPtRbrmlym63GvR3G1OsOrp7C3Vtc.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/5Z/5ZfqjIcl34GiavyPtRbrmlym63GvR3G1OsOrp7C3Vtc.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/6O/6OM4eKWmyu8FP8ePoUbtvhdi-l6r99e2kGF0kAxXzr0.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/6O/6OM4eKWmyu8FP8ePoUbtvhdi-l6r99e2kGF0kAxXzr0.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/8k/8kcr07-k11ofJWEUPLi3K1EsSmA9CEEDNdKy0eRZJZU.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/8k/8kcr07-k11ofJWEUPLi3K1EsSmA9CEEDNdKy0eRZJZU.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/AQ/AQ1vkyf4o7ylnFLe_I9XkbVtqlV5r1Q6xFETgCdgHNM.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/AQ/AQ1vkyf4o7ylnFLe_I9XkbVtqlV5r1Q6xFETgCdgHNM.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Ac/AcAkg8U307aS6HD-FSMXui3N7RBbJImZ3f2QRT801vk.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Ac/AcAkg8U307aS6HD-FSMXui3N7RBbJImZ3f2QRT801vk.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Ah/Ah6cB36A7NhgovtgiAwhFoBvsQ-cO0Fg_H3_ymzHROo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Ah/Ah6cB36A7NhgovtgiAwhFoBvsQ-cO0Fg_H3_ymzHROo.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Ci/CiFq9DzhRfXRBt3TeGmumDxWjdNIf4pxv0pC53BWIAs.cache: -------------------------------------------------------------------------------- 1 | [o:Set: 2 | @hash{ 3 | I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"wfile-digest:///Users/AlwaysBCoding/.rvm/gems/ruby-2.2.2/gems/actioncable-5.0.0/lib/assets/compiled/action_cable.js;TT -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/DL/DLPb1Inxs2E5veB9tUyhAJLJfRwKJNBw9wQreVhC6Ys.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/DL/DLPb1Inxs2E5veB9tUyhAJLJfRwKJNBw9wQreVhC6Ys.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/DU/DUqDnReFIBxW72sAdVQ1xD6_mSy0WbalwBbQd0jUxFQ.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/DU/DUqDnReFIBxW72sAdVQ1xD6_mSy0WbalwBbQd0jUxFQ.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Eh/Eh1OipvnTuooommCKM7Frx1LAbiYewIs2ttP0infO_s.cache: -------------------------------------------------------------------------------- 1 | [o:Set: 2 | @hash{ 3 | I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"|file-digest:///Users/AlwaysBCoding/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.1.1/vendor/assets/javascripts/jquery_ujs.js;TT -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/GA/GAHjAcW18tNatNnAum9-_9XN8TyhYsSWAuqV_9JT_fo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/GA/GAHjAcW18tNatNnAum9-_9XN8TyhYsSWAuqV_9JT_fo.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Gz/GzPhHFHiZXvrJ00rOd21LsQ_DCdqv2DkLMksQ204Nms.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Gz/GzPhHFHiZXvrJ00rOd21LsQ_DCdqv2DkLMksQ204Nms.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/HS/HSXm-9jpI_ixWNaHTDoUO0FC8leXHbou4ba0vo4OEQU.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/HS/HSXm-9jpI_ixWNaHTDoUO0FC8leXHbou4ba0vo4OEQU.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Hk/HkxOsloR6ijj2336LgIP-shihoIDBMHxw2pRY89KEKw.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Hk/HkxOsloR6ijj2336LgIP-shihoIDBMHxw2pRY89KEKw.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Lf/Lf3kseTPrGqs8g72ezzM3S78Udcv8oTc6MFtQ7ATy7k.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Lf/Lf3kseTPrGqs8g72ezzM3S78Udcv8oTc6MFtQ7ATy7k.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Ls/Ls_YvC7bfIprxtq3lEmdkvGsYcruQsmAzo2q9hhPfsk.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Ls/Ls_YvC7bfIprxtq3lEmdkvGsYcruQsmAzo2q9hhPfsk.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/N5/N5p3-qmvJu_bYTsN3_LLcH3dKIAfLqgCtZBDHxbbVtM.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/N5/N5p3-qmvJu_bYTsN3_LLcH3dKIAfLqgCtZBDHxbbVtM.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Nu/NuWD2BA8D70_h1KwJd9kzY_iUjmUGKEyZQfaY5KXK2w.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Nu/NuWD2BA8D70_h1KwJd9kzY_iUjmUGKEyZQfaY5KXK2w.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Qt/Qtd466i3WdW7qq5RWSe6_7E6IPoD9LIGxhHp6EdzJgQ.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Qt/Qtd466i3WdW7qq5RWSe6_7E6IPoD9LIGxhHp6EdzJgQ.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/SJ/SJcxVQJV3vmlE5zeKLPxnjiGASHlT5CDZSBZ5epjcso.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/SJ/SJcxVQJV3vmlE5zeKLPxnjiGASHlT5CDZSBZ5epjcso.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/UF/UFu2YKqU1ArRqKuyi8P-yCnTtO0P_OaPf3n3EiOOq70.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/UF/UFu2YKqU1ArRqKuyi8P-yCnTtO0P_OaPf3n3EiOOq70.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/XS/XSoAQvB_lvIEGtQN5ze-VbeB7qvTkd2PIum9D01xJqk.cache: -------------------------------------------------------------------------------- 1 | [o:Set: 2 | @hash{ 3 | I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"xfile-digest:///Users/AlwaysBCoding/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.1.1/vendor/assets/javascripts/jquery.js;TT -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Xc/Xc2klhe_OBtCwaX7WPiQOr7ue6dEdMZDqz9UxkXSzvk.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/Xc/Xc2klhe_OBtCwaX7WPiQOr7ue6dEdMZDqz9UxkXSzvk.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ZY/ZYogV3v9tSXdYMo9zNszB06BywrrRbqJSmjD_nN8_hw.cache: -------------------------------------------------------------------------------- 1 | [o:Set: 2 | @hash{ 3 | I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"~file-digest:///Users/AlwaysBCoding/.rvm/gems/ruby-2.2.2/gems/turbolinks-source-5.0.0/lib/assets/javascripts/turbolinks.js;TT -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_B/_Be7WwuLRzBG72WHV5RyxYKJvdmhKX_vuv4ALuhakYU.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_B/_Be7WwuLRzBG72WHV5RyxYKJvdmhKX_vuv4ALuhakYU.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_M/_M02gJxatadj640TQWWZ9u6F2NT2WOczUBAsBdtJusM.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_M/_M02gJxatadj640TQWWZ9u6F2NT2WOczUBAsBdtJusM.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_R/_RA6cjJaQ9eQDqMy80KMHekWFHahhj9T8el-EC7F71M.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_R/_RA6cjJaQ9eQDqMy80KMHekWFHahhj9T8el-EC7F71M.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_i/_iC9ldvdH9eNOe7PeJtaXS7yD5fQOC8zf_OpTVjl_AE.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/_i/_iC9ldvdH9eNOe7PeJtaXS7yD5fQOC8zf_OpTVjl_AE.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ad/adJSEZJVJYhtHvpEUZqbmIR3jIbpRe4-CpRxp9cJ4sQ.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ad/adJSEZJVJYhtHvpEUZqbmIR3jIbpRe4-CpRxp9cJ4sQ.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ch/chv6Lh3x13vaGwSMya5058JeF66EzUA3-AYTkqw2ID4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ch/chv6Lh3x13vaGwSMya5058JeF66EzUA3-AYTkqw2ID4.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/cx/cxns4PJpMXGGfe7QVjxN9ZHJXvb4iBtp1RKkbJhSCAI.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/cx/cxns4PJpMXGGfe7QVjxN9ZHJXvb4iBtp1RKkbJhSCAI.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/dV/dVfldJyMesrS-VsZrgEUpVXY5i-pS1v83WV1p4vbzUc.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/dV/dVfldJyMesrS-VsZrgEUpVXY5i-pS1v83WV1p4vbzUc.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ds/dszcTK7gUTS0j1ELnWFBpwxAf3TUXXAAWo_1iT9k3uE.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ds/dszcTK7gUTS0j1ELnWFBpwxAf3TUXXAAWo_1iT9k3uE.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/i2/i2QwM0__LPkbJZv1QKyE4AXJXd67kYoUIgVSzCZ_uGc.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/i2/i2QwM0__LPkbJZv1QKyE4AXJXd67kYoUIgVSzCZ_uGc.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/jV/jVKf_Mgq6XreiiFR5_0laLBWaSrXnvvTJx8N0cciPKg.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/jV/jVKf_Mgq6XreiiFR5_0laLBWaSrXnvvTJx8N0cciPKg.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/kS/kSJTqW2HoMSbifyleubBY9Pu50EsVekrBI_hBpVXa3o.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/kS/kSJTqW2HoMSbifyleubBY9Pu50EsVekrBI_hBpVXa3o.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/kT/kTkjdgL0-F8hspo9Jj7h6LQdoCmH3Vdf5od1mf_B6-4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/kT/kTkjdgL0-F8hspo9Jj7h6LQdoCmH3Vdf5od1mf_B6-4.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/n-/n--7XWSPCnT9DgjJvO70jaqg6KeGw8tEYBtnOXnJris.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/n-/n--7XWSPCnT9DgjJvO70jaqg6KeGw8tEYBtnOXnJris.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/pU/pU8CjjjoDNAEwaH73B9mr9Ls0BulSxPhW8pTKMP5hR4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/pU/pU8CjjjoDNAEwaH73B9mr9Ls0BulSxPhW8pTKMP5hR4.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ql/ql5KbnHNT6pHDIAt4X0T5edyeCsGtTsghSkJCCO4z9s.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ql/ql5KbnHNT6pHDIAt4X0T5edyeCsGtTsghSkJCCO4z9s.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ra/rapd9mwwhj4fkZGp2svxw5CM0ZpEBauMLqgEbwJcJrQ.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ra/rapd9mwwhj4fkZGp2svxw5CM0ZpEBauMLqgEbwJcJrQ.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/rc/rc8a2psqDvSV_L5rXHV0dULtz0PKp1_GQKicf3JgOMw.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/rc/rc8a2psqDvSV_L5rXHV0dULtz0PKp1_GQKicf3JgOMw.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/sx/sxZXLEzAfDTD9l9L5QsjuJdPCbRZt_qVmtstqM_wO04.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/sx/sxZXLEzAfDTD9l9L5QsjuJdPCbRZt_qVmtstqM_wO04.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/uU/uUoSEcKX2S413t9Tx8TOpXtJIV3CI1fkOqjhEpNJh1o.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/uU/uUoSEcKX2S413t9Tx8TOpXtJIV3CI1fkOqjhEpNJh1o.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/uk/uk5YNd0CvhiIJ88Ofvran7afMKCV00D7BaMwUvyG_Dw.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/uk/uk5YNd0CvhiIJ88Ofvran7afMKCV00D7BaMwUvyG_Dw.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/vQ/vQGPjUQZjagLZ7uNecevwrgjgoyXKulePMIw1xmpWw0.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/vQ/vQGPjUQZjagLZ7uNecevwrgjgoyXKulePMIw1xmpWw0.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/xL/xLQKHLwVVnvdj7oT8LLwv5fgfEFkdCOfOoLjGEZGPGA.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/xL/xLQKHLwVVnvdj7oT8LLwv5fgfEFkdCOfOoLjGEZGPGA.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/y4/y4IesAEmLz_DPEO5YvoG4nyBpFYE0e7OG2245Si0F18.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/y4/y4IesAEmLz_DPEO5YvoG4nyBpFYE0e7OG2245Si0F18.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ys/ysijhNRcEk4Mqznymt8nJahmTMZhDZ-1uidlIoZn7hA.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/cache/assets/sprockets/v3.0/ys/ysijhNRcEk4Mqznymt8nJahmTMZhDZ-1uidlIoZn7hA.cache -------------------------------------------------------------------------------- /background-processing/ExampleApp/tmp/restart.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/tmp/restart.txt -------------------------------------------------------------------------------- /background-processing/ExampleApp/vendor/assets/javascripts/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/vendor/assets/javascripts/.keep -------------------------------------------------------------------------------- /background-processing/ExampleApp/vendor/assets/stylesheets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/background-processing/ExampleApp/vendor/assets/stylesheets/.keep -------------------------------------------------------------------------------- /clojurescript/helloworld/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /classes 3 | /checkouts 4 | pom.xml 5 | pom.xml.asc 6 | *.jar 7 | *.class 8 | /.lein-* 9 | /.nrepl-port 10 | -------------------------------------------------------------------------------- /clojurescript/helloworld/README.md: -------------------------------------------------------------------------------- 1 | # helloworld 2 | 3 | A Clojure library designed to ... well, that part is up to you. 4 | 5 | ## Usage 6 | 7 | FIXME 8 | 9 | ## License 10 | 11 | Copyright © 2016 FIXME 12 | 13 | Distributed under the Eclipse Public License either version 1.0 or (at 14 | your option) any later version. 15 | -------------------------------------------------------------------------------- /clojurescript/helloworld/doc/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction to helloworld 2 | 3 | TODO: write [great documentation](http://jacobian.org/writing/what-to-write/) 4 | -------------------------------------------------------------------------------- /clojurescript/helloworld/project.clj: -------------------------------------------------------------------------------- 1 | (defproject helloworld "0.1.0-SNAPSHOT" 2 | 3 | :description "FIXME: write description" 4 | 5 | :url "http://example.com/FIXME" 6 | 7 | :license {:name "Eclipse Public License" 8 | :url "http://www.eclipse.org/legal/epl-v10.html"} 9 | 10 | :main helloworld.core 11 | 12 | :cljsbuild {:builds [{:id "dev" 13 | :source-paths ["src"] 14 | :figwheel true 15 | :compiler 16 | {:optimizations :none 17 | :output-to "resources/public/javascripts/dev.js" 18 | :output-dir "resources/public/javascripts/cljs-dev/" 19 | :pretty-print true 20 | :source-map true}}]} 21 | 22 | :plugins [[lein-cljsbuild "1.0.6"] 23 | [lein-figwheel "0.3.7"]] 24 | 25 | 26 | :figwheel {:css-dirs ["resources/public/stylesheets"]} 27 | 28 | 29 | :dependencies [[org.clojure/clojure "1.7.0"] 30 | [org.clojure/clojurescript "0.0-3308"] 31 | [reagent "0.5.0"] 32 | [org.clojure/core.async "0.1.346.0-17112a-alpha"]]) 33 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/cljs/core/async/impl/dispatch.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs.core.async.impl.dispatch 2 | (:require [cljs.core.async.impl.buffers :as buffers] 3 | [goog.async.nextTick])) 4 | 5 | (def tasks (buffers/ring-buffer 32)) 6 | (def running? false) 7 | (def queued? false) 8 | 9 | (def TASK_BATCH_SIZE 1024) 10 | 11 | (declare queue-dispatcher) 12 | 13 | (defn process-messages [] 14 | (set! running? true) 15 | (set! queued? false) 16 | (loop [count 0] 17 | (let [m (.pop tasks)] 18 | (when-not (nil? m) 19 | (m) 20 | (when (< count TASK_BATCH_SIZE) 21 | (recur (inc count)))))) 22 | (set! running? false) 23 | (when (> (.-length tasks) 0) 24 | (queue-dispatcher))) 25 | 26 | (defn queue-dispatcher [] 27 | (when-not (and queued? running?) 28 | (set! queued? true) 29 | (goog.async.nextTick process-messages))) 30 | 31 | (defn run [f] 32 | (.unbounded-unshift tasks f) 33 | (queue-dispatcher)) 34 | 35 | (defn queue-delay [f delay] 36 | (js/setTimeout f delay)) 37 | 38 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/cljs/core/async/impl/dispatch.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"\/Users\/AlwaysBCoding\/Desktop\/Always%20Be%20Coding\/clojurescript\/helloworld\/resources\/public\/javascripts\/cljs-dev\/cljs\/core\/async\/impl\/dispatch.js","sources":["dispatch.cljs"],"lineCount":64,"mappings":";AAAA;;;;AAIA,AAAKA,sCAAM,mDAAA,nDAACC;AACZ,+CAAA,\/CAAKC;AACL,8CAAA,9CAAKC;AAEL,gDAAA,hDAAKC;AAEL,AAAA,AAEA,iDAAA,jDAAMC;AAAN,AACE,+CAAA,\/CAAMH;;AACN,8CAAA,9CAAMC;;AACN,kBAAA,dAAOG;;AAAP,AACE,IAAMC,UAAE,AAAMP;AAAd,AACE,GAAU,YAAA,XAAMO;AAAhB;AAAA,AACE,AAACA;;AACD,GAAM,CAAGD,cAAMF;AAAf,AACE,eAAO,eAAA,dAAKE;;;;AADd;;;;;AAEN,+CAAA,\/CAAMJ;;AACN,GAAM,8CAAA,7CAAG,AAAUF;AAAnB,AACE,OAACQ;;AADH;;;AAGF,iDAAA,jDAAMA;AAAN,AACE,oBAAU,iBAAAC,oBAAKN;AAAL,AAAA,oBAAAM;AAAaP;;AAAbO;;;AAAV;;AAAA,AACE,8CAAA,9CAAMN;;AACN,OAACO,oBAAoBL;;;AAEzB,oCAAA,pCAAMM,gFAAKC;AAAX,AACE,AAAoBZ,sDAAMY;;AAC1B,OAACJ;;AAEH,4CAAA,5CAAMK,gGAAaD,EAAEE;AAArB,AACE,OAACC,WAAcH,EAAEE","names":["cljs.core.async.impl.dispatch\/tasks","cljs.core.async.impl.buffers\/ring-buffer","cljs.core.async.impl.dispatch\/running?","cljs.core.async.impl.dispatch\/queued?","cljs.core.async.impl.dispatch\/TASK_BATCH_SIZE","cljs.core.async.impl.dispatch\/process-messages","count","m","cljs.core.async.impl.dispatch\/queue-dispatcher","and__4297__auto__","goog\/async.nextTick","cljs.core.async.impl.dispatch\/run","f","cljs.core.async.impl.dispatch\/queue-delay","delay","js\/setTimeout"]} -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/cljs/core/async/impl/protocols.cljs: -------------------------------------------------------------------------------- 1 | ;; Copyright (c) Rich Hickey and contributors. All rights reserved. 2 | ;; The use and distribution terms for this software are covered by the 3 | ;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) 4 | ;; which can be found in the file epl-v10.html at the root of this distribution. 5 | ;; By using this software in any fashion, you are agreeing to be bound by 6 | ;; the terms of this license. 7 | ;; You must not remove this notice, or any other, from this software. 8 | 9 | (ns cljs.core.async.impl.protocols) 10 | 11 | (def ^:const MAX-QUEUE-SIZE 1024) 12 | 13 | (defprotocol ReadPort 14 | (take! [port fn1-handler] "derefable val if taken, nil if take was enqueued")) 15 | 16 | (defprotocol WritePort 17 | (put! [port val fn1-handler] "derefable boolean (false if already closed) if handled, nil if put was enqueued. 18 | Must throw on nil val.")) 19 | 20 | (defprotocol Channel 21 | (close! [chan]) 22 | (closed? [chan])) 23 | 24 | (defprotocol Handler 25 | (active? [h] "returns true if has callback. Must work w/o lock") 26 | #_(lock-id [h] "a unique id for lock acquisition order, 0 if no lock") 27 | (commit [h] "commit to fulfilling its end of the transfer, returns cb. Must be called within lock")) 28 | 29 | (defprotocol Buffer 30 | (full? [b]) 31 | (remove! [b]) 32 | (add!* [b itm])) 33 | 34 | (defn add! 35 | ([b] b) 36 | ([b itm] 37 | (assert (not (nil? itm))) 38 | (add!* b itm))) 39 | 40 | ;; Defines a buffer that will never block (return true to full?) 41 | (defprotocol UnblockingBuffer) 42 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/cljs/repl.cljs: -------------------------------------------------------------------------------- 1 | ;; Copyright (c) Rich Hickey. All rights reserved. 2 | ;; The use and distribution terms for this software are covered by the 3 | ;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) 4 | ;; which can be found in the file epl-v10.html at the root of this distribution. 5 | ;; By using this software in any fashion, you are agreeing to be bound by 6 | ;; the terms of this license. 7 | ;; You must not remove this notice, or any other, from this software. 8 | 9 | (ns cljs.repl 10 | (:require-macros cljs.repl)) 11 | 12 | (defn print-doc [m] 13 | (println "-------------------------") 14 | (println (str (when-let [ns (:ns m)] (str ns "/")) (:name m))) 15 | (when (:protocol m) 16 | (println "Protocol")) 17 | (cond 18 | (:forms m) (doseq [f (:forms m)] 19 | (println " " f)) 20 | (:arglists m) (let [arglists (:arglists m)] 21 | (if (or (:macro m) 22 | (:repl-special-function m)) 23 | (prn arglists) 24 | (prn 25 | (if (= 'quote (first arglists)) 26 | (second arglists) 27 | arglists))))) 28 | (if (:special-form m) 29 | (do 30 | (println "Special Form") 31 | (println " " (:doc m)) 32 | (if (contains? m :url) 33 | (when (:url m) 34 | (println (str "\n Please see http://clojure.org/" (:url m)))) 35 | (println (str "\n Please see http://clojure.org/special_forms#" 36 | (:name m))))) 37 | (do 38 | (when (:macro m) 39 | (println "Macro")) 40 | (when (:repl-special-function m) 41 | (println "REPL Special Function")) 42 | (println " " (:doc m)) 43 | (when (:protocol m) 44 | (doseq [[name {:keys [doc arglists]}] (:methods m)] 45 | (println) 46 | (println " " name) 47 | (println " " arglists) 48 | (when doc 49 | (println " " doc))))))) 50 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/cljs/repl.cljs.cache.edn: -------------------------------------------------------------------------------- 1 | ;; Analyzed by ClojureScript 0.0-3308 2 | {:use-macros nil, :excludes #{}, :name cljs.repl, :imports nil, :requires nil, :uses nil, :defs {print-doc {:protocol-inline nil, :meta {:file "/Users/AlwaysBCoding/Desktop/Always Be Coding/clojurescript/helloworld/resources/public/javascripts/cljs-dev/cljs/repl.cljs", :line 12, :column 7, :end-line 12, :end-column 16, :arglists (quote ([m]))}, :name cljs.repl/print-doc, :variadic false, :file "resources/public/javascripts/cljs-dev/cljs/repl.cljs", :end-column 16, :method-params ([m]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 12, :end-line 12, :max-fixed-arity 1, :fn-var true, :arglists (quote ([m]))}}, :require-macros {cljs.repl cljs.repl}, :cljs.analyzer/constants {:seen #{:protocol :ns :name :special-form :repl-special-function :methods :macro :url :arglists :doc :forms}, :order [:ns :name :protocol :forms :arglists :macro :repl-special-function :special-form :doc :url :methods]}, :doc nil} -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/figwheel/client/utils.cljs: -------------------------------------------------------------------------------- 1 | (ns ^:figwheel-no-load figwheel.client.utils 2 | (:require [clojure.string :as string]) 3 | (:import [goog])) 4 | 5 | ;; don't auto reload this file it will mess up the debug printing 6 | 7 | (def ^:dynamic *print-debug* false) 8 | 9 | (defn html-env? [] (goog/inHtmlDocument_)) 10 | 11 | (defn node-env? [] (not (nil? goog/nodeGlobalRequire))) 12 | 13 | (defn base-url-path [] (string/replace goog/basePath #"(.*)goog/" #(str %2))) 14 | 15 | (defn host-env? [] 16 | (cond 17 | (node-env?) :node 18 | :else :html)) 19 | 20 | (defn dispatch-custom-event [event-name data] 21 | (when (and (html-env?) (aget js/window "CustomEvent")) 22 | (.dispatchEvent (.-body js/document) 23 | (js/CustomEvent. event-name 24 | (js-obj "detail" data))))) 25 | 26 | (defn debug-prn [o] 27 | (when *print-debug* 28 | (let [o (if (or (map? o) 29 | (seq? o)) 30 | (prn-str o) 31 | o)] 32 | (.log js/console o)))) 33 | 34 | (defn log 35 | ([x] (log :info x)) 36 | ([level arg] 37 | (let [f (condp = (if (html-env?) level :info) 38 | :warn #(.warn js/console %) 39 | :debug #(.debug js/console %) 40 | :error #(.error js/console %) 41 | #(.log js/console %))] 42 | (f arg)))) 43 | 44 | (defn eval-helper [code {:keys [eval-fn] :as opts}] 45 | (if eval-fn 46 | (eval-fn code opts) 47 | (js* "eval(~{code})"))) -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/figwheel/connect.cljs: -------------------------------------------------------------------------------- 1 | (ns figwheel.connect (:require [figwheel.client] [figwheel.client.utils])) 2 | (figwheel.client/start {:build-id "dev", :websocket-url "ws://localhost:3449/figwheel-ws"}) 3 | 4 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/figwheel/connect.cljs.cache.edn: -------------------------------------------------------------------------------- 1 | ;; Analyzed by ClojureScript 0.0-3308 2 | {:name figwheel.connect, :doc nil, :excludes #{}, :use-macros nil, :require-macros nil, :uses nil, :requires {figwheel.client figwheel.client, figwheel.client.utils figwheel.client.utils}, :imports nil, :cljs.analyzer/constants {:seen #{:build-id :websocket-url}, :order [:build-id :websocket-url]}} -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/figwheel/connect.js: -------------------------------------------------------------------------------- 1 | // Compiled by ClojureScript 0.0-3308 {} 2 | goog.provide('figwheel.connect'); 3 | goog.require('cljs.core'); 4 | goog.require('figwheel.client'); 5 | goog.require('figwheel.client.utils'); 6 | figwheel.client.start.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"build-id","build-id",1642831089),"dev",new cljs.core.Keyword(null,"websocket-url","websocket-url",-490444938),"ws://localhost:3449/figwheel-ws"], null)); 7 | 8 | //# sourceMappingURL=connect.js.map -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/figwheel/connect.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"\/Users\/AlwaysBCoding\/Desktop\/Always%20Be%20Coding\/clojurescript\/helloworld\/resources\/public\/javascripts\/cljs-dev\/figwheel\/connect.js","sources":["connect.cljs"],"lineCount":8,"mappings":";AAAA;;;;AACA,gCAAA,2CAAA,6DAAA,MAAA,uEAAA,rNAACA","names":["figwheel.client\/start"]} -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/goog/dom/nodetype.js: -------------------------------------------------------------------------------- 1 | // Copyright 2006 The Closure Library Authors. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS-IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /** 16 | * @fileoverview Definition of goog.dom.NodeType. 17 | */ 18 | 19 | goog.provide('goog.dom.NodeType'); 20 | 21 | 22 | /** 23 | * Constants for the nodeType attribute in the Node interface. 24 | * 25 | * These constants match those specified in the Node interface. These are 26 | * usually present on the Node object in recent browsers, but not in older 27 | * browsers (specifically, early IEs) and thus are given here. 28 | * 29 | * In some browsers (early IEs), these are not defined on the Node object, 30 | * so they are provided here. 31 | * 32 | * See http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247 33 | * @enum {number} 34 | */ 35 | goog.dom.NodeType = { 36 | ELEMENT: 1, 37 | ATTRIBUTE: 2, 38 | TEXT: 3, 39 | CDATA_SECTION: 4, 40 | ENTITY_REFERENCE: 5, 41 | ENTITY: 6, 42 | PROCESSING_INSTRUCTION: 7, 43 | COMMENT: 8, 44 | DOCUMENT: 9, 45 | DOCUMENT_TYPE: 10, 46 | DOCUMENT_FRAGMENT: 11, 47 | NOTATION: 12 48 | }; 49 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/goog/dom/tags.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Closure Library Authors. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS-IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /** 16 | * @fileoverview Utilities for HTML element tag names. 17 | */ 18 | goog.provide('goog.dom.tags'); 19 | 20 | goog.require('goog.object'); 21 | 22 | 23 | /** 24 | * The void elements specified by 25 | * http://www.w3.org/TR/html-markup/syntax.html#void-elements. 26 | * @const 27 | * @type {!Object} 28 | * @private 29 | */ 30 | goog.dom.tags.VOID_TAGS_ = goog.object.createSet(('area,base,br,col,command,' + 31 | 'embed,hr,img,input,keygen,link,meta,param,source,track,wbr').split(',')); 32 | 33 | 34 | /** 35 | * Checks whether the tag is void (with no contents allowed and no legal end 36 | * tag), for example 'br'. 37 | * @param {string} tagName The tag name in lower case. 38 | * @return {boolean} 39 | */ 40 | goog.dom.tags.isVoidTag = function(tagName) { 41 | return goog.dom.tags.VOID_TAGS_[tagName] === true; 42 | }; 43 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/goog/promise/resolver.js: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Closure Library Authors. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS-IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | goog.provide('goog.promise.Resolver'); 16 | 17 | 18 | 19 | /** 20 | * Resolver interface for promises. The resolver is a convenience interface that 21 | * bundles the promise and its associated resolve and reject functions together, 22 | * for cases where the resolver needs to be persisted internally. 23 | * 24 | * @interface 25 | * @template TYPE 26 | */ 27 | goog.promise.Resolver = function() {}; 28 | 29 | 30 | /** 31 | * The promise that created this resolver. 32 | * @type {!goog.Promise} 33 | */ 34 | goog.promise.Resolver.prototype.promise; 35 | 36 | 37 | /** 38 | * Resolves this resolver with the specified value. 39 | * @type {function((TYPE|goog.Promise|Thenable)=)} 40 | */ 41 | goog.promise.Resolver.prototype.resolve; 42 | 43 | 44 | /** 45 | * Rejects this resolver with the specified reason. 46 | * @type {function(*=): void} 47 | */ 48 | goog.promise.Resolver.prototype.reject; 49 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/goog/string/typedstring.js: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Closure Library Authors. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS-IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | goog.provide('goog.string.TypedString'); 16 | 17 | 18 | 19 | /** 20 | * Wrapper for strings that conform to a data type or language. 21 | * 22 | * Implementations of this interface are wrappers for strings, and typically 23 | * associate a type contract with the wrapped string. Concrete implementations 24 | * of this interface may choose to implement additional run-time type checking, 25 | * see for example {@code goog.html.SafeHtml}. If available, client code that 26 | * needs to ensure type membership of an object should use the type's function 27 | * to assert type membership, such as {@code goog.html.SafeHtml.unwrap}. 28 | * @interface 29 | */ 30 | goog.string.TypedString = function() {}; 31 | 32 | 33 | /** 34 | * Interface marker of the TypedString interface. 35 | * 36 | * This property can be used to determine at runtime whether or not an object 37 | * implements this interface. All implementations of this interface set this 38 | * property to {@code true}. 39 | * @type {boolean} 40 | */ 41 | goog.string.TypedString.prototype.implementsGoogStringTypedString; 42 | 43 | 44 | /** 45 | * Retrieves this wrapped string's value. 46 | * @return {!string} The wrapped string's value. 47 | */ 48 | goog.string.TypedString.prototype.getTypedStringValue; 49 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/goog/testing/watchers.js: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Closure Library Authors. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS-IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /** 16 | * @fileoverview Simple notifiers for the Closure testing framework. 17 | * 18 | * @author johnlenz@google.com (John Lenz) 19 | */ 20 | 21 | goog.provide('goog.testing.watchers'); 22 | 23 | 24 | /** @private {!Array} */ 25 | goog.testing.watchers.resetWatchers_ = []; 26 | 27 | 28 | /** 29 | * Fires clock reset watching functions. 30 | */ 31 | goog.testing.watchers.signalClockReset = function() { 32 | var watchers = goog.testing.watchers.resetWatchers_; 33 | for (var i = 0; i < watchers.length; i++) { 34 | goog.testing.watchers.resetWatchers_[i](); 35 | } 36 | }; 37 | 38 | 39 | /** 40 | * Enqueues a function to be called when the clock used for setTimeout is reset. 41 | * @param {function()} fn 42 | */ 43 | goog.testing.watchers.watchClockReset = function(fn) { 44 | goog.testing.watchers.resetWatchers_.push(fn); 45 | }; 46 | 47 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/helloworld/core.cljc: -------------------------------------------------------------------------------- 1 | (ns helloworld.core 2 | #?(:cljs (:require [reagent.core :as reagent]))) 3 | 4 | (defn multiply-numbers [x y] 5 | (* x x)) 6 | 7 | (defn say-hello [] 8 | #?(:cljs (js/console.log js/React))) 9 | -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/helloworld/core.cljc.cache.edn: -------------------------------------------------------------------------------- 1 | ;; Analyzed by ClojureScript 0.0-3308 2 | {:name helloworld.core, :doc nil, :excludes #{}, :use-macros nil, :require-macros nil, :uses nil, :requires {reagent reagent.core, reagent.core reagent.core}, :imports nil, :defs {multiply-numbers {:protocol-inline nil, :meta {:file "/Users/AlwaysBCoding/Desktop/Always Be Coding/clojurescript/helloworld/src/helloworld/core.cljc", :line 4, :column 7, :end-line 4, :end-column 23, :arglists (quote ([x y]))}, :name helloworld.core/multiply-numbers, :variadic false, :file "src/helloworld/core.cljc", :end-column 23, :method-params ([x y]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 4, :end-line 4, :max-fixed-arity 2, :fn-var true, :arglists (quote ([x y]))}, say-hello {:protocol-inline nil, :meta {:file "/Users/AlwaysBCoding/Desktop/Always Be Coding/clojurescript/helloworld/src/helloworld/core.cljc", :line 7, :column 7, :end-line 7, :end-column 16, :arglists (quote ([]))}, :name helloworld.core/say-hello, :variadic false, :file "src/helloworld/core.cljc", :end-column 16, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 7, :end-line 7, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}}} -------------------------------------------------------------------------------- /clojurescript/helloworld/resources/public/javascripts/cljs-dev/helloworld/core.cljs: -------------------------------------------------------------------------------- 1 | (ns helloworld.core 2 | (:require-macros [cljs.core.async.macros :refer (go)]) 3 | (:require [reagent.core :as reagent] 4 | [helloworld.title :refer (items-list)] 5 | [cljs.core.async :refer (chan put! Hello Docker HTML, nginx UPDATED! 2 | -------------------------------------------------------------------------------- /docker/notes: -------------------------------------------------------------------------------- 1 | 1. make a Dockerfile 2 | 2. build a container from the Dockerfile 3 | 3. run the newly built container to test locally 4 | 4. push that container to Docker Hub 5 | 6 | NEXT: 7 | 5. setup ECS on Amazon (ECS = Elastic Container Service) 8 | 9 | -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle.zip -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/argparse-1.2.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/argparse-1.2.1.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/awscli-1.10.12.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/awscli-1.10.12.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/botocore-1.4.3.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/botocore-1.4.3.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/colorama-0.3.3.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/colorama-0.3.3.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/docutils-0.12.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/docutils-0.12.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/futures-3.0.5.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/futures-3.0.5.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/jmespath-0.9.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/jmespath-0.9.0.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/ordereddict-1.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/ordereddict-1.1.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/pyasn1-0.1.9.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/pyasn1-0.1.9.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/python-dateutil-2.5.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/python-dateutil-2.5.0.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/rsa-3.3.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/rsa-3.3.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/s3transfer-0.0.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/s3transfer-0.0.1.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/simplejson-3.3.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/simplejson-3.3.0.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/six-1.10.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/six-1.10.0.tar.gz -------------------------------------------------------------------------------- /docker/tmp/awscli-bundle/packages/virtualenv-13.0.3.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/docker/tmp/awscli-bundle/packages/virtualenv-13.0.3.tar.gz -------------------------------------------------------------------------------- /react-part-2/simple/.sass-cache/9c37f3ad21fa5a015e111d5ea5db45ef93c694ba/app.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/react-part-2/simple/.sass-cache/9c37f3ad21fa5a015e111d5ea5db45ef93c694ba/app.scssc -------------------------------------------------------------------------------- /react-part-2/simple/Procfile: -------------------------------------------------------------------------------- 1 | web: node index.js 2 | -------------------------------------------------------------------------------- /react-part-2/simple/app/build/asset-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "main.css": "static/css/main.9a0fe4f1.css", 3 | "main.css.map": "static/css/main.9a0fe4f1.css.map", 4 | "main.js": "static/js/main.5cf84b5c.js", 5 | "main.js.map": "static/js/main.5cf84b5c.js.map", 6 | "static/media/logo.svg": "static/media/logo.5d5d9eef.svg" 7 | } -------------------------------------------------------------------------------- /react-part-2/simple/app/build/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/react-part-2/simple/app/build/favicon.ico -------------------------------------------------------------------------------- /react-part-2/simple/app/build/index.html: -------------------------------------------------------------------------------- 1 | React App
2 | -------------------------------------------------------------------------------- /react-part-2/simple/app/build/static/css/main.9a0fe4f1.css: -------------------------------------------------------------------------------- 1 | .App{text-align:center}.App-logo{-webkit-animation:App-logo-spin infinite 20s linear;animation:App-logo-spin infinite 20s linear;height:80px}.App-header{background-color:#222;height:150px;padding:20px;color:#fff}.App-intro{font-size:large}@-webkit-keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}body{margin:0;padding:0;font-family:sans-serif} 2 | /*# sourceMappingURL=main.9a0fe4f1.css.map*/ -------------------------------------------------------------------------------- /react-part-2/simple/app/build/static/css/main.9a0fe4f1.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"static/css/main.9a0fe4f1.css","sourceRoot":""} -------------------------------------------------------------------------------- /react-part-2/simple/build/asset-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "main.css": "static/css/main.9a0fe4f1.css", 3 | "main.css.map": "static/css/main.9a0fe4f1.css.map", 4 | "main.js": "static/js/main.5cf84b5c.js", 5 | "main.js.map": "static/js/main.5cf84b5c.js.map", 6 | "static/media/logo.svg": "static/media/logo.5d5d9eef.svg" 7 | } -------------------------------------------------------------------------------- /react-part-2/simple/build/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/react-part-2/simple/build/favicon.ico -------------------------------------------------------------------------------- /react-part-2/simple/build/index.html: -------------------------------------------------------------------------------- 1 | React App
-------------------------------------------------------------------------------- /react-part-2/simple/build/static/css/main.9a0fe4f1.css: -------------------------------------------------------------------------------- 1 | .App{text-align:center}.App-logo{-webkit-animation:App-logo-spin infinite 20s linear;animation:App-logo-spin infinite 20s linear;height:80px}.App-header{background-color:#222;height:150px;padding:20px;color:#fff}.App-intro{font-size:large}@-webkit-keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}body{margin:0;padding:0;font-family:sans-serif} 2 | /*# sourceMappingURL=main.9a0fe4f1.css.map*/ -------------------------------------------------------------------------------- /react-part-2/simple/build/static/css/main.9a0fe4f1.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"static/css/main.9a0fe4f1.css","sourceRoot":""} -------------------------------------------------------------------------------- /react-part-2/simple/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express') 2 | var app = express() 3 | 4 | app.set('port', (process.env.PORT || 3000)) 5 | 6 | app.use(express.static(__dirname + '/build')) 7 | 8 | app.get('*', function(request, response) { 9 | response.sendFile(__dirname + '/build/index.html') 10 | }) 11 | 12 | app.listen(app.get('port'), function() { 13 | console.log("Express server started on port", app.get('port')) 14 | }) 15 | -------------------------------------------------------------------------------- /react-part-2/simple/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple", 3 | "version": "0.0.1", 4 | "private": true, 5 | "devDependencies": { 6 | "react-scripts": "0.9.5" 7 | }, 8 | "dependencies": { 9 | "events": "^1.1.1", 10 | "express": "^4.15.2", 11 | "history": "^2.0.1", 12 | "lodash": "^4.17.4", 13 | "q": "^1.5.0", 14 | "react": "^15.5.3", 15 | "react-dom": "^15.5.3", 16 | "react-router": "^2.0.0" 17 | }, 18 | "scripts": { 19 | "start": "react-scripts start", 20 | "build": "react-scripts build", 21 | "test": "react-scripts test --env=jsdom", 22 | "eject": "react-scripts eject" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /react-part-2/simple/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/react-part-2/simple/public/favicon.ico -------------------------------------------------------------------------------- /react-part-2/simple/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 16 | React App 17 | 18 | 19 |
20 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /react-part-2/simple/src/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | 11 | # misc 12 | .DS_Store 13 | .env 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | 18 | -------------------------------------------------------------------------------- /react-part-2/simple/src/components/Nav.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import { Link } from 'react-router' 3 | 4 | class Nav extends Component { 5 | 6 | constructor(props) { 7 | super(props) 8 | this.state = { 9 | 10 | } 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
18 | Screen1 19 |
20 |
22 | Screen2 23 |
24 |
26 | Screen3 27 |
28 |
29 | ) 30 | } 31 | 32 | } 33 | 34 | module.exports = Nav 35 | -------------------------------------------------------------------------------- /react-part-2/simple/src/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Router, Route, IndexRoute, browserHistory, Link } from 'react-router' 4 | import Nav from './components/Nav' 5 | import { EventEmitter } from 'events' 6 | import Screen1 from './screens/Screen1' 7 | import Screen2 from './screens/Screen2' 8 | import Screen3 from './screens/Screen3' 9 | import './styles/app.css'; 10 | 11 | class App extends Component { 12 | 13 | constructor(props) { 14 | super(props) 15 | this.state = { 16 | screenIndex: 1 17 | } 18 | } 19 | 20 | componentWillMount() { 21 | this.eventEmitter = new EventEmitter() 22 | 23 | this.eventEmitter.addListener("navigateScreen", ({screenIndex}) => { 24 | this.updateScreen({newScreenIndex: screenIndex}) 25 | }) 26 | } 27 | 28 | updateScreen({newScreenIndex}) { 29 | this.setState({screenIndex: newScreenIndex}) 30 | } 31 | 32 | render() { 33 | return ( 34 |
35 |
36 |
37 |
46 | 47 |
48 | ) 49 | } 50 | 51 | } 52 | 53 | ReactDOM.render( 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | , 62 | document.getElementById('root') 63 | ); 64 | -------------------------------------------------------------------------------- /react-part-2/simple/src/screens/Screen1.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | 3 | class Screen1 extends Component { 4 | 5 | componentWillMount() { 6 | this.props.eventEmitter.emit("navigateScreen", {screenIndex: 1}) 7 | } 8 | 9 | render() { 10 | return ( 11 |
12 |

SCREEN 1 DATA

13 |
14 | ) 15 | } 16 | 17 | } 18 | 19 | module.exports = Screen1 20 | -------------------------------------------------------------------------------- /react-part-2/simple/src/screens/Screen2.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import EtherService from '../services/EtherService' 3 | import _ from 'lodash' 4 | 5 | class Screen2 extends Component { 6 | 7 | constructor(props) { 8 | super(props) 9 | this.state = { 10 | etherPrices: [] 11 | } 12 | } 13 | 14 | componentWillMount() { 15 | this.props.eventEmitter.emit("navigateScreen", {screenIndex: 2}) 16 | 17 | EtherService.getEtherPrice() 18 | .then((data) => { 19 | this.setState({etherPrices: data}) 20 | }) 21 | } 22 | 23 | render() { 24 | var TableRows = [] 25 | 26 | _.each(this.state.etherPrices, (etherPrice) => { 27 | TableRows.push( 28 | 29 | {etherPrice.day} 30 | {etherPrice.price} 31 | 32 | ) 33 | }) 34 | 35 | return ( 36 |
37 |

SCREEN 2 DATA

38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | {TableRows} 47 | 48 |
DayPrice
49 |
50 | ) 51 | } 52 | 53 | } 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | module.exports = Screen2 62 | -------------------------------------------------------------------------------- /react-part-2/simple/src/screens/Screen3.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | 3 | class Screen3 extends Component { 4 | 5 | componentWillMount() { 6 | this.props.eventEmitter.emit("navigateScreen", {screenIndex: 3}) 7 | } 8 | 9 | render() { 10 | return ( 11 |
12 |

SCREEN 3 DATA

13 |
14 | ) 15 | } 16 | 17 | } 18 | 19 | module.exports = Screen3 20 | -------------------------------------------------------------------------------- /react-part-2/simple/src/services/EtherService.js: -------------------------------------------------------------------------------- 1 | import Q from 'q' 2 | 3 | class EtherService { 4 | 5 | getEtherPrice() { 6 | var deferred = Q.defer() 7 | 8 | setTimeout(() => { 9 | deferred.resolve([ 10 | {day: "April 1", price: 40}, 11 | {day: "April 2", price: 41}, 12 | {day: "April 3", price: 42}, 13 | ]) 14 | }, 3000) 15 | 16 | return deferred.promise 17 | } 18 | 19 | } 20 | 21 | module.exports = new EtherService() 22 | -------------------------------------------------------------------------------- /react-part-2/simple/src/styles/app.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; } 4 | 5 | .app-header { 6 | height: 60px; 7 | background-color: black; 8 | width: 100%; } 9 | 10 | .app-wrapper { 11 | display: flex; 12 | flex-direction: row; 13 | justify-content: flex-start; 14 | align-items: stretch; 15 | min-height: 1000px; 16 | height: 100%; } 17 | .app-wrapper .app-nav { 18 | width: 100px; 19 | background-color: blue; 20 | display: flex; 21 | flex-direction: column; 22 | justify-content: flex-start; 23 | align-items: stretch; } 24 | .app-wrapper .app-nav .nav-item { 25 | height: 60px; 26 | background-color: coral; 27 | cursor: pointer; 28 | display: flex; 29 | flex-direction: column; 30 | justify-content: center; 31 | align-items: center; } 32 | .app-wrapper .app-nav .nav-item.active-nav { 33 | background-color: red; } 34 | .app-wrapper .app-nav .nav-item:hover { 35 | background-color: yellow; } 36 | .app-wrapper .main-content { 37 | flex: 1; 38 | background-color: gray; } 39 | .app-wrapper .main-content .screen { 40 | margin: 10px; } 41 | 42 | /*# sourceMappingURL=app.css.map */ 43 | -------------------------------------------------------------------------------- /react-part-2/simple/src/styles/app.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "AAAA,IAAK;EACH,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;;AAGZ,WAAY;EACV,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,KAAK;EACvB,KAAK,EAAE,IAAI;;AAGb,YAAa;EACX,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,eAAe,EAAE,UAAU;EAC3B,WAAW,EAAE,OAAO;EACpB,UAAU,EAAE,MAAM;EAClB,MAAM,EAAE,IAAI;EAEZ,qBAAS;IACP,KAAK,EAAE,KAAK;IACZ,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,MAAM;IACtB,eAAe,EAAE,UAAU;IAC3B,WAAW,EAAE,OAAO;IAEpB,+BAAU;MACR,MAAM,EAAE,IAAI;MACZ,gBAAgB,EAAE,KAAK;MACvB,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,IAAI;MACb,cAAc,EAAE,MAAM;MACtB,eAAe,EAAE,MAAM;MACvB,WAAW,EAAE,MAAM;MAEnB,0CAAa;QACX,gBAAgB,EAAE,GAAG;MAGvB,qCAAQ;QACN,gBAAgB,EAAE,MAAM;EAO9B,0BAAc;IACZ,IAAI,EAAE,CAAC;IACP,gBAAgB,EAAE,IAAI;IAEtB,kCAAQ;MACN,MAAM,EAAE,IAAI", 4 | "sources": ["app.scss"], 5 | "names": [], 6 | "file": "app.css" 7 | } -------------------------------------------------------------------------------- /react-part-2/simple/src/styles/app.scss: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | .app-header { 7 | height: 60px; 8 | background-color: black; 9 | width: 100%; 10 | } 11 | 12 | .app-wrapper { 13 | display: flex; 14 | flex-direction: row; 15 | justify-content: flex-start; 16 | align-items: stretch; 17 | min-height: 1000px; 18 | height: 100%; 19 | 20 | .app-nav { 21 | width: 100px; 22 | background-color: blue; 23 | display: flex; 24 | flex-direction: column; 25 | justify-content: flex-start; 26 | align-items: stretch; 27 | 28 | .nav-item { 29 | height: 60px; 30 | background-color: coral; 31 | cursor: pointer; 32 | display: flex; 33 | flex-direction: column; 34 | justify-content: center; 35 | align-items: center; 36 | 37 | &.active-nav { 38 | background-color: red; 39 | } 40 | 41 | &:hover { 42 | background-color: yellow; 43 | } 44 | 45 | } 46 | 47 | } 48 | 49 | .main-content { 50 | flex: 1; 51 | background-color: gray; 52 | 53 | .screen { 54 | margin: 10px; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /simplereact/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | 6 | # testing 7 | coverage 8 | 9 | # production 10 | build 11 | 12 | # misc 13 | .DS_Store 14 | npm-debug.log 15 | -------------------------------------------------------------------------------- /simplereact/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | React App 8 | 9 | 10 |
11 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /simplereact/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simplereact", 3 | "version": "0.0.1", 4 | "private": true, 5 | "devDependencies": { 6 | "react-scripts": "0.4.1" 7 | }, 8 | "dependencies": { 9 | "react": "^15.3.1", 10 | "react-dom": "^15.3.1" 11 | }, 12 | "scripts": { 13 | "start": "react-scripts start", 14 | "build": "react-scripts build", 15 | "test": "react-scripts test --env=jsdom", 16 | "eject": "react-scripts eject" 17 | }, 18 | "eslintConfig": { 19 | "extends": "./node_modules/react-scripts/config/eslint.js" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /simplereact/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | animation: App-logo-spin infinite 20s linear; 7 | height: 80px; 8 | } 9 | 10 | .App-header { 11 | background-color: #222; 12 | height: 150px; 13 | padding: 20px; 14 | color: white; 15 | } 16 | 17 | .App-intro { 18 | font-size: large; 19 | } 20 | 21 | @keyframes App-logo-spin { 22 | from { transform: rotate(0deg); } 23 | to { transform: rotate(360deg); } 24 | } 25 | 26 | .board { 27 | display: flex; 28 | width: 600px; 29 | height: 600px; 30 | flex-direction: row; 31 | flex-wrap: wrap; 32 | justify-content: flex-start; 33 | } 34 | 35 | .square { 36 | height: 200px; 37 | width: 200px; 38 | box-sizing: border-box; 39 | border: 5px solid black; 40 | font-size: 5em; 41 | display: flex; 42 | justify-content: center; 43 | align-items: center; 44 | } 45 | 46 | .square:hover { 47 | cursor: pointer; 48 | background-color: #80cd92; 49 | } 50 | -------------------------------------------------------------------------------- /simplereact/src/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import './App.css'; 3 | 4 | class App extends Component { 5 | 6 | constructor(props) { 7 | super(props) 8 | this.state = { 9 | PLAYER_ONE_SYMBOL: "X", 10 | PLAYER_TWO_SYMBOL: "O", 11 | currentTurn: "X", 12 | board: [ 13 | "", "", "", "", "", "", "", "", "" 14 | ], 15 | winner: null, 16 | } 17 | } 18 | 19 | handleClick(index) { 20 | if(this.state.board[index] === "" && !this.state.winner) { 21 | this.state.board[index] = this.state.currentTurn 22 | this.setState({ 23 | board: this.state.board, 24 | currentTurn: this.state.currentTurn === this.state.PLAYER_ONE_SYMBOL ? this.state.PLAYER_TWO_SYMBOL : this.state.PLAYER_ONE_SYMBOL, 25 | winner: this.checkForWinner(), 26 | }) 27 | } 28 | } 29 | 30 | checkForWinner() { 31 | var currentTurn = this.state.currentTurn 32 | var symbols = this.state.board 33 | var winningCombos = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]] 34 | return winningCombos.find(function(combo) { 35 | if(symbols[combo[0]] !== "" && symbols[combo[1]] !== "" && symbols[combo[2]] !== "" && symbols[combo[0]] === symbols[combo[1]] && symbols[combo[1]] === symbols[combo[2]]) { 36 | return currentTurn 37 | } else { 38 | return false 39 | } 40 | }) 41 | } 42 | 43 | render() { 44 | return ( 45 |
46 | {this.state.winner ?

{`The winner is ${this.state.winner}`}

: null} 47 |
48 | {this.state.board.map((cell, index) => { 49 | return
this.handleClick(index)} className="square">{cell}
; 50 | })} 51 |
52 |
53 | ) 54 | } 55 | } 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | export default App; 73 | -------------------------------------------------------------------------------- /simplereact/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | }); 9 | -------------------------------------------------------------------------------- /simplereact/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlwaysBCoding/Episodes/4e521fd4566b3584d054febe28c4b083f900ba13/simplereact/src/favicon.ico -------------------------------------------------------------------------------- /simplereact/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: sans-serif; 5 | } 6 | -------------------------------------------------------------------------------- /simplereact/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | import './index.css'; 5 | 6 | ReactDOM.render( 7 | , 8 | document.getElementById('root') 9 | ); 10 | -------------------------------------------------------------------------------- /twitch-bot/bot.rb: -------------------------------------------------------------------------------- 1 | require 'socket' 2 | 3 | TWITCH_HOST = "irc.twitch.tv" 4 | TWITCH_PORT = 6667 5 | 6 | class TwitchBot 7 | 8 | def initialize 9 | @nickname = "AlwaysBotCoding" 10 | @password = "oauth:jatx00edq9zqsqqk2nyfm53xrfawz2" 11 | @channel = "alwaysbcoding" 12 | @socket = TCPSocket.open(TWITCH_HOST, TWITCH_PORT) 13 | 14 | write_to_system "PASS #{@password}" 15 | write_to_system "NICK #{@nickname}" 16 | write_to_system "USER #{@nickname} 0 * #{@nickname}" 17 | write_to_system "JOIN ##{@channel}" 18 | end 19 | 20 | def write_to_system(message) 21 | @socket.puts message 22 | end 23 | 24 | def write_to_chat(message) 25 | write_to_system "PRIVMSG ##{@channel} :#{message}" 26 | end 27 | 28 | def run 29 | until @socket.eof? do 30 | message = @socket.gets 31 | puts message 32 | 33 | if message.match(/^PING :(.*)$/) 34 | write_to_system "PONG #{$~[1]}" 35 | next 36 | end 37 | 38 | if message.match(/PRIVMSG ##{@channel} :(.*)$/) 39 | content = $~[1] 40 | username = message.match(/@(.*).tmi.twitch.tv/)[1] 41 | 42 | # if content.include? "coffee" 43 | # write_to_chat("PUT THAT COFFEE DOWN!!") 44 | # end 45 | 46 | command = <<-OSASCRIPT 47 | osascript -e 'display notification "#{content}" with title "#{username}"' 48 | OSASCRIPT 49 | 50 | system(command) 51 | end 52 | end 53 | end 54 | 55 | def quit 56 | write_to_chat "AlwaysBotCoding is out" 57 | write_to_system "PART ##{@channel}" 58 | write_to_system "QUIT" 59 | end 60 | 61 | end 62 | 63 | bot = TwitchBot.new 64 | trap("INT") { bot.quit } 65 | bot.run 66 | -------------------------------------------------------------------------------- /webpack-redux/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "react"] 3 | } 4 | -------------------------------------------------------------------------------- /webpack-redux/.floo: -------------------------------------------------------------------------------- 1 | { 2 | "url": "https://floobits.com/AlwaysBCoding/webpack-redux" 3 | } -------------------------------------------------------------------------------- /webpack-redux/.flooignore: -------------------------------------------------------------------------------- 1 | #* 2 | *.o 3 | *.pyc 4 | *~ 5 | extern/ 6 | node_modules/ 7 | tmp 8 | vendor/ -------------------------------------------------------------------------------- /webpack-redux/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 |
9 | 10 | 14 | 15 |
16 |
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /webpack-redux/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webpack-redux", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "webpack -w" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "classnames": "^2.2.3", 13 | "react": "^0.14.7", 14 | "react-dom": "^0.14.7", 15 | "react-redux": "^4.4.0", 16 | "redux": "^3.3.1" 17 | }, 18 | "devDependencies": { 19 | "babel-core": "^6.6.5", 20 | "babel-loader": "^6.2.4", 21 | "babel-preset-es2015": "^6.6.0", 22 | "babel-preset-react": "^6.5.0", 23 | "css-loader": "^0.23.1", 24 | "node-sass": "^3.4.2", 25 | "sass-loader": "^3.1.2", 26 | "style-loader": "^0.13.0", 27 | "webpack": "^1.12.14" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /webpack-redux/styles/simple.scss: -------------------------------------------------------------------------------- 1 | h1.title { 2 | background-color: coral; 3 | } 4 | 5 | .player-row { 6 | cursor: pointer; 7 | 8 | &.active { 9 | background-color: yellow; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /webpack-redux/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: "./index.js", 3 | output: { 4 | path: __dirname + "/dist", 5 | filename: "bundle.js" 6 | }, 7 | devtool: 'inline-source-map', 8 | module: { 9 | loaders: [ 10 | { 11 | test: /\.js$/, 12 | loader: 'babel-loader' 13 | }, 14 | { 15 | test: /\.scss$/, 16 | loaders: ['style', 'css', 'sass'] 17 | } 18 | ] 19 | } 20 | } 21 | --------------------------------------------------------------------------------