This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-07-30
Channels
- # admin-announcements (24)
- # beginners (27)
- # boot (32)
- # cider (9)
- # cljs-dev (2)
- # clojure (96)
- # clojure-berlin (33)
- # clojure-dev (2)
- # clojure-gamedev (2)
- # clojure-germany (1)
- # clojure-italy (8)
- # clojure-japan (2)
- # clojure-russia (21)
- # clojurescript (178)
- # clojutre (3)
- # code-reviews (4)
- # core-async (58)
- # core-logic (22)
- # core-matrix (4)
- # cursive (10)
- # datomic (131)
- # events (9)
- # ldnclj (31)
- # off-topic (57)
- # onyx (9)
- # reagent (23)
trybeee, и подумать не мог... Благодарю за ссылку!
"На самом деле перевод мой, а smilga помогал его редактировать. (Надо сказать, что качесвом перевода и я сам недоволен, а Боря -- тем более.)"
@nicola: re: deftype в edn — бери сразу транзит, https://github.com/cognitect/transit-cljs/wiki/Getting-Started
Мы используем транзит в продакшене не только с Clojure бэкендом , но и с Django, очень хорошо общаются. В том числе хорошо получается сериализировать питоновский объект на сервере (тот же Point из django.contrib.gis.geos), а потом на клиенте его прочитать как свой (deftype Point ...)
Да, вот этот https://docs.djangoproject.com/en/1.8/ref/contrib/gis/geos/#django.contrib.gis.geos.Point Для него определяется и регистрируется транзитовский хэндлер:
class PointHandler(object):
@staticmethod
def tag(_):
return "Point"
@staticmethod
def rep(p):
return p.coords
@staticmethod
def string_rep(p):
return p.toString()
class TransitRenderer(renderers.BaseRenderer):
media_type = 'application/transit+json'
format = 'transit'
def render(self, data, media_type=None, renderer_context=None):
io = StringIO()
writer = Writer(io, 'json')
writer.register(
rest_framework.utils.serializer_helpers.ReturnDict,
transit.write_handlers.MapHandler
)
writer.register(
rest_framework.utils.serializer_helpers.BindingDict,
transit.write_handlers.MapHandler
)
writer.register(
rest_framework.utils.serializer_helpers.ReturnList,
transit.write_handlers.ArrayHandler
)
writer.register(
ValuesQuerySet,
transit.write_handlers.ArrayHandler
)
writer.register(Point, PointHandler)
writer.write(data)
return io.getvalue()
кстати тут раз уж заговорили про sicp то отмечу что очень важно прорешать от туда примеры по возможности, самому у меня духа хватило на первые 2 главы. Особенно сильная ломка шла на первой, после того как всю жизнь кодил императивно, было тяжко перестроить сознание, но оно того стоило! Решал на scheme который брал отсюда http://racket-lang.org/ . Затем уже стал осваивать clojure, решил также начать прорешивать примерчики с http://4clojure.com, скажу что после sicp все по ощущениям шло как по маслу где-то до 100 задания (http://www.4clojure.com/user/kopychenko). Думаю как будет время то попытаюсь добить полследние 3 главы sicp... но уже наверное при помощи clojure. В итоге могу сказать что несмотря на то что сам курс sicp древний но толчек в изучении и понимании ФП он дает хороший. Хороше было бы если бы это курс качественно переработали на clojure и добавили новое...