no" data-name="pb-iframe-player" src="https://www.podbean.com/player-v2/?i=mz7c2-f91a34-pb&from=pb6admin&square=1&share=1&download=1&rtl=0&fonts=Arial&skin=1&font-color=&btn-skin=7&size=300" allowfullscreen=""></iframe>

## Sonu Gelmeyen Tartışmaları Nasıl Sonlandırırız

Bu bölümde sevgili Candost Dağdeviren ile mentorluk, Swift ve Kotlin ile ilgili kısa bir giriş sohbetinden sonra yazılım/teknoloji ekiplerinde sonu gelmeyen tartışmaları sonlandırmakta faydası olabileceğini düşündüğü RFC (Request for Comments) yaklaşımı üzerinde sohbet ediyoruz.



Candost'un RFC ile ilgili yazısına (İngilizce) [şu linkten](https://candost.blog/how-to-stop-endless-discussions/) de erişebilirsiniz.

<iframe title="Candost Dağdeviren - Sonu Gelmeyen Tartışmaları Nasıl Sonlandırırız" allowtransparency="true" height="300" width="100%" style="border: none; min-width: min(100%, 430px);" scrolling="no" data-name="pb-iframe-player" src="https://www.podbean.com/player-v2/?i=tvggb-f688d6-pb&from=pb6admin&square=1&share=1&download=1&rtl=0&fonts=Arial&skin=1&font-color=&btn-skin=7&size=300" allowfullscreen=""></iframe>Civil War re-enactors prepare for a cannon-firing demonstration at Fort Morris State Park. - photo by Photo provided.
Fort McAllister State Park will have a Memorial Day program that focuses on the lives of common Confederate and Union soldiers.
There will be musket and cannon demonstrations, and special salutes fired in honor of war dead.
Robert Banks will talk will talk about the significance of the flags of the Civil War, and attendees can view a display.
The program is from 10 a.m.-4 p.m. Saturday, May 28. Fort McAllister State Historic Park is at Georgia Spur 144/Fort McAllister Road in Richmond Hill. Attendees should take Interstate 95 to exit 90, then drive east on Highway 144. Signs will indicate the fort’s entrance.
Admission is $6 for adults and $3.50 for children. For information, call |||PHONE_NUMBER|||.==================================
osh-lingering-sessions-reaper.conf
==================================

.. note::

    This script is called by cron and is responsible for terminating
    lingering sessions that no longer have any tty attached nor parent PID,
    and have been running for some time.

Option List
===========

Logging & activation options
----------------------------

Script logging configuration and script activation

- `LOGFILE`_
- `LOG_FACILITY`_
- `ENABLED`_

Main options
------------

These options govern the behavior of the script

- `MAX_AGE`_

Option Reference
================

Logging & activation
--------------------

LOGFILE
*******

:Type: ``string, path to a file``

:Default: ``""``

File where the logs will be written to (don't forget to configure ``logrotate``!).
Note that using this configuration option, the script will directly write to the file, without using syslog.
If empty, won't log directly to any file.

LOG_FACILITY
************

:Type: ``string``

:Default: ``"local6"``

The syslog facility to use for logging the script output.
If set to the empty string, we'll not log through syslog at all.
If this configuration option is missing from your config file altogether,
the default value will be used (local6), which means that we'll log to syslog.

ENABLED
*******

:Type: ``0 or 1``

:Default: ``1``

If set to 1, the script is enabled and will run when started by crond.

Main
----

MAX_AGE
*******

:Type: ``int >= 0``

:Default: ``86400``

The minimum number of seconds a session must have been opened before
being considered as possibly a lingering orphan session.
Still alive sessions, even older than MAX_AGE seconds, will be kept.


function BuildUrl {
    Param(
        [string]$Instance,
        [string]$Path,
        [hashtable]$Parameters
    )
    
    $url = "https://$Instance/defaultcollection/$Path"
    if($Parameters.Count -gt 0) {
        $url += "?"
        $url += ($Parameters.Keys | % { "$_=$($Parameters[$_])" }) -join "&"
    }
    
    $url
}

function MakeDirIfNotExists($path) {
    $dir = Get-Item -ErrorAction SilentlyContinue $path
    if($null -eq $dir) {
        mkdir $path
    } else {
        $dir
    }
}

function DecryptSecureString {
    Param([SecureString]$sstr)
    
    $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sstr)
    $str = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr)
    [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ptr)
    
    $str
}

function GetAuth([string]$Instance) {
    $credentials = Get-VstsCredentials $Instance
    
    if($null -eq $credentials) {
        Write-Error -Message "No default credentials available for $Instance. Call Set-Credentials to set the credentials."
        return
    }
    
    "Basic $([System.Convert]::ToBase64String(
        [System.Text.Encoding]::UTF8.GetBytes(
            "$($credentials.UserName):$(DecryptSecureString $credentials.Password)")))"
}

function Invoke-VstsOperation {
    Param(
        [string]$Instance,
        [string]$Path,
        [string]$ApiVersion,
        [Microsoft.PowerShell.Commands.WebRequestMethod]$Method,
        [hashtable]$Parameters = @{},
        [hashtable]$Body = [hashtable]@{} 
    )
    
    $Parameters['api-version'] = $ApiVersion
    
    $url = BuildUrl $Instance $Path $Parameters
    $auth = GetAuth $Instance -EA Stop
    
    if($Method -eq "Get") {
        Invoke-RestMethod `
            -Uri $url `
            -Method $Method `
            -Headers @{ Authorization = $auth }
    } else {
        Invoke-RestMethod `
            -Uri $url `
            -Method $Method `
            -Body ($Body | ConvertTo-Json -Depth 10 -Compress) `
            -ContentType "application/json" `
            -Headers @{ Authorization = $auth }
    }
}
    
function Invoke-VstsGetOperation {
    Param(
        [string]$Instance,
        [string]$Path,
        [string]$ApiVersion,
        [hashtable]$Parameters = @{}
    )
    
    Invoke-VstsOperation $Instance $Path $ApiVersion Get $Parameters
}

function Invoke-VstsGetAllOperation {
    Param(
        [string]$Instance,
        [string]$Path,
        [string]$ApiVersion,
        [hashtable]$Parameters = @{},
        [int]$ChunkSize = 100
    )
    
    $skip = 0
    
    $Parameters['$top'] = $ChunkSize
    
    do
    {
        $Parameters['$skip'] = $skip
        
        $results = Invoke-VstsGetOperation $Instance $Path $ApiVersion $Parameters
        
        $skip += $results.count;
        
        $results.value
    } while($results.count -eq $ChunkSize);
}

An extremely funny debut novel, set mostly within the confines of a funeral home that hugs the shoreline of bad taste without actually running aground.
Had he been born about 20 years later, Casey Kight would have been a Goth—as it was, in 1974, he was just plain weird. Orphaned at