danforth

danforth
Рейтинг
153
Регистрация
18.12.2015
Четверьг:
demiux, а как скрипт понимает, что вот этот юзер работает с публичного компа (на точке выдачи), а вот этот не с публичного? Как поймет для кого чистить, а для кого нет?

IP, кастомный User-Agent (Kiosk), уникальная кука для вашего магазина, например md5(адресс вашего магазина). Вы какие-то странные вопросы задаете, если честно.

Можно зарегать отдельного юзера под посетителей магазина, например "Гость" и лить все заказы туда. После оформления заказа на самом сервере проверять if user == "Гость" (или по ID) то куки чистим сразу, а ещё можно на странице checkout/success POP UP подгрузить с кнопкой "Приступить к покупкам" после нажатия на которую создается новая сессия/чистятся куки.

Автозаполнение форм можно легко убрать в настройках браузера.

Доступ к сайтам блокируется на уровне файрволла роутера/пк.

Есть ещё Greasemonkey, который может перенести серверные проверки на клиент, ну и сделать кнопку position:fixed которая будет летать за пользователем, где будет кнопка для очистки сессий.

Только 5 секунд на запрос - это жесть какая-то. Очередь быстро набьется на 5 секундах. Максимум 1 секунда, и то на всяких отчетах и прочих и очень редких выборках. Основные запросы должны выполнятся не дольше 0.25 сек.

Как вы определили, что тормозит сервис баз данных? То, что он 12% cpu жрет?

igor3310:
И по прямой ссылке на файл тоже не хочет качать

Что значит "не хочет качать"? Страница грузится долго? Или пустая страница? Ссылку на пример можете дать?

Тут все просто, http://prntscr.com/ebsgnu

Даже курлом можно, думаю.

mendel:
Так критериев и нет собственно.
Все кроме Милторга напишут свой код, и мы обсудим у кого какие плюсы и минусы).
Одна ачивка у вас уже есть - самый первый и самый быстрый. Скорее всего будет еще и "самый быстрый из тех чей код работает").

Если бы вы мне сказали это раньше, я бы написал по другому.

mendel:
Если серьезно, то мне по коду показалось что пхп ваш "неродной" язык.

Да нет, как раз таки в основном на нем и пишу. Вот что было написано в начале, после чего я решил, что задание же на краткость кода, и, закомментировав данный участок, пошел писать внизу процедурщину))

mendel:
Есть несколько стилистических особенностей которые говорят о том, что скорее всего тут не без гугла обошлось.

Не без php.net.

mendel:
Ну и что мне особенно не понятно - если уж взялись за итераторы, то почему всё решение на них не довели? SplFileObject тут тоже напрашивается. Для работы с базой сигнатур. Вот признаться удивлен именно смеси процедурщины и итераторов. Ожидал что будут в первую очередь процедурные вопросы ибо большинство (включая меня) про итераторы вспоминают далеко не всегда когда надо и т.п., но если уж вспомнили, то почему не довели?

Оправдываться не хочу, но я написал этот костыль за минут 35-40, посреди ночи, видимо это и стало причиной, что я не прочитал ТЗ. А точнее прочитал его между строк. Более того, с Spl* библиотекой плохо знаком, потому что пишу код под PHP 5.2 (полу-энтерпрайз), где в требованиях указано использование только встроенных массивов, ведь PHP может быть скомпилирован без Spl (если не изменяет память, то до версии 5.3 точно). А ещё по этой же причине пишу без неймспейсов, closure и прочих фишек (кстати, код должен работать от 5.2 до 7.1 включительно). Но если бы я знал что на мой код скажут "несолидный" и "плохоструктурированный", а ещё что "критериев и нет собственно", я бы не поленился, и написал нормальный ООП класс итераторами и с несколькими режимами работы, а ещё бенчмарками прогнал, тогда бы хоть удовольствие получил)

Вообще, идея этих мини-хакатонов мне нравится, и я ещё месяца три назад думал создать тему с задачками для программистов, но потом что-то вялая была неделя, и я подумал, что никто кроме меня на такие хакатоны ходить не будет, поэтому и похоронил эту идею. А милторг молодец, все таки сделал, хотя задания у него бестолковые и скучные, взять битву регулярок: ничьи проблемы не решает, пользы - ноль.

mendel, если честно, я как-то упустил ТЗ мимо глаз. Сейчас перечитал: да, есть у меня косяки. Но! Считаю, что критерии должны быть указаны явно. Если мы боремся за краткость, то тогда претензии по код ревью не принимаются. Если мы пишем на правильность и с использованием Best Practices - могу переписать под ООП. Солидный код не может быть коротким.

Для меня тоже AMD где-то в 2000-х умер, потому что Intel начал выдавать совершенно несоизмеримую производительность. Сейчас сложно будет завоевать себе рынок. Думаю, только низкие цены помогут вернуть покупателей. Если бы собирал бюджетное решение - взял бы может AMD, через годик, когда камни свою надежность подтвердят.

Сейчас сижу на этом http://prntscr.com/eaqw77 + SSD Evo 850 Pro.

Дома тоже оставил подобный конфиг родителям, только там 8ГБ оперативки и тоже SSD старенький (OCZ Vertex), который кстати вполне себе работает уже около 5 лет. Ненавижу когда ПК тормозит, сразу начинаю закипать и злиться.

Все просто: нужно с минимальным бюджетом сделать и похоронить пару проектов. В основе любого успешного проекта лежит проблема и её решение. Для начала нужно определить: какие из существующих проблем (желательно чтобы эти проблемы были вашими) ещё не решены. Затем придумать максимально эффективное решение этой проблемы, с максимальной маржой. Без всего этого даже нету смысла что-то делать: все равно не взлетит.

Вообще, для начала около недели записывайте все ваши идеи куда-то в блокнот. Каждый раз ставьте оценку своей идеи как только вы её придумали. Затем, спустя неделю, ставьте ещё одну оценку. Если оценка не падает спустя время, значит эта идея вам запала, и скорее всего это то что вам нужно. Выберите несколько таких идей, и начните их реализовывать с минимальным бюджетом, скорее всего эти идеи будут обречены на провал, потому что понимание бизнеса приходит с практикой. Когда похороните пару проектов, над которыми корпели пол года, тогда и научитесь находить специалистов, писать ТЗ, и вообще будете знать все, что нужно знать для создания проекта, возможно даже научитесь делать мелкие фиксы по верстке, JS, PHP. Вам останется только найти достойную идею.

mendel, а что с присвоением в условии не так? Ну, понятно, что крутые дядьки так не делают, но если переменная используется в рамках конструкции, в которой она объявлена, то почему нет? В Go такая конструкция считается нормой:


func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v // v существует только здесь, в пределах { ... }
}
return lim
}

При этом область видимости v заключена в блок {}

Если брать за условие стандарты PSR, то тогда ещё можно говорить об объективности, и о краткости кода, в противном случае все могут писать в одну строку и экономить как это сделал я. Вообще, я более чем уверен что тот код, что я написал, можно ещё сократить, причем значительно. Намного интересней проводить олимпиады на скорость работы, а ещё - поработать коллективно над чем-то полезным, OpenSource, например.

Всего: 1540