DayZ Standalone ep.1

Door chaozz op woensdag 20 augustus 2014 09:08 - Reacties (11)
Categorie: -, Views: 2.014

Ik heb na lange tijd de DayZ Standalone weer eens opgepakt en speel dit nu alweer een weekje met veel plezier samen met vriend Edds01. Van onze encounters met vriendelijke Duitsers, hackende pubers en zombie gespuis maakte ik een eerste episode van wat hopelijk een serie wordt.

Check de video en laat me weten wat je er van vindt in de comments.
http://tweakers.net/ext/f/zGJBRdkwMXhIUINWrqSzkIUg/full.jpg

https://www.youtube.com/watch?v=KDaGE75C1Fo

De finish in zicht?! (Spintires) Ep.3

Door chaozz op dinsdag 29 juli 2014 12:14 - Reacties (4)
Categorie: -, Views: 1.974

Spintires is een geniaal spel, en zeker het checken waard op Steam. In deze Youtube-serie trek ik er met 3 vrienden op uit om door Russische bagger ploegen met verschillende trucks.

Episode 3 is onze laatste poging. We proberen het nog 1x, maar met vier man sterk moet het goed komen, toch?

De derde episode hebben we tijdens het opnemen in vier delen gehakt, maar meer op gevoel dan op iets anders. Sorry dus voor de soms veeeeeel te lange episodes.

Wil je gewoon weten hoe het afloopt, check dan alleen deeltje 4.

Spintires Ep.3.1

https://www.youtube.com/w...GIcjz_iFsytab&index=3
https://www.youtube.com/w...GIcjz_iFsytab&index=4
https://www.youtube.com/w...GIcjz_iFsytab&index=5
https://www.youtube.com/w...GIcjz_iFsytab&index=6

Achievement Unlocked? (Spintires) ep.2

Door chaozz op dinsdag 22 juli 2014 01:37 - Reacties (14)
Categorie: -, Views: 1.922

Spintires is een geniaal spel, en zeker het checken waard op Steam. In deze Youtube-serie trek ik er met 3 vrienden op uit om door Russische bagger ploegen met verschillende trucks.

In de vorige episode strandden we met de finish in zicht. In episode 2 trekken we er opnieuw op uit. Deze episode is een stuk korter. Dat is een goed teken toch?

Spintires Ep.2

https://www.youtube.com/watch?v=JelNs_Lnjjw

Sleuren met balken (Spintires) ep.1

Door chaozz op maandag 21 juli 2014 00:21 - Reacties (11)
Categorie: -, Views: 2.595

Spintires is een open wereld game zoals ik die nog niet eerder heb gespeeld. Het objective is simpel: Haal houten balken op van een bepaalde plek op de kaart, en breng deze naar een ander punt. Je gebuikt daarvoor ťťn van de vele trucks in de game.

Dat klinkt simpel, maar het terrein is bijna onbegaanbaar op sommige punten. Je komt geheid een keer ergens genadeloos vast te staan. Op dat soort momenten kun je jezelf soms nog lostakelen door je takel aan een stevige boom te bevestigen, maar veel leuker wordt het als je de game speelt in coop.

Dat leek mij en 3 vrienden in ieder geval. En dus trokken we onze Sovjet winterkleding aan en probeerden we samen het objective te halen (de derde vriend komt er in deel 2 bij!).

In deel 1 van deze serie doen we een eerste dappere poging de onherbergzame bagger van Rusland te bedwingen.

Spintires Ep.1

https://www.youtube.com/watch?v=Kf6eMRtou10

Using readable timestamps in SQL and PHP

Door chaozz op dinsdag 07 januari 2014 11:13 - Reacties (52)
Categorie: -, Views: 8.325

In a lot of cases you want to store timestamps in your database. There are a lot of ways and formats to do so, but the most commonly used method is using Unix Epoch format. I want to discuss an alternative.†Using readable timestamps in SQL and PHP.

Unix Epoch

Let's for example take the following date: the 5th of January 2014 at 01:39:12

In Unix Epoch this would be displayed as:†1388882352

This number is the number of seconds that passed since the 1st of January 1970 until the date mentioned above. While this is an efficient way of storing the date, it is useless unless you convert it into a readable date. But why not store it readable in the first place?

The readable alternative


PHP:

1
2
3
<?php
$date = new DateTime();
$now = $date->format('YmdHis');
echo $now;
?>


Using the same date mentioned above this would generate a date that looks like this: 20140105013912.

The format is: 4 year digits, 2 month digits, 2 day digits, 2 hour digits, 2 minute digits and 2 second digits. There you have it, a <em>readable</em> date.†

Advantages

Using this timestamp format has a number of advantages:
  • First and most important, if you are doing queries directly on your database, for example from a front-end like PhpMyAdmin, timestamps stored in this format are very readable. You can instantly see what date is being displayed.
  • Just like Unix Epoch, you can still do queries sorted by date.
  • Timestamps are still comparable. You can still do $past_date < $future_date, just like with Unix Epoch.
  • You can query periods really simple, using the LIKE function from SQL
Storage

For storage in a database it's best to use the field type BIGINT, which uses 8 bytes of storage. You could also use a VARCHAR(14) field, which is the exact size you need for this date format, but this would use 14 bytes for the date + 1 byte for storing the string length. Using BIGINT saves you 7 bytes per record over VARCHAR(14).

Example 1: order by date

I have a database table that stores when my cron jobs are ran. In the example below I queried my log to see when the last crons were ran. The query:


SQL:
1
SELECT * FROM log ORDER BY date DESC;


result: http://4techs.org/wp-cont...014/01/readable-dates.png

I can instantly see in the date field the last 2 minute-cron ran at 01:42:01 on the 5th of January 2014.

Example 2: compare dates

Comparing timestamps is very easy. Lets take for example the table called logs†from the screenshot above. If I want to see all the cron jobs that were ran after yesterday 16:00:00 I can simply use the query:


SQL:
1
SELECT * FROM log WHERE date > 20140104160000;


But as mentioned you can also query using the LIKE method. For example, if you want all the logs from February 2011, you simply query:


SQL:
1
SELECT * FROM log WHERE date LIKE '201102%';


With Unix Epoch you can subtract two timestamps and the result will be the difference in seconds between those dates. If you want the number of seconds between two timestamps in the readable format you can use the following code:

PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
Function SecondsDiff($fromtime$totime) {
 $from = strtotime($fromtime); // convert readable date to unix epoch
 $to = strtotime($totime);
 $diff = $to - $from;
 if ($diff < 0$diff = 0;
 return $diff;
}

$date = new DateTime();
$present = $date->format('YmdHis');
$date->modify('+10 minutes');
$future = $date->format('YmdHis');

$difference_in_seconds = SecondsDiff($present$future);
?>


Example 3: past and future timestamps

Something that is also useful is creating future or past timestamps. Let's say we have the following SQL table:

TABLE:
  • future_tasks
FIELDS:
  • id, INT(10), auto increment
  • type, VARCHAR(10)
  • date, BIGINT
The PHP script below inserts a task into the SQL table with a date set 10 minutes from the current date:

PHP:

1
2
3
4
5
<?php
$date = new DateTime();
$date->modify('+10 minutes');
$task_date = $date->format('YmdHis');

$result = msyqli_query ($link"INSERT INTO future_tasks (type, date) VALUES ('clear_log', $task_date)");
?>


Now let's write a cron job script that runs every minute to see if it needs to clear the log:

PHP:

1
2
3
4
5
6
7
<?php
$date = new DateTime();
$now = $date->format('YmdHis');
$result = mysqli_query ($link"SELECT id FROM future_tasks WHERE type = 'clear_log' AND date < $now");
// Clear the log here
$result = mysqli_query ($link"TRUNCATE TABLE log"); // clear the log efficiently
// delete task so the cron job will not be triggered again by past tasks
$result = mysqli_query ($link"DELETE FROM future_tasks WHERE type='clear_log' AND date < $now");
?>


I hope you find this useful for your SQL and PHP projects.