My First Post      My Facebook Profile      My MeOnShow Profile      W3LC Facebook Page      Learners Consortium Group      Job Portal      Shopping


Wednesday, March 11, 2020

find what uses a port like 8080 kill the process on mac

Many a times during debugging, you find that your port is already used. You can find at this point where it is used and kill the process.

Step 1: Find all processes using port
$ netstat -vanp tcp | grep 8080

Step 2: Kill the task
eg: $ sudo kill -9 73804

Refer screen shot below:

cheers :)

Sunday, March 8, 2020

Typechecker in hhvm and running Hack program

Let's start with writing a sample program of printing cubes of numbers. eg:

Using the editor of your choice (e.g., VSCode or vim), let's create a file called first.hack with the following code:
<<__entrypoint>> function main(): void { echo "Welcome to Hack! \n\nTutorial by Anwar Faiz\n\n"; \printf("Table of Cubes\n" . "----------------\n"); for ($i = -5; $i <= 5; ++$i) { \printf(" %2d %2d \n", $i, $i * $i * $i); } \printf("----------------\n"); exit(0); }
To see the result of Typechecking:
$ hh_client first.hack
You should see:
No errors!
* Note that however, you might get following error - Error: /Users/mfaiz/ECPCP/hhvm-hack/first.hack is not a directory
But that is other issue. i will explain in next post.

To run the program on client side:
$hhvm first.hack 
You will get following as result.

By the way by now I am already feeling like using Node like application for PHP. This is looking cool. Hurray! 
Take care readers. And pour in your thoughts :)

Friday, March 6, 2020

First Hello World using Hack & HHVM from Facebook

1. Install HHVM on MacOS via Homebrew:
brew tap hhvm/hhvm
brew install hhvm

The out-of-the-box HHVM configuration won't need tweaking by most new users. Notably, the JIT compiler that gives HHVM its speed is on by default. If you want to take a look at the configuration used, it's at /usr/local/etc/hhvm/php.ini in MacOS.

2. Test: After installing HHVM, change to the directory where your code lives, and start up HHVM:

hhvm -m server -p 8080
-m represents the mode and here indicates that HHVM is running in HTTP server mode.
-p configures the TCP port that HHVM uses to listen to HTTP requests. The default port is 80, the standard HTTP port. However, that port requires root access, so for this example, we will use port 8080.

This will start the server as follows and then you can test on browser.

3. Write a simple "Hello World" program named hello.hack:

<<__entrypoint>> function main(): noreturn{ echo "Hello World in Hack Language! \nThis is Anwar Jamal Faiz"; exit(0); }

Save this hello.hack in the same directory that you ran the hhvm command from above. Then, load http://localhost:8080/hello.hack in your browser and verify you see "Hello World!" appear.

See in browser:
You may also write the program as:
function main(): noreturn{
  echo "Hello World in Hack Language! \nThis is Anwar Jamal Faiz";

4.  You can directly run file using hhvm itself.

$ hhvm hello.hack

Note: You can configure HHVM too. Running HHVM automatically at boot as a service (instead of just on the command line as above) unfortunately does require some configuration. See the proxygen documentation for details. However, default settings are okay for any average usecase.

My First look of Hack Language over HHVM by Facebook

Hack is a great language in terms of the advantages it has over PHP. The hack language introduce a level of type safety and related concepts. Undoubtedly, with HHVM it becomes a faster processing language. It is more expressive, more economic, it is faster to write and catch more bugs. The key features as explained by Facebook itself are:

Fast Development
Hack reconciles the fast development cycle of a dynamically typed language with the discipline provided by static typing, while adding many features commonly found in other modern programming languages.

Type Checking
Hack provides instantaneous type checking by incrementally checking your files as you edit them. It typically runs in less than 200 milliseconds, making it easy to integrate into your development workflow without introducing a noticeable delay.

Built for HHVM
Hack is built specifically for HHVM, a high performance 

Type Annotations
Type annotations allow for code to be explicitly typed on parameters, class member variables and return values.

Generics allow classes and methods to be parameterized (i.e., a type associated when a class is instantiated or a method is called) in the same vein as statically typed languages like C# and Java).

Lambdas succinctly allow definition of first-class functions.

HHVM is an open-source virtual machine designed for executing programs written in Hack. HHVM uses a just-in-time (JIT) compilation approach to achieve superior performance while maintaining amazing development flexibility. HHVM should be used together with a webserver like the built in, easy to deploy Proxygen, or a FastCGI-based webserver on top of nginx or Apache.

Released in 2014, Hack is still not so much popular and I see following as the reasons.
  1. I cannot find any big hosting provider to support HHVM hosting and support for Hack language. You need to maintain your own server. This is one of the big issues that I see with Hack.
  2. Vast majority of php programmers do not build using TDD approach or do lots of whitebox testing. Hence, the benefit of type checking does not attract them much. For many hhvm is just a slightly faster incompatible php, no surprise they aren’t going to invest much there.
  3. Installing Hack on different systems require more technical knowledge. Novice programmers usually lack the skills of core OS. Also, on some systems you need to build HHVM from scratch using the source code repo.
  4. Backwards compatibility with PHP is not 100%. Almost all PHP code works in Hack but there are certain features of PHOP which is not supported in Hack. Hack may have some incompatibility with existing PHP codebases, which increases the cost of switching.
  5. Not everyone needs the amount of scalebilty the companies like Facebook need.
  6. Other bigger eCom and web companies are trying with new RAD tools like React and doing pretty well in their NodeJS world. Webservices are already build using Java or C# and they do not want to come to PHP of Hack.
  7. Hack doesn't allow templating of HTML and Hack code together, which is a popular feature of PHP. You need an engine in between.
  8. Last, but not the least, no one knows how far facebook itself will support the developemnt and Bug fixes in Hack or HHVM.

However, we should also understand that in the world of PHP, the language Hack becomes very useful. It will help developers catch some errors while writing the code itself. Further, the dev tools by Facebook and other contributors are also very exciting. So, I will be experimenting more with the language. Will keep you all posted about new features.