я могу получить Memcached, работающий на среде Windows (x64) 64bit?

Короткие и простые: поскольку элементы, которые вы ищете, не существуют в документе (пока).


В оставшуюся часть этого ответа я буду использовать getElementById как пример, но то же самое относится к getElementsByTagName , querySelector и любому другому методу DOM, который выбирает элементы.

Возможные причины

Есть две причины, по которым элемент может не существовать:

  1. Элемент с переданным идентификатором действительно не существует в документе. Вы должны дважды проверить, что идентификатор, который вы передаете на getElementById, действительно соответствует идентификатору существующего элемента в (сгенерированном) HTML и что у вас не было с ошибкой идентификатор (идентификаторы чувствительный !). Кстати, в большинстве современных браузеров , которые реализуют методы querySelector() и querySelectorAll(), нотация стиля CSS используется для извлечения элемента его id, например: document.querySelector('#elementID'), в отличие от способа, с помощью которого элемент извлекается его id в [[16]; в первом символе # необходимо, во втором это приведет к тому, что элемент не будет извлечен.
  2. Элемент не существует в данный момент , который вы вызываете getElementById ].

Последний случай довольно распространен. Браузеры анализируют и обрабатывают HTML сверху вниз. Это означает, что любой вызов элемента DOM, который встречается до появления этого элемента DOM в HTML, не будет выполнен.

Рассмотрим следующий пример:



Появляется div после script. В настоящий момент сценарий выполняется, элемент не существует , но и getElementById вернут null.

jQuery

То же самое относится к все селекторы с jQuery. jQuery не найдет элементов, если вы ошибочно написали ваш селектор, или вы пытаетесь выбрать их , прежде чем они на самом деле существуют .

Добавленный поворот - это когда jQuery не найден потому, что вы загрузили скрипт без протокола и запускаетесь из файловой системы:


этот синтаксис используется, чтобы позволить сценарию загружаться через HTTPS на странице с протоколом https: // и для загрузки HTTP-версии на странице с протоколом http: //

У этого есть неудачный побочный эффект попытки и невозможность загрузить file://somecdn.somewhere.com...


Решения

Прежде чем позвонить getElementById (или любой метод DOM, если на то пошло), убедитесь, что существуют элементы, к которым вы хотите получить доступ, т.е. загружается DOM.

Это может быть обеспечено просто добавив ваш JavaScript после к соответствующему элементу DOM

, и в этом случае вы также можете поместить код непосредственно перед тегом закрывающего тела () (все DOM элементы будут доступны в момент выполнения скрипта). [/ g3 6]

Другие решения включают прослушивание событий load [MDN] или DOMContentLoaded [MDN] . В этих случаях не имеет значения, где в документе вы помещаете код JavaScript, вам просто нужно запомнить, чтобы весь обработчик DOM обрабатывался в обработчиках событий.

Пример:

window.onload = function() {
    // process DOM elements here
};

// or

// does not work IE 8 and below
document.addEventListener('DOMContentLoaded', function() {
    // process DOM elements here
});

Более подробную информацию об обработке событий и различиях браузера см. в статьях на странице quirksmode.org .

jQuery

Сначала убедитесь, что jQuery загружен правильно , Используйте инструменты разработчика браузера , чтобы узнать, был ли найден файл jQuery и исправлен ли URL-адрес, если он не был (например, добавьте схему http: или https: в начале, отрегулируйте путь, и т. д.)

Прослушивание событий load / DOMContentLoaded - это именно то, что делает jQuery с .ready() [docs] . Весь ваш код jQuery, который влияет на элемент DOM, должен находиться внутри этого обработчика событий.

На самом деле в учебнике j8uery явно указано:

Как почти все, что мы делаем при использовании jQuery, читает или манипулирует объектной моделью документа (DOM), мы должны убедиться, что мы начинаем добавлять события и т. д., как только DOM готов.

Для этого мы регистрируем готовое событие для документа.

$(document).ready(function() {
   // do stuff when DOM is ready
});
blockquote>

В качестве альтернативы вы также можете использовать сокращенный синтаксис:

$(function() {
    // do stuff when DOM is ready
});

Оба эквивалентны.

83
задан Ardalan Shahgholi 25 July 2015 в 05:57
поделиться

7 ответов

Лаборатория North Scale выпустила сборку memcached 1.4.4 для Windows x64:

http://blog.couchbase.com/memcached-windows -64-bit-pre-release-available

http://labs.northscale.com/memcached-packages/

ОБНОВЛЕНИЕ: они недавно выпустили Memcached Server - все еще БЕСПЛАТНЫЙ, но улучшенный дистрибутив с кластеризацией, веб-интерфейс пользовательский интерфейс admin / stats и т. д. (я не имею к ним никакого отношения) Проверьте это на http://northscale.com/products/memcached.html и загрузите по адресу: http: //www.northscale.com/download.php?a=d

ОБНОВЛЕНИЕ 2: NorthScale Memcached больше не доступен как отдельная загрузка. Теперь они сделали его частью своего коммерческого предложения БД без SQL под названием Membase. Его можно настроить для работы в режиме Memcached-only (то есть без сохранения), а также есть 100% бесплатная версия. Проверьте это здесь: http://www.membase.org/downloads

ОБНОВЛЕНИЕ 3: MemBase спала с CouchDB и выпустила предложение гибридного продукта под названием CouchBase. Они по-прежнему предлагают бесплатную версию "Сообщества" по адресу http://www.couchbase.com/download

51
ответ дан 24 November 2019 в 08:56
поделиться

Чувак, Codeplex является Вашим другом-> выезд этот порт из него. Это раньше имело выпуск на 64 бита, но можно или загрузить последнее и скомпилировать для (довольно легких) 64 битов или проверить предыдущие выпуски.

1
ответ дан Pure.Krome 24 November 2019 в 08:56
поделиться

Вы уверены, что 32-разрядная версия только работает на 64-разрядном Windows без модификации? Большинство вещей делает.

Сбой, что, Вы на самом деле попытались просто компилировать его для 64-разрядного? Краткое сканирование некоторых, Google Groups и т.д., где люди задали этот тот же вопрос, предполагает, что это может быть точно решением этого. Я думаю, что Вы, вероятно, переоцениваете различие между 32-разрядным и 64-разрядным Windows (по крайней мере, до компиляции исходного приложения, идет).

0
ответ дан TheSmurf 24 November 2019 в 08:56
поделиться

Я лично чувствую, что необходимо было бы перекомпилировать приложение с помощью 64-разрядного компилятора (очевидно, на 64-разрядной машине) для получения большинства Memcached на 64-разрядной платформе. Это не может быть легкой задачей в зависимости от кода. Если бы это было записано с 64-разрядной мобильностью в памяти тогда, то это могло бы быть простое, перекомпилировали. Если это не имеет, то Вы могли подлежать довольно мало исправления прежде, чем заставить его создавать.. и затем необходимо было бы проверить, что Вы ничего не повредили!

я не думаю, что Вы переоцениваете различия между 32 и 64-разрядные вообще. Частая ошибка состоит в том, чтобы предположить, что задание является простым, перекомпилировали, когда на самом деле это не. Существует больше проблем мобильности, чем большинство людей понимает. Просто, потому что сборки приложения и Вы заканчиваете с двоичным файлом, это не означает, что двоичный файл собирается вести себя, как это должно. Особенно, когда это может взаимодействовать с другим 32-разрядным кодом.

Однако могло бы стоить дать ему вращение!

Удача. За Ваше здоровье!

<час>

@Lars: Я рекомендую читать вопрос прежде, чем делать попытку ответа.

@John Родственно & @DannySmurf: учитывая природу Memcached и чего это имеет целью достигать, конечно, Вы не хотели бы выполнять 32-разрядную версию на 64-разрядной машине? Если бы у Вас была 64-разрядная способная машина, то имело бы смысл выполнять 64-разрядную версию, чтобы максимально использовать функции аппаратных средств.

3
ответ дан OJ. 24 November 2019 в 08:56
поделиться

Я просто искал memcached в системе Windows на 64 бита и нашел это. До сих пор нет никакой версии Win64 memcached. Но я только что запустил memcached.exe с соответствующих команд через cmd, и он просто хорошо работает. Я использую Windows Vista 64bit, не знайте, существуют ли какие-либо различия между Vista и серверными версиями.

наилучшие пожелания Fleshgrinder

2
ответ дан 24 November 2019 в 08:56
поделиться

32-битная версия работает на 64-битной через WOW64, но процесс по-прежнему ограничен 2 ГБ, а с 64-разрядной версией вы можете расширить это количество до более чем одной машины.

1
ответ дан 24 November 2019 в 08:56
поделиться

К вашему сведению, я не мог установить 64-битную версию (отсюда http://labs.northscale.com/memcached-packages/ ) в качестве службы, пока я не запустил memcached от имени администратора.

Я просто зашел в свойства исполняемого файла, затем на вкладку «Совместимость» и поставил галочку «Запускать эту программу от имени администратора» (было множество других способов сделать это, но это казалось самым простым)

Затем я, наконец, смог для успешного запуска: memcached -d install

Не забудьте запустить службу после ее установки:)

0
ответ дан 24 November 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: