Adicionando Atributos em Propriedades (C#)
Adicionando Atributos em Propriedades (C#)
Nem sempre é possível utilizar objetos complexos (classes) para incluir informações em propriedades de classes. Essa situação pode acontecer quando se está dando manutenção em um código que está amarrado a outro comportamento que não pode ser alterado.
No caso que deu origem à esse código, a classe possui uma dezena de propriedades públicas string que já estavam atreladas a outras classes e comportamento em outras partes do código. Não havia liberdade de criação de outras classes que incorporassem mais propriedades, então decidi enfeitar cada propriedade com atributos personalizados.
Dessa forma, foi possível no código acessar mais informações com base somente nessa propriedade string.
O código foi usado em uma aplicação de aluguel de móveis para eventos. Segue o código:
Classe do Objeto amarrado (Furniture.cs) com as classes de atributos no mesmo arquivo (para facilitar o entendimento)
using System; using System.ComponentModel; using System.Globalization; using static ADX18.Library.Helpers.ADX18Helper; namespace ADX18.Library.Models { public class Furniture : iTestObject { [DisplayName("Mode Cupboard"), MemberPrice("225.50"), NonMemberPrice("247.50")] public string ModeCupboard_Quantity { get; set; } public string ModeCupboard_Colour { get; set; } [DisplayName("Poly Voge Chair"), MemberPrice("52.25"), NonMemberPrice("55.00")] public string PolyVogue_Quantity { get; set; } public string PolyVogue_Colour { get; set; } [DisplayName("Poly Vogue Stool"), MemberPrice("74.25"), NonMemberPrice("80.85")] public string PolyVogueStool_Quantity { get; set; } public string PolyVogueStool_Colour { get; set; } [DisplayName("Club Stool"), MemberPrice("77.00"), NonMemberPrice("82.50")] public string ClubStool_Quantity { get; set; } public string ClubStool_Colour { get; set; } [DisplayName("Ikon Dry Bar"), MemberPrice("165.00"), NonMemberPrice("177.65")] public string IkonDryBar_Quantity { get; set; } public string IkonDryBar_Colour { get; set; } [DisplayName("Ikon Meeting Table"), MemberPrice("143.00"), NonMemberPrice("154.00")] public string IkonMeetingTable_Quantity { get; set; } public string IkonMeetingTable_Colour { get; set; } [DisplayName("Ikon Illuminated Dry Bar"), MemberPrice("192.50"), NonMemberPrice("209.00")] public string IkonIlluminatedDryBar_Quantity { get; set; } public string IkonIlluminatedDryBar_Colour { get; set; } [DisplayName("Mode Dry Bar Table"), MemberPrice("104.50"), NonMemberPrice("108.90")] public string ModeDryBarTable_Quantity { get; set; } public string ModeDryBarTable_Colour { get; set; } [DisplayName("Mode Meeting Table"), MemberPrice("99.00"), NonMemberPrice("107.25")] public string ModeMeetingTable_Quantity { get; set; } public string ModeMeetingTable_Colour { get; set; } [DisplayName("Mode Coffee Table"), MemberPrice("93.50"), NonMemberPrice("100.65")] public string ModeCoffeeTable_Quantity { get; set; } public string ModeCoffeeTable_Colour { get; set; } [DisplayName("Cuba Lounge One Seater"), MemberPrice("165.00"), NonMemberPrice("189.75")] public string CubaLoungeOneSeater_Quantity { get; set; } public string CubaLoungeOneSeater_Colour { get; set; } [DisplayName("Cuba Lounge One Seater Corner"), MemberPrice("165.00"), NonMemberPrice("189.75")] public string CubaLoungeOneSeaterCorner_Quantity { get; set; } public string CubaLoungeOneSeaterCorner_Colour { get; set; } [DisplayName("Cuba Lounge One Seater No Arm Rests"), MemberPrice("165.00"), NonMemberPrice("189.75")] public string CubaLoungeOneSeaterNoArms_Quantity { get; set; } public string CubaLoungeOneSeaterNoArms_Colour { get; set; } [DisplayName("Cuba Lounge"), MemberPrice("275.00"), NonMemberPrice("308.00")] public string CubaLounge_Quantity { get; set; } public string CubaLounge_Colour { get; set; } [DisplayName("Quattro Display Plinth 600mm"), MemberPrice("165.00"), NonMemberPrice("178.75")] public string QuattroDisplay600_Quantity { get; set; } public string QuattroDisplay600_Colour { get; set; } [DisplayName("Quattro Display Plinth 900mm"), MemberPrice("187.00"), NonMemberPrice("207.90")] public string QuattroDisplay900_Quantity { get; set; } public string QuattroDisplay900_Colour { get; set; } [DisplayName("Zig Zag Brochure Stand"), MemberPrice("115.50"), NonMemberPrice("123.20")] public string ZigZagStand_Quantity { get; set; } public string ZigZagStand_Colour { get; set; } [DisplayName("Carpet Floor Tiles"), MemberPrice("247.50"), NonMemberPrice("287.10"), NonMemberUnitPrice("31.90"), MemberUnitPrice("27.50")] public string CarpetFloorTiles_Quantity { get; set; } public string CarpetFloorTiles_Colour { get; set; } [DisplayName("Raised Floor Tiles"), MemberPrice("940.50"), NonMemberPrice("1188.00"), NonMemberUnitPrice("132.00"), MemberUnitPrice("104.50")] public string RaisedFloorTiles_Quantity { get; set; } public string RaisedFloorTiles_Colour { get; set; } } // Classes de Atributos personalizadas public class NonMemberUnitPrice : Attribute { private decimal value; public decimal Value => value; public NonMemberUnitPrice(string number) { value = decimal.Parse(number, CultureInfo.InvariantCulture); } } public class NonMemberPrice : Attribute { private decimal value; public decimal Value => value; public NonMemberPrice(string number) { value = decimal.Parse(number, CultureInfo.InvariantCulture); } } public class MemberUnitPrice : Attribute { private decimal value; public decimal Value => value; public MemberUnitPrice(string number) { value = decimal.Parse(number, CultureInfo.InvariantCulture); } } public class MemberPrice : Attribute { private decimal value; public decimal Value => value; public MemberPrice(string number) { value = decimal.Parse(number, CultureInfo.InvariantCulture); } } }
Código de acesso desses atributos listados como um Dictionary<string,object> pois os valores retornados em cada atributo podem variar:
using ADX18.Library.Models; using System; using System.Collections.Generic; using System.Linq.Expressions; namespace ADX18.Library.Helpers { public static class ADX18Helper { #region Furniture Helpers public interface iField { } public interface iTestObject { } //tweaked from https://stackoverflow.com/questions/6637679/reflection-get-attribute-name-and-value-on-property //and https://stackoverflow.com/questions/23329087/get-custom-attribute-from-specific-object-property-field public static Dictionary<string, object> GetAttributes<T>(this T source, Expression<Func<object>> field) where T : class { MemberExpression member = (MemberExpression)field.Body; if (member == null) { return null; } Dictionary<string, object> _dict = new Dictionary<string, object>(); object[] propertyAttributes = typeof(T).GetProperty(member.Member.Name) .GetCustomAttributes(true); foreach (var propertyAttribute in propertyAttributes) { var attributeAttributes = propertyAttribute.GetType().GetProperties(); foreach (var attributeAttribute in attributeAttributes) { var propName = $"{propertyAttribute.GetType().Name}.{attributeAttribute.Name}"; if (!_dict.ContainsKey(propName) && attributeAttribute.Name != "TypeId") _dict.Add(propName, attributeAttribute.GetValue(propertyAttribute, null)); } } return _dict; } #endregion } }
Com essas classes definidas, fica mais fácil acessar os atributos no Razor:
@model Furniture @using ADX18.Library.Controllers @using ADX18.Library.Models @using ADX18.Library.Helpers; <div class="col-md-8"> @{ var modeCupboard = Model.GetAttributes<Furniture>(() => Model.ModeCupboard_Quantity); } <h5>@modeCupboard["DisplayNameAttribute.DisplayName"]</h5> <p> Available in four colours, this includes a lockable cupboard with shelves.<br /> L: 1200mm x W: 600mm x H: 1000mm </p> <div> Member: <span class="memberPrice">$@modeCupboard["MemberPrice.Value"] each</span><br /> Non-member: <span class="memberPrice">$@modeCupboard["NonMemberPrice.Value"] each</span> </div> Quantity: <input type="text" name="ModeCupboard_Quantity" style="width: 10%;" /> <select name="ModeCupboard_Colour"> <option value="White">White</option> <option value="Black">Black</option> <option value="Red">Red</option> <option value="Blue">Blue</option> </select> </div>
Então, quando não puder mudar uma propriedade para incluir objetos complexos, use atributos personalizados!
Avaliação Vocacional (Grafológica)
O propósito desta avaliação é mapear seus traços de personalidade e oferecer algumas sugestões de possíveis carreiras, que estejam mais alinhadas com sua personalidade.
Para completar a amostra (carta), siga as instruções a seguir:
- Encontre um lugar sossegado e longe de distrações
- Sente em um local confortável e use uma mesa de altura correta para sua altura
- Use uma folha sulfite A4 Branca (sem pautas) com 6 ou mais folhas embaixo para deixar o papel “acolchoado”
- De preferencia (mas opcional) use caneta bic azul ou preta
- Escreva 20 ou mais linhas (mínimo 20 linhas) sobre qualquer assunto (geralmente sugiro escrever sobre “Como foi seu dia”) que seja original, de sua própria autoria e não seja cópia
- Comece e termine a carta sem intervalos ou distrações
- Escreva com sua própria letra (sem caprichar ou tentar escrever bonito). Use a letra que usaria para escrever algo para si próprio(a)
- Depois que terminar a carta, assine
Agende sua avaliação através do telefone (15) 99800-1775 com a Ana Coelho. A avaliação será feita presencialmente, no Centro de Autossuficiência da Estaca Sorocaba Brasil Barcelona, R. Anibal Prestes, 360 – Vila Barcelona – Sorocaba – SP, 18025-270.
Como criar um efeito reflexo de vidro somente com CSS3
Mesmo depois de muito pesquisar, não encontrei nenhum tutorial que fosse aceitável. Então, acabei por criar meu próprio efeito de reflexo de vidro, usando somente CSS3 (sem javascript).
Sem delongas, segue o código base:
HTML
<div class="glass-wrapper"> <h3>Glass Reflection Box</h3> <div class="content">Your Glass content goes here</div> <div class="glass"></div> </div>
CSS
.glass-wrapper { font-family:Arial; width: 40%; margin:0 auto; overflow: hidden; min-height: 400px; padding:50px; box-sizing:border-box; background: #DF1922; color: #fff; border-radius:8px; position: relative; } .content { width: 100%; box-sizing:border-box; text-align: center; font-size: 2em; text-shadow: 1px 1px 1px #fff, 1px 1px 1px #000, 1px 1px 1px #ccc; } .glass { width: 160%; height: 316px; opacity: .1; background: #fff; position: absolute; top: -114px; left: -200px; z-index: 9; border-radius: 50%; }
Veja o demo
Pacote de Idioma para Tema WordPress Real Places 1.4.0
Pacote de Idioma para Tema Real Places 1.4.0
Este pacote para o tema Real Places – Responsive WordPress Real Estate Theme (pt-BR) para versão 1.4.0 do tema
Traduzido por Carlos Casalicchio e Isis Meirelles.
Comprar via Paypal | Comprar via PagSeguro |
---|---|
Pacote de Idioma para nopCommerce em Português – Brasil (3.90)
Pacote de Idioma para nopCommerce 3.90
Este pacote para nopCommerce é a tradução do site e admin para português do Brasil (pt-BR) para versão 3.90
Traduzido por Carlos Casalicchio e Isis Meirelles.
Comprar via Paypal | Comprar via PagSeguro |
---|---|
Amor é uma escolha, use ferramentas
O Amor é uma escolha, use ferramentas
Antes de iniciar os argumentos deste artigo, preciso deixar completamente claro que conheço minhas fragilidades, defeitos e frustrações. Muitas vezes me arrependo de escolhas do passado e fico desejoso em conserta-las, ou mesmo voltar atrás. Frequentemente redescubro minha mediocridade e me vejo humilhado por minhas próprias falácias. Portanto, em todos os pontos discutidos neste texto, faço com total reconhecimento de que não sou perfeito, e muito menos um exemplo para outros. Dado o aviso, prossigo com o artigo.
Desde meu divórcio, em 2012, tive a oportunidade de conhecer e fazer amizade com mais de uma dúzia de mulheres, de todos os tipos de personalidade e históricos de vida. Dessa experiência recente, posso afirmar que meu pouco conhecimento em psicologia, hipnoterapia, grafologia, MBTI, entre outros, me auxiliaram a ser mais realista e criterioso na hora de escolher com quem me relacionar.
Nesses 5 anos, já disseram que lembro o Christian Grey (cinquenta tons de cinza) – na parte eclética do personagem, não no comportamento – por mais hilário que isso possa parecer. Já elogiaram minha voz – dizendo que até bula de remédio fica interessante com minha narração – e que sou um deus grego (bonito e intelectual). Recebo inúmeros elogios por ser um pai dedicado, detalhista, participativo, preocupado, presente, e por, principalmente, estar lutando pela guarda de minha filha. Mas, também já recebi críticas de tentar ser manipulativo, de opinião forte e por não deixar entrarem no meu íntimo. Já cheguei a ouvir que tenho transtorno de Asperger (autismo) por parecer “insensível”.
Com certeza também já surpreendi algumas com meu comportamento pacífico e calmo – que contradiz o que o senso comum sobre o que meu signo projeta. Mas, também já surpreendi com meu jeito introspectivo e pouco falador – que facilmente causa pausas perturbadoras nas conversas.
Indiferente de tudo isso, algo que tem sido difícil tanto para essas mulheres (que na maioria dos casos são doces e agradáveis) quanto para mim, é o fato de eu ter dificuldades em me relacionar de forma mais séria, incluindo por causa dos meus problemas em minha batalha pela guarda de minha filha (que é um tabu para ser discutido em outra ocasião).
Embora não exista receita de bolo para relacionamentos, e após longa consideração sobre as dificuldades em encontram uma pessoa compatível, cheguei a algumas conclusões, as quais gostaria de discutir:
Sentir empatia não dá passe livre para opinar
Empatia é uma qualidade maravilhosa, que permite que uma pessoa se coloque (ou pense) no lugar de outra, potencialmente compreendendo como a pessoa se sente, sendo capaz de ter compaixão e caridade. No entanto, há situações na vida, que são tão incomuns, que somente aqueles que já passaram pela experiência são capazes de sentir empatia por outros que estejam passando pela mesma coisa.
A morte de um parente próximo, como pai, mãe, avós, etc. trata-se de um evento traumatizante, indiferente das crenças que a pessoa possa ter sobre a “pós vida”. A perda de alguém próximo significa que não a verá mais nesta vida (se houver crença pós vida) ou mesmo nunca mais. Esse é um sentimento estarrecedor e muito triste. Aqueles que nunca passaram por isso podem até tentar consolar com discursos, abraços longos, sermões, ou qualquer outra coisa, mas nada vai preencher o vazio daquele momento. Esse é um exemplo mais extremo, mas existem várias outras situações que somente quem vivencia sabe exatamente o sentimento.
Abuso, maus tratos, assédio, dores físicas, ossos quebrados e várias outras experiências são únicas e quase impossíveis de estarem sujeitas a simples empatia, se não for algo já vivenciado por quem pratica a empatia.
Considerando essa premissa, muitos se veem no direito de comentar, opinar ou mesmo tentar apresentar um “plano de ação” para quem está na situação. As pessoas que não estão vivenciando, quando tentam “ensinar” quem está na vivencia, muito raramente tem a mínima noção do que estão falando. Frases comuns que os “empáticos” dizem: “Você tem que perdoar”, “você tem que desapegar”, “você tem que reagir”, “você tem que mudar sua vida”.
Talvez, algumas pessoas necessitem desse tipo de pressão ou sugestões, mas quem não tem conhecimento de causa não deveria opinar no que não tem conhecimento. Esse comportamento demonstra imaturidade e desgasta relacionamentos, sejam amizades, namoros ou casamentos.
Maturidade não tem nada a ver com idade
Já me falaram várias vezes para procurar alguém com idade mais compatível com a minha. Concordo que a idade influencia na maturidade (obvio), mas anos de vida nem sempre resultam em anos de maturidade. Esse ponto é claramente discutido nos livros O Código da Inteligência e A Trilha menos percorrida.
Quando as pessoas “reagem” e entram em “piloto automático” – agindo e reagindo de forma irracional – elas acabam por desgastar e destruir relacionamentos. Se uma pessoa não sabe se comportar em várias situações, como é possível conviver com essa pessoa? É claro que ninguém é perfeito, mas pessoas maduras são capazes de se abstrair o suficiente para conseguir perceber que estão agindo de forma errada. E, se não estão conseguindo sozinhas, aceitam que precisam de ajuda – todos precisam de ajuda – e aceitam ajuda.
O que é melhor, uma pessoa que já viveu muitas experiências e tem idade mais compatível, mas que está tão cheia de imaturidades, que uma pessoa de 18 anos estaria no mesmo nível de comportamento?
Não estou justificando buscar alguém de 18 anos, mas sim mostrando que idade não deve ser o determinante na hora avaliar maturidade.
Personalidade importa
As mídias sociais são uma ótima ferramenta para se conhecer a personalidade das pessoas. Já comentei sobre esse assunto antes, mas uma pessoa que posta selfies de forma compulsiva demonstra narcisismo, ou um pseudonarcisismo que tenta encobrir sua autoestima inexistente. Uma mulher ou homem que constantemente posta fotos exibicionistas, cultuando o físico, e repostando sobre o físico dos outros (como objeto sexual) mostram que isso é o que mais lhes importa. Isso é algo óbvio, mas que aparentemente muitas mulheres e homens de hoje em dia (em busca de milhares de “curtidas” e “seguidores”) esquecem e voltam a fazer.
O corpo físico enfraquece e envelhece, mas o conhecimento, personalidade e caráter são para sempre. Estudos recentes mostram que a falta de uso da mente favorece o desenvolvimento de doenças mentais como Alzheimer, demências, etc. O corpo envelhece de qualquer jeito, e quando essas pessoas sem personalidade perderem os tônus físicos, tudo que vai sobrar é um invólucro velho e enrugado, sem nenhum conteúdo.
Se uma pessoa tem um belo corpo físico, mas é impossível de conviver, quando sua beleza física desaparecer, o que essa pessoa vai ter para oferecer em um relacionamento?
Auto sabotagem é suicídio afetivo
Essa é uma crítica alheia, mas também pessoal, pois já me vi várias vezes pendendo a agir da mesma forma, por causa das minhas próprias inseguranças. Auto sabotagem é comum, mas maléfico a qualquer relacionamento. O medo de ser rejeitado é comum, mas se for inflado a ponto de se tornar uma fantasia, pode provocar comportamentos irracionais e irreais.
Se uma pessoa acha que a outra é “boa demais para ser verdade” e se permite começar a se rebaixar, se auto criticar e se desvalorizar, pode acabar por sentir tanto receio e medo de que a outra pessoa não a queira mais (afinal “o que EU posso oferecer para ele (a) ”) que acaba por rejeitar preventivamente, mesmo que a outra pessoa esteja feliz no relacionamento.
Parece absurdo? Logicamente, é absurdo, mas muitas pessoas se deixam levar por esses devaneios e acabam por destruir relacionamentos maravilhosos.
Ciúmes exagerados são nocivos
Ciúmes podem ter várias formas. Não é obrigatoriamente ciúmes da “competição”. Esses ciúmes podem se manifestar em desfavor de amigos, hobbies, empregos, serviços voluntários, espiritualismo (igrejas principalmente) e pior, nos filhos do companheiro (a). Em um relacionamento que tive em 2013, cheguei a ouvir que eu dava “atenção demais” para minha filha. Será que a pessoa conseguiu perceber o absurdo dos seus ciúmes?
Assustadoramente, essa situação acontece mais frequentemente do que desejamos, em que o companheiro (a) começa a querer controlar sua agenda, seus horários, seus hobbies, seus amigos. Esse tipo de comportamento destrói a individualidade, e provoca desconfiança, mesmo quando o outro se submete a todas essas exigências, pois ciúmes exagerados são um tipo de Obsessão Compulsiva, que não é nada normal.
Geralmente, esses ciúmes só tendem a aumentar, e destroem completamente qualquer relacionamento. Se você, ou a pessoa que ama, sofre de ciúmes doentios, ela precisa de ajuda profissional (terapia).
Incerteza provoca incerteza
Quando a pessoa elogia, reconhece seu valor, sente atração física, mas constantemente volta atrás – “chove, mas não molha” – a outra parte começa a sentir insegurança e dúvidas sobre o relacionamento.
Essa pessoa tem vergonha de estar com você? Essa pessoa está mentindo sobre seus sentimentos? Essa pessoa não sabe o que quer?
Consegue enxergar o dilema que a incerteza causa em ambas partes em um relacionamento? Se a pessoa não tem certeza que quer estar com você, então não existe relacionamento. Se você não tem certeza que quer estar com aquela pessoa, deixe-a ir. É melhor sofrer com a verdade, do que sofrer com uma desilusão em longo prazo.
Seja honesto (a) consigo mesmo e respeite os sentimentos da outra pessoa, a ponto de permitir que ela a ame genuinamente, ou siga em frente, para ser feliz com alguém que retorne seu afeto. Não fique “com medo de machucar” com a verdade, pois a mentira machuca mais em longo prazo.
Como filtrar pretendentes?
Quais são os critérios que eu uso para julgar um possível relacionamento? A maioria é clichê e já são conhecidas. Mesmo assim, abaixo comento cada um dos critérios, que me auxiliam até hoje a saber escolher um relacionamento.
Lista de prós e contras
Muitos já ouviram falar de listas de prós e contras. Acredito que esse método pode ter maiores resultados se cada item da lista PRÓ e CONTRA possuir uma nota ou atribuição de peso. Ou seja, se uma pessoa tem várias qualidades maravilhosas, mas aquele 1 defeito é extremo e impossível de se conviver, então o resultado seria CONTRA essa pessoa.
Por exemplo:
PRÓS | Pontos | CONTRAS | Pontos |
Inteligente | 10 | Ciúmes doentios | 50 |
Carinhosa | 10 | Poucos estudos | 5 |
Trabalhadora | 10 | ||
TOTAL | 30 | 55 |
Pela tabela acima, a pessoa possui várias qualidades, mas seu defeito tem um peso muito maior e a conclusão é que esse relacionamento não tem futuro.
Com esse tipo de avaliação, é muito mais fácil conseguir determinar quando um relacionamento vale a pena. Lembre-se que não é qualquer item isolado que determina a conclusão, mas uma avaliação realista e sincera do que é importante ou não. Se uma pessoa tem o “mau” habito de sair com os amigos sem avisar, mas que isso não é algo extremo (seu julgamento) então a pontuação não deve ser em detrimento das muitas qualidades que a pessoa possui.
Acompanhar postagens em mídias sociais
Como já comentei anteriormente, as mídias sociais são ferramentas extremamente úteis para avaliar a personalidade, caráter, opinião, hábitos, ideias de qualquer pessoa. Se as suas postagens são gritantes e opostas aos seus princípios, opinião, caráter, etc. então não há dúvidas que um relacionamento com essa pessoa não vai ter futuro. Pessoas que postam demais sobre si (selfies e postagens óbvias que buscam “curtidas”) mostram exatamente onde estão seus focos.
Pessoas que promovem bullying online, racismo, apologia ao crime, drogas, bebidas, desrespeito às mulheres, etc. mostram rapidamente suas opiniões sem precisar se expor a um relacionamento problemático. Se um homem postar sobre a sexualidade feminina e retratar as mulheres como objetos, ele nunca irá tratar uma mulher com decência e respeito.
Observar, conversar e analisar
Se o relacionamento tiver prosperado ao ponto de proporcionar oportunidades para observação, então observe com cuidado. Veja como se porta em meio a amigos, familiares, colegas de trabalho, em sua igreja, com seus filhos.
Converse sempre e preste atenção a contradições (age de uma forma, mas fala de outra) afim de determinar se está lidando com alguém sincero e genuíno, ou se é alguém que está “atuando” o papel de companheiro (a) ideal, até conseguir o que busca.
Seja objetivo e analítico durante as primeiras fases do relacionamento, para ter certeza que a pessoa realmente é aquilo que professa. Recomendo a leitura do livro da Ana Beatriz Barbosa Silva, Mentes Perigosas – O psicopata mora ao lado. Esse livro abre os olhos e justifica porquê observar, conversar e analisar.
Determinar a personalidade e compatibilidade
Pessoalmente, tenho a ferramenta da grafologia[i] como auxílio, além de todas as outras mencionadas a seguir. De qualquer forma, saber avaliar a personalidade da pessoa ajuda na hora de determinar se as personalidades (sua e dele (a)) são compatíveis é vital. Existem várias ferramentas de avaliação, incluindo MBTI (Myers-Briggs Type Indicator), Hartman Color Codes e até o signo (sendo o último somente em complemento das anteriores).
A personalidade da pessoa pode ser um complemento ou um paradoxo na sua vida, e deve ser levado em consideração na hora de avaliar se um relacionamento é possível. A atração física sempre é importante, mas a compatibilidade de personalidades é mais importante em longo prazo. Se a pessoa quer ser aceita com suas qualidades e defeitos, mas não quer aceitar os defeitos de seu companheiro (a) e exige mudanças, então provavelmente um dos dois terá que se anular, e terão um relacionamento infeliz. Esse comentário serve tanto para homens quanto mulheres.
[i] Grafologia é o estudo da personalidade através da letra / escrita
Estudar sobre comportamento humano
Ao final deste artigo, listei vários links úteis e livros sobre o comportamento humano que considero valiosos tanto para o autoconhecimento, quanto para compreender como as outras pessoas agem, e porque reagem.
Esse conhecimento pode ajudar a lidar com várias situações, desmistificando e esclarecendo o motivo para as pessoas agirem do jeito que agem. Também ajuda a entender que os comportamentos dos outros não são um reflexo de sua personalidade, mas sim algo inerente a elas mesmas.
Estudar o comportamento dele (a)
Mesmo depois de acumular todo o conhecimento teórico, é vital continuar sempre aprendendo sobre a pessoa com quem temos um relacionamento. Seja um relacionamento romântico, ou mesmo com amigos, filhos, e pessoas queridas.
Relacionamentos são escolas, as outras pessoas são motivo de estudos aprofundados. Saber mais sobre aqueles que amamos aumenta ainda mais nosso amor e interesse por elas. Claro, esse interesse deve ser mútuo, para que o relacionamento seja duradouro, mas estar fora da zona de conforto deve ser sempre a meta e ferramenta de um relacionamento ideal.
Ter um modelo de “pessoa ideal”
Um modelo de pessoa ideal inclui todas as qualidades, tanto físicas quanto intelectuais que você considera mais atraentes. Essa lista pode incluir qualquer coisa. Ela não precisa ser pública e nem publicada em mídias sociais, como propaganda de “procura-se”.
A lista deve ser sincera e honesta, como um ponteiro de norte que aponte na direção da pessoa certa. Será muito difícil, se não impossível, encontrar alguém que possua todas as qualidades da sua lista. Mas essa pode auxiliar na busca pela pessoa que você considere “perfeita”.
Uma lista de qualidades, por ordem de importância, pode ser:
- Empatia
- Lealdade
- Inteligência
- Afetuosidade
- Educação
- Diplomacia
- Determinação
- Disciplina
- Atitude
- Beleza Física
- Estrutura social e financeira
- Engenhosidade (criatividade)
- Saber gerenciar um lar
- Talentos (música, artes, etc)
Conclusão
Apesar de todos os critérios que me auxiliam, estou ciente de que o fator “atração” sempre tem um valor alto, por mais que os outros itens tenham peso no veredito final. Não me considero um expert em relacionamentos, nem um Don Juan conquistador de mulheres. No entanto, pensei ser importante comentar minhas “descobertas” (que não são novidades, só são com minhas palavras) sobre relacionamentos, suas armadilhas e dificuldades.
Leitura adicional
- Dicas sobre relacionamentos http://sosuave.com/
- Dicas sobre mulheres http://www.girlschase.com/
- Dicas sobre 1ª impressão http://www.zergnet.com/news/357980/youre-totally-ruining-your-1st-impression-by-doing-these-things
- Como reconhecer quando um homem a ama https://familyshare.com/26826/14-gestures-of-a-man-actually-in-love
- Signos http://www.euroresidentes.com/portugues/os-12-signos-do-zodiaco/signos-do-zodiaco.htm
- Compatibilidade astrológica http://www.thelovequeen.com/love-relationship-astrological-compatibility/
- Hartman Colors http://www.colorcode.com/about/
- Mbti https://www.16personalities.com/br/teste-de-personalidade
- Zona de Conforto https://www.significados.com.br/zona-de-conforto/
- Como ter um relacionamento duradouro https://www.ccasalicchio.com/como-ter-um-relacionamento-duradouro/
- Como escolher o parceiro ideal https://www.ccasalicchio.com/como-escolher-o-parceiro-ideal/
Livros
- A Linguagem Corporal do Amor – Dicas Para Se Tornar Mais Atraente Para o Sexo Oposto. PEASE, Allan e BARBARA
- Mentes Perigosas – O Psicopata mora ao lado. SILVA, Ana Beatriz Barbosa
- Pare de se sabotar e de a volta por cima. FLIPPEN, FLIP
- A Trilha menos percorrida. PECK, M. SCOTT
- O Código da Inteligência. CURY, Augusto
Downloads
Caso tenha dúvidas, ou comentários, fique à vontade em participar, usando o formulário abaixo.
Análise de personalidade de abduzidos e contatados
Análise de Personalidade através da Grafologia
A primeira fase desta pesquisa consiste em adquirir amostras de personalidade através de cartas grafológicas. Se você acredita que foi abduzido ou sabe que é, e gostaria de participar de nossa investigação, crie uma carta seguindo as regras a seguir e depois nos envie para análise.
- Encontre um lugar sossegado e longe de distrações
- Sente em um local confortável e use uma mesa de altura correta para sua altura
- Use uma folha sulfite A4 Branca (sem pautas) com 6 ou mais folhas embaixo para deixar o papel “acolchoado”
- De preferencia (mas opcional) use caneta bic azul ou preta
- Escreva 20 ou mais linhas (mínimo 20 linhas) sobre qualquer assunto (geralmente sugiro escrever sobre “Como foi seu dia”) que seja original, de sua própria autoria e não seja cópia
- Comece e termine a carta sem intervalos ou distrações
- Escreva com sua própria letra (sem caprichar ou tentar escrever bonito). Use a letra que usaria para escrever algo para si próprio(a)
- Depois que terminar a carta, assine
- Tire uma foto da sua carta e envie usando o formulário abaixo:
- Submeta em PDF ou imagem (jpg, png)
- Tire foto do papel inteiro (inclusive as margens) – não tem problema aparecer a mesa atrás 😉
- Tire com a maior qualidade possível e não ajuste a imagem, mande a original
Esta linha de pesquisa tenta mapear a personalidade e caráter daqueles que foram abduzidos, para determinar o impacto da experiencia em sua vida.
Através da letra é possível descobrir se sofre muita ansiedade, medo, fobias, e etc.
Também, outra parte da pesquisa tenta mapear as características que são comuns aos indivíduos que passaram por abduções, afim de usar como teste de controle para casos futuros e descobrir se outros abduzidos são genuinos ou fabricados, além de tentar determinar qual tipo de experiencia tiveram, antes mesmo da hipnose.
Após ter completado sua cartinha, submeta-a pelo formulário abaixo. Quaisquer dúvidas, poste nos comentários.
§ Note que sua carta e dados serão mantido em sigilo, nada será postado em mídias sociais ou internet. Caso prefira, use formulário de contato para conseguir meu email.
Provocações Anticéticos – Em favor da Ufologia
Provocações Anticéticos – Em favor da Ufologia
Palestra durante a 2º REUNIÃO PÚBLICA VIRTUAL GEUC intitulada Provocações Anticéticos
Essa palestra, Provocações Anticéticos – Em favor da Ufologia, discute os fatos científicos históricos e mais recentes que levam ao questionamento sobre a possibilidade da existencia de vida fora do nosso planeta, e da possibilidade de tecnologia suficiente para o contato.
https://www.youtube.com/watch?v=H5YdrqqwXU4
Resumo da palestra
- Nosso planeta é minúsculo e tem somente 4.2 bilhões de anos. O universo tem 13.8 Bilhões de anos
- Em 150 anos de avanços científicos fomos capazes de inventar o avião, celular e o computador, que dirá o que outras civilizações foram capazes de inventar nos aproximadamente 7 bilhões de anos a mais do universo?
- Varios fatos científicos apontam para vida fora do nosso planeta
- Apesar de tudo, a ufologia tem muito problema com falsos relatos, imagens fabricadas e vídeos fraudados.
Vários links foram inseridos nos slides e estão relacionados às noticias e fatos científicos mencionados na palestra. Os vídeos usados estão disponíveis no YouTube:
Você se sente Grande? – Comparação de tamanho de planetas e estrelas
5 Maiores coisas que aprendemos com o Telescópio Hubble – Discovery News Facebook
Os slides da palestra estão disponíveis no slideshare http://www.slideshare.net/ccasalicchio/provocaes-anticticos-sobre-ufologia
Plugin para Umbraco 7 (belle)
Tutorial Umbraco 7 de Plugin Backoffice simples
Com o lançamento do Umbraco 7 em 21 de Novembro de 2013, a plataforma CMS do Umbraco mudou considerávelmente e deixou a vida dos usuários e, principalmente, dos desenvolvedores, muito mais fácil.
Não somente a interface administrativa (backoffice) foi bastante melhorada, mais fluida e compatível com aparelhos móveis.
Com isso, o tempo de desenvolvimento diminui bastante, facilitando bastante a vida. Agora, com o uso de simples Html5, CSS3, e Angular.js ficou fácil de criar extensões para a área administrativa.
Para demonstrar, vou mostrar a criação de uma extensão de backoffice simples de limite de carateres, e usei como exemplo o tutorial do Tim Geyssens Char Limit Property Editor for Umbraco Belle (http://www.nibble.be/?p=285)
Como comentei, o processo é simples:
- Para se criar um plugin, é necessário criar uma pasta dentro de App_Plugins
- Cria-se o package.manifest
{ propertyEditors: [ { alias: "Input.CharLimitEditor", name: "Input Char limit", "hideLabel": false, "icon": "icon-stop-hand", "group": "Common", editor: { view: "~/App_Plugins/Input.CharLimitEditor/views/view.html" }, prevalues: { fields: [ { label: "Number of Characters", description: "Enter the max number of characters allowed", key: "limit", view: "requiredfield", validation: [ { type: "Required" } ] } ] } } ] , javascript: [ '~/App_Plugins/Input.CharLimitEditor/js/controller.js' ], css: [ "~/App_Plugins/Input.CharLimitEditor/css/style.css" ] }
- O layout do Html
<div ng-controller="Input.CharLimitEditorController" class="input-limit"> <span ng-if="model.config.limit >= 100"> <textarea ng-model="model.value" ng-change="limitChars()" rows="10" class="umb-editor umb-textarea textstring"></textarea> </span> <span ng-if="model.config.limit < 100"> <input ng-model="model.value" ng-change="limitChars()" type="text" class="umb-editor umb-textstring textstring" /> </span> <span class="counter {{css}}"> <i class="icon icon-{{icon}}"></i> <span ng-show="countLeft"> <localize key="inputlimit_youhave">you have</localize> {{counter}} <localize key="inputlimit_charleft" >characters left</localize> </span> <span ng-show="maxReached"> <localize key="inputlimit_limitReachedOnly">Only</localize> {{limit}} <localize key="inputlimit_limitReachedAllowed">allowed</localize> </span> </span> </div>
Note que a tag
<localize key="inputlimit_limitReachedOnly">Only</localize>
está relacionada à Localização e não é obrigatória, mas ajuda se for publicar o pacote na comunidade
- (Opcional) Criar os arquivos de Idiomas para Localização
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <language alias="pt_br" intName="Portuguese Brazil" localName="Portuguese Brazil" lcid="" culture="pt-BR"> <creator> <name>Carlos Casalicchio</name> <link>https://www.ccasalicchio.com</link> </creator> <area alias="inputlimit"> <key alias="youhave">Você tem</key> <key alias="charleft">caracteres sobrando</key> <key alias="limitReachedOnly">Somente</key> <key alias="limitReachedAllowed">caracteres permitidos!</key> </area> </language>
- O CSS (opcional)
.input-limit .counter{ -webkit-transition: all 0.8s ease-in-out; -moz-transition: all 0.8s ease-in-out; -ms-transition: all 0.8s ease-in-out; -o-transition: all 0.8s ease-in-out; transition: all 0.8s ease-in-out; } .input-limit .thumb-up,.input-limit .alert,.input-limit .stop-hand{ padding: 5px 10px; } .input-limit .thumb-up{ background:#4FA23C; color:#fff; } .input-limit .alert{ background: #B8860B; color: #fff; } .input-limit .stop-hand{ color: #fff; background: #DD793F; }
- E o mais importante, o controller.js (Angular.js)
angular.module("umbraco") .controller("Input.CharLimitEditorController", function ($scope) { var limit = parseInt($scope.model.config.limit); var thumbUp = "thumb-up", alert = "alert", warning = "stop-hand"; $scope.counter = limit - $scope.model.value.length; $scope.limit = limit; $scope.countLeft = true; $scope.maxReached = false; $scope.icon = thumbUp; $scope.css = thumbUp; $scope.limitChars = function(){ $scope.counter = limit - $scope.model.value.length; CheckChars(); }; function CheckChars(){ if($scope.model.value.length === 0){ $scope.countLeft = true; $scope.maxReached = false; $scope.icon = thumbUp; $scope.css = thumbUp; } else if ($scope.model.value.length >= limit) { $scope.maxReached = true; $scope.countLeft = false; $scope.icon = warning; $scope.css = warning; $scope.model.value = $scope.model.value.substr(0, limit ); } else if($scope.model.value.length < (limit/2)){ $scope.icon = thumbUp; $scope.css = thumbUp; $scope.maxReached = false; $scope.countLeft = true; } else if($scope.model.value.length > (limit/2)){ $scope.icon = alert; $scope.css = alert; $scope.maxReached = false; $scope.countLeft = true; } else { $scope.icon = alert; $scope.css = alert; $scope.maxReached = false; $scope.countLeft = true; } } CheckChars(); });
Após isso, pode-se criar um pacote e submeter à comunidade, para que outras pessoas também usem, mas isso também é opcional. Este pacote, em particular está disponível em https://our.umbraco.org/projects/backoffice-extensions/input-character-limit/ e o código fonte no GitHub
Este plugin cria uma caixa de texto ou area de texto com um contador de caracteres, com várias chamadas visuais, afim de auxiliar o usuário a digitar o número de caracteres permitido.
Em resumo, criar plugins para Umbraco ficou ainda mais fácil, e a curva de aprendizado ainda menor! Vale a pena investir nesse CMS.