Howto: Add HappyNotes web to your phone's home screen

Ever wanted to use HappyNotes but thought it seemed complicated? This guide helps you add this webapp to your phone's home screen in just a few seconds, making it feel just like a native app!

Why Webapps Are Actually Amazing

Before we dive into installation, let me share why webapps like HappyNotes are fantastic:

  • Always use the latest version automatically
  • Zero download size (no massive app store downloads!)
  • Work across all devices

For iPhone Users 📱

  1. Open HappyNotes in Safari
  2. Tap the share button (square with an arrow pointing up)
  3. Scroll and select "Add to Home Screen"
  4. Name it as you like (e.g., "HappyNotes")
  5. Tap "Add" - done!

For Android Users 🤖

  1. Open Chrome and navigate to HappyNotes
  2. Tap the menu (three dots) or look for a "+" icon
  3. Choose "Add to Home Screen"
  4. Name your shortcut
  5. Tap "Add" - you're all set!

Pro tip: The icon will look just like a regular app icon. Your friends won't even know the difference! 😉

Now you can tap HappyNotes directly from your home screen, just like any other app. Enjoy seamless, always-updated note-taking wherever you go!

Navigating Oracle Foreign Key Constraint Deletion: A Developer's Comprehensive Guide

Understanding the "Child Record Found" Dilemma

As an Oracle database developer, you've likely encountered the frustrating ORA-02292: integrity constraint violated - child record found error. This message appears when you attempt to delete a record from a parent table that is still referenced by child records in another table.

What Causes This Error?

Referential integrity constraints prevent you from deleting records that are crucial to maintaining data relationships. While these constraints protect your data's consistency, they can also complicate deletion processes.

Systematic Troubleshooting Approach

Step 1: Identify the Constraint

When you encounter the error, note the specific constraint name. In our example:

ERROR at line 1:
ORA-02292: integrity constraint (ACME_CORP.FK_TRANSACTION_ACCOUNT) violated

Step 2: Locate Referencing Constraints

Use the following comprehensive query to find details about the problematic constraint:

SELECT a.table_name, 
       a.constraint_name, 
       a.r_constraint_name,
       b.column_name
FROM all_constraints a
JOIN all_cons_columns b ON a.constraint_name = b.constraint_name
WHERE a.r_constraint_name = 'FK_TRANSACTION_ACCOUNT';

Step 3: Investigate Child Records

Once you've identified the referencing table, query the specific records:

SELECT b.*
FROM HR.EMPLOYEE_BANK_ACCOUNTS a
JOIN ACME_CORP.FINANCIAL_TRANSACTIONS b 
ON b.employee_bank_account_id = a.account_id
WHERE a.account_id IN (
    -- Your deletion criteria here
);

Resolution Strategies

Option 1: Cascade Delete

If appropriate for your data model, use ON DELETE CASCADE:

ALTER TABLE ACME_CORP.FINANCIAL_TRANSACTIONS 
DROP CONSTRAINT FK_TRANSACTION_ACCOUNT;

ALTER TABLE ACME_CORP.FINANCIAL_TRANSACTIONS 
ADD CONSTRAINT FK_TRANSACTION_ACCOUNT 
FOREIGN KEY (employee_bank_account_id)
REFERENCES HR.EMPLOYEE_BANK_ACCOUNTS(account_id)
ON DELETE CASCADE;

Option 2: Selective Deletion

Manually delete or update child records before removing parent records:

-- First, delete or update child records
DELETE FROM ACME_CORP.FINANCIAL_TRANSACTIONS 
WHERE employee_bank_account_id IN (
    SELECT account_id 
    FROM HR.EMPLOYEE_BANK_ACCOUNTS 
    WHERE deletion_condition
);

-- Then delete parent records
DELETE FROM HR.EMPLOYEE_BANK_ACCOUNTS 
WHERE deletion_condition;

Best Practices

  1. Always use transactions to ensure data consistency

  2. Understand your data relationships before modifying constraints

  3. Test deletion scripts in a staging environment

  4. Consider soft delete strategies for complex data models

笔记的本质是什么?

在开发HappyNotes的过程中,我一直在琢磨笔记的本质是什么?或者说,人为什么要记笔记?就我而言,我写笔记的动机有以下几个:

  1. 记录生活中或许有一点点意义的小事
  2. 记录读过的书看过的电影/视频
  3. 记录我觉得以后会用到的知识片段,包括书摘和网摘
  4. 记录一些让自己发笑的片段
  5. 记录自己突然想到的idea/todo
  6. 有机会回顾过往

当初做 Lava 微博的时候,我记得曾用过一句slogan:"没有记录就没有发生。" 某种程度上,你的笔记是你曾经在这个世界上活过的证据。不仅如此,善用笔记能够很方便检索和重新取回你需要的知识片段,只要你之前有记下来。

人们总是高估自己的记忆力,而笔记正是能够辅助你获得无限量长期记忆的最好工具之一。

我非常能够理解市面上各种笔记app的繁荣,这是也是我下决心开发HappyNotes的原因。我希望打造一款至少自己用起来称手的笔记软件。

网友语录 - 第16期 - 当我们变矮的时候,才发现我们长大了

这里记录我的一周分享,通常在周六发布。


米饭 在不熟悉的场景中。自己和他人不一致时,我会先假设他人对,反思自己是不是搞错了。这个思维方式的好处是经常反思。坏处是消耗精力,反应慢,容易受骗。相反的思维方式认为自己总是对的,除非他人证明自己是错的。举证工作交给他人,不内耗,反应快,不容易受骗。缺点是容易固执己见。


如月中天 #非暴力沟通 在我们的语言中,有一个词极易引起羞愧和内疚。我们经常使用它来打击自己。它在我们的意识中是如此根深蒂固,以致许多人无法想象,没有它生活将如何继续。这个词就是“应该”,也就是“我应该早点知道”或“我不应该做那件事情”中的“应该”。如果我们认为自己“应该”怎么样,在大多数的情况下,我们也就封闭了自我。因为“应该”意味着我们别无选择。这使我们感到无奈和沮丧。同时,又心有不甘,不愿屈服。

除了“应该”这个词,我们还用别的方式教训自己,例如:“我真受不了自己现在这个样子。我必须改改了。”想一想那些强迫自己的人。他们中有的人说:“我真的应该戒烟了。”另一些人说:“我必须加强锻炼。”他们不断地说他们“必须”做什么,与此同时,又不停地找借口不那么做,因为没有人想成为奴隶。当然,我们也不是命中注定要去服从“应该”或“不得不”的指挥,不论它们是来自外部,还是来自我们自身。一旦顺从了这些命令,生活也就会失去乐趣。


完颜兀术 一个发现:如果面试时跟你大谈,我们的团队是一个大家庭,我们的公司人都很好很nice,我们的公司真的是一个不一样的团队,HR跟你说自己有多爱这公司……赶紧跑,头也别回。 如果面试时跟你聊专业,聊工作process,甚至跟你探讨某些具体的case,跟你一起评价软件的优缺点。这种可以考虑。


“你为什么不要俄罗斯?俄罗斯承诺了那么多好处。”

乔治摇摇头,讲了一个乌克兰笑话。一条狗从乌克兰海关跑向俄罗斯。海关人员问:“为什么要走?”狗说:“乌克兰不好,我要去俄罗斯!”没多久,狗又跑回来。海关人员好奇地问:“怎么又回来啦?”狗气喘吁吁惊慌道:“俄罗斯的生活同样可怕,而在乌克兰,我至少还可以叫!”


遥 我觉得最有趣的事情(不分顺序):鉴赏、学习和创造。


和庄士敦接触多了,我便逐渐感到他是一个性情非常孤僻的人。他住着一所有30 多个房间的大宅院,但除了一个管事的和看门的,就再也没有别人了。他曾对我说:“我是一个独身主义者。按照我们欧洲人的习惯,结婚以后,就得殷動地伺候妻子,一切行动都要受她的约束,实在麻烦。我现在有了这些书籍,它们就是我的妻子,能和我作无声地谈话,我也不必伺候它。”他所收藏的古今中外的书籍号称万卷。在他住的那五间大厅里,摆的全是由地板到頂棚的大书架。我看没有万卷,也有五六千卷。无论我什么时候到他那里,总是看见他坐在那张特制的书桌旁读书。


涨潮 “焦虑本身不是一个问题,而是一个信号,是提醒你,你在过于关注那些自己暂时无法掌控的事情”


JessonChan 任何切换都是反人类的。用户才没有那么聪明,也没有那么勤快。用户都是懒虫。


vivi 当我们变矮的时候,才发现我们长大了。


thisone0verthere You don’t always have to try your best, sometimes you can even try your worst just as a little treat

网友语录 - 第15期 - 只要你勇敢地做自己,就总会有人爱你

这里记录我的一周分享,通常在周六发布。


#书摘 人權指的是每個人所擁有的自由、安全與幸福生活的權利。但是,什麼是自由、安全和幸福的生活?—也許就像你?頭頂上有片屋瓦,有足夠的食物,有可穿的衣物,不必害怕上街去學校,而且還有假日。你要知道,到目前為止,並不是每個人都能擁有這樣的生活。


小青 我不仅想融入狼群,我的志向甚至是尽可能多地当一只快乐小狗。人各有志,而这就是我想要的。

谁说小狗不能做大事,世上的好多难事都是快乐、质朴的人做到的。


#书摘 《小银和我》

我从来没有给孩子们写过什么,将来也不会。因为,我相信孩子们可以读大人们读的书;当然,我们也可以想得到,有一些书应该除外。另外,男人们或女人们看的书也是有一些应该除外的,等等。

胡安•拉蒙•希梅内斯


闽南大翠花 快乐的秘诀,无非就是五个字:“不要太用力”。


PeachMooo 我的年度防内耗金句:“你对我的百般注解和识读,并不构成万分之一的我,却是一览无遗的你。” 三毛还是太超前了


四爪 沟通技巧训练中很重要的一点就是对事不对人。即使需要指出错误,也应该针对事件的错误、后果,提供事实和解决方法,而不是全盘否定一个人。比如,可以说“这句话有什么逻辑错误”,而不是说“你怎么没逻辑”。后一种表达一出口,就堵住了沟通的路,变成了指责。即使对方当面不发作,也不可能真正听进去你的意见。

在东亚家庭中,后者的沟通方式非常普遍。不仅针对当下的事情,还会从小时候开始数落:“你就是不听话、粗心,从来都怎么样怎么样……”这种居高临下、全盘否定的方式,除了满足家长发泄情绪和控制的目的,对孩子根本没有任何益处。相反,很多人反而学会并延续了这种沟通方式,导致引发反感,适得其反。这种通过论断人的沟通方式,就是所谓的“爹味”或“妈味”。

到此为止,我要从自己开始改变,不再继续传承这种方式。


如果你仔细想想,最好的书实际上是一个极其漫长的咒语,它让你在余生中变成另一个人。

-- @thisone0verhere.bsky.social

(尽管如此,我还是想要这样的咒语,越多越好)


戈城 很多人是缺少理性的。比如我说 A 比 B 好,就经常会有人跳出来说 B 多么多么好,但对 A 只字不提,因为他对 A 没有了解。B 好,和 A 比 B 好,经常是同时成立的。并不是你熟悉的 B 好,它就是天下第一好。


斩左 禁止是最低级的管理,这是几千年前,大禹治水时就总结出的经验:要管理好水,重要的是疏通,堵是堵不住的。


#书摘 概率是一个非常古老概念的现代用语,它曾出现在亚里士多德(Aristotle)的著作中。这位先哲声称:“不可能事件将会发生,这正是概率的特性。”


王小红阿 “只要你勇敢的做自己,就总有人会爱你”


美国最高法院每个星期三下午与星期五全天都要举行大法官会议。大法官会议严格保密,只允许大法官在场,资历最浅的大法官被安排做在门边,负责向外面等候的法官助理传递消息或请求,因此又被称为“守门人”。汤姆 克拉克曾自嘲当过5年世界上薪酬最高的守门人。#书摘


罗伯特 杰克逊大法官:如果积极主动的参加爱国仪式行为被外力所迫、照本宣科或者刻意逢迎所取代,相信爱国主义绝对无法弘扬。如果在我们宪法的星空上有一颗不变的星辰,那就是:“无论在政治、民族主义、宗教,还是其它舆论问题上,任何官员,不论其职位高低,都无权决定什么是正确的,也无权用言辞或行动来强迫公民表达他们的信念。如果有什么情形允许这一例外,那么,我们现在决不允许它们发生!#书摘 九人


bingyalengxuan 不给自己留后路,硬着头皮上吧。不然永远都是现在的样子


奥康纳大法官 司法独立是法治的核心,公民因为它才对法律的公正平等抱有信心。司法独立允许法官做出与政府其它分支利益相悖的判决。总统、部长乃至议员们常常希望迅速找到解决问题的办法或捷径。独立的司法拥有独一无二的地位,它聚集和反映了所有寻求权利和自由的方法,而且可以保证这些价值永远不被破坏和颠覆。#书摘


其实生活中每个人都在直接或间接地亵渎法律,只是大家不曾意识到或不原意识到这一点。……无论是搞学问还是当警察,我觉得这个世界上任何事情总还是需要一些理想主义还支撑。你可以圆滑世故打官腔保护自己,你可以在不违反原则的前提下为自己谋福利,但是,千万不能逾越自己的道德底线。--黎科长 #书摘


Marskay 渴望被理解,就接受被误解的概率;渴望被看见,就做好会被认错人的准备。这些都没关系,真正的联结时常是从错位中诞生的 。


斩左 冷知识:婴儿在三个月大时,会出现social smile,也就是对看见的所有人都笑。这是自然选择的结果,因为这样做能增加自己的存活概率。。。颇有种。。。谄媚被写在了基因里的感觉。

(每个人都谄媚,谄媚不可耻)


#书摘 《过于喧嚣的孤独》 1949年赫拉巴尔毅然离开宁城那四房一套的住宅,那张置放着他自己的用褐色丝绒覆盖着的写字台、大书柜、瓷砖壁炉的工作室,那有着法国塞夫尔瓷器餐具和妈妈做的可口食物的餐厅;还有那摆满一瓶瓶葡萄酒、一桶桶啤酒的地窖等等这些优越的生活条件,顶着个“法学博士”的学衔,来到布拉格,先在老城区租房住,后搬到利本尼区堤坝巷24号的这个位于从前荒凉的鱼池边、住了许多茨冈人的破旧贫民区,一个废弃车间改成的大杂院里。这里的墙上壁粉剥落,厕所和洗澡间都要穿过外面的院子,连洗漱用水也要提着桶到外面去打。他自找苦吃地找到、并深深爱上了这个环境,爱上了住在这里的性情豪放、酷爱音乐、身穿五彩缤纷衣衫的茨冈人,还有附近那些宾至如归的小酒家,且一住就是二十年。这期间,他每天早出晚归来回四十公里到克拉德诺钢铁厂去劳动。除炼钢技术人员、老工人外,在那里同他一起劳动的还有许多从前的教授、工厂主、银行经理、学者、小业主、企业家、律师、男女囚犯、普通人和搞政治的。这个前来接受劳动改造的各阶层人物的大杂烩,简直让他大吃一惊。在他身旁劳动的人们有着各种不同的命运,他从中找到了写作的丰富题材及写作方法。他认识到:“只有理解他人,才可能理解自己。生活,在任何地方都要不惜任何代价参与生活。”他不在乎任何职业,他说:“既然人家能在钢铁厂生活,为什么我不能呢?”他不时思考和反复琢磨他在工作中的体验和亲眼见到的一幅幅画面,然后将它们一一写下来。他的作品就是用他所认识的人们的生活、他所生活过的环境、而首先是他自己的生活写就的优美散文。他说,在他的作品中,“最大的英雄是那个每天上班过着平凡、一般生活的普通人;是我在钢铁厂和其他工作地点认识的人;是那些在社会的垃圾堆上而没有掉进混乱与惊慌的人;是意识到失败就是胜利的开始的人”。短篇小说《雅尔米卡》就是他在这个时期的重要代表作之一。在这篇作品里,作者怀着深深的同情,描绘了钢铁厂一位专给钢铁工人们送饭的年轻女工——一名未婚孕妇的命运。这些不幸者虽然命运不济,可是作者却看到:“他们一刻也没有失去生活,没失去对生活的幻想,而我则对他们深深地鞠躬,因为他们常常在笑和哭……”这笑和哭两个极端对赫拉巴尔来说很具典型意义。他说过:“基本上我是一个乐观主义的悲观者和一个悲观主义的乐观者,我是双重的、两面墙的,有着拉伯雷式的笑和赫拉克利特式的哭。”大写的“是”与大写的“非”是彼此相属的。在克拉德诺钢铁厂四年的劳动,是他另一所上了八个学期的大学校,这里不仅铸造了钢,同时也铸造了人,他整个地变了。从此,赫拉巴尔终于在生活的忧伤感和幽默中建立起他的美学基础,在不断地写作中享受他苦涩的幸福。虽然,在当时的环境下,他的作品顶多只能在某些刊物上发表,或躺在抽屉里没有能够出书,但在他的朋友圈子里已经明显地拔尖,连伊希·科拉什这位不仅对赫拉巴尔有着重要影响,而且是当时捷克文学家、美术家中较有影响的人物,也曾在日记中评价赫拉巴尔的作品说:“他的真实性总是将我击中,场面的复杂和表现的简洁把我紧紧擒住,他深深爱着的不仅是他的人物,而且是每一件事、最不起眼的事情,他甚至善于说出作为他真正爱着的那些最粗鲁的东西,但是他所说出的并不粗俗或下流。”


以下文字来自我的好友haoxiaobo。我超喜欢他的科幻小说。他这篇我多年前就读过,印象非常深,现在分享给大家。

这段时间正在使用AI编程,效果十分令人惊艳,想起我十几年前写的一篇短文,没想到里面的场景几乎已经成了现实。


想象这么一天,你来到信息技术部,里面一个人没有,只有一个个洁净的会议室。你进入其中一个,独自在桌前坐下。

然后电脑开口了:你好,听说你有些新的想法?

你尽可能详细地阐述了需求,电脑从不走神,从不厌烦,对于你想法中的含糊之处,电脑也没有一句嘲笑,而是用各种各样的示意图解,来帮助你搞明白自己在说什么。当你恍然大悟时,电脑也始终保持着得体的谦虚,一丝为自己的智商骄傲的语气都觉查不出来。

需求讨论进行了整整好几个工作日,你的想法越来越宏大、涉及面越来越广、越来越深,一个小主意演变成了完整全面的体系。电脑从未流露出惊恐和抗拒,电脑只考虑事情怎样做才能正确。

实际上,这几天中大部分时间是电脑在等你自己理解整件事情,清理自己的思路,以及确认一些细节的规则。百分之九十九的时间里,电脑的cpu周期都分配在其它无数的实时任务中,包括其它会议室里的类似对话。

最妙的是,电脑从不要求你“给我发个书面需求吧!”,人类的需求文档充满了错误、岐意与遗漏,并且常被用于责任界定和推脱。电脑不需要这种原始且充满官僚作风的工具,一切谈话内容、声音和图解早就被记录保存,随时调阅,当你记不起来之前的决定时,电脑就立即回放相关的录音,供你参考,从哪个角度观看都行。

电脑从不忘记。

但这不表示你不能修改需求,你的随时可以修正想法,那怕是己经到了最后期。如果你的修改引起了规则冲突,电脑会马上列出依赖项让你检查,而不会笑话你智商奇低,自相矛盾。

几天之后,需求分析完成了。电脑己经检查了全部逻辑,没有矛盾,无懈可击。

"请再稍等一下,您的系统正在开发。"

你点点头,站起来活动活动身体,踱步到桌子对面,想仔细研究一下电脑面板上的几个按键什么的,你一直很感兴趣,但从没机会细看。

但这次又没时间了。

“您要的系统已开发好!” 电脑在五秒钟后说。