Why think of developing Bqyahoo
One day in August, I learned Yahoo China from the Internet.
1G
mailbox. When I told the companion of my colleagues, he did not think that he had already applied for several. I am not willing, after a few minutes, my first Yahoo China
1G
The mailbox is from the hand.
From today, there is already a lot of mail service providers.
1G
Mailbox, but, in general, Yahoo China is the most happy, the application is the most convenient, unlike some mail service providers also ask for the tricks such as network stamps.
In the face of this maximum mailbox I have, I don't know what to do, usually use the company's mailbox, and basic needs have been met. In addition, Yahoo China's mailbox also does not support Outlook (later I heard that there is a way to make it support, but I have not tried), it is very inconvenient.
I am trying to find some information related to Yahoo Mail online, I haven't intended to see the software: Yahoopops !. This is a cool software. For Yahoo Server, it is a web browser; for Outlook, it is a mail server. I personally think that its creativity and feature are first-class (there are rumors on the Internet that it works unstable).
When I know it is still an open source software, an idea is generated in my head, can I do something? Can I use its source code? In the end, I want one of its features (for Yahoo Server, it is a web browser) writes a shared file software. My colleague still doesn't care about my idea: "It is not a network USB flash drive software, how much online is!"
In fact, I personally think Bqyahoo and network USB flash drive software have a lot:
l Different. Network USB flash drive software is used by yourself; Bqyahoo is used to share files between friends.
l Different. This is the most critical element, and the network USB flash drive software uses the POP3 protocol, can't go up! The speed of BQyahoo depends only on the speed between you and Yahoo China, which is similar to HTTP download (actually something wrong, unable to download).
Holding this immature idea, I started the development of BQyahoo.
How to share
There are currently many file sharing mechanisms, such as FTP, BT, and MAZE, and more. It should be said that these sharing mechanisms have been quite mature and stable, then why I have to plug in a foot. The most real reason is that I can't use these sharing methods. And not to say that the shared file is downloaded to others, that is, the documents to download others are very difficult. The main reason is that I am in the intranet, and this internal network is quite demanding (or should be quite safe). In the end, I found that if it is HTTP to download, I have no problem here.
When downloading the attachment of Yahoo Mail, I am surprised that this process is done by IE, that is, it is an HTTP download, which is the most nature of BQyahoo.
In order to use Yahoo mail sharing files, I "Du" a set of encrypted decryption "procedures", which can guarantee that the downloader can only download the attachment you want to let him download, but you can't enter your email. This way, you only need to publish the information on a web page, other users can download attachments in your email, it doesn't matter if you are online, this is also the difference between P2P software. Overall, I hope BQyahoo becomes a class FTP software using the HTTP protocol. Is this not cool?
Hard start
In order to write BQyahoo, I have to read the open source software Yahoopops!, Figure out how it is interacting with Yahoo servers. In the process of reading the source code, the biggest difficulty is that the source code cannot be compiled normally in the VC. I have been working for a long time, the only reason is to lack relevant header files and library files. Finally, I can only read the source code with the notepad. The second difficulty is coming, yahoopops! Use a variety of open source libraries, most of whom I have never heard of it. At that time, I did have gave up my thoughts, because familiar with these function libraries is also a very troublesome thing, and there is no need. Eventually I choose: Only the basic process of the program, use the common class library provided by Microsoft to rewrite the code.
Different localization
In the process of developing BQyahoo, I suddenly realized that Yahoopops! The source code of Yahoo Communication is not necessarily used. The server in China is not necessarily consistent with the US server reaction (for simplicity, Bqyahoo is only for Yahoo China). Finally, I have to use some software to get the network package to analyze the HTTP information of Yahoo China Server. This is confirming an old saying in China: "Master will lead the door, practice relied on individuals."
In fact, Bqyahoo only uses few Yahoopows! Source, about 30 lines, and other content either rewritten, or be localized (you can see the relevant indication in Bqyahoo source code).
Painful test
In order to confirm your own ideas as soon as possible, I first wrote a command line program. After a week, voluntary overtime, finally came to the test phase. When I run successfully on my own machine, I feel very happy, and a week's pay is finally returned. But the next few days, I have dropped from heaven to hell. With the help of netizens, I constantly discover BUG, the most uncomfortable thing is that there is no problem in my machine, in others The machine is loophole.
The test process made me understand what is called quality. Red Red Fire only considers functional programming methods, it is obviously not a good way to get high quality. But at that time, the function is preferred to choose the choice. For the sake of convenience, I designed the log class and embed it into the existing code, get various data at the time of running. Because the program is an error on the machine's machine, there is no way to debug, you can only rely on the log.
Constant analysis of the log files passed by the netizens, constantly modify the program, and finally a netizen successfully tested successfully on a Internet cafe machine, and the test stage will not be a paragraph. I got the following two points in the test process:
l The most difficult mistakes are those who want to have a rules. For example: I applied for five Yahoo China mailboxes on my own machine, and the email address of these five mailboxes is similar, similar to http://cn.f157.mail.yahoo.com/ym/ Login? .rand = *****, so I think the mailboxes applying for others are the same, or users in the mainland China are the same. In fact, this idea is completely wrong. Many netizens apply different emailories, such as: http://cn.f156.mail.yahoo.com/ym/login? .Rand = ******. It is this reason that many netizens have complained that they can download my shared songs, but they can't share files themselves. When I got a day file from the netizen, I found this F156, I only stunned.
l Test allows yourself more about your procedures, improve and improve your programming level. There is nothing new, but it is indeed I personally experienced. Many times, the same paragraph code is "eggs in the egg", let me have summed up many "no longer xxx later."
Unwilling to beautify
When I put the Bqyahoo V1.0, I was very excited, I also wrote a very long helper file. However, the response on the network made me very disappointed. Afterward analysis, this response is too normal, I am looking forward to others will try to use a command line program. In fact, I don't have to write GUI at all, just think that I have to use the MFC class library, there is an upset that cannot be suppressed. I don't understand MFC ("Deeper Shallow MFC" is my enlightenment reading), just after understanding it, it is intimidated by its complexity. And for such a huge thing that yesterday yesterday, I really can't help but use it. At this time, I once again played the drum. The anti-function is realized, no one doesn't matter, as long as I am happy. Cold Bqyahoo for a few days, I still brought the courage to write a GUI for it. Sometimes, Bqyahoo is like my child (in life, I am still single L), it should be made for it.
The MFC class library is excluded, and the choice I face seems to have only WTL. For this Microsoft's non-official class library, I have ever heard it before, I didn't think of it, I will have the possibility of using it. After reading the classic network tutorial "WTL for MFC Programmers", I started making "flower clothes".
Everything is smooth, my fashion, downloaded a wtl source code for a class Outlook interface from the Internet. To simplify programming, I cut those complex features (such as automatic hiding) one by one. Finally, when I set the entire message network "weaving", the rest only fill the code.
In this process, I feel the importance of solid technical skills (I don't just say myself). I have spent a long time to read a Win 32 API helper file (English version, downloaded from the Microsoft website). At that time, it was interested in interest and did not expect it. But in the process of learning and using the WTL, they helped me very busy. WTL is essentially "package", if you know what it wants to encapsulate, it is naturally not lost.
See the window version of Bqyahoo V2.0, compare the previous command line Bqyahoo V1.0, really feel more kind. Even myself is also very willing to deal with Bqyahoo V2.0. In the process of writing the GUI, I realized that it was a very uncommon user interface programming, using VC to write a novel interface. It is also a very difficult thing.
Safety problem that makes people
There is a simple encrypted decryption process among Bqyahoo. Many netizens are interested in this link, constantly inquiring is safe, my answer is of course "very safe" (for your own blush). However, one morning, a netizen couldn't stand my self-feeling. I personally wrote an extensive for Bqyahoo. In the end, this plug-in can automatically give the username and password of the mailbox. At this time, BQyahoo can work normally!
"There are people outside people, there are days outside the sky." In this case, I don't know if it is happy or depressed. I am happy that some people will actually hang my software; frustrating is that my software is too fragile. I have pain, I found the reason for the problem (in fact, the plug-in writer pointed out). When writing BQyahoo, in order to facilitate programming, reduce the burden, I will make all encrypted decryption functions into dynamic link libraries. In this way, it is said that it is modular programming, and it is said to be worried about writing the main function.
The problem is to remove all dynamic link libraries and put the encrypted decryption function in the main execution file. How much does this enhance safety.
Force to fight
There is a very interesting feature in Bqyahoo, which is to use Outlook to upload files. Obviously, for Bqyahoo, download is easy, upload trouble. In order to share some files, you need to send emails to your Yahoo Mail in accordance with certain requirements. Mastering the rules are both cumbersome and not necessary for end users. This way, a requirement is generated, Bqyahoo needs you to send an email. In fact, many controls have been implemented. I think that there is more or less of the online compass software (I guess). However, I don't want to do this so, so I have to "responsibility" for the email. At this time I thought Mapi. It is very conforming to my needs. Its whole process is equivalent to Bqyahoo tells Outlook which messages should be sent, and then shipped by Outlook. For example, Bqyahoo is responsible for filling the table, Outlook is similar to the printer, responsible for printing the form. In this way, it is convenient for users, but also provides a guaranteed email function with ready-made Outlook. However, in actual use, many users say they don't configure Outlook. It seems that Microsoft is easy to use in software.
In addition to Borrowing Outlook features, Bqyahoo also borrows WinRAR and uses it to break down the big file.
to sum up
This article is just a simple to describe the development process of Bqyahoo. The following article will make a more in-depth explanation of this software. In general, Bqyahoo is a very expensive software. In fact, its core function is provided by Yahoo China, Bqyahoo just makes a "shell" for users. However, this also shows why some people always say "good ideas is very important."
If you see this, how to write this software, I suggest you go to the "Sky Download" website to download BQyahoo and try it. In addition, the help file in the compressed package "Sharing Yahoo, Exchange" is also useful, reading it is useful for you to understand the next article.