• Почему не запускается компьютер?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    он ж тебе прямым текстом пишет что не может найти хард, и ошибка SATA порта. попробуй переставить в другой разъем саты на материнке
    p.s. а вообще F1 нажимал? может и так пройдет дальше
    Ответ написан
    1 комментарий
  • Как подходить к решению нетривиальных задач?

    Привет.

    Всегда использую модель боли:

    1) Смотришь задачу
    2) Пытаешься её решить
    3) Понимаешь, что ты тупой идиот, который ничего не может.
    4) Поднимаешь в помощь гугл
    5) Поднимаешь в помощь литературу
    6) Спрашиваешь ребят на тему: "почему так, а не иначе".
    7) Выполняешь задание, осознавая, что ты тупой, раз на решение этой задачи тебе пришлось потратить столько времени.

    Повторить до бесконечности, и ты станешь профи.
    Ответ написан
    7 комментариев
  • Как фронтенд взаимодействует с бэкэндом?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Берете любой сайт с интерактивом, ставите Firefox, в него ставите Firebug, нажимаете F12, открываете вкладку Network и видите, как фронтэнд, того,.. с бекэндом.
    Ответ написан
    4 комментария
  • Общая работа с базой данных?

    @Skrolea
    Ну если это структура только и небольшие данные то миграции?
    Ответ написан
    Комментировать
  • Качество кода в компонентах битрикса?

    @Eugeny1987
    Работаю с HostCMS
    А Вы посмотрите... и ужаснитесь
    Ответ написан
    1 комментарий
  • Как поднять себе зарплату?

    Insaned
    @Insaned
    Не надо искать много информации на эту тему. Надо найти работу где тебе предложат больше. Потом говоришь боссу: прям не знаю что делать - очень хочу тут работать, но у меня семья и дети (хомячки, попугайчики...) а в другом месте предлагают больше. Дальше тебе или повышают зарплату или ты идешь в другое место.
    Если тебе не удается найти работу на большие деньги - значит ты сейчас нормально получаешь и больше ты не стоишь - сиди на попе ровно.
    Ответ написан
    1 комментарий
  • Почему Macbook Pro быстро разряжается в ждущем режиме?

    @bwrk
    Напротив, это хорошо действует на батарею.
    Её вообще-то нужно регулярно разряжать для профилактики.
    Вы это делаете и так.


    Это актуально только для батарей типа никель гидридные (NiMh) и никель каддиевые (NiCd). В батареях ноутбуков используются литий ионные элементы. Для литий ионных (Li-ion), литий полимерных (LiPo) и литий фосфатных (LiFePo) это не актуально. У них нет эфекта памяти. Даже наоборот, сильный разряд может убить батарею (но до глубокого разряда еще нужно умудрится батарею довести, ниже 2.5 вольта на банку и она начнет умирать).
    Ответ написан
    Комментировать
  • Как работает Yii::app()?

    copist
    @copist
    Empower people to give
    1. Инициализация Yii::app()

    Смотри, в файле www/index.php такие строки
    1. $config = APP_PATH . '/protected/config/main.php';
    2. $app = \Yii::createWebApplication($config); // @var CWebApplication $app
    3. $app->run();


    При отработке строки 2 выполняется код
    1. class YiiBase {
    2. {
    3.     // ... другой код
    4. 
    5.     public static function createWebApplication($config=null)
    6.     {
    7.         return self::createApplication('CWebApplication',$config);
    8.     }
    9.
    10.    public static function createApplication($class,$config=null)
    11.    {
    12.        return new $class($config);
    13.    }
    14. }


    В строке 12 с учётом динамического связывания выполняется return new CWebApplication($config);

    Если пройти по родительским классам, то можно найти, что
    class CWebApplication extends CApplication ...

    и далее
    1. abstract class CApplication extends CModule
    2. {
    3.     // ... другой код
    4. 
    5.     public function __construct($config=null)
    6.     {
    7.         Yii::setApplication($this);
    8.         // ... и другой код
    9.     }
    10. }


    В строке 7 вызывается Yii::setApplication($this);, а если посмотреть класс Yii и его родителя YiiBase, то можно увидеть как в итоге инициализируется переменная для конструкции Yii::app()
    class Yii extends YiiBase { }

    class YiiBase {
    {
        private static $_app;
        public static function setApplication($app) // тут определяется значение self::$_app для Yii::app()
        {
            if(self::$_app===null || $app===null)
                self::$_app=$app;
            else
                throw new CException(Yii::t('yii','Yii application can only be created once.'));
        }
        public static function app() // тут можно прочитать значение self::$_app через Yii::app()
        {
            return self::$_app;
        }
    }


    Теперь понятно, что при инициализации сущности типа CWebApplication эта сущность установилась в приватную переменную YiiBase::$_app, которая доступна через вызов Yii::app()

    Это была инициализация

    2. Использование Yii::app()->module или Yii::app()->component

    Ещё раз посмотри на класс CApplication
    abstract class CApplication extends CModule
    {
        public function __construct($config=null)
        {
            Yii::setApplication($this);
    
            // ... другой код
    
            $this->configure($config);
    
            // ... другой код
        }
    }


    В методе configure($config) происходит подготовка данных, которые понадобятся позже для таких вызовов как (к примеру) Yii::app()->db

    Давай посмотрим на класс Module, в котором и реализуется логика таких вызовов
    abstract class CModule extends CComponent
    {
        public function configure($config) // сохранить всё что передали по переменным
        {
            if(is_array($config))
            {
                foreach($config as $key=>$value)
                    $this->$key=$value;
            }
        }
    
        public function __get($name) // если кто-то пытается вызвать несуществующее свойство, например Yii::app()->db
        {
            if($this->hasComponent($name)) // проверить что есть настройки или готовая сущность компоненты
                return $this->getComponent($name); // вернуть сущность компоненты
            else
                return parent::__get($name);
        }
    
        public function hasComponent($id) // проверить что есть настройки или готовая сущность компоненты
        {
            return isset($this->_components[$id]) || isset($this->_componentConfig[$id]);
        }
    
        public function getComponent($id,$createIfNull=true) // вернуть сущность компоненты
        {
            if(isset($this->_components[$id])) // если есть готовая сущность компоненты, вернуть её
                return $this->_components[$id];
            elseif(isset($this->_componentConfig[$id]) && $createIfNull)
            {
                $config=$this->_componentConfig[$id];
                if(!isset($config['enabled']) || $config['enabled'])
                {
                    unset($config['enabled']);
                    $component=Yii::createComponent($config); // создать новую сущность компоненты
                    $component->init();
                    return $this->_components[$id]=$component; // сохранить и вернуть её
                }
            }
        }
    }


    Попробуем расшифровать вызов Yii::app()->db

    Как я уже показал, Yii::app() - это сущность типа CWebApplication, а у неё нет публичного свойства $db, поэтому PHP вызывает магический метод __get() из базового класса CModule. (Посмотри в документации "магические методы")

    Итак, свойства CWebApplication->db не существует и вызывается CModule->__get('db'), далее код считает, что, возможно производится вызов компоненты.

    Метод CModule->hasComponent('db') проверяет, что ранее были заданы какие-то настройки указанной через файл конфигурации protected/config/main.php или иным способом. Если так, то то вызывается CModule->getComponent('db', ...), который вызывает Yii::createComponent($config), где $config - это найденные настройки указанной компоненты, например, параметры соединения с базой данных для компоненты db

    Посмотрим, что делает Yii::createComponent($config)
    class YiiBase
    {
        public static function createComponent($config)
        {
            // посмотри сам, тут интересно
        }
    }


    Cложный метод. Суть его в инстанциировании новой сущности какого-то класса, 5 или 6 способов. Дело в том, что этот метод CModule::createComponent() может быть вызван откуда угодно и у него куча вариантов передачи параметров.

    Итак, CModule::createComponent() создал и вернул новую сущность. И на выходе из метода CModule::getComponent() полученная сущность записывается в массив CModule->_components под именем 'db'.

    Все последующие вызовы Yii::app()->db будут проверять наличие инстанциинованной сущности в массиве CModule->_components['db'] и использовать его, если он там найден

    Заключение:

    Вызов Yii::app()->db
    А. Динамически инициализирует компоненту, по мере необходимости
    Б. Настраивает её данными, которые в частновти можно определить через файл конфигурации protected/config/main.php
    В. Инициализируют компоненту только один раз за цикл работы PHP приложения

    Надеюсь я понятно изложил механизм ленивой инициализации компонент
    Ответ написан
    1 комментарий
  • Вопрос по работе, что посоветуете?

    @GreatRash
    Если задачи однотипные, то можно придумать для них однотипное решение, затем клепать их за пять минут и оставшееся время проводить на тостере :) Ну или что-то для себя мутить.
    Ответ написан
    1 комментарий
  • Вопрос по работе, что посоветуете?

    Вообще надо было думать когда устраивались сюда )) Если это просто студия то других задач у них нет, думаю вам придётся увольняться.
    Ответ написан
    Комментировать
  • Есть Хардкор книга для изучения PHP?

    AndrewHaze
    @AndrewHaze
    Умею гуглить яндексом
    Ответ написан
    Комментировать
  • Есть Хардкор книга для изучения PHP?

    trevoga_su
    @trevoga_su
    читать и плакать
    пытать и вешать
    мануал почитай, коли опыт в программировании уже есть
    Ответ написан
    Комментировать
  • Как выучить основные методы и функции Javascript?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    1. Выучить английский (хотя бы немного)
    2. Разобраться с IDE с хорошим автокомплитом.
    Ответ написан
    2 комментария
  • Как правильно написать условие?

    khipster
    @khipster
    Предлагаю не мудрить с регулярками а просто перед этим кодом проверять входную строку быстрой функцией strpos на наличие подстроки mysite.com.
    Ответ написан
    Комментировать
  • Изучение программирования путем Скалы?

    @a1go1ov
    Scala fan, Java developer
    Если в программировании вы 0 и хотите начать правильно вникать в программирование, то начните с классики - Structure and Interpretation of Computer Programs (SICP), эта книга закладывает хорошие основы, а так же познакомит вас с функциональным программированием:
    книга:
    web.mit.edu/alexmv/6.037/sicp.pdf
    вспомогательный сайт для самостоятельного изучения книги:
    https://mitpress.mit.edu/sicp
    sicp.sergeykhenkin.com/sicp-exercise-solutions
    перевод книги (не в курсе на счет качества)
    newstar.rinet.ru/~goga/sicp/sicp.pdf
    видео лекций по книге:
    ocw.mit.edu/courses/electrical-engineering-and-com...

    Конкретно по Scala:

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

    Интерактивные курсы

    cousera.org:
    Специализация по Scala - один из фундаментальных источников знаний о программировании на Scala. В составе - видео лекции, доп. материалы, вопросы на закрепление, задания на программирование, форум для вопросов и обсуждения (все опционально). В принципе можно вместо SICP сразу начинать со специализации на coursera.org, в частности первый курс в специализации как раз таки проектировался Мартином в стиле SICP (по крайней мере до создания специализации программа курса и задания были в духе SICP).

    https://www.coursera.org/specializations/scala

    Ссылки на курсы из специализации по отдельности (для бесплатной регистрации):
    1. Functional Programming in Scala
    2. Functional Program Design in Scala
    3. Parallel programming
    4. Big Data Analysis with Scala and Spark

    Курс стоящий немного в стороне, о reactive programming на scala:
    Принципы реактивного программирования

    ---
    Интерактивные упажнения по Scala от 47 Degrees (на данный момент 6 курсов std lib, cats, shapeless, doobie, scalacheck, FP in Scala)
    https://www.scala-exercises.org

    www.scalakoans.org - небольшие уроки для изучения
    ---
    Big data university (с уклоном в Data Science и Big Data):

    Introduction to Scala
    Scala for Data Science
    Spark Overview for Scala Analytics
    ------------------------------------------

    Если вас больше интересует не интерактивный стиль обучения, а вдумчивое чтение, то можно посоветовать следующие книги:

    Книги:

    На русском,к сожалению, есть только одна книга:
    Scala для нетерпеливых
    но для новичка в программировании она скорее всего не подойдет.

    также в 2016 вышла обновленная версия книги от Martin Odersky, Lex Spoon и Bill Venners, которая покрывает все вопросы связанные со Scala (859 стр), в том числе все нововведения на текущий момент (вплоть до Scala 2.12). Эту книгу можно также читать если вы новичок в программировании. Это наверно самый фундаментальный источник для изучения Scala:
    Programming in Scala, Third Edition

    После ознакомления с основами Scala для углубления именно функциональных аспектов программирования на Scala можно прочитать замечательную книгу от Paul Chiusano и Rúnar Bjarnason:
    Functional Programming in Scala

    Для изучения практических основ проектирования современных приложений с использованием возможностей Scala и ее экосистемы, с применением функциональной парадигмы, рекомендую отличную книгу от Debasish Ghosh
    Functional and Reactive Domain Modeling

    Вообще по Scala и различным инструментам из экосистемы Scala сейчас много разных книг, так что при желании можно найти подходящую по уровню и интересам, стоит также обратить внимание на подборку книг на сайте lightbend (бывшая TypeSafe)

    Также можно почитать перевод уроков Scala от Twitter:
    Scala Школа!
    ------------------------------------------

    Алгоритмы
    На счет алгоритмов, про которые вы упоминали, можете посмотреть прекрасный набор классических алгоритомов и структур данных, реализованных на Scala в чисто функциональном стиле:
    scalacaster от @vkostyukov(Twitter, Finagle)
    или
    scalgos от @pathikrit
    ------------------------------------------

    Остальное
    Ninety-Nine Scala Problems - набор небольших упражнений (с ответами) для изучения Scala

    Hands-on Scala.js - туториал по Scala.js от @lihaoyi

    Type-Level Programming in Scala - серия постов из десяти частей на тему продвинутого использования возможностей системы типов Scala от Rúnar Bjarnason (соавтор Functional Programming in Scala) и Mark Harrah (разработчик sbt)

    Scala Best Practices - колеекция хорощих практик программирования на Scala от Alexandru Nedelcu

    P.S. Также если хочется держать руку на пульсе о том, что происходит в экосистеме и community Scala, то можно посмотреть эту подборку блогов и новостных и видео ресурсов о Scala
    Ответ написан
    Комментировать
  • Какой учебник по PHP и mySQL взять на вооружение?

    @IceJOKER
    Web/Android developer
    php.net/manual/ru
    там же и есть раздел для работы с MySQL(i)
    Ответ написан
    Комментировать