
рдирдорд╕реНрддреЗ! рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ 2019 рдХрд╛ рд╕рдореНрдореЗрд▓рди рд╕рддреНрд░ рдЕрднреА рднреА рдкреВрд░реЗ рдЬреЛрд░реЛрдВ рдкрд░ рд╣реИ, рд╣рдо рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдмреВрде рдХреЗ рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗред рд╣рдордиреЗ 2019 рдХреА рд╢реБрд░реБрдЖрдд рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХреА рдереА, рдЗрд╕рд▓рд┐рдП 2018 рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд╕рд╛рде рд╣реА 2019 рдХреА рдкрд╣рд▓реА рдЫрдорд╛рд╣реАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓реЗрдЦреЛрдВ рд╕реЗ рд▓рд┐рдП рдЧрдП рдереЗ, рдФрд░ рдХрд╛рд░реНрдп рдкрддреНрд░рдХ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдпрд╛ рдПрдХ рдХреНрдпреВрдЖрд░ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдерд╛ред рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рдеред
рдпрджрд┐ рдЖрдк рдЙрди рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдПрдХ рд╕реНрдЯреИрдВрдб рдХреЗ рд╕рд╛рде рдЦрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рд╣рдорд╛рд░реА рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрд╛ рдпрд╛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИред рдпреЗ рд╣рдореЗрд╢рд╛ C, C ++, C #, рдпрд╛ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИрдВред рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╣рдо рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП (рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреА рд╕рд┐рд░реНрдл рдПрдХ рдЪрд░реНрдЪрд╛) рд╣рдо рдкреБрд░рд╕реНрдХрд╛рд░ рджреЗрддреЗ рд╣реИрдВ - рдбреЗрд╕реНрдХрдЯреЙрдк, рдЯреНрд░рд┐рдВрдХреЗрдЯ, рдЖрджрд┐ рдкрд░ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ:

рдХреНрдпрд╛ рдЖрдк рднреА рдпрд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЕрдЧрд▓реЗ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдмреВрде рдкрд░ рдЖрдЗрдПред
рд╡реИрд╕реЗ, "
рд╕рдореНрдореЗрд▓рди рдХрд╛ рд╕рдордп! 2018 рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢! " рдФрд░ "
рд╕рдореНрдореЗрд▓рдирддреЛ, рдЪрд▓реЛ рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░реЗрдВ "рдХреЛрдб рдореЗрдВ рдПрдХ рдЧрд▓рддреА рдЦреЛрдЬреЗрдВ"ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, 2018 рдХреЗ рдкреБрд░рд╛рдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
2018
рд╕реА ++
рдХреНрд░реЛрдорд┐рдпрдо рдмрдЧstatic const int kDaysInMonth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; bool ValidateDateTime(const DateTime& time) { if (time.year < 1 || time.year > 9999 || time.month < 1 || time.month > 12 || time.day < 1 || time.day > 31 || time.hour < 0 || time.hour > 23 || time.minute < 0 || time.minute > 59 || time.second < 0 || time.second > 59) { return false; } if (time.month == 2 && IsLeapYear(time.year)) { return time.month <= kDaysInMonth[time.month] + 1; } else { return time.month <= kDaysInMonth[time.month]; } }
рдЬрд╡рд╛рдм рд╣реИрд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рд╕реЗрдЯ рд╕реЗ рд╕рдмрд╕реЗ "рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛" рдХрд╛рд░реНрдпред рд╣рдордиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЖрдЧрдВрддреБрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣рдорд╛рд░реЗ рдмреВрде рдкрд░ 2018 рддрдХ рдкрд╛рдИ рдЬрд╛рдПред рдпрд╣ рдХрдИ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдореЗрдВ рднреА рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
if (time.month == 2 && IsLeapYear(time.year)) { return time.month <= kDaysInMonth[time.month] + 1;
рдЕрдВрддрд┐рдо
рдЗрдл-рдФрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╡рд╛рдкрд╕реА рдорд╛рди рдореЗрдВ рдЯрд╛рдЗрдкреЛрд╕ рд╣реЛрддрд╛ рд╣реИред рд╕рдордп рдХреЗ рдмрдЬрд╛рдп
, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рджреЛ рдмрд╛рд░ рдЧрд▓рддреА рд╕реЗ
time.month рдирд┐рд░реНрджрд┐рд╖реНрдЯ
рдХрд┐рдпрд╛ ред рдЗрд╕рд╕реЗ рдпрд╣ рддрдереНрдп рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрд╢рд╛
рд╕рдЪ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддреНрд░реБрдЯрд┐ "
31 рдлрд░рд╡рд░реА " рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред рдмрдЧ рдХрд╛ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдкрд░ рд╕реНрдкреЙрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрдХрдиреАрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЪрд┐рддреНрд░рдг рднреА рд╣реИред
рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдмрдЧ bool VertInfluencedByActiveBone( FParticleEmitterInstance* Owner, USkeletalMeshComponent* InSkelMeshComponent, int32 InVertexIndex, int32* OutBoneIndex = NULL); void UParticleModuleLocationSkelVertSurface::Spawn(....) { .... int32 BoneIndex1, BoneIndex2, BoneIndex3; BoneIndex1 = BoneIndex2 = BoneIndex3 = INDEX_NONE; if(!VertInfluencedByActiveBone( Owner, SourceComponent, VertIndex[0], &BoneIndex1) && !VertInfluencedByActiveBone( Owner, SourceComponent, VertIndex[1], &BoneIndex2) && !VertInfluencedByActiveBone( Owner, SourceComponent, VertIndex[2]) &BoneIndex3) { .... }
рдЬрд╡рд╛рдм рд╣реИрдзреНрдпрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐
VertInfluencedByActiveBone () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрддрд┐рдо рддрд░реНрдХ рдореЗрдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рдПрдХ рдирдЬрд░ рдЗрдл рдмреНрд▓реЙрдХ рдкрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╕рд░рд▓реАрдХреГрдд рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
if (!foo(....) && !foo(....) && !foo(....) & arg)
рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЧрд▓рддреА рд╣реЛ рдЧрдИ рд╣реИред рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЗ рдХрд╛рд░рдг,
рд╡рд░реНрдЯрдЗрдирдлреНрд▓реБрдПрдВрдЯрдмрд╛рдЗрдПрдХреНрдЯрд┐рд╡рдмреЛрди () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддреАрд╕рд░реА рдХреЙрд▓ рдЪрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рддреАрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕ рдХреЙрд▓ (рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝) рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдИрдВ рдУрд░
рд╡рд░реНрдЯрдЗрдирдлрд╝реНрд▓реБрдЗрдЯрдмрд╛рдпрдПрдХреНрдЯрд┐рд╡рдмреЛрди () рдкреНрд░рдХрд╛рд░ рдХреЗ
рдмреВрд▓ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджрд╛рдИрдВ рдУрд░, рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рд╣реИред рдХреЛрдб рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг (рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдХреЛрд╖реНрдардХ рдХреЛ рдмрдВрдж рдХрд░рдХреЗ рджреВрд╕рд░реА рдЬрдЧрд╣ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛):
if(!VertInfluencedByActiveBone( Owner, SourceComponent, VertIndex[0], &BoneIndex1) && !VertInfluencedByActiveBone( Owner, SourceComponent, VertIndex[1], &BoneIndex2) && !VertInfluencedByActiveBone( Owner, SourceComponent, VertIndex[2], &BoneIndex3))
рддреНрд░реБрдЯрд┐ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ "
рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 4 рдХреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдЪреЗрдХ " рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреА рдЧрдИ рдереАред рдЖрд▓реЗрдЦ рдореЗрдВ рд▓реЗрдЦ "рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рддреНрд░реБрдЯрд┐" рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИред рдореИрдВ рдЗрд╕ рдХрдерди рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред
Android рдмрдЧреНрд╕ void TagMonitor::parseTagsToMonitor(String8 tagNames) { std::lock_guard<std::mutex> lock(mMonitorMutex);
рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рддреНрд░реБрдЯрд┐ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХрд╛рд░реНрдп:
typedef int32_t GGLfixed; GGLfixed gglFastDivx(GGLfixed n, GGLfixed d) { if ((d>>24) && ((d>>24)+1)) { n >>= 8; d >>= 8; } return gglMulx(n, gglRecip(d)); }
рдЬрд╡рд╛рдм рд╣реИрд╕рдорд╕реНрдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╣реИ
(d >> 24) + 1 ред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЪрд░ рдХреЗ 8 рдЙрдЪреНрдЪ-рдХреНрд░рдо рдмрд┐рдЯреНрд╕ рдореЗрдВ рдЗрдХрд╛рдЗрдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдмрд┐рдЯреНрд╕ рдПрдХ рд╕рд╛рде рдирд╣реАрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ 0x00 рдФрд░ 0xFF рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рднреА рдореВрд▓реНрдп рдЙрдЪреНрдЪ рдмрд╛рдЗрдЯ рдореЗрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА рдХрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓рд┐рдЦрдХрд░ рдиреЙрдирдЬрд░реЛ рд╣реИрдВ (d >> 24) рдлрд┐рд░ рдпрд╣ рдЙрдЪреНрдЪ рдЖрда рдмрд┐рдЯреНрд╕ рдХреЛ рдирд┐рдореНрди рдмрд╛рдЗрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдпрд╣ рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╛рдЗрди рдмрд┐рдЯ рдЕрдиреНрдп рд╕рднреА рдмрд┐рдЯреНрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЪрд░ d 0b11111111'00000000'00000000'00000000 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдкрд╛рд░реА рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдорд╛рди 0b1111111111'11111111'111111111111111111 рдорд┐рд▓рддрд╛ рд╣реИред 1 рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдореЗрдВ 1 рдЬреЛрдбрд╝рдХрд░
int , рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ 0 (-1 + 1 = 0) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде
((рдбреА >> 24) +1), рд╡рд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЙрдЪреНрдЪ рдЖрда рдмрд┐рдЯ 1 рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ "рд╕реНрдорд┐рдпрд░" рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдорд╛рдирдХ рдХрд╣рддреЗ рд╣реИрдВ: тАЬE1 >> E2 рдХрд╛ рдорд╛рди E1 рд╣реИ, рдЬреЛ рдХрд┐ E2 рдмрд┐рдЯ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ рдпрд╛ рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдорд╛рди E1 / 2 ^ E2 рдХреЗ рднрд╛рдЧрдлрд▓ рдХрд╛ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред
рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ ред "
рддреЛ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдпрд╣ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╢рд┐рдлреНрдЯ рдХреЗ рдмрд╛рдж, рд╢реВрдиреНрдп рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо
((рдбреА >> 24) +1) рд╣рдореЗрд╢рд╛ 0 рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╣реА рдореВрд▓реНрдп рд╣реЛрдЧрд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдоред рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреА рддрд░рд╣, рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ "рд╣рдордиреЗ
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХреА, рдпрд╛ рдХреЛрдИ рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИ ред"
2019
рд╕реА ++
"рдЬреАрд╕реАрд╕реА рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ" int foo(const unsigned char *s) { int r = 0; while(*s) { r += ((r * 20891 + *s *200) | *s ^ 4 | *s ^ 3) ^ (r >> 1); s++; } return r & 0x7fffffff; }
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб GCC 8 рд╕рдВрдХрд▓рдХ рдХреА рдЧрд▓рддреА рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реИ?
рдЬрд╡рд╛рдм рд╣реИрдлрд╝рдВрдХреНрд╢рди рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдмрд┐рдЯрд╡рд╛рдЗрдВрдб рдФрд░ (&) рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╣реИред рд╕рдВрдХрд▓рдХ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдЪрд░
рдЖрд░ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рд╢рд┐ рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдПрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред рдЪрд░
рдЖрд░ рдХреЗ рдУрд╡рд░рдлреНрд▓реЛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╕рдВрдХрд▓рдХ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж рдЪрд░
рдЖрд░ рдореЗрдВ рдореВрд▓реНрдп рдирдХрд╛рд░рд╛рддреНрдордХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рдЗрди рдмрд┐рдЯ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди
r & 0x7fffffff рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рд╣реИ рдФрд░ рд╕рдВрдХрд▓рдХ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЪрд░
рдЖрд░ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред
"
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 6.26 рд░рд┐рд▓реАрдЬ " рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ред
рдХреНрдпреВрдЯреА рдмрдЧ static inline const QMetaObjectPrivate *priv(const uint* data) { return reinterpret_cast<const QMetaObjectPrivate*>(data); } bool QMetaEnum::isFlag() const { const int offset = priv(mobj->d.data)->revision >= 8 ? 2 : 1; return mobj && mobj->d.data[handle + offset] & EnumIsFlag; }
рд╕реА #
Infer.NET рдмрдЧ public static void WriteAttribute(TextWriter writer, string name, object defaultValue, object value, Func<object, string> converter = null) { if ( defaultValue == null && value == null || value.Equals(defaultValue)) { return; } string stringValue = converter == null ? value.ToString() : converter(value); writer.Write($"{name}=\"{stringValue}\" "); }
рдЬрд╡рд╛рдм рд╣реИValue.Equals (defaultValue) рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ,
рд╡реИрд▓реНрдпреВ рдирд▓ рд░реЗрдлрд░реЗрдВрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдРрд╕реЗ рдЪрд░ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрдЧрд╛, рдЬрдм
defaultValue! = Null , рдФрд░
value == null рд╣реЛрдЧрд╛ ред
рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ "
Infer.NET рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЫрд┐рдкреА рд╣реИрдВ? "
FastReport рдмрдЧ public class FastString { private const int initCapacity = 32; private void Init(int iniCapacity) { sb = new StringBuilder(iniCapacity); .... } public FastString() { Init(initCapacity); } public FastString(int iniCapacity) { Init(initCapacity); } public StringBuilder StringBuilder => sb; } .... Console.WriteLine(new FastString(256).StringBuilder.Capacity);
рдХрдВрд╕реЛрд▓ рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
FastString рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?
рд░реЛрдЬрд▓рд┐рди рдмрдЧ private SyntaxNode GetNode(SyntaxNode root) { var current = root; .... while (current.FullSpan.Contains(....)) { .... var nodeOrToken = current.ChildThatContainsPosition(....); .... current = nodeOrToken.AsNode(); } .... } public SyntaxNode AsNode() { if (_token != null) { return null; } return _nodeOrParent; }
рдЬрд╡рд╛рдм рд╣реИрдкреНрд░рд╡реЗрд╢
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн
рд╡рд░реНрддрдорд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╡ рд╣реИ
редullSpan.Contains (....) ред
рд╡рд░реНрддрдорд╛рди рдЪрд░
рдиреЛрдбреНрдпреВрд▓рдЯреНрд░реЛрдХреЗрди.рдП.рдПрд╕.рдиреЛрдб () рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдЦ "
рд░реЛрд╕рд▓рд┐рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ " рд╕реЗ рддреНрд░реБрдЯрд┐ред
рдПрдХрддрд╛ рдмрдЧ .... staticFields = packedSnapshot.typeDescriptions .Where(t => t.staticFieldBytes != null & t.staticFieldBytes.Length > 0) .Select(t => UnpackStaticFields(t)) .ToArray() ....
рдЬрд╡рд╛рдм рд╣реИрдЯрд╛рдЗрдкреЛ рдЕрдиреБрдорддрд┐ рджреА:
&& рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрдЬрд╛рдп,
& рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЪреЗрдХ
t.staticFieldBytes.Length> 0 рд╣рдореЗрд╢рд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА
рдЕрд╢рдХреНрдд рдЪрд░
t.staticFieldBytes рд╣реЛ , рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред
рдпрд╣ рддреНрд░реБрдЯрд┐ рдкрд╣рд▓реА рдмрд╛рд░ "
рдУрдкрди рдпреВрдирд┐рдЯреА 3 рдбреА рдШрдЯрдХреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг " рд▓реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рдереАред
рдЬрд╛рд╡рд╛
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛ рдмрдЧ private static boolean checkSentenceCapitalization(@NotNull String value) { List<String> words = StringUtil.split(value, " "); .... int capitalized = 1; .... return capitalized / words.size() < 0.2;
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╢рдмреНрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд▓рдд рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдЬрд╡рд╛рдм рд╣реИрдпрджрд┐ рдЕрдХреНрд╖рд░ рдХрд╛ 20% рд╕реЗ рдХрдо рдЕрдХреНрд╖рд░ рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЪреЗрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЗрд╡рд▓ рдорд╛рди 0 рдпрд╛ 1 рд╣реЛрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдЧрд▓рдд рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛ рдпрджрд┐ рд╕рднреА рд╢рдмреНрдж рдПрдХ рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡рд┐рднрд╛рдЬрди 0 рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рд▓реМрдЯреЗрдЧрд╛ред
"
рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ " рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ред
рд╕реНрдкреЙрдЯрдмрдЧреНрд╕ рдмрдЧ public static String getXMLType(@WillNotClose InputStream in) throws IOException { .... String s; int count = 0; while (count < 4) { s = r.readLine(); if (s == null) { break; } Matcher m = tag.matcher(s); if (m.find()) { return m.group(1); } } throw new IOException("Didn't find xml tag"); .... }
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ рдХрд┐ xml рдЯреИрдЧ рдЦреЛрдЬ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИред
рдЬрд╡рд╛рдм рд╣реИрдЧрд┐рдирддреА <4 рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рдкреВрд░реА рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп
рдЧрдгрдирд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ xml рдЯреИрдЧ рдХреА рдЦреЛрдЬ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣рд▓реА рдЪрд╛рд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реА рдЬрд╛рдПрдЧреАред
рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреА рддрд░рд╣ рдпрд╣ рддреНрд░реБрдЯрд┐, "
рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ " рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреА рдЧрдИ рдереАред
рд╡рд╣ рд╕рдм рд╣реИред рд╣рдо рдЕрдЧрд▓реЗ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЧреЗрдВрдбрд╛ рд╕реНрдЯреИрдВрдб рдХреЗ рд▓рд┐рдП рджреЗрдЦреЛред рд╣рдо рдирдИ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╣реЗрд▓рд┐рдпрд╛рдБ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╕реНрдХрд╛рд░ рджреЗрдВрдЧреЗред рдЬрд▓реНрдж рдорд┐рд▓рддреЗ рд╣реИрдВ!

рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рд░реНрдЧреЗрдИ рдЦреНрд░реЗрдиреЛрд╡ред
2018-2019 рдореЗрдВ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдмрдЧ-рдЦреЛрдЬ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди ред