Archive | Temmuz, 2019

Khronos Group OpenXR 1.0’ı resmen duyurdu

Game Developers Conference sırasında yazılım geliştirmeyi basitleştirmeyi hedefleyen OpenXR‘nin 1.0 sürümü, Khronos Group tarafından duyuruldu. XR platformları ve cihazları olarak bilinen artırılmış gerçekliğe (AR) ve sanal gerçekliğe (VR) yüksek performanslı erişim sağlayan açık ve telifsiz bir standart olan OpenXR’in yeni sürümüyle, uygulamaların kodlarını yeniden kodlamak veya yeniden yazmak zorunda kalmadan daha geniş bir donanım platformuna erişebilmesini ve ardından OpenXR’yi destekleyen platform üreticilerinin daha fazla uygulamaya erişmesini sağlayacak. OpenXR 1.0 sürümünün yayınlanmasıyla, AR/VR geliştiricileri artık gerçek platformlar arası XR deneyimleri yaratabilecekler. OpenXR 1.0, platformlar arası uygulamaların etkinleştirilmesine odaklanmış bulunuyor. OpenXR 1.0 hakkında ayrıntılı bilgi edinmek için sürüm duyurusunu inceleyebilirsiniz.

Continue Reading →

OpenXR 1.0 edinmek için aşağıdaki linkten yararlanalabilirsiniz.

0

Process Large Files Using PHP

If you want to process large files using PHP, you may use some of the ordinary PHP functions like file_get_contents() or file() which has a limitation when working with very large files. These functions rely on the memory_limit setting in php.ini file, you may increase the value but these functions still are not suitable for very large files because these functions will put the entire file content into memory at one point. Any file that has a size larger than memory_limit setting will not be loaded into memory, so what if you have 20 GB file and you want to process it using PHP? Another limitation is the speed of producing output. Let’s assume that you will accumulate the output in an array then output it at once which gives a bad user experience. For this limitation, we can use the yield keyword to generate an immediate result.

Continue Reading →

SplFileObject Class

In this post, we will use the SplFileObject class which is a part of Standard PHP Library.

For our demonstration, I will create a class to process large files using PHP.

The class will take the file name as input to the constructor:

class BigFile
{
protected $file;
public function __construct($filename, $mode = "r")
{
if (!file_exists($filename)) {
throw new Exception("File not found");
}
$this->file = new SplFileObject($filename, $mode);
}
}

Now we will define a method for iterating through the file, this method will use fgets() function to read one line at a time.

You can create another method that uses fread() function.

Read Text Files

The fgets() is suitable for parsing text files that include line feeds while fread() is suitable for parsing binary files.

protected function iterateText()
{
$count = 0;
while (!$this->file->eof()) {
yield $this->file->fgets();
$count++;
}
return $count;
}

This function will be used to iterate through lines of text files.

Read Binary Files

Another function which will be used for parsing binary files:

protected function iterateBinary($bytes)
{
$count = 0;
while (!$this->file->eof()) {
yield $this->file->fread($bytes);
$count++;
}
}

Read in One Direction

Now we will define a method that will take the iteration type and return NoRewindIterator instance.

We use the NoRewindIterator to enforce reading in one direction.

public function iterate($type = "Text", $bytes = NULL)
{
if ($type == "Text") {
return new NoRewindIterator($this->iterateText());
} else {
return new NoRewindIterator($this->iterateBinary($bytes));
}
}

Now the entire class will look like this:

class BigFile
{
protected $file;
public function __construct($filename, $mode = "r")
{
if (!file_exists($filename)) {
throw new Exception("File not found");
}
$this->file = new SplFileObject($filename, $mode);
}
protected function iterateText()
{
$count = 0;
while (!$this->file->eof()) {
yield $this->file->fgets();
$count++;
}
return $count;
}
protected function iterateBinary($bytes){
$count = 0;
while (!$this->file->eof()) {
yield $this->file->fread($bytes);
$count++;
}
}
public function iterate($type = "Text", $bytes = NULL)
{
if ($type == "Text") {
return new NoRewindIterator($this->iterateText());
} else {
return new NoRewindIterator($this->iterateBinary($bytes));
}
}
}

Parse large Files

Let’s test our class:

$largefile = new BigFile("file.csv");
$iterator = $largefile->iterate("Text"); // Text or Binary based on your file type
foreach ($iterator as $line) {
echo $line;
}

This class should read any large file without limitations Great!!

You can use this class in your Laravel projects by autoloading your class and add it to composer.json file.

Now you can parse and process large files using PHP easily.

Keep coming back.

Thank you.

0

Debian 10 Buster’a VirtualBox 6.0.10 nasıl yüklenir?

Güçlü bir x86 ve AMD64/Intel64 sanallaştırma ürünü olan VirtualBox‘ın en son sürümü, 16 Temmuz 2019‘da duyurulan 6.0.10’dır. Bir bakım sürümü olarak duyurulan sürümün kararlılığı arttırdığı ve gerilemeleri düzelttiği belirtiliyor. VirtualBox 6.0.10 hakkında ayrıntılı bilgi edinmek ve değişikliklerin tam listesini görmek için 6.0.10 değişiklikler sayfasını inceleyebilirsiniz. Bir sanallaştırma yazılımı olan VirtualBox, Sun’ın Ocak 2010′da Oracle tarafından satın alınmasıyla Oracle VM VirtualBox adını almış bulunuyor. Bilindiği gibi; sanal makine yazılımları, donanımın, çalışan işletim sistemiyle paylaştırılmasını sağlarlar. Başka deyişle, bir işletim sistemi üzerinde diğer birini kurup kullanabilmenizi mümkün kılarlar. VirtualBox; başta GNU/Linux, Windows ve Mac OS X olmak üzere pek çok sisteme destek veriyor. Deneyimsiz kullanıcıların da fazla zorlanmadan kullanabildiği VirtualBox, ücretsiz ve açık kaynak kodlu bir yazılım. Debian 10 Buster’a VirtualBox 6.0.10’un nasıl yüklendiğini ele alacağız.

Continue Reading →

Sisteminizde sudo öntanımlı olarak kurulmamışsa, sudo’yu kurabilir, kendinizi /etc/sudoers dosyasına ekleyebilirsiniz. Veya

su -

komutuyla root olabilirsiniz. VirtualBox, varsayılan Debian 10 deposuna dahil değildir. Bu nedenle, onu Oracle deposundan yükleyebilmek için nano ile yeni bir kaynak listesi dosyası oluşturmamız gerekiyor:

sudo nano /etc/apt/sources.list.d/oracle-virtualbox.list

komutuyla ilgili dosyayı açalım. İçine aşağıdaki satırı aynen kopyalayıp yapıştıralım:

deb https://download.virtualbox.org/virtualbox/debian buster contrib

Dosyayı nano metin düzenleyicisiyle kaydetmek için Ctrl + O tuşlarına, ardından onaylamak için Enter tuşuna basın. Dosyayı kapatmak için Ctrl + X tuşlarını kullanabilirsiniz.

Ardından, Oracle GPG ortak anahtarını almak ve Debian 10 sisteme aktarmak için aşağıdaki komutu çalıştırın, böylece Oracle deposundan indirilen paketlerin doğrulanması sağlanabilecektir.

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

Depoları güncelleyelim:

sudo apt update

Artık VirtualBox 6.0.10’u yükleyebiliriz:

sudo apt install virtualbox-6.0

Eğer bilgisayarınız 32 bit ise, bunun yerine VirtualBox 5.2’yi kurmanız gerekiyor:

sudo apt install virtualbox-5.2

Güle güle kullanın.

0

Latte Dock 0.9.0 duyuruldu

Plasma çerçevelerinde zarif ve sezgisel bir deneyim sunan ve popülerliği nedeniyle çoğu Linux dağıtımına kurulan Latte Dock‘un 0.9.0 sürümü duyuruldu. Bunun çeşitli yenilikler, iyileştirmeler ve geliştirmelerle dolu bir sürüm olduğu belirtiliyor. Yazılımın artık aktif pencereye göre kendini boyayabildiği, temel masaüstü arka planı için şeffaf olduğunda mümkün olan en iyi kontrastı sağlayabildiği söyleniyor. Rozet deneyiminin yeniden düşünülüp geliştirildiği; kullanıcının daha belirgin bildirim rozetleri seçmesi veya varsayılan olarak kullanılan malzeme yerine, 3B stili kullanması için yeni seçenekler eklendiği bildiriliyor. Önceki sürümlere göre çok daha yumuşak ve hatasız bir deneyim sunan yeni sürümde, birçok alan yeniden tasarlanıp geliştirilmiş bulunuyor. Latte Dock 0.9.0 hakkında ayrıntılı bilgi edinmek için sürüm duyurusunu inceleyebilirsiniz.

Continue Reading →

Latte Dock 0.9.0 edinmek için aşağıdaki linkten yararlanalabilirsiniz.

Latte Dock hakkında fikir sahibi olmak üzere aşağıdaki videoyu izleyebilirsiniz.

0

Linux Lite 4.6 RC1 duyuruldu

Kullanıcı dostu, Ubuntu tabanlı, düşük kaynak tüketimi ile gelen, hafif bir GNU/Linux dağıtımı olan ve Xfce masaüstü ortamıyla gelen Linux Lite’in 4.6 sürümünün sürüm adayı, Jerry Bezencon tarafından duyuruldu. Ubuntu 18.04 LTS’ye (uzun süreli destek) dayalı olarak gelen sistem; 4.15.0-55 Linux çekirdeği üzerine yapılandırılmış bulunuyor. Karşılama ekranına bir dizi estetik iyileştirme getiren sistem, ayrıca, CPU performans modu eklentisini (xfce4-cpufreq-plugin) bir seçenek olarak eklemiş bulunuyor. Papirus icon teması en son sürüme güncellenirken, Lite Welcome için yeni bir tema seçici geliyor. Sistem; Firefox 68.0.1 Quantum. Thunderbird 60.8.0, LibreOffice 6.0.7, VLC 3.0.7, GIMP 2.10.12 gibi güncel paketler içeriyor. Linux Lite 4.6 RC1 hakkında ayrıntılı bilgi edinmek için sürüm duyurusunu inceleyebilirsiniz.

Continue Reading →

Linux Lite 4.6 RC1 edinmek için aşağıdaki linklerden yararlanalabilirsiniz.

0

LibreOffice 6.2.6 RC1 çıktı

LibreOffice’in 6.2.6 sürümünün ilk sürüm adayı çıktı. LibreOffice 6.2.6 RC1; sürüm takviminde belirtilen tarihe uygun biçimde The Document Foundation (TDF) tarafından çıkarıldı. The Document Foundation (TDF), henüz resmi duyuruyu yapmadı ama paketler test edilmek üzere yansılardaki yerini aldı. Bunun, yalnızca test etmek amacıyla kullanıma sunulan bir sürüm olduğunun unutulmaması ve yalnızca test etmek amacıyla kullanılması gerektiği hatırlatılıyor. LibreOffice 6.2.6 RC1’i var olan LibreOffice kurulumuna paralel kurabilirsiniz. Farklı dağıtımlar için ayrıntılı kurulum yönergelerini incelemeniz önerilir. Sürüme ilişkin hataları Bugzilla üzerinden bildirebilirsiniz. LibreOffice 6.2.6 RC1 hakkında bilgi edinmek için yayımlandıktan sonra sürüm notlarını inceleyebileceksiniz.

Continue Reading →

LibreOffice 6.2.6 RC1 edinmek için aşağıdaki linklerden yararlanabilirsiniz. Resmi duyuru yapılana kadar:

Resmi duyuru yapıldıktan sonra:

0

KDE Applications 19.08 Beta duyuruldu

Kaliteli bir masaüstü deneyimi sunmayı amaçlayan KDE Applications’ın 19.08 Beta sürümü duyuruldu. Geliştirme ekibi; 19.08 için bir test sürümünü duyurmaktan mutluluk duyduklarını, yazılımı geliştirmek için sürekli çalıştıklarını belirtirken, gerçekleştirilen tüm yeniliklerin, geliştirmelerin ve hata düzeltmelerinin yararlı olacağına inandıklarını söyledi. Bunun bir test sürümü olduğunun unutulmaması ve yalnızca test etmek amacıyla kullanılması gerektiği hatırlatılırken, test eden kullanıcıların tespit ettikleri hataları rapor etmeleri rica ediliyor. Kaliteyi ve kullanıcı deneyimini korumak ve iyileştirmek için kapsamlı bir teste ihtiyaç duyduklarını söyleyen ekip, sürümü test ederek hataları bildirmek suretiyle kendilerine yardımcı olan herkese teşekkür ettiklerini ifade etti. KDE Applications 19.08 Beta hakkında daha fazla bilgi edinmek için kde.org’un sürüm duyurusunu incelenebilir.

Continue Reading →

KDE Applications 19.08 Beta edinmek için aşağıdaki linklerden yararlanabilirsiniz.

0