Screen Shot 2016-04-10 at 7.49.57 PM

composer install-update killed on vagrant machine

These are also other stuffs going on:
composer update or composer install takes forever and the command line responds as killed

Specially this might happen on ordinary symfony application.Screen Shot 2016-04-10 at 8.16.40 PM

This is mostly, very very likely, related to memory issue.

Solution 1: perform your composer update or install on the host machine if possible.

This might not be possible in some scenarios if there are dependencies that rely on installed packages.

But, if that is not the problem, have on the host and the files would be sync’d anyway.Screen Shot 2016-04-10 at 8.07.07 PM

Solution 2: increase the memory on the provision file you have. I am using puphpet so, for that all you would have to do would be

cd /path/to/puphpet/
vim comfig.yml

then search for memory which by default be 512 and increase it at least to 1024 or better 2048 and that should solve the problem

Tip

To see the how much memory you have on your vagrant machine, ssh into your machine and

vagrant ssh
free -h

the free command would tell you how much memory you have and how is used.

error = MongoId not found in symfony application

I got the MongoId not found error on the the application I recently moved to remote server.
The app is working fine locally and the problem appears to happen on the remote one only.
The problem seems obvious, and I checked the mongo version I have locally vs the version I have on the remote – they are different

I have newer version of mongo installed on the remote server. And the doctrine orm handling my mongo objects was also older.
I updated my doctrie orm on composer as

 "doctrine/orm": "2.4.6",

This took care of the problem – at least for now 😉

Loaded Configuration File => (none) Apache not reading php.ini

php.ini is a core file to handle the behavior of PHP and sometimes apache might not pick it and php might not be using and it will create problem.

To resolve this, just see the output of phpinfo first.
Just add the following code snippet in the php file and run it through your server

<?php
phpinfo();

Then look of configuration file (php.ini) path, by default it would be /etc
If you don’t have the file php.ini in that mentioned directory, just look for related ones like php.ini.default or something and just copy that as php.ini and restart your apache.

A new entity was found through the relationship doctrine error

Doctrine error: New Entity was found through relationship

This is typical problem of doctrine with joined relations.

How to use MySQL keyword as column in doctrine

And, to be specific, this would happen when trying to save an entity with relationship and the one being joined is fetched from memcached/redis or from other entity manager or you just populated it and not getting through Entity Manager

Solution to the doctrine error

Use the merge on EntityManager before you persist the object

Say you have an entity for pen and entity for color as well.. You want to save a new pen but you assigned a color from memcached object


$color = $this->memcacheGiveMeColor('blue');
$color = $em->merge($color)
$pen->setColor($color);
$em->persist($pen);
$em->flush();

Make sure you are using the object that is returned from merge!

If you are not reading from the memcached or other factory, and you are reading directly from Entity Manager then you wont have this error.

Start using mongoDB with nodeJS even though you haven’t been using it before

What is http raw data? what is php://input and where to use which?

Using unquoted json formatted result set in symfony2 twig

In the request->process->response world of the MVC infrastructure, Symfony2 fits just perfect.

I was working on some data intensive site. All I want was to get the set of records from the mysql database and pass it to the front end through the controller. The front end wants the JSON format of the result set. The front end is getting the polished output of the twig

The problem
Front-end is not happy since it is getting quote-escaped version of JSON

The solution

Very very very simple. Rather than passing the json_encode(all_cars), where all_cars being the array of results coming from database or whatever it is, just pass the array it self

{{ all_cars | json_encode | raw }}

Yup, twig will not try to escape the quotes in this case since it is told to present raw.

Additional View

As you can see in this menu, both JSON and html views are together as combo. From design point of view this is not a good approach.

Better approach

You can bake the whole view right in the view and you might not want additional javascript logic on your view

OR
Have specific API to return 100% JSON response for the request like

some domain dot com/all/cars

By hitting this from, say your ajax call, you will be provided with json formatted list of all cars.

Since you are calling it from javascript, it will be directly coming to its home and no funny business would be there.
Then you will have another url call to load the page say:

some domain dot com/cars

where it will simply load the bare html format to the front-end and the front-end will know what to do with it.

Of course, this would have two trips and even more so it would be suitable for 80-90% of ajaxy sites..

EnJoY!

Problem with MergeList /var/lib/dpkg/status raspberrypi

Having this problem after flashing the OS on your SD card?
It looks the latest wheezy is having this problem. I didn’t have this problem before. Any way the simplest fix I have so far is clearing the status file and running the update again

i@raspberrypi ~ $ sudo rm /var/lib/dpkg/status
pi@raspberrypi ~ $ sudo touch /var/lib/dpkg/status
pi@raspberrypi ~ $ sudo apt-get update

The first command is to remove the corrupted status file
The second would create a blank file with name status, just the reverse of the first command
Last, update to fill up the status..

That is it..

Wi-fi connected but no internet mac troubleshooting

It is a bit frustrating when you want to send and email or watch a trailer on youtube or whatever it is and you can’t connect. it looks we can’t live without it anymore :)
Here are steps that would help you to figure out what has went wrong when you are in such scenarios. We will start from the obvious ones..

1. Are you on the right wi-fi? Yea it looks obvious but mac being smart and remembering wi-fi spots you might be on the wrong one.. so give it a check

2. Is that only your mac that is not connected to the internet? Check your other gadgets have internet from the wi-fi you are trying to connect. If others can’t make it then the concern would be changed to the source.

3. Restart your router. Usually, most routers have reset button. Reset it, unplug the power and let it be like that for a couple of minutes and check again.

4. Click on the apple icon on the top left, and click System Preferences. Then select network. On the left you would see your Wi-Fi being listed. Click on it and on the right window, turn wi-fi off and click again to make it on. Then select the network from the drop down list. This one would be usually used for when you see the exclamation point on the Wi-Fi icon

5. Try the wireless diagnostics. You can access, click on the Wi-Fi icon on the right top cornet while holding the option button. It will be listed on the bottom of the list. Follow the wizard and see if that helps the problem.

6. See if you IP is accessible from other machines. If you have another computer, it could be windows or linux use the ping command to check if your ip-address is accessible and valid. On windows, open the command prompt and write ping ip.address.here. You can get the ip address of your mac from System preference->network then click on the Wi-Fi. You will see it on the right pane. Say your ip address is 192.168.2.3

ping 192.168.2.3

7. If the step number is shows you the ip-address has the problem, change the range of ip-addresses from your router to force a distribution of new ip-addresses to your devices. Please google how to assign the ip-range on your router using your router brand. The default we accessible router configuration would be http://192.168.0.1. try that on your browser or check what it is from the manual and update accordingly..

Good luck!

Doctrine orm:convert-mappings errors on primary key

Doctrine error orm:convert-mappings

Doctrine orm error like above? I have been there.

The solution I am providing is not that great solution but it can keep you going for a while.

A tool for generating entities for doctrine orm from the database table without primary key might complain as:

has no primary key. Doctrine does not support reverse engineering from tables that don’t have a primary key.

From the code base search for DatabaseDriver.php file:

Go to DatabaseDriver.php

Search for reverseEngineerMappingFromDatabase method in the given file.

uncomment the the following part as follows

           //if ( ! $table->hasPrimaryKey()) {
              //  throw new MappingException(
                //    "Table " . $table->getName() . " has no primary key. Doctrine does not ".
                  //  "support reverse engineering from tables that don't have a primary key."
                //);
            //}

            //$pkColumns = $table->getPrimaryKey()->getColumns();

Add the following line

$pkColumns = array();

Then search for method getTablePrimaryKeys and comment everything inside it and return empty array.

The above method will remove the has no primary key. Doctrine does not support reverse engineering from tables that don’t have a primary key. error when using entity generation tool.

Mommy look.. Upgrading jQuery breaks live :(

If you have upgraded jQuery to 1.9 then you would have dreaded Uncaught TypeError: undefined is not a function would be barking at you on your javascript console.

The fix
According to the jQuery site, you would need to replace live with on

Say if you have:

$('.selector-class-name').live('click', function(){console.log('
Applications programming is a race between software engineers, who strive to produce idiot-proof programs, and the universe which strives to produce bigger idiots. So far the Universe is winning.
Rick Cook
')});

Then you would have to change this to the new version using on as follows.
*The current on will be passed the event owner as a parameter so, we have to have a way to know the parent of the event owner, in this case the object with class selector-class-name.
If we don’t know the parent we can implement body tag

$('parent-of-object').on('click', '.selector-class-name', function(){
Applications programming is a race between software engineers, who strive to produce idiot-proof programs, and the universe which strives to produce bigger idiots. So far the Universe is winning.
Rick Cook
});

This shall take care of the problem.