• Паттерны проектирования?

    Смысл в том, что общаются 2 разработчика (один новый в команду пришёл) и он такой спрашивает: а как одна часть системы узнаёт о новых пользователях? Другой говорит: мы там Observer сделали и разработчик не видя ещё код уже приблизительно понимает как всё работает! Потому что он знает как работает паттерн Observer.
    Другое дело что сам паттерн бывает спорный и непонятно выгоду получили от него или нет, но это уже другой вопрос...
    Ответ написан
    Комментировать
  • Реально ли попасть программисту в консалтинг?

    longclaps
    @longclaps
    Дружище, ты смотрел на свой профиль?
    40 вопросов и 1 ответ - ну какой нафик бэкграунд консалтинг.
    Учиться, учиться и учиться.
    Ответ написан
    1 комментарий
  • Почему не работает фильтр Vue.js?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    в калбэк фильтра не передается первый аргумент. Что я делаю не так? Разве он не должен подставляться туда автоматически?

    Должен. Сделал демку на codepen, там все работает (тут есть логическая ошибка - value.replace не меняет значение value).

    Насколько я понял, вы хотите сделать жирный текст на странице. Но для того, чтобы полученная строка интерпретировалась как html, нужно использовать v-html, а внутри него фильтры не работают (они работают только в {{ ... }} и v-bind). Так что стоит склониться к использованию computed-свойства вместо фильтра.
    Ответ написан
    Комментировать
  • Принцип взаимоотношений front & backend?

    sim3x
    @sim3x
    Чаще всего так
    5 тел пилят бек, 5 фронт
    Просирают сроки напроч

    Приходит один синьйор и за два дня переписывает все с 0

    Для поисковиков нужна статичная хтмлка - ее кто-то должен рендерить
    Реакт и ко такое умеют, ангуляр также.
    Тк все там нода, то таким занимаются фронтендщики.
    Бекенду остается делать апи для всего етого хозяйства

    Если изначально рулили бекендеры, то реакты и ангуляры будут занимать нишу jQ

    В каждом (длинном) проекте все происходит по-своему

    каждая несчастливая семья несчастлива по-своему
    Ответ написан
    5 комментариев
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    @yaror
    10 лет в мобильном телекоме
    Ребята, а давайте зайдём с другой стороны!

    Автор вопроса интересуется, как бы втихаря подсосать интернета у работодателя - у него же не убудет, правда?

    Со всей ответственностью заявляю: не надо так делать.
    И дело не в том, что у конторы интернета убудет.
    Да не убудет, конечно!

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

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

    Мои рекомендации автору вопроса:
    - купить 3G/LTE-свисток для торрентов
    - купить планшет/смартфон для соцсетей, и на работе (все ж свои, всё понимаем ) ) держать его в ящике стола
    - на рабочем месте дождаться выдачи _рабочего_ компьютера, и с него заниматься только работой
    Ответ написан
    33 комментария
  • Торговаться ли, если "рыночная" з/п программиста существенно ниже позиций других видов программистов?

    gobananas
    @gobananas
    finishhim.ru
    Можно ли попытаться выторговать или уговорить у работодателя получить зарплату минимум Джависта

    Попытаться можно но:
    1) С улицы человеку сразу не дадут высокую З/П думаю надо всё же устраиваться на 100, поработать и потом уже просить 150-170 условно
    2) Рынок он и есть рынок. Ок вы хотите получать выше рынка - прокачайте особые скилы. Нет таких скилов на этом рынке, или мало вакансий (мало конкуренции за разработчиков) просто уходите на другой рынок
    Почему разработчикам платят много? Потому что это зачастую ядро бизнеса, элемент без которого он невозможен. Ваша профессия является ядром бизнеса? Её можно отдать на аутсорс?
    В целом по ситуации надо смотреть, но я думаю ваша мысль верная:
    просто не стоит


    У нас тоже люди приходили на простые вакансии и говорили что хотят в 2 раза больше. Спрашиваю: почему ты должен столько получать? Какие у тебя навыки, достоинства для этого? Молчат. "Просто хочу столько". Желание это прекрасно но оно должно быть чем-то подкреплено.
    Ответ написан
    1 комментарий
  • Где хакеры выкладывают украденные фото знаменитостей?

    @nirvimel
    Изначально это мог быть совершенно любой файлообменник. Разумеется, как только ссылка разлетелась по сети, оригинал был сразу же зачищен. Но к этому времени скачавших уже сотни, среди них находятся те, кто выкладывают архив для дальнейшего распространения на много разных обменников, эти ссылки могут прожить уже дольше: несколько часов или дней. За это время их скачивают почти все, кто реально заинтересован в этой теме. Остальные, увидев новость, тыкнутся в гугл, сходу найдут не так много (все что можно легко найти через ПС быстро подчищается), обломаются и отвалят (нужно быть очень сильно мотивированным к данной теме, чтобы продолжать упорные поиски часами, таких людей мало).
    В конце концов этот архив окончательно вымываются из веба и остается только в P2P: Например в KAD (eMule/aMule) или еще глубже в I2P (iMule), оттуда его уже не выжечь, все что могут сделать представители пострадавшей стороны - это утопить реальный архив в куче подобных ему фейков (часто с троянами внутри).
    Ответ написан
    2 комментария
  • PHP: автозагрузка классов. Объясните на пальцах на простом примере?

    gobananas
    @gobananas
    finishhim.ru
    Оба автозагрузчика грузят только те классы, которые присутствуют (объявлены new) в этом php-файле:

    // Определяем место где лежат файлы классов, которые будем загружать
    define('DIR',  __DIR__);
    define('APP',  DIR.'/app');
    
    // Устаревший вариант
    function __autoload($class) {
        include APP. '/'. $class . '.php';
    }
     
    // Актуальный вариант с безымянной функцией
    spl_autoload_register(function ($class) {
        include APP. '/' . $class . '.php';
    });
     
    $obj1  = new MyClass1();
    $obj1->displayVar();


    В вашем примере
    namespace something\base;
    use something\models\Login;
    вы определяете пространство имён и говорите его использовать словом use
    Ответ написан
    5 комментариев
  • Никто не в курсе почему используют Mailchimp вместо обычных писем с сайта?

    gobananas
    @gobananas
    finishhim.ru
    Обычные письма попадают в спам. Надо использовать библиотеки и слать через сторонние SMTP, но там лимиты. Можно поднять свой почтовый сервер с DKIM и SPF но это сложновато и не каждому по силам. Что бы использовать почтовый офис Яндекса или Гугла DKIM тот же всё равно нужен.
    Ответ написан
    1 комментарий
  • Что значит запись >> 2>&1?

    BuriK666
    @BuriK666
    Компьютерный псих
    >> /dev/null - перенаправление stdout в /dev/null
    2>&1 - перенаправление stderr в stdout (который пойдет в /dev/null)
    Ответ написан
    2 комментария
  • Как писать много кода, оставляя его простым, как в начале?

    @malbaron
    Декомпозиция
    И
    https://habrahabr.ru/post/269589/

    23a0de4d93d747c89f1e216077c2d604.jpg
    Ответ написан
    Комментировать
  • Почему массивы не равны?

    https://developer.mozilla.org/ru/docs/Web/JavaScri...

    Два различных объекта никогда не равны как в строгих, так и в абстрактных сравнениях.
    Сравнение объекта истинно лишь в том случае, если оба операнда ссылаются на один и тот же объект в памяти.
    Ответ написан
    2 комментария
  • Какое регулярное выражение написать?

    gobananas
    @gobananas
    finishhim.ru
    Если в preg_replace будете вставлять для удаления то как-то так https://www.regex101.com/r/jFfVQq/1 (расширение .zip оставил)
    Ответ написан
    1 комментарий
  • Code review верстки новичка + вопросы?

    pm_wanderer
    @pm_wanderer
    junior-HTML
    По html пробежался:

    У тебя есть места где тег h2, h3 идет перед h1. Так делать не принято (хоть и не считается ошибкой при валидации). Почитай про html document outline - это система структурирования документа по заголовкам и секциям.

    Встречаются пустые конструкции из дивов, которые видимо используются в презентационных целях и захламляют документ (лучше использовать псевдоэлементы before и after для этого)

    Презентационные картинки типа иконок не нуждаются в заполнении аттрибута alt (оставить его пустым лучше, но не убирай) и можно добавить role=presentation. Картинки не адаптированы под ретину (почитай про аттрибут srcset).

    Input'ам, без описательного тега label, не нужен аттрибут title (он не на всех скринридерах работает и на мобилах он не отображается) Если решили уж делать поле ввода без label, то пусть лучше аттрибут placeholder описывает максимально, что требуется от простого пользователя, а для пользователей скринридеров использовать aria-label.

    Последний момент: если хочешь прям ваще чтоб идеально было, то надо внедрять в код wai-aria, но спешу тебя обрадовать, что об этом любят только говорить всякие гуру на конференциях, а на деле практически никто это не внедряет правильно, так как требуется в WCAG и Section508

    Ну в остальном все нормально в общем, кроме всяких вещей субьективных типа структуры вложенности дивов. Я лично не люблю когда их очень много, но некоторым так удобней держать в голове структуру документа. Сам сайт не сравнивал с кодом, поэтому мог не заметить каких то еще явных косяков - пробежался просто поверхностно глазами по html на гитхабе.
    Ответ написан
    Комментировать
  • Code review верстки новичка + вопросы?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Нужна конструктивная критика

    Ну давайте покритикуем... постараюсь все аргументировать.

    Начнем не с кода, а с юзабилити так сказать: есть люди, которые используют tab для перемещения по странице. Это факт. В вашем случае получается, что в верхнем меню перемещаться можно только по словам (но не по иконкам), а по остальной странице - вообще нельзя. Т.е. формально перемещение идет, но ничего не выделяется и совершенно не понятно где мы находимся. Имеет смысл добавить для focusable-елементов стили для :focus.

    Второе - при уменьшении экрана в некоторых местах надписи начинают наезжать (несильно, но глаз режет) друг на друга. Возможно вам стоит почитать статью про изменение размера шрифта в зависимости от размера экрана - иногда это очень полезно.

    Ну а теперь перейдем собственно к коду. Скриптов у вас немного, поэтому буду говорить про CSS. Вопрос: у вас css файл на 2606 строк - вы пишете все в нем? Если да - вам стоит посмотреть в сторону систем сборки (grunt / gulp) - имеет смысл отдельные компоненты делать в отдельных файлах, а затем это все склеивать. Так проще ориентироваться в происходящем (и те, кто будут работать с вашим кодом после вас скажут вам спасибо). Опять же префиксы для браузеров можно будет расставлять автоматически.

    Дальше:
    .work_pic1-part1:hover span,
    .work_pic1-part1:hover:before,
    .work_pic2-part1:hover span,
    .work_pic2-part1:hover:before,
    .work_pic3-part1:hover span,
    .work_pic3-part1:hover:before,
    .work_pic4-part1:hover span,
    .work_pic4-part1:hover:before,
    .work_pic1-part2:hover span,
    .work_pic1-part2:hover:before,
    .work_pic2-part2:hover span,
    .work_pic2-part2:hover:before,
    .work_pic3-part2:hover span,
    .work_pic3-part2:hover:before
    ...

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

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

    Еще по поводу размера css: есть такое понятие как critical css - стили для первого видимого экрана. Их можно выделить автоматически (см. системы сборки) и встроить прямо в html. А все остальные стили загружать уже потом. Это создаст у пользователя впечатление быстрой загрузки. У Виталия Фридмана есть занятная лекция на youtube, где он рассматривает этот и другие вопросы оптимизации загрузки на примере smashingmagazine.

    Комментарии. Их нет. В большинстве случаев они и правда не нужны, но после нарезки такого рода окончаний
    </div>				
                    </div>
                </div>
            </div>
        </footer>
    </div>

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

    Да и напоследок: названия классов очень разнородные - то дефисы, то подчеркивания, то длинные, то короткие, иногда в них видится система, но эта система переодически дает сбой. Не люблю я БЭМ, но, вероятно вам стоит почитать о нем более подробно (или про аналоги, решающие те же задачи - недавно тут на тостере был вопрос о том, что делать, если бэмоподобные классы перестали нравиться - пришли к выводу, что rscss тоже неплох).

    P.S.: планшета под рукой нет, поэтому про тормоза ничего сказать не могу - на слабом нетбуке все работает более-менее нормально.
    Ответ написан
  • Всегда ли multi insert лучше, чем несколько обычных?

    gobananas
    @gobananas
    finishhim.ru
    Да всегда, выигрываете время на перестраивании индексов. У меня выигрыш где-то в 40 раз был.
    Ответ написан
    Комментировать
  • Как написать регулярку?

    gobananas
    @gobananas
    finishhim.ru
    CyberHost прав, можно ещё количество цифр жёстко ограничить:
    [0-9]{3}(x|х)[0-9]{2}
    https://regex101.com/r/mV3wA0/1
    Ответ написан
    1 комментарий
  • Как оптимизировать таблицу в mysql?

    Какая селективность индекса?
    Не равно тяжёлый запрос
    Пустота намекает на текстовое поле. Добавьте ещё столбец типа tinyint если поле пустое текстовое, то заносите в него 0, если не пустое то 1. Далее ищете все строки где столбец=1 Работать будет не особо быстро но лучше.
    Ответ написан
    4 комментария
  • Как понять работу sql-запроса?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Попробуйте так. Результат одинаковый будет, но оптимизатор не станет выполнять лишний select
    SELECT `group_id` FROM `vkgroups` WHERE `group_id`
    IN (SELECT `group_id` FROM `vkmembers` ORDER BY `members` DESC LIMIT 0,20)

    Т.е. что вижу я тут странное. Вот это подзапрос, который в скобках. Он отбирает нечто, обратно это сортирует и берет первые 20 записей из результата.
    Условно, значения у вас идут от 10 до 100 - берутся записи от 100 и до 80. Фактически - возьми последние 20 записей
    SELECT `group_id` FROM `vkmembers` ORDER BY `members` DESC LIMIT 0,20

    Зачем делать из этого потом еще один запрос select * - не ведаю.

    И совершенно непонятно, зачем брать абсолютно все данные и их потом переворачивать. Добавьте, например, условие сюда же по дате, или брать не все данные, а половину только и скорость увеличится.
    Ответ написан