• Что изучать веб-программисту самоучке, кроме самого языка?

    barmaley_exe
    @barmaley_exe
    Онлайн-курсы чем не угодили? Там и теория, и практика и с кровати вставать не надо.

    Если говорить предметно, то:
    1. Алгоритмы. Must have для программиста. Тут можно посоветовать известную книгу Кормена и Ко «Алгоритмы: Построение и анализ». Практиковаться можно на известных архивах вроде тимуса или площадках вроде codeforces.
    2. Дискретная математика. Тоже важная область. Сюда можно приписать теорию графов, логику, комбинаторику, основы теории вероятностей. Сильно пересекается с предыдущим пунктом.

    3. Что касается матана и теории чисел: особо углубляться без нужды не советую. Из матана хватит дифференциально-интегрального исчисления (с базой в виде пределов, конечно же). Обязательно линейную алгебру: матрицы, вектора, определители. Это следует изучать вместе с аналитической геометрией. Каких-то книг я, к сожалению, порекомендовать не могу.
    Есть ещё вычислительная математика (как решать задачи матанализа, дифуров, алгебры на компьютере), но, мне кажется, чем ближе компьютеры становятся к обычному человек, чем глубже проникают в нашу жизнь, тем менее важной становится эта область.

    Ну и что-нибудь про проектирование, ООП и паттерны. По паттернам библией считается книга банды четырёх, по ООП вроде прилична книга Гради Буча «Объектно-ориентированный анализ и проектирование». Но я не читал её.
    Ответ написан
    6 комментариев
  • CMS/CMF для удобного создания кастомных админок?

    @northicewind
    Сделал довольно большое кол-во проектов на джанге и никогда бы не посоветовал использовать её для кастомных админок. Сама по себе админка джанги это не админка в прямом понимании, а скорее scaffold. Можно привести высказывание автора Grappelli о проблемах фронтенда в джанге. Можно, конечно свои Admin Site написать и все шаблоны переопределить(и такое бывало), но тогда смысл от админки джанго не большой.
    Джанго — хороший и надежный инструмент и у него много полезных батареек, но админка на полноценную батарейку не тянет.

    Если вам нужен действительно гибкий инструмент для создания интерфейсов администратора с возможностью точечной доработки, то я бы советовал отойти от динамической генерации и посмотреть в сторону статической. Как это устроено в Ruby on Rails и Yii Framework. Мне довелось на практике сравнить оба подхода и второй оказался значительно более гибким. Можно подготовить шаблон и от него отталкиваться при создании базовых страниц, а что-то более сложное можно допилить руками.

    Кстати если возьмете Yii, то можно будет бесплатно использовать Editor WYSIWYG

    P. S. Если нужна все-таки динамическая админка, то из того, что использовал неплохо себя показала Active Admin для RoR. Почти без хардкода и более современный вид из коробки.
    Ответ написан
    1 комментарий
  • Python for Android. Как начать?

    mysticmirage
    @mysticmirage
    Питон для Андроида — достаточно мозгозатратное занятие.
    Я бросил эту затею, хотя иногда слежу за проектами, подающими надежду в этом направлении.

    Если нужно создавать игры, то это PyGame for Android — pygame.renpy.org
    Если нужно бизнес-приложения, то это Kivy — kivy.org (их гитхаб — github.com/kivy/python-for-android)

    Недостатки первого:
    1. проект не развивается
    2. ориентирован на создание игр
    3. только arm-архитектура
    4. поддерживается только одно касание

    Достоинства первого:
    1. ниже порог вхождения — достаточно легко устанавливается (не без бубна, но легче, чем kivy)
    2. куча документации по самой PyGame, которую можно использовать при разработке

    Недостатки второго:
    1. требует от устройства поддержку gles 2.0 (даже для простенького интерфейса)
    2. везде с собой тянет библиотеку для построения интерфейсов
    3. нужно постараться, чтобы установить всё это добро (кросс-компиляция и всё такое)

    Достоинства второго:
    1. любая поддерживаемая Андроидом архитектура
    2. проект развивается
    3. поддержка мультитач
    4. использует наработки PyGame for Android

    По поводу sl4a — он не позволяет создавать обособленные пакеты — требуется отдельно установленный интерпретатор Питона. По этой причине я его не рассматриваю.

    В любом случае, стоит быть готовым к тому, что размер пакета будет минимум 3 МБ даже в случае HelloWorld — каждое приложение будет тянуть с собой интерпретатор и стандартную библиотеку.

    Следует отметить, что это не аналитическое сравнение — я отметил те пункты на которые обращал внимание. Возможно дела обстоят по-другому и я заблуждаюсь — я не использую Питон для Андроида ни в одном из своих проектов, хотя хотел бы.
    Ответ написан
    Комментировать
  • Flask для больших проектов

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

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

    Правда, для Фласка меньше документации и готовых решений, но основные из них — SqlAlchemy для БД и WTForms для html-форм — работают очень хорошо, на порядок лучше Джанговских аналогов.
    Ответ написан
    Комментировать
  • Flask для больших проектов

    @realduke
    Ну и добавлю еще, что мнение, что Flask не подходит для больших проектов — заблуждение. Конечно, фразу «большой проект» можно по-разному трактовать, проект может быть с сильно большой кодобазой, а может быть довольно высоконагруженным, может еще какой-то смысл можно вложить, не знаю. В Flask есть лишь одно ограничение, которое нужно учитывать при разработке — это context local objects. Вот именно оно вносит некоторую сложность при наличии большой кодобазы, т.к. несколько объектов, определенных в github.com/mitsuhiko/flask/blob/master/flask/globals.py, являются глобальными, и для их использования их нужно явно импортировать, в результате можно легко выстрелить себе в ногу. Для высоконагруженных проектаов с умеренным объемом кода проекта я не вижу проблем. Связка nginx + gunicorn + приложение может выдерживать нормальные нагрузки даже на одной машине. Если проект сильно большой, то никто не мешает задеплоить несколько фронтэндов и использовать балансировщик.

    Flask — это лишь небольшая обертка над Werkzeug в виде класса, который выступает в роли callable объекта для WSGI, клей для Jinja, API для расширений, ну и несколько вкусняков в виде блюпринтов и сигналов. Кода не много и он легко читается.
    Ответ написан
    1 комментарий
  • Flask для больших проектов

    @realduke
    Непонятно, что конкретно интересует!

    Flask ничем не отличается от других Python фреймворков. Если использовать связку Flask + SQLAlchemy + WTForms, то это считай тот же Django, только без contrib и админки. Изначально нужно быть готовым к самостоятельному созданию организации структуры проекта, т.е. где конфиги положить, где модели, где тесты и т.д. Есть несколько проектов-заготовок, которые это упрощают.

    Несколько ссылок по теме:

    github.com/mitsuhiko/flask/wiki/Large-app-how-to
    github.com/swaroopch/flask-boilerplate
    github.com/semirook/flask-kit
    github.com/imlucas/flask-tool
    github.com/klen/Flask-Foundation

    У Flask сейчас довольно много расширений, проверенные лежать тут flask.pocoo.org/extensions/. Много других можно найти тут crate.io/?has_releases=on&q=flask. Рекомендуется конечно учитывать что некоторые могут быть криво написаны или морально устарели.

    По устройству проектов еще можно поискать готовые приложения. Они есть тут flask.pocoo.org/community/poweredby/, те, которые с исходниками. Еще на гитхабе много чего, можно поискать по импортам, где используется Flask, в простейшем случае так как-то github.com/search?l=Python&q=from+flask&ref=searchresults&type=Repositories.
    Ответ написан
    2 комментария
  • Перспективные языки программирования

    sl_bug
    @sl_bug
    Любой. Если вы супер отличный специалист в выбранной вам области, то проблем с «боготворением» вас не будет.
    Ответ написан
    Комментировать
  • Полезные Django apps?

    d43
    @d43
    django-debug-toolbar
    django-crispy-forms (создаем сложные формы с поддержкой Twitter Bootstrap прямо из forms.py)
    django-compressor (компилирует LESS, SASS, сжимает CSS, JS)
    django-easyfilters (позволяет создавать фильтры по типу тех, что в админке; см. демо)
    Ответ написан
    Комментировать
  • Что выбрать для разработки веб-приложений?

    un1t
    @un1t
    Рекомендую Python+Django. У джанги большое сообщество хорошая документация, множество готовых компонентов. На питоне есть и другие хорошие фреймворки, но у джанги самое большое сообщество, поэтому это идеальный вариант для вникания в веб-разработку.
    Ответ написан
    Комментировать
  • Бумажные книги по C#, MVC4 и сопутствующим технологиям?

    pletinsky
    @pletinsky
    Простите, я понимаю что вы не хотите слышать таких ответов.

    Но ей богу — забейте вы уже на книжки.

    1) Ну на крайний случай выжимки с сайтов, где все коротко написано с типичными примерами.
    2) Мсдн конечно — там уж точно уровень не английской литературы — написано все по простому в одном стиле. Пару дней с переводчиком даже если — привыкнете.
    3) Ну и практика и поисковик. Застрял — погуглил — дальше делаешь.
    4) Участие в проекте с опытными разработчиками — основа роста. Там вы будете писать код в общем стиле, используя тот подход который есть в остальном приложении. Там не будет стопперов, которые вы не сможете прогуглить. Работа в паре в идеальном варианте.

    Ей богу — вовсе не книжки позволят расти в профессиональном плане быстро. Да — матчасть важна — но на более высоком уровне чем изучение того, как работать с конкретными фреймворками.
    Если совсем плохо с английским можно использовать книжку как справочник в реальном времени на проекте, но возможно хватит и электронного варианта.
    Ответ написан
    3 комментария
  • Какова производительность CakePHP?

    eox425
    @eox425
    Как уже писал комрад opium, xprof — отличная тулза для профилирования РНР приложений.
    Если вас интересует субъективное мнение и особенности архитектуры…
    В принципе самым слабым местом существующих РНР фреймворков является реализация ORM, кэширования и шаблонизации.
    По личному субъективному опыту могу сказать что Yii и Symfony2 имеют самые эффективные реализации этого стафа.
    Но у Symfony2 намного более развита инфраструктура, комьюнити… и в целом он для меня намного удобней.
    По поводу того что Symfony медленее Yii могу лишь сказать что только в dev mode, в продакшене разницы особо не чувствуется. CakePHP по производительности почти догоняет kohana. В большинстве случаев на производительность самого фреймворка влияет использование Dependency Injection и других паттернов, а также немного паттерн самого ORMа — Active Record или Object Mapping.

    APC не тортъ. Лучше если вы возьмете xcache и будете кэшировать в нем байткод приложения и запросы к базе.
    memcached не тортъ для кэширования запросов БД если у вас только одна машина. Т.е. memcached хорошо использовать в кластере. В остальных случаях xcache быстрее так как он реализован в виде плагина к РНР.

    Не раз был свидетелем мем. лика memcached… не забывайте задавать ttl объектов в кэше! Это довольно распространенная ошибка. Реализовуйте поддержку etags и if-modified-since хеддеров для http кэширования каждой страницы по mark-tagged принципу. И тогда за nginx'ом вам вообще не придется беспокоится о производительности фреймворков…
    Некоторые Yii извращенцы на офф. форуме фреймворка писали что если использовать с xcache параллельно eaccelerator, то можно добиться довольно впечатляющих результатов. Не знаю правда ли это… но советую вам проверить.

    Вообще я перелез с РНР фреймворков (перепробовал почти все актуальные) на Grails чем вполне доволен.
    Сейчас практикую связку angular.js на node.js < — json-rpc/rest --> grails/play2.
    Смысл в том что бы шаблоны на сервере и клиенте были одинаковыми… хочу написать об этом статью.
    Позволяет сэкономить кучу времени и самое главное — привет клиентская шаблонизация без гемороя и вреда для SEO.
    Ответ написан
    1 комментарий
  • Как стать программистом java? (Java для начинающего)

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

    1) Хорстман «Java Core» 8-изд два тома, Эккель «Thinking in Java» желательно в оригинале.
    2) Видио лекции, Лекции по Java, там поищешь своего уровня.
    Ответ написан
    Комментировать
  • Какой Web-framework использовать?

    avalak
    @avalak
    Я за Flask. У него под капотом Werkzeug + интеграция с Jinja 2 «искаробки». Довольно удобно реализовывать REST через MethodView. В нём нет ничего лишнего (ни форм, ни ORM/AR. функционал легко наращивается через расширения), но он не аскетичен как Bottle.
    Для работы с assets есть Flask-Assets
    Ответ написан
    4 комментария
  • Что изучать, PHP или Rails?

    1. Если вопрос стоит о скорейшем зарабатывании денег на фрилансе, то изучать PHP и несколько популярных CMS и модулей к ним, поскольку большинство задач это «доработать», «написать модуль» и т. п. Потом фреймворки.

    2. Если же о наборе как бы теоретических знаний, о постановке стиля программирования, то с RoR, хотя бы одно приложение посерьезнее туториала для себя написать с соблюдением всех рекомендуемых практик, а потом уже переходить на PHP.
    Ответ написан
    Комментировать
  • Какой фрэймворк учить и по каким мануалам?

    Zharskiy
    @Zharskiy
    обидно за CakePHP — он самый компактный, простой и быстрый
    ближе всего к RoR — проще всего переходить

    развивается!
    Ответ написан
    Комментировать
  • Какой фрэймворк учить и по каким мануалам?

    Funcraft
    @Funcraft
    1. Полностью согласен с taliban.
    2. Не согласен с тем, что для новичка Zend сложен. Лично мне, в нём было разобраться проще всего остального.
    3. Вы задали холиварный вопрос, поэтому ответы скорее не информативные, чем полезные.
    4. Про работодателей могу сказать следующее: поработал в 4 местах. В 3 из них было совершенно всё равно, какой фреймворк ты знаешь. В 1 взяли только потому, что знал Zend. Т.е. см. пункт 1.
    5. «Проще» и «лучше» — разные вещи, не стоит их мешать. «Лучше» — на мой взгляд, понятие относительное, т.к. для разных задач «лучшее» будет разным.
    6. По поводу документации и мануалов — точно могу сказать про Zend — информации более, чем достаточно. По Yii давненько не смотрел, но когда смотрел, адекватная инфа была только на английском — если нет проблем с языком, то смело в бой. У Symfony, насколько я в курсе, документации также навалом.
    7. Попробуйте как можно больше фреймворков и языков — везде есть интересные, разумные, эффективные решения, которых нет в других аналогах.
    8. Изучите смежные темы (паттерны проектирования и т.п.) — проще будет и в фреймворках разбираться.
    Ответ написан
    1 комментарий
  • Как стать программистом?

    taliban
    @taliban
    php программист
    Для начала закончи все 5 или 6 курсов (сколько там у вас) как можно лучше, и не зубри все читая а учи (понимай). Поверь, хороший выпускник, который знает свое дело стоит на вес золота, таких практически нет и они очень ценятся. «Программистом» станешь со временем если будешь интересоваться этим дальше.
    Ответ написан
    4 комментария
  • С чего начать изучение ExtJs?

    TheHorse
    @TheHorse
    Думаю что быстрее всего будет просто посмотреть на их примеры, они там очень простые.
    Если нужно глубоко разобраться — конечно доку почитать.
    Ответ написан
    Комментировать
  • Java for Android - с чего начать?

    pyJIoH
    @pyJIoH
    Мой путь к Java из другого языка, а потом и Android был таким:

    1. Прочитал несколько базовых книг:
    Справочник Шилдта для понимания синтаксиса, коллекций, дженериков и т.п.
    Брюс Эккель Философия Java для понимая концепции Java.

    2. Одновременно с первым пунктом прорешал на java порядка 100-150 задач на acm.timus.ru

    3. Через пару месяцев пошел на собеседование java developer'a. Там узнал в каких местах знаний не хватает особенно. Прокачал, пошел снова — профит (если не профит — повторят до профита :o) ).

    4. Параллельно начал изучать android по принципу — ставишь задачу (например, написать крестики-нолики) и читаешь все что связанно с ее решением.
    Ответ написан
    3 комментария
  • Язык, технология и инструментарий для разработки блога с поддержкой Ajax?

    Bright
    @Bright
    Пусть меня закидают камнями за вредный совет, но пишите на PHP =)

    Основная причина — низкий порог входа (особенно, если знакомы с Си-подобными языками) и море документации.

    Вредный совет №2 — на первом этапе можно даже не тратить время на изучение фреймворка. Если опыта в веб-разработке нет, это будет всего лишь теория. ИМХО, необходимость использования фреймворка нужно осознать, а для этого нужна практика и куча ошибок :)

    Ваша цель — реализовать первую версию. И в процессе наверняка многое может измениться. Языки и технологии не столь важны, ни один язык, IDE или фреймворк не поможет сделать всё сразу правильно и идеально. Поэтому выбирайте из соображений «что будет меньше мешать в процессе разработки».
    Ответ написан
    3 комментария