Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (20)

Наибольший вклад в теги

Все теги (96)

Лучшие ответы пользователя

Все ответы (95)
  • В чем преимущества Python?

    @kazmiruk
    1. Для системных тулов, мат. вычисления, веб
    2. Множество готовых батареек, качественные веб-фреймворки, живое и дружелюбное сообщество
    3. Если мнение авторов питона - на сайте, мое - замечательный синтаксис, соотношение "скорость разработки - качество кода - скорость выполнения" одна из самых высоких
    4. Сегодня - питон (много работы, высокие зарплаты). Завтра - скорее всего java (очень активно идет развитие стека typesafe и, мне кажется, что в будущем он займет свою довольно внушительную нишу в веб разработке. Но это завтра может настать очень не скоро, если вообще настанет. Ну и это все таки не для веб студий и не для сайтов-визиток вариант. Проекты сложности выше средней с долгосрочной поддержкой). RoR - работы меньше, оплата еще выше. Пхп - работы горы, зарплаты намного меньше. Но вообще трудно сказать. Есть еще nodejs (развивается гигантскими скачками), но не могу про него ничего сказать толкового. Работы под него довольно много, но как изнутри не знаю.
    А вообще сейчас набегут Рубисты, Явисты, Пхпшники и начнется холивар, поэтому надо текать ) Изучив любой из php\python\ruby на достаточном уровне и выдавая качественный код Вы будете востребованы как специалист еще довольно долго.
    Ответ написан
  • Может ли NodeJS использоваться как основа для крупного проекта?

    @kazmiruk
    @d00mko видимо не потрудился прочитать статью, прежде чем посоветовать ее Вам. В статье как раз пытаются избавиться от мифов вокруг ноды.
    По сути вопроса - нода вполне подходит для проекта любого размера и сложности (как и пхп, раби, питон, ява и т.п.) Никогда в жизни не сталкивался с ситуацией, что язык становился узким местом в веб приложении. Если Вы с этим столкнетесь, то значит Ваша архитектура уже идеальна, у вас миллионы пользователей и у Вас миллиарды денег, чтобы взять и переписать все с нуля где-нибудь на побережье океана попивая мохито, принесенное личным барменом.
    Ява - готовьтесь к тому, что Вам надо МНОГО оперативной памяти. Разработка будет вестись долго, но большинство глупых ошибок Вы избежите в силу особенностей языка.
    ПХП - готовьтесь к тому, что в Вашем коде будут появляться какашки, так как из всех пхп кодеров лишь доли процента могут написать хороший код. Это действительно очень трудно, когда язык сам манит писать все больше и больше какашек ) Лишь просветленные могут удержаться )
    Нода - Вас ждет мир непонятного асинхронного кода, но как только наступит просветление, то Вы будете писать намного более эффективные приложения, чем Ваши товарищи пхпщники ) Наилучшее применение - чаты, кометы и т.п. Но и в качестве веб-сервера чувствует себя замечательно.
    Питон - можно использовать и асинхронный подход и синхронный. Памяти жрет намного меньше, чем Java (личный опыт. разница была почти в 7 раз). По скорости работы практически не уступает яве. По скорости разработки разрывает ее в клочья
    Раби - ничего не могу сказать дельного, но синтаксис мне не нравится.
    Эрланг - если Вы действительно суровы и Вам нужна максимальная производительность - это Ваш выбор. Столько боли и страдания Вам не доставит ни один язык. Вы можете часами сидеть и тупить над одной строчкой кода, но каждый раз после написания такой строчки Вы будете впадать в экстаз ) Да и пока вы часами тупили над одной строчкой в эрланге на другом языке вам бы пришлось написать 200 строчек. Хардкор вариант, есть много тестов, уроков и примеров, но сам бы я не рискнул начинать проект на нем, так как моих знаний не достаточно, а найти разработчика - нереально.
    Вообще, не пишите серьезные проекты на том, что хотите изучить или то, что модно. Пишите на языке, который лучше всего знаете.
    Ответ написан
  • Тенденция к перехвату проектов/клиентов сотрудниками с последующим увольнением. Что делать?

    @kazmiruk
    По скользкому пути идете. Несколько лет назад работал в небольшом стартапе. Стартап начал приносить деньги, начали его развивать. А в один момент начальство укусил петух в жопу: наш проект могу украсть!!! Началось с малого - слежение за трафиком, максимальное ограничение прав и анализ логов. Затем кейлоггеры начали появляться, затем установили камеры видеонаблюдения, затем мы нашли диактофон, который включался на запись, когда начальство уходило куда-то. Потом сбрендили и вообще в обязательном порядке начальство стало находиться в одном кабинете с нами и сидеть в такой позиции, чтобы видеть чем кто занимается. Как итог - через 6 месяцев такой работы вся команда свинтила кто куда при том, что условия были очень даже ничего по з\п и графику. Поэтому стоит прислушаться к советам, которые уже дали - стоит искать проблему в себе и стараться привлекать сотрудников, а не отталкивать помещая их в жесткие рамки. Программисты делают Ваш проект. Без них Ваш проект ничего не стоит (собственно Ваш вопрос об этом и говорит - достаточно им унести идею и Вы в панике). Поэтому сделайте так, чтобы они не захотели уходить.
    Ответ написан
  • Как написать реал-тайм онлайн игру? Методология, паттерны, статьи?

    @kazmiruk
    Вы задаете более-менее правильные вопросы, но на них нет правильных ответов. Каждый случай очень индивидуальный и кратким ответом тут не обойтись, тут нужны лекции с тоннами теории. Я в свое время писал игры: php (api) + flash (клиент) + C++ (сервер) + mysql (база данных) + memcache (кеш), php (api) + python gevent (сервер) + mongodb (база данных) + redis (кеш) + html5 (клиент), nodejs (сервер) + html5 (клиент) + redis (кеш) + postgresql (база данных). Все они были довольно проивзодительными. Такое разнообразие технологий отчасти обуславливалось моим любопытством (проект на nodejs писал для себя).
    В целом пытаясь ответить на Ваши вопросы:
    1. Не совсем понятно что Вы имеете ввиду. Уточните вопрос.
    2. Лучше всего передавать на сервер все действия клиента и обсчет производить на сервере для невозможности подделывания результатов действий, но это приводит к возрастанию нагрузки на сервер. Протокол - мне нравится bson с готовыми библиотеками, понятным форматом и небольшим размером. Но опять же его я использовал только во втором проекте, в остальных местах я создавал свои велосипеды, которые для конкретных случаев были наиболее эффективны (в моем представлении)
    3. В базе хранить все, что не должно пропадать между играми (условно говоря после выключения сервера ;)), в оперативной памяти дублировать все в идеале (для избавления от операций чтения с диска).
    4. Зависит от потребностей. Postgresql\mysql - более традиционны. Mongodb - модная ) Если Вы понимаете, что в Вашей игре вы можете пережить ограничения mongodb (к примеру отсутствие транзакций) - юзайте его, очень удобен для хранения игровых состояний. Если не уверены - используйте традиционные реляционки.
    5. Кеширование по сути и есть перемещение данных из БД в оперативную память. Причем перемещается таким образом, что скорость выборки из оперативной памяти не зависит от количества данных. Это так называемые хэш-таблицы.

    В общем, без обид, но судя по Вашим вопросам Вам надо очень серьезно подтянуть теорию, прежде чем браться за серьезную игру. Писать серверную часть на С++ - круто, если Вы его знаете на отлично. В целом большого профита Вы не получите, так как скорость С++ проявляется в числодробилках. А игровой сервер - в основном операции чтения\записи, которые будут одинаково выполняться на практически любом современном языке и их скорость больше зависит от построенной архитектуры.
    Мои рекомендации: читать про блокирующие\неблокирующие сокеты, многопточность, структуры данных, паттерны проектирования, оптимизация запросов (включая нормализацию и денормализацию данных), кеширование. Параллельно с этим можно делать простенький чатик постепенно улучшая и оптимизируя его. Таким образом Вы приобретете и теорию, и практику. После этого можно сделать какую-нибудь простенькую игру.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (11)