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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    суть моего вопроса в следующем - как действительно выглядит этот самый старт для программиста, то есть чем вообще этот человек должен заниматься?
    Мне как человеку со школы "болевшего" айти сферой, сложно понять человека, который хочет стать программистом "по тому что там много платят" или "это модно"... По этому старт для программиста в моем понимании - много читать и пробовать все это реализовывать в коде. Все остальное дает иллюзию что вы что-то про это знаете, так как что-то про это слышали. Без реального опыта написания кода это все мусор и тлен. Причем код должен быть рабочим, сложным для вас на текущем этапе, и в идеале вызывать жгучее желание заниматься этим еще...

    Существует ли реальная проблема нагруженности рынка труда людьми с курсов? Они вообще устраиваются по новой специальности?
    Из реального опыта - до финала более-менее нормальных курсов, которые дают какие-то реальные основы, доходит ~10-15% студентов, остальные отваливаются, так как пришли за легким чтивом и халявой, а тут оказывается вкалывать нужно... Оставшиеся либо просто слишком настойчивы, но никак не пригодны, либо реально чего-то стоят, и там по Парето - 70/30 где то никаких/толковых. Вот эти 30 рано или поздно найдут работу.

    Заметили ли настоящие промышленные программисты какое-то изменение в своей работе после появления хайпа вокруг их профессии?
    настоящие промышленные программисты звучит как мускулистые работяги, мышью и клавой добывающие сталь в домнах ) Честно говоря - хз, ну есть какой-то нездоровый хайп вокруг айти, может чуть зарплаты в среднем выросли, но они и так достаточно серьезно растут с ростом скила програмера. Короче больше шума чем какой-то движухи...
    Ответ написан
    Комментировать
  • Нужно ли 40-летнему джуну уметь максимально много?

    php666
    @php666
    PHP-макака
    Короче, я боюсь, что, выучив слишком много всего, стану отпугивать работодателей своей продвинутостью.
    лол
    40 лет, а мыслит как 18-и летний юноша-максималист
    выучит он "слишком много всего"
    ты выучи сначала
    потом приходи сюда
    когда ты "слишком много всего" выучишь, тебе минимум будет 45 лет

    Но вот думаю: А не слишком ли "крутым" я стану?
    на первом же собеседовании тебя сотрет в порошок 25-30 летний чувак с опытом и покажет твое истинное место.
    это не оскорбления.
    это твое будущее.
    Ответ написан
    8 комментариев
  • Отличается ли принцип написания back-end'a от принципа написания мобильного приложения?

    delphinpro
    @delphinpro
    frontend developer
    Я, как человек, пытавшийся написать мобильное приложение для собственных нужд, ответственно заявляю – если вы писали бэкэнд не на джаве, то будет сложно. Разные языки, разные подходы, разные технологии. Нужно не один месяц переучиваться.
    Ответ написан
    1 комментарий
  • Зачем нужна @Qualifier, если после нее ничего нет?

    @Anrek Автор вопроса
    Я разобрался. Есть @Qualifier из разных пакетов. Оба они касаются DI (внедрения зависимостей).

    В реальной жизни может сложится ситуация, когда создаётся несколько бинов одного и того же типа (например, с 1 и тем же интерфейсом), но в конкретном случае например необходим конкретный бин. @Qualifier — аннотация позволяет уточнить какой именно.

    1) Есть @Qualifier, которая импортируется из пакета CDI JSR 330 (CDI-это стандарт Java для контекстов и внедрения зависимостей, а JSR-330-это его подмножество, которое он полностью поддерживает), импортируется так:
    import javax.inject.Qualifier
    Ее уточнение не добавляется, просто пишется так:
    @Qualifier

    2) Есть @Qualifier, которая импортируется из пакета фреймворка Spring (фреймворк для внедрения зависимостей), импортируется так:
    import org.springframework.beans.factory.annotation.Qualifier

    И ей как раз указывается "уточнение" в скобках:
    @Qualifier("appContext1")

    В Spring бин называется по имени и вызывается явно по нему.

    В случае JSR 330 для этого создается своя аннотация для разделения зависимостей с одинаковыми интерфейсами и затем применяется и к классу бина и к зависимости. Документ про который шла речь в вопросе как раз перечень таких аннотаций.

    Итого: в Spring - определяемся с необходимым бином по его имени, а в JSR 330 - по имени его аннотации и удобно перечень всех этих аннотаций собрать в отдельный файл (что и сделали).

    Источник (тут же можно и примеры посмотреть)
    Ответ написан
    1 комментарий
  • Как подружиться c SMTP от Яндекса?

    Prosto
    @Prosto
    Сгенерировал одноразовый пароль - не помогло.
    Потом включил в настройках яндекса
    Разрешить доступ к почтовому ящику с помощью почтовых клиентов
    С сервера imap.yandex.ru по протоколу IMAP

    Хотя казалось бы при чем тут smtp
    И всё заработало
    Ответ написан
    7 комментариев
  • Как подружиться c SMTP от Яндекса?

    alex5e
    @alex5e
    Адрес отправителя при отправке письма должен быть таким же как и адрес ящика с которого вы авторизуетесь через smtp
    Ответ написан
    2 комментария
  • Как подружиться c SMTP от Яндекса?

    @kulakovfoto
    Яндекс не принимает обычный пароль от почты для сторонних приложений.
    Необходимо создать отдельный пароль для приложения.
    Зайти в web-интерфейс. Настройки->Безопасность->Включите и создайте пароли приложений.
    Ответ написан
    1 комментарий
  • Опыт и портфолио для поиска первой работы в качестве программиста?

    @mkone112
    Начинающий питонист.
    Вроде не такой большой вопрос, удивительно как много чуши ты смог сюда запихнуть.
    понакупил курсов

    Ну молодец, че.
    понятно, что знакомство это поверхностное.

    Это никому не нужно. Поверхностно == не знаешь.
    Где мне набираться опыта, с которым я смог бы искать постоянную работу как программист?

    Дома, но я предпочитаю в кафешках - мне там лучше думается.
    На чем набивать руку?

    На коде.
    Что показать работодателю?

    Знания.
    уверенности в своих силах

    Хватит сопли жевать.
    И вообще, что стоит добавлять в свое портфолио, а что лучше не выкладывать?

    Хреновый код не выкладывай, годный - выкладывай.
    Брать задания на фрилансе?

    Ты и сам знаешь ответ:
    Ведь таких недоучек, как я, там тысячи.
    Ответ написан
    Комментировать
  • Хочу стать Android программистом. С чего мне начать?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Прочитать документацию на kotlinlang и пройти kotlin koans(можно не включая DSL). Прочитать developers.android.com.
    Всё это время писать код. Это основное правило.
    Попробовать устроиться куда-то стажёром или джуном.
    Пытаться поступить во все доступные школы разработки(например). Делать в них тестовые задания, стараясь повышать свой уровень.
    Когда "не знаю как сделать что то - гуглю и делаю", стараться не копипастить, а разобраться, что происходит.
    Ответ написан
    Комментировать
  • Какой тип данных/структуру использовать для быстрой обработки промежутков?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Простой в реализации метод: держите отрезки в каждом элементе отсортированными и непересекающимеся (если два отрезка пересекаются - объедените их).

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

    Если же список очень длинный, а ответ ожидается маленький, то есть более быстрый метод. Но он сложный в реализации. Нужно реализовать персистентное дерево поиска. Можно его реализовать на основе персистентного дерева отрезков. Это такая структура, в которую можно добавлять элементы, и удалять их за O(log n). Также можно обходить все элементы за O(log n + (их количество)). Кроме того, сохраняются все версии дерева после каждой операции и общее количество памяти будет O(к log n), где к - количество операций.

    Эта структура будет использоватся для хранения предподсчитанных ответов. Если все ваши отрезки нарисовать на одной прямой, то она разобъется на O(n) отрезков, все точки которого будут давать один и тот же ответ при запросе. Мы эти все ответы компактно сохраним.

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

    Итак, создайте массив из структур {координата, это начало или конец, номер элемента}. Отсортируйте по координате, потом по флагу начала. Потом пройдитесь по ней и при обработке начала отрезка - добавляйте номер элемента в персистентное дерево. При обработке конца - удаляйте элемент из дерева. Так же перед обработкой каждого элемента запишите в массив-ответ: {предыдущая координата, текущая координата, ссылка на текущую версию персистентного дерева}, если предыдущая координата строго меньше текущей. Этот массив-ответ будет хранить все возможные отрезки с различными наборами ответов в виде {координата начала, координата конца, ответ}.

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

    Это решение требует O(n log n) памяти (где n - количество всех отрезков) и O(n log n) времени на предподсчет и O( log n + (ответ)) времени на обработку ответа.

    Более простое решение, где ответы считаются так же сканирующей прямой, но сохраняются просто в виде списков, а не версий персистентного дерева, может требовать O(n^2) памяти. Но будет работать быстрее, конечно.
    Ответ написан
    1 комментарий
  • Как сделать такой элемент при наведений?

    Neobezatelno
    @Neobezatelno
    Дюшес
    Ответ написан
    Комментировать
  • Как ехе дать по умолчанию запуск с правами администратора?

    @rPman
    Единственный способ исключить запрос ввода логин пароль или запроса превышения, это запускать через планировщик задач.

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

    Для запуска в последствии нужно выполнить команду (в ярлык ее указать)
    schtasks.exe /run /tn имя_задачи
    Ответ написан
    7 комментариев
  • Что можно использовать от фреймворка в DDD?

    @k2lhu
    При работе с Yii2 изначально стоит выносить любые компоненты в обертки, и их использовать по проекту, так вы легко сможете отвязаться от реализации, используя интерфейс обертки.

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

    Но вся ваша идеальная задумка DDD с Yii2 легко развалится при использовании ActiveRecord и базовых моделей - в них сразу пихается и валидация, и каст, и обработка поведений на сохранение/обновление/удаление, так еще в старых проектах еще и триггеры навешивают часто. Может стоит подумать, нужен ли вам вообще тут DDD? Если это сделано с целью отвязаться от фреймворка в любой момент - то используйте для моделей Entity, Collection и выносите сразу все в репозиторий, легко сможете мигрироваться на тот же симфони. Безболезненного перехода не бывает и так или иначе что-то да придется переписывать, но все сможете это сделать просто поменяв код ваших репозиториев и контроллеров с реквестами.
    Ответ написан
    1 комментарий
  • Что из себя представляет поиск по диалогам в мессенджере?

    @0x131315
    Быстрый поиск всегда осуществляется по индексу - специально подготовленному набору данных, содержащему только ключевые для задачи поиска данные, в сжатом формате, и размеченные определенным образом для быстрого доступа к записи.
    Индексы сегодня полностью обслуживают специальные поисковые движки, коих на рынке много. Велосипеды тут не нужны.
    Индексов может быть много - так можно изолировать непересекающиеся наборы данных, и избежать больших "общих" индексов.
    Если производительности одного сервера не хватает, применяют кластеры - поиск по индексам хорошо поддается кластеризации.
    Чтобы обновлять индексы нужно периодически выполнять переиндексацию - вычитывать полный набор данных и заполнять ими индекс. Это очень тяжелый процесс, поэтому обычно его делают редко и в малонагруженное для сервиса время.
    Чтобы можно было искать с учетом всяких прав и статусов сообщений, эти права и статусы сохраняются в тот же индекс как атрибуты, и участвуют в поисковом запросе. Так можно персонифицировать поиск.
    Чтобы индексы работали как в реальном времени и соответствовали данным приложения, на приложение навешивают хуки: пользователь скрыл сообщение - сработал хук и переиндексировал только одно это сообщение, что практически не дает нагрузки.
    Ответ написан
    2 комментария
  • Как снизить разгон процессора i7 10750H?

    @valek97 Автор вопроса
    Нашел решение проблемы. В общем тут есть несколько моментов. 1)Производитель намахивает с максимальной частотой, процессор с текущей СО не может справиться с таким тепловыделением и заявленная частота в 5Ггц утопия или в идеальных условиях. 2) Не знаю от кого, производителя ПО или железа по умолчанию стоит параметр тепловыделение процессора на 200W!? У меня процессор на 45w. Он может выделить больше, но СО не справится с такой нагрузкой. 3) Режимы энергопитания. Процессор нормально сбрасывает и наращивает частоты (в зависимости от нагрузки)только в режиме питания - Сбалансированно. В других режимах частоты не сбрасываются и держатся на пике.
    Решение:
    1)Ставим ПО intel extreme tuning utility . Согласно спецификации на ноут средняя расчетная TDP -45w. Погоняв процессор с пм проги пришел к следующим параметрам. Режим короткой большой нагрузки :20 сек, 45w.
    Дальше спустя 20 сек после этой нагрузки если она не спадает процессор переходи в режим turbo boost power max, он дальше работает в нагрузке по нему. Я выставил его в 40w Стабильная температура под нагрузкой 80-90, за 90 не переходил, выше 92 тротлинг. Кто захочет может под себя подстроить.
    2)Если кому-то не хочется ставить ПО, можно воспользоваться системным параметром и выставить значения максимальной частоты в ГЦ. Ссылка(https://windowsnotes.ru/windows-10/upravlenie-chas...) В конце статьи с реестром.
    3) Можно ещё через фирменно приложение MSI для ноутбуков(если у вас ноут). В режиме питания dragon center 2. Но я не заметил какой-то нормальной функциональности в нем кроме режимов работы вентиляторов.
    Ответ написан
    1 комментарий
  • Как сделать inline блок с Flatlist (подробности на картинке)?

    @Denioo
    Для чего вам FlatList? Можно сделать обычным блоком и задать стиль flexWrap: 'wrap'
    Хотя попробуйте данный стиль и с Flatlist
    Ответ написан
    Комментировать
  • Стоит ли начинать изучение программирования в 13 - 14 лет?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Стоит ли начинать изучение программирования в 13 — 14 лет?

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

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

    Язык в данном вопросе не важен, важно любопытство, интерес и большое количество времени которое вы тратите.
    Ответ написан
    3 комментария
  • Выбор курсов Android: OTUS или GeekBrains?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    И то и другое - пустая трата денег.
    Ответ написан
    5 комментариев
  • Retrofit: как быть, когда структура ответа сервера меняется?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Да с этим можно жить. Сам Ретрофит не конвертит ответ в json, для этого ему проставляется addConverterFactory(factory). Нужно написать кастомный адаптер для той библиотеки конвертации json, которую ты используешь(примеры про Gson). Из ответа придется понимать, что именно пришло и возвращать соответствующий объект.
    Ответ написан
    7 комментариев
  • Троттлинг процессора и видюхи, как исправить данную особенность в ноутбке?

    xez
    @xez
    TL Junior Roo
    Исправлять ничего не нужно. Тротлинг пытается спасти ваше железо от разрушения из-за перегрева.
    Проблема, скорее всего, в охлаждении. Вот его исправить можно и нужно.
    Ответ написан
    Комментировать