Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет mumuntu ([info]mumuntu)
@ 2008-08-07 02:16:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Я же размышлял вот над какой проблемой, и даже рассказывал о ней жене, находясь в продуктовом магазине.
Вот представьте, что есть у вас сайт, написанный, к примеру, на PHP, и где-то есть memcached, в который складываются куски страниц.
Сайт удобно поделен на разделы, и объекты из кэша не вылетают до тех пор, пока контентщик в админке не попросит движок вынести из кэша все объекты для указанного раздела.
В этой модели все хорошо, кроме того факта, что memcached очень простой инструмент. Он может только положить, достать и показать статистику. Ну и еще удалить. Поэтому для описании иерархии, которая неизбежно возникает при наличии разделов и сопоставленных им ключей в кэше, мы ничего лучше не изобрели, как использовать таблицу в MySQL, прикрутив ее прямо в память.
Я уже почти убедил себя в том, что это неизбежное зло, но меня дико раздражает один момент: отныне рестарты MySQL и memcached следует производить согласованно, чтобы описание в базе соответствовало ситуации в кэше. Подобной цветущей сложности хотелось бы избежать.
Опять же, я пока не придумал ничего лучшего, чем завести столько инстансов memcached, сколько у меня разделов в админке, что мне совершенно не подходит по соображениям гигиены мозга.
В Java как-то проще было, честное слово.
Надо бы посмотреть, как люди делают, но для этого сперва надо некоторым образом вынырнуть изо всяких текущих дел. Интуиция подсказывает, что к тому моменту я могу уже потерять всякий интерес к сложным взаимоотношениям PHP, memcached и базы-описателя в MySQL.
Такая вот инфа, камрады.


(Добавить комментарий)


[info]alexclear@lj
2008-08-06 18:31 (ссылка)
Мне больше всего не нравится то, что а) исходное решение с MEMORY базой в мсукуле было найдено быстро, б) оно отлично работает, в) оно мне с самого начала показалось идиотским.
Если бы не противоречие между б) и в), так и фиг бы с ним.

(Ответить) (Ветвь дискуссии)


[info]dph@lj
2008-08-07 04:14 (ссылка)
Гм, а может MySQL Cluster и никакого memcached?
Кластер - это как раз и есть множество inmemory табличек. Репликация между тебе тут нафиг не сдалась - как раз кэш и получится.

(Ответить) (Уровень выше)


[info]bealex@lj
2008-08-06 18:44 (ссылка)
Перечитай, как делается кэширование в LJ. Там ведь те же грабли… И сделано довольно грамотно, в отличие от некоторых других.

Я бы лично — делал файловый кэш + прикрутил бы nginx на отдачу этой статики (кэширвоание там тоже вроде бы есть). А саму статику генерил бы уже через админку похапей…

А, там у вас куски а не целиком… Ну, и в жопу. Хранить целиком. Нефиг их пересобирать.

Хотя, если система прав — там жопа, да, там иерархия нужна, я в это в jDnevnik'е врезался…

(Ответить) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 18:51 (ссылка)
Перечитай, как делается кэширование в LJ.

Я примерно догадываюсь, с их мощностями можно под каждый тип объекта по инстансу memcached держать и гасить весь кэш целиком, я бы эту тему развил, если бы мне не лень было делать инфраструктуру под это.

Я бы лично — делал файловый кэш

Файловый кэш, как показала практика, приводит к срыву крыши у файловой системы.
На самом деле, надо было просто иерархически файлы в кэш раскладывать, как делает тот же Squid, но, когда внедряли файловый кэш, я был далеко, а переделывать пришлось быстро.

Хотя, если система прав — там жопа, да, там иерархия нужна, я в это в jDnevnik'е врезался…

Не, у меня никаких прав, все голое, но кэшировать страницы целиком в память я уже пробовал - дофига памяти уходит и непонятно как их выносить из кэша, выносили в итоге по таймеру, но тогда получается слабый хит рейт, где-то каждая седьмая не берется из кэша. Таймер 10 минут.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:00 (ссылка)
Что-то я прогнал, можно же просто кэшировать везде однотипные данные, например данные типа "результат SQL-запроса", причем, кэшировать только те результаты, которые действительно хорошо кэшируются.
Ну, это и я могу, но не хочу.
Опять-таки, возникает вопрос - а как их инвалидировать?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:06 (ссылка)
In your setter functions, update both the database and Memcached.

Нормальный ход.

(Ответить) (Уровень выше)


[info]bealex@lj
2008-08-06 19:16 (ссылка)
Файловый кэш нужно тоже делать умеючи :) Иерархию там, ляляля...

Файлы тем и хороши, что насрать на хитрейт. Самые частоиспользуемые вытягиваются в память, а редкие — быстро подгружаются с диска. И наплевать, что они места много занимают. Если грамотно распределить каталоги — то отлично будет грузить, проверено. У меня статики на одном сайте в файлах 5 Гб. Архив за 2 года, который пополняется каждые 10 минут чем-то. И пускай себе лежит, зато отдается по первому требованию и за сущие копейки.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]bealex@lj
2008-08-06 19:21 (ссылка)
И файлов там сотни тысяч :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:25 (ссылка)
Ну вот да - передовой опыт по иерархической организации структуры каталогов мы обязательно переймем.
Я уже было собирался все затолкать в БД, но это решение тоже выглядело идиотским, а вот сделать простейшую иерархию на FS - милое дело.
Что ж я раньше до этого не додумался.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]bealex@lj
2008-08-06 19:34 (ссылка)
Единственное, что нужно учесть… сканировать такие каталоги нельзя. Только "прямой" доступ. И если, не дай бог, есть какой-нить антивирус, который файлы сканирует — тогда затыкай, прорвет. Тогда БД — лучше некуда.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:38 (ссылка)
Тут видишь какое дело, их не только сканировать нельзя, их и копировать нельзя, я сегодня с утра попробовал.
Реально черная дыра получается.
А с БД я как-то влетел еще зимой: через NHibernate закладывал в базу картинки, первое, что сделали контентщики - залила в базу 2 метра.
Хостинг без понимания отнесся к этой идее.

(Ответить) (Уровень выше)


[info]alexclear@lj
2008-08-06 20:19 (ссылка)
Погоди, погоди, а почему нельзя их сканировать, если там иерархия с хорошей вложенностью?
Ну будут в конце концов в каталоге какого-нибудь 16-го уровня вложенности 200 файлов лежать.
В чем сложность?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]bealex@lj
2008-08-07 03:31 (ссылка)
Это в любом случае тормоза, зачем их втыкать? Иерархию нужно организовывать так, чтобы сам путь был ID объекта. Или получался из индекса.

А так, пока просканируешь 16 уровней по 200 в каждом — наступит зверек и даже успеет вырасти из маленького.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-07 03:35 (ссылка)
0/a/f/e/8/4/4/2/0afe8442768300faa12......jpg
Ну как-то так, само собой.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]bealex@lj
2008-08-07 03:43 (ссылка)
нене, 200 уровней в каждом да на 16 уровней… Это
200*200*200*200*200*200*200*200*200*200*200*200*200*200*200*200 итераций в худшем случае. Это
2^16*10^32

Это ж пиздец сколько. Не, нахуй. Только прямой доступ…

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-07 03:53 (ссылка)
Ну так я и написал как прямой доступ сделать.
Я просто думал, ты имеешь в виду, их вообще сканировать нельзя.
Вот директорию на 10000 файлов вообще трогать нельзя - все улетит.

(Ответить) (Уровень выше)


[info]alexclear@lj
2008-08-06 19:23 (ссылка)
Ну вот, кстати, если задумываться о двухнодовой конфигурации, то для отдачи контента с файловой системы придется огород городить.
Или делать тогда уж трехнодовую с разбиением данных между нодами.
Но это я себе льщу, до двух нод еще дорасти надо.

(Ответить) (Уровень выше)


[info]sply@lj
2008-08-30 10:23 (ссылка)
Иерархия для ускорения поиска в FS уже не так актуальна как когда-то давно. Directory hash на уровне vfs или драйвера конкретной fs позволяет быстро работать и с миллионом файлов в одном каталоге.

(Ответить) (Уровень выше)


[info]pavel_kudinov@lj
2008-08-06 19:36 (ссылка)
>Файловый кэш, как показала практика, приводит к срыву крыши у файловой системы.

Файловая система файловой системе рознь. Что пробовали-то?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:39 (ссылка)
ext3
Сделать кэш на райзере была идея, но она не нашла отражения в умах.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pavel_kudinov@lj
2008-08-06 19:44 (ссылка)
на рейзере можно класть всё в одну папку, т.к. там нормальный поиск.
в общем, есть мнение что на рейзере всё будет отлично. а nginx прекрасно напрямую будет отдавать.

преимущество и недостаток memcached - в доступе по TCP.

и вообще, если можете себе позволить держать всё в памяти - опять же - тупо соберите виртуальный диск и в него складывайте, и отдавайте с него nginx'ом.

memcached - это для кластера и/или для кеширования внутренних структур данных imho.
хотя вообще от него по-хорошему уходить нужно, но эту тему уже на HL++ у Бунина раскрывать будем ;-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:53 (ссылка)
У memcached есть еще одно потенциальное применение, которое тоже не нашло отражения в умах - я с его помощью делал стыковку кода на PHP и Java-стека (Groovy, Grails и прочие модные слова) - офигенно ложится.
Можно любые две платформы стыковать, под которые клиент есть (сейчас подо все есть).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pavel_kudinov@lj
2008-08-06 19:56 (ссылка)
По-моему проблема не в том как обменяться данными, а в том как ихручками сериализовать в универсальный формат, а тут memcached интерфейсы никак не помогут

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 20:02 (ссылка)
XML-RPC зато решает.
Там memcached служил несколько для другого, чтобы не нагружать XML-RPC сервер на каждый запрос, как-то мне стремно было, что он в момент захлебнется.
Тем более, что данные там редко менялись, их один поток в бэкграунде в яве закидывал каждые 10 минут в кэш, а все остальные выдергивали.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]zamotivator@lj
2008-08-07 04:24 (ссылка)
Я вообще незамутнен проблемами веб-производительности, но судя по комментам там жопа. Посему хочу немного насрать на XML-RPC. Я не знаю, причина в аццки кривых руках пары коллег, или XML-RPC уводит (уводил) в полнейший тормозящий звездец от просто потока состояний.
Грубо говоря, есть у нас базы на диске, они в состояниях разных быть могут, состояние грубо говоря одно на базу целиком... И иногда оно передёргивается.
Как только мы включаем кластеризованную загрузку машина с XML-RPC захлёбываеися количеством пакетом и нехваткой проца. А ведь даже не двуядерная там стоит она... Вот.

(Ответить) (Уровень выше)


[info]bealex@lj
2008-08-07 04:49 (ссылка)
XML-RPC — старое, скрипящее говно. С говняными реализациями и отсутствующей половиной нужного функционала. Умер он в смысле :) (по-крайней мере на Java, не знаю, может под похапе они таки успели написать нормальную реализацию)

(Ответить) (Уровень выше)


[info]fenidik@lj
2008-08-07 04:17 (ссылка)
"Я примерно догадываюсь, с их мощностями можно под каждый тип объекта по инстансу memcached держать"

с какими мощностями? ;)

(Ответить) (Уровень выше)


[info]sply@lj
2008-08-30 10:20 (ссылка)
Для слабого хитрейта можно использовать Nслойное кэширование. Самый простой вариант - два слоя с разными политиками удаления из кэша. 1 слой небольшого размера, куда первоначально попадают все объекты при первом обращении. При втором обращении они попадают во второй слой, который и является основным хранилищем. При заполненном первом уровне при необходимости добавить новый объект место для него освобождается удалением по FIFO. Таким образом слабый хитрейт переносится на небольшой и быстрый 1 уровень. Хитрейт 2 уровня регулируется размером 1 уровня.

Если с памятью вообще беда, то можно сделать и на отложенном кэшировании за счет более сложной реализации и меньшей эффективности.

(Ответить) (Уровень выше)


[info]alexclear@lj
2008-08-06 19:30 (ссылка)
Я вон что нашел: http://wiki.codemongers.com/NginxHttpMemcachedModule
По-моему, тоже офигенно, надо внедрить.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]freeperson@lj
2008-08-07 18:52 (ссылка)
А он не овладеет всей памятью раз и навсегда?

(Ответить) (Уровень выше)


[info]lojnonojka@lj
2008-08-06 18:54 (ссылка)
ничего не поняла практически, но прочитала внимательно.

(Ответить) (Ветвь дискуссии)


[info]ubi_que@lj
2008-08-07 02:38 (ссылка)
+

(Ответить) (Уровень выше)


[info]schors@lj
2008-08-06 19:30 (ссылка)
Не сочти за этот самый, но ИМХО ошибка тут начинается с букв ХУЙ PHP, а потом куски страниц в memcached... нечто сложное уже на этом этапе. И вдруг ещё через две ступеньки ты начинаешь искать решение не делать каждый шаг тремя прыжками на левой ноге зажмурившись и кувырок спиной.
У тебя вообще проблема описывается простой формализацией иерархии. А в том варианте что ты выдал - можно только на кофейной гуще гадать что сделать.

(Ответить) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:32 (ссылка)
"Надпись: мама, я не виноват!"
Веб-программирование оно вообще такое, когда я в первый раз столкнулся с некоторыми приемчиками, я серьезно усомнился в нормальности их авторов.
И до сих пор сомневаюсь, теперь уже и в себе.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-06 19:35 (ссылка)
:))))))))))))))))))))))
да, бывает иногда (я про себя)
Я тут посмотрел что рубисты делают... я даже стал спокойнее относиться к яверам :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]freeperson@lj
2008-08-07 18:56 (ссылка)
Но PHP-шники всё-равно впереди планеты всей? (по Вашему мнению) :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-07 18:59 (ссылка)
Позади, наверное, всё-таки. В отличии от рубистов их извращения не красивы :) От рубистов хоть голову кружит - кажется что попал в сумашедший дом. А с ПХПшниками ощущения - как попал в русскую армию.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]freeperson@lj
2008-08-07 19:04 (ссылка)
Как человек, несколько лет не вылезавший из чужих кодов на "пыхе", соглашусь. Хотя, если не стоит задачи создать высоконагрузочные приложения (завоевать Японию/США), то и силами русской армии можно работать. В выходные тренируясь в Моссаде (допустим, Python).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-07 19:12 (ссылка)
Можно. Но я сомневаюсь что вся история русской армии это пример для подражания и совета так делать. При очевидном её успехе когда "надо уже вчера". Примерно так и с пыхом. Можно. Но всегда будет лучше по другому. Если конечно нет мнения что это менталитет и наш крест.

(Ответить) (Уровень выше)


[info]pavel_kudinov@lj
2008-08-06 19:33 (ссылка)
Я, наверное, не понял контекста, НО
- вместо мемкеша на каждый тип объекта можно в качестве ключа использовать не ID объекта а строку вида "OBJECT_TYPE-OBJECT_ID", т.е. например запись 23 таблицы user хранить не в memcached для user под ключём 23 а в memcached для всего с ключём "user-23"
- зачем использовать mysql с таблицами в памяти, если можно хранить иерархию в том же memcached, настроив отдельную instance с гарантированным невытеснением. key-value с быстрым доступом как нельзя лучше подойдёт для хранения иерархии. Сложные данные можно сериализовать (если perl то, например, с помощью Storable). Иначе всё равно начнёте хромать на СУБД если для каждой сборки страницы будете SQL гонять... хотя опять же зависит от контекста

p.s. кстати, в mysql есть 2 способа заставить его держать таблицы в памяти - движок HEAP и "хакерский" вариант - диск в оперативе и симлинк DATA папки мускула или отдельной таблицы туда. Использовал такой вариант когда нужна была большая таблица в памяти с полями, не поддерживаемыми HEAP движком.

(Ответить) (Ветвь дискуссии)


[info]schors@lj
2008-08-06 19:37 (ссылка)
P.S. А, кстати, есть проигрыш/выигрыш? Я тут думал об этом, но забил за нехваткой времени

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pavel_kudinov@lj
2008-08-06 19:40 (ссылка)
в "хакерском" варианте? поля типа text, B* индексы а не только хеши.

минус - идёт через виртуальную ФС, в теории должно быть медленнее

на практике насколько я помню, принципиально производительность не различается

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-06 19:42 (ссылка)
Ага, т.е. "феерического зависона" не случается... ну хорошо. Да, понятно что будет проигрыш, правда, в том случае если они сами подобие хакеркого варианта не делают.
Да-да-да, именно B* индексы :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pavel_kudinov@lj
2008-08-06 19:48 (ссылка)
феерические зависоны были ;-) но связаны они были не с ФС, а с нестабильностью индексов MyISAM под сверхвысокими нагрузками на мускуле ниже 5.0

(это был один из первых моих больших crawler'ов, mysql бедный работал как планировщик задач и хранитель иерархий данных (награбленное я в файлы клал)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-06 19:50 (ссылка)
:))) да-да-да, индексы это было наше всё

(Ответить) (Уровень выше)


[info]alexclear@lj
2008-08-06 19:42 (ссылка)
Надо думать!
Проигрыш только в том, что у тебя было памяти много, а стало меньше.
Ну и еще некоторый перерасход оперативы за счет того, что кэши мускуля никуда не деваются.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-06 19:45 (ссылка)
ещё лишняя абстракция в виде файловой структуры и кэшей файловой системы (последнее, правда, решается если об этом помнить)

(Ответить) (Уровень выше)


[info]alexclear@lj
2008-08-06 19:47 (ссылка)
- вместо мемкеша на каждый тип объекта можно в качестве ключа использовать не ID объекта а строку вида "OBJECT_TYPE-OBJECT_ID", т.е. например запись 23 таблицы user хранить не в memcached для user под ключём 23 а в memcached для всего с ключём "user-23"

Угу.
Но я пока не очень понимаю, чем это поможет - при инвалидации придется весь кэш полностью перебрать.

- зачем использовать mysql с таблицами в памяти, если можно хранить иерархию в том же memcached, настроив отдельную instance с гарантированным невытеснением. key-value с быстрым доступом как нельзя лучше подойдёт для хранения иерархии.

Да, была такая идея.
Проблема в том, что я так и не придумал, как у меня это будет работать при параллельном доступе к одной и той же иерархии из многих процессов.
Скажем, два воркера решили у меня закинуть по объекту в кэш для одного и того же модуля. Соответственно, они оба должны проапдейтить иерархию в кэше, и может настать момент, когда они друг за другом ее возьмут и друг за другом ее обратно положат. Изменения первого положившего будут потеряны, а это в моем случае плохо, т.к. при инвалидации не все объекты для модуля выбросятся.

p.s. кстати, в mysql есть 2 способа заставить его держать таблицы в памяти - движок HEAP и "хакерский" вариант - диск в оперативе и симлинк DATA папки мускула или отдельной таблицы туда. Использовал такой вариант когда нужна была большая таблица в памяти с полями, не поддерживаемыми HEAP движком.

Отличная тема, спасибо, при случае попробую применить.
А то я уже понял, что хранилище в памяти только для индексации memcached и годится, ничего тяжелого туда не положить.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pavel_kudinov@lj
2008-08-06 19:52 (ссылка)
>Скажем, два воркера решили у меня закинуть по объекту в кэш для одного и того же модуля

Проблема будет и в mysql, нужно делать прикладной lock

он одинаково хорошо делаются и в mysql (get_lock/release_lock - не табличные а именно виртуальные по ключу) и на memcached (через атомарный метод создать-ключ-если-нету)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:59 (ссылка)
Проблема будет и в mysql, нужно делать прикладной lock

Да, точно.
Отлично, значит будем пробовать выбросить эту таблицу из мускуля.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 20:14 (ссылка)
Бляяяя, какой позор.
Как же я забыл про explicit locking-то в данном случае, это же MySQL, блокировочные базы вообще все должны помереть, я считаю.
И я тут же придумал как сделать хранение структуры в memcached, вот только PHP для этого ну совершенно не годится.

(Ответить) (Уровень выше)


[info]alexclear@lj
2008-08-06 21:04 (ссылка)
Не сразу сообразил - в мускуле проблемы не будет, это же просто два INSERT'а.
Их даже сбатчить можно. Там ведь нет "достал-изменил-положил", там только "положил".
А вот с инвалидацией там могут быть проблемы, да, так как там именно "достал-изменил", а другие в это время могут добавлять новые ключи.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 21:17 (ссылка)
Да вот кстати нифига - не будет проблем с инвалидацией.
Будет инвалидироваться лишнее, но это не страшно. А старое в кэше не останется ни при каких условиях.

(Ответить) (Уровень выше)


[info]schors@lj
2008-08-06 19:34 (ссылка)
Забудь предыдущий пост. Ошибка в том что ты ищешь решение под технологии. Нарушаешь основной принцип программирования :)

(Ответить) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:40 (ссылка)
Это ненадолго, зря я, что ли, перловиков искал?
Пых умрет.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-06 19:46 (ссылка)
[перекрестился] побойся Бога убивать перлом пыха...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 19:48 (ссылка)
Перл еще поживет, походу, перл еще поживет...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-06 19:53 (ссылка)
Да ну его в болото. Костылей дофига, окружение устарело лет на 10, новое пишут через одно место... Как скриптовый развитый язык - да, для веб разработок.. Я кстати до сих пор не осознал откуда вообще родилась мода писать веб-приложения на скриптовых языках. При наличиии кучи компилируемых и псевдокомпилируемых. Тому же питону чуть ли не столько же лет.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-06 20:24 (ссылка)
А ты, видимо, думаешь, питон не скриптовый?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-07 03:08 (ссылка)
http://en.wikipedia.org/wiki/Scripting_language
почему-то думаю что не скриптовый

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-07 03:33 (ссылка)
В статье какая-то лабуда написана, риальни.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-07 04:27 (ссылка)
Хорошо, давай определимся - что по твоему такое скриптовый язык?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alexclear@lj
2008-08-07 04:34 (ссылка)
В современном мире не существует такого понятия.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]schors@lj
2008-08-07 04:37 (ссылка)
как не существовало и раньше. моё удивление и недоумение относилось скорее к "нахера вебприложения принято писать на батч-файлах" :)

(Ответить) (Уровень выше)


[info]zamotivator@lj
2008-08-07 04:31 (ссылка)
*надевая каску и кепку с надписью "Питон рулит"* А чо не питонщиков ищешь? =)
Хе-хе. Писал я на перле лет в 16 где-то... Написал галерею что файлы из папки отображает по-человечески, изобрел лесосипед что собирает странички по частям, посмотрел на состояние браузеров и количество костылей что писать для них надо... И просто положил ХУЙ. =)
Кста, щас как лесосипед вспомнил и понял, ну нихуя себе, ведь прошло пять лет уже, шестой идёт, а сделанный тада лесосипед всё ещё актуален в продакшане, а ведь тот пацан даже слова такого не знал =)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]freeperson@lj
2008-08-07 19:06 (ссылка)
А их мало. А опытные уже работают, и покупать их очень дорого

(Ответить) (Уровень выше)


[info]alexclear@lj
2008-08-07 19:10 (ссылка)
Питонщиков я бы не искал, а просто нанял, чего их искать.
Таковы условия игры сейчас - надо делать на Perl, значит будем делать на Perl. Я не возражаю, т.к. язык в целом нормальный.
А с питоном, скорее всего, было бы больше проблем.

(Ответить) (Уровень выше)


[info]schors@lj
2008-08-06 19:47 (ссылка)
Мы тут клёво сделали wsgi-хостинг. Вот это шанс.

(Ответить) (Уровень выше)


[info]bealex@lj
2008-08-07 03:39 (ссылка)
Поставь там рядом JVM, в нем EHCache, и настрой доступ из похапе туда. Гыыыы. Ну, или BerkleyDB — тоже должно работать отлично.

(Ответить) (Ветвь дискуссии)


[info]jdevelop@lj
2008-08-07 04:11 (ссылка)
мамма мия, bdb je - оно прикольное, но я там засрал товарищам весь форум с багами и вопросами за четыре года, при слове bdbje меня натурально передергивает )

нинада его советовать

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]bealex@lj
2008-08-07 04:35 (ссылка)
Да ладно, для несложных задач должно нормально работать. Правда я тоже от нее отказался в конце концов… Но несколько по иным причинам.

Фигня, разве мало похожих хороших вещей? Важен же-ж прынцып! :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2008-08-07 04:38 (ссылка)
оно у нас продолжает работать, но сколько для этого потребовалось нервных клеток и моих седых волос - не знаю даже я )

(Ответить) (Уровень выше)