• Как правильно сравнить массивы и оценить их схожесть?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Способов сравнения массивов можно придумать неограниченное количество.

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

    @Oxoron
    Шарпер
    Сделайте в форме2 событие OnConcreteButtonPressed. В первой настройте обработчик (в Вашем случае doSomething), создайте вторую форму, подпишитесь на событие, откройте вторую форму.
    В форме1 будет код вроде
    Form2 f = new Form2();
    f.OnConcreteButtonPressed += doSomething;
    f.Show(); // лучше f.ShowDialog();

    MessageBox() внесите в doSomething().
    Во второй форме при нажатии на кнопку генерируйте событие OnConcreteButtonPressed.
    Ответ написан
    3 комментария
  • Можно ли достать данные с жесткого диска, если оно их видит но не дает скопировать?

    Jump
    @Jump
    Системный администратор со стажем.
    Ну я бы сказал что вы планомерно занимались уничтожением информации на компьютере клиента.

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

    Делали востановление системы из загрузочной флешки, делали sfc/ scannow и chkdsk
    Вот этими действиями вы гарантированно уничтожили информацию которую можно было спасти.
    Далее - уже идет издевательство над убитыми данными.

    Подозрения, что подцыпили вирусню и оно просто убило файлы!
    Никакой вирусни, hdd банально начал сыпаться, а файлы убили специалисты, которым принесли компьютер на ремонт.

    Можете попробовать обратится к специалистам по восстановлению данных, но после таких измывательств над диском, вероятность успешного востановления стремиться к нулю. Поинтересуйтесь у заказчика когда он делал бэкапы в последний раз.
    Ответ написан
    4 комментария
  • Глобальные переменные или частое пересоздание локальных?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Если это переменные примитивного типа, а не экземпляры класса с нетривиальным деструктором и конструктором, улучшения не будет.

    И да, локальные переменные временного характера (особенно, объявленные const) оптимизатор скорее всего просто вышвырнет из готовой программы, а вот с глобальными такой трюк может и не пройти.

    Далее, в случае, если это классы, их не нужно делать глобальными, а нужно передавать в функцию по константной ссылке.

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

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Исправить можно, но не нужно. Потому как это сильно завалит производительность.

    При 32 разрядном id будет два миллиарда значений, при 64 разрядном - число с 18 нулями на конце.
    Ответ написан
    Комментировать
  • Почему при удалении значения не присваеваеться последнее id?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Перестаньте пожалуйста помечать вопросы о базах данных тегами C++ и QT.
    Ответ написан
    Комментировать
  • Как запустить проект С# на другом пк?

    Nipheris
    @Nipheris Куратор тега C#
    Во-первых, как уже отметил GavriKos, соберите проект в Release-конфигурации - exe-шник, собранный в релизе, будет оптимизирован не для отладки, а для использования в продакшене. Во-вторых, определитесь с версиями Винды, на которых будете запускать проект - с 7-кой идет .net 3.5 (включающий в себя 3.0 и 2.0), c 8-кой - 4.5 (который включает в себя 4.0). Если попали в эти пары версия ОС/версия .net - то отдельно фреймворк ставить не надо, если не попали (например, ваше приложение под .net 4.5 нужно запустить на семерке), то тогда нужно получить инсталлятор с microsoft.com и установить на целевую машину. В-третьих, не забудьте с экзешником приложить все зависимости - если вы использовали какие-то библиотеки, то их сборки должны лежать вместе с exe. В общем все, остальное уже специфично для конкретного приложения. Для целей тестирования, если нужно свести риски незапуска к минимуму, могу посоветовать поднять чистую виртуалку с соотв. версией винды, и попытаться запустить там приложение в том виде, в котором вы его подготовили. Тогда станет понятно, что не учли и что нужно еще поставить.
    Ответ написан
    Комментировать
  • GameDev - куда "шагнуть", и как туда попасть для обучения?

    @MarkusD
    все время мелю чепуху :)
    Новосибирск значит?..
    Почитай про C#, про Unity. Попробуй себя в создании чего-нибудь в этой среде.
    О плюсах даже не думай. Шарпом владеть легче и спокойнее.

    Твоя первая задача - войти в состав группы разработчиков. В центре и Академе есть несколько контор, кто делает недоигры на Unity. Эта цель на ближайшие год-два, начиная с даты приема на работу.
    Математика на этом этапе поднимается сама собой, без нее у тебя просто ничего не выйдет.
    Цель вторая - сбор информации о внутренней кухне. Алгоритмы, методики, парадигмы/идиомы/шаблоны/подходы программирования. Собирай знания и прокачивайся через Unity. Занять может до года, до двух.

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

    Цель три. Если тебе хочется работать именно в области C/C++, то самое время начинать сползать с шарпа. Это может оказаться болезненным периодом, но иголки в кактусе не бесконечны. Справишься если захочешь.

    Советую прочитать от корки до корки (и гвоздями прибить к мозгу, дабы ни слова не забывалось) книгу Дж. Пойя "Как решать задачу" в редакции от Гайдука. Книга маленькая, но ее надо прочувствовать. В целом-то, с нее и начать свое движение будет полезно.

    После выполнения третьей цели дальнейшее направление тебе амбиции подскажут.
    Всегда стоит помнить, что в программировании и (особенно) в геймдеве немало откровенно слабых и чрезмерно амбициозных людей. Задача номер ноль - постараться не примкнуть к их числу с первых дней и до пенсии.
    Ответ написан
    1 комментарий
  • Как понять момент в замыкании(JS)?

    dunmaksim
    @dunmaksim
    Технический писатель
    Переписал код, надеюсь, более понятно стало:
    function makeCounter(){
        //Эта переменная видна только здесь
        var currentCount = 0;
        
        //Эта функция - тоже только здесь, зато она видит currentCount
        function getCountValue(){
            currentCount += 1;
            return currentCount;
        }
        
        //Возвращаем саму функцию, а не её значение
        return getCountValue;
    }
    
    //counter = getCountValue
    var counter = makeCounter();
    
    counter(); //На самом деле - вызов getCountValue()
    Ответ написан
    Комментировать
  • Где, когда и как лучше использовать лямбда-выражения?

    @mayorovp
    Если кратко - то используйте лямбды до тех пор, пока не запутаетесь в них. Как запутаетесь - так и поймете ответ на свой вопрос.
    Ответ написан
    Комментировать
  • Где, когда и как лучше использовать лямбда-выражения?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Я использую лямбда-выражения в двух случаях:
    - когда это действительно "выражение", т.е. всё вычисление укладывается в одну формулу;
    - когда для вычислений нужно использовать значения переменных текущего метода.
    При этом я помню, что "под ковром" компилятор создаст для каждого контекста с лямбда-выражением отдельный класс, и захваченные переменные будут полями этого класса (а само лямбда-выражение - его методом). Причём они будут использоваться, как поля, не только для кода, вычисляющего это выражение, но и для всей работы с этими переменными. Так что, если в конкретном месте приходится думать об эффективности, то надо всё взвесить.
    Ответ написан
    1 комментарий
  • Почему при передаче указателя на структуру присвоенное значение в функции сбрасывается?

    donkaban
    @donkaban
    Умею рисовать тени
    1. Вы течете по памяти как драное решето. Зачем вообще создавать экземпляры объектов в куче перед вызовом метода, который делает то же самое, создает ДРУГИЕ экземпляры. Указатель вы потеряли, объекты созданные в методе после выхода остались в куче, грустные и одинокие.
    Почему не написать (раз уж вы передаете указатели и у вас есть перегруженный =)
    void SomeClass::someFunc(SYSTEMTIME * _minDate, SYSTEMTIME * _maxDate){
      std::vector<SYSTEMTIME> dates;
      ...
        *_minDate = dates[0]; 
        *_maxDate = dates[1];
      ...

    Либо не создавать экземпляры снаружи, ибо они реально создаются (в том, что вы показали) внутри метода.

    2. Вы передаете указатели ПО ЗНАЧЕНИЮ. То есть копируете. С чего вы думаете, что они изменятся ВНЕ метода? Если очень хочется, передавайте **

    3. https://ideone.com/YhbnBn
    Ответ написан
    1 комментарий
  • Почему при передаче указателя на структуру присвоенное значение в функции сбрасывается?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    А зачем вы в SomeClass::someFunc меняете значения указателей (локальные для функции), вместо того, чтобы менять значения, на которые они указывают? Типа того:
    void SomeClass::someFunc(SYSTEMTIME * _minDate, SYSTEMTIME * _maxDate){
      SYSTEMTIME minDate, maxDate;
      std::vector<SYSTEMTIME> dates;
      ...
        minDate = dates[0]; // тут все хорошо. Новые значения присвоены
        maxDate = dates[1];
      ...
      *_minDate = minDate;
      *_maxDate = maxDate;
    }

    Ну, или если уж необходимо действительно указатели менять, то, например, так:
    void SomeClass::someFunc(SYSTEMTIME * & _minDate, SYSTEMTIME * & _maxDate){
      SYSTEMTIME minDate, maxDate;
      std::vector<SYSTEMTIME> dates;
      ...
        minDate = dates[0]; // тут все хорошо. Новые значения присвоены
        maxDate = dates[1];
      ...
      // что-то сделать с объектами, на которые указывают _minDate и _maxDate, например освободить
      _minDate = new SYSTEMTIME(minDate); // _minDate  присвоен указатель на новый объект.
      _maxDate = new SYSTEMTIME(maxDate); // проветил, _minDate  и _maxDate дейсвтиетльно какие нужно.
    }
    Ответ написан
    1 комментарий
  • Как юридически защитить сайта от копирования?

    Jump
    @Jump
    Системный администратор со стажем.
    Что делать если сайт украдут
    Сайт нематериален, поэтому украсть его невозможно.
    Если сайт кто то скопировал, и вы считаете что это незаконно, то вы можете собрать убедительные доказательства копирования, нанять адвоката, заплатить госпошлину и обратиться в суд. Суд разберется.
    Ответ написан
    Комментировать
  • Как портировать С++ метод на JavaScript?

    Буду очень признателен, если кто-нибудь объяснит, что делает ss >> std::hex >> temporary и как все это дело написать на JavaScript'е.


    Конвертирует строковое шестнадцатеричное значение в целое со знаком. Ответ находится в первой же ссылке выдачи по запросу «ss >> std::hex». В JS для этого используется parseInt(string, 16).
    Ответ написан
    Комментировать
  • Как получить процент процессорного времени съеденного каким-то процессом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    да легко! Любой процесс жрет всю частоту что у него есть и по другому быть не может, ибо процессор все инструкции выполняет с одной частотой и ему разницы нет какому процессу что принадлежит. Если частота процессора может меняться в зависимости от нагрузки (современные CPU это умеют для уменьшения энергопотребления) - это можно обычно в каком-нибудь диспетчере задач посмотреть.

    А вас наверное интересует не мегагерцы а процент процессорного времени отжираемого приложением.
    Ответ написан
    Комментировать
  • Java, куда именно податься?

    AlPsc
    @AlPsc
    Java/high load/big data
    Во-первых, не забудьте после Шилдта прочесть книгу Джошуа Блоха "Effective Java" (в одном из соседних вопросов упоминается её русский перевод, так что он, видимо, существует) – по моему скромному мнению, это обязательное чтиво для любого Java-программиста.
    Во-вторых, если уж выбирать между Android и чем-то ещё, то надо понимать плюсы и минусы обоих путей. Напишу то, что пришло мне в голову, на полноту и истину в последней инстанции не претендую.

    Android:
    Плюсы:
    • Работы много. Очень. В том числе и удалённой.
    • Получить начальные навыки довольно легко – сейчас есть огромное количество статей, пошаговых руководств и прочих материалов, которые как позволяют учиться новому, так и быстро решать типовые задачи/проблемы.

    Минусы:
    • С точки зрения изучения Java эта среда довольно специфическая. Во-первых, используется довольно старый диалект (Java 6). (В комментариях справедливо поправили, что сейчас на Android доступна Java 7.) Во-вторых, набор библиотечных классов несколько отличается от Java SE, и это значит, что при необходимости писать приложения на "настоящей" Java просто взять и переключиться по щелчку пальцев не получится, а какая-то часть "мобильных" навыков и практик окажется бесполезной.
    • Хорошо программировать на Java значит не только знать язык, но и уметь выбирать прочие инструменты (дополнительные библиотеки и т.п.), которыми, конечно, тоже надо уметь пользоваться. В этом смысле Android тоже довольно далёк от того, к чему привыкли разработчики Java SE/EE: всякие вещи типа JDBC/Hibernate/you-name-it на Android либо отсутствуют в принципе, либо не могут быть использованы из-за ограничений среды (тот же нестандартный набор библиотечных классов). Это опять же означает, что, научившись писать на Java под Android, вы не сможете просто взять и начать разрабатывать, скажем, enterprise/backend приложения, и конкуренцию в этой области с кандидатами, у которых есть соответствующий опыт, выдержать вряд ли сможете. (Я бы ничего этого не писал, но у вопроса есть метка "карьера", так что вы сами напросились :) )
    • Большая часть компаний, занятых мобильной разработкой – сервисные, со всеми вытекающими. Лично для меня это минус, т.к. мне продуктовые компании больше по вкусу.
    Java SE/EE
    Плюсы:
    • Работы много. Очень. В том числе и удалённой.
    • Более широкие возможности применения своих навыков

    Минусы:
    • Более высокий порог вхождения
    • Несколько сложнее наработать портфолио, потому что жизненный цикл "больших" приложений зачастую всё же гораздо длиннее, чем в случае мобильной разработки, где очень большую часть работы составляют проекты для сторонних заказчиков, где изначально задана конкретная конечная цель, сразу оговариваются сроки, и т.п. (Сужу по собственному опыту работы в компании, которая занималась как раз разработкой мобильных приложений для заморских заказчиков.) Конечно, в случае с удалённой работой/сервисными компаниями это может оказаться правдой для приложений любых типов.

    Итак, выбирая Android, вы раньше сможете начать зарабатывать деньги, но "чистая" Java, на мой взгляд, даёт больше перспектив. И по сути Android-программист и Java-программист – совсем не одно и то же. Так что выбор профессионального пути зависит от того, как вы вообще видите себя в ближайшем будущем в этой профессии: хотите ли вы быстро освоиться и получить способ зарабатывать деньги, не сильно задумываясь о смене деятельности в перспективе, либо же вам интересны разные области программирования, и вам хочется многое попробовать.
    Ответ написан
    4 комментария
  • Какой язык стоит изучать для разработки приложений под iphone/android?

    @Espleth
    Android - Java. iOS - Objective-C/Swift.
    Если речь идет об играх, то можно использовать Unity3D (C#/JavaSctript), Cocos2D (C++/Python) например.
    Ответ написан
    1 комментарий
  • Перевёл интересную многим книгу на русский. Как использовать?

    @Eugene22
    Скорее всего легальным путем никак не использовать. Большинство издательств (и думаю, издательство вашей книги не исключение) пишет в начале книг, что копирование, распространение и т.д. запрещено. То есть перевод вы можете сделать и перевод будет вашей личной собственностью, в то же время публично распространять без разрешения издательства вы не можете. Не случайно российские издательства не просто так берут книгу и перевод, а покупают права на ее перевод и издание.
    В вашей ситуации возможно два варианта: 1) договариваетесь с англоязычным издательством о правах на перевод
    2) договариваетесь с российским издательством о публикации вашего перевода, но опять же российское издательство в этом случае должно связаться с иностранным издательством о покупке прав на перевод, а вам оплачивают работу как переводчику
    Все остальные способы использования и распространения перевода будут аналогичны пиратству или нелегальному распространению контента.
    Ответ написан
    Комментировать
  • Заказчик вместо обещаных 3 часов моего времени делает правки уже 4й день, что делать?

    nowm
    @nowm
    Возвращайте деньги, если он вам что-то платил, закрывайте проект и ставьте заказчику отрицательный отзыв. Это будет проще всего. Перед тем, как закрывать проект, озаботьтесь тем, чтобы из переписки на сайте биржи было понятно, что он требует что-то ещё дополнительное, но не хочет за это дополнительно платить. Если я не ошибаюсь, то закрытый проект, за который не уплачено ни цента, в вашей истории не появится. Во всяком случае, так обстоит дело на oDesk.

    Так же, на oDesk есть правило, по которому заказчик не может быть агентством, если он зарегистрировался как заказчик. Если он «проксирует» работу, то он — агенство, а агенство не может публиковать заказы. Он нарушает правила. Это ещё один момент, который вам может помочь, если вы вступите с клиентом в какой-то диспут. Опять же, важно, чтобы он упоминал в личной переписке на сайте биржи, что он, дескать, посредник, а не заказчик — если он этого не упоминал, то нужно его как-то на это развести.

    В остальном, я в похожих ситуациях обычно упираюсь и говорю, что никак не могу продолжать работу, пока не получу оплату за то, что было оговорено. Приплетаю всякие фантастические истории, что, как будто, меня недавно так кинули и я никому не могу доверять и т.д. и т.п. — тут всё ограничено фантазией. Главное: ни в коем случае не грубите человеку, на три буквы можно и вежливо посылать, закрутив всё ещё таким образом, что заказчик останется в восторге.

    Главное, и не только в подобных ситуациях, не тянуть резину. Чем вы будете мягче и податливее, чем дольше вы будете откладывать «неприятные» для клиента вопросы, тем чаще этим будут пользоваться окружающие, продавливая вас насколько это возможно. Это не значит, что нужно всем направо и налево грубить и посылать, это значит, что нужно сразу же сообщать окружающим, что вас что-то не устраивает — вежливо, но твёрдо.

    Я могу только посочувствовать вашей ситуации, но рано или поздно каждый человек с таким сталкивается. Со временем просто развивается чуйка, которая позволяет сразу видеть что конкретный проект публикует неадекватный клиент. Как говорил alexgilev (полчаса назад :) ), всякие фразы, вроде: «срочно», «мне мой знакомый программист сказал, что тут дел — на пять минут», «час-два для тех, кто в теме», «быстрые деньги» и т.п. — это один из признаков неадекватности.
    Ответ написан
    1 комментарий