• Сервис для изучения английского по субтитрам фильмов (была статья на Хабре несколько лет назад). Как он назывался?

    @andrei375
    Сервис назывался hamatata
    Мне сейчас нравится puzzle-english-сериалы. В нем сабы ещё и с комментариями.
    Ответ написан
    Комментировать
  • Как понять/освоить паттерны проектирования?

    fedorez
    @fedorez
    Хатуль мадан
    Книжку от Head First почитайте для начала. Если не идёт более академичное чтиво.
    Ответ написан
    Комментировать
  • Какое средство резервного копирования для Ubuntu лучше всего?

    kendomag
    @kendomag
    Researcher, Pythonist, Kendoist
    Я юзаю LuckyBackUp:
    luckybackup.sourceforge.net
    Легко настроить через GUI, поддерживает как бэкап, так и синхронизацию, в основе - rsync.
    Используется мной уже лет 5, полёт нормальный.

    02c71b30f66343e89c6fe50ccb839837.png
    Ответ написан
    Комментировать
  • Какую связку выбрать для сайта домен-хостинг?

    Sanes
    @Sanes
    beget.com и timeweb.com нормальные организации. Ничего плохого в регистрации домена у них нет.
    Ответ написан
    Комментировать
  • Какое средство резервного копирования для Ubuntu лучше всего?

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

    Она простая, запускается из командной строки, поддерживает шифрование (GPG), бэкапы в определенную папку, на S3, ftp, и т.д. и т.п. Инкрементальное копирование с полным через определенные интервалы, разбиение копий на тома заданного размера.

    Настоящий комбайн, при том достаточно простой. Например, вот часть моего скрипта для бэкапа ноута:
    duplicity \
        --full-if-older-than 3M \
        --volsize 150 \
        --exclude='**/*.pyc' \
        --exclude='**/firefox/*/cache2' \
        --exclude='**/lib/python2.7' \
        --exclude='**/.thumbnails' \
        --exclude='**/.virtualenvs' \
        --exclude='**/.virtualenv' \
        --exclude='**/thumbnails' \
        --exclude='**/.xsession-errors*' \
        --exclude='**/.PyCharm*' \
        --exclude=/home/jmv/.Private \
        --exclude=/home/jmv/.ecryptfs \
        --exclude=/home/jmv/.cache \
        --exclude=/home/jmv/.macromedia \
        --exclude=/home/jmv/.adobe \
        --exclude=/home/jmv/.nvm \
        --exclude=/home/jmv/.local/share/zeitgeist \
        --include=/etc \
        --include=/home/jmv \
        --exclude='**' \
        / $DEST
    
    duplicity remove-older-than 12M --force $DEST
    Ответ написан
    11 комментариев
  • Софт для построения освещения/розеток в квартире/даче?

    @kn0ckn0ck
    Продюсер
    Ответ написан
    Комментировать
  • Как и где можно научиться делать такие сайты?

    Сайт, который грузится 1.5 минуты и лагает при прокрутке на core i5, ммм, ну даже не знаю. Может быть лучше уж видео ?)
    Ответ написан
    2 комментария
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    @Finsh
    Взять Symfony.
    Только вот серьёзно, зачем делать из отвертки дрель, когда она уже есть. Вы думаете, что это будет быстрее? Вы думаете что это будет дешевле? Laravel прекрасен для своих, средних, задач, для "enterprise" берите Symfony.
    Ответ написан
    Комментировать
  • Кто напомнит ресурс, который помогает строить предложения на английском?

    @raspier
    Java Developer
    Когда у меня возникает такое, я иду на Reverso Context
    Пишешь что хочешь сказать на русском, он ищет совпадения (я так понял, что в субтитрах и книгах). Я так формирую предложения для переписки.
    Ответ написан
    6 комментариев
  • Как Ccleaner мог убить винду?

    edinorog
    @edinorog Куратор тега Windows
    Троллей не кормить!
    С выходом Windows 10 корпорация Microsoft рекомендует не использовать программы для очистки реестра и файлов операционной системы для увеличения места на диске и ускорения производительности ОС. На Reddit до сих пор ведется неоднозначная дискуссия множества пользователей о пользе и вреде использования подобных утилит.

    После обновления Windows 7 и Windows 8.1 до новейшей Windows 10, операционная система удаляла CCleaner сама, но после обновления приложения, которое является одним из самых популярных в своем роде, она теперь позиционируется, как полностью совместимая с последней платформой.

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

    www.thevista.ru/page20236-microsoft_ne_rekomenduet...

    вопросы есть?) вопросов нет!

    вообще проблема больше из разряда "я выстрелил себе в ногу. что мне делать?????"
    1. выстрелить еще раз
    2. выстрелить на этот раз промеж глаз
    3. позвонить 03
    4. отрубить ногу .... нахрена она мне простреленная
    5. стрелял и стрелять буду!
    Ответ написан
    7 комментариев
  • Как можно сделать такой блок?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Обычный блок с тенью.
    Два задних элемента через псевдоэлементы, с z-index ниже, чем у основного.
    https://jsfiddle.net/webirus/j85931f5/2/
    Ответ написан
    3 комментария
  • Какой необходимый уровень знаний для junior React.js Разработчика?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    UPDATE: реальные тестовые задания и разборы здесь, ответы на все вопросы из поста в моем блоге об обучении react.

    не включая основы js

    Извините, но стандартная задача, про "напишите функуцию add, которая при вызове add(1)(2) вернет 3" - многих положила на лопатки =) Поэтому будьте готовы..

    React
    0) Какую проблему решает react ?
    1) Мгновенно ли срабатывает setState? Если нет, то как выполнить код, который 100% выполнится после того, как новый state будет установлен?
    2) Зачем многие постоянно пишут в constructor: this.FUNCTION_NAME = this.FUNCTION_NAME.bind(this) и отсюда вопрос вытекает чему равно this в разных местах вашего компонента...
    3) в каких методах жизненого цикла стоит выполнять xhr запросы? В каких стоит "обновлять state на основе props"?
    4) Что будет если вызвать this.setState в render методе компонента?
    5) зачем нужен componenWIllUnmount, приведите пример..
    6) Контролируемые, не контролируемые компоненты
    7) Как организовать роутинг в реакт приложении? (ответ: взять react-router - подходит, но было бы круто, если бы вы рассказали, как он примерно работает)*
    8) Зачем нужны propTypes? Что происходит с ними в production сборке?
    9) Как можно удобно "отлаживать" чужой код приложения, написанного на react (намек в сторону React devtools)
    ...

    Redux
    0) Какую проблему решает redux?
    1) Зачем многие создают типы действий NAME_REQUEST / NAME_SUCCESS ? А заодно, что такое "действие", а что такое "создатель действия"...
    2) Что такое редьюсер? Можете написать простой редьюсер без react/redux?*
    3) Для чего нужен redux-thunk? Как он работает? Напишите (можно псевдокод) асинхронный создатель действия (либо, если надоело говорить "терминами" - асинхронный aciton)
    4) Как компоненты приложения получают "пропсы" из "стора"?*
    5) Можно ли (и считается ли это нормальным) использовать state, если используется Redux?
    6) Почему в reducer'ax мы возвращаем новые объекты? Приведите пример, когда вы возвращаете новый объект, а когда тот же самый.
    6.5) А так же, "как в js вообще это работает?". Например:
    let obj1 { name: 'Test', age: 100 }
    let obj2 = obj1
    obj2.name = 'Test_new'

    Что будет в obj1, почему? В каких случаях объекты могут быть равны?
    7) Что возвращает функция connect (из react-redux)?
    ...

    Общее:
    0) package.json
    1) Webpack, gulp, etc...
    2) node.js
    3) promise

    Что-нибудь практическое:
    1) Как бы вы валидировали форму, если ошибки валидации приходят после submit'a ее на сервер..
    2) Почему не работает следующий код, сделайте чтобы работало
    ...
    На истину не претендую, но такие вопросы имели место быть на собеседованиях. В беседе можно многое разузнать дополнительными вопросами и так далее. Так же, если часть вопросов вам неизвестна - не беда, многие и на половину ответить не могут.

    p.s. возможно дополню...
    p.p.s. звездочкой отметил, на мой взгляд не самые необходимые для junior-собеседования вопросы.
    Ответ написан
    31 комментарий
  • Какой конструктор лендинга?

    Hando
    @Hando
    Верстак
    Сканнеров не знаю, но если нужен конструктор лендингов, проще купить на themeforest какой-нибудь конструктор лендингов, которых там навалом, за 15 баксов и не париться, чем платить абонентку. По запросу Page Builder вылезет целая куча. Я использовал вот такой: https://themeforest.net/item/select-landing-page-s... до сих пор у меня лежит на каком то сайте. Но это уже довольно древний билдер, ему года два, сейчас есть новее и современнее.

    А все эти наши отечественные конструкторы имеют ряд критичных минусов:
    1. Абонентка от 300 до 1500 рублей.
    2. Зачастую всего 1 домен на 1 учетную запись.
    3. Проблемы с внедрением стороннего кода. Например своих плагинов на квери или корзинки на аяксе.
    4. Дополнительное вымогание денег за всякие копирайты и прочую ерунду.
    5. Нет возможности самому исправить баги(а они есть везде), в результате приходится сидеть и ждать когда снизойдут сами разработчики, чтобы пофиксить то, что вам надо.
    Ответ написан
    2 комментария
  • Какой конструктор лендинга?

    @trenrnd
    Попробуйте https://builtwith.com/
    Ответ написан
    Комментировать
  • Тема Диплома (WebDev)?

    @deworkers
    Middle front-end, UI designer
    Есть одна идея до которой сам не могу добраться, хз пойдет для диплома, там вроде как нужно какие-то инновации.
    Вобщем, некий органайзер для работника фрилансера (фотограф, электрик ... да кто угодно)
    Функционал:
    - задачи - сделать определенное действие до определенного срока
    - событие - сделать что-либо в определенное время (встреча, мероприятие, приезд на объект)
    - карточка клиента - имя, контакты, связанные задачи и события
    - календарь (можно сказать основной экран) - выводятся события и мероприятия из БД. При клике по дате всплывающее окно со списком событий/задач, либо вывод конкретной задачи если она одна в этот день
    Усложнять функционал по мере необходимости (предупреждения о дедлайне, рассылка клиентам уведомлений о завершении работы), можно добавлять модные фичи - уведомления через HTML 5 Notifications API например, PWA и т.д.
    Реализовать можно как SPA в идеале с упором на мобилки (адаптивный дизайн)
    Соответсвенно нужно будет организовать базу данных и ее связку с фронтендом
    Чтобы не париться с дизайном возьми какой нибудь фреймворк.
    Ответ написан
    1 комментарий
  • Расскажите пожалуйста, как устроен кэшбек?

    @Fixid
    Не всегда все так плохо, как описал Alexander Pushkarev. Есть нормальные сервисы и магазины
    По идее это работает так:
    Магазин не тратится на рекламу, за счет этого готов продать товар на 5% дешевле
    Кэшбек сервис тратится на рекламу вместо магазина и если его работа привлекла вас как покупателя и вы купили товар в магазине, то магазин дает сервису эти 5% (т.к. теоретические он бы потратил больше чем 5% на рекламу), а сервис дает вам 3% за то что вы такой хороший и купили "через него".

    Как итог, вы получаете скидку в 3%, сервис получает 2% от стоимости вашей покупки, а магазин теоретически экономит на продвижении своего магазина

    технически используется API магазина, перед покупкой кэшбек сервис проставляем вам уникальную куку, магазин проверяет эту куку при прокупке
    Ответ написан
    2 комментария
  • Есть на примете WP темы для IT блога?

    VasyaPertrov
    @VasyaPertrov
    Изготовление и безопастность сайтов. WP и др.
    Что понравится, то и используй. Главное, чтобы была из оф репо и не древняя. См на производителя - чем больше у него тем и чем он дольше в репо - тем лучше.

    Для изменений есть дочерние темы.
    Ответ написан
    4 комментария