SELECT userid, MAX(value) KEEP (DENSE_RANK FIRST ORDER BY date DESC)
FROM table
GROUP BY userid
На компьютерах Mac нет экземпляров, как в Windows. Вообще говоря, вы хотите, чтобы приложение запускалось дважды, вам физически нужно скопировать двоичный файл, а затем дважды щелкнуть скопированную версию.
Если вам нужно запустить два экземпляра приложения, вы не думаете, как пользователь Mac :).
Редактировать: Это технически неправда. Проверьте комментарии.
Чтобы подробнее рассказать об использовании NSWorkspace. Попробуйте использовать запущенные приложения в NSWorkspace. Это возвращает NSArray, содержащий словарь для каждого запущенного приложения. Вы можете просмотреть массив, чтобы узнать, запущено ли приложение, которое вы ищете. Я бы посоветовал вам использовать значение с ключом NSApplicationBundleIdentifier, который будет иметь значение типа com.mycompany.myapp, а не искать имя. Если вам нужно найти идентификатор пакета для приложения, вы можете посмотреть его файл info.plist в пакете приложения.
Не работает сопоставление управления процессами между разными операционными системами. Или не работает. По умолчанию и без особых усилий вы получаете одну копию и только одну копию приложения.
Вот предыдущий аналогичный вопрос, который идет на шаг дальше этого текущего вопроса, и с некоторыми ответами, в которых обсуждается взаимосвязь, когда имеется несколько копий образ или несколько приложений, требующих координации.
Как определить, запущено ли уже приложение OS X
Для введения в контекст времени выполнения и, в частности, вокруг демонов и агентов Mac OS X (и для этих случаев когда вам действительно нужно иметь несколько запущенных копий исполняемого файла в виде пула или чего-то подобного, похожего на Apache), см .:
If you're writing a Cocoa application, you can use NSWorkspace to see if another process is running with your bundle identifier. I've seen a few apps that present a dialog and say: "An instance of this app is already running" - I think Firefox does it, actually.
It's not a very "mac-ish" approach, but it will get the job done.
Если вы развертываете свое приложение с помощью Java Web Start (JWS), вы можете использовать javax.jnlp.SingleInstanceService . Подготовка JWS также обеспечит автоматическое обновление программы.