搜尋此網誌

2026年7月22日星期三

Bellflower Motif

建築上的「風鈴草」是指源自西方古典與傳統建築裝飾中的風鈴草紋飾(Bellflower Motif),常見於柱頭、角柱或外牆線條中。 

風鈴草紋飾的建築特徵

外形設計:模仿桔梗科風鈴草屬植物的鐘形花朵或成串果莢,呈現風格化、垂直下垂的花彩狀造型。

應用部位:多見於新古典主義或戰前唐樓建築的騎樓角柱、柱頭飾線、露台支柱上方或牆面灰塑雕飾。

歷史實例:如香港深水埗醫局街170號(建於1913年)戰前騎樓的角柱上,便飾有極為迷你的風鈴草立體紋飾。 

Google AI overview

Chapter Quiz

wait_until = datetime.now().second + 2

while datetime.now().second != wait_until:

    print('Still waiting!')

print(f'We are at {wait_until} seconds!')


  • datetime.now().second gives you the current second (0–59) of the system clock.

  • You add 2 to it, so if the current second is 15, then wait_until becomes 17.

  • This means you want to wait until the clock reaches 17 seconds.


while datetime.now().second != wait_until: print('Still waiting!')

  • This is a loop that keeps checking the current second.

  • As long as the current second is not equal to wait_until, it prints "Still waiting!".

  • Example: If the current second is 15, and wait_until is 17, it will keep printing "Still waiting!" until the clock reaches 17 seconds.

Problem here: If wait_until goes beyond 59 (e.g., current second = 58 → wait_until = 60), the value 60 doesn’t exist in the clock (seconds only go 0–59). That means the loop will never end.


print(f'We are at {wait_until} seconds!')

Once the loop ends (meaning the current second equals wait_until), this line runs.

It prints a message like:

We are at 17 seconds!

Example Run:

Suppose the current second is 15:

  1. wait_until = 15 + 2 = 17

  2. While the clock is at 15 or 16, it prints "Still waiting!".

  3. When the clock hits 17, the loop ends.

  4. It prints "We are at 17 seconds!".


Your code works fine if wait_until stays within 0–59. But if the current second is 59, then wait_until = 61, which will never happen. To fix this, you should use modulo (% 60) to wrap around:

wait_until = (datetime.now().second + 2) % 60

That way, if the current second is 59, wait_until becomes 1 (the next minute’s first second), and the loop will still work.

['Monty Python' if n % 6 == 0 
 else 'Python' if n % 3 == 0 
 else 'Monty' if n % 2 == 0 
 else n 
 for n in range(1, 10)]

Step 1: Understanding the structure

  • This is a list comprehension that loops n from 1 to 9 (range(1, 10)).

  • For each n, it checks conditions in order:

    1. If divisible by 6 → 'Monty Python'

    2. Else if divisible by 3 → 'Python'

    3. Else if divisible by 2 → 'Monty'

    4. Else → just the number n


Step 2: Condition priority

The conditions are evaluated top to bottom:

  • % 6 == 0 has highest priority.

  • If that fails, % 3 == 0 is checked.

  • If that fails, % 2 == 0 is checked.

  • If all fail, return the number itself.


Step 4: Final output

So the list becomes:

[1, 'Monty', 'Python', 'Monty', 5, 'Monty Python', 7, 'Monty', 'Python']


In Python, break is used inside loops to immediately exit the loop, no matter what the loop condition is. Let’s go step by step:

How break works

  • Normally, a while or for loop keeps running until its condition becomes false.

  • If you use break, the loop stops right away—even if the condition is still true.

  • After breaking, the program continues with the code that comes after the loop.


Example with while

n = 1
while n < 10:
    print(n)
    if n == 5:
        break   # exit loop when n == 5
    n += 1

print("Loop ended")

Output:

1
2
3
4
5
Loop ended

range(1, 9) in Python creates a sequence of integers starting at 1 and stopping before 9.


Microsoft Copilot

嘗試了解腦部

amalgamation: the process of joining two or more organizations together to form one large organization; the large organization formed by this process

neocortex: a part of the cerebral cortex concerned with sight and hearing in mammals, regarded as the most recently evolved part of the cortex.

ponder: to think about something carefully for a period of time

Metacognition is an awareness of one's thought processes and an understanding of the patterns behind them. It is considered one of humans' most sophisticated cognitive capacities.

Autonoetic consciousness is the special human capacity for mental time travel, allowing people to consciously re-experience their past, project themselves into the future, and reflect on their own self-awareness.

自我時間意識(autonoetic consciousness)是能把自己在心理上置於過去或未來情境、並以第一人稱反思經驗的能力;它與情節記憶和「心理時間旅行」密切相關。

關鍵特徵

  • 第一人稱自覺:不只是記得事實,還能感受到自己當時的經驗。
  • 情節記憶關聯:主要依賴情節記憶(episodic memory),用以重建個人經驗。
  • 心理時間旅行:包含回溯過去與預演未來的能力(mental time travel)。

interplay: the way in which two or more things or people affect each other

exclusive: only to be used by one particular person or group; only given to one particular person or group

vicinity: ​the area around a particular place

Nicole Vignola "Rewire"

hk.dictionary.search.yahoo.com

oxfordlearnersdictionaries.com

Google AI overview

Explanation by Microsoft Copilot

2026年7月21日星期二

二手定焦鏡


Canon EF 35mm f/2 IS USM is a compact full-frame EF prime lens with f/2 maximum aperture, 4-stop image stabilization, and ring-type ultrasonic autofocus.

  • Minimum focus distance: 0.24 m
  • Filter size: 67 mm
  • Weight: 335 g

On APS-C bodies, the field of view is roughly like a 56mm lens, so it behaves more like a normal prime.

搭配 Canon EOS 1500D,這是非常實用的日常街拍與低光人像鏡頭組合。

等效焦距 50mm 的特點可以說是攝影界的「萬用標準鏡」,它的視角接近人眼自然視角。

若要形容 50mm 鏡頭的魅力,那就是「接近眼睛所看到的遠近感」。由於被攝體與背景的距離不會被強調出來,因此很接近眼睛所看到的情形。若在1-3米的距離拍攝,畫面會很自然。此外,若在1米以內的距離拍攝的話,會拍出有如望遠鏡頭的效果;若遠離被攝體拍攝的話,會拍出有如廣角鏡頭般的效果,是一款魔法鏡頭。

上田晃司《全圖解 馬上提昇功力的57個攝影妙方:一目了然的專業級表現手法!》


Hyperfocal Distance Setup (Canon EOS 1500D, APS-C):

Manual focus + aperture selection → Align infinity mark with aperture mark on the depth-of-field scale.

Resulting zone → From the nearest marked distance to infinity remains acceptably sharp.

APS-C factor → Hyperfocal distance uses APS-C circle-of-confusion, not full-frame.

Canon guidance → Lens distance scale is the simplest way to set hyperfocal distance; manual focus ensures accuracy.

Accuracy check → The scale is approximate; confirm with test shots and magnified review.

Practical tip → For landscapes, f/8 or f/11 is easier to manage than wide apertures with shallow depth of field.

ApertureHyperfocal distanceApprox. focus range
f/415 m7.5 m to infinity
f/5.611 m5.5 m to infinity
f/87.7 m3.9 m to infinity
f/115.6 m2.8 m to infinity


超焦距指相機對焦於那個距離時,能把可接受的清晰範圍最大化,使其由該距離的一半延伸至無限遠。它常被應用於風景拍攝,因多數風景照都需要較闊的清晰範圍。利用超焦距的物理特性, 攝影師便可獲得最大的景深。

www.imagejoy.com/article/675


Hyperfocal Distance via Lens Scales:

Focus index → Fixed central line; distance and aperture markings move against it.

Distance + DOF scales → Lens window shows distance scale; DOF scale has aperture marks (e.g., f/11, f/22).

Infinity alignment → Align infinity mark with one side of the DOF scale; the opposite mark shows the near limit of sharp focus.

Example setup → At f/11, aligning infinity with the f/11 mark lets the focus index show the near distance, creating a hyperfocal zone (near distance → infinity).

Special note → The red dot is for infrared focusing, not for normal hyperfocal distance use.


The reason you see two f/11 marks and two f/22 marks on the depth‑of‑field (DOF) scale is because they represent both sides of the focus zone:
  • Focus index (center line) → This is the actual point of focus.
  • Two aperture marks (e.g., f/11, f/22) → One mark sits to the left of the focus index, the other to the right.
    • The left mark shows the near limit of acceptable sharpness.
    • The right mark shows the far limit (often infinity).

Example: f/11 setup

  • Align infinity with the right f/11 mark.
  • The left f/11 mark then points to the nearest distance that will still be sharp.
  • Result → Everything between that near distance and infinity is within the DOF zone (your hyperfocal setup).

Why two marks?

Because depth of field extends in both directions from the focus point — closer and farther. The paired marks let you read both boundaries at once.

Think of it like a ruler: the aperture marks are the “edges” of the sharp zone, and the focus index is the “center.”


www.perplexity.ai
Microsoft Copilot

Brain and emotions

attuned: familiar with somebody/something so that you can understand or recognize them or it and act in an appropriate way

undermine: to make something, especially somebody’s confidence or authority, gradually weaker or less effective

Endorphins are natural, opioid-like chemicals produced by the central nervous system and pituitary gland. Acting as the body’s natural painkillers, they block pain signals and trigger feelings of pleasure, well-being, and relaxation.

as though: ​in a way that suggests something
It sounds as though you had a good time.

wreck: a person who is in a bad physical or mental condition

Emotions are a vital part of decision-making and there are very few decisions we make in life that are not accompanied by some form of emotion.

情緒是決策的重要成分,會影響我們對資訊的重視、風險與回報的評估,以及行動的動機。大多數人生決定(例如工作選擇、感情關係、消費行為)都伴隨某種情緒,即使只是微弱的喜好或不安。情緒能提供快速的直覺與價值判斷,但也可能造成偏誤,因此理性與情感應互相補充。

overwhelm: IPA[ˌəʊvəˈwelm]

dreadful: very bad or unpleasant

sarcasm: a way of using words that are the opposite of what you mean in order to be unpleasant to somebody or to make fun of them

Emotions can influence how we retrieve memories, leading to biases in how we recall information, which can skew our perception of events.

情緒會影響我們從腦中取出過去經驗的方式,讓某些細節更容易被想起或被遺忘。這種情緒導向的記憶偏誤會扭曲我們對事件的整體感受與判斷。

skew: to change or influence something with the result that it is not accurate, fair, normal, etc.

fiasco: disaster

chuckle: an act of laughing quietly

Nicole Vignola "Rewire"

hk.dictionary.search.yahoo.com

oxfordlearnersdictionaries.com

Google AI overview

Explanation by Microsoft Copilot

2026年7月13日星期一

Hobbies

By engaging in hobbies, we immense ourselves in something else so that our mind doesn't think about these stresses and it has a chance to regulate in that time of distraction.

subside: to become calmer, quieter or less intense

pastime: ​something that you enjoy doing when you are not working

embark on: to start to do something new or difficult

profound: very great; felt or experienced very strongly

Hobbies make us feel good after we've engaged in them because they stimulate various regions of the brain that challenge us, and this causes a rise in BDNF. BDNF is released through activities like exercise, learning and creative pursuits associated with hobbies.

從事嗜好能把注意力投入其他事物,暫時不去想壓力來源,讓大腦有時間在這段分心期間調節。嗜好讓人感覺良好,因為它們刺激大腦不同區域並帶來挑戰,進而促使腦源性神經營養因子 BDNF 上升。像運動、學習和創作等活動都會促進 BDNF 釋放,對神經健康與學習能力有幫助。

Explained by Microsoft Copilot

Brain-derived neurotrophic factor (BDNF) is a vital neuropeptide that promotes the survival, growth, and maintenance of neurons. Acting primarily in the brain and spinal cord, it is essential for synaptic plasticity—the brain's ability to adapt, learn, and form long-term memories.

pursuit: the act of looking for or trying to get something

dampen: to make something such as a feeling or a reaction less strong

Allostatic load is the cumulative "wear and tear" on the body and brain caused by prolonged, chronic exposure to stress. Over time, this constant activation of stress hormones (like cortisol and adrenaline) alters the body's natural balance, significantly increasing the risk of cardiovascular disease, diabetes, and mood disorders.

Nicole Vignola "Rewire"

hk.dictionary.search.yahoo.com

oxfordlearnersdictionaries.com

dictionary.cambridge.org

Google AI overview

2026年7月8日星期三

Exercise of Python Learning

「除數」(divisor)是在除法算式中,用來「除」另一個數字(被除數)的數字。以 12 ÷ 4 = 3 為例,被除數是 12,除數是 4,商是 3。若指整數的整除關係,除數在中文也常被稱為「因數」(factor)。

def allPrimesUpTo(num):

    primes = [2]

    for number in range(3, num):

        sqrtNum = number**0.5

        for factor in primes:

            if number % factor == 0:

                break

            if factor > sqrtNum:

                primes.append(number)

                break

    return primes

print(allPrimesUpTo(20))


Function definition
Creates a function that will return all prime numbers less than num.

Initialize list of primes
Starts with [2] because 2 is the first prime number.
This list will grow as new primes are found.

Loop through candidate numbers
Tests every integer from 3 up to num - 1.

Compute square root
Finds the square root of the candidate number.

Check divisibility against known primes
for factor in primes:
Loops through all primes found so far.
This is efficient: instead of checking every integer, you only check prime factors.

Case 1: divisible by a prime
if number % factor == 0:
    break
If number is divisible by any prime factor, it’s not prime.
break exits the loop immediately.

Case 2: factor exceeds square root
if factor > sqrtNum:
    primes.append(number)
    break
If you’ve checked all prime factors up to the square root and none divided evenly, then number must be prime.
Append it to the list of primes.
break stops checking further factors (no need).

Example trace (num = 20)

  • Start: primes = [2]

  • number = 3 → factors checked: 2 (not divisible, 2 > √3) → add 3 → [2, 3]

  • number = 4 → divisible by 2 → skip

  • number = 5 → factors: 2 (not divisible), 3 (3 > √5) → add 5 → [2, 3, 5]

  • number = 6 → divisible by 2 → skip

  • number = 7 → factors: 2 (not divisible), 3 (3 > √7) → add 7 → [2, 3, 5, 7]

  • number = 8 → divisible by 2 → skip

  • number = 9 → divisible by 3 → skip

  • number = 11 → factors: 2 (not divisible), 3 (not divisible), 5 (5 > √11) → add 11 → [2, 3, 5, 7, 11]

  • … continues until 19.

Microsoft Copilot