• Я в шоке! Нет драйвера принтера Canon LBP-810 для Mac OS X + WINDOWS, что можно придумать?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Письмо в саппорт Canon.
    2. Узнайте предыдущие модели и чипсет от Canon LBP-810. Пробуйте использовать от предыдущих моделей или же Generic. (возможно, придется подредактировать конфиги драйверов руками)
    3. Используйте print-server.
    Ответ написан
    3 комментария
  • Что делать, если специалист затер разделы при установке Windows 7?

    bobrovskyserg
    @bobrovskyserg
    Ответ написан
    Комментировать
  • Как правильно написать программу для Arduino?

    @Eddy_Em
    Я не понял, это что, типа бинарные числа в массиве? А ничего, что их gcc не понимает, да и вообще такая запись == десятичные.

    Если же нужно строки делать, то писать
    char *values[] = {
      "0000001",
      "1001111",
      "0010010",
      "0000110",
      "1001100",
      "0100100",
      "0100000",
      "0001111",
      "0000000",
      "0000100"
    };

    values[i] будет адресом i-й строки, а values[i][j] — j-й символ в i-й строке.
    Ответ написан
    4 комментария
  • Какая модель ноутбука подойдет под это ТЗ?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    По фильтку на Яедекс Маркете посмотреть - ну никак?
    Или nix.ru - аналогично?
    www.nix.ru/price/price_list.html?section=notebooks...
    Ответ написан
  • Как вы проводите свободное время?

    Vestail
    @Vestail
    Software Engineer
    Я лично на гитаре играю:)
    Музыкальные инструменты очень хорошо помогают отвлечься от грубых технических дисциплин и на некоторое время посветить себя прекрасному. :)
    Ответ написан
    Комментировать
  • Ваше мнение о видеоуроках Евгения Попова?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Недавно в голову пришла идея небольшого сайта мне для работы.

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

    Сайты для работы не пишутся с нуля. Сайт для работы делается на основе заготовки для сайтов - CMS.

    Поэтому надо забыть про написание сайта с нуля, забыть про видеоуроки, а вместо этого выбрать подходящую CMS и делать сайт на ней.

    Про попова же, если коротко, то у его курсов ровно две проблемы:
    1. Его задача не поделиться знаниями, а продать что-нибудь. К несчастью, торговать он стал не гербалайфом, а низкокачественным говном собственного производства.
    2. Когда неспециалист берется учить других - это страшно. Сам нахватавшись по верхам, и не понимая смысла кода, который он пишет, попов остался в прошлом веке. Да, 18 лет назад, когда РНР только появился, все писали так. Но с тех пор изменилось очень многое. Программисты узнали о таких вещах, как отладка, обработка ошибок, безопасность, разделение кода и данных, разделение логики обработки данных и логики отображения, системы контроля версий, повторное использование кода и многое, многое другое. Шарлатаны же и недоучки так и застряли в прошлом веке, и не дают несчастным обманутым жертвам ничего из современных достижений. В итоге сайты, написанные по видуоурокам, постоянно ломаются, являются уязвимыми для любых типов атак и являются совершенно немордернизируемыми.
    Ответ написан
    Комментировать
  • Ваше мнение о видеоуроках Евгения Попова?

    SagePtr
    @SagePtr
    Еда - это святое
    Скажу помягче: за такой код, который пишет Попов в своих видеоуроках, раньше либо четвертовали, либо сжигали на костре. И сейчас только мораторий на смертную казнь мешает сделать это.
    Ответ написан
    Комментировать
  • Какие есть типы данных c++?

    @Eddy_Em
    Я бы вообще руки отрывал за использование С++ с его жутким оверхедом на микроконтроллерах!
    В данном случае даже glibc нафиг не нужна: реализуем strcmp() вручную, аналогично поступаем для memmove и прочих полезных функций. В итоге код будет небольшим + шустрым.
    Если нужно сравнить содержимое полученной строки с эталоном, то просто пишем
    int strcmp(char *a, char *b){
      int ret = 0;
      do{ ret = (int)(*a++) - (int)(*b++); }while(!ret && *a && *b);
      return ret;
    }
    char *in = get_serial_buf(); // функция, возвращающая указатель на первый байт в кольцевом приемном буфере USART
    char *ref = "строка";
    if(!strcmp(in, ref)){ // действия, выполняемые при равенстве строк
    }

    Если нужно найти подстроку, то аналогичным образом реализуем функцию strstr:
    int strstr(char *haystack, char *needle){
      char *ret = NULL, *n = needle+1, n0 = needle[0];
      do{
        int cmp;
        if(*haystack != n0) continue;
        ret = haystack++;
        do{ cmp = (int)(*haystack++) - (int)(*n++); }while(!cmp && *haystack && *n);
        if(!cmp && !*n) break; // found
        ret = NULL; n = needle + 1;
        if(!haystack) break; // haystack ended while not found
      }while(*(++haystack));
      return ret;
    }
    Ответ написан
    6 комментариев
  • Как получить массив случайных чисел, сумма которых равна 500?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Предположим, что числа нужны целые неотрицательные. Если числа могут быть нулевыми, делаете так:
    n1=irand(501); // от 0 до 500
    n2=irand(501); // от 0 до 500
    n3=irand(501); // от 0 до 500
    sort(n1,n2,n3); // сортируете по возрастанию любым подходящим способом
    x0=n1; x1=n2-n1; x3=n3-n2; x4=500-n3;

    Если числа могут быть только положительными, то поступаете аналогично:
    n1=irand(497); // от 0 до 496
    n2=irand(497); // от 0 до 496
    n3=irand(497); // от 0 до 496
    sort(n1,n2,n3); // сортируете по возрастанию любым подходящим способом
    x0=n1+1; x1=n2-n1+1; x3=n3-n2+1; x4=496-n3+1;

    Распределение будет слегка неравномерным (наборы, содержащие нули в первом случае и единицы - во втором, будут встречаться чуть реже), но и это можно исправить, слегка усложнив программу.
    Ответ написан
    Комментировать
  • Как получить массив случайных чисел, сумма которых равна 500?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В вашей постановке задачи нет ограничений на значения элементов => они могут быть положительными и отрицательными => не нужно ничего делить, просто заполняйте массив случайными числами со знаком, а один элемент сделайте равным разности требуемой муммы и суммы остальных элементов.
    Ответ написан
    1 комментарий
  • Добавляет лишнюю цыфру. Как исправить?

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

    по вопросу: в пыхе есть несколько функций для округлений. к большему, к меньшему и т.п. используйте их

    что эта портянка кода вообще должна делать? возможно данный говнокод можно завернуть узнав о существовании открытого и закрытого ключей, uniqid и пр

    п.с. не старался задеть религиозных чувств. ничего личного.
    Ответ написан
    2 комментария
  • Проблемы в работе minicom. Как заставить работать правильно?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    пытаюсь залить прошивку на него через консольную утилиту minicom. Только вот в определенный момент он не дает "свободу выбора", и принудительно выбирает №3

    minicom -- это эмулятор терминала, он понятия не имеет о том, что у вас там за выбор. Это ведь ваш роутер печатает эти менюшки и анализирует ваш выбор, проблема, судя по всему, в нём.
    Ответ написан
  • Есть ли основные правила супер оптимизации?

    ErmIg
    @ErmIg
    Программист
    Есть развернутый ответ для С++ кода, но его можно обобщить и на другие языки и платформы:

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

    1) Важно понимать, что алгоритмическая оптимизация практически всегда может дать лучший эффект, чем программная. Так, если алгоритм имеет сложность O(n^2), то на больших исходных данных он при любой оптимизации будет медленнее, чем неоптимизированный алгоритм сложности O(n). Впрочем, при выборе алгоритма, опираться только на его сложность не стоит: если объем исходных данных не велик, то вполне может оказаться, что алгоритм со сложностью O(n^2) будет работать быстрее, чем с O(n).
    2) Очень важно повторное использование (кеширование) промежуточных данных, вычисленных в программе – ибо быстрее всего выполняется работа, которую не надо делать. Тем не менее, не надо чрезмерно кешированием увлекаться – если объем кэшируемых данных слишком велик, то это может отрицательно сказаться на общей производительности программы (некоторые данные быстрее вычислять на лету, чем считывать из памяти).
    3) Следует избегать излишнего копирования данных (например, передавать сложные типы данных по ссылке, а не по значению).
    4) По возможности следует избегать условных операторов во вложенных циклах. Так как условные переходы, вызываемые такими операторами, плохо обрабатываются современными процессорами с конвейерной архитектурой.
    5) Данные в памяти, которые используются алгоритмами, должны по возможности лежать упорядочено, и использоваться последовательно. Это позволит процессору их эффективно кешировать. Важно помнить, что доступ к кэшу процессора значительнее быстрее, чем к оперативной памяти.
    6) Если алгоритмы это позволяют, то возможно стоит реализовать их параллельное исполнение (в отдельных потоках или процессах). Это позволит эффективно задействовать современные многоядерные процессы.
    7) В некоторых случаях (например обработка изображений) большого эффекта можно достичь применением специализированных расширений процессора (SSE, SSE2, AXX, AVX2 и другие). Стоит отметить, что большинство современных компиляторов (GCC, MSVS, ICC) поддерживают непосредственное использование данных расширений непосредственно из С++ кода при помощи специальных встроенных функций (intrinsics). Минусами такого подхода является потеря переносимости (впрочем, эта проблема решается наличием разных веток программы под разные процессоры) и значительное усложнение программы.
    8) Также большого эффекта можно достичь применением специализированных ускорителей, например GPU (технологии CUDA, OpenCL). Минусами таких решений являются потеря универсальности и значительное усложнение программы, а также то, что на специализированных ускорителях, как правило, хорошо работает далеко не каждый алгоритм.
    Ответ написан
    Комментировать
  • Есть ли основные правила супер оптимизации?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Разбираетесь как работает память, проц, диск - узнаете про архитектуру, про виды памяти, про кеши и синхронизацию.
    Разбираетесь как работает язык на котором пишете - узнаете про его слабые стороны, про практики проектирования на нем, про компиляторы, виды автоматической оптимизации и анализаторы кода.
    Разбираетесь как работает программа которую оптимизируете - профилируете, исправляете уже с учетом полученных знаний из первых двух пунктов.

    По другому никак. Без знаний оптимизацией не занимаются.
    Ответ написан
    Комментировать
  • Есть ли основные правила супер оптимизации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Главное правило оптимизации - не заниматься преждевременной оптимизацией.

    Вообще все просто - пишите код, пишите нагрузочные тесты, профилируете, оптимизируете узкие места. С опытом ляпов будет меньше изначально. Ну и книжки стоит читать всякие, желательно обобщенные (типа там паттерны проектирования и т.д.) что бы можно было вместо оптимизации просто быстро систему масштабировать (это дешевле). Ну и еще теория алгоритмов помогает, если у вас есть именно обработка больших объемов данных (массивы на миллионы айтемов, на тысячах пофигу обычно)
    Ответ написан
    1 комментарий
  • Защита от спуфинга сигнала - нужен способ модуляции сигнала на низком уровне, чтобы невозможно было подменять пакеты?

    @Eddy_Em
    Такой метод на ура будет взламываться.
    Шифруйте при помощи SSL и будет вам счастье!
    Ответ написан
    Комментировать
  • Защита от спуфинга сигнала - нужен способ модуляции сигнала на низком уровне, чтобы невозможно было подменять пакеты?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Например если взять обычное радио - там FM, полезные данные получаются за счет изменения частоты, а если например скомбинировать его с AM/PWM (к примеру) которые будут выстраивать идентификационную информацию об отправителе и будут подчиняться определенному алгоритму, так что только второе сетевое устройство сможет их распознать?
    Тогда устройство точно может быть уверен что пакет не подменен.
    Да и ещё засунуть в алгоритм какой-нибудь рандом чтобы только два сетевых устройства знали как он будет меняться с каждым 5 или 10 битом?

    Это называется security through obscurity и считается плохой практикой.
    Ответ написан
    3 комментария
  • Можно ли запустить mono под qnx?

    @Eddy_Em
    Жарить яичницу на контуре охлаждения ядерного реактора? Здорово придумано!
    Ответ написан
    Комментировать
  • Как записать массив целых чисел в ячейку MSSQL Server 2012?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Таблица - это уже массив. Не надо мудрить и писать в массив еще один.
    Ответ написан
    Комментировать
  • Почему перенос строк в коде влияет на вид страницы?

    button и input имеют по умолчанию display: inline-block, таким образом ведут себя на странице отчасти как обычный текст, следовательно:
    слитныйтекст
    раздельный текст
    Ответ написан
    Комментировать