• Что происходит на рынке труда в айти?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Если честно, то на рынке ИТ все сейчас очень сложно. Причин несколько, а анализ легко растянется на полноценную статью, даже была мысль написать наХабр и Линкедин по этой теме. Постараюсь коротко пройтись по основным трендам.
    1. Доступность удаленной работы, соответственно регионы и Индия с низкими зарплатами ворвались на рынок.
    2. Миф о высокой зарплате. Когда то так было, сейчас курьер Яндекс-еды зарабатывает больше, чем средний программист. Про продажников даже не хочу говорить, знаю людей, легко имеющих и по миллиону в месяц.
    3. Мифы о легком старте. На самом деле точка входа в профессию достаточно высока, так как мало освоить навыки кодера, нужно еще иметь логическое мышление, знать математику, анализ, разбираться в предмете (физика для игр, экономика для 1С, производство для автоматизации и многое другое). И, возвращаясь к пунктам 1 и 2, за хорошую зарплату придется после пары месяцев курсов конкурировать с индусами, которые имеют по 10 лет опыта, с регионами, где есть специалисты с 20-летним опытом, готовые работать за зарплату джуна в Москве.
    4. Отдельно выделю сильно усложнившиеся программы, сложность разработки, несмотря на множество облегчающих жизнь инструментов, за последние годы выросла достаточно сильно.

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

    Надеюсь, ответил достаточно понятно)
    Ответ написан
    4 комментария
  • Какой самый оптимальный стек основных серверных технологий для интернет-магазина?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Первое что в голову пришло:
    1. opencart
    2. wordpress + woocommerce
    Ответ написан
    Комментировать
  • В css указан один фон, а по факту передаётся другой, в чём причина?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Скорее всего дело в разных заголовках "Accept" при запросе ресурса напрямую, и когда он подгружается через <link href, так как эти заголовки отличаются от тех которые браузер посылает если вы просто напрямую открываете ссылку в адресной строке.

    Посмотрите в браузере во вкладке "Network" какие заголовки посылает браузер при загрузке main.css.php

    spoiler
    615dbfe7422e8208650300.pngтык


    Решение этой проблемы - определять поддержку формата в скрипте который отображает страницу и исходя из результатов встраивать стили передавая GET-параметры
    main.css.php?avif=1&jpg=1&webp=0
    И внутри main.css.php строить логику от GET-параметров

    Либо никакой логики в main.css.php не делать, а добавить inline-стили в страницу где перезаписать уже background
    <link href="main.css.php"> // <- тут всегда jpg
    <style>
    body {
        background: перезаписываем стили исходя из поддерживаемого формата
    }
    </style>
    Ответ написан
    4 комментария
  • В 40 лет планирую поменять сферу деятельности с 1С на Android? Сколько на старте смогу зарабатывать?

    @nApoBo3
    Без просадки, особенно в 40 лет с детьми мало реально, возможно, но имхо это из области фантастики.
    Ответ написан
    3 комментария
  • Как получить часть строки после последнего «/»?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    const getLastPartOfURL = url =>
        decodeURIComponent(url.slice(url.lastIndexOf('/') + 1));
    Ответ написан
    Комментировать
  • Как получить часть строки после последнего «/»?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Number(document.location.pathname.split("/").pop())
    на этой странице даст число (не строку) 1055184
    Ответ написан
    Комментировать
  • Как получить часть строки после последнего «/»?

    0xD34F
    @0xD34F Куратор тега JavaScript
    str.split('/').pop()
    // или
    str.match(/[^\/]+$/)[0]
    // или
    str.replace(/.*\//, '')
    // или
    str.slice(str.lastIndexOf('/') + 1)
    // или
    Array.from(str).reduce((acc, n) => n === '/' ? '' : acc + n, '')
    // или
    [...str].filter((n, i, a) => !a.includes('/', i)).join('')
    Ответ написан
    1 комментарий
  • Как отправить данные разных типов (json и formdata) методом POST?

    @zkrvndm
    Софт для автоматизации
    Все проще, чем вы думаете:
    formData.append('canvas_field', blob, 'canvas.png'); 
    formData.append('name', 'Tom'); 
    formData.append('age', '30');

    На сервере смотрите содержимое суперглобальных переменных $_POST и $_FILES.
    Ответ написан
    3 комментария
  • Долго ли искать свой первый оффер ux/ui- дизайнеру, который только-только закончил курсы?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    За любого специалиста говорит его портфолио и кейсы, за дизайнера особенно. Сделайте 6-8 качественных работ, разместите их на behance. Вы должны делать как минимум выше среднего по рынку, чтобы иметь шанс отклика от hr, а дальше уже ваша продажа — нужно показать как вы вникаете в задачу клиента и как обосновываете свои решения

    Предлагаю вам сразу рассмотреть такую задачу: возьмите эту страницу с вопросом, на которой вы находитесь и страницу с личным кабинетом на Тостере. Попробуйте сделать редизайн — переверстайте, добавьте полезную информацию, интерактивные элементы. Подумайте как сделать, чтобы больше пользователей пришли писать вопросы, отвечать ответы и больше времени проводить на сайте. В качестве референсов используйте Stack Overflow, Reddit, Яндекс.Кью и известные вам соц.сети

    Тут много чего можно сделать и вот вам несколько идей:

    • Добавить статистику просмотра профиля, статистику просмотра ответов, добавить кучу графиков с просмотрами своих ответов по тегам, чтобы видеть прогресс
    • Переверстать иконки ачивок, добавить разнообразия, добавить временные за неделю/месяц/год, добавить уникальные и премиальные для тех, кто делает большой вклад в развитие комьюнити
    • Добавить функцию (и самостоятельные страницы) "ответить позже" и "сохраненные ответы"
    • Чуть переверстать форму ответа (отступы от blockquote и некоторых других элементов выглядят плохо)
    • Добавить ajax поиск в своих ответах — сейчас найти свой ответ в позапрошлом месяце вообще боль


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

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    Зависит ли это от стека технологий?

    зависит буквально от всего.
    Может быть есть какие нибудь специальные тесты для проверки этого?

    Да, для этого существует нагрузочное тестирование.
    Провести его можно при помощи яндекс танка/jmeter/gatling
    Ответ написан
    2 комментария
  • Как обработать все аргументы функции?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    func_get_args возвращает копии переданных аргументов, так же, как и func_get_arg.
    Само собой, изменения в копии никак не отразятся на самих аргументах.
    Ответ написан
    1 комментарий
  • Как узнать, существует ли email?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    Отправить на эту почту письмо с ссылкой для продолжения регистрации.

    Больше никак
    Ответ написан
    Комментировать
  • Как правильно установить setTimeout() в расширении для хрома?

    @zkrvndm
    Софт для автоматизации
    Пример:
    Развернуть код
    function waitElements(selector, regexp, where) {
    	
    	return new Promise(function(returnResult) {
    		
    		var search_result = false;
    		
    		var local_reactive_function = function() {
    			
    			var wait_elements = searchElements(selector, regexp, where);
    			
    			if (wait_elements.length > 0) {
    				
    				if (search_result === false) {
    					
    					search_result = true;
    					observer.disconnect(); 
    					
    					returnResult(wait_elements);
    					
    				}
    				
    			}
    			
    		}
    		
    		var observer = new MutationObserver(local_reactive_function);
    		
    		observer.observe(document.body, {
    			characterData: true,
    			attributes: true,
    			childList: true,
    			subtree: true
    		});
    		
    		local_reactive_function();
    		
    	});
    	
    }
    
    function searchElements(selector, regexp, where) {
    
    	var search_elements = [];
    	
    	if (typeof where !== 'undefined') {
    		
    		var all_elements = where.querySelectorAll(selector);
    		
    	}
    	
    	else {
    		
    		var all_elements = document.querySelectorAll(selector);
    		
    	}
    	
    	for (var n = 0; n < all_elements.length; n++) {
    		
    		if (typeof regexp == 'object') {
    			
    			if (typeof regexp.test == 'function') {
    				
    				if (regexp.test(all_elements[n].innerText.trim())) {
    					
    					search_elements.push(all_elements[n]);
    					
    				}
    				
    			}
    			
    			
    		}
    		
    		else {
    			
    			search_elements.push(all_elements[n]);
    			
    		}
    	}
    	
    	return search_elements;
    
    }

    Функция waitElements возвращает промис, который завершается при появлении указанных элементов.

    Например, чтобы дождаться появления на странице элемента с классом .class достаточно выполнить в консоли:
    elements = await waitElements('.class');
    
    console.log('Элементы успешно найдены:');
    console.dir(elements);
    Ответ написан
    Комментировать
  • Как скрыть определенные элементы, с повторяющимися id, в определенном блоке при использовании change(), если этих блоков может быть много?

    pLavrenov
    @pLavrenov
    Разработка сайтов
    Основы говорят что что на странице не должно быть одинаковых ID!

    Ошибка в том что получая вот так $("#main_cat").val() всегда берется первый найденый.

    Если все элементы сгруппированы то получать их надо внутри своего родителя.
    Ответ написан
  • Как сделать, чтобы язык в html файле выбирался в зависимости от языка системы пользователя?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    https://developer.mozilla.org/en-US/docs/Web/API/N...
    https://qna.habr.com/q/338809

    Правила сервиса:

    2. Перед тем как задать вопрос пользователь Сервиса обязан:

    2.2 Убедиться в том, что в сети Интернет, и на страницах Сервиса в частности, отсутствуют ответы на данный вопрос. Специально для этого талантливые IT-специалисты создали и развивают поисковые системы Яндекс и Google.
    Ответ написан
    Комментировать
  • Проблема с ajax?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    data: 'action=editAccount&settings=' + array_setting,

    В этой строке вы складываете строку с объектом. По стандарту JS при этом объект преобразуется в строку '[object Object]'.
    Ответ написан
    Комментировать
  • 0 Call to a member function get() on null как испаравить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не записывать null в $params.
    Ваш К.О.
    Ответ написан
    Комментировать
  • Какстомный парсер цвета строки?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Навскидку - обходить строку регуляркой с флагом g, которая вылавливает эти фигурные вставки. Цвета могут быть вложенными - потому надо держать стек цветов, при открывашке добавлять, при закрывашке убирать цвет. Остальное неясно из условия: что надо с этим всем делать.

    Для простой замены можно так
    const result = '{red}hello world{endRed}'.replace(/\{(?:end[A-Z][a-zA-Z]*|([a-z]+))\}/g,
        (m, c) => c ? `<span style="color:${c}">` : `</span>`);


    здесь предполагается, что цвета указаны словами. Если есть ещё какие форматы задания цветов, например #hhhhhh, то опиши, как будет выглядеть
    Ответ написан
    Комментировать
  • Каким образом микроконтроллер может отправлять данные на сервер?

    gbg
    @gbg
    Любые ответы на любые вопросы
    0) Терминология. Микроконтроллер - это как правило, микросхема и только микросхема. Которая содержит в себе оперативку, вычислительное ядро, некоторые периферийные устройства (например, wi-fi стек, как ESP8266).

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

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

    В зависимости от этого, используют или HTTPS, как главный на сегодня протокол для безопасных коммуникаций в интернете, или MODBUS (в пределах локальной сети контроллеров со шлюзом в интернет), или свой велосипед.

    Использование в интернете каких-то протоколов, отличных от HTTP(S) сразу тащит за собой кучу проблем вида "а вот у меня провайдер режет порты".
    Использование HTTP влечет за собой проблемы вида "S in IoT stands for Secure". Ваш трафик сможет прослушивать и модифицировать любой желающий, а также встраивать в него рекламу.

    Вывод. Если ваш контроллер смотрит напрямую в Интернет, используйте HTTPS / WebSocket. Если через шлюз - используйте MODBUS.

    Для того, чтобы использовать велосипедное решение, нужно назвать как минимум три фатальных недостатка вышеперечисленных. Утверждение "это изобрел не я" не является фатальным недостатком технологии.
    Ответ написан
    Комментировать
  • Почему let x не попадает в window?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Мужик, ну ты хотя бы документацию прочитай, прежде чем вопрос задавать!!!

    Вот с MDN цитата

    На верхнем уровне скриптов и функций let, в отличии от var, не создаёт свойства на глобальном объекте.


    ДОКУМЕНТАЦИЯ!!! – наше всё.
    Ответ написан
    13 комментариев