• Работа с форматом конфигураций 1С: Предприятие
    0
    > Зачем вы сделали продукт, если вы его не продаете и услуги не оказываете? В чем выхлоп?

    Я же сказал – «Развитие!». Продавать и оказывать услуги на этом поприще рискованно, можно нарваться на неприятности. А оно мне надо? Кроме того, у меня нет цели, ущемлять интересы авторов продуктов. А вот в плане развития это самое то! Вообще, смысл существования всего Сущего во Вселенной это Развитие. В т.ч. это касается человека. При условии неприемлемости немотивированного ущерба окружающим людям и окружающей среде.

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

    P.S. А так, продукт требует еще общей отладки и оптимизации. Кроме того, всегда появляются новые нюансы, с которыми раньше не сталкивался. «Гонку вооружений» ведь никто не отменял :).
  • Работа с форматом конфигураций 1С: Предприятие
    0
    > Т.е. у вас есть инструмент для декомпиляции обфусцированного кода?

    Да, есть, заканчиваю уже его третью версию.

    > У меня иногда возникает необходимость вскрытия такого кода. Я обращусь к вам в следующий раз.

    Я такого рода услуги не предоставляю. Эта как раз та область, которой есть смысл позаниматься самостоятельно (при относительной несложности используемых алгоритмов получается весьма существенный выхлоп). Тем более что самую важную подсказку я дал. Это дает определенный уровень развития. Так что опубликованная информация направленно именно на это. Развивайтесь, и будет вам счастье :).
  • Работа с форматом конфигураций 1С: Предприятие
    0
    > создание обфускатора не возможно без создания декомпилятора

    Кстати, обфускатор делать труднее, чем декомпилятор. Я думаю над этим, но больше склоняюсь к мысли использовать внешние компоненты, чтобы прятать там наиболее значимый код. Просто второй путь кажется более простым.

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

    Глупости все это. Все очень даже понятно. Да, вместо случайных имен используются псевдоимена, типа «ЛокальнаяПроцедура001», «ЛокальнаяФункция002», Var_123, Par_321, Label_5555 и т.п. Но это практически нисколько не затемняет исходный код, ведь код 1С перенасыщен русским текстом. Причем, закрывают обычно наиболее значимые модули, исходный текст которых может иметь особую ценность.

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

    И я сделал, ну и что из того? На ее создание у меня ушло менее 10% общего времени, остальное время ушло на понимание концепции алгоритма, которую я вам изложил. Только вот всегда цениться именно та информация, которая получена собственным «потом и кровью». Готовый результат никогда и никем адекватно не воспринимается.
  • Работа с форматом конфигураций 1С: Предприятие
    0
    А как вам рассечение выражений условными операторами? Одно длинное выражение может быть рассечено несколько раз. И все это перемешивается с «мусорным» кодом в ветвях, которые никогда не получают управление. А оператор Попытка / Исключение / КонецПопытки? Здесь тоже можно изощрятся так, что мало не покажется. Но и это все лечится при правильном подходе :).

    P.S. Нумерация строк не нужна от слова «совсем».
  • Работа с форматом конфигураций 1С: Предприятие
    0
    > Вы так говорите, как будто байт-код 1С имеет общеизвестный формат, а проблему «запутывания» мешает решать исключительно лень.

    Формат не общедоступный, но восстанавливается вполне тривиально. Достаточно две-три недели плотно посидеть на экспериментах. Берете свой код ЯВУ, шифруете его, а потом смотрите, какой ему соответствует байт-код 1С. Это просто рутинная работа, требующая определенного времени и труда. Кое-что что можно найти на форумах. Первые соответствия я нашел именно там. Заметим, что все фирмы, выпускающие коммерческие обфускаторы, получали подобную спецификацию именно таким образом. Да, кое-какие номера команды остаются нерасшифрованными, просто для них еще не было реального соответствия в исходном коде «восьмерки».

    > Открою маленький секрет: 80% адинесников даже не знает, что существует способ получения исходного кода запароленного модуля без всякой обфускации; а людей (не считая сотрудников 1С), которые самостоятельно разобрались в формате байт-кода, вообще единицы. Некому об этом говорить!

    Многие не знают, как снять пользовательский пароль для входа в 1С. И что теперь? 20% 1С-ников это, на самом деле, очень много. На специализированных форумах по 1С тусуются тысячи людей, сотни из которых – высококлассные специалисты. Некоторые из них даже относят себя к касте, которые знают, как дешифровать необфусцированный байт-код. Таких порядка десяти человек. Вполне достаточно для общения. Хотя, естественно, подробно никто ничего говорить не хочет, хотя раньше на эту тему общались более свободно. Понятно, ибо зачем себе создавать лишние проблемы :).
  • Работа с форматом конфигураций 1С: Предприятие
    0
    > Алгоритм декомпиляции прост для не защищенного кода.

    Согласен, прост. Для такого кода можно найти обработки 1С8 восстанавливающие исходный текст. Они старые, 2010-2013 годов, судя по датам файлов. Автор у них один, и есть большое подозрение, что он сейчас работает на фирму, которая создает коммерческие обфускаторы. Как говорится в подобных случаях – самые лучшие антихакеры это бывшие хакеры.

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

    Форт-машину применять в любом случае придется, но ее алгоритм, кстати, не самый сложный. Это обычная стековая машина, обслуживающая обратную польскую нотацию. Все достаточно прозрачно и тривиально.

    Что касается «разрушения сигнатуры кода», то возможно вы имеете в виду, что байт-код 1С8х может отличаться от оригинального? Конечно, может, возможности у него несколько шире, чем у исходного кода «восьмерки». И авторы обфускаторов этим пользуются на полную катушку. Иной раз просто поражаешься изощренности их мышления. Но, тем не менее, байт-код 1С8 это не ассемблер, принципиально иного, чем на исходном ЯВУ (языке высокого уровня) там мало, что можно сделать. Соответственно и возможности восстановить код ЯВУ на уровне функциональной эквивалентности вполне возможно.

    Относительно «простоты статических алгоритмов». Концептуально алгоритмы очень простые из области: «разделение – преобразование – объединение». Или другими словами, редукция задачи, сведение двухмерного бинарного циклического связного графа к одномерным последовательностям. Все остальное это просто техническая реализация, местами сложноватая, но не принципиально, все определяется фундаментальным образованием программиста. Программисты, знающие только 1С, эту задачу могут и не решить в полной мере.

    Я сказал достаточно много. Если бы у меня была эта информация заранее, то я бы сэкономил себе несколько лишних месяцев программирования.
  • Работа с форматом конфигураций 1С: Предприятие
    +1
    > под капотом у него один-в-один выложенный мной проект MdInternals.Cil.

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

    > Я пробовал декомпиляторы .Net и C# над обфусцированным кодом. Не все справлялись с защитой.

    А что, есть и такие, что справляются?

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

    Это не обвинение, это сожаление.

    P.S. Пару слов насчет обфускации байт кода 1С8х. Последние версии коммерческих обфускаторов используют много новых приемов защиты. Однако нужно понимать, что для специалиста это все не слишком серьезно. Общая идея обфускации простая, используется функционально эквивалентный байт-код, который усложняет процесс его восстановления на уровне ЯВУ (языка высокого уровня). Это может осуществляться как за счет добавления избыточной топологии к исходному бинарному циклическому графу, так и за счет якобы шифрования строковых констант и т.п., вроде использования специфики конкретных команд байт-кода. Шифрование не слишком серьезно потому, что в том же модуле всегда присутствует (обфусцированная) функция дешифрования. А с избыточной топологией, в том числе и «мусорным» кодом, можно легко бороться известными аналитическими методами. Главное здесь то, что, согласно математической теореме: «Любые эквивалентные преобразования обратимы», а это означает принципиальную декомпиляцию обфусцированного байт-кода на уровне ЯВУ.

    А вот, скажем, на уровне синтаксиса, обфускация является синтаксически неэквивалентной, поэтому в этом смысле она необратима. И, действительно, невозможно восстановить удаленные комментарии и необратимо измененные пользовательские имена переменных, процедур и функций. Однако функционально эквивалентный код уровня ЯВУ всегда можно получить без особых проблем. Алгоритмы там настолько просты, что просто удивительно, что про них никто не знает или не говорит вслух. Я тоже промолчу. А вам достаточно подсказки насчет самой обратимости и существования простого алгоритма этой обратимости.
  • Работа с форматом конфигураций 1С: Предприятие
    0
    К сожалению, новизны здесь никакой нет. Даже «Классы MdInternals.Cil» которые «восстанавливают исходный код из последовательности байт-кода OpCode 1С» своей задачи явно не решают.

    Выгрузка штатными средствами конфигурации в файл и широко известные утилиты по декомпиляции (необфусцированного) байт-кода 1С плюс бывший в наличии (сейчас не проверял) онлайн-ресурс по декомпиляции байт-кода 1С полностью перекрывают все возможности данной программы.

    А «алгоритмы»? Кому они нужны, если они даже не демонстрируют простейших практических возможностей, хотя бы в той же «декомпиялции».

    Вот попробуйте хотя бы для себя декомпилировать любой защищенный модуль коммерческой конфигурации и тогда расскажите нам, что у вас получилось :).
  • Работа с форматом конфигураций 1С: Предприятие
    +1
    > Декомпиляция нарушает лицензионное соглашение 1С.

    А обфускация байт-кода 1С не нарушает «лицензионное соглашение 1С»? А ведь некоторые фирмы распространяют подобные инструменты за деньги. А суть та же, что обфускация изменяет родной байт-код 1С, что деобфускация, или в данном случае простая декомпиляция кода защищенного стандартными средствами 1С? Аналогично архиваторы изменяют бинарный код и не только они, а ведь многие программы под лицензией «изменять бинарный код – ни-ни».

    А ведь достаточно очевидно, чтобы создать коммерческий продукт по обфускации байт-кода 1С, фирма должна научиться сначала его деобфусцировать / декомпилировать, ведь спецификации подобного формата нигде нет. Кроме того, авторы, которые покупают обфускатры и защищают свой код, пишут там такое! Например, тупо отслеживают действия пользователя и скрытно собирают его информацию (а это законно?) и даже открыто сообщают ему об этом, типа: «Я вижу, что ты пытаешься декомпилировать программу, лучше напиши мне – продам ее за полцены!».
  • «Hello, World!» для начинающих литераторов
    0
    по каким формальным признакам вы утверждаете, что сочинения — не литературные тексты

    Сочинения это как бы публицистика, там не риал-тайма, экшена, динамики, диалогов, культа красивых слов и фраз и т.п. Вон Стефан Цвейг хорошо пишет в жанре исторический литературный очерк, но диалогов героев у него почти нет. Я имею в виду романы типа «Мария Антуанетта». Хороший литературный стиль у него есть, да, этого не отнимешь, но сама его литература какая-то неполноценная.

    Человек начинает писать (если быть точным, придумывать) «хоть какую-нибудь музыку» раньше, чем любые тексты, потому что музыка вообще предшествует тексту (и вообще слову).

    Ну, слышать музыку в голове это одно, а отразить ее на бумаге – другое. Мне, например, когда-то приснился мотив, которого я нигде не слышал, но я не музыкант, записать его не смог от слова совсем.
  • «Hello, World!» для начинающих литераторов
    0
    Для писателей тоже куча спец. софта для работы с текстом.

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

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

    Согласен, если писать проходной текст для текущего момента. Но если хочется чтобы твой текст не затерялся в цифровой пыли будущего, то для этого надо с текстом работать более тщательно. Любая профессиональная робота всегда содержит элементы технологии. Талант их только усиливает, но не отменяет. Например, видел силача, который по пьяне непрофессионально поднимал штангу. Не слишком большого веса, килограмм 80. Так вот чуть себя не травмировал и других. А при минимальной технике легко бы поднимал штангу раза в три тяжелее. А салаги, с техникой этот самый вес легко брали.

    Текст в котором много шаблонных структур читать невозможно

    Я догадывался, что слово «шаблон» в контексте литературы будет «камнем преткновения». На самом деле мы все говорим, пишем и даже думаем по шаблону. Только не вполне осознаем этого. Абсолютно нешаблонный текст придумать почти невозможно, всегда можно определить, что те или иные элементы взяты откуда-то. Да что там говорить, любое живое существо поедает биологическую пищу, т.е. использует субструктуры других живых организмов, пусть даже это будет растительная пища, для формирования собственного тела. Также и литература, просто автор, по большей части бессознательно переваривает поступающий ему поток информации, препарирует его на отдельные фрагменты и затем уже, скорее всего, интуитивно использует в своей работе. Но тот, кто питается «сырой» информацией обычно выглядит хуже, чем тот, кому эту информацию качественно и «вкусно» готовят. Хотя из любого правила всегда есть исключения.

    Я, может быть, скажу сейчас крамольную вещь, которые не все поймут: «Свобода это Ограничения!». Абсолютная свобода (т.е. отсутствие всяких шаблонов) это бесконечная неопределенность, реализация которой приводит к абсолютному хаосу и даже деградации. Вспомним, что авторы, пишущие в условия «тоталитарных» режимов часто создают более гениальные вещи, чем те, кто раскрепощен, если не сказать развращен, в условиях «свободного» общества. Главное, только, не забывать, что мир не так прост, как кажется.
  • «Hello, World!» для начинающих литераторов
    +1
    написание сочинений на тему — это и есть способ научить людей писать литературные тексты

    Кому как. Я, например, всегда хорошо писал сочинения, но очень плохо литературные тексты.

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

    С музыкой согласиться проще. Ибо писать хоть какие-нибудь тексты человек способен с младых лет, а писать хоть какую-нибудь музыку смогут «не только лишь все».
  • «Hello, World!» для начинающих литераторов
    0
    Хорошо, а почему тогда есть программы для художников и просто любителей компьютерной живописи? Более того, даже в видео можно полностью программировать различные эффекты, например, в видеоролике sintel-2048-surround.mp4, программно «проработаны эффекты огня, снегопада, дыма, взрывов, разрушений, симулирования поведения большого числа персонажей». Интервью с артдиректором этого проекта можно посмотреть в digilinux.ru/2010/10/01/david-revoy-sintel-interview.

    Думаю, вполне корректно сравнивать литературное творчество с программированием. Технологии программирования доступны всем, но программ шедевров на многие порядки меньше. Поэтому индивидуальные литературные шедевры, как и ранее, будут принадлежать только гениям одиночкам. Но речь ведь идет только о доступности технологии литературного творчества для всех. Вплоть, до того, чтобы в школах кроме урока «Русский язык и литература» факультативным был предмет: «Литературное художественное творчество». Учить детей надо написанию литературных текстов, а не сочинений на тему типа: «Бросок Анны Карениной под поезд, в свете технической промышленной революции в Царской России», в смысле, куда бы она бросилась пару лет назад, когда поездов еще толком не было? Да и вообще я против любых формализованных школьных сочинений. Должны быть именно рассказы, а не сочинения.

    Но как учить? В этом вся соль. На Западе есть разные школы и методики, доступна даже непереведенная литература. Но Запад это Запад, Русский Мир должен весьма критично оценивать западные достижения, «отсеивать зерна от плевел».

    Кстати я заметил, что в последнее время в Интернете стало публиковаться гораздо больше материалов посвященных технологии литературного творчества. Так что «коллективное бессознательное» работает. Не удивлюсь, если через какое-то время появятся необходимые учебники и программные средства.
  • «Hello, World!» для начинающих литераторов
    0
    Какой-нибудь профессиональный «инженер человеческих душ» стал бы вникать в причины вашего неудовольствия. Согласитесь, вы хотите, чтобы другие действовали только по вашим правилам, либо по правилам, которые вы считаете «правильными». А люди ведь разные и это надо думать аксиома. И они не очень-то хотят неделать что-то только потому, что это может кому-то не понравится.

    «Все знают», что литературу надо делать по наитию, вдохновению и т.п., но принципиально отрицают всякую рациональность и технологичность этого процесса. Как там у Маяковского отношение к тем, кто: «Ведь зато он может ежесекундно извлекать квадратный корень»? На самом деле особого противоречия я не вижу. Как в анекдоте: «И вы правы, и вы правы! Но как же так? И вы тоже правы!» :).
  • «Hello, World!» для начинающих литераторов
    0
    Для человека с абстрактным мышлением это может быть существенным, а для обычных людей всегда подразумевается мера неопределенности сказанного.
  • Моделирование бизнеса. Основные подходы
    0
    Вопрос конечно интересный и ответить можно по-разному. Если следовать этой логике, то можно в школе и даже в ВУЗах сделать необязательным знание доказательств различных теорем. А, правда, зачем их знать? Корни уравнений можно вычислять по готовым формулам, формулировки теорем просто использовать, не вникая в их доказательства и т.п. Но не знаю, как другие, а я лично от такого образования чувствовал бы себя ущербным. Один наш преп вообще говорил, как я могу запомнить теорему, если я не знаю ее доказательства? Отсюда и ощущение бухгалтерии как ущербной «науки». Особенно на фоне практических результатов, полученных на Западе.

    Хотя лично я не большой сторонник разных там МСФО и GAAP (поскольку они служат, прежде всего, интересам корпораций, а не социального государства), но уровень там явно повыше, хотя с теорией у них тоже проблемы. Но их теоретические проблемы другого плана. У нас проблемы первого уровня – собственно обоснования модели учета, а у них второго – обоснование модели экономической деятельности. Кстати, явно виден парадокс. Их принципы учета, управления и отчетности почти безупречны на морально-этическом уровне, но при этом сущность капитализма – отмороженная, безбашенная хищность.

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

    Речь здесь идет о бизнес моделях. Чувствуется, что слова «модель» и «моделирование» уже изрядно подзатаскали, как и слово «наука». У нас уже наука все, легче, наверное, указать какое теоретизирование наукой не является. Обычно под моделью понимается математическая модель, а если модель не математическая, то это должно указываться явно, типа, аналоговая модель, имитационная модель, натурная модель, того же самолета например для обдувки его в аэродинамической трубе и т.п. А построение любой матмодели, грубо говоря, состоит из нескольких обязательных шагов. Первое, это произвольный выбор непротиворечивых аксиом (доказать непротиворечивость бывает трудно, но к этому нужно стремиться). Второе, фиксация определяемых и неопределяемых понятий. Третье, вывод либо обоснованный выбор уравнений состояния рассматриваемой модели. Четвертое, собственно теоретический анализ данной матмодели. Пятое, экспериментальная проверка полученных теоретических результатов с практическими. Шестое, корректировка модели (на уровне аксиом и прочих допущений), при наличии расхождений. Далее этот процесс продолжается до получения требуемого результата. И еще обычно наука начинает с моделирования простейших вещей, ну там абсолютно черного тела, абсолютно твердого тела, материальной точки и т.п., постепенно усложняя ее до более-менее реального. Скажем моделирование движения той же жидкости, начали с простейших ньютоновских идеальных жидкостей, а ныне рассматривают даже гидродинамические уравнения состояния с разрывными коэффициентами (простейший случай, тела Бингама-Шведова). Вспомним смешное по форме, но правильное, по сути, выражение: «Сферический конь в вакууме» :).

    И напоследок о необходимости знания бухгалтерских аксиом. Уверен, что можно существенно сократить объем бухгалтерских знаний, без потери понимания смысла бухгалтерского учета, если изложить сначала несколько аксиом, затем теоретически вывести все используемые свойства, вроде, замкнутости и равновесной двойственности, а также доказать балансовое уравнение и т.п. Просто уберутся тонны бесполезного псевдообоснования, появится логическая ясность и просветление :). Да и программистам 1С будет попроще иметь дело с бухгалтерскими конфигурациями…
  • Моделирование бизнеса. Основные подходы
    0
    Ну да, проблемы национальной бухгалтерии глубже. Кто ее и как преподает. Просмотрел вот накануне десяток-другой бухгалтерских учебников и мне стало понятно, почему бухгалтера не понимают фундаментальных основ той модели, которой пользуются. Там сплошное занудство и бюрократизм, а профессор Я.В. Соколов в предисловии к книге «Теория бухучета», Хендриксена и Ван Бреда, пишет, что обсуждения предмета и метода бухучета в «наших» учебниках «слишком напоминают средневековую схоластику». С чем очень трудно не согласиться, особенно если расширить это определение и на большую часть «теоретической» бухгалтерии.
  • Моделирование бизнеса. Основные подходы
    0
    Так она и базируется, только бухгалтерские жрецы, придумавшие балансовую модель БУ, нам про это забыли рассказать. Мол, не нужна простым бухгалтерам (и даже не очень простым, вроде главных бухгалтеров) сложная (на уровне школьной геометрии / стереометрии / тригонометрии и алгебры) математика. Те иногда даже с корнем квадратным не дружат, а мы им про математические аксиомы их «науки» говорим…
  • Моделирование бизнеса. Основные подходы
    0
    «Моделирование бизнеса» это круто, но как бы реально смоделировать чего-нибудь попроще? Например, сформулировать математические аксиомы балансовой модели бухгалтерского учета (БУ). На уровне модели Лука Пачоли, которой уже более 500 лет. Интересно, БУ есть, а матмодели его нет. Это могут быть не более десятка аксиом, как в геометрии Евклида (пять аксиом) или в аксиоматике натуральных чисел Пеано (девять аксиом) и т.п. Из этих аксиом можно было бы вывести балансовое уравнение и другие известные свойства БУ. Но похоже бухгалтера с математиками не дружат, хоть бери сам сочиняй эти аксиомы :).
  • Погиб Крис Касперски. Памяти настоящего хакера посвящается
    0
    Крис Касперски – яркий пример одержимости. Настолько, что появился повод сказать: «Одержимость важнее образования!». Он был, безусловно, яркой личностью, жаль только, что обычно, кто сильно горит, тот быстро сгорает.

    Наверное, он опубликовал не все, что мог, однако забудут его нескоро,

    Вечная память!
  • В поисках идеальной модели лицензирования
    –1
    > так и будет если отменить наказания за «пиратство»

    Цифровое пиратство это буржуазное изобретение. Для капиталистов смысл всего это прибыль. При социализме – смысл всего это развитие (всех на благо всех). Тактика международного капитала – ограничить по максимуму развитие других стран и народов, поэтому запретительное авторское право это один из инструментов этой борьбы. Автору цифрового продукта что нужно? В первую очередь деньги. Деньги ему должно обеспечить государство, а степень распространения его продукта способно вызвать тогда только максимум удовлетворения. Ведь какой смысл изобретать либо создавать Нечто, но по максимуму ограничить его использование? Если это не будет касаться потери денег, то автор только рад будет заявить о себе по максимуму. Нормальному государству (социальному, социалистическому и т.п.) нужно Развитие. А финансовая упряжка на использование бесконечно возобновляемого цифрового продукта – ограничивает Развитие (человека и общества). И тогда не будет фраз, звучавших в свое время в Интернете, типа: «чтобы покупать все цифровые продукты, которыми я пользуюсь, мне надо иметь несколько месячных зарплат в неделю».

    > бесплатного ничего не бывает, просто оплата бывает явной или неявной,
    > но бесплатного ничего нет, точнее бесплатным может быть практически
    > бесконечный ресурс, но это особые исключения

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

    С другой стороны – бесплатность оборотная сторона Власти. Хозяева (то ли по праву Сильного, то ли по праву Первого) всегда имеют свои ресурсы бесплатно. И уже Хозяева и Власти решают, кому дать бесплатное, а кому платное. Вспомним вечный принцип распределения, который почти не зависит от типа государственного устройства: «От каждого по способностям, каждому – сколько положено!», различается он только мерой наглости.

    Поэтому в социально ориентированных (в т.ч. социалистических) государствах можно рассчитывать, на то, что Власти будут не слишком жадничать и поделятся частью (по крайней мере, легко возобновляемых и почти неограниченных) ресурсов. Умные должны понимать, что вложения в Образование и Развитие окупаются сторицей. Обеспечьте Народ ресурсами развития и он вернет властям немыслимые произведенные Блага. Особенно это актуально в условиях международной конкуренции Цивилизаций (не на Жизнь, а на Смерть). Перефразируя известную фразу: «Кто не хочет развивать свой народ, будет развивать чужой».

    > у меня подобная схема описана тут

    Да, интересные идеи есть, но полностью проблему можно решить только на уровне Государства. Если Россия будет развиваться теми же темпами, то через 10-20 лет она сможет уже не заморачиваться мнением «партнеров», наоборот, «партнеры» будут смотреть в рот России. Вот тогда мы и себя покажем и другим жить дадим :).
  • В поисках идеальной модели лицензирования
    0
    Оно и будет другое, всё к тому идет. Пройдет 10-20 лет и мы Россию не узнаем. При условии, что «партнеры» не предпочтут локальный армагедончик. Постепенно отомрут все партии и политические выборы. Вместо выборов будут общедоступные публичные конкурсы на право занятия важных должностей, а также определенного вида собственности. Т.е. право распоряжения собственностью и частью прибыли от нее можно будет выиграть в публичном, справедливом, общедоступном конкурсе. И тогда не придется «красть свой первый миллион», чтобы «честно зарабатывать остальные». В таком государстве на первое место выйдет социальное творчество, в т.ч. стимулируемое творчество масс. А в творчестве всех на благо всех такие понятия, как цифровое пиратство уйдут за ненадобностью. Запретительное авторское право направлено на дезинтеграцию общества, в то время, как разрешительное авторское право на его консолидацию.
  • В поисках идеальной модели лицензирования
    –1
    Государству не нужно принуждать пользователя открывать свой личный софт. Но, то что «с возу упало, то пропало», т.е. если цифровой продукт каким-либо образом «утёк» в сеть, то он стал «ничьим», в смысле необходимости платить за его использование. Хотя авторство всегда должно сохраняться. «Цифровое пиратство» должно стать атавизмом, т.е. отмереть. «Цифровой Коммунизм» (ЦК) и «Цифровое Пиратство» вещи несовместимые. Не зря кто-то сказал из великих, что всё самое ценное в этой Жизни мы получаем бесплатно: Любовь, Родных, Близких, Друзей, Родину, Здоровье, саму Жизнь наконец. В СССР бесплатными были Образование, Медицина, Жилье, Работа (в смысле гарантированности) и т.п. Идея ЦК предлагает добавить к этому перечню все доступные (с точки зрения Морали, Нравственности, Безопасности и т.п.) цифровые и виртуальные продукты. Это ведь неуничтожимый, неисчезаемый и неисчерпаемый ресурс. Чего жадничать то? Авторы хотят заработать? Нет проблем, платит государство за популярность цифрового ресурса. Чем больше народу им пользуются, тем должно быть выгоднее его автору либо правопреемнику. Самое важное это отработать справедливый механизм распределения прибыли от продуктов творчества. От части этих продуктов государство будет иметь прямую прибыль, а от другой части косвенную. Например, если внедрять в обществе конкурсно-ориентированную идеологию (делай как я, делай лучше меня!), то энергия людей, особенно молодежи будет тратиться не на местные понты, а, в конечном счете, на благо государства.
  • В поисках идеальной модели лицензирования
    +2
    А почему не рассматривается идея «Цифрового Коммунизма?» Сергея Хапрова? Суть проста. Всё, что не затрагивает стратегических интересов государств, свободно и бесплатно. Авторское право сохраняется, но никак не ограничивает распространение и использование программных (в общем случае, цифровых) продуктов. Другими словами, пользователи цифрового продукта ничего не платят его авторам. Грубо говоря, всё кругом колхозное, всё кругом моё.

    Но кто должен финансировать авторов и разработчиков цифрового контента? Ответ – только государство (другие случаи не регламентируются)! Частные организации тоже могут, но запрещать распространение (по факту!) своего продукта они не должны. Т.е. цифровое частное спонсорство дело исключительно добровольное.

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

    Зато государство может стимулировать создание любой виртуальной реальности, товаров, услуг и т.д. и т.п. Т.е. то, что ему реально необходимо. Например, нужно скажем (Рогозин вроде бы недавно говорил) ПО для боевого робота ФЁДОР. Государство говорит, ребята нужны хорошие алгоритмы для ИИ нашего робота, допустим для космических полетов, т.е. объявляет конкурс на создание ПО. Публикует ТЗ, спецификации и т.п. Народ пишет программы, демонстрирует использование и т.д. В итоге выигрывают все. Государство получает программы, победители – максимальные призы, а просто участники – утешительные.

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

    Еще вариант, допустим государство конкурс не объявляло. Но конкретный Вася Пупкин написал сногсшибательную программу для себя лично, опубликовал ее в Интернете и она по факту получила мощное признание (многие тысячи скачиваний, кучу лайков, рейтинговых звезд и благожелательное отношение публики). Специальный комитет при Цифровом Фонде государства мониторит сеть на предмет поиска подобных самородков (можно также допустить прямые запросы в этот комитет от авторов и разработчиков). Лично я бы со стороны государство отметил бы финансово такие разработки как ReactOS, Blender, Ollydbg и множество других. Правда, для поощрения не отечественных разработок нужно уже переходить на межгосударственный уровень. Но сначала, можно попытаться построить «Цифровой Коммунизм» «в отдельно взятой стране».

    Нюансов, естественно здесь будет много, но почему бы не начать обсуждать саму идею?
  • Автоматизация печати в корпоративных системах или как подружить свой «велосипед» с принтером
    0
    А блочную вёрстку FOP не пробовали использовать? См. мою тему на sql.ru:
    Как ускорить создание макетов сложных печатных форм?
  • Куда деваются программисты после 40
    +1
    Новая «вечная тема» для современных реалий. Можно спорить долго, но главная проблема – личная. Но даже с собственной психологией не будет конфликта, если у человека достаточно высокий уровень адекватности. Ибо все наши беды от недостатка адекватности.

    Чтобы быть успешным, нужно не столько образование и опыт, сколько энергия. В таких случаях я всегда говорю: «Одержимость важнее образования!». Это в плане достижения материальных благ и широкой известности. Пример, Крис Касперски (который недавно вроде как случайно(?) погиб) Но если целью является серьезный результат, то только тогда на первом месте будет качественное образование и только на втором одержимость. Однако в любом случае без одержимости делов не будет. Даёшь адекватную одержимость – вот главный лозунг.

    Тем, у кого мало собственной энергии, можно дать совет. Энергию порождает Намерение и Воля. Ни то, ни другое энергии не требуют. Однако выбирать нужно ту деятельность, уже сам процесс от которой вызывает удовлетворение. Тогда можно рассчитывать на Результат.

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

    Что по сути статьи, но проблем будет меньше, если программировать ради удовольствия, а не за деньги, тем более которые не особо стремятся платить чуть ли не всем «кому за 30». Есть места, где хороших специалистов мало, например, у нас здесь в ЛНР / ДНР. Все одержимые уехали в Россию, профессиональной конкуренции практически нет, если не брать крупные фирмы в Донецке и Луганске (да и там вакансии имеются). Платят, правда, немного, зато есть свободное время, которое можно тратить на самообразование и программирование ради удовольствия. А стремиться надо к Интернет бизнесу, благо технические возможности для этого сейчас имеются. Единственное ограничение неразвитая межбанковская связь. Но этот вопрос, думаю, решится в ближайшие годы. А пока ничто не мешает самосовершенствоваться :).
  • Как я писал компилятор С++. Пересказ спустя 15 лет
    0
    >> Так вот это неулучшаемое представление кода в виде максимально упорядоченного линейного связного графа с левыми и правыми связями и есть тот самый «irreducible CFG»

    > Нет, это совершенно другой термин. Irreducible (неприводимый?) граф — это такой граф выполнения, который не может быть выражен средствами структурного программирования, т.е. без использования goto. Посмотрите статьи на эту тему.

    Не понимаю, где вы здесь увидели противоречие? Смотрим перевод «irreducible» в Multilex-2.0:

    1. Не поддающийся упрощению, улучшению;
    2. (мат.) Несократимый; неприводимый, несводимый;
    3. Минимальный;
    4. Непревратимый (в иное состояние);
    5. (мед.) Невправимый;
    6. (книжн.) Непреодолимый.

    Это все варианты. В общем, то они говорят об одном и том же. Далее, смотрим определение cfg в википедии: https://en.wikipedia.org/wiki/Control_flow_graph

    «A control flow graph (CFG) in computer science is a representation, using graph notation, of all paths that might be traversed through a program during its execution.» В переводе с буржуйского: «Граф потока управления (ГПУ) в информатике – это представление, с помощью графической нотации, всех путей, которые могут быть пройдены в рамках программы в ходе ее выполнения.»

    Отсюда следует, что «Irreducible CFG» это неупрощаемый (неулучшаемый, неприводимый, несводимый, минимальный, канонический и т.п.) граф потока управления программного кода.

    Кстати, причем здесь оператор GoTo? Направленный граф это просто кружочки со стрелочками. Ему может соответствовать код как с goto, так без него. Для графа это безразлично. В указанной вами статье «боннских товарищей» есть хороший пример cfg на рис. 3 (по сути это «Irreducible CFG», поскольку упростить этот граф уже нельзя). Смысл статьи в том, что авторы декомпилируют этот низкоуровневый «код» в псевдокод высокого уровня с помощью программы DREAM (рис. 5.1), а рядом (рис. 5.2) приводят псевдокод получаемый хорошо известным Hex-Rays от IdaPro Ильфака Гильфанова. Мол, вся фишка в том, что у Hex-Rays псевдокод использует оператор goto, а псевдокод от DREAM, goto не использует.

    Но все дело в том, что я веду речь на уровне самого «графа потока управления». Да, когда этот cfg стал «иридьюсаблым», то тогда уже совершенно ультрафиолетово какой декомпилятор к нему применить. Если речь идет о Яве, то можно использовать ваш Fernflower, если о байт-коде 1С8х, то декомпилятор Авы, например, если об ассемблере, то Hex-Rays, либо DREAM (но когда он станет доступным, хотя бы в триале, это большой вопрос).

    У меня задача другая, дан обфусцированный «неиридьюсаблый» граф потока управления. Мне нужно из него получить «иридьюсаблый» граф. Говоря по-русски, обфусцированный (перепутанный, намеренно усложненный) граф превратить в граф наиболее простого вида, далее уже неулучшаемого, несводимого, неприводимого и т.п. И только затем я буду применять к нему декомпилятор. В случае байткода 1С можно использовать даже собственный декомпилятор, построенный на базе идей Форт-машины.

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

    > Это не обфускация, а обыкновенное перемешивание блоков. Оно не имеет никакого значения, так как мы работаем с графом, а не с линейным порядком. Хотя примитивные декомпиляторы (типа jad'a) могут и споткнуться.

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

    Тот же байт-код 1С, даже необфусцированный, оператор гото (условный и безусловный) использует сплошь и рядом. Удобно, при собственной декомпиляции, на эту тему сильно не заморачиваться. Главное, чтобы декомпилированный код был работоспособным. Если цель состоит в том, чтобы подрегулировать что-либо только в одном месте, то полученного результата вполне достаточно. Если же нужно полное восстановление прикладного кода 1С, то просто внимательно читаем, осмысливаем, вычищаем и документируем полученный код. Эта задача относительно трудоемкая, но обозримая. За день можно таким образом обработать до 100 КБ кода высокого уровня.

    Насчет линейного порядка. Узлы любого плоского графа (а может быть даже и многомерного, не проверял) можно уложить на прямую линию, полностью сохраняя топологию направленных связей. Относительно узлов любой граф линеен. Он нелинеен (плоский) относительно своих связей. Это достаточно очевидно для cfg (гпу). Тот же ассемблерный листинг бинарного кода, это линейно упорядоченный набор операторов. Другое дело, что множество переходов (связей) уже будет нелинейным. И то же самое для любого программного кода.

    А обфускация это не только перепутывание и перемешивание. Просто распутывание кода, одна из самых сложных операций. Такого же уровня сложности может быть шифрование данных и кода, полиморфизм (динамическое изменение кода) и любые другие методы усложняющий анализ кода человеком, коих может быть не так уж и мало. А вот обфусцирование на уровне ЯВУ (языков высокого уровня) более простая задача, не требующая привлечения особо сложных алгоритмов.
  • Как я писал компилятор С++. Пересказ спустя 15 лет
    0
    Кстати, если вы попытаетесь декомпилировать несвязный граф, то может выйти облом, поскольку байт код не получающий управление может быть, просто абсолютно бессмысленным, но при этом выполняющимся (дефектные ветви ведь не получают управления, а на уровне исполнения байт-кода его синтаксических проверок уже может не предусматриваться, как в том же 1С8х).
  • Как я писал компилятор С++. Пересказ спустя 15 лет
    0
    > Где-то году в 2008 я написал решение на примере Явы — декомпилятор Fernflower

    Круто! Я знаком с вашим декомилятором, скачал где-то из просторов Интернет и даже немного пользовался им. Впечатления очень хорошие, правда, к самой Яве я быстро охладел, все-таки с++ с фреймворками мне импонирует немного больше.

    > Хм… сомневаюсь, что мы говорим об одном и том же, но все может быть.

    Речь идет об абстрактных структурах. Любой программный код с точки зрения связей это ориентированный граф, узлы которого (линейные операторы либо даже произвольные блоки кода) можно упорядочить на прямой (тот же ассемблерный код), со связями перехода. Если представить себе эти связи резиновыми, а узлы фиксированными (по принципу «чёрного ящика»), то, очевидно, код, без нарушения логики работы можно упорядочивать на прямой многими разными способами. При этом обфусцированный, а частности, сильно запутанный или перепутанный относительно связей код, будет содержать огромное количество как левых, так и правых связей (переходов). В том числе он может быть сильно перемешан с кодом, который никогда не получит управления. В таком случае мы имеем несвязный граф из которых нас интересует только та связная часть графа, которая получает управление.

    Исходя из сказанного, все же есть разница между декомпиляцией и деобфускацией. Например, байт код может быть не декомпилирован, но и не обфусцирован. А может быть не декомпилирован, но обфусцирован. Пока нас даже не интересует декомпиляция (скажем ассемблера в Си, как в IdaPro). Независимо от того, можем мы декомпилировать ассемблер в Си или не можем, важно сначала деобфусцировать запутанный код, а декомпилировать имеет смысл только регулярный, неулучшаемый уже в смысле распутывания либо максимального упорядочивания код.

    Так вот это неулучшаемое представление кода в виде максимально упорядоченного линейного связного графа с левыми и правыми связями и есть тот самый «irreducible CFG», судя по Википедии. Понятно, что при этом количество левых связей будет минимально возможным (при направлении потока управления слева направо). Например, бесконечный оператор, ссылающийся сам на себя, может быть представлен в виде двух линейных операторов, с одной левой и одной правой связью и одной входящей связью на любой из этих операторов. Очевидно, что это уже не улучшаемое представление, в данном случае, типичный пример «irreducible CFG».

    В случае обфусцированного кода, наша задача получить его сначала в виде «irreducible CFG». Как это сделать это уже другой вопрос. Еще раз подчеркну, пока о декомпиляции речь вообще не идет.

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

    У меня есть работающий алгоритм по получению неулучшаемого представления кода в виде упорядоченного связного линейного графа. В частности, байт-код 1С8х, обфусцированный Wise Advise он неплохо деобфусцировывает, а, следовательно, и позволят декомпилировать. С деобфускацией байт-кода от Awa сложностей немного больше. Но это не алгоритмические сложности, а технические, Уж очень изощренные методы применяет этот Ава. Но чисто декомпиляция Awa кода меня интересует абстрактно, просто как хорошее тестирование моего алгоритма. Главное, для меня найти математическое доказательство, что алгоритм работает всегда, а не только в данных частных случаях. Тогда можно будет и статью наваять, аналогичную как у «боннских товарищей» :).
  • Краткое руководство по выходу в opensource: кому это нужно, для чего и как
    0
    Я бы лично в качестве манифеста опенсорса выдвинул был идею Цифрового Коммунизма Сергея Хапрова. Можно было бы говорить даже о победе Цифрового Коммунизма (ЦК) над отдельно взятой коммерческой программой, это когда проприентарный код выкладывается в открытый доступ. А также над ползучей победой ЦК во всем мире :).

    Более того, со стороны государства я бы даже спонсировал, явно или неявно, некоторые общественно-полезные программные продукты вроде ReactOS и бесконечное множество других. Критерием успешности проектов могла бы быть интенсивность их использования пользователями и программистами. А государства могли бы иметь на это средства в т.ч. и за счет относительно небольшого цифрового налога взимаемого со всех, кто получает какой-либо доход.
  • OpenPapyrus: [yet another] ERP-система с открытым исходным кодом
    0
    Да, я знаю, что Rushmore изобрели не в M$, но по факту она актуальна только для VFP. Что самое смешное, никто наверняка не знает, что это за зверь. Некоторые предполагают, что она как-то очень эффективно использует матрицу индексов. Известно, что эта технология демонстрирует очень высокую производительность в запросах VFP. Думаю, что не сильно ошибусь, предположив, что целью мелкософта была именно Rushmore. Выкупив эту технологию, они в итоге убрали ее подальше, как дешевую альтернативу их sql-монстрам. Даже Access не покрывает всех возможностей и удобств VFP. Достаточно сравнить их популярность.

    Относительно лицензии на Visual FoxPro, недавно эта тема подымалась на тематическом форуме sql.ru. И вроде удалось найти удовлетворительное решение.

    Сейчас актуально использование runtime-библиотек VFP в c++ проектах. Причем можно даже обойтись без OLE и COM, подключившись к его dll-кам напрямую. Далее уже возможны варианты. Либо использовать VFP как DDE-сервер, либо как псевдо-COM контейнер (без регистрации в реестре).
  • Механический Шекспир: способны ли машины на литературное творчество?
    0
    >... любое искусство существует для того, чтобы вызвать у нас эмоции.
    > Печаль, радость, злость, страх — читатель должен сопереживать героям.

    Это называется «производство впечатлений» (аналогичные визуальные впечатления дают «зрелища»). Только к этому не сводиться литература (о ней, как бы речь). Здесь идет речь о воздействии на эмоциональный уровень человека. А кроме этого существуют еще ментальный и духовный уровни. Высокое искусство работает больше в этом направлении.

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

    У кого своего уникального жизненного опыта много – стремятся поделиться им с окружающими, хотя бы на уровне мемуаров, дневников или там технических книг и статей. Можно написать, скажем, про свою любовь, но чтобы эти банальности были интересны окружающим, надо хорошо постараться, а именно, описать свои любовные похождения (и не только!) КРАСИВО.

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

    Автор через литературу может эффективно пропагандировать свои идеи. Вспомним, например, цикл произведений К. Кастанеды про Дона Хуана и магию тольтеков. Эти мексиканские учения, почему-то нашили большой отклик у русских в «лихие девяностые». Магией увлеклись сотни тысяч, причем настолько, что очень многие кончили очень плохо. Достаточно почитать об этом книги Странника и поискать информацию о «хакерах сновидений».

    Но главных слов автор статьи так и не сказал. Компьютерные технологии еще не скоро составят конкуренцию литературному творчеству, но ПОМОЧЬ начинающему литератору могут уже сейчас.

    Вот смотрите, есть такая бесплатная замечательная программа Blenler. По сути это электронный помощник художника, даже очень-очень начинающего. Если у вас есть идеи что-то нарисовать, ну там морской шторм, туман в горах, живой огонь и много чего еще, ограниченное только собственной фантазией, то Blender вам с относительной легкостью (после нескольких недель или месяцев тренировки) поможет это сделать. Он научит вас даже ваять мультфильмы с качеством максимально приближенным к реальности (как в современных видеоиграх). В интернете можно найти замечательные видеоролики со 100%-но сгенерированной реальностью, например на тему фэнтези, сделанные с помощью Блэндера.

    Если бы существовал такой же, но литературный Blender, то проблема повышения эффективности создания литературных произведений была бы полностью решена. Зачем нужен Искусственный Интеллект для создания книг, если вполне достаточно создать литературный аналог программы Blender? И все, автор только генерит идеи, а всю черновую работу по наведению марафета (т.е., КРАСОТЫ) осуществляет электронный литературный помощник. Мне лично кажется, что подобная программа уже существует, где-то в недрах Голливуда. Другое дело, что маститые авторы из США не слишком заинтересованы в ее широком распространении.
  • Как я писал компилятор С++. Пересказ спустя 15 лет
    0
    > Обфускация здесь не имеет значения, проблема решена в том числе и для irreducible CFG.

    Ну, что ж, это ключевое замечание. Как там, у Мольера, Журден очень удивился, когда узнал, что всю жизнь говорил прозой. У меня этот «irreducible CFG» назывался «ориентированный циклический плоский граф (DCG), с минимальным количеством левосторонних связей». Соответственно свой алгоритм по его получению я назвал «Алгоритм минимизации левосторонних связей ориентированного плоского графа (циклического, в общем случае)». Может быть, вы подскажите, как называется соответствующий алгоритм в вашем случае?
  • Как я писал компилятор С++. Пересказ спустя 15 лет
    0
    У меня тоже было написано выше: «Известно, что байт-код 1С8х относительно легко декомпилировать». Т.е., по смыслу, речь шла не о декомпиляции, а о деобфускации байт кода. Другими словами, если байт код 1С8х не обфусцирован, то легко декомпилируется (имеются обработки в открытом доступе от Awa), но если обфусцирован, то декомпилировать его весьма нетривиально. Тот же декомпилятор Авы обфусцирован, поэтому сам себя не компилирует, да и код 1С8х обфусцированный Wise Adbvise тоже не берет.
  • OpenPapyrus: [yet another] ERP-система с открытым исходным кодом
    0
    1. Да, готовый продукт в исходниках на 400 МБ это очень сложно. Тем более, что судя по позиционированию бизнес решений в области: «Розничная торговля», «Аптеки», «Кафе и рестораны», «Салоны красоты», «Фитнес клубы и спортивные центры», «Небольшое производство», речь идет о, в терминах 1С77, «малых и средних предприятиях». Если, скажем, воспользоваться Qt, то аналогичные исходники будут, наверняка, в несколько десятков раз меньше. Что, теоретически, уже будет под силу наваять одному человеку. Главное правильно выбрать концепцию разработки.

    2. А вот с этим можно поспорить. Та же «семерка» в бинарниках весит всего 10-15 МБ. Это позволяет на стареньком сервере с двумя гектарами памяти спокойно держать в терминалке на гигабитной сети 25-30 человек, а с ОЗУ 4Гб – до 50 человек одновременно. В этом смысле распределенные приложения на «семерке» часто выигрывают по производительности и особенно в стоимости с аналогичными решениями на «восьмерке», которая, позволяет одновременно обслуживать до 500 пользователей и выше, вопрос только какой ценой.

    «Семерка» реализована на примитивнейшей СУБД на базе DBase-IV и позволяет, благодаря всяким разным пользовательским внешним компонентам, достигать приемлемой производительности. Уверен, что она еще просуществует минимум 20-30 лет, хотя ее поддержка официально прекращена в 2006 году.

    Я уверен, что файл-серверные СУБД вполне могут конкурировать с клиент-серверными по соотношению цена – производительность, их просто искусственно принуждают забыть, новое поколение программистов знакомо с файловыми СУБД только на уровне мифов. Вот технология Rushmore в Visual FoxPro, до сих пор никем не превзойдена, но VFP благополучно сливается самим M$, потому, что это слишком дешевая и эффективная система. Не зря в мире широко используются опен-сорсные аналоги вроде xHarbour и др., хотя им до VFP, как Киеву до безвиза.

    А «скоростью работы в многопользовательской среде» вполне можно управлять концептуально правильно написанным кодом.

    3. Группы в справочниках (по аналогии с каталогами, папками и файлами) это реально круто. Это сильно упрощает бизнес-логику. Также очень удобен в «семерке» быстрый поиск (перемещение по первым символом набора), вполне хорош также отбор в справочниках. И много чего хорошего и удобного по мелочам, а все ляпы фирмы 1С легко лечатся поддержкой внешних компонент, которые способны залезать (недокументированная возможность!) в самое нутро 1С.

    В итоге, в 1С можно делать чудеса, при прямых руках, даже при отсутствии их исходников :).
  • OpenPapyrus: [yet another] ERP-система с открытым исходным кодом
    0
    1. Народ привык к 1С, хотя часто критикует его. Поэтому какая-то логическая совместимость должна быть. Сильные вещи в 1С – конфигуратор (позволяющий разрабатывать пользовательские бизнес-решения) и поддержка иерархической группировки (грубо говоря, деревья с таблицами вместо листьев) в таблицах (справочниках). Откровенно говоря, если бы вы реализовали «семерку» (1С77) один в один и выложили бы ее код, до она сразу бы обрела популярность и стала бы конкурентом «восьмерки» (1С8х), по словам ее отца-основателя – Бориса Нуралиева.

    2. А почему файл-серверные СУБД вам не нравятся?

    3. Это похоже на поддержку файловой системы в Total Commander либо Windows-Explorer.
  • OpenPapyrus: [yet another] ERP-система с открытым исходным кодом
    0
    Я уже закачиваю вашу систему, буду разбираться. В слепую, пока несколько вопросов:

    1. Вы ни разу ни упомянули 1С. Как ваша система с ней соотносится, или вообще не пересекается никаким боком?

    2. Какой движок БД используется? Думаю, что что-то из sql-серверов только. Это так?

    3. Еще не видел вашей системы, но почему-то уверен, что в ее справочниках (в терминах 1С) нет поддержки групп на уровне интерфейса, разве что непосредственный sql отбор / фильтрация и т.п. Это так?
  • Как я писал компилятор С++. Пересказ спустя 15 лет
    –1
    > Это бесценные знания, база, которая будет с Вами на протяжении всей карьеры разработчика.

    Согласен, профессиональная база знаний у вас серьезная. Интересно, что вы думаете по поводу структуры индексных cdx-файлов для dbf-файлов базы данных Visual FoxPro? Это, судя по всему, B+-деревья с двойными списками на всех уровнях (судя по хилой картинке от M$). Смогли бы реализовать API для работы с ними? Похоже на то, что там реализованы, в т.ч., динамические массивы со свойствами связных списков. Что бы вы предложили для реализация этих самых «динамических массивов со свойствами связных списков»?

    Еще вопрос, который меня интересует чисто с теоретической точки зрения. Известно, что байт-код 1С8х относительно легко декомпилировать. А вы сможете, хотя бы для себя (это не надо публиковать) декомпилировать обфусцированный, скажем от Wise Advise или от Авы (Awa) байт-код? Здесь уже нужно изобретать нетривиальные алгоритмы по топологической сортировке циклических(!) плоских графов. Еще точнее, там нужны немножко другие малоизвестные алгоритмы, которые без хорошего знания математики вряд ли придут в голову.

    Никаких ответов, содержащих программный код, не требуется, только общие идеи.
  • BookTitres.com — изучайте языки по иностранной литературе в оригинале, слушая и читая
    0
    Интересно было обнаружить ваш сайт, в том смысле, что я давно занимаюсь похожими идеями. Только я реализовал интерактивный звук (независимое прослушивание произвольных фраз аудиокниг) в локальной программе. У вас сетевой вариант, что имеет определенные преимущества для сетевых / мобильных пользователей. Недавно я обновил свою программу «Scholium» («Сколиум») до версии 1.02 и разместил на новой площадке: scholium.webservis.ru. Старую версию программы можно найти на сайте: scholium.narod.ru/Programs/Scholium_Adultly.htm. Идеология новой версии программы будет немного другая (можно почитать материалы на сайте), поэтому старую версию со временем удалю. Я добавил такой активный элемент, как «запоминание руками», что позволяет лучше усваивать письменный иностранный язык.

    Странно, что вы не даете никакой контактной информации о себе. Кроме номеров счетов для поддержки вашего проекта. Да и хостовый сервер размещен в Германии. Это своеобразная защита от наезда правообладателей?: ).

    Если будет желание, то мне можно будет ответить на e-mails, опубликованные на моих сайтах.

    Удачи, в вашем проекте! Я могу вполне ценю ваш труд!
  • Использование паттернов в разработке архитектуры флекс-приложения
    0
    Очень интересный для новичка материал. Можно поучиться модульности программирования во flex / air, использованию сторонних библиотек, узнать новое об «использовании паттернов», организации последовательной обработки событий и вообще профессиональному стилю программирования. Только вот, какая бочка меда без ложки дегтя?

    Я реагирую на Вашу статью как новичок во flex / air, но имеющий некоторый опыт программирования в других языках.

    Помимо указанных плюсов, бросаются в глаза явные минусы. Вместо того чтобы писать собственно о своей программе, Вы пишите в основном об абстрактных концепциях программирования, имеющих разные названия в разных языках, но, по сути, являющиеся общим местом. У Вас это называется «схемой MVC», реализацией паттернов «Chain of responsibility», «Command», аналога «Memento». Хотя про паттерны я ничего толком у Вас не узнал, благо Интернет помог. Если Ваша личная заслуга в собственной реализации известных шаблонов программирования, то пишите об этом, а не о программе, которое практически никак не реализована, либо безжалостно урезана.

    Я так понимаю, что известные фреймворки Вам, по разным причинам, не подошли. Вы не захотели использовать ни Mate, ни PureMVC, ни какие другие. А спрашивается, зачем? Топология Вашей «цепи» событий описана так, как будто Вы говорите о чужой технологии, а не своей собственной. Вместо нее вполне можно использовать родной механизм событий, реализованный во флэксе по умолчанию. Тем более, для такой простой «программы», как Ваша.

    Про свою программу Вы практически ограничиваетесь парой фраз в паре мест. Типа, «непонятно, но здорово!». Ваша бизнес-логика нарисована странно и, вероятно, не соответствует действительности. Почему-то не показаны связи вьюеров и билдеров с энджинами, а чтобы понять работу конвейера по обработке событий, нужно, скорее всего, изучать Ваш код непосредственно. Однако он не компилируется, поскольку не все файлы Вами предоставлены, зато есть явно не нужные, типа сертификата и текстового файла к нему. Чтобы скомпилировать Ваш проект, нужно докачивать файлы из интернета, а один файл можно получить только хакерскими методами. Наверно, желающих компилировать Ваш проект было не слишком много.

    Теперь собственно про Вашу программу. И если реализация на уровне кода сделана достаточно профессионально, то на уровне идеи – ниже всякой критики. И чему Вы гордитесь? Что отображаете профессионально две таблицы (грида), в которых можно рисовать «бревна»? Больше ничего Ваша демо делать не умеет. О чем это говорит?

    Во-первых, о том, что Ваши «манагеры», не умеют работать с клавиатурой, им даже числа в поля надо вводить мышкой. Это, судя по скринам, в реальном опубликованном коде нет даже этого. И эти «манагеры» управляют профессиональными программистами?

    Ясно, что функционал программы Вы покоцали. Чтобы никто на него не позарился? Но именно этот функционал идейно очень слаб, а сильна именно формальная сторона организации программы, которой воспользоваться можно без проблем. Правда, я бы Вашей последовательной обработке событий предпочел бы параллельную, реализованную в Мэйт. Если вьюер3 или энджин3 или дайэтер3 захочет передать сообщение 2-кластеру или как Вы там его называете, то как он сможет это сделать по Вашей схеме? В Мэйт, либо в родном обработчике событий флэкс это делается без проблем.

    Во-вторых, Вы что-то намекнули про: «Группировать проекты по заказчикам, добавить возможности перетаскивания связей между проектами, перетаскивания сотрудников и проектов по папкам.. .». И вежливо промолчали дальше. А ведь это уже типичная база данных, которые удобнее решать именно средствами базы данных без понтового драг-энд-дропа.

    В-третьих, а с отчетами то как? Они не нужны? Или выгружаем все в эксель и печатаем там? Это профессионально?

    Знаете, подобные Вашей, базы данных реализуются в два хлопка на старой доброй 1С77. Да, там нет понтов с «перетаскиванием» мышкой, и «бревен» в гридах, но зато можно элементарно строить отчеты и легко учитывать сложнейшую схему взаимосвязей сотрудников – проектов – заказчиков – расчета стоимости – печати и т.д. и т.п. А какие у Вас преимущества, кроме реализации блажи бестолковых менеджеров? Откуда у них деньги оплачивать Ваши проекты? За счет фирмы? С такой эффективностью, зачем они вообще нужны?

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