找到
173
篇与
站长可乐
相关的结果
- 第 4 页
-
新加坡和马来西亚开展TikTok Shop 跨境电商业务需要外网和报白吗? 如果您计划在 新加坡和马来西亚 开展 TikTok Shop 跨境电商业务,以下是关键要点和操作指南: 1. TikTok Shop 跨境入驻基础要求 (1)是否需要外网(VPN)? 中国大陆商家: 由于TikTok Shop在部分国家(如东南亚)的卖家中心可能限制中国IP访问,可能需要VPN(如切换至新加坡/马来西亚IP)才能注册和运营。 风险提示:TikTok官方禁止使用VPN绕过地区限制,可能导致封号,建议用合规方式入驻(如通过跨境代理或本地公司)。 新加坡/马来西亚本地商家: 直接使用本地网络即可,无需VPN。 (2)是否需要“报白”? TikTok Shop的“报白”(白名单)通常指 特殊类目准入,但新马市场规则略有不同: 普通类目(如服饰、家居、美妆):无需报白,直接上架。 限制类目(如食品、保健品、电子烟): 需提交 相关认证(如马来西亚的MDA、新加坡的HSA许可)。 部分类目需申请 平台定向邀约(类似“报白”)。 2. 新加坡 & 马来西亚 TikTok Shop 入驻方式 (1)跨境卖家(无本地公司) 适用平台:TikTok Shop 跨境业务(如从中国发货至新马)。 要求: 中国大陆或香港公司营业执照。 跨境电商经验(如亚马逊、Shopee店铺流水)。 绑定 跨境收款账户(如Payoneer、万里汇)。 是否需要VPN: 中国大陆IP可能无法直接访问TikTok Seller Center(需切换至海外IP)。 (2)本地卖家(新加坡/马来西亚公司) 优势:无需VPN,可直接入驻,流量扶持更多。 要求: 本地公司注册(如新加坡ACRA或马来西亚SSM)。 本地银行账户(如DBS、Maybank)。 本地仓库或合作物流(如Ninja Van、J&T)。 3. 关键操作步骤 (1)注册TikTok Shop卖家账号 访问官网: 新加坡:https://seller.tiktokglobalshop.com 马来西亚:https://seller.tiktokglobalshop.com 选择入驻类型:跨境卖家 or 本地卖家。 提交资料:营业执照、法人身份证、店铺流水等。 (2)物流与支付 跨境模式: 使用TikTok官方物流(如TikTok Shipping)或第三方(如极兔国际)。 本地模式: 本地仓发货(如Lazada FBL、Shopee SLS)。 收款:绑定Payoneer、连连支付或本地银行账户。 (3)类目审核(如需“报白”) 如涉及特殊商品(如保健品、3C),联系TikTok客服或客户经理申请类目权限。 4. 风险与合规 VPN风险:TikTok可能检测IP变动,建议用固定海外IP或本地公司运营。 税务合规: 新加坡:需注册GST(如年销售额超100万新元)。 马来西亚:需申请SST(如年销售额超50万令吉)。 内容合规:避免宗教、政治敏感内容,符合新马广告法。 5. 建议方案 情况推荐方式中国大陆卖家,无本地公司用跨境模式+海外IP(谨慎VPN)新加坡/马来西亚本地公司直接本地入驻,无需VPN销售限制类目(如食品)提前申请类目白名单总结 是否需要VPN:中国大陆卖家可能需要,本地商家不用。 是否需要报白:普通类目不用,特殊类目需申请。 最佳路径:如有条件,建议注册新加坡/马来西亚公司,避免IP风险。 如果需要更具体的入驻流程或类目报白指导,可以提供您的业务模式(跨境/本地),我可以进一步细化方案! -
一个花里胡哨的确认按钮(可复制源代码) 640.gif图片 真的很不错! <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>一个花里胡哨的确认按钮</title> <style>.button{ --background: #1e2235; --color: #f6f8ff; --shadow: rgba(0, 9, 61, 0.24); --cannon-dark: #a6accd; --cannon-light: #f6f8ff; --cannon-shadow: rgba(13, 15, 24, 0.9); --confetti-1: #892ab8; --confetti-2: #ea4c89; --confetti-3: #ffff04; --confetti-4: #4af2fd; --z-before: -6; display: block; outline: none; cursor: pointer; position: relative; border: 0; background: none; padding: 9px22px9px16px; line-height: 26px; font-family: inherit; font-weight: 600; font-size: 14px; color: var(--color); -webkit-appearance: none; -webkit-tap-highlight-color: transparent; transition: transform var(--transform-duration, 0.4s); will-change: transform; transform-style: preserve-3d; transform: perspective(440px) rotateX(calc(var(--rx, 0) * 1deg)) rotateY(calc(var(--ry, 0) * 1deg)) translateZ(0);} .button:hover{ --transform-duration: 0.16s;} .button.success{ --confetti-scale: 0; --stroke-dashoffset: 15;} .button:before{ content: ""; position: absolute; left: 0; top: 0; right: 0; bottom: 0; border-radius: 12px; transform: translateZ(calc(var(--z-before) * 1px)); background: var(--background); box-shadow: 04px8pxvar(--shadow);} .button.icon, .buttonspan{ display: inline-block; vertical-align: top; position: relative; z-index: 1;} .button.icon{ --z: 2px; width: 24px; height: 14px; margin: 8px16px00; transform: translate( calc(var(--icon-x, 0) * 1px), calc(var(--icon-y, 0) * 1px) ) translateZ(2px);} .button.icon.confetti{ position: absolute; left: 17px; bottom: 9px;} .button.icon.confettisvg{ width: 18px; height: 16px; display: block; stroke-width: 1px; fill: none; stroke-linejoin: round; stroke-linecap: round;} .button.icon.confettisvg *{ transition: stroke-dashoffset 0.2s; stroke-dasharray: 1520; stroke-dashoffset: var(--stroke-dashoffset, 0); stroke: var(--stroke-all, var(--stroke, var(--confetti-2)));} .button.icon.confettisvg *:nth-child(2){ --stroke: var(--confetti-3);} .button.icon.confettisvg *:nth-child(3){ --stroke: var(--confetti-1);} .button.icon.confetti.emitter{ position: absolute; left: 4px; bottom: 4px; pointer-events: none;} .button.icon.confetti.emitterdiv{ width: 4px; height: 4px; margin: -2px00 -2px; border-radius: 1px; position: absolute; left: 0; top: 0; transform-style: preserve-3d; background: var(--confetti-all, var(--b, none));} .button.icon.confettii{ width: 4px; height: 4px; display: block; transform: scale(var(--confetti-scale, 0.5)); position: absolute; transition: transform 0.25s; left: var(--left, -1px); top: var(--top, 3px); border-radius: var(--border-radius, 1px); background: var(--confetti-background, var(--confetti-3));} .button.icon.confettii:nth-child(2){ --left: 9px; --top: -1px; --border-radius: 2px; --confetti-background: var(--confetti-4);} .button.icon.confettii:nth-child(3){ --left: 5px; --top: 3px; --confetti-background: var(--confetti-1);} .button.icon.confettii:nth-child(4){ --left: 10px; --top: 14px; --confetti-background: var(--confetti-2);} .button.icon.confettii:nth-child(5){ --left: 9px; --top: 7px; --confetti-background: var(--confetti-4);} .button.icon.confettii:nth-child(6){ --left: 6px; --top: 8px; --border-radius: 2px; --confetti-background: var(--confetti-2);} .button.icon.cannon{ position: relative; width: 24px; height: 14px; transform: translate(0, 3px) rotate(-45deg); filter: drop-shadow(-2px2px2px var(--cannon-shadow));} .button.icon.cannon:before, .button.icon.cannon:after{ content: ""; display: block; height: 14px;} .button.icon.cannon:before{ background: linear-gradient( var(--cannon-dark), var(--cannon-light) 50%, var(--cannon-dark) ); width: 100%; -webkit-clip-path: polygon(25px -1px, 052%, 25px15px); clip-path: polygon(25px -1px, 052%, 25px15px);} .button.icon.cannon:after{ width: 6px; position: absolute; right: -3px; top: 0; border-radius: 50%; box-shadow: inset 0000.5pxvar(--cannon-light); background: linear-gradient( 90deg, var(--cannon-dark), var(--cannon-light) );} .button.white{ --background: #fff; --color: #1e2235; --border: #e1e6f9; --shadow: none; --cannon-dark: #103fc5; --cannon-light: #275efe; --cannon-shadow: rgba(0, 9, 61, 0.2);} .button.white:before{ box-shadow: inset 0001pxvar(--border);} .button.grey{ --background: #404660; --cannon-shadow: rgba(13, 15, 24, 0.2); --cannon-dark: #d1d6ee; --cannon-light: #ffffff;} html{ box-sizing: border-box; -webkit-font-smoothing: antialiased;} *{ box-sizing: inherit;} *:before, *:after{ box-sizing: inherit;} body{ min-height: 100vh; display: flex; font-family: "Inter", Arial; justify-content: center; align-items: center; background: #f6f8ff;} body.button{ margin: 012px;} body.dribbble{ position: fixed; display: block; right: 20px; bottom: 20px;} body.dribbbleimg{ display: block; height: 28px;} body.twitter{ position: fixed; display: block; right: 64px; bottom: 14px;} body.twittersvg{ width: 32px; height: 32px; fill: #1da1f2;} </style> </head> <body> <button class="button"><div class="icon"><div class="cannon"></div><div class="confetti"><svg viewBox="0 0 18 16"><polyline points="1 10 4 7 4 5 6 1" /><path d="M4,13 C5.33333333,9 7,7 9,7 C11,7 12.3340042,6 13.0020125,4" /><path d="M6,15 C7.83362334,13.6666667 9.83362334,12.6666667 12,12 C14.1663767,11.3333333 15.8330433,9.66666667 17,7" /></svg><i></i><i></i><i></i><i></i><i></i><i></i><div class="emitter"></div></div></div><span>Confirm</span></button> <script src="https://cdn.jsdelivr.net/npm/gsap@3.13.0/dist/gsap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/gsap@3.13.0/dist/Physics2DPlugin.min.js"></script> <script>document.querySelectorAll(".button").forEach((button)=>{ const bounding=button.getBoundingClientRect(); button.addEventListener("mousemove", (e)=>{ let dy=(e.clientY - bounding.top - bounding.height / 2) / -1; let dx=(e.clientX - bounding.left - bounding.width / 2) / 10; dy=dy >10 ? 10 : dy < -10 ? -10 : dy; dx=dx >4 ? 4 : dx < -4 ? -4 : dx; button.style.setProperty("--rx", dy); button.style.setProperty("--ry", dx);}); button.addEventListener("mouseleave", (e)=>{ button.style.setProperty("--rx", 0); button.style.setProperty("--ry", 0);}); button.addEventListener("click", (e)=>{ button.classList.add("success"); gsap.to(button,{ "--icon-x": -3, "--icon-y": 3, "--z-before": 0, duration: 0.2, onComplete(){ particles(button.querySelector(".emitter"), 100, -4, 6, -80, -50); gsap.to(button,{ "--icon-x": 0, "--icon-y": 0, "--z-before": -6, duration: 1, ease: "elastic.out(1, .5)", onComplete(){ button.classList.remove("success");},});},});});}); function particles(parent, quantity, x, y, minAngle, maxAngle){ let colors=["#FFFF04", "#EA4C89", "#892AB8", "#4AF2FD"]; for (let i=quantity - 1; i >=0; i--){ let angle=gsap.utils.random(minAngle, maxAngle), velocity=gsap.utils.random(70, 140), dot=document.createElement("div"); dot.style.setProperty( "--b", colors[Math.floor(gsap.utils.random(0, 4))] ); parent.appendChild(dot); gsap.set(dot,{ opacity: 0, x: x, y: y, scale: gsap.utils.random(0.4, 0.7),}); gsap .timeline({ onComplete(){ dot.remove();},}) .to( dot, { duration: 0.05, opacity: 1,}, 0 ) .to( dot, { duration: 1.8, rotationX: `-=${gsap.utils.random(720, 1440)}`, rotationZ: `+=${gsap.utils.random(720, 1440)}`, physics2D:{ angle: angle, velocity: velocity, gravity: 120,},}, 0 ) .to( dot, { duration: 1, opacity: 0,}, 0.8 );}} </script> </body> </html> -
程序员财务自由幻觉图鉴 1. "等公司上市就好了" 2016年加入创业公司时,CEO拍着我肩膀说: "现在工资是低了点,但等B轮融资后..." 2018年B轮了,他说:"等C轮估值上去..." 2020年终于上市了——我的期权刚好够买公司纪念品商店里的一个马克杯。 2. 程序员的财富幻想进化史 阶段1:接私活暴富 学生时代觉得"会写代码=印钞机" 第一次接外包:仿今日头条,预算5000块 结局:甲方要加"小小小功能",工时翻三倍 阶段2:等期权变现 每天查公司估值像查股票 学会新词:"行权价"、"锁定期"、"资本利得税" 最后发现税后还不够买厕所一平米 阶段3:加密货币 2017年错过比特币(觉得是骗局) 2021年错过狗狗币(觉得是玩笑) 2023年冲进屎币——终于成功被割 阶段4:知识付费 录了《21天成为全栈工程师》课程 销量主要靠亲朋好友友情支持 算上录制时间,时薪不如麦当劳打工 3. 那些年我们信过的财富神话 传说1:"有个前辈早年加入阿里..." 现实:你加入的是"阿里系"创业公司 区别相当于正版孙悟空和景区cosplay 传说2:"我朋友炒币赚了千万" 现实:他忘了说后来亏了两千万 以及他所谓的"炒币"其实是传销 传说3:"技术大牛都靠接咨询发财" 现实:你接到的咨询都是 "帮我侄子看下毕业设计" "简单做个淘宝那样的网站" 4. 财务自由等级对照表 等级描述实现方式幻觉级植发自由年终奖够做一次FUE入门级显卡自由买RTX4090不眨眼进阶级外卖自由点餐敢选"无需凑单"终极级离职自由存款够骂老板后裸辞(大部分人卡在"星巴克自由"和"打车自由"之间) 5. 可乐的破产经验谈 (1) 那些亏钱的骚操作 跟风买矿机(到货时矿难了) 投资朋友"绝对靠谱"的区块链项目(后来他失联了) 炒股(把技术分析学成了玄学) (2) 唯一赚到钱的项目 老实写代码领工资 虽然无聊,但比炒币踏实 (3) 血泪教训 当你听说某个"稳赚"的机会时,已经晚了 程序员最容易犯的错:以为技术好=投资厉害 真实财富密码:有个富二代室友/前同事/同学 6. 当代程序员财富焦虑解决方案 方案1:降低标准 把"财务自由"重新定义为"外卖自由" 发现瞬间就实现了 方案2:转移焦点 关注"时间自由"而不是"财富自由" 比如争取远程工作,省下通勤时间 方案3:创造副业 写技术博客(虽然赚不到钱但能装逼) 做开源项目(虽然倒贴钱但能镀金) 方案4:终极解法 卸载所有财经APP 屏蔽那些"成功上岸"的前同事朋友圈 专注写代码,等35岁被优化时再说 7. 残酷真相 用Python分析了身边100个"财务自由"案例: 80%靠家里拆迁/继承家产 15%是早期加入巨头公司的幸运儿 5%是真正的创业成功者(其中4个已秃) 最终觉悟: 我们这代人注定在"等公司上市"和"等老家拆迁"之间反复横跳。 (所以还是先把今天的代码提交了吧) (完) 下期预告 《程序员年龄焦虑实录:从"少年天才"到"大龄码农"》 那些25岁当CTO和35岁送外卖的故事 技术更新的速度 vs 头发掉落的速度 如何让自己在年轻同事面前不显得像出土文物 (想看扣⌨️,让我看看多少同行开始焦虑了) -
程序员相亲指南:从"我修电脑的"到"我搞算法的" 1. "你是做什么工作的?" 这道送命题 第一次相亲,我老实回答:"我是程序员。" 对方眼睛一亮:"太好了!我电脑特别卡..." 第二次相亲,我改口:"我是搞算法的。" 对方若有所思:"就是抖音那种让人上瘾的?" 第三次相亲,我直接说:"我是做人工智能的。" ——终于成功把天聊死了。 2. 技术直男相亲翻车现场 场景一:约会地点选择 ❌ "我知道有家网吧环境不错..." ✅ "我订了VR体验馆的双人套餐"(虽然最后还是去网吧开黑了) 场景二:聊天话题 ❌ "你知道TCP三次握手吗?" ✅ "你平时刷短视频多吗?其实推送算法..."(强行拐回舒适区) 场景三:形象管理 ❌ 格子衫+双肩包+三天没洗的头 ✅ 黑色hoodie+MacBook Air(假装不经意露出苹果logo) 3. 程序员相亲简历优化指南 真实情况简历写法修bug的分布式系统稳定性工程师写CRUD的企业级应用架构师调参的机器学习算法专家删库跑路的前数据中心安全顾问特别技巧: 在自我介绍里加一句"偶尔写技术博客"(即使你上次更新是2018年) 4. 相亲市场技术栈鄙视链 顶层: 量化交易(听起来像能赚大钱) 自动驾驶("下一个Elon Musk"光环) 中层: 人工智能(已从神坛跌落,但还有余温) 区块链(解释不清但感觉很厉害) 底层: 前端开发("就是做网页的吧?") 测试工程师("你们是不是专门找bug的?") 地狱级: "我在家接外包" "目前待业,但有个很棒的创业idea" 5. 当约会遇上线上故障 真实故事: 烛光晚餐刚上菜 企业微信报警:生产环境挂了 掏出笔记本当场改代码 对方感动地说:"你工作的样子好专注..." 第二天收到信息:"我觉得你更爱你的电脑" 6. 来自可乐的保命建议 (1) 话题黑名单 解释什么是前后端分离 吐槽产品经理的奇葩需求 展示你的机械键盘收藏 (2) 形象急救包 常备一件纯色衬衫在办公室 学会用发蜡(至少约会前洗头) 把"我平时就爱宅着"改成"我享受深度思考的独处时光" (3) 终极话术 当被问"你们是不是都很木讷"时: "我们只是习惯用二进制思考——要么0,要么1。但对你,我想试试浮点数。" (慎用,可能收获白眼或心动) 7. 残酷真相 最近用Python分析了相亲数据: 提到"年薪"时回复率提升200% 提到"加班"时对话结束概率80% 提到"期权"的效果取决于对方知不知道这可能是废纸 最终觉悟: 与其在相亲市场被算法匹配,不如自己写个推荐系统。 (但写着写着发现,还是和代码谈恋爱比较单纯) (完) 下期脑洞 《程序员财务自由幻觉图鉴》 从"等公司上市"到"接外包暴富"的幻想演变史 那些年我们错过的比特币和狗狗币 终极真相:其实只想赚够植发钱 (想看扣💰,让我看看多少同行还在做暴富梦)