Ответы пользователя по тегу Python
  • Вопросы на собеседовании программисту Python

    DeNnEr
    @DeNnEr
    Проектирование, потоки?
    Спроси что такое гринлеты, Twisted, Tornado, в чём отличие мультипроцессинга от потоков, в чём их отличия в модулях Python(тест пройден если человек скажет что GIL работает в обоих случаях, а сами модули имеют одинаковый набор функций).
    Про проектирование достаточно сложно говорить. Попроси придумать простейший Singleton и объяснить какие альтернативы этому решению есть. Скажет что-то про мета-классы, про то, что сами по себе модули являются синглтоном — тест пройден.
    Спроси что такое кольцевые зависимости. Дай пример кода с такой проблемой и попроси решить её или аргументировать почему выхода нет. Тест пройден если человек переместит все run-time используемые импорты в конец файла или перепроектирует систему, предложив вариант без кольцевых зависимостей.
    Ответ написан
    9 комментариев
  • Многопользовательский сервер python

    DeNnEr
    @DeNnEr
    С самого начала ты пошёл в верную сторону — Twisted.
    Если уж ты и хочешь «шустрый, отказоустойчивый сервер», то лучший вариант — писать такое приложение на Twisted, как библиотеку, разработанную для этих целей. Тем более что примеров там хватает(http://twistedmatrix.com/documents/current/core/examples/#auto0)
    Если тебе просто нужно смоделировать такую систему, то тебе нужно сделать нормальную схему работы.
    Я бы тебе посоветовал почитать про TCP, тогда это тебя избавит от проблем синхронизации, т.к. алгоритм будет многим проще(хинт: погугли чем различаются UDP и TCP).
    А вообще, судя по тому, что ты пишешь систему на языке, который не изучал(т.е. вам его не преподавали?), значит что преподаватель просто дал случайную задачу, чтобы тебя занять чем-то интересным. В таком случае я тем более советую изучать Twisted, т.е. больше нового узнаешь, будет опыт и о большем сможешь рассказать.
    Если же вас обучали Python'у, но ты прогулял, то… Ну плохо дело, всё-равно учи Twisted или бегай по форумам, сцеживай решение. И да, если у вас обучали Python'у, будь добр, скажи что за учебное заведение.
    Ответ написан
    2 комментария
  • Фриланс и Python?

    DeNnEr
    @DeNnEr
    Люди говорят о том что работы много, но на самом деле всё далеко не совсем так.
    Я сам уже очень долго практикую Python используя разные веб-фреймворки и хорошо успел понять текущую позицию данной платформы на рынке фриланса и не только.
    Прежде всего, нужно сказать что Django достаточно фиговый(как-бы так помягче сказать...) веб-фреймворк. Для лёгкий сайтов — да, что-то большое — лучше пойти на Pylons, Pyramid.
    Далее, немного о фрилансе:
    На русских сайтах фриланса заказов очень, очень мало. Денег на этом не получишь. Повезёт если найдёшь заказы на сайты под ключ/с нуля, там можно что угодно применить. НО! Под ключ сайт брать не следует если ты один и нет под рукой знакомых верстальщиков, дизайнеров, компаньонов.

    Реально найти работу на ODesk. Однако и там заказов маловато. В общем, похожая ситуация, вот только общее число заказов больше. Но, увы, так не всегда. Чаще всего можно наблюдать «вакансии», где требуются всезнайки и не только для веба, при этом это «вакансия» от какой-нибудь фирмы. Соответственно, там отбор строже, но если повезёт, то заказов будет не мало.

    Есть и другая сторона современного веб-дева — Ruby on Rails. Заказов везде поболее чем на пайтоне, сайты делать на этой платформе проще, больше коммьюнити. Но! Это только для веб-дева.
    Ответ написан
    4 комментария
  • Установка QT для Python?

    DeNnEr
    @DeNnEr
    А вы пробовали PySide? Вообще, я давно о нём ничего не слышал, но должно было развиваться сильнее и таких проблем бы не пустили, как описана у вас в старом вопросе.
    Для управления python-библиотеками, существует набор утилит setuptools. Для этого существует публичный реестр пакетов:
    Ответ написан
  • Как заставить PyQt работать с русскими доменами?

    DeNnEr
    @DeNnEr
    Если это так и есть, то это деградация PyQt, а возможно самого Qt. Советую обратиться с этим в лист рассылок или на багтрекер сначала PyQt, а потом, если скажут что проблема Qt, на багтрекер Qt.
    Ответ написан
    Комментировать
  • Python vs Java

    DeNnEr
    @DeNnEr
    Сейчас на рынке труда больше востребована Java. Не только сейчас, но и в прошлом, и в будущем данная платформа будет популярна и будет продолжать пользоваться спросом.
    Вопрос в том, чего ты хочешь: работать на большую фирму, где джава применяется для определённого проекта и продолжать работать с ней ИЛИ устроиться в небольшую «контору», в которой ты можешь быть выше «рангом», разрабатывать средние и небольшие проекты.
    Во втором случае однозначно пайтон, при этом не джанго, а Pyramid или Pylons. Моё личное мнение — применение Java на средних и небольших(малых) проектах — зло, а джанго не самый удачный веб-фреймворк.
    Холиворщикам: всё это моё личное мнение, на личном и не только опыте, и переубеждать меня не надо.
    Ответ написан
    Комментировать
  • Вопросы по sqlalchemy

    DeNnEr
    @DeNnEr
    Потребности людей ростут, люди устали от статики и хотят больше динамики.
    Увы, SQL-based СУБД не созданы для динамических схем. Если ты будешь часто менять схему, то проиграешь в производительности, очень сильно проиграешь. А это ещё при том, что SQL(а тем более с использованием SA) не так и шустр.

    Советую обратить внимание на более современные решения — документ-ориентированные бд. Точнее — на MongoDB и MongoKit как средство для создания и манипулирования схемами.
    Дело в том, что документ-ориентированные СУБД созданы как-раз для динамических данных, где схема может часто меняться. Документ в такой БД, тоже самое что и запись(строка, row) в SQL-based, в реляционных БД.
    Документ представляет из себя JSON-структуру данных, в которой всё можно менять, дополнять, удалять.
    У документа нет «схемы». Т.е. захотел сделать документ с постом пользователя, вот и делай:
    db.posts.save({id:1, author:«James», text:«Howdy!»})
    Однако, схемы бывают нужны, поэтому для них делаются программные решения вроде MongoKit.
    Например, можно указать в MongoKit такую схему:
    {
    name:unicode,
    data:{unicode:unicode}
    }
    Что позволит оперировать словарём data как хочется.
    Схема для поста, например:
    {
    id:int,
    author:unicode,
    text:unicode
    }

    В общем, советую почитать:
    www.mongodb.org/
    namlook.github.com/mongokit/
    Ответ написан
    Комментировать