Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Shields.io badges to readme #11

Merged
merged 8 commits into from
Jan 11, 2021

Conversation

k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor

@k3KAW8Pnf7mkmdSMPHz27 k3KAW8Pnf7mkmdSMPHz27 commented Jan 8, 2021

Hello, first of all, nice repository and thank you for your effort in creating it!

I just thought I'd add this as a suggested use of the API.
For an "in-action" example, I added a CodeChef badge with my global ranking on my own GitHub profile https://github.com/k3KAW8Pnf7mkmdSMPHz27/ (under hobbies, sometimes it can take ≈ 5 s to load, probably if the cache is invalidated).
It mostly work if the cache lifetime value is high enough, occasionally it shows an error message instead of my rank 😬

Some thing to note that you might want to change, or I can address them later,

  1. The example images shown are not dynamic, but they can be made dynamic with a long HTTP cache lifetime. I can volunteer my account on the sites that I have, otherwise one can just pick anyone from top10 or a personal favourite competitive programmer 😛 (I'd go with Errichto based on his youtubes)
  2. The example code should probably have a HTTP cache lifetime value as well. The one I have is updated once a day, which is much more frequent than I need for my occasional monthly long codechef challenge 😛 Feel free to suggest what you consider to be a reasonable refresh time and I'll add it to the "code" examples.
  3. The badges/shields that I have not included does not have an icon on https://simpleicons.org/ . This is not a problem per say, as it is possible to use an image. I have not had time to do so. I can submit one/more PR whenever I have time to add more badges.
  4. Leetcode is listed on simpleicons but when I were writing the changes I kept getting "internal server error" and I am not sure why. I did not have time to look into it. I can probably submit a PR for that as well at some point in the future. Unfortunately, time is a limited resource 😬

@Abhijeet-AR
Copy link
Owner

Hello, first of all, nice repository and thank you for your effort in creating it!

I just thought I'd add this as a suggested use of the API.
For an "in-action" example, I added a CodeChef badge with my global ranking on my own GitHub profile https://github.com/k3KAW8Pnf7mkmdSMPHz27/ (under hobbies, sometimes it can take ≈ 5 s to load, probably if the cache is invalidated).
It mostly work if the cache lifetime value is high enough, occasionally it shows an error message instead of my rank 😬

Some thing to note that you might want to change, or I can address them later,

  1. The example images shown are not dynamic, but they can be made dynamic with a long HTTP cache lifetime. I can volunteer my account on the sites that I have, otherwise one can just pick anyone from top10 or a personal favourite competitive programmer 😛 (I'd go with Errichto based on his youtubes)
  2. The example code should probably have a HTTP cache lifetime value as well. The one I have is updated once a day, which is much more frequent than I need for my occasional monthly long codechef challenge 😛 Feel free to suggest what you consider to be a reasonable refresh time and I'll add it to the "code" examples.
  3. The badges/shields that I have not included does not have an icon on https://simpleicons.org/ . This is not a problem per say, as it is possible to use an image. I have not had time to do so. I can submit one/more PR whenever I have time to add more badges.
  4. Leetcode is listed on simpleicons but when I were writing the changes I kept getting "internal server error" and I am not sure why. I did not have time to look into it. I can probably submit a PR for that as well at some point in the future. Unfortunately, time is a limited resource 😬

Hi, thanks for the appreciation and suggestion.
Regarding the 1st change, you can go with your account or mine.
For the second, we can update Codechef and Codeforces once a day as the scores might not change too often and for all others we can go with 1 hour.
For the third, I'll see if I can help.

@Abhijeet-AR
Copy link
Owner

Hello, first of all, nice repository and thank you for your effort in creating it!

I just thought I'd add this as a suggested use of the API.
For an "in-action" example, I added a CodeChef badge with my global ranking on my own GitHub profile https://github.com/k3KAW8Pnf7mkmdSMPHz27/ (under hobbies, sometimes it can take ≈ 5 s to load, probably if the cache is invalidated).
It mostly work if the cache lifetime value is high enough, occasionally it shows an error message instead of my rank 😬

Some thing to note that you might want to change, or I can address them later,

  1. The example images shown are not dynamic, but they can be made dynamic with a long HTTP cache lifetime. I can volunteer my account on the sites that I have, otherwise one can just pick anyone from top10 or a personal favourite competitive programmer 😛 (I'd go with Errichto based on his youtubes)
  2. The example code should probably have a HTTP cache lifetime value as well. The one I have is updated once a day, which is much more frequent than I need for my occasional monthly long codechef challenge 😛 Feel free to suggest what you consider to be a reasonable refresh time and I'll add it to the "code" examples.
  3. The badges/shields that I have not included does not have an icon on https://simpleicons.org/ . This is not a problem per say, as it is possible to use an image. I have not had time to do so. I can submit one/more PR whenever I have time to add more badges.
  4. Leetcode is listed on simpleicons but when I were writing the changes I kept getting "internal server error" and I am not sure why. I did not have time to look into it. I can probably submit a PR for that as well at some point in the future. Unfortunately, time is a limited resource 😬

Can you give more details on the Leetcode error? It's working fine with my username.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

k3KAW8Pnf7mkmdSMPHz27 commented Jan 10, 2021

Can you give more details on the Leetcode error? It's working fine with my username.

This is strange. It does work with my username (https://competitive-coding-api.herokuapp.com/api/leetcode/xQZyhWSJ)
But both uwi https://competitive-coding-api.herokuapp.com/api/leetcode/uwi and superluminal (https://competitive-coding-api.herokuapp.com/api/leetcode/superluminal)
gives me
{"message": "Internal Server Error"}

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

Regarding the 1st change, you can go with your account or mine.

I compromised, I used my CodeChef and your Codeforces 😉

For the second, we can update Codechef and Codeforces once a day as the scores might not change too often and for all others we can go with 1 hour.

Done.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

For the dynamic badges I also linked them to the platform's profile page, perhaps I should remove the link?

@Abhijeet-AR
Copy link
Owner

Can you give more details on the Leetcode error? It's working fine with my username.

This is strange. It does work with my username (https://competitive-coding-api.herokuapp.com/api/leetcode/xQZyhWSJ)
But both uwi https://competitive-coding-api.herokuapp.com/api/leetcode/uwi and superluminal (https://competitive-coding-api.herokuapp.com/api/leetcode/superluminal)
gives me
{"message": "Internal Server Error"}

Maybe we are missing some case. We'll find the problem and fix it. I opened an issue #12 for it.

@Abhijeet-AR
Copy link
Owner

Regarding the 1st change, you can go with your account or mine.

I compromised, I used my CodeChef and your Codeforces 😉

For the second, we can update Codechef and Codeforces once a day as the scores might not change too often and for all others we can go with 1 hour.

Done.

Not a problem 😄. We can go with any contributor if they agree 😸.

@Abhijeet-AR
Copy link
Owner

For the dynamic badges I also linked them to the platform's profile page, perhaps I should remove the link?

I don't see any problem linking it to profile, maybe we should keep it 🤔.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

For the dynamic badges I also linked them to the platform's profile page, perhaps I should remove the link?

I don't see any problem linking it to profile, maybe we should keep it 🤔.

Nvm. I confused myself with the alt="..." vs title="..." tags. If you don't want to be confused, ignore what I said 🤡

@Abhijeet-AR Abhijeet-AR merged commit 213dbfe into Abhijeet-AR:master Jan 11, 2021
@saurabh-prakash
Copy link
Contributor

For an "in-action" example, I added a CodeChef badge with my global ranking on my own GitHub profile https://github.com/k3KAW8Pnf7mkmdSMPHz27/ (under hobbies, sometimes it can take ≈ 5 s to load, probably if the cache is invalidated).

@k3KAW8Pnf7mkmdSMPHz27 this (~5s latency) is probably because @Abhijeet-AR has deployed this app on heroku free account and it kills the app due to longer periods of inactivity (AFAIK about heroku). Therefore, upon a new request after such a duration of inactivity, heroku respawns the app and that is where the latency is. @Abhijeet-AR can confirm this by observing the activity graphs in his heroku account.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

Aha. In that case I don't see it becoming an issue. Perhaps I were just unlucky with the Shields caching (1 hour) and Heroku killing it off 😛

@Abhijeet-AR
Copy link
Owner

For an "in-action" example, I added a CodeChef badge with my global ranking on my own GitHub profile https://github.com/k3KAW8Pnf7mkmdSMPHz27/ (under hobbies, sometimes it can take ≈ 5 s to load, probably if the cache is invalidated).

@k3KAW8Pnf7mkmdSMPHz27 this (~5s latency) is probably because @Abhijeet-AR has deployed this app on heroku free account and it kills the app due to longer periods of inactivity (AFAIK about heroku). Therefore, upon a new request after such a duration of inactivity, heroku respawns the app and that is where the latency is. @Abhijeet-AR can confirm this by observing the activity graphs in his heroku account.

Yes, in Heroku's free version server goes to sleep after 30 minutes of inactivity. I was thinking it was due to Shield, I didn't think about Heroku 😄.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

k3KAW8Pnf7mkmdSMPHz27 commented Jan 12, 2021

Hum... I'll look into it more... It might be that Shields uses a time-out... or it is completely unrelated.
Skärmavbild 2021-01-12 kl  08 29 17

@Abhijeet-AR
Copy link
Owner

Hum... I'll look into it more... It might be that Shields uses a time-out... or it is completely unrelated.
Skärmavbild 2021-01-12 kl 08 29 17

Screenshot 2021-01-13 at 9 47 53 PM

It's showing unresponsive on your page, but it seems to work fine on our current repository.🤔

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

That is strange. My (so far subjective, I have not looked into the details) impression is that I get the broken image every time Shields cache gets invalidated.
I have never seen the "unresponsive" message. It is for sure better than just a broken link. Are you using Chrome?

@Abhijeet-AR
Copy link
Owner

That is strange. My (so far subjective, I have not looked into the details) impression is that I get the broken image every time Shields cache gets invalidated.
I have never seen the "unresponsive" message. It is for sure better than just a broken link. Are you using Chrome?

Nope. I'm using safari. But I checked on chrome too, it's showing the same. If you changed it recently, once check if you made any mistake in URL.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

k3KAW8Pnf7mkmdSMPHz27 commented Jan 13, 2021

Nope. I'm using safari. But I checked on chrome too, it's showing the same. If you changed it recently, once check if you made any mistake in URL.

I have not, but I am using a different URL than this repository so perhaps. I'll see if I can look into it when I add more badges, it would be a shame if it doesn't work as intended.

@saurabh-prakash
Copy link
Contributor

The "UNRESPONSIVE" is due to github caching, I think
Screenshot 2021-01-17 at 5 00 31 PM
See the img src. It is from camo.githubusercontent. "data-cannonical-src" is the actual source and despite it being working in later API calls, github may have cached the first response from shields API (when our API gave an error).

Ideally, we need the img src to have the value that is contained in "data-cannonical-src". But, github modifies that url. Read this.

We'll probably need to purge Camo cache when this occurs.

@saurabh-prakash
Copy link
Contributor

There are 2 hard problems in Computer Science:

  1. Variable Naming
  2. Cache Invalidation
  3. One-off errors

We've hit cache-invalidation in this case.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

k3KAW8Pnf7mkmdSMPHz27 commented Jan 17, 2021

Yup. Sorry about that. The cache(s) made me believe this would work better out of the box. @Abhijeet-AR feel free to remove this use-case again.

In addition to the potential cache issues, there is an issue when loading an image takes longer than 4 s. Given the Heroku startup time that can be problematic.

@k3KAW8Pnf7mkmdSMPHz27
Copy link
Contributor Author

I'll be quite busy for two weeks or so. I can revisit this issue afterward and see if I can come up with a workaround.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants