vineri, 16 iunie 2017

Kohana Framekwork is for geeks, for nerds, for hackers

Today I found that Kohana Framework (the best fork of CodeIgniter for PHP5+ out there) has been declared deprecated from now on.
If you can just imagine that they declared Kohana defunct just because it is not using PHP7. So for some, everything that is not trendy or fashionable is considered dead. This is nothing but a speculative thinking.

I think Kohana deserves to continue its story and I am going to fork and maintain it.

Here is the new repository of Kohana Framework fork with Haxe interfaces called KoHaxe:
Enjoy!

https://github.com/barebonemvc/kohaxe .

miercuri, 17 mai 2017

JavaScript parseInt() performance

Have you ever wondered how to efficiently convert a string into an integer in JavaScript? There are several methods. Question is which one is the fastest? Actually it depends on your browser

But anyway, I tested with Firefox 53 on Windows 10. Here we have the results:

Test Ops/sec
Bitwise or
var i = number1 | 0;
var j = number2 | 0;
var k = number3 | 0;
var l = number4 | 0;
1,048,932,896
ParseInt()
var i = parseInt(number1);
var j = parseInt(number2);
var k = parseInt(number3);
var l = parseInt(number4);
4,148,982
Using unary
var i = +number1;
var j = +number2;
var k = +number3;
var l = +number4;
2,240,860
By multplication
var i = number1 * 1;
var j = number2 * 1;
var k = number3 * 1;
var l = number4 * 1;
1,789,007

duminică, 26 martie 2017

The Joomla Legacy Explained

This is a technical insight article that explains how Joomla works. From how views are loaded to how routing and controllers work in this framework/CMS.

1. Templates

A template in an instance of JDocumentHTML class which provides an easy interface to parse and display a HTML document.

vineri, 24 februarie 2017

Font is blurry on Chrome?


If website fonts looks very blurry on your Chrome on Windows.

Blurred text on the left, normal text on the right.



Chrome for Windows uses a new text rendering method called DirectWrite. This method is hardware accelerated and it's supposed to be better than the previous one, but obviously it's caused some issues for you.

Please disable this feature searching for it in chrome://flags

Source: Neatorama

For my version of Chrome (Version 56) it was called "Zero-copy rasterizer" Instead of "Direct Write"


vineri, 28 octombrie 2016

Golden Timestamp Logger

@:expose('Console')
class Test {       
    @:keep
    static public function timeStamp( message : String ) : Void {
        var pad:Int -> String -> String = function(n:Int, val:String) { 
            return StringTools.lpad(val, '0', 2); 
        }
     var date:Date = Date.now();
        var ms = untyped __js__("(new Date()).getMilliseconds()");
   var timestamp:String = pad(2, Std.string(date.getHours())) 
            + ':' + pad(2, Std.string(date.getMinutes())) 
            + ':' + pad(2, Std.string(date.getSeconds())) 
            + '.' + pad(3, ms);
        untyped __js__("console.log('%c' + timestamp + ' %c' + message, 
                       'color: #B8860B', '')");        
    }
    
    static function main() {
        untyped __js__("console.timeStamp = Console.timeStamp");
    }
}

Try running this: https://try.haxe.org/#21b7b

miercuri, 26 octombrie 2016

Methylene Architecture

The Methylene Architecture is a particular case of MVC architecture where the Controller is the central point of the application and it has access to two separate channels:

  • Controller-Model Channel
  • Controller-View Channel
In this context, a channel is any mean that can be used to exchange any type of message.

In the classical MVC concept the Controller manipulates the Model  and the Model updates the View.

With this Methylene Architecture, only the Controller is able to update the Model. This means not only that Model cannot push values to the View, but also the View is not allowed to get values from the Model. Which first means that the user will get the View output from the Controller and not the View itself. Secondly, the Controller is able to send data back and forth between Model and View as follows:

  • A request is received by the controller
  • A model query is initiated based on this request
  • The result from the model is handled by the controller and passed into the view
  • Controller initiates view rendering and fetches the result
  • The result is send as a response to the user

The main advantage in this case is that dependency channels can be easily managed, reducing the overall complexity of the application.