• Как вывести вложенные данные в виде таблицы с объединёнными ячейками?

    @szubtsovskiy
    Вам поможет rowSpan. В примере я засунул данные в state, но вы продолжайте брать из props:

    render() {
        return (
          <table>
            <tbody>
              <tr>
                {new Array(8).fill(0).map((el, i) => <th key={i}>TEXT</th>)}
              </tr>
            </tbody>
            <tbody>
              {this.state['vmBackup']['clouds'].flatMap(cloud => {
                return cloud.shards.map(shard => {
                  const jobCount = shard['jobs'].length;
                  return shard['jobs'].map((job, i) => {
                    if (i == 0) {
                      return (
                        <tr key={i}>
                          <td rowSpan={jobCount}>{cloud['cloud']}</td>
                          <td rowSpan={jobCount}>{shard['repository']}</td>
                          <td rowSpan={jobCount}>{shard['repository_size_gb']}</td>
                          <td>{job['job']}</td>
                          <td>{job['job_description']}</td>
                          <td>{job['backup_name']}</td>
                          <td>{job['backup_size_gb']}</td>
                          <td>5</td>
                        </tr>
                      )
                    } else {
                      return (
                        <tr key={i}>
                          <td>{job['job']}</td>
                          <td>{job['job_description']}</td>
                          <td>{job['backup_name']}</td>
                          <td>{job['backup_size_gb']}</td>
                          <td>5</td>
                        </tr>
                      )
                    }              	
                  })
                })
              })}
            </tbody>
          </table>
        )
      }
    Ответ написан
    1 комментарий
  • Что мотивирует IT специалистов кроме ЗП?

    Robur
    @Robur
    Знаю больше чем это необходимо
    до 30 - самоуверждение. норм денег, чтобы хватало на все, технологии покруче, все эти печеньки, звания, возможность ходить с гордым видом собственной важности и вообще.
    после 30 - возможность делать осмысленные вещи, понимать ценность потраченного на работу времени, профессиональный рост (не в плане изучения очередной новой технологии), принимать ответственность за решения и сознавать свой вклад в то на что тратишь свою жизнь. Все это работает когда комфортный уровень жизни к которому привык в период до 30 сохраняется естественно.
    Ответ написан
    4 комментария
  • Как перестать говнокодить и принимать неверные архитектурные решения?

    miraage
    @miraage
    Старый прогер
    как писать поддерживаемый код?

    Если уж очень коротко, то соблюдать SOLID/GRASP. Мне понравился твит одного из авторов React Router:
    https://twitter.com/mjackson/status/1171524189850701825

    Most common mistake software developers make: putting stuff in the wrong place. Coupling responsibilities and concepts that should be kept separate.
    For me, this is 95% of software development. Just figuring out *where* things belong.


    Что гуглить, что учить?

    Фундаментальные знания, вроде вышеупомянутых SOLID/GRASP, паттерны (не только классические паттерны, но и вообще, общеизвестные решения определённых задач), базовые структуры данных. Фреймворки/библиотеки всегда будут приходить/уходить, что-то будет забываться. А фундаментальные знания всегда актуальны.

    Может литературу какую почитать посоветуете?

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

    Можно ли себя называть миддлом, если твой код говно?

    Не пытайтесь себя оценить. В каждой компании свои понятия миддла. А если кто-то 35 лет на лиспе кодил, а потом прыгнет на Angular - кто он, джун или сеньор?
    И, да, все мы в какой-то степени пишем говнокод. Если кто-то Вам доказывает, что он пишет супер чистый код - не слушайте.

    И ответ на главный вопрос.
    Как перестать говнокодить и принимать неверные архитектурные решения?

    Это невозможно. Все проекты, которые чуток сложнее CRUD-ов, рано или поздно обрастают говнокодом. Никто не пишет идеальный код. Код должен работать и решать проблемы бизнеса.
    Ответ написан
    6 комментариев
  • Пример проекта который включал бы всю "класссику" фронтенда?

    @kova1ev
    Из личного опыта, склоняюсь к мысли, что потенциальные работодатели смотрят не что написано, а как написано. Та же тодошка может быть реализована как дубовое неподдерживаемое говно. Сам работаю недавно, на джуниорской позиции (правда не фронт) и в тех тасках, что дают делать, итоговый код как правило не превышает сотни строк, но обдумывать как заимплементить решение приходится долго, а потом еще пару тройку раз переписать после ревью.

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

    или более похож на реальный боевой проект

    Куча легаси кода, все тормозит и глючит. Половина проекта с горем пополам переписана на современный манер.

    Не видел ни одного крупного боевого проекта с большой историей, который был бы нормально написан.
    Ответ написан
    1 комментарий
  • Как создать сайт типа пикабу?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Ребят, пользуясь случаем хочу спросить, как мне сделать сайт типа Авито. Ну или Яндекс.Маркет - не особо важно.
    Главное, чтобы денег заработать.
    Какую мне библиотеку скачать для этого?
    Ответ написан
    2 комментария
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Где найти начинающих веб разработчиков для совместной работы над образовательным проектом?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    Я согласен — и впредь не платите, 
    Пусть шатает меня на ходу, 
    Не давайте жилья, не кормите, 
    Всё равно на работу приду. 
    
    День получки — нет траурней даты, 
    Просто нет её в этом году, 
    Не давайте паёк и зарплату, 
    Всё равно на работу приду. 
    
    Отдыхать ни за что не поеду, 
    Это море имел я (в виду), 
    Чай пустой и сухарик к обеду, 
    Всё равно на работу приду. 
    
    И лечиться мне вовсе не надо, 
    Могут вылечить вдруг на беду, 
    Не нужны никакие награды, 
    Всё равно на работу приду. 
    
    Ничего, что одежда в заплатах, 
    Я не вру Вам, имейте в виду, 
    Даже если проезд будет платным, 
    Всё равно на работу приду.
    Ответ написан
    Комментировать
  • Программное решение для упорядочивания жизни?

    DDDsa
    @DDDsa
    Можно вести всё это в гит-репозитории в plain-text файлах, используя простой язык разметки вроде Markdown или RST. В них есть всё, что нужно: выделение, картинки, ссылки, даже блоки кода с подсветкой синтаксиса.

    В гит-репозитории вы свободны структурировать информацию как угодно: разносить по папкам, разбивать по файлам. Это самый удобный способ вести исходники любой документации.

    Затем сверху можно прикрутить какой-нибудь статический сайт, который будет собираться из ваших исходников, или подключить пандок, чтобы собирались пдфки. Хотите заморочиться — разверните сервер где-нибудь в локальной сети и настройте с помощью CI гитлаба, гитхаба или битбакета пересборку сайта при каждом пуше в master-ветку репозитория.

    Хорошие статические генераторы сайтов из Markdown:



    Ещё есть Foliant, который из единых Markdown-исходников может собирать PDF, docx, тот же MkDocs-сайт и т д.

    Ну и так далее, тут плюс в том, что вариантов очень много и если надоест один сайт, можно взять те же ваши накопленные годами md- или rst-исходники и собрать из них что-то другое. А теперь представьте, что вас перестал устраивать EverNote, что тут делать? : )
    Ответ написан
    5 комментариев
  • Какому языку, в какой среде начинать учить ребенка программированию 10 лет?

    10 лет это 3 класс

    Отстаньте лучше от ребёнка. Ему всего лишь 10 лет - какое программирование? Пусть он сначала насладится детством. А уже после - сам начнёт ковыряться в том, что ему понравится
    Ответ написан
    7 комментариев
  • Где найти актуальные видеоуроки по JavaScript?

    @kova1ev
    Зачем видеоуроки.

    https://learn.javascript.ru/

    отличнейший учебник.
    Ответ написан
    Комментировать