This is a personal blog, the opinions expressed here are my own, and do not necessarily reflect those of my employer. Este é um blog pessoal e por isso o que é escrito aqui, pode não refletir as idéias das empresas em que eu trabalho e nem dos parceiros com quem eu faço negócios. Bem vindo e espero que aproveite algo. Be welcome and I hoje you enjoy 🙂

Last #10

Unfortunately we all know that we can’t put everything what we are working in, on a simple blog, I have to understand this since years ago when I worked at some government department. But I can show what I am doing now just for fun and for registry to me in the future.

we were had some problems here, especially when we’d need to try validate a lot of forms that involved things like UITextField, UISegmentedControl, etc. To solve this issue I had to create one class with methods like:

.insert(object, checkType, labelError, errorMessage) // magic goes here.
.showErrors() // print on screen all erros like below
.count() // return the quantity of erros below
.result() // return if all tests are passed or no.

and the code is easily readable:

@IBAction func onActAll(sender: AnyObject)
{
    if ruleThis.result() == false {
        ruleThis.showErrors()
    } else {
        print("Do your segueway or something after success.")
    }
}

(You set a trigger for validation, here a button to Next Screen)

Then you assign function pointers to the stack os Validations.

override func viewDidLoad() {
    super.viewDidLoad()

    ruleThis.insert(object: textFieldCPF,
        function: checkIfCPFisValid, errorLabel: labelMessageCPF,
        errorMessage: "CPF inválido, sua mensagem personalizada aqui.")

    ruleThis.insert(object: textFieldPassword, 
        function: checkIfPasswordIsValid, errorLabel: labelMessagePassword,
        errorMessage: "Sua senha não preenche os resquisitos mínimos de segurança, tente novamente")

    ruleThis.insert(object: textFieldInputCEP, 
        function: checkIfCEPisValid, errorLabel: labelMessageCEP, 
        errorMessage: "Este CEP não é válido")

    ruleThis.insert(object: segmentedOption,
        function: checkIfIsSelected, errorLabel: labelMessageSegmented,
        errorMessage: "Por favor selecione uma das opções.")
}

Then you make a function validation to the object assigned. This coule be simple as

func checkIfTextIsBlank(obj: AnyObject?) -> Bool
{
    var result = false
    
    if let object = obj as? UITextField {
        if !object.text!.isEmpty { // if is not nil.
            result = true
        }
    }

    return result
}

or a little more complex like this (a validation check for social number in Brazil), and the results are below:

validating screen in iOS with Swift

validating screen in iOS with Swift

For me the results are cool and work! I really enjoy work with Swift. 🙂

Sempre quis algo assim e perdi algumas oportunidades antes. Quase tive uma chance em duas gigantes mas sempre tem que ter aquela sorte a mais né. Em Agosto de 2015 recebi a proposta de trabalhar em casa numa startup em ótimo ritmo de crescimento, larguei um trabalho fixo de cinco anos para buscar novos desafios novamente no mundo dos portáteis, hoje mobiles, além é claro de uma oportunidade de trabalhar remoto. Trabalhar em casa as vezes passa a impressão para algumas pessoas de que tudo vai ser mais fácil, você não irá ter nenhum problema de adaptação e você não vai precisar se esforçar muito, se você acha isso está muito enganado. Na minha primeira experiência posso relatar alguns pontos positivos e outros nem tanto assim.

Positivos
– Trânsito. Você até esquece que existe. Isso foi um dos fatores que mais me influenciaram pois aqui na minha cidade o bixo pega.
– Tempo. Para mim realmente a sensação de horas a mais para fazer algo tornou-se real. Isso não quer dizer que se você não for organizado, essas horas não sejam pura procrastinação.

Negativo
– Sociabilidade. Somos seres humanos e como tais precisamos nos socializar com outras pessoas, depois de um tempo isso incomoda um pouco alguns, para mim foi um pouco mais fácil pois sou bem casado. 🙂
– Comida. É muito bom poder comer melhor e cozinhar, mas acredite, nem todo mundo gosta de cozinhar todos os dias durante um mês ou mais. Depois de um tempo você precisa dar uma saidinha para almoçar alguns dias na semana.
– Sedentarismo. Por vezes é necessário esticar umas horas de trabalhos a mais ou simplesmente querer descansar um pouco e comer umas guloseimas, muitas vezes esquecemos até de levantar da cadeira por alguns minutos, e beber uma água. Lembre-se o ser humano precisa de 3 litros por dia! 😛

Eu acho que nem todo mundo está pronto pra uma mudança assim, mas acredito que a maioria possa se adaptar. Ee eu pudesse dar algumas dicas a quem pensa em fazer isso, eu talvez falasse:
– Seja organizado. Separe um caderninho, sua planilha ou qualquer outro método que usa para ajudar a se organizar e use-o! Use bastante.
– Tenha os horários corretos. Saiba que deve dar exemplo principalmente por estar trabalhando remotamente e não perca seus compromissos. Saiba também quando parar e esquecer um pouco do trabalho.
– Mantenha todos os interessados e principalmente as pessoas a quem você responde, o status das coisas que você está fazendo e tente sempre cumprir os prazos.
– Ambiente de trabalho. Independente da sua profissão se você vai trabalhar remotamente você vai precisar usar sistemas de vídeo conferência, compartilhamento de telas, edição se documentos na nuvem, etc. Manter uma sala separada ou pelo o menos uma mesa que seja o seu “escritório” é essencial para mim, sempre mantenha-o limpo e organizado. Mantenha tudo o que você precisa para trabalhar ao seu alcance.
– Se exercite! Pratique exercício quando puder, se for disciplinado pelo o menos umas três vezes por semana, mas ao menos faça caminhadas fora de sua casa para manter também a saúde mental.

Bom, por hora é isso. Depois tem mais!

O intuito deste post não é mostrar os melhores documentos nesta disciplina mas sim algumas referências úteis para compreender mais a fundo este tema e quem sabe até para ajudar na publicação de futuros artigos. Durante minhas pesquisas em segurança da informação, voltadas principalmente para Linux mas com base em outros sistemas também, tive certa dificuldade em achar materiais de qualidade e tive de fazer uma pesquisa extensa, aqui neste post recomendo alguns dos livros e artigos que li e achei bem legais nesta disciplina, além de ler estes documentos você pode utilizá-los em seus artigos relacionados a segurança sem medo. São eles:

  • Communication Theory of Secrecy Systems, 1949. Escrito por Claude Shannon este material é um dos mais importantes documentos escritos e é a base da teoria da criptografia e sobre sistemas secretos.
  • The codebreakers : the story of secret writing, 1967. David Kahn produziu um livro espetacular sobre a história da criptografia, contém histórias fantásticas sobre eventos de criptografia durante a história.
  • The Protection of Information in Computer Systems, 1975. Contém um dos primeiros materiais escritos sobre a proteção das informações em computadores. Escrito por SALTZER, Jerome H. e SCHROEDER, Michael D.
  • New directions in cryptography, 1976. Escrito pelos famosos criptográfos Diffie Whitfield e Martin Hellman, fornece a base da criptografia moderna, introduz conceitos de chaves públicas e novas idéias que foram utilizadas nos anos seguintes.
  • Trusted computer system evaluation criteria, 1985. É um documento do departamento de defesa americano mostrando a base de um sistema de avaliação de segurança em computadores.
  • Applied Cryptography: Protocols, Algorithms, and Source Code in C, 1995. Excelente material descrevendo algoritmos de forma teórica e técnica para os amantes da criptografia. Escrito pelo renomado autor Bruce Schneier.
  • Handbook of applied cryptography, 1996. É um livro grátis disponível na internet que descreve a criptografia e alguns de seus algoritmos. MENEZES, Alfred e OORSCHOT, Paul C. van e VANSTONE, Scott A.
  • Role-Based Access Control Model, 1996. Neste artigo Ravi Sandhu et all. descreve os principais conceitos de um sistema de controle de acesso baseado em RBAC.
  • A Common Language for Computer Security Incidents, 1998. John Howard e Thomas Longstaff – Material que contém uma das bases para tratamento e reports de incidentes relacionados a segurança da informação.
  • Computer Security: Will We Ever Learn? 2000. Bruce Schneier explica neste artigo porque a segurança é um processo e não um produto.
  • Linux Security Modules: General Security Hooks for Linux, 2001. SMALLEY, Stephen e FRASER, Timothy e VANCE, Chris explicam os conceitos básicos da implementação de funções genéricas comuns aos módulos de segurança do kernel do linux.
  • The design of Rijndael: AES — the Advanced Encryption Standard, 2002. Descreve o funcionamento do padrão AES utilizado em larga escala nos negócios. DAEMEN, Joan e RIJMEN, Vincent.
  • Linux security module framework, 2002. Excelente documento descrevendo o framework de segurança do Linux. WRIGHT, Chris e COWAN, Crispin e MORRIS, James e SMALLEY, Stephen e KROAH-HARTMAN, Greg
  • Computer Security: Art and Science, 2003. Matt Bishop descreve toda a base de segurança da informação, um dos livros mais comprados no Amazon sobre o tema.
  • A arte de enganar, 2003. Kevin Mitnick um dos hackers mais procurados pelo FBI em sua época explica os conceitos da engenharia social e como eles podem ser danosos quando aplicados as organizações.
  • NBR 17799: Tecnologia da Informaçãoo – Técnicas de Segurança – Código de Prática para controles de segurança da informação. A norma brasileira que discute as melhores práticas para aplicação de uma política de segurança da informação eficiente.
  • Criptografia em Software e Hardware, 2005. MORENO, Edward David e PEREIRA, Fábio Dacêncio and CHIARAMONTE, Rodolfo Barros dão uma aula sobre os aspectos da criptografia moderna, excelente livro em português.
  • Data Communications and Networking, 2007. FOROUZAN, B.A. e FEGAN, S.C. abordam praticamente tudo o que é possível ser dito sobre comunicação de redes físicas e lógicas.
  • Fundamentals of Risk and Insurance, 2008. Uma visão interessante dos especialistas VAUGHAN, Emmett J. e VAUGHAN, Therese M. sobre o gerenciamento de riscos em organizações.
  • Computer security, 2008. STALLINGS, William e BROWN, Lawrie – Excelente livro que aborda os tópicos e conceitos básicos sobre segurança da informação.
  • Hacking Exposed Linux, 2008. Peter Herzog e uma equipe de profissionais de segurança abordam as vulnerabilidades ao qual o Linux está exposto.
  • Computer and Information Security Handbook, 2009. VACCA, John R. – Se eu tivesse de escolher um único livro sobre segurança da informação na minha biblioteca seria este sem dúvidas. COMPLETO. Um MUST HAVE pra especialistas em segurança.
  • Linux Kernel Vulnerabilities: State-of-the-art Defenses and Open Problems, 2011. Um artigo interessante sobre vulnerabilidades no Kernel do Linux. CHEN, Haogang e MAO, Yandong e WANG, Xi e ZHOU, Dong e ZELDOVICH, Nickolai e KAASHOEK, M. Frans
  • What does SELinux do to contain the the bash exploit?, 2014. Dan Walsh um dos arquitetos e criadores do SELinux mostra o que este módulo de segurança pode fazer para mitigar os riscos do ShellShock
  • Red Hat Enterprise Linux 7: A Guide to Securing Red Hat Enterprise Linux 7, 2015. Neste guia a Red Hat mostra algumas técnicas de hardening no Linux. PRPIĈ, Martin and CAPEK, Tomáŝ and WADELEY, Stephen and RUSEVA, Yoana and SVOBODA, Miroslav and Krátký, Robert

Também tive a oportunidade de gerar um BiBTeX com todos estes documentos para ser adicionado na bibliografia de um documento LaTeX, se alguém estiver interessado em uma cópia é só me mandar um e-mail 🙂 É isso, espero que curtam a leitura!

Some days ago I began to work with Swift, the new programming language of Apple, and iOS! Some people even said that I betrayed the movement! LOL! Really, I feel a little sad to let the open source projects in background for a time but for other side I am really motivated to work with new things and learn new technologies.

Swift is a mix of the best of programming languages, she have tuples, dictionaries, nested functions and little new concepts like optionals! I am really enjoying learning a lot with my new tech friends and really liking the new spirit of innovation that surrounds here.

Some basic tips of Swift:

– Variables are generic but you also can put his value type.

– You need ‘let’ or ‘var’ to declare one variable.
let something: String = “This is a immutable string”
var somethingOther = “This is a muttable string”

– Enums can be almost anything not just only numbers.

– Cases in switch can do amazing things like compare if value is some value type or another.

– Default parameters in functions are awesome like in Python!

– Doing for-loops are very fun!
for i in 1..<someVariable.count { makeWhatYouNeed() }

– Lazy properties are crazy and useful
private var someNasty: String
var usefulThing:String { get { return someNasty } set { someNasty = usefulThing } }

It’s easy create some fun to a nerdy guy! For the first time in my life, I have to thank to Apple for this!

Hello friends, I’ve been using KVM a lot of months until now and every new host server that I create I need to change the way of how Slackware seems to create cgroups, libvirt doesn’t function very good if you don’t create specific directories in ‘/sys/fs/cgroup’ tree. So, to do that for me I made this script below

# cat /etc/rc.d/rc.cgroup

#!/bin/sh
#
# /etc/rc.d/rc.cgroup: cgroups init script
# Alexandre Mulatinho <alex@mulatinho.net>
# Unmount /sys/fs/cgroup
umount /sys/fs/cgroup

# Mount cgroup_root in /sys/fs/cgroup
mount -t tmpfs -o mode=755,rw cgroup_root /sys/fs/cgroup/

# Mount all the subsystems available in /sys/fs/cgroup as individual directory
for i in $(lssubsys -a | sed -e 's/,/ /g');
do
    mkdir -pv /sys/fs/cgroup/$i
    mount -v -t cgroup -o $i $i /sys/fs/cgroup/$i
done

# chmod u+x /etc/rc.d/rc.cgroup

And now everytime my slackware system boot, my cgroups tree are build in right way that KVM and libvirt can use him to manipulate things like memory, cpu, io, disk, etc. Hope it helps someone else 🙂

Sempre acompanho a premiação dos melhores softwares do fórum LinuxQuestions.org e gosto de anunciar aqui no site pois permite que usuários que estejam indecisos com alguns softwares possam ter uma base para escolhê-los, gostei bastante dessa lista!

Desktop Distribution of the Year – Linux Mint/Slackware/Ubuntu (22.20%)
Server Distribution of the Year – CentOS (30.74%)
Mobile Distribution of the Year – Android (56.72%)
Database of the Year – MariaDB (34.21%)
NoSQL Database of the Year – MongoDB (44.74%)
Office Suite of the Year – LibreOffice (86.05%)
Browser of the Year – Firefox (57.79%)
Desktop Environment of the Year – KDE (33.57%)
Window Manager of the Year – KWin (20.30%)
Messaging Application of the Year – Pidgin (40.09%)
VoIP Application of the Year – Skype (46.06%)
Virtualization/Container Product of the Year – VirtualBox (49.26%)
Audio Media Player Application of the Year – VLC (30.85%)
Video Media Player Application of the Year – VLC (65.64%)
Graphics Application of the Year – GIMP (65.75%)
Network Security Application of the Year – Wireshark (22.54%)
Host Security Application of the Year – Rootkit Hunter (23.97%)
Network Monitoring Application of the Year – Nagios Core (35.45%)
IDE/Web Development Editor of the Year – Eclipse (17.46%)
Text Editor of the Year – vim (30.30%)
File Manager of the Year – Dolphin (27.70%)
Open Source Game of the Year – SuperTuxKart (12.39%)
Programming Language of the Year – Python (27.74%)
Revision Control System of the Year – git (72.63%)
Backup Application of the Year – rsync (42.75%)
Configuration Management Tool of the Year – Puppet (31.94%)
Open Source Web Framework of the Year – Django (30.00%)
X Terminal Emulator of the Year – Konsole (21.96%)
Privacy Solution of the Year – Adblock Plus (23.99%)
Open Source Cloud Solution of the Year – ownCloud (56.20%)
FTP Client of the Year – FileZilla (58.82%)
Game Distribution Service of the Year – Steam (73.86%)

Fonte: http://www.linuxquestions.org/questions/linux-news-59/2014-linuxquestions-org-members-choice-award-winners-4175532948/

%d blogueiros gostam disto: