Veseloff
Moderator-
Posts
3,457 -
Joined
-
Last visited
-
Days Won
40
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Veseloff
-
В массиве a хранятся номера кирпичей с первого по последний. Вот так: a[1] = 1 a[2] = 2 a[3] = 3 a[4] = 4 Ключ массива — номер позиции по порядку. Элемент массива — номер кирпича. Соответственно, если мы поменяем второй и третий кирпичи местами, то массив будет иметь такой вид: a[1] = 1 a[2] = 3 a[3] = 2 a[4] = 4
-
Т.е. тащим и во время движения проверяем сверху вниз и без цикла? 4) В смысле? Ну вот давай на более живом примере. Вот есть у нас 4 кирпича по 50 пикселей высотой. Стоят они по порядку: 1, 2, 3, 4. t=0 // это временная переменная, заполним только на время перетаскивания N=4 // Количество кирпичей M=50 // Высота кирпича a=array(1=>1, 2=>2, 3=>3, 4=>4) // Массив, в котором храним информацию о расположении кирпичей Допустим, мы потянем третий кирпич наверх. Берём кирпич — пока ещё никуда не переместили, просто кликнули. Его координата y=150. floor(y/M)=floor(150/50)=3. То есть, исходя из координат, мы выясняем, что тянем мы именно третий элемент. В переменную t запишем то, что у нас хранится в a[3], то есть «3», а в a[3] запишем «0», так как сейчас это место у нас пустует. Тянем его наверх. Он переместился на 1 пиксель вверх, наступило событие, чтобы вызвать функцию проверки кирпичей. Сейчас координата иаскаемого кирпича = 149. Выясним над каким же кирпичом у нас сейчас занесён таскаемый. floor(y/M)=floor(149/50)=2, то есть на вторым. Проверим что у нас там на втором месте. a[2] имеет значение «2», то есть там второй кирпич. Значит, надо его куда-то подвинуть. Смотрим наверх. a[1]==1, то есть там есть кирпич, значит, не получится туда подвинуть. a[3]==0, то есть нам надо туда перекинуть второй кирпич. a[3]=a[2], a[2]=0. Снова двигаем кирпич на 1 пиксель вверх. Он имеет координаты 148. Снова вычисляем, что это второй элемент, но a[2]==0, так что никуда нчиего двигать не будем. И тут мы его и бросим. a[2]=t. В итоге имеем такой массив a=array(1=>1, 2=>3, 3=>2, 4=>4). Ну и по анаглогии также можно двигать вверх. Само собой, добавляем проверку, чтобы не проверять элементы, если y>=M*N или y<=0.
-
Ну вот как бы сделал я. Положим, имеем N кирпичей с айдишниками (классами, чем угодно, лишь бы уникальные идентификаторы были). Пусть они зовутся от br1, br2, ..., brN. Нам надо их таскать туда-сюда. 1. Создаём массив a[1..N], каждому элементу в соответствие проставлен номер кирпича. Для начала пусть они стоят по порядку. То есть будет массив вида array(1=>1, 2=>2, ..., N=>N) 2. Высота кирпича будет равна M. 3. Берём какой-нибудь кирпич. Пусть первый. Тогда a[1]=0. 4. пусть y=координата от верхней точки. Соответственно, если берём не первый кирпич, то не a[1], а a[floor(y/M)]=0 5. Тащим кирпич. if (a[floor(y/M)]!=0), то проверяем элементы сверху и снизу. В зависимости от того где у нас ноль, туда и двигаем элемент. То есть, по сути, получается, что, если верхняя граница двигаемого кирпича налезла на какой-нибудь кирпич, то этот кирпич сдвигается на свободное место. Тут получается, что мы избавлены от цикла (идёт прямое обращение по ключу) ну и алгоритму пофиг куда двигается кирпич — вверх или вниз.
-
В какой ещё памяти? http://ru.wikipedia.org/wiki/HTTP#POST
-
1. $_GET 2. Регуляркой можно, например
-
Если не будут меняться значения, то ENUM, а если будут, то, конечно, вторая таблица и связь по ключу.
-
Создаём логины и пароли. При вводе проверяем совпадают ли они. Если да, то атворизуем, если нет, то не авторизуем. Пароли лучше хранить в виде хэшей.
-
Да
-
ffmpeg в помощь — там вообще всё можно за 20 минут собрать
-
PHP делает их float, если превышает int. А из БД получаются вообще, наверное, string.
-
Оно вроде как отменяет распостранение события на последующие элементы, на которые это событие тоже может подействовать
-
В общем, сделал я некоторое подобие всплывающей подсказки при наборе текта в поиске (по смыслу походит на такой же у яндекса, например). Блок вылезает, встаёт на нужное место и всё хорошо. Вот только не знаю как его закрыть при нажатии куда угодно за пределы этого блока. Использую jQuery. Если сделать, скажем $(document).click(function(){$('#hint').hide()}); то куда не кликни, блок закроется. А вот как сделать так, чтобы блок не закрывался при клике на него самого?
-
Да вроде для фаерфокса есть плагины, которые видео умеют стягивать
-
Я вообще не понимаю почему сравнивают вёрстку и программирование. Это как выяснять что лучше — тёплое или мягкое. Нельзя сказать, что программирование сложнее и требует больших навыков, чем вёрстка, а говорят так часто. Тем более странно, когда говорят: «Вот сейчас выучу вёрстку, а потом возьмусь за похапе и буду программистом» — это в корне неверный подход. Лично для меня верстать намного сложнее, чем писать на PHP, хотя бы потому, что я пишу под конкретную платформу, которую я же и указываю в техтребованиях, а вёрстка специфична для разных браузеров и там встречается гораздо больше нетривиальных задач. Что касается «найти специалиста», то тут и программиста хорошего найти проблематично — особенно на PHP. Очень многие считают PHP плохим и ущербным языком, потому что начитались об этом в интернетах, и не считают нужным осваивать его тонкости и особенности, как и теоретические аспекты программирования в целом. Многие надеются, что вот сейчас они попрограммируют на PHP немного, а потом будут кодить, скажем, на C, где и срубят куш. В итоге человека не берут работать программистом на си, поскольку он не программист вообще (а си не прощает говнокода, сыпет ворнингами и вообще не компилится), а тот всё так же не хочет ничего учить, наивно полагая, что всё придёт само — замкнутый круг и рекурсия. Так что, если хочешь быть верстальщиком — будь им. Хочешь быть программистом — надо учить программирование. Вот так вот я думаю.
-
Может, просто стоит сделать какой-нибудь текстовый элемент типа a или span и на него навесить onclick, который бы сабмитил форму?
-
Это не перестраховка — это так надо. Почитайте о безопасности сайтов и всё поймёте.
-
1. Данные из POST хранятся в ассоциативном массиве $_POST. И вызываются как $_POST['name'] и $_POST['lastname'] 2. Отключайте register_globals — это зло.
-
http://stepbystep.htmlbook.ru/ http://www.drupal.ru/book
-
А просматривать каждую строчку — лучший вариант? По-моему, так 3 таблицы вполне себе хорошая структура для хранения данных. У меня, например, для хранения каталога на сайте используются 14 таблиц и работает это всё достаточно быстро, так как используются индексы. Вообще делать выборки без индекса — абсолютное зло. Не стоит бояться большого количества таблиц, стоит бояться плохих запросов. Чтобы определить качестов запроса достаточно посмотреть EXPLAIN. Для варианта с регэкспом будут просмотрены все 137к записей и ещё регэксп будет к ним применён. А хранить числа в текстовых полях — вообще бред сивой кобылы.
-
Э-э-э... Ну я столько беру обычно за вёрстку. Я вообще ни разу не верстальщик и потому беру столько. Был бы крутым верстаком — брал бы в два раза больше. Удивительно, что 200 баксов это много — по мне так мало. А так, в среднем, основу для говносайта я стряпаю за 500$ — вёрстка + установка на хостинг + проведение мероприятий по внедрению (всякие инфоблоки создать и засунуть их в нужные места, ссылочки расставить...) Это без дизайна, наполнения и раскрутки — это за отдельную плату отдельным людям. Редко когда это занимает больше 8—10 часов.
-
Оягребу. Регэксп просматривает каждую запись, отчего сервер скрипит как старая телега. Вы и правда считаете, что так можно делать?
-
Ну почему же? Мне кажется, что, если руки растут из нужного места и голова работает, то можно и на вёрстке 100+ зарабатывать. Я вот, бывает, зарабатываю, допустим, 20к за 2 часа — например, я уже делал точно то же самое или просто знаю как задачу выполнить быстро, максимально всё автоматизировав. Для верстальщика, вероятно, так же — через три сотни макетов, 99% начинают повторять ранее сделанные с минимальными изменениями и их можно клепать, напрмер, за два часа. Пусть 200$ за макет ? 1 макет в день ? 20 рабочих дней в месяц, итого 4к$ в месяц, т.е. больше, чем 100 килорублёв. Может, я ошибаюсь, но мне логика событий кажется весьма вероятной.
-
А зачем regexp? Или это так выглядит содержимое ячейки? Если да, то какой в этом смысл? Если уж совсем никак, то что-нибудь типа такого попробовать (42,[5-9]\d*|43|43,[0-4]|43,[0-3]\d*) Но советую так никогда больше не делать. И это привести в нормальный вид.
-
Программизмом и администрированием. Ну и ещё оказываю всякие консультационные услуги населению.