• Можете дать идеи для проектов на языке C#?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    А вот я отвечу.
    Это и есть показатель того, интересно тебе программирование или нет.
    Если интересно, то ты сам находишь себе идеи и делаешь.
    Если нет, идёшь в интернет и задаёшь тупые вопросы
    Ответ написан
  • Как разрабатывать оконные приложения на С++ в Visual Studio 2019?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Самым простым решением для разработки GUI-приложений в среде MSVS2019 будет использование Qt. Собственно, для этого тебе потребуется Qt. Но разработку вести ты cможешь в VS.

    Вторым решением будет чуть более сложное: использование C++/CX вместе с UWP / Windows Forms.

    Третьим решением, еще более сложным, будет использование уже чистого C++ при поддержке MFC или WTL.

    И самым сложным решением будет прямое использование WinAPI.

    Помимо всего этого еще можно воспользоваться библиотекой wxWidgets и на ее базе разработать GUI для своего приложения.
    Ответ написан
  • Ошибка: Could not find or load main class. В чем проблема?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    java -cp out com.person.TestPerson
    Ответ написан
  • Не знаю как вызвать метод из другого класса?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Arithmetic.check(new int[] { 4 });

    Вам бы учебник почитать.
    Ответ написан
  • Не могу понять работу метода .map?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    function camelize(str) { // на вход приходит строка
       return str      // вот тут пока ещё строка
         .split('-')   // здесь из этой строки сделали массив, разбив её по символу дефиса
                       // ниже пошёл массив ["lol", "kek", "cheburek"]
         .map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) // что-то сделали с каждым элементом массива
         .join(''); // соединяет ['my', 'Long', 'Word'] в 'myLongWord'
     }


    Теперь упростим непонятную строку.
    К ней пришёл массив, у которого вызывается метод map() – он просто применит функцию в нём к каждому элементу массива. На выходе получится новый массив.
    .map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) //**
    
    // то же самое, что:
    .map(
      function(word, index) {
         return index == 0 ? word : word[0].toUpperCase() + word.slice(1);
      }
    )
    
    // то же самое, что:
    .map(
      function(word, index) {
        if (index == 0) {
          return word;
        } else {
          return word[0].toUpperCase() + word.slice(1);
        }
      }
    )


    Метод массива .map() вызывает функцию, которая в нём аргументом, для каждого элемента массива и передёт в неё следующие три параметра:
    1. Текущий обрабатываемый элемент массива.
    2. Индекс текущего обрабатываемого элемента в массиве.
    3. Массив, по которому осуществляется проход.
    Ответ написан
  • Что значит звёздочка после типа указателя?

    myjcom
    @myjcom
    что значить Звёздочка после типа?

    https://en.cppreference.com/w/c/language/pointer

    Для чего после double стоит *, ведь это символ разыменования, а что мы разыменуем?

    В данном случае звездочка не является оператором а относится к типу.

    Зачем перед malloc стоит (double*)

    https://en.cppreference.com/w/c/memory/malloc

    Выделяет память в байтах (возвращает указатель на void), и ничего не знает о том как вы ими будете распоряжаться.

    N.B. В современном Си такой необходимости нет.


    приведение к типу (double*) сообщает компилятору, что вы хотите.
    Ответ написан
  • Зачем нужен @classmethod?

    longclaps
    @longclaps
    Но почему я не могу написать метод from_string так:
    cls вместо явного Date позволит наследнику Date (напр. AztecaDate - дата по календарю ацтеков) порождать именно AztecaDate.
    Кстати, есть одна тонкость, связанная с реализацией ООП на разных языках. C++ позволяет реализовать несколько разных, но одноимённых конструкторов класса с разной сигнатурой (набором аргументов), например, можно сделать так:
    Date(1, 1, 2019) # конструктор с сигнатурой (int, int, int)
    Date("1.1.2019") # другой конструктор с сигнатурой (str)
    В питоне можно добиться подобного, но ручками, анализируя состав аргументов Date.__init__, что неудобно, громоздко и нунафиг. Уж лучше забабахать Date.from_string. Но это неизбежно в динамическом языке - ведь C++ должен знать всё про аргументы конкретных вызовов конструкторов на этапе компиляции, а мы можем в рантайм творить что угодно )))

    для чего нужен staticmethod, если это уже не метод, а просто функция, и я могу вынести ее из класса.
    Да, можете. Я думаю, тут действует логика лучшей читаемости и логика экономии пространства имён:
    • Date._статикметод1 хоть и неочевидно что делает, но точно имеет отношение к Date
    • При импорте from date import * вы не получите охапку непонятных имён.

    Кстати, это не бесплатно - обращение к квалифицированному имени каждый раз создаёт дополнительный опкод LOAD_ATTR. Поэтому любители выжать максимум производительности (ну бывает полезно в глубоком цикле) используют такой трюк:
    # медленно
    l = []
    for i in range(100500):
        l.append(i)
    # чуть быстрее )))
    push = l.append
    for i in range(100500):
        push(i)
    Ответ написан
  • Почему не работает ALT-CTRL-Fx?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Захожу в консоль по SSH через Putty. Хочу переключиться к примеру на TTY2. Нажимаю CTRL+ALT+F2, но в консоли только [12~
    Что я делаю не так?

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

    Под простым юзером ввожу chvt 2:
    Если под рутом, то команда выполняется и всё
    Что я делаю не так?

    В графической консоли вводишь? С помощью strace легко понять что происходит:
    от простого юзера:
    $ strace -iv chvt 2
    ...
    [00007f96b99d56f0] open("/proc/self/fd/0", O_RDWR) = 3
    [00007f96b99da80a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f96b99db017] ioctl(3, KDGKBTYPE, 0x7fff06db6d67) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f96b99d5f30] close(3)             = 0
    [00007f96b99d56f0] open("/dev/tty", O_RDWR) = 3
    [00007f96b99da80a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f96b99db017] ioctl(3, KDGKBTYPE, 0x7fff06db6d67) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f96b99d5f30] close(3)             = 0
    [00007f96b99d56f0] open("/dev/tty0", O_RDWR) = -1 EACCES (Permission denied)
    ...

    Т..е. stdin и /dev/tty не поддерживают ioctl переключающий терминал (вернее, до него даже не доходит), потому что твоя консоль -- это псевдотерминал, а открыть /dev/tty0 не хватает привилегий.
    А от рута:
    $ sudo strace chvt 2
    ...
    [00007f591848c6f0] open("/proc/self/fd/0", O_RDWR) = 3
    [00007f591849180a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f5918492017] ioctl(3, KDGKBTYPE, 0x7fffe5e72d17) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f591848cf30] close(3)             = 0
    [00007f591848c6f0] open("/dev/tty", O_RDWR) = 3
    [00007f591849180a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f5918492017] ioctl(3, KDGKBTYPE, 0x7fffe5e72d17) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f591848cf30] close(3)             = 0
    [00007f591848c6f0] open("/dev/tty0", O_RDWR) = 3
    [00007f591849180a] ioctl(3, TCGETS, {c_iflags=0x5, c_oflags=0, c_cflags=0xbf, c_lflags=0, c_line=0, c_cc[VMIN]=1, c_cc[VTIME]=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f5918492017] ioctl(3, KDGKBTYPE, 0x7fffe5e72d17) = 0
    [00007f5918492017] ioctl(3, VT_ACTIVATE, 0x2) = 0
    [00007f5918492017] ioctl(3, VT_WAITACTIVE, 0x2) = 0
    ...

    Т.е. stdin и /dev/tty -- то же самое, но /dev/tty0 открывается и ioctl VT_ACTIVATE проходит.
    Ответ написан
  • Есть ли у bootstrap следующая возможность?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    У bootstrap - НЕТ но написать такое дело 3 минут.

    $(document).on("click","[data-triger-class]",function(e){
            e.preventDefault();
            let target = $(this).data('triger-class');
            $('.'+target).addClass('new_class');
        });
    Ответ написан
  • В чем смысл быть гуру тостера?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Работа над личным брендом: Высокая репутация в профессиональных сообществах повышает привлекательность для нанимателей.
    2. Улучшение существующих знаний: Хочешь что-то понять, объясни другому.
    3. Приобретение новых знаний: Специализация замыкает в узком спектре задач и проблем, а Q&A-сервисы - это источник задач и проблем из самых разных областей и иногда под самыми неожиданными углами.
    4. Альтруизм: Большинству из нас кто-то помогал в начале пути, пришло время возвращать долг и делать свой скромный вклад в рост кадров.

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

    Для чего просиживаете на тостере по 5-6 часов в день?

    Я в среднем раз в полчаса-час заглядываю. Если находится интересный вопрос, могу потратить на него минут 10. Некоторые на перекуры больше времени тратят.
    Ответ написан
  • Как вырезать подстроку из строки с помощью sed | awk?

    DevMan
    @DevMan Куратор тега bash
    почему все пытаются заюзать регэкспы там, где это не нужно...

    поставьте себе https://stedolan.github.io/jq/
    Ответ написан
  • Как ограничить доступ по SSH на centos7?

    uaVPS
    @uaVPS
    Хостинг VPS серверов
    По умолчанию сервис ssh открыт в CentOS
    Сперва разрешаем доступ для нужной подсети 1.2.3.0/24 (подставляете свое значение)
    firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.0/24" port port=22 protocol=tcp accept'

    Далее применяем изменения
    firewall-cmd --reload
    Смотрим, что все прошло успешно и правило добавилось
    firewall-cmd --permanent --list-all
    И только теперь удаляем общее правило ssh из списка разрешенных
    firewall-cmd --permanent --zone=public --remove-service=ssh

    Снова применяем изменения
    firewall-cmd --reload
    Теперь кулцкакеры не будут Вас беспокоить, но если Вы хотите открыть наружу порт ssh, то Вас спасет только fail2ban
    Ответ написан
  • Какой url лучше для SEO?

    AndrewMn
    @AndrewMn
    Эксперт в SEO (с 2006 года)
    Если выбирать из двух предложенных вариантов, то лучше двигаться "от общего к частному" т.е. blog/{blog_title}/{blog_id} . Т.к. получаем структуру, рекомендуемую Яндексом для вебмастеров и по опыту - она будет более полезной для пользователей. Пункт 4 https://yandex.ru/support/webmaster/recommendation... .
    Ответ написан
  • Как сравнить два предложения?

    @siptik
    php developer, freelancer, Web-studio owner
    in_array($word, ['WD Jorgname 10','WD1012'])
    или сделать заменy одного слова на дрyгое и потом сравнивать.
    Ответ написан
  • Как запустить файл не заходя на флешку?

    @res2001
    Developer, ex-admin
    Ошибка означает не то что нет файла f:\usbst.vbs, она означает то, что скрипт не может найти файл к которому он пытается обратится.
    Скорее всего скрипт открывает файл, находящийся в текущем каталоге. Но когда вы запускаете его не из f:\, то текущим каталогом является какой угодно каталог, но не f:\, поэтому файл не может быть найден.
    Нужно использовать абсолютные пути. В скрипте определите путь где находится сам скрипт и по этому пути открывайте нужный файл.
    Ответ написан
  • Что я делаю неправильно?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Что я делаю неправильно?

    Всё.
    Он ведь возвращает : new mysqli(

    В сообщении об ошибке нигде не говорится про то, что "он" возвращает. Сообщение об ошибке говорит тебе человеческим голосом что у класса DB нет метода query(). И если ты посмотришь код класса в своем вопросе, то в нем действительно нет такого метода. А ты можешь вызывать только существующий методы у класса, что бы там кто не возвращал.

    Хуже того, даже если ты заставишь свой класс выполянять запросы, он будет создавать миллион соединений с БД.
    Потому что в отличие от mysql_connect, каждое обращение к new mysqli создает новое соединение. И тебе самом надо заботиться о том, чтобы соединение с БД юыло только одно. А не создавалось каждый раз, когда ты напишешь $db=new DB();. Фв тф это собираешься похоже писать в каждом методе каждого класса

    Ну и то что в DB используется mysqli а не PDO означает что у тебя весь код будет в SQL инъекциях.

    Правильный способ будет создать сначала экземпляр класса PDO, и потом при создании каждого объекта, которому нужна работа с БД, и передавать его в конструктор.
    PDO создаем как написано здесь, это код помещаем в файл, чтобы потом инклюдить где нужно.

    class Categories
    {
        public function __construct($db){
            $this->db = $db;
        }
        public function getCategories()
        {
            $query="SELECT * FROM categories";
            return $this->db->query($query)->fetchAll();
        }
    }


    и потом что-то вроде

    include 'pdo.php';
    $category = new Categories($pdo);
    $list = $category->getCategories();
    Ответ написан
  • Как запретить кеширование игры?

    flapflapjack
    @flapflapjack
    на треть я прав
    Пробовал много различных методов, но они почему-то не работают


    Покажите, раз пробовали. Я не вижу что вы пробовали. Может я то же самое предложу.

    какой-нибудь способ запретить кеширование ?


    Да знаю. Например.

    1) header
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Pragma: no-cache"); // HTTP/1.0

    2) meta
    <meta http-equiv="Cache-Control" content="no-cache" />

    3) динамические ссылки на подгружаемые скрипты, стили, картинки

    <script src="/script.js?<?php echo rand(0,99999999);?>">"></script>
    Ответ написан