很多人不喜欢web app是因为要先打开浏览器再输入相应的网址,然而这一繁琐步骤是可以免去的,你完全可以像使用原生app一样使用web app。
我个人更喜欢web app,因此特意在这里告诉潜在的HappyNotes用户,只需几秒钟,你就能将它固定在手机桌面上,不论看起来还是用起来都像一个真正的移动App。
为什么 Webapp 如此棒
在介绍安装步骤前,我先啰嗦几句为什么 webapp 很酷:
- 你永远在使用最新版本,无需手动更新
- 体积小得令人惊讶
- 跨设备使用,随时随地
- 不受应用商店审核限制
iPhone 用户安装指南 📱
- 在 Safari 浏览器中打开 HappyNotes, 网址 https://happynotes.shukebeta.com
- 点击分享按钮(带箭头的方形图标)
- 向下滚动,选择"添加到主屏幕"
- 给它起个喜欢的名字(比如"HappyNotes")
- 点击"添加" - 大功告成!
Android 用户安装指南 🤖
- 打开 Chrome 浏览器,进入 HappyNotes, 网址 https://happynotes.shukebeta.com
- 点击菜单(三个点)或查找"+"图标
- 选择"添加到主屏幕"
- 为快捷方式命名
- 点击"添加" - 搞定!
现在,你可以直接从主屏幕点击 HappyNotes。随时随地,记你想记!
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 📱
- Open HappyNotes in Safari
- Tap the share button (square with an arrow pointing up)
- Scroll and select "Add to Home Screen"
- Name it as you like (e.g., "HappyNotes")
- Tap "Add" - done!
For Android Users 🤖
- Open Chrome and navigate to HappyNotes
- Tap the menu (three dots) or look for a "+" icon
- Choose "Add to Home Screen"
- Name your shortcut
- 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
-
Always use transactions to ensure data consistency
-
Understand your data relationships before modifying constraints
-
Test deletion scripts in a staging environment
-
Consider soft delete strategies for complex data models
在开发HappyNotes的过程中,我一直在琢磨笔记的本质是什么?或者说,人为什么要记笔记?就我而言,我写笔记的动机有以下几个:
- 记录生活中或许有一点点意义的小事
- 记录读过的书看过的电影/视频
- 记录我觉得以后会用到的知识片段,包括书摘和网摘
- 记录一些让自己发笑的片段
- 记录自己突然想到的idea/todo
- 有机会回顾过往
当初做 Lava 微博的时候,我记得曾用过一句slogan:"没有记录就没有发生。" 某种程度上,你的笔记是你曾经在这个世界上活过的证据。不仅如此,善用笔记能够很方便检索和重新取回你需要的知识片段,只要你之前有记下来。
人们总是高估自己的记忆力,而笔记正是能够辅助你获得无限量长期记忆的最好工具之一。
我非常能够理解市面上各种笔记app的繁荣,这是也是我下决心开发HappyNotes的原因。我希望打造一款至少自己用起来称手的笔记软件。
这里记录我的一周分享,通常在周六发布。
米饭 在不熟悉的场景中。自己和他人不一致时,我会先假设他人对,反思自己是不是搞错了。这个思维方式的好处是经常反思。坏处是消耗精力,反应慢,容易受骗。相反的思维方式认为自己总是对的,除非他人证明自己是错的。举证工作交给他人,不内耗,反应快,不容易受骗。缺点是容易固执己见。
如月中天 #非暴力沟通 在我们的语言中,有一个词极易引起羞愧和内疚。我们经常使用它来打击自己。它在我们的意识中是如此根深蒂固,以致许多人无法想象,没有它生活将如何继续。这个词就是“应该”,也就是“我应该早点知道”或“我不应该做那件事情”中的“应该”。如果我们认为自己“应该”怎么样,在大多数的情况下,我们也就封闭了自我。因为“应该”意味着我们别无选择。这使我们感到无奈和沮丧。同时,又心有不甘,不愿屈服。
除了“应该”这个词,我们还用别的方式教训自己,例如:“我真受不了自己现在这个样子。我必须改改了。”想一想那些强迫自己的人。他们中有的人说:“我真的应该戒烟了。”另一些人说:“我必须加强锻炼。”他们不断地说他们“必须”做什么,与此同时,又不停地找借口不那么做,因为没有人想成为奴隶。当然,我们也不是命中注定要去服从“应该”或“不得不”的指挥,不论它们是来自外部,还是来自我们自身。一旦顺从了这些命令,生活也就会失去乐趣。
完颜兀术 一个发现:如果面试时跟你大谈,我们的团队是一个大家庭,我们的公司人都很好很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