00 Preface Correct Posture for Learning Columns

00 Preface Correct Posture for Learning Columns #

Hello, I’m Haolin, and today I’m going to share with you the correct way to learn a column.

By now, all the content of the column has been pushed in front of you. If you have already finished learning it synchronously, then I want to give you a big thumbs up!

For those who haven’t finished reading, don’t worry, because the speed of the push is definitely faster than your learning speed. If it were me, I would definitely not be able to study and understand the content of the column at a fast pace. However, if you just skim through it, you should have plenty of time. Today, I want to talk to you about the correct way to learn a column.

How to Study a Column #

As people who work in internet technology, we are not unfamiliar with the data access scheme of index + abstract + details. I hope that my column articles can also achieve a kind of state: it is a knowledge manual that you can consult when you need it.

When listening to audio or browsing articles for the first time, you can have a superficial understanding and don’t need to delve into every concept and every sentence. Just have a general impression of each topic, each question, and each key point.

In this way, when you think of or encounter doubts in a certain area, you can have a rough direction and know how to find the corresponding content from the column.

This is what we call skimming, which is equivalent to having an index or even a summary in your mind. By using this fast learning method, you can often make a balance between limited energy and unlimited knowledge that suits you.

GeekTime allows us to access all the contents of the column indefinitely. So you don’t have to hurry. You can skim and then read in detail at your own pace, and then use this column as a knowledge manual. What’s important is true understanding and active practice, not reading speed.

The Correct Approach to Practice #

Recently, many students have asked me, “Teacher, I’m almost finished with this column and I’ve also bought your book. What should I do next in terms of practice?”

Most of the students asking me these questions are usually programmers who have few opportunities to use the Go language in their work, or professionals in the internet industry who are interested in Go. Some are also university students.

The first advice I usually give to everyone is “Write a web crawler.”

The world of the internet is vast, but it also follows certain rules, making it an excellent environment for learning technical skills. When you write a network service program, even if you put it on the public internet, you still need to consider a series of issues to have enough opportunities for technical honing. For example, types of services, functions, rules, security, interface, audience, promotion and access methods, as well as non-technical maintenance in daily operations.

I believe that this is not just pure technical practice, and it is not conducive to the initial growth of technical skills. Of course, if you have the confidence and energy to handle this series of issues and are willing to learn various skills from them, then go ahead and do it.

In my books and columns, I have always emphasized these few concepts: “concurrent programming”, “internet”, “client”, and “web crawler”. This is actually the best starting point for our practice. It has low costs and obvious results, with both depth and breadth.

Some students also ask me, “I wrote a program to crawl a certain website, but it seems to have been blocked after just a few attempts.” The reason is obvious, if you aggressively obtain a website’s content, you will definitely be blocked.

We should let the program simulate human behavior, simulate the process of people using web browsers to access website content, instead of using all our computing power to madly occupy someone else’s bandwidth and services. Otherwise, it would become a network attack. This is a very important skill in self-practice, please remember, “Benefit yourself but do not harm others.”

Note that normal web scraping does not mean losing the use case for high concurrency. Downloading content is just the beginning, there is still a lot of work to be done afterward.

Just the point of “simulating human behavior” requires some thought. Moreover, you can crawl thousands or even tens of thousands of websites of the same or different categories at the same time. This is already enough for you to research and practice for a long time. I also want to emphasize here that when doing this kind of technical research, you must not cross the moral bottom line and never violate the law.

Furthermore, it would be best to store the scraped web content in a structured format. When you have enough data, you have many options. For example, organizing, extracting, and analyzing certain types of data to uncover more valuable insights. This falls within the realm of data mining.

In this era of data overload, this is also an important skill. Another example is to provide a unified access interface based on this data, create a search engine, or even provide services externally. This is another deep option.

Of course, there are many other ways to practice technology. However, due to the length of this article, I will stop here for now.

Excellent Go Project Recommendations #

Finally, I would like to recommend some excellent Go projects to all of you. Don’t forget, reading the source code of excellent projects is also an important way to learn. Please take a look at the image below.

- (Long press to save and view the full image)

This image contains all the highly starred Go projects that I have collected in the past and are still active recently. I have to say, there are really a lot of good things in this world’s largest programmer social community - Github.

In the top-left corner of this image, there is an explanation of the various symbols in the image. Before further interpreting the image, please take a look at it first. The order in which you review these projects is completely up to you, but I recommend starting with “the aspect that is closely related to your actual work”, and then you can choose “the aspect that interests you”, and finally, if there is an opportunity, you can look at other projects. Don’t be greedy, and take it step by step.

Click here to view the detailed code accompanying the Go Language column articles.