• Как (и возможно ли) дотянуться до Junior JavaScript Developer в кратчайшие сроки?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Во первых: совершенству нет предела.
    Во вторых: невозможно объять необъятное и впихнуть невпихуемое.
    В третьих: как ты не крутись, а технологии развиваются быстрее, поэтому отставание неминуемо, как следствие приходится всегда чем-то жертвовать ради чего-то более важного.

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

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

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

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

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

    Коммерческая разработка - это, примерно, от 70% времени/сил на дебаг и фиксы, потому что мало где процессы поставлены грамотно. По хорошему до сего дня (а мне под 40) я только одну команду видел, где процессы прям вообще очень хорошо поставлены и мне посчастливилось какое-то время с ними поработать. За эти несколько месяцев я подрос на целую голову. Самостоятельно достичь сходных результатов было бы весьма затруднительно.

    Сам я сменил стек совсем недавно, начал в конце 15 года, и процесс продолжается до сих пор. Сменил я по одной простой причине - во всех моих прежних проектах большая часть логики с бэка уехала на фронт, и прекраснейший jQuery перестал справляться чуть более чем полностью. Он, по прежнему, хорош, но задачи, которые приходится решать, требуют совершенно других подходов. Для себя я выбрал React, но в целом на рынке имеются альтернативы. По моим данным очень большим спросом пользуется Angular 2+.

    Когда говорят о фронтенд разработке, постоянно говорят о технологиях, стеке, но почти никто не упоминает, что не стеком единым... Существенная часть разработки - это, для начала, понять задачу и построить у себя в голове модель. Заказчики бывают разные, от очень толковых, до очень безтолковых. Соотношение первых ко вторым примерно 1% и всё остальное... Т.е. в большинстве случаев тебе скажут минимум, своеобразно, плюс ты это поймёшь по своему. Потом, по ходу пьесы, в самые неподходящие моменты, начнут всплывать подробности, которые: забыли упомянуть; ну это же очевидно, ты же профи; мы сами не знали, это только выяснилось; ну это же мелочи, мы думаем тебе это будет не сложно; а ты не спрашивал; и т.п....

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

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

    Если ты попадешь в команду, где люди будут понимающие, квалифицированные, процессы выстроены, а джуну задачи будут сгружать джунские, то, считай, тебе крупно повезло. Шансов на это примерно 1%. Особенно учитывая, что джуны это обычно студенты лет в районе 20...

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

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

    Даже если тебе попадается практически идеальный проект, внезапно оказывается, что твоя оперативная память это 5-7+-2 объекта, а удерживать в голове одновременно нужно сотни...

    Зачем я все это рассказываю? Затем, что это реальность, которая для джунов не делает исключений.

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

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

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

    Теперь относительно того что делать - если в бэкграунде нет сильных скиллов по алгоритмике и структурам данных (олимпиады по программированию, универский курс информатики), то прям очень сильно рекомендую прокачать. Будучи наставником на нескольких курсах фронтенда я постоянно встречают студентов, которые "вроде бы" знают язык, но затрудняются скомпоновать пару циклов с условиями, вот буквально просто виснут на неопределенное время, причем без результата. Лично я рекомендую кодварс. Своих студентов я прокачиваю именно там. Достаточно прорешать 30-40 задачек, чтобы базовые скиллы ушли на уровень рефлексов и перестали парить мозг. Правда желательно решать это все с наставником.

    Косвенный бонус тут будет в том, что ты привыкнешь решать задачи на JavaScript. Я когда менял стек, поначалу мыслил на PHP, и подобный финт на кодварс позволил мне переформатировать мышление на JS. Вот мой профиль на кодварс как пруф: https://www.codewars.com/users/iCoderXXI

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

    Понять надо настолько глубоко, чтобы легко и просто, с юморком, рассказывать это любой первой встречной бабушке, да так, чтобы та всё поняла... Это вот прям залог успеха в JS, потому что все остальное держится на этих двух китах. В ютубе имеется курс Зоракса (Zorax) и JavaScript Weird Parts, оба про то же самое, первый на русском, второй на инглише. Кантор, безусловно, крут, но эти двое объясняют попроще и понятнее (имхо).

    После этого прокачиваемся в использовании встроенных методов JS, таких как map, reduce, includes, replace и пр. (на том же кодварс)

    После этого нужно прокачаться в ES6+, стрелочные функции, let/const, деструктурирование, рест оператор, классы, промисы, генераторы, async/await, декораторы - без этих продвинутых штук в современных фреймворках ловить нечего.

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

    Потом уже заостряемся на API форм, DOM, AJAX (fetch/axios), вебсокетах, Localstorage и пр.

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

    React только на первый взгляд выглядит простым, на самом деле это только view-библиотека, а в любом нормальном SPA есть много чего еще кроме view, поэтому React всегда идет в компании Redux, Router, и еще целой толпы всего, что тоже придется осваивать, не только с точки зрения API, но и с точки зрения философии (а нахрена оно вообще сдалось?)

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

    Далее освежаем базу по JS - типы, замыкания, прототипы, и смело топаем по собесам, будучи морально готовыми завалить первые десять.

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

    Еще вроде большие компании вроде Яндекса устраивают летнее обучение, с последующим трудоустройством лучших кандидатов, но это не точно.

    Оптимистичный прогноз - 6-12 месяцев плотного фигачинга и ты в тренде.
    Ответ написан
    7 комментариев
  • Где ошибка в коде?

    Stimulate
    @Stimulate
    могу
    var trouble = prompt('What is wrong?');
    
    switch (trouble) {
    	case 1:
    		console.log('check your cabel');
        break;
    	
    	case 2:
    		console.log('check your router');
        break;
    	
    	case 3:
    		console.log('reload your PC');
        break;
    	
    	default:
    		console.log('uncorrect trouble');
    	break;
    }
    Ответ написан
    1 комментарий
  • Где ошибка в коде?

    rockon404
    @rockon404
    Frontend Developer
    var trouble = +prompt('What is wrong?');
    
    var CABEL = 1;
    var ROUTER = 2;
    var COMPUTER = 3;
    
    switch (trouble) {
      case CABEL:
        console.log('check your cabel');
        break;
      
      case ROUTER:
        console.log('check your router');
        break;
      
      case COMPUTER:
        console.log('reload your PC');
        break;
      
      default:
        console.log('uncorrect trouble');
    }
    Ответ написан
    Комментировать
  • Нужно ли программисту, пищущему на языке высокого уровня, знать детали работы ЭВМ?

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

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

    Ничего личного против вас не имею - просто оно вот так почти всегда работает. Если с вами этого не случится - чудесно. Но вероятность, что отличный узкий специалист по Java выйдет из человека, который считает смежные предметы ненужными - стремится к нулю. Не потому что они вам понадобятся непосредственно (хотя я не очень представляю, как можно заниматься оптимизацией кода без понимания принципов работы ЭВМ), а из-за модели поведения.
    Ответ написан
    1 комментарий
  • Что использовать для создания интерактивной карты посёлка?

    Moskus
    @Moskus
    Самое простое, что вы можете сделать - использовать картографический фреймворк Leaflet.js leafletjs.com , данные хранить в UTFGrid https://github.com/consbio/Leaflet.UTFGrid и GeoJSON
    Готовить данные - в QGIS.
    Если не хотите программировать front-end сами, воспользуйтесь внедренным окном с сервиса nextgis.com
    Ответ написан
    9 комментариев
  • Какой выбрать монитор 4К?

    profesor08
    @profesor08
    4k монитор и бюджетный, это вещи несовместимые. Их нету. Такие мониторы, на данный момент, стоят дороговато. И любая хрень про 4к и бюджетность это вранье.
    Если у тебя текущий монитор от 20", то, после покупки монитора схожей диагонали, или чуть больше, как такового вау эффекта у тебя не будет. Картинка станет четче, но привыкнешь сразу и перестанешь замечать.
    Если ты хочешь монитор для работы или игрушек, то лучше присмотрись к широкоформатным мониторам 21/9 с диагональю от 30". Это если ты не планируешь двух-мониторную конфигурацию.

    P.S. Все вышесказанное это ИМХО. Но лучше всего сначала поразмысли, что ты хочешь от монитора и почему. А потом, на холодную голову, решай какой брать. Например я бы взял LG, можно еще DELL, если есть возможность бери от яблока.

    Лично я в первую очередь смотрю на эти параметры:
    Тип матрицы: IPS (oled непомерно дорого)
    Яркость, кд/м2: 300 (можно больше)
    Контрастность (FOFO): 1000:1 (стд.)
    Ответ написан
    1 комментарий
  • Как скачать изображение с директории?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Создаете файл filewithlinks.txt, где на каждой строке ссылка на картинку.
    И выполняете в консоли следующую команду:
    $ wget -b -P /home/user/Downloads -i filewithlinks.txt

    Менять название в URl-адресе не вариант, ибо слишком долго

    А по другому только FTP вас спасет ))
    Ответ написан
    4 комментария
  • Как в bootstrap сделать чтобы текст уменьшался вместе с блоком на разных устройствах?

    можно задавать размер шрифта в em, он будет зависеть от размера шрифта своего родителя

    Использовать единицу измерения vw.
    vw = 1 % от ширины пользовательской части окна браузера.

    p {
    font-size: 5vw; /* 5% от viewport */
    }
    Ответ написан
    1 комментарий
  • Как создать карту на сайте с метками и описаниями (с фото) для них?

    Moskus
    @Moskus
    Вообще, есть и достаточно мощные конструкторы. Только не на базе карт Яндекса, естественно.
    https://storymaps.arcgis.com/en/app-list/
    https://maphub.net/
    https://mapme.com/
    Ответ написан
    Комментировать
  • Как сделать чтобы блоки растягивались на всю высоту самого большого блока?

    @Psihoshit
    Самый простой вариант - сделать на флексах.

    div {
      display: flex;
      align-content: stretch;
    }
    Ответ написан
    3 комментария
  • Создание собственного онлайн-редактора кода - с чего начать?

    Stalker_RED
    @Stalker_RED
    Начать не сложно. Парочка textarea, блок для отображения и обновление по событию input.
    jsfiddle.net/Stalk/tfhvgg6z/show/light

    Остались мелочи - прикрутить подсветку синтаксиса, например.
    Но если возьмете готовую, то всё проще.
    Ответ написан
    Комментировать
  • Как найти значение, ближайшее к нулю?

    @abberati
    frontend-разработчик
    const getClosestToZero =
        (...nums) =>
      	nums.reduce((a, b) => Math.abs(b) < Math.abs(a) ? b : a, Infinity)
    Ответ написан
    Комментировать
  • Как найти значение, ближайшее к нулю?

    Stalker_RED
    @Stalker_RED
    function getClosestToZero() {
      let numbers = Array.prototype.slice.call(arguments)
      return numbers.reduce((prev, curr) =>
        Math.abs(prev) > Math.abs(curr)
                         ? curr : prev
      , +Infinity)
    }
    jsfiddle.net/x2erL66q
    Ответ написан
    1 комментарий
  • Сколько можно подключить usb флешек в линуксе?

    Moskus
    @Moskus
    Вам ни чем не поможет чей-то частный опыт, как это всегда и бывает. Потому что все весьма сильно зависит от конкретной конфигурации.

    Математика - простая: учитывая, что за устройство считаются и хабы, в ключая корневой, а максимум устройств на одном контроллере по спецификации USB - 127, при семипортовых хабах включенных каскадом, максимум на один контроллер будет 108 свободных портов, при четырехпортовых - всего 94. При этом, нужно понимать, что поскольку каждое устройство получает свой номер в пределах типа (major number), а число устройств одного типа ограничено размером minor number в один байт (256) - это, в общем случае, ограничение драйвера в Linux. Однако, в отдельных случаях, все это не имеет значения, потому что под конкретный Линукс что-то собрано не так, не оттуда или не из того, потому, например, более 20 устройств не видны вообще. Не забываем, также, про необходимость внешнего питания всему этому дереву из хабов и самих устройств. А еще - про то, что скорость доступа к устройствам делится между ними, и каждому достается обратно пропорционально их количеству.

    Так что если вы действительно собрались копировать flash-накопители (а не майнить биткоины внешними ASIC-устройствами, например), при каскадной конфигурации подключения, скорость записи будет, как во времена dial-up модемов. Что-то мне подсказывает, что вас это не устроит.
    Ответ написан
    Комментировать
  • Почему background-image не отображается на мобильных устройствах?

    zorca
    @zorca Куратор тега WordPress
    Просто супер сайт, с путям у картинок к локалхосту:
    <img src="//localhost/drones/wp-content/uploads/2017/10/fourth-service-img.png" alt="3d mapping">

    Даже переносить сайт надо уметь. Для Wordpress это делается путем поиска и замены всех включений в базе данных старого домена на новый. Если по простому с гарантией переноса 100%, юзайте плагин:
    https://www.akeebabackup.com/products/akeeba-backu...
    При установке кидаете в корень сайта полученный в плагине архив и установщик: https://www.akeebabackup.com/products/akeeba-kicks...
    Ответ написан
    2 комментария
  • Как влиться в тренд нынешней веб-разработки?

    Мне кажется нужно осваивать технологии современные. Приведу пример случая с препроцессором. До недавнего времени верстал тоже сам без всяких препроцессоров. Смотрел некоторые видео по их использованию и думал нафига эти все переменные писать, миксины. А потом как попробовал - это так удобно. Я просто словами не могу передать на сколько удобен scss/sass с его вложенностью.
    Ответ написан
    Комментировать
  • Как получить элементы состаного поля?

    @ilyarsoftware
    Стандартное использование составного поля:
    $someObjectId = 1253;
        $objects = umiObjectsCollection::getInstance();
        $bar = $objects->getObject($someObjectId);
        $optioned = $bar->getValue('_');
        $data = [];
        foreach ($optioned as $item) {
            $itemObject = $objects->getObject($item['rel']);
            $data[] = array(
              'objectId' => $item['rel'],
              'name' => $itemObject->getName(),
              'value' => $item['float'],
            );
        }


    Кроме этого для элемента составного поля можно использовать следующий формат:

    [
      'int' => 1, // bigint(20)
      'varchar' => null, // varchar(255)	
      'rel' => null, // int(10) - идентификатор объекта (umiObject)
      'tree' => null, // int(10) - идентификатор страницы (umiHierarchyElement)
      'float' => 0 // double
    ],
    Ответ написан
    Комментировать