Capítulo 47 - Desenvolver um aplicativo só pra treinar a mão
A sala de informática estava consideravelmente silenciosa, não se via uma única pessoa.
Afinal de contas, era período de férias de verão, e os candidatos ao exame de admissão para pós-graduação geralmente não precisavam utilizar o computador.
Caminhando até o ar-condicionado, Lu Zhou o ligou e sentou-se casualmente em frente a uma das máquinas, digitando seu número de matrícula e senha, fazendo login com destreza no computador.
O motivo de ter escolhido o laboratório de informática da universidade era principalmente porque os programas escritos na linguagem Python são executados, em sua maioria, em sistema Linux. Aprender Python diretamente em um ambiente Linux era como matar dois coelhos com uma cajadada só.
Além disso, o notebook de segunda mão de Lu Zhou era realmente péssimo. Demorava uma eternidade apenas para converter uma tese em um arquivo PDF. Quando ia jogar League of Legends, os outros já estavam em plena batalha nas rotas e ele ainda estava preso na fonte. Realizar operações avançadas como instalar um sistema duplo ou utilizar uma máquina virtual era algo simplesmente fora de cogitação.
“Embora os livros expliquem tudo com bastante clareza, não imaginei que essa coisa fosse tão complicada de usar… No fim das contas, o que está no papel é completamente diferente da prática. Se eu quiser realmente aprender algo, vou ter que colocar a mão na massa mesmo.”
Era a primeira vez que Lu Zhou utilizava um sistema Linux, e tudo o que ele sentia era como se estivesse completamente perdido, como se tivesse ficado cego de repente. Seguindo o manual emprestado da biblioteca, ele leu por um bom tempo até finalmente conseguir entender o básico do funcionamento.
É inegável que há uma razão para o sistema Windows ocupar uma fatia tão grande do mercado, sendo um sistema operacional totalmente gráfico. Mesmo quem nunca teve contato com um computador antes conseguia se familiarizar com facilidade.
Entretanto, o sistema Linux era diferente, sua operação baseava-se quase inteiramente em linha de comando, sendo possível realizar tudo apenas utilizando o teclado. Felizmente, a versão instalada na universidade vinha com um ambiente gráfico de desktop, caso contrário, Lu Zhou realmente não saberia para que servia o mouse.
Naturalmente, as vantagens do Linux também eram evidentes. Sua capacidade de personalização extremamente elevada e o alto nível de segurança tornavam-no mais adequado que o Windows para áreas como servidores. Além disso, uma vez que se estivesse familiarizado com a operação por linha de comando, a eficiência poderia superar a do Windows em múltiplas vezes. Por isso, muitas empresas, ao contratarem programadores de front-end e back-end de servidores, geralmente perguntam se o candidato sabe utilizar o sistema Linux.
“Um dos usos do Python é a criação de web crawlers. Se eu quiser testar o que aprendi, começar por aqui seria o melhor caminho. Mas que tipo de crawler eu deveria fazer?”
Lu Zhou caiu em profunda contemplação.
Coletar as postagens no Weibo?
Coletar os tópicos do Tieba?
Pareciam coisas bem entediantes.
O problema era que os dados coletados não teriam utilidade prática, e, se acumulados em grande volume, nem sequer teria onde armazená-los.
De repente, teve um estalo. Não sabia por que, mas acabou lembrando-se das experiências dolorosas de tentar comprar passagem toda vez que voltava para casa. O problema não era a lentidão do computador, mas sim porque o design da interface do site do Ministério das Ferrovias era simplesmente uma afronta à lógica humana.
“Usar tecnologia de web crawler para coletar os dados de estações, trens e passagens disponíveis do site 12306… Isso aqui parece uma boa ideia.”
Assim que pensou nisso, Lu Zhou não ficou enrolando. Arregaçou as mangas e começou a trabalhar.
Afinal, como uma das aplicações típicas da linguagem Python, o modelo de programa para crawlers já estava mencionado no livro, e ele ainda trazia variações no algoritmo para lidar com diferentes situações.
Claro, o site 12306 não era exatamente um fórum BBS qualquer. Usá-lo como projeto de treino para iniciantes certamente não era uma tarefa simples.
No entanto, para um gênio como Lu Zhou, que já tinha digerido o livro inteiro de ponta a ponta, não era nenhum problema. O crawler em si não tinha nenhum grau técnico muito elevado — em menos de 30 linhas de código, ele finalizou todo o programa, que rodou perfeitamente, sem nenhum bug.
E então, estava na hora de fazer a coleta de dados.
Ele copiou a URL do site e colou no final do código. Rodou o programa e fez com que os dados fossem automaticamente organizados em uma tabela, que era salva dentro de uma pasta previamente criada.
Logo em seguida, o cooler do gabinete começou a zunir alto, e o computador ficou meio travado. Uma linha após a outra de códigos deslizava pela janela preta do terminal, sendo rapidamente organizada na planilha.
Enquanto via a pasta sendo preenchida pouco a pouco, Lu Zhou se recostou na cadeira, pensativo.
“A linguagem Python é mesmo conveniente pra cacete. Não é de se admirar que tantos especialistas recomendem essa linguagem.”
E enquanto aquelas linhas de dados desfilavam pela tela, Lu Zhou teve até a sensação de estar curtindo um momento de hacker de cinema.
Claro, tudo isso não se passava de uma ilusão, nem sequer chegava a ser uma sensação real. Afinal de contas, essa coisa não tinha absolutamente nada a ver com técnicas de hacking, nem de longe.
Coletar informações públicas de um servidor não era ilegal; no máximo, poderia ser acusado de consumir recursos do servidor alheio, o que faria com que os webmasters te odiassem profundamente.
Por isso, muitos sites egoístas haviam criado medidas anti-crawlers. Não era possível rastrear nenhuma informação deles. Mesmo que isso acontecesse, as informações coletadas seriam um monte de lixo. Outros sites menos avançados podiam monitorar o número de visitas e bloquear o endereço IP.
Contudo, o site do 12306 obviamente não era tão mesquinho assim. O monopólio gigantesco que nem se dava ao trabalho de oferecer uma boa experiência de usuário, você acha mesmo que se importaria com um pouco de uso extra nos seus servidores? Desde que o servidor continuasse de pé, o resto que se dane!”
Observando os dados de viagens se acumulando cada vez mais dentro da pasta, os olhos de Lu Zhou começaram a brilhar. Ele começou a matutar se tinha como usar isso para alguma outra coisa.
“Criar um site para reservar passagens? Isso é praticamente tirar as calças para peidar1…”
De repente, uma faísca se acendeu em sua mente.
E se…
E se ele criasse um aplicativo de venda de passagens online?
Essa ideia, que surgiu no calor do momento, começou imediatamente a enraizar-se em sua mente e se expandir sem controle.
Embora já existissem diversos aplicativos de terceiros para compra de passagens, um aplicativo oficial mesmo ainda não havia. Se ele conseguisse criar um que fosse realmente diferente dos demais, poderia até vendê-lo para operadoras interessadas. Ele poderia até ganhar algum dinheiro para as despesas do dia a dia.
Ao se deparar com uma possibilidade de lucro, Lu Zhou ficou imediatamente interessado. Em sua mente, começou a traçar todos os possíveis planos.
Do ponto de vista técnico, desenvolver sozinho um aplicativo completo, desde o front-end até o back-end, era uma tarefa de altíssima complexidade, muito além de simplesmente escrever um programinha de crawler. Mas não era algo impossível de ser feito. Ainda mais considerando que, se encontrasse algum obstáculo relacionado a algoritmos, ele ainda poderia recorrer ao sistema. Consumir pontos para acessar conteúdos informativos fazia parte do processo de aprendizado, afinal
E assim que ele concluísse a missão de recompensa e desbloqueasse o ramo de tecnologia de Inteligência Artificial Lvl 0, toda essa experiência adquirida com certeza se mostraria valiosa no futuro.
O problema é que comprar e manter um servidor custaria uma grana considerável. A conta de luz para mantê-lo ligado, sem falar nas diversas despesas de manutenção, com certeza tudo isso pesaria bastante no bolso…
E a conta bancária dele mal chegava aos dez mil yuans, não dava nem para acender um fósforo com isso.
Ele rangeu os dentes com força, mas Lu Zhou ainda assim decidiu que enfrentaria esses desafios.
Afinal, ele já tinha recusado uma oferta de salário anual de quinhentos mil. Depois disso, o que diabos poderia estar fora do seu alcance?
E mesmo que desse tudo errado, ele podia muito bem encarar aquilo como um trabalho de faculdade com esteroides só para treinar as mãos.
Foi então que ele fechou o programa, mas não foi direto meter a mão no código. Em vez disso, abriu um documento no Word, e como se estivesse elaborando o esqueleto de uma monografia, começou a rascunhar o plano geral de desenvolvimento do aplicativo.
“Consulta de passagens de trem precisa puxar os dados em tempo real, então a exigência em cima do desempenho do servidor vai ser brutal. O código precisa ser o mais limpo e otimizado possível!”
“A interface pode até ser simples, mas as informações precisam ser precisas e completas. Essa parte dá para pegar como referência os aplicativos de terceiros mais populares, mas tenho que tomar cuidado para não copiar demais. Tem que ter algo inovador…”
Ao chegar nesse ponto, Lu Zhou esfregou de leve o dedo indicador no teclado, mergulhado em pensamentos por um bom tempo, antes de voltar a digitar.
“Antes de mais nada, o recurso de compra automática de passagens. Isso aí nem dava para chamar de inovação, né? Já faz tempo que navegadores como o Cheetah e o 360 têm esse tipo de função.”
“Mas agora, deixar o sistema rodando sozinho para ficar atualizando a página em busca de passagens disponíveis… isso aí, acho que ainda não vi ninguém fazer.”
Lu Zhou lembrou-se do perrengue que passou nas férias de inverno do ano passado, quando foi comprar passagem tarde demais. Ele e os outros animais do dormitório ficaram sentados diante dos computadores, martelando a tecla F5 por quase meia hora, até finalmente conseguirem achar umas passagens para voltar para casa. Aquilo deixou bem claro para ele o quão difícil era para os pobres coitados desse país conseguir um lugar no trem de volta para casa no Ano Novo Chinês.
Ficar atualizando sem parar os dados do site oficial às vezes dava certo, ocasionalmente, com uma pitada de magia negra digital, algumas passagens apareciam do nada. Umas vinham de cancelamentos de outros usuários, outras, sinceramente, Lu Zhou nem sabia de onde surgiam. Mas esse tipo de funcionalidade com certeza merecia ser explorado.
Por exemplo, permitir ao usuário configurar um intervalo de tempo e alguns trajetos desejados, e então deixar que o servidor fique de prontidão, atualizando tudo automaticamente e, no exato instante em que surgir um bilhete disponível, o pedido era enviado automaticamente. Pelo que ele tinha visto nos aplicativos de compra de passagem que estavam disponíveis até então, nenhum parecia oferecer algo assim.
E o melhor era que do ponto de vista algorítmico, implementar essa funcionalidade nem parecia ser tão complicado assim.
Pensando nisso, Lu Zhou levantou os olhos e olhou para o relógio de parede.
São três horas da tarde!
Salvou o documento do Word, arregaçou as mangas com empolgação e posicionou as mãos sobre o teclado com todo o entusiasmo do mundo.
“Hora de trabalhar!”
- Redundante.[↩]
Regras dos Comentários:
Para receber notificações por e-mail quando seu comentário for respondido, ative o sininho ao lado do botão de Publicar Comentário.