Задать вопрос
  • Как работает код?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Потому что
    n-- не тоже самое что n-1
    Первое уменьшает n на единицу и возвращает результат.
    Второе возвращает число на еденицу меньше чем n. При этом само n остается прежним, в результате вы и получаете бесконечный цикл (ведь n не меняется)

    А вот следующие выражения идентичны:
    n=n-1;
    n-=1;
    n--;
    Ответ написан
    3 комментария
  • Какие плагины вы считаете стандартными для работы в WordPress?

    tuxfighter
    @tuxfighter
    троль
    Нет и не может быть ни каких "стандартных" плагинов.
    Все зависит от назначения сайта и ваших сугубо личных предпочтений
    Ответ написан
    2 комментария
  • Как прочитать 100 последних строк в коммандной строке из файле?

    NeiroNx
    @NeiroNx
    Программист
    tail -n 100 /var/log/syslog
    Ответ написан
    Комментировать
  • Как хранить такие данные в бд?

    Gomonov
    @Gomonov
    Таблица с цветами (table_c)
    id, (поля с описанием цвета - название, стандарт и т.п.)
    Таблица с описанием ламеля (tabel_l)
    id, (поля для описания ламеля: высота и т.п.), color_id - вот это поле ссылается на таблицу цвета
    Таблица изделия (tabel_p) - то что у вас есть
    id, lamel_id - поле ссылается на таблицу ламелей (tabel_l), count_l - количество ламелей, (прочие поля для описания изделия: ширина, высота)
    Ответ написан
    6 комментариев
  • Mate academy, кто, что скажет?

    @LaraLover
    Мой бывший коллега закончил у них курсы на QA. Ему понравилось, он устроился работать.
    НО, мы долго с ним работали вместе, я хорошо его знаю, он очень умный, просто ленивый. Сказать сколько дали ему именно курсы не могу, но я могу с уверенностью сказать что он мог выучиться из без этих курсов.
    Оценить их работу очень сложно. Если бы была открытая статистики, что из потока в 30 человек, устроилось и работает 25 -тогда можно подумать. А если устроился 1-2 человека (как мой коллега) то и деньги платить особо нет смысла...дешевле пойти на курсы с фиксированной платой, и там у ментора выпросить график развития, что читать, что учить и тд...
    Ответ написан
    1 комментарий
  • Заменить обычную сим-карту на nano-sim?

    Zoominger
    @Zoominger
    System Integrator
    В своё время обрезал полноценную SIM-карту до micro-SIM ножницами.
    Ответ написан
    1 комментарий
  • Что нужно знать, чтобы сказать "Я знаю/могу программировать на powershell"?

    @tartarelin
    Про себя могу сказать, что я ничего толком не знаю в PS, когда надо написать какой-то скрипт, то открываю Гугл и пишу там "powershell check file" или "powershell заменить текст в файле" и так шаг за шагом.
    Но это не помешало мне написать в резюме, что я знаю PS, пройти собеседование и устроиться на работу
    Ответ написан
    Комментировать
  • Как настроить linux так, чтобы на нем было несколько пользователей и у каждого свои права на проекты?

    Adamos
    @Adamos
    Как вариант - не пускать их на сервер вовсе.
    Настроить выгрузку проектов через GitLab, например, и уже его средствами разруливать доступ.
    Ответ написан
    2 комментария
  • В чем отличие Ubuntu от Ubuntu 18.04 в Windows Store?

    Scorpi
    @Scorpi
    Пакет Ubuntu всегда указывает на последнюю версию.
    Если хотите 18.04 - ставьте Ubuntu 18.04.
    Если хотите чтобы Ubuntu сама обновилась когда появится новый релиз в Windows Store - ставьте просто Ubuntu.
    Ответ написан
    9 комментариев
  • Выбор языка программирования Школьнику 12лет?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    Если змейку и сапера уже написал, то в принципе выбирай любой язык.
    Теперь перед тобой открыт весь мир.
    Если ты точно написал змейку...
    И сапера...
    Ответ написан
    Комментировать
  • Что нужно сделать эникею с опытом чтобы за 4 месяца стать безопасником или админом?

    Zoominger
    @Zoominger
    System Integrator
    Знаю Linux на уровне RHCSA+ (готовился к курсам RHCSA+RHCE, но не сдавал).

    Не знаете.

    Читаю давно каналы про новости в ИБ, чутка кусал в метасплоите виртуалки,

    Это не ИБ, это даже близко не ИБ. Это как "я посмотрел на скальпель, теперь я хирург".

    Через 4 месяца нужно найти работу безопасником (не верится)

    Правильно не верится. Безопасника без образования не возьмёт никто.

    Подскажите, реалистично ли за 4 месяца стать junior-безопасником в какой-то сфере с моими данными?

    Нет.

    или сетевым/системным админом.

    Это возможно.

    И имеет ли место быть мнение, что в регионах почти не найти нормальной работы и надо сразу пытаться ехать в Москву/Питер?

    Ну да, в принципе.

    TL;DR Недоинженер без вышки не хочет ни в техподд, ни в шарагу, ни в петлю. Помогите, что делать?

    В первую очередь - забыть этот идиотский сленг уровня подростков с Лурочки.
    Во вторую - развиваться в сторону сисадминства, забыв влажные мечты о безопасности, куда без в/о никак, безопасник - это не только "я поставел Кали и типерь я хаккир". Если опыта эникея хотя бы полтора-два года, то есть шансы найти работу сисадмином в маленькой конторе или продвинутого эникея в большой.
    А там уже - заочка на ИБ, если прямо хочется.
    Ответ написан
    Комментировать
  • Как управлять запросами к API на клиенте?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Писать свой или искать готовый механизм очереди с контролем времени.

    В очередь (массив) класть запрос (метод, параметры) и callback. Либо промисы.

    Держать массив с временем ответов последних 100 (30) вызовов. Если самый древний более 10 (5) секунд назад, можно выполнить очередной.

    Как-то написал вот такую
    кривую реализацию


    Модуль очереди:
    /**
     * Hold Your Horses!
     * Promise-based dispatcher that respects frequency limits.
     * It queues requests so that no more than N are processed within 1 second.
     * Those can go in parallel.
     *
     * Instantiate the new HH with options, specifying time limit.
     * Method .add(function) adds a new job to the queue.
     * Argument function should return Promise object that starts to process only after the function is called.
     * @return Object Promise.
     */
    
    function HorsesHolder(options) {
      options         = options || {};
      this.rps        = options.rps || 3; // requests per second
      this.parallel   = options.parallel || this.rps; // max parallel running jobs
    
      this.times      = []; // -1: slot is busy, 0: slot is free, positive timestamp - time slot's job has finished
      for (let i=0; i<this.rps; i++) this.times.push(0); // [0, 0, 0] initially
    
      this.queue      = [];
      this.inprogress = [];
      this.debug      = !!options.debug;
      
      this.debug  &&  console.log("%s ms: [HH] initialized", this.ts());
    }
    
    
    HorsesHolder.prototype.add = function(promiseMaker) {
      var self = this;
      
      return new Promise(function(resolve, reject) {
        self.queue.push({
          resolve: resolve,
          reject: reject,
          promiseMaker: promiseMaker,
        });
        
        self._ping();
      });
    };
    
    
    // Decide: work or wait
    HorsesHolder.prototype._ping = function() {
    
      if (this.queue.length === 0) {
        this.debug  &&  console.log("%s ms: [ping] queue is empty", this.ts());
        return;
      }
      
      const best = this._bestTime();
      
      if (best === -1) {
        this.debug  &&  console.log("%s ms: [ping] cannot go: %s", this.ts(), JSON.stringify(this.times));
        return;
      }
      
      const index = this.times.indexOf(best);
      
      this.debug  &&  console.info("%s ms: [ping] exec now at index %d", this.ts(), index);
    
      this._execute(index);
    }
    
    
    /**
     * Out of current times[] finds the best to occupy, if possible;
     * otherwise -1
     */
    HorsesHolder.prototype._bestTime = function() {
      let best = -1;
    
      for (let i=0; i<this.rps; i++) {
        const time = this.times[i];
        if (time === 0) return 0;        // can go now - nothing better!
        if (time < 0) continue;          // previous not finished yet
        if (this.ts() < time + 1000) continue; // not yet
    
        if (best === -1) best = time;
        else best = Math.min(best, time);
      }
      
      return best;
    }
    
    
    HorsesHolder.prototype.ts = function() {
      return (new Date()).getTime();
    }
    
    
    HorsesHolder.prototype._execute = function(index) {
      this.times[index] = -1; // mark busy
      const job = this.queue.shift();
      this.inprogress.push(job);
    
      const self = this;
      
      job.promiseMaker()
      .then(function(r) {
        self.debug  &&  console.info("%s ms: [HH] Job done at index %d", self.ts(), index);
        job.resolve(r);
      })
      .catch(function(err){
        self.debug  &&  console.error("%s ms: [HH err] Error at index %d: %s", self.ts(), index, err.toString());
        job.reject(err);
      })
      .finally(function(){
        self.inprogress.splice( self.inprogress.indexOf(job), 1);
        self.times[index] = self.ts();
        setTimeout(() => self._ping(), 1000);
      });
    }
    
    export default HorsesHolder;


    Модуль работы с VK API:
    /*global VK*/
    /**
     * Function returns Promise for each VK API call.
     * Respects the 3 call per second limit.
     *
     * by Sergei Sokolov <hello@sergeisokolov.com> 2019.
     */
     
    import HorsesHolder from '@/utils/horsesholder';
    
    const debug = true;
    
    const HH = new HorsesHolder({ debug });
    
    
    export default function asyncVK(methodName, data) {
    
    	return HH.add(() => {
    
    		data = data || {};
    		if (!data.v) data.v = 5.92; // VK API version https://vk.com/dev/versions
    		
    		return new Promise((res, rej) => {
    			VK.Api.call(
    				methodName,
    				data,
    				r => {
    					if (r.error) {
    						debug && console.error("[asyncvk] VK API call error:", r.error);
    					}
    					
    					
    					if (r.response) {
    						
    						res(r.response);
    						
    					} else if (r.error) {
    						
    						rej(r.error);
    						
    					} else {
    						
    						debug && console.error("[asyncvk] VK API bad response:", r);
    						
    						rej(r);
    						
    					}
    				}
    			)
    		});
    	});
    }


    Ответ написан
    1 комментарий
  • Где можно купить тонкий 140мм куллер?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ищите у Noctua.
    У них лучшие кулеры под все задачи (включая нетривиальную сборку), ИМХО.

    Можно купить кроватку-переходник на 120мм: Noctua NA-SFMA1 и туда установить NF-A12x15 (15мм кулер).
    Noctua at Computex 2019
    The fan prototypes on display included slim 140x15, 80x15, 70x15 and 50x10mm A-series models as well as a 140mm counterpart of the NF-A12x25, all of which are on the roadmap for 2021
    Ответ написан
    1 комментарий
  • Почему find: paths must precede expression?

    shambler81
    @shambler81 Куратор тега Linux
    а то что в find уже есть вшитый алгоритм + дней - дней вас не смущает?
    find. / -mtime +n
    find ./ -mtime -n
    На крайняк file ./ -mtime +n -exec find -mtime -n file {} \;
    Что конкретно пытаетесь сделать ?
    Ответ написан
    Комментировать
  • Сколько слов длины 1-10 можно составить из слова МАТЕМАТИКА?

    longclaps
    @longclaps
    Смотри: всего 2**10-1 разных непустых сочетаний буквомест, но всё портят повторяющиеся буквы: например, сочетание МА достигается 5 способами:
    1. МАтематика
    2. МатемАтика
    3. МатематикА
    4. матеМАтика
    5. матеМатикА

    Считать это ручками хлопотно, проще написать однострочник:
    from itertools import combinations
    
    print(len(set(s for le in range(1, 11) for s in combinations('МАТЕМАТИКА', le))))
    Ответ написан
    Комментировать
  • Как вы формируете свой прайс?

    С июля месяца сталкиваюсь с катастрофическим демпингом, что уже напрягает

    А я смотрю на цены других и свою делаю пониже. Все обвиняли в демпинге, а я брал заказы :)
    Ответ написан
    3 комментария
  • Как вы формируете свой прайс?

    @nrgian
    С июля месяца сталкиваюсь с катастрофическим демпингом, что уже напрягает. Решил поинтересоваться, как происходит оценка работы для каждого.

    Демпинг только в простых работах.
    На сложные работы - крайне сложно найти специалиста, кто выполнит.

    Как лично вы формируете прайс на свои услуги?

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

    fzfx
    @fzfx
    18,5 дм
    никаких. серверы не для разгона.
    Ответ написан
    4 комментария
  • Что изучить, для того чтобы стать разработчиком нейроинтерфейсов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Бауманка или Физтех вполне подойдут

    MIT или Стенфорд еще лучше

    но, в принципе, любая физика
    Ответ написан
    5 комментариев