Skip to content

Instantly share code, notes, and snippets.

View zelark's full-sized avatar

Aleksandr Zhuravlёv zelark

View GitHub Profile
@zelark
zelark / hashmap.c
Last active April 5, 2020 16:14
You can find the original example here https://youtu.be/wg8hZxMRwcw
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HASHMAP_SIZE 16
typedef struct entry_t {
char *key;
char *value;
struct entry_t *next;
@zelark
zelark / simple-life.clj
Last active January 7, 2021 12:29
#gameoflife #life #game
(ns zelark.small-life
(:require [clojure.pprint :refer [pprint]]))
(defn empty-board
"Creates a rectangular empty board of the specified width
and height."
[w h]
(vec (repeat w (vec (repeat h nil)))))
(defn populate
@zelark
zelark / lispy.c
Last active April 2, 2020 10:49
Build your own LISP
#include "mpc.h"
#include <editline/readline.h>
#define LASSERT(args, cond, fmt, ...) \
if (!(cond)) { \
lval* err = lval_err(fmt, ##__VA_ARGS__); \
lval_del(args); \
return err; \
}
(def input [1,12,2,3, 1,1,2,3, 1,3,4,3, 1,5,0,3, 2,13,1,19, 1,5,19,23, 2,10,23,27, 1,27,5,31, 2,9,31,35, 1,35,5,39, 2,6,39,43, 1,43,5,47, 2,47,10,51, 2,51,6,55, 1,5,55,59, 2,10,59,63, 1,63,6,67, 2,67,6,71, 1,71,5,75, 1,13,75,79, 1,6,79,83, 2,83,13,87, 1,87,6,91, 1,10,91,95, 1,95,9,99, 2,99,13,103, 1,103,6,107, 2,107,6,111, 1,111,2,115, 1,115,13,0, 99,2,0,14, 0])
(defn add [m p1 p2 p3]
(let [a (get m p1)
b (get m p2)]
(assoc m p3 (+ a b))))
(defn mul [m p1 p2 p3]
(let [a (get m p1)
b (get m p2)]

Problem:

xcrun: error: invalid active developer path (/Applications/Xcode.app/Contents/Developer/), missing xcrun at: /Applications/Xcode.app/Contents/Developer/usr/bin/xcrun

Solution:

xcode-select --install

# optional

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

@zelark
zelark / clojure-programming-blog.md
Last active April 16, 2020 21:23
#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
@zelark
zelark / pg_test.types.clj
Last active February 2, 2024 19:47
Support json and jsonb Postgres types in Clojure.
;; For supporting more PG types, see https://github.com/remodoy/clj-postgresql
(ns pg-test.types
(:require [cheshire.core :as json]
[clojure.java.jdbc :as jdbc])
(:import [org.postgresql.util PGobject]
[java.sql PreparedStatement]))
;; Writing
(defn- to-pg-json [data json-type]
(ns test.bmi
(:require [reagent.core :as reagent]))
(defonce bmi-data (reagent/atom { :height 180 :weight 80 }))
(defn- calc! [param value]
(swap! bmi-data assoc param value)
(let [{:keys [height weight bmi]} @bmi-data
(defproject helloworld "0.1.0-SNAPSHOT"
:description "FIXME: write this!"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:min-lein-version "2.7.1"