LINUX.ORG.RU

Сообщения LORd

 

посоветуйте Java -Maven открытые проекты

Доброго времени суток!

Послезавтра будет собеседование, pair programming. Меня просили установть Eclipse, они пришлют maven проект над которым предстоит совершать действия во время собеседования.

Будучи пользователем продуктов JetBrains, с Eclipse-ом не очень знаком, хотелось бы зараннее импортнуть пару проектов, позапускать тесты, посмотреть хоткеи.. в общем осмотреться.

Посоветуйте, пожалуйста, парочку Java/Maven проектов для этой цели?

Зараннее большое спасибо!

 

LORd
()

[ООП головного мозга] посоветуйте паттерн

Дорогие друзья,

Подскажите пожалуйста стандартное ООП решение следующей задачи:

есть множество продуктов, разделенных на классы. И должны быть возможности:

  • возможность добавлять продукт существующего класса;
  • возможность редактировать существующий продукт;
  • вывод продукта в клиентской части.

Как такая типичная задача решается с помощью ООП и паттернов?

Поясню где у меня затык: поскольку продукты разделены на классы, то само собой напрашивается ввести для каждого класса продукта свой class, который содержал бы уникальные для этого класса продукта свойства:

class Hammer
  - size
  - weight
  - material

class Mug
  - color
  - photo

class Cat
  - age
  - tail length

Но как быть дальше? Например, чтобы администрировать продукт, логично было бы определить интерфейс для генерации админ. формы и применения ее результатов к объекту:

interface IEditable
    - getAdminForm() : Form
    - applyChangesFromForm(Form form)

и сказать, что каждый класс реализовает этот интерфейс.

class Hammer implements IEditable ...

В этом случае где-то в админской части будет код вида

       drawAdminForm(IEditable item)
, через который все продукты будут администрироваться.

Но в этом случае получается что Hammer:
1. будет содержать какой-то низкоуровневый код для генерации формы;
2. будет привязка к конкретной реализации формы.

Другой вариант вынести код из Hammer:

class HammerConcreteAdminForm implements IHammer
         /*ctor*/ HammerConcreteAdminForm(Hammer hammer) {...}
Но, поскольку HammerConcreteAdminForm очень тесно связана с Hammer, то хочется как-то его инкапсулировать в него. Иначе, например, добавили новое свойство в Hammer, забыли исправить HammerConcreteAdminForm и получили баг.

Как быть?

UPDATE: предполагается, что логика генераций форм для разных типов продуктов разные, то есть вариант «возвращать список полей и генерить форму внешним генератором форм» не подходит

LORd
()

[javascript][ООП головного мозга] callback на метод объекта

Дорогие друзья.

Хочется передать в качестве параметра конструктора объекта метод другого объекта, чтобы была возможность вызова этого метода позже, но в контексте объекта-хозяина метода. Как это можно проще сделать? Пока что придумал только регистрацию b в глобальном неймспейсе и вызова его через eval... можно ли как-то изящнее это решить?

Зараннее спасибо.

       A = function(_callback) {
		this.m_callback = _callback;
		this.m_val = "a";

		this.callCallback = function() {
			this.m_callback();
		}
	}

	B = function() {
		this.m_val = "b";
		
		this.showMyVal = function() {
			alert(this.m_val);
		}
	}
	
	b = new B();
	a = new A(b.showMyVal);
	a.callCallback(); // показывает "a", то есть вызывается в конексте a. Хочется чтобы вызывался в конексте b.

 

LORd
()

[firefox] он оптимизирует javascript?

Всем привет,

Наблюдаю такую картину: в страничке есть javascript-ы такого вида:

s = "<img src=\"/images/object_" + oid + ".jpg\" />";

Если открыть страничу в огнелисе 3.6.17, то в логе апача появляются записи вида «GET /%5C%22images/object_%22%20+%20oid%20+%20%22... итд. Такое ощущение, что огнелис пытается проделать некоторый анализ кода и зараннее загрузить картинки, и понятно шлет всякую чушь в результате.

Действительно ли это так? Нужно ли с этим что-нибудь делать? может быть переписать javascript чтобы в нем не было <img подстрок? Забить? (не хочется забивать лог явным мусором) Что можно почитать по этой теме?

Спасибо за внимание.

 

LORd
()

[С++][полиморфизм] цепочка наследований

Дорогие друзья,

Объясните пожалуйста феномен:

class A // base
{
public:
    virtual void method()
    {
        std::cout << "A";
    }
};

class B : public A // B->A
{
public:
    void method()
    {
        std::cout << "B";
    }
};

class C : public B // C->B->A
{
public:
    void method()
    {
        std::cout << "C";

    }
};
...
...
int main(...)
{
   ....
   A * a = new C;
   a->method(); // печатает C
}

.... не первый год использую плюсы в повседневности, но ... почему вызывается не B::method() ? Какая здесь логика?

 

LORd
()

Бонусы

Друзья,

работаю девелопером, получаю среднюю зарплату (ближе даже к джуниоровской) по нашему Мухосранску, N рублей. Но компания выплачивает приличные бонусы: если разделить мой годовой доход на 12, то получится, что на самом деле моя зарплата N*1.5 рублей.

Внимание, вопросы!

1. Насколько на рынке труда это распространенная практика: большие бонусы для обычных девелоперов?

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

3. СтОит ли прилагать усилия и пытаться устроиться на работу девелопером с зарплатой в N*1.5 (на такую зарплату набирают девелоперов с опытом)? Не будет ли это обмен шила на мыло?

LORd
()

[Qt]QString readonly доступ из разных потоков

Уважаемые гуру,

Волнует вопрос: безопасно ли доступаться к одной QString в режиме readonly из разных потоков без мьютексов? Написал маленький тест, он работает, но все-таки хочется увидеть описание в документации/подтверждение: «да мол, все правильно, чувак, не боись». Я так понимаю, нужно копать в сторону implicit sharing & threads, но из этих нескольких абзацах ничего не понял:

http://doc.qt.nokia.com/qtopia4.2/threads.html#threads-and-implicit-sharing

больше информации не нашел.

Про контейнеры например явно сказано: «The container classes are implicitly shared, they are reentrant, and they are optimized for speed, low memory consumption, and minimal inline code expansion, resulting in smaller executables. In addition, they are thread-safe in situations where they are used as read-only containers by all threads used to access them.»

static QString commonString  = "abc";
class FooThread: public QThread
{
public:
    FooThread() : QThread(NULL) {}

    void run()
    {
        while (1) {
            QString qqq = commonString; // "copy" test
            if (commonString == qqq) { // "is similar to" test
                QString qqq = "horay";
            }
        }
    }
};

int main(int argc, char *argv[])
{
    QCoreApplication _a(argc, argv);
    
    {
        FooThread a;
        a.start(QThread::HighestPriority);
        FooThread b;
        b.start(QThread::LowestPriority);
        std::cout << "Press any key to quit ";
        getch();
    }
}

 

LORd
()

[фаллометрия][c/c++] regexp

Уважаемы аналитики,

подскажите пожалуйста самую быструю кросплатформенную либу для regexp-ов, сишную или крестовую.

Спасибо :)

LORd
()

[размышления]Так ли убог C++ как его малюют?

Стандартный набор аргументов хаяльщиков C++ следующий:

небезопасный, нет сборщика мусора; можно попортить память и сидеть много лет под дебаггером.

В любых более-менее серьезном проекте, не важно какой язык Java/C++/Lisp/whatever, пишут документацию и тесты (лисперы ведь пишут тесты, правда?). Так что у ошибок вида delete NULL и пр. нет шансов. А если какой-то тест падает - то тем проще найти и исправить: какая-нибудь JAVA просто многозначительно промолчит и в релиз войдет бага.

шаблоны == синтаксический сахар, ООП сложен и для гиков.

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

Мое ИМХО: ругают C++ исключительно ниасиляторы, продвигая вперед тем самым маркетинговые машины всяких Java c .NET-ами. А создание действительно качественного софта, будь то C++/Java/.NET, соизмеримы как по деньгам, так и по срокам. Другое дело что ынтерпрайз порой клал на качество... среднее и низкое качество на Java/.NET наверное выходит дешевле.

Ы?

 

LORd
()

вопрос лицензирования частично открытого кода

Доброго времени суток,

Пишем online игрушку, есть мысль сделать ее «частично открытой», а именно открыть все, кроме секурности.

Такой вопрос: если открывать код под GPL, могут ли нас обязать в судебном порядке открыть оставшийся закрытый код?

Зараннее спасибо за ответы.

LORd
()

Автоматическое тестирование сложных систем: хочется совета

Всем доброго времени суток.

Вопрос №1.

Как писать юниттесты к функциям и классам, которые получают что-то на вход и возвращают какой-то результат, вроде понятно: подаем input, сравниваем output с ожидаемым.

А как протестировать что-нибудь более хитрое? Например: сервер(неважно какой) результат своей деятельности записывает в базу данных, эти данные просматриваются через веб интерфейс (обновляются ajax-ом), к серверу коннектятся клиенты, которые вносят свои данные/изменения, + там же где-то еще и оповещения менеджерах о некоторых событиях.

Логика подсказывает, что это все нужно разбить на компоненты и тестировать их по отдельности. А как тестировать их взаимодействие (например, что джаваскрипты не сломали и они отправляют «правильные» запросы и запросы «правильно» отвечают)? Или сложные действия: реакция сервера на получение «плохих» данных от клиента итд?

Как это происходит в реальной жизни (в продакшне)?

Вопрос №2.

Не посоветуете ли какую-нибудь литературу по вопросу №1?

Спасибо за внимание.

LORd
()

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