1. Ubuntu 15.10 is unavailable at the moment (30.01.2018 - see attachement - available_boot_disks.png)
2. "Before you click Create, you need to do one last thing. Click on "Management, disk, networking, access & security options" which will make expand to show some new options. Then under "Access & security", scroll down to the section called Cloud SQL and change the drop-down from "None" to "Enabled"."

It's moved to "Identity and API access"section. Under "Set access for each API" radio button in "Access scopes" group. (see attachement - cloud_sql_api_access.png)

Src:
https://livebook.manning.com/#!/book/google-cloud-platform-in-action/chapter-2/v-10/90

3. Since Ubuntu 16.04, PHP 7.0 has replaced PHP 5.x and become the default version of PHP in the official Ubuntu application repository.

I used the following command:
sudo apt-get install apache2 mysql-client php7.0-mysql php7.0 libapache2-mod-php7.0 php7.0-mcrypt php7.0-gd


Src:
https://livebook.manning.com/#!/book/google-cloud-platform-in-action/chapter-2/v-10/103
I think that the below statement is outdated :
"After that, you can do the same thing to your Cloud SQL instance, but keep in mind you don’t have the option to "stop" a Cloud SQL instance."

I can stop my Cloud SQL instance (see attachment).

Src:
https://livebook.manning.com/#!/book/google-cloud-platform-in-action/chapter-2/v-10/134
Turning off the VM using node:

const Compute = require('@google-cloud/compute');

const compute = new Compute({
    projectId: 'my-project-id'
});

function stopInstance(callback) {
    var zone = compute.zone('us-central1-b'); // vm zone
    var vm = zone.vm('learning-cloud-demo'); // your vm name
    vm.stop(function (err, operation, apiResponse) {
        callback('instance has been stopped');
    });
}

exports.main = cb => {
    stopInstance(cb)
};

if (module === require.main) {
    exports.main(console.log);
}
I found the same issue, so I moved to google-cloud library. Here is my code snippet (for Listing 1.9. script.js):

const Compute = require('@google-cloud/compute');

const compute = new Compute({
    projectId: 'my-project-id'
});

function getVmsExample(callback) {
  const options = {
    maxResults: 1
  };
  compute.getVMs(options, (err, vms) => {
    if (err) {
      return callback(err);
    }

    console.log('VMs:', vms);
    callback(null, vms);
  });
}

exports.main = cb => {
  getVmsExample(cb);
};

if (module === require.main) {
  exports.main(console.log);
}

Typo:

There is:
"The free trial gives you $300 to spend on Google Cloud over a period of 60 days".

Should be 365 days or 12 months smilie

I found it in mobi and livebook version.
Hi,

I've just started to read second chapter. I see that second chapter in mobi is different than second chapter in pdf version. Mobi version starts with below TOC:
- Review The Lexical Elements Of The Go Language
- Understand How Types and Variables Are Implemented
- Learn To Logically Control Program Flow
- Explore The Uncommon Features Of Functions
- Handle Exceptions And Don't Panic

Pdf version starts with below TOC:
- Reviewing A Comprehensive Go Program
- Declaring Types, Variables, Functions and Methods
- Launching and Synchronizing Goroutines
- Writing Generic Code Using Interfaces
- Handling Errors as Normal Program Logic

Further, chapter's content is also different. Pdf version doesn't contain text from mobi version and vice versa.

Message was edited by:
rafalgorzkowski
"Go in action" was updated in June but this mistake still exists in mobi file (v4).
In pdf file there is no such code example (there is no subsection "2.4.4 Pass By Value")
Mea culpa. I'm using ExtJs 4.0.7. RejectChanges was added to Store In ExtJS 4.1.3.

It's strange because rejectChanges was also in ExtJS 3.4 but in ExtJS 4.0.7 it was removed smilie

Message was edited by:
rafalgorzkowski
In listing 8.13 "Reconfiguring the PagingToolabr to include save and reject Buttons"
reject button has handler function which invokes rejectChanges function on employeeStore.

I looked in ExtJS documentation and I can't find rejectStore function in store class. I think that rejectChanges function is unavailable in ExtJS 4.

I'm newbie to ExtJS but I think there should be something like:

employeeStore.each(function(record) {
if(record.dirty) {
record.reject();
}
});

instead of rejectChanges.

Please correct me if I'm wrong.

Maybe someone knows better solution ?
Listing 8.7 "Create event handlers for our data grid":

1. doMsgBoxAlter function containst String.format(..). Should be Ext.String.format.
2. Last line in doRowCtxtManu function contains grid.rowCtxMenu.showAt(evtObj.getXY()) . Should be grid.rowCtxMenu.showAt(e.getXY())
In listing 8.6 "Buffered employee datastore" autoLoad property occurs twice. At first it is set to false, and next is set to true.
Last column (address) in listing 8.3 should have additional line with xtype:'templatecolumn'.
By default column is type of 'gridcolumn'.
In text below listing 8.2 there is description suitable to listing 8.2.

In text below figure 8.4 we can see sentence:
"A click on the State column would result in no sorting because we didn’t specify sort true as we did for the Full Name column." It is not true because sort property is set to true by default - http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.column.Column-cfg-sortable

Message was edited by:
rafalgorzkowski
In listing 8.2 "Creating an ArrayStore and building it to a Grip Panel" we can see 4 places marked with # but below code there is only 3 descriptions. Moreover, description #3 point to #4 place in code.

Message was edited by:
rafalgorzkowski
Chapter 7.4 contains sentence:
"This activates the example custom Writer I supplied in listing 7.5."

There should be listing 7.4 because Writer is supplied in listing 7.4 "The Employee Store".
There is a mistake in Listing 7.5. Field "departmentId" is incorrectly declared. It should contain "useNull" field config. Type of "departmentId" field is int, in which case the default value for the field is 0, unless you use the useNull field config.

Description of listing 7.5 contains information that there should be 2 errors after invoke validate method but this is impossible without "useNull"

The code should look similar to this:
{
name: 'departmentId',
type: Ext.data.Types.INTEGER,
useNull: true
}

Message was edited by:
rafalgorzkowski
In chapter 6.7.4 reader is encouraged to create file data.txt with content:
var x = {
success: true,
data: [
firstName: 'Jack',
...
]

"var x = " should be deleted.
In mobi v8 there are no figures from 6.5 to 6.19.
Instead of figures there are empty rectangles.
I confirm. Text after example is unsuitable for the listing 6.4

Message was edited by:
rafalgorzkowski
Additional in mobi v8 version:
- 'Apha only' field contains incorrect regular expression (wrong matching mode). Now it is "/[a-z]/I" but should be "/[a-z]/i"
- in last field 'Web Only with VTyp" missing apostrophe in msgTarget: 'side.
Exercie with replacing the left region section for listing 5.11 doesn't work because region property is set to 'left' value, and should be 'west' - http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Component-cfg-region
Please stop the spam activities of user ccanadaclothes http://www.manning-sandbox.com/profile.jspa?userID=39905
Sample from 5.11 listing doesn't work. Firebug prints error: "TypeError: comp is undefined" (ext-all-debug.js - line 85298 )
In line 85297 of ext-all-debug.js there is code 'comp = regions.center;'.

I think that there should be put in the 'center' region to the items property.
When I added 'center' region:
{
title: 'Center',
region: 'center'
}

it started to work.
W subsection 5.9 there is info that pack parameter accepts 3 possible values: start, left and end.
Instead od 'left' there should be 'center' -http://docs.sencha.com/ext-js/4-1/#!/api/Ext.layout.container.Box-cfg-pack

There you can be also add 'bottom' option in align parameter description - http://docs.sencha.com/ext-js/4-1/#!/api/Ext.layout.container.HBox-cfg-align

Message was edited by:
rafalgorzkowski
There is typo in Listing 5.7.
Example presents Column layout and in title has 'A Window with a Card layout" but should be "... Column layout"
I found the mistake in handleNav function in "Listing 5.6 The Card layout in action".
There is variable "numItems = myWin.items.getCount() -1" but should be simply
"numItems = myWin.items.getCount()" .

After listing block there is also sentence:
"Listing 5.8 details the creation of a Window, which leverages the Card layout". Tehre should be reference to listing 5.6

Message was edited by:
rafalgorzkowski

Message was edited by:
rafalgorzkowski
There are mistakes in listing 4.8 (mobi version):

- variable disabledTab repeated twice
- mistake in panel creation: Now is "var Tab Panel = new Ext.Tab Panel"
but should be " var tabPanel = new Ext.tab.Panel"

Message was edited by:
rafalgorzkowski
There is a mistake in updateFn function:

Ext.MessageBox.updateProgress(100, 'All Items saved!');

and should be:

Ext.MessageBox.updateProgress(1, 'All Items saved!');

Message was edited by:
rafalgorzkowski

Message was edited by:
rafalgorzkowski
This mistake still exists.