01
Nov
11

How To: Compile and Use Tesseract (3.01) on iOS (SDK 5)

Update

  • I don’t have access to a Mac computer now (actually it has been 3 months) and I couldn’t update the guide to Xcode 4.5 (iOS 6), but the fine gentleman bengl3rt has done so and the updated script is available at: http://goo.gl/wQea5 (I haven’t been able to test it, so some feedback on whether it works or not would be appreciated!)

I never thought that my last post would have so much audience. Among other things, it earned me 3 direct job interview offers (1 of  ‘em from Google itself, maintainer of tesseract), an invite to write articles to a TI digital e-magazine and a few digital friends, but that’s something to discuss at other posts. Thank you!

Getting back to what really matters: last post was focused on cross compiling (potentially) any library for iOS (armv6/armv7/i386) and to use as an example I chose Tesseract, which was the library I was using on a work project. But the repercussion was so great and both Tesseract and iOS got newer versions that I’ve decided to write this post specifically about getting Tesseract compiled and using it on your iOS project.

As stated earlier, Tesseract has been officially launched at version 3.01 (that now uses an autogen.sh setup script and an improved configure script ) and iOS has received a major upgrade, version 5.0. As you may guess, these changes broke my script!

Continue reading ‘How To: Compile and Use Tesseract (3.01) on iOS (SDK 5)’

17
Feb
11

How To: Cross compiling libraries for iOS (armv6/armv7/i386)

Update

So, if you’re a smart programmer, when you get asked to solve some new problem (“new” in the “I’ve never done this before” sense) you head over to Chrome (not Opera/Firefox, as I stated earlier, you’re SMART, not FASHION or OUTDATED), hit “CTRL + L” and start typing some keywords related to your problem, hit ENTER and wait for the amazing amount of resources Google (not Bing, because, as I stated earlier, you’re a programmer, not a no-brains) will hand you.

Among those resources, if you’re lucky enough, you’ll find out an OpenSource library that claims to solve exactly, or at least a piece of, your problem. This Library has binary downloadable packages for almost every OS you can imagine and even for OpenSolaris BUT, if you’re a mobile App developer (Android/iOS), they won’t give a fck!ng d@mn $h!t binary for your target OS.

Well, at this point, if you’re in a good day and helped that old lady cross the street a couple of hours earlier, this Library will be ready to compile through one configure script named, ehrm… “configure”.

If you’ve made it through here, maybe I can save your day. I’ve prepared one Bash script that is able to cross-compile one (or more) Static Library in different architectures (armv6/armv7/i386) and pack all different lib*.a into one single FAT FILE (or Universal Binary) so you can link against the same file when compiling for iPhone3G/3GS/4/Simulator.

Continue reading ‘How To: Cross compiling libraries for iOS (armv6/armv7/i386)’

19
Jul
09

Programador de VERDADE!

Real Programmers...

Real Programmers...

Sinceramente, eu não costumo comentar meus códigos.

Na maioria das vezes, insiro o cabeçalho de copyright de fonte e comento as declarações de classes e funções em estilo Javadoc, o que significa que somente me “protejo” para os casos de o fonte vazar (no caso de fontes fechados), de algum colega programador dizer que eu não comento meus códigos ou reclamar ao rodar o doxygen (um fato que eu nunca precensiei) pra gerar documentação.

Raramente, geralmente quando julgo que nem eu mesmo conseguiria entender o que escrevi uns 2 dias depois, escrevo alguns comentários gerais para tentar iluminar o caminho de algum azarado que tenha de ler o que escrevi (eu mesmo, inclusive).

Deixando as piadinhas de lado, não costumo comentar MESMO! Eu acredito que escrever funções com nomes que expliquem seu funcionamento e objetos inteligíveis é mais do que o suficiente. É claro que eu tento não programar como o Ross nessa tira do Geek Hero Comic (e que acredito que a única maneira de “otimizar” meus códigos seria essa, hehe).

E, pesquisando aqui e acolá, parece-me que muita gente não curte comentários:

While comments are neither inherently good or bad, they are frequently used as a crutch. You should always write your code as if comments didn’t exist. This forces you to write your code in the simplest, plainest, most self-documenting way you can humanly come up with.

E você? Gosta de comentar (código, é claro)? Comente (este post, é claro)!

OFF: Quer comprar um souvenir bacana?

19
Jul
09

Um bom programador

Tendo em mente o objetivo de me tornar um ótimo profissional, me peguei pensando em o que eu poderia fazer pra melhorar.

Ainda não digeri muito o pensamento , mas já me sinto confiante pra compartilhar um pouco do resultado.

real_programmer_binaryPrimeiro, me identifico muito mais com o lado técnico da profissão. Não sei se é pela euforia de poder participar da confecção de idéias, mas poder “fazer acontecer” é realmente muito gratificante pra mim.

Quanto a conseguir ser um bom profissional, concordo com o que diz Steve Yegge:

Most programmers have only a vague notion of how competent they are at what they do for a living.

E que é realmente conseguir definir alguma métrica para avaliar o desempenho neste ofício. O que é possível é comparar desempenhos, o que pode ser feito através de competições, que, por sua vez, possibilitam também a prática!

Participar de competições pode ser benéfico de várias maneiras:

  • Para competir, é necessário saber, que só é possível através do estudo;
  • Proporciona diversos parâmetros para auto-avaliações;
  • Coloca bons profissionais em contato, e em um ambiente com bons profissionais se tem maiores chances de crescimento;
  • Competir dá mais motivação para se esforçar mais e mais…

Interessado na prática? Steve Yegge tem algumas dicas e o site CodeKata também pode ser útil:

Contrary to what you might believe, merely doing your job every day doesn’t qualify as real practice. Going to meetings isn’t practicing your people skills, and replying to mail isn’t practicing your typing. You have to set aside some time once in a while and do focused practice in order to get better at something.

(…)

The great engineers I know are as good as they are because they practice all the time. People in great physical shape only get that way by working out regularly, and they need to keep it up, or they get out of shape. The same goes for programming and engineering.

19
Jul
09

Viva à necessidade de se fazer perceber!

Tapete Vermelho

Tapete Vermelho

É isso aí!!!

Confesso: não fosse pela necessidade que intitula este post, este blog não teria brotado dentre a imensa blogosfera mundial. E é entendendo o meu motivo de escrever que vou tentar ser um bom pai para este blog e tentar impedir que ele simplesmente desapareça, assim como tentativas anteriores…

Não vou tentar fazer predições mirabolantes do tipo de conteúdo que este blog irá ter. Em vez de correr o imenso risco de tentar dar uma de Mãe Diná, simplesmente encorajo-o a ler o meu Sobre (que me esforçarei para manter atualizado!) e tirar as devidas conclusões sobre os rumos do meu diário digital.

Concluindo, vou ser imensamente egoísta e fazer deste blog o que eu quiser! Sim, sim, não vou ser nem um pouco hipócrita, essa é a verdade. Mas também é verdade que espero compartilhar conteúdo e opiniões interessantes e, é claro, me divertir!




Follow

Get every new post delivered to your Inbox.