LINUX.ORG.RU

Сообщения www_linux_org_ru

 

cross-platform intaller generator — чтобы из одного конфига генерил deb, rpm и windows msi (допустим, для самописной игры с libsdl)

Не обязательно msi — но чтобы была принятая в виндах деинсталляция; можно еще и маковский пакет.

Требования простые — раскидать файлы по правильным директориям (причем на винде директорию, видимо, придется спрашивать) и сделать несколько шорткатов в десктопное меню. Хотя бы. (Под виндой «правильной» будет единственная директория; под линуксом — несколько: бинарник в /usr/bin, остальное — ...)

Википедия и гугл дают InstallJammer и IzPack;

IzPack, если не ошибаюсь, требует на этапе инсталляции яву и представляет собой замену пакетов (deb, rpm), а вовсе не генератор этих пакетов

InstallJammer, если не ошибаюсь, тоже вместо генережа пакетов (deb, rpm) на этапе инсталляции показывает tcl/tk-шную морду (морду с кучей свистелок конечно, типа «выбрать какие компоненты ставить, а какие нет», но это не нужно)

З.Ы. обоих не пробовал — сужу по их докам (сижу на дорогом инете, сорри)

Если кто не понял — SDL (и mingw-че-то-там) позволяет из одного исходника под линуксом сбилдить и линуксовый бинарник, и виндовый экзешник; хочется инсталлер сгенерить тоже с одного конфига.

www_linux_org_ru
()

Есть ли смысл держать блог на каком-то сайте (а-ля blogspot.com), если знаешь html/css/js/php/sql/c++? Они хоть slashdot effect держат?

Так что налобать свой бложик проблем нет (даже с жесткими требованиями по памяти-процу), а вот есть ли смысл изучать допустим то, что предоставляет blogspot.com? Или может другой блог имеет некие киллер-фичи, типа защиты от slashdot effect?

Всякие их дебильные wysiwyg-ности не интересуют совсем.

«Защита от slashdot effect» означает обслуживание ВСЕХ реквестов, а не тупое посылание пакета, превысившего лимит по каким-то критериям, в iptables drop — это я и сам могу тоже.

UPDATE: некоторые вроде как грамотные IT-шники держат свои многогодовые блоги на быдло^Wblogspot, тогда в чем бонус? Что я пропустил?

www_linux_org_ru
()

proposed feature: флажок «флейм и оффтопик запрещен», который топикстартер может выставить на свою тему + запрет модераторам удалять флейм и оффтопик, если этот флажок не стоит

Как показали недавние обсуждения, некоторым пользователям хочется иметь технические обсуждения без флейма. Ладно Сильвия, но есть например Slavaz, который, емнип, пилит mc, поэтому я считаю, что к этому мнению надо прислушаться. Мне тоже иногда хотелось ответ на мой вопрос без флейма и оффтопика, но их наличие особо не мешало.

Поэтому предлагаю — ввести флажок «флейм и оффтопик запрещен»; этот флажок ставит топикстартер, и в этом случае модераторы имеют право удалять флейм и оффтопик — обсуждение должно проходить сухо и по-деловому; если же такого флажка нет — модераторы НЕ ИМЕЮТ право удалять флейм и оффтопик, а следят только за отсутствием мата и личных оскорблений; в технических разделах еще может быть стоит разрешить удалять нацпол. Модераторы НЕ ИМЕЮТ право выставить этот флажок.

Соответственно поменять правила, приведя таким образом их к тому, чем реально являтся лор (вспомним пингвина в боксерских перчатках).

Флажок применим в тех. разделах и толксах — иногда хочется спросить что-то, что в другие разделы не подходит. В новостях его выставить невозможно даже модераторам — только димез-у или макском-у (чтобы модераторы не злоупотребляли им) по предварительной заявке автора новости, поданной в linux-org-ru

Желательно: иметь возможность снять этот флажок (без дальнейшей возможности снова его выставить) и/или автоматически снимать его тогда, когда тема стала решенной.

Оно, конечно, опасно, что лор станет еще более унылым, но с другой стороны, никто не мешает перепостить сообщение топикстартера с другим флажком, добавив туда своего флеймогонного материальчика.

Дискасс.

UPDATE: поступило предложение не вводить флажок, а выделить под тех. флейм разделы General и Новости; в остальных разделах оставить сухое решение вопросов.

www_linux_org_ru
()

maxcom, если не последует ответ на заданные неделю назад 2 вопроса, то я вынужден буду считать, что ты поддерживаешь поступок Pi и не одобряешь флейм с техническим бэкграундом

речь об этом: http://www.linux.org.ru/forum/linux-org-ru/4931242

если одной недели на обдумывание и/или обсуждение не хватило, то можно подумать еще, но укажи пожалуста ориентировочный срок

еще немного добавлю:

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

студентам быдловузов, где преподы не принимают правильно решенную задачу на основании того, что она сделана не по Гениальной Методичке препода, возможно, абсолютная власть модераторов покажется нормальным явлением; однако, допустим, на матмехе СПбГУ это (не-прием-правильного-решения) мне вообще представить невозможно; я также никогда не наблюдал, чтобы препод говорил что-то типа «не тебе это решать» — упор всегда делается не на личность, а на правильность и доказательство

ранее ЛОР представлял собой именно такое место, где признавались не авторитеты, а знания, сообразительность и аргументы; что ты планируешь сделать из него в будущем?

www_linux_org_ru
()

[to maxcom] Pi не имеет достаточно знаний или мозгов для модерирования development

вот что он недавно потер:

Сообщение удалено Pi по причине '4.3 Провокация flame (-7)'

И теперь в общем вопрос, можно ли удобно работать с такой вот структурой, не имея двух вариантов типа данных, один немутабельный и один для ST?

это слабое место хаскеля, посмотрим, как хаскелисты будут выкручиваться

/me побежал за чипсами

www_linux_org_ru (25.05.2010 21:58:49)

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

http://www.haskell.org/haskellwiki/DDC/EffectSystem

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

3. «/me побежал за чипсами» безобидно вообще, не говоря уже о ЛОРе

При наличии знаний Pi бы понял о чем речь, при наличии мозгов понял бы, что за моими словами есть что-то кроме эмоций.

___________________________________________________________

UPDATE: примером того, что умение «выкручиваться» является частью образования является с++: в с++ отстутствует параметрический полиморфизм, и частью образования плюсиста является умение в некоторых случаях выкручиваться — применять вместо него шаблоны, возможно с кастами внутри них

___________________________________________________________

UPDATE_2: флейм с техническим бэкграундом, имхо, с точки зрения достаточно широкого круга является killer feature ЛОРа (а отнюдь не протухшие новости). Будет такой флейм дальше подавляться или поддерживаться и развиваться?

Это ключевой вопрос.

www_linux_org_ru
()

[c++] кто тупит — я или g++? что скажут владельцы icc?

#include <iostream>

typedef unsigned int uint;

template<class D> struct Array { };

template<uint n, class D> struct Alias
{
    typedef Array<D> Arr;
};

template<uint n, class D> float scalar_product( Array<D>& x,  Alias< n, D > :: Arr& y ) { return 0; }

int main(int argc, char** argv)
{
    Array<uint> aa;
    std::cout << scalar_product(aa, aa) << '\n';
    return 0;
}

пробовал g++ 4.1.1 и 4.3.2

test2.cxx:12: error: ‘struct Alias<n, D>::Arr’ is not a type <--- это чо?

test2.cxx: In function ‘int main(int, char**)’:

test2.cxx:17: error: no matching function for call to ‘scalar_product(Array<unsigned int>&, Array<unsigned int>&)’ <--- а это понятное следствие

UPDATE: если вас путают разные uint-ы, то можно s/Array<uint>/Array<float>/

 

www_linux_org_ru
()

верните полный список страниц на главной

речь о том, что сейчас: [Добавить комментарий] [354 комментария (стр. 8)]

а было: [Добавить комментарий] [354 комментария (стр. 1 2 3 4 5 6 7 8)]

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

или хотя бы 5 последних: [Добавить комментарий] [354 комментария (стр. ... 4 5 6 7 8)]

но это тоже поощрит неосиляторов.

www_linux_org_ru
()

Casus, ты не прав: ЛОР проживет без модераторов

Casus написал: http://www.linux.org.ru/jump-message.jsp?msgid=4842789&cid=4843860

> Ибо без модераторов ЛОР проживет, а вот без посетителей...

Первая часть утверждения — заблуждение. Абсолютная помойка, а так и будет, если не прибирать за некоторыми, не интересна адекватным посетителям.

Отвечаю:

проживет;

адекватные пользователи разгребут помойку без Неоценимой Помощи Модераторов — имеется игнор, куда попадут неадекватные пользователи (в т.ч. анонимус, если будет неадекватен)

у анонимусов нет игнор-листа? ну так

анонимусы != все_адекватные_пользователи_ресурса

и кстати игнор-лист в куках без проблем пишется на ява-скрипте

Хотя я и не предлагаю «всех вон из модераторов» — в модерировании анонимуса и беззвездочников польза от модераторов явно превышает вред.

UPDATE: подтверждение или удалении скриншота является чуть более чем полностью субъективным, и нет проблем его залить на другой хостинг; а новости без модераторов может подтверждать или удалять макском, как в старые добрые времена :-)

www_linux_org_ru
()

есть ли (разумной цены) устройства для определения, где обрыв в проводе?

Провод допустим телефонный или для сети 100МБит.

UPDATE: «где» означает «в каком месте по *длине* провода», а не «в какой жиле».

UPDATE: (разумной цены) это видимо до $200, а точность хотя бы до метра.

UPDATE: прокалывание изоляции не предлагать.

www_linux_org_ru
()

[в продолжение темы, закрытой модераторами] саныч, нечего тупняк разводить

были бы мозги, так:

1. прочел бы свою фразу «Большинство широко используемых языков программирования — тьюринг-полные.»

2. понял бы, что могут быть широко используемые, но не тьюринг-полные языки программирования

3. задал бы вопрос о них

З.Ы. А еще необходимость К-комбинатора не столь очевидна... так что рождаются мысли о не-тьюринг-полном языке без него. Сюда же просится рассуждение на тему «языки-то тьюринг-полны, но отнюдь не полны с точки зрения программиста» и попытки порассуждать на тему «как определить полноту языка с точки зрения программиста», вспоминая DRY например.

З.Ы.Ы. Модераторы? Нафига вы закрыли ту тему в ЛОР для не-модераторов? Или даже в том случае, когда модераторы действуют разумно, единственным оправданием их действий является административный ресурс? Это неспортивно.

З.Ы.Ы.Ы. Саныч, хочется устроить срач, но тема не придумывается — так лучше попроси. Темы есть.

www_linux_org_ru
()

[Qt] что прочитать на тему создания интерфейса к таблицам БД?

Посоветуйте по теме какие-то из (необозримых) доков кути и/или посторонние туториалы.

Чтобы делать интерфейс к таблицам БД в виде

1. таблицы с текстовыми полями ввода (с выпадающей историей/иными предложениями), выпадающими списками, своими виджетами в ячейке

2. формы с тем же хозяйством, с возможностью рефрешить одни виджеты при изменении других виджетов

И еще вопрос: а есть возможность печатать (на бумагу) кутишные формы? При этом их надо показывать чуть по-другому — например, убирать пустые строки ввода (где сейчас стоит курсор), лишние иконки и т.п.

З.Ы. в ответах на тему кути иногда говорят «лучше спроси на ...», напомните этот сайт

 

www_linux_org_ru
()

еще один аргумент в пользу юзерского пакетного менеджера (в дополнению к рутовскому)

1. В КДЕ-шных редакторах (kate, kwrite, kdevelop, предположу что в qt creator) юзаются схемы цветовой подсветки. Так вот, глубоко в настройках имеется кнопочка [download], позволяющая скачать обновления этих схем с сайта. При этом (по крайней мере с первого взгляда) кажется, что это сделано внутри программы, и скрипт, качающий обновления, не запустить по крону; также нельзя зафиксировать список тех языков, обновлять которые не нужно.

Предлагаемое решение: ставить эти схемы как пакеты «от юзера».

2. Иногда приходится иметь разные версии библиотек для разных проектов. Можно было бы собирать эти проекты под разными юзерами, и опять же держать эти библиотеки как пользовательские пакеты.

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

Дискасс.

З.Ы. наличие внутри настроек кнопки [download] — зло. А что кроме юзерских пакетов можно предложить взамен нее?

З.Ы.Ы. запостил это в Development, так как аргументы приводятся от лица девелопера, но не возражаю переносу в другую ветку.

www_linux_org_ru
()

[english] как называются такие конструкторы?

struct Point {
  int x, y;
  Point(int x_, int y_): x(x_), y(y_) {}
};

А еще лучше киньте ссылку на статью, где считали процент таких конструкторов в довольно большом куске кода (ЕМНИП че-то из проектов apache foundation) и насчитали порядка 30%. (Я вот найти ее хочу, да забыл как эти конструкторы там называли :-()

 

www_linux_org_ru
()

[алгоритм] задача про лампочку и заключенных

Имеется К пожизненно заключенных. Администрация тюрьмы собирает *всех* их вместе и дает возможность всем им выйти из заключения. Условия:

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

Если кто-то из заключенных скажет «в этой камере побывали все заключенные», и это правда, то всех заключенных выпускают. Если не правда — *всех* расстреливают.

Пока еще все заключенные вместе, и могут посовещаться и выбрать алгоритм(ы) поведения.

Упрощенный вариант задачи: каждый день в камеру помещают ровно одного заключенного, первый пойдет завтра. Известно, что лампочка выключена.

Полный вариант: неизвесно ни состояние лампочки сейчас, ни сроки пребывания в камере.

Объяснение условия: нужна 100% уверенность в том, что заключенных не расстреляют, однако вовсе не требуется, чтобы заключенные освободились *сразу*, как только все пройдут через камеру.

З.Ы. интересно, кто автор задачи?

 

www_linux_org_ru
()

[Haskell][Java] а что (template?) haskell может противопоставить аннотациям?

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

public @interface DBTable { String value; }
public @interface DBField { String value; }

@DBTable("forum_users") class User
{
  @DBField("email") String email;
  @DBField("f_name") String first_name;
  @DBField("l_name") String last_name;
};

class DBAccess
{
  public void Load(Object o, int key) { ... }
  public void Save(Object o, int key) { ... }
}

Функциям Load и Save не нужно указывать названия таблиц (и полей), куда сохранять объекты — они их узнают сами из аннотаций.

Теперь вопросы:

1. Делается ли это на хаскеле (только без извращений типа передачи каждой буквы строки «f_name» отдельным фантомным типом или тайпклассом)?

2. Делается ли это готовой библиотечкой на template haskell?

P.S. Вам не кажется, что это чем-то напоминает зависимые типы?

P.S.S. Для тех, кто хочет, что ВСЕ проверялось во время компиляции: члены аннотации могут быть не только строками, но и перечислениями. Т.е. внешним скриптом, исходя из схемы базы данных, можно сгенерить соответствующие таблицам БД enum-ы и ловить любую опечатку в названии таблицы или ее поля (пример приводить лень, сорри).

 ,

www_linux_org_ru
()

[c++] так все-таки баг языка или компилятора? (у кого есть icc, посмотрите)

В случае op_x и op_y копилятор, ИМХО, позволяет создать неконстантную ссылку на временный объект, который затем деструктируется. В совершенно аналогичном им op_z компилятор это не позволяет.

Выхлоп показывает, что с4 и с5 — это ссылки на мертвые объекты (т.е. объекты, у которых отработал деструктор)

#include <iostream>
using namespace std;

class C
{
public:
  C(int i): i(i), s("live") { cout << "ctor: " << i << endl; }
  C operator+(const C& c)  { cout << "plus: " << i << "+" << c.i << endl; return C(i+c.i); }
  C& operator+(int ii) { cout << "op_x: " << i << "+" << ii << endl; i += ii; return *this; }
  C& op_y(int ii) { cout << "op_y: " << i << "+" << ii << endl; i += ii; return *this; }
  friend C& op_z(C& that, int ii) {
    cout << "op_z: " << that.i << "+" << ii << endl;
    that.i += ii;
    return that;
  }
  void info() const { cout << "info: " << i << " " << s << endl; }
  ~C() { s="dead"; cout << "dtor: " << i << endl; }
private:
  int i;
  const char* s;
};
int main()
{
  C c1(1);
  C c2(2);
  const C& c3 = (c1+c2);
  const C& c4 = (c1+c2)+1;
  const C& c5 = (c1+c2).op_y(2);
  c1.info();
  c2.info();
  c3.info();
  c4.info();
  c5.info();
#ifdef C6
  const C& c6 = c3+3;
  c6.info();
#endif
#ifdef C7
  const C& c7 = op_z(c1+c2, 4);
  c7.info();
#endif
  return 0;
}

$ g++ -DC6 -Wall b.cxx
b.cxx: In function ‘int main()’:
b.cxx:35: error: passing ‘const C’ as ‘this’ argument of ‘C& C::operator+(int)’ discards qualifiers
$ g++ -DC7 -Wall b.cxx
b.cxx: In function ‘int main()’:
b.cxx:39: error: invalid initialization of non-const reference of type ‘C&’ from a temporary of type ‘C’
b.cxx:11: error: in passing argument 1 of ‘C& op_z(C&, int)’
$ g++  -Wall b.cxx
$ ./a.out
ctor: 1
ctor: 2
plus: 1+2
ctor: 3
plus: 1+2
ctor: 3
op_x: 3+1
dtor: 4
plus: 1+2
ctor: 3
op_y: 3+2
dtor: 5
info: 1 live
info: 2 live
info: 3 live
info: 4 dead
info: 5 dead
dtor: 3
dtor: 2
dtor: 1
$

**/

 

www_linux_org_ru
()

спаммер valen_1984

гляньте на его сообщения

www_linux_org_ru
()

[c++] можно ли (1) недопустить «лишнее» наследование или (2) узнать реальный класс в конструкторе или (3) сделать надежный pattern matching

Вот пример (наивной) попытки:

template<class T1, class T2> class MatchableFor
{
public:
  MatchableFor(): what(0) 
  { 
    if(настоящий класс это не T1 и не T2, узнается с помощью (2) )
      throw SomeError;
    else if( настоящий класс это T1 )
      what=1;
    else if( настоящий класс это T2 )
      what=2;
  }
  virtual void run(Runnable< MatchableFor<T1,T2> > r1, Runnable< MatchableFor<T1,T2> > r2) 
  {
    what==0 ? throw SomeError : 
    what==1 ? r1.run(dynamic_cast<T1*>this) :
    what==2 ? r2.run(dynamic_cast<T2*>this) :
              throw SomeError; 
  }
private:
  int what;
};
class Child1;
class Child2;

struct Parent: public MatchableFor<Child1, Child2>
{
  virtual void do_something()=0;
};

class Child1: public Parent { void do_something() { f(); } }; // ok
class Child2: public Parent { void do_something() { g(); } }; // ok
class Child3: public Parent { void do_something() { h(); } }; // а вот это можно недопустить с помощью (1)

вроде бы (2) вообще невозможно, а (1) и (3) мне неизвестно

 

www_linux_org_ru
()

[по мотивам fprog] как сделать «обратный» DSL на haskell (а не ocamlp4)

http://fprog.ru/2009/issue3/dmitry-astapov-alexey-shchepin-building-google-wa...

Хочется то же, но на Хаскель.

1. Хаскель или примочка к нему позволяют иметь доступ хотя бы на чтение к AST?

2. Альтернативно мы можем определить какой-то параметризованный тип данных, который бы например сумму своих двух значений не вычислял, а отдавал бы выражение (надеюсь, идея понятна):

a + b = AST_Node_Plus a b

вопрос в том, обломится ли такой подход — ведь перегружать надо ВСЕ, в том числе так сказать «функцию паттерн матчинга» и «функцию определения функций».

www_linux_org_ru
()

[opera] как заставить оперу включать по умолчанию cached images? и еще странности ad-blocker-a

Speed Dial по умолчанию идет с загрузкой изображений, как настроить на ней по умолчанию cached images — не нашел.

Какой-то странный ад-блокер у нее — на лоре категорически не хочет блочить фрейм с айбиэмевской рекламой и счетчик mail.ru. Как?

И вообще киньте ссылочкой по прикручиванию к ней чего-нить своими руками — особенно блокировать рекламу.

 

www_linux_org_ru
()

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