Задать вопрос
  • Можно ли сверстать сайт без psd макета?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Я Вам больше скажу, можно и без картинки. Не вижу в этом проблем. Photoshop - это удобно, но совсем не обязательно.

    Какие инструменты (онлайн сервисы) могут помочь в этом?

    Базово нужен только блокнот, а дальше идут способы облегчить себе жизнь. Их оооооочень много, тут не перечислить.
    Ответ написан
    6 комментариев
  • Как предотвратить спам через форму обратной связи?

    villiwalla
    @villiwalla
    HTML-верстка
    Первое, проверка корректности данных должна быть на клиенте и на севере, а не только на клиенте как у вас.

    Второе, спам может пройти проверку корректности на клиенте и сервере, а поскольку спам машина, ей можно подписать инпут с display: none; и именем типовым типа last_name. Проверяем на клиенте и сервере поле, если заполнено то не отправляем, можно ещё код 200 вернуть для бота, а если и это проходит то тогда капчу Гугла вешайте невидимку или галку на форму.
    Ответ написан
    Комментировать
  • Что лучше WebSockets или socket.io?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    socket.io работает на websocket протоколе.

    бензин или машина, что выбрать? Грубо говоря
    Ответ написан
    4 комментария
  • Разве Composer бесполезен в 2017?

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

    Года 3 назад на моей прошлой работе в команду пришел очень толковый проактивный человек, который никого не стал переубеждать. Он просто стал делать правильные вещи. Без объяснений. И без приглашений. Коммитеть юнит тесты. Подключать линтеры. Деклайнить неудачные пулл-реквесты. В итоге он сам стал тимлидом где-то через год.

    Такие дела.

    Не у всех, правда, стальные яйца. Но за проактивность никогда еще не увольняли. Если вы уже создали пулл реквест, то "переубеждение" становится задачей тимлида.
    Ответ написан
    3 комментария
  • Как пристает налоговая?

    @BorisKorobkov
    Web developer
    Если налоговой все и так ясно - просто начислят налог. Иногда пени и штрафы.

    Если не все ясно - пришлют по почте уведомление с просьбой явиться к ним и объяснить непонятное. Не явитесь или не сможете убедительно доказать свою точку зрения - начислят по-максимуму.

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

    Теоретически налоговая может провести выездную проверку на дому. Например, убедиться, что покупка квартиры у родной тетки - не уход от налогов, а действительно покупка, то есть тетка оттуда съехала, а вы въехали. Постучатся, вежливо попросят. Если их пустите - заглянут и уйдут. Если не пустите - пойдут в суд. Или просто начислят по-максимуму и уже вам придется бегать по судам.

    "Менты стучатся в дверь" - это уже при уголовном деле в "особо крупном размере". Например, при Как перевести большую сумму без ИП?
    Ответ написан
    Комментировать
  • Знатоки протокола TCP/IP нужна ваша помощь (алгоритмы отправки и приема данных)?

    vvpoloskin
    @vvpoloskin Куратор тега Компьютерные сети
    Инженер связи
    Прочитать книжку Таненбаума "Компьютерные сети", раздел "Транспортный уровень", пункт TCP
    Ответ написан
    1 комментарий
  • Есть ли видеокурсы jQuery для более опытных?

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

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

    Поэтому есть мнение, что таких курсов нет и вряд ли будет. Максимум - под названием "продвинутые курсы" будут курсы для тех, кто уже один раз jQuery видел, отличаться от курсов для начинающих будут почти ничем.

    Просто случайные видео - можно попробовать поискать js-вблоггеров. К сожалению конкретные ссылки не подскажу.
    Ответ написан
    2 комментария
  • Есть ли видеокурсы jQuery для более опытных?

    @grmnshphrd
    Бери и делай, видеокурсы здесь незачем.
    Ответ написан
    Комментировать
  • Как перестать кодить и начать программировать?

    BuriK666
    @BuriK666
    Компьютерный псих
    Если ваш старый код, для вас выглядит ужасно, то значит вы развиваетесь. Бейте тревогу когда начнете "идеально" писать.
    Ответ написан
    11 комментариев
  • Как и можно ли запустить приложения на телефоне с помощью картинки на сайте?

    @Zbiten
    Для Viber:
    <a href="viber://add?number=79xxxxxxxxxx">
    Для Whatsapp:
    <a href="whatsapp://send?phone=79xxxxxxxxx">
    Ответ написан
    Комментировать
  • Как работают исключения?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Может ли кто нибудь объяснить на низком уровне, пошагово, то как работают исключения в с++?

    Вот описание части Itanium ABI связанной с раскруткой стека:
    https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html

    ABI процессоров других архитектур устроены в этом месте точно так же.

    Вот подробное описание структур, используемых при раскрутке стека в коде генерируемом gcc:
    www.airs.com/blog/archives/460
    www.airs.com/blog/archives/464

    Документы по ссылкам достаточно сложны для восприятия. Для облегчения понимания можно откомпилировать простой С++ код выбрасывающий и ловящий исключение и найти в нем части описанные в первом документе.
    Например
    void e_destructor();
    void s_destructor();
    
    struct E {
            int code;
    
            E(int c): code(c)
            {
            }
            ~E()
            {
                    e_destructor();
            }
    };
    
    struct S {
            ~S()
            {
                    s_destructor();
            }
    };
    
    void f(int v)
    {
            throw E(v);
    }
    
    int g(void (*p)(int v), int v)
    {
            try {
                    struct S s;
                    p(v);
            } catch(struct E e) {
                    return e.code;
            } catch (int i) {
                    return i;
            } catch (...) {
                    throw;
            }
            return 0;
    }

    после g++ -O2 -S превращается в следующие фрагменты:
    функция f:
    _Z1fi:
    .LFB9:
            .cfi_startproc
            pushq   %rbx
            .cfi_def_cfa_offset 16
            .cfi_offset 3, -16
            movl    %edi, %ebx
            movl    $4, %edi
            call    __cxa_allocate_exception
            movl    $_ZN1ED1Ev, %edx
            movl    %ebx, (%rax)  <---- инициализация E::code
            movl    $_ZTI1E, %esi
            movq    %rax, %rdi
            call    __cxa_throw
            .cfi_endproc

    Здесь видны вызовы __cxa_allocate_exception, конструктора объекта класса E и __cxa_throw
    функция g:
    _Z1gPFviEi:
    .LFB10:
            .cfi_startproc
            .cfi_personality 0x3,__gxx_personality_v0
            .cfi_lsda 0x3,.LLSDA10
            pushq   %rbp
            .cfi_def_cfa_offset 16
            .cfi_offset 6, -16
            pushq   %rbx
            .cfi_def_cfa_offset 24
            .cfi_offset 3, -24
            movq    %rdi, %rax
            movl    %esi, %edi
            subq    $8, %rsp
            .cfi_def_cfa_offset 32
    .LEHB0:
            call    *%rax  <--- вызов функции по указателю
    .LEHE0:
    .LEHB1:
            call    _Z12s_destructorv  <--- вызов деструктора объекта s при нормальном выходе из блока try
    .LEHE1:
            xorl    %eax, %eax
    .L17:
            addq    $8, %rsp
            .cfi_remember_state
            .cfi_def_cfa_offset 24
            popq    %rbx
            .cfi_def_cfa_offset 16
            popq    %rbp
            .cfi_def_cfa_offset 8
            ret

    Хвост с обработчиками исключений:
    .L13:
            .cfi_restore_state
            movq    %rdx, %rbx
            movq    %rax, %rbp
            call    _Z12s_destructorv
            movq    %rbx, %rdx
    .L6:
            cmpq    $1, %rdx
            je      .L8
            cmpq    $2, %rdx
            jne     .L22
            movq    %rbp, %rdi
            call    __cxa_begin_catch
            movl    (%rax), %ebx
            call    __cxa_end_catch
            movl    %ebx, %eax
            jmp     .L17
    .L14:
            movq    %rax, %rbp
            jmp     .L6
    .L22:
            movq    %rbp, %rdi
            call    __cxa_begin_catch
    .LEHB2:
            call    __cxa_rethrow
    .LEHE2:
    .L8:
            movq    %rbp, %rdi
            call    __cxa_get_exception_ptr
            movq    %rbp, %rdi
            movl    (%rax), %ebx
            call    __cxa_begin_catch
    .LEHB3:
            call    _Z12e_destructorv
    .LEHE3:
    .LEHB4:
            call    __cxa_end_catch
    .LEHE4:
            movl    %ebx, %eax
            jmp     .L17
    .L16:
            movq    %rax, %rbx
            call    __cxa_end_catch
            movq    %rbx, %rdi
    .LEHB5:
            call    _Unwind_Resume
    .LEHE5:
    .L15:
            movq    %rax, %rbx
            call    __cxa_end_catch
            movq    %rbx, %rdi
    .LEHB6:
            call    _Unwind_Resume
    .LEHE6:
            .cfi_endproc

    Здесь видны вызовы __cxa_begin_catch и __cxa_end_catch, __cxa_rethrow повторно выбрасывающий пойманное исключение, __cxa_get_exception_ptr и _Unwind_Resume, вызываемый если блок catch не ловит это исключение.

    Дальше идёт структура LSDA описанная в третьем документе.

    Сама раскрутка стека в этом коде отсутствует. Она выполняется следующим кодом libgcc: фаза 1 и фаза 2.
    Ответ написан
    Комментировать
  • Как скоро можно заменить действующию системы криптозащиты?

    gobananas
    @gobananas
    finishhim.ru
    Мировая экономика перестроится РАНЬШЕ чем появятся такие системы, потому что как только будет первый настоящий образец готовый к запуску в серийное производство информация об этом уже просочится куда надо и команды по разработке всех языком программирования быстро добавят в языки функции для защиты нового порядка.
    Миром правят банки и их защита строится в т.ч. на криптографии, никому просто не выгодно что бы выпустили новый компьютер, который внесёт хаос в мировые финансовые системы.
    Так что ответ на ваш вопрос такой: действующая система криптозащиты будет заменена ДО выхода на рынок устройств, способных её сломать.
    Конечно будут слоупоки которые не обновятся, но это так при любых уязвимостях и это уже их проблемы.
    Ответ написан
    2 комментария
  • Нужно ли учиться в школе?

    @SharuPoNemnogu
    не язык плохой, программисты такие...
    Ахах, школа ему мешает...
    Вот будет тебе лет 30, семья, дети, кот дебил, на работе вечный аврал, ипотека, ремонт, качалка.. а развитие никто не отменял, и все равно находишь время.
    Так что не пори чушь, учись в школе и развивайся параллельно.
    Ответ написан
    7 комментариев
  • Сервер для игры?

    Jump
    @Jump
    Системный администратор со стажем.
    Также прошу не писать "На чем лучше знаешь" и т.п.
    А я все-таки напишу - на том что лучше знаешь.

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

    Я слышал, что сервера пишут на Java или PHP и т.п.
    Вот именно - и.т.п. Попросту на чем угодно.
    На пайтоне, си, go, node js, и многом другом.
    Ответ написан
    Комментировать
  • Как реализовать HashMap, в котором key объект мной созданного класса?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Нужно консистентно реализовать методы equals и hashCode. Консистентно значит, если equals вернул true, то hashCode вернёт одинаковое число. Обратное не обязательно верно.
    Ответ написан
    6 комментариев
  • Как вычислить нахождение абонента по номеру телефона через GSM?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    нужно вычислить местоположение абонента, зная номер телефона.

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

    Идете в МВД и пишите заявление.
    Ответ написан
    Комментировать
  • Как правильно добавить ActionListener элементам?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Задуматься об архитектуре, сделать весь свинг вьюхой, а логику переключения вынести в контроллер/презентер. Весь интерфейс в одном методе подход плохой.
    Ответ написан
    Комментировать
  • Если пользователь ввёл не правильные данные как попросить его ввести ещё раз?

    @D3lphi
    Консольное приложение? Цикл запускаете и выходите из него только если данные верны. Цикл do-while/while вам нужен.

    Как-то так:

    do {
        System.out.println("Введите данные: ");
    } while(!input());


    Или так:

    System.out.println("Введите данные: ");
    while(!input()) {
         System.out.println("Ошибочный ввод. Попробуйте еще раз: ");
    }


    private boolean input()
    {
        // Считываем данные, проверяем их на валидность и возвращаем true - если ввод валиден и false - если невалиден.
    }
    Ответ написан
    1 комментарий
  • Идея - в игре для смартфона вообще не задействовать тачскрин, а переназначить аппаратные кнопки?

    GavriKos
    @GavriKos
    Это не вопрос. Это влажные фантазии. Хотите - делайте.
    Кстати как только у смарта не будет аппаратных кнопок back и прочих - огребете.
    Ответ написан
    Комментировать
  • В чем отличие между Atomic, Lock, и synchronized?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Может таки Java Concurrency in practice почитаешь?
    Ответ написан
    1 комментарий