Bienvenue à un Admin-Système

Jean-Rémy D. vient de nous rejoindre. Il est admin-système chez Neos-SDI. L’infra c’est lui, Powershell, l’AD, les masters, le wifi, les backups, bref l’infra que tous les employés de Neos-SDI utilise, c’est lui ! Et ça ronronne. Il n’est pas copain avec le C (c’est lui qui le dit) mais il pratique le Powershell au quotidien ! Jean-Rémy est toujours étudiant mais il ne demande qu’à apprendre.

La troupe Infra s’agrandit avec Jean-Baptiste, Cédric et maintenant Jean-Rémy.

Sans les gars du système et de l’infrastructure, on ne pourrait pas bosser donc il vaut mieux les avoir dans la poche… ! 🙂

Les .NET Rangers ont 3 MVP

Nous avons ouvert le concept des Rangers à tous les produits et technologies Microsoft et même un peu plus, avec notre expert Bitcoin et développeur Go (Michel) et notre Architecte d’Entreprise (Jean-Noël) qui sont aussi des bons connaisseurs de la plateforme MS.

Mais nous avons aussi du lourd sur les technologies Microsoft avec 3 MVP:

 

MVP_Logo_Horizontal_Preferred_Cyan300_RGB_300ppi

Quand le code est clair, même le C++ est easy…

Voici la méthode GET de mon serveur HTTP REST fait en C++:

Il suffit d’extracter la variable request et le tour est joué… L’avantage du C++ c’est que le code généré est tellement efficace qu’il consomme peu de mémoire et est d’une rapidité extrème surtout en Release x64. Et ce n’est pas plus difficile que le C# ou le Java…

void MyServer::handle_get(http_request message)
{
	std::wcout << _T("handle_get") << std::endl;
	std::wcout << _T("Message") << _T(" ") << message.to_string() << endl;
	std::wcout << _T("Relative URI") << _T(" ") << message.relative_uri().to_string() << endl;

	auto paths = uri::split_path(uri::decode(message.relative_uri().path()));
	for (auto it1 = paths.begin(); it1 != paths.end(); it1++)
	{
		std::wcout << _T("Path") << _T(" ") << *it1 << endl;
	}

	auto query = uri::split_query(uri::decode(message.relative_uri().query()));
	for (auto it2 = query.begin(); it2 != query.end(); it2++)
	{
		std::wcout << _T("Query") << _T(" ") << it2->first << _T(" ") << it2->second << endl;
	}

	std::wstring request = CHelper::FindParameterInQuery(query, _T("request"));
	std::wstring server = CHelper::FindParameterInQuery(query, _T("server"));
	std::wstring port = CHelper::FindParameterInQuery(query, _T("port"));
	std::wstring name = CHelper::FindParameterInQuery(query, _T("name"));
	std::wstring dbname = CHelper::FindParameterInQuery(query, _T("dbname"));

	if (request == _VERB_REGISTER_NODE_)
	{
		std::wcout << _VERB_REGISTER_NODE_ << std::endl;

		if (MyServer::ExistsNode(server, port, name) == true)
		{
			std::wcout << _T("Node already registered !") << std::endl;
		}
		else
		{
			std::shared_ptr<WorkerNodeAttributes> pNode = std::make_shared<WorkerNodeAttributes>();
			pNode->_server = server;
			pNode->_port = port;
			pNode->_name = name;
			pNode->_dbName = _T("");

			g_Guard.WaitToWrite();
			_nodes.push_back(pNode);
			std::wcout << _T("Node registered !") << _T(" count: ") << _nodes.size() << std::endl;
			g_Guard.Done();
		}

		message.reply(status_codes::OK);
		return;
	}
		
	if (request == _VERB_SHOW_NODE_)
	{
		std::wcout << _VERB_SHOW_NODE_ << std::endl;
		MyServer::ShowNodes();
		message.reply(status_codes::OK);
		return;
	}
	
	if (request == _VERB_GET_NODE_ )
	{
		std::wcout << _VERB_GET_NODE_ << std::endl;
			
		std::shared_ptr<WorkerNodeAttributes> pObj = nullptr;

		g_Guard.WaitToWrite();

		for (auto itr = _nodes.begin(); itr != _nodes.end(); itr++)
		{
			pObj = *itr;

			if (pObj->_dbName == dbname) // && pObj->_isActive == true
			{
				// We find an existing entry
				*itr = pObj;
				break;
			}
			else if (pObj->_isActive == false)
			{
				// We find an entry
				pObj->_isActive = true;
				pObj->_dbName = dbname;
				*itr = pObj;
				break;
			}
			else
				pObj = nullptr;
		}
				
		if (pObj != nullptr)
		{
			GetNodeData data;
			data.ip = pObj->_server;
			data.port = pObj->_port;
			data.name = pObj->_name;
			data.dbName = dbname;

			std::wstring response = data.AsJSON().serialize();
			std::wcout << response << endl;

			message.reply(status_codes::OK, data.AsJSON());

			MyServer::SendDbName(data);
		}
		else
		{
			std::wcout << _T("No node available...") << std::endl;
			message.reply(status_codes::OK);
		}

		g_Guard.Done();

		return;
	}
		
	message.reply(status_codes::OK);
};

 

Suivez-nous sur Twitter @RangersNet

Notre compte twitter .NET Rangers utilise TweetDeck ce qui permet aux membres ayant déjà un compte twitter de tweeter sous le nom des .NET Rangers.

Ansi, tout le monde blog dans son univers. Mon ami Keelan (@KeelanClech) va nous retweeter pleins d’évènements de sa boutique Sogeti et Cédric (@enovatic) va nous parler de Windows Server et d’infra et de cloud. Et Frédo va nous expliquer comment il transforme son appz client lourd C Win32 en C++ MFC et une lib tierce de BCGSoft.

Allez, bons tweets ! Et vive les Rangers !

Le logo et les premiers membres

NETRangers

La communauté technique des .NET Rangers accueille des anciens membres Sogeti mais aussi des nouveaux et tout particulièrement des experts qui ne font pas de développement mais de l’infrastructure.

Comme dit JBB, à l’heure du DevOps, pourquoi dissocier apps et infra ?

Membres au 24/5: (updated !)

  • Jean-Baptiste B. – Sogeti/Cap Gemini – Région EST Strasbourg
  • Cédric G. – Sogeti/Cap Gemini – Région EST Strasbourg
  • Jean-Nicolas B. – Sogeti – Lyon
  • Guilhem M. – C-S – Toulouse
  • Cédric T. – Sogeti/Cap Gemini – Lyon
  • Keelan C. – Sogeti/Cap Gemini – Lyon
  • Eva D. – Neos-SDI – Paris
  • Frederic S. – Sydev – Précy sous Thil
  • Michel F. – Indépendant – Paris
  • Jean-Noël G. – Prymarys – Dijon
  • et moi, Christophe P. – Neos-SDI – Paris

Une fois que nous serons une petite dizaine de membres, il y aura une page membres avec une petite bio pour chacun. Pour le moment, la communauté se forme.

On est “under construction” ! Stay tuned !

Démarrage…

La notion de .NET Rangers date de 2010 et est le fruit d’une intiative de François MERAND pour la société Sogeti. Cette communauté comptait un noyau dur de consultants expérimentés sur le développement avec les technologies Microsoft .NET Framework.

Un Ranger est un expert communiquant : il possède un blog ou un site web, il fait des articles technique, il est speaker sur des évènements et il cherche à rester “on the edge”.

Les .NET Rangers v1 sont morts, vive les Rangers v2. Quels sont les changements ?

  • .NET Rangers n’est plus associé à Sogeti
  • C’est une communauté technique, une association où l’on partage des choses
  • Les membres ne font pas que du développement
    • il y a de l’infrastructure , du cloud et de la sécurité

Etre membre, ça oblige à quoi ? => A rien, vous recevez une invitation à être bloggeur (Author) sur le site wordpress et vous échangez ce que vous voulez et quand vous le voulez.

Si vous êtes partant, écrivez-moi !

christophepichaud@hotmail.com

MVP_blue