MongoDB tips

Change user password

db.updateUser(){ , { pwd: ""}}


My C# cheat sheet

Missing XML comment
Add to the Project properties > Build > Suppress warnings the value “1591“. Use “;” to separate values.

Visual Studio Post-Build command, this is the way:
if $(ConfigurationName) == Debug (
echo create doc
) else (
echo bye

SQL Server connection fails

– IDK: I don’t know
– Y: yes
– N: no

Which version is your SQL Server ?
– I don’t know
– 2016
– 2014
– 2005

Are you using an IP in the conenction string?
– Y
– N

Is the application that need to conenct on the same machine of SQL Server ?
– Y
– N

Are you using a Trusted conenction?
– Y
– N

Are you using “localhost” as server name?
– Y
– N

Do you know which connection string are you using?
– Y
– N

Are the TCP inbound/outboundport allowed for port 1433?
– Y
– N

The Login user in SQL Server is allowed to connect and login?
– Y
– N

+ A001: use “(local)” instead of “localhost”
+ A002: check this:
+ A003: use “(local)” or instead of the IP address
+ A004: check this settings in Server/Security/Logins/User/(right click)/Properties/(Status section)
[attach image]

Connection fail to SQL Server after a database restore


Restore SQL Server database X.
Try to conenct using the usual connection string. Conenction fail.

Delete the user in “Security” of SQL Server.
Delete the user from the “Users” of the database.
Create a new user in Server/Securit6y/Logins:
– User name: seelct a user that exists in the machine, ex.: \user
– leave everything unchaged
Create a user in the database in database/Security/Users:
– Login namne: seelct <achine\
– User name: select \
> Yes
< Do you use an IP address in the connection string?

in the database:
– User name: select / using hhe selector
– Login name:
– Default schema:
> No
Check the user defined in the Application Pool of the current web site
> No
> No

MVC API tests – manage unknown error raised by HttpServer

Scenario: integration tests against ASP.Net MVC API.
MVC version 5.2

Create a base class test to manage the repetitive API GET/POST calls like:

protected HttpResponseMessage Execute(HttpMethod method, string url, T data)
url = BASE_URL + url;

HttpRequestMessage request = new HttpRequestMessage(method, url);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

JsonMediaTypeFormatter formatter = new JsonMediaTypeFormatter();
formatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
if (method == HttpMethod.Post && data != null)
request.Content = new ObjectContent(data, formatter);

using (var server = new HttpServer(GetConfiguration()))
using (var client = new HttpClient(server))
var response = client.SendAsync(request).Result;
return response;


500. Internal server Error.

The server is set like this:
private HttpConfiguration GetConfiguration()
HttpConfiguration configuration = new HttpConfiguration();
//var dependencyResolver = new WindsorDependencyResolver(container);
//configuration.DependencyResolver = dependencyResolver;

// remove all HostAuthenticationFilter due to the error “no OWIN Authentication manager…”
foreach (var filter in configuration.Filters.Where(f => f.Instance is HostAuthenticationFilter).ToList())

return configuration;

mmhh… try to debug:
It enter in the ApiController, get the data from the REpository and it exit from the class with a nice colelction of data… what is wrong ???

Routing is ok, it is actually passing the request to the right controller.
Injection of repositories is ok, it is fetching and returning data.
Log4Net is ok, I’m not calling the “log4net.Config.XmlConfigurator.Configure();” without a proper configuration in app.config.

Adding “configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;”
is absolutely useless for this problem.

What to do now?

I’ll check one of 2 or 3 previous project where I’ve already done this a where I spent 1,2 or 7 days to figure out this ALL THE TIMES fucking problem !

What I think is wrong in Python vs returns a datetime WITH the time part. returns a datetime WITH the time part.
from datetime import datetime
now =
today =

In other languages today is used to return a date time WITHOUT the time part.

datetime.datetime(2017, 6, 24, 21, 11, 27, 374230)
datetime.datetime(2017, 6, 24, 21, 12, 1, 166053)

filter(filter_rule, collection) vs filter(collection, filter_rule)

filter(lambda x: x > 1, []) is Correct.
filter(lambda x: x > 1, []) is Wrong.

I expect to have filter(what, how), that means filter(collection, filter) followinth the “pattern” Object.Action.
I think the form filter(collection, filter_rule) is more intuitive.

%y %m %d is embarassing

Every time I have to parse or format a string to a date I need to read the documentation carefully.

Paypal exchange rate

I recently made some payments with paypal that requires the GBP currency.
I have added the GBP currency to my Paypal account.
I have a debit and a credit card in GBP currency (HSBC) that I use everyday.
I was not able to add these cards to Paypal. The process return the error “This card is not accepted. Please use a different card”.

I noticed that Paypal apply a particular disparaging exchange rate.
I usually use this site, that is more accurate of Google.
I concede they can use a little different exchabge rate, just enough to not loose money, but these differences seems exagerate to me.

Date Paypal Google Paypal diff
12 Jan 2017 0.81837 0.85198 8.85 + 3.94 %
10 Jan 2017 0.8196 0.85181 0.85 + 3.78 %

To calculate the percentage difference I used this formula:
Diff % = ((official_rate-paypal_rate) / official_rate) * 100

GIT Merge vs Rebase


When you merge a branch into another you apply both the changes done in the two branches to the final one.
In the picture example there is a merge of the changes in C4 and C5 resulting in C6.
It is a 3 way merging because it involves the common origin commit C3.


When you rebase a branch on another you apply the specific commit of the branch on the one you are.
In the picture example the changes in C5 are reapplied to the commit C4 resulting in C5.


The result of the two operations is the same.
The goal to use Rebasing is to have a cleaner history of the changes, as they appear executed sequentially instead of in parallel.

My 2 cent

Imagine this situation.
You have done 10 changes on a branch called “Create modal dialog for new Order”.
You rebase the commits of this branch on the master branch.
For the commit “Add form validation on save button click” how someone can understand which “save” button you are talking about ?
If the reabase put all the commits under the main branch how can I see the work done for a specific feature/bug ? Detaching the commits from a specific branch seems a loose of information to me.


Microsoft ASP MVC 5

In MVC 5 Microsoft introduced the Attribute Routing functionality.
With it defining the Route for an Action become immediate and there is the advantage to be more safe when you change a routing, you cannot break previous routing rules.
To enable it you have to call the MapMvcAttributeRoutes() method on the RouteCollection.

Constraints on parameter type become more simple to define.
You can define optional parameters and default values more simply too.

Another feature I use all the time is the RoutePrefix: you can define the “controller” segment on the router only on the Controller definition, making more simple and readable changing the routes on the Actions.

You can continue to restrict the HTTP verbs allowed for an Action using [HttpGet], [HttpPost] and [AcceptVerbs]. This permits to have the same URL route for different Actions; for example you can request for the existence of a file (using HEAD) and to downlod the file (using GET) using the same URL.

[Route("Ping"), AcceptVerbs("Head", "Get")] 
public ActionResult Ping() {     return Content("pong (" + Request.HttpMethod + ")"); 





Set authentication on mongoDB

By default mongoDB access is public.
This is my note on setting up authentication, it is referred to mongoDB v 3.0.6 on Windows.

The command line parameter to start the service with authentication is:


(I’m sorry for all this space for writing two dash and a word but this shit of WordPress make it impossible in other ways)

From the same server you can connect to a database that is started with –auth but just for set up configuration (in older versions you could do more things).
You can create a user with the command db.createUser(…).
If you had just been connected you will receive an error which say you don’t have authorization.
You MUST change the current database to “admin” (use admin).
Now you can create a user, but just only one!

1) If you create a user without a password you are fucked.
2) If you create a user in the admin database you are fucked.
3) If you create a user without admin roles you are fucked.

Create that user and give it the “userAdmin” (or userAdminAnyDatabase or dbOwner).
After you have correctly created the user you must reconnect with authentication to create more user and in general to manage roles.
In the current session you cannot do nothing else.
You cannot create, update, delete user neither see users (with show users command).

To connect with authentication use the -u, -p and -authenticationDatabase parameters.


mongo localhost:27123 -u <username> -p <password> -authenticationDatabase admin

Reference on mongoDB DOCS



Q. Which permissison and roles are needed for execute show users command?