How to Publish a Gradle Project to Maven Central Repository
How can you publish the output of a completed gradle project to the Maven Central Repository, so that everyone can benefit from your work? Last week, I went through the process and published a simple clipboard operation project I wrote. I found it a bit complicated, the process was long, and with gradle, the updates are too fast and compatibility is poor. This makes the documents found online somewhat inconsistent. What's worse, even the official gradle publishing tutorial from Sonatype is inconsistent with the latest gradle8 version. Therefore, I could only refer to the process inside, and the details had to be figured out by myself.
Clipboard Access in JVM
The idea originated from my desire to write a Kotlin script that reads the content of the clipboard and saves it to a file. However, after searching online, the methods given by Java and Kotlin both access the system clipboard through the awt package in the JDK. Since Kotlin scripts still run on the JVM target, the methods are universal.
A Brief Note on Using the Arc Browser
A Better Way to Write Scripts
Umami: A Simpler Self-Hosted Website Statistics Service
Previously, I used Google Analytics to provide website statistics services, tracking the visits to each page on my blog. It's usable, but Google Analytics offers too much statistical content, which is quite overwhelming. Moreover, Google's services always have accessibility issues. Therefore, after reading other bloggers' introductions to Umami, I decided to set up my own website statistics service and switch to it.
Umami is a simple, fast, privacy-focused alternative to Google Analytics.
Why Firefox?
Don't Take Open Source Software for Granted
A Record on Using Spring GraphQL
Spring GraphQL is a new Spring Application integrating GraphQL, released by Spring this year. Thanks to the out-of-the-box features of Spring Boot, it allows for the quick construction of a usable GraphQL service. However, despite its usability, the documentation leaves much to be desired, especially for some advanced features, which require self-exploration through the API documentation.
The Ins and Outs of 996
After brushing up on some videos about political economy and philosophy on Bilibili in May, I rekindled my interest in this area of knowledge and started following some up masters to learn more. Among them, I particularly enjoyed Weimingzi's discussion on the topic of 996. I found it insightful and inspiring, so I decided to jot down some thoughts on the matter.
Blog Switched to Hugo
CSS Selectors
I revisited the CSS selector knowledge in the MDN documentation and recorded it as a note.
Postscript on Using Double Pinyin
I've been using the double pinyin input method for over a month now, and I've pretty much mastered this skill. Now, I primarily use double pinyin as my daily input scheme. In daily use, I haven't encountered any major issues, but the advertised significant efficiency boost isn't exactly noticeable. However, I've grown accustomed to it and will likely continue using it.
Blog Domain Migration
I got up early in the morning and found out that the domain I've been using for two years is due to expire in a month, reminding me to renew it. After dealing with some things, I went to renew it, only to find out that the renewal fee is 72 yuan per year, which shocked me. It was only a few yuan when I first opened it, and the first year's renewal was only about twenty to thirty yuan. The change was too drastic, and for a small personal site like mine, it's indeed expensive. I checked the current domain prices and found that the price of the .club suffix is indeed uniquely expensive, even more expensive than some .cn suffixes, which is a bit outrageous. So, I decisively chose to switch back to the .top domain I first used, which only costs 25 yuan a year to renew, and with the first year discount, I spent less than 60 yuan for three years.
On the other hand, changing domains also has quite a few costs, and the longer you use it, the higher the sunk cost. Accumulated SEO and RSS subscriptions are difficult to follow the domain switch and convert over, and may need to be accumulated again, and various statistical analyses may need to be discarded. But it still needs to be done, after all, the characteristic of the internet should be open and free, and should not be overly constrained.
The site has now moved to the domain https://scottyeung.top/
Some Notes on SQLAlchemy
Recently, I have been collecting and processing a large amount of data, which usually involves converting XML/text format data into relational, structured data for easy export and direct analysis, especially formats that can be directly analyzed by pandas (csv/json). Therefore, I need to use a mysql processing library in Python. Since I was looking for a processing library, I decided to go all out and choose a library that supports ORM. So, I chose SQLAlchemy. After using it for a while, I decided to write a record to remember the commonly used things during this period.
SQLAlchemy is an open-source software under the Python programming language. It provides an SQL toolkit and Object-Relational Mapping (ORM) tools, mainly to meet the following needs:
- Provide common operations on databases: add, delete, modify, and query
- Provide ORM functionality, which can turn the operating unit into an object, so there is no need to write sql statements for hard coding/decoding parsing data