Working on Brutal Fate's rocket launcher, it features realistic... ballistic behavior of how armor-piercing explosive munitions works in real life. The ballistics system alone is worth a full dev diary, featuring wall penetration, ricochets, etc #screenshotsaturday #indiedevshow more

🎃 Sgt_Mark_IV 🎃
14,244 次观看 • 2 年前
We value Germany's leadership in strengthening our air defense... through bilateral support and substantial contributions to the PURL initiative. Thanks to this, we are able to procure anti-ballistic missiles that are in short supply. This is especially important now, as Russia is counting on brutal ballistic strikes to enable it to continue the war. We are also preparing a Drone Deal with Germany and working to establish a joint European anti-ballistic system. I am grateful to Germany, and personally to Bundeskanzler Friedrich Merz Friedrich Merz, for the support and for the steps being taken toward European anti-ballistic defense. This is the only way to guarantee reliable protection of lives across Europe from missile threats.show more

Volodymyr Zelenskyy / Володимир Зеленський
257,512 次观看 • 2 个月前
here's how the whole thing works. claude code doesn't... care what's behind the API. it just sends requests and expects responses. so i pointed it at my own machine instead of anthropic's servers. llama-server runs the model locally. LiteLLM sits in between and translates the API format. claude code thinks it's talking to claude. it's talking to qwen on localhost. the setup: 2x 3090s, 38 layers on GPU, 10 on CPU. 128K context window. generation is only 7 tok/s but the tradeoff is worth it. 128K means the agent can hold an entire project in memory without losing context midtask. claude code alone loads a 17.5K token system prompt on every request. tool definitions, safety rules, agent behavior. that's your baseline before you even say hello. pushed as far as i could tonight. what surprised me most wasn't the speed. it was the iteration quality. first prompt gave me a working particle sim. second prompt, the model read its own 564 lines, understood the architecture, and added trails, explosions, gravity wells, bloom effects. no handholding. 4bit quantized. 45GB on two consumer cards. running a full coding agent autonomously. detailed article coming. full benchmarks, hardware breakdowns, engine debugging, code quality. everything from setup to what broke and why.show more

Sudo su
37,623 次观看 • 6 个月前
I was working through Steam Early Access requirements for... VRUnderground and I had a really spooky realization. The whole conversation around training images and videos is not the important part. The media itself is just a bridge. What is actually being extracted is cognitive patterning. Models learn how people think, not just how they draw. The images are only the residue of the process. The real map is of the minds that created them. It reminds me of poker. A great poker player is not "stealing your cards". They are reading the patterns in your behavior and mapping your decision space. In that sense, training AI on human-created data is not about automating tasks. It is about mapping cognition through metadata and behavior trails. If that is true, then the internet starts looking a lot more like a poker table. And nobody wins a hand against someone who can read their mind.show more

VRUnderground
26,437 次观看 • 9 个月前
Working on improving Hoolis' "Deaths" with more anims, giving... them more variety, since we had only one animation before. So far we're really happy with the explosive behavior! It makes powerful balls even more chaotic and satisfying to play with. The falling down one is cool too. We also added force modifiers for each type of bullet, allowing to make the standard Death more varied as well. So far it's pretty cool, but when the player uses Pingpong balls the Hoolis should fall faster or maybe have more friction when hitting the floor. What do you think? Anyway it's been a ton of fun to flesh-out this system! 😄 #gamedev #indiedevshow more

Tiebreakers
16,467 次观看 • 2 个月前
Inside every cell, there is a transport system that... determines how materials move, signals propagate, and structure is maintained. This video captures that system in motion. The glowing streaks mark the growing ends of microtubules (protein polymers that constantly assemble and disassemble through a process called dynamic instability). Rather than forming permanent tracks, microtubules are rebuilt continuously, allowing cells to reorganize their internal layout in real time. This behavior is essential for life. Cells rely on microtubule dynamics to divide accurately, migrate during development and repair, and maintain long-distance transport in neurons that may span over a meter in length. When this system is altered, the consequences are significant. Certain cancer therapies work by locking microtubules in place, preventing cell division. In contrast, failures in microtubule transport are linked to neurodegenerative conditions (like Alzheimer's) where intracellular delivery breaks down. What appears as abstract motion under a microscope is actually one of the core systems that keeps cells functional, adaptable, and alive. Video Credit: Andy Mooreshow more

William A. Wallace, Ph.D.
18,469 次观看 • 7 个月前
This Polymarket script is showing some unreal results I... honestly can’t believe it. This trader wrote a script using OpenClaw and made $700,000 He’s not an insider Not some once-in-a-generation genius Just a trader with a good head who wrote a working script Profile: Copytrade: I don’t know how he manages to do it, but the script itself is extremely simple. No huge databases No insanely complex infrastructure Nothing rocket-science level Here is the full strategy of the script: Bets are placed not on event outcomes, but on price inefficiencies Thousands of fast trades accumulate into a massive total profit In calm markets, risks remain minimal, while strong trends allow capital to grow rapidly Most traders cannot react fast enough, but the bot turns market delays into real money.show more

winkle.
51,795 次观看 • 7 个月前
🚨 THIS IS END OF AI BUBBLE The S&P... 500 keeps hitting all-time highs. But almost nobody sees the systemic crisis brewing. Wall Street has built a giant debt pyramid. Just like in 2000. How it works: Companies borrow billions using inflated assets as collateral. Then they give that money right back to buy more of the same assets. On paper, it's a masterpiece: Stocks report record valuations. Buybacks show explosive returns. Markets keep skyrocketing. In reality, a big part of the demand is fake. It's a circular loop. And it only works as long as cheap money keeps flowing. When rates stay high long enough, the collateral loses value fast. Even worse: most companies still aren't making enough to justify these huge costs. This is not "if". It's already starting. Remember, I warned about the last three major reversals before they happened. My next call will be the biggest one this cycle. Turn on notifications. Most people will follow me too late.show more

Wimar.X
66,459 次观看 • 3 个月前
New feature in Claude Code 2.1.14 just dropped! You... can now search and install plugins from the marketplaces installed in your current Claude Code session. This is huge if you’re building plugins on top of Claude Code’s marketplace layer (Skills, Agents, Hooks, etc). How it works: - Run /plugin - The official Claude marketplace is installed by default - Use the search bar to find the plugin you want - Select one or multiple plugins with space, then press i to install - Go to the Installed tab to browse and enable them With the exponential growth of Skills and Agent-based components running in the CLI, improving plugin discoverability is a big win. Pretty sure more marketplace-related features are comingshow more

Daniel San
40,994 次观看 • 8 个月前
❗️❗️🇺🇦🇷🇺Ukrainian President Volodymyr Zelensky has laid out a historic,... multi-tiered defensive strategy that aggressively redefines the global arms landscape, pairing a brutal economic irony with the unveiling of a secret homegrown anti-ballistic system. Zelensky delivered a staggering rhetorical blow to Moscow, mocking the Kremlin's desperate search for fuel imports as an absolute "historical joke." For a petro-state whose entire modern empire was built on fossil-fuel dominance, being forced to look for external refined fuel after relentless Ukrainian deep-striking campaigns is a profound humiliation. Zelensky forcefully made it clear that Ukraine hasn't just discussed stopping Russia's energy supply lines—it has already physically forced the Kremlin to its knees on the domestic energy front. To completely solve its dependency on slow Western defense assembly lines, Zelensky officially unveiled "FREYA"—Ukraine's highly classified, sovereign anti-ballistic missile defense system. Engineered to match the lethal ballistic-interception capabilities of the American Patriot system, FREYA is designed as a more cost-effective "European model" optimized for rapid, high-volume mass production. An elite international summit of national security advisers and defense companies is convening immediately in France to secure the manufacturing backing needed to bring FREYA to life within weeks. While acknowledging that the U.S. Patriot remains the gold standard of modern air defense, Zelensky emphasized that Ukraine is also looking toward the next-generation Franco-Italian SAMP/T NG system as a key Patriot equivalent. However, with Western production lines choked by long waiting lists and limited output, Ukraine refuses to sit idle. By scaling up the domestic FREYA project alongside the localized acquisition of Western shields, Kyiv is establishing a sovereign, unbreachable aerospace fortress that permanently neutralizes Putin's ballistic threats. See the latest updates with us: NSTRIKEshow more

NSTRIKE
22,834 次观看 • 2 个月前
On the Oreshnik and the eternal question about the... warhead There is a particular type of commentator who, after every Oreshnik strike, routinely asks the same question. Was there even a warhead in it this time? The question is meant to suggest that the weapon, without a classical explosive payload, is somehow fake or less dangerous. What it really reveals is that the person asking does not understand how the system works. A conventional ballistic missile carries explosives or a nuclear warhead. The destruction comes from the detonation at the target. The missile is essentially the delivery service. The Oreshnik works differently. It is an intermediate-range missile (range around 5000 kilometers) carrying multiple independently targetable reentry vehicles (MIRV). These reentry vehicles enter the atmosphere at roughly Mach 10 to Mach 12, with Russian sources claiming higher in some cases. That works out to 3 to 3.5 kilometers per second on terminal approach. This is where the physics comes in. Kinetic energy is calculated as E = 0.5 times mass times velocity squared. Velocity enters the equation as a square. A reentry vehicle of a few hundred kilograms, on impact alone, releases energy in the range of several tons of TNT equivalent. With multiple submunitions per missile, that adds up. A tungsten or steel core entering the ground at this speed produces temperatures of several thousand degrees through friction and compression shock. Bunkers and hardened installations are not destroyed by an explosion, they are destroyed by the sheer force and heat of the impact itself. The technical term is kinetic penetration. Now to the actual answer for the warhead-askers. Yes, the Oreshnik is nuclear-capable. This was part of the design from the start, not a retrofit, but a built-in configuration option. Russian officials have stated this openly. The carrier is there. The only question is what it carries. But that is exactly the point the warhead-asker skips over. The whole point of the Oreshnik is that even in its conventional configuration it achieves an effect that previously required nuclear weapons against hardened targets. To destroy an underground command bunker, historically you needed a small tactical nuclear weapon. Today a reentry vehicle at Mach 10 with a few hundred kilograms of mass is enough. No radioactive fallout, no crossing of the nuclear threshold, no political price attached to a nuclear use. In a strike on a major city, the nuclear configuration would, in this conflict, almost certainly not be deployed. Not because it does not exist, but because it is neither necessary nor politically tenable for that purpose. The conventional version is sufficient to send a message without crossing the threshold above which entirely different chains of escalation are set in motion. In short. The question "was there a warhead in it?" misses the point. The Oreshnik does not need a large warhead, because its velocity is the weapon. It can carry a nuclear warhead, at any time. It just does not do so in the current conflict, because it does not have to.show more

Zlatti71
36,837 次观看 • 3 个月前
One trader printing money with ClawdBot I’m not exaggerating.... What he built is pretty wild: He auto-trades BTC / ETH Focused on 15-minute up/down moves Catching CEX lags and inefficiencies No Wall Street setup No big team Just smart automation Profile: Copytrade: How it works: Short-term moves The system trades 15-minute ups and downs on major coins. It’s not long-term investing - it’s micro-timing. Exchange inefficiencies It looks for small price lags on CEXs and reacts fast. When there’s a mismatch, it jumps in. Scale & frequency 500+ trades per week. Each trade targets tiny edges. Those small gains stack and compound. The surprising part All of it came from prompting Claude to generate code. No dev degree needed. Bottom line High frequency Small edges Heavy compounding Automation over emotion.show more

winkle.
100,325 次观看 • 7 个月前
I tried MiniMax Design (H3) to see how it... handles real content creation. The workflow is simple. You just write a prompt or drop in an image, and it turns that into a dynamic video with motion, framing, and scene depth. No timeline to manage. No editing setup. No back and forth. What stood out to me: • Text to video and image to video both feel smooth. • It handles motion, camera angles, and flow on its own. • Output is fast, usually within seconds. • Works well for reels, quick ads, storytelling, and idea testing. It removes the hardest part: starting from scratch and turns your ideas into content in minutes. Instead of thinking, “How do I make this video?” You start with, “What do I want to create?” That shift alone makes it worth exploring. Try it here: #Hailuoshow more

Manish Kumar Shah
27,680 次观看 • 5 个月前
BREAKING: Iran fired ballistic missiles at Tel Aviv overnight... using cluster munitions. Process what that means. A conventional warhead hits one point. A cluster warhead releases dozens of submunitions, each weighing 2 to 5 kilograms of high-explosive fragmentation, scattering across a wide area after re-entry. One missile becomes dozens of weapons. The fire rate has collapsed from 90 missiles per day on Day 1 to approximately 10 on Day 24. Iran has 140 launchers remaining. The mathematics of 10 missiles per day sounds manageable until each missile contains a warhead that multiplies into dozens of independent kill zones across a city. Overnight impacts confirmed in the Tel Aviv and Ramat Gan area. Sirens across central Israel. Kiryat Shmona hit again in the north. Damage to buildings. Injuries reported. Magen David Adom responding. The IDF confirms cluster submunitions were deployed. Footage shows dispersal patterns consistent with Khorramshahr-4 warheads, each carrying 1,500 kilograms at Mach 8 to 16 with MIRV-capable cluster dispensers. Israel’s multi-layered defence is designed to intercept the parent missile before dispersal. Iron Dome handles short and medium range. David’s Sling covers the intermediate gap. Arrow-2 and Arrow-3 engage ballistic threats at altitude. The strategy works when the intercept happens above the dispersal altitude. When it does not, when a missile penetrates the outer layers and reaches its terminal phase, the submunitions scatter and no system can intercept dozens of 2-kilogram bomblets falling across a residential area simultaneously. Iran has lost 70 percent of its launchers. Its fire rate is 89 percent lower than Day 1. Its navy is destroyed. Its air force is gone. And it is still putting cluster munitions over Tel Aviv. That is not desperation. That is adaptation. Iran cannot match the volume of Day 1. So it changed the payload. Fewer missiles, each one carrying more weapons inside it. The fire rate declined. The lethality per round increased. The shift from conventional to cluster warheads is Iran compensating for launcher attrition with warhead complexity. The arithmetic of the war just changed from “how many missiles” to “how many submunitions per missile.” This is what makes the electricity ledger so dangerous. Iran has publicly absorbed strikes on hospitals, schools, and emergency centres without reciprocating against equivalent Israeli civilian infrastructure. It is conserving its 140 remaining launchers for the one target category it has reserved: electricity. If the 5-day power-plant pause collapses Saturday and Trump executes his threat, those 140 launchers will fire cluster-armed Khorramshahr-4s at Gulf and Israeli power stations, desalination plants, and grid nodes. A single cluster warhead detonating over a transformer yard does not damage it. It saturates it with dozens of bomblets that destroy equipment across the entire facility footprint. Cluster munitions are not designed for military targets. They are designed for area denial. And a power grid is the ultimate area target. Saturday is four days away. The launchers are armed with cluster warheads. The ledger is open. The targets are named. The only thing standing between the cluster munitions and the grid is a 5-day pause announced on a social media platform that Iran says does not correspond to any agreement it has made.show more

Shanaka Anslem Perera ⚡
72,496 次观看 • 5 个月前
I am in Ukraine to witness how a nation... keeps going amid cold and darkness, under constant threat to life, facing loss and horror, with air-raid sirens repeatedly reminding everyone how close the danger remains. Ukraine continues its resistance against brutal aggression, refusing to allow terror and imperialism to prevail. This fight is not only about Ukraine’s security. It is about Europe’s security. Our gratitude to Ukraine for standing its ground is immeasurable, and we will do everything we can to support it. Today, a sign inside a random building said everything Ukrainians are defending. Written plainly on the wall was the size of their country: 603,628 square kilometers. Period.show more

Margus Tsahkna
24,882 次观看 • 7 个月前
Elon Musk just said something that disqualifies most of... Silicon Valley. Musk: “If you’re gonna create a company, the first thing you should try to do is create a working prototype.” Not a pitch deck. Not a business model. Not a funding narrative wrapped in 40 slides designed to make something that doesn’t exist sound inevitable. A working prototype. That alone rules out most of the people who call themselves founders. Musk: “Everything looks great on PowerPoint. You can make anything work on PowerPoint.” That’s not a punchline. It’s an indictment. PowerPoint has no physics. No engineering constraints. No supply chain. No thermal limits. No gravity. Nothing that forces an idea to prove it deserves to exist in the physical world. It is the most effective tool ever built for making the impossible look funded. Spend long enough in that world, and the distance between something that works and something that looks like it works stops feeling important. That is the real damage. Musk: “If you have an actual demonstration article, even if it’s in primitive form, that’s much, much more effective for convincing people.” Even if it barely functions. Even if half of it is held together with tape. Even if it looks like it has no business working yet. Because a crude prototype carries something a polished deck never will. Proof. Not projected proof. Not modeled proof. Not “if we hit these assumptions” proof. The kind that sits on a table and either works or doesn’t. No narrative saves it. No charisma rescues it. No market-sizing slide covers for it. It just has to be real. That is the gap between Musk and the rest of the industry. Not intelligence. Not capital. Not ambition. He builds first. Then talks. Everyone else talks first. Then fundraises to find out if the thing could even be built. The distance between those two sequences is the entire history of why most things never get made. The professional world is engineered to produce one type of person. Someone who can describe, in extraordinary detail, what they would build if given the resources. Not someone who builds. MBA programs train you to present. Accelerators train you to present. Pitch competitions are literally scored on who presents best. The system does not reward builders. It rewards the performance of building. And the people deepest inside that system are the last ones who will ever notice. Musk landed a rocket on a drone ship in the ocean. Then caught a 23-story booster out of the sky with mechanical arms on the launch tower. He didn’t pitch that. He did it. Then the world watched and tried to process what it just saw. That is what separates someone who builds from someone who performs. PowerPoint is where ideas go to be believed. The prototype is where they go to be proven. Most careers begin and end in the first. Not because people can’t build. Because the performance felt so much like progress that nobody ever stopped to check.show more

Dustin
16,878 次观看 • 2 个月前
Opposition in the batters box isn't just a layer... of complexity, an obstacle to overcome, it is the central feature that gives meaning to movement. My sense is that many in the baseball community view the live batter as a linear step to master after mastering other lower complexity pieces, instead of the central feature that we design our training environments around. Part of me understands why this is the case. Pitching is in a challenging place training wise because the behavior of pitches, movements, etc. change so much when you go low effort. In addition we have some limits on volume each day due to throwing being the single fastest movement in sports. Other sports can do unique warmups to work on interpersonal distance (football/basketball/soccer) and tagging games for more of a martial arts context. I simply can't have all 100 throws of a pitchers workload that day be to a live batter. And while I see value in pulling an athlete out of context at times to work on different things, ultimately, the entirety of my paradigm to train pitchers is how to do the real thing MORE, to keep them embedded in a representative environment, rather than treating it as the final step in a linear progression.show more

Kyle Dupic
50,089 次观看 • 1 个月前
THIS GUY SHOWED HOW HIS BROTHER MAKES $15,000 A... MONTH MAKING ROBLOX GAMES WITH CLAUDE, WITHOUT WRITING A SINGLE LINE OF CODE HIMSELF No dev team. No publisher. No computer science degree. Just a $20 Claude subscription and the Roblox Studio game engine. He doesn't write code by hand or build game logic manually. Instead, Claude acts as his personal programmer. Here is how the system works: he types what he wants in plain text: "create a script for a leaderboard" or "write a coin saving system" → Claude generates a ready-to-use piece of Lua code → he copies and pastes it directly into Roblox Studio → the game gets packed with mechanics. And if something breaks, he just drops the error into the chat, and Claude provides detailed instructions, a list of fixes, and the corrected code. What would take a beginner weeks of studying documentation gets done in mere hours. The money here doesn't come from subscriptions but from inside the game: players buy in-game items, passes, and cosmetics with Robux -> Roblox's currency. The creator then officially exchanges the accumulated Robux for real money through the Roblox Developer Exchange program. He simply describes the kind of game he wants. Everything else -> from the very first line of Lua to a working game mechanic -> is handled by AI. What do you think Claude Fable is capable of and how much money can he make you?show more

Ridark
23,477 次观看 • 2 个月前
MALI FROM CAMBODIA POSTS VIDEOS OF HERSELF BATHING OUTSIDE... HER VILLAGE HOME. 2.1 MILLION VIEWS PER CLIP. THE VILLAGE IS REAL. THE HOUSE IS REAL. MALI IS NOT. Thread. The comments are full of men who think they found a girl from a village who does not understand what she looks like on camera. She understands. She was designed to look like she does not. The format is called "village bathing." Highest retention content category on YouTube Southeast Asia for three years. A girl washes herself outdoors in a rural setting. Poverty is the permission structure. The viewer is not watching a thirst trap. The viewer is watching daily life. That reframe is the entire business. The algorithm does not flag daily life. The viewer does not feel guilty watching daily life. The operator makes $15,000 a month from daily life that never happened. The village is the 7-Eleven of this clip. Nobody generates a girl bathing in dirt next to a stilted house. That is why it works. Luxury triggers suspicion. Poverty triggers trust. The viewer sees conditions nobody would fake and decides the girl is as real as the mud she is sitting on. The wet fabric does what every see-through top in this series does. But it has an alibi the others do not. She is not wearing a see-through outfit. She is bathing and the fabric got wet. The reveal is not a choice. It is a consequence. The viewer tells themselves it is just water. The operator designed the entire scene around that one excuse. She never looks at the camera. The operator learned what every clip in this series teaches. A girl who ignores the camera feels more real than one who performs for it. Mali is not performing. Mali is just bathing. That is the lie the entire account is built on. That village has never been lived in. That water has never been poured. But two million people watched a girl wash herself in a place that was never built. Mali is still bathing. The village is still empty.show more

framexin
15,957 次观看 • 13 天前
Jesus Personally Taught St. Faustina How To Survive Spiritual... Attacks… Here are 10 Instructions That Could Change Everything. 1. Trust Me completely → Distrust opens the soul to fear. Trust disarms it. Jesus repeatedly says that graces flow according to trust (Diary 1578) and that the soul that trusts Him is never lost (Diary 723). 2. Run to My Heart immediately in temptation → Do not dialogue with temptation. Refuge is victory. “When you are about to fall, run at once to My Heart” (Diary 1485). He warns not to engage temptation but to flee to Him immediately. 3. Reveal temptations in confession → Darkness loses power when brought into the light. “The priest is My representative… reveal your soul to him” (Diary 1725). Confession breaks the power of hidden struggles. 4. Do not be guided by feelings → Feelings change. The will chooses love. “Do not be guided by feeling, because it is not always in your power” (Diary 1760). Faithfulness is measured by the will, not emotion. 5. Practice humility and patience with yourself → Impatience weakens the soul. Humility strengthens it. “My daughter, know that you are what you are before Me… nothing more” (Diary 56). Jesus calls the soul to patience in weakness and growth (Diary 1488). 6. Accept suffering with love → United to Christ, suffering becomes redemptive. “You will save more souls through prayer and suffering than through activity” (Diary 1767). Suffering embraced in union with Him has real spiritual power. 7. Remain obedient to legitimate spiritual authority → Obedience protects against deception. “My will is that you should obey your confessor in everything” (Diary 639). Obedience is tied to safety in the spiritual life. 8. Avoid curiosity about the future → Trust God’s timing. Curiosity breeds anxiety. “Do not be curious about the future… I am your security” (Diary 293). He redirects the soul from curiosity to trust. 9. Reject discouragement immediately → Discouragement never comes from God. “Why are you afraid…? Do you not know that I am always with you?” (Diary 613). Jesus corrects discouragement with His presence and truth. 10. Fight with courage, knowing I am with you → Courage rooted in Christ causes fear to retreat “Do not fear… I am with you always” (Diary 586). “Fight like a knight… do not be discouraged” (Diary 450). 💬 Is your spiritual life built on discipline… or just motivation when you feel like it?show more

Dana Rachel 🇻🇦
35,671 次观看 • 4 个月前
I’m not surprised to see that Elliot Page just... falsely blamed a dry spell on being transgender. The truth is that Hollywood is brutal. Most people who get a gig never work again. A supporting part in a hit is not a promise of anything. The Odyssey made well over a billion dollars. Matt Damon, Tom Holland, Anne Hathaway, and Christopher Nolan put people in the seats. Page played Sinon, a role that is not even in Homer. Treating that credit like a guarantee of more work is a distorted view of how the business works. Page said it is “a little tricky to get cast now, for obvious reasons,” and that the industry still needs to adapt. Page is the one making identity the focus. Studios hire faces that sell tickets. They do not owe anyone a career because of a personal identity. Plenty of actors never get near a movie the size of The Odyssey no matter how hard they work. The ones who last treat the work as the priority and keep their private life off the press tour. Gratitude is what Page is really missing. The solution is simple. Stop making identity the pitch. Be good in the role. If the work is strong enough, the offers follow. If they do not, that is Hollywood. It always was.show more

Paul A. Szypula 🇺🇸
14,079 次观看 • 17 天前