Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Вывод объема оперативной памяти

#cpp #winapi


Здравствуйте! Есть задание вывести общий объём физической памяти и свободный объём
физической памяти в Мб. Использую структуру MEMORYSTATUS из библиотеки Windows.h

    MEMORYSTATUS ms;
GlobalMemoryStatus(&ms);
label20->Text = Convert::ToString((int)ms.dwTotalPhys / 1024 / 1024) + "Mb";
label22->Text = Convert::ToString((int)ms.dwAvailPhys / 1024 / 1024) + "Mb";


Кол-во свободной памяти выводит правильно, с диспетчером задач сверил, а вот общий
объём вывел неправильно, у меня 4 Гб.
Снизу скрин выполнения программы. Как решить эту проблему?

    


Ответы

Ответ 1



В самом начале страницы MSDN, посвященной GlobalMemoryStatus, написано: GlobalMemoryStatus can return incorrect information. Use the GlobalMemoryStatusEx function instead. В переводе: GlobalMemoryStatus может возвращать неверную информацию. Используйте вместо нее функцию GlobalMemoryStatusEx.

Как создать 100 файлов с именами a1, a2, a3, …. a100 в терминале?

#linux #terminal


Как создать 100 файлов с именами a1, a2, a3, …. a100 в терминале?
Это вообще можно сделать в одну команду?
    


Ответы

Ответ 1



наибольшая «сложность» — получить последовательность чисел. дополнить же их буквами и передать программе touch — это просто. стандартом posix, насколько мне известно, каких-либо «бортовых» средств, упрощающих процесс генерации, нет. можно воспользоваться каким-нибудь универсальным языком: с помощью программы awk: $ awk 'BEGIN { for(i=1;i<=5;i++) printf "a%d\n", i }' a1 a2 a3 a4 a5 для создания файлов достаточно передать список программе touch: $ touch $(awk 'BEGIN { for(i=1;i<=5;i++) printf "a%d\n", i }') с помощью программы bc: $ echo 'for (i=1; i<=5; i++) {print "a",i,"\n"}' | bc a1 a2 a3 a4 a5 для создания файлов достаточно передать список программе touch: $ touch $(echo 'for (i=1; i<=5; i++) {print "a",i,"\n"}' | bc) в операционной же системе gnu есть программа seq, как раз упрощающая генерацию: $ seq -f 'a%g' 1 5 a1 a2 a3 a4 a5 для создания файлов достаточно передать список программе touch: $ touch $(seq -f 'a%g' 1 5) ну и современные «навороченные» оболочки типа bash/zsh понимают конструкцию {1..5}: $ echo {1..5} 1 2 3 4 5 т.е. можно создать файлы опять-таки передав список программе touch: $ touch a{1..5}

Есть возможность получить статистику кол-ва строк Java кода в разных модулях в IntelliJ IDEA?

#java #intellij_idea


Есть возможность получить статистику кол-ва строк Java кода в разных модулях (пакетах/папках)
в IntelliJ IDEA? Может есть какой-то плагин?
В идеале, без пустых строк и импортов. 

Я видел этот вопрос, но хотелось бы без танцев с посторонними утилитами + там где
надо у меня Mac и на него крайне не рекомендуется ставить/запускать что-то левое. Лучше,
если поставил плагин к IDEA (еще лучше сделать штатными средствами IDEA, но я таких
функций не нашел), нажал получить статистику и все.

P.S. Да я в курсе, что кол-во строк кода мало информативно, но тем не менее потребовалось
для одного отчета менеджеру.    
    


Ответы

Ответ 1



Вполне вероятно что вам подойдет именно этот плагин. Функционал не такой обширный, но все же хоть какая-то статистика есть.

Не работает CSS анимация в chrome

#css #анимация


Не работает CSS анимация в chrome и opera, но работает в мозиле и даже интернет эксплорере,
префиксы проставлены последней версией autoprefixer, версии браузеров последние...
В чем загвоздка?



body {
  /*ЛЕТНИЙ ФОН*/
  /*background:url(images/g12.jpg);}*/
  /*ЗИМНИЙ ФОН (ПАДАЮЩИЕ СНЕЖИНКИ)*/
  background: fixed, url(https://udsezon.ru/thumb/qyy419IWBadI3WCti5o-fw/90r90/913216/snezhinku.jpg);
  -webkit-animation: snegopad 30s linear infinite;
  animation: snegopad 30s linear infinite;
}

@-webkit-keyframes snegopad {
  0% {
    background-position: 0 0, 0 0;
  }
  100% {
    background-position: 0 0, 0% 563px;
  }
}

@keyframes snegopad {
  0% {
    background-position: 0 0, 0 0;
  }
  100% {
    background-position: 0 0, 0% 563px;
  }
}



    


Ответы

Ответ 1



Много лишнего, у позиции 2 значения по x и по y, а не 4: body { background: url(https://udsezon.ru/thumb/qyy419IWBadI3WCti5o-fw/90r90/913216/snezhinku.jpg); animation: snegopad 30s linear infinite; } @keyframes snegopad { 100% { background-position: 0 563px; } }

Обозначения специальных клавиш в Linux

#linux #hotkeys


После перехода с windows-систем крайне непривычно видеть обозначения клавиш с Ctrl,
Alt и других.

Например, в mc команда chown это C-x o -- поисле недолгих поисков понимаешь, что
это сочетание клавиш Ctrl-x o.

А что за сочетание такое M-? (Find file в mc) и как его набирать?

Или другой пример, из tmux:


  M-1 to M-5 Arrange panes in one of the five preset layouts:
  even-horizontal, even-vertical, main-horizontal, main-vertical, or
  tiled.


Вообще, какие обозначения приняты в linux для таких специальных клавиш, типа Ctrl,
Shift, Alt, Win?
    


Ответы

Ответ 1



наиболее старое упоминание таких сокращений нашёл в исходниках gnu emacs версии 18.59, которая вышла 25 лет назад. цитата из man/emacs.texi: You can use modifier keys such as @key{CTRL}, @key{META} and @key{SHIFT} with function keys. To represent these modifiers, prepend the strings @samp{C-}, @samp{M-} and @samp{S-} to the symbol name. но, конечно, такое сокращение широко употреблялось и ранее. сложно лишь найти достаточно аргументированное подтверждение этому. А что за сочетание такое M-? (Find file в mc) и как его набирать? это клавиша meta, которая может быть представлена разными способами. нынче это обычно клавиша с надписью alt. т.е., надо удерживать alt и нажать клавишу ?. но можно и более переносимым образом — через клавишу escape: нажать и отпустить её, а затем нажать клавишу ?.

Регулярное выражение: разный результат при одном и том же сравнении

#javascript #регулярные_выражения


Простейшая регулярка и я не пойму в чем ошибка. Нужно проверять что бы в строке не
было "@" 

Моя регулярка

reg = /^[^@]{3,30}$/g;


но при использовании вижу следующее



reg = /^[^@]{3,30}$/g;
console.log(reg.test('dddd')); //true
console.log(reg.test('ddddd')); //false




Как так? 
    


Ответы

Ответ 1



Как указано в справке Как и при вызове метода exec() (или при совместном с ним вызове), метод test(), вызванный несколько раз на одном и том же экземпляре регулярного выражения, будет начинать проверку с конца предыдущего сопоставления. Поэтому при следующем вызове reg.test проверка идет не с начала строки, а, в данном случае, с 4 индекса. Как указано в английском ответе это происходит из-за флага g. В случае его отсутствия работать будет ожидаемо: reg = /^[^@]{3,30}$/; console.log(reg.test('dddd')); //true console.log(reg.test('ddddd')); //false

Утилита touch, генерация имен файлов

#linux #ubuntu #bash


Нужно создать файлы в каталоге с именами от aa до zz, тоесть aa,ab,ac...zy,zz. 

Как это можно прописать в терминале? Возможно ли обойтись без цикла? Спасибо!
    


Ответы

Ответ 1



На bash можно просто: touch {a..z}{a..z}