sexta-feira, 26 de agosto de 2022

How to install Drush globally for Drupal?

Install drush in your Drupal 9 installation: 

composer require drush/drush

After that you can use drush in directory /vendor/bin/drush. But if you want to use drush in any directory, you must use Drush Launcher. 

Basically, run this command to download drush.phar: 

curl -OL https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar

Then config the permission: 

chmod +x drush.phar

After that, move the file to the location listed on your path:

sudo mv drush.phar /usr/local/bin/drush

If you need to update drush launcher, run this code: 

drush self-update

domingo, 20 de fevereiro de 2022

Google Adsense e Google Ads: qual a diferença?

Muita gente tem dúvida e não sabe a diferença entre Google Adsense e Google Ads. Além disso, siglas relacionadas a estes mecanismos de anúncios podem causar muitas confusões. Para descomplicar, criei este artigo bem simples e objetivo. Vejamos dois exemplos: 

Exemplo 1: João tem um website legal onde ele disponibiliza conteúdos autorais e de qualidade. Ele quer ganhar dinheiro anunciando propagandas no seu website. Para isso ele utiliza o Google Adsense para divulgar as propagandas e ganhar dinheiro por clique ou por visualização. 

Exemplo 2: Maria tem um negócio (comércio físico, comércio eletrônico, produto autorial ou afiliados). Ela deseja divulgar o seu negócio para que muitas pessoas vejam e cheguem no seu serviço. Para isso ela pode pagar para o Google Ads anunciar o produto dela. 

Vimos dois exemplos distintos do que seria o Google Ads e o Google Adsense. Para explicar melhor, vamos para as perguntas. 

O que é Google Adsense?
















Google Adsense é uma forma de exibir anúncios de terceiros em seu website. Estes anúncios costumam ser relevantes para o usuário pois o este mecanismo apresenta informações com base no histórico de pesquisa e cookies que ficaram armazenados no navegador do cliente. 

O que é Google Ads?



Google Ads é uma ferramenta de publicidade que permite exibir anúncios online, seja no resultado de uma busca no google ou através de anúncios em sites parceiros do google (os sites que anunciam os banners através do google adsente). 

O que é CPC? 

CPC é uma sigla que significa Custo por Clique. Se você tem um site bom, com conteúdos relevantes e autoriais, provavelmente o seu CPM será alto. Ou seja, para cada clique, pode-se ganhar de 0,1 centavos a 5 reais ou mais. (Visão Google Adsense)

Por outro lado, se você quer divulgar o seu serviço e se o nicho onde você trabalha tem muitos concorrentes, provavelmente você terá que pagar mais caro para receber cliques. Se a área que a sua empresa trabalha tiver pouca procura, pode ser que o seu CPM seja mais barato (Visão Google Ads). 


O que é CPM?


CPM refere-se a Custo por Mil visualizações. Também é uma forma do Google Adsense pagar por visualizações de banners no seu website. 

Da mesma forma, é uma forma do Google Ads cobrar por divulgar a sua empresa. 


terça-feira, 7 de dezembro de 2021

How to migrate large ammount of data from Drupal 7 to Drupal 9 (or Drupal 8)

Everyone who works with development of websites faces with a common challenge of keeping the code updated. With Drupal it´s the same. Drupal 7 was widely used for several companies and institutions. Then Drupal 8 came with innovations and different ways of working using composer and symfony. Drupal 8 themes also changed they way it is built using twig templates. Now we are facing with Drupal 9 which improved the performance of the CMS and brings to the developer a better experience, clean code and more secure system. 

So, now we need to plan how to migrate a large ammount of data from a Drupal 7 to Drupal 9, ok? But, we all know that many modules that were used in Drupal 7 were not updated to Drupal 9. Also, the software architecture are not the same. 

Anyway, the first migration test were made using Migrate Drupal UI module. But, as expected, the migration didn´t work well because our Drupal Websites were built using a bunch of modules that are not compatible with Drupal 9. So, many data were not migrated. 

The second and best solution were plan the migration using views to export a JSON content and Feed Importer. Basically, the solution to export the content could also work well using Views Data Export using CSV or XML. But as I´m planning to work with JSON to spread data into multiple websites in my work I decided to use Views Data Export - JSON Support.
Step 1) Copy the taxonomy if it exist 

 - the first step was to export the taxonomy structure using views data export with CSV format (Drupal 7). 
- Next step was to import the taxonomy structure using Taxonomy import (Drupal 9) 

 Step 2) Export the content in JSON format using Views Data Export - JSON Support 

 This seconde step was to prepare the JSON structure in Drupal 7 website. I have created a single view with data export format and configured to export JSON format. The fields were set with lowcase letters and no accent. Also, the images path and file path were set as a field. The body content were set to export in html format. This way, the solution to migrate the all the files was to copy the /files folder into the new drupal 9 website. This way, the path were kept the same. After finished the view with data export and set the URL to access it, we are able to download the content. 

Step 3) Create the content types in Drupal 9 structure 

In this step I have prepared the content type with the necessary fields and body content with full html set. We have created simple fields and also paragrapth fields. 

Step 4) Set the Feed Import module in Drupal 9 website 

This final step is related to the feed module which allows data to be importer. In this step, I have tried to import all the data from a specific content type in Drupal 7 but it was so much content that it caused a timeout error. So I decided to migrate data per year. But it also caused an error because of the large ammount of data. This way I download the JSON data first, instead of accessing the data from a URL. The first migration were done with 637 nodes from the year of 2020. After that I just checked with the files and images were copied into the Drupal 9 instance with the root folder /files. 

Step 5) Don´t forget to clean cache, rebuilt and refresh the database. Using drush you can do it easily. 

If you have experienced troubles during the migration of content from Drupal 7 to Drupal 9, don´t hesitate to contact me. My e-mail is keyneskanno at gmail dot com. Have a lot of fun!

terça-feira, 21 de julho de 2020

Como configurar múltiplos websites utilizando o CMS Drupal 8

Para configurar o Drupal 8 para permitir N sites em uma única instalação, faça o seguinte: 

1- Realize a instalação do Drupal, seguindo o passo a passo do site oficial. 

O recomendável é instalar o Drupal utilizando o Composer. O Composer é um gerenciador de pacotes para a linguagem php que auxilia na instalação de dependências e bibliotecas necessárias. Após a instalação do composer, realize o seguinte comando para instalar: 

exemplo: composer create-project drupal/recommended-project:8.9.2 html

Neste exemplo, escolhi a última versão estável 8.9.2 na pasta raiz "html". 

2 - Após a instalação, vá ao diretório onde está o código fonte do Drupal. Localize a pasta "sites". Dentro da pasta sites, existe um arquivo chamado example.sites.php. Renomeie este arquivo para sites.php. 

3 - Abra o arquivo sites.php e insira no final do código o seguinte: 

exemplo: $sites['nomedosite.com.br'] = 'nomedosite.com.br';

Em "nomedosite.com.br', insira o nome do site website. 

4 - Em seguida, crie a pasta com o mesmo nome que você escreveu em /pastaraiz/sites/ : 

exemplo: mkdir nomedosite.com.br

5 - Dentro da pasta "nomedosite.com.br", copie o arquivo default.settings.php que está em /sites/default e renomeie-o para "settings.php"

6 - Siga o passo a passo natural da instalação e sempre que precisa criar outros websites, faça o mesmo procedimento, inserindo código no arquivo sites.php. 









quarta-feira, 6 de fevereiro de 2019

Web Scraping

Uma técnica muito interessante tem sido usada nos últimos tempos. Chama-se web scraping. Não confunda com data mining!

Web Scraping (raspagem da web) é uma técnica de extração de dados da web, usualmente conteúdos html ou xml.

É uma maneira de obter dados de um website por meio de um processo automatizado. As ferramentas realizam consultas para as páginas solicitadas e, em seguida, vasculham o código HTML e recuperam os itens específicos.

Com Web Scraping podemos recuperar dados valiosos e exportar para uma planilha excel ou outro formato para análise de dados.

Existem diversas ferramentas que fazem o webscrapping. Algumas exigem conhecimentos de programação, outros fazem de forma automatizada. Obviamente, as API de web scraping permitem customizar melhor o interesse do seu cliente, podendo aprimorar a extração de dados.

Para mais informações: www.google.com.br




quarta-feira, 29 de agosto de 2018

Best databases for searching articles related to Computer Engineering and Computer Science

Here is the list of databases to search relevant articles in the area of ​​Engineering and Computing. The list is not in order of relevance:

Suggestion:

  • Search for recent articles of maximum 5 years;
  • Give preference to magazine articles whose publication criteria are usually higher;
  • Also search for Google in journals / journals in your research area.

Melhores bases de dados para pesquisar artigos de Engenharia Elétrica, Eletrônica, Computação

Segue a lista de bases de dados para auxiliar na busca de artigos relevantes na área de Engenharia e Computação. A listagem não está em ordem de relevância:

Sugestão: 
  • Pesquise por artigos recentes de no máximo 5 anos;
  • Dê preferência para artigos de revista cujo critério para publicação costuma ser maior;
  • Pesquise também pelo Google em revistas/journal de sua área de pesquisa.



domingo, 5 de fevereiro de 2017

Como apresentar a leitura de um comando de voz no ambiente de Realidade Aumentada Vuforia - UNITY

A seguir será apresentada uma solução encontrada para o problema de inserção de textos em tempo real a partir da leitura de um comando de voz no ambiente de Realidade Aumentada no UNITY for Android.

Primeiramente vamos apresentar o contexto:


  1. O ambiente de Realidade Aumentada adotado chama-se Vuforia ;
  2. O plugin de comando de voz é o  Android Ultimate Plugin ;
  3. O problema em questão é integrar o comando de voz no ambiente de RA utilizando um botão "falar";
  4. A partir do comando, um texto é apresentado no ambiente validando o comando e em seguida é executado o comando caso seja reconhecido;
  5. Comandos de voz como socorro, me ajuda, estou perdido, automaticamente é realizado uma ligação para o cuidador e uma mensagem SMS também é enviada.

Para apresentar o texto em tempo real, utilizou-se o método OnGUI do Monobehavior:

Este método OnGUI atualiza a interface por frame, ou seja, o texto é atualizado em tempo real.

Os botões foram inseridos a partir do GUI.Button;

O GUI.TextField se encarregou de retornar o texto gerado a partir do comando de voz

Com relação ao posicionamentodo botão e do texto na interface, utilizou-se o referencial Screen.width e Screen.height.

Segue o código do GUI interface:


#region "GUI"
    void OnGUI(){

guiStyle.fontSize = 50;
       
        //imprime um campo de texto na interface e posiciona no canto inferior da tela
        resultText = GUI.TextField(new Rect(350, Screen.height - 150, 200, 100), resultText,25,guiStyle);

       //imprime um botão com um ícone "falar" no canto inferior direito
if (GUI.Button(new Rect(Screen.width -250, Screen.height -250, 250, 250), iconeFalar))
        {
            StartListeningWithExtraLanguage();
        }
}
#endregion




sexta-feira, 11 de novembro de 2016

Simple solution to add 3D dynamic text in UNITY Vuforia

Considering that you already know how to build a simple example of Vuforia in UNITY, I´m going to register here a simple way to add dynamic 3D text.

1) First of all, insert a 3D Text in the scene. Go to menu GameObject > 3D Object > 3D Text. Write any text in there and call it "dynamicText";

2) Move this 3D Text into ImageTarget;

2) Create a C# Script. Right button on Asset windows > create > C# Script.


Write this code in there:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class textScript : MonoBehaviour {

         // Define this variable will allow you to associate your 3D Text. 
         // To associate it you have to grab the 

[SerializeField]
private TextMesh changeTextMesh = null;

// Use this for initialization
void Start () {
changeTextMesh.text = "This is the new text";
}

// Update is called once per frame
void Update () {

}
}

3) Save it and go back to the scene. Grab this C# script into the ImageTarget;

4) Grab the dynamicText into the changeTextMesh variable that is obviously located in the ImageTarget inspector (where you input your C# Script)

5) By the time you connect the dynamicText with changeTextMesh it will work like a charm.





sexta-feira, 4 de novembro de 2016

Diferença entre Bluetooth vs Bluetooth Low Energy

Acabei de ler um excelente artigo da empresa LinkLabs que explica as diferenças básicas entre Bluetooth (BT) e Bluetooth Low Energy (BLE).

De forma resumida, o Bluetooth serve para trabalhar com grande quantidade de dados trafegados. Por essa razão consome-se mais energia. Já o BLE é usado para aplicações que não requerem uma grande quantidade de dados. Assim, consome-se menos bateria, durando por anos e com custo reduzido.

O Bluetooth Low Energy pode se referir também como Bluetooth 4.0.

O range (distância) do BLE (no máximo 250m) é menor do que comparado ao BT (máximo 800m).

A taxa de transferência do BLE (100kbps) é baixo se comparado ao BT (2mbps).

Além de todas estas diferenças listadas acima, a implementação também é um pouco diferente na plataforma Android. Apesar de utilizar a mesma biblioteca, requere-se cuidados com a forma de implementar a interação com o BLE. Para isso existe o GATT (Generic Attribute Profile). o GATT é uma especificação para envio e recebimento de pequena quantidade de dados através de um link BLE. O bluetooth SIG define procedimentos de como o dispositivo deve trabalhar com o BLE.






Referências:
https://www.link-labs.com/bluetooth-vs-bluetooth-low-energy/
http://stackoverflow.com/questions/32367108/android-bluetooth-vs-bluetooth-low-energy
https://developer.android.com/guide/topics/connectivity/bluetooth-le.html

Diferença entre Bluetooth vs Bluetooth Low Energy

Acabei de ler um excelente artigo da empresa LinkLabs que explica as diferenças básicas entre Bluetooth (BT) e Bluetooth Low Energy (BLE).

De forma resumida, o Bluetooth serve para trabalhar com grande quantidade de dados trafegados. Por essa razão consome-se mais energia. Já o BLE é usado para aplicações que não requerem uma grande quantidade de dados. Assim, consome-se menos bateria, durando por anos e com custo reduzido.

O Bluetooth Low Energy pode se referir também como Bluetooth 4.0.

O range (distância) do BLE (no máximo 250m) é menor do que comparado ao BT (máximo 800m).

A taxa de transferência do BLE (100kbps) é baixo se comparado ao BT (2mbps).

Além de todas estas diferenças listadas acima, a implementação também é um pouco diferente na plataforma Android. Apesar de utilizar a mesma biblioteca, requere-se cuidados com a forma de implementar a interação com o BLE. Para isso existe o GATT (Generic Attribute Profile). o GATT é uma especificação para envio e recebimento de pequena quantidade de dados através de um link BLE. O bluetooth SIG define procedimentos de como o dispositivo deve trabalhar com o BLE.






Referências:
https://www.link-labs.com/bluetooth-vs-bluetooth-low-energy/
http://stackoverflow.com/questions/32367108/android-bluetooth-vs-bluetooth-low-energy
https://developer.android.com/guide/topics/connectivity/bluetooth-le.html

Beacons: Entendimento técnico

Beacons: beacon é qualquer dispositivo eletrônico que transmite um sinal que permite outro dispositivo determinar sua proximidade em relação ao beacon. O beacon não transmite conteúdo. Ele simplesmente transmite uma sinal que permite o dispositivo móvel determinar sua proximidade do beacon. O conteúdo que aparece no celular após a proximidade é gerado pelo aplicativo. 
Bluetooth Low Energy: Esta é a especificação de um tipo de sinal que o beacons transmite. Há outros tipos de sinais dos power beacons  mas o Bluetooth LE tem a vantagem de ter baixo consumo de energia e ser nativo para a maioria dos celulares e tablets. 
iBeacon:  O termo iBeacon e beacon é frequentemente usado. Mas o iBeacon é uma marca registrada da Apple referente aos protocolos, dispositivos e que usa Bluetooth LE para criar experiência de usuário.  
Devices: Existem diversos dispositivos que são capazes de atuar como transmissor Bluetooth LE. Mas alguns dispositivos podem ter outras funcionalidades. O iPhone pode ser programado para atuar como beacon além de oferecer outras funcionalidades. Similarmente, beacons de algumas empresas podem transmitir sinais Bluetooth LE mas também detectar umidade, temperatura, aceleração e também módulos wifi.

Referência: http://beekn.net/guide-to-ibeacons/ 

quinta-feira, 6 de outubro de 2016

Um pouco sobre Ionic e tecnologias relacionadas

Nas últimas duas semanas tenho estudado Ionic para verificar a possibilidade de utilizar no projeto de doutorado.

O Ionic é um framework que auxilia no desenvolvimento de aplicações móveis seja Android,IOS. Desta forma pode ser definida como desenvolvimento de aplicações híbridas.

O Ionic depende de alguns softwares para funcionar. São eles:


  1. Node JS: É um interpretador de código JavaScript Server Side, ou seja, que funciona do lado do servidor. A importância dele é permitir a criação de aplicações de alta escalabilidade.
  2. NPM: É um gerenciador de pacotes para o JavaScript que permite a utilização de linhas de comandos para instalação e configuração do ambiente de desenvolvimento.

Além disso, estou estudando o Git para fazer versionamento. Antes utilizava o svn porém o git possui maior adesão pelos desenvolvedores ionic.


terça-feira, 13 de setembro de 2016

Um pouco sobre UNITY

Recentemente, tenho estudado Unity juntamente com Vuforia e Blender para desenvolver um projeto de doutorado.

Basicamente, o Unity é uma engine que permite desenvolver jogos 3D ou 2D enquanto que o Vuforia é uma ferramenta de desenvolvimento de aplicações de Realidade Aumentada. Já o Blender é um software de modelagem 3D.

Alguns termos comumente usados no UNITY:

GameObject:

Prefabs:

Scenes:


segunda-feira, 10 de fevereiro de 2014

Augmented Reality Software developed to auxiliate patients to take drugs


This is a video that I made to show how the system works. Basically, the alarm clock alert the patient that is time to take medicine. Then, the person attend the phone and checks throw the camera which medicine he needs to take. The one that appears in green color is the drug that he has to take.


sábado, 8 de setembro de 2012

"Assassinos" da Inovação

Segue um artigo interessante retirado do site http://cio.uol.com.br/ sobre sete atitudes que podem "assassinar" ideias novas para a sua empresa:


1 – Esperar que a inovação caia do céu

Crer que a inovação vai surgir por si só, do nada, é o mesmo que acreditar que uma plantação de vegetais irá, simplesmente, surgir no seu quintal um dia. Inovação requer investimento de tempo e dinheiro, e isto pede um processo para suportar a iniciativa, defende Thomas Koulopoulos, fundador da consultoria de inovação Delphi Group. Como uma plantação, que é frágil e pede tempo para se desenvolver, o processo de inovação pede um lugar para as sementes (ou ideias) amadurecerem. Isto ainda requer bom tempo, proteção contra os predadores e muitos cuidados.

A atenção à inovação é uma necessidade no mundo de hoje, diz Koulopoulos. Até mesmo nas indústrias onde os limites não são bem definidos – como na manufatura e na terceirização – a inovação é fundamental.

"Aí está a ironia", ele diz. "Me preocupo em não correr grandes riscos, mas, ao mesmo tempo, isso significa que, em algum lugar do globo, eu posso estar sendo ultrapassado".

2 – Guardar as ideias "para um dia"
Ótimas ideias são as sementes para a inovação e não a inovação em si mesma. "Todos têm uma ideia para um livro em mente. Mas existe um hiato enorme entre o que está na cabeça e o processo de trabalho para escrevê-lo".

Invenções ou inovações são erroneamente consideradas sinônimos de ideias. Você precisa entender a diferença e saber como usá-las. Koulopoulos ressalta que as companhias inovadoras devem ter uma visão holística e criar uma cultura para implementar ideias. Um processo para suportar inovações deve ser criado, implementado e comunicado. Assim, todos saberão como ele funciona e estarão prontos a participar.    

3 – Deixar a inovação só a cargo da TI
A tecnologia deve suportar a inovação, não liderá-la. Isto porque a inovação é, primeiramente, uma obrigação da cultura corporativa, que pede coisas como retorno, inspiração e motivação. Em qualquer situação, você tem duas atividades – a invenção e a inovação ou o processo atual. Koulopoulos desenha uma linha entre as duas situações e afirma que TI entra numa segunda etapa: ela deve estar envolvida na implementação de ferramentas que melhor suportem o processo de inovação.

4 – Criar obstáculos ao surgimento de ideias
Uma maneira certa de matar o espírito inovador? Basta inspirar-se no livro "O Processo", de Kafka ou numa típica repartição pública. Burocracia e processos bizantinos desencorajam, tiram o entusiasmo. Quando as ideias dos funcionários são tratadas com desrespeito ou o processo é confuso e difícil, o entusiasmo vai morrendo. Isto é exatamente o que Koulopoulos descobriu quando entrevistou 374 executivos seniores de TI, dos quais 22% disseram ter perdido o interesse em implantar ideias por conta de processos internos burocráticos.

5 – Olhar o diferente e o novo como ruim
"É o maior erro das grandes empresas", diz. "Quando você está ganhando, a última coisa que quer é que aconteçam mudanças". Mas, não estar aberto às mudanças é um grande erro. É como recusar anunciar na internet e preferir anunciar no jornal impresso. Você deve responder às mudanças e às necessidades de inovação. Certamente, a resistência interna é difícil de superar, mas poucas companhias têm condições de viver do passado. O mundo de hoje pede companhias que se transformam, contratando gente jovem e focando em novidades por uma simples razão. Se você não fizer, alguém vai fazer.

6 – Não ligue se a ideia não for econômica e legalmente viável
Ideias são frágeis, facilmente quebráveis. Então, dê o devido cuidado para as ideias no que diz respeito à sua legalidade e contabilidade. A ideia faz sentido econômica e legalmente? Aqueles que têm maior intimidade com o processo de adoção de ideias são os mesmos que, mais facilmente, terão as suas próprias sugestões colocadas em prática. Este incentivo a participar deve vir do alto escalão da empresa, recomenda Koulopoulos.

7 – Tenha muito, mas muito medo de fracassar
Na pesquisa com CIOs, 25% dos entrevistados revelaram ser o medo de falhar uma das razões para que uma cultura de inovação não fosse criada na empresa. Como não se pode antever com 100% de certeza no que dará a implantação de uma nova ideia, os riscos existem e assustam. Mas a verdade é que, sim, você falhará algumas vezes. Como uma criança que aprende a andar de bicicleta, você simplesmente não conseguirá se mover se não ousar cair. A pergunta é: você está numa organização que irá tolerar as falhas em nome da inovação? E você mesmo? É ousado o suficiente?

quinta-feira, 6 de setembro de 2012

Projetos de Realidade Aumentada

A tecnologia da Realidade Aumentada vem evoluindo de forma muito rápida. Inicialmente, muitos não acreditavam (ainda não acreditam) na aplicação desta tecnologia.

Desde o primeiro contato que tive com a tecnologia de RA na Universidade Federal de Uberlândia com o prof. Alexandre Cardoso e o prof. Cláudio Kirner, sempre acreditei que esta tecnologia iria deslanchar.

Hoje temos o privilégio de "acompanhar" a evolução da tecnologia em diversas aplicações, seja no marketing de produtos comerciais, nos aplicativos de localização de smartphones, no video-game e outros (simuladores, treinamento industrial, treinamento militar,etc).

Tenho acompanhado o desenvolvimento do projeto da google: "Project Glass" visto em: https://plus.google.com/+projectglass/posts. Com certeza serei um dos primeiros a requisitar este produto!




Segue um projeto interessante de montagem do LED em uma lente de contato onde os pesquisadores acreditam que pode-se incorporar a tecnologia de Realidade Aumentada:

Segue um vídeo interessante do que a Realidade Aumentada pode nos auxiliar ou prejudicar:

terça-feira, 17 de abril de 2012

Criando interfaces para Mobile utilizando o JQuery Mobile

Criar interfaces para dispositivos móveis hoje não é mais uma tarefa díficil. No Android, pode-se desenvolver a interface utilizando os próprios componentes do Android SDK no Eclipse. No Iphone pode-se utilizar o Iphone SDK no XCode sem nenhuma dificuldade.

No entanto, caso queira criar interfaces personalizadas de um website para ser visualizado através de um dispositivo móvel, o JQuery Mobile pode ser uma ferramenta muito prática.

Basta criar a interface do website em tempo real através do site jquerymobile.com e salvar o arquivo. Em seguida use este gerador de código php para reconhecer em qual aparelho o usuário está acessando: http://detectmobilebrowsers.mobi/#generator

Configuring Selection List in Drupal to show/hide limited data

Drupal is a powerfull content manager that allow us create content type with custom fields. There is a possibility to define allowed values in a Select List like countries, days, month, etc.

Also there is a possibility to input custom Select List depending on a role of the user. In my case I had to create 3 different roles that can only fill limited data in a Selection List.

In this case we have to input php code in the selection list field. Just go to content type > manager field > selection list field.

Basically we have to set:
global $user; //get user informations

By this you can get the role and the user name by doing this:

$user->roles;
$user->name;



Then you can create a variable of type array to input the custom values that will show depending on the role and name of the user. Finally return this variable to show in the selection list:

return $variable;

Criar Enquetes no Drupal controlando votos através de Cockies

Nativamente, o Drupal 6.x.x já vem com o módulo Pool (Enquete). No entanto, este módulo é controlado por IP, ou seja, os votos são limitados a 1 voto por computador.

Caso a votação seja realizada em um terminal onde diversos usuários podem votar pode-se usar o módulo advanced pool. Através do módulo, pode-se configurar o controle de votos através do Cockie do navegador. Pode-se definir por exemplo que o voto seja realizado por máquina a cada 1 minuto. Depois de 1 minuto o cockie e removido possibilitando que o usuário vote novamente.

Outra vantagem deste módulo é a possibilidade de limitar os usuários que podem votar. O detalhe é que a versão é beta, mas funcionou perfeitamente na versão 6.12, 6.19 e 6.23. Um último detalhe é que caso você já tenha várias enquetes criadas, o módulo advanced pool consegue se adaptar aos dados do módulo pool.