• Что означают команды linux?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    man test

    [ - это синоним команды test
    обычно используется для проверки чего нить
    Ответ написан
    2 комментария
  • Проблема с включением ноутбука Sony Vaio SVF152A29V?

    Jump
    @Jump
    Системный администратор со стажем.
    У вас логическая проблема.
    Вы в вопросе явно запретили давать ответы.
    Ответ написан
    Комментировать
  • Как построчно считать файл на русском в perl?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ответ написан
    Комментировать
  • Какой минималистичный дистрибутив Linux выбрать?

    @neol
    Ну поставьте в убунту любой оконный менеджер по вкусу и используйте его. На кой черт менять дистрибутив ради смены WM/DE? Не знаю, что сейчас в тренде из "легковесных", но я бы копал сразу в сторону тайловых, типа i3 или awesome. Думаю вам они придутся по душе.
    Ответ написан
    Комментировать
  • Как открыть сервер для интернета?

    @hobo-mts
    Shortly
    Посмотрите в сторону слов роутер, NAT, виртуальный сервер, статический/динамический IP. А 192.168.1.*** -- приватный адрес, его из Интернета не увидеть.
    Ответ написан
    Комментировать
  • Существует ли датчик угла наклона относительно горизонта?

    Ocelot
    @Ocelot
    Гуглите "системы локально позиционирования". Работают как GPS "в миниатюре". Координаты вычисляются по сигналам с инфракрасных, радио или ультразвуковых маяков.
    Ответ написан
    Комментировать
  • Куда съезжать с Ubuntu?

    Ernillew
    @Ernillew
    Администрирую *nix-системы с 1997 года
    > что с бубунты пора съезжать вообще на что-то более серьезное

    Этот человек — клоун начитавшийся форумов для чайников.
    Ubuntu — мэйнстримный дистрибутив. Никуда съезжать с него нет нужды.
    Ответ написан
    6 комментариев
  • Что такое список в функциональных языках программирования?

    Отвечу за Haskell.
    Вот список:
    data [a] = [] | a : [a]
    Т.е. список либо пуст, либо имеет [ссылку на] [недовычисленную] голову и [ссылку на] [недовычисленный] другой список - хвост. Т.о. чтобы пробежаться по списку (без использования готовых функций), надо проверять, не является ли он пустым, если нет, работать с головой, а хвост обрабатывать рекурсивно.
    Список иммутабельный, т.е. ничего никуда вставить нельзя, однако списки могут "шарить" общий хвост, например:
    list1 = [2,3,4]
    list2 = 1 : 2 : list1
    list3 = 0 : 0 : list1

    В памяти будет (после форсирования, рассмотрение ленивости я опускаю) как-то так:
    1-2
       \
        2-3-4
       /
    0-0
    Ответ написан
    Комментировать
  • Как получить определенный элемент массива в Perl?

    targumon
    @targumon
    $el - это ссылка на хэш. Ее надо разыменовать, прежде чем обращаться к самому хэшу:
    foreach my $el (@series){
      print $el->{'login'};
    }
    Ответ написан
    1 комментарий
  • Как ускорить алгоритм?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Сначала учитываем 3*N^2 треугольников, у которых вершина с прямым углом лежит на одной из координатных осей (или вообще в точке (0,0)).
    Теперь посчитаем все остальные треугольники.
    Пусть (a,b) - координаты вершины с прямым углом, 0 < a <= N, 0 < b <= N.
    Если c=НОД(a,b), a1=a/c, b1=b/c, то оставшаяся вершина должна иметь координаты (x,y)=(a+t*b1,b-t*a1), где t - ненулевое целое число.
    Должны выполняться условия 0 <= x,y <= N. Перепишем их в виде условий на t:
    -a/b1 <= t <= (N-a)/b1, -(N-b)/a1 <= t <= b/a1 (заметим, что a1, b1 больше нуля, так что делить можно). Учитывая, что t должно быть целым, оно лежит на отрезке от
    t0 = -floor(min(a/b1,(N-b)/a1))
    до
    t1 = floor(min((N-a)/b1,b/a1))
    И, поскольку запрещённое значение 0 всегда принадлежит этому отрезку, получаем, что число треугольников с вершиной (a,b) равно t1-t0.
    Перебираем все точки (a,b), считаем t1-t0 и суммируем.
    Всё. Сложность N^2*log(N), основное время тратится на вычисление НОД.
    Если надо быстрее - надо будет думать. Скорее всего, надо будет перебирать взаимно простые пары (a1,b1), считать, сколько точек попало в перекошенный квадрат (переведённый в базис (a1,b1), (-b1,a1)), искать для них формулу и суммировать. Может быть, получится, может быть, нет. Какого порядка N?
    Ответ написан
    Комментировать
  • Как в линуксе запускать команду по расписанию автоматически (мне нужно каждые 15 минут)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ответ написан
    Комментировать
  • Как расписать циклы через goto, а потом преобразовать в state-машину?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Возьмём программу, в которой есть и циклы, и goto. Например, проверка, есть ли в матрице нулевая строка:
    void Check(int M[5][5]){
      for(int a=0;a<5;a++){
        for(int b=0;b<5;b++){
          if(M[a][b]!=0) goto L1;
       }
       goto L2;
    L1: continue;
      }
      printf("No\n"); return;
    L2:
      printf("Yes\n"); 
    }

    Опишем все переменные в начале, а циклы распишем прямо по определению.
    Кроме того, return превратим в goto на метку Return в конце функции:
    void Check(int M[5][5]){
      int a,b;
      a=0;
      goto Loop1_Check;
    Loop1_Body:
      b=0;
      goto Loop2_Check;
    Loop2_Body:
          if(M[a][b]!=0) goto L1;
          b++;
    Loop2_Check:
          if(b<5) goto Loop2_Body;  
       goto L2;
    L1: 
    Loop1_End:
       a++;
    Loop1_Check:  
      if(a<5) goto Loop1_Body;
      printf("No\n"); goto Return;
    L2:
      printf("Yes\n"); 
    Return: ;
    }

    Теперь между любыми двумя метками у нас находится линейная последовательность, в которой могут встретиться конструкции if(condition) goto label;
    Заводим переменную state.
    Каждой метке присваиваем какое-нибудь значение этой переменной, и вместо goto label пишем state=label; а вместо if(condition) goto label; - if(condition) state=label; else{ остаток кода до следующей метки }. Если перед какой-нибудь меткой label не было безусловного goto, пишем перед ней state=label;
    void Check(int M[5][5]){
      const int Return=0;
      const int Loop1_Check=1;
      const int Loop1_Body=2;
      const int Loop2_Check=3;
      const int Loop2_Body=4;
      const int L1=5;
      const int L2=6;
    
      int state;
      int a,b;
      a=0;
      state=Loop1_Check;
    Loop1_Body:
      b=0;
     state=Loop2_Check;
    Loop2_Body:
          if(M[a][b]!=0) state=L1;
          else{
             b++;
             state=Loop2_Check;
          }
    Loop2_Check:
          if(b<5) state=Loop2_Body;  
          else state=L2;
    L1: 
          a++;
          state=Loop1_Check;
    Loop1_Check:  
      if(a<5) state=Loop1_Body;
      else{
          printf("No\n"); 
          state=Return;
      }
    L2:
      printf("Yes\n"); 
      state=Return;
    Return: ;
    }

    (это преобразование было неэквивалентным).
    Теперь перед первой меткой вставляем while(state!=Return){ switch(state){
    а каждую метку label: заменяем на break; case label:
    break; перед первой меткой убираем, а case Return: меняем на } }
    void Check(int M[5][5]){
      const int Return=0;
      const int Loop1_Check=1;
      const int Loop1_Body=2;
      const int Loop2_Check=3;
      const int Loop2_Body=4;
      const int L1=5;
      const int L2=6;
    
      int state;
      int a,b;
      a=0;
      state=Loop1_Check;
      while(state!=Return){
        switch(state){
          case Loop1_Body:
            b=0;
            state=Loop2_Check;
            break;
          case Loop2_Body:
            if(M[a][b]!=0) state=L1;
            else{
              b++;
              state=Loop2_Check;
            }
            break;
          case Loop2_Check:
            if(b<5) state=Loop2_Body;  
            else state=L2;
            break;
          case L1: 
            a++;
            state=Loop1_Check;
            break;
          case Loop1_Check:  
             if(a<5) state=Loop1_Body;
             else{
                printf("No\n"); 
                state=Return;
             }
             break;
           case L2:
              printf("Yes\n"); 
              state=Return;
              break;
         }
      }
      ;
    }

    Всё.
    Ответ написан
    4 комментария
  • Как установить CURL?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    С sources.list своими разберитесь, у вас там говно.

    А так:
    apt-get install curl=7.38.0-3 libcurl3=7.38.0-3
    или
    apt-get install curl=7.35.0-1ubuntu2.5 libcurl3=7.35.0-1ubuntu2.5
    Ответ написан
    Комментировать
  • Как защиить содержимое VM?

    edinorog
    @edinorog
    Троллей не кормить!
    никак )
    Ответ написан
    Комментировать
  • Почему в некоторых ноутбуках и компьютерах процессор Core i5?

    @bondbig
    Потому, что смотреть нужно не только (и не столько) на циферку после i, а на фактические характеристики процессоров. Иной i3 будет шустрее, чем некоторые i7.
    cpubenchmark.net/cpu_list.php, в качестве примера.
    Ответ написан
    Комментировать
  • Как отредактировать множество текстовых файлов?

    @pcdesign
    perl -pi~ -e 's/foo/bar/g' *.html

    Ну вот например однострочник.
    Подменяет foo на bar во всех файлах с расширением .html.

    Ваша задача решается в 3 однострочника.

    P.S. И этот однострочник так же сохраняет оригиналы файлов с именами html~.
    Ответ написан
    Комментировать
  • Как правильно запускать приложения в терминале Ubuntu 14.10?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Это не особенность, а фича.
    По умолчанию поиск проходит по всем путям из переменной PATH + текущий каталог.
    Вот только обозначение текущего каталога нужно писать ./
    Например:
    ./project3
    тогда система поймет что вы запускаете программу (скрипт) из текущего каталога.
    Ответ написан
    1 комментарий
  • Как правильно запускать приложения в терминале Ubuntu 14.10?

    @FireGM
    Надо запускать
    ./myprogramm
    В вашем случае
    ./project3
    Ответ написан
    Комментировать
  • Какой набор ПО нужен для удобной работы на vps?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Зачем?????
    Вы ставьте что вам нужно, зачем вам куча софта, который кто-то посоветует?
    Ну бредовый же вопрос.
    Ответ написан
    Комментировать
  • Как расшарить папку для смартфона(android)?

    berezuev
    @berezuev
    #define TRUE FALSE
    Если внутри локали, то просто расшарить папку по SMB протоколу, если на расстоянии, то ssh/sftp
    Ответ написан
    Комментировать