Задать вопрос
  • Почему перестала запускаться Убунта?

    xtala
    @xtala
    Постигает Дзен
    Что делать?

    Молиться, что было включено журналирование и есть возможность восстановить файловую систему. Скорее всего она слетела от жесткого ребута. Подробности тут linuxnow.ru/view.php?id=90 . В будущем при жестком зависании системы переходите в консоль с помощью ctrl+alt+F9 логиньтесь и перезапускайте систему через sudo reboot .
    Ответ написан
    Комментировать
  • Где в Symfony 3 объявлять глобальные функции(heplers)?

    sggr
    @sggr
    PHP, Ruby, GO
    Пишу полноценный ответ, как это должно быть в Symfony. Не пытайтесь переносить практики других фрейморков типо Yii и Laravel на Symfony, это разные продукты для разных целей.
    В идеологии Symfony нет понятия хелпер как в Yii, ROR, Laravel. Вам необходимо объединить часто используемые функции в Service(называть это можно как угодно) по характеру функционала, поместить это в DI контейнер и инжектить в те классы в котором нужен этот сгруппированный функционал.
    И задумайтесь, если у вас есть такие классы хелперы, которые используются направо и налево - значит вы промахнулись с архитектурным решением. Один класс одна обязанность. Понимание SOLID и практика поможет вам выйти на другой уровень объектного проектирования и разработки в целом.
    Ответ написан
    7 комментариев
  • Как использовать интерфейс в DI Symfony 3?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Можно. Вы что-то делаете не так. Код классов и интерфейса не приведёны, ошибка не приведена, конфиг контейнера не приведён - о чём разговор вообще?
    Ответ написан
    Комментировать
  • Что почитать помощнику дизайнера?

    pozZzitiv
    @pozZzitiv Куратор тега Дизайн
    Дизайнер и перфекционист
    Посоветовал бы сначала почитать учебник русского языка т.к. ошибок слишком много.
    Ответ написан
    3 комментария
  • Насколько безопасно использование AJAX-запросов?

    @LiguidCool
    Эм. Безопасен ровно на столько же, насколько и не AJAX запрос.
    Ответ написан
    Комментировать
  • Почему фрилансеры готовы общаться только в чате?

    ry13
    @ry13
    #AdTech
    Я как заказчик тоже раньше был сторонником скайпов и телефонов, но со временем перешел на письмо практически по всем указанным выше доводам. Основной довод - "без ТЗ будет ХЗ". Напиши хорошо - сделают хорошо.
    Кроме того, написанное в чате позволяет идентифицировать заказчика. На сайте в ЛС сразу понятно кто написал, а в контактах скайпа он будет указан как "Иван Захренищенко" и поди знай заказчик он какого проекта, учитывая что ты как фрилансер их 10 одновременно ведешь...
    Ответ написан
    1 комментарий
  • Модульный фреймворк на PHP, как защитить?

    Denormalization
    @Denormalization
    Данный пост напомнил мне местного кулибина, который тоже делал свой супер фреймворк со всякими безумными идеями а-ля "запретить модулям использовать PDO" и "Я использую eval, я дурачек".

    Решение может и есть, но есть ли в нем смысл? Зачем запрещать что-то модулям? Тем кому надо, все равно обойдут запреты, а логику подобные запреты усложнят в разы.

    Лучше придумайте нормальный интерфейс для общения с ядром, чтобы это было удобно, вместо того чтобы заниматься ерундой.
    Ответ написан
    2 комментария
  • Как правильно перенести проект с php на django (комплексный вопрос)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    По поводу переноса контента.
    Тут достаточно просто и не нужно будет ручками переносить. Если есть возможность как-то добраться к самим стаьям и из выкачать хоть в каком-то формате все скопом, то всегда можно за день-два написать загружалку, благо в питоне это не так сложно, тем более у вас будет мапинг в вашим моделям.
    Парсите ваш файл (или лезете напрямую в базу данных), создаете объект модели и заполняете его и сохраняете, и так в цикле!
    Что касается редиректов, то наверняка и их тоже можно автоматизировать, создав для этого отдельную вьюшку.

    Ну а теперь по ворпросам
    1) Какой мощности нужен vps, чтобы держать проект на django с посещаемостью 3500 людей в сутки (40 хитов пик).

    В принципе подойдет любой. Нагрузка здесь совсем небольшая.
    2) Какая виртуализация лучше подходит для django: OpenVZ или XEN, и есть ли вообще значение?

    Тоже разницы особой нет. У меня вообще все на KVM.
    3) Я немного боюсь за то, что не смогу сделать нормально бекап через консоль. Стоит ли покупать ISPmanager lite для этого дела или это просто?

    Ну, этого опасаться не нужно, сможете. Вам ведь нужно будет бекапить базу данных, это делается всего одной командой, и бекапить загруженные файлы, для этого тоже одна команду всего нужна. А проект у вас и так весь есть.
    Ну и большинство хостеров предлагают бекапы на уровне всей виртуалки, пользуйте этот вариант.
    4) Я весь проект переносил через ftp-клиент обычным копированием файлом. Есть ли более лучший способ?

    Системы контроля версий mercurial/git + ssh/scp. А ftp уже давно не нужен! https://habrahabr.ru/post/113636/
    5) Адекватный ли вариант не занимать ресурсы сервера, и взять бизнес почту от mail.ru/yandex?

    Конечно адекватный, гораздо меньше проблем и с почтой и со спамом. При этом очень желательно развернуть свой локальный exim/postfix, который будет отправлять почту, прикидываясь доменом yandex. Для этого нужно немного все настроить DKMS + SPF. Ключи можно взять у самого яндекса на ваш почтовый домен. Это важно, если вы хотите много почты посылать.
    6) Есть ли какое-то различие в настройке http/https с django?

    Нет, тем более, что скорее всего это будет делать nginx или apache.
    Ответ написан
    Комментировать
  • Как подготовиться к закону Яровой?

    @nirvimel
    1. Купите недорогой VPS (от $15/год, можно даже дешевле) и поднимите на нем личный VPN. В Сети есть куча подробных руководств как это делается. Только не надо говорить, что у вас нет на это денег, интернетом вы же не бесплатно пользуетесь. Просто примите это как небольшую дополнительную плату за интернет за ваш спокойный сон.
    2. Работая через VPN (обязательно), заведите себе новый почтовый ящик на зарубежном сервере у компании, у которой нет никакого бизнеса и любых коммерческих интересов в РФ. Пусть это будет не мажорный гигант индустрии, а скромная компания, малоизвестная в РФ. Главное - это наличие SSL в веб-интерфейсе и в IMAP, в остальном почта есть почта, она просто работает, и этого достаточно.
    3. Работая через VPN, заведите себе новый аккаунт в vk facebook и/или google (если вы неспособны полностью отказаться от использования социалок). При регистрации указывайте место проживания подальше от РФ. Учитывайте, что все гиганты индустрии, имеющие большой бизнес в РФ, полностью сотрудничает с ГБ, но аккаунты нерезидентов, зарегистрированные и посещаемые с зарубежных IP, они не станут сливать по умолчанию (но по первому запросу сольют мгновенно). Так что забудьте про любые приваты в социалках, ведите все общение так, как будто все это читает весь ваш квартал и все те, кому бы вам меньше всего хотелось это показывать. Для приватного общения пользуйтесь только безопасной почтой (пункт 2) и защищенными чатами, на telegram jabber на зарубежных серверах. Все это касается только тех, кто не может окончательно завязать с пагубной зависимостью от соц.сетей. Очевидно, наиболее безопасным (и полезным для здоровья) вариантом является полный отказ от социалок.
    4. Не вбрасывайте в старые ящики и соц.аккаунты адреса и ссылки на новые чистые, не указывайте новые адреса в любых исходящих и старайтесь, чтобы они не попали во входящие. Помните, что в любой социалке и любом веб-интерфейсе почты (сотрудничающей) кнопка "удалить" скрывает удаляемое только от вас самих и не более того.
    5. (Самый неприятный пункт) Забудьте про vk, mail.ru и российские gmail и facebook. - КАК? - Так! Я понимаю, что это не легко, что они давно стали частью вашей жизни. Но это придется сделать! Поговорите сами с собой, спросите себя что для вас важнее: ваша личная безопасность, спокойствие и крепкий сон или старые привычки, которыми вы опутаны, и которые не хотят отпускать вас? Учтите, что продолжая пользоваться местными социалками (и сотрудничающими иностранными), вы продолжаете каждый день генерировать на себя тонны компромата, который может обернуться против вас в самый неожиданный момент самым неприятным образом. Проявляя активность в своих старых аккаунтах, вы не даете им "протухнуть" и не даете даже формального повода добрым компаниям снести их через пол года, после истечения отведенного законом срока хранения (как известно, vk не ограничивается минимальным сроком хранения, а хранит все метаданные и текст практически вечно за исключением видео/аудио).
    Ответ написан
    26 комментариев
  • Как отследить нужную комбинацию в массиве?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    давайте думать. У нас есть массив с числами. У нас есть еще один массив с числами. Нам нужно проверить находится ли в первом массиве все элементы из второго. То есть что нам нужно, это сделать пересечени массивов (array_intersect) которое выделит "совпадения", убрать возможность повторений (array_unique) и посчитать количество. Если оно равно 5-ти - значит все хорошо.
    Ответ написан
    1 комментарий
  • Как работает рассылка Lamoda?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    В рассылках от их партнёров (или просто от того же поставщика рассылок) может быть трекинг факта открытия скрытой картинкой, подгружаемой с удалённого сервера при открытии письма.

    Возможно, что поставщик рассылок имеет договорённости с Lamoda инициировать отправку письма ровно в момент открытия трекинговой картинки этим получателем.
    Ответ написан
    12 комментариев
  • Как можно узнать свой уровень в конкретном ЯП?

    @mik222
    Что то полезное сделать можете?
    А так чтобы в этом можно было потом разобраться через пол года?
    А чтобы была возможность расширяемости?
    И минимальный набор багов?
    А если это что-то новое(алгоритм хитрый из academic paper)?
    Разобраться за вменяемое время в незнакомой области сможете?
    ===================
    Если на все ответы ответ да, то вы знаете достаточно для коммерческой разработки.
    Confidence: 86%
    Ответ написан
    5 комментариев
  • Как сменить версию php на xampp в ubuntu?

    @stunoff
    удалить xampp и поставить всё что надо самому руками
    Ответ написан
    7 комментариев
  • Где найти готовые шаблоны баз данных?

    kimono
    @kimono
    Web developer
    От проекта к проекту количество таблиц отличается, количество полей отличается, типы полей отличаются, длина полей отличается, названия полей отличаются, значения полей отличаются. Может и нет никаких шаблонов?
    Ответ написан
    Комментировать
  • Может ли разработчик украсть доступ?

    Denormalization
    @Denormalization
    Timitu: вы так недоверяете человеку который делает вам сайт? Зачем же вы с ним работаете?
    У меня до сих пор туча доступов к разным клиентским серверам, биллингам и т.д. Лежат себе спокойно, и когда нужно, я всегда могу быстро залезть на сервер и решить проблему.
    Прекратите параноить, никому не нужны ваши впски за 5$ на DO. У любого вменяемого фрилансера сотни доступов к самым различным сервисам клиентов.

    PS
    Как показывает практика, в таком русле обычно мыслят проблемные клиенты, которые не хотят платить или *бут мозг до последнего.
    Ответ написан
    Комментировать
  • Можно ли сделать такую фишку без JS?

    svistiboshka
    @svistiboshka
    живые веб интерфейсы
    вообще легко background-attachment: fixed
    https://jsfiddle.net/s8o5hun8/1/
    Ответ написан
    9 комментариев
  • Как не нарушать SOLID?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы путаете инверсию контроля и инверсию зависимости. Давайте по порядку кратенько.

    Зачем нам нужны контроллеры или различные представления данных

    Зачем нам в принципе контроллер? Что он делает? Для упрощения не будет воспринимать контроллер как "один объект" и вместо этого представим себе его как целый слой. Так же заменим слово "модель" словом "приложение".

    Задача контроллера - принять и обработать запрос и выдать ответ. По сути в контексте WEB наш HTTP запрос и ответ это представление, которое хочет получить клиент (браузер, мобильное приложение, SPA, что угодно). HTTP - это интерфейс пользователя (UI) для нашего web-приложения.

    Например что бы независеть от реализации клиента и что бы было удобно мы передаем даты в формате iso 8601 (пример: 2016-07-14T19:40:12Z). Это удобно что бы быть независимым от реализации клиента или сервера. Но это не удобно для нашего приложения. В приложении скорее всего нам удобнее всего работать с объектом типа DateTime. То есть приложение использует абсолютно другое представление.

    Мы могли бы прямо в приложении конвертить DateTime в iso 8601 но тогда мы делаем наше приложение привязанным к одному конкретному представлению, которое хочет получить клиент. К примеру по каким-нибудь причинам известным только темным богам, вам вдруг понадобится быстро прикрутить интеграцию с другим сервисом и те же данные гонять уже в RFC2822. И стало быть уже приложению нужно париться о еще одном представлении.

    Мы могли бы сделать какие-то адаптеры у приложения, и дергать их в зависимости от потребностей, но тогда опять же наше приложение все еще знает о представлении, которое ему собственно не нужно. То есть у нас есть зависимость приложения от его UI что... похоже на "не лучшую идею". И тут на помощь приходит Inversion of Control.

    Что такое Inversion of Control

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

    То есть если еще упростить - фреймворк должен дергать ваш код, а не код дергать код фреймворка. Тем самым мы снижаем связанность одного от другого.

    Роутер и контроллеры как реализация UI

    Что бы отвязать приложение от логики формирования представления, вынесем это все в отдельный "слой" и назовем этот слой - контроллеры. Точнее это будет как цепочка адаптеров. Один адаптер (фронт-контроллер по сути) получает Request и делает какие-нибудь вещи с ним. Например проверяет можем ли мы вообще делать подобный запрос. Другой адаптер вызывает роутер и выясняет какой дальше адаптер вызвать. Если следующий адаптер не вызван - надо вернуть 404-ую ошибку. Если же все пошло хорошо - мы вызываем еще один адаптер, который уже будет конвертировать HTTP запрос в какое-то действие приложения (вызов метода приложения по сути).

    Так а инверсия зависимости это что?

    Инверсия зависимости - очень похожа на инверсию контроля но действует чуть по другому. Проще всего будет вглянуть на картинку:

    Dependency_inversion.png

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

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

    Нужно ли соблюдать принцип инверсии зависимости в случае контроллеров?

    Нет. Контроллеру нужна конкретная реализация какой-то части нашего приложения (ибо приложение главнее UI-ки), иначе в них нет особо смысла. И наше приложение вообще не должно париться о том что есть какие-то там контроллеры.

    будет ли правильным передавать зависимости в роутинге

    Это уже вопрос реализации IoC. Конкретно вы хотите получить что-то вроде Dependency Injection. Вы можете забрать зависимости из аргументов метода экшена. или аргументов конструктора контроллера.... или просто использовать контейнер зависимостей внутри контроллера.... это совершенно не важно. Контроллеры это то место где высокая связанность на компоненты фреймворка более чем допустимы.

    С другой стороны у вас теперь роутинг совмещает обязанность маршрутизации и разруливания зависимостей. Сами понимаете что это как-то нарушает прицип единой ответственности. Этим может заниматься Controller Resolver какой-нибудь.
    Ответ написан
    2 комментария
  • Синхронизация Denwer и удаленного сервера при помощи Dreamweaver?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Выкинуть в топку первое и второе и выучить наконец git и стандартный workflow разработки ПО.

    А то создается впечатление, что вы к нам из 90х телепортировались. С денвером. ага.
    Ответ написан
    6 комментариев