Задать вопрос
  • Какая идеальная страна для айтишника?

    Jump
    @Jump
    Системный администратор со стажем.
    Россия.
    Ответ написан
    Комментировать
  • Какая идеальная страна для айтишника?

    opium
    @opium
    Просто люблю качественно работать
    Очевидно что в России.
    Ответ написан
    17 комментариев
  • Что делать, если на почту пришло письмо от МВД на имя администратора домена?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Домен gdzvip.ru не ваш? Так и пишите, что заказчиком услуги по регистрации домен вы не являетесь, администратором данного домена также не являетесь, информации о текущих владельце и администраторе домена не имеете.
    Ответ написан
    12 комментариев
  • Как вставить скриншот экрана в поле ввода при нажатии CTRL+V?

    @Artray
    ;(function ($) {
      $(".input").bind("paste", function(evt) {
        var item = (evt.clipboardData || evt.originalEvent.clipboardData).items[0] || null;
    
        if (item && item.kind === "file" && item.type.indexOf("image") !== -1) {
          var file = item.getAsFile(),
              data = new FormData();
    
          data.append('file', file);
    
          $.ajax({
            url: "/upload",
            type: "POST",
            data: data,
            contentType: false,
            processData: false,
            success: function (r) {
              // ...
            }
          })
        }
      })
    })(jQuery)
    Ответ написан
    Комментировать
  • Как реализовать считывание строк из файла в массив строк?

    @res2001
    Developer, ex-admin
    На сколько я понял вы пытаетесь прочитать строку из файла и сохранить ее как элемент массива arr.
    Но делаете это не правильно.
    Ваша ошибка в том, что fscanf/fgets не выделяет память для хранения строки, она использует тот буфер, который вы ей предоставите. Но вы ничего не предоставляете.
    Вам нужно для каждого элемента arr выделить память под строку:
    arr[i] = (char*)malloc(sizeof(char) * BUFLEN);
    где BUFLEN - некоторая целочисленная константа, обозначающая максимальную длину строки.
    Тогда чтение из файла, как реализовано у вас пройдет.
    В конце память выделенную с помощью malloc нужно освободить с помощью вызова free для каждого элемента массива arr.
    И не забывайте обрабатывать ошибки выделения памяти и возвраты файловых операций.
    fscanf со спецификатором формата "%s" считывает не строку, а слово - в строке может быть много слов. Для чтения строки используйте fgets, либо читайте посимвольно fgetc.
    Когда заработает, потренируйтесь на файле, содержащем строку из более чем BUFLEN символов и попытайтесь найти корректный выход из этой ситуации.
    Ответ написан
    8 комментариев
  • Как конвертировать дату в Unix-time?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для FreeBSD:
    date -jf '%F-%H-%M-%S' 2017-11-04-23-00-00 +'%s'
    Для linux:
    date --date=`echo 2017-11-04-23-00-00 | awk -F- -e '{ print $1"-"$2"-"$3"+T"$4":"$5":"$6 }'` +'%s'

    Только учтите, что входное время будет локальное, а результат в UTC.
    Ответ написан
    5 комментариев
  • Провайдер блокирует порты. Как обойти блокировку?

    Jump
    @Jump
    Системный администратор со стажем.
    Провайдер блокирует порты. Как обойти блокировку?
    Никак, вы же сами говорите - у вас NAT. Это значит провайдер ничего вам не блокирует.

    Просто у вас нет белого адреса. Устройства за NAT'ом получают серые адреса, например 192.168.1.10.
    По этому адресу из глобальной сети к вам нельзя обратиться, такие адреса не маршрутизируются в интернете.

    Возьмите у провайдера белый IP адрес, и все.
    Ответ написан
    3 комментария
  • Высокоуровневый язык программирования?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Потому, что "высоко-/низко-уровневый" это просто условная и достаточно относительная классификация языков по одному конкретному качеству - по уровню абстракции, предоставляемой языком его пользователю. А когда всплывает слово "абстракция", обязательно нужно задуматься над тем, что от чего абстрагируется. В данном случае речь идет об абстрагировании конструкций языка от среды выполнения программы, написаной на этом языке. Например, во всех этих ЯВУ есть такие абстракци, как именованная переменная, тип данных, конструкции управления потоком выполнения или вызов функций системы/стандартных библиотек и т.д. Мы просто пишем int а = 3; или while(flag == true)..., а обо всем остальном заботится язык. Для сравнения, в ассемблере (низкий уровень) нам приходится иметь дело с конкретными регистрами, битами, адресами и jump-ами, и никакой среды, которая пришла бы нам на помощь, там тоже нет. В этом смысле уровень абстракции того же С намного выше.

    Классификация эта (как и любая другая) - условная, т.к. если по этому признаку сравнить, например, те же Яву или Шарп с теми же C++ или Паскаль, то можно бы было сказать, что уровень абстракции первых "несколько выше" - между программой на первых языках и "средой" есть еще промежуточный уровень (байткод/IL), а программы на вторых компилируются прямо в инструкции конкретного процессора. Только смысла в таком утверждении уже не так много, и для указания на эти качества языков проще и полезнее классифицировать их как "компилируемые в инструкции виртуальной машины" и "компилируемые в инстрикции процессора".

    И, наконец, сортировка массива - это уже совсем из другой оперы. К языку тут (если вообще!) относится только абстракция "массив". В большинстве языков есть такое понятие, как стандартная библиотека (JDK, stl, те же модули в пыхе и т.д.). Функции вроде сортировки массива, предоставляются не языком, а именно этой библиотекой (как правило, написанной на этом же языке и/или на более низкоуровневых). А, собственно, языком называется очень-очень маленький набор универсальных семантически однозначных конструкций, типа операторов сравнения, циклов или вызовов функций. Фактически, любой современный язык можно "выучить" за день... остаток жизни уйдет на то, чтоб научиться правильно пользоваться им и его библиотеками для написания нужных программ ))
    Ответ написан
    Комментировать
  • Коллеги, расскажите о своих методах защиты от "Клиент всегда прав" в процессе разработки?

    opium
    @opium
    Просто люблю качественно работать
    Есть простое правило, любой каприз за ваши деньги
    Ответ написан
    5 комментариев
  • Коллеги, расскажите о своих методах защиты от "Клиент всегда прав" в процессе разработки?

    sim3x
    @sim3x
    Если клиент не может связно обьяснить, почему ему нужна данная фича в данной редакции, просишь его напечатать текст, что он берет на себя ответственность за результат внедрения фичи

    Но лучше предложить клиенту сделать AB тестирование вашей редакции и его редакции

    Все детали фичи прописываем до мелочей

    Поведение противоречивых фич детально описываем на стыках

    Главное, не думать, что вы тут самый опытный и умный
    Считаем, что клиент лучше знает свою аудиторию и что им нужно
    Ответ написан
    3 комментария
  • Несколько простых вопросов по тестированию. Кто поможет?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Итак, для начала следует разобраться в разнице между юнит-тестированием, интеграционным тестированием, функциональным тестированием и тестом на регрессии.

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

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

    Функциональное тестирование проверяет соотвествие требованиям проекта. Например, при нажатии кнопки Удалить появляется окно подтверждение с текстом "Вы уверены", затем при нажатии кнопки "Да", запись удаляется из БД и пользователю выводится сообщение "Запись успешно удалена!".

    Тест на регрессию - это повторная проверка работы конкретного участка кода. Как правило это участок кода, который не был покрыт тестами ранее.

    PHPUnit изначально предназначен для юнит-тестирования, однако это не мешает вам использовать его для других видов тестирования. Есть даже коннекторы к WebDriver.

    Тестирование контроллеров и моделей по отдельности - это юнит-тесты.
    Тестирование связки контроллер-модель - это интеграционное тестирование.
    Тестрование работы сайта целиком с помощью того же Selenium и т.п. - это функциональное тестирование.
    Ответ написан
    1 комментарий
  • Цикл проверки наличия файла?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    while [ ! -f имя.файла ]; do
      sleep время
    done
    cp
    Ответ написан
    2 комментария
  • Заражение вирусами в ОЧЕНЬ большой сети?

    Jump
    @Jump
    Системный администратор со стажем.
    Нужен анализ конкретной версии локера.
    Как правило такого рода программы создают временные файлы необходимые для работы, поэтому зачастую можно заблокировать его распостранение созданием этих файлов в режиме рид онли.
    Но это прокатит от XP и выше.
    На XP накатить патч для SMB

    На Win98 боюсь самое адекватное - полное запрещение SMB и перевод файлообмена на другой протокол, например FTP, btsync и прочее подобное.

    1)Вынос файловых шар на сервера с современными ОС, жесткая настройка прав, чтобы шифровальщик не мог дотянутся до всех файлов. На серверах теневые копии.
    2)Регулярное создание теневых копий на всех машинах от XP и выше. Например раз в час или в два часа.
    3)Регулярные бэкапы в формате образа диска- чтобы можно было развернуть полностью работающую ОС
    Ответ написан
    6 комментариев
  • Где практиковаться в сложных запросах JOIN?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    практиковать тут

    выяснить чем JOIN отличается от WHERE IN - тут
    Ответ написан
    Комментировать
  • По каким причинам на фрилансе не всегда побеждает самая дешёвая ставка?

    opium
    @opium
    Просто люблю качественно работать
    на апворке решает рейтинг в виде фидбека
    Ответ написан
    Комментировать
  • По каким причинам на фрилансе не всегда побеждает самая дешёвая ставка?

    vicodin
    @vicodin
    Имею некоторый опыт
    Я вам скажу больше, чаще всего побеждает самая дорогая ставка) (За исключением тех случаев, когда дорого ставят от балды) и это максимально логично.

    Представьте ситуацию, в которой какому-нибудь Джону нужно сделать лазерную коррекцию глаз. Куда он пойдет - к Ваське в гараж за 1000 рублей, который обещает сделать за вечер или в вылизанную клинику с тысячей отзывов, где его будут готовить и осматривать пару недель, но потратить придётся 1000$ ?

    Чаще всего клиенты относятся к своим проектам так же серьезно, как Джон к своему здоровью, и им важно получить высококлассный гарантированный результат. Если это какие-то мамкины бизнесмены-делегаторы, им будет плевать на качество продукта и они поведутся на демпинг(вполне вероятно, что правило СПД сработает и им всё равно придется заказывать подороже, чтобы переделать работу демпера).

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