domingo, dezembro 27, 2015

Linux Ubuntu 14.04 - Error displaying connection information: No valid active connections found!

O ubuntu permite a gestão de interfaces de rede por linha de comandos e por meio de applets específicos do gestor de janelas (e.g. unity).

No meu caso, o applet "Network Manager" nm-applet  está configurado pelo desktop applet. No entanto o mesmo apresentava problemas com erro na obtenção da configuração da rede.

Isto acontecia porque os ficheiros de configuração não definidos no /etc/network/interfaces mas sim no
/etc/NetworkManager
/etc/NetworkManager/system-connections
Como tinha os interface definidos como ETH0 auto no ficheiro de interfaces em /etc/interfaces, este "Network Manager" applet não geria a rede e não se responsabilizada pelo device.

Verificar o link:
https://bugs.launchpad.net/ubuntu/+source/network-manager-applet/+bug/305606


domingo, outubro 18, 2015

Aceder remotamente ao Ubuntu pelo RDP (3389) do windows

Para aceder remotamente ao desktop do Ubuntu com o remote desktop do windows, deveremos instalar o xrdp.

  • sudo apt-get install xrdp
  • Criar conta para acesso 
  • Criar .xsession na home do utilizador criado anteriormente
Importante:
O Ubuntu 14.04 no ambiente desktop, o RDP do windows não funciona com o window manager que não seja o XFCE4.

Para isso deveremos instalar o xfce4:
  • sudo apt-get install xfce4
De seguida incluir na .xsession do utilizador o seguinte:
  • xfce4-session
Outro aspeto importante é a necessidade de abrir a porta na firewall do Ubuntu UFW ou no GUI GUFW.

sábado, outubro 17, 2015

Apache2 + Webserver + Owncloud armazenamento

Criar uma forma de acesso aos dados multidispositivo e multiplataforma com a solução Ubuntu+Apache2+Owncloud.

Pré-requisitos:

Uma máquina com Ubuntu 14 LTS;
Espaço em disco
Uma conta DDNS
Uma conta Cloudflare


Instalar os seguintes módulos:

  • php5 (>= 5.4)
  • PHP module ctype
  • PHP module dom
  • PHP module GD
  • PHP module iconv
  • PHP module JSON
  • PHP module libxml
  • PHP module mb multibyte
  • PHP module posix
  • PHP module SimpleXML
  • PHP module XMLWriter
  • PHP module zip
  • PHP module zlib

apt-get install apache2 mariadb-server libapache2-mod-php5
apt-get install php5-gd php5-json php5-mysql php5-curl
apt-get install php5-intl php5-mcrypt php5-imagick
Seguir instruções em https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html
O serviço Cloudflare permite protege e acelera o website.
Defenir em cloudflare a representatividade do dominio, parametrizando os NS do dominio com os da cloudflare.
De seguida criar CNAME que aponta para DDNS. 
Definir em SSL-AVAILABLE do apache2 o servidor web para https.
parametrizar em cloudflare o crypt para apontar para o endereço correto.

quarta-feira, junho 10, 2015

Setup Eclipse IDE with Android ADT+SDK

Para começar a desenvolver aplicações android, existem hoje diversas soluções. Aqui vou mostrar como preparar o ambiente de desenvolvimento Android com o IDE Eclipse (Luna).

Para iniciar deveremos preparar o ambiente de trabalho com as seguintes ferramentas:

  1. Elipse IDE
    1. Versão que escolhi foi a Eclipse IDE for Java Developers
  2. Android SDK
  3. Plugin ADT (Android Development Tools)
Para se proceder à instalação do Eclipse IDE,deveremos ir à página oficial e efetuar o download do IDE.
A instalação em ambiente Windows não é automática. Deveremos descomprimir o ficeiro numa localização da nossa escolha. Ter o cuidado de efetuar o download na versão 32/64 conforme a versão do nosso sistema operativo.

Ter em atenção que deveremos instalar o SDK do Android.
  • Visitar a página de download do SDK Android (http://developer.android.com/sdk/index.html)
  • Ir até ao fundo da página e carregar em "Download the SDK Tools";
Picture of Install the Android SDK

Após instalação, abrir o aplicativo SDKManager.exe e instalar a versão do Android e as ferramentas extra.
Picture of Install Android Version and Extras for SDK

Para a definição do Eclipse, efetuar os seguintes passos:
Após encontrarmos o executável do eclipse, podemos criar um atalho no nosso ambiente de trabalho.

Para que o ambiente IDE do eclipse esteja pronto para trabalharmos com o framework do Android, deveremos efetuar alguns passos, nomeadamente a atualização do mesmo.

Picture of Add ADT Plugin Repository 
O plugin ADT foi feito especificamente para o Eclipse para aumentar a produtividade e o nível de integração com o ambiente de desenvolvimento Android.
Para o adicionar deveremos ir ao menu Help->Install new software.
  • Clicar no botão Add...e uma nova janela vai aparecer;
  • Deveremos dar um nome ao repositório (e.g. ADT REPO);
  • Colocar o link http://dl-ssl.google.com/android/eclipse/
  • Clicar Ok...;
Após a instalação dos pacotes necessários, devermos reiniciar a aplicação. Ao iniciarmos a aplicação, ir a Window-> Preferences->Android. Verificar se o caminho para o SDK do android está definido.

TroubleShooting

A instalação pode não ter sucesso, nomeadamente no arranque do Eclipse ou na instalação do ADT. Este é um excelente troubleshoot para ter em atenção:

http://www.ashout.com/fix-java-started-returned-exit-code13-eclipse/

sábado, maio 09, 2015

ASP:NET MVC Programming Model

O MVC é um de três modelos de programação ASP.NET.

  1. Web forms
  2. MVC
  3. Web Pages

MVC é uma framework de desenvolvimento Web usando o padrão de arquitetura MVC (Model-View-Controller).

Este modelo providencia um controlo quase absoluto sobre CSS, HTML e Javascript.
MVC
São definidas 3 camadas lógicas.


  • Business Layer (Model logic);
  • Display layer (View logic);
  • Imput layer (Controller logic);

Model - É a parte da aplicação que trata da lógica dos dados. Os objectos definidos são resposnaveis por carregar e armazenar os dados de uma base de dados.
View - É a parte da aplicação que trata da visualização dos dados. As views são criada muitas vezes do dados carregados do Model.
Controller - É a parte que trata da interacção dos dados com o utilizador. Os controllers lêm dados da view, controlam os inputs e enviam os dados para o Model.

Esta separação MVC pode auxiliar no desenvolvimento de aplicações complexas porque podemos focar-nos em cada um dos aspetos separadamente. Para além disto o desenvolvimento em grupo pode ficar mais simples com elementos a focarem-se na View e outros no Controller.

Application Folders

Uma aplicação WEB típica MVC tem normalmente as seguintes pastas:

Solution

Application information

Properties
References

Application folders

App_Data Folder - Esta pasta existe para serem armazenados os dados da aplicação. (e.g.Dados BD SQL)
Content Folder - Local para armazenar as páginas estáticas tais como ficheiros CSS, icones e imagens.
Controllers Folder - Local que contém as classes controller responsaveis pelo tratamento dos inputs.É obrigatório que cada classe deste género temine em Controller.
Models Folder
Scripts Folder
Views Folder

Configuration files

Global.asax
packages.config
Web.config




sábado, abril 11, 2015

Integração de Google Mobile Ads SDK

Pequeno guia para entender o processo de integração do Google mobile Ads SDK.

O Google Mobile Ads SDK, é utilizado para mostrar um simples banner publicitário em qualquer aplicativo desenvolvido para Android.

Aqui está explicado o processo utilizando o IDE Android Studio, no entanto os mesmos passos podem ser utilizados em diferentes plataformas.

Deveremos em primeiro SDK Manager e efetuar o download do repositório Google (ou update). O principal cmponente que estamos interessados é o Play-services que contem os recursos e o código compilado java para o Google Play services SDK que inclui o Google Mobile Ads SDK.



Configuração Gradle.

Gradle é um sistema de build open source que incorpora um número de características interessantes para developers.

Para continuar, deveremos modificar o ficheiro build.gradle,

...

dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.0'
        compile 'com.google.android.gms:play-services:7.0.0'
    }
...

Modificar o ficheiro Manifest

Qualquer aplicação Android usa um ficheiro chamado de Manifest que informa o sistema Android acerca dele próprio. A informação encontrada neste ficheiro diz respeito a questões de permissões necessárias pela aplicação, as atividades que contem, etc.
xml version="1.0" encoding="utf-8"?>
 xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms.example.bannerexample" >

    
     android:name="android.permission.INTERNET"/>
     android:name="android.permission.ACCESS_NETWORK_STATE"/>

    
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
         android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        
            android:name=".MainActivity"
            android:label="@string/app_name" >
            
                 android:name="android.intent.action.MAIN" />

                 android:name="android.intent.category.LAUNCHER" />
            

       

       

       
android:name="com.google.android.gms.ads.AdActivity"
           
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
           
android:theme="@android:style/Theme.Translucent" />

   


Definir um App Id

Um App id é um identificador unico. Para duas atividades com dois banners, será necessário definir um App Id diferente para cada um deles.

Deveremos incluir uma view da seguinte forma:

 
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">
    
Na activity, chamamos o ad da seguinte forma:

package ...
import ...
import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class MainActivity extends ActionBarActivity {

    ...

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }

    ...
}
Seguir o seguinte link para mais informação:
https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
https://developers.google.com/mobile-ads-sdk/docs/admob/android/banner?hl=pt#play