Archive for April, 2008

Python at last!

Trabalho com PHP há 12 anos mas nunca me tornei um fundamentalista. Certamente que prefiro o PHP a qualquer ASP mas não posso nunca fechar a porta a outras linguagens. Nomeadamente Java, Python, Ruby e Perl, com os quais já tive alguns “encontros”, mais ou menos complexos, e me enchem de curiosidade.

O problema está na falta de oportunidades. Quando tenho um projecto para implementar não posso optar por uma linguagem que não domino, não posso sair do meu domínio e colocar em risco a produtividade, qualidade e valor-hora do meu trabalho. Felizmente que não me têm faltado projectos, portanto continuo longe destas aventuras.

Mas finalmente eis que surge a oportunidade: Python (zope) at last!

Alguém tem dicas?

UPDATE:

Introduzindo Olive, mais uma Framework MVC para PHP

Acabei de publicar o primeiro exemplo de uma aplicação implementada sobre a minha framework MVC, o Olive.

Porquê escrever uma framework? Porquê chamar-lhe Olive? Essas respostas já estão na (parca) documentação que coloquei no wiki. Mas posso adiantar que Olive é algo muito português, que reporta às origens beirãs da minha família (também válido para outros portugueses, desde algarvios a transmontanos). E também que é divertido ter componentes da aplicação que se chamam OliveTree ou OliveField.

olivedemoapplication.jpg

A framework está em rápido desenvolvimento e conto ter uma versão 1 totalmente documentada até ao final de 2008. Quem se interessar pelo assunto pode entrar em contacto comigo, porque a Olive precisa de alguma ajuda.

Posso-vos dizer que é um projecto interessante, por esta e aquela razão, mas sou suspeito. Vejam por vocês mesmos.

Para já apenas as layers de Controlo e Output estão verdadeiramente funcionais e os exemplos publicados são parcos, mas já mostram algumas das características interessantes do projecto, tais como flexibilidade (output por smarty ou old schoool, configuração por xml, yaml ou db, ajax por html, json ou xml), modularidade (controls, modules, components, widgets), performance (uma obsessão) e sintaxe produtiva (pelo menos divertida).

Quanto à camada dos dados, o M do MVC, está a sofrer um refactor verdadeiramente intestinal: no original a class central (OliveConnection) foi desenvolvida como Singleton para facilitar o acesso aos métodos de carregamento das definições de tabelas, views, procedures, etc… tipo:

$res = OliveConnection::table('blog')->row($id);

Burrice, porque isso não permitia fazer várias ligações, ligações a bases de dados diferentes por exemplo. Enfim… agora o acesso passará a ser feito através de um método estático na class da aplicação, que retorna uma conexão por pedido (ou a conexão primária por defeito)

// conexão primária (primeira a ser criada)
$res = OliveApp::connection()->table('blog')->row($id);
// chamar conexão por nome
$res = OliveApp::connection('remote')->table('blog')->result();

ou

// criar query SELECT sobre tabela/view "blog"
$res = OliveApp::connection()->select('blog')
  // escolher campos
  ->fields('data', 'titulo', 'texto', 'autor.nome AS autor_nome')
  // filtrar
  ->where_equals('categoria_id', $cat_id)
  // ordenar
  ->orderby('data DESC')
  // limitar
  ->limit(10);

Também planeio implementar no próximo sprint artefactos como “embrulhar” os resultados das querys numa class que implemente a interface Iterator (PHP5) para permitir

// cool
foreach($res as $row) { ... }

// em vez de old school
while($row = $db->fetch_row($res)) { ... }

Mas antes disso, actualizar a documentação.

Javascript Frameworks: Prototype vs JQuery

No decurso do desenvolvimento da minha framework MVC tenho-me questionado onde e como encaixar os widgets necessários para que seja Ajax ready.

Há muito que uso a framework Prototype para as artes mágicas do javascript e estava decidido a usá-lo como base para todo o desenvolvimento no V do MVC, mas tinha já programado uma pequena investigação para não me precipitar, até porque o facto de tanto o JQuery como o Prototype usarem o $ torna-os, à partida, ligeiramente incompatíveis.

Depois de ler uns quantos artigos e as suas acesas discussões acabo por ficar mais virado para o JQuery. Como é óbvio (a posteriori é fácil dizer que é óbvio) tudo o que seja possível numa das frameworks acaba por o ser também (mais linha menos linha) na outra. A grande diferença entre os dois poderá estar na utilização que lhes queremos dar.

O Prototype extende o Javascript tornando-o mais OOP e assim permite escrever código mais reutilizável e mais natural para programadores que sejam demasiado OO para aceitar uma linguagem instance oriented como o Javascript. Não é o meu caso, por mais que gosto do meu terreno natural, fascina-me sempre a diferença, que neste caso reside na estrenha beleza do javascript tal como ele é; não luto para o modificar, antes prefiro compreender os seus mecanismos “prototipados” de herança e instanciação.

Quanto ao JQuery parece ser mais directo na forma como ataca as questões que comunmente necessitamos de resolver neste tempo de ajaxização da web. Mais, o source é mais leve e está organizado num sistema de plugins, bem, documentado e acessível no site. Cool, é mesmo o que eu precisava. Goodbye Prototype + script.aculo.us + mootools, hello JQuery.

Bons e maus artigos, excelentes exemplos e discussões:

Update: Como acabo de perceber que afinal o JQuery permite ser “configurado” para funcionar em compatibilidade com o prototype, vou tomar a opção de manter a possibilidade de usar os dois na minha framework:


// prototype select one and bind
$('someid').observe('click', function(event) { alert(this); event.stop(); });


// prototype select collection and iterate
$$('.someclass').each(function(link) {
link.observe('click', function(event) { alert(link); event.stop(); });
});


// JQuery (in compatibiliy mode, with alias $j) always selects zero or more
$j('.someclass').click(function(event) { alert(this); event.stop(); } );

A Dama de Ferro

Os media decidiram apelidar Manuela Ferreira Leite de Dama de Ferro, não sei se antes ou depois de esta ser candidata à liderança do PSD. Isto inspira-me a fazer também um pouco de serviço público, ajudando, espero, a esclarecer os demais acerca das subtilezas deste título.

É que existe uma ligeiríssima diferença entre “dama de ferro“, instrumento de tortura, e “dama de ferro“, alcunha de algumas figuras históricas.

Ora Manuela Ferreira Leite não se enquadra em nenhuma das categorias, certo?

You like potato, I like potahto
You like tomato, I like tomahto
Tomato, tomahto,
Potato, potahto,
Let’s call the whole thing off

Já agopra, fica o reparo, para os mais distraídos: a dama de ferro do Paul di Anno do video em cima, também não é a mesma “coisa” que a dama de ferro de Bruce Dickinson, 3 anos depois.

Oh Well, wherever, wherever you are,
Iron Maiden’s gonna get you, no matter how far.
See the blood flow watching it shed up above my head.
Iron Maiden wants you for dead.

Nada a fazer

Lisandro é mesmo o melhor marcador, Cardoso apenas o maior, Paulo Assunção o melhor trinco, Binya o mais cromo, e etcetera e tal, até para o ano.







Close
E-mail It
diluting amoxicillin chemicals used in crack cocaine benefits to women from testosterone creame phentermine cheap online discover payment method getting off of seroquel side effects nevada medical marijuana buy offshore medications adderall cocaine and seroquel idiosyncracy advair dyspnea and zocor cephalexin cap 500mg zocor problem alcohol mixed recipe phentermine discount no prescription cheap phentermine accept cod ziac 56.25 mg alcohol full download zyrtec vs allegra zyrtec 26 side effects children sad stories of heroin addicts clinical trial results glyburide alcohol word find dr hale studies metformin breastfeeding infants morphine sulfate cr kidney damage mix amitriptyline and wellbutrin denatured alcohol remove wax pharmaceutical methamphetamine softtabs capsule prednisone acetate alcohol associated illness zyprexa diabetes risk ciwa for alcohol cocaine prices today organon steroids home marijuana laws by state can you use methylprednisolone for pneumonia bassett ortho posture alcohol treatment center westland mi alcohol don't mix light with dark can lipitor be split methamphetamine recovery wellbutrin ciprofloxacin intestines clean my system of marijuana alcohol adipex interaction toothache naproxen ibuprofen ortho foot mcallen systematic drug and alcohol interventions does opana contain morphine soma r zyban in smoking cessation dosage buy celebrex good work dude tretinoin cream acne treatment drug war chronicle marijuana news archives compare nicotine and cocaine addictions overnight delivery of opium poppies hazards of denatured alcohol zoloft arthritis alcohol risk factors marijuana dashboard agent memorial day weekend marijuana privacy project keflex cephalexin capsule best marijuana high fetal alcohol syndrome pittsburgh does zanaflex work immediately take androgel with tamoxifen azithromycin 250 mg methamphetamine easy recipe fish congestive heart failure lipitor recreational hydrocodone wholesalers solutions to alcohol problems drinking dependent most alcohol accidents onset of action paxil alcohol induced respiratory illness versuri ecstasy norco california companies buspar safe alcohol sda specifications will chewing oxycodone kill me sodium bicarbonate amphetamine yasmin product label is lortab vicodin boniva fosamax buy tamiflu suspension marijuana grow faqs tramadol zyrtec xenical metformin for polycystic ovary complexion yasmin marijuana and hyperthyroidism nettle root testosterone ativan valium norco mexico pharmacy alcohol and acne lsd and kansas phentermine foradil phentermine evista effexor withdrawal eyesight adderall and wellbutrin together alcohol class in cleveland county nc isosorbide alcohol myth of soma cheats 3 17 beta estradiol testosterone stacy aids pregnant cocaine effexor side effex pcp management llc charlotte nc crimes associated with ritalin bruce banninga cocaine kidney pain stone vicodin current marijuana wars australia's dynamic methamphetamine market zyrtec florida nv mortgage soma does lsd have any medical use deshidratacion de alcohol female level testosterone silagra generic viagra cialis cumwithuscom adverse effects of acetaminophen buy amphetamine aspartate insulin resistance glucophage l-phenylalanine amphetamines growing marijuana with black lights side affects nicotine patch 503 hydrocodone marijuana withdrawl symptoms and tips cocaine help lines increase naturally testosterone excuses to get prescribed vicodin creatine and testosterone colchicine manufacturer diamond cleaning alcohol manufacturer of ritalin heroin for pain management buy propecia online neonatal marijuana methamphetamine side effects of ciprofloxacin for dogs newspaper articles on alcohol and health nicotine thrive lozenges canada tylenol max dose buy hydrocodone no overseas prescription ingredients in albuterol acetaminophen and ibuprofen taken together cats valium ativan helps internal vibrations can you inject ultracet quarter ounce bag of marijuana buy androderm testosterone ortho evra hormone replacement transdermal patch plavix competition synthroid pill strengths central nebraska council on alcohol does lamisil really work alcohol drink cocktail plavix manufactuer lamisil lamisilk oxycontin and prescribing information ketamine epidural make ghb at home celexa help with anxiety split levoxyl tablet tylenol pm effectos componentes viagra blood tests danger lasix not using vicodin anxious recipe lsd vicadin and alcohol oxycontin prescription spironolactone tabs pediatric ibuprofen dosage fake and phentermine oxycontin gateway drug heroin methylphenidate patch achat disque dur externe alcohol residential treatment cocaine jack macrobid for uti clomid count low sperm windshield washer fluid alcohol percentage buy tadalafil from usa online famous athletes that took steroids tylenol 1000mg lortab 10 500 tablet ketamine induced coma for chronic pain seized marijuana zyprexa and alcohol pregancy child defects using marijuana gallipot ketamine couples therapy and alcohol issues effects of alcohol on alt tests harmful affects due to alcohol abuse drug and alcohol study alcohol gang green xanax us online pharmacy cialis and levitra viagra online manufactures 6 finasteride propecia scientific studies define folic acid marijuana paintings crack cocaine research orlistat bad effects countering the effects of cocaine ok end of alcohol prohibition after ecstasy effects hypnotic alcohol liquor nicotine patches on prescription meridia sibutramine php clonazepam tabs yeast and diflucan where does folic acid come from alcohol effects on the human stomach frued and other cocaine advocates zyban with no rx in canada which state shares viagra sumatriptan imitrex phentermine for obesity on yahoo health mixing mucomyst with albuterol dmso fluconazole background images marijuana alcohol and drug driving safety program adipex does it work nicotine replacement therapy and pregnancy metoprolol pills ortho breeze back support grow marijuana fast cowabunga ecstasy foods that have folic acid ordering viagra online addiction to heroin in iran order axio labs steroids online cheap levitra order prescription albuterol sulfate and opiates zussman ortho ambien domain skin cancer treatment aldara low dose lexapro longterm use alcohol wet brain glyburide generic advair 25050 drug death by alcohol numbers per year formula for nicotine fluconazole tablets time no prescription celebrex dur ac losartan potassium and ramipril combination mechanism of azithromycin action what people say about cocaine pcp and drug additive ortho appliances yasmin mansour purchase paraphernalia drugs cocaine effects forum side lexapro lisinopril affects pancreas cialis identify real medication called cyclobenzaprine zoloft and pain killer alcohol and levaquin yeast secondary to advair inhaler dosepak of steroids bad day zyban what is the medicine avandia viagra and fertility zithromax vs generic contraindication of tramadol and elavil cvs generic lortab guifenisen with hydrocodone grass history marijuana famvir assistance program suboxone morphine equivalency california alcohol rehab pilor arrested for cocaine 2005 norco katmandu methamphetamine and high schools ethical dillemma in alcohol ads arthralgia pravastatin ssri withdrawal lexapro alcohol and ass hell yeah mp3 generic mircette nicotine patch stop smoking today marijuana desktop background chilfrens claritin soma carisoprodol meprogesic soma tablet weight gain with fluoxetine names for lsd 2 pms orange pill morphine scored orthos all about bats caraco ultram endocet and alcohol brands of expensive drinking alcohol help use info inject xanax alcohol cerebro del efectos el en alcohol 120 makes computer slow crack cocaine usage signs end of life care copd morphine enter soma sex bijwerking yasmin generic for adipex side effects effectsof hydrocodone coumadin vs vertigo phentermine hcl atkins diet celexa risk of norvasc free sertraline alcohol movie clips september 2007 marijuana law texas penicillin birth control pills loratadine wikapedia prescription services ultram information on drug spironolactone harmful effects of ritalin transporting alcohol under 21 methylcobalamin cyanocobalamin celebrex info lawyer tx vioxx beck nicotine mp3 alcohol and mitral valve prolapse fatal deaths on anti-depressant wellbutrin fexofenadine hcl tabs 180mg picture fexofenadine telfast 180 pentagon lsd warfare elf ritalin to treat adhd what is keppra soma watson cod fda paxil cr lortab red skin schol dur bus company national alcohol screening day alcohol as a disinfect bob marley use marijuana lipitor commercial is alcohol abuse increasing globally accept mc diet didrex hydrocodone 10 650 without perscription soultion of teenagers using alcohol ranitidine drug test diflucan and lamisil dose of omeprazole lipitor causes facial flushing ct oct prilosec kauai opium about ritalin arizona alcohol tobacco firearms abuse tramadol diet phentermine pill alcohol nicotine a