Задать вопрос
  • Можно ли в контроллерах использовать другие контроллеры?

    @EvgeniiR
    https://github.com/EvgeniiR
    Владимир Голубь,
    Есть функция проверки пароля и логина, она берет информацию из env. Может это вообще model ? Она применяется в двух контроллерах.

    Почитайте про паттерн middleware, и проверяйте логин и пароль в одном месте - до вызова контроллера.

    В JS:
    https://expressjs.com/en/guide/using-middleware.html и
    https://stackoverflow.com/questions/12921658/use-s...
    Ответ написан
    5 комментариев
  • Как обратиться к ключу (?), чтобы получить значение, который хранится в переменной?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $clientInfo = curl_exec($ch);
    $data = json_decode($clientInfo, true);
    if (json_last_error() != JSON_ERROR_NONE) {
      //echo json_last_error_msg();
      throw new \Exception(json_last_error_msg());
    }
    echo $data['data'][0]['id'];
    Ответ написан
    7 комментариев
  • Стоит ли бросать учебу в колледже ради узучения ЯП?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    научили

    Тебя и не должны учить. Тебе дают материал - ты его учишь. А то, что ты
    пол года отучился сказать что я чему то научился
    - это твои личные проблемы.
    стоит ли бросать учебу в колледже ради изучение ЯП

    А что, сильно тяжело после учебного дня потратить час времени на изучение программирования? Ох вейт, как я мог забыть, нужно же в обязательном порядке погулять/поиграть/позаниматься еще какой-то фигней.
    Если ты не в состоянии учиться и выделять для этого время - программирование вообще не для тебя.
    Ответ написан
    11 комментариев
  • Стоит ли бросать учебу в колледже ради узучения ЯП?

    если учёба мешает учёбе, бросай учёбу
    Ответ написан
    Комментировать
  • Как реализовать счетчик "сейчас этот товар просматривают еще N человек"?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Это маркетинговая уловка. Можешь делать рандомный счетчик. Лишь бы пользователь понял, что у него есть конкуренты и быстрее купил нужный товар.
    Ответ написан
    7 комментариев
  • Мультизагрузка картинок с добавлением на сервер и в БД. Как сделать?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Лет ми гоогле ит фор ю: пишешь в адресной строке своего бразера три слова: Мультизагрузка картинок php и нажимаешь Ентер. На открывшейся странице будут ссылки на страницы, объясняющие, как делать мультизагрузку.

    После того как освоишь загрузку, пишешь в адресной строке своего бразера три слова: запись в БД php и нажимаешь Ентер.
    Ответ написан
    Комментировать
  • Какую CMS порекомендуете для практики в PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Логику подтяни.

    Если твоя мечта стать говнокодером на вордпрессе, то надо учить вордпресс, а не "какую-то cms"
    Ответ написан
    1 комментарий
  • Как написать операционную систему с нуля ( без специальных знаний)?

    flapflapjack
    @flapflapjack
    на треть я прав
    Охота знать больше, чем приподают.

    у вас по-русски даже писать не получается, а вы уже операционную систему собрались придумывать.
    Ответ написан
    Комментировать
  • Чтобы заниматься blockchain важнее знание физики или информатики?

    Учите оптику. Она поможет при чтении документации.
    Ответ написан
    Комментировать
  • Кто знает какая настройка позволяет отображать все выбранный классы и файлы как на скрине, а не прятать в выпадающий список?

    @1001001
    Правой кнопкой по табкам -> Tab placment -> Show tab in single row
    Ответ написан
    Комментировать
  • Как посчитать количество затронутых месяцев между двумя датами?

    0xD34F
    @0xD34F
    12 * (год2 - год1) + месяц2 - месяц1 + 1
    Ответ написан
    Комментировать
  • Как объединить общие зависимости для нескольких cpp файлов?

    @ittakir
    Правильнее всего в каждый файл включать необходимый ему набор зависимостей, пользоваться forward declaration для h файлов и делать #include в cpp файле. Тогда такие файлы можно использовать в другом проекте с минимальными правками.

    Если есть набор каких-то общих типов данных для всего проекта, то я создаю файл common_types.h, в нем делаю #include <string> #include <vector>, свои типы через typedef'ы, а во все остальные файлы просто указываю #include "common_types.h".
    Ответ написан
    3 комментария
  • Как сформулировать конечную тему диплома?

    longclaps
    @longclaps
    Highload и как его избегать. Выбор стратегии уклонения.
    Ответ написан
    Комментировать
  • Видеоуроки - долго, и много воды. Стоит ли тратить на них время?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Прочитайте этот ответ и комментарии под этим.
    Ответ написан
    Комментировать
  • Почему сыпется svg?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Вы много раз используете такие штуки, как use и clip-path, указывая там id елементов. Но сами id на странице не уникальны. Вот и ломается все. Используйте уникальные id для элементов.
    Ответ написан
    4 комментария
  • В чем разница между 'фабричным методом' и 'простой фабрикой'?

    @rundle
    Привет.

    Пример с сайта неудачный. Он не показывает выразительность фабричного метода в отличие от фабрики. Я изменил пример ниже.

    Простая фабрика не является паттерном проектирования, это скорее идиома программирования. Простая фабрика предоставляет интерфейс для создания одного продукта. Отличие фабричного метода в создании набора классов, создающих экземпляры - конкретные классы расширяют класс с фабричным методом.

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

    Например, мы открыли в Москве и Питере магазин по продаже телефонов и в классе BeelineStore есть общие методы для всех телефонов (код на java схематичный). Samsung стал поддерживать 5G интернет, поэтому сделаем тариф для этих телефонов дороже.

    spoiler
    abstract class IMobile {
    	void prepare() {
    		System.out.println("Подготовим документы по продаже от ООО Билайн");
    	}
    	void setInternetTariff() {
    		System.out.println("Установим стандартный тариф Билайна для интернета");
    	}
    	void box() {
    		System.out.println("Упакуем в желтый пакетик");
    	}
    }
    
    class BeelineSamsung extends IMobile {
    	void setInternetTariff() {
    		System.out.println("Установим отдельный тариф для 5G интернета");
    	}
    }
    
    class BeelineIPhone extends IMobile {}
    
    class BeelineStore {
    	public IMobile orderPhone(String type) {
    		IMobile phone = null;
    
    		if (type.equals("samsung")) {
    			phone = new BeelineSamsung();
    		} else if (type.equals("iphone")) {
    			phone = new BeelineIPhone();
    		}
    
    		phone.prepare();
    		phone.setInternetTariff(); 
    		phone.box();
    
    		return phone;
    	}
    }
    
    // использование
    // var mobileStore = new BeelineStore();
    // mobileStore.orderPhone("samsung"); <- клиентский код

    Однако при изменении, удалении или добавлении новых видов телефонов мы бы открывали наш класс BeelineStore и расширяли новыми конкретными типами. А если мы добавим модели телефонов, то дерево условий станет сложнее. Если одни аспекты системы изменяются, а другие остаются неизменными — пора заняться инкапсуляцией.

    spoiler
    class MobileFactory {
    	public IMobile getMobile(String type) {
    		if (type.equals("samsung")) {
    			return new BeelineSamsung();
    		} else if (type.equals("iphone")) {
    			return new BeelineIPhone();
    		}
    
    		return null;
    	}
    }
    
    class BeelineStore {
    	MobileFactory factory;
    
    	public BeelineStore(MobileFactory factory) {
    		this.factory = factory;
    	}
    
    	public IMobile orderPhone(String type) {
    		IMobile phone;
    
    		phone = factory.getMobile(type);
    
    		phone.prepare(); 
    		phone.setInternetTariff();
    		phone.box();
    
    		return phone;
    	}
    }
    // использование 
    // var mobileFactory = new MobileFactory();
    // mobileStore = new BeelineStore(mobileFactory);
    // mobileStore.orderPhone("samsung"); <- замечу, клиентский код не изменился

    Окей - мы вынесли процесс создания телефонов - это и есть фабрика. И тут мы расширяемся, дела в нашей компании пошли хорошо и мы открываем филиалы на Урале. Тарифы на Урале будут дешевле, как стандартные, так и для 5G интернета. А также в Москве и Питере запускается программа по обмену старых телефонов на новые. И тут нам помогает фабричный метод.

    spoiler
    abstract class BeelineStore { // класс становится абстрактным
    	protected abstract IMobile getMobile(String type); // возвращается метод getMobile
    
    	public IMobile orderPhone(String type) {
    		IMobile phone = getMobile(type);
    
    		phone.prepare(); 
    		phone.setInternetTariff();
    		phone.box(); 
    
    		return phone;
    	}
    }
    
    class CenterBeelineSamsung extends IMobile {
    	void setInternetTariff() {
    		System.out.println("Отдельный тариф для 5G интернета в центре России");
    	}
    }
    
    class CenterBeelineIPhone extends IMobile {}
    
    class СenterBeelineStore extends BeelineStore {
    	public IMobile getMobile(String type) {
    		if (type.equals("samsung")) {
    			return new CenterBeelineSamsung();
    		} else if (type.equals("iphone")) {
    			return new CenterBeelineIPhone();
    		}
    
    		return null;
    	}
    	
    	public void tradeIn(String phone) {
    		System.out.println("Вы обменяли старый телефон на новый с доплатой");
    	}
    }
    
    class UralBeelineSamsung extends IMobile {
    	void setInternetTariff() {
    		System.out.println("Отдельный тариф для 5G интернета на Урале");
    	}
    }
    
    class UralBeelineIPhone extends IMobile {
    	void setInternetTariff() {
    		System.out.println("Отдельный тариф для стандартного интернета на Урале");
    	}
    }
    
    class UralBeelineStore extends BeelineStore {
    	public IMobile getMobile(String type) {
    		if (type.equals("samsung")) {
    			return new UralBeelineSamsung();
    		} else if (type.equals("iphone")) {
    			return new UralBeelineIPhone();
    		}
    
    		return null;
    	}
    }
    // использование
    // var centerBeelineStore = new СenterBeelineStore();
    // centerBeelineStore.orderPhone("samsung");
    // var uralBeelineStore = new UralBeelineStore();
    // uralBeelineStore.orderPhone("samsung");

    Мы смогли сохранить единые для всех магазинов стандарты оформления заказа, а также добавили региональные отличия.
    То есть фабричный метод гораздо гибче. Простая Фабрика обладает узкой специализацией, а фабричный метод ведет к созданию инфраструктуры, в которой реализация выбирается субклассами.
    Простая Фабрика инкапсулирует создание объектов, но она лишена гибкости фабричного метода в изменении создаваемых продуктов.
    Ответ написан
    Комментировать
  • Как изучать node js в 2019м?

    Начните сначала с клиентского JS и пускай learn.javascript.ru будет вашей библией на это время.

    Изучать нужно также, как и любое другое ремесло — практика и теория, при этом практика в случае с программированием должна преобладать.

    Понять, что нужно изучить для работы можно, зайдя на любой сайт вакансий и посмотреть список требований к начинающему.

    Не пытайтесь найти универсальный ответ в данном вопросе.
    Ответ написан
    Комментировать
  • Как хранятся числа в памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    struct Data {
      short id;
      double val;
    };


    я понимаю что 32 00 11 49 - это интовское значение

    в этой структуре short int, 2 байта. 0x32 0x00 -- это оно (0x32 + 256 * 0x00 = 50), little endian.
    0x11 0x49 -- это мусор. 0x02 0x56 0x00 0x00 идущие дальше -- это тоже мусор.
    0x33 0x33 0x33 0x33 0x33 0x33 0xf3 0x3f -- это double (0x3ff -- порядок, 0x3333333333333 -- мантисса, значение = 0x1.3333333333333 * 2 ^ (0x3ff - 1023) = 1.19999999999999995559), little endian, ieee754.

    Как в данном выводе понять где выравнивание происходит?

    Можно воспользоваться макросом offsetof.
    Ответ написан
    5 комментариев
  • Фотошоп в ubuntu?

    Каким боком фотошоп к фронт разработке? И каким образом авокод сравнивают с фотошопом если они выполняют разные задачи?
    Вы рисовать хотите и называете это фронт разработкой?
    Дизайнер может в Adobe XD выслать вам ссылку на макет, которая открывается в браузере, и вы получите кликабельный макет и все ассеты (картинки, стили, размеры) и воровать его не нужно, просто качай
    https://zeplin.io/ https://avocode.com/ отвязывают вас от инструментов дизайнера, они рисуют в чем удобно, а вам высылают ассеты
    В https://www.figma.com/ и рисовать можно и делиться ассетами, но лучше експортировать их в зеплин
    Ответ написан
    4 комментария