Skip to content

Instantly share code, notes, and snippets.

View ertugrulcetin's full-sized avatar

Ertuğrul Çetin ertugrulcetin

View GitHub Profile
@ertugrulcetin
ertugrulcetin / hello-physics.clj
Last active December 22, 2020 06:48
jme-clj - Hello Physics Example
;; Please have a look https://github.com/ertugrulcetin/jme-clj for more.
;; Demo video used this gist: https://www.youtube.com/watch?v=IOPz9I49snM
(ns examples.beginner-tutorials.hello-physics
"Clojure version of https://wiki.jmonkeyengine.org/docs/3.3/tutorials/beginner/hello_physics.html"
(:require [jme-clj.core :refer :all])
(:import
(com.jme3.input MouseInput)
(com.jme3.math Vector3f)
(com.jme3.scene.shape Sphere$TextureMode)
(com.jme3.texture Texture$WrapMode)))
@ertugrulcetin
ertugrulcetin / jmonkey-engine.clj
Last active November 30, 2020 19:05
jMonkeyEngine Clojure example with hot reload in REPL
(ns jm-clj.core
(:import (com.jme3.app SimpleApplication)
(com.jme3.scene.shape Box)
(com.jme3.scene Geometry)
(com.jme3.material Material)
(com.jme3.math ColorRGBA)))
(defn my-logic [^SimpleApplication this]
(let [b (Box. 1 1 1)
geom (Geometry. "Box" b)
(ns jm-clj.core
(:import (com.jme3.app SimpleApplication)
(com.jme3.scene.shape Box)
(com.jme3.scene Geometry)
(com.jme3.material Material)
(com.jme3.math ColorRGBA)))
;(def ^:dynamic *app-settings* (doto (AppSettings. true)
; (.setFullscreen false)
; (.setTitle "jme_clj")))
@ertugrulcetin
ertugrulcetin / nested-macro.clj
Created November 21, 2020 21:04
Clojure nested macro sample
(defmacro component
([name tag]
`(component ~name ~tag nil))
([name tag docs]
(if docs
`(defmacro ~(with-meta name {:tag tag}) ~docs
[object# k# & options#]
`(u/call! ~object# ~k# ~@options#))
`(defmacro ~(with-meta name {:tag tag})
[object# k# & options#]
@ertugrulcetin
ertugrulcetin / update-xmind.clj
Created October 16, 2020 16:39
Manipulate Xmind file in Clojure
(defn update-xmind
"Manipulates Xmind data and saves as a binary format. Usage:
This example updates all \"Report\" titles with \"HEY!\"
(update-xmind \"~/xmind-files/report.xmind\"
\"~/xmind-files/report-new.xmind\"
(fn [data]
(o/transform data
(o/and
(d/query data ?path :title ?title)
@ertugrulcetin
ertugrulcetin / reveal-bindings.clj
Last active September 30, 2020 14:46
Revealing variables final values based on substitution map by using logic programming in Clojure.
(require '[clojure.core.logic :refer [== run fresh]]
'[clojure.walk :as walk])
(defn function-call->form [form]
(walk/prewalk (fn [node]
(cond
(and (list? node)
(or (-> node first resolve nil?)
(-> node first resolve meta :special-form)
(-> node first resolve meta :macro)))
(defn wrap-some-data
[handler]
(fn [request]
(let [updated-request (assoc request :site-owner "Ertuğrul")]
;; ▼▼▼ returns response ▼▼▼
(handler updated-request))))
;; :resource-ns-path -> src/clj_web_app dizini altındaki namespace'leri tarar ve tüm `resource`'ları bulup döndürür
(def app-routes (get-routes {:resource-ns-path "clj-web-app."
(:require [patika.core :refer [resource get-routes]]
[ring.adapter.jetty :refer [run-jetty]]
;; Middlewares
[ring.middleware.reload :refer [wrap-reload]]
[ring.middleware.cookies :refer [wrap-cookies]]
[ring.middleware.gzip :refer [wrap-gzip]]
[compojure.core :as c]
[compojure.route :as r])
@ertugrulcetin
ertugrulcetin / core.clj
Last active April 3, 2020 11:33
clj-web-app.core - Clojure ile Örnek Web Uygulaması
(ns clj-web-app.core
(:require [patika.core :refer [resource get-routes]]
[ring.adapter.jetty :refer [run-jetty]]
[compojure.core :as c]
[compojure.route :as r]))
(resource home
:get ["/"]
:content-type :html
:handle-ok (fn [ctx] "<html>
@ertugrulcetin
ertugrulcetin / project.clj
Created April 3, 2020 10:15
project.clj - Clojure ile Örnek Web Uygulaması
(defproject clj-web-app "0.1.0-SNAPSHOT"
:description "Clojure ile örnek web uygulama"
:url "http://example.com/FIXME"
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
:url "https://www.eclipse.org/legal/epl-2.0/"}
:dependencies [[org.clojure/clojure "1.10.0"]
[ring "1.8.0"]
[patika "0.1.10"]]
:main ^:skip-aot clj-web-app.core
:repl-options {:init-ns clj-web-app.core})