domingo, 19 de agosto de 2012

Problema de computador com ubuntu não conectar a internet, devido a rotas não configuradas

Desejava colocar um cache web, porém não estudei nada sobre configuração de redes e rotas ...
Mas lembrei que em algum lugar, se você não sabe o que está fazendo, deixe outro computador, ou roteador fazer o trabalho para você, foi o que fiz, já que estou estudando agora, redes na prática, não no material da cisco, mas no linux, e como configurar o maldito squid aqui, então para não ficar sem internet, mandei o roteador, com tudo configurado nele, já que não mexi mais nada lá, mande o roteador fazer o trabalho, colocando-o como default gateway (Rota padrão)
Para isso utilizei o comando:$
sudo route add default gw 10.1.1.1 eth0

E a internet voltou a funcionar:

ping www.google.com.br
PING www-cctld.l.google.com (74.125.234.183) 56(84) bytes of data.
64 bytes from gru03s14-in-f23.1e100.net (74.125.234.183): icmp_seq=1 ttl=52 time=23.2 ms
64 bytes from gru03s14-in-f23.1e100.net (74.125.234.183): icmp_seq=2 ttl=52 time=23.4 ms
64 bytes from gru03s14-in-f23.1e100.net (74.125.234.183): icmp_seq=3 ttl=52 time=22.9 ms
64 bytes from gru03s14-in-f23.1e100.net (74.125.234.183): icmp_seq=4 ttl=52 time=23.1 ms

Maravilha agora posso ler mais coisas na internet ...
Cheguei a essa solução lendo o guiafoca online (baixei o .pdf.tar.gz)











É óbvio que essa é a gambiarra da gambiarra, mas para quem está aprendendo como eu, vale a pena, já que sem internet não da pra ficar ...
agora basta colocá-la no crontab

Note que no canto superior direito tenho a rede desconfigurada, é por que preciso aprender outras coisas mais, como dns e uma série de coisas ....

Abraços talvez ajude alguém a fazer uma gambiarra dessas e subir a rede até arrumá-la direitinho ...

domingo, 27 de maio de 2012

Exemplo De Execucao De Shell Script E DOM Em PHP

Esse arquivo.php é um pequeno exemplo de manipulação de DOM em php (é necessário instalar o suporte ao DOM em php),e de como de como fazer chamadas a comandos do sistema operacional (executar comandos do terminal (shell)).
Ao invés de estar chamando (pwd ; file  exSystem.php; stat exSystem.php; date; printenv ; df; lspci; lsusb; last; lsof; whoami ; uptime)
poderia executar iptable, squid para gerenciamento de rotas e de cache web.
Boa sorte, talvez esse simples código o ajude a fazer seu código php chamar um comando shell script do terminal no linux.
Para funcionar as funções exec($cmd);system($cmd);`$cmd`;popen($cmd, 'r'); devem estar habilitadas
 
O código php: 
https://github.com/danilomatias19/blogViagemDaComputacao/blob/master/exemploDeExecucaoDeShellScriptEmPHP/exSystem.php 

https://github.com/danilomatias19/blogViagemDaComputacao/tree/master/exemploDeExecucaoDeShellScriptEmPHP

O que esse código php faz, pode ser vizualizado no vídeo, ele executa um comando no terminal
http://youtu.be/kSvBQEXqB3A?hd=1


quinta-feira, 24 de maio de 2012

Exemplo de código js recebido por ajax e executado dentro de uma div2

Apenas ajustado o exemplo, para executar apenas os scripts enviados no request corrente do servidor
http://viagemdacomputacao.blogspot.com.br/2012/05/exemplo-de-codigo-js-recebido-por-ajax_24.html

Exemplo:
http://presenteperfeito.99k.org/blog/git/executarAjaxDentroDeDiv_2/ajax.html
Código:
https://github.com/danilomatias19/blogViagemDaComputacao/blob/master/executarAjaxDentroDeDiv_2/ajax.html

https://github.com/danilomatias19/blogViagemDaComputacao/blob/master/executarAjaxDentroDeDiv_2/soTexto.php

https://github.com/danilomatias19/blogViagemDaComputacao/blob/master/executarAjaxDentroDeDiv_2/textoJS.php

Exemplo de código js recebido por ajax e executado dentro de uma div

O exemplo:
http://presenteperfeito.99k.org/blog/git/executarAjaxDentroDeDiv/ajax.html
Possui código fonte:
https://github.com/danilomatias19/blogViagemDaComputacao/blob/master/executarAjaxDentroDeDiv/ajax.html

https://github.com/danilomatias19/blogViagemDaComputacao/blob/master/executarAjaxDentroDeDiv/textoJS.php

https://github.com/danilomatias19/blogViagemDaComputacao/blob/master/executarAjaxDentroDeDiv/soTexto.php

o código fonte está documentado de maneira didática.
É um exemplo simples de ajax com POST, que complementa o exemplo
http://viagemdacomputacao.blogspot.com.br/2012/05/exemplo-de-codigo-js-recebido-por-ajax.html , com a diferença que agora não é mais necessário passar um array com todas as tags html em uma posição e todas as tags javascript em outra posição.
Como são executados todos os códigos das tags

sábado, 19 de maio de 2012

Mini screencast de como instalar e usar doxygen no ubuntu

Veja o screencast em:
http://youtu.be/oB40yKxppco?hd=1
Veja a páginas que está sendo seguido o passo a passo:
http://presenteperfeito.99k.org/blog/git/doxygen/RoteiroDoxygenDM.html#2_1instalarDoxygen


Comando ssh ṕara rodar aplicação gráfica (x)

Sempre enche o saco, quando desejo abrir um documento no texmaker, com o usuário da minha mãe, aqui.
Para resolver esse problema, basta conectar via ssh com suporte ao servidor X, em outras palavras dou um:


>...:~$ ssh -X guiomar@10.1.1.17

Para saber mais acesse:
http://andrechies.blogspot.com.br/2008/04/conectando-um-x-remoto-via-ssh.html
Após isso finalmente dou o:

>...:~$ texmaker

sexta-feira, 4 de maio de 2012

Notação BNF da gramática de javascript

Para estudar bem a linguagem temos que entender bem ela, resolvi dar uma ollhadinha se achava a notação bnf (Baccus Formal Normal) de javascript


De acordo com:
https://github.com/luqui/jsexp/blob/7e1ad367545ee482a16a5712a0a7f2a17604d8f5/grammars/javascript.js

var javascript_grammar = {
    program: [ [ 'stmts' ] ],
    stmts: [ [ ],
             [ 'stmt', 'more_stmts' ] ],
    more_stmts: [ [ ],
                [ /^;/, 'stmts' ] ],
    stmt: [ [ 'var_decl' ],
            [ 'expr' ],
            [ 'block' ],
            [ 'return_stmt' ],
            [ 'void_stmt' ],
            [ 'for_stmt' ],
            [ 'foreach_stmt' ],
            [ 'if_stmt' ],
            [ 'function_stmt' ] ],
    return_stmt: [ [ 'return_keyword', /^\s+/, 'expr' ] ],
    void_stmt: [ [ 'void_keyword', /^\s+/, 'expr' ] ],
    function_stmt: [ [ 'function_keyword', /^\s+/, 'identifier', /^\(/, 'arg_list', /^\)/, 'block' ] ],
    // TODO what is the syntactic class of the first clause?
    for_stmt: [ [ 'for_keyword', /^\(/, 'stmt', /^;/, 'expr', /^;/, 'expr', /^\)/, 'stmt' ] ],
    foreach_stmt: [ [ 'for_keyword', /^\(/, 'foreach_var_decl', /^\s+/, 'in_keyword', 'expr', /^\)/, 'stmt' ] ],
    if_stmt: [ [ 'if_keyword', /^\(/, 'expr', /^\)/, 'stmt', 'else_clause' ] ],
    else_clause: [ [ ], [ 'else_keyword', 'stmt' ] ],
    foreach_var_decl: [ [ 'var_keyword', 'identifier' ],
                        [ 'identifier' ] ],
    
    var_decl: [ [ 'var_keyword', /^\s+/, 'initializer_list' ] ],
    initializer_list: [ [ 'initializer' ],
                        [ 'initializer_list', /^,/, 'initializer' ] ],
    initializer: [ [ 'identifier', /^=/, 'expr' ] ],
    identifier: [ [ /^[a-zA-Z_$][\w$]*/ ] ],
    expr: [ [ 'assignment_expr' ] ],
    
    assignment_expr: [ [ 'operator_expr' ],
                       [ 'operator_expr', 'assignment_operator', 'assignment_expr' ] ],
    assignment_operator: [ [ /^[+*\/%-]?=/ ] ],
    // not modeling all precedence levels
    operator_expr: [ [ 'unary_expr' ],
                     [ 'unary_expr', 'operator', 'operator_expr' ] ],
    operator: [ [ /^(\+|-|\*|\/|%|==|!=|>|>=|<|<=|===|!==|\|\||&&|in)/ ] ],
    unary_expr: [ [ 'atomic_expr' ],
                  [ 'prefix_operator', 'unary_expr' ] ],
    prefix_operator: [ [ /^(\+\+|--|\+|-|!)/ ] ],
    postfix_operator: [ [ /^(\+\+|--)/ ] ],
    atomic_expr: [ [ 'literal' ],
                   [ 'function_expr' ],
                   [ 'array_expr' ],
                   [ 'object_expr' ],
                   [ 'index_expr' ],
                   [ 'funcall_expr' ],
                   [ 'variable' ],
                   [ /^\(/, 'expr', /^\)/ ] ],
    literal: [ [ floating_point_regexp ],
               [ /^"/, 'dq_string', /^"/ ],
               [ /^'/, 'sq_string', /^'/ ],
               [ /\//, 'slash_string', /\// ] ],
    dq_string: [ [ /^[^"\\]*(\\.[^"\\]*)*/ ] ],
    sq_string: [ [ /^[^'\\]*(\\.[^'\\]*)*/ ] ],
    slash_string: [ [ /^[^\/\\]*(\\.[^\/\\]*)*/ ] ],
    
    function_expr: [ [ 'function_keyword', /^\(/, 'arg_list', /^\)/, 'block' ] ],
    arg_list: [ [ ], [ 'identifier', 'more_arg_list' ] ],
    more_arg_list: [ [ ], [ /^,/, 'identifier', 'more_arg_list' ] ],
    block: [ [ 'open_brace', 'stmts', /^\}/ ] ],
    array_expr: [ [ /^\[/, 'expr_list', /^\]/ ] ],
    
    expr_list: [ [ ], [ 'expr', 'more_expr_list' ] ],
    more_expr_list: [ [ ], [ /^,/, 'expr', 'more_expr_list' ] ],
    object_expr: [ [ 'open_brace', 'property_list', /^\}/ ] ],
    property_list: [ [ ], [ 'property_kv', 'more_property_list' ] ],
    more_property_list: [ [ ], [ /^,/, 'property_kv', 'more_property_list' ] ],
    property_kv: [ [ 'property_key', /^:/, 'expr' ] ],
    property_key: [ [ 'identifier' ],
                    [ 'literal' ] ], // not exactly right. eg. regexes can't be keys
    index_expr: [ [ 'atomic_expr', /^\[/, 'expr', /^\]/ ],
                  [ 'atomic_expr', /^\./, 'identifier' ] ],
    funcall_expr: [ [ 'atomic_expr', /^\(/, 'expr_list', /^\)/ ] ],
    variable: [ [ 'identifier' ] ],
    var_keyword: [ [ /^var/ ] ],
    function_keyword: [ [ /^function/ ] ],
    return_keyword: [ [ /^return/ ] ],
    void_keyword: [ [ /^void/ ] ],
    for_keyword: [ [ /^for/ ] ],
    in_keyword: [ [ /^in/ ] ],
    if_keyword: [ [ /^if/ ] ],
    else_keyword: [ [ /^else/ ] ],
    open_brace: [ [ /^{/ ] ],
};



http://javascript.comsci.us/syntax/statement/bnf.html

BNF

executable-statement
labeled-statement
unlabeled-statement
simple-statement
::=
::=
structured-statement
::=
::=
::=
::=
block-statement-list
block-statement
compound-statement
::= '{' '}'
do-statement
::= 'do' 'while' '(' ')'
expression-statement
::= ';'
for-statement
if-statement
::= 'if' '(' ')'
if-else-statement
::= 'if' '(' ')' 'else'
jump-statement
::=
::=
::=
return-statement
::= 'return' ';'
::= 'return' ';'
switch-statement
::= 'switch' '(' ')' '{' '}'
while-statement
::= 'while' '(' ')'
 
 http://javascript.comsci.us/syntax/statement/index.html
 
 
 
 
 
 
 Notação BNF do php:
 
http://php.comsci.us/syntax/statement/bnf.php


::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::= 'break' ';'
::= 'break' ';'
::= '{' '}'
::= 'continue' ';'
::= 'continue' ';'
::= 'do' 'while' '(' ')' ';'
::= 'for' '(' ';' ';' ')'
::= 'if' '(' ')'
::= 'if' '(' ')' 'else'
::= 'if' '(' ')'
::= 'if' '(' ')'
::= 'return' ';'
::= 'return' ';'
::= 'return' ';'
::= 'switch' '(' ')' '{' '}'
::= 'while' '(' ')'
 
 
 
Do Sql:
http://savage.net.au/SQL/sql-2003-2.bnf.html

http://savage.net.au/SQL/sql-92.bnf.html


http://savage.net.au/SQL/index.html

http://en.wikipedia.org/wiki/Syntax_diagram/
 
http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form

http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form


http://www.flickr.com/photos/nicksieger/280662871/


http://blog.nicksieger.com/articles/2006/10/27/visualization-of-rubys-grammar


Ainda de acordo com  o anexo da Standard ECMA-262
 ECMAScript Language  Specification 5.1 Edition / June 2011:
http://www.ecma-international.org/publications/standards/Ecma-262.htm

A.1 Lexical Grammar
SourceCharacter :: See clause 6
any Unicode code unit
InputElementDiv :: See clause 7
WhiteSpace
LineTerminator
Comment
Token
DivPunctuator
InputElementRegExp :: See clause 7
WhiteSpace
LineTerminator
Comment
Token
RegularExpressionLiteral
WhiteSpace :: See 7.2







LineTerminator :: See 7.3




LineTerminatorSequence :: See 7.3

[lookahead  ]
 
 
 
Comment ::
MultiLineComment
SingleLineComment
MultiLineComment :: See 7.4
/* MultiLineCommentCharsopt */
MultiLineCommentChars :: See 7.4
MultiLineNotAsteriskChar MultiLineCommentCharsopt
* PostAsteriskCommentCharsopt
PostAsteriskCommentChars :: See 7.4
MultiLineNotForwardSlashOrAsteriskChar MultiLineCommentCharsopt
* PostAsteriskCommentCharsopt
MultiLineNotAsteriskChar :: See 7.4
SourceCharacter but not *
MultiLineNotForwardSlashOrAsteriskChar :: See 7.4
SourceCharacter but not one of / or *
SingleLineComment :: See 7.4
// SingleLineCommentCharsopt
SingleLineCommentChars :: See 7.4
SingleLineCommentChar SingleLineCommentCharsopt
SingleLineCommentChar :: See 7.4
SourceCharacter but not LineTerminator
Token :: See 7.5
IdentifierName
Punctuator
NumericLiteral
StringLiteral
Identifier :: See 7.6
IdentifierName but not ReservedWord
IdentifierName :: See 7.6
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
\ UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation


See 7.6
UnicodeLetter ::
See 7.6
any character in the Unicode categories ―Uppercase letter (Lu)‖, ―Lowercase letter
(Ll)‖, ―Titlecase letter (Lt)‖, ―Modifier letter (Lm)‖, ―Other letter (Lo)‖, or ―Letter
number (Nl)‖.
UnicodeCombiningMark ::
See 7.6
any character in the Unicode categories ―Non-spacing mark (Mn)‖ or ―Combining
spacing mark (Mc)‖
UnicodeDigit :: See 7.6
any character in the Unicode category ―Decimal number (Nd)‖
UnicodeConnectorPunctuation :: See 7.6
any character in the Unicode category ―Connector punctuation (Pc)‖
ReservedWord :: See 7.6.1
Keyword
FutureReservedWord
NullLiteral
BooleanLiteral
Keyword :: one of do instanceof typeof
break else new var
case finally return void
catch for switch while
continue function this with
debugger if throw
default in try
delete
See 7.6.1.1
FutureReservedWord :: one of enum extends super
class export import
const
See 7.6.1.2
The following tokens are also considered to be FutureReservedWords when parsing strict mode
code (see 10.1.1).
implements
interface
yield
let
package
private
protected
public
static
Punctuator :: one of
{
}
See 7.7
( ) [ ]
<=
. ; , < > >= == != === !== + - * % ++ --
<< >> >>> & | ^
! ~ && || ? :
= += -= *= %= <<=
>>= >>>= &= |= ^= DivPunctuator :: one of See 7.7
                  /
                  /=
Literal :: See 7.8
NullLiteral
BooleanLiteral
NumericLiteral
StringLiteral
RegularExpressionLiteral
NullLiteral :: See 7.8.1
null
BooleanLiteral :: See 7.8.2
true
false
NumericLiteral :: See 7.8.3
DecimalLiteral
HexIntegerLiteral
DecimalLiteral :: See 7.8.3
DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt
. DecimalDigits ExponentPartopt
DecimalIntegerLiteral ExponentPartopt
DecimalIntegerLiteral :: See 7.8.3
0
NonZeroDigit DecimalDigitsopt
DecimalDigits :: See 7.8.3
DecimalDigit
DecimalDigits DecimalDigit
DecimalDigit :: one of
0 1 2 3 4 5 6  7 8 9
NonZeroDigit :: one of
1 2 3 4 5
See 7.8.3
6
7
8
9
ExponentPart :: See 7.8.3
ExponentIndicator SignedInteger
ExponentIndicator :: one of See 7.8.3
e E
SignedInteger :: See 7.8.3
DecimalDigits
+ DecimalDigits
- DecimalDigits
HexIntegerLiteral :: See 7.8.3
0x HexDigit
0X HexDigit
HexIntegerLiteral HexDigit
HexDigit :: one of See 7.8.3
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
StringLiteral :: See 7.8.4
" DoubleStringCharactersopt "
' SingleStringCharactersopt '
DoubleStringCharacters :: See 7.8.4
DoubleStringCharacter DoubleStringCharactersopt
SingleStringCharacters :: See 7.8.4
SingleStringCharacter SingleStringCharactersopt
DoubleStringCharacter :: See 7.8.4
SourceCharacter but not one of " or \ or LineTerminator
\ EscapeSequence
LineContinuation
SingleStringCharacter :: See 7.8.4
SourceCharacter but not one of ' or \ or LineTerminator
\ EscapeSequence
LineContinuation
LineContinuation :: See 7.8.4
\ LineTerminatorSequence
EscapeSequence :: See 7.8.4
CharacterEscapeSequence
0 [lookahead  DecimalDigit]
  HexEscapeSequence
  UnicodeEscapeSequence
CharacterEscapeSequence :: See 7.8.4
SingleEscapeCharacter
NonEscapeCharacter
SingleEscapeCharacter :: one of
' " \ b f n r t v
NonEscapeCharacter :: See 7.8.4
SourceCharacter but not one of EscapeCharacter or LineTerminator
EscapeCharacter :: See 7.8.4
SingleEscapeCharacter
DecimalDigit
x
u
HexEscapeSequence :: See 7.8.4
x HexDigit HexDigit
UnicodeEscapeSequence :: See 7.8.4
u HexDigit HexDigit HexDigit HexDigit
RegularExpressionLiteral :: See 7.8.5
/ RegularExpressionBody / RegularExpressionFlags
RegularExpressionBody :: See 7.8.5
RegularExpressionFirstChar RegularExpressionChars
RegularExpressionChars :: See 7.8.5
[empty]
RegularExpressionChars RegularExpressionChar
RegularExpressionFirstChar :: See 7.8.5
RegularExpressionNonTerminator but not one of * or \ or / or [
RegularExpressionBackslashSequence
RegularExpressionClass
RegularExpressionChar :: See 7.8.5
RegularExpressionNonTerminator but not \ or / or [
RegularExpressionBackslashSequence
RegularExpressionClass
RegularExpressionBackslashSequence :: See 7.8.5
\ RegularExpressionNonTerminator
RegularExpressionNonTerminator :: See 7.8.5
SourceCharacter but not LineTerminator
RegularExpressionClass :: See 7.8.5
[ RegularExpressionClassChars ]
RegularExpressionClassChars :: See 7.8.5
[empty]
RegularExpressionClassChars RegularExpressionClassChar
RegularExpressionClassChar ::
RegularExpressionNonTerminator but not ] or \
RegularExpressionBackslashSequence
gularExpressionFlags ::
See 7.8.5
[empty]
RegularExpressionFlags IdentifierPart
A.2 Number Conversions
StringNumericLiteral ::: See 9.3.1
StrWhiteSpaceopt
StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt
StrWhiteSpace ::: See 9.3.1
StrWhiteSpaceChar StrWhiteSpaceopt
StrWhiteSpaceChar ::: See 9.3.1
WhiteSpace
LineTerminator
StrNumericLiteral ::: See 9.3.1
StrDecimalLiteral
HexIntegerLiteral
StrDecimalLiteral ::: See 9.3.1
StrUnsignedDecimalLiteral
+ StrUnsignedDecimalLiteral
- StrUnsignedDecimalLiteral
StrUnsignedDecimalLiteral ::: See 9.3.1
Infinity
DecimalDigits . DecimalDigitsopt ExponentPartopt
. DecimalDigits ExponentPartopt
DecimalDigits ExponentPartopt
DecimalDigits ::: See 9.3.1
DecimalDigit
DecimalDigits DecimalDigit
DecimalDigit ::: one of
0 1 2 3 4
See 9.3.1
5
6
7
8
9
ExponentPart ::: See 9.3.1
ExponentIndicator SignedInteger
ExponentIndicator ::: one of See 9.3.1
e E
SignedInteger :::
DecimalDigits
+ DecimalDigits
- DecimalDigits
HexIntegerLiteral ::: See 9.3.1
0x HexDigit
0X HexDigit
HexIntegerLiteral HexDigit
HexDigit ::: one of See 9.3.1
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
A.3 Expressions
PrimaryExpression : See 11.1
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
ArrayLiteral : See 11.1.4
[ Elisionopt ]
[ ElementList ]
[ ElementList , Elisionopt ]
ElementList : See 11.1.4
Elisionopt AssignmentExpression
ElementList , Elisionopt AssignmentExpression
Elision : See 11.1.4
,
Elision ,
ObjectLiteral : See 11.1.5
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }
PropertyNameAndValueList : See 11.1.5
PropertyAssignment
PropertyNameAndValueList , PropertyAssignment
PropertyAssignment : See 11.1.5
PropertyName : AssignmentExpression
get PropertyName ( ) { FunctionBody }
set PropertyName ( PropertySetParameterList ) { FunctionBody }
PropertyName : See 11.1.5
IdentifierName
StringLiteral
NumericLiteral
PropertySetParameterList :
Identifier

MemberExpression : See 11.2
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
NewExpression : See 11.2
MemberExpression
new NewExpression
CallExpression : See 11.2
MemberExpression Arguments
CallExpression Arguments
CallExpression [ Expression ]
CallExpression . IdentifierName
Arguments : See 11.2
()
( ArgumentList )
ArgumentList : See 11.2
AssignmentExpression
ArgumentList , AssignmentExpression
LeftHandSideExpression : See 11.2
NewExpression
CallExpression
PostfixExpression : See 11.3
LeftHandSideExpression
LeftHandSideExpression [no LineTerminator here] ++
LeftHandSideExpression [no LineTerminator here] --
UnaryExpression : See 11.4
PostfixExpression
delete UnaryExpression
void UnaryExpression
typeof UnaryExpression
++ UnaryExpression
-- UnaryExpression
+ UnaryExpression
- UnaryExpression
~ UnaryExpression
! UnaryExpression
MultiplicativeExpression :
UnaryExpression
MultiplicativeExpression * UnaryExpression
MultiplicativeExpression / UnaryExpression
MultiplicativeExpression % UnaryExpression
AdditiveExpression : See 11.6
MultiplicativeExpression
AdditiveExpression + MultiplicativeExpression
AdditiveExpression - MultiplicativeExpression
ShiftExpression : See 11.7
AdditiveExpression
ShiftExpression << AdditiveExpression
ShiftExpression >> AdditiveExpression
ShiftExpression >>> AdditiveExpression
RelationalExpression : See 11.8
ShiftExpression
RelationalExpression < ShiftExpression
RelationalExpression > ShiftExpression
RelationalExpression <= ShiftExpression
RelationalExpression >= ShiftExpression
RelationalExpression instanceof ShiftExpression
RelationalExpression in ShiftExpression
RelationalExpressionNoIn : See 11.8
ShiftExpression
RelationalExpressionNoIn < ShiftExpression
RelationalExpressionNoIn > ShiftExpression
RelationalExpressionNoIn <= ShiftExpression
RelationalExpressionNoIn >= ShiftExpression
RelationalExpressionNoIn instanceof ShiftExpression
EqualityExpression : See 11.9
RelationalExpression
EqualityExpression == RelationalExpression
EqualityExpression != RelationalExpression
EqualityExpression === RelationalExpression
EqualityExpression !== RelationalExpression
EqualityExpressionNoIn : See 11.9
RelationalExpressionNoIn
EqualityExpressionNoIn == RelationalExpressionNoIn
EqualityExpressionNoIn != RelationalExpressionNoIn
EqualityExpressionNoIn === RelationalExpressionNoIn
EqualityExpressionNoIn !== RelationalExpressionNoIn
BitwiseANDExpression : See 11.10
EqualityExpression
BitwiseANDExpression & EqualityExpression
BitwiseANDExpressionNoIn :
EqualityExpressionNoIn
BitwiseANDExpressionNoIn & EqualityExpressionNoIn
BitwiseXORExpression : See 11.10
BitwiseANDExpression
BitwiseXORExpression ^ BitwiseANDExpression
BitwiseXORExpressionNoIn : See 11.10
BitwiseANDExpressionNoIn
BitwiseXORExpressionNoIn ^ BitwiseANDExpressionNoIn
BitwiseORExpression : See 11.10
BitwiseXORExpression
BitwiseORExpression | BitwiseXORExpression
BitwiseORExpressionNoIn : See 11.10
BitwiseXORExpressionNoIn
BitwiseORExpressionNoIn | BitwiseXORExpressionNoIn
LogicalANDExpression : See 11.11
BitwiseORExpression
LogicalANDExpression && BitwiseORExpression
LogicalANDExpressionNoIn : See 11.11
BitwiseORExpressionNoIn
LogicalANDExpressionNoIn && BitwiseORExpressionNoIn
LogicalORExpression : See 11.11
LogicalANDExpression
LogicalORExpression || LogicalANDExpression
LogicalORExpressionNoIn : See 11.11
LogicalANDExpressionNoIn
LogicalORExpressionNoIn || LogicalANDExpressionNoIn
ConditionalExpression : See 11.12
LogicalORExpression
LogicalORExpression ? AssignmentExpression : AssignmentExpression
ConditionalExpressionNoIn : See 11.12
LogicalORExpressionNoIn
LogicalORExpressionNoIn ? AssignmentExpression : AssignmentExpressionNoIn
AssignmentExpression : See 11.13
ConditionalExpression
LeftHandSideExpression = AssignmentExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression
AssignmentExpressionNoIn :
ConditionalExpressionNoIn
LeftHandSideExpression = AssignmentExpressionNoIn
LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn
AssignmentOperator : one of
*=
/=
%=
+=
See 11.13
-=
<<=
>>=
>>>= &=
^=
|=
Expression : See 11.14
AssignmentExpression
Expression , AssignmentExpression
ExpressionNoIn : See 11.14
AssignmentExpressionNoIn
ExpressionNoIn , AssignmentExpressionNoIn
A.4 Statements
Statement : See clause 12
Block
VariableStatement
EmptyStatement
ExpressionStatement
IfStatement
IterationStatement
ContinueStatement
BreakStatement
ReturnStatement
WithStatement
LabelledStatement
SwitchStatement
ThrowStatement
TryStatement
DebuggerStatement
Block : See 12.1
{ StatementListopt }
StatementList : See 12.1
Statement
StatementList Statement
VariableStatement : See 12.2
var VariableDeclarationList ;
VariableDeclarationList : See 12.2
VariableDeclaration
VariableDeclarationList , VariableDeclaration
VariableDeclarationListNoIn : See 12.2
VariableDeclarationNoIn
VariableDeclarationListNoIn , VariableDeclarationNoIn
VariableDeclaration : See 12.2
Identifier Initialiseropt
VariableDeclarationNoIn : See 12.2
Identifier InitialiserNoInopt
 Initialiser : See 12.2
= AssignmentExpression
InitialiserNoIn : See 12.2
= AssignmentExpressionNoIn
EmptyStatement : See 12.3
;
ExpressionStatement :
[lookahead  {{, function}] Expression
See 12.4
;
IfStatement : See 12.5
if ( Expression ) Statement else Statement
if ( Expression ) Statement
IterationStatement : See 12.6
do Statement while ( Expression );
while ( Expression ) Statement
for (ExpressionNoInopt; Expressionopt ; Expressionopt ) Statement
for ( var VariableDeclarationListNoIn; Expressionopt ; Expressionopt ) Statement
for ( LeftHandSideExpression in Expression ) Statement
for ( var VariableDeclarationNoIn in Expression ) Statement
ContinueStatement : See 12.7
continue ;
continue [no LineTerminator here] Identifier ;
BreakStatement : See 12.8
break ;
break [no LineTerminator here] Identifier ;
ReturnStatement : See 12.9
return ;
return [no LineTerminator here] Expression ;
WithStatement : See 12.10
with ( Expression ) Statement
SwitchStatement : See 12.11
switch ( Expression ) CaseBlock
CaseBlock : See 12.11
{ CaseClausesopt }
{ CaseClausesopt DefaultClause CaseClausesopt }
CaseClauses : See 12.11
CaseClause
CaseClauses CaseClause
CaseClause : See 12.11
case Expression : StatementListopt
DefaultClause : See 12.11
default : StatementListopt
LabelledStatement : See 12.12
Identifier : Statement
ThrowStatement : See 12.13
throw [no LineTerminator here] Expression ;
TryStatement : See 12.14
try Block Catch
try Block Finally
try Block Catch Finally
Catch : See 12.14
catch ( Identifier ) Block
Finally : See 12.14
finally Block
DebuggerStatement : See 12.15
debugger ;
A.5 Functions and Programs
FunctionDeclaration : See clause 13
function Identifier ( FormalParameterListopt ) { FunctionBody }
FunctionExpression : See clause 13
function Identifieropt ( FormalParameterListopt ) { FunctionBody }
FormalParameterList : See clause 13
Identifier
FormalParameterList , Identifier
FunctionBody : See clause 13
SourceElementsopt
Program : See clause 14
SourceElementsopt
SourceElements : See clause 14
SourceElement
SourceElements SourceElement

SourceElement :
Statement
FunctionDeclaration
See clause 14
A.6 Universal Resource Identifier Character Classes
uri :::
See 15.1.3
uriCharactersopt
uriCharacters ::: See 15.1.3
uriCharacter uriCharactersopt
uriCharacter ::: See 15.1.3
uriReserved
uriUnescaped
uriEscaped
uriReserved ::: one of
; / ? : @
See 15.1.3
&
=
+
$
,
uriUnescaped ::: See 15.1.3
uriAlpha
DecimalDigit
uriMark
uriEscaped ::: See 15.1.3
% HexDigit HexDigit
uriAlpha ::: one of e f g h i
a b c d E F G H I
A B C D
uriMark ::: one of ~ * ' ( )
- _ . !
j
J
k
K
l
L
m
M
n
N
o
O
p
P
q
Q
r
R
s
S
t
T
u
U
See 15.1.3
v w x
V W X
y
Y
z
Z
See 15.1.3
A.7 Regular Expressions
Pattern :: See 15.10.1
Disjunction
Disjunction :: See 15.10.1
Alternative
Alternative | Disjunction
Alternative :: See 15.10.1
[empty]
Alternative Term
Term :: See 15.10.1
Assertion
Atom
Atom Quantifier
Assertion :: See 15.10.1
^
$
\ b
\ B
( ? = Disjunction )
( ? ! Disjunction )
Quantifier :: See 15.10.1
QuantifierPrefix
QuantifierPrefix ?
QuantifierPrefix :: See 15.10.1
*
+
?
{ DecimalDigits }
{ DecimalDigits , }
{ DecimalDigits , DecimalDigits }
Atom :: See 15.10.1
PatternCharacter
.
\ AtomEscape
CharacterClass
( Disjunction )
( ? : Disjunction )
PatternCharacter :: See 15.10.1
SourceCharacter but not one of-
^ $ \ . * + ? (
)
[
]
{
}
|
AtomEscape :: See 15.10.1
DecimalEscape
CharacterEscape
CharacterClassEscape
CharacterEscape :: See 15.10.1
ControlEscape
c ControlLetter
HexEscapeSequence
UnicodeEscapeSequence
IdentityEscape
ControlEscape :: one of See 15.10.1
f n r t v
ControlLetter :: one of
a b c d e
A B C D E
f
F
g
G
h
H
i
I
j
J
k
K
l
L
m
M
n
N
o
O
p
P
q
Q
r
R
s
S
t
T
u
U
See 15.10.1
v w x
V W X
IdentityEscape :: See 15.10.1
SourceCharacter but not IdentifierPart


CharacterClassEscape :: one of See 15.10.1
d D s S w W
CharacterClass :: See 15.10.1
[ [lookahead  {^}] ClassRanges ]
  [ ^ ClassRanges ]
ClassRanges ::
z
Z
See 15.10.1
DecimalEscape ::
DecimalIntegerLiteral [lookahead  DecimalDigit]
y
Y
See 15.10.1
[empty]
NonemptyClassRanges
NonemptyClassRanges :: See 15.10.1
ClassAtom
ClassAtom NonemptyClassRangesNoDash
ClassAtom – ClassAtom ClassRanges
NonemptyClassRangesNoDash :: See 15.10.1
ClassAtom
ClassAtomNoDash NonemptyClassRangesNoDash
ClassAtomNoDash – ClassAtom ClassRanges
ClassAtom :: See 15.10.1
-
ClassAtomNoDash
ClassAtomNoDash :: See 15.10.1
SourceCharacter but not one of \ or ] or -
\ ClassEscape
ClassEscape :: See 15.10.1
DecimalEscape
b
CharacterEscape
CharacterClassEscape
A.8 JSON
A.8.1 JSON Lexical Grammar
JSONWhiteSpace :: See 15.12.1.1




JSONString :: See 15.12.1.1
" JSONStringCharactersopt "
JSONStringCharacters :: See 15.12.1.1
JSONStringCharacter JSONStringCharactersopt
JSONStringCharacter :: See 15.12.1.1
SourceCharacter but not one of " or \ or U+0000 through U+001F
\ JSONEscapeSequence
JSONEscapeSequence :: See 15.12.1.1
JSONEscapeCharacter
UnicodeEscapeSequence
JSONEscapeCharacter :: one of See 15.12.1.1
" / \ b f n r t
JSONNumber :: See 15.12.1.1
-opt DecimalIntegerLiteral JSONFractionopt ExponentPartopt
JSONFraction :: See 15.12.1.1
. DecimalDigits
JSONNullLiteral :: See 15.12.1.1
NullLiteral
JSONBooleanLiteral :: See 15.12.1.1
BooleanLiteral
A.8.2 JSON Syntactic Grammar
JSONText : See 15.12.1.2
JSONValue
JSONValue : See 15.12.1.2
JSONNullLiteral
JSONBooleanLiteral
JSONObject
JSONArray
JSONString
JSONNumber
JSONObject : See 15.12.1.2
{ }
{ JSONMemberList }
JSONMember : See 15.12.1.2
JSONString : JSONValue
JSONMemberList : See 15.12.1.2
JSONMember
JSONMemberList , JSONMember
JSONArray : See 15.12.1.2
[ ]
[ JSONElementList ]
JSONElementList : See 15.12.1.2
JSONValue
JSONElementList , JSONValue









quarta-feira, 2 de maio de 2012

Exemplo de código js recebido por ajax e executado através de array dentro de uma div

Exemplo de código js recebido por ajax e executado  através de array dentro de uma div
 Outra alternativa seria fazer o que o amigo  Thiago sugeriu,
que é pegar o que vem do servidor e tirar da tag script, pegar esse conteúdo e executá-lo
Exemplo idiota que o Diego não está conseguindo entender:

http://www.guj.com.br/java/271325-duvida-js-e-ajax/2



O exemplo está funcionando em:

http://presenteperfeito.99k.org/blog/ajax/ajax.html

O Fonte do html:

http://presenteperfeito.99k.org/blog/ajax/ajax_html.html

O fonte do servidor quando clica em texto com javascript:

http://presenteperfeito.99k.org/blog/ajax/textoJS_php.html

Fonte do servidor quanto em só texto:

http://presenteperfeito.99k.org/blog/ajax/soTexto_php.html


Fonte do ajax, que é onde realmente é feito o ajax, e realizada alguma tarefa com dos dados recebidos:

http://presenteperfeito.99k.org/blog/ajax/ajax_js.html


Mas acredito que o maior problema seja, fuçar e aprender a usar o firebug,
estudar, por que professor de TI, cobra aquilo que ele acha interessante,
nem que seja para dizer que ele sabe algo difícil, se têm utilidade ninguém sabe ...

Na realidade para aprender algo você precisa testar muito estudar muito, correr atrás, ai vê com os próprios olhos como funciona, coisa que na faculdade não é cobrada, normalmente aquele grupinho que vai nas costas de um que sabe programar se dá bem, ou então aquele cara que entende tudo de primeira rapidamente sem pensar muito ...

Bom quem sabe talvez ajude alguém que está aprendendo ajax.


sexta-feira, 27 de abril de 2012

Ferramentas para comprimir código e programar js, inclusive em linha de comando:

http://0fx66.com/blog/programacao/lista-de-compactadores-de-javascript/

http://focalizaisso.com.br/compactador-de-js-e-css/
Com esse compactador você jamais entenderá seu código compactado, vira um hash enorme
http://rumkin.com/tools/compression/compress_huff.php
Vira um hash maior ainda:
http://javascriptcompressor.com/
Com esse aqui seu código vira uma simples imagem mega compactada

http://blog.renatolouro.com.br/2010/09/como-compactar-codigo-javascript-em-um-png/?utm_source=Chavao&utm_medium=twitter&utm_content=Twitter




https://developer.mozilla.org/en/Rhino_Shell

https://developer.mozilla.org/en/Rhino_Overview

https://developer.mozilla.org/en/Rhino_Requirements_and_Limitations

https://developer.mozilla.org/en/Scripting_Java

http://www.mozilla.org/rhino/scriptjava.html

http://www.mozilla.org/rhino/perf.html

http://www.mozilla.org/rhino/debugger.html

https://developer.mozilla.org/en/Rhino_Shell

https://developer.mozilla.org/en/Rhino_JavaScript_Compiler

http://www.mozilla.org/rhino/tutorial.html

http://www.mozilla.org/rhino/serialization.html

https://developer.mozilla.org/En/Rhino_documentation/Scopes_and_Contexts

http://www.mozilla.org/rhino/runtime.html

http://jnb.ociweb.com/jnb/archive/jnbMar2001.html

https://developer.mozilla.org/en/Rhino_documentation


http://blog.siliconforks.com/

http://siliconforks.com/

http://siliconforks.com/jscoverage/

http://siliconforks.com/jscoverage/manual.html

http://siliconforks.com/jscoverage/demo.html

http://siliconforks.com/doc/

http://siliconforks.com/doc/debugging-javascript/

http://siliconforks.com/doc/parsing-javascript-with-spidermonkey/

Continuação do exemplo do post anterior porém agora com html5 geolocation

Para desenvolver esse código me baseei em:
http://www.w3schools.com/html5/html5_geolocation.asp

A aplicação:
http://presenteperfeito.99k.org/blog/js/DOM/tjs40.html

O código da aplicação:
http://presenteperfeito.99k.org/blog/js/DOM/tjs40geolocation.html

quinta-feira, 26 de abril de 2012

Como chamar funções variáveis em javascript estilo chamada de funções variáveis em php $funcao();

Em php é possível chamar funções diferentes com o mesmo código, por exemplo:
<?php
                function fy1()
                {
                    echo "<br /> fy1();<br />";
                }
                function fy2()
                {
                    echo "fy2();<br />";
                }
                function fy3()
                {
                    echo "fy3();<br />";
                }
                function fy4()
                {
                    echo "fy4();<br />";
                }
                function fx($i)
                {
                    $f="fy".$i;
                    $f();      
                    /*
                    aqui posso chamar a função
                    fy1(); ou fy2)(); , ...
                    tudo dependerá apenas do valor de $i
                    */
                }
                fx(1);
                fx(2);
                fx(3);
                fx(4);
        ?>

http://www.php.net/manual/pt_BR/functions.variable-functions.php

Isso gera muita flexibilidade em php, e possibilita a construção de funções genéricas.
É possível fazer algo semelhante em javascript, mas como ?
É possível utilizando a função eval() do javascript(js)
Por exemplo, desejo fazer a chamada a uma função que possui um nome variável conforme um valor passado a uma função, quero chamar hora
mouseClick_opt1(); hora mouseClick_opt2();, mouseClick_opt3(); ...
Como faço isso ?
Assim
eval("mouseClick_opt"+i+"();");   
onde o i varia, no meu caso de 1 até 5

A minha função javascript ficou assim:
                              function opc_selectIndex(i)
                                {
                                    i++;                                   
                                    eval("mouseClick_opt"+i+"();");                                           
                                }   

Um exemplo de aplicação onde utilizo essa mesma função:
http://presenteperfeito.99k.org/blog/js/DOM/tjs4.html
Esse exemplo não por acaso é o exemplo do post anterior, só que bem melhorado
(http://viagemdacomputacao.blogspot.com.br/2012/04/exemplo-rapido-de-codigo-com-dom.html)
o código da aplicação comentado:
http://presenteperfeito.99k.org/blog/js/DOM/tjs4_html.html

quarta-feira, 25 de abril de 2012

Exemplo rápido de código com DOM, manipulação de css e eventos javascript

Exemplo  rápido de código com DOM, manipulação de css e eventos javascript

O exemplo:
http://presenteperfeito.99k.org/blog/js/DOM/tjs3.html

O código:
http://presenteperfeito.99k.org/blog/js/DOM/tjs3_html.html

É uma página que muda as cores de letras, de fundo e de bordas, conforme muda a opção (option) do combobox (selection)
Utilizo eventos em DOM0 e DOM2
Crio toda a página em DOM, com exceção das tags
html, style, head, body, form, div id="id1",   script type="text/javascript" , title e meta

Vale a pena dar uma olhadinha nesse código, é uma boa luz de como criar elementos através do DOM, manipular eventos, e alterar propriedades do css através do javascript.

O código está comentado, e o css está no começo dele na tag style, para dar uma ideia, na manipulação via javascript que propriedade do css altero posteriormente

domingo, 8 de abril de 2012

teste


Apenas testando a dica: http://thiago-rabelo.blogspot.com.br/2012/02/para-fabiana.html

Apenas não esquecendo de trocar o < e o > por &lt; e &gt;

devido a interpretação do html

http://www.ascii.cl/htmlcodes.htm

<html>
                   <head>
                        <link href="../../extjs4meu/1HelloWorldDM/resources/css/ext-all.css" rel="stylesheet" type="text/css"></link>
                        
                        <script src="../../extjs4meu/1HelloWorldDM/ext-all.js" type="text/javascript">
</script>
        </head>
           <body>              
        
        
        <script type="text/javascript">
                /* Para usar ExtJS tenho que utilizar essa função abaixo
                ( repare que o Ext começa com letra maiúscula):*/
                                        /* Aqui dentro do método 'onReady' escrevo todo meu código ExtJS nesse caso é um alert com ExtJS */
                Ext.onReady(function(){
                        Ext.MessageBox.alert('Hello', 'Hello, World!');
                });
        
</script>
 </body>   
 </html>


sexta-feira, 6 de abril de 2012

Meu primeiro Hello World em ExtJS 4 baseado em Loiane Groner

Estou começando meus estudos em ExtJS 4
Mais um framework RIA

Para otimizar o tempo, comecei com as video aulas da Loiane Gorner,
material de muita qualidade, vídeo aula muito bem formatada, com fala pausada, muito boa mesmo.
http://youtu.be/Z_hmPYmml34
Existem vídeo aulas que os caras parecem que estão narrando uma partida de futebol, bem diferente
das aulas até presenciais que muitas vezes temos, onde você não têm tempo se quer de assimilar o que está sendo passado naqueles slides, é simplesmente um sermão do que está escritos nos slides.

Pelos simples comentários já da para se ter uma ideia de que realmente o curso de extjs gratuito é muito bom, material de qualidade incrível, com dicção clara, dando tempo para você perceber o que está sendo feito, não uma simples explanação de algum assunto ...

http://www.loiane.com/2011/11/curso-de-extjs-4-gratuito/

http://google-code-prettify.googlecode.com/svn/trunk/README.html

Mas chega de blá blá blá.


O meu primeiro Hello World em ExtJS encontra-se em:

http://presenteperfeito.99k.org/blog/extJS/helloWorldDM.html

o Código: http://presenteperfeito.99k.org/blog/extJS/helloWorldDM_html.html

E o código com as pastas das imagens e o framework em:
http://presenteperfeito.99k.org/blog/extJS/1HelloWorldDM.zip
Vale lembrar
que o nome do diretório (pasta) que esse arquivo .zip estava era:
extjs4meu e os códigos estavam na pasta 1HelloWorldDM
logo os urls estavam: ../extjs4meu/1HelloWorldDM/.. altere conforme a sua estrutura de diretórios local


Fiquei impressionado como é possível fazer coisas bonitas com esse framework
Bom é isso ai ...!

segunda-feira, 2 de abril de 2012

javac - illegal character: \65279 - O código BOM fez um boom no meu código

Estava eu codificando meu código java no kate com o kwrite, minha distribuição é ubuntu 10.04
ao compilar meu arquivo com javac sempre dando erro
javac TCPServer.java
TCPServer.java:1: illegal character: \65279

Pesquisando descobri que era devido a esse tal de código bom
http://www.guj.com.br/java/126508-illegal-character-65279

Não queria utilizar o Scintila para editar, mas o gedit, nem o vim não possuem desdobramento de código, se tiver eu não sei usar ...

é não tem jeito terei que usar o Scite ()
faz tempinho que não o utilizo, mas é o jeito

nem me lembro como colocar as palavras para completar pressionando ctrl+b, mas codificarei nele devido ao desdobramento de código que faz uma falta danada

Fica ai a dica!

sábado, 31 de março de 2012

Comando do linux para saber qual é o espaço restante na partição atual

$
df -h $PWD |awk '{print $4}' mostra (o ' é aspas simples):
Usad
9,6G


$
df -h $PWD mostra:

Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/sda1 88G 79G 9,6G 90% /media/00B0DD30B0DD2CC2

O que eu faço aqui na verdade é apenas mostrar a liha disponível, no caso a 4 coluna, para isso utilizo o awk '{print $4}'

Para saber a quantidade de Bytes utilizados na partição atual ($PWD - $PWD (Print Working Directory - imPrimir Diretório de tabalho (work) - imprimir o diretório onde você está executando o comando ))

quinta-feira, 29 de março de 2012

Versão com DataInputStream, DataOutputStream e Exception do código java de servidor tcp de echo do livro do Kurose

Como entendi que o código da página 120 do livro Redes de computadores e a internet: uma abordagem top-down. 5. ed - KUROSE, James F; ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down. 5. ed. São Paulo: Pearson Education, 2011. 614 p. ISBN 9788588639973 (broch.) [
KUROSE, James F; ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down. 3. ed. São Paulo: Makron Books, c2006. 634 p. ISBN 9788588639188 (broch.). - página 117 ]induz o leitor ao erro por não trabalhar com as exceptions, que não são poucas, bem como usar BufferedReader ao invés de DataInputStream (BufferedReader não é a melhor alernativa se for trabalhar com envio de arquivos) resolvi fazer uma versão dele com exception e utilizando DataInputStream e DataOutputStream.

O código do Cliente TCP do Kurose:

http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPClientKurose_java.html


O código do Servidor TCP do Kurose:
http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPServerKurose_java.html


Já o código do meu Cliente TCP
http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPClientDM_java.html
Apenas lembrando que para funcionar é necessário que tanto o cliente como servidor sejam compilados juntos (javac TCPServer.java TCPClient.java), pois o cliente utiliza a porta e o host definidos no servidor (para mudar o host e a porta apenas no servidor, e garantir que tanto o cliente como servidor terão a mesma porta)

http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPServerDM_java.html


Estava tentando enviar arquivos via sockts java, só que ocorriam alguns erros intermitentes, após muitas pesquisas descobri através de
http://javafree.uol.com.br/topic-880337-sockets-perdendo-pacotes.html, que realmente pode acontecer, hora funcionar, hora não, se utilizar a tripa de buffers desorganizado, como sugerido pelo código do Kurose.
Resultado terei que implementar novamente toda a minha comunicação para enviar o arquivo, tudo devido a inexperiência e inobservância do detalhe que é recomendada a leitura e escrita de sockets com DataInputStream e DataOutputStream.

Apenas lembrando que o objetivo do código do Kurose é ser didático, não um código bom para servir de base para implementações TCP em java.

Os meus códigos e do Kurose coloquei tudo compactado em .zip em:

http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/KuroseDM.zip

terça-feira, 27 de março de 2012

Como saber qual é o sistema operacional utilizando java

Para saber qual o sistema operacional basta
colocar a linha:
System.out.println(System.getProperty("os.name"));

Para saber todas as propriedades de um:
System.out.println(System.getProperties());

O Resultado do System.out.println(System.getProperties()); aqui foi:
{
java.runtime.name=Java(TM) SE Runtime Environment,
sun.boot.library.path=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64,
java.vm.version=20.1-b02,
java.vm.vendor=Sun Microsystems Inc.,
java.vendor.url=http://java.sun.com/,
path.separator=:,
java.vm.name=Java HotSpot(TM) 64-Bit Server VM,
file.encoding.pkg=sun.io,
sun.java.launcher=SUN_STANDARD,
user.country=BR,
sun.os.patch.level=unknown,
java.vm.specification.name=Java Virtual Machine Specification,
user.dir=/media/00B0DD30B0DD2CC2/Documents and Settings/dm/Meus documentos/REC/trabalhos/tb1rec/t,
java.runtime.version=1.6.0_26-b03,
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment,
java.endorsed.dirs=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/endorsed,
os.arch=amd64,
java.io.tmpdir=/tmp, line.separator=
,
java.vm.specification.vendor=Sun Microsystems Inc.,


os.name=Linux,


sun.jnu.encoding=UTF-8,
java.library.path=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib,
java.specification.name=Java Platform API Specification,
java.class.version=50.0,
sun.management.compiler=HotSpot 64-Bit Tiered Compilers,
os.version=2.6.32-40-generic,
user.home=/home/dm,
user.timezone=,
java.awt.printerjob=sun.print.PSPrinterJob,
file.encoding=UTF-8,
java.specification.version=1.6,
java.class.path=.,
user.name=dm,
java.vm.specification.version=1.0,
sun.java.command=TCPServer,
java.home=/usr/lib/jvm/java-6-sun-1.6.0.26/jre,
sun.arch.data.model=64,
user.language=pt,
java.specification.vendor=Sun Microsystems Inc.,
java.vm.info=mixed mode,
java.version=1.6.0_26,
java.ext.dirs=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/ext:/usr/java/packages/lib/ext,
sun.boot.class.path=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/resources.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/rt.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/jsse.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/jce.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/charsets.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/modules/jdk.boot.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/classes,
java.vendor=Sun Microsystems Inc.,
file.separator=/,
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi,
sun.io.unicode.encoding=UnicodeLittle,
sun.cpu.endian=little,
sun.desktop=gnome,
sun.cpu.isalist=}

Mas digamos que você deseja saber é a versão da JVM (Java Virtual Machine - Máquina Virtual Java)
Basta colocar a linha:
System.out.println(System.getProperty("java.version"));
em algum lugar do seu programa