Skip to main content

淡淡的清香

昨晚很特别,忙碌了一天,忙完了孩子们,哥哥陪我,过了一个温馨的夜晚。

原本打算去Orange的,临时起意,何必舍近求远呢?于是很随性的驾车出来,来到离家不远的海边小镇。和喜欢的人在一起,哪里都是最好的。一路上没有喧闹,夜色掩映下是南加州典型的民居场景,大家都在安安静静的享受周末,万家灯火因为散在各处,没有城市的喧嚣浮躁感,只有宁静和安逸。 偶尔侧脸看那张坚毅的面孔,心里很是甜蜜蜜的,平时为了孩子为了工作,尽心尽责地忙碌的他,在特别的日子里花时间陪我出来,我的心里别提有多温暖。
“这家小镇上有一座早期的Mission Church。一会儿指给你看。”  熟悉的磁性嗓音从旁边飘过来。很快我们就来到了小镇中心,如同其他的美国小镇一样,镇中心也不是很大,夜色下,可以看到7,8家餐馆还多少显出热闹的气氛,街上三三俩俩走着的人们,很多看得出来都是情侣,竟然有年轻的小姑娘很彪悍的穿着露膝裸肩的白色小裙子,替她冷了一下子,也许平常周末的夜晚就是这样吧,也或许是因为今晚是那个特别的日子。“就是那里!”顺着哥哥的手指,三岔路口那里座南朝北,是一套朴实的西班牙早期移民风格的建筑,正面印着Mission San Juan Capistrano 。夜色下可以看到这个教堂仿佛是中国的四合院,四平八稳的安座在城镇的一隅,脑海里浮现出当年移民们驾着大车,骑在马背上游牧的画面,哪天白天来一定好好的看看。

很快停好车,漫步在小镇的街头,早春的夜晚还是很凉的,哥哥牵着我来到一家很有特色的Starbucks,宽敞高挑的大厅里仿佛火车站的装饰,可以想象如果在早晨上班的时间,这里会是怎样的忙碌,也许会有很多去洛杉矶或是圣迪亚哥上班的人在这里买上热乎乎的咖啡,再跳上火车开始忙碌的一天吧。 很快我们两个手里拿上了哥哥点的热腾腾的拿铁,身上暖和起来,来吧,四处转转。

“视察了”一家看来很是热闹的电影院,跑到露天阳台上看到火车站不远有家餐厅看着炉火熊熊的好像很暖和热闹。跑过去一看,仿佛感觉有点儿像拍电影布景一样的,太多故弄玄虚的两两两两情侣造势。我知道哥哥他喜欢自在安静的地方,于是我们来到不远处的一家叫Rancho Capistrano Winery的地方,庭院里温暖的火炉旁,一位吉他手轻轻地吟唱。我们就在不远的地方坐下来,安安静静的地陪伴着彼此,在音乐声中享受着这份美好的时光。

Comments

Popular posts from this blog

fs.writeFile - permission issue on GCP (Google Cloud Run)

error on this: fs . writeFile ( fileName , pdfBytes , err => { if ( err ) { console . log ( err . message ) reject ( err . message ) } else resolve ( fileName ) }) #1 It looks like when deployed into Cloud Run it also requires the extra permission "Service Account Token Creator" to run  getSignedUrl . Locally for some reason this role is not required. #2 Only the directory  /tmp  is writable in Cloud Run. So, change the default write location to write into this directory. However, you have to be aware of 2 things: Cloud Run is stateless, that means when a new instance is created, the container start from scratch, with an empty  /tmp  directory /tmp  directory is an in-memory file system. The maximum allowed memory on Cloud Run is 2Gb, your app memory footprint included. In addition of your file and Airflow, not sure that you will have a lot of space. A final remark. Cloud Run is active only when it...

for loop in javascript - promise - .eslintrc for "for of"

the vast majority of cases  map ,  forEach ,  find  etc. can be used.  async function printFiles () { const files = await getFilePaths(); await Promise.all(files. map (async (file) => { const contents = await fs.readFile(file, 'utf8') console.log(contents) })); } const inventory = [ { name : 'apples' , quantity : 2 } , { name : 'bananas' , quantity : 0 } , { name : 'cherries' , quantity : 5 } ] ; const result = inventory . find ( ( { name } ) => name === 'cherries' ) ;   function getFirstMatching(array) { for (let item of array) { const result = heavyTransform(item); if (result) { return result; } } } Specifically this shuts down the whole no-restricted-syntax. If you want to cherry-pick, here is the current definition: 'no-restricted-syntax' : [ 'error' , { selector : 'ForInStatement' , message...

renew token on graphQL error - apollo client with Firebase authentication

const errorLink = onError( ( { graphQLErrors, networkError, operation, forward } ) => {  https://able.bio/AnasT/apollo-graphql-async-access-token-refresh--470t1c8 apollo client with Firebase authentication https://dgraph.io/docs/graphql/todo-app-tutorial/todo-firebase-jwt/ Concurrent Requests https://able.bio/AnasT/apollo-graphql-async-access-token-refresh--470t1c8 const errorLink = onError( ( { graphQLErrors, networkError, operation, forward } ) => { if (graphQLErrors) { for ( let err of graphQLErrors) { switch (err.extensions.code) { case 'UNAUTHENTICATED' : // error code is set to UNAUTHENTICATED // when AuthenticationError thrown in resolver let forward$; if (!isRefreshing) { isRefreshing = true ; forward$ = fromPromise( getNewToken() .then( ( { accessToken, refreshToken } ) => { // Store t...