Иногда желательно знать, какое устройство бренда использует клиент, чтобы показывать контент, относящийся к этому устройству, например, ссылку на магазин iPhone или на рынок Android. Модернизатор хорош, но показывает только возможности браузера, такие как HTML5 или Flash.
Вот мое решение UserAgent в jQuery для отображения разных классов для каждого типа устройства:
/*** sniff the UA of the client and show hidden div's for that device ***/
var customizeForDevice = function(){
var ua = navigator.userAgent;
var checker = {
iphone: ua.match(/(iPhone|iPod|iPad)/),
blackberry: ua.match(/BlackBerry/),
android: ua.match(/Android/)
};
if (checker.android){
$('.android-only').show();
}
else if (checker.iphone){
$('.idevice-only').show();
}
else if (checker.blackberry){
$('.berry-only').show();
}
else {
$('.unknown-device').show();
}
}
Это решение от графических маньяков http://graphicmaniacs.com/note/detecting- iphone-ставка-IPAD-андроид-и-ежевика-браузер с JavaScript-и-PHP-/
Причина, по которой
os.environ["LD_LIBRARY_PATH"] = ...
не работает, проста: эта переменная среды управляет поведением динамического загрузчика ( ld-linux.so.2
в Linux, ] ld.so.1
в Solaris), но загрузчик просматривает LD_LIBRARY_PATH
только один раз при запуске процесса. Изменение значения LD_LIBRARY_PATH
в текущем процессе после в этой точке не имеет никакого эффекта (как и сказано в ответе на этот вопрос).
У вас есть некоторые варианты:
A. Если вы знаете, что вам понадобится xyz.so
из / some / path
, и управляете выполнением скрипта python с самого начала, просто установите LD_LIBRARY_PATH
] по своему вкусу (после проверки того, что он еще не установлен), и повторите попытку. Это то, что делает Java
.
B. Вы можете импортировать /some/path/xyz.so
по его абсолютному пути до импорта x.so
. Когда вы затем импортируете x.so
, загрузчик обнаружит, что он уже загрузил xyz.so
, и будет использовать уже загруженный модуль вместо повторного поиска.
С. Если вы собираете x.so
самостоятельно, вы можете добавить -Wl, -rpath = / some / path
в его строку ссылки, а затем импортировать x.so
заставит загрузчик искать зависимые модули в / some / path
.
xyz.so
, и будет использовать уже загруженный модуль вместо того, чтобы искать его снова.
C. Если вы собираете x.so
самостоятельно, вы можете добавить -Wl, -rpath = / some / path
в его строку ссылки, а затем импортировать x.so
заставит загрузчик искать зависимые модули в / some / path
.
xyz.so
, и будет использовать уже загруженный модуль вместо того, чтобы искать его снова.
C. Если вы собираете x.so
самостоятельно, вы можете добавить -Wl, -rpath = / some / path
в его строку ссылки, а затем импортировать x.so
заставит загрузчик искать зависимые модули в / some / path
.
По моему опыту, попытка изменить способ работы загрузчика для работающего Python очень сложна; возможно зависит от ОС / версии; может не работать. Один обходной путь, который может помочь в некоторых обстоятельствах, - это запустить подпроцесс, который изменяет параметр среды с помощью сценария оболочки, а затем запустить новый Python с помощью оболочки.
well, the environment variables are stored in the dictionary os.environ, so if you want to change , you can do
os.environ["PATH"] = "/usr/bin"