• Почему в Python нельзя вывести значение глобальной переменной в функции перед ее затенением?

    @newpy
    web-dev
    В функции х вызывается значение глобальной переменной a.

    вы пришли из JavaScript?
    у вас пробел в областях видимости в питоне.

    у вас внутри функции x(),
    пытаюсь обратиться к локальной переменной до присвоения ей значения

    потому что вы пишите print(a) ДО того как присваиваете ей значение. Функция x() ничего не знает о той переменной "a" которая равна 1.
    def x():
      # внутри функции ничего неизвестно о переменной а = 1 которая снаружи.
      # чтобы было известно надо использовать ключевое слово global, или передавать напрямую ваше    "а" = 1, в функцию x(a) 
      print(a) # ошибка тут. Выводите раньше чем присвоили значение.
      a = 2
    
    a = 1
    x()


    Чтобы работало
    def x():
        global a
        print(a)
        a = 2
    a = 1
    x()

    x() # выведет 1
    print(a) # выведет 2
    Ответ написан
    5 комментариев
  • Можете пояснить принципы ООП?

    @newpy
    web-dev
    Какие то принципы в вашей статье странные, и больше запутывают. Пробуйте проще.

    Фигуры. Эллипс, Круг, Квадрат, Ромб, Треугольник, Прямоугольник. Что их объединяет? Что отличает? У всех есть площадь, но у всех она разная, у Круга нет Сторон, но она есть у остальных. У Треугольника их три, у остальных четыре. У некоторых есть Периметр, у Круга длина окружности. Вычисляются периметры, площади, длина окружности по-разному. При этом все они относятся к фигурам. Какие из них мы можем расширить? Да все практически. Добавить им какие-то методы, например Треугольнику метод для вычисления биссектрисы, или угла. Но мы не можем сделать тоже самое для круга например. Более того мы не можем позволить экземпляру класса Прямоугольник менять или задавать стороны Треугольника. Т.к. у них разное количество сторон, и не можем по формуле вычисления площади ромба, вычислить площадь Круга. Зато мы можем еще расширить немного класс Треугольников. Например создать класс Равнобедренных треугольников и Равносторонних треугольников. И те и другие будут треугольниками, и те и другие еще и Фигурами. Но свойства Равнобедренного и Равностороннего будут несколько отличаться. Например тем, что Стороны равны, а еще Углы могут быть равны. А еще мы можем вообще создать Классы Угол и Сторона, наделить их свойствами, действиями и передавать их в наши Фигуры! Или например из двух Равнобедренных треугольников создать Ромб! Для этого мы можем расширить Ромб методом, который умеет создавать из двух только Равнобедренных треугольников Ромб. Тому же самому мы можем научить Квадрат! Можем создать еще Прямоугольный треугольник, и из двух прямоугольных составлять Прямоугольник! Мы можем "прятать" свойства наших фигур от посторонних глаз, и чтобы никто не смог изнутри взглянуть как вычисляется площадь, зато мы можем предоставить метод, чтобы сразу узнать площадь, мы можем попросить что-то взамен. Например передать нам для вычисления площади стороны, или угол и стороны. Мы можем запретить менять площадь нашей фигуры. Или запретить менять стороны. Чтобы мы всегда знали наши стороны, ведь если каждый будет их менять, то это будет хаос, кто-то неграмотный попадется, и Квадрату сделает разные стороны! Что тогда будет? Площадь и периметр тоже сломаются, сломается сам Квадрат. Вот и попробуйте объяснить себе ответы на ваши вопросы.

    Краткий геометрический экскурс закончил. Пытайтесь представить себе все на примерах из жизни. Вокруг вас столько объектов. Автомобили, Люди, Животные и жЫвотные, сложно себе представить более простое понимание объектов.

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

    (Предполагаю желающих сказать что можно и из человека сделать животное, и изменить цвет глаз и волос, но мы все таки о программировании и условно :) )
    Ответ написан
  • На чем сфокусироваться в изучении WEB?

    @newpy
    web-dev
    Сейчас я хорошо знаю HTML, CSS. Довольно неплохо Bootstrap. Учу JavaScript. Но учить еще PHP, AngularJS и тому подобное - слишком мало времени.

    скажу прямо, рано вам быть web-программистом...В сухом остатке вы знаете только HTML, CSS, Bootstrap.
    JS вы только учите. Когда выучите, сможете претендовать на front-end разработчика.
    "тому-подобное", стоит разделить на PHP как серверный (backend) язык сценариев, и на JS frontend фреймворк Angular. И это очень разные вещи.
    Если вслед за JavaScript выучите Angular, то по прежнему сможете претендовать на frontend разработчика. Поэтому определите свой путь, кем вы хотите быть. Frontend, Backend или full-stack разработчиком, и действуйте и учите исходя из плана. А не кидайтесь на все подряд. Если будете учить все сразу, то вряд ли будете знать что-то из этого хорошо.
    Сфокусируйтесь на полноте знаний одного языка программирования. На данный момент это JavaScript у вас. Когда твердо сможете сказать что знаете язык хорошо, тогда думайте о трудоустройстве и что учить дальше. Отложите мысли о трудоустройстве, они вам мешают. И рано с тем "набором знаний" который вы озвучили. Еще раз простите за прямоту, пока "HTML/CSS/Bootstrap" значит что вы не знаете ничего практически...
    Если хотите форсировать, то не жалуйтесь что мало времени. Учите усерднее, занимайтесь больше.
    Ответ написан
    Комментировать
  • Как правильно установить Mysql для pip3.5?

    @newpy
    web-dev
    я скачал mysqlclient-1.3.7-cp27-none-win_amd64.whl

    Читайте тут
    https://github.com/PyMySQL/mysqlclient-python/issues/54
    Если коротко, то Python 3.5 скомпилирован с помощью VC2015. Автор mysqlclient компилировал из под VC2014, поэтому его библиотека с Python 3.5 не работает. До некоторого времени выхода не было, надо было перекомпилировать его исходники из под VC2015. У автора такой возможности не было, о чем он написал в issue. Но нашлись добрые люди.
    Обратите внимание на ответ @jokey2k, в его ответе ссылка, которая дает нужный whl пакет под win64 cp35

    pyside.markus-ullmann.de/mysqlclient-win/mysqlclie...
    Ответ написан
    Комментировать
  • Как вывести элементы массива?

    @newpy
    web-dev
    Python
    arr = list([x for x in range(2,10) if x % 2 != 0] + [1])
    print(arr)
    Ответ написан
    Комментировать
  • Как менять TEMPLATE_DIRS?

    @newpy
    web-dev
    может примерно так?
    import settings
    if 'new_style' in request.GET:
        style = request.GET.get('new_style')
        делаем что-то с settings.TEMPLATE_DIRS ( = style directory)
    Ответ написан
  • Как передать сущность в сервис Symfony2 и нужно ли это делать?

    @newpy
    web-dev
    Больше и лучше чем в документации Symfony вы вряд ли найдете...возможно по одной из ссылок вы найдете ответ на свой вопрос как реализовать.
    symfony.com/doc/current/book/service_container.html
    symfony.com/doc/current/components/dependency_inje...

    является ли правильным передача самой сущности в сервис через конфиг сервис контейнера

    Возможно это ответ на вопрос является ли правильным. Рекомендую на вопросы "правильно ли..." обращаться к разделу Best Practices из документации. Там часто бывает полезно порыться.
    symfony.com/doc/current/best_practices/business-lo...
    Ответ написан
    Комментировать
  • Стоит ли писать свои велосипеды новичку?

    @newpy
    web-dev
    написал сайтик на WordPresse

    Сайтик на Wordpress не дает ровно никакого понимания об ООП и MVC. Вы можете себе ответить на вопрос чем отличается абстрактный класс от интерфейса? Что такое статические методы и свойства? Нет? Восполните этот пробел до того как возьметесь за фреймворки.

    совсем немного javascript-а

    Я советую восполнить этот пробел раньше чем возьметесь за фреймворки.

    Mysql

    Вы можете не мне, а себе, без заглядывания в литературу дать ответ на вопрос - чем отличается LEFT/RIGHT JOIN, INNER/OUTER JOIN? Это простой вопрос, и если вы не можете на них ответить, нужно восполнить этот пробел раньше чем браться за фреймворки.

    Вопрос: стоит ли мне писать что-то своё с 0, на чистом PHP, но с использованием паттернов

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

    Велосипеды писать не стоит. Их и так достаточно и вам придется их писать, т.к. фреймворк всего лишь инструмент и решать все бизнес-задачи или реализовать логику он не может, вам собственно как программисту и придется это решать. Если вам надо забить гвоздь, вы же не берете в руки кусок мыла, потому что вы так придумали, и не начинаете забивать гвозди куском мыла. Теоретически по вашему предположению это возможно, но зачем, если есть молоток. Молотком можно забивать гвозди криво, но вероятно, это лучший способ и инструмент для этого. Останется лишь научиться правильно им пользоваться, правильно держать, правильно это делать. Т.е. проблема будет не в молотке, а в вас. Я надеюсь понятно объяснил.

    Вместо послесловия: как мог старался удержаться от волны возмущения ))). Ну нельзя так строить свой процесс обучения. Написать что-то там на вордпресс, блог без MVC и ООП (все в одной папке и куче - по вашим словам, значит, вероятно вы не знаете даже, как работает автозагрузка и что это за методы spl_autoload() и spl_autoload_register()), и говорить что вы понимаете ООП и MVC. Поймите любой опытный программист вскроет все ваше "понимание ООП и MVC" за 1 минуту когда вы пойдете устраиваться на работу или захотите "фрилансить".
    Вы же не для кого-то это делаете, а для себя. Постройте правильно учебный процесс (взгляните хотя бы на программу любого онлайн курса по PHP, и какое место там занимают фреймворки). Решите что действительно нужно и важно. А что можно отложить пока не появится прочный костяк базовых знаний. Фреймворк как я упомянул выше, это инструмент. Это как взять пробник - инструмент, и лезть в электроустановки свыше 1000В, не имея допуска по группе электробезопасности, и имея базовые понятия из школьного курса по Электричеству.

    Не воспринимайте как критику лично вас. Вы в этом не виноваты. Но задуматься стоит. Этот путь пройден вами не первым.
    Ответ написан
    2 комментария
  • Что быстрее операторы или условия?

    @newpy
    web-dev
    Ставьте правильно вопрос, т.к. в вашем примере вопрос скорости не уместен вообще. Вопрос читаемости (читаемость выше с if) и отсутствия понимания того, что происходит. В вашем примере два разных случая. В первом вы проверяете условие, и если оно выполняется, то происходит инкремент. Во втором же, вы проверяете двойное условие, первое - if a < 1, второе - результат выполнения операции инкремента. И если оба они выполнятся, то ничего не произойдет, потому что нет блока, отвечающего за выполнение кода, если двойное условие выполнится.

    А про скорость забудьте, если у вас там не миллионы инкрементов и смотря что происходит с $a (поскольку ваш пример, как вы говорите, упрощен). Тогда вообще лучше использовать генераторы и yield. Вы не там пытаетесь скорость выжать. Узкие места программ это не if и &&. Или приводите полный пример, а не абстрактный, да еще неправильный.
    Ответ написан
    1 комментарий
  • Какая функция выполняет связывание таблиц в Eloquent ORM Laravel?

    @newpy
    web-dev
    https://laravel.com/docs/5.2/eloquent-relationship...
    в классе модели, отношения задают методы например hasMany(), hasOne(), belongsTo()
    Пример из документации:
    belongsTo принимает три параметра, два последних необязательны (нужны если вы хотите переопределить ключи), смотрите документацию EloquentORM, ссылка выше.
    public function user()
    {
        return $this->belongsTo('App\User', 'foreign_key', 'other_key');
    }
    Ответ написан
    Комментировать
  • На чём создать чат-форум для которотких сообщений с современным дизайном?

    @newpy
    web-dev
    Очень важно полностью кастомный дизайн.

    Если это важнее всего, то все равно на чем писать. Т.к. то что вы выберете не повлияет на дизайн никоим образом.
    Для начала отделите зерна от плевел.
    Выбор технологии зависит от конечного продукта. Чаты с большим количеством подключенных пользователей одновременно, и постоянно "висящих" на соединении, требуют некоторой асинхронности. Тут подошел бы Node.js. Если же это будет некая система больше похожая на форум/блог с подгрузкой необходимых данных, в качестве быстрого старта (не лучшего возможно), можно выбрать стек технологий PHP+Ajax+JavaScript. Т.к. у вас нет практического опыта, я бы советовал попробовать именно так. Будете ли вы использовать фреймворк или CMS тоже ваш выбор, но стоит учесть разницу. Используя CMS вы будете ограничены тем функционалом который в ней есть (по большей части), но если вам важен только дизайн, то как я уже сказал, в принципе все равно что использовать. Плюс требования к использованию к CMS несколько ниже, чем разработка вышеописанного с помощью фреймворка. Вам потребуются некоторые знания. Которых у вас без практического опыта с 99,9% долей вероятности точно не хватит. Зато это хороший повод научиться чему-то, и получить тот самый практический опыт. С CMS боюсь что вы этого не получите. Зато там будет возможность меньше напрягаться с программированием, и больше уделить внимания дизайну.
    По поводу блокнота: редактор кода вы можете выбрать любой, на технологию он влияния не окажет. Скажется на лично вашем субъективном удобстве при разработке, возможно скорости этой самой разработки(при наборе кода), а также частично сократит количество ошибок в написании используемых методов.

    В заключение:
    Если вы не имеете практического опыта, а только теоретические знания, подтвержденные только вашей собственной (склонной к завышению) самооценкой, то начните с чего-то более простого. Без использования фреймворков и CMS. Для начала просто разработайте дизайн сайта, добейтесь того чтобы он выглядел так как вы хотите. Затем сверстайте его в обычный HTML, а потом уже думайте как реализовать функционал. И тоже сперва начните с простого. С реализации простейшего блога с помощью выбранной технологии. Если будет получаться, то вы сами начнете видеть что делать дальше и усовершенствуете свою разработку. А если возникнут трудности с созданием простого блога с помощью какого-то фреймворка, то трудности подскажут какие знания вам необходимы. Начинайте всегда с простого. Самая частая ошибка начинающих, это маниакальная тяга все усложнить и сделать все сразу и сходу. Вы не первый. Не выйдет. Благо на просторах интернета полно исчерпывающих мануалов как создать простейший блог с помощью любой технологии и фреймворка.

    С Наступающим, и удачи.
    Ответ написан
    Комментировать
  • Как сделать автоматический деплой PHP приложения?

    @newpy
    web-dev
    TeamCity от JetBrains
    https://www.jetbrains.com/teamcity/
    Ответ написан
    Комментировать
  • Почему не передаются данные из формы методом POST?

    @newpy
    web-dev
    А вы уверены в том, что первый файл index.php и правильно ли он написан? В form.php вы указываете открывающий тег <?php и закрывающий, а в index.php у вас тегов нет. В таком случае это должен быть файл index.html. Или вы приводите не полный текст первого файла index.php. Или если вы хотите чтобы он был php и правильно интерпретировался, то должен быть
    index.php
    <?php
    echo '<form method="post" action="form.php">
     <input type="text" name="username" />
     <input type="submit" id="send" name="submit" value="Отправить" />
    </form>';

    Или без тегов <?php ?> и переименовывайте в index.html
    И лежат ли у вас файлы index.php и form.php на одном уровне (в одной папке рядом)
    Если и это не помогает, убедитесь что у вас вообще интерпретатор правильно работает.
    Ответ написан
    1 комментарий
  • Почему не работает выборка в laravel?

    @newpy
    web-dev
    Во первых скорей всего перепутали порядок передаваемых параметров:
    первым идет foreign_key, вторым local_key.
    Во-вторых могли перепутать еще и сущности, судя по вашим словам.

    class News
    public function company()
    {
         return $this->hasMany('App\Company', 'id', 'source_id');
    }
    
    class Company
    public function news()
    {
         return $this->belongsTo('App\News');
    }


    В-третьих: стоило бы для понимания описать отношения между вашими сущностями. Потому как ваши слова только запутывают. Опишите сущности Company и News. Например: многим/одной Компании может принадлежать много Новостей, множество Новостей могут принадлежать одной/многим Компаниям. Так как собственно от этого зависит как правильно описать отношения (relations) в моделях. Уверен если на бумажке черканёте себе таким простым текстом, то и вам станет понятнее что и где прописывать, и как правильно.
    Ответ написан
    Комментировать
  • Как правильно работать с xml?

    @newpy
    web-dev
    Ответ написан
    Комментировать
  • Как на Yii1 в AR сделать order by по связанным данным?

    @newpy
    web-dev
    Во-первых таблицы должны быть связаны relation-ами. Т.е. они должны быть прописаны в моделях. Надеюсь что это у вас сделано.

    А дальше все должно быть несложно, нечто вроде:
    $rooms=Room::model()->with('tarif')->findAll(array(
        'order'=>'tarif.price_small'
    ));


    Посмотрите в документации www.yiiframework.com/doc/guide/1.1/ru/database.arr. Там есть готовые куски кода которые вы можете использовать.
    Ответ написан
    2 комментария
  • Как правильно использовать twig в laravel?

    @newpy
    web-dev
    С чего вы решили что просто переименовав файлы blade.php на twig у вас будет twig работать?
    У Ларавел свой шаблонизатор. Для того чтобы пользоваться твигом, надо его подключать. Надо подключить Twig в ядре приложения. А не просто переименовать файлы или установить его.

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

    И причем тут твиг и перенаправление на авторизацию? Твиг на это никак не влияет. Вам уже ответили что перенаправление на авторизацию срабатывает из-за добавленной в конструктор контроллера строки $this->middleware('auth'). Этим самым вы вызываете middleware авторизации, что означает что, пока вы не авторизуетесь, у вас контроллер не будет работать.

    Вы смысл того что вы пишите понимаете? Или стоит все таки разобраться с основами?
    Если разобрались, тогда стоило бы выложить код, как вы подключали Twig.
    С авторизацией: просто уберите конструктор в контроллере, и приложение не будет требовать авторизацию. Если вы задумали так, что она все таки нужна, то оставляйте, и авторизуйте пользователя при выполнении любого метода контроллера.

    По существу вам уже были даны два ответа: Finnish про использование TwigBridge, и javanub про авторизацию. Я же вам дам совет использовать пока Blade и вернуть все как было.
    Ответ написан
  • Как правильно загружать большой объем данных из БД в Django?

    @newpy
    web-dev
    Профилируйте запросы к БД. Найдите узкое место. Устраните или копайте дальше.
    Запросы к БД "напрямую" (без django) выполняются так же медленно? Если вы строите графики на фронте, и валится "вывод", то скорее всего узкое место в используемой библиотеке. Причем она по сути обертка для JS. Профилируйте работу javascript. Благо Chrome умеет это все в dev панели. Отлично показывает "затыки" в JS. Отделите ужа от ежа и ищите.
    Ответ написан
    Комментировать