Ir para conteúdo

polooix

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    polooix deu reputação a Ryzor em Dicas essenciais em Lua   
    Muita gente andou me pedindo para que eu desse algumas dicas com Lua. Então, resolvi por meio dessa aula, dar dicas gerais de toda a linguagem.

    Esse tutorial tem como objetivo apenas salientar alguns macetes e dicas legais para Lua tendo em vista que exista um mínimo conhecimento do assunto. Não responderei perguntas que julgo idiotas, portanto, nem tentem poluir esse tópico, se não sabe o que é Lua, procure no Google que é o melhor que você pode fazer. Desde já, desculpo me por minha antipatia por parte dos ignorantes.

    Comentários
    Além dos conhecidos comentários de linhas únicas iniciados por "-- comments go here" existem comentários de bloco, isto é, de multi linhas, representados por "--[[ comments go here]]".

    Variáveis

    Variáveis como o próprio nome já diz não são constantes, ou seja, o programador pode livremente mudar seus valores
    Variáveis naturalmente são globais, mas podem se tornar locais colocando se antes do início da declaração "local"
    O escopo de uma variável é limitada para o escopo atual e seus escopos-filhos
    Não é recomendado debugar códigos usando variáveis locais pois estas são guardadas no stack e por isso é necessário funções como "assert" e outras
    Uma variável local com mesmo nome de uma variável global apenas substitui o valor da global temporariamente (geralmente no tempo de sua execução, o que não chega a ser problema na maioria dos casos)


    Tipos


    Nil
    Um valor especial que tem valor vazio e significa nulo (NULL)


    Variáveis que são declaradas sem valor possuem valor igual a "nil" e podem ser modificadas livremente
    Na maioria dos casos "nil" é retornado quando uma função falha
    É possível usar uma alternativa ao "nil" usando "or" já que "nil" leva ao booleano "false": print(tonumber("a"), tonumber("a") or 1) -> prints "nil 1"

    Boolean
    Pode ter dois valores, true ou false. "Nil" funciona como false mas o número 0 funciona como true. Isso é bastante confundido por muitos
    Number
    Todos os números em Lua são valores "double float"



    Variáveis podem ser convertidas em números pela função tonumber(var) que retorna "nil" caso falhe
    Funções de manipulação de números são encontradas na biblioteca de matemática do Lua (math)

    Strings
    Strings podem receber os mesmos escapes da linguagem C (\n, \t, \0, etc)



    Strings são internamente encriptadas pelo Lua, isso quer dizer que existe apenas uma única cópia de uma string em particular não importa quantas variáveis referem a essa string
    Declarações que contam espaços em branco ou mesmo indicações de pular de linha e uso de tabulação podem ser pegos de forma mais dinâmica usando: string = [[Aqui eu escrevo sem me preocupar com nada e nem mesmo aspas, veja só: ' ""'"''" "]]
    Strings podem ser concadenadas usando o operador ".."
    Se existem muitas strings para serem concadenadas, o melhor jeito é inserir estas em uma tabela (usando table.insert()) e concadená-las (usando table.concat())
    Variáveis podem ser convertidas em strings usando tostring(var) que retorna "nil" caso falhe

    Tables
    Tabelas podem ser indexadas por números, variáveis, funções, outras tabelas, funções, entre outros



    Atribuindo um valor a um campo da tabela que não existe automaticamente cria esse campo
    Ao invés de se usar a função table.getn(table) é possível pegar o número de elementos de uma tabela usando #table onde table é o nume da tabela
    Não confunda table.getn(table) com table.maxn(table). Enquanto a primeira função retorna o número de elementos contido na tabela, o segundo retorna o maior valor numérico contido na tabela e retorna "nil" caso seja uma tabela formada por strings apenas
    Ao contrário de outras linguagens, o número correspondente ao primeiro valor não é 0 e sim o valor 1
    É possível remover valores e elementos de uma função atribuindo-lhes o valor "nil"
    A tabela global se chama "_G" e você pode vê-la assim como as demais tabelas usando (k = key, v = value): for k, v in pairs(_G) do print(k, v) end

    Userdatas
    Userdatas são ponteiros do C/C++ que indicam objetos que não podem ser utilizados em Lua


    Uma "metatable" pode ser um "userdata" para funcionar como uma tabela ou ser chamada como função, operadores próprios, entre outros

    Functions
    Uma função pode retornar múltiplos valores e podem ser atribuídas a várias variáveis


    Funções podem ser colocadas em tabelas
    Valores passados por funções são locais a não ser que sejam tabelas ou userdatas. Isso dá a oportunidade de modificar tabelas dentro de funções
    Funções auxiliares (ou temporárias) podem ser criadas dentro de funções como locais

    Switch

    Muita gente me pergunta se existe uma função "switch" para case statements em Lua, a resposta é não. Mas, o uso de tabelas em funções podem simular esse efeito, veja:



    Código:
    switch = {}
    switch[1] = function() print("Olá a todos") end
    switch[2] = function() print("Meu nome é Yuji") end
    -- ...
    if (switch[1]) then
    switch[1]() -- executa a função que diz "Olá a todos"
    end
    Loops



    No loop "repeat .. until (bool)" não existe o "continue" pois o Lua automaticamente cuida disso. Apesar disso, existe o "break".
    No loop "for ... do" existe um atribuito após o último valor para poder incrementar a variável assim como no PHP e C++


    Mais dicas ainda estão por vir.
  2. Gostei
    polooix deu reputação a Felipek9 em [TUTORIAL] Compilar Debian 7 e Ubuntu 12.07 - TFS 1.0   
    E ai galera, venho para minha primeira contribuição! Tenho visto bastante pessoas com dificuldade ao compilar em Linux. Estarei inserindo imagens ao TUTORIAL para facilitar e melhor explicar.   PROGRAMAS NECESSÁRIOS: http://the.earth.li/~sgtatham/putty/0.63/x86/putty.exe- Putty - Para conectar ao Terminal. http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.9.0.5/FileZilla_3.9.0.5_win32-setup.exe/download?use_mirror=ufpr -Filezilla - Para transferir arquivos ao servidor.     PASSO 1: Acessar o servidor via SSH utilizando o programa Putty. (imagem Putty 1) (imagem Putty 2)     PASSO 2: Digite os comandos abaixo no Putty após conectado. apt-get update apt-get upgrade     PASSO 3: Instalando apache2 apt-get install apache2 cd /var/www     PASSO 4: Instalando php5 cd /var/www apt-get install php5 /etc/init.d/apache2 restart   Apache2 e PHP5 são necessários para deixar o website online. Você pode acessar através de seu IP faça o teste. Digite o seu IP no navegador.     PASSO 5: Instalando MySQL, nos comandos abaixo será necessário a escolha de uma senha para o MySQL  apt-get install mysql-server apt-get install libapache2-mod-auth-mysql apt-get install php5-mysql   Concluída a instalação do MySQL, aplicação necessária para a Database do seu servidor. Você pode acessar através do seu IP seuip/phpmyadmin     PASSO 6: Instalando phpmyadmin, os comandos abaixo será necessário a escolha de uma senha para acesso ao Banco de Dados. apt-get install phpmyadmin   DEBIAN - ln -fvs /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf /etc/init.d/apache2 restart   UBUNTU - echo "include /etc/phpmyadmin/apache.conf" | sudo tee -a /etc/apache2/apache2.conf   Feito isto, está quase tudo pronto. VOcê pode acessar seu banco de dados atraves do seu ip seguindo de /phpmyadmin. Ficando http://seuip/phpmyadmin    Acesse seu banco de dados    USER: root  Password: selecionado no passo acima.     PASSO 7: Compilando o servidor. Nos passos abaixo fará necessário a transferência de arquivos ao seu servidor, você usará o programa FILEZILLA.   Código abaixo, necessário para instalação das Libs para compilar TFS 1.0, caso apareça alguma mensagem de Y ou N, digite Y sudo apt-get install git cmake build-essential liblua5.2-dev libgmp3-dev libmysqlclient-dev libboost-system-dev   PASSO 8: Enviando o datapack, sources e website ao Servidor. Execute o aplicativo FILEZILLA  (Imagem Filezilla 1)   Acesse seu servidor com o mesmo usuário e senha para acessar o Putty.  Usuário: root Senha: sua senha   Acesse o diretório home /home   Envie todos os arquivos para o /home (desktop), concluída transferencia é hora de compilar.   PASSO 9: Acesse a pasta onde estão as Sources de seu TFS 1.0 cd /home/sources   E execute o comando mkdir build && cd build   PASSO 10: Instalando CMake apt-get install cmake   PASSO 11: Execute o comando para compilar o servidos, neste passo se faz necessário você estar no diretório de suas Sources onde o arquivos CMakeLists.txt está e execute cmake ..   PASSO 12: Compilando o TFS 1.0 make   Concluída 100% seu servidor foi Compilado com sucesso.   PASSO 13: Agora através do FILEZILLA, acesse o diretório /home/sources/build e mova o arquivo TFS para a pasta onde está seu datapack.   Para facilitar em seu servidor, através FILEZILLA crie uma pasta chama otserv no diretório /home (imagem diretório datapack)   Envie a pasta >>data<< o >>config.lua<< e o arquivo compilado >>TFS<< para dentro da pasta otserv.    PASSO 14: Dando autorização para TFS, via Putty digite   cd /home/otserv chmod 777 -R tfs   PASSO 15: Ligando o TFS   apt-get install screen screen ./tfs   PASSO 16:  Inserindo sua database ao MySQL. http://seuip/phpmyadmin   Insira seu usuário e senha, conectado ao phpmyadmin, na área superior clique em SQL e execute o comando abaixo CREATE DATABASE global   Acesse ao banco de dados criado, clique no banco de dados Global, vá até a aba superior Importar, escolha o a database de seu website no qual se encontra em seu computador e Execute.   PASSO 17: Inserindo seu WebSite ao servidor. No FILEZILLA vá até o diretório abaixo /var/www   Delete todos os arquivos existem dentro desta pasta, e transfira o seu website para dentro deste diretório. Faça as configurações em seu website através do config.php Lembrando que o server path deverá estar como abaixo. $config['site']['serverPath'] = "/home/otserv/";   PASSO 18: Concluído! Agora é só você estar fazendo as configurações de seu servidor e website.     Pessoal, este é meu primeiro tutorial, caso haja algum erro ou haja alguma dúvida fico a disposição para os ajudar.

Informação Importante

Confirmação de Termo