Project Euler – Problem 2 Solution

Problem: Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
* https://projecteuler.net/problem=2

Php;

<?php

// Parameters
$total = 2;
$array = [1, 2];

while (true) {
    $array_count = count($array);
    $sum = $array[$array_count - 1] + $array[$array_count - 2];
    if ($sum < 4000000) {
        $array[] = $sum;
        if ($sum % 2 == 0) {
            $total += $sum;
        }
    } else {
        break;
    }
}
echo $total;

Javascript;

'use strict';

// Parameters
var total = 2,
    array = [1, 2],
    sum,
    array_count;

while (true) {
    array_count = array.length;
    sum = array[array_count -1] + array[array_count - 2];
    if (sum < 4000000) {
        array.push(sum);
        if (sum % 2 === 0) {
            total += sum;
        }
    } else {
        break
    }
}

console.log(total);

Project Euler – Problem 1 Solution

Problem: If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.
* https://projecteuler.net/problem=1

Php;

<?php

// Parameters
$total = 0;

for ($i = 1; $i < 1000; $i++) {
    if ($i % 3 == 0 || $i % 5 == 0) {
        $total += $i;
    }
}
echo $total;

Javascript

'use strict';

// Parameters
var total = 0, i;

for (i = 1;i < 1000; i++) {
    if (i % 3 === 0 || i % 5 === 0) {
        total += i;
    }
}

console.log(total);

Making Snake Game With Javascript

Ever since childhood I have always wondered how to make games and I wanted to make my own game one day. After spending so much time in the software industry, I asked myself why I should not do it anymore. Thus, I will improve my Javascript skill and I will also look at the software development process in a way that I have never looked at before.

Before I started coding the game, I began to think about how the algorithm of the snake’s movement would be. Some of the first options that came to mind were; scan the entire playground in every move, to keep the coordinates of each cell of the snake on a array and update the old and new cells while moving. At the end, I understood that it was best to erase the last cell of the snake and attach a cell to the head.

First I created a snake object and I wrote the code that would create the playground. After creating the playground, I found a nice font for the game and added it. I wrote the algorithm that would make the snake move after I wrote a code that composes the snake and puts it into the playground.

When I wrote the snake’s movement for the first time, it continued to move outside the playing field and could go back inside. For example, while the snake was moving upwards, if I pressed down, it was moving within itself.

First of all, if the snake came to the edge of the playing field, I wrote the codes that would allow it to continue from the other end. So, for example, if the snake reached the left edge, it would have entered the right edge.

After that, I wrote the codes that control the direction key that moves according to the direction the snake moves. So, for example, if I press down on the button while the snake is moving up, it doesn’t do anything. After this I added the ability to start and stop the game.

At this point, I stopped taking care of for about a month or two. A lot of different thoughts and things got in.

Today the game came to mind again and I started again. Finally, I finished the game by adding the bait, the game score and the ability to manage game settings.

I enjoyed making this game very much and I am very excited to see the result. Only problem is if we press the arrow keys too fast, the snake starts to act ridiculous. I think this is caused by the frame rate of the game, but I have not figured it out yet.

My next goal is to write a tetris or a simpler than tetris.

You can play the game on here.

You can check the codes on here.

How to get timezone offset on MySQL?

Hello to everyone.

When I was working recently, I needed a timezone offset on one subject. I could calculate timezone offset on php but I thought it would be easier and more advantageous to find it on MySQL. So I created a query that calculates the timezone offset and I will share it with you.

SELECT TIME_FORMAT(TIMEDIFF(NOW(), CONVERT_TZ(NOW(), 'Asia/Kathmandu', 'UTC')), '%H:%i') as offset;

Result will be;

’05:45′

ZipMaster – Php İle Klasörleri Ve Dosyaları Ziplemek

Php ile uğraşan bir çok kişi, Php‘deki zip kütüphanesinin klasör altındaki klasörlerin arşivlemediğini öğrenmiştir. İnternette bunu yapabilmek için bir çok yöntem mevcut ama karışık ve dağınık halde bulunuyor. Ben de kendi sunucumda sitelerin ve projelerin yedeklenmesini otomatik hale getirmek için bir klasör altındaki dosya ve klasörlerin tamamını arşivleyip zip dosyası oluşturan bir script oluşturdum. Umarım herkesin işine yarar.

ZipMaster github üzerinde bulunmaktadır. Geliştirmek isteyenlerin forklayıp ve pull request göndermesi yeterlidir. Aşağıda ve github üzerinde örnek kullanımı bulabilirsiniz;

<?php

include 'ZipMaster.php';

$zip = new ZipMaster\ZipMaster('backup/test.zip', 'test_folder');
$zip->archive();

Euler Projesi – Çözümlerim

Nedir bu Euler Projesi? Öncelikle ondan başlayalım.

Euler Projesi

Euler projesi; ister matematikçi olsun ister yazılım geliştiricisi, meraklı insanların çözmek isteyeceği soruları barındıran bir sitedir. Şu anda 608 tane soru bulunmaktadır ve her geçen vakit bu sayı artmaktadır. Kendilerini tanıtan yazıyı çevirirsek;

Euler projesi; çözmek için matematiksel kavrayışlardan daha fazlasına ihtiyaç duyan zorlu matematiksel / bilgisayar programlama problemleri dizisidir. Matematik, zarif ve etkili yöntemleri keşfetmenize yardımcı olsa da, birçok sorunu çözmek için bir bilgisayar kullanımı ve programlama becerileri gerekecek.

Neden bu proje ile ilgili yazıyorum? Çünkü ben de bu projedeki soruları çözmeye başladım. Bu soruları çözebilmek için matematiği yeniden öğrenmem gerekecek ama bundan keyif alıyorum. Bu soruları çözüyorum çünkü yazılımı sevmemin temel sebebi de bu.

Yazılımı ve yazılımcıyı en temel hali ile alırsak, bilim ve bilim insanının en temel yapısından farksız olduğunu göreceğiz. Yazılımcı da bilim insanı da bir problem ya da soruyla karşılaşır ve bunun çözümüne, cevabına ulaşmak için uğraşır. Bu yüzden bilim insanları kolaylıkla yazılım öğrenmekte ve kullanmaktadır. Yazılımcılar arasında (ülkemizde pek rastlanmaz malesef çünkü yazılımcı değiller, ezberci iş gücü köleleri onlar) bilime merak duyan veya ilgilenen insana rastlamak şaşırtıcı olmaz bu yüzden.

Bu tür problemleri incelemek, inceleme esnasında öğrenmek ve çözüme ulaştıktan sonra başarı hissi inanılmazdır. Bu yüzden yazılımı uyuşturucuya benzetenler de olmuştur. Nasıl ki uyuşturucuda aynı hazzı yakalamak için daha çok uyuşturucu tüketimi olur, yazılımcı da aynı hazzı yakalayabilmek için giderek daha zor problemlerin çözümüne adar kendini.

İşin özetine gelirsek ben çözümlerimi yayınlayacağım bir github reposu oluşturdum. Çözümlerimi hem php hem de javascript dillerinde yayınlayacağım. Amacım insanların çözüme ulaşması değil elbette. Yazılımcılar birbirinden farkı çözümler üreteceği için, birbirimizin cevaplarını görmek ve bunun üzerinde tartışma yapabilmek.

Bu çözümleri oluştururken dinlediğim müzik ise aşağıdadır;