thegoodfellas/blogset-br huggingface dataset:
historico volta asfontes do que foi a vida, ao que a senhora chama de essa fluidez(...), ao que a escritora responde: E verdade. Eles foram - osromancistas historicos - os primeiros historiadores poetas do mundomoderno que podemos surpreender trabalhando, esforcando-se parafazer o publico sentir o que um erudito ingles de hoje chama ochoque do passado subitamente revelado.Marguerite Yourcenar, pseudonimo usado Marguerite Cleenewerck deCrayencour, nasceu em 8 de junho de 1903, em Bruxelas e cresceu naFranca. (Yourcenar foi a primeira mulher eleita para a AcademiaFrancesa. Conforme disse, aceitou essa vaga apenas por educacao.)Depois residiu na Italia, Suica, Grecia e, por fim, nos EstadosUnidos, em Mount Desert Island, no Maine, por cerca de 50 anos, ondese isolou com sua amiga Grace Frick , e onde faleceu, em 17 dedezembro de 1987.REFERENCIAS:AZEREDO, Ecila de. Oser e o tempo: M. Yourcenar.Rio de Janeiro: Jornal Leia. 1988.ROSBO, Patrick. Entrevistascom Marguerite Yourcenar.Traducao de Raquel Ramalhete. Rio de Janeiro: Editora NovaFronteira, 1987. * * *
afalta de meios de transporte adequados limitava o numero de visitasa casas de vizinhos e aos bailes em Basingstoke, a cidade maisproxima. Em compensacao, a familia recebia frequentemente amigose conhecidos.Linklaterdiz, ainda, que um dos passatempos preferidos de Jane Austen era adanca, como mais tarde afirmaria em Orgulho e Preconceito: Gostarde dancar era uma medida infalivel para uma pessoa se apaixonar.E acrescenta que o seu comportamento levou uma das vizinhas dosAusten a considera-la a mais bonita, a mais burra e a maispresuncosa das mocas casadoras. ParaP. D. James (rev. cit.), fiel admiradora da obra de Jane Austen, esseaspecto de sua personalidade representa o proprio amago de seuestilo: Todosos livros tem como base a mesma trama uma mulher que procura edepois encontra o parceiro ideal esclarece a escritora. Diz, P.D.James: Sao romances quase cor-de-rosa, so que escritos por umgenio.Ocerto, no entanto, e que muitos ficaram descontentes com apopularidade de Austen. Susan McCartan, secretaria honoraria daSociedadeBritanica Jane Austen,e uma delas. As recentes adaptacoes ao cinema realcam oaspecto romanesco, descurando o lado satirico, afirma SusanMcCartan, que admite, no entanto, que o numero de socios aumentouem varias centenas, chegando a 2000, numero esse baixo, secomparado com o da SociedadeNorte-Americana Jane Austen,que, em 1997, tinha mais de 5000 fas, e continuava crescendo.Sofrendodo Malde addison,uma doenca que ataca os rins, JaneAustenfaleceu em winchester, no dia 18 de julho de 1817, com apenas 41anos. Linklater diz que o fluxo de visitantes, de todas as partes domundo, junto a seu tumulo, na Catedral de Winchester, confirma acrenca de Jane Austen na forca do amor que, despertando um sorriso,consegue vencer a triste realidade da vida. Entre esses visitantes,encontrava-se entre eles, em 1997, Emma Thompson, que foi la paraprestar-lhe homenagem... e para lhes falar dos lucros, comoexplicou, gracejando, nas cerimonia dosOscars,em Los Angeles. * * *
que expressem acao e intencao e que dispensam comentarios. Outra crescente desvantagem da notacao hungara e que com os frameworks e ides cada vez mais completos um numero cada vez maior de classes prontas, componentes e widgets vem empacotados com os produtos que usamos (visual studio e .net framework) fora os adquiridos de terceiros e os open-source. Criar uma abreviacao de duas ou tres letras para cada tipo destes torna-se um verdadeiro inferno. Notacao hungara ja e um conceito bem antigo e com certeza seu uso traz muitas desvantagens. Tipos dinamicos e definicao de tipo em runtime perdem todo o sentido com notacao hungara, e nao e necessario visto que a IDE pode vasculhar e te mostrar todos os atributos de uma variavel. Quando voce cria suas classes voce cria seus tipos de dados com logica propria. E frequentemente renomeamos nossas classes, mudamos, extraimos uma da outra, juntamos, derivamos. Fica impossivel arrumar uma abreviacao consistente para todas elas. Nocoes gerais ausentes no padrao da Microsoft Embora os padroes da microsoft abordem o tema das chaves, arrays, linhas e espacos em branco (assuntos ausentes nos nossos padroes), ela nao aborda os padroes de nomenclatura (definidos como notacao hungara nos nossos padroes mais antigos). E uma pratica comum nas linguagens derivadas de c, ao se nomear campos privados dos quais dependem propriedades (publicas ou privadas), nomear em lowerCamelCase precedido de _. Outra pratica comum e nomear constantes todas em MAIUSCULAS. Isso torna claro que o identificador e somente leitura, alem de tornar claro seu tipo e que esta relacionado a uma regra de negocio e nao a arquitetura do software ou da informacao, porem existem recomendacoes no mercado para nao usa-las, portanto seguiremos as recomendacoes e nao usaremos. Nomes de constantes em maiusculas atraem muito a atencao do programador, distraindo-o, alem de nao ser consistente com o .net framework. Nao se deve usar _ entre as palavras de um metodo, priopriedade ou variaveis, no entanto isso pode ser tolerado em uma constante. Um nome deve identificar um elemento (quem ele e) e nao generaliza-lo. Alem disso deve indicar o que o elemento faz e para que serve, nao o que ele e. Metafora Todo sistema deve ter uma metafora que o defina em poucas palavras. Isso ajuda a equipe a formar um vocabulario comum do dominio da aplicacao (ou das aplicacoes) e falarem a mesma lingua. Tambem ajuda na escolha de bons nomes para os projetos e seus componentes. Bons nomes sao essenciais para um software coeso e auto-documentavel. Bons nomes dispensam comentarios ou documentacoes complexas. Se for gastar um tempo desenvolvendo um software, comece gastando um bom tempo para o seu nome. O mesmo vale para uma classe ou metodo: tome tempo para escolher um bom nome. Isso te ajudara a manter o principio da responsabilidade unica e o principio da segregacao de interface. Use nomes significativos e pronunciaveis. Use nomes que expressem proposito. Sistemas amplamente usados sao baseados em metaforas, por exemplo o sistema de arquivos do Windows e baseado na metafora do Arquivo (armarios para se guardar fichas / pastas). Essas
grandes sao dificeis de ler e de manter. Eles tendem a crescer mais a cada manutencao com a adicao de desvios condicionais para fazerem coisas diferentes dependendo de configuracao ou parametros. Esses metodos degradam o sistema rapidamente, ficando com codigo inatingivel (nunca executado), codigo comentado e codigo com side effects (statefull) que nao podem ser testados. Parametros-Tipo (type parameters) Type Parameters sao os parametros que representam um tipo em uma expressao que usa generics. Por exemplo na definicao de List<T> T e o type parameter. Na definicao de classes genericas sempre use PascalCase precedido de T para nomear os type parameters. Exemplo: Repository<TEntity> : IRepository<TEntity> where TEntity : Entity Strings Concatene strings pequenas com sinal de " + " porem use StringBuilder para strings grandes. Use string.Format para strings pre formatadas e substituicao de placeholders. Porque: Embora tenha sobrecarga de operadores nativa para parecer um value type pimitivo as strings sao objetos (reference types). Isso significa que a cada atribuicao ou concatenacao de duas strings, dois objetos sao destruidos e um novo e criado. Isso cria um grande overhead, principalmente dentro de loops. StringBuilder e uma classe que concatena varias strings de uma so vez sem precisar destruir e recriar a cada adicao fazendo um uso mais inteligente da memoria. Foi feito para ser usado em loops onde muitas strings sao concatenadas, como uma saida html por exemplo. Enums Use PascalCase. Use substantivos no singular se for um Enum comum. Se for um Enum do tipo bit field / flags (a serem combinados multiplos valores com o operador "|") pode-se usar substantivos no plural, pois sugere que mais de um valor pode ser usado. Exemplo:enum Importance{None,Trivial,Regular,Important,Critical}; Porque: Consistente com o .net framework e mais natural para ler if ... else if ... else Sempre coloque um bloco de codigo com { } em estruturas de decisao if pulando uma linha antes de { e outra ante de }. Mesmo com if's que so terao uma linha de codigo. Se voce precisar de mais de 3 niveis de aninhamento para uma estrutura if ou case significa que voce esta enrolado. Provavelmente seu metodo faz coisas demais ou sua classe tem muitas responsabilidades e muitos motivos pra mudar. Porque: if (b1) if (b2) Foo(); else Bar(); // consegue dizer ao primeiro golpe de vista a qual if pertence o else? Case ... default Sempre tenha um label default em uma estrutura case. Mesmo se ele nunca devesse ser atingido. Coloque nele codigo para disparar uma excecao caso um parametro invalido tenha sido erroneamente enviado para o case analizar. Loops Se voce precisar de dois niveis de loops aninhados considere transformar o mais interno em um metodo privado. Se voce estiver trabalhando com mais 3 niveis verifique se o metodo e/ou a classe nao estao com responsabilidades demais e se nao estao intestaveis. Jamais altere a variavel de controle do loop for ou foreach dentro do loop. Isso pode levar a loops infinitos. Alinhamento vertical de chaves Alinhe as chaves verticalmente. Nao mantenha a chave no final da linha, quebre a linha antes da chave
widgets de tela do office sao todos prefixados. Variaveis de contadores de laco/iteradores podem ter um nome de uma letra so, como i,j,k,l,c. E mais inteligivel desta forma, uma vez que os caracteriza como iteradores, alem disso eles tem um escopo muito local, muito limitado. Em linguagens onde o nome da classe nao pode ser igual ao nome do arquivo que a contem e comum, em PascalCase, prefixar as classes com T, mas apenas nesses casos. Em linguagens que nao sao case sensitive, como Delphi/Pascal/SQL, nao e possivel declarar um campo privado com camelCase e a propriedade que o acessa com o mesmo nome em PascalCase como abaixo: //Nao faca issoprivate string nome;public string Nome{ get { return nome; } set { nome = value; }} Porem esse seria o nosso caso apenas usando SQL/Pascal/VB6. Usando C# isso nao se aplica. Esse exemplo e trivial, mas o uso de _ ou de camelCase para os fields privados sao os mais usados em C#. Nesses casos preceder o campo privado com F (PascalCase) em linguagens derivadas de pascal.//isso so e permitido em linguagens como Pascal ou Delphi. Nao faca isso.private string Fnome;public string Nome{ get { return Fnome; } set { Fnome = value; }} Como usaremos apenas C#, vamos prefixar campos de instancia locais com _, como geralmente e feito em linguagens derivadas de C.//Faca ISSO:private string _nome;public string Nome{ get { return _nome; } set { _nome = value; }} Faca:Use PascalCasing para nomear classes, propriedades, metodos e EnunsUse camelCasing para nomear variaveis locais, argumentos de metodos e de constructorsUse _camelCasing (camelCase precedido de _) para nomear campos privadosSe uma apreviacao for fazer parte do nome de uma classe, propriedade ou constante, use PascalCase se ela tiver 3 letras ou mais. Ponha a abreviacao em maiusculas se ela tiver ate 2 letras.Use os nomes de tipos predefinidos da linguagem em vez dos System Types, exemplo: strung no lugar de String, int no lugar de Int32, bool no lugar de BooleanUse variaveis implicitas para quando o tipo e obvio ou nao e importante, ou em lacos for/foreach. Exemplo: var numero = Convert.ToInt32(Console.ReadLine());Escreva um comando por linhaEscreva uma declaracao por linhaIndente todas as linhas de continuacaoQuebre uma linha para separar a definicao de metodos da definicao de propriedadesPrefira passar estruturas ou objetos DTO como parametros para um metodo do que listas grandes de parametros.Prefira retornar objetos DTO ou estruturas com um proposito especifico do que usar parametros ref ou out nos seus metodos.Sempre que usar o operador "as " para typecasting seguro verifique se o retorno nao e null. Se for null e porque o objeto nao pode ser convertido para o tipo especificado.Se voce precisa comentar um bloco de codigo, considere usar refactoring para transformar esse bloco em um metodo, e de-lhe um nome conciso e apropriado. Mantenha o tamanho de cada linha em ate 130 caracteres (o suficiente para evitar rolagem horizontal)Sempre envolva expressoes booleanas de estrutura de repeticao ou de decisao do tipo if, else, do, while, for e foreach com parenteses, mesmo que o compilador nao exija. Nao faca:Nao
use notacao hungara ou qualquer tipo de definicao de tipo nos nomes de variaveis, isso e consistente com o .net framework, alem disso o Visual Studio ja te ajuda a determinar o tipo das variaveis.Nao use maiusculas para nomear constantes, nao e assim que e feito no .net. Maiusculas atraem muito atencao.Evite abreviacoes nos nomes de variaveis a nao ser que sejam abreviacoes bem conhecidas como Id, XML, HTMLNao insira underscore _ no meio de identificadores, classes, constantes, propriedades e variaveis.Nao especifique o tipo de um enum a nao ser que seja Flags ou bit fieldsNao prefixe ou sufixe os nomes de Enum com a palavra "Enum"Nao comente codigo, ninguem sabera o que fazer com codigo comentadoNao use parametros de funcao como variaveis temporarias. O nome do parametro nao reflete a intencao da variavel.Nao use numeros em identificadores de campos ou metodos, como "Listar2". Isso geralmente e sinal de preguica em encontrar um nome que revele proposito.Nao compare expressoes booleanas com true ou false em if's. Perguntar if (variavel == true) ou if (variavel == false) prejudica a leitura e revela falta de conhecimento da estrutura if. Use if (variavel) ou if (!variavel). Lembre-se: A qualidade de um codigo e medida pelo numero de "que diabos ..." por segundo. A honestidade nas pequenas coisas nao e uma coisa pequena. Veja maisLance Hunt C# Coding StandardsAvSol coding guidelines for C# 3.0-5.0Java code conventionsLivroshttp://www.livrariacultura.com.br/p/domain-driven-design-3252884http://www.livrariacultura.com.br/p/extreme-programming-15065191http://www.livrariacultura.com.br/p/codigo-limpo-2874223Siteshttp://www.milfont.org/tech/2008/01/21/nao-use-notacao-estranha/http://www.macoratti.net/13/09/net_pcod1.htmOutras fontes Ha varios padroes de codificacao e outras boas praticas de programacao. Abaixo exemplifico mais algumas fontes como referencia / aprofundamento. Ha tambem padroes de codificacao para linguagens especificas, elaborados pelas empresas que desenvolvem esses produtos ou pela comunidade de programadores destas linguagens, como os padroes de PHP ou Java exemplificados em anexo.http://www.dofactory.com/reference/csharp-coding-standardshttps://csharpguidelines.codeplex.com/http://se.inf.ethz.ch/old/teaching/ss2007/251-0290-00/project/CSharpCodingStandards.pdfhttps://msdn.microsoft.com/en-us/library/vstudio/ms229043(v=vs.100).aspx
Hoje eu programo orientado a objetos. Pelo menos eu "acho" isso. Conheci muita gente que dizia que programava orientado a objetos mas na verdade programava de maneira procedural, orientado a evento ou RAD.Nao que as outras metodologias sejam ruins, mas e que muitas vezes elas sao a ferramenta errada para se resolver o problema. Alem disso muitos programadores misturam as metodologias combinando o pior das duas em vez de o melhor das duas.Ja vi ate programadores dizerem que programam orientado a objeto simplesmente porque a linguagem e orientada a objeto, ou pior ainda, porque a IDE tem "objetos" que voce arrasta e solta em uma "form" e que voce acessa funcoes (metodos) destes com seu nome e um ".".Meu amigo, isso e RAD e nao POO. Embora RAD tenha o seu valor para prototipacao e aplicacoes rapidas e sujas, nao e um bom ambiente de desenvolvimento a longo prazo. E uma programacao orientada a evento degenerada. Alem disso, por mais que a linguagem e o framework de uma ferramenta RAD seja orientado a objetos, a literatura e a comunidade, geralmente, nao e. Eles incentivam uma forma de programacao "copia/cola componentes em uma tela" onde o "programador" geralmente nao sabe lhufas do que esta fazendo, se e que ele programa alguma linha. Esse tipo de programa tem uma manutenibilidade quase zero.Vide por exemplo o ambiente Delphi. E uma linguagem orientada a objeto com generics, interfaces, reflexao, sobrecarga de operadores e tudo o que uma linguagem orientada a objeto precisa ter. No entanto a comunidade Delphi e geralmente uma comunidade de "arrastadores de componentes" e "desenhistas de formularios". Nao e culpa deles, a literatura disponivel da ferramenta incentiva isso.Eu mesmo fui programador Delphi durante anos e ainda e uma linguagem muito querida para mim, mas eu aprendi a fazer as coisas um pouco diferente. A sugestao que eu dou? Aprenda uma outra linguagem, C# ou Java, para expandir os seus horizontes. Se optar por C#, faca as coisas "no braco" em vez de usar as ferramentas RAD. A longo prazo elas decepcionam.Por tres vezes na minha carreira tive de fazer refactorings brutais em aplicacoes Delphi para possibilitar alguma expansividade em cima de um legado macarronico, pois a manutencao era um inferno em vida.Dai, depois de ler inumeros artigos e livros sobre POO, DDD, padroes de projeto e outras boas praticas de codigo verdadeiramente OO, me cai em uma avaliacao para processo seletivo o que e POO.Eu nunca sei qual e a resposta que os avaliadores esperam com isso porque eu nunca sei o quanto eles sabem de POO ou se eles estao equivocados. Ja trabalhei em empresas onde a "crenca" local era que POO era heranca. Em outra os funcionarios e o dono acreditavam piamente que programavam orientado a objeto, quando na verdade era programacao macarronica com metodo faz tudo.A ultima empresa que trabalhei, um dos donos da empresa era, hummm, digamos, "programador", e ditava, ditatorialmente, as regras de como o codigo deveria ser desenvolvido: uma mistura de cobol nao estruturado com asp, onde TODO o codigo do sistema estava no page_load das paginas.Ai
sua distincao de objetos de valor (simples conteineres paravalores sem ciclo de vida ou identidade propria). Tambem sao conceitos da DDD agregados,servicos e repositorios.DDD tambem e associado a outras boas praticas comoTDD e a separacao do sistema em 4 camadas: Interface de usuario, Aplicacao, Dominio(entidades e objetos de valor ficam aqui) e Infra-estrutura (repositorios,servicos e outras classes de apoio).Sera que me estendi demais? Tenho esse costume, e tenho o costume de fugir do assunto tambem, parece que minha mente nao funciona muito linearmente, tampouco objetivamente. No entanto, o que voce escreveria de memoria, sem consultar seus livros anotacoes revistas e sites?
Dai voce faz o seu site muito louco, cheio de coisa, vai testar no Google Chrome e pa, nao funciona.Failed to load resource: the server responded with a status of 500 (Internal Server Error)"The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the <machineKey> configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster."Da uns erros de acesso nao autorizado (401) e voce desconfia que e a Same Origin Policy, entao o que voce faz Habilita o CORS no seu server, altera o web.config, ou as configuracoes do IIS e permite os cross origin requests. <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> <add name="Access-Control-Allow-Credentials" value="True" /> </customHeaders> </httpProtocol>Mas nao funciona.E pior, voce testa no IE e funciona, no Edge e funciona. Ai voce pensa: "No IE funciona porque o IE e uma merda, nao e seguro. Tenho que fazer direito, e vai funcionar!!".Ai voce testa no Firefox e funciona, testa naquele browser mais esquisito que veio num CD que sua vo comprou no Carrefour e funciona. Voce percebeu que o problema e so com o chrome????Ai voce fuca em mais uma dezena de foruns e topicos na internet ate perceber que voce fez tudo certinho, o problema e o Chrome. Existe um bug reportado no Chrome desde 2010 E AINDA NAO RESOLVIDO onde o browser do Google simplesmente bloqueia toda e qualquer requisicao ajax para localhost, chumbado no codigo, simplesmente porque e localhost.Para resolver esse problema voce pode acessar seu site (que voce esta desenvolvendo e testando localmente) pelo endereco 127.0.0.1 [:porta opcional se for diferente de 80] (que e para onde localhost deveria resolver).Voce tambem pode usar o dominio lvh.me [:porta opcional se for diferente de 80] que tambem resolve para o mesmo IP de loopback e todos os subdominios dele sao resolvidos para o mesmo IP.Aprendi isso enquanto configurava o DotNetNuke 9 (dnn9) no meu IIS Local. O dnn9 tem um menu de configuracao e administracao lateral (diferente do menu superior do dnn8) que e montado e aberto via requisicoes ajax. Pelo IE funcionava, pelo chrome dava uns erros esquisitos, como mencionado acima.Fikdik. Aparentemente a Microsoft tem dois esquemas de versionamento do .net framework. Um e lado a lado, quando ha uma mudanca da major version. O outro esquema e quando ha uma substituicao total de um framework, devido a correcoes de assemblies e lancamentos de novas features.Por exemplo:A versao 1 e 1.1 rodam ambas no runtime da 1.As versoes 2, 3 e 3.5 rodam todas no runtime da 2 (aqui a Microsoft fez uma cagada, porque deveria versionar a 3 como 2.5, ja que e uma atualizacao da 2, e a 3.5 deveria continuar a manter a major version como 2, por exemplo 2.5.5, mas eles apressaram as coisas para distribuir junto com o finado windows vista)E temos a versao 4 e 4.5 que rodam no runtime
da 4. A substituicao de alguns assemblies da versao 4 pelo instalador da 4.5 pode causar alguns conflitos, principalmente para aplicacoes que usam novas features exclusivas da 4.5 ou programadores de componentes.Esses conflitos sao citados e podem ser contornados conforme as dicas do Rick Strahl e do SCOTT HANSELMAN