Создание и поддержка база данных в Emacs?

http://msdn.microsoft.com/en-us/vstudio/ee413549

Как указывалось выше, устаревшее приложение, написанное на VB6, будет поддерживаться в Windows 7 через его жизненный цикл. Но в нем также говорится, что каждая новая разработка должна выполняться на vb.net, что подразумевает, что команда vb6 гарантирует только время выполнения, а не разработку. Поэтому важно знать, что среда разработки уже устарела для vb6, и такие бедствия, как дыры в безопасности и ошибки, могут проникнуть в ваш код vb6 всякий раз, когда вы пытаетесь начать новую разработку с его помощью. Могу поспорить, что MS будет поддерживать устаревшее приложение vb6, которое будет работать еще около десяти лет. Таким образом, не нужно беспокоиться о его запуске, но всегда имейте в виду, что это не означает, что вам разрешено продолжать разработку с использованием vb6.

7
задан 26 October 2009 в 06:22
поделиться

2 ответа

Когда я пытался написать библиотеку электронных книг для Emacs, я сохранял записи в списке, сохраняя его на диск из время от времени. Когда длина списка превысила пять тысяч записей, производительность снизилась.

Вот некоторые функции из кода:

(defun bread-library-load-db ()
 "Loads the list of books from disk file to the variable bread-library-db"
      (if (file-exists-p bread-library-file)
          (with-temp-buffer
        (insert-file-contents bread-library-file)
        (setq bread-library-db (read (current-buffer))))
        (setq bread-library-db '())))

(defun bread-library-add-book (file)
  "Attempts  to   get  metadata  from  file,   then  prompts  for
confirmation (or  modification) of these metadata,  then adds the
book to the database and saves it.  Intended use: from dired."
  (if (assoc file bread-library-db)
      (error "File is already in the database")
    (progn
      (let ((metadata (bread-get-metadata file)))
    (let ((filename (nth 0 metadata))
          (author (read-from-minibuffer 
               "Author: "
               (nth 1 metadata)))
          (title (read-from-minibuffer 
              "Title: "
              (nth 2 metadata)))
          (genre (read-from-minibuffer "Genre: " (nth 3 metadata)))
          (tags (read-from-minibuffer "Tags (separated and surrounded by colons): " ":"))
          (desc (nth 4 metadata)))
      (setq bread-library-db (cons 
                  (list filename author title tags "TOREAD" genre nil desc)
                  bread-library-db))))
      (bread-library-save-db bread-library-db))))

(defun bread-library-save-db (db)
    "Save the library database to a file."
    (message "Saving Bread library database...")
    (with-temp-buffer
      (insert "; 1.path 2.author 3.title 4.tags 5.state 6.genre 7.priority 8.description")
      (print db (current-buffer))
      (write-file bread-library-file))
    (message "Saving Bread library database...done"))
2
ответ дан 7 December 2019 в 12:21
поделиться

Вот мое решение:


(defvar *db* nil)

(setq *db* ())

(defun make-cd (title artist rating ripped)
  (list :title title :artist artist :rating rating :ripped ripped))

(defun add-record (cd) (push cd *db*))

(defun init ()
  (progn
    (add-record (make-cd "Roses" "Kathy Mattea" 7 t))
    (add-record (make-cd "Fly" "Dixie Chicks" 8 t))
    (add-record (make-cd "Home" "Dixie Chicks" 9 t))
    ))

(defun save-db (filename)
  (with-temp-buffer
    (print *db* (current-buffer))
    (write-file filename))
  (message "Saving database...done")
  )

(defun load-db (filename)
  (with-temp-buffer
    (insert-file-contents filename)
        (setq *db* (read (current-buffer)))))

(defun dump-db ()
  (dolist (cd *db*)
    (print cd)))


;; Test in M-x lisp-interaction-mode
;;(init)
;;(save-db "cd.db")
;*db*
;(add-record (make-cd "Born To Run" "Bruce Springsteen" 10 t))
;(add-record (make-cd "The River" "Bruce Springsteen" 10 t))
;(add-record (make-cd "Nebraska" "Bruce Springsteen" 10 t))
;(add-record (make-cd "Human Touch" "Bruce Springsteen" 10 nil))
;;(save-db "cd.db")
;(setq *db* ())
;;(load-db "cd.db")
;*db*

3
ответ дан 7 December 2019 в 12:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: