Step 1. Disable SIP. Boot into Recovery Mode. Open Terminal, type this and hit Enter
csrutil disableStep 2. Reboot into Recovery Mode again. Open Terminal, using these commands
| class AdsManager { | |
| constructor() { | |
| let supportedAPIs = FBInstant.getSupportedAPIs(); | |
| this.canShowInterstitialAds = supportedAPIs.includes('getInterstitialAdAsync'); | |
| this.canShowRewardedVideoAds = supportedAPIs.includes('getRewardedVideoAsync'); | |
| if (!this.canShowInterstitialAds) { | |
| Sentry.captureMessage(window.platform + ' can\'t show interstitital ads'); | |
| } | |
| if (!this.canShowRewardedVideoAds) { | |
| Sentry.captureMessage(window.platform + ' can\'t show rewarded video ads'); |
| import undetected_chromedriver.v2 as uc | |
| from selenium.webdriver.common.by import By | |
| import re | |
| opts = uc.ChromeOptions() | |
| # opts.add_argument('--headless') | |
| # opts.add_argument('--disable-gpu') | |
| driver = uc.Chrome(options=opts) | |
| keywords = ['Kể', 'từ', 'khi', 'dẫn', 'dắt', 'các', 'đội', 'tuyển', 'Việt', 'Nam', 'cuối', 'năm', '2017,', 'HLV', 'Park', 'chưa', 'từng', 'thua', 'các', 'đối', 'thủ', 'Đông', 'Nam', 'Á.', 'Ông', 'đặc', 'biệt', 'có', 'duyên', 'với', 'Malaysia', 'và', 'Indonesia.', 'Tại', 'vòng', 'loại', 'thứ', 'hai', 'World', 'Cup', '2022,', 'đội', 'tuyển', 'cùng', 'bảng', 'G', 'với', 'hai', 'đối', 'thủ', 'này', 'và', 'toàn', 'thắng', 'cả', 'bốn', 'trận.', 'Điểm', 'bất', 'lợi', 'với', 'Việt', 'Nam', 'là', 'cùng', 'lúc', 'thi', 'đấu', 'nhiều', 'mặt', 'trận.', 'Bên', 'cạnh', 'AFF', 'Cup', '2020,', 'đội', 'tuyển', 'còn', 'phải', 'đã', 'vòng', 'loại', 'thứ', 'ba', 'World', 'Cup', '2022', '-', 'khu', 'vực', 'châu', 'Á.', 'Điều', 'này', 'khiến', 'HLV', 'Park', 'phải', 'tính', 'toán', 'về', 'bài', 'toán', 'lực', |
While this gist has been shared and followed for years, I regret not giving more background. It was originally a gist for the engineering org I was in, not a "general suggestion" for any React app.
Typically I avoid folders altogether. Heck, I even avoid new files. If I can build an app with one 2000 line file I will. New files and folders are a pain.
| "use client"; | |
| import { useRouter } from "next/navigation"; | |
| import type { ReactNode } from "react"; | |
| import { useCallback, useEffect, useState } from "react"; | |
| interface ProximityPrefetchProps { | |
| children: ReactNode; | |
| threshold?: number; | |
| predictionInterval?: number; |
| Feature | Comp AI (Open Source) | Vanta (Closed Source) |
|---|---|---|
| Cost | Free/self-hosted or $1,000/mo | ~$10,000–$20,000+/year |
| Frameworks | SOC 2, ISO 27001, GDPR (+custom) | SOC 2, ISO 27001, HIPAA, etc. |
| Audit Experience | Auditor flexibility, 1-click export | Integrated network, streamlined but less flexible |
| Evidence Collection | AI-driven, agentic, open API | 250+ integrations, real-time |
| Customization | Full (code, controls, workflows) | Limited |
| Transparency | Complete (open code) | Limited |
| Support | Community, marketplace, direct | Email/chat, partner network |
| Feature | Comp AI (Open Source) | Drata (Closed Source) |
|---|---|---|
| Cost | Free/self-hosted or $1,000/mo | ~$10,000–$20,000+/year |
| Frameworks | SOC 2, ISO 27001, GDPR (+custom) | SOC 2, ISO 27001, HIPAA, etc. |
| Audit Experience | Auditor flexibility, custom prep | Integrated network, less flexible |
| Evidence Collection | AI-driven, agentic, open API | 250+ integrations, real-time |
| Customization | Full (code, controls, workflows) | Limited |
| Transparency | Complete (open code) | Limited |
| Support | Community, marketplace, direct | Email/chat, partner network |