• Как оценивать сроки?

    php666
    @php666
    PHP-макака
    Прикольно звучат высказывания комментаторов в духе "если вы знакомы с проектом". Мне правда интересно, как в условиях современных монстроподобных корпоративных приложений можно быть "знакомым" с проектом, который, возможно, пилится не один год (пусть хотя бы даже от 3 лет) целой командой? Ни один человек, если он не единоличный автор этого проекта, не может быть настолько хорошо быть "знаком" с проектом, что бы чётко отвечать на вопросы в стиле "сколько времени займет поправить баг". Даже программисту среднего звена ясно, что совсем маленький баг может потянуть за собой чуть ли не фатальный коллапс архитектуры с последующим тотальным рефакторингом всего и вся.

    Невозможно в разработке планировать какие-либо сроки. Тут автор прав.

    Ответ на самом деле очень простой - ты работаешь на весьма хреновой работе. Я сейчас опять пропиарю свою статью про выживание в IT, прочти её, там не касается полностью твоего вопроса, но суть очень близка (пожалуй, я потом её дополню, спасибо за "наводку" - про сроки я там не писал...).

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

    Я по себе знаю, когда от меня требовали сроки. Последний раз был вообще трешачок в одной московской компании - от меня требовали сроки на 2 день после назначения задачи на меня, при этом я вообще не понимал ничего в задаче - в её бизнес-логике, т.к. работал в этой компании от силы недели три. Через буквально несколько дней меня вызвали "на ковер", мол, почему так долго. Жалею, что прямо тогда не послал их прямым текстом на три известные буквы, а продолжил работать. Ничего хорошего из этого, конечно же, не вышло.
    Сейчас я работаю в таком месте, где ВООБЩЕ нет никакого понятия сроки, где разработка проектов в корпорации длится годами - IT работает не на внешнего заказчика, а на внутреннего - на саму же корпорацию. Последний проект, в котором я участвовал, занял около 2-х лет. И бОльшая часть была не программинг, а взаимодействие разных отделов, нахождение багов, форсмажорных ситуаций после запуска и т.д. Работать в таких условиях сплошное удовольствие. Никаких стрессов, никаких менеджеров, изображающих бурную деятельность.

    Если хочешь поседеть раньше времени - оставайся и слушай упреки менеджмента. Вместо спокойной работы - придумывай эти цифры сроков. Если нет - просто ищи адекватное место работы. Другого не дано.
    Ответ написан
  • Есть ли расширение для автоматического редиректа на русскую документацию php.net?

    Я использую стандартный функционал поисковых систем из адресной строки.
    Тоесть начинаю вбивать в адресной строке php.net array_diff + Enter и попадаю сразу на русскую версию документации, и на нужную страницу.
    php.net можно заменить на любую другую удобную строку
    Ответ написан
  • Реально получить заказ веб-мастеру и контекстологу на бирже ФЛ?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Ну если на секундочку тебе кажется что человек у которого есть что делать идет на биржу фрилансеров - то это очень не всегда так. На бирже сидят матерые волки, которые ищут как сделать ЕЩЁ дешевле.

    Это как прийти на рынок где бабки сидят, и надеяться, что бабки тебе помогут стать рядом с ними. Неееет. Они заразы сделают всё чтобы ты не дай бог рядом с ними не стала.

    На фриланс идут с мордой-лопатой и убежденностью, что лучше тебя в этом мире никто не делает. Да, это враньё. Но на рынке кто не врёт, тот дурак.

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

    Кстати маленький пример. Вот есть сайт МойКруг где периодически светятся вакансии со средними зарплатами "в целом по селу" и есть премиум вакансии, который ну это ж еще проплачивать надо, то есть ну ооочень нужен специалист. И там вот зарплаты указаны. По этим зарплатам можно видеть что отличная зарплата айтишника - это вот что-то 2-2,5 тысячи долларов. А на собеседование приходят ребята, которым я даю задачу, а они начинают там выкручиваться - не такая задача, нету тз, нету того, нету этого, плохая задача, плохой Гриша... А когда они с моей помощью каким-то чудом её решают, они вдруг радуются и называют зарплату в 3 тысячи зелени. Или четыре.

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

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

    Это во многом доказывает почему "технологии" никуда не движутся. Их двигают те, кому пора уже подымать зарплату, придумывая новую упаковку для существующих техник работы. А те кто придумывают новые концепции - сидят, блин, дома и никто про них не знает. Плохо? Нет, просто пока существуют деньги - по другому невозможно. (ps. для тех кто придумывает дома придумали классную мышеловку - приходите на собеседование уже с готовой идеей (звучит так обычно = "у вас есть свой проект на github, сбросьте на оценку", иначе - не тратьте наше время. Таким образом твою идею бесплатно получает кто-то ещё. А потом тебя могут не взять, и никто, как говорится, не виноват, вы же сами пришли)
    Ответ написан
  • Как отсортировать массив объектов по массиву значений определённого свойства?

    0xD34F
    @0xD34F Куратор тега JavaScript
    messages.sort((a, b) => {
      [ a, b ] = [ a, b ].map(n => sortableLanguages.indexOf(n.language));
      return a === -1 ? 1 : b === -1 ? -1 : a - b;
    });
    Ответ написан
  • Как исправить Array to string conversion?

    l3ftoverz
    @l3ftoverz Куратор тега PHP
    Люблю Финский металкор и ищу работу.
    В какой строке ошибка то происходит, почему нельзя задать вопрос так, что бы на него можно было просто взять и ответить? Почему всю важную для решения вопроса информацию нужно вытягивать силой?

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

    Stalker_RED
    @Stalker_RED
    Выбросить это все, использовать обычный require_once.
    А на случай ошибок подключить обработчиик:
    https://www.php.net/manual/ru/book.errorfunc.php

    Или вообще переделать все на авттозагрузку.
    https://www.php-fig.org/psr/psr-4/
    Ответ написан
  • Правда ли что рынок веб разработки "перегрет"?

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

    Конечно рынок веб разработки «перегрет». Порог вхождения низкий. Килотонны мануалов на русском языке и басни о богатых айтишниках привлекают сюда всех. Эти толпы может, на начальном этапе, действительно плохо делают свою работу, но большинство без сомнения станут весьма приемлемыми программистами. И рынок будет перегрет еще больше.

    Вот эти ребятки, что в этой теме отметились, они настолько все туповатые, что сами себе роют могилу, крича на весь интернет о "дефиците". Сами того не понимая, плодят себе конкурентов. Для примера - зайди на какой-нибудь бизнес-форум и спроси у любого пользователя, кто бизнесом занимается - "как ты деньги зарабатываешь?" - ни один идиот тебе не раскроет секрет. Никогда. Это только у айтишников так принято - трубить на всю ивановскую о дефиците. А лет через 10 большая половина этих обезьянок пойдет в такси работать, ибо рынок будет безбожно переполнен людьми с вполне обычными знаниями.

    И не забывайте о времени - через Н лет все, кто сейчас "на коне", станут вторсырьем, ибо индустрия на месте не стоит и знания ваши обесценятся. Вот смеху то будет, когда после 10 лет упорного труда вы ВНЕЗАПНО поймете, что индустрия рванула вперед, а вы все на [нужное_вписать] кодите. Быгыгы.
    Ответ написан
  • Есть ли перспективы у программиста за Москвой И СПб?

    php666
    @php666
    PHP-макака
    Живу в подмосковном городе тыц на карту.
    С 2004 года, как я активно работаю программистом, работы ближе, чем в Москве, за 13 км от дома НЕ БЫЛО. Но 13 км для Подмосковья с утра это примерно час-полтора езды (зимой все два), в виду колоссальной загруженности дорог.
    Все, что ниже, левее или правее моего горда на карте - там НИКОГДА не было работы. И это ближайшее Подмосковье, почти центр России! Ни в самом моем городе, ни в ближайшем Домодедово, Подольске и далее, на юг. Одно время ездил в Люберцы за 25 км. Пробки как неминуемая часть жизни. Траты на бензин - огромные. Машина требует вложений. Сейчас у машины пробег 120 тыс км, а реальное количество моточасов (когда двигатель работал) - раз в 50 больше.

    Работы нет не только за МКАДом, работы нет и на окраинах Москвы. В пример - юг москвы. Бывает пара вакансий, сходил на собеседование, что-то не нравится или не взяли и все. Вся работа по IT в центре, рассчитана на приезжих, на тех, кто гол как сокол и кочует как цыган, меняя место жительства. Вот это - реалии этого долбанного It.

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

    Правда ли, что у программиста нет перспектив, если он не работает в Москве или СПб, а в других регионах РФ?
    Открой hh и посмотри. Я смотрел. ЗП - очень маленькие, вакансий на какой-нибудь Воронеж несколько штук. А если живешь в "колхозе", то шансов нет - либо удаленно, если найдешь, либо ехать в Москву и отдавать половину зп за квартиру. Если на периферии своё жилье, семья и иные сдерживающие факторы -- очень мутная затея бросать все и переться в Москвабад.

    городах РФ (кроме Москвы и СПб) программисты не нужны
    А зачем там нужны программисты? Программисты нужны там, где есть компании, которые нуждаются в программистах. Ты думаешь в какой-нибудь Твери много компаний, нуждающихся в программистах? Ну 1с-ники может быть приходящие нужны, может пара веб-макак надо. Там люди не работают в офисах, не занимаются стартапами, там более приземленные сферы деятельности.
    Ответ написан
  • Как объединить повторяющиеся значения в массиве и записать их индексы?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Object.values(arr.reduce((acc, n, i) => {
      (acc[n] = acc[n] || { label: n, indexes: [] }).indexes.push(i);
      return acc;
    }, {})).map(n => n.indexes.length === 1 ? n.label : n)
    Ответ написан
  • Как объеденить по свойствам массив объектов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Object.values(persons.reduce((acc, n) => ((acc[n.ID] = acc[n.ID] || { ID: n.ID })[n.FIELD] = n.VALUE, acc), {}))
    Ответ написан
  • Как получить ID из обеих таблиц при выполнении Inner Join Left?

    mosesfender
    @mosesfender
    Меланхолик, параноик, падал с коек
    В select нужно приделать алиас к полю ID другой таблицы.
    select data.*, internal.ID as internalID, internal.Number as internalNumber, internal.Date, internal.Time, internal.Long from data left join `Internal` on data.Number = internal.Number
    Ответ написан
  • Вывод на экран значений из MYSQL, как вывести без повторов?

    BojackHorseman
    @BojackHorseman Куратор тега PHP
    ...в творческом отпуске...
    $opt != $options

    а дефолтом стоит PDO::FETCH_BOTH
    Ответ написан
  • Как отследить событие скроллинга НА ЭЛЕМЕНТЕ?

    0xD34F
    @0xD34F Куратор тега Vue.js
    необходимо отлавливать событие скроллинга

    что-то вроде $element.bind('mousewheel',

    Так скролл, или колесо мыши? Вы уж определитесь.

    Ну а так-то всё просто:

    <div @wheel="onWheel" @scroll="onScroll">

    methods: {
      onWheel() {
        console.log('wheel');
      },
      onScroll() {
        console.log('scroll');
      },
    },
    Ответ написан
  • Как отключить реактивность в компоненте?

    0xD34F
    @0xD34F Куратор тега JavaScript
    При изменении item.department меняется и item_loaded.department

    this.item_loaded = this.item

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

    this.item_loaded = { ...this.item }

    Не очень понятно, зачем created - в data контекстом является экземпляр компонента, параметры доступны, так что копировать объект можно прямо там:

    data() {
      return {
        item_loaded: { ...this.item },
      };
    },

    Вычисляемое свойство isChanged - можно же сделать в одну строку вместо пяти:

    isChanged() {
      return this.item_loaded.department !== this.item.department;
    },

    Почему в качестве дефолтного значения для item используется null? - вы обращаетесь к его свойствам, если ничего не передать, получится ошибка cannot read property of null. Должен быть объект:

    default: () => ({ /* можно указать какие-нибудь свойства с дефолтными значениями */ }),

    Мутируете параметр (v-model="item.department"). Правильно будет эмитить изменения в родительский компонент и обновлять объект уже там. В родителе цепляете значение для параметра item с модификатором sync, а в рассматриваемом компоненте v-model заменяете на установку значения и обработку события input:

    <input
      :value="item.department"
      @input="$emit('update:item', { ...item, department: $event.target.value })"
    >
    Ответ написан
  • Как сделать плавное увеличение ширины по мере скролла?

    0xD34F
    @0xD34F Куратор тега jQuery
    const baseWidth = $('.banner').width();
    
    $(window).scroll(function() {
      $('.banner').width(baseWidth + $(this).scrollTop());
    });
    Ответ написан
  • [PHP] DataBase на ООП, как лучше написать?

    search
    @search
    мама говорит что я особенный
    Вот тут вкратце описаны все популярные шаблоны проектирования DB слоя https://gist.github.com/codedokode/c4cbc4d7dc8e45ea074a

    Выбирайте тот что вам по душе и кайфуйте.

    Попробуйте DataMapper. Он довольно прост в реализации (вам даже либа не пондобится. Ну разве что стандартная PDO) и меньше чем ActiveRecord склоняет программистов к говнокоду. Ну и гораздо менее тяжеловесен чем полноценная ОРМ. Для понимания и закрепления ООП - самое то.

    Только что попробовал поискать примеры в русском тырнете, но ничего вменяемого не нашел. Попробуйте сами погуглить ради интереса.

    Вот очень подробная статья на инглише https://www.sitepoint.com/integrating-the-data-mappers/

    А самый, на мой взгляд, лучший пример, предоставлен японцем (не пугайтесь иероглифов, смотрите код): https://github.com/hirak/pdo-datamapper-example
    Ответ написан