Eclipse 64 bit aborta ao iniciar no Linux

Olá pessoal!

Esta daqui vai para a galera que tá programando no Linux e que de repente resolveu instalar o Eclipse 64 bit e teve alguma surpresa do tipo “o programa aborta a inicialização”. Show de bola!

fonte: https://mastigado.wordpress.com

Para você ver melhor que tipo de erro é esse sugiro tentar executar o Eclipse via linha de comando, pois assim será mostrado que erro é este que está retornando.

Bem o meu erro foi este:

org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle was activated before the state location was initialized. Will retry after the state location is initialized.

(java:4196): GLib-GObject-WARNING **: cannot register existing type `GdkDisplayManager’

(java:4196): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0′ failed

(java:4196): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)’ failed

(java:4196): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(java:4196): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)’ failed

(java:4196): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(java:4196): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)’ failed

(java:4196): GLib-GObject-WARNING **: cannot register existing type `GdkDisplay’

(java:4196): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0′ failed

(java:4196): GLib-GObject-CRITICAL **: g_type_register_static: assertion `parent_type > 0′ failed

(java:4196): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0′ failed

(java:4196): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)’ failed
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fe19c97173f, pid=4196, tid=140607381382912
#
# JRE version: Java(TM) SE Runtime Environment (7.0_72-b14) (build 1.7.0_72-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.72-b04 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libgdk-x11-2.0.so.0+0x5173f] gdk_display_open+0x3f
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try “ulimit -c unlimited” before starting Java again
#
# An error report file with more information is saved as:
# /usr/local/eclipse/hs_err_pid4196.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
jonas@note:/usr/local/eclipse$ more /usr/local/eclipse/hs_err_pid4196.log
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fe19c97173f, pid=4196, tid=140607381382912
#
# JRE version: Java(TM) SE Runtime Environment (7.0_72-b14) (build 1.7.0_72-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.72-b04 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libgdk-x11-2.0.so.0+0x5173f] gdk_display_open+0x3f
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try “ulimit -c unlimited” before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Dei uma fuçada no Google e descobri que é algo que envolve o GTK. Bem, primeiro teste o comando abaixo no terminal e depois execute o Eclipse:

export SWT_GTK3=0

Se o seu Eclipse rodar normalmente, abra o arquivo eclipse.ini e acrescente a linha abaixo:

–launcher.GTK_version 2

Mais precisamente no local em negrito:

–launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140603-1326
-product
org.eclipse.epp.package.cpp.product
–launcher.defaultAction
openFile
-showsplash
–launcher.GTK_version 2
org.eclipse.platform
–launcher.XXMaxPermSize
256m
–launcher.defaultAction
openFile
–launcher.appendVmargs
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
-vmargs
-Dosgi.requiredJavaVersion=1.7
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m

E pronto! Aparentemente resolvido.

fonte: http://forums.debian.net/viewtopic.php?f=8&t=115477

fonte: http://stackoverflow.com/questions/19332489/how-to-fix-failed-to-write-chttp://forums.debian.net/viewtopic.php?f=8&t=115477ore-dump-core-dumps-have-been-disabled-error-whil

fonte: https://mastigado.wordpress.com

Como recuperar sua sessão de abas do Firefox que está em outro HD

Pois bem gente.

Esta vai para aquela pessoa que vive deixando um monte de abas abertas no seu Firefox e de repente, faz uma substituição de um hd maior no seu pc e quando precisa acessar aquele 1 trilhão de abas abertas, lembra que já não dá mais porque seu Windows é novo, seu Firefox é novo e tá tudo recém instalado. O que fazer para ter  aquele monte de abas antigas abertas novamente?

Simples!

fonte: https://mastigado.wordpress.com

1 – Vá seu hd onde ainda se encontra a instalação do Windows que você usava e entre na pasta abaixo e copie todo o seu conteúdo:

C:\Users\seuusuario\AppData\Roaming\Mozilla

2 – Certifique-se que o Firefox que você instalou no seu novo Windows não esteja gravado em nenhuma sessão, mas mesmo assim, limpe todo o cache de navegação que ele tem.

3 – Vá na mesma pasta, só que desta na vez no seu novo Windows instalado e cole lá dentro todo o conteúdo que você copiou acima. Dane-se o que ele perguntar, mande sobrepor tudo.

4 – Depois de terminado o procedimento, inicie o Firefox do seu Windows novo e clique no botão “Restaurar Sessão Anterior” que se abrirá.

Pronto! Você já pode voltar para aquela vida de abas infinitas abertas e que te faz pensar que você é mais feliz por viver assim.

fonte: https://mastigado.wordpress.com

Configurar Debian Wheezy 7.7 junto com o Windows após ter feito dual boot(e personalizando)

Olá pessoal! Happy new year! \o/

Bem gente, este post vai para quem precisa instalar Windows e Linux juntos no mesmo computador, seja ele pc, note ou netbook. Alguns podem até dizer assim “tira o Windows e deixa só o Linux” e é exatamente isso o que tenho feito em todos os meus pcs, mas(este mas é f***), por vezes precisamos instalar um SQL Server, um 3DS Studio Max, um Visual Studio para fazer testes e programar porque você é um profissional e sabe que não dá para ficar emulando isso no Wine. Por mais que a Microsoft tenha aberto o código do C#, programar na IDE do Mono não é a mesma coisa que no Visual Studio. Enfim, vamos  lá, vamos fazer o que né? Instalar o Linux no dual boot.

fonte: http:mastigado.wordpress.com

Para acessarmos as partições do Windows pelo Linux gravando, lendo e sendo feliz.

Eu não vou explicar para que serve o arquivo fstab porque o meu objetivo aqui é apenas mostrar a configuração que eu fiz para que você possa acessar sua partições que estão no Windows e no sistema de arquivo NTFS. O que você precisa saber sobre o arquivo fstab do Linux é que é nele que deixamos montadas as partições e unidades removíveis que estão permanentes no sistema operacional. Mesmo que isso seja uma explicação grosseira sobre o belo fstab é isso aí mesmo.

1 – Você tem que descobrir onde estão as unidades do Windows que você quer mapear no Linux. Uma das maneiras é utilizar o comando ls no diretório /dev, que é praticamente onde ficam todos os dispositivos físicos conectados no Linux. Você deve listar o diretório desta forma:

ls /dev

barradevMas neste caso acima, eu já sei que minhas partições do Windows são as unidades sda2 e sda3 porque quando fiz meu particionamento manual na instalação do Debian eu vi que elas estavam lá, mas caso você ainda tenha dúvida, você pode usar o navegador de arquivos e mesmo que ele não permita que você monte os seus arquivos, ele diz para você onde estão e quem são estas partições só pelo fato de você clicar sobre elas:

navegadorarquivosNo caso acima ele não deixou eu montar como usuário comum e sim somente como root. Bem, quanto a montar unidades manualmente na linha de comando eu não vou falar aqui porque é assunto para outro post, entretanto, esta é outra maneira de você poder ver a mensagem de erro que me informou onde está e quem é a minha unidade, daí para jogá-la no fstab é um pulo. Lembrando que também existe mais uma forma de se permitir visualizar e alterar as unidades (inclusive montar as partições manualmente), que é utilizar um aplicativo chamado Utilitário de Unidades(Disk Utility). E para dizer como este aplicativo é maravilhoso, vou fazer uma breve descrição sobre ele(portanto se quiser pular este mini texto, pode pular, pois tô fugindo do tema).

Utilitário de Unidades ou Disk Utility(nas versões em inglês)

O Utilitário de Unidades serve tanto para visualizar, quanto montar, desmontar, criar e recriar partições e inclusive formatá-las em vários tipos de sistema de arquivos. Ele também mede o desempenho da unidade fazendo benchmark e traz dados sobre seus dispositivos que só softwares do fabricante fariam, fora que se seu hd estiver bichado, ele avisa, portanto aqui vai um recado de coração sobre este detalhe, se o o Utilitário de Unidades(Disk Utility) algum dia avisar para você que algum hd que você plugou está bichado ou possui algum problema, mesmo que você ache que está tudo bem pelo fato de você tê-lo há anos ou ter comprado na semana passada, troque o hd sem choro(simplesmente compre um novo, faça o backup e use este hd somente para coisas que você sabe que não tem importância de serem perdidas, como temporadas de novelas da Rede Globo ou aquelas fotos do ano novo que você tira enquanto tá rolando a queima de fogos e que depois você nunca mais vai ver(porque quem tava lá era câmera fotográfica e não você, então não é importante porque você não se lembra)).

2 – Certifique-se de que você tem o pacote nffs-3g instalado, senão você tem que instalá-lo(caso seja outra distribuição Linux que não seja baseada em Debian) ou também instalá-lo se for um Debian, mas com o gerenciador de pacotes apt-get:

apt-get install ntfs-3g

Se ele disser que já está instalado, melhor.

3 – Crie as pastas onde ficarão mapeadas as suas unidades

Por padrão no Debian todos os dispositivos que são montados ficam na pasta /media, portanto recomendo criar as pastinhas para mapear estas unidades do Windows lá dentro. Existem distribuições que mapeam na /opt, outras como as baseadas em rpm mapeiam na /mnt, mas você pode criar até na sua home se quiser, mas isso se você quiser entendeu? Porque eu não quero. Então, dê aqueles comandos básicos:

mkdir /media/WINDOWS

mkdir /media/OUTRAPARTICAO

Depois, dê uma permissão de leitura e escrita recursiva para todos (donos, grupos e outros), assim você evita problemas futuros:

chmod 777 -R /media/WINDOWS

chmod 777 -R /media/OUTRAPARTICAO

4 – Finalmente abra o seu arquivo fstab

Agora, o mais bonito disso é, poderíamos ter vindo direto para cá sem passar por todas as etapas acima. Mas sabe como é… é bonito ver as pessoas lendo e se informando. Pois bem, entre no terminal, se logue como root e abra o fstab com o editor de texto Nano:

nano /etc/fstab

E cole estas duas linhas no final do arquivo:

/dev/sda2                              /media/WINDOWS                             ntfs defaults,               umask=000            0 0
/dev/sda3                              /media/OUTRAPARTICAO                 ntfs defaults,               umask=000            0 0

Pronto! Agora reinicie o seu pc e seja feliz. E lembre-se, se não funcionar, alguma coisa errada você fez e a culpa tenderá a ser sua, porque fiz minha parte.

Para acessarmos os mapeamentos do Samba no Linux:

Meu caro, a galera acessa os compartilhamentos do Samba na maioria das vezes pelo Windows, mas se esquece que dá para fazer isso também no Linux. Claro, onde você deve montar estas unidades? No fstab, é claro!

É parecido com o que fizemos para mapear as unidades no Windows, mas mudam algumas coisas já que existem outros parâmetros como login e senha por exemplo. Antigamente utilizávamos o pacote smbfs, só que ele caiu em desuso e agora é um utilizado o cifs, que mudou algumas configurações, mas no final faz a mesma coisa. O procedimento é o mesmo do mapeamento do Windows, primeiro você coloca o local que quer mapear (lá em cima foi uma unidade e aqui será um ip junto com o nome do mapeamento Samba) no computador remoto que deseja acessar. Lembrando que eu criei as pastas XUXACOMBLUSATRANSPARENTE e SOPARABAIXINHOS dentro do /media e com suas devidas permissões:

//192.168.25.120/XUXACOMBLUSATRANSPARENTE   /media/XUXACOMBLUSATRANSPARENTE       cifs      auto,defaults,file_mode=0777,dir_mode=0777,rw,username=usuariosamba,password=senha  2 1
//192.168.25.120/SOPARABAIXINHOS /media/SOPARABAIXINHOS cifs auto,defaults,file_mode=0777,dir_mode=0777,rw,username=usuariosamba,password=senha 2 1

Se você prestar atenção na linha cima, verá que há uma falha de segurança exposta, pois estou passando login e senha num arquivo que vai ficar gravado sem criptografia alguma e isso é extremamente falho. Existe outro método de mapeamento de unidades Samba em que você coloca o login e a senha em um arquivo separado e criptografado para ninguém acessá-lo. Portanto entenda que qualquer um que tenha pelo acesso temporariamente ao modo gráfico do Linux ou que tenha um cd de boot de Linux pode dar dois cliques em cima do fstab, digitar more /etc/fstab, entre outras loucuras mais exóticas, mas que sempre estará com o intuito de descobrir o seu login e senha. Então pense bem antes de implantar isso na sua empresa desta maneira. Não seja irresponsável achando que ninguém entende de Linux ou informática lá dentro.

Para instalarmos o Cairo-Dock(aquele dock do Mac que fica lá embaixo da tela):

Meus caros, trabalhar com o Cairo Dock no Gnome 3 para mim é um adianto. Não por causa do seu visual, mas porque eu não curto este negócio de ficar clicando num menu e ter de digitar o que estou procurando. Não, isto não funciona comigo, pois eu encontro melhor as coisas por nível de hierarquia(com o que está dentro de que). Imagine só, sei que no Painel de Controle do Windows contém Adicionar ou Remover Programas, Configurações de Rede e tudo mais, mas para um usuário que nunca usou o computador ou aquele usuário que já esqueceu como chegar nas coisas ou melhor, esqueceu o nome das coisas(como eu esqueço constantemente), como é que eu vou buscar algo que nem sei o nome? E o pior, nem sei onde está! Já basta o que a Microsoft fez com o menu Iniciar do Windows 8, que certamente por vezes torna mais ágil a busca, mas que para mim que não quer ficar digitando toda a hora porque tenho o mouse para fazer certas tarefas, não funciona. Observe os sistemas MAC-OS X da Apple e veja que ela coloca os seus atalhos por digitação dentro de Maçã > Preferences, mas a mesma mantém o dock com os atalhos para serem acionados pelo mouse. Então Microsoft, vá com sua tentativa de criar tendências para a PQP! E pessoal que fez o Gnome 3, eu amo vocês e fico grato por deixarem eu por meu Cairo Dock lá embaixo. Então instale o bicho:

apt-get install cairo-dock

E neste cara há duas configurações para serem feitas. Uma para caso você utilize o OpenGL e outra para caso você não utilize. Após instalado, você deve colocá-lo para iniciar automaticamente toda a vez em que você liga o seu pc. Para isso, vá em Aplicativos de Sessão(geralmente fica dentro de Sistema > Preferência > Aplicativos de Sessão) e crie um novo item colocando os parâmetros abaixo.

cairo_aplicativos_de_sessaoO curioso é que o Cairo pede que você que você coloque o parâmetro -o no comando cairo-dock no caso se você for usar o Cairo com OpenGL e -c para caso você não tiver suporte à OpenGL. Então neste caso o comando ficaria cairo-dock -o, mas mesmo eu configurando deste jeito, depois de algumas atualizações percebi que ele tirou este “-o” do meu aplicativo de sessão, Então fica deste jeito aí mesmo.

Se você procurar por Cairo Dock em janelas e aplicativos, quando você clicar nele, irá ver a seguinte mensagem:

cairo_dock_aviso

Como eu suponho que utilizo OpenGL deixo o -o no parâmetro de configuração. Dou um sim na escolha e eis que surge:

desktop_com_cairoMas lembre-se que para ele sempre inicializar com o seu sistema operacional configure-o nos aplicativos de sessão.

Ah! Vou deixar uma observação sobre este carinha aí também. Aconselho que se você quiser alterar as configurações dos ícones do Cairo a não alterar as configurações de tema, pois eu achei meio bugado, a ponto de não conseguir voltar novamente para o tema que queria. Aconselho você instalar os dois pacotes abaixo via terminal:

apt-get install gnome-themes

apt-get install gnome-themes-extras

E depois ir em Configurações Avançadas, escolher a opção relacionada a tema e lá escolher o tema dos ícones porque terá o mesmo efeito caso você tivesse alterado a configuração de tema do Cairo Dock.

Para habilitar o clique duplo do mouse pad que vem desabilitado no Debian(sei lá porquê!):

Caras, este aqui é um caso peculiar. Eu sempre observei que a Microsoft copiava a Apple DESCARADAMENTE, até aí tudo bem porque eles não tem originalidade mesmo(ou não tinham até o Steve Jobs morrer e eles terem de se virar para inventar coisas ou só continuar copiando o Linux como eles já faziam), mas eu andei lendo alguns posts que a galera do Linux passou a copiar a Apple no intuito de trazer os usuários de MAC para o Linux. Olha, eu posso dizer que existem vários distros bem parecidas com o MAC, mas existe uma tal de Elementary OS que putz! Eu achei que fosse um MAC quando vi rodando num note branquinho na minha frente. Tem um post do Viva o Linux que fala sobre algumas distros parecidas(http://www.vivaolinux.com.br/artigo/Tres-distros-inspiradas-no-Mac-OS). Mas voltando ao nosso tema, eu acho que galera do Linux sugou tanto a interface da Apple que para alterar as configurações do Note eles copiaram o Preferences do MAC OS X e disseram que é Configurações do Sistema no Gnome 3.

configuracoes_do_sistemaMeu, show de bola!Fica mais intuitivo e tal, ajuda pra caramba, mas é cópia e eu gostei assim mesmo. Agora, eu ainda acho que a galera do “terminal” ainda não percebeu isso e se você for procurar na net sobre como habilitar os cliques do touchpad do Notebook, você deverá encontrar um monte de caras mandando você instalar pacotes e alterar o arquivo xorg.conf e por aí vai.

Veja bem, na tela acima clique em Mouse e touchpad, em seguida na tela que se abrirá, clique na aba Touchpad e em Habilitar cliques do mouse com touchpad e pronto.

touchpad_linux

Para habilitar os itens da área de trabalho

Pois bem, colocaram também uma tal de Configurações Avançadas para você poder personalizar algumas coisas e uma dessas coisas é a opção de poder habilitar o que você deseja que seja mostrado na área de trabalho e até aí tudo bem, mas o estranho é você não conseguir ver já de cara nenhum arquivo ou pasta ou até mesmo colar algo em sua aŕea de trabalho sem que determinada opção esteja habilitada. Então vamos lá:

config_avancadasSe você observar bem, verá que é auto explicativo né? Quer mostrar a lixeira? Então deixa ligado a paradinha e por aí vai.

Ah! Bom lembrar que agora para enviar para lixeira ou excluir algo é Crtl + delete e Shift delete, respectivamente. Por que isso? Disseram que era por causa de segurança.

Pronto, tá aí bem mastigado.

observação: É bem provável que eu vá acrescentando coisas neste post que entender que são indispensáveis para a configuração do Debian.

fonte: http:mastigado.wordpress.com

A variável do ambiente PATH

Olá pessoal!

Hoje vou deixar aqui um post bem legal sobre o PATH do Linux e que foi retirado do site Kioskea. Portanto todos os créditos desta postagem são deles. Vale a pena visitar o endereço que está no final do blog, pois há até um pdf para baixar deste artigo.

A variável do ambiente PATH

I. Preâmbulo
II. O que é o shell ?
III. Definição
IV. Seção de dissecção
V. Adicionar um diretório à variável PATH
VI. E mais…
Veja também: Gravar nome da pasta atual em variavel linux
I. Preâmbulo
Nos sistemas GNU/Linux, queiramos ou não, nos tornamos os administradores do nosso sistema. Cada vez mais, vemos no GNU/Linux o aparecimento de utilitários gráficos para realizar tarefas administrativas.

Mas a linha de comando conhecida sob vários nomes (shell, terminal, console, etc) continua a ser um utilitário muito poderoso e de fácil manuseio.

Depois de aprender o básico, você ficará espantado com a facilidade de utilização desta linha de comando.

O uso da linha de comando é muito mais rápido do que o uso de um utilitário gráfico. Se você contar o tempo do download da interface, a busca (física) do mouse em sua área de trabalho e, sem contar que, além disso, você ainda terá que entrar os dados, então você perderá algumas vantagens desta “linha de comando “e, consequentemente, não beneficiará nem da tecla TAB para a realização do comando, nem do histórico que possibilitaria a repetição de um comando, nem dos pseudônimos para os comandos demorados, etc .

A desvantagem com o shell é que você não poderá segurar a sua xícara de café ou um cigarro com uma mão, enquanto a outra estiver digitando no teclado.
Com o mouse é possível, até você precisar preencher as áreas propostas pelo seu utilitário gráfico preferido.

Mas, quem sabe, com o shell você não decidirá parar de fumar…
O shell é mais barato do que o Niquitin, etc.?!

Mas você ainda está no GNU/Linux e a escolha é sua.

Mas como a liberdade tem um preço, é preciso pagá-lo.
No caso dos sistemas GNU/Linux o preço a ser pago é a liberdade de ler os documentos disponíveis em seu sistema, ou seja, as páginas “man” e o comando “informação”, para explorar melhor o seu sistema.

II. O que é o shell ?
É um software que faz parte do sistema e que tem o papel de processar os comandos ou as linhas de comando entradas no teclado.

Para ver a lista dos shells disponíveis no seu sistema, consulte o arquivo /etc/shells

cat /etc/shells

Um usuário no Linux tem um shell padrão de conexão.

Consulte o arquivo /etc/passwd e verá que o último campo é algo como /bin/<qualquercoisa>. Trata-se da sua shell de conexão.

Para ver os shells dos usuários, usar o comando

cat /etc/passwd | cut -d: -f1,7

Para um usuário em particular, preencher o comando desta maneira :

cat /etc/passwd | cut -d: -f1,7 | grep usuário

Se você estiver em modo gráfico você poderá abrir um terminal (xterm,gterm,konsole, etc) e, depois, escreva suas linhas de comando.

Saiba que o GNU/Linux tem 6 consoles virtuais, cujo acesso a partir da interface gráfica é feito com a combinação das seguintes: Ctrl+ALT+Fn ou
n é um número de 1 a 6.

A partir do console virtual, você poderá alternar para outro com a combinação ALT+Fn, (com n de 1 a 6).
Para voltar para o modo gráfico a partir de um console virtual, faça ALT+F7.

Num shell, podemos ver um prompt de comando do tipo:
usuário@debian: ~$

Se, no lugar do $ estiver um #, saiba que está conectado como administrador, a menos que você tenha modificado a sua configuração.

O prompt do comando muda de acordo com o sistema operacional e pode ser alterado graças a outra variável de ambiente, a PS1.
III. Definição
Vamos começar com o termo genérico de variável.

Uma variável, é um recipiente de memória que armazena um dado que poderá se alterar durante a execução de um programa.

Assim, uma variável tem um nome e um conteúdo. Não vamos entrar em detalhes aqui, sobre o programa para explicar o tipo e o conteúdo da variável

Por enquanto, nos contentaremos em saber que a variável da qual estamos falando chama-se PATH e que seu conteúdo é uma cadeia com os caminhos de diretórios, separados por dois pontos:

Para exibir o conteúdo de uma variável no Shell, você deverá escrever

echo $variável

No caso da variável PATH, você deverá escrever

echo $PATH

IMPORTANTE! Respeite a forma. GNU/Linux faz diferença entre as MAIÚSCULAS e as minúsculas.

Para uma exibição mais agradável você poderá utilizar o comando

echo $PATH | tr : \n

Aqui estão outras maneiras de ver o conteúdo do PATH (para informação, saiba que sempre há outras alternativas para atingir os seus fins…).

printenv PATH
env | grep -i PATH | cut -d= -f2
perl -e ‘print $ENV{PATH},”n”‘
perl -e ‘$,=”n” and print split(“:”,$ENV{PATH}),””‘
perl -e ‘($_=$ENV{PATH})=~s/:|$/n/g and print’

Obviamente, é preferível a mais curta.
IV. Seção de dissecção
Já vimos que a variável PATH tem uma lista de diretórios separados por dois pontos:

Estes são os diretórios onde o shell procura o comando que você digitou no teclado.
A busca é feita na ordem dos diretórios contidos na variável PATH.

Exemplo:

lami20j@debian: ~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/lami20j/bin

Quando escrevemos um comando, o shell vai buscar primeiro no /usr/local/bin, depois no /usr/bin, no /usr/bin/X11, no /usr/games e, finalmente, no /home/lami20j/bin.

Ao encontrar o comando, o shell para a busca e executa o comando encontrado.

Um comando pode ser escrito usando :
– seu nome
– o caminho absoluto ( /bin/cat /etc/passwd )
– o caminho relativo (utilizamos o “.” ou “..” para programas ou scripts que não estão localizados no PATH)

. é o diretório atual
.. é o diretório parente

Ao escrever um comando, podemos nos deparar com diversas situações:
1. o comando é único e se encontra em um dos diretórios
2. o comando não é único e se encontra em diversos diretórios
3. o comando não se encontra em nenhum dos diretórios

1. No 1° caso, as coisas são simples.
Se você fizer um erro de execução é, provavelmente, devido à sintaxe.
Solução: consultar o manual do comando

2. No 2° caso, as coisas também não são tão complicadas.
Suponhamos que dispomos de um comando que se encontra no diretório /usr/bin e que nós instalamos, a partir das fontes, uma versão mais recente do comando cujo executável se encontra no /usr/local/bin.

Se o comando é chamado pleo seu nome, o que acontecerá?

O shell olha no PATH começando pelo 1° diretório encontrado.
No nosso caso, ele encontrará o comando no /usr/local/bin logo, será /usr/local/bin/prog que será executado.

Por outro lado, se ainda quisermos executar o comandoprog que se encontra no /usr/bin, será preciso utilizar o caminho absoluto /usr/bin/prog

3. O 3° caso inclui 2 situações

– o comando existe mas não se encontra em nenhum diretório do nosso PATH
– o comando não existe

Nos dois casos, o alerta de erro será “command not found”

Mas a interpretação não será a mesma.

Certos comandos só podem ser utilizados pelo administrador.
Solução: conecte-se como administrador com su ou su –
Linux utilizar o comando su

Certos comandos, podem se encontrar num diretório que, por sua vez, não se encontram na sua variável PATH.
Solução: – utilizar o caminho absoluto
– adicionar o diretório ao seu PATH

Você criou um script e não está conseguindo executá-lo, seja qual for o caminho especificado ?

Solução : – verificar os direitos de execução no script ( ls -l script )

O comando não existe, neste caso, suponho que você saiba o que fazer. Se não, veja a solução.
Peça ao administrador para que ele instale o programa para você.

Podemos buscar um comando usando, seja “whereis”, seja “which”

whereis comando
which -a comando

No caso do “which” a opção -a nos permite ver todos os caminhos correspondentes.
Sem a opção -a apenas o 1° diretório terá o comando exibido, o que não é ideal já que o comando se encontrará em vários diretórios.
V. Adicionar um diretório à variável PATH
– Apenas para esta sessão

Se quisermos adicionar, por exemplo, /home/user/mes_prog à variável PATH, no shell digite

export PATH=$PATH:/home/user/mes_prog
para ter o diretório em último lugar no PATH.

ou

export PATH=/home/user/mes_prog/:$PATH
para ter seu diretório em primeiro lugar no PATH.

Agora, você poderá utilizar o seu programa apenas digitando o seu nome.

Na desconexão, PATH retomará seu valor padrão, assim /home/user/mes_prog não existirá mais no PATH.

– De maneira permanente

Se você quiser configurar o PATH de maneira permanente, você deverá editar o arquivo de configuração do seu shell de conexão.
Como, na maioria dos casos, é o shell BASH que é utilizado, você deverá editar o seu arquivo /home/user/.bashrc.

Para isso, você deverá utilizar um editor de textos ou, simplesmente, um comando para te facilitar a vida.
Pois é, muitas vezes o uso da linha de comando torna as coisas bem mais fáceis do que o uso do mouse, principalmente em tarefas administrativas (opinião pessoal).

Veja o comando

echo ‘export PATH=$PATH:/home/user/mes_prog’ >> /home/user/.bashrc
Assim, à cada conexão o seu PATH conterá o seu diretório /home/user/prog

Esta operação poderá ser executada pelo usuário user já que se trata do seu ambiente.
VI. E mais…
A variável PATH é apenas uma variável entre muitas que conteem o shell.

Você poderá exibir as variáveis do seu ambiente sem se preocupar com seus nomes (que talvez você nem conheça!).

Para isso, você tem à sua disposição, diversos comandos:

printenv
env
set
export
Tradução feita por Lucia Maurity y Nouira

fonte: http://pt.kioskea.net/faq/2307-bash-a-variavel-do-ambiente-path

Comparar só a data em campo DateTime (SQL Server)

Olá meus caros, boa tarde!

Este post é praticamente um reblog do site Pcflex.org, pois lá encontrei exatamente o que eu procurava. Apesar de não ter entendido muito bem a proposta do site que disse ser em teste um “aglomerado de profissionais de TI”, coloquei ele na categoria de links úteis no blog. Então aí vai, chupado mesmo.

Para comparar somente a data em um campo onde está salvo data e hora, é preciso primeiro converter a data para o formato desejado.

Ex.:

SELECT campodatahora
FROM tabela
WHERE CONVERT(nvarchar(10), campodatahora, 103) = '22/02/2006';

O 103 indica que deve ser retornado o formato dd/MM/yyyy

A tabela abaixo mostra outros códigos que podem ser utilizados com o comando CONVERT.

Supondo CURRENT_TIMESTAMP retornando o dia 22 de fevereiro de 2006 as 16 horas 26 minutos e 8 segundos.

0 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0)
1 02/22/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 1)
2 06.02.22 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 2)
3 22/02/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 3)
4 22.02.06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 4)
5 22-02-06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 5)
6 22 Feb 06 CONVERT(CHAR(9), CURRENT_TIMESTAMP, 6)
7 Feb 22, 06 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 7)
8 16:26:08 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 8 )
9 Feb 22 2006 4:26:08:020PM CONVERT(CHAR(26), CURRENT_TIMESTAMP, 9)
10 02-22-06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 10)
11 06/02/22 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 11)
12 060222 CONVERT(CHAR(6), CURRENT_TIMESTAMP, 12)
13 22 Feb 2006 16:26:08:020 CONVERT(CHAR(24), CURRENT_TIMESTAMP, 13)
14 16:26:08:037 CONVERT(CHAR(12), CURRENT_TIMESTAMP, 14)
20 2006-02-22 16:26:08 CONVERT(CHAR(19), CURRENT_TIMESTAMP, 20)
21 2006-02-22 16:26:08.037 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 21)
22 02/22/06 4:26:08 PM CONVERT(CHAR(20), CURRENT_TIMESTAMP, 22)
23 2006-02-22 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 23)
24 16:26:08 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 24)
25 2006-02-22 16:26:08.037 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 25)
100 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 100)
101 02/22/2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 101)
102 2006.02.22 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)
103 22/02/2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 103)
104 22.02.2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 104)
105 22-02-2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 105)
106 22 Feb 2006 CONVERT(CHAR(11), CURRENT_TIMESTAMP, 106)
107 Feb 22, 2006 CONVERT(CHAR(12), CURRENT_TIMESTAMP, 107)
108 16:26:08 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 108)
109 Feb 22 2006 4:26:08:067PM CONVERT(CHAR(26), CURRENT_TIMESTAMP, 109)
110 02-22-2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 110)
111 2006/02/22 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 111)
112 20060222 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 112)
113 22 Feb 2006 16:26:08:067 CONVERT(CHAR(24), CURRENT_TIMESTAMP, 113)
114 16:26:08:067 CONVERT(CHAR(12), CURRENT_TIMESTAMP, 114)
120 2006-02-22 16:26:08 CONVERT(CHAR(19), CURRENT_TIMESTAMP, 120)
121 2006-02-22 16:26:08.080 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 121)
126 2006-02-22T16:26:08.080 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 126)
127 2006-02-22T16:26:08.080 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 127)
130 24 ???? 1427 4:26:08:080PM CONVERT(CHAR(32), CURRENT_TIMESTAMP, 130)
131 24/01/1427 4:26:08:080PM CONVERT(CHAR(25), CURRENT_TIMESTAMP, 131

Pois bem, esta tabelinha aí acima é show de bola mesmo. Agora, se você não quiser converter data alguma, use o macete que meu chefe(e todos) usam, faça a comparação da data dentro do intervalo, pois também dá certo.


dataenvio > '2014-11-27' and dataenvio < '2014-11-29'

fonte: http://www.pcflex.org/sql/comparar-so-a-data-em-campo-datetime-sql-server/

07 – Criando um aplicação completa em Asp.Net/MVC 4 e ExtJS 4 – Criação do edmx na camada de Domínio

Olá para todos.

Agora que já temos nossas camadas já criadas e nosso script executado no banco, iremos importar estas tabelas para formar as nossas classes na nossa aplicação, pois neste modelo que estou seguindo, não irei utilizar a técnica de Code First, que seria criar as classes manualmente.

Let’s go Bob.

– Vá em View > Other Windows > Package Manager Console e no gerenciador que se abrirá na parte inferior do Visual Studio, selecione GPA.Infra em Default Project e instale o Entity Framework com o comando:

Install-Package EntityFramework

– Em GPA.Infra, clicar com o botão direito em References > Solution e adicionar GPA.Dominio(Aproveite referencie também as Camadas de Infra e Domínio à Camada de Aplicação).

– Em GPA.Infra, clicar com o botão direito e siga em Add > New Item > Data > ADO.NET Entity Data Model com o nome de de GPA.edmx e clicamos em Add.

– Em seguida, escolheremos a opção Generate from database.

Vou deixar uma observação aqui a respeito de tabelas que são entidades fracas contidas em seu banco de dados. Após criar um modelo de banco de dados contendo uma entidade fraca que continha 2 chaves estrangeiras, tive que incluir uma chave primária nesta tabela porque o mapeamento do edmx jogou um erro dizendo que eu não poderia mapear algo sem chave primária. Em razão disso, tive de reescrever alguns pontos no tutorial que trata de modelo lógico.

Warning 2 Error 6002: The table/view ‘GPA.dbo.GPA_Modalidade_Usuario’ does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view. C:\sistemas\dotnet\gpa\GPA\GPA.Infra\GPA.edmx 1 1 GPA.Infra

– Logo após a criação do seu edmx, clique na parte branca do mapeamento(ou pressione F4) e em Code Generation(no lado inferior direito), marque a opção Code Generation como none para que não seja gerado código automático. Em seguir, salve as alterações.

– Em seguida, clique com o botão direito na parte branca e no menu que segue Add Code Generation Item > Code > EF 5.x DbContext Generator e defina-o como GPA.tt. Não ligue para as possíveis caixas de diálogo que podem vir a aparecer. Em seguida, salve novamente e feche o edmx.

– Arraste o seu GPA.tt para o seu projeto de Domínio(GPA.Dominio), pois ele contém suas classes que foram geradas a partir do banco.

– Em seguida, dê 2 cliques em GPA.tt e na linha onde encontra-se

const string inputFile = @”GPA.edmx”;

Troque para

const string inputFile = @”../GPA.Infra/GPA.edmx”;

Já que trocamos de lugar o nosso “tt”, temos de referenciá-lo novamente. Não se esqueça de salvar.

– Altere também em GPA.Context.tt dando 2 cliques dentro de GPA.Infra, onde encontra-se:

using System.Data.Objects;

using System.Data.Objects.DataClasses;

using System.Linq;

Acrescente

using System.Data.Objects;

using System.Data.Objects.DataClasses;

using System.Linq;

using GPA.Dominio;

10º – Apague o GPA.tt contido no GPA.Infra;

11º – Abra o arquivo GPA.Context.cs contido em GPA.Context.tt e adicione a referência de GPA.Dominio.

using System;

using System.Data.Entity;

using System.Data.Entity.Infrastructure;

using GPA.Dominio;

12º – Em seu arquivo app.config dentro de sua camada de infra(GPA.Infra) há uma seção tratando sobre connection string, que é responsável por informar os dados corretos de conexão com seu banco de dados. Se for a primeira vez em que você está conectando no seu banco, abra o arquivo e confira se ela está lá.

<connectionStrings>

<add name=”DefaultConnection” connectionString=”Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aspnet.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True” providerName=”System.Data.SqlClient” />

</connectionStrings>

Criando o Contexto de sua aplicação e seus Repositórios

Dentro da camada de Infra(GPA.Infra), iremos criar um arquivo chamado Contexto.cs para as nossas classes. Este arquivo faz o intermédio entre o banco de dados e a aplicação, utilizando o Entity Framework, que é um framework responsável por abstrair a nossa camada de conexão com banco.

Um pouco sobre o Entity Framework 5

– Com o botão direito em cima da camada de Infra, criaremos o nosso Contexto, Add > Class > Contexto.cs e inserir o conteúdo abaixo(aconselho ler o arquivo e tentar fazê-lo na unha, pois o Visual Studio tem muitos problemas com dependências, por isso, Ctrl + C e Ctrl + V talvez não seja uma idéia tão boa), claro, com as devidas referências.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GPA.Dominio;
using System.Data.Entity;

namespace GPA.Infra
{
public class Contexto : DbContext
{
public DbSet<GPA_Anexo> Anexo { get; set; }

public DbSet<GPA_Modalidade> Modalidade {get; set; }

public DbSet<GPA_Modalidade_Usuario> Modalidade_Usuario {get; set; }

public DbSet<GPA_Resposta> Resposta {get; set; }

public DbSet<GPA_Solicitacao> Solicitacao {get; set; }

public DbSet<GPA_Status> Status {get; set; }

public DbSet<GPA_Tipo_Usuario> TipoUsuario {get; set; }

public DbSet<GPA_Usuario> Usuario {get; set; }
}

}

– Agora, para cada classe, criaremos os repositórios. Enquanto no padrão MVC, utilizamos a camada Model para também declarar o métodos de nossa classe, aqui utilizaremos a camada de Infra, que por sua vez, implementa os métodos em conjunto com a camada de Domínio(GPA.Dominio).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GPA.Dominio;
namespace GPA.Infra
{
public class RepositorioDeUsuario
{

/*Já de cara, instanciaremos o nosso Contexto
* para colocarmos em ação a camada responsável
* pela nossa conexão.
*/

public GPAEntities Contexto { get; set; }

//Aqui abaixo, nosso método construtor
public RepositorioDeUsuario() {

//Inicializamos o nosso Contexto
this.Contexto = new GPAEntities();

/*Aqui, o proxy deve estar desabilitado para
* evitar referência circular
*/
Contexto.Configuration.ProxyCreationEnabled = false;
}

public List<GPA_Usuario> ObterTodosOsUsuarios() {
return this.Contexto.GPA_Usuario.ToList();
}

public void InserirUsuario(GPA_Usuario usuario) {
this.Contexto.GPA_Usuario.Add(usuario);
this.Contexto.SaveChanges();
}

public int BuscarQuantidadeRegistros() {
return this.Contexto.GPA_Usuario.Count();
}

public GPA_Usuario ObterUsuarioPorId(int id) {
return this.Contexto.GPA_Usuario.Find(id);
}
public void RemoverUsuario(GPA_Usuario usuario) {
this.Contexto.GPA_Usuario.Remove(usuario);
this.Contexto.SaveChanges();
}

}

}

Referência Circular

Vale ressaltar que quando mapeamos nosso modelo na camada de Domínio, existem relacionamentos(1:N, N:N, 1:1) trazidos do banco de dados e replicados nas classes que podem gerar um referência circular, por isso utilizamos a opção abaixo marcada como false para corrigirmos este pequeno problema na implementação de nosso sistema.

Contexto.Configuration.ProxyCreationEnabled = false;

É isso aí então pessoal. Fiquem sabendo que provavelmente eu irei atualizar os conteúdos porque muitos estavam em rascunhos quase prontos há mais de um ano, portanto estejam preparados que este conteúdo é passível de revisão. Se tiverem dúvidas, postem aí.

fonte: https://mastigado.wordpress.com

Post Anterior: https://mastigado.wordpress.com/2014/11/25/06-execucao-do-script-de-criacao-de-tabelas-e-seus-relacionamentos-no-sql-server/

06 – Execução do script de criação de tabelas e seus relacionamentos, no SQL Server

Olá para todos!

Gente, não há muito o que dizer quando o assunto é rodar um script SQL no SQL Server, pois eu coloquei este tópico como se fosse algo extraordinário, mas não é tão assim não(mas é legal :) ).

fonte: https://mastigado.wordpress.com

O que eu tenho que fazer? Simples! Abra o seu cliente SQL Server(No meu caso, utilizei o SQL Management Studio), copie o script SQL Server do 3º post desta série, clique com o botão direito em cima do banco GPA que você criou em seu SQL Server, cole o script SQL que você copiou e pressione F5 ou mande executar e pronto!

 

Script SQL do 3º post

Depois disso, você terá as suas tabelas como as que estão do lado esquerdo(Não se preocupe se na minha tela você vê tabelas que não tem no script).

E é isso!

fonte: https://mastigado.wordpress.com

Próximo Post: 07 – Criando um aplicação completa em Asp.Net/MVC 4 e ExtJS 4 – Criação do edmx na camada de Domínio

Post Anterior: 05 – Criando um aplicação completa em Asp.Net/MVC 4 e ExtJS 4 – Criação da Solution no Visual Studio e camadas de Infra, Domínio e Aplicação/

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: