Велкам!

В данном блоге периодически отражаются не особо очевидные решения стандартных и не очень проблем, связанных с IT сферой. Со всеми описываемыми вопросами я сталкивался лично либо сам, либо по средствам обратившихся ко мне людей. Так или иначе все проблемы решаемы. И если решение не очевидно, то рано или поздно они попадут сюда. Потому что нет нерешаемых загадок!

четверг, 27 августа 2015 г.

Notepad++ как среда разработки (подключаем копилятор для native C)

     Одним из наиболее лёгких и комфортных редакторов кода на чистом Си (и не только) на сегодняшний день является широко известный  Notepad++. Он хорош не только своей бесплатностью и удобной подсветкой синтаксиса, но и большим количеством качественных плагинов, превращающих его в своеобразный конструктор, собираемый в заточенную под конкретного пользователя среду.
     Для работы с чистым Си нам понадобится:
  • Непосредственно сам Notepad++. Можно скачать последний дистрибутив с официального сайта.
  • Компилятор gcc в составе пакета MinGW. Берётся, например, здесь.
1. Устанавливаем MinGW (Внимание! В пути к папке mingw \bin не должно быть пробелов!)
2. Проверяем что путь к подпапке bin, находящейся в директории, в которую Вы установили MinGW, прописался в переменную среды path. Для этого:
     2.1 Win+PauseBreak на клавиатуре, Дополнительные параметры, Переменные среды (для win7)
     2.2 Находим переменную Path, нажимаем Изменить и проверяем содержимое. Если путь отсутствует - добавляем его.
3. Устанавливаем Notepad++
4. Запускаем его. Открываем в меню Плагины, Plugin Manager, Show Plugin Manager
5. Находим там плагин NppExec, ставим галочку и инсталим его
6. Нажимаем F6, откроется окно Execute. Вводим туда:
npp_save
cd "$(CURRENT_DIRECTORY)"
gcc "$(FILE_NAME)" -o $(NAME_PART) -march=native -O3
NPP_RUN $(NAME_PART)
и нажимаем кнопку Save, придумываем имя для команды и всё готово.
Теперь вводим код прямо в блокноте, сохраняем его с расширением .c и при необходимости скомпилировать в программу нажимаем F6, Enter.

вторник, 23 апреля 2013 г.

Монитор стабильности системы (замеряем стабильность системы)

Репост отсюда

 

В английских версиях она называется “Reliability Monitor”, в русских – “Монитор стабильности системы”. Чтобы его найти нужно или искать с помощью поиска, либо идти в “Action Center” (Центр поддержки) и там искать его в “Maintenance” (Обслуживание).
Что делает и в чем смысл этого, по сути, отчета?
Здесь все просто – выводится график, на который на временную шкалу нанесены метки выявленных проблем и, в то же время, выведены метки информационных событий, которые могут быть причиной этой проблемы, например инсталляции обновлений, драйверов и т.д.
reliability01
В общем – удобная вещь.
В Windows 7 все работает по умолчанию, а вот под Windows 2008 R2 оказалось, что сама ссылка есть, но данные, по умолчанию, не собираются! После некоторого времени, потраченного на поиски, решение было найдено (Reliability Monitor displays no information in Windows Server 2008 and in Windows Server 2008 R2).
Итак, первое, что нужно сделать, это включить в реестре сбор данных, нам нужна ветка
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Reliability Analysis\WMI
и в ней прописываем 1 в параметр WMIEnable
Лучше всего, чтобы потом не вспоминать каждый раз об этом, прописать это в групповой политике для серверов, через Group Policy Preferences.
Но это еще не все, следует включить задачу. Для это, вызываю Task Scheduler, там Task Scheduler Library –> Microsoft –> Windows –> RAC. У меня там всего одна задача – RacTask. Захожу в ее свойства, перехожу ха закладку Triggers, там выбираю второй из них, который One time со статусов Disabled и захожу в его свойства. Ставлю галочку возле Enabled и наживаю Ok и затем снова Ok.
Начиная с этого момента данные начинают собираться.
К сожалению, пока не придумал как проделать эту же операцию с помощью групповой политики, если найду способ – обновлю заметку.

среда, 17 апреля 2013 г.

Проверка доступности портов (утилита PortQry)

PortQry, входит в состав Support Tools  для Windows 2003, но она не работает корректно под более новыми ОС. В связи с этим Microsoft выпустила новую версию тулзы, совместимую с Windows 2008 и более поздними под нозванием PortQryV2.

Синтаксис: 
 portqry -n сервер [-p протокол] [-e || -r || -o порт] [-l путь_к_логфайлу] [-i] [-g]
где
-n [сервер] ip-адрес или имя сервера, порт которого собираемся проверить;
-p [протокол] этим параметром можно указать тип проверяемого протокола (TCP, UDP). Можно использовать сразу оба, указав параметр BOTH;
-e [порт] одиночный порт для проверки. Используется значение в диапазоне от 1 до 65535;
-r [диапазон_портов] диапазон портов для проверки в формате начальный:конечный;
-o [список_портов_в_формате первый,второй,третий..] проверка портов по списку;
-l [путь_к_логфайлу] протоколировать информацию в файл;
-y перезаписывать лог;


Настройка времени в домене Windows

Позаимствовано себе на память itpadla

Все хотят видеть на компьютере точное время, кроме того, это очень важно для нормального функционирования домена Windows и AD. Казалось бы, чего проще, настраиваешь PDC эмулятор на синхронизацию с каким-нибудь ntp и все становится на места само собой … Но нет, уже несколько раз, наблюдалась рассинхронизация контроллеров домена между собой и жалобы пользователей на то, что наше время отличается от точного на пару минут.

вторник, 9 апреля 2013 г.

Ошибка протокола RDP: Disconnected from x.x.x.x (Server has not session available)

Проблема: 
При подключении к удалённому серверу по протоколу RDP, не получая даже экрана приглашения, видим ошибку:
Решение:
Когда мы подключаемся к серверу терминалов, служба лицензирования выдаёт нам сертификат, который сохраняется на нашей клиентской машине и предъявляется по требованию сервера терминалов.

Только в нашем случае сертификат уже устарел и из-за какого-то шаманского бага не был заменён на новый. Поможем винде.

  1. Пуск => Выполнить => Regedit
  2. В редакторе реестра идём дём сюда: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store
  3.  В каталоге Store видим подкаталог LICENSE с некоторыми цифрами - удаляем весь каталог.
  4. Теперь пробуем подключиться - вуаля, всё работает!
Источник:
Microsoft

понедельник, 8 апреля 2013 г.

Правильное значение MTU (оптимизация windows сети)

Как давно известно, задание оптимального размера MTU (Maximum Transmission Unit) способно ощутимо повысить производительность сети. Этот параметр во многом зависит от характеристик используемого в сети оборудования.

Как же определить значение MTU, оптимальное для вашей сети?
Очень просто!
Всё что нужно, это:
  1. Запустить консоль windows (Пуск => CMD).
  2. Определить при помощи какого узла будем проверять значение. Если у вас есть прямой доступ в интернет, то рекомендую ip гугла 8.8.8.8. Если же интернета у вас нет и необходимо оптимизировать сеть локальную, то выбирайте сервер или любой одноранговый узел сети.
  3. Далее запускаем через CMD пинг до выбранного узла с ключами -f -l размер_пакета, т.е. 
                 ping 8.8.8.8 -f -l 1500 (здесь 1500 является нашим пробуемым значением MTU, ключ f запрещает разбивать пакет на фрагменты, ключ l - задаёт размер этих пакетов).
    1. Если ping возвращает результат Требуется фрагментация пакета, но установлен запрещающий флаг. то выбранное значение MTU превышает возможности сети и следует его несколько уменьшить. Берём значение, например, 1400 и пробуем снова.
    2. Если ping возвращает результат вида Ответ от 8.8.8.8: число байт=32 время<1мс TTL=128, то данное значение MTU наша сеть вполне способна осилить и можно пробовать числа побольше.
    3. Результатом работы должно стать последнее число, отвечающее пункту 2.2, например 1248.
  1. После того, как мы вычислили необходимое значение, добавляем к нему число 28 (ровно столько занимает служебная информация). Получившееся в итоге значение нам необходимо внести в реестр.
  2. Нажимаем Пуск => Выполнить => Regedit
  3. Перемещаемся в ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, находим в ней своё сетевое подключение (можно определить по ip-адресу). 
    1. Смотрим есть ли там параметр MTU. Если есть меняем его значение, на получившееся у нас.
    2. Если нет, то создаём параметр типа DWORD с именем MTU и уже в него заносим получившееся значение.




Источники: