Monchique, outra vez

Fui ontem a Monchique almoçar para ajudar a economia local a recuperar da tragédia do incêndio. Vai ser uma tragédia para o turismo e, por isso, precisam de toda a ajuda que pudermos dar.

Ao andar por aquelas montanhas percebi o trabalho exemplar da Proteção Civil. Os aglomerados populacionais – às vezes apenas 3 ou 4 casas – foram salvaguardados. Ardeu tudo em volta, mas os sítios – nome pelo qual os pequenos aglomerados são conhecidos na serra e barrocal algarvios – saíram ilesos. Há algumas casas isoladas que foram queimadas, mas aí também a Proteção Civil agiu de forma omnisciente: deixou arder edificações pontuais, que iriam exigir demasiados recursos necessários noutros locais, necessários para a estratégia global.

Estamos bem preparados para a guerra.

O lado obscuro da minha passagem pela serra foi o constatar que, da zona não ardida, metade das árvores são eucaliptos, e a percentagem de pinheiros é grande também. Espera-se, então, mais um novo fogo calamitoso para muito breve.

Espanha, um país de porcos

Espanha – um país de porcos

“Há cerca de 50 milhões de porcos em Espanha, mais 3,5 milhões do que a população daquele país, de acordo com dados divulgados pelo Ministério da Agricultura e Pesca, Alimentação e Ambiente espanhol, que também revelam que houve um aumento de cerca de nove milhões de suínos desde 2013.” in DN


Curiosamente, ainda ontem fotografei uma autocaravana espanhola a despejar o esgoto no parque de estacionamento de uma praia, aqui em Portugal.

Mostrei a foto um um dos novos caralhos que se dispôs logo a defender os espanhóis, mesmo sem os conhecer. “Isso é o ar condicionado”, dizia ele. Mas então mostrei-lhe melhor o tubo do esgoto, por onde esta nojeira saía e ele calou-se.

A ciência ao serviço das trevas

Antes de ontem, no rescaldo do fogo de Monchique, vi um programa de informação na TV, onde estavam dois comentadores. Um deles era cientista, o outro não sei.

O cientista falava bem, de forma segura e convincente, mas era um aldrabão, um aldrabão científico. Um aldrabão que pôs a Ciência ao serviço das trevas.

Começou por dizer que a percentagem de eucaliptos na zona era de 45%, e não da ordem dos 70% como se tinha falado. Mas não disse a que zona se estava a referir, Se à zona ardida, se aos concelhos afetados, à totalidade dos concelhos incluindo o barrocal e o litoral, ou apenas à zona de serra, ou a todo o Algarve.

Depois disse que as várias espécies arderam na mesma proporção que existem no terreno, ou seja, das espécias ardidas, os eucaliptos eram exatamente 45%. E disse-o, enfatizando o facto de que as outras espécies também ardem. Nomeadamente, e isto digo eu, azinheiras, medronheiros, etc. Não falou dos pinheiros, que são resinosas e ardem tão depressa como os eucaliptos. Se tivesse apresentado a soma das percentagens das duas espécies, a coisa teria sido diferente.

Nas imagens que vi na TV durante toda a semana do incêndio, quando mostravam fogo, só vi eucaliptos e pinheiros. São os precursores do fogo: sem eles não há fogo, ou, pelo menos, não há fogo que resista aos bombeiros.

Mas voltando ao “cientista”. Também não falou da rapidez com que umas e outras árvores ardem. Estava nitidamente a defender os eucaliptos. Um fogo com eucaliptos e pinheiros move-se mais depressa, propaga-se à distância.

As folhas dos eucaliptos voam a arder para pegar fogo mais longe. O meu tio, que mora junto da albufeira de Castelo de Bode, viu folhas de eucalipto a voarem em chamas e a passarem a albufeira de um lado ao outro, cerca de 500 metros, levando o fogo à outra margem.

Ainda hoje foi publicada uma notícia no DN que diz que os bombeiros em Marvão usaram folhas de castanheiro, como tapete, para taparem o fogo e passarem por cima dele. “Custam mais a arder”, referiu Paulo Fernandes, docente da Universidade de Trás-os-Montes e Alto Douro.

Havemos de ultrapassar esta tragédia dos fogos intermináveis. Mas precisamos de “exportar” os cientistas vergohosos para um deserto qualquer, para se liofilizarem.

IIS e SQL Server

Como disse na crónica anterior, a Microsoft está sempre a mudar a forma de trabalhar, os processos de comunicação, as configurações dos programas e dos sistemas, tudo.

Depois de instalar o Windows 2012 Server, com IIS e SQL Server Express, criei uma aplicação em C# para Web, no Visual Studio e tentei fazer o deployment para o servidor.

O SQL Server estava a funcionar, e conseguia aceder a ele localmente e remotamente, através do SQL Server Management Studio. Algumas pistas da forma de configurar este ambiente, estão na tal crónica anterior.

Criei uma base de dados simples, para teste, e conseguia aceder a ela, modificá-la, local e remotamente. Para isso tive que abri o porto 1433 em TCP, nas firewalls de Linux que ficam entre as máquinas Windows. No entanto, a aplicação Web C# não conseguia aceder à BD.

Quando escrevi a 1ª edição do meu livro Linguagens WEB, a Microsoft tinha acabado de lançar a primeira versão do dotNet. Usei as strings de ligação (connection strings) e as configurações dos sistemas de então. Mais tarde, na 4ª edição, tive que mudar tudo, pois a Microsoft decidiu alterar uma série de coisas, inclusive o nome da máquina local, que por vezes é localhost, outras vezes é (local), é como lhes apetece. Mas as strings de ligação à BD e as configurações também mudaram nessa altura. Além disso, passou a existir um servidor IIS Express no Visual Studio, para que os deployments não fossem feitos logo no servidor de produção, e assim, poder-se fazer debug.

Agora, mudou tudo outra vez: strings de ligação, formas de autenticação, utilizadores do sistema, configurações, e por aí fora. Ficam aqui registadas as configurações necessárias para fazer o deployment local (no IIS Express) e remoto (no IIS de produção). Na minha configuração, decidi ter apenas uma base de dados no servidor de produção, portanto, tanto o IIS de produção, como o virtual acedem à mesma BD.

A configuração é a seguinte: no Windows Server 2012, está o servidor Web (IIS) de produção e a BD (SQL Server Express); na máquina de desenvolvimento, está o Visual Studio, com um IIS Express.

No ficheiro Web.Debug.config, coloquei a seguinte string de ligação:

<connectionStrings>
<add name="BD"
connectionString="Data Source=192.168.4.201\SQLEXPRESS;Initial Catalog=escola;User Id=sa;Password=Pass-xxxx"
providerName="System.Data.SqlClient" />
</connectionStrings>

No ficheiro Web.Release.config, coloquei a seguinte string de ligação:

<connectionStrings>
<add name="BD"
connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=escola;Integrated Security=SSPI"
providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>

A ligação no Web.Release.config pode ser feita através de autenticação integrada, pois os dois servidores (IIS e SQL Server) estão na mesma máquina. O mesmo já não acontece no Web.Debug.config, pois o IIS Express está a correr na máquina de desenvolvimento e tem que aceder à BD remotamente, por isso precisa de usar credenciais de autenticação: nome de utilizador e password.

Mas as coisas não são assim tão simples. É necessário que o SQL Server aceite estas dusa formas de autenticação, para permitir o acesso aos dados.

Na versão anterior destas confusões, desculpe, configurações da Microsoft, havia um utilizador IUSR_<máquina> que era responsável pelo IIS, e bastava autorizá-lo junto do SQL Server. Agora tudo mudou. E provavelmente vai mudar de novo daqui a 2 ou 3 anos. Mas continuemos.

Configurar o SQL Server para aceitar pedidos locais do IIS

Para conseguir chegar a esta configuração, os dois sites seguintes foram fundamentais:
Configuring IIS, ASP.NET, and SQL Server
Add IIS 7 AppPool Identities as SQL Server Logons
O primeiro diz como configurar corretamente um utilizador para aceder ao SQLEXPRESS, mas falha no Login name. O segundo diz qual é o login name, que no meu caso foi: IIS APPPOOL\DefaultAppPool

Eis a lista de instruções. De notar que o utilizador está errado: não é NT AUTHORITY\NETWORK SERVICE, mas sim IIS APPPOOL\DefaultAppPool, como indica o 2º site.

Adicionar o utilizador à lista de utilizadores com permissões

Open SQL Server Management Studio (shortcut: Start -> Run -> ssms)
Connect when prompted.
Expand Security and then expand Logins.
If you don’t have the network service listed (should be NT AUTHORITY\NETWORK SERVICE):
Right-click on the Logins folder and select New Login.
At the top, in the ‘Login Name’ field, enter NETWORK SERVICE. If it refuses to accept that, try entering NT AUTHORITY\NETWORK SERVICE.
Now select the Server Roles tab on the left.
You can tick any role you like, but for me I will give it ‘public’ access.
Now select the User Mapping tab on the left.
Tick all the databases you want to allow this service account to access.
In the Schema column for each selected database, set the value to dbo (or whatever schema you are using in your database).
Then, select one database row at a time and set the following permissions for it:
db_datareader
db_datawriter
public
Now click OK.
If you do have the network service account listed, edit that login entry and then follow steps (5 – 9) above.

Autorizar o acesso a uma BD

Expand Databases on the left.
Expand the Security folder and then expand Users.
The service account should be listed there. Right-click and Properties on the service account (for us, NT AUTHORITY\NETWORK SERVICE).
Select the Securables tab on the left.
Click on the Search button.
Select ‘Specific Objects’ and click OK.
Now click the Object Types button.
Scroll down and tick Schemas. Click OK.
In the textbox below, enter the schema you are giving access for (the same as Step 7 above). In our case, it will be dbo. Click OK.
At the bottom, select all the permissions you want to give for that database. In my case, I need quite extensive access to my database so I will be selecting these permissions:
Alter
Control
Create Sequence
Delete
Execute
Insert
References
Select
Update
Now click OK.

E aqui vai a correção à primeira caixa (nome correto do utilizador do IIS)

In SQL Server Management Studio, look for the Security folder (the security folder at the same level as the Databases, Server Objects, etc. folders…not the security folder within each individual database)
Right click logins and select “New Login”
In the Login name field, type IIS APPPOOL\YourAppPoolName – do not click search
Fill whatever other values you like (i.e., authentication type, default database, etc.)
Click OK

Para o acesso remoto, através do IIS virtual, a página seguinte foi fundamental, principalmente a 2ª resposta:
SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified

“Every time a client makes a connection to SQL Server named instance, we will send a SSRP UDP packet to the server machine UDP port 1434.”
Make sure the SQL Browser service is running on the server.
If the firewall is enabled on the server, you need to put sqlbrowser.exe and/or UDP port 1434 into exception.

Foi necessário pôr a correr, em modo automático, o serviço SQL Server Browser, abrir o porto 1434 em UDP, na firewall do Windows Server e dos sistemas Linux intermédios.

Já agora, fica aqui o resto do código da aplicação

Default.aspx

<%@ Page Language="c#" AutoEventWireup="false" Codebehind="Ola.aspx.cs" Inherits="ola.Ola"%>
<% ola.Ola t = new ola.Ola(); %>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h1>Teste</h1>
<p>Mensagem: <% Response.Write(t.Message); %></p>
<p>IPv6: <% Response.Write(t.IPv6); %></p>
<p>IP: <% Response.Write(t.IP); %></p>
<p>Data: <% Response.Write(t.date); %></p>
<p>Connection String : <% Response.Write(t.conString); %></p>
<p>Dados: <% Response.Write(t.dados); %></p>
</body>
</html>

Ola.aspx.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

namespace ola
{
    public class Ola : System.Web.UI.Page
    {
        public string Message;
        public string IPv6;
        public string IP;
        public string date;
        public string dados;
        public string conString;
        private SqlConnection ligacao;

        public Ola ()
        {
            Message = "Aplicação de teste";
            IPv6 = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString();
            IP = HttpContext.Current.Request.Params["HTTP_CLIENT_IP"] ?? HttpContext.Current.Request.UserHostAddress;
            date = DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm zzz");
            
            System.Configuration.Configuration rootWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/wwwroot");
            System.Configuration.ConnectionStringSettings connString;
            connString = rootWebConfig.ConnectionStrings.ConnectionStrings["BD"];
            conString = connString.ConnectionString;
            dados = "";
            ligacao = new SqlConnection(conString);
            try
            {
                ligacao.Open();
                String sql = "SELECT * FROM aluno";
                SqlCommand comando = new SqlCommand(sql, ligacao);
                using (SqlDataReader dbDados = comando.ExecuteReader())
                {
                    while (dbDados.Read())
                    {
                        dados += dbDados.GetString(1) + ", " + dbDados.GetString(2) + ";";
                    }
                }
                ligacao.Close();
            }
            catch (Exception e)
            {
                dados = "ERRO: " + e.Message;
            }
        }


    }
}

E o resultado

Teste
Mensagem: Aplicação de teste
IPv6: fe80::7c07:5225:9e81:8b40%12
IP: 192.168.0.54
Data: 12/08/2018 20:27 +01:00
Connection String : Data Source=localhost\SQLEXPRESS;Initial Catalog=escola;Integrated Security=SSPI
Dados: Maria, Lisboa;João, Porto;

Mariposa-esfinge-colibri

Apareceu um bicho estranho no meu jardim, de roda das flores, com o comportamento de um colibri, mas com o formato de um inseto grande.

é uma mariposa-esfinge-colibri (Macroglossum stellatarum) é uma espécie de insetos lepidópteros, mais especificamente de traças, pertencente à família Sphingidae.

Tem uma probóscide (um apêndice bucal tipo tromba) com que acede às flores, bate as asas rapidamente, e move-se como um colibri, como eu já disse.

Nunca os tinha visto, ou pelo menos nunca me tinham chamado a atenção. Perguntei na net@ a uns amigos, que me disseram que costumam aparecer com o calor.

Fica aqui o registo, para eu não me esquecer.

Desorientação em Monchique

Bombeiros profissionais dizem que “ninguém se entende” e pedem mudança de estratégia

Os bombeiros são peões, não são estrategas, por isso não entendem nada, nem têm nada que entender. Se o vento muda, ou se acabam de combater o fogo num local e ele avança para outro lado, é óbvio que têm que mudar de sítio. Nestas coisas não pode haver muitas cabeças a pensar, senão é o caos.

Os bombeiros só vêm o mundo deles. Os chefes vêm tudo. Basta que haja um reacendimento num sítio crítico, para que os chefes mandem os bombeiros de volta para trás. E aí, os coitados dos peões – cansados, é óbvio, e por isso, menos resistentes ao stress – começam a mandar bocas, sem saber o que dizem.

Na guerra – e isto é uma guerra – isso dá no mínimo prisão, mas na maior parte dos casos, execução sumária.


Um chefe, um comandante de operações deve ouvir toda a gente. Ouvir o IPMA, ler cartas geográficas, ler imagens de satélite, saber onde está a água, saber que meios tem disponíveis, saber para onde enviar a frota de aviões, onde estão os aviões, conhecer todos os caminhos, seja pelas cartas, seja pelos bombeiros.

Os bombeiros não mandam, são mandados. Isto é um trabalho de equipa, não pode haver soldados a dar tiros para onde lhes apetece.

E essa coisa dos bombeiros conhecerem o terreno é mentira. É fácil acreditar nisso mas é mentira. Os bombeiros são, na maior parte, voluntários que recebem formação sobre fogos. Não estudam as cartas militares dos milhares de km2 dos seus concelhos, e também não andam a gastar gasóleo, todos os dias de manhã à noite a “conhecer o terreno”. São voluntários: só aparecem no terreno quando há fogos. Há muitos caminhos no barrocal algarvio, no sítio do meu pai, que eu duvido que os bombeiros conheçam. Nem os caminhos, nem o terreno.

Em geral, ao longo do ano, os bombeiros acorrem a situações de pequena dimensão, onde a coordenação é feita dentro da própria equipa. Daí terem a sensação de que, sozinhos, resolvem tudo.

Os bombeiros profissionais que se queixaram deviam estar calados, pelo mesmo motivo: porque sozinhos não resolvem nada. E é isso que eles não aceitam: orgulho ferido, a iniciativa própria que lhes é roubada, sensação de impotência. Claro, e depois reclamam.

Quem dá a orientação é quem vê o quadro todo, e não quem vê apenas uma parte.

Incêndio de Monchique

Não é fácil. É uma floresta cerrada, com montanhas e escarpas terríveis, cheia de eucaliptos e pinheiros.
Por um lado – e desculpem que eu diga isto – ainda bem que ardeu. O fogo vai parar daqui a 2 dias. Por um lado, porque o vento para, por outro lado, porque acabam estas espécias combustíveis.
Passa a haver apenas amendoeiras, alfarrobeiras, figueiras e oliveiras, que ardem mais devagar.
A minha casa é pouco depois de Alte, falta pouco, mas não vai chegar lá. Não sei se souberam o que se passou.
Na 5ª feira houve um ateamento e apagaram de imediato, mas o tipo não ficou satisfeito e foi pegar outra vez em vários sítios mais difíceis.
E quem é ele, ou eles? Da oposição: PSD e/ou CDS? Mercenários do Trump? Bombeiros? Madeireiros? Empresários dos helicópteros?
Quem quer que sejam, por mim eram torturados: cortar-lhes uma falange por dia, e estancar o sangue com sal; lambuzar-lhes os pénis (porque são homens, de certeza) com doce e dar de comer aos ratos; trinchar-lhes as orelhas devagarinho, com tesouras de podar; encher-lhes os olhos com estearina fervente; arrancar-lhes os cabelos aos punhados; furar-lhes as orelhas com ferros em brasa; abrir-lhes o abdómen com uma lâmina, puxar-lhes o intestino e deixar que as ratazanas se deliciassem; até morrerem.
Para lutar contra estes tipos, temos que pensar que estamos em guerra e gastar os recursos do país só nisto, como se fosse uma guerra contra o mundo. Não é fácil.

Windows Server 2012

Trabalhar com ferramentas Microsoft é uma aventura. Mas uma aventura tipo pesadelo, tipo Assalto à 13ª esquadra, do Carpenter, ou algo do género.

Trabalho com Linux há mais de 20 anos, e raramente tenho problemas destes. Aquilo que se aprende em administração de sistemas Linux, dura anos, ou décadas: as mudanças radicais são raras. Em Windows, ao invés, mudam sempre que sai um sistema novo.

Estou a configurar um Windows Server 2012 R2, e é diferente do que eu tinha antes, o 2008. Aliás, é sempre tudo completamente diferente. Está tudo, sempre, em sítios diferentes… O que vale é que na net@ respondem a estas dúvidas todas, porque milhares já as tiveram.

Ao tentar ativar o IIS, deu erros de instalação, sem mensagens detalhadas. Dizia apenas que falhou. Eis o que aconteceu. Consultei um site na net@ que explicava que parâmetros devia ativar. Selecionei-os todos e premi o botão “Install”. Deu erro. Voltei ao início e tentei instalar um item de cada vez, para tentar perceber qual deles tinha gerado o erro: já não deu erro e consegui instalar todos.

A solução para ativar o IIS, tirei-a daqui: Enabling IIS and required IIS components on Windows Server 2012/2012 R2. Os passos são os seguintes:

  1. Open Server Manager and click Manage > Add Roles and Features. Click Next.
  2. Select Role-based or feature-based installation and click Next.
  3. Select the appropriate server. The local server is selected by default. Click Next.
  4. Enable Web Server (IIS) and click Next.
  5. No additional features are necessary to install the Web Adaptor, so click Next.
  6. On the Web Server Role (IIS) dialog box, click Next.
  7. On the Select role services dialog box, verify that the web server components listed below are enabled. Click Next.
  8. Verify that your settings are correct and click Install.
  9. When the installation completes, click Close to exit the wizard.

Como esta máquina vai correr como máquina virtual, em modo headless, preciso de aceder a ela através do Remote Desktop Connection. Também aí deu erro. Depois de configurar o servidor, para aceitar ligações, de configurar a firewall desse servidor, assim como as firewalls de dois gateways Linux que estão pelo meio, ao ligar-me obtive o erro seguinte: “Remote Desktop Authentication Error Has Occurred. The function requested is not supported”. Impenetrável. Mas vá lá, na TecNet tinham uma solução. Funciona, mas é uma solução de brincadeira. Configuramos tudo o que é necessário e que está nos manuais, e depois, se queremos que o sistema funcione, temos que dar o chupa-chupa ao cão.

Neste caso, foi necessário, na máquina local (o cliente), autorizar o próprio protocolo do RDC, pois este é vulnerável a determinado tipo de ataques! Fantástico. A Microsoft usa um protocolo vulnerável e, em vez de o corrigir, inativa-o. Segue a solução

Correr: gpedit.msc
Ir a Computer Configuration -> Administrative Templates -> System -> Credentials Delegation -> Encryption Oracle Remediation
Abrir - Encryption Oracle Remediation, escolher Enable, alterar Protection Level para Vulnerable e premir Apply.

Aproveito e deixo aqui – para não me esquecer e poder configurar as firewalls do Linux – informação sobre os portos que é necessário abrir para aceder ao SQL Server da Microsoft: Configure the Windows Firewall to Allow SQL Server Access.

SQL Server default instance: 1433, em TCP
SQL Server named instances (é necessário fixar): 1434, em UDP
Dedicated Admin Connection: 1434, em TCP
SQL Server Browser service: 1434, em UDP
SQL Server instance running over HTTP(S): 80 ou 443, em TCP
Service Broker (confirmar com query): 4022, em TCP
Database Mirroring (confirmar com query): 5022 ou 7022, em TCP
Replication: 1433, em TCP
Transact-SQL debugger: 135, em TCP

Fica também o aviso de que é muito provável que a instalação Custom do SQLServer Express pendure. Depois de 2 horas à espera num ecrã parado, num aparente fim de instalação, fui à net@ e vi muitas queixas de pessoal que quis fazer instalações personalizadas. Vou tentar a instalação Basic e depois acrescento itens um a um. Que perda de tempo. Grande Microsoft.
(…)
E assim foi: a instalação Basic demorou 5 minutos. Os outros itens demoraram um pouco mais, alguns também emperraram e não me deram oportunidade de configurar tudo o que queria. Mas eu também não espero muito mais do que isto da Microsoft.
(..)
E isto é uma saga. Na documentação da Microsoft, dizem que o SQL Server corre no porto 1433. Configurei as firewalls todas para deixarem passar os pacotes para este porto, mas não conseguia comunicar com o SQL Server. Afinal o servidor está a escutar um porto dinâmico, e, além disso, nem sequer tem o protocolo TCP ativo.
Ainda precisei das configurações que encontrei neste artigo – Configuring a SQL Server for Remote Connections – para conseguir pôr o SQL Server acessível remotamente. Fica aqui um resumo, com alguns erros corrigidos (as figuras terão que as ver no site original):

A. Enabling Remote Connections on the Instance of SQL Server

First, you will ned to enable remote connections on the instance of SQL Server that you want to connect to from a remote computer.

1) Open & Login SQL Management Studio. Right-click on the server name in the Object Explorer and select “Properties” to access the Server Properties Window.

2) In the left pane of the Server Properties Window, select “Connections” and under “Remote Server Connections”, check the box next to “Allow remote connections to this server.” Click OK.

B. Configure SQL Server to Listen on Static Port

1) Open the SQL Server Configuration Manager and click on “SQL Server Services” in the left pane.

2) In the center, you will see a column that lists the Process ID for each running service. Look for the Process ID in the row for the SQL Server. Identify the port that the PID is listening on by typing the following into a command prompt: netstat -ano | find /i “PID-Number_of_SQL-Server”. In the example based on figure 3, you would type the following into the command prompt: netstat –ano | find /I “NUMBER”. For an example, please see Figure 4 below.

3) By default, the TCP/IP protocol is disabled and must be enabled. If you do not enable the TCP/IP protocol, there will be no results from the command executed in step 2. To enable the TCP/IP protocol, go to the SQL Server Configuration manager and click on “SQL Server Network Configuration”. Right click on the “TCP/IP” protocol and select “Enable”.

4) Restart the SQL Server service and identify the Process ID assigned to the SQL Service.

5) In the command prompt, execute the following command: netstate –ano | find /i “PROCESSID”. In the example below, the command would be: netstate –ano | find /i “NUMBER”. Results should be seen as below in Figure 7.

6) Return to the SQL Server Configuration Manager. Click on “SQL Server Network Configuration” in the left pane and right-click the “TCP/IP” protocol and select “Properties”. Go to the “IP Addresses” tab and scroll down to the IPALL section. Remove the value for TCP Dynamic Ports (leaving it blank) and enter the port 1433 for TCP port.

7) Restart the SQL Server Service, identify the new process ID assigned to the SQL service. In the command prompt, execute the following command: netstate – ano | find /i “3948”. Results should be displayed as shown in Figure 9 below.

8) The SQL Express is now configured to listen on standard port 1433.

C. Turn On the SQL Server Browser Service

1) Open the SQL Server Configuration Manager. Click on “SQL Server Services” in the left pane and right click on “SQL Server Browser Service” and click “Properties”.

2) In the SQL Server Browser Properties Window, click on the “Service” tab. Under the “Start Mode” option, change the start type to “Automatic”. Click “Apply”.

3) In the SQL Server Browser Properties Window, click on the “Log On” tab. Click the “Start” button to start the SQL Browser Service.

4) In the SQL Server Browser, confirm that the service is running as shown in figure 13.

Note: According to SQL Server Hardening best practices, the SQL Server Browser service should be disabled. This service is typically not required. The SQL Server Browser service responds to requests for SQL Server resources and redirects the caller to the correct port. Keeping the Browser service disabled will remove the redirector as an attack vector, helping to obscure the correct entry ways into your SQL Server components.

D. Configure the Firewall to Allow Network Traffic Related to SQL Server and the SQL Server Browser Service

In Windows Firewall, four exceptions must be configured to allow access to the SQL Server.

1) A port exception for TCP Port 1433. In the new Inbound Rule Wizard dialoag, use the following information to create a port exception:

Select “Port”
Select “TCP” and specify port “1433”
Allow the connection
Choose all three profiles (Domain, Private, and Public)
Name the rule “SQL – TCP 1433”

2) A port exception for UDP Port 1434. Click the New Inbound Rule Wizard dialog and use the following information to create another port exception:

Select “Port”
Select “UDP” and specify port “1434”
Allow the connection
Choose all three profiles (Domain, Private, and Public)
Name the rule “SQL – UDP 1434”

3) A program exception for exe. Click the New Inbound Rule Wizard dialog and use the following information to create a program exception:

Select “Program”
Click “Browse” to select “sqlserver.exe” in the following location:

C:\Program Files\Microsoft SQL Server\MSSQL11.\MSSQL\Binn\sqlservr.exe where is the name of your SQL instance.

Allow the connection
Choose all three profiles (Domain, Private, and Public)
Name the rule “SQl – Sqlservr.exe”

4) A program exception for exe. Click the New Inbound Rule Wizard dialog and use the following information to create another program exception:

Select “Program”
Click “Browse” to select sqlbrowser.exe. By default, it is located in the following location:

C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

Allow the connection
Choose all three profiles (Domain, Private, and Public)
Name the rule “SQL – sqlbrowser.exe”


Entretanto, por duas vezes não consegui desligar o IIS usando o IIS Manager. Tenho andado a fazer alterações na configuração e já tive que desligá-lo várias vezes. Isto nunca me aconteceu com o Apache, com o qual trabalho há mais de 15 anos. O Apache desliga-se sempre. O IIS neste Windows 2012, com o qual trabalho há 2 dias, já vai em 2 vezes que se recusa a desligar-se. Tive que desligar a máquina. Entretanto, disseram-me para experimentar desligá-lo na linha de comando para ver se recebo alguma informação sobre o problema. O comando é o seguinte:

net stop iisadmin /y

Parvas e perigosas

Chegámos a agosto e chegaram também as notícias parvas; mas também algumas notícias perigosas, ou de situações perigosas.

Mais turistas no Porto aumenta serviços sexuais e risco de infeções

Só no Porto é que há putas? O Porto é a cidade das putas? Sim ou não? Se não, então tenham cuidado com o que escrevem. Se sim, viva a capital do putedo!

Qanon: o bando que ataca jornalistas nos comícios de Trump

O Trump sempre a inovar: conseguiu mobilizar uma trupe de bandalhos que espanca os jornalistas do contrapoder. O resultado vai ser sempre mau: ou deixam de fazer jornalismo; ou deixam de ser um contrapoder; ou passam a adular o Trump, deixando de haver oposição. Em qualquer dos casos, isto assemelha-se muito à criação de um ambiente totalitário precursor de uma guerra generalizada.

Um perigo chamado drone

Nicolás Maduro foi sobrevoado por drones carregados de explosivos. Os drones são cada vez mais pequenos e precisos, e, eventualmente, indetetáveis. Num futuro muito próximo, os drones comerciais vão poder carregar armas de precisão e disparar, sem falhar, sobre os alvos pretendidos. Algo que eu já previ há 6 anos atrás.

Os novos caralhos

Os emigrantes portugueses em França, dos anos 50 e 60, eram conhecidos pelos “carrálhos”, porque andavam sempre com o “caralho” na boca. Na maioria, tornaram-se pedreiros e porteiras, sem qualquer formação académica, e, por isso, foram facilmente rotulados por uma xenofobia (maioritária?) francesa.

Nos anos 80 e 90, a emigração foi mais modesta. Limitou-se quase a alguns desgarrados vítimas da heroína, que não chegavam a horas ao emprego, aqui em Portugal.

Depois veio o Passos – com a sua política fundamentalista económica – e a emigração voltou a explodir: triturou carne e ossos para salvar papel fiduciário; e criou uma nova trupe de deslocados, alguns deles ressabiados, com instrução elevada, e detratores do país onde nasceram.

São os novos caralhos. Piores – muito piores – que os antigos “carrálhos”, porque são mais instruídos, e, por isso, manipuladores da opinião pública em geral. Mas se os ouvirmos falar, são apenas ressabiados e ignorantes.

Por exemplo, ainda ontem tive uma discussão com um anónimo, que nos apelidou de “Portugal dos Pequeninos”, porque em Espanha, ele “desloca-se” às Finanças, espera “apenas” 20 minutos para ser atendido, e depois desloca-se de volta para casa, tendo pago o estacionamento do carro, e gasto gasolina, e por aí fora. Eu disse-lhe – como já disse a outro ressabiado – que em Portugal não me desloco, faço isso tudo pela net em 5 minutos. Que a única vantagem que vejo na “solução” espanhola é poder ver gajas boas pelo caminho.

Mas estes portugueses emigrados ressabiados pequeninos – e conheço muitos – têm igualmente um cérebro muito pequenino. São os novos caralhos.

José Afonso

Uns dias antes de ele nos deixar, parou, exatamente à minha porta, a caminho de um concerto, e alguém que ia com ele, fez-lhe uns exercícios musculares, encostado ao carro. Eu estava lá, à porta de casa, com meia dúzia de amigos. Nenhum de nós se aproximou. Mas foi uma situação que nos marcou a todos. A Teresa também estava lá.

Azeite mortal espanhol

Nunca se esqueçam das 1100 pessoas que morreram com o azeite espanhol, em 1981, quando comprarem produtos espanhóis.

Eu não me esqueço, e nunca compro nada feito em Espanha.

Lembro-me da nuvem de medo que pairou sobre o nosso país. As pessoas tinham medo de comprar azeite. Sempre que iam às compras perguntavam, e com razão, se aquilo não seria espanhol… Filhos da mãe.

Para os mais distraídos, ou para os mais novos, aqui ficam algumas referências:

[1] Síndrome da colza (óleo tóxico)

[2] O fantasma do óleo de colza espanhol

[3] Gato por lebre