url rewriting – IIS Rewrite shows me Authorization 401 Error

I separate my IIS server into different nodes and my current node doesn’t have an authorization system.
I changed links to another server in the front pages, but browsers started to make warrings about crocs requests, It’s cool, sure.
So, I changed the front pages to my server and I made a rewrite on my server for browser requests to my server, but actually, requests go to a different server.

        <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="myserverauthlinks/(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
            <action type="Rewrite" url="https://differentserverauth/{R:1}" logRewrittenUrl="true" />
        </rule>

First of all, I got 503 errors, but I added an SSL certificate to my node system, and I got the next error – 401. When I go to https://differentserverauth – authorization works fine. But on my node, it shows me a login popup again and again with a 401 error.
Each systems has following settings:

   <system.web>
        <compilation debug="true" />
        <authorization>
            <allow users="?" />
        </authorization>
    </system.web>

Could you please give any advice on where should I look? Thanks anyway.

Creating a virtual camera that shows an app (override web whatsapp QR code)

I’m trying to override the problem of connecting to web whatsapp on a phone without a camera in order to scan the QR code.
It’s probably not important but the computer runs linux.

My idea: creating a virtual device that the phone (samsung galaxy s21) will see as a camera, and in this camera there will be:

Option 1: the remote controlled desktop of the linux computer (by vnc or similar).

Option 2: the android phone will be connected by USB to the computer and it will see the desktop as a “camera”.

Any other idea can be good, but it must be a synchronized whatsapp and not on an android emulator.

Thanks!

Execution plan for slow-running query shows table spool operator generating millions of rows

I’m an aspiring Database Administrator and I’ve taken on the monumental task of performance tuning our decade-old sql server. After watching countless Brent Ozar videos, I now feel like I can competently navigate an execution plan.

I’ve been taking a look at the following query to try and improve performance:

WITH FDLOC (ParticipantID, FirstDayAfterLossOfCoverage) AS
 (
  select p.ID, Participants.GetFirstDayAfterLossOfCoverage(p.ID) AS FirstDayAfterLossOfCoverage from dbo.Participants p (nolock)
  inner join Participants.BenefitAssignments pba (nolock) on pba.ParticipantID = p.ID
  inner join dbo.BenefitPlans b (nolock) on b.ID = pba.BenefitPlanID
  where p.Deleted = 0 and 
        p.Archived = 0 and 
     p.TypeID IN (1) and
        pba.DELETED = 0 and
     b.DELETED = 0 and
     b.CarrierID = @CarrierID
 ),
 CoverageEnd (ParticipantID, CoverageEndDate) AS
 (
  select p.ID, (select CoverageEndDate from Participants.CalculateEndOfCoverageDate(p.ID,pqe.EventType)) AS CoverageEndDate 
  from dbo.Participants p (nolock)
  inner join Participants.BenefitAssignments pba (nolock) on pba.ParticipantID = p.ID
  inner join dbo.BenefitPlans b (nolock) on b.ID = pba.BenefitPlanID
  inner join Participants.QBEvents pqe on pqe.ParticipantID = p.PQBID
  where p.Deleted = 0 and 
        p.Archived = 0 and 
     p.TypeID IN (1) and
        pba.DELETED = 0 and
     b.DELETED = 0 and
     b.CarrierID = @CarrierID
 )

 select distinct
  case when @getAllParticipants = 0 then ept.ID else @emptyGuid end ProcessID, 
  p.ID as ParticipantID, p.PqbID, p.FirstName, p.LastName, p.MiddleInit, p.TitleID, p.DateOfBirth, isnull(p.Gender, 'Not Specified') (Gender),
  pqb.SocialSecurityNumber PrimarySSN, p.SocialSecurityNumber, p.RelationshipID, p.StatusID,
  case when p.ID = p.PqbID then 'Y' else 'N' end YesNoCondition, null MaintenanceCode,
  case when p.TypeID = 3 then pc.CoverageStartDate else fdloc.FirstDayAfterLossOfCoverage end FDLOC,
  case when p.TypeID = 3 then '12/31/9999' else eoc.CoverageEndDate end CobraEndDate,
  ph.Number PhoneNumber, pe.Email ParticipantEmail,
  case
   when p.ID = p.PqbID then
    case p.TypeID
     when 3 then 'RT'
     when 1 then
      case when c.ReceiverID in (@customCarrierReceiverID_DELTA, @customCarrierReceiverID_UHC) then 'FT' else 'AC' end
    end
   else null
  end EmpStatusCode,
  case p.TypeID when 3 then 'A' when 1 then 'C' end BenefitStatusCode,
  case 
   when ph.PhoneTypeID = 1 or ph.PhoneTypeID = 3 then 'WP'
   when ph.PhoneTypeID = 2 or ph.PhoneTypeID = 4 then 'HP'
   when ph.PhoneTypeID is null then 'EM'
  end CommNumberQualifier,
   pa.AddressLine1, pa.AddressLine2, pa.City, upper(pa.(State)) (State),
  case 
   when charindex('-', pa.PostalCode) = 0 then pa.PostalCode
   else substring(pa.PostalCode, 0, charindex('-', pa.PostalCode))
  end PostalCode,
  case when pa.Country in ('USA', 'US') then null else pa.Country end Country,
  e.SenderID EmployerSenderID, e.SenderCode EmployerSenderCode, e.Name EmployerName, e.Code EmployerCode, c.EDIPolicyNumber, 
  e.ReferenceID EmployerReferenceID, c.Name CarrierName, c.Code CarrierCode, c.ReceiverID CarrierReceiverID, c.ReceiversCode CarrierReceiverCode, 
  c.TaxIDCode CarrierTaxIDCode, e.TaxIDCode EmployerTaxIDCode, null TerminationDate, 
  case when p.TypeID = 3 then null else qe.EDIID end EventType
 from Participants p (nolock)
  inner join Participants pqb (nolock)
    inner join Employers e (nolock) on pqb.EmployerID = e.ID
   inner join Participants.Continuees pc (nolock)on pqb.ID = pc.ParticipantID
   left join Participants.CurrentEvent pq 
    left join QualifyingEvents qe (nolock) on pq.EventType = qe.ID
   on pqb.ID = pq.ParticipantID
   outer apply
   (
    select top 1 * from Participants.Addresses (nolock)where ParticipantID = pqb.ID and Active = 1 and DELETED = 0 order by UpdatedOn, (Order)
   ) pa
   outer apply
   (
    select top 1 * from Participants.Phones (nolock)where ParticipantID = pqb.ID and Active = 1 and isDeleted = 0 order by UpdatedOn, IsPrimary
   ) ph
   outer apply
   (
    select top 1 * from Participants.Emails (nolock)where ParticipantID = pqb.ID and isPrimary = 1 and isDeleted = 0 order by UpdatedOn, isPrimary
   ) pe
  on p.PqbID = pqb.ID
  inner joi
/*...<TRUNCATED>...*/
select * from (
 select distinct p.ID (ParticipantID), p.PqbID (PQBID), p.StatusID, c.ReceiverID,
  CASE when b.EDIPlanCode is null or b.EDIPlanCode = '' 
  then 
   b.Description 
  else 
   b.EDIPlanCode + 
   case when c.ReceiverID = @customCarrierReceiverID_UHC and p.TypeID = 1 
   then 
    'TY' 
   else 
    ''  
   end
  end
 as BenefitPlanName, 
 case when c.id = @tabenCarrierID_UHC  and c.ReceiverID  = @customCarrierReceiverID_UHC and  pb.EligibilityDate < '4/1/2017' then '4/1/2017' else pb.EligibilityDate end (PlanStartDate), 
 
 case when p.ID = p.PqbID then cl.EDICode else NULL end as CoverageLevelCode,
 isnull(case when p.StatusID not in (5, 13) then (assignEnd).(end)
 else 
  case when  (assignEnd).(end) < (term).EffectiveDate  -- when termed, and the termination occured after the plan was ended, use plan end, else use termination end
  then 
   (assignEnd).(end)
  else
   (term).EffectiveDate
  end
 end, '12/31/9999')
  as PlanEndDate,
  case b.PlanTypeID 
   when 1 then 'HLT'
   when 2 then 'DEN'
   when 3 then 'VIS'
   else 'UDF' -- what are other values?
  end
   as InsuranceLineCode, b.EDIPlanCode, b.ID (BenefitPlanID) , c.IncludeTermedInEDI
     from participants p (nolock)
  inner join edi.processtable ept (nolock) on
  case when @getAllParticipants = 0 then p.PqbID else @emptyGuid end = case when @getAllParticipants = 0 then ept.ParticipantID else @emptyGuid end
  inner join participants.BenefitAssignments pb (nolock)on pb.ParticipantID = p.ID
  inner join Benefits.CoverageLevels cl (nolock)on cl.ID = pb.CoverageLevelID
  inner join dbo.BenefitPlans b (nolock)on pb.BenefitPlanID = b.ID
  inner join dbo.Carriers c (nolock)on c.Id = b.CarrierID and c.id = ept.CarrierID
  cross apply (select max(ISNULL(pbm.enddate,'12/31/9999')) (end) from participants.BenefitAssignments pbm (nolock) where pbm.ParticipantID = p.ID
   and pbm.BenefitPlanID = pb.BenefitPlanID and pbm.CoverageLevelID = pb.CoverageLevelID and pbm.DELETED = 0 and pbm.BeginDate <= isnull(pbm.EndDate, '12/31/9999')) assignEnd
  outer apply (select top 1 pt.Effectivedate from participants.Terminations pt (nolock)where  pt.ParticipantID = p.PqbID and p.StatusID in (5, 13) and pt.ReinstateDate is null Order by pt.EffectiveDate desc) (term)
  where 
 ( (@getAllParticipants = 0 and 
  ept.StatusID is null and ept.RequestID is null)
  or (@getAllParticipants = 1)
   ) 
  and c.id = @carrierid
  and b.DELETED = 0 and b.Active = 1 and cl.Deleted = 0 and pb.DELETED = 0
  and p.DELETED = 0 and isnull(p.Archived, 0) = 0 
   and 
  (
  (p.StatusID IN (4, 8, 12, 18, 19)) --pqb/retiree enrolled/100% and terminated
  OR
  ( p.StatusID IN (5, 7, 13) AND ISNULL(c.IncludeTermedInEDI, 0) = 1) -- include termed when option is set
 )
  and cl.Deleted = 0
  and pb.BeginDate <= isnull(pb.EndDate, '12/31/9999')
  and isnull
  (
  (select top 1 pt.ReasonID from participants.Terminations pt (nolock)where pt.ParticipantID = p.PqbID 
  and p.StatusID in (5, 13) and pt.ReinstateDate is null order by pt.EffectiveDate desc), 
 -1) <> 3 --exclude qbs termed for non-commence
 and b.EDIPlanCode <> 'ignore'
 and not exists (select 1 from participants.Notes pn (nolock)where pn.ParticipantID = p.ID and pn.Note like '%EDI_IGNORE%' and pn.isDeleted = 0)
 
 ) x
 where
 ( 
  --19584
  (x.PlanEndDate >= @today and x.ReceiverID in (@customCarrierReceiverID_UHC,@customCarrierReceiverID_DELTA,@customCarrierReceiverID_EYEMED))
   or 
  (x.ReceiverID not in (@customCarrierReceiverID_UHC,@customCarrierReceiverID_DELTA,@customCarrierReceiverID_EYEMED))
    )

Here's an image of the execution plan

Looking at this execution plan, it’s easy to see that the final sort is taking up the bulk of the cost. My plan of attack is to try and minimize the amount of data being sorted in the sort operator.

You can see where the table spool operator after EDI.ProcessTable is creating 48,245,028 rows, even though the actual index scan only return 65,1087 rows. The operator shows that there’s 741 iterations. That explains why the spool contains so many rows. I don’t think it’s necessary to have this many rows in our temp table, especially when it’s all getting sorted in the final output. The worst part about this query is that sql is sorting 65,000,000 rows and is only spitting out 717 rows.

I think this query is terribly optimized but I’m not sure where to begin. I think a good start would be somehow getting rid of that table spool so that it’s creating a massive list of rows to sort through.

You can’t see it in the picture I’ve attached, but there are multiple table spool operators that are adding millions of rows to a temp table, even though the child operator only spits out 81.

Any helpful tips would be greatly appreciated.

When I search for a 301 redirected domain Google shows a message from GoDaddy rather than following the 301 redirect

I have a domain name registered at Godaddy. I also have a website that I created at Google Sites. I forward the URL to go to the Google Site. I did this using the Godaddy Domain Manager Forwarding option. The forwarding type is Permanent (301) and it is set to do forwarding only, not forwarding with masking (the latter doesn’t work, although I would prefer that if possible).

The forwarding works well—when I type in the URL, it sends me to the Google Sites. The problem is that when I search for the URL in Google, it says:

Learn how you can get this domain » | See more domains like this ». This Web page is parked FREE, courtesy of GoDaddy. 24/7 Support.

I would like the search to be updated with what information from the Google Sites. How can I do this?

I have tried going to Google Search Console/URL Inspection. It says that the URL is not on Google. I then tried “REQUEST INDEXING.” It says that the indexing request is rejected and that “During live testing, indexing issues were detected with the URL”. The Page Fetch portion says “Failed: Redirect error.”

SharePoint 2019 shows blank pages after the KB5001945 Security Update

After installing the SharePoint 2019 KB5001945 Security Update, today all document libraries and lists show nothing but a blank page. This occurs even on the Central Admin site. Does anyone know the best way to fix it? Should we roll-back the CU? Anyone is facing the same issue?

Similar issue is reported here yesterday.

Search Console Shows No Impressions From My Other Authors Posts

When looking at impressions data in search console I only see my own posts ranking in search results. Two others also write on my blog and they have not shown up for any terms.

Their articles are quite good quality 600 words + and I don't see why they are not ranking anywhere. Any help, please since I am paying for one of the authors

Is it possible to create an app that shows how crowded is a place is in real time?

Is it possible to create an app that shows in real time how crowded a location is and other aggregated data related to the people that are in a specific location?
Is eventually possible to get that kind of data even from people that dont have downloaded the app yet? Are there companys that sells gps/current location data?

I CHANGED MY YOUTUBE CHANNEL NAME & DESCRIPTION A FEW WEEKS AGO. BUT WHEN I’M SHARING THE CHANNEL LINK TO THE SOCIAL MEDIA IT SHOWS MY OLDER NAME

A FEW WEEKS AGO. BUT WHEN I’M SHARING THE CHANNEL LINK TO THE SOCIAL MEDIA IT SHOWS MY OLDER NAME & DESCRIPTION.. DOES ANYBODY KNOW HOW TO SOLVE IT??

html – This CSS code shows desktop portions on smartphones, I cannot seem to find the issue?

/*custom font*/
@import url(https://fonts.googleapis.com/css?family=Montserrat);

/*basic reset*/
* {margin: 0; padding: 0;}

html {
    height: 100%;
    /*Image only BG fallback*/
    
    /*background = gradient + image pattern combo*/
    background: linear-gradient(to right, #0f2027, #203a43, #2c5364);
}

body {
    font-family: montserrat, arial, verdana;
}
/*form styles*/
#msform {
    width: 400px;
    margin: 50px auto;
    text-align: center;
    position: relative;
}
#msform fieldset {
    background: white;
    border: 0 none;
    border-radius: 3px;
    box-shadow: 0 0 15px 1px rgba(0, 0, 0, 0.4);
    padding: 20px 30px;
    box-sizing: border-box;
    width: 80%;
    margin: 0 10%;
    
    /*stacking fieldsets above each other*/
    position: relative;
}
/*Hide all except first fieldset*/
#msform fieldset:not(:first-of-type) {
    display: none;
}
/*inputs*/
#msform input, #msform textarea {
    padding: 15px;
    border: 1px solid #ccc;
    border-radius: 3px;
    margin-bottom: 10px;
    width: 100%;
    box-sizing: border-box;
    font-family: montserrat;
    color: #2C3E50;
    font-size: 13px;
}
/*buttons*/
#msform .action-button {
    width: 100px;
    background: #27AE60;
    font-weight: bold;
    color: white;
    border: 0 none;
    border-radius: 1px;
    cursor: pointer;
    padding: 10px 5px;
    margin: 10px 5px;
}
#msform .action-button:hover, #msform .action-button:focus {
    box-shadow: 0 0 0 2px white, 0 0 0 3px #27AE60;
}
/*headings*/
.fs-title {
    font-size: 15px;
    text-transform: uppercase;
    color: #2C3E50;
    margin-bottom: 10px;
}
.fs-subtitle {
    font-weight: normal;
    font-size: 13px;
    color: #666;
    margin-bottom: 20px;
}
/*progressbar*/
#progressbar {
    margin-bottom: 30px;
    overflow: hidden;
    /*CSS counters to number the steps*/
    counter-reset: step;
}
#progressbar li {
    list-style-type: none;
    color: white;
    text-transform: uppercase;
    font-size: 9px;
    width: 50%;
    float: left;
    position: relative;
}
#progressbar li:before {
    content: counter(step);
    counter-increment: step;
    width: 20px;
    line-height: 20px;
    display: block;
    font-size: 10px;
    color: #333;
    background: white;
    border-radius: 3px;
    margin: 0 auto 5px auto;
}
/*progressbar connectors*/
#progressbar li:after {
    content: '';
    width: 100%;
    height: 2px;
    background: white;
    position: absolute;
    left: -50%;
    top: 9px;
    z-index: -1; /*put it behind the numbers*/
}
#progressbar li:first-child:after {
    /*connector not needed before the first step*/
    content: none; 
}
/*marking active/completed steps green*/
/*The number of the step and the connector before it = green*/
#progressbar li.active:before,  #progressbar li.active:after{
    background: #27AE60;
    color: white;
}
.socials img{
    width: 260px;
    border-radius: 5px;
    margin-bottom: 5px;
}
.socials img:hover{
    opacity: 0.8;
    transition: all 0.25s cubic-bezier(0.31, -0.105, 0.43, 1.4);
}
.socials img:active{
    opacity: 1;
}
h3{
    color: red;
    font-size: 12px;
}
.hidden{
    display: none;
}