SQL Sorgu Sonucunun Belirli bir Bölümünü Alma

Oracle SQL'de sorgu çıktısının belli bir bölümünü almak için bazı komutlar kullanmak gerekebilir. Sondan N satır veya baştan N satır alma ihtiyacı olabileceği gibi X satırından sonra N satır al gibi işlemler yapmak ta gerekebilir. Bu komutları birer örnek ile görelim

Örnek Database

   Kolon
----------
         1
         1
         2
         2
         3
         3
         4
         4
         5
         5
         6
         6
         7
         7
         8
         8
         9
         9
        10
        10
20 rows selected.

Son 5 satırı sıralamak için.

SELECT Kolon
FROM   Table
ORDER BY Kolon DESC
FETCH FIRST 5 ROWS ONLY;

   Kolon
----------
        10
        10
         9
         9
         8
5 rows selected.

Son 5 satırı bağlantıları ile al.

SELECT Kolon
FROM   Table
ORDER BY Kolon DESC
FETCH FIRST 5 ROWS WITH TIES;

   Kolon
----------
        10
        10
         9
         9
         8
         8
6 rows selected.

İlk satırları %20 oranında sırala

SELECT Kolon
FROM   Table
ORDER BY Kolon
FETCH FIRST 20 PERCENT ROWS ONLY;

   Kolon
----------
         1
         1
         2
         2
4 rows selected.

4. satırdan başlayarak ilk 4 satırı sırala

SELECT Kolon
FROM   Table
ORDER BY Kolon
OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;

   Kolon
----------
         3
         3
         4
         4
4 rows selected.

4. Satırdan başlayarak verinin %20'sini sırala.

SELECT Kolon
FROM   Table
ORDER BY Kolon
OFFSET 4 ROWS FETCH NEXT 20 PERCENT ROWS ONLY;

   Kolon
----------
         3
         3
         4
         4
4 rows selected.



SQL Sondan bir karekter sil

select SUBSTR('350 M', 0, LENGTH('350 M') - 1) from dual;
350

SQL ilk 12 satır;

BY TARIH DESC FETCH NEXT 12 ROWS ONLY


https://www.oracletutorial.com/oracle-basics/oracle-fetch/ 

XAMPP Sunucusu OpenSSL Yazılımı Nasıl Upgrade Edilir

 OpenSSL yazılımınızın güncel olması güvenlik açısından çok önemlidir. Yeni yazılım çıktığında vakit kaybetmeden OpenSSL yazılımınızı güncellemelisiniz. XAMPP server üzerinde bu yazılımı güncellemek için sadece üç dosyayı güncellemeniz yeterlidir. OpenSSL yazılımının tüm dosyalarına;

https://wiki.openssl.org/index.php/Binaries

Adresinden erişebilirsiniz. Bu adreste bulunan linklerde farklı kaynaklardan dosyaları temin edebilirsiniz. XAMPP için en doğru kaynak;

http://wiki.overbyte.eu/wiki/index.php/ICS_Download

Adresidir Bu sayfanın download bölümünde uygun linki bulup dosyayı indirin. Dosya içinde bulunan;

  • libcrypto-1_1-x64.dll
  • libssl-1_1-x64.dll
  • openssl.exe

İsimli dosyaları Apache2 servisini durdurduktan sonra XAMPP\apache\bin klaörüne kopyalayıp servisi yeniden açmanız yeterlidir. XAMPP\apache\bin klasöründeki eski dosyaları işlemden önce yedeklemenizi öneririz.

Raspberry Pi Webmin Nasıl Yüklenir (Raspbian)

 Raspberry PI cihazına cihazın tüm özelliklerini web arayüzünden yönetebilmek için Webmin isimli yönetim programını kurabilirsiniz. Böylece cihazın üzerinde istediğiniz servisi kolaylıkla açıp kapatabilir ve kullanışlı bir arayüzden cihazı yönetebilirsiniz. İlk olarak kütüphaneleri güncelleyelim.

sudo apt update && sudo apt upgrade -y

Bu işlem biraz uzun sürebilir. Güncelleme yapıldıktan sonra yardımcı programları kuralım.

sudo apt install -y perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

Webmin yazılımını cihazımıza indirelim.

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.941_all.deb

Cihaza indirdiğimiz yazılımı kurmak için aşağıdaki komutu kullanalım.

sudo dpkg -i webmin_1.941_all.deb

Cihazın IP adresini öğrenelim

hostname -I

Webmin yazılımı kuruldu, bağlanmak için bir tarayıcı ile aşağıdaki adrese bağlanalım.

https://IPAdresi:10000

IPAdresi : Cihazın mevcut IP adresi olmalıdır.

Huawei Router ve Switch Kontrol Komutları

 Huawei router ve switch ekipmanlarından durum bilgisi alabilmek için aşağıdaki komutları kullanabilirsiniz.


display compatible-information

display cpu-usage

display cpu-usage configuration

display cpu-usage history

display device

display device capability

display device manufacture-info

display diagnostic-information

display elabel

display esn

display fan

display memory-usage

display memory-usage threshold

display power

display transceiver

display transceiver diagnosis interface

display temperature

display version

Huawei CE, APE, PE, P

PHPExcel Nasıl Kurulur

 PHP sayfanızın çıktısını excel dosyasına dönüştürmek istiyorsanız bunu kolayca ve sorunsuzca yapmanın bir yoluda PHPExcel kullanmaktır. Özellikle Türkçe karekterlerde sorun yaşamak istemiyorsanız donüştürdüğünüz dosyanın Excel 2007 ve sonrası bir sürüm olması gerekir. Excel 2006 ve önceki sürümlerinde xls formatı UTF-8 desteklemediğinden PHP standart kütüphanesi ile dosya oluşturmaya çalıştığınızda dosya da Türkçe karekterlerle ilgili sorun yaşayabilirsiniz. Bu sorunu aşmanın bir yolu var bunu daha önce yazmıştık fakat PHPExcel kullanarak XLSX dosyası oluşturduğumuzda herhangi bir karekter sorunu yaşamayız. İlk olarak siteden dosyaları indirmeliyiz.

https://github.com/PHPOffice/PHPExcel

Sisteminizin aşağıdaki durumları desteklediğinden emin olun.

* PHP versiyon 5.2.0 veya daha yüksek versiyon kullanmalısınız. 

* PHP extension php_zip yüklü olmalı

* PHP extension php_xml yüklü olmalı

* PHP extension php_gd2 yüklü olmalı


PHP Excel Nasıl Yüklenir. 

-------------------------

Tüm dosyaları yukarıda verdiğimiz linkten indirin.

Bilgisayarımızda root alanının /var/www/ olduğunu varsayalım. Bu bir linux dizinidir. Windows kullanıyorsanız bu dizini kendinize göre değiştirin. Ör: D:\XAMPP\htdocs gibi.

İndirdiğiniz klasördeki Classes klasörünü aşağıdaki gibi dizine kopyalayın.

/var/www/Classes/

/var/www/Classes/PHPExcel.php

/var/www/Classes/PHPExcel/Calculation.php

/var/www/Classes/PHPExcel/Cell.php


Test edin

---------------

İndirdiğiniz klasördeki Examples klasörünüde root dizinine kopyalayın.

/var/www/Examples/01simple.php

/var/www/Examples/02types.php

Yukarıda adı geçen dosyaları aşağıdaki gibi çalıştırın.

http://example.com/Examples/01simple.php

http://example.com/Examples/02types.php

Çalıştırdığınızda dosyanın bulunduğu dizinde yeni excel dosyası oluşacaktır. Örnekler içinde download edilebilir excel oluşturan scriptlerde bulunmaktadır.

Çalıştırdığınız dosyada hatalar alıyorsanız bu hatalar büyük bir ihtimalle dosyada bulunan {} karekterlerinden kaynaklanıyordur. Hatayı aldığınız dosyanın ilgili satırına giderek {0} {1} .... şeklinde süslü parantez içinde bulunan tüm sayı ve değişkenleri [0] [1]... şeklinde köşeli paranteze almalısınız.

PHPExcel son sürümü PHPSpreadsheet ismiyle yayınlanmaktadır ve composer ile yüklenebilir.

https://github.com/PHPOffice/PhpSpreadsheet


      

Apache PDO Oracle Bağlantısı

Bu bağlantı için ilk olarak oracle driver'ına sahip olmalısınız. Aşağıdaki kod ile hangi PDO driverlarına sahip olduğunuzu kontrol edebilirsiniz.

<?php

foreach(PDO::getAvailableDrivers() as $driver)

    echo $driver, '\n';

?>

PHP Çıktısı Nasıl Excel Dosyasına Dönüştürülür (Oracle SQL)

 PHP kullanarak oracle database'e bağlanıp bir tabloyu çektikten sonra bu veriyi excel dosyasına yazdırmak istiyorsanız aşağıdaki kodu kullanabilirsiniz. Bu kod Türkçe karekter desteklemez, çıktınız Türkçe karekter içeriyorsa UTF-8 BOM satırını açmanız gerekir.

<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');

$username = "username";               // Kullanıcı
$password = "password";               // Şifre
$database = "host:1521/NOR";      // Database adresi
 
$connectora = oci_connect($username, $password, $database, 'UTF8');
if (!$connectora) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

$query = "SELECT * FROM TABLE";  //Sorgu

$parse = oci_parse($connectora, $query);
if (!$parse) {
    $m = oci_error($connectora);
    trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR);
}
$r = oci_execute($parse);
if (!$r) {
    $m = oci_error($parse);
    trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR);
}

function filterData(&$str){
    $str = preg_replace("/\t/", "\\t", $str);
    $str = preg_replace("/\r?\n/", "\\n", $str);
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

$fileName = "Dosya_export_".date('Ymd') . ".xlsx";
ob_end_clean();
header('Content-Encoding:UTF-8');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; charset=UTF-8; encoding=UTF-8");
header('Content-Disposition: attachment; filename='.basename($fileName));
header('Content-Transfer-Encoding: binary'); //binary veya ascii
header('Cache-Control: must-revalidate');
header('Cache-Control: max-age=1');
header('Pragma: public');
flush(); 
$developersData = array();

//echo "\xEF\xBB\xBF"; // UTF-8 BOM

while($row = oci_fetch_assoc($parse)){       
$developersData[] = $row;

}
$showColoumn = false;
if(!empty($developersData)) {
  foreach($developersData as $developerInfo) {
if(!$showColoumn) {
  echo implode("\t", array_keys($developerInfo)) . "\n";
  $showColoumn = true;
}
else {

array_walk($developerInfo, 'filterData');
echo implode("\t", array_values($developerInfo)) . "\n";}
  }

exit;
?> 

Huawei Switch ile Bağlantılar Nasıl Birleştirilir

 Switchler arasında bulunan bağlantıların hepsini aynı anda kullanabilmek için bu linkleri birleştirmek gerekir. Linkleri birleştirme işlemine her firma başka bir isim vermiştir ama temelde hepsi aynı işi yapar.

Nic Teaming - Microsoft
Bount - Linux
Ether Channel - Cisco
Port Channel
Eth Trunk - Huawei
Lag - Alcatel
MLT
Bundle - Cisco

Bu ifadelerin hepsi aynı yapıyı işaret eder, sadece protokoller farklı olabilir. Göründüğü gibi Huawei markası için bu teknolojinin adı Eth Trunk'dır. Farklı ekipmanların beraber kullanılabilmesi için IEEE standardı Link Aggregation Control Protocol (LACP) kullanılması önerilir. Şimdi Huawei Access PE ile CE cihazları arasında Ehh-Trunk işleminin nasıl yapıldığına bakalım, iki adet 10G bağlantıyı birleştirip 20G bir bağlantı elde edelim.

Access PE Konfigürasyonu
-----------------------------------------
interface Eth-Trunk10
portswitch
description Switch-L2-interface
port link-type trunk
port trunk allow-pass vlan 111 to 112
mode lacp-static
#
interface GigabitEthernet0/1/1
description Kanal1
undo shutdown
eth-trunk 10
dcn
#
interface GigabitEthernet0/1/2
description Kanal2
undo shutdown
eth-trunk 10
dcn
#
CE Switch Konfigürasyonu
-----------------------------------------
#                                         
interface Eth-Trunk10
description Uplink                     
port link-type trunk                     
port trunk allow-pass vlan 2 to 4094  
mode lacp   
#                                      
interface XGigabitEthernet0/0/1
 description Kanal1           
 eth-trunk 10                             
#                                         
interface XGigabitEthernet0/0/2
 description Kanal2           
 eth-trunk 10                             

Yukarıdaki konfigürasyonda mode lacp komutu yazılmasada her iki cihazda Huawei olduğu için link çalışacaktır, fakat farklı marka ekipmanlar için konfigürasyon yapılacak ise her iki tarafta da LACP protokolü kullanılması önerilir. Bu bağlantıların birleştirilebilmesi için aradaki bağlantıların L1 olması gerektiği unutulmamalıdır (Kablo, Fiber, L1 RL devresi vb...)

Eht-Trunk interface'lere sub interfaceler eklenebilir, bu interfacelerin konfigürasyon anlamışda fiziksel interfacelerden bir farkı yoktur.

Eth-Trunk bağlantısı altında ikiden çok interface de kullanabilirsiniz. Fiziksel interface altına eth-trunk 10 yazdığınızda bu interface Eth-Trunk grubuna katılmış olur.


Alcatel / Nokia OLT Komutları

 Alcatel / Nokia OLT cihazlarında problem tespiti ve çözümü için aşağıdaki sık tercih edilen komutlar kullanılır. Gpon bağlantılarda sorun giderme komutları;

Vlan 1002

Port 1/1/2/1/1/1/1

Örnek komutlar;

show service service-using | match 1002 (Servis Durumu)

show vlan current-15min-stats port 1/1/2/1/1/1/1 1002 detail (Veri alışverişini görmek için kullanılır.)

show equipment ont operational-data 1/1/2/1/1 (Operasyonel Durum)

show equipment ont optics 1/1/2/1/1 (Optik sinyal seviyesi)

show equipment ont interface 1/1/2/1/1 detail (Detaylı Interface Bilgisi)

show ethernet ont operational-data 1/1/2/1/1/1/1 (Link durumu kontrolü)

show vlan bridge-port-fdb 1/1/2/1/1/1/1 (Porttaki mac adres listesini görmek için)

info configure vlan id 3002 flat (Kullanılan QoS)

info configure qos interface 1/1/2/1/1/1/1 (QoS Ayrıntılı konfigürasyon)

info configure bridge port 1/1/2/1/1/1/1 flat (Port altında tanımlı Vlan'lar)

info configure ethernet detail flat (Ethernet ayrıntılı konfig)

info configure service flat (VPLS konfigürasyonları)

 Alcatel / Nokia OLT 

Python ile Oracle Veri Tabanına Veri Yazma

 Python Oracle modulü ile aşağıdaki kodu kullanarak Oracle veri tabanına veri girişi yapabilirsiniz. Bu uygulamada bir fonksiyon gönderilen SQL sorgusunu çalıştırmaktadır. Bu fonksiyon ile farklı SQL sorguları da çalıştırabilirsiniz.


import cx_Oracle


def InservDB(inserquery):
    try:
        conn = cx_Oracle.connect('username/Password@hostname:1521/NOR')
        cursor = conn.cursor()
        cursor.execute(inserquery)
        #cursor.executemany(inserquery)
        conn.commit()
        cursor.close()
        conn.close()
        return 0
    except ValueError:
        print("Database bağlantısı sağlanamıyor...")

inserquery = "insert into Tablo_adı(Sutun1, Sutun2, Sutun3) values(1,2,3)"
InsertDB(inserquery)

Oracle SQL Sorgusunu Python script ile çalıştırma.

Python Oracle Database Bağlantısı

 Python ile Oracle veri tabanına bağlanmak için ilk olarak Pyhon oracle modülünü yüklemeniz gerekmektedir. Python Oracle kütüphanesinin adı cx_Oracle dır. Bu kütüphaneyi pip ile yükleyin.

pip install cx_Oracle

Modülü kurduktan sonra oracle sitesinden driverları indirip bilgisayarınıza kopyalayın. 

64 bit

https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

32 bit

https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html

Yazdığınız koda Oracle modülünü import edin ve driver'ı bir defaya mahsus gösterin.

import cx_Oracle

cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_11")

Şimdi connect() fonksiyonunu kullanarak Python programı ile Oracle veritabanı arasında bir bağlantı kurun.

con = cx_Oracle.connect('username/password@localhost')

Bir SQL sorgusu yürütmek ve sonuç sağlamak için, cursor() nesnesi gerekir.

cursor = conn.cursor()

Daha sonra komutları işleteceğiniz bölümü oluşturun.

cursor.execute(sqlquery) – – – -> tek bir sorgu yürütmek için.

cursor.executemany(sqlqueries) – – – -> birden çok bağlama değişkeni/yer tutucu ile tek bir sorgu yürütmek için.

Tüm işlemler tamamlandıktan sonra tüm işlemlerin kapatılması zorunludur.

cursor.close()

con.close()

Örnek Kod

# importing module
import cx_Oracle
 # Create a table in Oracle database
try:
     con = cx_Oracle.connect('tiger/scott@localhost:1521/xe')
    print(con.version)
 
    # Now execute the sqlquery
    cursor = con.cursor()
 
    # Creating a table employee
    cursor.execute("create table employee(empid integer primary key, name varchar2(30), salary number(10, 2))")
 
    print("Table Created successfully")
 
except cx_Oracle.DatabaseError as e:
    print("There is a problem with Oracle", e)
 
# by writing finally if any error occurs
# then also we can close the all database operation
finally:
    if cursor:
        cursor.close()
    if con:
        con.close()

Oracle Komutlar

 Karekter kırpma:

select substr('Kolon_ismini_bu_alana_yazabilirsiniz',1,20) from dual

Oracle'da karekter veya rakam yakalama

select regexp_replace('stack12345overflow569', '[^0-9]', '') as numbers,

       regexp_replace('Stack12345OverFlow569', '[^a-z and ^A-Z]', '') as characters

from dual

Değerin içinde sayı arayıp integer haile çevirme;

to_number(regexp_substr('100 Mbps devre', '(\d+) Mbps', 1, 1, NULL, 1))

Oracle Database'de bir tabloyu kalıcı olarak silmek için;

SQL Tablo Silme:

DROP TABLE TABLO_İSMİ PURGE

COMMIT;

Sunucuya bağlanan cihazın IP adresini gösterme

SELECT sys_context ('USERENV', 'IP_ADDRESS') FROM DUAL

Tablo değişiklik zamanı: Tabloda en son değişikliğin hangi zamanda yapıldığını verir.

select max(ora_rowscn), scn_to_timestamp(max(ora_rowscn)) from Table_Name





Apache Yazılım Upgrade (XAMMP)

 XAMMP sunucusu içinde bulunan apache yazılımını upgrade etmek için ilk olarak apache yazılımının yeni sürmünü aşağıdaki adresten indirmelisiniz. Apache'nin birçok sürümü var Xammp sunucusu için en uygun sürüm bu linkte bulunan sürümdür.

https://www.apachelounge.com/download/ 

Sürümü indirdikten sonra apache servisini durdurun. Eski apache klasörünün adını değiştirin, sakın silmeyin. İndirdiğiniz apache klasörünü açın ve içindeki apache klasörünü çıkartıp eski klasör yerine aynı ad ile koyun.Klasör ismi/bin şeklinde olmalı. sonra config klasörü içindeki konfigürasyonu yeni klasöre geçirin. Son olarakta yüklediğiniz modüller varsa o modül dosyalarını yeni klasöre aktarın ve servisi başlatın.

DBeaver Excell Export

 DBeaver CE database bağlantı yazılımının çıktıları excell olarak kaydedebilmesi için extension aşağıdaki gibi yüklenir.

Yazılım Açılır

Help > install New Software seçeneği seçilir. Açılan ekrana aşağıdaki link kopyalanarak next butonuna tıklanır. 

https://dbeaver.io/update/office/latest/

Yazılım seçilerek next butonuta tıklanarak eklenti kurulur. Yazılım kapatılıp açılarak eklenti kullanılmaya başlanır.

      

PHP için Microsoft SQL Driver Nasıl Yüklenir

 PHP için Microsoft SQL Driver yüklemek için ilk olarak uygun driver microsoft sitesinden indirilir. Driver indirmek için aşağıdaki linki kullanabilirsiniz.

https://go.microsoft.com/fwlink/?linkid=2152937

İndirdiğiniz bu dosyayı bir dizine açın. içinde bulunan .dll dosyalarını PHP/ext klasörüne kopyalayın. Bilgisayarınıza kurulu bulunan PHP sürümüne uygun .dll dosyasını bulun. Bulduğunuz uygun dosyayı php.ini dosyasına aşağıdaki gibi ekleyin

extension=php_sqlsrv_74_ts_x64.dll

Burada 74 değeri kulandığınız php versiyonu ile aynı olmalıdır. x64 işlemci mimarinize uygun bir versiyon olmalıdır. Daha sonra web sunucunuzu yeniden başlatın. Sunucunuz IIS ve ya Apache olabilir. Daha sonra aşağıda linki bulunan ODBC driverını bilgisayarınıza kurun.

Microsoft ODBC Driver;

https://go.microsoft.com/fwlink/?linkid=2156851

Kurulumun gerçekleşip gerçekleşmediğini info.php sayfasından kontrol edebilirsiniz. Kurulum tamamlandığında bu sayfada "sqlsrv" isimli bir tablo oluşacaktır.

Not: info.php dosya içeriği <?php phpinfo(); ?> şeklinde olmalıdır.

      

Apache Active Directory NTLM Kimlik Doğrulama

 Apache web sunucusu ile Active Directory hesaplarından NTLM Kimlik Doğrulamasının nasıl yapılacağını inceleyeceğiz. Domainde bir Apache sunucunuz varsa domain kullanıcılarının kendi şifreleri ile local intranet sayfanıza erişmelerini istiyorsanız aşağıdaki gibi kurulumu yapabilirsiniz.

İlk olarak mod_authn_ntlm.so modülünü internetten indirin fakat dikkat edilmesi gereken bir durum var. Apache sunucunuz 32bit veya 64bit olabilir, bunu kontrol edip uygun versiyonu indirmelisiniz. Daha sonra indirdiğiniz dosyayı Apache/modules klasörüne kopyalayın.

Httpd.conf dosyasının içersine aşağıdaki satırı ekleyin.

LoadModule auth_ntlm_module modules/mod_authn_ntlm.so

Aşağıdaki iki modülün aktif olduğundan emin olun. (Satır önünde # olmamalı)

LoadModule ldap_module modules/mod_ldap.so

LoadModule rewrite_module modules/mod_rewrite.so

Aşağıdaki satırları da ekleyin. Web root'da /authenticate isimli bir klasör yoksa oluşturun. Bu klasör için şifreleme yapılacaktır.

RequestHeader unset X_ISRW_PROXY_AUTH_USER
<Location /authenticate >
    #AllowOverride None
    AuthName "Private location"
    AuthType SSPI
    NTLMAuth On
    NTLMAuthoritative On
    <RequireAll>
        <RequireAny>
            Require valid-user
            #require sspi-user EMEA\group_name
        </RequireAny>
        <RequireNone>
            Require user "ANONYMOUS LOGON"
            Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"
        </RequireNone>
    </RequireAll>
    # use this to add the authenticated username to you header
    # so any backend system can fetch the current user
    # rewrite_module needs to be loaded then
    # while X_ISRW_PROXY_AUTH_USER is your header name
    RequestHeader set X_ISRW_PROXY_AUTH_USER expr=%{REMOTE_USER}
</Location>

Apache sunucusunu yeniden başlatın. Aşağıdaki kodu şifrelediğiniz klasörde bir php dosyasına yazın ve browser üzerinden sayfaya gidin.

<?php echo $_SERVER['REMOTE_USER']; ?>

PHP Güvenlik ve Performans Ayarları

Apache veya IIS üzerinde çalışan PHP için aşağıdaki özellikleri değiştirerek server performansını artırabilirsiniz.

memory_limit : Default "128M"  Bu, bir komut dosyasının ayırmasına izin verilen maksimum bellek miktarını bayt cinsinden ayarlar. Bu, bir sunucudaki tüm kullanılabilir belleği tüketmek için kötü yazılmış komut dosyalarının önlenmesine yardımcı olur. Bellek sınırı olmaması için bu yönergeyi -1'e ayarlayın. Bir int kullanıldığında, değer bayt cinsinden ölçülür. 

realpath_cache_size : Default "4M" PHP tarafından kullanılacak gerçek önbelleğinin boyutunu belirler. PHP'nin birçok dosya açtığı sistemlerde, gerçekleştirilen dosya işlemlerinin miktarını yansıtmak için bu değer artırılmalıdır. 

Boyut, depolanan yol dizelerindeki toplam bayt miktarını artı önbellek girişiyle ilişkili verilerin boyutunu temsil eder. Bu, önbellekte daha uzun yollar depolamak için önbellek boyutunun daha büyük olması gerektiği anlamına gelir. Bu değer, önbelleğe alınabilen farklı yolların sayısını doğrudan kontrol etmez. Önbellek girişi verileri için gereken boyut sisteme bağlıdır.

realpath_cache_ttl : Default "120"  Belirli bir dosya veya dizin için gerçek yol bilgilerinin önbelleğe alınacağı süre (saniye cinsinden). Nadiren değişen dosyalara sahip sistemler için değeri artırmayı düşünün.

https://www.php.net/manual/en/ini.core.php#ini.variables-order

PHP Şifre Güvenliği

PHP dosyaları içerisine kesinlikle password(şifre) yazmayın, passwordleri bilgisayarda başka bir yere konumlandırıp PHP dosyası içerisine bu şifreleri getirebilirsiniz. Ör sifreler.txt isimli bir dosya oluşturun ve şifreyi içine yazın. Sonra bu dosyadaki şifreyi bir değişkene atayın.

$myfile = fopen("E:\sifreler.txt", "r") or die("Unable to open file!");

$plogin=fgets($myfile);

fclose($myfile);

Yukarıdaki kod ile PHP dostanızda $plogin bilgisini şifre olarak kullanabilirsiniz. Bilgisayarı başkaları da kullanıyorsa bu işlem veri güvenliği için yeterli değildir. Bilgiyi aşağıdaki gibi şifreleyerek kullanabilirsiniz. Password bilgisini gizlemek için şifreleyin. Bu kod password bilginizi şifreler. Çıktıyı aldıktan sonra dosyayı silin fakat key bilgisini kaydetmeyi unutmayın.

<?php

$data = 'şifreyi_buraya_yazın';

$cipher = 'AES-128-ECB';

//key bilgisini istediğiniz gibi değiştirebilirsiniz.

$key = 'jfgksjdfgaksgf32423423bbfabsdjeyrwerwer898er2312423543656';

$encoded = openssl_encrypt($data, $cipher, $key); 

echo $encoded;

?>

Password bilgisini şifreledikten sonra E:\sifreler.txt dosyasına bu bilgiyi yazın. Sonra aşağıdaki kodu php dosyanıza ekleyin.

<?php

$myfile = fopen("E:\sifreler.txt", "r") or die("Unable to open file!");

$plogin=fgets($myfile);

fclose($myfile);

$cipher = 'AES-128-ECB';

$key = 'jfgksjdfgaksgf32423423bbfabsdjeyrwerwer898er2312423543656';

$decoded = openssl_decrypt($plogin, $cipher, $key); // çıktı: prototurk.com

echo $decoded;

?>


Python ile Dosya Ekli Email Gönderme

 Python ile bir excel dosyasını e-mail olarak göndermek istiyorsanız aşağıdaki kodu kullanabilirsiniz. 


import smtplib,ssl
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
def send_mail(send_from,send_to,subject,text,files,server,port,username='',password='',isTls=True):
    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = send_to
    msg['Date'] = formatdate(localtime = True)
    msg['Subject'] = subject
    msg.attach(MIMEText(text))
    part = MIMEBase('application', "octet-stream")
    part.set_payload(open("WorkBook3.xlsx", "rb").read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename="WorkBook3.xlsx"')
    msg.attach(part)
    #context = ssl.SSLContext(ssl.PROTOCOL_SSLv3)
    #SSL connection only working on Python 3+
    smtp = smtplib.SMTP(server, port)
    if isTls:
        smtp.starttls()
    smtp.login(username,password)
    smtp.sendmail(send_from, send_to, msg.as_string())
    smtp.quit()

End of Life Olan Flash Player Nasıl Kullanıma Açılır.

 End of Life Olan Flash playerı bilgisayarınızda kullanmaya devam edebilirsiniz fakat bu kullanımın bazı güvenlik açıklarına sebep olacağını unutmayız. Sadece acil girilmesi gereken sistemler için kullanmanızı, kullanım sonrası ayarları iptal etmenizi öneririm. Flash player'de artık yeni geliştirmeler yapılmadığını ve güvenlik açıklarının artık kapatılmadığını unutmayın. Chrone üzerinden flash player olan bir siteye girebilmek için Chrome Versiyon 87 veya daha önceki bir sürüm kullanmalısınız, sonraki sürümler Flash yazılımını içermez.

1- Bilgisayarınızda aşağıdaki dizine “mms.cfg” isimli bir dosya oluşturun.

C:\Users\Username\AppData\Local\Google\Chrome\User Data\Default\Pepper Data\Shockwave Flash\System

Burada username bölümü kendi bilgisayarınızda bulunan ve kullandığınız dizin olmalıdır.

2- Dosyanın içeriğini aşağıdaki gibi değiştirin.

EnableAllowList = 1
AllowListUrlPattern = http://Bilgisayar_Adi/
AllowListUrlPattern = https://IP_Adresi/
AllowListUrlPattern = https://Site_adresi/

Burada “AllowListUrlPattern” girmek istediğiniz site adresi olmalı. Buraya istediğiniz kadar URL girebilirsiniz

3- Chrome üzerinden sayfaya girin, adres barının yanındaki alana tıklatın ve “Site settings” alanına ulaşın. Flash karşınıdaki seçenekten izin verin.

4- Siteyi browser'dan tekrar çağırın. Karşınıza çıkan Update seçeneğini “Run this time” seçerek devam edin.

Siteye ulaşabileceksiniz.

Adobe Flash, Chrome, End of Life, Enable Flash Player

MySql Import Türkçe Karekter Sorunu

 Bilgisayarınızda bulunan csv dosyalarını MySql'e yüklerken Türkçe karekter sorunu ile karşılaşabilirsiniz. Bu sorun ile karşılaşmamak için ilk olarak bilgisayarınızda bulunan CSV dosyasını UTF8 encoding formatına dönüştürmelisiniz. Bunun için Notepad++ kullanabilirisiniz. 

Dosyanızı bu program ile açın, encoding menusunden UTF8 seçin. Karekterler bozulur ise içeriği silip orijinal dosyadan tekrar kopyalayın ve dosyanızı farklı kaydedin. Dosyanızı tekrar açarak encoding kısmında UTF8 seçili olduğundan emin olun. 

UTF8 formatına dönüştürdüğünüz dosyayı UTF8 encoding ile MySql'e import edin, dosyadaki Türkçe karekter sorununun UTF8 formatında çözüldüğünü göreceksiniz.

Google