• Какой идеальный путь начинающего веб-разработчика?

    ali_aliev
    @ali_aliev
    Разработчик на Django/Python, JavaScript
    Python+Django и конечно же JavaScript. С питоном разберетесь быстро (если прочтете Лутца проблем никаких быть не должно). Django тоже не сложный фреймворк, достаточно прочесть официальную документацию. У JavaScript-а очень много подводных камней, слабо типизированный язык, читать придется много и учиться постоянно. Еще вам необходимо будет знать хотя бы на базовом уровне верстку, прочтите книгу "Влад Мержевич - вёрстка веб-страниц". Обязательно изучить SQL (он очень простой, любая книжка подойдет но я советую начать с "Понимание SQL", Мартина Грабера), далее PostgreSQL учебник тыц и тыц. Вот вроде бы и все, двигайтесь в этом направлении.
    Ответ написан
    Комментировать
  • Какой выбрать язык для создания сайтов?

    Недавно знакомый тоже стал меня распрашивать на тему выбора php или что-то ещё для сайтов. Подумав я пришёл к выводу, что по большому счёту можно выделить несколько основных критериев для сравнения:
    1) Парадигма программирования синхронность/асинхронность.
    2) Количество готовых решений (gems, composer и т.п.).
    3) Поддержка языка сообществом и ментейнерами.
    4) Лаконичность синтаксиса.
    5) Простота рефакторинга.

    Если рассматривать php, то:
    1) синхронная парадигма, хотя есть попытки сделать некоторые вещи асихнронным, типа проектов phpDaemon или например вызовы mysqlnd;
    2) на Packagist сегодня уже достаточно много накопилось готовых пакетов, чтобы не изобретать всюду велосипед + зрелые фреймворки;
    3) язык существует уже более 10 лет, а скорость развития за последние 3 года выросла на порядок;
    4) с лаконичностью не всё гладко, есть избыточная многословность, но есть и похуже языки в этом плане, типа Objective-C
    5) вполне сносный рефакторинг, в этом отношении у руби должен быть похуже, поскольку он более "динамичный", но у Java на голову выше из-за статической типизации.

    В общем, отток народа из PHP в последние лет 5 обусловлен преимущественно тем, что появились достойные альтернативы + было очень вялое развитие языка и большое количество проектов с legacy кодом.
    Ответ написан
    2 комментария
  • Какой выбрать язык для создания сайтов?

    nazarpc
    @nazarpc
    Open Source enthusiast
    А ещё в интернете много информации о старых версиях PHP.
    Текущие версии 5.4 и 5.5 очень даже хороши.
    Слабые стороны есть в любом языке, главное уметь использовать сильные.
    PHP достаточно зрелый язык, на котором можно писать качественные и современные сайты.
    Ответ написан
    Комментировать
  • Что лучше: mysql или mysqli или pdo (а также mysqli_real_escape_string или mysqli_prepare)?

    astrikovd
    @astrikovd
    Python Developer
    Исходя из обширного опыта использования PDO - 3 вариант лучше. Потому что:

    1. PDO работает с разными базами данных. В случае необходимости легко будет переключиться с mysql, например, на postgres.
    2. Используя PDO вы забываете о SQL-инъекциях (по крайней мере 1-уровня).
    3. Поверх PDO можно использовать ActiveRecord или DAO, что значительно сокращает время разработки конечного продукта.

    Есть и другие достоинства, но эти, как мне кажется, наиболее весомы.
    Ответ написан
    4 комментария
  • Как написать запрос к базе на Yii?

    @slvABTOP
    может рано за Yii взялся? подучил бы базовые вещи и прочее сперва?
    Ответ написан
    Комментировать
  • Наставник, где мне тебя найти?

    EugeneOZ
    @EugeneOZ
    google + stackoverflow.com

    Один из полезных навыков, который приобретается на stackoverflow - Вы обстоятельно изучите вопрос, прежде, чем его задать. Это очень полезно в работе - никто на работе не захочет быть нянькой и отрываться от задач по каждому мелкому вопросу. А на обстоятельно составленные вопросы отвечать гораздо проще и интереснее - не нужно вытягивать полезную информацию. Ну и, хорошо составленный вопрос содержит половину ответа, как говорится.

    Вы УЖЕ в 9 классе, осталось всего 2 года и Вы начнёте самостоятельно зарабатывать на жизнь - это очень ответственный и совсем не простой момент. Не откладывайте на "потом", получайте знания сейчас. 50% времени на теорию, 50% на практику, не меньше. Читая одну теорию ничему не научишься, но если пытаться всё делать самому, без чтения теории, то можно несколько лет потратить на набивание шишек, которые можно было бы узнать за пару месяцев.

    Нет абсолютно ничего плохого в PHP - плохой код можно писать на любом языке (на модном в этом году JS - ещё легче). У PHP мощное сообщество, помогут. Если всё же не нравится PHP - смотрите на Golang (субъективный совет). И не забывайте про JS + AngularJS.
    Только избегайте русскоязычных форумов - там, в основном, хамы с завышенным ЧСВ.

    Не используйте устаревшие инструменты. Помните, что чтение книг/туториалов в сети должно предшествовать практике и занимать столько же времени.
    Ответ написан
    Комментировать
  • Какой выбрать фреймворк для высоконагруженного Python web-приложения?

    @Slko
    C++/C#/Python Developer
    Flask по тестам более производительный. Единственное, что очень сильно меня смутило - проблемы с доменами, если расположить Flask за nginx. Так и не разобрался, как объяснить ему, что он запущен по тому адресу, на котором запущен nginx. Он был убеждён, что запущен на localhost:81 и все редиректы шли туда.

    В этом плане больше понравился Tornado, он более гибкий и можно организовать какую угодно структуру поддоменов. Проблемы были только с отсутствием человеческой документации по асинхронным обработчикам запросов.

    На Django даже не смотрел. Он там всё ещё не поддерживает Python 3.x? Не было желания его изучать хотя бы чтобы не поддерживать устаревшие технологии. Да и какой-то он мейнстримно-быдлокодерский.

    Но, наверное, Tornado и Flask подойдут скорее для небольших проектов. Или для больших, но с основательной проработкой архитектуры. Это неправильный выбор будет для быстрого клепания сайтов в какой-нибудь небольшой фирмочке.

    Раньше я тоже применял MongoDB, простота запросов и отсутствие необходимости описывать структуру данных очень привлекала. К тому же данные очень хорошо ложились в обычные питоновские типы. В конечном итоге перешёл на MySQL + SQLAlchemy. Отсутствие нормальных транзакций в MongoDB вызывало очень большие неудобства. Костыли, которые предлагались взамен, были слишком громоздкими и трудными для понимания.
    Ответ написан
    4 комментария
  • Как найти ошибку во взаимодействии Django и Ajax?

    maxaon
    @maxaon
    Причина этому строка 'contentType: "application/json; charset=utf-8",'.
    Вы посылаете djang'е post запрос с телом, преобразованным в json формат. В request.POST django кладет только простые запросы, то есть те, которые пришли в формате 'application/x-www-form-urlencoded'.
    Уберите эту строку и должно заработать.
    Ответ написан
    1 комментарий
  • Как оформить загрузку одновременно трёх изображений на PHP без javascripts и jquery?

    Вот в этой строке, где ты присваиваешь значение для $input
    $input=$_FILES['img']['tmp_name'];
    Напиши нечто такое
    $input[]=$_FILES['img1']['tmp_name'];
    $input[]=$_FILES['img2']['tmp_name'];
    $input[]=$_FILES['img3']['tmp_name'];
    Где img1, img2, img3 - name'ы полей формы с фотографиями.
    В функции createphoto сделай цикл foreach для каждого значения $input.

    А имена можно давать с помощь функции time(). Это число секунд с начала эпохи юникс по наши дни. Т.е. каждую секунду изменяется. При задание имени можно сделать проверку
    If ( !isset( time() . ".png" ) ) {
    $name=time();
    } else {
    $name=time()+1;
    }
    Ответ написан
    7 комментариев
  • Стоит ли сейчас python-щику изучать Java или C++?

    В общем переходить на Java однозначно стоит, и сейчас острая нехватка Scala разработчиков - есть хорошие курсы на coursera. Разберитесь с Typesafe Stack и Play2 фреймворком. Lift успел морально устареть. Всё что может erlang может Akka... только это scala/java со всеми последующими приемуществами и недостатками. Гляньте Apache Direct Memory и Stack Allocator для решения проблемы задержек сборки мусора.

    C++ это хорошо если вы собираетесь сидеть на одной должности 5+ лет, и получать стабильную зарплату. С++ сейчас очень популярен в робототехнике/железе со всеми компьютерными зрениями и т.д.

    Сейчас вэб плавно уходит в Java, так что и вакансий будет гораздо больше в перспективе.
    Энтерпрайсы потиху оклямываются от Beraucracy Driven Development'ов, и J2EE сейчас вообще не в моде.

    Go сейчас конкретно недостаёт хороших библиотек, фреймворков и ORM'ов, хотя runtime там довольно съедобный. Думаю как-то написать MVC фреймворк под Go.

    С# - я не форточник, а mono дикий шлак. Xamarin туда же.
    Ответ написан
    Комментировать
  • Что можно реализовать на разных языках программирования? С++ Java Python на какие ОС?

    В первую очередь нужно научится "думать как программист"... но это все бредни)

    Если хотите реально чему-то научится то стоит начать с основ.
    Это Керниган Ритчи "Язык программирования Си".

    С++ не очень сложный язык. Он очень неоднозначный - одна задача может быть решена разными способами и у каждого из них будут свои недостатки. Тем более требует довольно специфических хаков против всяких там SFINAE и constant cast'ов.
    Особенно в последнее время стандартов С++ наплодилось...

    Учить С++ стоит, но до конца разобраться во всём будет очень сложно.
    По минимуму можно прочитать Герберта Шилдтa
    У него есть другие толковые книги по С# и Java - тоже можете глянуть.
    Ну и мне нравится Подбельский.

    С++ хорошо подходит для десктопных приложений.
    Тут можно почитать Макса Шлее Qt 4.8
    При этом особых сверхъестественных навыков С++ не нужно.
    Если хотите ити в "про" уровень - учите коллекцию библиоте boost.

    Java в последнее время очень хорошо себя зарекомендовала в вэбе.
    Хватит первого тома Core Java. Из фреймворков могу посоветовать Grails и Play2.

    Python / JS можно выучить на курсах Codecademy за 2-3 недели. Там же можно разгребсти html/css.

    Если хотите пойти в вэб...
    Желательно разобраться в haml sass compass stylus jade grunt bower yeoman bower angular библиотеках.

    Желательно разобраться с шаблонами проектирования, и почитать Мартина Фаулера.
    Есть ещё книги из серии Pragmatic Programmer самое интересное что у этого издательства нет ни одной плохой книги.

    Вообще по программированию и методологиям в целом стоит почитать совершенный код.
    Можно ещё почитать чистый код, и идеальную архитектуру.

    Для кроссплатформенных мобильных приложений можно разобраться с Air и Flex.
    Ответ написан
    Комментировать
  • Что выбрать во фрилансе: фронтенд, бэкенд или мобайл?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Верстать не скучно, если вам нужно не только сверстать а еще и всю клиенсткую логику реализовать. Только html+css никому не нужны, во всяком случае я считаю таких разработчиков лишним звеном. А вот нормальные front-end разработчики - это хорошо.

    Фронтэндщики на фрилансе могут делать многое: собственно фронтэнд, верстка и реализация клиентской логики, разработка одностраничных приложений, мобильные приложения с использованием phonegap или что-то подобное... Интересных задач хватает.

    На постсоветском пространстве рулят PHP, как бы там не кричали что язык так себе. Все языки не лишены недостатков. Да и с заказами проблем нету, как и с фреймворками, средствами тестирования/разработки, менеджерами пакетов и т.д. По сути разницы сейчас нету, брать php или питон (он тоже не лишен пережитков старых версий, проблем каких-либо). Руби свой пик популярности уже пережил, язык крутой, но меня лично раздражает подход к разработке навязываемый им. Так же есть еще своя ниша где царит javascript/node.js

    Я не люблю java, но тут ничего не поделать. Можно конечно писать на xamarin + c#, но толку? java не краткий язык, это правда, но по сути не так уж там все и страшно. Попробуйте.

    Сейчас время такое, что не особо важно где вы живете. Главное что бы интернет был и стремление учиться. Удаленную работу всегда можно найти, так что все же выбирите то направление которое вам нравится, но не ограничивайтесь этим, просто пробуйте что-то еще.
    Ответ написан
    4 комментария
  • Существует ли какой-нибудь PHP-фреймворк в процедурном стиле, т.е. без ООП?

    -TinyButStrong,
    -ProtoFrame,
    -DooPHP - немного не то, но обещан низкий порог вхождения.
    Ответ написан
    Комментировать
  • Настройка прокси на Mikrotik RB450G с туннелированием траффика через VPN

    IlyaEvseev
    @IlyaEvseev
    Opensource geek
    IP => WebProxy => Src.Address: ставите туннельный IP.

    Затем настраиваете PBR по wiki.mikrotik.com/wiki/Policy_Base_Routing с тремя отличиями:
    1) mangle => chain = input вместо prerouting,
    2) mangle => advanced => content проверять не надо,
    3) nat не нужен.
    Ответ написан
    1 комментарий
  • Какие книги читать и изучать, чтобы стать настоящим программистом, а не кодером?

    @qassarb
    Ребята, просто хочу поделиться историей от себя.
    Я 4 года назад понял, что хочу стать разработчиком.
    И чуть более 3 лет не мог выбрать язык.
    То за ПХП взялся, бросил, не понравилось чего - то, так же пробовал повникать в что такое С, С++, и производные, скриптовые. И в этом году остановился на Java. I found it!!!!!!: )
    Во всех случаях читал литературу, но тут я понял чем больше знаешь основы, тем лучшим будет твой код. Когда знаешь, как устроены алгоритмы того же, скажем, компилятора, легче понимать архитектуру и анализировать переходы состояний.
    Если кого Java интересует, то очень рекомендую www.intuit.ru/studies/courses/16/16/info
    Вязовика. Курс хоть и старенький, некоторые вещи устарели, но уже в ходе курса начинаешь понимать. Терпения!
    BR
    Ответ написан
    Комментировать
  • Какие книги читать и изучать, чтобы стать настоящим программистом, а не кодером?

    @veitmen
    Добрый день.

    К сожалению нет "серебряной" книги. Нет четкого пути.

    Обязательно почитайте статью, с хабра, которую Вам скинули. И пропустите все через себя. Советы хороши, но Вы должны понимать, что все люди уникальны и путь становления у всех разный. Также все зависит от того, кем Вы хотите стать. Например я, как человек разрабатывающий Enterprise приложения, не очень любит "олимпиадников". Но это я, у других людей свое мнение.

    Стать хорошим программистом можно разными путями. Почитайте главу про личные качества программиста из книги "Совершенный код" Макконела. Сравните себя с описанием. Очень интересно. :)

    Быдлокодер - перестает быть быдлокодером, лишь тогда, когда начинает понимать каждую строчку кода, знает что скрыто за каждым вызовом любой функции. После этого, человек начинает понимать что хорошо, что плохо. Это только опыт. Со временем Вы начнете отличать хороший код от плохого. Просто Вы будете знать что если писать так, то будет "бобо" потом. :) Конечно можно и нужно читать книги. Если Вы хотите писать красивый код, то читаете "Совершенный код" Макконела и "Рефакторинг" Фаулера. Этого достаточно для понимания того, какой код хороший, какой плохой. Но это ничего не даст, пока сами не увидите. :) Для проектирования систем тоже нужно читать книги, но в первую очередь смотреть на решения. Разбираться почему сделали так, а не иначе. Почему в этом приложении так, а другом иначе? Как лучше? Когда именно так лучше? И т.д. Изучайте и разбирайтесь. Пробуйте использовать эти решения в своих приложениях.

    Советы в стиле делай то, что тебе нравится правильные. Т.к. именно делая то, что Вам нравится, Вы будете искать пути улучшения этого.

    Ищите более опытных товарищей. Это самое-самое главное. Без наставников очень сложно. НО выбирайте с умом, а то потом будете академическим "быдлокодером". :)

    Найдите работу.

    Не заморачивайтесь. Если Вам нравится программировать, то просто читайте и пишите код. Вы и так станете хорошим проггером. Не бойтесь критики, особенно от самых злых и беспощадных критиков. Приветствуйте любые советы по улучшению. Но никогда не верьте на слово. :) Все перепроверяйте. "Быдлокодеры" есть и они хотят утянуть всех на свою сторону, что-бы не выделяться. :) :)
    Ответ написан
    1 комментарий
  • Какие книги читать и изучать, чтобы стать настоящим программистом, а не кодером?

    @betasked
    Кодить, кодить и кодить!!!
    И периодически сравнивать свой код с гуру. Анализировать. Переписать код заново. Опять анализировать. Искать ответы на конкретные вопросы в книгах.
    Ответ написан
    2 комментария
  • С чего начать изучение веб разработки на Python, человеку абсолютно не знакомому с backend?

    @Masterme
    Работа с веб отличается от работы с не-веб одной простой вещью:
    - сервер (апач, нжинкс и т.п.) получает запрос (а запрос - это строка) от браузера,
    - сервер обращается к приложению, передавая ему эту строку как аргумент,
    - приложение возвращает результат (тоже строку),
    - сервер отдаёт полученную строку в браузер.
    Конкретно для питона такое подключение скрипта к веб-серверу решается с помощью WSGI.
    Как это сделать. В настройках веб-сервера вы указываете документ_рут вашего приложения и скрипт с колбэком. Конфигурация для апача:
    <VirtualHost *:80>
         ServerName mysite
         DocumentRoot /var/sites/mysite/public
         WSGIScriptAlias / /var/sites/mysite/script.wsgi
     </VirtualHost>

    Колбэк - это функция в глобальном неймспейсе, называющаяся всегда application. Выглядит она примерно так:

    def application(environ, start_response):
        status = '200 OK' 
        output = 'Hello World!'
    
        response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
    
        return [output]

    Когда апач получит запрос - он через wsgi запустит функцию application, а полученный от неё результат выдаст в ответ на запрос.

    Это всё, что нужно для понимания, как обрабатывать http-запросы из питона. Всякие джанги работают на этом же механизме.

    Теперь неочевидный нюанс. Дело в том, что обычно апач в нормальном состоянии отдаёт статику как статику. А если подключить к нему wsgi - то wsgi начнёт перехватывать и запросы к статике тоже. В джанго такая ситуация решается через жопу (что доказывает, что джангодрочеры - альтернативномыслящие), а именно: предлагается создать поддомен для статики и раздавать её сервером без wsgi, нжиниксом каким-нибудь, либо отдавать статику скриптом. Оба варианта, мягко говоря, спорные. Я считаю намного лучше и гибче третий вариант:
    <VirtualHost *:80>
         ServerName mysite
         DocumentRoot /var/sites/mysite/public
         RewriteEngine on
         RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
         RewriteRule (.*) /index.py/$1 [L,QSA,PT]
         WSGIScriptAlias /index.py /var/sites/mysite/script.wsgi
      </VirtualHost>

    (Обсуждается здесь.)
    Ответ написан
    20 комментариев
  • Какой Web-framework использовать?

    @sormon
    инженер-программист =)

    Я рекомендую Flask. У Django, к сожалению, слишком сильная привязка к своему ORM, да и не только. Для flask есть очень много разных расширений, та же админка. По ORM, можно использовать как SQLAlchemy, так и вообще что по душе будет. А еще, есть такая вкусняшка для jinja2 — pyjade, позволяет писать шаблоны в стиле Jade/Haml. Очень клевая вещь =)

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

    Нужно изучать то, что требуется. Если задались таким вопросом, значит почувствовали, что вот тут что-то делаете не так. Возьмите и загуглите "<язык программирования> как сделать <вещь>". Но при этом не забывайте изучать более полно, а не ограничиваться одной статьей и рваться в бой. Прочитали про технологию, прочитайте еще пару статей. Постарайтесь понять какие минусы и недостатки, как и где эта технология применяется. Как оптимизировать ее. Это и есть база. Плюс этого способа в том, что не требует сразу тратить много времени. По сути, вы будете делать тоже самое, что и сейчас, но более полно, более основательно подходить к изучению. Со временем накопиться тот самый бэкграунд.

    А всякий матанализ скорее всего и не пригодится. Дискретка еще возможно, но тоже редко. Согласитесь, 80% кодинга — рутина :) Если вы не используете этого в работе, то они вам не помогут, а когда столкнетеся с реальной задачей, то, наверняка, сами захотите ее загуглить.

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

    Если хотите самой-самой базы, то возьмите книгу по интересующему языку — это лучший способ. Просмотрите все системные функции (не заучивайте, а просто просмотрите, чтобы представлять возможности языка). У php-программистов частая ошибка — писать свои велосипеды (особенно по обработке массивов), хотя есть очень много нативных функций, которые работают быстрее.
    По алгоритмам — читайте то, что используете. Например, в вебе нужны сортировки, редко что-то сложнее. Поэтому погуглите алгоритмы сортировки.
    Изучать то, что вы не используете полезно, но скучно и быстро забывается.
    Прочитайте про паттерны, хотя инфа о них, как правило, трудно воспринимается, кроме тех, что используете реально. Например, active record для работы с базой. Последнее и будет полезным.
    Для улучшения практического скилла советую читать чужой код и смотреть скринкасты опытных людей. Такие вещи часто богаты мелкими-оптимизациями. А если автор еще и озвучивает ход своих мыслей при проектировании функционала, вообще замечательно. (Именно этим полезны курсы по питону на udacity, например.)

    p.s^ Старайтесь знать все о чем-то и что-то о всем :)
    p.s.s^ длинновато вышло :(
    Ответ написан
    2 комментария