Задать вопрос
  • Регулярное выражение для поиска вида: слово1 * (слово2 -слово3 -слово4) * слово5

    @rPman
    Не пытайтесь решать всю задачу одним 'красивым росчерком пера', это как минимум глупо.
    Решение привести выражение к виду:
    (… and ...) or (… .and ...)… or…
    а затем сделать несколько регулярных выражений, считаю максимально логичным и удачным.

    p.s. кстати любое логическое выражение приводится к видуу (and..) or (and..) or… серией преобразований (с использованием and or not)
  • Высоконагруженный сокет-сервер?

    @rPman
    Забыл добавить, я вообще не стал плодить потоки и треды, а организовал демон очередь с возможностью запуска несколько таких демонов (в идеале по одному на ядро процессора), проблема очереди не техническая, просто именно из-за очередности обработки данных системная очередь и переполняется, кнечно средствами ОС можно ее увеличить, но лучше максимально быстро переносить данные из глобальной системной очереди в очередь демона (пусть демоны конкурируют друг с другом за право получить очередное задание), вот как раз этот процесс можно реализовать в виде отдельного треда в демоне (с соотв. семафором).
  • Что вы используете для cоздания журналирования системы?

    @rPman
    Главное, в моем предложении — автоматически создаваемое по структуре

    Как то работал в проекте под Oracle, где были скрипты, создающие автоматически рядом с рабочей базой копию всех таблиц структурно, добавляя поля — дата создания, дата изменения, дата удаления, и на любое изменение триггерами добавляющие копию текущей записи из оригинальной базы. Разница в размерах у баз была 1 к 30.

    Очень простой, с точки зрения реализации, подход (скрипты очень простые) давал невероятные возможности по работе с историей абсолютно любых действий (добавишь колонку — user, будет еще и абсолютно полный ауудит!, добавишь колонку hash — равный хешу текущих данных + предыдущий хеш, данные лога станут частично защищены от модификаций)…
  • Разный масштаб для двух мониторов?

    @rPman
    Для windows есть ASTER от www.ibik.ru (вроде были еще аналоги, но для win7 только он адекватен по драйверам к видеокарте — например топовые игры идут одновременно на одной видеокарте), позволяет запустить на двух мониторах разные (или одну и ту же) сессию пользователя (только настройки рабочего стола будут сохраняться по непонятным мне правилам… например положение значков рабочего стола у меня сохраняется от первого запускаемого...).

    Но это именно разные сессии, как терминал, запущенные приложения нельзя переносить между мониторами, и клавиатура с мышкой доступны для определенной сессии (но возможно переключение, F12 циклично переключает все или по очереди клавиатуры между сессиями).
  • Транзакциии в хранилище Google AppEngine, как обойти ограничение?

    @rPman Автор вопроса
    * это изучение методом 'на практике', скупые рассуждения в документации на тему ограничений в отношениях не дают никакой конкретной информации
    * мой проект — 6 'таблиц' в datastore, и вообще то appengine планировался как маленькая и очень простая прослойка в виде веб-интерфейса к сложному, с реляционной базой и т.п… но отсутствие транзакций все таки очень неприятны даже и для двух таблиц
    * 'лучше день потерять зато потом за пять минут долететь' ©
  • Транзакциии в хранилище Google AppEngine, как обойти ограничение?

    @rPman Автор вопроса
    Без разницы, хоть low level API использовать, это ограничения самой google datastore, JDO/JPA это просто для более легкого переноса кода из уже готовых Java проектов, причем в самой документации написано, отключать транзакции, если модель не совместима с требованиями datastore.
  • Транзакциии в хранилище Google AppEngine, как обойти ограничение?

    @rPman Автор вопроса
    с чем? с просьбой сделать нормальные транзакции? форумы и так завалены вопросами как реализовать отношения в GAE… слишком неприятные ограничения накладывает их datastore на модель данных.
    p.s. увидел PersistenceManager.makeNontransactional может поможет, точнее позволит хотя бы блокировки сделать штатными средствами, а не через memcache… потом проверю
  • Реально ли вообще хоть что то гарантировать в GAE datastore (Java, JDO)?

    @rPman Автор вопроса
    Наверное потому что, из-за специфики задачи (gae — как небольшой модуль-прослойка к приложению, работающему с реляционной БД), я начал использовать JDO не так как предполагалось, без использования штатных 'отношений', соответственно везде по глупому query by fk и уже пытаюсь править данные в найденном… а когда начал мешать getObjectById и Query в пределах одной транзакции, то полезло. Попробуйте пример, я код дал, делов на три-четыре клика мышкой.

    Как вам еще 'не очевидный баг'? JDO не обновляет данные для полей, значение которых было изменено при прямом доступе к полям класса (если их сделать public), но сохраняется, если изменения были сделаны в методах класса-объекта. Ненавижу создавать методы-сеттеры и геттеры там, где логически они просто лишние (про идеологию не надо, я все понимаю, чужой монастырь...), но об этом нетривиально догадаться,… в документации хотя бы подчеркнули!
  • Реально ли вообще хоть что то гарантировать в GAE datastore (Java, JDO)?

    @rPman Автор вопроса
    Без изменений, вне зависимости от его значения Query возвращает старое значение данных, и, если не переоткрыть pm, изредка — текущее.

    Пока забил на это дело, постараюсь переоформить проект на более key-value и JDO-ориентированный код:
    Исключить/минимизировать запросы Query на данные, изменяемые в пределах своих транзакций.
    Везде где это возможно использовать доступ по ключу и отношения, исключить 'висячие данные' (ничейные экземпляры объектов, которые могут быть приписаны в последствии другим объектам), так как описать их невозможно (точнее я пока не знаю как) в пределах одной группы для реализации транзакций.


    p.s. не посоветуют бывалые пользователи eclipse и appengine, как закрывать (кнопкой или еще лучше автоматически) предыдущий отладочный локальный запуск приложения при повторном запуске?

    Кнопки на это дело нет, а если сохранить проект и не остановить его (мышкой в мааааленький красный квадратик попасть) то при перекомпиляции (автоматически при сохранении) кнопка остановки исчезает, но приложение остается запущенным, мало того, при запуске отладки новая версия приложения не ругается и делает вид что запущена, но реально запросы принимает старая, закрыть которую можно либо в процессах (еще разберись какая из них) либо закрыв весь eclipse. Задолбало, уже сколько раз на этом наламывался.
  • Реально ли вообще хоть что то гарантировать в GAE datastore (Java, JDO)?

    @rPman Автор вопроса
    Неа, все равно 'захлебывается', вставлял везде, где создается pm — после создания, до close, после транзакций,..
    for /l %a in (1,1,30) do @curl 127.0.0.1:8888/test
    Test repeat read: 221, queryed:221
    Test repeat read: 222, queryed:222
    Test repeat read: 223, queryed:223
    Test repeat read: 224, queryed:224
    Test repeat read: 225, queryed:225
    Test repeat read: 226, queryed:226
    Test repeat read: 227, queryed:226
    Test repeat read: 228, queryed:228
    Test repeat read: 229, queryed:228
    Test repeat read: 230, queryed:229
    Test repeat read: 231, queryed:231
    Test repeat read: 232, queryed:231
    Test repeat read: 233, queryed:232
    Test repeat read: 234, queryed:234
    Test repeat read: 235, queryed:235
    Test repeat read: 236, queryed:236
    Test repeat read: 237, queryed:237
    Test repeat read: 238, queryed:238
    Test repeat read: 239, queryed:239
    Test repeat read: 240, queryed:239
    Test repeat read: 241, queryed:240
    Test repeat read: 242, queryed:241
    Test repeat read: 243, queryed:242
    Test repeat read: 244, queryed:243
    Test repeat read: 245, queryed:245
    Test repeat read: 246, queryed:245
    Test repeat read: 247, queryed:246
    Test repeat read: 248, queryed:247
    Test repeat read: 249, queryed:249
    Test repeat read: 250, queryed:250


    p.s. кстати благодаря транзакции + закрытие и повторное открытие pm, после деплоя на appstore ошибку воспроизвести не удалось, наконец то Query возвращает то что только что было изменено, но к сожалению локально ошибка повторяется, а отладку удаленно вести можно только через логи, что печально.
    К тому же создание pm считается дорогой операцией :( там и так приходится думать над каждым доступом к базе…
  • Реально ли вообще хоть что то гарантировать в GAE datastore (Java, JDO)?

    @rPman Автор вопроса
    Если добавить транзакции (ваш пример очень неудачный и не наглядный, одно переименовывание проперти фактори jdo.properties уже непосвященному создало бы проблем). Добавил строчки
    Transaction tx = pm.currentTransaction();
    ...
    tx.begin();
    ...
    tx.commit();
    ...
    finally
    ....
    if(tx.isActive()) tx.rollback();

    Стало чуть более гарантированно (провел сотню последовательных тестов), но все равно непонятно — Query в пределах транзакции возвращают старые данные, а getObject — текущие
    Если разместить Query после tx.commit() то неопределенность возвращается, данные выдаются как новые так и старые.
  • Реально ли вообще хоть что то гарантировать в GAE datastore (Java, JDO)?

    @rPman Автор вопроса
    после записи данных, pm.close() и повторное создание ситуацию возвращает до — 'изредка сохраняет'.
  • Зарезать торренты в локалке?

    @rPman
    Интересная реакция общественности ;)

    Это чем же так плохо предложение попытаться решить проблемы обеих сторон? как 'пользователей' так и 'провайдера' (в данном случае это топиккастер). Что происходит сейчас, о чем постоянно жалуются в 'Я негодую' — очередной провайдер услуг, решает свои проблемы за счет клиентов, вместо того чтобы попытаться найти решение — удовлетворяющее обе стороны, компромиссы!

    Я предлагаю вместо того чтобы запрещать пользователям вообще пользоваться сетью (а зачем еще нужна сеть, кроме как 'не качать' в ней?) я предлагаю дать им возможность качать так, чтобы не мешать работе провайдера (другим). Вариант с вебмордой по любому позволит нескольким пользователям одновременно, без опасений, что их логины пароли/hash-key к торрентам будут раскрыты (в крайнем случае пара строчек в вебморде, благо они практически все опенсорс), при этом общая шара — позволит не качать одно и тоже сразу всем, по крайней мере не загружать внешний канал.
  • Гаджет, датчик положения в пространстве, задача минимум - 'человека, а точнее головы'?

    @rPman Автор вопроса
    вот и хочу, прежде чем покупать дорогую (5-6.т.р) камер для этих целей, узнать, какую задержку будет вносить именно она, дешевые уже проверил, даже при идеальном освещении лаг порядка 200мс, это много.
  • Как организовать синхронизацию очень разных данных?

    @rPman
    Кстати, еще интересный вариант использовать git с опцией --git-dir (чтобы не возникало конфликтов с синхронизируемыми репозитариями того же git).

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