Pull to refresh
35
0

Программист

Send message

Стоит отменить полезный флаг -p, который позволит узнать какому-же все-таки процессу принадлежит соединение.
Итого обычно нужны ss -tp и ss -tl

Конечно, это скорее шутка. Но в каждой шутке .

Пробуем йогу в гамеке: http://antigravityrussia.ru/
Ощущения потрясные.
Тоже так думал. Но когда попробовал, понял что часто мои «часовые» задачи, на самом деле 2 или 3 задачи хаотично скомканных вместе.
В начале статьи есть ссылка «игра»: https://github.com/TatriX/rogalia/
Или сразу http://store.steampowered.com/app/528460
Спасибо, поправил.
А то! В черновом варианте про это было написано. А еще про «перееду-ка я на arch linux». Отлично выводит из темной полосы прокрастинации.
Если считать едущего по лесу на лошади с сундуком корованом, то да можно. Правда кажется 95% предпочитают ПВЕ.
Нравится писать в императивном стиле — пишите.
Туповатый пример на коленке
;;; http://www.gigamonkeys.com/book/object-reorientation-generic-functions.html

(defpackage #:ultra-game
  (:use :common-lisp)
  (:export :say-my-name :ship))

(in-package :ultra-game)

(defclass point ()
  ((x
    :initform 0
    :accessor point-x)
   (y
    :initform 0
    :accessor point-y)))

(defclass entity (point)
  ((name
    :initarg :name
    :initform (error "Must supply a name")
    :accessor entity-name)))

(defgeneric say-my-name (entity)
  (:documentation "Print entity name to the *standard-output*"))

(defmethod say-my-name ((entity entity))
  (format *standard-output* "My name is ~a~%" (entity-name entity)))


(defclass engine ()
  ((angle
    :initform 0
    :accessor engine-angle)
   (acceleration
    :initform 9000
    :accessor engine-acceleration)))

(defclass ship (entity engine)
  ((cost
   :initform 0)))

(defmethod say-my-name ((ship ship))
  (with-slots (name acceleration) ship
    (format *standard-output* "Colonial spaceship ~a; Acceleration: ~a~%" name acceleration)))

;;; usage example

(in-package :cl-user)

(let ((ship (make-instance 'ultra-game:ship :name "Foo")))
  (ultra-game:say-my-name ship))

;; output:
;; Colonial spaceship Foo; Acceleration: 9000
;; My name is Alarm!


;; note '::'
(let ((entity (make-instance 'ultra-game::entity :name "Alarm!")))
  (ultra-game:say-my-name entity))

;; output:
;; My name is Alarm!


Common Lisp как и C#, как и C++ языки общего назначения. А потому говорить о «сложившемся перечне задач» некорректно.
Все равно что говорить: «На си нужно писать только ядра операционных систем».
Сейчас все обстоит так же. Разве что теперь есть roswell который упрощает процедуру.

Если размер бинарника важен, можно воспользоваться другой реализацией. Кажется, CLISP умеет делать маленькие бинарники.

Впрочем, лично мне кажется что статическая линковка вполне себе хорошая идея для дистрибуции.
Сообщество очень маленькое, популяризаторов нет, вот и не пишут. (http://lispgames.org/)

От каждого языка есть субъективное впечатление. От каких то хочется сразу проблеваться, другие вроде ничего, но попользуешься и тоже перестает нравится.
Общелисп, несмотря на некоторые досадные исторические недоразумения, лично у меня вызывает только положительные эмоции.

Про игры на лиспе есть целая книжка, кстати: landoflisp.com
Лисп лиспу рознь. Лисп это не какой-то конкретный язык, а целое семейство довольно разных языков объединенных некоторыми общими свойствами.
Скажем тот-же Scheme гораздо более функциональный чем Common Lisp.

Вообще насколько я знаю сейчас самый популярный диалект лиспа это Clojure.
И чего только на нем не пишут: github.com/search?utf8=%E2%9C%93&q=stars%3A%3E1+language%3AClojure&type=Repositories&ref=advsearch&l=Clojure&l=
Common Lisp обладает довольно мощной объектной системой. Вообще, его сложно назвать функциональным. Он поддерживают несколько парадигм, и функциональная далеко не главная.

В частности в последующих туториалах используются классы, в сущности делающие то же самое, что и в оригинальном туториале.
Да, вы правы — неконсистентно и небезопасно.
Сделано это более менее сознательно, т.к. на небольшом объеме трафика не вызывало никаких проблем.
Вообще говоря, всю архитектуру стоит пересмотреть в сторону использования снимков состояния мира или изменений между ними, отсылаемых в фиксированные промежутки времени при необходимости.

Снял плашку туториала — она тут явно лишняя, я бы даже сказал вредная.
Сейчас должно работать.
Мне гораздо проще разобраться в алгоритме на примере его реализации, дополненному словесным описанием.
При этом я не люблю воду. Мне все равно какая стояла погода в момент когда автор писал текст, и какого цвета в тот вечер был закат.

Какой формат был бы более приемлемым для широкой аудитории?
Получается что все клиенты получают один канал, из которого читают сообщения. Но разве после того, как первый клиент прочитает данные из канала, они оттуда не пропадут?
1

Information

Rating
Does not participate
Registered
Activity