Задать вопрос
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    Я постараюсь подключить философию, примеры и "как если бы я говорил в баре с вами".

    ЯП - это инструмент. Инструмент всегда взаимодействует с объектом и со средой. Соответственно, вам точно нужно что-то знать про объект и уметь пользоваться инструментом внутри среды, а это потащит дополнительные знания, назовем их "естественными" зависимостями. Насколько глубоко их нужно знать? Тут ответа не бывает: настолько, насколько нужно и хочется. Тут важен баланс и акцент. Если нет строгих параметров на уровне разума, нужно верить интуиции, потому что больше нечему. Для JS-программиста JSON/jQuery/AJAX - это естественные зависимости, их в любом случае не получится обойти. Даю зуб, что вам хватит вечера и немного гугла, чтобы стать чуть ли не LIKE A PRO в этом. Это все форматы хранения данных, либы, парадигмы. Это примерно как прочитать состав у шоколадки по сложности и входному порогу. Скорее всего, вас пугают сложные слова. Примерно как сказать "НАПРАВЛЕННЫЙ АЦИКЛИЧЕСКИЙ ГРАФ", и вы сразу знаете теорию графов, хотя с практической точки зрения суть настолько элементарна, что аж страшно, а вы будете долго прокрастинировать и искать что попроще.

    Это что касается близких и неизбежных естественных зависимостей. Но есть и более далекие, но тем не менее все равно естественные, их знание позволяет развиваться, иметь более полную картину в голове. Вот есть гитарист, он может быть просто технарем. Есть гитарист-музыкант, который чувствует дорийский лад в блюзе. А есть гитарист-музыкант-звукорежиссер, который наконец-то понял, как надо жирно сводить гитары и теперь в симбиозе со звукарем. Кто из них самый крутой, очевидно.

    Вы можете просто верстать (html/css) и игнорировать программирование в целом. Но естественная среда противится: вы уже (!) пишете на декларативном языке, неплохо было бы узнать об этом подробнее (о языках или даже о типизации), тем более, что крайне близко к вам находится интереснейший язык js, а там моментально вылезут проблемы связывания html и js, разные подходы к этому, целые парадигмы и фреймворки; и вот вам выпадает интересная задача по анимированию svg, вы курите мануал по нужной либе, читаете что-то про reflow/repaint, внезапно узнаете что-нибудь про селекторы. И через какое-то время, будучи все тем же верстальщиком, вы видите архитектурный косяк дизайна, который очень неудобно укладывается в используемые технологии, предлагаете его пофиксить и спасаете команду от факапа через месяц, когда какой-нибудь транзишн наложится на какой-нибудь position: fixed и еще и в Safari упадет анимация и только там, а тут и новая тудушка: "Переделать, нафиг, всю шапку, чтобы ок было". Что-то изменилось в мышлении и картина стала полнее. ВНЕЗАПНО вы уже и инженер, можно сказать, ЗП растет, все дела, рутины меньше стало.

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

    Подведу тут черту: естественные зависимости - это норма, а суть в инжиниринге. Можно двигаться по зависимостям дальше. У вас есть интервал, где есть минимальный порог, ниже которого нельзя, и максимальный, где вы "мастер на все руки", что тоже плохо. Между минимальным и максимальным порогом можно двигаться. Взять те же сети: разворачиваете приложение, видите линуху, настраиваете сеть. Можно немного заморочиться и прочитать про основы маршрутизации, буквально 2 вечера, можно еще про сетевой стек в линукс, еще 2 вечера, и уже будет во много раз проще. Кроме того, возрастет культура в целом и если вы программист на бэке, то вам будет проще взаимодействовать с админами. Про OSPF, очевидно, читать не надо, важен баланс. Баланс - это понимание того, на что у вас акцент (вы программист? какой? фронт/бэк? насколько важны сети/ос? проектируете бд? верстаете? интересен ли прикладной кодинг под какую-то ос и так далее...) и насколько интересны естественные далекие зависимости выбранной области.

    Так вот, теперь у нас есть естественные зависимости, инжиниринг и баланс между порогами. А не php/jquery/html/css.

    Важно также отметить, что все очень быстро развивается сейчас, а это еще один аргумент, что привязываться к инструменту не стоит. Кто-то может сказать, мол, взять тот же js, программирование на нем - это целая парадигма, иной подход, свои фичи. Это так, но дело тут не в js, а в целом в динамичных/интерпретируемых языках.

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

    А теперь, собственно, выводы:

    1) Вакансий крутых много, надо пробовать. Нужно только отличать близкие и необходимые естественные зависимости от мастера на все руки. Я считаю, что мастером на все руки нужно поработать хоть однажды, чтобы просто понять, почему это плохо. Но зависимости будут всегда, и это норма. Вы перечислили слишком радикально, конечно.
    2) Себя пилить под вакансию не нужно. Нужно просто идти туда, где интересно, всегда стараться быть инженером и не убить в себе искусство (то есть не бояться делать так, как кажется правильно, чтобы либо убедиться в правоте, либо ошибиться и стать круче).
    3) Не нужно думать в стиле "а что если завтра рубионреилс развалится, комьюнити разойдется, вакансий не будет, что я буду делать". Вы же инженер. У вас опыт в проектировании IT-систем, перейти на что-то смежное, если будет понятно, что технология умирает, не составит труда.
    4) По естественным зависимостям нужно двигаться по мере интереса, вы станете от этого только лучше.

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

    srko
    @srko
    JavaScript / HTML / CSS
    img {
      filter: grayscale(100%);
    }
    img:hover {
      filter: grayscale(0%);
    }

    Если Internet Explorer не нужен.
    Ответ написан
    1 комментарий
  • Ошибка в наследовании?

    @igorcc
    Проблема в вызове конструктора (такого конструктора нет):
    Man men = new Man(); //ошибка
    Создайте дефолтовый конструктор
    Ответ написан
    Комментировать
  • Выполнение цикла длительностью 6 минут или какой мощности нужен VPS?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    По хорошему, надо бы профилировать ваше приложение с целью оптимизации узких мест. Возможно что-то даже распараллелить.
    Только затем уже думать о наращивании вычислительной мощности.
    Либо смириться с большим временем выполнения.
    Ответ написан
    Комментировать
  • Что нужно знать, чтобы устроиться c++ программистом?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Попробуйте устроиться на летнюю стажировку (около 2х месяцев обычно) в какую-нибудь компанию. Ну а что для этого нужно, зависит от компании т.е. читайте требования к вакансии.
    Ответ написан
    Комментировать
  • Что нужно знать, чтобы устроиться c++ программистом?

    KorsaR-ZN
    @KorsaR-ZN
    По мимо языка нужно еще иметь представление о базовых алгоритмах и структурах данных.
    Понимать, как устроена работа с память да и вообще, как проходит исполнение самой программы.

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

    Так лучше бери проекты на фрилансе, наберешься опыта, знаний и сразу все твои вопросы отпадут, а работать ты всегда успеешь устроится (может junior'ом, а может к тому времени уже и middle)
    Ответ написан
    5 комментариев
  • Можно ли научиться быстро разбираться в чужом коде?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сейчас разбираю - в одном файле создание объектов через замыкания, через new и через Object.create. Нафига?


    Создание объекта через замыкание - модуль. Нужно потому что в JS нет модификаторов доступа и все приватное должно быть сокрыто в изолированной области видимости. Это шаблон.

    Создание объекта через new - а вы как объекты создаете? Не пользуетесь объектами вообще?

    Object.create - это уже для наследования применяется. Да, конечно если вооружиться каким ES6 все будет делать сам JS или трансляторы ES6 - ES5. Но знать об этом нужно.

    Как разбираться в чужом коде? Нужно уметь писать свой для начала. Описанные вами проблемы решает периодический код ревью и т.д. А среди фронтэндщиков писать говнокод так же популярно как и среди других разработчиков. Возможно только в PHP комьюнити процент говнокода больше. Это проблема отсутствия образования и понимания тех самых паттернов и т.д. Заучат для собеседования и все.
    Ответ написан
    6 комментариев
  • Как организовать словарь для быстрой работы с ним?

    Nipheris
    @Nipheris Куратор тега C++
    Из структур данных попробуйте посмотреть вот это (если конечно вам нужен поиск подстроки, а не всей строки целиком): https://ru.wikipedia.org/wiki/%D0%A1%D1%83%D1%84%D... , там есть ссылки на известные труды, что касается "не загружать оперативную память" - в общем-то для любой структуры данных можно организовать гибридное хранение - сам индекс построить заранее и хранить на диске (вполне логичный ход в случае предварительно подготовленного словаря), а в память загружать части индекса. Однако это значительно усложнит алгоритмы, нужно это вам или нет - зависит от деталей поставленной задачи (объем словаря, предельное время поиска и т.д.)
    Ответ написан
    Комментировать
  • Веб-приложение написано. Что дальше?

    @bromzh
    Drugs-driven development
    .
        _______                         ________
       |       |                       |        |
       |   n   | -> site1.com ->|  |-->| uwsgi1 |-->|   |--> app1 for site1
       |   g   |                |  |   |________|   |   |
    -->|   i   | -> site2.com ->|->|    ________    |-->|--> app2 for site2
       |   n   |                |  |   |        |   |   |
       |   x   | -> site3.com ->|  |-->| uwsgi2 |-->|   |--> app3 for site3
       |_______|                       |________|

    Это примерная общая структура деплоя нескольких питоновских wsgi-приложений.

    1) Nginx ставят вперёд в основном для:
    a) отдачи статики
    b) балансировки нагрузки
    Он быстрый, надёжный, статику отдаёт лучше, чем uwsgi, плюс, можно настроить всякие https. Однако, nginx не умеет запускать питоновские приложения. Для этого он проксирует запрос на wsgi-совместимый сервер.
    2) В wsgi-сервере запускаются все доступные питоновские приложения. Uwsgi можно довольно гибко конфигурировать, посмотри оф доки. Одной из классных штук является emperor-mode: uwsgi может сканировать папку на наличие конфигов и автоматом подхватывать питоновские приложения. Обычно создаётся 1 папка, а каждое wsgi-приложение просто делает симлинк с конфигом в эту папку.
    3) Uwsgi можно запустить как через обычный tcp-сокет, так и через unix-сокет. Что ты выберешь, то и надо будет указывать в конфиге nginx
    4) Uwsgi лучше запускать через supervisord. Он позволяет перезапускать приложение при падении, гибко настраивать запуск похожих демонов, перенаправлять stdout/stderr, настраивать переменные окружения и т.д.. Опять же, смтри доки. В конфиге прописываешь, как у тебя будет запускаться uwsgi и какой конфиг/папку с конфигами uwsgi будет читать.
    5) Если сервер имеет N ядер, то имеет смысл запустить N-1 штук процессов uwsgi на разных портах/с разными sock-файлами. Тогда nginx сможет балансировать нагрузку между ними. Запускать группу процессов можно либо через супервизор, либо задав настройки в конфиге самого Uwsgi, тут как удобнее. Разница будет лишь в том, что в первом варианте при падении одного uwsgi, остальные будут жить, а во втором случае, перезапустятся все процессы uwsgi (скорее всего).
    6) Не надо описывать конфиг каждого uwsgi-сервера в nginx отдельно, для группы есть upstream.
    7) Насколько я понимаю, если питоновское приложение 1, то лучше запустить несколько экземпляров uwsgi через супервизор, если их много - запускать несколько штук uwsgi в emperor-mode.

    Я точно не помню синтаксис конфигов, но должно получиться что-то похожее на такое:
    # Конфиг supervisor:
    [program:uwsgi]
    numprocs = 3 (для 4-х ядерного серва)
    command = uwsgi --emperor /path/to/conf/dir --socket /tmp/uwsgi/uwsgi-%(process_num).sock


    Либо так:
    # Конфиг  uwsgi: /path/to/conf/default.ini
    [uwsgi]
    socket = /tmp/sockets/uwsgi-%(vassal_name).sock
    
    # Конфиг супервизора
    [program:uwsgi]
    command = uwsgi --emperor /path/to/conf/dir ----vassals-include path/to/conf/default.ini


    В любом случае, всё это дело потом легко добавляется в nginx:
    upstream backend {
        server localhost:8001;  #для tcp-сокетов
        server localhost:8002;
    
        server unix:/tmp/uwsgi/uwsgi-1.sock; # для unix-сокетов
        server unix:/tmp/uwsgi/uwsgi-2.sock;
    }
    # А потом просто проксируешь на эту штуку:
    server {
        location / {
            listen       80;
            server_name site1.com;
            proxy_pass http://backend;
        }
    }
    
    server {
        location / {
            listen       80;
            server_name site2.com;
            proxy_pass http://backend;
        }
    }


    PS Возможно, если количество питоновских приложух сопоставимо с количеством процессоров, то может будет лучше настроить так: 1 экземпляр uwsgi на 1 приложение. Но я точно не знаю, имеет ли это смысл, надо читать внимательно доки uwsgi и nginx.
    Ответ написан
    2 комментария
  • Какой язык программирования наиболее востребованнный сегодня?

    C# пока ещё
    Ответ написан
    Комментировать
  • Какой язык программирования наиболее востребованнный сегодня?

    webus
    @webus
    Golang | Python | NodeJS | Java
    C#
    Ответ написан
    Комментировать
  • Какой язык стоит использовать для OpenSource GUI приложения?

    @SZolotov
    Asp.net core, MAUI,WPF,Qt, Avalonia
    Qt + C++ - 100% возможность разработки под все платформы.
    C# + Xamarin (Mono) - не уверен
    Ответ написан
    Комментировать
  • Зачем в python range() если есть xrange()?

    Kademn
    @Kademn
    Злой
    Сначала было слово и слово было Python... бла бла бла....
    А потом добавили range, который создавал всю последовательность натуральных чисел в памяти и это было хорошо, так как можно было их итерировать.
    А потом добавили xrange, который не добавлял весь набор в памяти, а вычислял следующий элемент, ничего не зная про остальные (предыдущие и последующие элементы), почти ничего не занимая в памяти. Так появились генераторы. И поняли, что генераторы это хорошо, отделили генераторы от итераторов и стало так.
    А потом Девид Бизли на Пайконе 2008, высеченными на камне презентациями... ой я увлекся.
    Ответ написан
    1 комментарий
  • Какие витаминки употребляют IT-шники?

    oia
    @oia
    свежий воздух , занятие спортом и все будет ок
    Ответ написан
    Комментировать
  • Какой язык выбрать для написания веб-серисов?

    @szx
    когда закончишь изучение в kz приезжай, в министерство связи
    Ответ написан
    Комментировать
  • Какой язык выбрать для написания веб-серисов?

    @Alexey_Kutepov
    Разработчик программного обеспечения
    Java тут рулит больше всего, хотя на питоне тоже можно)
    Ответ написан
    Комментировать
  • Какой язык выбрать для написания веб-серисов?

    @eskrano
    Java на будущее же расчитана и думаю будет актуальна еще много лет.
    Ответ написан
    Комментировать
  • Какой язык выбрать для написания веб-серисов?

    Skuayer
    @Skuayer
    developer
    Если писать на чистой джаве, то это будет еще то удовольствие) Spring, Jersey или Spark вам в помощь.

    На Java пишут и будут писать сервисы еще долго по моему мнению.
    Ответ написан
    1 комментарий