Skip to content

Instantly share code, notes, and snippets.

@dosbol
dosbol / clojure-programming-blog.md
Created July 5, 2018 05:52 — forked from zelark/clojure-programming-blog.md
#clojure #clojurescript #blog #grumpy.website

Clojure Programming: Blog

  • Part 1: Начало статического блога. Immutant, Ring, Compojure, HTML rendering через Rum
  • Part 2: Forms, middlewares, redirects, 404 and error handling
  • Part 3: id generator, loops, cookies, sessions, authorization, working w/ files, macros
  • Part 4: Cookies, рефакторинг, неймспейсы, RSS фид
  • Part 5: Infinite Scroll на JS, sitemap.xml, robots.txt
  • Part 6: Настраиваем CLJS окружение
  • Part 7: Переделываем форму редактирования на Rum, клиент+сервер-сайд рендеринг, EDN-сериализация данных
  • Part 8: CLJS, drag-n-drop upload, browser API, Rum mixins, local state

Rich Already Answered That!

A list of commonly asked questions, design decisions, reasons why Clojure is the way it is as they were answered directly by Rich (even when from many years ago, those answers are pretty much valid today!). Feel free to point friends and colleagues here next time they ask (again). Answers are pasted verbatim (I've made small adjustments for readibility, but never changed a sentence) from mailing lists, articles, chats.

How to use:

  • The link below in the summary jumps at the answer on this page.
  • The link on the question itself points back at the original post.

Summary

@dosbol
dosbol / gist:e453fcdbc40edda8ec8923f4e5d90398
Created March 19, 2019 09:06
Расписание встреч с использованием re-frame
Браузерное приложение - расписание встреч. Возможности: добавление встреч, удаление, редактирование.
На главном экране отображаются все встречи на выбранный день (соответственно есть контрол в выбором даты).
У встречи есть три состояния: запланирована, в процессе, завершена. Создавать встречи на прошлое запрещено,
они не должны пересекаться, отображение даты и времени должно быть в часовом поясе браузера.
Экран добавления встречи: дата и время начала, дата и время окончания, часовой пояс
(доступны три часовых пояса: Москва, Хабаровск, Гринвич), краткое описание.
При вводе времени валидировать формат: dd.MM.yyyy hh:mm A, где dd - день, MM - месяц, yyyy - год,
hh - часы от 1 до 12, mm - минуты, A - AM/PM.

Lessons learned; The nice and accurate counsel of Alex Miller, programmer

TL:DR

  • Be intentional
  • Stay connected to the problem
  • Use tables to explore alternatives
  • Make a picture

1. Read the docs!

@dosbol
dosbol / ns-cheatsheet.clj
Created August 3, 2020 17:34 — forked from ghoseb/ns-cheatsheet.clj
Clojure ns syntax cheat-sheet
;;
;; NS CHEATSHEET
;;
;; * :require makes functions available with a namespace prefix
;; and optionally can refer functions to the current ns.
;;
;; * :import refers Java classes to the current namespace.
;;
;; * :refer-clojure affects availability of built-in (clojure.core)
;; functions.
@dosbol
dosbol / clojure-learning-list.md
Created December 11, 2022 11:44 — forked from ssrihari/clojure-learning-list.md
An opinionated list of excellent Clojure learning materials

An opinionated list of excellent Clojure learning materials

These resources (articles, books, and videos) are useful when you're starting to learn the language, or when you're learning a specific part of the language. This an opinionated list, no doubt. I've compiled this list from writing and teaching Clojure over the last 10 years.

  • 🔴 Mandatory (for both beginners and intermediates)
  • 🟩 For beginners
  • 🟨 For intermediates

Table of contents

  1. Getting into the language
@dosbol
dosbol / http_streaming.md
Created May 30, 2023 05:14 — forked from CMCDragonkai/http_streaming.md
HTTP Streaming (or Chunked vs Store & Forward)

HTTP Streaming (or Chunked vs Store & Forward)

The standard way of understanding the HTTP protocol is via the request reply pattern. Each HTTP transaction consists of a finitely bounded HTTP request and a finitely bounded HTTP response.

However it's also possible for both parts of an HTTP 1.1 transaction to stream their possibly infinitely bounded data. The advantages is that the sender can send data that is beyond the sender's memory limit, and the receiver can act on