timur-kar

timur-kar
Рейтинг
85
Регистрация
29.05.2006
Polimer:
Ну елки-палки... Тема интересная, но опять сваливается на флуд. Давайте уж как-то формализуем условия задачи.
1) nested sets использовать нельзя;

Вообще да, тема очень интересная, но сваливается к тому что раз уж кешируем то как хранить и выбирать не очень важно :)

А вот почему nested sets использовать нельзя ? в том смысле что если "поверх" как предлагает Коля Дубр (т.е. не нарушая исходные условия задачи с хранением parent_id) то выборки там очень удобные и быстрые получаются, а рассчитывать (синхронизовывать иерархии) его нужно только при изменении структуры дерева (что обычно происходит нечасто)

LionSX:
Его нельзя просто скопипастить, потому как
<div class="block">
<a href="#">Though we may be the last in the world We feel like pioneers We feel like pioneers</a>
</div> ---- это HTML

.block { width: 250px; }
.block a:hover { background: url("../images/aaa.gif") right no-repeat; } --- Это CSS
Плюс надо картинку с именем aaa.gif создать в папке images
Я проверил - КОСЯК ЕСТЬ, вот только как его решить еще не придумал

ну естественно я разбил HTML и CSS :) не стоит так придираться к словам, имел ввиду что тот-же код в чистом файле. смотрю снова в IE6 - не вижу косяка, может от картинки зависит (в смысле от размеров aaa.gif)

MerlinMAG:
У нас есть ссылка, при наведение на неё, справа (вконце этой ссылки) должен отображаться рисунок.

У нас есть такой код
<div class="block">
<a href="#">Though we may be the last in the world We feel like pioneers We feel like pioneers</a>
</div>

.block { width: 250px; }
.block a:hover { background: url("../images/aaa.gif") right no-repeat; }

Тоесть ссылка, из-за того, что находится в блоке с ограниченой шириной, переходит на другую строку. И IE6 не отображает рисунок при наведении вконце ссылке.
Во Мозиле и Опере всё нормально

если попробовать просто скопипастить Ваш код в чистый файл то все нормально работает. Попробуйте искать в другом месте, возможно у вас там есть еще какой-то прозрачный блок под этой ссылкой - может быть он не дает сделать hover ?

Коля Дубр:
timur-karЯ в итоге все-таки добавил nested sets специально под это.

Я правильно понимаю что у вас nested sets "поверх" первоначальной структуры ? т.е. дополнительные поля в БД, которые не определяют иерархию а просто копируют её в этом виде

Anarchist:
timur-kar, спасибо! я ваш должник! все работает!
а в чем все-таки был косяк? что я не так сделал?

да черт его этот javascript разберет (я в нем сам не особо разбираюсь). по большому счету у вас переменная letter внутри функции которая вызывается по клику на маркер (которая описывается в addListener) вне области видимости получается. в этом варианте мы его запихиваем внутрь marker который в функции виден

ps: а еще вопросец... как сделать так, чтобы степень приближения была побольше по умолчанию и можно было приближать колесом мыши?
pps: чет вопрсов у меня много... а Вы легенду не делали к карте? может подкинете мануал?

скроллинг колесом мышки -

map.enableScrollWheelZoom();

приближение дефолтное Вы задаете когда стартовые координаты устанавливаете

map.setCenter(new GLatLng(37.4419, -122.1419), 13);

здесь 13 - это уровень приближения, попробуйте его менять

timur-kar добавил 03.10.2008 в 13:58

Anarchist:
pps: чет вопрсов у меня много... а Вы легенду не делали к карте? может подкинете мануал?

вот с легендой никак не помогу, не делал

Коля Дубр:
Критикуйте :) Вариант с 1.500.000 записей не предлагать. Сами сказали, что их тыща :)
Про "индусский стиль" ничего не хочу слышать.

В дереве одна из распространенных задач "искать в ветке" (искать в категории и подкатегориях) или например сосчитать рекурсивно количество элементов (которые могут часто меняться, так что кешированием здесь не спастись) в ветке, при таком типе хранения как предложите это делать ?

своего варианта решения не предлагаю, просто не могу сказать что в деревьях что-то понимаю

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;
}

попробуйте сделать так. если не поможет - скиньте адрес в личку если оно уже где-то доступно

AndreM:
ситуация: некто ищет решение задачи, пусть, например, какую либо работу с кэшем, где нужно обойти 100 000 файлов, и удалить/добавить инфу по ним в БД. Человек не знает, как оптимально это сделать, забивает в поисковик и смотрить - опа, на авторитетном форуме предлагают такое решение, и делает, а потом ему начальство и хостер дают по башке, когда БД и сайт падает... а прогер удивляется, он же на searchengines код взял, то есть это круто должно быть...

ситуация: человеку нужно собрать несколько тысяч файлов с диска в БД. Он идет и спрашивает на форум. Ему не дают код, а начинают рассказывать как оно было-бы хорошо если бы было "порциями", приводят некий абстрактный код из которого он себе должен понять что вот так будет хорошо и всем будет Щастье с большой буквы Щ, даже бедным индусам, или со словами "показать хороший пример" дают реализацию которая скорее всего работать не будут, или дают решение (хотя нет, не дают, просто показывают что такое решение было бы еще лучше) которое работает у советчика на локальной установке и с блеском обломается у хостера. А прогер пытается все это понять и понять почему это не работает и в результате приходит к выводу что на SE слишком умный народ сидит.

AndreM:
ЗЫ. да в общем то пишите, как хотите, кто хотел - поинтересовался подробностями, не буду я ничего доказывать, все уже доказано проектами, в которых я участвую, и где посещалки более 100K в сутки, и людьми, которым я передал свой опыт. Спасибо за внимание.

это вообще no comments. пальцы раскинуты, слив засчитан. в общем думаю флейм пора заканчивать

AndreM:
2. Пример вот, как разбить на порции писать не буду
Чтобы не быть индуссами, не надо пихать в циклы запросы.

Вот не хотел дальше флеймить, думал Коля Дубр закрыл тему своим постом и всем все понятно, но видимо придется все-таки продолжить. Регулярно вижу программистов, которые для решения простой задачи вместо того чтобы сделать то, что требуется начинают делать умное лицо, красивую архитектуру и хитрые алгоритмы. В результате на задачу тратят много времени (чаще всего ошибки и критичные получаются в простейших вещах) не желая признавать что код должен действительно "обязан быть прагматичным"(!) и следовать из задачи.

Вот Вы сейчас привели абстрактный код, написав "как разбить на порции писать не стану", а между тем это:

1) добавит еще несколько строк для решения примитивнейшей задачи, разбирать это человеку будет сложнее. Т.е. код вместе с решением порциями займет строк 10-12 которые нужно осмыслить (прошу Вас, не стоит утруждаться и доказывать что Вы уместите его в 4 строки - я и так верю);

2) лишит вас главного аргумента "не надо пихать в циклы запросы", все-равно у вас будут запросы в циклах, просто их будет меньше;

и все это (в т.ч. 2 страницы никому не нужных споров) ради того, чтобы запихнуть список файлов в бд

Labus:
Согласен с Вами! Но проблема еще в том, что я логи не могу просмотреть.

Так Вы попробуйте сначала просто из скрипта отправить :) Я-ж говорю, у меня с двух разных серверов (т.е. с разными дефолтными заголовками) вполне себе приходит в Спам, если у вас не придет - нужно спрашивать хостера что в логах - отправилось ли оно вообще (можно и хедеры поставить, но черт его знает что именно там Gmail'у не нравится в вашем случае)

Всего: 166