Задать вопрос
  • Почему востребован Java?

    Foror
    @Foror
    Графоман
    >причина популярности Java
    Как-то так:

    - простой синтаксис, без лишних сложностей - я лет 8 на С++ не програмил, но в последнее время, бывает гляну на С++ код и просто тихий ужас :) А альтернатив С++ просто нет, только Java. Нет, конечно есть всякие Rust, D, но это пока для гиков поиграться.

    - удобная организация библиотек и качественные инструменты для управления зависимостями (остальные только-только начинают догонять) => без головняков собирать большие проекты и подключать сторонние либы

    - проработанная и шустрая многопоточность, в том числе так называемые goroutine, особенно в последних версиях (7-8)

    - JVM, на которой можно легко програмить на Scala, Groovy, Python, Ruby, JavaScript, Kotlin, Ceylon и т.д. и т.п. Если не нравится синтаксис Java. При этом то, что запрограмил на Python будет доступно из Java, и наоборот. Это очень круто. Но все еще высок порог входа, чтобы управлять всем этим хозяйством. Я вот, как раз пилю кое-что в данном направлении, чтобы обрушить этот порог :)

    - Android

    - (Инди) игры (Minecraft, Delver, Lineage - тысячи их)

    На десктопах Java нет, лишь из-за C# и Windows, а так посмотрите InteliJ IDEA 13 это пример насколько может быть сексуальным десктопный интерфейс на Java.

    И еще, те кто пытался писать на Ruby, затем переделывали на Java/Scala, т.к. 1 сервер на Java, проще, чем 10 серверов на Ruby при той же нагрузке.

    >скорость выполнения программ крайне низкая
    Это миф, тянущийся из бородатых 90-х. Современные HTTP серверы построенные на Java по производительности на уровне C/C++ реализаций. Но памяти конечно жрут больше, но это отдельная тема и в наше время это не такая уж и проблема.
    Ответ написан
    1 комментарий
  • Как сделать такие контуры у блоков?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Я хотел сначала дать решение, но после последнего абзаца
    Помогите пожалуйста специалисту, который только возобновил работу после 3 лет декретного отпуска:)

    подумал, что вам будет очень полезно самой почитать и разобраться https://css-tricks.com/building-progress-ring-quickly/
    Эта штука называется по разному - radial progress, ring, progress, cyrcle progress, просто гуглите это название с добавкой "css", найдете много материала.
    Ответ написан
    5 комментариев
  • Как сделать такие контуры у блоков?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Чуть проще и понятнее: тут и тут

    PS: И бонус, как всегда: тут.
    Ответ написан
    2 комментария
  • Как в Crome DevTools можно просматривать все события страницы?

    @xtress
    Web-dev
    Выполните в консоли monitorEvents(document.body); Увидите все события по мере их появления. Если надо фильтровать - второй аргумент для этой функции: monitorEvents(document.body, 'click'); - покажет все клики.
    Ответ написан
    3 комментария
  • IT-шник на дому, а-ля фрилансер должен регистрироваться как самозанятый гражданин?

    @Drno
    ПО закону вы должны ть оформленны и у них на юр лице как сотрудник или как ИП.
    КОгда введут самозанятых - то или ИП или самозанятый.
    Перестаньте деньги на карту получать,берите наличкой... Вы же в ИТ, должны понимать последствия...

    Вторая часть.
    А какой смысл регистрироваться? Никаких бонусов кроме отбора государством у Вас денег это Вам не принесет... Ни помощи какой либо, ни выдачи кредитов, ничего. ПОэтому смысла я лично не вижу никакого
    Ответ написан
    16 комментариев
  • Как правильно подставить url адрес до изображения?

    0xD34F
    @0xD34F Куратор тега Vue.js
    <img :src="comment.comment_image">
    Ответ написан
    Комментировать
  • Как правильно подставить url адрес до изображения?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    В Vue свойства подставляются через bind
    <img bind:src="comment.comment_image"/>
    или просто
    <img :src="comment.comment_image"/>
    Ответ написан
    Комментировать
  • Какой посоветуете фреймворк для создания конструктора?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Для тасканий картинок по канве
    https://konvajs.github.io/
    fabricjs.com
    https://two.js.org/
    Легковесное gui
    https://svelte.technology/
    Если результирующее изображение потребуется сохранять
    https://github.com/eligrey/FileSaver.js/
    Ответ написан
    1 комментарий
  • Какие есть бесплатные сервисы для обработки изображений для портфолио?

    Гугл -> PSD Mockups
    Ну и фотошоп, разумеется.
    Ответ написан
    Комментировать
  • Как в однофайловых компонентах Vue передать props?

    0xD34F
    @0xD34F Куратор тега Vue.js
    export default {
      data () {
        props: ['a'],
        return {
          qwe: "Привет 2"
        }
      }
    }

    Это шизофрения какая-то. Наверное, имелось в виду

    export default {
      props: ['a'],
      data() {
        return {
          qwe: "Привет 2"
        }
      }
    }
    Ответ написан
    Комментировать
  • В каком районе Питера больше всего ИТ-компаний (желательно с разработкой на Java)?

    opium
    @opium
    Просто люблю качественно работать
    А какая разница вы же не можете работать во всех, самый простой вариант съёмное жилье около работы
    Ответ написан
  • Оценка своего уровня. Как улучшить код?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Используйте const вместо let для определения переменных которые не переопределяются в коде. Это помогает снизить когнитивную нагрузку с человека читающего код и негласный стандарт в React разработке.

    2. Такие вещи как globalStyles и конфигурацию store лучше вынести в отдельные файлы. Они могут со временем хорошо разрастись.
    По поводу globalStyles, вы вообще можете вынести их в отдельный css файл.

    3. Вместо:
    {
      isModal
      ? <Route path="/auth" component={AuthPopup} />
      : null
    }

    лучше:
    {isModal && <Route path="/auth" component={AuthPopup} />}


    4. Вместо:
    function mapDispatchToProps(dispatch) {
        return {
            autoLogin: () => dispatch(autoLogin()),
            getBrowser: () => dispatch(getBrowser()),
            getMedia: () => dispatch(getMedia())
        }
    }


    лучше:
    const mapDispatchToProps = {
      autoLogin,
      getBrowser,
      getMedia,
    };


    5. Точки с запятыми в конце то есть, то нет. Определитесь и приведите код к одному виду.

    6.
    & label {}
    & input {}
    & span {}

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

    7. Почему папка со страницами называется Containers? Дань бойлерплейтам?

    8. Использование trailing comma является хорошей практикой.

    9.
    import {combineReducers} from 'redux';
    import photoReducer from './photoReducer';
    import authReducer from './authReducer';
    import globalReducer from './globalReducer';
    
    export default combineReducers({
        photoReducer, authReducer, globalReducer
    })


    Все таки приятней работать с хранилищем в котором ключи не имеют в названии слова reducer:
    import {combineReducers} from 'redux';
    import photo from './photoReducer';
    import auth from './authReducer';
    import global from './globalReducer';
    
    export default combineReducers({
      photo, 
      auth,
      global,
    });


    10. Забудьте вообще, что в языке есть возможность использовать вложенный тернарный оператор:
    return e === 'invalid-email' ? 'Неверно указан e-mail'
        : e === 'user-not-found' ? 'Указанный e-mail на найден'
        : e === 'wrong-password' ? 'Неверный пароль'
        : e === 'email-already-in-use' ? 'Указанный e-mail уже используется'
        : e === 'network-request-failed' ? 'Нет подключения к интернету'
        : e === 'operation-not-allowed' ? 'Произошла ошибка, попробуйте снова'
        : e === 'popup-closed-by-user' ? 'Окно авторизации закрыто пользователем'
        : e === 'account-exists-with-different-credential' ? 'Аккаунт уже существует с другими данными, используйте другой способ авторизации'
        : e

    Это одна из самых худших практик в JavaScript разработке. Тут лучше подойдет конструкция switch case

    11. Константы actionTypes лучше вынести в папку constants и разложить по разным файлам, иначе со временем у вас там будет свалка.

    12. Вместо:
    import {SET_ACTIVE, CHANGE_VALUE, SET_DEFAULT, UPLOAD, UPDATE_IMAGE, SET_IMAGE_ERROR, SET_LIKE, SET_COMMENT, ADD_ARTICLE_SUCCESS, FETCH_ARTICLES_START, FETCH_ARTICLES_SUCCESS, FETCH_ARTICLES_ERROR} from '../actions/actionTypes';

    Лучше:
    import {
      SET_ACTIVE,
      CHANGE_VALUE,
      SET_DEFAULT, UPLOAD,  
      UPDATE_IMAGE,
      SET_IMAGE_ERROR,
      SET_LIKE,
      SET_COMMENT,
      ADD_ARTICLE_SUCCESS,
      FETCH_ARTICLES_START,
      FETCH_ARTICLES_SUCCESS,
      FETCH_ARTICLES_ERROR,
    } from '../actions/actionTypes';


    13. Попробуйте внедрить библиотеку reselect. И для получения значения из store вместо записи вида:
    function mapStateToProps(state) {
        return {
            browser: state.globalReducer.browser
        }
    }


    использовать селектор:
    const mapStateToProps = state => ({
      browser: browserSelector(state),
    });
    Ответ написан
    12 комментариев
  • Как написать большое приложение на Vue.js и не умереть?

    @Buzzzzer
    Возможно что то не так в конфигах webpack ?

    У меня сейчас в проекте порядка 600+ vue компонентов.
    Пересборка в dev с hot reload занимает 2-5 сек.
    (win, ram 16gb, ssd, какой то старенький i3)
    Ответ написан
    4 комментария
  • Когда нужно использовать computed, а когда methods во Vue.js? И в чем их разница?

    Decadal
    @Decadal
    Если результат вашей функции не опирается на внутренние данные, используйте methods.
    Например, у вас есть внутри vue некая range, которая служит верхней границей для Math.random. Если реализовать при помощи метода, то каждый раз он будет возвращать новое значение Math.random.
    Реализация через computed будет ожидать изменений вашего range, а иначе вернет то же число, которое сгенерилось первый раз
    js:
    var app = new Vue({
            el: '#content',
            data: {
                range: 1
            },
            computed: {
                rand: function () {
                    return Math.random() * this.range ; //ожидалось что app.rand будет давать случайное число
                }
            },
            methods: {
                show: function (event) {
                    alert('Случайное число: ' + this.rand); // но нет, число одно и то же
                },
           }
    });

    html:
    <div id="content">
    <button v-on:click="show">показать число</button>
    </div>


    В итоге оно сгенерирует число один раз и будет выводить его постоянно при клике на кнопку. Если вы введете в консоли app.range = 2; то генерируемое число разово изменится.

    Пример для лайков, упомянутый в комментарии:
    new Vue({
       el: '#content',
       data: {
          likes: 0,
       },
    });

    <div id="content"><button v-on:click="likes += 1">+1</button></div>
    Ответ написан
    9 комментариев
  • Где дешево держать .com домены?

    @OlegPyatakov
    pyatakov.com
    Базовая цена за домен .com - $7,85 в год. Это та сумма, которую чарджит Verisign, администратор зоны .com.
    Все что ниже этой стоимости, можно считать, спонсируется регистратором. Зачем регистраторам это делать? - либо привлекать новых клиентов (и тогда надо смотреть на цены продления доменов), либо субсидировать за счет сопутствующих услуг (тут уже сложно что-то рекомендовать без понимания, что еще вы готовы заказывать)
    Ответ написан
    3 комментария
  • В чем ошибка данного js кода?

    potapchino
    @potapchino
    document.getElementById("button_one")
    у вас нет элемента с id="button_one"

    document.querySelectorAll('h1')
    возвращает группу элементов

    function startQuest() {
      var startLink = document.querySelector('.button_one');
      startLink.onclick = function() {
        var title = document.querySelector('h1');
        title.style.display = 'none';
      }
    }
    Ответ написан
    Комментировать
  • Как сделать кнопку выхода на Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Используйте wp_logout_url
    https://codex.wordpress.org/Function_Reference/wp_...
    а в метод передайте home_url()
    <a href="<?php echo wp_logout_url( home_url() ); ?>">Выход</a>
    Ответ написан
    6 комментариев
  • Какой язык программирования даёт возможность пользователю самостоятельно добавлять/редактировать/удалять свои записи?

    Stalker_RED
    @Stalker_RED
    Если на средней стадии изучения вы начали подозревать, что html и css это не языки программирования, то у меня для вас хорошие новости: похоже это не средняя стадия, а самое-самое начало начальной стадии. А все самое интересное еще впереди :)

    Подойдет любой серверный язык программирования. Это не полный список, но все популярные языки в нем есть.
    А дальше выбирайте какой вам больше нравится, какой проще учить, на каком легче работу найти или за какой больше денег дают, или по какому-то другому признаку.
    Ответ написан
    Комментировать
  • Можно ли к ссылки для задания Cron приделать логин и пароль?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    крон всегда можно натравить на скрипт

    и в скрипте реализовать любую логику, в том числе авторизацию
    Ответ написан
    Комментировать
  • Деградация файлов -- это нормально?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Файлы не могут деградировать. Деградировать могут диски, но при этом файлы просто перестают читаться. Если файл прочитался (практически все форматы изображений, видео, музыки имеют контрольный код для сверки), то 99.9999%, что он точно такой же как и раньше.

    Либо у вас что-то с софтом, которым вы открываете эти файлы.
    Либо, как вариант, может какой-то вирус покоцал файлы, но я не знаю современного вируса, который бы портил их частично. Криптеры просто целиком криптуют.
    Ответ написан
    6 комментариев