• ООП в высоконагруженных проектах считается устаревшим?

    Adamos
    @Adamos
    Баланс.
    Если проект реально высоконагруженный, но простой, как табуретка - то человек прав, чем меньше в коде будет абстракций, тем меньше оверхеда.
    Но если проект не только высоконагруженный, но и сложный - вы мозг сломаете, делая его функционально. Функции хороши там, где нужны простые решения. Если вы можете разобрать всю архитектуру на простые решения - вам не нужно ООП. Если не можете - то без него проект захлебнется в собственной сложности.
    Ответ написан
    3 комментария
  • ООП в высоконагруженных проектах считается устаревшим?

    OnYourLips
    @OnYourLips
    Дегенерат.
    Увольняйтесь (на испытательном сроке это просто, отрабатывать не надо), не надо ему ничего доказывать.
    И ссылку на этот вопрос ему тоже дайте.

    1. Во-первых, он (или вы при пересказе) путает функциональную и процедурную парадигмы. Я не думаю, что на самом деле имелось ввиду ФП.
    2. Во-вторых ООП - это отличный инструмент уменьшения сложности. И он очень важен в высоконагруженных проектах, позволяя резко снизить стоимость разработки и поддержки.
    3. В-третьих, он не знает ничего про оптимизацию, если пытается превентивно применить ее в том месте, которое не является узким. Самое узкое место - архитектура.
    Ответ написан
    3 комментария
  • Как приступить к изучению баз данных на C++ в Ubuntu?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Насколько я знаю, можно предположить, что MS SQL будет запускаться только на MS платформе (и то, может через wine можно запустить под линуксом).
    Практически все остальные базы данных работают под линукс, в том числе и убунтой.
    Для С++ есть библиотеки для любой БД.

    Вам нужно не С++ изучать с БД, а просто изучить SQL, а потом просто ею пользоваться из вашего языка программирования.
    Кроме того, не забывайте, что база данных может стоять на любом удаленном сервере.
    Ответ написан
    Комментировать
  • Как перезагрузить nginx без root'а?

    savostin
    @savostin
    Еще один программист
    По крону от root'а запускать скрипт, который будет проверять какой-то флаг (файл, mysql, не важно), который будет выставляться из web.
    Ответ написан
    7 комментариев
  • Адекватная система развития в онлайн гонках?

    Matyushara
    @Matyushara
    Я честно скажу, что не уверен, что предложенная мной ниже система будет пригодна без доведения для онлайн, но самая адекватная система развития, которую я видел, была в игре Toca Racing Driver 3:

    В зависмости от того, какие гонки ближе, изначально у игрока есть возможнсть выбора кузовных гонок и open wheel. Соответственно, далее идёт развитие внутри своего класса, условно от картинга до формулы-1 и от VW Golf до болидов DTM.

    Суть в том, что чтобы прогрессировать от класса к классу нужен опыт, а чтобы прогрессировать внутри класса нужны деньги на пргрейд. В принципе, как уже сказали выше, обратите внимание на World of Tanks, там отлично решили проблему участия разных классов.

    Может быть, ещё будет полезно: в тех же гонках на выносливость (самая известная 24 часа ЛеМана) на трассе сразу несколько классов машин (3, если не изменяет память). Все машины одновременно на трассе, при этом каждый пилот ведёт борьбу в своём классе. Условно, пилот 1-го класса побежждает только приехав первым, а 3-го может приехать 10 и победить, если он опередил всех в своём классе.
    Ответ написан
    Комментировать
  • Предлагаю сделать опцию «доступно для друзей»

    @Chistya_SW
    А если написать статью, скажем, в Гугл-доках? Друзья почитают, выскажут мнение, тогда уже отправлять на Хабр. Или не отправлять :)
    Ответ написан
    Комментировать
  • Интересное/странное использование malloc — какой смысл?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Для представления строки из N 8-битных символов нужно (N * 8 / 6) = (N / 3 * 4) 6-битных символов (base 64).
    (l + 2) / 3 это деление на 3 с округлением вверх, поскольку количество символов должно быть целым.
    + 1 — это для нуля в конце строки.
    Ответ написан
    1 комментарий
  • Куда именно память утекает в PHP?

    CodeByZen
    @CodeByZen
    php, js, my/mssql, sqlite, html, css, it-consult
    Я конечно, могу ошибаться, и возможно меня заминусуют, но прежде чем ставить софт для дебага, стоит посмотреть в логи. В ошибке должен быть конкретный момент описан, где именно расходуется много памяти и соответственно где возникает ошибка.
    Ответ написан
    2 комментария
  • Linux. Неблокируемоый сервер. Какой тип лучше использовать?

    Indexator
    @Indexator
    Вам наверное стоит обратить внимание на курс лекций Сетевое программирование в UNIX, которые
    подготовили специалисты SkyDNS и компании «Айдеко»

    а конкретней на лекцию о том Как решить проблему 10 000 соединений?, где
    Автор курса Александр Патраков объясняет, какие функции можно вызывать вместо select(), чтобы переписанная с их использованием программа могла эффективно обрабатывать большое количество одновременных подключений.

    Практическое задание состояло в переписывании астрологического сервера с использованием семейства функций epoll() и проверке, выдерживает ли он 10000 соединений.
    Ответ написан
    Комментировать
  • Linux. Неблокируемоый сервер. Какой тип лучше использовать?

    @NiGHt_LEshiY
    Если очень много открытых соединений (n), то poll и epoll. Если активных соединений (k) меньше, то epoll будет лучше. Он «просмотрит» список дескрипторов за О(k), а poll за O(n).

    По теме:
    stackoverflow.com/questions/5383959
    stackoverflow.com/questions/4039832
    Ответ написан
    8 комментариев
  • шардинг MongoDb и дальнейшая расширяемость

    @sevmax
    Но есть один нюанс!
    Chunk'и будут сохранены на сервере 4, то есть используемое дисковое пространство не уменьшится. Следует удалять чанки старше определенного времени (например 1 день) по крону.
    Эта функциональность будет добавлена в mongod в следующей версии.
    Ответ про удаление чанков — официальная рекомендация 10gen.
    Ответ написан
    1 комментарий
  • шардинг MongoDb и дальнейшая расширяемость

    Насколько я помню, балансировка нагрузки автоматическая. Субд сама перенесет данные с перегруженных серверов на простаивающие.
    Ответ написан
    1 комментарий
  • Каким инструментом Вы проектируете сайт?

    @skvot
    Листы а4, набор цветных ручек, линейка, карандаш.
    Ответ написан
    4 комментария
  • Стоит ли идти в аспирантуру?

    @ZloiZmei
    Вы решите чего в дальнейшем хотите по жизни. Если работать в научном учреждении или ВУзе (не важно — в России или за рубежом) — то аспирантура и ученая степень Вам пригодятся. Если пойдете в бизнес или гос.сектор — только в качестве поднятия авторитета. Если работать на дядю — тут лишние несколько лет опыта могут оказаться важнее корочки. Во всяком случае если работодатель адекватный. Только при принятии решения учтите что в нашей науке и высшей школе денег нет и не будет — так что на это расчитывать не стоит.

    Наша степень вполне приравнивается к зарубежной (не везде, но скажем во Франции, Германии...). Но там, насколько понимаю, от неё так же есть смысл при дальнейшей работе в науке или ВУЗе.

    Я закончил аспирантуру (российскую, заочка, 4 года) и защитился (экономист) в прошлом году. Профита пока нет, но я ещё жду корочки. В ВУЗе преподаю на пол-ставки — больше для собственного интереса. В общем пока 4 года потраченного времени. Друзья мои за это время в карьере ушли далеко. К слову, до конца аспирантуры у нас доходит 25% — т.к. времени требуется много, а отдача весьма туманная.

    1. Очертите область исследования. Поизучайте, попишите статьи в научные журналы. Российские, зарубежные.

    2. Найдите научника. По computer science наверно действительно лучше будет за рубежом

    3. Поищите кому требуется исследование в этой области, обратитесь в крупные компании. Думаю зарубежные — там наука нужнее. Попробуйте продать собственное время. Основная проблема российской науки — в том что это «вещь в себе» и 99,9% работ оканчивают жизнь на бумаге.

    При наличии статей и исследования, хорошего научника, защита будет делом техники. Аспирантура сама по себе даёт немного, по сравнению с потраченным временем…
    Ответ написан
    1 комментарий
  • Почему Rails не хочет брать русские буквы в URL?

    @Silaev Автор вопроса
    Решение: Переустановив ruby, rails, все гемы — проблема не решилась. Решил посмотреть туда, где была вызвана ошибка:
    [2012-07-30 10:46:52] ERROR Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT
        /Users/dmsilaev/.rvm/gems/ruby-1.9.2-p320/gems/actionpack-3.2.7/lib/action_dispatch/middleware/static.rb:14:in `join'
    


    Посмотрев в файл, на 14 строчку, я обнаружил вот такой метод
      def match?(path)
          path = path.dup
    
          full_path = path.empty? ? @root : File.join(@root, escape_glob_chars(unescape_path(path))) #14 line
          paths = "#{full_path}#{ext}"
    
          matches = Dir[paths]
          match = matches.detect { |m| File.file?(m) }
          if match
            match.sub!(@compiled_root, '')
            ::Rack::Utils.escape(match)
          end
        end
    


    Посмотрев ниже в файл, нашел метод escape_glob_chars:
    def escape_glob_chars(path)
          path.force_encoding('binary') if path.respond_to? :force_encoding
          path.gsub(/[*?{}\[\]]/, "\\\\\\&")
        end
    


    И поменяв «binary» на «utf-8» проблема решилаcь.

    Надеюсь кому-нибудь из столкнувшихся с той же проблемой я помогу.
    Ответ написан
    Комментировать
  • Как называется команда для улучшения читабельности в консоле MongoDB?

    gaelpa
    @gaelpa
    Оффтопик, но может кому пригодится:
    Pretty-print для консоли MySQL ( "\G" вместо ";"):
    mysql> select * from accounts limit 1 \G
    *************************** 1. row ***************************
                         id: 410783
                         email: fake@asdasd.ru
    ...
                         nick: gaelpa
    1 row in set (0.00 sec)
    Ответ написан
    Комментировать
  • Посоветуйте книги по SQL, Python оптимизация под высокие нагрузки?

    @gro
    Наиболее оптимальный SQL-запрос: отсутствие SQL-запроса.
    Ответ написан
    1 комментарий
  • Как расчитать оптимальное количество воркеров для максимальнойой производительности при заданном железе?

    @zuborg
    Если воркер из реального затраченного времени на обработку запроса использует в среднем только 25% cpu — значит воркеров стоит запускать в четыре раза больше чем кол-во ядер. Плюс-минус. Обычно ещё есть дополнительная нагрузка, типа баз данных, поэтому можно выставить немного меньшее значение.
    Для воркеров, которые эффективно используют cpu, не блокируясь в процессе работы, соотв надо выставить просто кол-во ядер.
    Ответ написан
    5 комментариев
  • Как расчитать оптимальное количество воркеров для максимальнойой производительности при заданном железе?

    @niko83
    экспериментируя с кол-вом uWSGI воркеров на Python(Django) приложении выяснил что оптимальное кол-во воркеров (для моего приложения) ранво кол-ву ядер.

    Тестил через утилиту ab.
    Еслиб в моём приложении были задачи которые ждут подолгу ответа и не напрягают при этом проц (парсим сайт, ждёт ответа от базы с другого сервера и т.д.) то кол-во воркеров навренео пришлось бы увеличить.

    Другими словами мой подход — эксперимент. Берём что-то среднее рекомендуемое и плавно пробуем акуратно менять, наблюдам, анализируем делаем выводы, принимаем решение.
    Ответ написан
    1 комментарий