Arquivo da tag: Tomei nota

Flash: editor free (flashdevelop) e cookies

E pensar que eu já quis ser flasheira, hahahahaha.

Não manjo quase nada, precisei fazer uns ajustes em um .swf que setava uns cookies para reconhecimento de maquina. Gambetinha.
Primeira coisa é que eu não tenho o editor da Adobe, então de genérico eu utilizei o FlashDevelop, free e bem intuitivo. Recomendo altamente.

FlashDevelop

Além disso, aprendi o set e o get de cookie no Flash. O legal é que ele é altamente persistente, já que os cookies só são limpos se a pasta de cookies do Flash do usuario for limpa, o que não é um evento rotineiro. Olha o código:

public function setCookie(cookieName :String, object :Object, varName :String) :Boolean
{
	try
	{
		var cookie:SharedObject = SharedObject.getLocal(cookieName);
		cookie.data[varName] = object;
		cookie.flush();
		cookie.close();
	}
	catch(e: Error)
	{
		return false;
	}
 
	return true;
}
 
public function getCookie(cookieName :String, varName :String) :String
{
	try
	{
		var cookie:SharedObject = SharedObject.getLocal(cookieName);
		var prop: String = cookie.data[varName];
		cookie.close();
		return prop;
	}
	catch(e: Error)
	{
		return "";
	}
 
	return "";
}

Qualquer dia faço um Pacman em flash para realizar um sonho adolescente, rs.
Good luck!

Mandamentos (vulgo sugestões) TDD

– Não codarás teste que depende de outro teste.
– Não farás com que seus testes dependam de ordem de execução.
– Não atravessarás as fronteiras da aplicação que está sendo testada. Mockeie.
– Não colocarás mais que um assert no teste. Se duas verificações: dois testes.
– Listarás o que precisa ser testado antes de colocar as mãozitas no código.
– Começarás pelo assert.
– Descreverás bem seus testes (nomenclaturas), assim como seu código.
– Codarás apenas testes que sejam consistentes, que só mude seu status caso o código tenha sido alterado e ele impactado.

TDD

Surftime – Internet: mundo infinito?

Ha quase dois meses eu instalei o Surftime no Chrome. Hoje eu tava vendo um infografico de tempo gasto em rede social e lembrei de ir olhar os frutos dessa extensão, hahaha.
Pelo que percebi, ele separa por maquina, essa é a maquina do trampo, unico lugar que eu tenho navegado ultimamente (consuming me!). Minha maquina pessoal virou um servidor de download: eu acesso remoto, baixo e assisto/escuto depois.

Youtube é extensão do meu cérebro, junto com meu iPod, então fica em background aqui no monitor auxiliar.
O Face, o Twitter, Gmail e outras redes sociais são umas medidas meio burras, né? A abinha fica ali só no push enquanto você tá pouco se fodendo.
Agora o Reddit, Feedly, Last.fm e o Stackoverflow (e o Google os indexando) já contem todo o conteudo que eu consumo diariamente.

Curti ter essas métricas, fez eu perceber que tô precisando trabalhar menos, vulgo consumir mais, rs.

Impressionante como até na internet vivemos numa bolha, né? Sempre os mesmos locais.
Welcome to my bubble!

Reddit e HappyCow – Shareando!

Semana passada foi a redescoberta da internê do sec. XXI. I’m in love <3. Fazia algum tempo que eu nao ficava lendo infinitamente sobre qualquer coisa aleatoria (salvo blogs que acompanho), a bolha que eu vivo na internet tava meio cansativa, era sempre as mesmas coisas compartilhadas e recompartilhadas. Da no saco. Tava um tico a toa e resolvi dar uma second chance pro Reddit – a primeira chance foi perdida porque eu achei muito ruim a usabilidade do site (continuo achando), baita bagunça duzinferno – e MANO, MA NO, M A N O! É muito vida! Tudo sobre tudo .. e com depoimentos, é o futuro (sei que to atrasada), rs.

Como tô para viajar pra Europa e sou a maior pangua até na minha propria cidade, comecei a pesquisar:
http://www.reddit.com/r/travel/search?q=berlin&restrict_sr=on
http://www.reddit.com/r/travel/search?q=europe+trip&restrict_sr=on&sort=relevance&t=all
http://www.reddit.com/search?q=hellfest+2013

FODIDO DEMAIS!

Eae, não sei se ja comentei aqui, mas sou uma pseudo-vegana (não acho que de pra ser fucking vegano motherfucker freedom 100% sem plantar sua propria comida, ja que tudo é processado nas maquinas demoniacas que podem conter laxante – vulgo lactose – etc etc. pauta pra outro post, enfim), fiz uma pesquisa de lugares para comer na gringa e tal e achei o …

HappyCow: Guia de restaurantes/lanchonetes/cavernas que sejam veganos, vegetarianos e/ou tenham algum prato/lanche sem carne. Muito completo! Achei todos os lugares de SP que conheço, tem bastante review e tal, ajuda demais. Já usei ele pra achar um local em Curitiba para alimentar as lombrigas e foi sucesso.

Ambos tem o layout e o app horripilantes, sao uma merda de usar, mas o conteudo compensa tudo.
Gaste um pouquinho do seu tempo shareando, se ta pouco se fodendo pro vegetarianismo, vai no reddit que é sucesso. E poste tambem (dica: nao crie usuario com seu nome e enjoy HAHAHA), seu aperfeicoamento na lingua inglesa e os outros usuarios agradecem.

The best of:
http://www.reddit.com/r/AskReddit
http://www.reddit.com/r/todayilearned

Um beijo na alma e um dedo no cu!

NFC: Escrevendo uma simples URL

Voltando a minha paixonite atual: NFC.

A ideia do projeto é ler uma carteirinha (teste efetuado com a tag crua) e executar uma aplicação, como queriamos que a aplicação fosse cross-life, o resultado foi aplicação Web, ou seja: abrir uma URL.


Eu ganhei as minhas, mas você pode comprar em http://www.amazon.com/TagsForDroid-Tags-Chain-Stickers-MIFARE/dp/B006TGTEV0/ref=sr_1_1?ie=UTF8&qid=1366395002&sr=8-1&keywords=tag+nfc. Não é muito caro, mas se você estiver na pobreza, contate-me que te mando essa maravilha.

Vou levar em conta que já estamos com o Eclipse e o SDK do Android instalado, ok? Caso necessario:

Bom, a grosso modo, a leitura de uma tag dispara um evento, o tal do onNewIntent.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
    //Evento quando a aplicacao é iniciada: habilita manuseio de NFC
    @Override
    public void onResume(){
      super.onResume();
      habilitarNfc();
    }
 
    //Evento quando a aplicacao é parada: desabilita manuseio de NFC
    @Override
    public void onPause(){
      super.onPause();
      desabilitarNfc();
    }
 
    //Evento para habilitar o manuseio de PendingIntent em runtime
    private PendingIntent getPendingIntent() {
      return PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
    }
 
    //Habilitar NFC
	private void habilitarNfc(){
      NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
      IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
      IntentFilter[] writeTagFilters = new IntentFilter[] { tagDetected };
      adapter.enableForegroundDispatch(this, getPendingIntent(), writeTagFilters, null);
    }
 
    //Desabilita NFC
	private void desabilitarNfc(){
      NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
      adapter.disableForegroundDispatch(this);
    }
 
    //Evento disparado quando uma tag é reconhecida
	public void onNewIntent(Intent intent) {
		//Cria caixa de alerta
		AlertDialog alerta = new AlertDialog.Builder(this).create();
        alerta.setTitle("NFC");
 
    	String id;
    	//Pega a tag
        Tag tag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
 
        try {
        	//UID atraves do FlomioNdefHelper
            id = FlomioNdefHelper.getTagUuid(tag);
            //Retiramos o 0x de hex
            id = id.substring(2, id.length());
 
            escreverAcaoUrl(tag, id);
            //Se executou a acao acima, entao sucesso
            alerta.setMessage("Tag escrita com sucesso!");
        } catch (Exception e) {
        	//Se erro, mensagem
        	alerta.setMessage("Ocorreu um erro: " + e.getMessage());
        	id = "-1";
        }
 
        //Exibe caixa de dialogo no fim da exibicao
        alerta.show();
    }
 
      //Escreve a acao com a url no NFC
	@SuppressLint("NewApi")
	private void escreverAcaoUrl(Tag tag, String id) throws IOException, FormatException {
      Ndef ndefTag = Ndef.get(tag);
      //Cria objeto com url para gravacao
      NdefRecord dataToWrite = NdefRecord.createUri("http://minhaaplicacao.leticiaverta.com/?tag=" + id);
 
      ndefTag.connect();
      //Escreve
      ndefTag.writeNdefMessage(new NdefMessage(dataToWrite));
      ndefTag.close();
    }

Como vemos na linha 3 e 10, no inicio e no fim do carregamento da aplicação habilitamos e desabilitamos o manuseio de NFC.
Na linha 46, veja que usei o FlomioNdefHelper para pegar o uID, pois vou utiliza-la como identidade no sistema. O helper não faz nada alem de pegar o id (getId()) da Tag e converter de hexa, tanto que ele retorna ainda com o “1x”, retirado logo abaixo.

Além disso é necessario darmos permissão de acesso as tags pelo AndroidManifesto.xml:

<uses-permission android:name="android.permission.NFC" />

Não esqueca que é necessario estar com a tag acessivel ate o fim da execucao de escrita.
A leitura é automatica no celular, só encostar e será aberta a URL que escrevemos.

So many possibilities!

Instalei o Windows 8 no iMac

Eu sei que não faz muito sentido ter um pc que custa alguns rins e usar como um outro qualquer, mas quando não estou no Visual Studio (.NET do amor <3) eu gosto de ser usuaria curiosa do leão da montanha. Enfim ... Estava usando no boot camp o Windows 7. Estou com um projetinho pão com ovo na cabeça (em breve comento) que queria fazer usando o Visual Studio 2012 (ainda não usei arduamente) blablabla e ja aproveitei pra ir de cabeça na modernidade, o que eu não previa era os perrengues para instala-lo. Segue passo-a-passo. Primeiro que no meu Boot Camp Assistant não aparecia o “Create a Windows USB Install Disk” e não deixava eu criar a partição, entao primeiro passo foi habilitar:
Applications > Utilities > Boot Camp Assistant clica com o direito e Show Packages Content. Em Contents de permissão de escrita no Info.plist.
 > About This Mac > More Info > System Report e copia a primeira parte do ‘Boot ROM Version’.

Abra o Info.plist com o Xcode e adicione em USBBootSupportedModels o valor copiado do Boot ROM Version, salve.
http://forums.atomicmpc.com.au/index.php?showtopic=51873

Após fazer isso, utilizei o BCA normalmente. Criei a partição, ele reiniciou e deu um erro: “No bootable device – insert boot disk and press any key”.

Acontece que eu ja estava com o pen drive com o Windows 8 criado pelo proprio BCA, mas ele simplesmente não reconhecia. Tinha um CD no meu leitor que não saia e eu não conseguia dar boot na partição com o Lion. Ou seja: fodeu.

Solução: Para escolher por onde dar boot, na tela branca da inicialização, aperte fn+option alt. Você vai poder escolher a partição e poderá tirar o CD engasgado, rs.

Coloquei entao um CD do Windows 8, sem a execução do boot camp, formatei a partição que havia criado e instalei o Windows normalmente.
Ruim, pois as partição não se conversam mais, porém foi o unico jeito que obtive sucesso.

http://www.intowindows.com/install-windows-8-on-mac/

Avua.

Sincronizar Outlook com Google Calendar

Como mudar uma empresa média porte que não é voltada totalmente para TI para um serviço na nuvem? Eu ainda preciso usar Outlook. <\3 Sempre utilizo meus emails profissionais via pop3/imap no meu gmail da vida. Não tem o que discutir, né? Já está sincronizado no meu celular/qualquer outro aparelho eletronico que use email, fica tudo fácil. Mas e os compromissos que são marcados no calendario do outlook? Ultimamente tô perdendo N reuniões de horarios estranhos (segunda de manhã ou fim do dia), eu nunca lembro e se eu não estiver no computador da empresa (que é o unico que está com o outlook) ninguem me lembra. 🙁 Como sabemos, a Google descontinuou o Google Calendar Sync, nada mais justo. Sem contar que fununciava bem marromeno. Dei uma conversada aqui e todo mundo sofre com isso, ninguem tinha uma solução bacana$.
Fucei um tico e achei:

OggSync

Estou usando a pouquissimo tempo mas já super recomendo! Sincroniza calendario e contatos em ambos e custa 30 obamas, bem aplicadas, eu diria. Ele é um pluguinzinho no Outlook, não fica lá no canto do seu computador fazendo volume, fácil de configurar e ainda tem um periodo de teste para você ter certeza que quer gastar seu dinheiro suado nele, eheheh. Vai que é sucesso!

WCF com .config comunitário – Configuração de hosteamento

Estou com um projeto orientado a infinitos serviços, claro que fizemos as configurações do WCF em granularidade, deixando os bindings e behaviors num .config partilhado entre todos (teoricamente como eles conversam entre si, as configurações são as mesmas).

Acontece que começou a estourar o buffer, sendo que todos estavam consumindo pelo mesma configuração de binding. Notei então que os expositores de serviço estavam hosteados com binding “padrões” aqueles sem nomes. Ou seja:

Não esqueça de configurar o binding default dos seus serviços expostos (caso esteja usando, claro). 🙂

<bindings>
			<basicHttpBinding>
				<binding closeTimeout="00:00:30" 
          openTimeout="00:00:30" receiveTimeout="00:00:30" sendTimeout="00:00:30" 
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
          maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" 
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
          useDefaultWebProxy="true"> 
					<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" 
            maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
					<security mode="None">
						<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
						<message clientCredentialType="UserName" algorithmSuite="Default" />
					</security>
				</binding>
			</basicHttpBinding>
</bindings>