You are currently browsing the archives for the Em curso category


A crise Grega explicada em gráficos


Já não é a primeira vez que falamos da Grécia aqui no Poupar Melhor e quase sempre pelas piores razões. A Grécia, que começou por se opor à entrada de Portugal na União Europeia e por isso foi compensada com maiores transferências financeiras, está há vários anos debaixo de fogo e Portugal segue-lhe as pisadas.

Neste momento Portugal deve ser um concentrado de especialistas em crise grega de tal modo entrincheirados ideologicamente que se vão esquecendo que neste momento a Grécia faz parte de uma união monetária. O entricheiramento ideológico virá muito provavelmente da consciência que todos temos que podemos ser os próximos.

A realidade é que não podemos dissociar Portugal, ou mesmo os outros países europeus, do que se passa na Grécia. A situação acaba por influenciar o contexto económico dos outros países que fazem parte da união, mas é também a união que acaba por impedir a saída habitual que os países tinham para estas situações: desvalorização monetária.

A união é um assunto mal acabado, uma construção que ficou a meio. Os países não ficaram totalmente integrados para não perder a sua soberania, um herança da ideia do estado nação. Ou por outra, apenas os capitais e pessoas podem fluir realmente como se fossemos a mesma comunidade, enquanto as responsabilidades e obrigações de cada país ficaram nos próprios países.

As diretivas comunitárias ditaram que os países tinham de efetuar determinado tipo de políticas de investimento e ajustes legais e para reduzir a resistência dos povos a essas decisões, foram fazendo as transferências de dinheiro entre os países a que chamaram os fundos de coesão.

O vídeo acima do site Voxx têm também um conjunto de gráficos sobre a Grécia que tentam usar os factos para explicar a situação. Após a crise do Leeman Brothers a Grécia voltou financiar-se nos mercados de capitais aos mesmos preços que se financiava antes de anunciar a entrada para a União Europeia. Este comportamento do juros da dívida ocorreu quando os investidores se aperceberam que os outros países do Euro não iam suportar a divida da Grécia.

Os países da União Europeia entendem que o investimento dessas transferências, e que era suposto ter surtido melhorias na economia grega, não surtiu o seu efeito por influência da corrupção e laxismo das forças políticas gregas. Agora é preciso penalizar este país. E penalizou: A Grécia foi dos chamados países periféricos da crise o país que maior redução da Administração central teve.

Ao contrário do que se diz, os mercados que deixaram de acreditar na dívida grega não são uns monstros debaixo da cama. Tratam-se de fundos de investimento ou bancos onde pessoas como nós acabam por ter o seu dinheiro investido, diretamente ou pelos bancos em nossos nome.

Somos nós que mostramos o medo que influencia os mercados, mas talvez não seja para menos. Quando ouvimos as notícias sobre números cozinhados deixamos de confiar no mensageiro. A Grécia levou o troféu do país com maior cozinhado de números pré-adesão à União Europeia, mas os organismos centrais de controlo destes números não ficam isentos de culpas e por isso se consultarmos a informação sobre a aceitação das pessoas para a União Europeia podemos ver que é algo que tendeu no sentido negativo em 2011. Infelizmente outra maneira de cozinhar números é deixar de os obter. A falta dos inquéritos sobre o tema depois de 2011 podem querer dizer muitas coisas. Não sabemos.

Mas para mim, o gráfico que mais me impressionou foi o da dívida assumida e que copiei para vermos aqui diretamente. Tratam-se de pagamentos em falta dos cidadãos à Administração do Estado. Portugal também não fica bem na fotografia, por isso será razão para dizer que “Portugal não é a Grécia”, mas podemos ficar lá perto.

Voxx - Greece is crap at collecting taxes

Voxx – Greece is crap at collecting taxes

Medidor de voltagem do Apple Magsafe

SMC Voltmeter

SMC Voltmeter

Passava na Internet a noticia que alguém tinha criado um voltímetro a partir do conector MagSafe da Apple. O MagSafe é um conector da Apple em que o contacto depende de um ímã, o que faz com que se por acidente puxarmos o cabo não danifiquemos as peças de contacto.

Como não podia deixar de ser, já fui buscar o software, instalei e há-de servir para alguma coisa. Para já, sei que:

  • Corre um script quando ligo ou desligo o cabo de alimentação do MacBook Pro;
  • Gera um gráfico de voltagem; e
  • Tem um histórico de medições que regista o par Voltagem e data/hora da medição.

O programador dá-nos acesso não só ao programa, como ao código-fonte, como ainda disponibiliza no site uma versão de linha de comandos, muito útil se pretendermos reservar recursos do computador para outras tarefas. O A.Sousa vai querer um destes.

Diferença para o XBMC no Raspberry Pi em 2013

Raspberry Pi Model B 2 - Raspberrypi.org

Raspberry Pi Model B 2 – Raspberrypi.org

Já tínhamos aqui contado o que era preciso para fazer um Home Theater PC (HTPC) no Raspberry Pi. Quando fiz o meu primeiro HTPC com o Raspberry Pi em 2013 comprei o Raspberry Pi no OLX por €38,00. Somados os €12,00 do cartão memória, ficava um total €50,00, o que era muito menos que os €99,00 que custava em 2013 uma Apple TV.

Quando apresentei a ideia, não lhe somei o custo da fonte de alimentação, do Hub ou do disco rígido externo porque tinha quase tudo cá em casa:

  • O disco era um disco externo partilhado por SMB na rede interna da casa a partir do Hub do prestador de serviços Internet.
  • A fonte de alimentação era uma fonte de um telemóvel que andava para ali para uma caixa.
  • Como devem imaginar, o que não me faltam aqui em casa são cabos para quase tudo, por isso os cabos também não entraram nesta conta.

Nem todos temos caixas com cabos e transformadores a sobrar lá por casa, por isso decidi refazer as contas como se fosse comprar tudo de novo e comparar com os preços deste ano de 2015. Para tornar comparável a compra em 2015 com o mesmo projeto em 2013, somei tudo aos €50,00 que custou o conjunto em 2013.  Somei a este total o custo do equipamento caso o tivesse adquirido e para uma configuração semelhante à que propus:

  • Disco externo de €49,99;
  • Hub USB PiHut de €21,83;
  • Cabo mini usb de €4,86;
  • Fonte de alimentação de €15,00;e
  • Cabo HDMI de €15,00.

O resultado é o que se pode ler abaixo. Atualmente é possível obter um pacote já com quase tudo incluído e pagar um pouco menos do que paguei em 2013, mas na comparação entre os custos das peças avulsas em 2013 e as peças avulsas em 2015, em 2013 pagaria menos do que pago agora a comprar as peças avulsas.

  • 2013 – HTPC no Raspberry Pi Model B – peças avulsas: €166,54;
  • 2015 – HTPC no Raspberry Pi 2 Model B – kit quase completo: €159,48; e
  • 2015 – HTPC no Raspberry Pi 2 Model B – peças avulsas: €180,69.

Fica por esclarecer se o Raspberry Pi 2 conseguiria sustentar em termos o disco de 500GB, razão pela qual tive de comprar um HUB usb alimentado que aparece nas contas. Os detalhes das contas a preços da loja online inmotion.pt estão na tabela abaixo.

RPi 2 (kit completo) RPi B RPi 2
Kit NOOBS com novo Raspberry Pi 2, Caixa Preta

€73,80

Raspberry Pi model B

€38,00

Raspberry Pi 2 with Transcend 16GB Class 10 NOOBS Card

55,29

Fonte de alimentação USB

€15,00

€15,00

USB microB Power Cable – 5V / 2.5A, 1m

€4,86

€4,86

SD Card

€12,00

Cabo HDMI

€15,00

€15,00

Caixa preta para o vosso RPi

€4,86

€4,86

Disco externo 500GB – 2,5”

€49,99

€49,99

€49,99

PiHub Official 4 Port USB Hub for Raspberry Pi, EU Plug 5V 3A

€30,69

€21,83

€30,69

Transporte

€5,00

€5,00

€5,00

€159,48

€166,54

€180,69

O projeto custa mais que os €99,00 da Apple TV, mas com o Apple TV não podem fazer outras coisas como as que temos feito por aqui com o Raspberry Pi.

Há algum tempo que a Apple TV deixou de ter um disco rígido, por isso, para verem na Apple TV outros conteúdos que não estejam online na internet, vão ter de ter um computador com iTunes ligado. Isto gasta mais energia, e vocês sabem o que o A.Sousa faz quando há consumos de energia excessivos…

O que comprar para fazer um Home Theater PC no Raspberry Pi

XBMC (agora chama-se Kodi)

XBMC (agora chama-se Kodi)

O amigo J.Pinto perguntou-me o que é que tinha que comprar para fazer um Home Theater PC (HTPC) com um Raspberry Pi. Fica aqui a lista de compras para que ele faça um destes para ele a preços atualizados. Os links são todos para a loja online inmotion.pt que se tem comportado de forma recomendável quando precisei deles:

O total dá €159,48. As instruções de construção que coloquei aqui continuam válidas. Vão ter de copiar o sistema operativo para o disco Micro SD e seguir as instruções. Convém terem o Raspberry Pi  ligado à internet quando o instalarem para ele actualizar a instalação com as últimas versões.

 

Sensores para projetos futuros

Raspberry Pi com sensor infravermelho ligado para testes

Raspberry Pi com sensor infravermelho ligado para testes

O meu Raspberry Pi já não tem o sensor de infravermelhos lá ligado. Com as múltiplas atualizações do Raspbmc o comando remoto por CEC começou a funcionar muito melhor. O suficiente para nem se dar pela diferença. Por essa razão desliquei-o e fechei o RPi numa caixa mais convencional.

Entretanto, na sequência desta diatribe sobre sensores e medições, fui ver que outro tipo de sensores se podia ligar e o que podia ser medido. Fica aqui a lista:

Sensores Medição
Acelerómetro Bússola. Direção.
Biométrico Muscular. Impressão digital. Pulsação. Flexibilidade.
Corrente Corrente elétrica
Flexibilidade Extensibilidade. Maleabilidade. Alterações plásticas do material
Força Pesar objetos.
Gases Monóxido de carbono. Metano. Fumos
Giroscópios Unidade de medida de inércia. Altímetro. Acelerometro. Pressão. Rotação.
Infravermelhos Temperatura à distancia. Distancia entre objetos.
Luz e imagem Medição de intensidade de luz visível. Separação de intensidade pelo espectro de cores primárias e rejeição de infravermelho
Magnético campo magnético
Oxidação e acidez pH de uma solução.
Determinar o nível de oxidação.
Proximidade Ultrassónico de distância entre objetos
Som Microfone
Temperatura alterações de temperatura por alteração da resistência elétrica do material e por sensor infra-vermelho
Vibração e inclinação Vibração sensível sem indicador de direção
Atmosférico Níveis de humidade, pressão atmosférica (barométrico) e temperatura .

Cábula do iMacros

iMacros add on

iMacros add on

Por causa daquele trabalho que ando a fazer ali ao naquele site tenho-me dedicado mais a aprender a usar esta ferramenta de automação de tarefas. Depende tudo de sabermos escrever umas linhas de código e darmos uns toques em Javascript.

Uma das dificuldades que me deparei foi com o funcionamento da minha própria memória. Com tanta linguagem de programação, regras, normativos internacionais e outras coisas dos meus múltiplos interesses, o resultado era o que se esperava: a cabeça já não dá para tudo.

O que aqui colocamos hoje foi o que encontrei numa pesquisa no Google. É uma cábula com todos os comandos do iMacro e serve para consultar enquanto se está a programar. Está aqui também a relação de browser web que aceita algumas destas variáveis.

iMacro CheatSheet – Command Reference
iMacros supports 3 types of variables:
* The macro variables !VAR0 thru !VAR9. They can be used with the SET and ADD command inside a macro.
* Built-in variables. They contain certain values set by iMacros.
* User-defined variables. They are defined in-macro using the SET command.
1. iMacros Commands Reference.
‘ comment The single quote character ‘ indicates a comment. If a line starts with ‘ everything else on this line is ignored. Typically this is used for comments or to disable specific parts of a macro.
ADD !VAR value Add a value to a variable. You can also substract values by adding a negative value to the variable.
BACK Opens the previously visited website.
CLEAR Clears the browsers cache and all cookies.
CLICK X=n Y=m “Clicks” on the HTML element at the specified X/Y coordinates.
SET !VAR1 EVAL(‘[javascript statements]’) This command allows you to evaluate values, and trigger macro errors if certain conditions are met.
FILEDELETE NAME=file_name Deletes the file specified by Name. If no directory is specified in Name the file is assumed to lie in the iMacros Downloads subdirectory.
FILTER TYPE=IMAGES STATUS=(ON|OFF) Filtering is a feature that allows you to change data on the website before it reaches the browser. Currently only the TYPE=IMAGES filter is supported.
FRAME (F=n|NAME=id) Directs all following TAG or EXTRACT commands to the specified frame. The frame tag and number is automatically generated by clicking into a framed web page.
ONCERTIFICATEDIALOG C=n BUTTON=[OK|CANCEL] Selects the client side certificate at position C from the upcoming dialog.
ONDIALOG POS=n BUTTON=(YES | NO | CANCEL) [CONTENT=some_content] Handles upcoming Javascript dialogs. You can extract the text of a dialog by adding “SET !EXTRACTDIALOG YES” to your macro.
ONDOWNLOAD FOLDER=folder_name FILE=file_name WAIT=[YES | NO] CHECKSUM=[MD5 | SHA:hexadecimal_string] iMacros automatically detects and intercepts downloads. With this command, which has to occur before the download starts, the location and name of the saved file is determined.
ONERRORDIALOG BUTTON=(YES | NO) CONTINUE=(YES|NO) If a page script error occurs on a webpage Internet Explorer opens an error dialog. This command handles such a dialog so your macros are not interrupted by script errors.
ONLOGIN USER=username PASSWORD=password RETRY=[YES|NO] Handles login dialogs. The ONLOGIN command must appear before the macro command that navigates to the site that brings up the login dialog.
ONPRINT P=n BUTTON=(PRINT | CANCEL) Handles print dialogs. The ONPRINT command must appear before the PRINT command which triggers the printer dialog to come up.
ONSECURITYDIALOG BUTTON=(YES | NO) CONTINUE=(YES | NO) Command to handle security dialogs. If Continue=No is selected then the macro will stop if such a dialog appears.
ONWEBPAGEDIALOG KEYS=some_keys | MACRO=macro_file Web page dialogs are similar to Javascript dialogs except they display HTML content.
PAUSE Same as a manual click of the “Pause” button: Stops the execution of the macro. Waits for user to click “Continue” to continue.
PRINT Prints the current browser window on your default printer.
PROMPT prompt_text variable_name [default_value] Displays a popup to ask for a value. This value is stored in variable_name. This command can be used to change the variables !VAR1, !VAR2 or !VAR3, but not built-in variables like !DATASOURCE or dynamically generated variables.
PROXY ADDRESS = proxy_URL:port [BYPASS = page_name] Connect to a proxy server to run the current macro.
REFRESH Refreshes (Reloads) current browser window. Refresh includes sending a “pragma:nocache” header to the server (HTTP URLs only) which causes all elements of the website to be reloaded from the webserver.
SAVEITEM SAVEITEM saves the document that is currently displayed in the web browser, for example a PDF file.
SAVEAS TYPE=(CPL | MHT | HTM | TXT | EXTRACT | BMP | PNG | JPEG) FOLDER=folder_name FILE=file_name Saves information to a file. The SAVEAS command can save different information to a file.
SCREENSHOT TYPE=(PAGE | BROWSER) FOLDER=folder_name FILE=file_name ´/Browser that is being displayed.
SEARCH SOURCE=(TXT | REGEXP) IGNORE_CASE=YES EXTRACT=$1 The SEARCH commands works with page source, instead of looking at the web page object model (DOM) that the TAG command uses.
SET var value Defines the value of a variable. The SET command supports the built-in variables, pre-defined user variables !VAR0 thru !VAR9, as well as user-defined macro variables.
SIZE X=n Y=m Resizes the browser window.
TAB (T=n | OPEN | CLOSE | CLOSEALLOTHERS) Sets focus on the tab with number n.
STOPWATCH ID=id Measures the time in seconds between two STOPWATCH commands with the same identifier.
TAG POS=1 TYPE=SELECT FORM=NAME:form1 ATTR=NAME:select1 CONTENT=$Apple The TAG command selects HTML elements from the current website. The identification of the element is given by providing the parameters POS, TYPE, FORM and ATTR. If the selected element is a link then the link is followed, i.e. the TAG command acts as if it clicks on the element.
TRAY (HIDE|SHOW) Hides or shows the iMacros Browser during playback. A tray icon appears instead of the browser, just like with the command line switch -tray.
URL GOTO=some_URL Navigates to a URL in the currently active tab.
VERSION BUILD=<version number> Specifies the version of iMacros that created this macro. Please note this command is required by all macros.
WAIT SECONDS=(n|#DOWNLOADCOMPLETE#) Waits for a specific time before continuing replay with the next command (timed delay).
2. iMacros Built-In Variables.
!CLIPBOARD Copy data from and to the clipboard.
!COLn Specifies the column which is used for input. Set n to the column number you want to use.
!DATASOURCE Specifies the name and location of an input file for merging data with macro.
!DATASOURCE_COLUMNS Specifies the number of columns in the input datasource.
!DATASOURCE_DELIMITER Specifies the character used to delimit fields in your CSV input file.
!DATASOURCE_LINE Specifies the line in the datasource which is used for input.
!ENCRYPTION Specifies how to encrypt passwords you use in macros.
!ENDOFPAGE Uses the !TAGSOURCEINDEX variable to define the end of page for iMacros. A search for a TAG element does not go below this limit.
!ERRORIGNORE Tells iMacros to ignore errors. The replay of macros continues even if one or more commands fail.
!EXTRACT Contains the extraction results.
!EXTRACT_TEST_POPUP Toggles whether the extraction result in displayed during replay in a popup dialog.
!EXTRACTDIALOG Extract information from a dialog. The entire text of a website dialog is extracted.
!FILE_LOG Sets a specific log file name for the current macro. If no folder is supplied then the file will be written to the standard log file directory (V7.x) or the download directory (up to V6) of your iMacros installation.
!FILE_STOPWATCH Sets the file name for the file that contains the stopwatch measurement data. By default the file name is performance_macroname.csv and is located in the download directory of your iMacros installation.
!FILE_PROFILER Sets the file name for the file that contains the performance profile data and enables profiling. By default all performance output of a given day is stored in the file Profiler_yyyy-MM-dd.xml, located in the download directory of your iMacros installation.
!FOLDER_DATASOURCE Returns / sets the folder from which input files are read in by default. Setting this variable is valuable if several macros share an input file folder, or to separate the image files that each macro needs
!FOLDER_STOPWATCH Sets the folder location for the file that contains the stopwatch measurement data.
!IMAGEX This value contains the X-coordinate of the last image found with the IMAGESEARCH or IMAGECLICK command. If the last image search did not find an image, then the value is -1.
!IMAGEY This value contains the Y-coordinate of the last image found with the IMAGESEARCH or IMAGECLICK command.
!LOOP Counts the current loop number in loop mode. Especially useful together with the POS attribute of the TAG command. With SET !LOOP 3 you can set a start value for the loop counter (the default value is 1).
!MARKOBJECT Toggles whether a border should be drawn around the tagged element. The default value is YES.
!NOW Contains the current time and date. In order to format the time and date you can use the following format codes, which you need to append to the variable after a colon.
!POPUP_ALLOWED Allow popups for a given URL during a macro run. Technically this is the same as white-listing the URL permanently. The advantages are that you can store this information in the macro and thus make it run everywhere, without the user having to manually white-list the URL.
!REPLAYSPEED Sets the replay speed to fast, medium or slow.
!REGION_BOTTOM Defines the bottom boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.
!REGION_LEFT Defines the left boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.
!REGION_RIGHT Defines the right boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.
!REGION_TOP Defines the top boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.
!SINGLESTEP Enables single-step debugging: iMacros stops after every command and waits for the user to click the “Continue” button.
!STOPWATCHTIME Contains the last measured response time value.
!STOPWATCH_HEADER If set to NO tells iMacros to omit the header in the output performance file.
!TAGSOURCEINDEX Retrieves the ordinal position of the object, in source order, as the object appears in the document’s all collection.
!TAGX This value contains the X-coordinate of the HTML element found with the TAG command. The /!TAGY values are automatically set after each TAG command.
!TAGY This value contains the Y-coordinate of the HTML element found with the last TAG command.
!TIMEOUT_MACRO Set the macro’s global timeout in seconds.
!TIMEOUT_PAGE Set the page load timeout in seconds.
!TIMEOUT_STEP Sometimes text or images do not appear immediatly after a page is loaded.
!URLCURRENT Contains the current URL. This is the URL visible in the browser address bar at the time the variable is used.
!USERAGENT Change the default user agent of the web browser.
!VAR0…!VAR9 Standard built-in variables for arbitrary use.
!WAITPAGECOMPLETE If this variable is set to YES iMacros will wait until the top frame is completely loaded.
3. Scripting Interface Commands.
ret_code = iimOpen(String commandLine [, boolean openNewBrowser] [, int timeout]); Initializes the Scripting Interface. It opens a new instance of the iMacros Browser, IE or Firefox, or connects to an existing instance (depending on the specified parameters). If the command fails for any reason it returns an error code.
ret_code = iimDisplay(String message [, int timeout]); Displays a short message in the iMacros browser. A typical usage would be to distinguish several running iMacros Browsers or display information on the current position within the script.
ret_code = iimPlay(String macro [, int timeout]); Plays a macro. After the macro has played all options that have been set with the iimSet command are reset. Use iimGetLastExtract to get the extracted text.
ret_code = iimSet(String VARNAME, String VARVALUE); Defines variables for use inside the macro and assigns values to them.
ret_code = iimTakeBrowserScreenshot(String FILEPATH, int 0 /1); Takes a screenshot of the current browser content or the current website.
ret_code = iimClose([int timeout]); Closes the iMacros browser.
ret = iimGetStopwatch(int index, string name, string value); Returns the data of the STOPWATCH command. If there is no STOPWATCH command in the macro then iimGetStopwatch returns only one value (“Total Runtime”).
err_message = iimGetErrorText(); Returns the text associated with the last error.
extract = iimGetExtract([int index_of_extracted_text]); Returns the contents of the !EXTRACT variable.
macro_node = iimGetPerfomance(); Returns the XML fragment containing the performance data of the last macro run, if performance logging has been enabled.
version_number = iimGetInterfaceVersion(); It returns a number in LONG format such as 80066532. Note that the iMacros main version number (as shown by VERSION) and the Scripting Interface version number as shown by iimGetInterfaceVersion are not identical.