• 开源镜像
  • 开源沙龙
  • 媛宝
  • 猿帅
  • 注册
  • 登录
  • 息壤开源生活方式平台
  • 加入我们

开源日报

  • 开源日报第583期:《灵活布局 Flexbox30》

    19 10 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《灵活布局 Flexbox30》
    今日推荐英文原文:《Becoming a software architect》

    今日推荐开源项目:《灵活布局 Flexbox30》传送门:GitHub链接
    推荐理由:浏览器的页面布局已经发展了有不少时日了,从以前的一无所有到现在的 Flex 和 Grid 等等(它们已经能简单的解决垂直居中这个千古难题)。这个项目通过一些小小的代码示例和成果图等来介绍 Flex,尽管它并不像 Grid 一样给你掌控一切的感觉,但是它也并不需要调整过多的细节,如果不需要太过细节的调整的话,Flex 显然比 Grid 来得更快。
    今日推荐英文原文:《Becoming a software architect》作者:David Van Couvering
    原文链接:https://medium.com/@david.vancouvering/becoming-a-software-architect-6c5ca8508422
    推荐理由:简单的说,软件架构师就是那个给你提供积木图纸的人

    Becoming a software architect


    So, yea, I’m a “software architect” — a principal engineer. I like my job. It’s challenging, it’s fun, and it scratches an itch. I’m also a little sad, because it is really hard for me to code as much as I would like to. I have to always fight to find time to just get in the code and build stuff.

    I didn’t really plan to have this job. I just started working and over time discovered this role and discovered I liked it. So when younger engineers who are interested in advancing their career ask me what I did to get here I find myself a bit mystified. How did I get here?

    Different strokes for different folks

    Before I tell that story, I do want to emphasize that everybody’s path is different. What worked for me may not work for you. In fact what works for you could be quite different.

    I have worked with a lot of principal engineers, and each of them brings a very different style and skills to bear. Some are really good at communicating, driving direction, coming up with high-level designs and strategies. Others have deep deep understanding in a very specialized field and are able to achieve miracles in that specific area. And some are great leaders and mentors. So, just because I followed a certain path to this role, doesn’t mean you need to follow the same path. I would say in general, find your passion and lean into that.

    Another important aspect of that is, I’m privileged — I’m a white male who grew up middle class in the USA with educated parents. So I had advantages growing up, and I’ve had tailwinds in my career. When I am loud and speak up people don’t think I’m being “uppity” or “intrusive” or “annoying.” People generally give me the benefit of the doubt. I haven’t had to deal with institutional discrimination. If you’re in a minority position, I suspect it’s a totally different story and you probably need a very different strategy.

    With all that said, here are some things I’m noticing I have done and continue to do, and perhaps that is part of what helped me land this role.

    Looking for underlying themes and patterns


    When I see myself or a team struggling with poor quality code or difficult processes, or things are just taking a lot longer to do than they should, I find myself asking why is that? How can we make this better? I am passionate about trying to understand the root cause. I have no patience for accepting it as just the way things are.

    I have never really formally practiced the Five Whys technique, but that’s essentially what I do.

    In the excellent book Thinking in Systems, Donella Meadows encourages us to move away from just noticing the series of events occurring to us to dig deeper and understand the underlying structure that is causing these events to happen. You have leverage when you understand the structure, rather than just reacting to the events. This blog post is a good summary of how to see structure in a series of events.

    Reading


    My reference to Ms. Meadows’ book takes me to my next point. We don’t live in isolation. There is so much wisdom out there if we can tap into it.

    I have memories of particular books or articles that completely opened my eyes to a new way of thinking. I still remember reading Werner Vogels’ article on eventual consistency and how it unlocked how we can manage data at web scale. Or the realization that there is a clean, scalable, decoupled way to integrate data between system components when I read Jay Kreps’ seminal article on log-based architectures. Or when someone handed me Eric Evans’ book on Domain Driven Design and it crystalized a user-driving approach to domain modeling.

    In my search for understanding the structure and patterns underneath behavior, the books and articles I have read have been key milestones on my journey. What I have learned and practiced from them have become crucial tools in my toolbox.

    The school of hard knocks isn’t really a school unless you learn and change, and reading has made that possible for me.

    So, how do you find these books and articles? What works for me is to listen to those who I respect, and trace links from them to source material. I primarily do this through curating a Twitter feed of people in the industry who I respect and trust. There is still a lot of noise, and Twitter has started “curating” my feed for me in annoying ways, but generally this works best for me. I check Twitter a few times a day and amidst all the rants and food pictures I get gems of great new information that keeps my knowledge moving forward.

    Writing


    Before I became a software engineer, I wanted to be a science writer. I have always loved writing. When I was growing up we travelled a lot and my parents and then my siblings and I would type up long letters to each other.

    This love for writing has served me well in my software career, and I think has helped me be recognized and respected by both management and my coworkers. Many software developers are not writers — they like to make things work, not write about them. But at a certain level in your career, if you can’t write down and explain your thoughts and use that to communicate with others, it’s going to make it hard for you to advance.

    Writing is not natural for everyone, and it has always come easy to me. So perhaps I’m not the best one to give advice. But having mentored others on this, I think the best thing to do is just do it. Find a way to set aside time to do some technical writing on a regular basis. Also, by the way, reading improves your writing, so see above.

    Oh, and, when you write, use diagrams and images. People are so much better at ingesting and comprehending concepts visually that through straight writing. Lucidchart is your friend.

    Teaching


    Whenever I really want to learn something, I announce that I am going to give a talk on it. It works every time. Also, giving presentations on interesting subjects help make you and your thoughts visible to others, which is always useful.

    As with writing, you get better by doing. It takes guts the first few times you do it, but as you do it more and more, it becomes comfortable and even fun.

    Do the dirty work


    All this thinking and reading and communicating is great, but you also have to back it up with action. Ultimately that’s what gives grounding and reality to all your ideas, and you earn respect, which is a key aspect of being a leader.

    Take on a project or refactoring that nobody else wants to do. Take on the effort to organize a new practice with the team. Upgrade that library that nobody else wants to upgrade. Build that automation script to eliminate manual work in the team. Taking initiative and doing the dirty work shows commitment and gets noticed.

    Good luck!

    I think any kind of success is a combination of luck, hard work, setbacks and sudden advances. I know at some point I realized I liked the role of an architect, but I didn’t come in with a big plan. It evolved like anything else.

    We all have our own journeys. May yours be full of transformation, learning, and fulfillment!
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第582期:《变个截图 html2canvas》

    18 10 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《变个截图 html2canvas》
    今日推荐英文原文:《I A/B Tested Resume Formats: Which Jon Snow Gets Hired?》

    今日推荐开源项目:《变个截图 html2canvas》传送门:GitHub链接
    推荐理由:截图发聊天软件早就成了日常的一部分,这个项目可以让你帮助其他人对你的网页进行截图——不过需要对你的网页做一些限制。它的截图原理是读取 DOM 来确认应该显示什么,所以可能与真实情况有所偏差,而且有些 CSS 属性并不在它的支持范围内,其他还有不适合与 Node.js 一同食用等等的你需要在编写页面时注意的限制……不过如果你的页面的确需要也很适合带上一个快速截图的功能,那么这个项目依然值得考虑。
    今日推荐英文原文:《I A/B Tested Resume Formats: Which Jon Snow Gets Hired?》作者:Ryan Perry
    原文链接:https://medium.com/better-programming/i-a-b-tested-resume-formats-which-jon-snow-gets-hired-cd206f62d15a
    推荐理由:两种不同的简历风格对比——不过在我个人看来:在表达清楚的前提下做的美观一点似乎更好

    I A/B Tested Resume Formats: Which Jon Snow Gets Hired?

    Does colorful and graphic beat plain and professional?


    For most, writing a resume is one of the most boring activities on the planet. When I recently re-wrote mine, I couldn’t tell whether I was more dissatisfied with the tedious process or with the bland final result (or both?). As a former software engineer, making a resume in the standard professional format felt like building a website’s landing page with no CSS styling.

    For example, let’s use Twitter’s landing page, which is designed to quickly give users direct snippets of information, in a similar way to how resumes are designed. Imagine how much less engaging Twitter would be if it looked like this:

    It’s no surprise that with the traditionally formatted resume, recruiters only spend eight seconds on your resume; it’s just a bland representation of your professional journey (which they’ve likely seen before).

    Defying Conventional Wisdom

    I understand the conventional wisdom that you should try to maximize the amount of information a recruiter can learn about you in that short amount of time. However, just like the unstyled version of Twitter, I think the traditional professional resume is objectively less interesting to look at. The graphic stylized version, however, draws in the viewer using various UI/UX techniques.

    After I finished updating my professional resume, I decided to try building a graphic version (with the same content). Here are the two versions that I came up with. Since this piece is meant to focus on the format of the resumes and not the content, I swapped out the original content for fictional content.

    To build the graphic resume, I started with a blank page in Adobe Illustrator (as opposed to the same Microsoft Word template I’ve been using the past seven years) and treated the process as if I were designing a game or website.

    When I finished, I was much happier with how the graphic-formatted resume turned out than the professional one did. The colorful graphic style was a more authentic representation of me, both as a person and a professional.

    Additionally, a traditional resume can only directly declare or describe clichéd traits like “creativity” or “thinking outside the box,” but the graphic resume can exhibit these traits in a way that the professional one is too constrained by its arbitrary rules to do.

    How Do the Two Formats Perform?

    Next, I set up an experiment to see how the two resumes stack up against each other in terms of how they’re received in the professional world. I built a website and landing page to host the two resumes. Using the product analytics software Heap, with one line of code I was able to record which resume users clicked first and also to collect data on time spent per resume.

    Note: In order to remove positional bias, 50% of the time “Graphic Resume” showed up on the left and 50% of the time “Professional Resume” showed up on the left.

    I added Heaps tracker to my page, and I received enough traffic to produce statistically significant results on how users behaved. These are the results from the experiment:


    Which Format Was Better?

    With over 1,500 sessions used as data points for this experiment, it’s enough data to draw a few quantitative conclusions. If the goal is to get people to spend more time looking at a resume, then the probabilities suggest using the graphic resume would be most successful. Not only do people spend 13% more time viewing this resume, but 11% more people chose the graphic resume over the professional one.

    However, without adding qualitative data from the stories of people who visited the website, it’s not fair to extrapolate from these two statistics that there’s also a higher probability of getting an interview.

    For example, if I did the same experiment to determine whether with an image of me from last Halloween or a professional headshot should be my LinkedIn profile picture, people might look at my Fresh Prince costume 11% more and for 13% longer, but that doesn’t (necessarily) mean that it should be my LinkedIn profile picture.

    Qualitative Data Has Been Mixed So Far

    For what it’s worth, I’ve also spoken directly with six friends/colleagues (three recruiters, one engineering manager, and two product managers). When I asked which resume they preferred, the three recruiters unanimously chose the professional resume.

    However, the other three people I spoke with, none of whom are recruiters, but all of whom are involved in recruiting processes, claimed that they would prefer to see the graphic resume.

    Which Jon Snow Gets Hired?

    For now the final verdict is TBD. I‘m currently gathering more stories from people about which resume they’d prefer and why so that I can make a more sound conclusion.

    If you have someone in your network who has experience reviewing resumes and might be willing to offer feedback on which one they’d prefer, then please share this post with them. Additionally, if you have any feedback yourself, then leave a comment explaining which format you’d prefer!

    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第581期:《瞎讲 bullshit.js》

    17 10 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《瞎讲 bullshit.js》
    今日推荐英文原文:《The 4 Step Guide to Coming Up with High-Quality Ideas》

    今日推荐开源项目:《瞎讲 bullshit.js》传送门:GitHub链接
    推荐理由:今日搞怪项目,原理并不复杂,代码和效果也很简单——将页面上的某些词汇变成另外一些词汇……具体效果当然是自己亲眼看看才是最直接的。同类最佳,开箱即用,量子波动……这些词汇听起来似乎很高大上,但是并不是说堆叠好词就能写出好文章来,尽管包装是必要的,可别忘了产品本身才是最重要的组成部分。
    今日推荐英文原文:《The 4 Step Guide to Coming Up with High-Quality Ideas》作者:Megan Holstein
    原文链接:https://entrepreneurshandbook.co/the-4-step-guide-to-coming-up-with-high-quality-ideas-48fd7e04d2ae
    推荐理由:想出一个好办法的技巧——有些时候你需要在找到好办法的办法而不是找到好办法上下点功夫

    The 4 Step Guide to Coming Up with High-Quality Ideas

    Most ideas are terrible. Here’s how to have ones that aren’t.

    There is nothing more demoralizing than sitting down in front of a computer ready to create something and having no idea what to create. You know there’s a world of great ideas out there ready to become reality, yet you cannot think of a single one of them. A lack of ideas is the bane of creators everywhere.

    Creators resort to all kinds of bizarre behaviors in order to come up with ideas. They do cleanses and detoxes and try new mediums and go on creative retreats and do brainstorming exercises, all in order to come up with just one good idea.

    These are all well and good, but they don’t get to the root of the issue. They treat ideas like discrete phenomena that you should be able to call upon at will.

    Ideas don’t work like that. They are not something you can pull out of thin air. Ideas are like the fruit of a tree; if you want a tree to grow more fruit, you don’t ask yourself “how can I make more fruit.” You ask yourself “what can I do to make this tree grow more fruit? How can I make this tree healthy?”

    The tree that produces the fruit we call an idea is your mind. If you want to have more ideas, you shouldn’t be focusing on “coming up with ideas,” you should be focused on nurturing your mind so it can produce more ideas all on its own.

    What follows is a list of ways you can nurture your mind:

    1. Consume a lot of information

    If your mind is the tree that produces ideas, information is fertilizer for the soil.

    An idea is a new and novel connection between previously unrelated pieces of information in your mind. If you have no information in your mind, you are not able to have ideas. So, the first step to having ideas is to have some information you can use.

    Not just any information will do. Much like how the quality of the food you eat directly impacts your health, the quality of the information you consume directly impacts the health of your mind.

    Most people fertilize their minds with low-quality information like Facebook posts, Twitter rants, and whatever people happen to be gossiping about at work. As a result, most people have low-quality ideas.

    To have high-quality ideas, cut out this low-quality information and replace it with high-quality information. Some sources of high-quality information are:
    • Books. (Also included: audiobooks) Long-form text — even fiction — is immensely enriching for the mind. Reading long-form information improves our working memory, our reasoning ability, and our ability to tell stories. Short-form text tends to cover only superficial facts, whereas long-form text includes a great deal of historical and scientific data with which you can form ideas. In addition, whereas social media posts and low-quality information tends to be inflammatory and one-sided, books are far more likely to be balanced and thoughtful.
    • Podcasts. (Also included: TED talks & high-quality articles such as those on Medium, Aeon, and The New York Times.) While podcasts are not as enriching as reading books, the shorter form of podcasts allows people to get a great deal of the value of a book without committing nearly as much time to getting it.

    2. Create mental space

    If information is the soil that fertilizes the tree of ideas, mental space is the sunlight that helps it grow.

    Mental space for deep thought is vital for creating new connections. If your mind is constantly being assaulted by sensory input, it never has a chance to engage in this deep thought.

    Many of the world’s most successful people understand the importance of mental space. Bill Gates takes what he famously calls “think weeks,” where he spends a week doing nothing but consuming massive amounts of information and thinking deeply about the problems he wants to solve.

    If you’re like most people, you are constantly facing a firehose of stimulation. At any given moment, you are listening to music, texting friends, scrolling social media, listening to or watching YouTube, or playing Netflix in the background. This is on top of regular stimulation, like road-noise, Slack messages from your boss, requests from your children or parents, and other long-term life pressures.

    If you want to have high-quality ideas, you need to make time in your day to just exist.

    Here are some ways you can do this:
    • Meditate. Meditation is having a moment in popular culture for many reasons, one of which is that its dead simple. You just sit down, close your eyes, and meditate. Many people use meditation apps, which is no more difficult — merely pop in your headphones, open your meditation app, and you are good to go. Meditation also has a lot of bang for your buck: ten minutes of meditation a day can have an incredible impact on your quality of life.
    • Take a walk. Many great thinkers swear by the power of taking a walk. Thomas Jefferson swore by the power of regular walking. Henry David Thoreau considered walking not only the most worthwhile form of exercise but itself a valid purpose for your day. (For best result, do not listen to music during your walk.)
    The sovereign invigorator of the body is exercise, and of all the exercises walking is the best. — Thomas Jefferson

    3. Exercise regularly

    Most of the time, when people talk about exercise, they talk about the direct benefits of exercise: losing weight and looking hot, feeling more energetic, and living longer. These are all great benefits, but the benefit we are concerned with here is mental performance. As your body is able to metabolize nutrients more effectively, your entire body reaps the benefits — including your brain. As your physical ability goes up, so too does the ability of your brain.

    In case you are not familiar with how to exercise, a good exercise routine has two parts: aerobic training and resistance training.
    • Aerobic training includes activities like running, biking, and other activities that require you to move fast. Aerobic activity is good for your heart health and lung health, training your body to oxygenate faster and more effectively. This results in a lower resting heart rate and feeling calmer when you are at rest.
    • Resistance training includes activities like rock climbing, weightlifting, certain kinds of intense yoga, and any other activities which require you to place heavy loads on your muscles. Resistance training improves your muscle’s ability to bear a load, which affects how much you can lift, what you can climb, and how much impact your bones can handle. More strength means less energy burnt on basic activities, which means more energy for your brain.
    In my experience, both kinds of training are important for having great ideas. Much like running a puppy gets their excess energy out, exercise gets our excess energy out. That way, when we are at rest, we are truly resting. (Compare this to how you feel when you do not work out regularly: you always have an undercurrent of fidgety energy wherever you go.)

    4. Eat healthy foods

    Just like how low-quality information breeds low-quality ideas, low-quality food breeds low-quality health… which breeds low-quality ideas. Garbage in, garbage out — so make sure you aren’t putting garbage in.

    I’m not just mindlessly harping on the importance of diet. The average person eats 2000 calories a day, and 300 to 400 of those calories are spent just powering your brain. If the 2000 calories you eat are garbage calories with no nutrients, your brain is starved of nutrients it needs to function properly. You aren’t going to have high-quality ideas if your brain can’t function.

    I appreciate how difficult it can be to eat healthily. Sometimes I read self-help articles that say things like “it’s easy to eat healthily! All you have to do is spend an hour every morning cooking quinoa salad with fresh garden vegetables from scratch!” These make me want to pound my head into the wall. I, and many other people, struggle to make instant oatmeal in the morning, let alone start our day with “fresh quinoa salad.”

    If you’re like me, here are some ways you can keep yourself fed with (reasonably) healthy food:
    • Don’t buy snacks. Chips, Nutella, and other snack foods are the mortal enemies of a healthy diet. They have no nutritional value. They don’t fill you up, so you can eat 2000 calories in a single sitting. You can’t eat these foods if you don’t buy them, so don’t buy them.
    • Don’t buy just-add-water food. Instant food is an MSG-laden nightmare. I looked at the ingredients list on my favorite brand of instant pho and just about had a heart attack.(The one exception I’ve found: oatmeal. Just-add-water oatmeal tends to have at least some protein and some whole grains.)
    • Don’t eat fried food. If you’re going to get wings with friends, get the bone-in grilled wings instead of fried wings. Most of what’s unhealthy about American food is not the food itself, but the bread and grease we cover the food in.
    • Buy some vitamins. Are vitamins sometimes poorly formulated and cut with filler ingredients? Yes. But even a poorly-formulated vitamin is better than no vitamins at all, and that’s where most Americans are at. Do yourself a favor and buy some gummy vitamins next time you’re at Walmart.
    I’ll be the first to admit these dietary guidelines are far from perfect. But if you’re the kind of person who eats Taco Bell for every meal and whose doctor is worried you’re going to pass out for lack of vegetables, it’s a good start.

    Following these guidelines doesn’t mean you’ll come up with the next Facebook. When it comes to creating world-changing things, having a good idea is just the first step. But following these guidelines does mean you’ll have a mind that’s sharp and ready to work every day, which is a damn fine foundation from which to start.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第580期:《罗伯特 robocode》

    16 10 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《罗伯特 robocode》
    今日推荐英文原文:《How to Perform Calendar Calculations in Your Head》

    今日推荐开源项目:《罗伯特 robocode》传送门:GitHub链接
    推荐理由:程序员之间对上眼的时候就要来一场战斗——当然了,并没有人这么说过。不过如果你真的想要用代码来战斗,这个项目兴许能够满足你。你可以在这个项目里创造一架跑着自己写的代码的机器人,通过调用各种函数来进行各种操作最后射爆场上的所有人。说着很简单,但是如果融入自己所学的各种算法等等之后,每个人的机器人都会大不相同,团建什么的时候自然可以拿这个来让大家互相打一架。
    今日推荐英文原文:《How to Perform Calendar Calculations in Your Head》作者:Jørgen Veisdal
    原文链接:https://medium.com/cantors-paradise/how-to-perform-calendar-calculations-5617f35d3070
    推荐理由:算出某一天是星期几的算式,虽然可能比较慢……

    How to Perform Calendar Calculations in Your Head

    A so-called calendrical savant (or calendar savant) is someone who despite their intellectual disability (typically autism) can name the day of the week of a given date, or visa versa in a few seconds or even a tenth of a second (Kennedy & Squire, 2007).While extremely impressive to behold, calendar calculations are actually very simple to perform and can be learned in less than 30 minutes. This short article will teach you how.

    What day was the 13th of January 1989?

    My birthday. I was born two weeks late. Here is how to calculate which day of the week that was (Lancaster, 2005):

    Step 1. Calculate the Year Code Y

    The first step of our five step process is to calculate the year code, represented by the letter Y. This is done in the following way:
    Calculate the Year Code Y
    Take the last two digits of the year, divide by 4, remove the remainder. For my birthday, 89 / 4 = 22. Add the number to the last two digits of the year, 22 + 89 = 111For dates in the 1700s, add 4.
    For dates in the 1800s, add 2.
    For dates in the 1900s, add 0.
    For dates in the 2000s, add 6.
    For dates in the 2100s, add 4.
    
    So, for the date 13th of January 1989 we obtain the year code Y =111.

    Step 2. Find the Month Code M

    The second step of our five step calculation is to find the month code M. This is a simple step, simply look it up in the table below (or better, memorize it):
    Month        Code 
    January      1*
    February     4*
    March        4
    April        0
    May          2
    June         5
    July         0
    August       3
    September    6
    October      1
    November     4
    December     6If the year you are calculating for is/was a leap year, subtract 1 from the code for January and February, so January = 0 and February = 3.
    
    As we know, leap years occur every four years (even years). Century years like 1900, 2000 and 2100 are leap years if they are evenly divisible by 400.

    For the date 13th of January 1989, we obtain the month code M = 1.

    Step 3. Find the Day Code D

    The third step of our five step calculation is to find the day code D. This iS even easier than finding the month code, as it is simply the number of the date itself. For the 13th of January 1989, the number is D = 13.

    Step 4. Find the sum of the numbers Y + M + D

    The fourth step of our five step model is to add the three numbers we’ve found. For our three numbers, the sum is 111 + 1 + 13 = 125.

    Step 5. Find the Day of the week

    The final step of the calculation is to calculate the remainder of the modulo operation 125 mod 7. We know that 7 x 17 is 119, leaving a remainder of 6:
    Day         Remainder
    Saturday    0
    Sunday      1
    Monday      2
    Tuesday     3
    Wednesday   4
    Thursday    5
    Friday      6
    
    The 13th of January 1989 was a Friday. Yes, I was born on Friday the 13th.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 113 114 115 116 117 … 262
下一页→

Proudly powered by WordPress