Наиболее распространенная рекомендация состоит в том, чтобы сохранить DateTime. UtcNow и, когда Вы хотите показать локализованное время пользователю, преобразовывают в местное время, составляя переход на летнее время.
.NET обеспечивает для вычислений, связавших летнее время с DaylightTime и классы TimeZone , и , метод ToLocalTime , предположительно, может преобразовать UTC в локальный учет в течение летнего времени.
У меня есть сценарий оболочки, который выглядит так:
#!/bin/sh
CLASSPATH=/home/me/install/compojure/compojure.jar
CLASSPATH=$CLASSPATH:/home/me/clojure/clojure.jar
CLASSPATH=$CLASSPATH:/home/me/clojure-contrib/clojure-contrib.jar
CLASSPATH=$CLASSPATH:/home/me/elisp/clojure/swank-clojure
for f in /home/me/install/compojure/deps/*.jar; do
CLASSPATH=$CLASSPATH:$f
done
java -server -cp $CLASSPATH clojure.lang.Repl /home/me/code/web/web.clj
web.clj выглядит так
(use '[swank.swank])
(swank.swank/ignore-protocol-version "2009-03-09")
(start-server ".slime-socket" :port 4005 :encoding "utf-8")
Каждый раз, когда я хочу обновить сервер, я создаю ssh-туннель с моей локальной машины на удаленный компьютер.
Enclojure и Emacs (выполняющие SLIME + swank-clojure) могут подключаться к удаленному REPL.
Вот ответ, который я получил от Джеймса Ривза из группы Compojure Google (ответ здесь с его разрешения):
Вы можете перезагрузить пространство имен в Clojure, используя : перезагрузить ключ при использовании или требовать команд. Например, предположим, что у вас есть файл «demo.clj», содержащий ваши маршруты:
(ns demo
(:use compojure))
(defroutes demo-routes
(GET "/"
"Hello World")
(ANY "*"
[404 "Page not found"]))
В REPL вы можете использовать этот файл и запустить сервер:
user=> (use 'demo)
nil
user=> (use 'compojure)
nil
user=> (run-server {:port 8080} "/*" (servlet demo-routes))
...
Вы также можете поместить команду run-server в другой clojure файл. Однако вы не хотите помещать его в тот же файл, что и материал, который вы хотите перезагрузить.
Теперь внесите некоторые изменения в demo.clj. В типе REPL:
user=> (use 'demo :reload)
nil
И ваши изменения теперь должны отображаться на http: // localhost: 8080
Это сильно зависит от конфигурации, но работает для меня, и я думаю, вы можете адаптировать его:
Поместите compojure.jar и jar-файлы в каталог compojure / deps в ваш путь к классам. Для этого я использую clojure-contrib / launchers / bash / clj-env-dir, все, что вам нужно сделать, это установить каталог в CLOJURE_EXT, и он найдет банки. CLOJURE_EXT Разделенный двоеточиями список путей к каталогам, чей верхний уровень содержимое (напрямую или в виде символических ссылок) jar файлы и / или каталоги, пути к которым будут в Clojure classpath.
Запустить clojure REPL
Вставить пример hello.clj из корневого каталога compojure
Проверить localhost: 8080
Повторно определить средство приветствия (отключает встречу (ПОЛУЧИТЬ "/" (html [: h1 "Goodbye World"])))
Проверьте localhost: 8080
Существуют также методы для присоединения REPL к существующему процессу, или вы можете оставить REPL сокета встроенным в ваш сервер, или вы можете даже определите вызов POST, который будет оценивать на лету, чтобы вы могли переопределять функции из самого браузера! Есть много способов подойти к этому.
Если положение всех нижестоящих элементов статически предварительно вычисляется таким образом, то массив по существу представляет полностью полное, полностью сбалансированное двоичное дерево.
Не все двоичные деревья в «реальной жизни» полностью заполнены и идеально сбалансированы. Если у вас должно быть несколько особенно длинных ветвей, вам придется сделать весь массив намного больше, чтобы разместить все узлы на самом нижнем уровне.
Если двоичное дерево, связанное с массивом, в основном пусто, большая часть пространства массива тратится впустую.
Если только некоторые ветви дерева достаточно глубоко, чтобы достичь «дна» массива, также много места тратится впустую.
Если дерево (или только одна ветвь) должно расти «глубже», чем позволяет размер массива, это потребует «роста» массива, который обычно реализуется как копирование в больший массив. Это дорогостоящая операция.
Итак: Использование указателей позволяет динамично и гибко наращивать структуру. Представление дерева в массиве является хорошим академическим упражнением и хорошо работает для небольших и простых случаев, но часто не удовлетворяет требованиям «реальных» вычислений.
-121--3266133-Я не знаю, что загрузчик, но я думаю, что вы должны использовать objcopy, как это, чтобы выгрузить ваши исполняемые данные в необработанный двоичный файл. Не переходите к заголовкам ELF, люди:)
objcopy -O binary ./a.out o.bin
Также попробуйте скомпилировать независимый код позиции и прочитать руководства ld и gcc.
-121--3665419-После ссылки Тимоти на установку Джима Даунинга я недавно опубликовал критическое дополнение к тому базовому уровню, который, по моему мнению, был необходим для автоматического перераспределения приложений compojure во время разработки .