• Есть ли бесплатные курсы по Java в Санкт-Петербурге?

    ivnik
    @ivnik
    compscicenter.ru/about - java там только один из курсов, довольно неплохой.
    Лекции записаны на видео, ознакомиться можно на лекториуеме: www.lektorium.tv/course/?id=22824
    Ответ написан
    Комментировать
  • Как лучше создать запрос, который бы просто сожрал все ресурсы сервера

    ivnik
    @ivnik
    select * from some_table order by rand()
    если мало, то
    select * from some_table t1, some_table t2 order by rand()
    ну и т.д. добавлять таблицы

    если уперлись в память, то можно просто несколько раз сортировать
    select * from (select * from some_table order by rand()) t1 order by rand()
    Ответ написан
    Комментировать
  • Как реализовать выборку строки, в которой сумма превысила определенное значение?

    ivnik
    @ivnik
    Почему бы не добавить ещё одну колонку, в которой хранить сумму баллов на дату этой записи? Можно эту колонку заполнять во время работы, а можно её присоединить подзапросом (2-й вариант думаю будет работать не очень быстро). А затем просто выбрать select-ом записи у которых эта колонка будет больше 100, сгруппировать по user и найти min(datetime)?
    Ответ написан
  • PySerial заменяет '\r' на '\n' при чтении из tty, если pySerial открывает tty с данными. Так и должно быть?

    ivnik
    @ivnik
    1-е чтение-запись отличается от 2-го пачкой ioctl-ей. Вероятно в них дело.

    write(1, «Sending 'Hello?\\r\\n'\n», 21) = 21
    write(3, «Hello?\r\n», 8) = 8
    ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {c_iflags=0x500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    fstat(4, {st_dev=makedev(0, 10), st_ino=32, st_mode=S_IFCHR|0620, st_nlink=1, st_uid=1000, st_gid=5, st_blksize=1024, st_blocks=0, st_rdev=makedev(136, 29), st_atime=2013/08/19-15:00:48, st_mtime=2013/08/19-15:00:48, st_ctime=2013/08/19-15:00:48}) = 0
    readlink("/proc/self/fd/4", "/dev/pts/29", 4095) = 11
    stat("/dev/pts/29", {st_dev=makedev(0, 10), st_ino=32, st_mode=S_IFCHR|0620, st_nlink=1, st_uid=1000, st_gid=5, st_blksize=1024, st_blocks=0, st_rdev=makedev(136, 29), st_atime=2013/08/19-15:00:48, st_mtime=2013/08/19-15:00:48, st_ctime=2013/08/19-15:00:48}) = 0
    open("/dev/pts/29", O_RDWR|O_NOCTTY|O_NONBLOCK) = 5
    ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, {c_iflags=0x500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, {c_iflags=0x500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, {c_iflags=0x500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    ioctl(5, SNDCTL_TMR_START or TCSETS, {c_iflags=0, c_oflags=0x4, c_cflags=0x8bd, c_lflags=0, c_line=0, c_cc[VMIN]=0, c_cc[VTIME]=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x00\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, {c_iflags=0, c_oflags=0x4, c_cflags=0x8bd, c_lflags=0, c_line=0, c_cc[VMIN]=0, c_cc[VTIME]=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x00\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, {c_iflags=0, c_oflags=0x4, c_cflags=0x8bd, c_lflags=0, c_line=0, c_cc[VMIN]=0, c_cc[VTIME]=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x00\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    select(6, [5], [], [], {1, 0}) = 1 (in [5], left {0, 999996})
    read(5, «Hello?\n\n», 100) = 8
    select(6, [5], [], [], {1, 0}) = 0 (Timeout)
    write(1, "\n", 1) = 1
    write(1, «Got: 'Hello?\\n\\n'\n», 18) = 18
    write(1, "\n", 1) = 1
    write(1, «Sending 'Hello?\\r\\n'\n», 21) = 21
    write(3, «Hello?\r\n», 8) = 8
    select(6, [5], [], [], {1, 0}) = 1 (in [5], left {0, 999996})
    read(5, «Hello?\r\n», 100) = 8
    select(6, [5], [], [], {1, 0}) = 0 (Timeout)
    write(1, "\n", 1) = 1
    write(1, «Got: 'Hello?\\r\\n'\n», 18) = 18


    P.S. лог получен командой strace
    Ответ написан
    3 комментария
  • mysql slow insert Медленный запрос insert

    ivnik
    @ivnik
    Посмотрите чему равна innodb_flush_log_at_trx_commit и скиньте сюда результат show variables like 'innodb_%'

    Если innodb_flush_log_at_trx_commit = 1 то попробуйте изменить на 2 (flush журнала будет происходить раз в секунду, вместо каждой транзакции)
    Ответ написан
    Комментировать
  • Склейка двух таблиц по сложному условию

    ivnik
    @ivnik
    Второй запрос работает быстро т.к. ограничение целостности UNIQUE по полю event_timestamp создало индекс. А оптимизатор похоже догадался что LIMIT+ORDER_BY не требует сортировки.
    В таком случае самое простое, что можно сделать, это хранить в таблице experiment ссылку на предыдущий эксперимент (в виде id или сразу в виде timestamp), и вытаскивать эту запись одним более быстрым запросом.
    Ответ написан
    5 комментариев
  • Как дозвониться в поддержку Мегафона?

    ivnik
    @ivnik
    Попробуйте позвонить на номер 8-800-… или на номер для звонков из роумнга, в случае с МТС, я дозванивался на такие номера очень быстро. :)

    P.S. moscow.megafon.ru/help/call_in_megafon/kontaktny_center/
    Ответ написан
    Комментировать
  • Apache ActiveMQ vs RabbitMQ (or other)?

    ivnik
    @ivnik
    RabbitMQ не пробовал, но слышал негативные отзывы.
    ActiveMQ у меня показал низкую производительность при работе с KahaDB — мне нужна была надёжная обработка сообщений (activemq делает sync после каждой записи в журнал и это поведение не настраивалось, можно было лишь отключить sync совсем), производительность была порядка 30 сообщений в секунду. Но я тестировал пару лет назад, может быть за это время что-нибудь сделали.

    Я выбрал для себя HornetQ, его можно настроить так, чтобы он делал sync журнала в отдельном потоке N раз в секунду, т.е. немного пожертвовав надёжностью можно получить производительность на два-три порядка выше чем с sync после каждой записи в журнал.
    Ответ написан
    5 комментариев
  • Двуликий Гугл

    ivnik
    @ivnik
    У меня id=«gbqfq».
    А что мешает искать «input» с type=«text»?
    Ответ написан
  • Помогите составить команду

    ivnik
    @ivnik
    А ещё text/javascript нужно писать как text\/javascript
    А также у вас будут проблемы если в именах php файлов есть пробелы (см. man find -exec).
    Ответ написан
    1 комментарий
  • Объединение таблиц, LIMIT 1

    ivnik
    @ivnik
    Например так:

    select t1.*, c.user as `last_user`, c.datetime as `last_date` from topics as t1 inner join (select id_topic, max(id) max_id from comments c1 group by id_topic) t2 on (t2.id_topic = t1.id) inner join comments c on (c.id = t2.max_id);
    

    Использовать ORDER BY для поиска максимального элемента не очень хорошая идея (хотя вроде оптимизатор mysql при использовании ORDER BY и LIMIT понимает, что сортировать не нужно)
    Ответ написан
    1 комментарий
  • Решение задачи «Гирлянды», ДонНУ?

    ivnik
    @ivnik
    Алгоритм Флойда — Уоршелла?
    Ответ написан
    Комментировать
  • Производительность Scala vs Python

    ivnik
    @ivnik
    Мне кажется проблема производительности в xml парсере. Как выше уже спрашивали, используете DOM или SAX? Если критична производительность/большой объём xml-файлов, то стоит использовать SAX.

    А для ускорения scala программы, имеет смысл поиграться с параметрами jvm, например включить «AggressiveOpts»:

    Запускать так:

    $ JAVA_OPTS="-XX:+AggressiveOpts" scala parser.scala
    

    P.S. исходный код парсера на scala покажете?
    P.P.S. и ещё, для замера производительности желательно «прогреть» jvm, производительность при первом запуске сильно ниже чем спустя некоторое время, т.к. классы ещё не загружены класслоадером и горячие точки не скомпилированы в машинный код jit компилятором. Для более правильной оценки, сделайте «бесконечный» цикл, в котором запускайте парсер, и выводите в консоль время работы парсера, затем ждите некоторое время, пока это число не стабилизируется.
    P.P.P.S. Надеюсь время вы замеряете внутри программы (scala)?
    Ответ написан
    3 комментария
  • Помогите составить запрос на MySQL. Поиск во второй таблице — синхронизировалась ли уже эта запись для этого пользователя

    ivnik
    @ivnik
    select t.* from tree t left outer join (select id, max(changetime) changetime from tree_sync where user_id=2 group by id) ts on (t.id=ts.id) where ts.changetime is null or ts.changetime < t.changetime
    Ответ написан
    1 комментарий
  • Удаление записей не на совсем?

    ivnik
    @ivnik
    1) Если беспокоит производительность, то удалённые записи переносить в отдельную таблицу.
    2) Если объёмы таблиц не большие/не требуется высокая производительность, то делать как посоветовали выше, дополнительным флагом. В этом случае лучше сделать view, чтобы уменьшить объём рефакторинга, если захочется поменять логику (т.е. например вынести удалённые записи в отдельную таблицу или изменить способ работы с флагом удалённых записей). Сам флаг я бы делал NOT NULL и естественно добавил бы в индексы.

    P.S. у меня был похожий случай, когда надо было хранить ссылки на удалённые записи, мы использовали hibernate + envers (java). Классы/поля с аннотацией @Audited порождали name_AUD таблицы, в которых хранились все те же данные, плюс два дополнительных поля — номер ревизии и тип ревизии (создание, изменение, удаление). Существовала отдельная таблица с информацией о ревизиях с полями номер ревизии, дата ревизии и дополнительные наши поля (например логин, ip-адрес). Одной транзакции соответствовала одна ревизия. Хотя, возможно этот вариант для вашей задачи слишком навороченный, привёл его просто для примера альтернативного варианта.
    Ответ написан
    Комментировать
  • Рабочий пример для: Unit testing with JUnit for Hibernate using HSQLDB (In-Memory)?

    ivnik
    @ivnik
    1. По поводу deprecated:

    @deprecated All functionality has been moved to {link Configuration}

    т.е. просто поменяйте AnnotationConfiguration на Configuration (Configuration лежит в том же пакете).

    2. По поводу второго примера, там используется jpa в котором есть некоторые отличия от работы с hibernate напрямую. А также там настройка spring контекста осуществляется через «java config», или с этим вопросов нет?

    Если нужен рабочий пример, то я могу его привести, но у меня используется a) TestNG b) JPA+hibernate и spring-managed транзакции. Не запутает ли это ещё больше?
    Ответ написан
    Комментировать
  • После переустановки не работает MySQL

    ivnik
    @ivnik
    $ sudo service mysql start
    Ответ написан
    Комментировать
  • Как получать настройки по DHCP имея двух разных провайдеров в Дебиан 6?

    ivnik
    @ivnik
    Посмотрите netplugd (http://linux.die.net/man/8/netplugd).
    В вашем конфиге скрипты будут срабатывать при поднятии/останове интерфейса, а не появлении/пропадании линка.
    Ответ написан
    2 комментария
  • Как быстро перенести домен на новый IP?

    ivnik
    @ivnik
    Как вариант, можно уменьшить TTL зоны до нескольких минут. Недостаток этого подхода в том, что вырастет количество запросов на DNS сервера и возможно увеличится время открытия страниц у пользователей.
    Ответ написан
    2 комментария