Skip to content

Instantly share code, notes, and snippets.

@nitsas
Created October 18, 2017 11:20
Show Gist options
  • Save nitsas/10d7beb0cf4d71cf273e930e841b1ffe to your computer and use it in GitHub Desktop.
Save nitsas/10d7beb0cf4d71cf273e930e841b1ffe to your computer and use it in GitHub Desktop.
history from our #til slack channel

vim persistent undo https://jovicailic.org/2017/04/vim-persistent-undo/


polu kalo pluggin gia undo einai to undotree mbbill/undotree


για tab-completion στο vim με έχουν βολέψει πολύ τα:


πολύ καλό για να τσεκάρεις git commits, branches, diffs, κλπ: https://github.com/jonas/tig


til: για το <link rel="preload" ...>: .. Έστω πχ ότι έχεις ένα <script src="application.js"> στο τέλος του body, .. ο browser θα το ζητήσει από τον server όταν φτάσει σε εκείνο το σημείο. .. .. Αν θες, βάζεις στο head σου <link rel="preload" href="application.js" as="script"> .. (το βάζεις έξτρα - δεν διαγράφεις το script-tag από το body) .. για να πεις του browser "θα χρειαστώ αυτό σίγουρα - ξεκίνα να το φέρνεις από τώρα". .. (αν τελικά δεν χρησιμοποιήσεις πουθενά το "application.js" θα γίνει preload, θα μπει στην cache του browser, αλλά δεν θα εκτελεστεί ποτέ) .. .. Ο browser θα ξεκινήσει να φέρνει το application.js από νωρίς και θα το βάλει στην cache του, .. οπότε όταν φτάσει στο σημείο που είναι το script tag, δεν θα χρειαστεί να το ζητήσει τότε από τον server - είτε υπάρχει ήδη στην cache, είτε είναι στο δρόμο.

Preload μπορείς να κάνεις και για stylesheets, fonts, εικόνες, βίντεο, audio, html για iframes, webworker code, κ.α.

Μπορείς να χρησιμοποιήσεις και media query για να αποφασίσεις αν θα γίνει κάτι preload .. πχ <link rel="preload" media="(max-width: 600px)" ...>

katsampu wrote:

nitsas αυτα θελουν προσοχη ομως. Τα styles ετσι κι αλλιως ειναι high priority με http/2 makes sense, δεν υπαρχει μεγαλος κινδυνος να χαλασει κατι, με http1 ομως ενδεχομενως να μπλοκαρεις κατι αλλο

ενα αλλο (κατ‘εμέ) πιο καλο, ειναι το prefetch που φερνεις ενα script που θα χρειαστεις στο next page


:til: για phabricator .. αν κάνω mention το task σε ένα commit message, τότε όταν γίνει merge το commit στο master θα κάνει resolve και το phabricator task .. e.g. "Fixes T1234", "Resolves T1234", "Closes T1234", "Invalidates T1234", "Wontfix T1234", "Spites T1234" (edited)

.. λογικά τα "Fixes", "Closes", και "Resolves" κάνουν close με status "Resolved" .. και τα άλλα 3 με το αντίστοιχο status

"Spite" == "Closed task out of spite" -- seriously


για να πειράξουμε κάποιο από τα Skroutz.settings στα specs υπάρχουν τα:

  • with_settings(koko: :lala), και
  • before { stub_setting(koko: :lala) }

αλλά με το 2ο θα πρέπει να κάνω και after { unstub_setting(koko: :lala) }, ενώ το 1ο κάνει unstub από μόνο του


Το path από το οποίο περνάει ένα user request είναι:

  h2o (για http/2 & ssl termination) --> haproxy (load balancer) -->
  memcache (caching) --> nginx (request buffering για slow clients) -->
  unicorn (rails app server)

Παίζει να μου έχει ξεφύγει τπτ.


:til: το rspec προτείνει να προτιμάμε request specs αντί για controller specs (από rspec-rails v3.5+, εμείς έχουμε v3.6) (docs about request specs: https://github.com/rspec/rspec-rails#request-specs)

γιατί προτείνουν request specs:

Request specs allow you to focus on a single controller action, but unlike controller tests involve the router, the middleware stack, and both rack requests and responses. This adds realism to the test that you are writing, and helps avoid many of the issues that are common in controller specs. In Rails 5, request specs are significantly faster than either request or controller specs were in rails 4

http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/

σε rails 5 έκαναν deprecate το assigns(:lala) που χρησιμοποιούμε στα controller specs (που τσιμπάει το instance variable @lala που έχει γίνει set στο controller action σου) (edited)

με τη λογική ότι είναι implementation detail και δεν θα πρέπει να το τεστάρουμε

https://everydayrails.com/2016/08/29/replace-rspec-controller-tests.html (edited)


JavaScript: Μια εικόνα του τί παίζει με το yarn και το αρχείο package.json: .. το yarn είναι package & dependency manager, όπως και το npm, .. (αντίστοιχα με το gem που κάνει install gems στη ruby) .. .. Το προτιμήσαμε αντί του npm γιατί το npm είχε μείνει λίγο πίσω - αλλά από τότε έχει βγει npm v5.0 που είναι πολύ καλό από ό,τι έχω καταλάβει. .. .. Στο project μας (πχ στο yogurt) βάζουμε ένα αρχείο package.json που περιγράφει όλα τα dependencies (για production & dev) του project. .. .. fun fact: κάτω-κάτω στο package.json του yogurt υπάρχει κι ένα section με custom scripts:

  "server": "yarn check && webpack-dev-server  --config config/webpack.config.js --hot",
  // ^ αυτό τρέχει όταν κάνουμε `yarn server` -> δλδ τελικά ο server που σηκώνεται είναι ο webpack-dev-server
  ...
}```


------

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment