• Как правильно подготовиться до уровня Junior PHP?

    zualex
    @zualex
    Senior Software Engineer
    Для начала PHP: Правильный путь - очень много полезной информации как для начинающего, так и для опытного программиста.
    А потом уже фреймворки, да без них сейчас никуда
    Ответ написан
    Комментировать
  • Однодневкам-одновопросникам тостера запретить задавать вопросы?

    edinorog
    @edinorog
    Троллей не кормить!
    Представь ... три часа ночи! ... у человека лег сервак!!!! не работает рейд!!!!! он в панике .. гуглит где можно задать вопрос .... и кроме регистрации он должен дождаться пока ему удастся ответить на 10 вопросов?)
    Ответ написан
    51 комментарий
  • Однодневкам-одновопросникам тостера запретить задавать вопросы?

    dom1n1k
    @dom1n1k
    Ну зашибись идейка!
    Необходимость что-то спросить часто (почти всегда) возникает внезапно. И ты такой идешь за помощью, а тебе херакс - сначала сам ответь на 10 вопросов! Прям сейчас ответить?.. У меня задача горит, а вы меня грузите своей дедовщиной? 9 из 10 просто уйдут, 1 нафлудит мусора в 10 вопросах, чтобы пройти фильтр.

    Вот что было бы реально полезно - так это кнопка "не нравится". Иногда очень хочется.
    Ответ написан
    Комментировать
  • Однодневкам-одновопросникам тостера запретить задавать вопросы?

    secsite
    @secsite
    Безопасные и быстрые сайты
    Тем самым "флудят" (моё имхо)


    Они не флудят, а наполняют контентом тостер :)
    Кач-во этого контента - отдельный вопрос и никак не связан кол-вом вопросов и ответов.

    Глупо заставлять отвечать перед заданием вопроса. Умные просто уйдут на др ресурс, а бестолочи так наотчвечают.. Вот де флуда будет.
    Ответ написан
    3 комментария
  • Однодневкам-одновопросникам тостера запретить задавать вопросы?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Нельзя.

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

    @Beltoev
    Живу в своё удовольствие
    Думаете, 10 бесполезных ответов лучше, чем один бесполезный вопрос?

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

    @KFan
    Веб-программист
    Любой на котором ты сможешь сделать весь задуманный функционал.

    Самое главное здесь, иметь толкового математика, который всё посчитает, сделает правильные цены, чтобы ты как можно больше денег у честных людей смог отобрать!
    Ответ написан
    Комментировать
  • Как реализовать таймер на php?

    riky
    @riky
    Laravel
    $startTime = time();
    $arr = [];
    
    // ......
    
    while(1) { // main loop
        //......
    
        if (time() > $startTime + 24*60*60) {
            $startTime = time();
            $arr = [];
        }
    }
    Ответ написан
    Комментировать
  • Как реализовать таймер на php?

    PHP React - решит вашу проблему
    $loop = React\EventLoop\Factory::create();
    $loop->addPeriodicTimer(5, function () {
        //Код
    });
    
    $loop->run();
    Ответ написан
    Комментировать
  • Как реализовать таймер на php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    ну так на вскидку, решение в лоб:
    $nullFlag = true;
    if($time > 12:00 && < 13:00 && $nullFlag) {
        //обнуляем массив
        $nullFlag = false;
    } elseif ($time > 13:00) {
        $nullFlag = true;
    }

    но это прям такое, топорное решение (код - условный, иллюстрирует исключительно идею).

    Можно ещё создавать файл на диске где-то, по cron'у (раз в сутки) и делать например так:
    $file_path = "/home/daemon/clear_array.do";
    if(file_exists($file_path)) {
        //Очивщаем массив
        unlink($file_path);
    }


    Основная проблема в том, что я не могу придумать так вот сходу, как расшарить данные во вне, с работающего нон-стоп скрипта, на PHP. Это всё-таки не С++...

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

    Если кто-то подскажет, как кусок памяти на ПХП расшарить, я думаю, будет более оптимальное решение.

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

    P.S. Реализацию с файлом, можно заменить на запись в БД или в Redis/Memcached. Т.е. проверять не наличие файла, а наличие записи. Кстати да, Redis имеет такой параметр как "срок хранения кэша", в этом случае, даже CRON будет не нужен. Наверняка, что-то такое и в memcached есть.
    Ответ написан
    2 комментария
  • Как отказать так, чтобы не порвать отношения с заказчиком?

    teke_teke
    @teke_teke
    programador
    Начните издалека -- где впервые появились деньги, для чего, как они выглядели. Потом расскажите историю по калькулятор и компьютер. Дальше расскажите как вы стали программистом и как вы любите это дело, бла-бла-бла. Ну дальше привнесите элемент неожиданности.
    Ответ написан
    Комментировать
  • Для чего нужен singleton?

    Adamos
    @Adamos
    Синглтон - прекрасный индикатор. Если человек задает вопрос, зачем он нужен - значит, этому человеку лень прочитать даже Википедию.
    Впрочем, есть утешительный вариант: этот человек просто еще не написал ни одной работоспособной программы, и изучать шаблоны проектирования ему тупо рано.
    Ответ написан
    3 комментария
  • Как разработать свою тему для Drupal 8?

    siteogra
    @siteogra
    Drupal, JS, Meteor
    Не делайте тему с нуля, ничем хорошим это не закончится. Возьмите https://www.drupal.org/project/bootstrap_barrio к примеру и правьте ее.
    Ответ написан
    Комментировать
  • Как сделать все ячейки равных размеров в tableLayoutPanel WinForms?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Указать размер в процентах, если размер должен изменяться в зависимости от размера формы.
    Либо указать точный размер в пикселях.

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

    Для выравнивания можно использовать колонки/строки с размером 100%. Примерно как в HTML.

    Вот пример формы для программного генерирования TableLayoutPanel с добавлением колонок и строк одинакового размера (этот код можно просто вставить в Form1):
    public partial class Form1 : Form
    {
    
      private Panel TableContainer = new Panel();
      private NumericUpDown Columns = new NumericUpDown();
      private NumericUpDown Rows = new NumericUpDown();
    
      public Form1()
      {
        InitializeComponent();
    
        this.Width = 420;
          
        var flowLayoutPanel = new FlowLayoutPanel();
        var LabelColumns = new Label();
        var LabelRows = new Label();
        var Create = new Button();
    
        // панель для редактора таблицы
        flowLayoutPanel.SuspendLayout();
        flowLayoutPanel.AutoSize = true;
        flowLayoutPanel.Controls.Add(LabelColumns);
        flowLayoutPanel.Controls.Add(Columns);
        flowLayoutPanel.Controls.Add(LabelRows);
        flowLayoutPanel.Controls.Add(Rows);
        flowLayoutPanel.Controls.Add(Create);
        flowLayoutPanel.Dock = DockStyle.Top;
        flowLayoutPanel.Location = new Point(0, 0);
    
        LabelColumns.AutoSize = true;
        LabelColumns.Dock = DockStyle.Fill;
        LabelColumns.ImageAlign = ContentAlignment.MiddleLeft;
        LabelColumns.Location = new Point(3, 0);
        LabelColumns.Size = new System.Drawing.Size(53, 29);
        LabelColumns.Text = "Колонок:";
        LabelColumns.TextAlign = ContentAlignment.MiddleLeft;
    
        LabelRows.AutoSize = true;
        LabelRows.Dock = DockStyle.Fill;
        LabelRows.Location = new Point(117, 0);
        LabelRows.Size = new Size(40, 29);
        LabelRows.Text = "Строк:";
        LabelRows.TextAlign = ContentAlignment.MiddleLeft;
    
        Columns.Dock = DockStyle.Fill;
        Columns.Location = new Point(62, 3);
        Columns.Minimum = 1;
        Columns.Size = new System.Drawing.Size(49, 20);
        Columns.Value = 3;
    
        Rows.Dock = DockStyle.Fill;
        Rows.Location = new Point(163, 3);
        Rows.Minimum = 1;
        Rows.Size = new Size(49, 20);
        Rows.Value = 2;
    
        Create.AutoSize = true;
        Create.Dock = DockStyle.Left;
        Create.Location = new Point(218, 3);
        Create.Size = new Size(75, 23);
        Create.Text = "Создать";
        Create.UseVisualStyleBackColor = true;
        Create.Click += new System.EventHandler(CreateTable);
    
        // контейнер для вывода готовой таблицы
        TableContainer.Dock = DockStyle.Fill;
          
        // добавляем необходимые элементы на форму
        this.Controls.Add(flowLayoutPanel);
        this.Controls.Add(TableContainer);
    
        this.Controls.SetChildIndex(flowLayoutPanel, 1);
        this.Controls.SetChildIndex(TableContainer, 0);
      }
    
      private void CreateTable(object sender, EventArgs e)
      {
        // удаляем предыдущую таблицу
        TableContainer.Controls.Clear();
    
        // создаем новую
        var tableLayoutPanel = new TableLayoutPanel();
        tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
        tableLayoutPanel.Location = new System.Drawing.Point(0, 0);
        tableLayoutPanel.Visible = true;
    
        tableLayoutPanel.ColumnCount = Convert.ToInt32(Columns.Value);
        tableLayoutPanel.RowCount = Convert.ToInt32(Rows.Value);
    
        // генератор случайных чисел для раскраски панелей (чтобы было видно)
        var rnd = new Random(DateTime.Now.Millisecond);
    
        // определяем размер одной колонки и строки, в процентах
        int width = 100 / tableLayoutPanel.ColumnCount;
        int height = 100 / tableLayoutPanel.RowCount;
    
        this.Text = String.Format("{0}x{1}", width, height);
    
        // добавляем колонки и строки
        for (int col = 0; col < tableLayoutPanel.ColumnCount; col++)
        {
          // добавляем колонку
          tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, width));
    
          for (int row = 0; row < tableLayoutPanel.RowCount; row++)
          {
            // добавляем строку
            if (col == 0) 
            {
              tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, height));
            }
    
            // добавляем цветную панель, чтобы было видно ячейку в таблице
            var panel = new Panel();
            panel.BackColor = Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255));
            panel.Dock = DockStyle.Fill;
            tableLayoutPanel.Controls.Add(panel, col, row);
          }
        }
    
        // добавляем таблицу в контейнер
        TableContainer.Controls.Add(tableLayoutPanel);
      }
    
    
    }

    2ff063c8d06f474da07fa7df6c515be8.gif
    Ответ написан
  • Какой backend выбрать для крупного портала для новичка?

    fornit1917
    @fornit1917
    PHP берите, тем более что другого ничего не знаете. Проще варианта не найдете.
    Или наймите опытного специалиста, потому что без опыта сделать быстро и хорошо врятли получится, какую бы технологию вы не взяли.
    Ответ написан
    2 комментария
  • Заняты ли потоки при использовании async/await?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    https://msdn.microsoft.com/ru-ru/library/hh156528.aspx
    Выражение await не блокирует поток, в котором оно выполняется. Вместо этого оно указывает компилятору объявить оставшуюся часть асинхронного метода как продолжение ожидаемой задачи. Управление затем возвращается методу, вызвавшему асинхронный метод. Когда задача завершается, она вызывает свое продолжение и возобновляет выполнение асинхронного метода с того места, где она была прервана.

    Метод Task.Run ставит в очередь заданную задачу для запуска в пуле потоков.

    Т.е. в первом случае, у вас просто будет добавлена задача в очередь на выполнение и продолжено выполнение программы (без ожидания, программа может завершить работу раньше, чем созданная задача). А во втором, текущий поток будет ожидать завершения выполнения асинхронной операции. Основной поток при использовании await заморожен не будет.

    // без ожидания
    Console.WriteLine(DateTime.Now);
    
    Task.Run(() => { Thread.Sleep(5000); });
    
    // этот код будет выполнен сразу
    Console.WriteLine(DateTime.Now);
    
    // ожидание с await
    Console.WriteLine(DateTime.Now);
    
    await Task.Run(() => { Thread.Sleep(5000); });
    
    // этот код будет выполнен, только после завершения выполнения задачи
    // текущий (вызывающий) поток не будет приостановлен
    // (например, в Windows Form это будет хорошо видно)
    Console.WriteLine(DateTime.Now);

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

    Console.WriteLine(DateTime.Now);
    
    var t = Task.Run(() => { Thread.Sleep(5000); });
    t.Wait(); // ожидание выполнения задачи
    
    // этот код будет выполнен, только после завершения выполнения задачи
    // текущий (вызывающий) поток будет блокирован
    // (например, в Windows Form это будет хорошо видно)
    Console.WriteLine(DateTime.Now);

    74ad1b048cee439faab48113a61a7ec7.gif
    Ответ написан
    6 комментариев
  • Как разрабатывали не офф. сервер для gta 5?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    я не буду думаю писать какой то мультиплеер для gta 5 :D
    Ну, судя по этой строчке, вопросу и тегам - мы даже и не сомневались ни на минуту!

    Неоф. сервер - 3 варианта:
    1. Скачать сервер с сайта разработчика игры (обычно выкладывают) или игра имеет возможность становиться сервером при запуске с определёнными ключами в командной строке и т.д..
    2. Анализ протокола обмена данными с оф. игровым сервером и его дальнейшая реализация своими силами (повтор АПИ 1-в-1).
    3. Проксирование трафика через себя на оф. сервера, с частичным мониторингом (sniffing) трафика для ведения учёта побед/поражений, проведения турниров, составления таблицы игровых достижений.
    Ответ написан
    4 комментария
  • Как получить размер QTabBar'a (Qt, c++)?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    tb->parent()->size()->width();
    Ответ написан
    6 комментариев
  • Как узнать есть ли в названии файлов кириллические символы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Это плохая практика.
    Вместо этого делайте так:
    1. При сохранении - контейнер изображения (картинку) именуете с помощью base64-строки или порядкового шестнадцатиричного символьного представления (ID-HEX as String).
    2. Реальное имя - пишите в базу вместе с полным путём к контейнеру.
    Ответ написан
    Комментировать
  • Альтернативы С++?

    Therapyx
    @Therapyx
    Data Science
    Первый язык как Жава так и с++ будет хорошим, возьми себе в голову - для начала ты учишься программировать, а не учишь ЯП. И пока ты этого не поймешь, будешь бегать с ЯП на ЯП и задавать такие вопросы.
    Ответ написан
    3 комментария