Имя: Пароль:
IT
 
ERP "Галактика" раздается бесплатно!
0 Stagor
 
22.03.10
13:46
1 Advan
 
22.03.10
13:48
У них так все плохо?
2 Stim
 
22.03.10
13:50
«В планах на 2010 г. – получение порядка сотни заказчиков на поддержку, которая стоит 70 тыс. руб. в год"

Бугага. Ему проще было бы работать рядовым одинесником)
3 Naumov
 
22.03.10
13:52
я уж думал, что они совсем сгинули.
4 Волшебник
 
22.03.10
13:52
Компания «Галактика» разработала бесплатные варианты своих ERP и BI систем. Оплачивать предлагается только поддержку и внедрение. Основная мотивация компании – получение клиентов из сегмента среднего бизнеса.

Функциональность бесплатных вариантов ПО ограничена по сравнению с их платными аналогами.
5 kiruha
 
22.03.10
13:55
Когда еще не было 8 Галактика реальном могла заграбастать весь этот сегмент.
6 Волшебник
 
22.03.10
13:56
(3) Годовая выручка компании в 2009 г. составила, как и год назад, около 1 млрд руб.
7 dervishsy
 
22.03.10
13:56
Так и не понял обязательно ли покупать поддержку или можно самому скачать и установить?
8 kiruha
 
22.03.10
13:57
А теперь уже поздновато
9 trdm
 
22.03.10
13:57
(0) синьюс как всегда лажает с ссылками на мессадж.
Нет ссылки на официальный сайт с сесагой.
Ихним ньюсмейкерам только для туалетной бумаги новости готовить....
10 Stagor
 
22.03.10
13:57
(Функциональность бесплатных вариантов ПО ограничена по сравнению с их платными аналогами.)
вопрос насколько сильно?
Если бесплатный функционал Галактики, хотя бы равен УПП 1.3 ...
11 Ненавижу 1С
 
гуру
22.03.10
13:58
у них там все под .NET? Ссылки есть для скачиваний?
12 VitGun
 
22.03.10
13:59
>> Затраты среднего клиента на внедрение ERP-системы он оценил в 300 тыс. руб

остальные 30 лярдов баксов это что? распилы-откаты?
13 dervishsy
 
22.03.10
14:00
14 Ненавижу 1С
 
гуру
22.03.10
14:01
(13) что-то много она весит
15 kiruha
 
22.03.10
14:02
(9)
Ссылка с официального сайта
Цель проекта - бысторе и эффективное внедрение полнофункциональной бесплатной ERP системы Галактика Экспресс на предприятиях среднего размера в России, Украине, Беларуси и Казахстане

http://code.google.com/p/galaktika-express/
16 kiruha
 
22.03.10
14:03
1. Система Галактика Экспресс СРВ. Объем загрузки ~550Мб
  2. Утилиты Support для Галактики Экспресс СРВ, включая среду разработки Viper. Объем загрузки ~50Мб
17 nop
 
22.03.10
14:04
Галактика в опасности!
18 trdm
 
22.03.10
14:07
(13) (15) Я про си-ньюс говорил.
(17) Им бы по примеру 1С-са с минфином скорешиться. Иначе даже не всплывет...
19 kiruha
 
22.03.10
14:09
Пренос данных, настройка, адаптация
из 8.1,8.2 в Галактика Экспресс, недорого
20 nop
 
22.03.10
14:11
(18) так уже поздно
21 Asmody
 
22.03.10
14:12
почему в коде страниц сайта "Галактики" встречается слово "bitrix"? :)
22 Mikeware
 
22.03.10
14:15
(21) А что, там должно только "ваш кролик писал" встречаться? :-)
23 Asmody
 
22.03.10
14:17
(22) ну, например, в коде страниц этого сайте слово "bitrix" не встречается
24 kiruha
 
22.03.10
14:23
>>

#  Количество рабочих мест, одновременно использующих функциональность Решения "Галактика Экспресс ВРП" ограничено 15.

15 чел - маловато...
25 kiruha
 
22.03.10
14:24
И сервер приложений не входит
26 Stagor
 
22.03.10
14:26
(24) Для развивающегося бизнеса - нормально!
(25) При 15 юзерах - не нужен
27 proger2011
 
22.03.10
14:29
(26)

"Для развивающегося бизнеса - нормально!"

Очень недальновидное решение. А потом ещё потратить кучу бабла на переход на УПП :)))
28 Stagor
 
22.03.10
14:29
(27) Докупить платную галактику
29 dervishsy
 
22.03.10
14:36
Еще хреново что она только с платными БД работает.Можно конечно поставить Express версии БД, но это только на поиграться.
30 proger2011
 
22.03.10
14:38
(28) Тогда это называется замануха :))) Ну в баню эту Галактику...
31 trdm
 
22.03.10
14:38
(30) Ясен пень замануха.
"В нашей мышеловке самый вкусный сыррррр"
32 Ksandr
 
22.03.10
14:39
дайте скрин поглядеть)
33 dervishsy
 
22.03.10
14:39
(30) Ну почему замануха Microsoft выпускает же Express Версию SQL сервера
34 kiruha
 
22.03.10
14:39
Посмотрел презентацию - формы еще как в 7.7 )))

Если точнее - как в самоделке на Delphi 10 летней давности.
35 proger2011
 
22.03.10
14:41
Как то переводил с Галактики на УПП. Это жуткое нечто криворуких студентов...
36 nick slaughter
 
22.03.10
14:46
Была где то история, как эту Галактику писали/создавали. Ржач. Вот уж действительно поделка студентов криворуких. Сам не пробовал. Там действительно все так плохо?
37 ado
 
22.03.10
14:49
(35) Хе. Почитать, что тут про УПП писали ...
38 Холст
 
22.03.10
14:50
небось как бесплатный БЭСТ -только с православными MS Windows + MS Office
39 Барбариска
 
22.03.10
14:52
Ой, а у меня даже совершенно лицензионный диск есть
Задаренный клиентом, пользующимся 1С7.7
Все никак руки не доходят посмотреть... хотя бы для объективности суждений ))
40 NikVars
 
22.03.10
14:55
http://cnews.ru/reviews/free/2008/articles/top100.shtml
   1С    - выручка 10 128 000 тыр людей 1000
Галактика - выручка  1 025 000 тыр людей 690
По - моему показательно.
41 Ненавижу 1С
 
гуру
22.03.10
14:57
(34) если будет летать, то я смирюсь с видом форм
42 proger2011
 
22.03.10
14:57
(40) Думаю что цифры фуфлыжные. С галактики куча контор уже давно спрыгнула. Сам перевёл несколько контор.
43 nick slaughter
 
22.03.10
14:59
Голактеко опасносте...
44 ado
 
22.03.10
15:00
(40) Кто все эти люди?
45 NikVars
 
22.03.10
15:01
(44) Это те, кто может сделать в 10 раз меньше одинэсника.
46 ado
 
22.03.10
15:04
(40) Интересно, Яндекс ИТ-компанией не считается?
47 NikVars
 
22.03.10
15:11
Мне тоже интересно!
48 DjSpike
 
22.03.10
15:26
под wine не работает, нативной версии для linux - нету... Закопайте галактику....
49 kiruha
 
22.03.10
15:39
(41)
>>если будет летать, то я смирюсь с видом форм

Ну 7.7 на 1С++ у многих вполне себе летает.
Шило на мыло менять ?

Хотя пардон - про Галактику еще неизвестно что она летает
50 Vovan1975
 
22.03.10
15:58
Поддерживаю оратора в (35)
51 Vovan1975
 
22.03.10
15:58
(49) Не заморачивайтесь - не летает.
52 aka MIK
 
22.03.10
16:01
Кто нить скачал посмотреть?
53 trdm
 
22.03.10
16:15
(52) Лично я не собираюсь. Меня уже давно тошнит от закрытых систем.
И бесит от невозможности порешать мелкие проблемы..
54 Vovan1975
 
22.03.10
16:17
(53) Как вспомню остаток в сумме 0.0000000000001 .......
55 ado
 
22.03.10
16:33
(53) Ууууу, как я вас понимаю ...
56 trdm
 
22.03.10
17:43
Хотя с другой стороны, как посмотришь на сорцы библиотеки для работы с дробными числами или интерпретатора, так блин аж застрелиться хочется:
decNumber *
decNumberFromString (decNumber * dn, const char chars[], decContext * set)
{
 Int exponent = 0;        /* working exponent [assume 0] */
 uByte bits = 0;        /* working flags [assume +ve] */
 Unit *res;            /* where result will be built */
 Unit resbuff[D2U (DECBUFFER + 1)];    /* local buffer in case need temporary */
 Unit *allocres = NULL;    /* -> allocated result, iff allocated */
 Int need;            /* units needed for result */
 Int d = 0;            /* count of digits found in decimal part */
 const char *dotchar = NULL;        /* where dot was found */
 const char *cfirst;            /* -> first character of decimal part */
 const char *last = NULL;        /* -> last digit of decimal part */
 const char *firstexp;        /* -> first significant exponent digit */
 const char *c;            /* work */
 Unit *up;            /* .. */
#if DECDPUN>1
 Int i;            /* .. */
#endif
 Int residue = 0;        /* rounding residue */
 uInt status = 0;        /* error code */

#if DECCHECK
 if (decCheckOperands (DECUNUSED, DECUNUSED, DECUNUSED, set))
   return decNumberZero (dn);
#endif

 do
   {                /* status & malloc protection */
     c = chars;        /* -> input character */
     if (*c == '-')
   {            /* handle leading '-' */
     bits = DECNEG;
     c++;
   }
     else if (*c == '+')
   c++;            /* step over leading '+' */
     /* We're at the start of the number [we think] */
     cfirst = c;        /* save */
     for (;; c++)
   {
     if (*c >= '0' && *c <= '9')
       {            /* test for Arabic digit */
         last = c;
         d++;        /* count of real digits */
         continue;        /* still in decimal part */
       }
     if (*c != '.')
       break;        /* done with decimal part */
     /* dot: record, check, and ignore */
     if (dotchar != NULL)
       {            /* two dots */
         last = NULL;    /* indicate bad */
         break;
       }            /* .. and go report */
     dotchar = c;        /* offset into decimal part */
   }            /* c */

     if (last == NULL)
   {            /* no decimal digits, or >1 . */
#if DECSUBSET
     /* If subset then infinities and NaNs are not allowed */
     if (!set->extended)
       {
         status = DEC_Conversion_syntax;
         break;        /* all done */
       }
     else
       {
#endif
         /* Infinities and NaNs are possible, here */
         decNumberZero (dn);    /* be optimistic */
         if (decStrEq (c, "Infinity") || decStrEq (c, "Inf"))
       {
         dn->bits = bits | DECINF;
         break;    /* all done */
       }
         else
       {        /* a NaN expected */
         /* 2003.09.10 NaNs are now permitted to have a sign */
         status = DEC_Conversion_syntax;    /* assume the worst */
         dn->bits = bits | DECNAN;    /* assume simple NaN */
         if (*c == 's' || *c == 'S')
           {        /* looks like an` sNaN */
             c++;
             dn->bits = bits | DECSNAN;
           }
         if (*c != 'n' && *c != 'N')
           break;    /* check caseless "NaN" */
         c++;
         if (*c != 'a' && *c != 'A')
           break;    /* .. */
         c++;
         if (*c != 'n' && *c != 'N')
           break;    /* .. */
         c++;
         /* now nothing, or nnnn, expected */
         /* -> start of integer and skip leading 0s [including plain 0] */
         for (cfirst = c; *cfirst == '0';)
           cfirst++;
         if (*cfirst == '\0')
           {        /* "NaN" or "sNaN", maybe with all 0s */
             status = 0;    /* it's good */
             break;    /* .. */
           }
         /* something other than 0s; setup last and d as usual [no dots] */
         for (c = cfirst;; c++, d++)
           {
             if (*c < '0' || *c > '9')
           break;    /* test for Arabic digit */
             last = c;
           }
         if (*c != '\0')
           break;    /* not all digits */
         if (d > set->digits)
           break;    /* too many digits */
         /* good; drop through and convert the integer */
         status = 0;
         bits = dn->bits;    /* for copy-back */
       }        /* NaN expected */
#if DECSUBSET
       }
#endif
   }            /* last==NULL */

     if (*c != '\0')
   {            /* more there; exponent expected... */
     Flag nege = 0;    /* 1=negative exponent */
     if (*c != 'e' && *c != 'E')
       {
         status = DEC_Conversion_syntax;
         break;
       }

     /* Found 'e' or 'E' -- now process explicit exponent */
     /* 1998.07.11: sign no longer required */
     c++;            /* to (expected) sign */
     if (*c == '-')
       {
         nege = 1;
         c++;
       }
     else if (*c == '+')
       c++;
     if (*c == '\0')
       {
         status = DEC_Conversion_syntax;
         break;
       }

     for (; *c == '0' && *(c + 1) != '\0';)
       c++;        /* strip insignificant zeros */
     firstexp = c;        /* save exponent digit place */
     for (;; c++)
       {
         if (*c < '0' || *c > '9')
       break;        /* not a digit */
         exponent = X10 (exponent) + (Int) * c - (Int) '0';
       }            /* c */
     /* if we didn't end on '\0' must not be a digit */
     if (*c != '\0')
       {
         status = DEC_Conversion_syntax;
         break;
       }

     /* (this next test must be after the syntax check) */
     /* if it was too long the exponent may have wrapped, so check */
     /* carefully and set it to a certain overflow if wrap possible */
     if (c >= firstexp + 9 + 1)
       {
         if (c > firstexp + 9 + 1 || *firstexp > '1')
       exponent = DECNUMMAXE * 2;
         /* [up to 1999999999 is OK, for example 1E-1000000998] */
       }
     if (nege)
       exponent = -exponent;    /* was negative */
   }            /* had exponent */
     /* Here when all inspected; syntax is good */

     /* Handle decimal point... */
     if (dotchar != NULL && dotchar < last)    /* embedded . found, so */
   exponent = exponent - (last - dotchar);    /* .. adjust exponent */
     /* [we can now ignore the .] */

     /* strip leading zeros/dot (leave final if all 0's) */
     for (c = cfirst; c < last; c++)
   {
     if (*c == '0')
       d--;        /* 0 stripped */
     else if (*c != '.')
       break;
     cfirst++;        /* step past leader */
   }            /* c */

#if DECSUBSET
     /* We can now make a rapid exit for zeros if !extended */
     if (*cfirst == '0' && !set->extended)
   {
     decNumberZero (dn);    /* clean result */
     break;        /* [could be return] */
   }
#endif

     /* OK, the digits string is good.  Copy to the decNumber, or to
        a temporary decNumber if rounding is needed */
     if (d <= set->digits)
   res = dn->lsu;        /* fits into given decNumber */
     else
   {            /* rounding needed */
     need = D2U (d);    /* units needed */
     res = resbuff;    /* assume use local buffer */
     if (need * sizeof (Unit) > sizeof (resbuff))
       {            /* too big for local */
         allocres = (Unit *) malloc (need * sizeof (Unit));
         if (allocres == NULL)
       {
         status |= DEC_Insufficient_storage;
         break;
       }
         res = allocres;
       }
   }
     /* res now -> number lsu, buffer, or allocated storage for Unit array */

     /* Place the coefficient into the selected Unit array */
#if DECDPUN>1
     i = d % DECDPUN;        /* digits in top unit */
     if (i == 0)
   i = DECDPUN;
     up = res + D2U (d) - 1;    /* -> msu */
     *up = 0;
     for (c = cfirst;; c++)
   {            /* along the digits */
     if (*c == '.')
       {            /* ignore . [don't decrement i] */
         if (c != last)
       continue;
         break;
       }
     *up = (Unit) (X10 (*up) + (Int) * c - (Int) '0');
     i--;
     if (i > 0)
       continue;        /* more for this unit */
     if (up == res)
       break;        /* just filled the last unit */
     i = DECDPUN;
     up--;
     *up = 0;
   }            /* c */
#else
     /* DECDPUN==1 */
     up = res;            /* -> lsu */
     for (c = last; c >= cfirst; c--)
   {            /* over each character, from least */
     if (*c == '.')
       continue;        /* ignore . [don't step b] */
     *up = (Unit) ((Int) * c - (Int) '0');
     up++;
   }            /* c */
#endif

     dn->bits = bits;
     dn->exponent = exponent;
     dn->digits = d;

     /* if not in number (too long) shorten into the number */
     if (d > set->digits)
   decSetCoeff (dn, set, res, d, &residue, &status);

     /* Finally check for overflow or subnormal and round as needed */
     decFinalize (dn, set, &residue, &status);
     /* decNumberShow(dn); */
   }
 while (0);            /* [for break] */

 if (allocres != NULL)
   free (allocres);        /* drop any storage we used */
 if (status != 0)
   decStatus (dn, status, set);
 return dn;
}
57 ado
 
22.03.10
17:45
(56) Это откуда?
58 trdm
 
22.03.10
17:46
это decnumber
59 trdm
 
22.03.10
17:47
(57) Ну че? :))) уболтал качать Галактику? :)))))))
60 ado
 
22.03.10
17:48
(58) Либа что-ли такая?
61 trdm
 
22.03.10
17:50
да.
А вот тебе кусочек интерпретатора:
 // interpret - interpret bytecode instructions
 void
   VM::interpret ( int argc )
 {
   VALUE * return_fp = frm_p;
   OBJECT *obj;
   int n;
   int woperand;

   running = true;

   // make a dummy call frame
   CHECKSTACK ( FRAME_SIZE );
   code = SP ( argc ) .v.v_code;
   package = code->klass () ->get_package ();
   PUSH ( ( int ) argc );            // argument count
   PUSH ( eh_pos );
   PUSH ( m_stack_pos );
   PUSH ( int ( frm_p - stkbase ) );    // old frm_p
   PUSH ( int ( pc - cbase ) );            // old pc
   cbase = pc = ( unsigned char * ) code->bytecode ();
   frm_p = stk_p;

   // execute each instruction

 start:

   ready_for_gc = true;

   try
   {
     for (;; )
     {
       if ( !ready_for_gc )
       {
         ready_for_gc = true;
         if ( memory.gc_active )
           memory.notification.signal ();
         else if ( memory.allocated + other_allocs > memory.gc_threshold )
           memory.gc ();
       }

#ifdef DECODE_TRACE
       decode_instruction ( code, pc - ( unsigned char * ) code->bytecode () );
#endif
       switch ( *pc++ )
       {
       case OP_CALL:
         opCALL ();
         break;
       case OP_RETURN:
         if ( !opRETURN () || return_fp == frm_p )
           goto STOP;
         break;

       case OP_SEND:
         assert ( false );
         break;

       case OP_VREF:
         opVREF ();
         break;

       case OP_VSET:
         opVSET ();
         break;

       case OP_REF:
         {
           woperand = getwoperand ();
           ARRAY &a = *package->literals;
           VALUE *v1 = &a [ woperand ];
           int t = v1->v_type;
           VALUE *v = v1->v.v_var.value ();
           SP ( 0 ) = *v;
         }
         break;

       case OP_SET:
         woperand = getwoperand ();
         *( ( *package->literals ) [ woperand ] .v.v_var.value () ) = SP ( 0 );
         break;

       case OP_MREF:
         n = FP ( FRAME_ARGC ) .v.v_integer + FRAME_ARGC;
         obj = FP ( n ) .v.v_object;
         SP ( 0 ) = obj->members [ *pc++ ];
         break;

       case OP_MSET:
         n = FP ( FRAME_ARGC ) .v.v_integer + FRAME_ARGC;
         obj = FP ( n ) .v.v_object;
         obj->members [ *pc++ ] = SP ( 0 );
         break;
       case OP_AREF:
         n = *pc++;
         if ( n >= FP ( FRAME_ARGC ) .v.v_integer )
         {
           SP ( 0 ) = undefined;
         }
         else
         {
           SP ( 0 ) = ARG ( n );
         }
         break;

       case OP_ASET:
         n = *pc++;
         if ( n >= FP ( FRAME_ARGC ) .v.v_integer )
         {
           error ( "argument %d does not exist", n );
         }
         ARG ( n ) = SP ( 0 );
         break;

       case OP_TREF:
         n = *pc++;
         SP ( 0 ) = FP ( -n-1 );
         break;

       case OP_TSET:
         n = *pc++;
         FP ( -n-1 ) = SP ( 0 );
         break;

       case OP_PMREF:
         opPMREF ();
         break;

       case OP_PMSET:
         opPMSET ();
         break;

       case OP_TSPACE:
         n = *pc++;
         CHECKSTACK ( n );
         PUSHN ( n );
         break;

       case OP_BRT:
         if ( istrue ( SP ( 0 ) ) )
         {
           pc = cbase + getwoperand ();
         }
         else
         {
           pc += 2;
         }
         break;
       case OP_BRF:
         if ( istrue ( SP ( 0 ) ) )
         {
           pc += 2;
         }
         else
         {
           pc = cbase + getwoperand ();
         }
         break;

       case OP_BR:
         pc = cbase + getwoperand ();
         break;

       case OP_NULL:
         SP ( 0 ) = null;
         break;

       case OP_PUSH:
         CHECKSTACK ( 1 );
         PUSH ( undefined );
         break;

       case OP_NOT:
         SP ( 0 ) = ! ( istrue ( SP ( 0 ) ) );
         break;

       case OP_NEG:
         CHECKTYPE ( 0, DT_INTEGER );
         SP ( 0 ) .v.v_integer = - SP ( 0 ) .v.v_integer;
         break;

       case OP_ADD:
         SP ( 1 ) = op_add ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_SUB:
         SP ( 1 ) = op_sub ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_MUL:
         SP ( 1 ) = op_mul ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_DIV:
         SP ( 1 ) = op_div ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_REM:
         SP ( 1 ) = op_rem ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_MAKEREF:
         CHECKTYPE ( 0, DT_CODE );
         if ( !SP ( 1 ) .is_thing () )
         {
           VM::error ( "expecting object" );
         }
         //TODO: test code!!!!
         SP ( 1 ) .set_method ( SP ( 1 ) .v.v_thing, SP ( 0 ) .v.v_code );
         POP;
         break;

       case OP_INC:
         op_inc ( this, SP ( 0 ) );
         break;

       case OP_DEC:
         op_dec ( this, SP ( 0 ) );
         break;

       case OP_BAND:
         SP ( 1 ) = op_band ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_BOR:
         SP ( 1 ) = op_bor ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_XOR:
         SP ( 1 ) = op_bxor ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_BNOT:
         SP ( 0 ) = op_bnot ( this, SP ( 0 ) );
         break;

       case OP_SHL:
         CHECKTYPE ( 0, DT_INTEGER );
         CHECKTYPE ( 1, DT_INTEGER );
         SP ( 1 ).v.v_integer <<= stk_p->v.v_integer;
         POP;
         break;

       case OP_SHR:
         CHECKTYPE ( 0, DT_INTEGER );
         CHECKTYPE ( 1, DT_INTEGER );
         SP ( 1 ).v.v_integer >>= stk_p->v.v_integer;
         POP;
         break;

       case OP_LT:
         SP ( 1 ) = op_lt ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_LE:
         SP ( 1 ) = op_le ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_EQ:
         SP ( 1 ) = ( SP ( 1 ) == SP ( 0 ) );
         POP;
         break;

       case OP_NE:
         SP ( 1 ) = op_neq ( this, SP ( 1 ), SP ( 0 ) );
         POP;
         break;

       case OP_GE:
         SP ( 1 ) = op_le ( this, SP ( 0 ), SP ( 1 ) );
         POP;
         break;

       case OP_GT:
         SP ( 1 ) = op_lt ( this, SP ( 0 ), SP ( 1 ) );
         POP;
         break;

       case OP_LIT:
         woperand = getwoperand ();
         SP ( 0 ) = ( *package->literals ) [ woperand ];
         break;

       case OP_POP:
         POP;
         break;

       case OP_COPY:
         SP ( 0 ) = SP ( 1 );
         break;

       case OP_DUP2:
         CHECKSTACK ( 2 );
         PUSHN ( 2 );
         SP ( 0 ) = SP ( 2 );
         SP ( 1 ) = SP ( 3 );
         break;

       case OP_DUP:
         PUSH ( undefined );
         SP ( 0 ) = SP ( 1 );
         break;

       case OP_NEW:
         opNEW ();
         break;

       case OP_LINE:
         line_num = getwoperand ();
         break;

       case OP_EH_PUSH:
         n = getwoperand ();
         assert ( eh_pos < ( eh_size-1 ) ); // critical error
         ++eh_pos;
         {
           error_handler *ep = &eh [ eh_pos ];
           ep->catch_pc = n;
           ep->m_stack_pos = m_stack_pos;
           ep->code = code;
           ep->frm_p = frm_p;
           ep->stk_p = stk_p;
           ep->thrown = undefined;
         }
         break;

       case OP_EH_POP:
         assert ( eh_pos >= 0 ); // otherwise something wrong
         pc = cbase + getwoperand ();
         --eh_pos;
         break;

       case OP_THROW:
         if ( eh_pos >= 0 )
         {
           eh [ eh_pos ] .thrown = SP ( 0 );
           throw VM_RTE ( this, SP ( 0 ) );
         }
         else
         {
           //TODO
           throw VM_RTE ( this, "TODO: ALARM! " );
         }
         break;

       case OP_ENTER:
         {
           if ( SP ( 0 ) .v_type != DT_EXT ||
             SP ( 0 ) .v.v_thing->get_class () != MUTEX::INSTANCE::klass )
           {
             error ( "not a mutex" );
           }

           if ( m_stack_pos >= m_stack_size - 1 )
           {
             error ( "too many synchronized blocks" );
           }

           MUTEX::INSTANCE *pmi = ( MUTEX::INSTANCE * ) SP ( 0 ) .v.v_thing;
           m_stack [ ++m_stack_pos ] = pmi;

           //POP; !!!!

           pmi->_m.enter ();
         }
         break;

       case OP_LEAVE:
         assert ( m_stack_pos >= 0 ); // otherwise something wrong
         m_stack [ m_stack_pos-- ] ->_m.leave ();
         break;
62 trdm
 
22.03.10
17:51
Ну что? Кто-то еще хочет сунуться в сорцы? :)))))
63 sapphire
 
22.03.10
17:54
Дима нас всех сырцпами пугает..
64 Rjnzhf
 
22.03.10
17:56
(0)гы-гы-гы, клиенты еще на знают, что основные деньги порой делаются как раз на внедрении и поддержке)))
65 Maniac
 
22.03.10
17:58
(64) знают или не знают - главное подстадить. Клиент не дурак, скажешь ему что поддержка платная, так и в 1С она не бесплтаная.
66 Maniac
 
22.03.10
18:00
Реально опасный ход.
67 simol
 
24.03.10
21:01
кто установил?
68 Злобный Фей
 
24.03.10
21:28
(66) Бугога. Для кого? )
69 Барбариска
 
24.03.10
21:55
(66) если бы лет 10 назад такой ход.... ))
(67) попробовала ставить с демо-лицензией с диска. что-то не встало, стало лениво разбираться.
70 Maniac
 
24.03.10
22:02
(69) 10 лет назад все ломаное юзали и ничо никого не пугало. да и бизнеса то осбого не было. а сейчас как раз то самое время когда халяву еще как может рынок отбивать.
71 Барбариска
 
24.03.10
22:03
(70) думаешь, если бы 1С шестерку стала бесплатно раздавать - это был бы реально страшный шаг для конкурентов?
72 Maniac
 
24.03.10
22:03
да плюс кризис. вы не знаете наверно какой менталитет нынче. тока дай халяву.
вы посмотрите что на инфостарте творится, целые бойни за то чтобы халяву качать.
73 Maniac
 
24.03.10
22:05
(71) а ты убеди клиента что бесплатная галактика чем то хуже. одно слово - бесплатное уже многое перекрывает.
74 Барбариска
 
24.03.10
22:10
(73) ты ее видел, эту Галактику?
75 Maniac
 
24.03.10
22:14
(74) неа)) и что?)) зато я месяц назад выбирал системк между битриксом и джумлой. ковырял демо битриксаи джумлу. причем раз пять менял мнение.
битрикс -красота, куча функций, просто сказка, все включено, на русском, дока вся. вроде все легко.
джумла- х.з. что, открытый код, куча кривых компонент, все нормальное на англ. языке, куча чего то не работает.
и вот так туда сюда ломался. деньги были купить битрикс. в итоге выбрал джумлу как перспективно развивающееся направление, отличающееся от нашей раши.
76 Злой Бобр
 
25.03.10
16:39
Не парьтесь с галактикой. Фигня полная (по крайней мере раньше было). Невзлетит.
77 Господин ПЖ
 
25.03.10
16:41
(66) очень опасно... спецов нет... кто пытается внедрить халяву - чаще всего хочет и внедрение/сервис "нахаляву". Ну таких в пень
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший