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

Hello friends!

Today is 2016/08/25, 25 years of Linux! Happy Birthday!!😀😀

Today we gonna talk about how to upgrade a Slackware, we will use just the official slackware package management tool (slackpkg), lets upgrade a slackware 14.2 to a -current for example (this also works with other versions too, but try upgrade to the next always or deal with consequences).

What is slackpkg?

Slackpkg is a system package management tool developed by PiterPunk and oficially supported by Slackware, some of the most common subcommands are:

slackpkg update          -> synchronize with your mirror 
slackpkg search package  -> looks for 'package' into mirror
slackpkg install package -> install 'package' from mirror
slackpkg upgrade package -> upgrade 'package' from mirror
slackpkg upgrade-all     -> upgrade all packages installed
slackpkg install-new     -> install new software available in repository

First, install and upgrade your slackpkg

# slackpkg update  #(choose a mirror in /etc/slackpkg/mirrors)
# slackpkg upgrade slackpkg

I like the TDS Mirror but you can choice any -current mirror you like there. Then add the kernel packages into blacklist (/etc/slackpkg/blacklist) make sure that looks like this:

#kernel-firmware
#kernel-generic
#kernel-generic-smp
#kernel-headers
#kernel-huge
#kernel-huge-smp
#kernel-modules
#kernel-modules-smp
#kernel-source

(this is not totally necessary but I like to upgrade kernels after upgrade all other softwares)

Second, then upgrade your glibc-solibs, this is EXTREMELY NECESSARY to not crash your system after some upgrades of software.

# slackpkg upgrade glibc-solibs

Third, install and upgrade all your new software

# slackpkg install-new
# slackpkg upgrade-all

Kernel

Now, if you dont build your kernel youself, uncomment lines of blacklist (/etc/slackpkg/blacklist) to build the new kernel of Slackware repository. Check your lilo.conf or grub and apply the new kernel if you like (take care here, confirm that a new kernel was installed and check the images)

# cp /boot/vmlinuz /boot/vmlinuz-backup
# sed -i '/#kernel/s/^#//g' /etc/slackpkg/blacklist
# slackpkg upgrade-all 
# vim /etc/lilo.conf

The huge.s Slackware default kernel (built-in) have a lot of issues when we need use some softwares that require some modules/built-in by default, an example is the Docker. (huge.s default slackware kernel doesn’t support Docker very good). So you can choose use the generic kernel that has almost any module to load after boot the kernel, solving some of these issues. If you choose to do that, type the commands below, if you dont know what are you doing skip this part and use default /boot/vmlinuz.

# /usr/share/mkinitrd/mkinitrd_command_generator.sh 
mkinitrd -c -k 4.4.16 -f ext4 -r /dev/sda1 -m xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd2:mbcache:ext4 -u -o /boot/initrd.gz
(this will generate this command to build a initrd.gz image, run this)
(it also, of course, creates '/boot/initrd.gz' with your def modules)
# vim /etc/lilo.conf # or your grub. i dont use this
(put your initrd image here and choice a vmlinuz-generic as default image)

Your lilo.conf should now look like this (tip: create another entry with old kernel, so if this fail to boot you can boot with the older)

image = /boot/vmlinuz-generic  # re-check if you use vmlinuz
 root = /dev/sda1              # change if not your root disk
 initrd = /boot/initrd.gz
 label = Slack64-Generic
 read-only
image = /boot/vmlinuz-backup
 root = /dev/sda1
 label = Slack64-Okay
 read-only

Then save your MBR and reboot your system!

# lilo -v  (check this with attention)
# reboot

And welcome to the -current version of Slackware, keep it upgraded🙂

Dona Fernanda resolveu casar-se com Carlos, o padre porém disse que os noivos não poderiam escolher a data de casamento devido a grande quantidade de solicitações na igreja. Vários noivos também estavam ansiosos para saber quando poderiam se casar naquela linda igreja, para dizer a cada casal o dia exato em que eles poderiam se casar o padre solicitou que eles fornecessem de 1 até 5 dias no mês de sua preferência e desenvolveu um algoritmo que ajudaria a resolver este impasse de forma aleatória e justa agora e no futuro, ele definiu:

  • T – quantidade de casamentos na fila
  • M – mês do casamento
  • N – quantidade de dias do mês disponível
  • Vx – Valor do dia na posição X (V1, V2, V3…)

ENTRADA VÁLIDA

T
N V1 V2 V3 … Vx
M

Cada linha corresponde a uma entrada do casal, então se T for igual 10, existiriam 10 casais para casar na igreja em determinado mês, e por consequência, haveriam 10 linhas de entrada informando os dias preferidos do casal.

POR EXEMPLO

5
5 2 7 5 8 14
5 2 4 14 8 15
1 4
0
3 2 7 9
2

RESTRIÇÕES

T > 0 && T <= 20
M > 0 && M <= 12
N > 0 && N <= 5
V > 0 && V < 32 

  • O dia a ser escolhido deve ser o menor do grupo
  • Caso um casal tenha selecionado um dia já escolhido por outro ele ficará com o próximo dia possível, se houver (por exemplo, A = 4 = { 1, 3, 4, 6 } se os dias 1, 3 e 4 já tiverem sido escolhidos, o casal poderá tentar o próximo item, o quarto número, o dia 6), mas precisa ser sempre o menor número do grupo.
  • Em caso de não haver outro dia disponível para o casal deverá ser escrito:
    • “O casal número N só pode casar no próximo mês pois já tem um casal nos dias selecionados”

  • Em caso de violação de restrição deverá ser escrito
    • “Padre, foi encontrado uma inconsistência nos dados.”

RESPOSTA VÁLIDA / SAÍDA VÁLIDA

Padre, são 5 Casamentos em Fevereiro
O casal número 1 ficou de casar no dia 2 de Fevereiro
O casal número 2 ficou de casar no dia 4 de Fevereiro
O casal número 3 só pode casar no próximo mês pois já tem um casal nos dias selecionados
Padre, foi encontrado uma inconsistência nos dados.
O casal número 5 ficou de casar no dia 7 de Fevereiro

EXPLICAÇÃO DA SAÍDA

“Padre, são 5 casamentos em Fevereiro”
 é o número T de casamentos de entrada e o mês M da entrada

“O casal número 1 ficou de casar no dia 2 de Fevereiro”
é o primeiro casal que tem os dias N = {2, 7, 5, 8, 14} disponíveis e o menor possível é o dia 2 de Fevereiro

“O casal número 2 ficou de casar no dia 4 de Fevereiro”
 é o segundo casal que tem os dias N = {2, 4, 14, 8, 15} disponíveise o menor possível é o dia 4 de Fevereiro

“O casal número 3 só pode casar no próximo mês pois já tem um casal nos dias selecionados”
é o terceiro casal que tem os dias N = {4} disponíveis mas como já existia um casal com o dia 4, não é possível realizar o casamento

“Padre, foi encontrado uma inconsistência nos dados do casal 4.  :(”
é a mensagem de erro em caso de violação de restrição

“O casal número 5 ficou de casar no dia 7 de Fevereiro”
é o quinto casal que tem os dias N = {2 7 9} disponíveis e o menor possível é o dia 7 de Fevereiro

MAIS TESTES PARA VALIDAÇÃO

Gerador de testes aleatórios válidos

bash$ ( T=$(( (RANDOM % 20) + 1 )); echo $T; \
for i in `seq 1 $T`; \
do N=$(( (RANDOM % 5) + 1 )) ; echo -n "$N "; \
for x in `seq 1 $N`; do V=$(( (RANDOM % 31) + 1)); echo -n "$V "; done; \
echo; done; echo $(( (RANDOM % 12) +1 )) )

Teste #01

5
5 21 26 4 1 15 
5 19 11 7 16 17 
1 28 
4 29 6 21 25 
1 11 
5

Teste #02

3
3 28 26 7 
2 29 16 
3 8 14 15 
4

Teste #03

5
3 17 31 16 
1 15 
1 7 
4 31 30 12 1 
2 20 27 
3

Teste #04

18
1 21 
3 23 24 5 
5 15 11 19 28 8 
5 11 9 16 16 5 
1 4 
1 4 
4 4 8 7 26 
4 23 12 11 28 
1 7 
2 28 27 
3 27 13 31 
3 30 29 11 
5 2 5 10 20 14 
5 4 16 5 17 25 
2 3 20 
2 17 2 
5 19 21 2 24 25 
5 16 8 18 23 28 
5

Teste #05

11
5 7 19 30 2 22 
3 8 23 30 
5 25 4 16 17 31 
3 18 31 14 
3 6 3 19 
2 20 1 
2 27 22 
2 16 19 
4 9 28 18 21 
2 10 20 
2 29 9 
7

Quer ver a minha versão com entradas e saídas funcionando??
http://pastebin.com/VvbxBZWD

Conseguiu resolver? Poste suas respostas nos comentários! Quer saber a solução? Entre em contato comigo ou procure na lista de Shell-Script a thread “Desafio Shell-Script #001 do Mulato”😉

bom, eu diariamente utilizo os cálculos listados neste artigo para poder realizar os meus próprios investimentos, por isso achei que poderia ser útil para alguém, pretendo atualizar com mais no futuro; existe bilhões de pessoas neste mundo e cada um tem um jeito de realizar suas tarefas, meus cálculos geralmente são feitos utilizando a shell BASH em vez de uma calculadora comum. (p.s. valores abaixo sem citar impostos de day-trade, corretagem e emolumentos)


  • ALGUMAS OPERAÇÕES SIMPLES USANDO O BC

O comando bc é uma calculadora poderosa que pode rodar na linha de comando simplesmente fornecendo de entrada uma conta matemática

$ echo 4.26-2|bc
2.26

Vejamos algumas operações simples de matemática no bc

$ echo 'scale=2;(5.15+4)/2'|bc  # scale=2 mostra apenas 2 decimais
4.57
$ echo '2^16'|bc                # 2 elevado a 16 
65536
$ echo '(8+2)-(17-7)'|bc 
0

Vejamos algumas operações úteis de percentagem que podem até ser usadas pra calcular rendimento ou simplesmente para a sua análise diária

$ echo 4.26*0.1|bc  # 10% de 4.26
.42
$ echo 4.26*0.25|bc # 25% de 4.26
1.06
$ echo 4.26*1.05|bc # 5% a mais de 4.26
4.47
$ echo 4.26*1.25|bc # 25% a mais de 4.26
5.32
$ echo 3.25*0.84|bc # 3.25 desvalorizou 16% (1.00 - 0.16 = 0.84)
2.73

  • CÁLCULOS QUE UTILIZO A OPERAR NO MERCADO DE AÇÕES 

calcular o custo de compra de um ativo (ação) no mercado de ações, neste exemplo 800 papéis da USIM3 (R$ 8,40 na data do artigo)

$ echo '800*8.4'|bc
6720.0

e se depois de alguns dias decidir vender os papéis; calcular o lucro na venda de um ativo, suponha que o USIM3 em alguns dias vá para R$ 8,75

$ echo '(800*8.75)-(800*8.4)'|bc
280.00

note que o rendimento é relacionado a quantidade de ações e do valor do papel, vamos ver mais alguns exemplos: agora suponha que antes da ação subir ela caiu para R$ 8,28 e após análise decidimos comprar mais 400 papéis da USIM3 acreditando que este ativo vai subir em breve. agora seguindo as regras da BMFBOVESPA é necessário calcular o preço médio do papel após os dois investimentos:

  1. USIM3 (R$ 8,40) X 800 papéis = R$ 6.720,00
  2. USIM3 (R$ 8,28) X 400 papéis = R$ 3.312,00
  3. Total de papéis é igual a 1200 (800 + 400)

fazendo o cálculo final para obter a média de compra

$ echo 'scale=2;((400*8.28)+(800*8.4))/1200'|bc
8.36

e o lucro na venda, supondo que o valor dos papéis volte a atingir R$ 8,75

$ echo '(1200*8.75)-(1200*8.36)'|bc
468.00

yeah! um rendimento líquido de R$ 468,00 menos as taxas de corretagem.


 

  • CÁLCULOS QUE UTILIZO A OPERAR NO MERCADO DE TESOURO DIRETO 

calcular o rendimento médio por mês baseado na SELIC (14,25% na data do artigo);

$ echo 'scale=2; 14.25/12'|bc
1.18

ou seja, o rendimento mensal médio é de 1.18%, o dobro do rendimento da poupança que na data deste artigo está por volta de 6%

agora um cálculo simples de juros compostos, onde as variáveis:

  • initial – representa o valor inicial investido;
  • interest – a taxa de rendimento médio mensal;
  • months – o número de meses em que o investimento será realizado;

bastando trocar os valores abaixo você consegue resultados como:

$ initial=50000; interest=1.018; months=48; \
for i in `seq 1 $months`; do \
initial=`echo "scale=2; $initial * $interest"|bc`; \
printf "month %2d, r$ %12.2f\n" $i $initial; done

Uma ótima ferramenta que utilizo para ver gráficos, mais uma vez acho que não é tão adequado pra day-trade porque tem delay de minutos, é o Trading View que é free e perfeito na minha opinião, várias ferramentas e indicadores úteis para você tomar as melhores decisões; Aqui vai uns screenshots:

Este slideshow necessita de JavaScript.

Parte I: Avaliação de Riscos

Olá, este post faz parte de uma sequência de artigos sobre segurança da informação, resolvi fazê-los tanto para ajudar os interessados no tema como para fixar alguns pontos na minha cabeça, além é claro, de poder deixar como consulta em algum lugar no blog. Antes de mais nada, eu não sou o dono da verdade, então muita coisa escrita aqui pode ser feita de formas diferentes para se atingir objetivos diferentes, aqui eu mostro coisas que eu aplico no meu dia ou que já apliquei em empresas anteriores;

Conheces teu inimigo e conhece-te a ti mesmo; se tiveres cem combates a travar, cem vezes serás vitorioso. Se ignoras teu inimigo e conheces a ti mesmo, tuas chances de perder e de ganhar serão idênticas. Se ignoras ao mesmo tempo teu inimigo e a ti mesmo, só contarás teus combates por tuas derrotas. – Sun Tzu.

O nosso primeiro tema será avaliação e gerenciamento de riscos, um tema base para a disciplina de segurança da informação; Você pode estar lendo sobre isso pela primeira vez mas saiba que as grandes empresas do Brasil e do mundo utilizam esta prática já há bastante tempo; com base nesse contexto veremos como classificar o risco, para isso a primeira coisa que devemos definir é o significado do risco.

Um dos padrões e documentos mais referenciados e utilizados em segurança da informação e principalmente nesta disciplina de avaliação de riscos é o NIST 800-30 [1] que é considerado um MUST READ.

Então, o que é risco?

Risco, em segurança da informação, se trata de toda a ameaça em que uma organização esteja ou possa estar envolvida, todo o evento que se concretizado cause problemas ao negócio, imagem ou funcionamento da empresa; Como analista de segurança da informação um dos principais trabalhos que você tem que desenvolver é identificar que ameaças podem atingir uma organização e quais medidas você deve tomar em caso de acontecimento de um evento.

O risco pode ser divido entre muitas formas:

  • Físicos: Servidores expostos fisicamente para funcionários,
  • Lógicos: Uma porta aberta em um servidor, uma rede mal segmentada,
  • Naturais: Enchente, furacão, raios,
  • Imprevisíveis: No-break quebrado, queda de energia municipal;

Enfim, quase qualquer coisa que afete o funcionamento do seu negócio; acho que este é o ponto principal, para que sua empresa dê lucro ou desempenhe sua atividade de forma eficiente ela deve se livrar dos riscos.


Implementação

Segundo Vaughan [2], os passos que devem ser seguidos para que possa existir um bom plano para avaliação e gerenciamento de riscos são:

  1. Determinar quais os principais objetivos a se atingir;
  2. Identificar os riscos aos quais a organização está exposta;
  3. Avaliar estes riscos de forma criteriosa;
  4. Considerar as alternativas e selecionar dispositivos para o tratamento dos riscos;
  5. Implementar as decisões tomadas;
  6. Avaliar e revisar o processo continuamente;

Identificar quais os riscos que a sua organização está exposta não é uma tarefa fácil, exige disciplina e discernimento mas também muitas horas de conversas com os principais envolvidos no funcionamento da empresa, isso quase sempre (note o quase) é feito conversando com os gerentes das áreas da empresa;

Dica do Mulato #01
- Marque reuniões com todos os gerentes da empresa;
- Peça para que na opinião deles informem o que deve ser protegido;
- Aceite informações de outras áreas mas peça que se concentrem nas suas;

E principalmente, você deve estar atento aos riscos que envolvem o modelo de negócio da empresa e os riscos envolvidos com sua infra-estrutura de negócio.

Dica do Mulato #02
- Estude o segmento da empresa;
- Conheça seus concorrentes e procure entender os riscos do negócio;
- Procure conhecer o máximo possível a infra estrutura da empresa;

Classificação do Risco

Uma das formas mais eficientes e recomendadas para se avaliar os riscos depois de listá-los é fornecer os pesos corretos para cada risco em forma de severidade (impacto que o evento causará na empresa caso aconteça) e a probabilidade de o evento  acontecer, neste caso faremos isso desta forma:

Severidade (para o negócio) Chance/Probabilidade de acontecer
  • 1-2: Pouquíssima severidade;
  • 3-4: Impacto baixo para empresa;
  • 5-6: Impacto moderado;
  • 7-8: Sérios problemas caso ocorra;
  • 9-10: Desastroso para empresa;
  • 2: Risco baixo;
  • 5: Risco médio;
  • 10: Risco alto;

Para calcular o risco geral simplesmente multiplicamos os dois valores:

  -> Risco Geral = Severidade X Probabilidade/Chance

E é gerado um valor quantitativo até 100 informando o risco geral do evento. Esta é a tabela que utilizo mas você pode modificar para qualquer outro tipo de qualificação: quantitativa ou qualitativa, desde que no final os riscos sejam expostos e as decisões possam ser tomadas de forma mais eficiente e com foco na sua importância e ocorrência;


A partir deste momento já é possível preparar a nossa primeira tabela de apoio a decisões! Para servir de exemplo, suponha que a empresa que estamos analisando é uma startup de desenvolvimento web com escritório físico onde trabalham 5 funcionários e existem 2 servidores DELL onde um é ativo e o outro fica de contingência com poucos serviços, a empresa fica localizada dentro de uma casa em um bairro bem seguro mas onde já houve antes registros de enchentes em sua área, e toda sua infra-estrutura esta localizada fisicamente na casa, no entanto eles possuem uma cópia de backups diários e assets importantes da empresa em um servidor dedicado na internet;

Digamos que após conversar com o dono da empresa e o responsável técnico da equipe de funcionários eles levantaram pra gente que os principais riscos que eles consideram são:

  • “Não temos muita orientação em segurança no processo de desenvolvimento”,
  • “As vezes recebemos clientes que acessam a rede privada da empresa”,
  • “Não temos uma política muito bem definida de backup, fazemos scripts manuais”,
  • “As vezes temos queda de energia municipal e duramos pouco tempo sem energia”,
  • “Não temos fornecedores de confiança, não temos segurança física”

Após uma análise inicial decidimos identificar os 10 principais riscos:

Risco / Descrição Chance Impacto Risco Geral
Enchente que pode danificar equipamentos Baixa 7 14
Invasão ao local físico, furto Baixa 8 16
Ausência de Suporte/Fornecedor de Equipamentos de Hardware (Servidor, Máquinas, Equip. de Rede) * Média 5 25
Acesso indevido a rede privada empresa * Média 6 30
Invasão Local (Física) ao Servidor da Empresa (Cliente / Funcionário mal intencionado / Estranho) * Média 7 35
Problemas/Perda de Backups da Empresa Média 8 40
Queda de energia municipal/ausência de no-break Média 8 40
Ausência de treinamento e medidas de segurança voltadas ao desenvolvimento WEB Média 9 45
Ataques a páginas hospedadas no servidor (CSRF, SQL/Param Injection, Session Hijacking, etc) Alta 7 70
Invasão ao servidor principal com acesso administrativo Alta 9 90

Veremos que essa tabela irá crescer no próximo artigo quando falarmos em como gerenciar estes riscos e como aplicar os controles adequados, ira notar-se também que alguns itens irão receber resposta imediata afim de reduzir a sua chance ou o seu impacto (*);


Cálculo do Risco

Um dos conceitos mais importantes que um analista de segurança da informação deve compreender e difundir entre os principais interessados é o cálculo do risco, para isso foram definidos três variáveis que te ajudam a chegar ao custo do risco para uma empresa, são elas:

  • ARO (Annualized Rate of Ocurrence/Possibilidade de Ocorrência no Ano), percentagem da possibilidade ocorrência do evento em um ano;
  • ALE (Annual Loss Expectancy/Expectativa de Perda Anual), expectativa de perda anual em valores monetários de um evento/risco específico;
  • SLE (Single Loss Expectancy/Expecativa de Perda Única), valores em moeda que representam o custo total caso um evento aconteça; Este valor pode ser subdivido entre dois itens:
    • AV (Asset Value/Valor do Ativo)
    • EF (Exposure Factor/Fator de Exposição)

O que nos leva as seguintes fórmulas:

  ->  AV x EF  = SLE
  -> SLE x ARO = ALE

Exemplo #01:

 

Suponha que a página que mais dá dinheiro a essa empresa rende foi avaliada em R$ 26.000,00 e após a reunião em conjunto com os envolvidos foi descoberto que o site já passou por um processo de auditoria de segurança e que está bem padronizado há alguns anos, então foi definido um fato de exposição (EF) de 25%, então nosso SLE aqui é R$ 26.000,00 x 0.25 = R$ 6.500,00

Exemplo #02:

Digamos que o servidor físico que hospeda as páginas web rende por hora R$ 200,00 em horários de pico a empresa, a probabilidade de acontecer  uma falha no hardware neste ano é de 20% ou 1 em 5, caso ocorra a falha será necessário a compra de mais um equipamento de contingência no valor de R$ 6.000, mais o tempo de manutenção necessário para voltar ao ar sem problemas, que da ultima vez foi estimado em 4 horas;

Neste exemplo o ARO é 0.20 e o SLE é R$ 6.800,00 (R$ 200 x 4 horas + R$6.000 servidor), então usando a fórmula acima qual é o ALE (Expectativa de Perda Anual)?  O ALE é R$ 1.360,00.


Então, é isso! Nós vimos aqui a primeira parte do post Avaliação e Gerenciamento de Riscos, com o conhecimento daqui: classificação e cálculo do risco, conseguiremos a informação necessária para gerenciar os riscos afim de mitigá-los ou extinguí-los quando possível, de forma organizada e orientada a um processo;

Referências

[1] NIST 800-30 – Risk Management Guide for Information Technology Systems
[2] Fundamentals of Risk and Insurance, Vaughan and Vaughan

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!

%d blogueiros gostam disto: