3 ms·
And for people who want to "level up" their programming skills and get an excellent language for writing servers in with a great faculty for safely concurrent s
by coolsunglasses 13y ago
And for people who want to "level up" their programming skills and get an excellent language for writing servers in with a great faculty for safely concurrent semantics:
http://clojure-doc.org/articles/content.html#clojure_tutorials http://clojure-doc.org/articles/content.html#clojure_tutoria...
- defen 13y agoHow is deployment with clojure? I haven't used either, but deploying golang programs looks incredibly simple, whereas JVM wrangling (which I last did years ago) was never fun for me. Does either one support erlang-style hot code swapping?
- theatrus2 13y agoJVM deployment is a little more involved, but due to the use of the virtual machine, can allow for hot code swaps. However, this isn't cleanly baked into many application architectures, so YMMV.
- coolsunglasses 13y agoYou might be over-rating the usefulness of code hot-swaps in production with Erlang. Erlang devs I've talked to have looked a little green in the gills when I asked about it. Coming from Python and Ruby, being able to just deploy a jar is a dream.
- drdaeman 13y agoPython has packages ("eggs", although the term has multiple meanings, I'm unaware of good unambiguous name to things you host on PyPI or alikes). You put your code under a certain conventional directory structure, write simple setup.py file and, well, that's about it. (Although, as I happen to use mostly Debian-based systems, I prefer not using Python packages directly but build .deb out of them with stdeb and use system package manager to deploy. Just dput the built package to company's private apt repo, and Puppets pull the update.)
- coolsunglasses 13y agoEggs are incomplete, broken, don't really solve the entire problem, and don't even solve the problem they were designed to solve. It's a mess, there are multiple factions and implementations, and until people started consolidating there were 4-5 concurrent popular approaches to packaging Python libraries. I've lost tangible shards of my sanity to Python packaging and some of my poor coworkers are fighting the terribly useless fight regularly still to this day. Worse, most Python projects that have any non-trivial dependencies usually entail NumPy, SciPy, or Cython. Have you ever packaged something that's using multiple C and Fortran dependencies for automated deployment? It's horrific. Meanwhile, back when I'm at home and I use jBlas or any other Clojure, Java, or Scala library here's what I have to do: Add dependency to project.clj: [bulwark "0.0.3"] Ship the jar. lein deploy $maven_repo Writing Clojure code at home is incomparably more pleasant not just in pure code, but in all the accouterments and tooling as well.
- cgag 13y agoA lot of people just clone their code to the server and do "lein ring server-headless", (lein is the clojure build tool) which starts the server. You can also package all your code and its dependencies into a single jar, then copy that jar to your to your provider and run it. It's pretty easy basically, and more advanced options are available, but even if it was more involved, I think the benefits you get with Clojure are big enough that I'd be willing to put up with quite a bit more difficulty than there is.