0%

Notes on Encountering the Unknown Self

What is the “Unknown”?

The “self” refers to the “true self.” From the question “Who am I?” to the concept of “from existence to non-existence,” the entire book is structured around dialogues between Ruoling and a wise elder, revealing many profound life concepts.


Core Concepts

  • There is no one outside—only yourself.
    All external situations are actually projections of your inner world.

  • Golden Moments to Talk with the Subconscious
    The best times to imagine you’ve already achieved your goals are the moments between waking and sleeping—early morning just before fully waking up, or late at night before falling asleep. These times are when we are closest to our subconscious.

  • Key Practices: Awareness, Surrender, Overcoming the Peptide Self (Ego)

    • Awareness: Focus on your present self. Observe your emotions and reactions without judgment.
    • Surrender: Accept reality instead of resisting it.
    • Peptide Self (Ego): Represents inner voices of fear, comparison, and anxiety. Learn to recognize and transcend them.
  • Meditation, Gratitude, Giving

    • During meditation, visualize yourself already living your desired life.
    • Be grateful even before your goals are achieved.
    • Maintain a selfless, giving mindset.
  • Care Less About Others, Care More About Yourself

    • Bring your attention back to yourself and your inner world.
    • When emotions arise, be aware of which part of your body feels uncomfortable and understand its message.

Conclusion

This book is not only about discovering “who you are,” but also about reminding you to “become that true self.” Awakening inner strength requires continuous awareness, practice, and transcending the ego.

What I Talk About When I Talk About Running

It was through this book that I realized there could be another version of myself out there, doing something I love. Before reading this book, I had never read anything by Murakami. I knew he was popular and had many famous books, but I hadn’t really paid attention. But when it comes to running, I felt there could be a connection.

If I keep running, will I eventually reach the moon? Running isn’t about living longer, but about making life feel easier and lighter within the time we have.

I was surprised by Murakami’s imagination while running—so free and boundless. I really enjoy that. I’ve imagined many things too, like suddenly recalling a lyric while running—something like “speeding up to chase happiness,” blabla… Long-distance running requires endurance, but also imagination. Of course, the premise is loving to run. If someone doesn’t like running, no matter how much you say, it won’t matter. But if someone does love it, they’ll even want to meet another version of themselves during a break in the rain. Humans are inherently lonely, but the spirit can resonate with others.

I plan to keep running no matter how the world changes. Once, I walked 30 kilometers in one day. Despite the sunburn, I loved the spiritual fulfillment more. If you haven’t experienced it, you have no voice. Maybe I’m like Chen Kun—a pessimistic optimist. I live actively in this world, but I also see through its illusions. Neither joyful because of things, nor sorrowful because of myself.

My pulse has dropped to just over 50 beats per minute. Seems like I’m built for jogging. After all, it’s about interest. As long as my freedom isn’t restricted, anything is acceptable.

I hope next year I’ll join a marathon, with people cheering me on. That would be so happy.

“I’m not a person, but a pure machine. So I don’t need to feel anything, just keep running forward.”

What’s most similar is that we both love to run non-stop. Not the type who walks when tired or stops to enjoy the scenery. Maybe people have different views, but I think the true king is the one who can keep running without stopping.

When reaching the finish line, I’d feel so cool, a rush of pride, like winning the lottery or getting incredibly lucky. It’s a principle—and also my pride.

Oh, right—just like Brother Shang waiting at the finish line, and I’d smile proudly.

Aunt Tai

Aunt Tai is strong-willed and resilient. Her optimistic attitude is something worth learning from. The greatest thing my father ever did was marrying my mother—a truly great woman. A real woman should face everything with positivity and build the future she desires with her own hands.

Although she resorted to stealing, it was driven by hardship—survival and family. Setting aside pride to do things against her will is, in a way, a form of strength. It’s not about crying and making a scene, but staying proactive in adversity.

Thinking about it, the author’s achievements are inseparable from his great mother.

Ah, that lovely mother! To preserve her husband’s dignity and happiness, she insisted on completing the house. Isn’t that a form of strength too? To follow her heart courageously is truly admirable.

In fact, the person who understands my father the most is my mother. She knows his pride. Isn’t this what love is? You don’t need to say it—I understand. I understand you, and you understand me, and that’s why we’ve been together for so long.

Zhang Meili

Get up from where you fell. Zhang Meili seems like someone who pursued true love and worked hard for what she desired. Though she was eventually forced to liberate herself sexually, I still respect her for everything she once did.

Public opinion is powerful, but Zhang Meili’s inner strength is even more powerful.

The book does contain a lot of his own “biases,” but I find him authentic and humorous. His language is simple and understandable, and each subtitle essentially tells us what we should do.

Understanding Life

Life is never about what you want it to be. It’s good to discover beauty and to view things from others’ perspectives. At the same time, one should have self-awareness.

Understanding Love

Sheldon once said: “The pursuit of another human to spend life with is something I’ve never understood. Maybe I’m too interesting to need company. So I wish you the same joy with each other as I have with myself.”
One can never escape loneliness through another person; only through passion for life. Managing a relationship requires rationality. Freedom is inalienable. I once checked my ex’s phone—I realized it was wrong and won’t do it again.

Understanding Strategy

This section mainly introduces the strategies of courting and how to maintain a good relationship—true wisdom. Never sacrifice your career for family. Don’t live with in-laws (though I think it depends). Have your own hobbies.

Understanding Marriage

Endure and stay loyal. As for non-marriage beliefs, there’s nothing more to say.

Understanding Setbacks

Every breakup is just making way for true love. Don’t force it. I love you, so I wish you well, even if I’m not the one by your side.
Do what you want regardless of others’ opinions. Only care about those who matter to you.

Understanding Reading

What, Why, How. Keep reading. Don’t chase speed, but depth.

Understanding Romance

He shares sweet daily stories with his wife. If you don’t break up, you won’t discover how many better people there are out there. If you find one—lucky. If not—you can still live happily on your own.
Live with emotional intelligence and the world becomes beautiful.

Understanding Socializing

Associate with decent people. Different people require different approaches. Rejecting others is an art. If you don’t have the guts to ask for your money back, don’t lend it.

Understanding Human Nature

I tend to be skeptical about human nature. You can’t control others, so just manage yourself. Don’t be vulgar.

Understanding Good and Evil

Some people enter your life just to teach you a lesson. Good or evil—I prefer believing in others, as trust is given before it’s earned.
Even if deceived, it’s a lesson learned—don’t fall into the same trap again. But don’t stop trusting altogether; kind people still exist.
God made the right hand a right hand as a reward; same for kind people—kindness is its own reward.
I recall being in a restroom without tissue once. I was going to ask a friend, but a stranger overheard and handed me tissues. Such kindness moved me deeply.
Kindness must come with principles—otherwise it may hurt others or yourself.

Understanding Wealth

The poor stay poor because of narrow thinking. To get rich, don’t just invest in your body—think bigger. See the essence of problems.
Time is limited—how to get rich fast? Find a subject you love, apply it, think broadly, and work in fields closely tied to society.

Understanding Society

Have ambition. Take one step at a time. Build an independent personality. Be accountable for your actions. Learn to transform your ability to feel happiness—then change yourself.

Understanding Life and Death

Death studies include concepts like: No death, no life; face death to live; understand death to be reborn. Interesting and thought-provoking.
Knowing that we will die is what pushes us to live fully. When the time comes, I think I’ll embrace death.

What the world lacks isn’t perfect people, but justice, sincerity, courage, and compassion from the heart. — My biggest takeaway after watching Forever Young today.
We all know cause and effect—but causes and effects come from relationships. Someday, I’ll read Schopenhauer and Nietzsche properly.

Understanding Travel

This part recounts Mr. Zhuomo’s experiences in Tibet. Many dream of going there—maybe because it helps people truly understand life’s struggles.
The US is less disciplined than the UK. Japan has great food culture and says “sorry” a lot—avoiding bothering others.

Understanding Career

First learn to endure hardship. Then understand yourself and your talents. Begin with the end in mind and stay focused.

Understanding Education

Every child is born pure. Without proper education, they won’t become pillars of the nation.

Understanding Entertainment & Freedom

Life has two paths: one for career ambition—keep passion; the other for living warmly—keep humanity.
Open your eyes each day and tell yourself: Oh yeah!

Differences between var, let, and const?

✅ Scope

  1. Variables declared with var do not have block scope. They can be accessed outside blocks but not outside functions.
  2. Variables declared with let have block scope, accessible only within the declared block.
  3. const defines constants, must be initialized, accessible only in the declared block, and cannot be reassigned.

✅ Declaration Rules

  • A variable name can only be declared once using one of these methods; otherwise, it throws an error.

✅ Difference when using with this

Feature var / let / const
Can change this context ✅ Yes
First parameter is the object this refers to ✅ Yes
No object or undefined/null Defaults to global window
Parameter passing apply uses array, call uses parameter list, bind supports multiple arguments
Execution method apply/call execute immediately, bind returns a new function
What is event delegation?
  • Event delegation attaches events to a parent or ancestor element instead of individual child elements.
  • When the event reaches the target element, it bubbles up and triggers the handler on the outer element.
Difference between debounce and throttle?
  • Debounce: Executes only the last trigger. Even if the event keeps firing, it waits until n seconds after the last event to execute.
  • Throttle: Controls the execution frequency. Fires every n seconds during continuous event triggers.
How does frontend prevent SQL injection?
  1. Parameterized Queries: Use prepared statements or parameterized queries.
  2. Input Validation: Ensure user input follows expected format.
  3. Escape Special Characters: Escape characters when constructing SQL queries.
  4. Limit Permissions: Restrict user privileges to prevent unsafe operations.
  5. Whitelist Validation: Only allow expected values in input.
  6. Code Review: Regularly review code, especially DB-related parts.
Difference between HTTP and HTTPS
  1. HTTPS requires a certificate from a CA, which may cost money.
  2. HTTP transmits data in plaintext, while HTTPS uses SSL encryption.
  3. They use different connection methods and ports: HTTP uses 80, HTTPS uses 443.
  4. HTTP is stateless; HTTPS combines SSL + HTTP for encrypted, authenticated, secure communication.
Difference between created and mounted?
  • created runs before mounted. DOM is not fully rendered, but API requests can be made early here.
  • mounted is triggered when the DOM has been rendered, so it’s suitable for manipulating DOM elements.
Explain the event loop mechanism

🔁 What is the Event Loop?

JavaScript is single-threaded. In addition to the call stack, it relies on task queues to control asynchronous code execution order.

This whole process is called the Event Loop.

🧠 Core Concepts

  • Only one event loop in a single thread.
  • Multiple task queues:
    • Macro Tasks
    • Micro Tasks

⏱ Execution Order

Macro Task ➝ Clear all Micro Tasks ➝ Next Macro Task ➝ Clear all Micro Tasks…

  1. Execute a macro task (like the whole script)
  2. Execute all micro tasks created during this macro task
  3. If micro tasks generate more micro tasks, execute them too
  4. Begin the next macro task loop

🧩 Examples of Macro Tasks

  • script
  • setTimeout
  • setInterval
  • setImmediate (Node.js)
  • I/O operations
  • UI rendering

🧬 Examples of Micro Tasks

  • process.nextTick (Node.js, higher priority)
  • Promise.then / catch / finally
  • async / await
  • MutationObserver
Explain the CSS box model

The CSS box model includes IE and standard W3C models.

  • In standard W3C box model, width only includes content. box-sizing: content-box (default).
  • In IE box model, width includes content + padding + border. box-sizing: border-box.
  • box-sizing: padding-box includes left/right padding + width.
Differences between Vue 2 and Vue 3
  1. Two-way binding:
    • Vue 2: uses Object.defineProperty() (ES5), which only watches individual properties.
    • Vue 3: uses Proxy (ES6), which can observe entire objects and arrays.
  2. Lifecycle hooks:
    • Vue 2: beforeCreate, created, beforeMount, mounted, etc.
    • Vue 3: setup, onBeforeMount, onMounted, etc.
  3. Vue 2 requires a root tag; Vue 3 allows multiple root tags via Fragment.
  4. API:
    • Vue 2: Options API (functions and data handled separately).
    • Vue 3: Composition API (related code grouped together).
  5. Slots:
    • Named slot: Vue 2 uses slot="", Vue 3 uses v-slot="".
    • Scoped slot: Vue 2 uses slot-scope="data", Vue 3 uses #data or #default="{data}".

Installing ELK Stack (ElasticSearch, Logstash, Kibana) with Docker

It is recommended to install on Docker due to lower resource consumption. The installation version used below is 8.12.2. Please use the same version to avoid conflicts.

Table of Contents

1. Install ElasticSearch
2. Install Logstash
3. Install Kibana
Recommendations


1. Install ElasticSearch

  • Pull the image:
1
2
3
4
5
6
7
docker pull elasticsearch:8.12.2
````

* Start the container:

```bash
docker run --name some-elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:8.12.2
  • Enter the container:
1
sudo docker exec -u 0 -it some-elasticsearch bash
  • Restart the container:
1
docker restart some-elasticsearch

2. Install Logstash

  • Pull the image:
1
docker pull docker.elastic.co/logstash/logstash:8.12.2
  • Start the container:
1
sudo docker run -it -p 5044:5044 -p 9600:9600 --name logstash -v /usr/share/logstash/piplines:/usr/share/logstash/config --privileged=true docker.elastic.co/logstash/logstash:8.12.2 /bin/bash
  • Use scp to upload the MySQL Connector JAR file to the virtual machine:
1
scp "/Users/Downloads/logstash-8.12.2/mysql-connector-j-8.4.0.jar" username@VM-IP:/home
  • Move the JAR file from the VM to the Logstash container:
1
docker cp ./mysql-connector-j-8.4.0.jar logstash:/usr/share/logstash
  • Enter the container:
1
docker exec -u 0 -it logstash bash

3. Install Kibana

  • Pull the image:
1
docker pull kibana:8.12.2
  • Start the container:
1
docker run --name some-kibana -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:8.12.2
  • Enter the container:
1
docker exec -u 0 -it some-kibana bash

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt update
sudo apt install docker.io docker-compose
docker -v
sudo systemctl start docker

sudo docker search portainer
docker pull portainer/portainer
sudo docker pull portainer/portainer
sudo docker run -d --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

sudo docker start portainerUI
sudo passwd root

GitLab CI/CD Guide for Frontend Projects (Mac Environment)

Overview

In daily development, we often manually send the built dist package to the backend for deployment, which is inefficient and error-prone. CI (Continuous Integration) automates this process. This guide shows how to use GitLab CI to implement continuous integration and deployment.


1. Install GitLab Runner

Refer to the official documentation: GitLab Runner Installation Guide


2. Register Runner Locally

  1. Open your GitLab project page and go to Settings → CI/CD, expand the Runners section.
  2. Note the displayed URL and token for registration.

Run the registration command

1
gitlab-runner register

Follow the prompts and enter the following information:

  • GitLab CI Coordinator URL: https://gitlab.com
  • GitLab CI Token: xxx (copy from the project)
  • Tags: my-tag,another-tag (custom tags)
  • Description: my-runner (custom description)
  • Executor: shell (recommended on Mac)

After registration, return to the GitLab CI/CD settings page. If the runner status is green, it’s running successfully. If not, start the runner manually:

1
gitlab-runner run

3. Create and Commit .gitlab-ci.yml

Save the following content as .gitlab-ci.yml and push it to GitLab:

1
2
3
4
5
6
7
8
9
10
11
stages:
- deploy

deploy_to_test:
stage: deploy
script:
- yarn
- rm -rf dist/
- yarn build
- ls -l -t ./dist/
- rsync -avz ./dist/ root@xxx.xx.xx.xxx:/dist
  • This CI script builds the project and uses rsync to deploy the dist folder to a remote server.

4. CI with Docker (Optional)

If you want a more comprehensive CI/CD pipeline using Docker, follow these steps:

1. Install Docker (Mac)

1
brew install --cask docker

2. Pull GitLab Image

1
docker pull drud/gitlab-ce:v0.29.1

3. Create GitLab Container

1
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab drud/gitlab-ce:v0.29.1

Explanation:

  • -p 8443:443: map HTTPS port
  • -p 8090:80: map HTTP port
  • -p 8022:22: map SSH port
  • --restart always: auto-restart on crash or reboot
  • --name gitlab: container named gitlab

Visit:

1
http://localhost:8090/

5. .gitlab-ci.yml Example for Docker Mode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
variables:
TEST_NAME: "tips"
OUT_PORT: "8081"
IN_PORT: "8081"

stages:
- deploy

deploy_to_test:
stage: deploy
before_script:
- if [ $(docker ps -aq --filter name=$CI_PROJECT_NAME) ]; then docker rm -f $CI_PROJECT_NAME; fi
script:
- docker build -f Dockerfile -t $TEST_NAME:latest .
- docker run -d -p $OUT_PORT:$IN_PORT --name $TEST_NAME $TEST_NAME:latest

After successful deployment, you can view the build process on the GitLab CI/CD Pipelines page. A new container will be generated under the Containers section. Click the corresponding port to access the deployed page.


This is an English post.