Вообще да, тема очень интересная, но сваливается к тому что раз уж кешируем то как хранить и выбирать не очень важно :)
А вот почему nested sets использовать нельзя ? в том смысле что если "поверх" как предлагает Коля Дубр (т.е. не нарушая исходные условия задачи с хранением parent_id) то выборки там очень удобные и быстрые получаются, а рассчитывать (синхронизовывать иерархии) его нужно только при изменении структуры дерева (что обычно происходит нечасто)
ну естественно я разбил HTML и CSS :) не стоит так придираться к словам, имел ввиду что тот-же код в чистом файле. смотрю снова в IE6 - не вижу косяка, может от картинки зависит (в смысле от размеров aaa.gif)
если попробовать просто скопипастить Ваш код в чистый файл то все нормально работает. Попробуйте искать в другом месте, возможно у вас там есть еще какой-то прозрачный блок под этой ссылкой - может быть он не дает сделать hover ?
Я правильно понимаю что у вас nested sets "поверх" первоначальной структуры ? т.е. дополнительные поля в БД, которые не определяют иерархию а просто копируют её в этом виде
да черт его этот javascript разберет (я в нем сам не особо разбираюсь). по большому счету у вас переменная letter внутри функции которая вызывается по клику на маркер (которая описывается в addListener) вне области видимости получается. в этом варианте мы его запихиваем внутрь marker который в функции виден
скроллинг колесом мышки -
map.enableScrollWheelZoom();
приближение дефолтное Вы задаете когда стартовые координаты устанавливаете
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
здесь 13 - это уровень приближения, попробуйте его менять
timur-kar добавил 03.10.2008 в 13:58
вот с легендой никак не помогу, не делал
В дереве одна из распространенных задач "искать в ветке" (искать в категории и подкатегориях) или например сосчитать рекурсивно количество элементов (которые могут часто меняться, так что кешированием здесь не спастись) в ветке, при таком типе хранения как предложите это делать ?
своего варианта решения не предлагаю, просто не могу сказать что в деревьях что-то понимаю
function createMarker(point, index) { // Set up our GMarkerOptions object markerOptions = { icon:baseIcon }; var marker = new GMarker(point, markerOptions); marker.letter= index; GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(marker.letter); }); return marker; }
попробуйте сделать так. если не поможет - скиньте адрес в личку если оно уже где-то доступно
ситуация: человеку нужно собрать несколько тысяч файлов с диска в БД. Он идет и спрашивает на форум. Ему не дают код, а начинают рассказывать как оно было-бы хорошо если бы было "порциями", приводят некий абстрактный код из которого он себе должен понять что вот так будет хорошо и всем будет Щастье с большой буквы Щ, даже бедным индусам, или со словами "показать хороший пример" дают реализацию которая скорее всего работать не будут, или дают решение (хотя нет, не дают, просто показывают что такое решение было бы еще лучше) которое работает у советчика на локальной установке и с блеском обломается у хостера. А прогер пытается все это понять и понять почему это не работает и в результате приходит к выводу что на SE слишком умный народ сидит.
это вообще no comments. пальцы раскинуты, слив засчитан. в общем думаю флейм пора заканчивать
Вот не хотел дальше флеймить, думал Коля Дубр закрыл тему своим постом и всем все понятно, но видимо придется все-таки продолжить. Регулярно вижу программистов, которые для решения простой задачи вместо того чтобы сделать то, что требуется начинают делать умное лицо, красивую архитектуру и хитрые алгоритмы. В результате на задачу тратят много времени (чаще всего ошибки и критичные получаются в простейших вещах) не желая признавать что код должен действительно "обязан быть прагматичным"(!) и следовать из задачи.
Вот Вы сейчас привели абстрактный код, написав "как разбить на порции писать не стану", а между тем это:
1) добавит еще несколько строк для решения примитивнейшей задачи, разбирать это человеку будет сложнее. Т.е. код вместе с решением порциями займет строк 10-12 которые нужно осмыслить (прошу Вас, не стоит утруждаться и доказывать что Вы уместите его в 4 строки - я и так верю);
2) лишит вас главного аргумента "не надо пихать в циклы запросы", все-равно у вас будут запросы в циклах, просто их будет меньше;
и все это (в т.ч. 2 страницы никому не нужных споров) ради того, чтобы запихнуть список файлов в бд
Так Вы попробуйте сначала просто из скрипта отправить :) Я-ж говорю, у меня с двух разных серверов (т.е. с разными дефолтными заголовками) вполне себе приходит в Спам, если у вас не придет - нужно спрашивать хостера что в логах - отправилось ли оно вообще (можно и хедеры поставить, но черт его знает что именно там Gmail'у не нравится в вашем случае)