Devops self-signed sertifika olduğu için aşağıdaki git ayarını yapmak lazım. Cmd ekranından aşağıdaki komutu yazabilirsiniz
git config --global http.sslVerify false
Devops self-signed sertifika olduğu için aşağıdaki git ayarını yapmak lazım. Cmd ekranından aşağıdaki komutu yazabilirsiniz
git config --global http.sslVerify false
DECLARE @body NVARCHAR(MAX)
DECLARE @mSubject VARCHAR(MAX);
DECLARE @date DATETIME;
SET @date = CAST(CONVERT(CHAR(10), GETDATE(), 101) AS DATETIME);
SET @body = '<html><head>
<title>Email Başlık</title>
</head><body>
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr style="text-align:left";>
<th>Plaka</th>
<th>İl</th>
<th>İlçe</th>
<th>Adres</th>
</tr>';
SET @body = @body + CAST(
(
SELECT
'td/@align' = 'left',
td = T.Plaka,
'',
'td/@align' = 'left',
td = T.IlAdi,
'',
'td/@align' = 'left',
td = T.IlceAdi,
'',
'td/@align' = 'left',
td = T.Adres,
''
From (
SELECT * FROM Adres
) T
FOR XML PATH('tr'), ELEMENTS
)
AS NVARCHAR(MAX))
SET @body = @body + '</table></body></html>';
SET @mSubject = 'Falcon - ' + CONVERT(CHAR(10), DATEADD(dd, -1, @date), 104) + ' Konumu Çekilemeyen Adresler';
EXEC msdb.dbo.sp_send_dbmail
@recipients = N'akifyanbak@mail.com',
@copy_recipients =N'cc@mail.com',
@body = @body,
@body_format = 'HTML',
@subject = @mSubject,
@profile_name = 'sql_email_profile';
Yedek alıyor, uygulamayı durduruyor, dosyaları güncelliyor, uygulamayı açıyor.
WebApi
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")){
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit
}
Write-Host "Yedekleniyor...";
$from = "C:\WebSites\akifsite.com\_Current\*"
$to = "C:\WebSites\akifsite.com\_Old\"+(get-date).ToString('yyyy_MM_dd-hh_mm_ss')+"\"
New-Item -ItemType Directory -Force -Path $to
Copy-Item $from $to -recurse
Write-Host $to " klasorune yedeklendi";
$FileName = "C:\WebSites\akifsite.com\_New\Api\web.config"
if (Test-Path $FileName) {
Remove-Item $FileName
}
$FileName = "C:\WebSites\akifsite.com\_New\Api\appsettings.json"
if (Test-Path $FileName) {
Remove-Item $FileName
}
$siteName = "akifsite.com"; #poolState name aynı diye bunu kullanıyorum, farklı olsa poolName eklemek lazım - akif 30.09.2020
$poolState="";
$siteState ="";
$currentRetry = 0;
Write-Host $siteName " durduruluyor...";
do{
$siteState = (Get-WebsiteState $siteName).Value;
$poolState = (Get-WebAppPoolState $siteName).Value
if($siteState -eq "Started"){
STOP-Website $siteName;
}
if($poolState -eq "Started"){
Stop-WebAppPool -Name $siteName;
}
if($siteState -eq "Started" -or $poolState -eq "Started"){
Start-Sleep -s 5;
}
$currentRetry = $currentRetry + 1;
}while ($siteState -eq "Started" -and $currentRetry -le 20)
Write-Host $siteName " Durdu (" $currentRetry "sn)";
Write-Host "Uygulama guncelleniyor...";
$from = "C:\WebSites\akifsite.com\_New\Api\*"
$to = "C:\WebSites\akifsite.com\_Current\Api\"
New-Item -ItemType Directory -Force -Path $to
Copy-Item $from $to -recurse
Write-Host "Uygulama guncellendi";
Write-Host $siteName " calistiriliyor.."
if($siteState -eq "Stopped"){
Start-Website $siteName;
}
if($poolState -eq "Stopped"){
Start-WebAppPool -Name $siteName;
}
Write-Host $siteName " calisiyor"
Write-Host "Bitti"
Read-Host
UiUpdate
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")){
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit
}
Write-Host "Yedekleniyor...";
$from = "C:\WebSites\akifsite.com\_Current\*"
$to = "C:\WebSites\akifsite.com\_Old\"+(get-date).ToString('yyyy_MM_dd-hh_mm_ss')+"\"
New-Item -ItemType Directory -Force -Path $to
Copy-Item $from $to -recurse
Write-Host $to " klasorune yedeklendi";
$siteName = "akifsite.com"; #poolState name aynı diye bunu kullanıyorum, farklı olsa poolName eklemek lazım - akif 30.09.2020
$poolState="";
$siteState ="";
$currentRetry = 0;
Write-Host $siteName " durduruluyor...";
do{
$siteState = (Get-WebsiteState $siteName).Value;
$poolState = (Get-WebAppPoolState $siteName).Value
if($siteState -eq "Started"){
STOP-Website $siteName;
}
if($poolState -eq "Started"){
Stop-WebAppPool -Name $siteName;
}
if($siteState -eq "Started" -or $poolState -eq "Started"){
Start-Sleep -s 5;
}
$currentRetry = $currentRetry + 1;
}while ($siteState -eq "Started" -and $currentRetry -le 20)
Write-Host $siteName " Durdu (" $currentRetry "sn)";
Get-ChildItem "C:\WebSites\akifsite.com\_Current" -Exclude api,web.config | Remove-Item -Recurse; #api uygulamsı ve config ayarları olduğu için onları silmiyoruz
Write-Host "Uygulama guncelleniyor...";
$from = "C:\WebSites\akifsite.com\_New\ui\*"
$to = "C:\WebSites\akifsite.com\_Current\"
New-Item -ItemType Directory -Force -Path $to
Copy-Item $from $to -recurse
Write-Host "Uygulama guncellendi";
Write-Host $siteName " calistiriliyor.."
if($siteState -eq "Stopped"){
Start-Website $siteName;
}
if($poolState -eq "Stopped"){
Start-WebAppPool -Name $siteName;
}
Write-Host $siteName " calisiyor"
Write-Host "Bitti"
Read-Host
https://manage.sslforfree.com/certificate/new sayfasından sihirbazı izleyip domain onayını aldıktan sonra indirme yapıyoruz.Domain onayı almak için "/.well-known/pki-validation/{key}" altında bir doğrulama dosyası isteyecek. Bunun için uygulama altına Virtual Directory açmamız gerekiyor ".well-known" sanal yolunu "C:\VirtualDirectory\well-known" yapabilirsin kafana göre. Sonra onay çin gerekli dosyayı istediği yola atıp onaylaman gerekiyor.
https://decoder.link/converter adresinden tamamlanacak olan sertifikayı convert ediyoruz
ca_bundle.crt
Certificate File to Convert = certificate.crt
Chain Certificate File (optional) Private Key File= private.key
Type To Convert To = PFX/PKCS#12
PFX Password = (Boş bırakılabilir)
seçiyoruz, convert dediğimizde "certificate.pfx" adında bir dosya oluşturacak. Bunu IIS üzerinde SSL Sertifikaları bölümünden "Complete Certificate Request" veya "Sertifika İsteğini Tamamla" diyip, sertifikaya akılda kalıcı bir isim verdikten sonra işlemi tamamlıyorsunuz. Artık uygulamanızın bindings kısmında 443 olan https domainin SSL certificate'ini yüklediğiniz sertifikayı atayabilirsiniz.
IIS üzerinde
angular-site.com site açılır. Add Aplication'dan aynı dizin içine "Api" klasörü seçilir. Buraya .Net Core Uygulama atılır. Daha sonra Angular uygulamada terminale
ng build --prod
yazılıp build alınır. dist klasörüne çıkan angular-site klasörü içindeki dosyalar IIS üzerindeki angular-site.com sitesinin ana dizinine kopyalanır. Angular uygulamanın web.config aşağıdaki gibi olmalıdır. (iis rewrite eklentisini kurmak gerekiyor).
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="api/" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="./index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Dikkat edilmesi gereken satır
<add input="{REQUEST_URI}" pattern="api/" negate="true" />
yani diyoruz ki http isteklerinde api/ ile başlayanları angulara yönlendirme bu sayede api klasörü altındaki .Net Core uygulamaya gidiyor.
Peki bunu neden yaptık? normalde angular-site.com ve api.angular-site.com şeklinde 2 uygulamayı aynı iis üzerinde yayınlamak istedik. Uygulama içinde konum almak gerektiği ve angular içinde apiye istek gittiği için iki uygulamada https olması gerekiyordu. https://manage.sslforfree.com üzerinden aldığım free ssl'ler aynı anda 1 tanesi kullanılabildiği için işime yaramadı, wildcards almadığımız için uygulama patladı. Bu yüzden aynı uygulama içinde birleştirip 1 ssl ile işimizi gördük
1. JSON.parse(JSON.stringify(input))
2.
let oldArray = [1, 2, 3, 4, 5];
let newArray = oldArray.slice();
klasöre kullanıcı yetkisi yok ve root kullanıcısı istiyorsa o klasöre 777 yetkisi verirsek tüm kullanıcılara yetki vermiş oluyoruz. dikkatli kullanmak lazım
chmod -R 777 /www/store
using System;
namespace Falcon.Core.Helpers
{
public class GeoCalculator
{
private static double ToRadians(double degree)
{
return (degree * Math.PI) / 180;
}
public static double Distance(double latitude1, double latitude2, double longitude1, double longitude2)
{
// The math module contains
// a function named toRadians
// which converts from degrees
// to radians.
longitude1 = ToRadians(longitude1);
longitude2 = ToRadians(longitude2);
latitude1 = ToRadians(latitude1);
latitude2 = ToRadians(latitude2);
// Haversine formula
double diffLongitude = longitude2 - longitude1;
double diffLatitude = latitude2 - latitude1;
double a = Math.Pow(Math.Sin(diffLatitude / 2), 2) +
Math.Cos(latitude1) * Math.Cos(latitude2) *
Math.Pow(Math.Sin(diffLongitude / 2), 2);
double c = 2 * Math.Asin(Math.Sqrt(a));
// Radius of earth in
// kilometers. Use 3956
// for miles
double r = 6371;
// calculate the result
return (c * r);
}
}
}
Since you're using SQL Server 2008, you have the geography
data type available, which is designed for exactly this kind of data:
DECLARE @source geography = 'POINT(0 51.5)'
DECLARE @target geography = 'POINT(-3 56)'
SELECT @source.STDistance(@target)
Gives
----------------------
538404.100197555
(1 row(s) affected)
Telling us it is about 538 km from (near) London to (near) Edinburgh.
Naturally there will be an amount of learning to do first, but once you know it it's far far easier than implementing your own Haversine calculation; plus you get a LOT of functionality.
If you want to retain your existing data structure, you can still use STDistance
, by constructing suitable geography
instances using the Point
method:
DECLARE @orig_lat DECIMAL(12, 9)
DECLARE @orig_lng DECIMAL(12, 9)
SET @orig_lat=53.381538 set @orig_lng=-1.463526
DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326);
SELECT *,
@orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326))
AS distance
--INTO #includeDistances
FROM #orig dest
use master
GO
select
d.name,
d.dbid,
spid,
login_time,
nt_domain,
nt_username,
loginame
from sysprocesses p
inner join sysdatabases d
on p.dbid = d.dbid
where d.name = 'dbname'
GO
kill 56 --=> kill the number in spid field
GO
exec sp_dboption 'dbname', 'single user', 'FALSE'
GO
https://stackoverflow.com/questions/14652923/set-database-from-single-user-mode-to-multi-user
app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { var response = JsonConvert.Seriali...