Задать вопрос
  • Как преодолеть кризис начинающего специалиста?

    sim3x
    @sim3x
    А кто сказал, что будет легко?

    spoiler
    Даже если вы занимаетесь bleeding edge разработкой в универах или корпорациях, то рутина будет занимать 90% вашей работы

    А что еще хуже 60% всего рабочего времени вы будете заняты согласованиями и совещаниями и не будете писать код вообще

    Потому, если вас не хватает сейчас, то стоит подумать, а нужно ли оно вам вообще
    Ответ написан
    Комментировать
  • Какова суть генерации своих событий в JavaScript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Попробую на пальцах объяснить.

    Событие – это конверт, на котором написано его название. Внутрь конверта можете вложить что-нибудь, а можете оставить конверт пустым.

    Элемент – это столик. Кто угодно может подойти и положить на столик свой конверт.

    Слушатель – это мужик, который топчется около столика и смотрит, нет ли чего с интересующим его названием. Может несколько человек поджидать конвертики с определённым названием – прочтут все, если только в конверте не написано «по прочтении съесть» – тогда кто-то съест и дальше не передаст.

    Как создать/отправить конверт. В любом месте кода создайте конверт и дайте ему название: var myEvent = new Event('teaTime'); Остается положить конверт на нужный столик:
    document.getElementById('stolik').dispatchEvent(myEvent);


    Чтобы в событие вложить какие-то данные, нужно использовать другой конструктор и передать нагрузку в поле detail:
    var event = new CustomEvent('saySomething', { detail: "Hello there!" });


    Для чего нужно создавать свои события? Чтобы развязать куски кода. Например, в разных местах документа можно нажать на кнопку повторяющегося виджета. Виджет создаст на document событие "widgetClicked". А ещё несколько одинаковых компонентов в странице, слушающих document на предмет события "widgetClicked", получат пинок и что-нибудь вытворят.
    Ответ написан
    2 комментария
  • Где и как можно пройти тестирование знаний по LAMP-стеку?

    @spaceatmoon
    Примечание. Сам не сдавал, но думаю что так и есть


    Тут попросили про Zend Certification описать, но я думаю вы уже прочитали, что это такое. Поэтому для тех кто не знает.

    Есть такие чуваки из фирмы www.zend.com. Они являются разработчиками PHP и у них же есть официальная сертификация называемая Zend PHP Certification. Там так же есть сертификации по их фреймворку Zend Framework, но это уже для тех кто им пользуется. Нас интересует именно PHP Certification.
    www.zend.com/en/services/certification/php-certifi...

    Стоит на сегодня $195 - ~12к рублей. Относительно дешево учитывая плюшки.
    Плюшки:
    1. Пожизненная (поправьте если не так) лицензия на их же разрабатываемая IDE под PHP. Смотрел тут недавно сравнения с PHPStorm и достаточно годно я скажу.
    2. Сам сертификат, можно выпендриваться. Тоже пожизненный, ну и страничка типа такой. www.zend.com/en/yellow-pages/ZEND024408
    3. Возрастает шанс и значимость для иностранных фирм. Особенно из Германии.
    Минусы:
    1. У нас не котируется.
    2. (ИМХО) Сам сертификат достаточно легко получить и знаний особо не дает. Поэтому не стоит налегать на рекрута.

    Подготовиться можно по их же книжке. По отзывам это отличное дополнение к их докам, а доки у них хорошие. Думаю сам купить и стоит всего $20
    www.zend.com/en/services/certification/php-certifi...
    В этой книжке обозрены все разделы для получения сертификации. Да и сама структура книжки радует. В интернете есть и бумажная версия, но я даже не знаю, стоит оно того.

    Ах да, чтобы пройти успешно сертификацию, нужно хотя бы иметь 1 год на плечами опыта на PHP.
    Сертификация проходит как тестовая часть на права. Приходишь, садишься за компьютер, дают 50 минут, блокнот и ручку, и решаешь.

    Перед реальной сдачей есть сайты для проверки своих знаний как на сертификации.
    Ответ написан
    Комментировать
  • В чем разница между prop и attr?

    lazalu68
    @lazalu68
    Salmon
    Из документации:

    (attr) Get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element.

    (prop) Get the value of a property for the first element in the set of matched elements or set one or more properties for every matched element.

    В адаптации Google Translate:

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

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

    Собственно вот и вся разница: первый метод читает/устанавливает значение атрибута элемента (Мержевич по теме), а второй - свойство объекта представляющего элемент. Если вкратце, то разница в том, что они из разной среды: атрибут это термин HTML - вы устанавливаете его в разметке и значение атрибута как-то обрабатывается, влияя на какие-то свойства элемента. А свойства это значения относящиеся непосредственно к DOM объекту элемента.

    Например, class, один из самых привычных атрибутов для тега, в элементе представлен свойством className. Если у тега нет атрибута class, то у самого элемента есть свойство className, которое содержит пустую строку. Ну и соотвественно задать класс элементу можно либо изменив атрибут class с помощью attr, либо изменив свойство className с помощью prop.
    Ответ написан
    Комментировать
  • Где и как развить алгоритмическое мышление?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Советую курс по алгоритмам от МФТИ (прямо с пар запись, но хорошая):
    https://www.youtube.com/playlist?list=PLRDzFCPr95f...

    Крайне интересная подача и хороший уровень, на языке Python, но пусть это не пугает, я вот PHP-программист и мне все понятно
    Ответ написан
    1 комментарий
  • Какова суть генерации своих событий в JavaScript?

    rockon404
    @rockon404
    Frontend Developer
    статей не нашёл

    Создание собственных событий

    Уточню: как браузер понимает, что событие "tellFuckYou" произошло? это главное, о чём нигде не написано

    // Создание события
    var event = document.createEvent('Event');
    
    // Назначить имя событию
    event.initEvent('build', true, true);
    
    // Слушаем событие
    document.addEventListener('build', function (e) {
      // e.target соотетствует объекту document
    }, false);
    
    // target события может быть любой элемент
    document.dispatchEvent(event);


    Вообще не понимаю, зачем создавать свои события?

    Если не понимаете, значит вам это не нужно.
    Ответ написан
    7 комментариев
  • Как обезопасить проект с полностью раздельным фронтендом и бекендом?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Тут две задачи стоит:

    - обезопасить общение между клиентом и фронтендом
    - обезопасить общение между фронтендом и бэкендом

    Первое делается известными методами, я думаю их перечислять не надо.

    Второе можно делать по-разному:

    - можно организовать закрытую сеть между всеми серверами (варианты разные: от vpn, до физически отдельной сетки).
    - можно делать https соединения, проверяя сертификаты друг друга
    - можно подписывать сообщения, например с помощью https://en.wikipedia.org/wiki/HMAC

    Можно даже всё вместе сделать - зависит от уровня паранойи.

    Передавать креды пользователя в открытом виде, само собой, нельзя. Нужно обезопасить само соединение (например, https использовать) или сами креды (шифровать ключом, известным только фронтенду и бекенду).
    Ответ написан
    6 комментариев
  • Насколько сложно сделать рефакторинг проекта и переписать код с C# на Python/Java?

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

    Есть проект на .net, его нужно переписать на python/java - при этом главным критерием стоит масштабирование и вопрос кадров.

    На Python кадров не так много. Найти middle/seniour на Python достаточно сложно. Чаще всего попадаются люди, кто что-то делал на Php, но при этом как-то ковырял Python. Да и масштабирование так себе под Python, т.е. можно, но с геройством.

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

    Мб как вариант, вам докинуть зп до уровня адекватных Java- разрабов в 140-160 тысяч. А там глядишь и нормальные ребята на .net к вам подтянутся?
    Ответ написан
    3 комментария
  • Насколько сложно сделать рефакторинг проекта и переписать код с C# на Python/Java?

    @kttotto
    пофиг на чем писать
    Если, как Вы говорите, проект написан чисто, задокументирован и адекватно выполняет свои задачи, то зачем его переписывать? Если дело только в виндовс, то дешевле и быстрее перевести под Core, будет Вам линукс.

    насколько адекватно оставлять Backend на C# в 2018 году?

    Вот именно сейчас это адекватно) Большинство нового интерпрайза начинают писать на C#. Нам, наоборот, приносили большой проект с Питона переписать.

    Я считаю, что переписывать стоит только если проект не справляется с задачами или затруднена дальнейшая поддержка на этой технологии. А так, какая разница, но чем он.
    Ответ написан
    5 комментариев
  • Как обезопасить проект с полностью раздельным фронтендом и бекендом?

    Sanasol
    @Sanasol Куратор тега Веб-разработка
    нельзя просто так взять и загуглить ошибку
    Какие еще вопросы по безопасности нужно закрыть?

    ровно всё тоже самое что и при монолитном приложении.
    пишите нормальный код без дыр в виде sql инъекций и всякого такого.

    Насколько это безопасно и как защититься от подделок запросов в целом?

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

    В общем разделение не переворачивает весь сайт с ног на голову, это все тот же сайт со стандартными "угрозами" и защитой от них.
    Ответ написан
    4 комментария
  • Что плохого и критично неприемлемого в Codeigniter?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    что бесит в CI:
    1. $this->loader->library("lib_name");
    - подключение зависимостей происходит через лоадер, любая библиотека, является singliton объектом,это порождает некоторые проблемы в тех местах где нужны новые экземляры, а нужны синглитоны в 2% случаях
    - автоподстоновка в IDE не работает
    - отсутствие многослойности, мы можем get_instance()->loader->library("lib_name"); сделать в любом месте даже в классе ядра, что позволяет разрабатывать сильно связанный монолитный код
    как нужно:
    class Controller function __construct(LibName $lib_name){} - все

    2. Класс к бд простой query builder, как ни крути в результате много дублирующего кода, - работа с массивами зло, когда строишь приложение и пишешь CRUD справочники например для админки, то придется писать прослойки - CRUD классы, а это тот же Repository, иногда нужно одни и те же модели отделять от слоя хранения а это уже datamapper, и вообще удобно использовать коллекции а не массивы данных получаемых из бд, если все вместе взять то тут и приходит необходимость использовать ORM который имеет под капотом все необходимое.

    3. Логгер, ну не psr он, нельзя отказаться от хранилища в файлах и логировать в бд, или выводить на экран в консоль. После использования monolog, логгер CI выглядет убого

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

    5. тесты под капотом они убоги, просто так unit тесты не запустить нужно долго плясать с бубном.
    6. Exception просто отсутствуют, работа с исключениями ведется через собственный механизм
    7. PSR не используется
    8. Работа с конфигами, они разделяются по папкам окружения, не кошерно, особенно когда все добро с доступом к бд комитят в гит, используйте .env

    п.с. в новой версии знаю уже многие вещи будут исправлены но тем не менее проще собрать приложения на каркасе https://github.com/mmeyer724/Frameworkless
    Ответ написан
    3 комментария
  • Как сделать get запрос с помощью Guzzle?

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

    LightAir
    @LightAir
    LA
    Сначала нужен gitignore а потом уже файлы.
    Временно перемести delete_file_old, коммит, потом можно вновь их добавить.

    Можно через
    git rm -r --cached .
    git add .
    git commit -m ".gitignore"
    Ответ написан
    Комментировать
  • Какие книги полезны для повышения эффективности одного программиста?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Первое, что приходит в голову - автоматизация рутинных операций, создание своей библиотеки с какими-то решениями, которые можно тянуть из проекта в проект.
    Ответ написан
    Комментировать
  • Какие книги полезны для повышения эффективности одного программиста?

    ApeCoder
    @ApeCoder
    • "Рефакторинг: улучшение существующего кода"
    • "Программист-прагматик"
    • "Эффективная работа с унаследованным кодом"
    • "Чистый код"
    • "Code complete"
    Agile, scrum, kanban наверно тоже больше для команд .


    Общий подход может применяться и индивидуально. Еще можно прочитать про Getting Things Done
    Ответ написан
    Комментировать
  • Почему возникают проблемы с импортом БД из дампа?

    Судя по всему в дампе присутствует создание базы (CREATE DATABASE .. IF NOT EXIST) и соответственно имя, покажите первые 20-30 строк дампа
    Вы скорее всего заливаете дамп назад в старую базу и теряете изменения базы сделанные с момента создания дампа
    Ответ написан
    3 комментария
  • Почему возникают проблемы с импортом БД из дампа?

    devspec
    @devspec
    Помогло? Отметь решением
    Вероятнее всего, транзакция не фиксируется.
    Для экспорта-импорта лучше всего использовать специализированные инструменты типа https://sypex.net/ или на худой конец mysqldump - но никак не MySQL Workbench и прочие клиенты.
    Очень много нюансов при восстановлении дампа - от правильного порядка восстановления последовательностей и индексов до соблюдения таймаутов и помещения в транзакцию определенной порции данных, а не всей таблицы.
    Ответ написан
    Комментировать
  • Как быстро реагировать на новые задачи на биржах фриланса?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Это потому что вы верстальщик. Там конкуренция большая. Так как эту работу могут делать даже школьники. И да много ботов на FL.ru и это очень не удобно.

    Изучите что то сложное. На пример работу с видео чатами и видео трансляциями. И бота не понадобится так как конкуренция ниже а стоимость работ такая что заказчик в любом случаи рассмотрит все предложения.
    На пример вот я делал заказы https://freelancehunt.com/project/konsultatsiya-po... и https://freelancehunt.com/project/nastroit-videopl... оба без ставок. Хотя если бы это была вёрстка то заявок тоже было около 50.
    Ответ написан
    1 комментарий