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





Google