Страницы

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

среда, 24 апреля 2019 г.

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

Здравствуйте! Есть задание вывести общий объём физической памяти и свободный объём физической памяти в Мб. Использую структуру 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 Гб. Снизу скрин выполнения программы. Как решить эту проблему?


Ответ

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

переименовать проект visual studio

Как быстро и безболезненно переименовать рабочий проект в visual studio 2008? По глупости оставил стандартное WindowsFormsApplications, теперь хочу назвать осмысленно. Пробовал разные варианты, гугл не помог.


Ответ

От переименовывания папки с решением и файла *.sln ни чего не ломается, это можно сделать в любой момент без последствий.
Теперь переименуем вложенный проект:
В проводнике находим папку проекта, переименовываем. В папке проекта находим файл *.csproj, переименовываем.
Дальше на ваш выбор:
Двойным кликом по *.sln открываем решение в студии, удаляем отвалившийся проект и добавляем заново переименованный из правильной папки. Открываем настройки проекта и исправляем имя выходной сборки и пространства имен по-умолчанию, если необходимо. Открываем *.sln в любом текстовом редакторе => в начале файла перечислены все проекты, включенные в решение, находим нужный => исправляем имя проекта, имя файла и путь к файлу => сохраняем => закрываем. Открываем *.csproj в любом текстовом редакторе => исправляем пространство имен, имя выходной сборки => проверяем, что пути к файлам проекта не содержат ошибок => сохраняем => закрываем.
В некоторых случаях может потребоваться внести исправления в соседние проекты решения, если они ссылались на измененный проект, правим это либо в обозревателе решений через интерфейс добавления ссылок, либо также, в соответствующих csproj-файлах
Также, рекомендую ознакомиться с официальной документацией на тему Управление решениями, проектами и файлами

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

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


Ответ

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

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

Не работает 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; } }


Ответ

Много лишнего, у позиции 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

После перехода с 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?


Ответ

наиболее старое упоминание таких сокращений нашёл в исходниках 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: нажать и отпустить её, а затем нажать клавишу ?

Регулярное выражение от =begin до опционального =end

Нужно составить регулярное выражение возвращающее текст от =begin и до =end, причем если =end отсутствует, то нужно вернуть весь текст после =begin до конца richTextBox (C#).


Ответ

var str = "text =begin ..."; var m = Regex.Match(str, "=begin(.+?)(=end|$)", RegexOptions.Singleline); m.Groups[1].Value; // " ..."

Какой паттерн проектирования выбрать?

Занимаюсь разработкой небольшого клиент-серверного приложения. Использую многослойную архитектуру. В настоящий момент закончил реализацию слоя доступа к данным, при разработке этого слоя использовал паттерн Репозиторий. Теперь у меня есть своеобразный шлюз (интерфейсный класс), при помощи которого слой бизнес-логики может получать все необходимые данные из базы данных.
Посоветуйте, какие паттерны следует использовать в слое бизнес-логики, чтобы затем реализовать, скажем, сервисный слой. Какие есть варианты?
Поправьте меня, если я чего-то недопонимаю, или вопрос задан некорректно. Спасибо.


Ответ

В сервисном слое (слой бизнес-логики) можно использовать многие паттерны, как ОО паттерны, так и другие паттерны более узкого или широкого профиля. Все зависит от того, какие у вас задачи в этом слое встречаются. Невозможно дать общий готовый список шаблонов, вот, мол, используй вот это и будет тебе счастье. Не-воз-мож-но. И не нужно.
Забудьте на время о паттернах. Они не самоцель. Сперва делайте так, как вам кажется правильным. И в какой-то момент некоторые задачи покажутся знакомыми и уже их при желании можно решить, применив тот или иной паттерн.
Еще лучше, забудьте о паттернах на годик. И вернитесь к ним после того, как получите чуть больше опыта. Тогда, я уверяю вас, вы совершенно по-другому на них взглянете, и более того, даже поймете, что использовали некоторые из них, не осознавая этого. Проанализировав свой опыт, поймете, где могли бы применить тот или иной шаблон. Еще раз повторюсь, вы неправильно понимаете для чего нужны паттерны, если отталкиваетесь от них. Шаблоны -- не самоцель, а лишь средство. Это как спрашивать "я хочу построить дом, какой кирпич мне взять?". Вы не с того начинаете, строитель!