Задать вопрос
  • Как перенять объектно-ориентированное мышление?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Т.е. сложно понимаю, что "засунуть" в один объект, что в другой, что должно быть статическим методом, что приватным и тд.


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

    То есть по сути наше приложение - один объект. У него внутри вообще все. У этого объекта есть один метод - обработай запрос. Когда внешний мир его вызывает, меняются значения каких-то переменных, вызываются какие-то внутренние "приватные" для внешнего мира функции, и делается работа.

    Теперь задумаемся о декомпозиции всего этого хаоса. Мы находим какую-то задачу, которую выполняет наш код (например какую функцию вызвать для обработки каждого конкретного запроса) и выносим это в отдельный объект. Отправка email-ов - отдельный объект. Весь SQL зашиваем в отдельный объект. Соединение с базой - объект. Пользователи - объекты. Все - объекты.

    И главное, у каждого объекта есть своя область ответственности. UNIX way. Каждый объект делает что-то одно и делает это хорошо. Бывает так что ну... нужно сделать так что бы один объект делал две вещи. НЕ вопрос, мы можем его попросить сделать что-то сложное, а он будет как хороший менеджер тупо делегировать работу другим объектом. То есть он и сложную штуку сделает, и сам не будет знать как она делается.

    А все безхозные функции, которые не пренадлежат никаким объектам (например функции порождающие объекты) можно вынести в статические методы. Главное что бы статичесих переменных у нас небыло (ибо это те же глобальные переменные). И поменьше публичного ибо черт его знает что эти разработчики будут использовать. Причем "те разработчики" это вы завтра.

    Вообщем писав всё время на процедурке, сложно перейти на ооп.


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

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

    Подскажите, какой проект начать писать (гостевая, блог), или может начать изучать фреймворк.


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

    Есть хорошие упражнения на развитие понимания объектно-ориентированного проектирования. Например вот: https://habrahabr.ru/post/206802/

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

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.


    Так вы научитесь делать один конкретный проект а на втором вы уже проиграете. Так дела не делаются. Надо разобраться с причинами появления идеи ООП. Ну то есть что было до. Можно еще с функциональным программированием попробовать разобраться. В PHP оно слабо применимо, но основные идеи очень тесно переплетаются с ООП и познав немного функциональщины ваше ООП будет лучше. Да и если про ООП вы можете найти много булшита, про функциональщину врут мало.
    Ответ написан
    3 комментария
  • Возможен ли аналог :hover в html/css/js на мобильных устройствах?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    собстенно :hover так и работает на мобильных устройствах. если к примеру кнопке дать изменение bg при ховере - и на телефонах тапнуть на кнопку и не отпускать ее - как раз этот эффект :hover и сработает
    Ответ написан
    3 комментария
  • Как в JS сделать численное значение от и до?

    первое
    if (x >= 30 && x <= 120) {}

    второе
    Number.isInteger(x)

    UPD: второе не работает в IE11 и ниже
    Ответ написан
    Комментировать
  • Как обеспечить полную анонимность в интернете?

    Jump
    @Jump
    Системный администратор со стажем.
    Как обеспечить полную анонимность в интернете?
    Очень просто - не пользуйтесь интернетом.
    Ответ написан
    Комментировать
  • Смысл математического ожидания, дисперсии и среднеквадратического отклонения?

    Olej
    @Olej
    инженер, программист, преподаватель
    Везде сплошные формулы и сухие определения, не дающие понять в чем реальный смысл и как это можно применить на настоящем показательном примере

    Если вы не любите "сплошные формулы" - то, может оно вам не надо?

    Но вот на примере ... например для случайного шума, записанного последовательными отсчётами в массив (вы же "программист" себя назвали?):
    double A[ 1024 ];
    - мат.ожидание - это среднее значение по отсчётам массива, или постоянная составляющая сигнала;
    - дисперсия - это мощность сигнала;
    - СКО (средне-квадратичное-отклонение) - это средняя амплитуда сигнала;

    Вот вам и "физический смысл".
    Ответ написан
    1 комментарий
  • Kvm виртуализация. Как настроить виртуальную сеть для виртуальных машин на Ubuntu server 16.04?

    edinorog
    @edinorog
    Троллей не кормить!
    если бы мне платили за ответ за каждый такой вопрос .... я бы уже плавал на своей яхте!!!!!

    давай упростим задачу. статический адрес 1!!!! виртуальных машины 2!!!! как поделить 1 айпишник на 2 машины? ну наверное виртуальным маршрутизатором. или докупить еще один айпишник и дать каждой машине по одному. другие чудесные способы науке пока не известны!!!!
    Ответ написан
    Комментировать
  • Какой сокет лучше,LGA 1150,LGA 1151,LGA 1155?

    Jump
    @Jump
    Системный администратор со стажем.
    Какой сокет лучше,LGA 1150,LGA 1151,LGA 1155?
    Лучше всего тот сокет, в который влезает ваш процессор.
    Остальные хуже.

    Имеют лм они обратную совместимость ?
    Зависит от приложенной силы.
    Если природа силушкой не обделила, то вы можете любой процессор засунуть в любой сокет.
    Ответ написан
    6 комментариев
  • Как лучше хранить огромное число небольших файлов?

    @nirvimel
    Хранить ли их в одной папке

    Ни в коем случае!

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

    Цель - распределить файлы так, чтобы в любом каталоге находилось не более тысячи (максимум - несколько тысяч) файлов. То есть, до нескольких миллионов файлов - двух уровней иерархии достаточно.

    Почему так? - См. ответ Как лучше организовать электронную библиотеку?
    Ответ написан
    Комментировать
  • Как использовать общие переменных в многопоточных программах с++?

    Olej
    @Olej
    инженер, программист, преподаватель
    как работает многопоточность в с++

    в нескольких параллельных процессах

    Вы уж как-то определитесь кто вас интересует: потоки или процессы.

    В любом случае вам нужны блокировки для синхронизации.
    Их есть большое разнообразие ... на любой вкус ;-)
    Если вас интересуют потоки, то любого вида примитивы синхронизации вам подходят ... начиная с простейшего мютекса.
    Если вас интересуют процессы, то вам нужны примитивы синхронизации с областью видимости операционной системы, это могут быть: блокировки на файлах, pipe, именованные семафоры и т.д.

    Пытаться засинхронизироваться на простых переменных (как у вас safe_mode ... и любые изыски вокруг) - бессмысленно.
    Ответ написан
    4 комментария
  • Механика автоматического открытия/закрытия штор. Есть идеи?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    это в детстве, когда мне было лет 10-12 тоже пытался такое лепить, ахах=))
    Есть специальные карнизы с механической раздвижной системой - т.е как в жалюзи тянешь за веревочку - они открываются - ну вот вместо веревочки и приделывать ваш мотор.
    Смотрите там, а то мамка может не разделять вашу любовь к автоматизации=))
    Ответ написан
    1 комментарий
  • Owncloud 8, как устанавливать дополнения?

    @solalex Автор вопроса
    Отвечу сам себе, надо подправить config.php, а именно добавить
    'appstoreenabled' => true,
      'appstoreurl' => "http://api.apps.owncloud.com/v1",
      'appcodechecker' => true,

    Потом ставим как обычно
    Я также сделал отдельную секцию для сторонних приложений и закидываю их в папку apps2:
    'apps_paths' => array(
    	0 => array(
    		'path'=> '/var/www/owncloud/apps',
    		'url' => '/apps',
    		'writable' => true,
    	),
    	1 => array(
    		'path'=> '/var/www/owncloud/apps2',
    		'url' => '/apps2',
    		'writable' => true,
    		),
    	),
    Ответ написан
    1 комментарий
  • Как отключить слежку Google?

    FiLinX
    @FiLinX
    Знать то - что не придумали ещё..
    Во первых - браузер! пользуйте безопасный SRWare Iron - www.srware.net/ru/software_srware_iron_chrome_vs_i...
    ну и далее ознакомьтесь:

    "мы анализируем вашу историю поиска, включая поисковые запросы, посещенные сайты, нажатые ссылки и содержание вашей почты Gmail."
    Индивидуальная карта для каждого пользователя: Google Maps анализирует историю серфинга, место жительства и место работы пользователя (вычисляется автоматически по координатам Android-устройства)

    https://adssettings.google.com/u/0/authenticated?hl=ru - отключить персонализацию рекламы
    "Настройки показа рекламы сохраняются в вашем браузере. Если вы удалите файлы cookie, персонализация рекламы будет снова включена."
    https://support.google.com/ads/bin/answer/7395996?hl=ru - Установите плагин для браузера, чтобы персонализация рекламы оставалась отключенной даже после удаления файлов cookie.
    https://myaccount.google.com/activitycontrols - Отслеживание действий
    https://myactivity.google.com/more-activity - Другие действия
    https://www.google.ru/safetycenter/tools/ – Центр безопасности – Инструменты
    https://myaccount.google.com/privacycheckup/7 - проверка
    https://tools.google.com/dlpage/gaoptout - Блокировщик Google Analytics
    https://www.google.com/maps/timeline - История местоположений
    habrahabr.ru/post/132691 - скрыть wifi точку от внесения в геобазы
    https://www.google.com/settings/phone?authuser=0 - Номер телефона
    https://www.google.com/android/devicemanager - гугле андроид "антивор"
    https://myaccount.google.com/find-your-phone - найти телефон
    https://policies.google.com/privacy/key-terms?hl=r... - Журналы сервера
    https://myaccount.google.com/deleteservices - удалить отдельные сервисы Google

    https://myaccount.google.com/dashboard - личный кабинет
    https://plus.google.com/settings - настройки G+
    Ответ написан
    1 комментарий
  • Как вписать датчики для Arduino/RPi в интерьер?

    @Alexei_Bolembah
    На мой взгляд, главное - определиться с дизайном. Как только вы выполните датчики в одном стиле - станет смотреться эстетичнее.
    Неплохим вариантом может стать капролактон (polymorph) вот ссылка на производителя:


    Выберите оригинальную форму, цвет (его можно красить, гнуть, сверлить и т.д.) и вперед!
    Я использую его для создания штучных деталей в роботах (трудно найти рычаги, шестерни и всякую дребедень нужных размеров и формы в инете).
    Вот пример того что можно сделать:

    Ответ написан
    1 комментарий
  • Переключение между внешним питанием и аккумуляторами для питания Arduino?

    @Macinside
    Поставьте контроллер простой для данного типа АКБ, хотя я бы поставил лифепольку. Они не так взрывоопасны.
    Контролеры есть для всех типов АКБ, иначе проблема с пере зарядом или недозарядом.
    Ответ написан
    Комментировать
  • Выбор свежего оборудования для led освещения?

    @gabirx
    А не мало 100 Ватт будет солнечной панели ?
    Контроллер заряда один на весь дом, лучше MPPT .
    Инвертор 12В в 220В аналогично можно один на дом, но плясать лучше от нагрузки.
    Если планируется холодильник и т.п. , то брать чистый синус и с запасом по мощности.
    Еще зависит от того, полная автономность предполагается или есть доступ к электросети.
    Рекомендую почитать тут:
    www.forumhouse.ru/forums/162
    Родителям на дачу поставил солнечные батареи 2 по 100 ватт моно
    www.solar-tronics.de/solarmodule/solarmodule-5-wat...
    И две панели своего изготовления.
    Вся сборка солнечных батарей на 24 вольта, через контроллер подключена к двум последовательным аккумуляторам на 140Ач. Еще там же в германии брал инвертор на 24В,
    www.solar-tronics.de/spannungswandler-24v/wandler-...
    но решил попробовать сварку от него и благополучно спалил при попытке варить 2мм электродами. В сентябре отослал почтой России на гарантийный ремонт, но в Германию он до сих по не поступил...
    В декабре -январе заряд почти не идет, т.к. солнечные батареи присыпаны снегом(соответственно надо чистить) и короткий световой день.
    Светодиодные лампы брал на 12 Вольт на aliexpress, по скидкам цена получается гораздо гуманнее чем в магазинах(раза в 4).
    Если планируется значительные мощьности - стоит смотреть на 24В или 48В, т.к. там меньше токи при тех же мощностях и соответственно потери тоже меньше.
    Ответ написан
    1 комментарий
  • Почему вместо открытия Google скачивается application/octet-stream?

    ZiroKyl
    @ZiroKyl
    Это KIS "чудит" после обновления на версию (d).
    Есть 2 способа решить проблему:
    1. зайти в Настройки -> Дополнительно -> Сеть, включите "Проверять защищенные соединения" и переключите на "Проверять защищенные соединения, если включен Родительский контроль", далее зайдите в "Дополнительные параметры" и включите "Использовать HTTP вместо SPDY", и нажмите на кнопку "Установить сертификат".
    2. зайти в Настройки -> Дополнительно -> Угрозы и исключения -> Управлять доверенными программами -> (Выберите браузер), включите "Не проверять зашифрованный сетевой трафик" -> "Изменить".
    Ответ написан
    2 комментария
  • Где сейчас в IT применяется теория вероятности?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    0. Data mining
    1. Компьютерное зрение
    2. Нейросети и системы принятия решений
    3. Биржевые торговые роботы
    4. Крипто-анализ и алгоритмы шифрования данных
    5. Системы моделирования физ. и хим. процессов
    6. Системы анализа вероятностей и предсказание процессов.
    7. Распределенные вычислительные системы и анализ их производительности для конкретных задач.
    Ответ написан
    3 комментария
  • «Хитрый дом» — выбор оборудования

    Redf
    @Redf
    Я горожу подобный Хитрый Дом на Малине.
    Начал с Хитрой Двери:
    - мониторит, закрыта ли дверь, закрыт ли замок (микрик, который нажимает язычок замка),
    - мониторит температуру-влажность в прихожей,
    - датчик движения (подходят всякие ардуиновские).,
    - датчик освещённости на предмет не выключенных осв. приборов (ардуиновский).
    - мониторит соседний санузел на предмет залития.
    Всё это дело выводится на поднятый на Малине же ВЕБ-сервер.
    + отправка е-маил в случае проблем (затопление, долго не закрытые двери, etc),
    С GSM заморачиваться не стал - посчитал для себя нецелесообразным (хотя технически не особо сложно).
    В принципе это самое нужное, что мне было нужно.
    Дальше всё хорошо масштабируется по схеме "одна точка мониторинга - одна Малина".
    Все данные от каждой Малины заворачиваются на один веб-сервер.
    У меня - по вайфаю.
    Пока Малин только две - одна вышеупомянутая Хитрая Дверь, вторая в общей комнате.
    На ней кроме датчиков висит пара реюшек, умеющих коммутировать 220В ( в моём случае - одно из освещений комнаты и чайник на кухне) и пара светодиодов, которые по IR командуют кондиционером, телевизором и музыками.
    Можно в принципе нагородить ещё разных бантиков и фантиков.
    Так или иначе всё конфигурируется исходя из желаний и фантазий.
    Ответ написан
    2 комментария