• Как создать сайт вроде спрашивай.ру?

    HoHsi
    @HoHsi
    Не стоит сразу же замахиваться на большой сервис, начните постепенно. Каждый начинающий программист первым своим проектом грезит сделать убийцу ВК / FB. Скажу сразу, это с первого раза не выйдет. Как не выйдет и с 10. Но! Это не повод, что-бы не развиваться и не учиться. Итак если вы все же решили потрать пару месяцев на обучение, или вы уверены, что пойдет меньше, начните так:

    Шаг первый
    Html. Это язык разметки, на котором написано 100% веба, то есть это необходимая вещь де-факто. Он позволит вам разместить текст на странице, оформить ее.
    В базовой аналогии, это ворд для интернета (кышь Ъ праграммысты, это довольно хорошая аналогия для новичка, продолжим...).

    Это займет +- 1 неделю

    Вам помогут:
    * htmlbook

    Шаг второй
    CSS. Это язык стилизации. Перекрасить текст, увеличить отступы, сделать тень у блоков это к нему. Все крависости в интернете делаются на нем. 99% веба использует для стилизации именно его, так что опять же это стандарт.

    Это займет +- 2 недели

    Вам помогут:
    * Sorax

    Шаг третий
    PHP. Это уже язык программирования (плохой, больной, уродливый, но язык. Да начнется холивар). Он поможет вам понять как это работает, как устроена кухня. Поковыряйте его, обучитесь начальной логике и алгоритмам. Он поможет вам выводить HTML более осмыслено, т.е. вы сможете уже составлять динамические страницы, которые могут подстраиваться под пользователя, добавлять посты, вопросы, картинки и т.д.

    Это займет +- 2 месяца

    Вам помогут:
    * php.net

    Шаг четвертый
    Wordpress. Это почти готовый сайт. В нем уже есть все, что вам нужно. Вы можете писать посты, делать обсуждения и т.д. На его основе вы сможете вылепить что угодно, даже тот самый вопросник. Он написан на PHP, так что он будет дополнять ваши знания. Как только научитись ставить WP, попробуйте написать для него шаблон, потом плагин, и еще и еще. Это закрепит и разовьет ваши предыдущие знания.

    Это займет +- 2 месяца

    Вам помогут:
    * wp-kama

    Шаг пятый
    MySQL. И в частности язык запросов SQL. Это база данных. Они нужны, что-бы хранить информацию вашего сайта в удобном виде. Т.е. по своей сути это таблица экселя, в ней есть поля и их значения. Это так же необходимые знания, так как ваши вопросы из вопросника будух храниться именно там.

    Это займет +- 1 месяц

    Переломный момент
    Наступает переломный, это значит что по истечению полу-года вы должны сесть и подумать, нравится ли вам, что вы делали. Это важно. Так как дальше не будет проще, не будет легче. Начнутся такие вещи как Асинхронность, Брокеры сообщений, ООП, MVC, и другие страшные слова, которые ровно как и предыдущие шаги по-началу будут вас пугать, но потом станут лучшими друзьями.

    Если вам действительно интересно большее, то можете изучить шаги приведенные ниже. Если же вы просто хотите развлечься, то вам вполне хватит перечисленных выше.

    Не спешите так же переходить к шагам ниже, если не уверены в своих силах. Нет ничего плохого, что-бы "посидеть" еще на предыдущих шагах.

    Шаг пятый
    JavaScript. Ура, вы решили, что вы хотите быть программистом, похвально. Этот язык позволит вам сделать ваши страницы более динамичными. Добавить на них анимацию, логику. Этот язык использует 90% веба, так что сомневаться в его значимости нет смысла. Он позволит вам добавить жизнь на ваш сайт.

    Это займет +- 2 месяц

    Вам помогут:
    * Sorax
    * learn.javascript.ru

    Шаг шестой
    Jquery. Это продолжение JS. Это фреймворк (набор готовых функций). Он облегчит вашу работу с JS и позволит делать ее более качественно и быстро.

    Это займет +- 1 месяц

    Шаг седьмой
    Распутье. Вы уже как год программист, отличная работа. Вы уже выросли из яслей и впереди бескрайний океан. И теперь вы должны понять, что вы хотите. Устраивают ли вас сейчас ваши текущие инструменты. Удобные ли они. Не стесняют ли они вас.

    Если вам нравится PHP, он удобен, тогда продолжите изучать именно его, но не стоит бездумно и слепо защищать язык. Если вы чувствуете, что он вас смущает, не противьтесь и просто попробуйте что-то другое. А поверьте этого много.

    Итак развилка:
    Мне нравится PHP, мама я женюсь!
    Ок, тогда вам стоит взглянуть на фреймворки Laravel, Yii 2, вполне хороши. Они довольно мощные и позволят много чего на себе сделать.

    PHP какой-то странный, но мне понравился JavaScript
    Шикарно, значит есть смысл попробовать NodeJS. Это версия языка (Да, я знаю, что нода это среда а не язык, дайте уже объяснить человеку) расчитаная на составление страниц, как PHP. Это очень мощный инструмент, поняв который, вы вряд ли захотите уйти с него. Он поможет вам писать не только сайты, но и приложения для телефонов / планшетов, программы для ПК, возможно игры (но не стоит. По крайней мере с текущим развитием инструментов), демоны, сервисы, консольные приложения и т.д.

    Они оба мне не нравятся
    Что ж, тогда вам могут приглянуться Python, Ruby - эти два языка более близки к PHP, чем JS.
    Или вы за год стали адептом скорости, и не видите большей радости в жизни чем оптимизация и быстрото рендеренга. Ну тогда вам точно понравятся GO и Rust.
    А может быть Dart к тому временем станет мейн стримом, это уже покажет время.

    Что-бы вы не выбрали, это будет хорошим решением.

    Шаг восьмой
    Как говорится, я просто оставлю это здесь. Сейчас нет смысла объяснять, что это, зачем оно и с чем его едет, вы просто взглянете через год на этот список и все поймете.

    CSS:
    * Sass / Less / Stylus

    JS:
    * CoffeeScript / LiveScript / TypeScript
    * Angular
    * Promise

    NodeJS:
    * NPM
    * Express

    Ускорение работы:
    * Gulp
    * Jade
    * Yo

    Остальное:
    * MongoDB
    * MariaDB
    * RabbitMQ

    Шаг 7 и 8 займут у вас всю жизнь
    Это не в коем случае не значит, что язык будет тем же, просто Язык / Технолигия будут заменяться на другую, а смысл будет тем же. Будут новые технологии, будут новые подходы, новые языки. Будет интересно и весело.
    Ответ написан
    15 комментариев
  • Входной уровень на Python Junior Developer?

    LeEnot
    @LeEnot
    Енот-андроид
    Если вы студент - устраивайтесь на стажировки - студентом это сильно проще, если вы уже окончили учебное заведение, почти все варианты стажировок для вас закрыты.
    Так же не очень понятно - какой у вас уровень общих знаний. Если совсем не умеете программировать, это одно. Если писали что-то уже на других языках - другое.
    Ну и потом, практика показывает, что необходимый уровень - это как приняли. Т.е. если рассылать резюме постоянно и ходить на собеседования, можно как раз и выяснить, что требуется, и получить навыки собеседований, и устроиться в конце концов.
    Ответ написан
    1 комментарий
  • Куда валить с upwork?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    mini off: Если у Вас есть проверенные старые клиенты - зачем Вы их заводите вообще на биржи? Работайте напрямую.
    Ответ написан
    7 комментариев
  • Почему в логах nginx мне пишет (13: Permission denied) при выполнение php-скриптов?

    @Blumfontein
    Пусть my_user - тот, юзер, в директории которого работает сайт.

    1) В nginx.conf ставьте

    user my_user; # вместо user nginx;

    2) В php5/fpm/pool.d/www.conf

    # Найдите и исправьте на
    user = my_user
    group = my_user
    listen.owner = my_user
    listen.group = my_user


    3) Перезапуск nginx и fpm. Далее на папку /var/lib/nginx/tmp руками ставьте права 0700 на пользователя my_user

    chown -R my_user:my_user 0700 /var/lib/nginx/tmp

    4) PROFIT
    Ответ написан
    Комментировать
  • Почему AdMob не отображает тестовый баннер (XCODE 5)?

    WizAlx
    @WizAlx Автор вопроса
    Всем спасибо, проблема решена. В силу легкой некорректности русскоязычного мануала от Google, там была неточность.
    Вот тут:
    bannerView_.adUnitID = @"366тут мой ID";
    нужно указывать не свой ID "pub-012345...", а и ID баннера, зарегистрированного на AdMob в формате: "ca-app-pub-айдиИздателя/айдиБаннера".

    Удачи с монетизацией!
    Ответ написан
    Комментировать
  • С чего начать изучение веб разработки на 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 комментариев
  • oDesk — как подняться до 15-20 долларов в час

    antonydevanchi
    @antonydevanchi
    10 лет в айтишке
    Недавно была нужда и пришлось маленько подфрилансить пару тысяч на free-lance русском. Там ставка 10$ за час везде поголовно. А ваще itforge прав — на фрилансе все тухло с уровнем задач

    Совет: не зацикливайтесь на oDesk. Тот же фрилансим и фри-ланс — они дают свой результат :) И старайтесь брать заказы на выполнение функционала: напишешь магазин — 50k, сверстаешь макет — 5k, а не на почасовую оплату.
    Ответ написан
    2 комментария
  • Поиск повернутых объектов?

    @kmike
    Как-то так делал (через питоний биндинг к OpenCV):

    def how_to_make_horizontal(contour):
        """ Returns rotate center and angle that would make contour horizontal """
        rect = cv.BoundingRect(contour)
        box = cv.MinAreaRect2(contour)
    
        x, y, w, h = rect
        p1, p2, angle = box
        if angle > 45:
            angle -= 90
        if angle < -45:
            angle += 90
        rotate_center = x+w/2, y+h/2
        return angle, rotate_center
    


    Но у меня в задаче из растра предварительно контур удавалось получить, обработав изображение через cv.MorphologyEx с кастомным ядром (чтоб избавиться от дефектов — закрыть разрывы и тд) и натравив cv.FindContours. Вроде можно просто взять все точки и передать их в cv.MinAreaRect, не знаю. См.

    opencv.willowgarage.com/documentation/cpp/imgproc_structural_analysis_and_shape_descriptors.html#cv-minarearect
    Ответ написан
    Комментировать