LINUX.ORG.RU

Сообщения staseg

 

Путаница в переопределении классов

Привет.

Началось все с того, что захотел сделать и думал, что сделал, «локальный» класс, т.е. определил и использовал его в одном .cpp-файле. Много времени спустя случилось так, что создал в том же неймспейсе класс с тем же именем внутри другого .cpp-файла, и эти классы перемешались.

Минимальный пример для воспроизведения:

2.h:

#ifndef _2_H_
#define _2_H_

void foo();

#endif /* _2_H_ */
2.cpp:
#include<stdio.h>

class test{
public:
 void foo(){printf("test::foo()\n");}
};

void foo(){
 xx::test t;
 t.foo();}
1.cpp:
#include<stdio.h>
#include"2.h"

class test{
public:
 virtual /* (1) */ void foo(){printf("ta-dam!\n");}
};

int main(){
 test(); /* (2) */
 foo();
 return 0;}

Итак. Если оставляем все как есть, программа печает тадам. Если убираем создание объекта (2), или виртуальность (1), программа печатает тест::фуу. Это нормально? И как таки правильно определить «локальный» класс?

gcc (Gentoo 4.6.3 p1.3, pie-0.5.2) 4.6.3

 

staseg
()

Отладка macrolet

Пламенный привет!

Подскажите пожалуйста, есть ли в слайме способ удобной отладки macrolet-макросов? Нужно посмотреть, во что он раскрывается, но slime-expand-1 возвращает саму форму вызова макроса. Пробовал компилировать функцию, содержащую macrolet, не помогло, все равно слаймом не раскрывается.

Вынести macrolet-макрос во внешний не вариант, он генерируется внутри функции и завязан на внутренние аргументы.

Минимальный пример:

(defmacro def-something (name (&rest args) &rest body)
 `(defun ,name ,args
   (macrolet ((-macro- () 42))
    ,@body)))

(def-something foo ()
 (-macro-)
 (values))

Хочу раскрыть -macro- внутри foo.

 ,

staseg
()

Избавление от флуда в уведомлениях

Ситауция: подписываешься на какую-нибудь тему, через пару часов заходишь на ЛОР и видишь сотню уведомлений, и все бы ничего, но на странице уведомлений среди множества уведомлений об отписавшихся в тот тред элементарно пропустить уведомления о других темах, об ответах на твои комментарии, о новых темах с подписанными тегами. Да и просто несколько уведомлений об одном и том же нелогично.

Рац.предложение: при создании уведомления о комментировании подписанной темы смотреть, есть ли у этого пользователя уже аналогичное непрочитанное уведомление. Тогда при следующем заходе на ЛОР пользователь увидит уведомление о комментировании в подписанной им теме, нажмет на него и перейдет на первый непрочитанный комментарий.

 

staseg
()

Багрепорт: разное поведение при копировании текста комментариев

При копировании со страницы топика ник автора комментария автоматически не помещается в буфер. При копировании текста со страницы комментирования (туда мы попадаем с отключенным JS) - помещается.

 

staseg
()

Протащить результат через несколько вызовов функций

Приветствую!

Суть: есть верхняя функция, которая порождает дерево вызовов других функций (произвольных), часть которых может сделать нечто вроде метки, на которую должна среагировать верхняя функция.

Пример:

(defun bottom (x)
 (magic-shit (random x))
 x)

(defun middle (arg)
 (let ((x (random arg)))
  (if (= x 42)
      (bottom x)
      x)))

(defun top ()
 (magic-bind (value magic-arg) (middle 999)
  (if magic-arg
      (+ magic-arg value)
      (/ value 42))))

magic-shit - нечто, устанавливающее протаскиваемое значение, в данном случае это (random 42). magic-bind - нечто, позволяющее получить это значение. Форма записи мэджиков непринципиальна, принципиально не изменять middle-функцию.

Сперва была мысль воспользоваться механизмом возвращения нескольких значений, но это не взлетит в силу того, что в общем случае под это придется подгонять middle. Еще в голове вертится слово «замыкание», не знаю, может меня от перенапряжения коротнуло просто. Написать top и множество bottom-функций в одной let-форме и замкнуться на ее переменную не получится, как еще замкнуть я не знаю... Последний вариант - глобальная переменная, да.

Какие есть в лиспе механизмы решения такой задачи?

 ,

staseg
()

Багрепорт: не работают уведомления

Я подписан на тег lisp, однако уведомление с темы SLIME не получил. Я не совсем понимаю, как описываются исправления, но судя по всему сначала была создана тема, а потом исправлена с добавлением тегов. www.linux.org.ru/forum/development/8038044/history

Или это фича?

 

staseg
()

noscript-подписка на треды

Приветствую!

Верните пожалуйста возможность подписываться на треды с выключенными скриптами. По-моему никакой реальной необходимости делать это только аяксом нет.

 

staseg
()

linux 2.6.32 -> 3.2.12

Решил обновить генту, прошлый большой апдейт был около полугода или больше назад. Вопрос: появились ли в ядре какие-то новые фичи, не связанные с поддержкой устройств, которые стоило бы включить в новом конфиге?

ЗЫ. Вопрос не связан с решением какой-то конкретной проблемы, поэтому рука не поднимается отправить это в техраздел.

Перемещено mono из talks

 

staseg
()

LOR тормозит который день

У меня одного тормоза? Проблемы на сервере? Или опять какая-то падла статистику собирает?

staseg
()

Помогите перевести предложение

С русского на английский: сделать X, который бы удалялся, когда Y решит сказать.

У меня получается: do X that would be removed when Y decides to say.

Моих знаний ангельского хватает только на такой, почти дословный перевод. Гугл-транслейт выдает еще пару похожих вариантов, но как перевести это правильно? И где бы почитать доходчиво про конструирование таких выражений?

staseg
()

Вывод многоуровневого сообщения об ошибке

Привет!

Имеется система:

входные данные -> преобразователь1 -> преобразователь2 -> ... -> выходные данные.

То есть цепочка преобразователей, что-то вроде трубы cat | grep | sed | wc. В зависимости от входных данных цепочки, пройдя через ряд преобразователей, ошибка может быть обнаружена где-то в середине цепочки, и, чтобы в сообщении об ошибке отразить полную информацию о причине проблемы, хочется выдать не просто «преобразователь3: некорректное поле Х в позиции У», а собрать всю цепочку входных данных для каждого предыдущего преобразователя. Примерно:

IN: 2 a b 1 c 4 d e f ->
proc1 -> (2 a b) (1 c) (4 d e f) ->
proc2 -> (a b) (c) ... FAIL: too few fields in (d e f), received 3, expected 4.

И вот вопрос, как правильно (или принято? или просто элегантные идеи?) собирать такие сообщения воедино? У меня две мысли.

1. Внутрь каждого преобразователя отправлять вместе с входными данными и историю входных данных предшественников, в случае ошибки сигнализировать об исключении, в общем, что-то вроде ведения лога. Плюс: одно место обработки ошибки; минус: засорение интерфейсов преобразователей и как следствие возня с накоплением истории и усложнение вызовов последователей. Возможно, минус этот можно избежать, но ничего кроме еще больших костылей вроде глобальных переменных, в голову не лезет.

2. Каждый преобразователь умеет сигнализировать об исключении в рамках своих входных данных, но в то же время ловит исключения последователя, к этому исключению аттачит свои входные данные, бросает исключение еще выше и т.д. Плюс: мне кажется логичным. Минус: лапша однотипных обработчиков ошибок. Ок, в лиспе можно спрятать в макру, но как быть с этим например в С++?

Какие еще есть идеи? Уверен, что проблема типичная, но сформулировать краткий и емкий вопрос в гугл не получается.

 ,

staseg
()

Посоветуйте морской симулятор

Привет!

Подскажите пожалуйста игру в жанре морского симулятора, желательно про парусные кораблики. Суть такова: незадротское управление (поднять/спустить паруса, бросить якорь, повернуть, ветер, можно аркадное управление орудиями, в общем без хитрых заморочек как иногда любят делать в симуляторах) и более продвинутую боевую систему: баллистика, расчет повреждений (мачты, корпус, паруса, экипаж, пожары, потопы и т.д). Матросы набигают абордажами. Можно в антураже пиратов или еще чего-нибудь, не важно. Свободная игра или полное отсутствие сюжета только в плюс.

Раньше играл в нескольких корсаров, но сейчас они почему-то дико тормозят на седьмой венде и nvidia 450 даже на минимальных настройках, плюс дурацкое управление гг на суше, где меня из-за него постоянно убивают, даже не поплавать особо. Раньше с управлением как-то справлялся...

Еще играл в разные тотал воры, в последнем шогуне с последним патчем (длц?) морские сражения стали неплохи,но все равно примитивны, а индивидуальное управление кораблем там неудобное и вообще какое-то костыльное с оглядкой на стратегический уклон игры.

Есть ли что-нибудь еще интересное? Паруса необязательны, можно просто что-нибудь про кораблики. Как ни странно гуглится и википедируется этот вопрос тяжело.

Винда/линукс.

 

staseg
()

find

Приветствую!

Есть ли в Common Lisp стандартная функция поиска по списку со следующим поведением:

(??? 1 '(2 3 1 4 5)) => (1 4 5)

;имхо неочевидно, не хочу в коде такое размазывать
(subseq '(2 3 1 4 5) (position 1 '(2 3 1 4 5)))

Если такой функции нет, подскажите, как ее принято называть?

 

staseg
()

Уведомление

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

 

staseg
()

Фильтр на основе предыдущий данных

Привет!

Существуют ли стандартные способы/приемы фильтрации последовательностей, основываясь не только на текущем элементе, но и на предыдущих? К примеру задача: отфильтровать список так, чтобы остались только элементы, которые не больше предыдущего на N.

Как _принято_ решать такие задачи? Есть ли варианты помимо явного задания переменных и циклического прохода? Интересуют решения на CL, а также в общем синтаксис описания такой задачи. Правильные ссылки в гугл приветствуются.

 

staseg
()

Нецерзурщина

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

Тут Как насчет того, чтобы видеть список игнорастов?

staseg
()

Сделать теги регистронезависимыми

По-моему при поиске по тегам не нужно учитывать регистр букв тега. Например при поиске по тегу java было бы логично показывать сообщения и с тегом Java, и JAVA.

 ,

staseg
()

Datetime

Вопрос наверное глупый, но я запутался. Есть датавремя в формате unix timestamp (time_t). Нужно разложить его на человекочитаемые части: год, месяц, етц. Лисповые функции работают с Universal Time, в котором отсчет секунд ведется с 1900 года. Есть ли какой-нибудь правильный (стандартный или общепринятый) способ сконвертировать time_t в Universal Time? Или просто вручную добавить к time_t 70 недостающих лет?

 

staseg
()

[white2] [Флеш!11] Статический флешовый пингвин в логотипе

Даже мелкий пингвин не возвращает той ламповости, что была в прежней white2. Но большого уже вряд ли, так что и на том спасибо.

У меня только один вопрос: кто такой сообразительный запихал картинку во флеш? :)

staseg
()

white2 стала ужасной

Это специальная политика ухудшения альтернативных тем, чтобы все перебрались на тангу? Или зачем это делается?

staseg
()

RSS подписка на новые темы