• В последнее время появилось много критики Монго. С чем связано это?

    @baadf00d
    эйфория от новых возможностей прошла и вскрылись недостатки, на мой взгляд основные их них:
    — Слабая производительность на 1-серверной БД. Особенно заметно на map-reduce по данным, которые полностью влезли в память.
    — Особенности документо-ориентированной структуры. Многие переходили с табличных БД и тут понеслась: сначала радость, что не надо возиться со структурой, а потом расплата — в одной коллекции куча разных объектов и приложение регулярно читает из вроде бы известной коллекции что-то для себя неожиданное (очень старые объекты, некорректно измененные и т.п.).
    — Целостность данных. Кто-то привык, что БД контролирует этот вопрос, вешают констрейнты и ловят ошибки в логе в случае какой промашки по части бизнес-логики. Монга же ничего такого сама не контролирует, ну и получаются внутри БД ссылки на объекты, которых нет.
    — Отсутствие полноценных транзакций. Те, кто бросились все хранить в монге с ужасом поняли, что для биллинга нужно что-то другое. (должен оговориться, что не все пока поняли)

    По моему мнению отказаться от классической реляционной БД в пользу монги может позволить далеко не каждый проект. Если перетаскивать какой-нибудь небольшой интернет-магазин, то с бОльшей вероятностью это принесет боль и страдание нежели ожидаемый профит. Эффективным решением будет параллельное использование монги и реляционной БД, но чтобы это имело смысл — проект должен быть соответствующих размеров. Для небольшого проекта городить такой огород контрпродуктивно.

    PS Мое мнение основано на годичном опыте неплотной работы с монгой, опыт работы с реляционными БД — примерно 10 лет.
    Ответ написан
    2 комментария
  • В последнее время появилось много критики Монго. С чем связано это?

    nekipelov
    @nekipelov
    Сначала все руководствовались слухами, а теперь собственным опытом? :-)

    Лично я много раз расстраивался, используя mongo. Уже по коду первый версий видно, что БД пишется далеко не профессиональными программистами (ну а кому еще взбредет в голову переопределять стандартные C функции? пруф: github.com/mongodb/mongo/blob/v1.4/util/assert_util.h, github.com/mongodb/mongo/blob/v1.4/util/allocator.h). Но вроде бы, от версии к версии, с проблемами сталкиваемся все реже. Только вот наш продукт еще на этапе разработки, кто знает, что будет в реальной работе…
    Ответ написан
    2 комментария
  • В последнее время появилось много критики Монго. С чем связано это?

    merlin-vrn
    @merlin-vrn
    Куча недалёких школьников решили, что это серебряная пуля, и стали пихать её туда и туда. А потом выяснилось, что как и любое другое решение, в котором функциональность заведомо ограничена (в данном случае, в пользу скорости), она оказалась совсем не универсальна, и скорость-то, как выяснилось, получается только в определённом, не особенно-то и широком классе задач. Зато неудобства от ограниченной функциональности проявляются везде.

    Короче, куча тупой рекламы. От этой рекламы ощущения как от фразы — «давайте встроим в стульчак bluetooth — с ним любая вещь лучше».
    Ответ написан
    Комментировать
  • В последнее время появилось много критики Монго. С чем связано это?

    weirdan
    @weirdan
    Перерекламировали.
    Ответ написан
    Комментировать
  • Тяжёлые вычисления на node.js

    dizballanze
    @dizballanze
    Software developer at Yandex
    Можно использовать любую message queue + что-то вроде backgrounder для создания воркеров (дает дополнительные плюшки).
    Ответ написан
    Комментировать
  • Борьба с недобросовестными заказчиками

    Roosso
    @Roosso
    Нетипичный программист
    Тема старая. И обсуждалась уже на различных биржах не однократно.

    Если вы работаете по договору (у вас ИП или ООО) то боятся вам нечего. Клиент заплатит так или иначе. В прочем вы можете указать в договоре, что программный продукт будет зашифрован, снабжен backdoor и другими механизмами защиты. А если вы работаете без всяких договоров, как частное лицо, то встраивайте backdoor смело. Но лучше всего поступать как сказал megahertz свой хост и передача кода, только после оплаты.

    На некоторых биржах есть сервис безопасного проведения сделок. Но как показывает практика, он не всегда срабатывает должным образом. И потом это всегда нервы, время, силы…
    Ответ написан
    2 комментария
  • Какую программу использовать для резервного копирования MySQL большого объема без лока базы?

    pr0tect0r
    @pr0tect0r
    mysqlhotcopy
    набор Maatkit (Percona toolkit)
    Утилита mk-parallel-dump делает снимок (дамп) таблиц и баз данных в параллельном режиме. Применяемая в паре с ней mk-parallel-restore, — загружает ранее сделанные резервные дампы. Главное отличительное свойство этих утилит от штатных средств и методов MySQL — использование параллельных методов доступа к базе данных, что заметно повышает скорость выполнения операции.

    И, наконец, более сложный и избирательный вариант бэкапа представляет mk-archiver — эта утилита выгружает записи, отобранные по заданному критерию, с одной таблицы MySQL в другую, этого же (или любого другого) MySQL-сервера, либо — в указанный файл. Утилита спроектирована с учетом очень простой возможности его расширения (подключение своих постпроцессов и предварительных фильтров) и добавления собственной логики сохранения данных.
    Ответ написан
    2 комментария
  • Хранение картинок в БД: за и против?

    4dmonster
    @4dmonster
    Хранить в виде BLOB в базе — нельзя!
    Только внешние файлы!

    А уж при таких количествах — тем более.

    А «При этого однозначного ответа нет» только потому, что 18 иконок 16на16 в десктопном приложении ещё терпимо запихать в базу ради облегчения работы ленивого программиста.
    Ответ написан
  • Борьба с недобросовестными заказчиками

    megahertz
    @megahertz
    full stack разработчик
    Если у Вас все неофициально, то могут настучать о незаконной предпринимательской деятельности, об уклонении от налогов.

    Сам никогда не отдаю заказчику код до оплаты, все показываю толкько на своем хостинге. Сразу перед выполнением об этом договариваюсь, отказываюсь от проекта если заказчик не согласен. Исключение — работа на окладе на долгосрочных проектах.
    Ответ написан
    9 комментариев
  • Хорошие ресурсы по настройке High Load серверов + по nginx триксам?

    DmZ
    @DmZ
    Есть пару хороших книг, рекомендуемых к прочтению:
    Ответ написан
    Комментировать
  • Git или SVN, что?

    GarretUA
    @GarretUA
    Поговаривают git мержит хорошо, не в пример svn(думаю многие в этом убедились при крупных слияниях веток). Раньше я гит только трогал немного, плотно с ним не работал, но сейчас моя команда в составе 4-х девелоперов переезжает на git. Время покажет что лучше.
    Ответ написан
    4 комментария
  • Git или SVN, что?

    gricom
    @gricom
    Если в SVN вам не нравится только наличие лишних служебных файлов в каждой директории, то вы можете перейти на SVN 1.7, в котором этого уже нет
    Ответ написан
    1 комментарий
  • Environment for Python development

    devosx
    @devosx
    Devops
    PyCharm мой выбор, позволяет многое, в последней версии вроде даже можно подключать python с удаленного хоста и библиотеки юзать которые на том хосте. Автокомплит есть, подсветка есть, поддержка svc и git и mercurial. В общем самый удобный инструмент для кодинга на python.

    p.s. сугубо личное мнение, так как пишу только на нем. Полностью устраивает
    Ответ написан
    4 комментария
  • Реализация многоязычности в PHP?

    alekciy
    @alekciy
    Вёбных дел мастер
    А с 00 лет ни чего кардинально не изменилось. Если прочесть каменты, то становиться очевидным, что часть народ изобретает велосипед в своих проекта и выходит у них в итоге gettext. В общем делали-делали, а модуль i18n получился gettext.

    Я бы рекомендовал так. gettext использовать для редко изменяющийся информации. Меню, различные надписи делать через него. При этом получаем ряд плюсов:

    1) Формат существующий много лет и работающий на огромном множестве платформ. А это означает, что он понятен будет любого кто знает о нем, даже если человек не знаком с тем языком на котором пишется система. Т.е. все преимущества стандартов. С велосипедами же приходится еще разбиратся как оно работает.

    2) Кэширование. gettext активно кэшиться в ОЗУ.

    3) Обилие софта для переводчиков.

    4) Поддержка множественных чисел. Не во всех велосипедах об этом думают в том виде, как это сделано в gettext-е.

    5) Поддержка gettext в шаблонных движках.

    6) С gettext-ом можно работать не только из PHP. Актуально на гетерогенных проектах.

    Ну а контентную часть рекомендую вынести на уровень БД. Лично я использую для каждого языка отдельную таблицу. Плюс по сравнению с хранение в отдельном столбце — отсутствие ALTER-ов при добавление/удалении языка.
    Ответ написан
    Комментировать
  • Yii CMS, стоит ли?

    kotomyava
    @kotomyava
    Системный администратор
    Идея написать «написать что-то вроде CMS на очень крутом, на мой счет, фреймворке Yii» порочна изначально.
    Дело тут не в желании написать CMS и не в Yii, а в том, что писать CMS имеет смысл когда сформулирована некая идея, зачем эта CMS нужна и чем она будет выгодно отличаться от сотен имеющихся. То, что она будет написана на основе какого-либо фреймворка, отнюдь не решающее достоинство.

    Правильной идеей было бы: Хочу написать CMS которая будет реализовывать такие-то принципы, иметь такие-то уникальные фишки, и.т.п. ваша же идея провальна с постановки задачи.
    Ответ написан
    3 комментария
  • Русские IT сайты

    AStartsev
    @AStartsev
    Про архитектуру высоконагруженных систем insight-it.ru
    Ответ написан
    Комментировать
  • Знатокам imagemagick?

    @korvindest
    Думал справится с вашей проблемой за пару часов, а провозился почти целый день.
    Видимо я еще не совсем знаток IM.
    Вот рецепт:
    convert -contrast-stretch 21 -quality 100 sample_src.jpg sample_contrast.jpg
    
    convert -modulate 100,111,95 sample_contrast.jpg sample_hue_sat.jpg
    
    
    convert sample_hue_sat.jpg -channel red -separate sample_red.jpg
    
    convert sample_hue_sat.jpg -channel green -separate sample_green.jpg
    convert sample_hue_sat.jpg -channel blue -separate sample_blue.jpg
    
    #в преобразовании цветовых каналов используеться полиномная кривая в интервале от 0 до 1
    
    convert sample_red.jpg -function Polynomial '-2.63585, 3.49452, 0.14132, 0' sample_red_level.jpg
    convert sample_green.jpg -function Polynomial '-0.4, 0.3, 1, 0' sample_green_level.jpg
    convert sample_blue.jpg -function Polynomial '0.72549, 0.13725' sample_blue_level.jpg 
    
    
    convert sample_red_level.jpg sample_green_level.jpg sample_blue_level.jpg -channel RGB -combine sample_level_result.jpg
    
    convert -modulate 100,68,91 sample_level_result.jpg sample_level_result_hue_sat.jpg
    convert sample_level_result_hue_sat.jpg -background black -vignette 0x5  sample__happy_end.jpg
    

    Единственное, что я не успел доделать, это затемнение по краям.
    Если надо будет, то завтра допишу и отвечу на возникшие вопросы.
    Ответ написан
    1 комментарий
  • Вопрос по Siege?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Это запросы, на которые ваш сервер ничего не ответил (или не смог ответить внятно, а просто не закончил ACK рукопожатие). В общем если такое проскакивает — то сервер не справляется.

    Второй вариант, само собой, что у вас не хватает канала дома (ограничения по pps, ограничения по скорости). С таким я не сталкивался, так как танкую всегда из датацентров или домашнего сервера (там тоже канал отличный).
    Ответ написан
    Комментировать
  • Вопрос по Siege?

    antoo
    @antoo
    А интернет-канала хватает в 100 потоков грузить?
    Ответ написан
    Комментировать