• Быстрый Андроид эмулятор для whatsapp?

    @so-olitary
    Есть вариант установить почтовый клиент mailbird
    Там есть расширение whatsup,
    но скорее всего наботает, как web.whatsapp.com (((((
    Ответ написан
  • Кто может проверить проект десктопного приложения для Windows?

    @so-olitary
    Посмотрел. ipod'а у меня нет.
    Понравилось аккуратное оформление репозитория.
    Хорошее структурирование программы - всё разбито на файлы, обработчики и функции по смыслу.
    Интерфейс осмысленный, не виснет и не мерцает.
    Метод визуального программирования усвоен.
    Молодец.

    Мало комментариев в коде совсем.
    Много глобальных переменных - можно упаковать всё в классы, ИМХО.
    Мешать в программе malloc & new - bad practice. По спецификации они не обязаны быть совместимыми.
    this - не обязательно указывать.
    Обработка ошибок? Ошибки игнорируются ( if (!text) return; ) чуть менее чем полностью?
    Вопрос как мешать код С & C++ для меня остаётся открытым - с каждой новой версией они становятся всё менее совместимыми... Лучше избегать совсем.

    Вопрос остаётся только в покрытии программы тестами.
    Ответ написан
    1 комментарий
  • Потоки, определяемые пользователем? Методы обмена с потоками?

    @so-olitary
    Сначала, успокойся, всё получится!
    Там нет ничего сложного:

    citforum.ru/programming/unix/threads
    citforum.ru/programming/unix/threads_2

    1) Поток отличается от процесса тем, что он запускается в том же адресном пространстве, что и программа (основной поток).
    Отсюда вытекает:
    а) При падении программы - падают все её потоки.
    б) Потокам "доступны" все данные программы.
    Обычно потоки создаются для выполнения некоторой функции, и по её завершении, поток объединяется с основным потоком. Соответственно,
    2) входные данные подаются при старте функции через параметры, выходные - при её возврате, через возвращаемое значение (или через параметры по указателю). А также можно использовать глобальные переменные.
    Ответ написан
    Комментировать
  • Синтаксический анализатор if-else конструкции на основе контекстно свободной грамматики в БНФ?

    @so-olitary
    1) Да, ты правильно построил БНФ - там нет ничего сверхъестественного.
    Только вот это Expression := Expression;, в общем говоря, всё-таки неверно, т.к. нельзя присвоить: a + b = 5.
    И на мой вкус:
    Expression := Expression | ID=Expression
    Block := Expression; | Expression; Block
    ArrayExpression := { Block }
    BoolExp, как и в С, можно отдельно не выделять, 0 - false, !0 - true


    2) Можно использовать готовый синтаксический анализатор, который разбивает на токены сам по сгенерированным тобой правилам (yacc, bison), можно писать вручную.
    3) Как вручную:

    Я писал в своё время интерпретатор языка программирования.
    БНФ - есть алгоритм - собственно как ты будешь парсить файл. Можешь смотреть на свою структуру, она описывает всевозможные варианты того, что ты можешь увидеть в файле с программой. Читаешь по файлу и проверяешь, что ты оказался прав.

    Сначала регулярными выражениями выдели "токены", что у тебя есть "слово языка":
    1. (\d)+ - Integer
    2. \w (\w | \d )* - identificator
    3. + | - | * | / | % | := | < | > | <= | >= | != | == | ( | )  | ... - arithmetic sign
    4. ; | [ | ] | { | } | ... - separators


    Приступай к разбору:
    Введи понятие функционального оператора, а также понятие ID, которое включает в себя имя переменной или обращание к массиву, как единый "токен" с числовым значением (или Expression) внутри [...].
    Рассматривай файл, как подряд идущие инструкции языка.
    Сначала ты должен понять в какой из них ты находишься - это (1) объявление переменной, (2) арифметическое выражение, (3) условный оператор. Как это понять? Просто читай подряд по словам. например:
    1. если это if - то за ним
    (а) идёт ( Expression ) - это какое-то арифметическое выражение:
    Первое, что с ним нужно делать - это избавиться от скобок и пересобрать в последовательность операций для выполнения, имея в виду приоритеты операций. Проще всего это сделать переведя в польскую аннотацию, делается это при помощи стека - можешь в википедии посмотреть алгоритм. Смысл: (a + b) * c + d = +*+abcd.

    Хотя тебе не надо выполнять программу, я всё-таки рекомендую переводить в польскую нотацию - так ты сможешь проверить корректность арифм.выражения и понять, где оно завершилось.
    Либо можно придумать какие-то правила чтобы это понять, непример: не может быть 2 знака подряд (кроме унарного оператора), ... но так ИМХО сложнее.

    (b) затем за ним идёт Expression | ArrayExpressions, их тоже парсишь.
    (в) может быть Else или следующая инструкция
    И так далее.
    Ответ написан
    1 комментарий
  • Кто знает dreamspark бесплатные сертификационные экзамены до сих пор предоставляет студентам?

    @so-olitary Автор вопроса
    Вот, что ответила поддержка dreamspark:
    С актуальными предложениями для сертификационных экзаменов, можно
    ознакомиться на сайте: https://www.microsoft.com/learning/ru-ru/default.aspx

    Например одним из актуальных предложений является бесплатная вторая
    попытка сдать экзамен MCP в рамках акции Second Shot. Более подробную
    информацию можно получить на сайте https://www.microsoft.com/learning/ru-ru/second-sh...

    Если у Вас возникнут другие вопросы просим с нами связаться, будем рады
    Вам помочь.

    Microsoft Regional Service Center

    Это, видимо, завуалировано "НЕТ!"

    А на счёт второго: на этом сайте советуют для ознакомления с экзаменами - dump'ы.
    Нешёл, буду готовиться.
    Ответ написан
    Комментировать
  • Необычное поведение Windows 8.1 при аварийной перезагрузке и кэш-браузера?

    @so-olitary Автор вопроса
    Пока решил преблему средствами Firefox.

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

    FEBE
    Пока, слава Богу, не пришлось этим воспользоваться. Но это контрольный аддон: в случае, если всё упадёт, останется полная резервная копия всего моего аккуанта браузера со всеми дополнениями и настройками.

    Есть ещё
    Session box - Tabs manager
    портирован с Хрома на Лису. Значительно хуже, не сохраняет группировку, и всё мешет вместе.
    Но всякий случаё и его оставил.

    Но так для меня остался мучительный вопрос: почему Windows 8.1 уничтожает настройки пользовательских программ???
    Ответ написан
    Комментировать