May 14

Комбиниране на Struct и Volatile в C/C++

Покрай един проект с Ардуино възникнаха няколко въпроса:

  1. Volatile ли са елементите на дадена структура, ако самата тя е декларирана като Volatile?
  2. Може ли в структура да има както обикновени елементи, така и Volatile елементи?
  3. Как се дефинира указател към Volatile структура, която не е маркирана като Volatile в нейната дефиниция?

Continue reading

May 14

Служебната дума Volatile в C/C++

Компилаторите имат редица опции, влияещи върху оптимизацията на кода. Включвайки една или повече от тях, Вие разрешавате на Компилатора да прави “подобрения” на вашата програма, при превеждането й на Асемблер/машинен код. Обикновено оптимизациите не са проблем, но започват да създават главоболия при многонишковите приложения (Multithreading), Interrupt Service Routines (ISR), работа на ниско ниво с регистри на крайни устройства  и т.н.

Главният симптом е: програмата Ви работи добре, докато не включите оптимизациите. След това започват да се случват “странни неща”.

Continue reading

May 05

EventID 4199: The system detected an address conflict for IP address 0.0.0.0

Имате следната ситуация:

  1. VMWare ESX/ESXi;
  2. Виртуални машини с ОС Windows Server 2008/2012/2012R2;
  3. Операционните системи са конфигурирани със статични IP адреси;
  4. Cisco маршрутизатори;
  5. През “произволен” интервал от време губите връзка с някои от сървърите;
  6. В System лога присъства съобщение 4199 с текст “The system detected an address conflict for IP address 0.0.0.0”
  7. В изхода от ipconfig виждате:
    1. Статичния IP адрес е маркиран като Duplicate
    2. ОС автоматично е добавила втори IP адрес 169.x.y.z (APIPA), който е обозначен като Preferred.

Continue reading

Apr 13

Първи стъпки с Arduino (SoftUni) – Проектът

Петте седмици от курса отлетяха толкова бързо! И дойде време за проект и защита 🙂

В последния момент и много на бързо (така се стекоха обстоятелствата) успях да сътворя нещо семпло:

Continue reading

Apr 13

Reverse Package Search for ASP.NET 5 / ASP.NET Core

Разучавайки ASP.NET 5 / ASP.NET Core неминуемо ще попаднете на функцията ConfigureServices(). В нея се конфигурират услугите в DI контейнера:

Continue reading

Jan 08

Configuring Windows Components Logging

“Човек и добре да живее, все ще му се наложи да дебъгва”:

Directory Services Debug Logging Primer

Списъкът е огромен, но не очаквам да е изчерпателен.

Jan 15

“Could not retrieve default replication accounts” during RODC Promotion

The task was to promote the first RODC in a mixed OS domain with Windows 2003 Forest/Domain functional levels. Before DC promotion the AD Schema was successfully extended and there was one Writable Domain Controller (Windows Server 2013 R2) up and running.

I noticed some RODC related groups are missing even trough adprep finished without any errors:

  • Read-only Domain Controllers
  • Allowed RODC Password Replication Group
  • Denied RODC Password Replication Group

I thought they will appear after first RODC promotion. But that was not the case!

These groups, along with many others, are created AFTER you transfer the PDC role to a domain controller, running Windows Server 2008 or later!

After transferring the PDC role these groups were created:

Nice to know it 🙂

Thereafter the first RODC was promoted successfully!

References:

Jan 03

Introducing JsonToDelphiClass

JSON format spread over the years and became preferred lightweight protocol for data exchange. Delphi natively supports JSON via the classes in the System.JSON unit. But dealing with TJsonObject requires an intermediate layer for mapping JSON values to our business logic.
Recent Delphi releases make it easier to load JSON data to a specific BL class with the help of TJson.JsonToObject. But in all cases the developer should manually create these BL classes which can be time consuming operation. The missing part is the JSON Data binding wizard.

Continue reading

Dec 14

Set-ADUser : Insufficient access rights to perform the operation when setting the Title attribute in Active Directory

Представете си, че имате обикновен потребител в Active Directory домейн, примерно Updater@pkg.lab. Искате той да има право да променя полето Title на определен списък с потребители.

Атрибутът Title отразява длъжността (т.е. Job Title) на потребителя в организацията.

За тази цел сте делегирали права Read/Write за атрибута Title в определени организационни единици:

Continue reading

Nov 02

Задаване на стойност за MTU чрез NETSH (Net Shell)

Busy Admin checklist:

  1. Извеждане на списък с текущите стойности на MTU:

    Вижда се екран, подобен на този:

     
  2. Търсене на подходяща стойност за MTU.

    Където:
    – 1472 = Ethernet Default MTU (1500) – Packet Header (28)
     – хостът, до който тестваме MTU-то е pgeorgiev.com.

    Когато MTU-то е твърде голямо, то резултатът от ping командата е:

    MTU стойността се сваля с по 10 байта, докато се получи успешен ICMP reply.

  3. Задаване на нова стойност на MTU за конкретен мрежов интерфейс.

От Windows Vista новите стойности за MTU влизат в сила веднага (т.е. без да се налага рестартиране).