ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 417
Obunachilar
-224 soatlar
-37 kunlar
-630 kunlar
Postlar arxiv
1 417
ืกื ืืื ืื ืืืืื ืืืืืจืื ืขื ืืฉืืชืืฃ ืืืคืชืืืืช. ืืขืืจ ืืงืื ืคืชืื ืคืืชื ืืืืื ืืืืช ืืงืืืื ืืืืื ืืืืคืชืืื ืืืจืื ืืืืื ืืืืืืื ืืฉืืืืืจ ืขื ืืขืจืืช ืคืจืืืงืฉื ืืืืชืืช. ืื ืืงืื ืืืืืืื ืฉืชืืืื ืื ืืื ืืช ืืืืืื:
https://github.com/antiwork/gumroad
1 417
ืฉืืืฉื ืืืจืื ืฉืืืืชื ืืืงืื ืฉื Gumroad
ืื Gumroad ืขืืจื ืืงืื ืคืชืื ืืื ืืืืื ืืช ืืฆืืื ืช ืืืืื ืขื ืืื ื ืคืจืืืงื ืจืืืืก ืืืื ืฉื ืืขืจืืช ืืืืชืืช. ืื ื ืืืื ืฉืืืืื ืืงืจืืืื ืืืื ืืืชืจ ืืื ืขื ืืจืืคื ืฉืืื ืืื ืื ื ืฉืืืฉื ืืืจืื ืืจืืืืื ืฉืงืืคืฆืื ืืขืื:
ืืืืืื ืฉืืืืื, ืงืื ืกืจื ืื ืืงืื ื ืื
ืืฉ ืืืื ืืืืืื ืืืืืจืื ืืืืจืืช ืืืช ืืืื ืืืืชื ืชืืงืื. ืืืื ืืืืฆื ืืืื ืืืกืืก ืื ืชืื ืื ืืฉืืืจืช ืื ืืืืืืื ืืืืชื ืชืืงืื ืืกืืจืช ืืช ืชืืงืืืช models ืืฆืืจื ืืงืืืื ืืกืืืื ืืื ืงื ืืืฆืื ืืืจืื. ืืฆื ืฉื ื ืืื ื ืชืืงืืืช ืืืขืจืืช ืงืืฆืื ืื ืขืืืจ ืื ื ืืืชืืฆื ืื ืืช ืืืืืืงื ืื ืืชืื ืืงืืฆื concerns ืฉืืกืืืจืื ืืชืืงืืืช. ืืื ืืื ืืขืื ืขื Concern-ืื ืฉื ืืขื ืื ืจืง ืืืืื ืืื ืืืฉื ืืืืืื Follower::AudienceMember ืฉื ืืขื ืจืง ืืชืื:
class Follower < ApplicationRecord
include ExternalId
include TimestampScopes
include Follower::From
include Deletable
include ConfirmedFollowerEvent::FollowerCallbacks
include Follower::AudienceMember
ืืืืงืืช ืืื ืืงืื
ืืืืืงื ืืืืืืช ืื ืืืื ืฉื ืื ืกืชื ืืืื ืืืื ืงืื ืืืืงื, ืืืืืื:
* frozen_string_literal: true *
require "spec_helper"
RSpec.describe Community do
subject(:community) { build(:community) }
describe "associations" do
it { is_expected.to belong_to(:seller).class_name("User") }
it { is_expected.to belong_to(:resource) }
it { is_expected.to have_many(:community_chat_messages).dependent(:destroy) }
it { is_expected.to have_many(:last_read_community_chat_messages).dependent(:destroy) }
it { is_expected.to have_many(:community_chat_recaps).dependent(:destroy) }
end
describe "validations" do
it { is_expected.to validate_uniqueness_of(:seller_id).scoped_to([:resource_id, :resource_type, :deleted_at]) }
end
describe "#name" do
it "returns the resource name" do
community = build(:community, resource: create(:product, name: "Test product"))
expect(community.name).to eq("Test product")
end
end
describe "#thumbnail_url" do
it "returns the resource thumbnail url for email" do
community = build(:community, resource: create(:product))
expect(community.thumbnail_url).to eq(ActionController::Base.helpers.asset_url("native_types/thumbnails/digital.png"))
end
end
end
ืื ื ืืืื ืฉืืืืง ืืืืงืืืืช ืืืืืงื ืืืจืฉืช ืงืฆืช ืืืืฅ ืืงืจืืื, ืืืืืื ืืืืืงื ืืืื:
it "returns affiliates sorted by # of products" do
order = [affiliate_user_1, affiliate_user_3, affiliate_user_2]
expect(seller.direct_affiliates.sorted_by(key: "products", direction: "asc")).to eq(order)
expect(seller.direct_affiliates.sorted_by(key: "products", direction: "desc")).to eq(order.reverse)
end
ืืืืืืช ืืืชื ืืืืื ืืชืืืืช ืืงืืืฅ ืืื ืืืืื ืืืื ืืฉืชืืฉ ื ืืฆืจ ืขื ืืื ืืืฆืจืื ืืืืฉืืช ืืืืชื ืืขืืืฃ ืืจืืืช ืืช ื create ืฆืืื ืืงืื ืืืืืงื, ืืื ืืืื - ืืืืช ืืืืืงืืช ืืืืืืื ืืจืฉืืืื. ืืฉ ืืื ืืืืงืืช ืืืืืื, ืืืืงืืช ืืงืื ืืจืืืจืื ืืืืืงืืช ืืขืจืืช.
ืคืจืื ืืื ื ื ืจืื ืืืชืืจ
ืืืืจืื ืืฉืชืืฉืื ืืจืืืืก ืขืืืจ ืืฉืจืช ืืจืืืงื ืืฆื ืืงืื. ืื ื ืื ืืฆืืชื ืืืืงืืช ืืงืืืคืื ื ืืืช ืืฆื ืืคืจืื ืืื ื ืืื ืืงืื ืขืฆืื ืืื ื ืจืื ืื ืืจืื ืคืืืช ืืกืืืจ: ืงืืฆืื ืฉื ืืืืช ืืืืคื ืฉืืจืืช, ืคืื ืงืฆืืืช ืฉืืืืืจืืช ืืชืื ืืงืืืคืื ื ืืืช, ืงืื ืืืืืืงื ืืชืื JSX, ืืืืืคื ืืืื ืืจืืฉื ืฉื ืคืืืช ืชืฉืืืช ืื.
ืืืืื ืงืื ื ืืืคืงื ืืื ืฉื ืืขื ืืืืืื ืืืื ืฉื textarea ืืฉืืชืืื ืืฉืชื ื:
React.useEffect(() => {
if (!ref.current) return;
ref.current.style.height = "inherit";
ref.current.style.height = \${ref.current.scrollHeight}px\;
}, [props.value]);
ืฉืืื ื ืืื ืืืชืจ ืืืชืื ืืืชื ืืชืืจ layout effect ืื ืืื ืืื ืืืืชืจ ืขืืื ืืืืจื ืืืืฉืชืืฉ ื CSS.
ืื ืืืื ืืืชืจ ืืืื ืืืืืจื ืืฉืืืจ ืืืืืงื ืืชืื ืงืื ืืงืกื ืืืฉื ื DomainSettings.ts ืฉืืื:
type DomainSettings = {
scheme: string;
appDomain: string;
rootDomain: string;
shortDomain: string;
discoverDomain: string;
thirdPartyAnalyticsDomain: string;
};
const Context = React.createContext<DomainSettings | null>(null);
ืฉืืืืจืช ืฉืื ืคืขื ืฉืืืืฉืื ืืคืชื ืืืืืืงื ืืฉืชื ื ืื ืืงืืืคืื ื ืืืช ืฉืืงืฉืืืืช ืื ืืืคืชืืืช ืืืจืื ืืชืจื ืืจื ืืืืฉ, ืื ืฉืคืืืข ืืืืฆืืขืื.1 417
ืื ืืฉ ืืื ืื ืฆืจืื (ืื: ืชืืืืจื ืื ืืช ืืืืืืืช)
ืืจืื ืฉื ืื ืืืื ืืืงื ืืื ืื ืฉื ืคืจืืืงื ืืืชืื ืชืื ืืืชื ืืื ืืฉืืืช ืืื ืืื ืืืืืืช ืืืฆืืืืช: ืื ืฉื ืคืจืืืงื ืืื ืืืจืืฉืืช, ืืคืขืืื ืืืืืืช, ืืื ืื ื ื ืืกืื ื ืืื ืืช ืืช ืืงืื ืฉืืชืืื ืืื ืฉืืฉืจืื ืืช ืฉืื ืื ืืืจืืฉืืช ืืื ืฉืืื.
ืืจืื ืฉื ืื ืืืื ืืืงื ืืื ืืคืชืืื ืืื ืืื ืืคืืชืื ืืืชื ืกืื ืฉื ืืฉืืืช ืืื ืืื ืืืืืืช ืืืฆืืืืช: ืื ืื ื ืจืฆืื ื ืืฉืืชื ืืืงืื ืืืขืจืืช ืืื ืืื ืืช ืืืกืืจืงืฆืืืช ืืืืืช ืืืชืจ ืืื ืืื ืืคืืชืื ืจืฆื ืงืื ืขืืื ืืืืจ, ืืงืกืืืื ื ืขืฉื ืจืืคืงืืืจ ืืกืคืจืื ื ืืื.
ืืื ืคื ื AI ืืืืื ืืฉื ืืช ืืช ืืชืืื ื. ืืคืชืืื ืืืืื ืืกืชืืืื ืขื ื AI ืืืืืืื ืขื ืืจืืข ืฉืื ืืฆืืจืื ืืืชืื ืืืชืจ ืืืกืืจืงืฆืืืช ืื ื AI ืืื ื ืืช ืืงืื ืืฉืืืื. ืื ืฉื ืคืจืืืงื ืืืืื ืืกืชืืืื ืขื ืืขืจืืช ืฉืงืืืื ื base44 ืืจืืฆืื ืืงืื ืืืฆืจ ืืืื ืืืืคืชืืื ืฉืืื.
ื AI ืืื ืืืืืืช. ืืื ืืืืฃ ืืืืจืืืช ืื ืืคืฉืจ, ืื ืืืื ืขืืฉืื, ืืื ื ืจืื ืืฃ ื ืืืชื ืืื, ืืื ื ืจืืืช ืงืืืคืื ื ืื ืืืื ืืจืืืงื, ืืื ืืชืื ืืกืคืจ ืฉืฆืจืื ืืขืฉืืช. ืืื ืคืืชืื ืชืืื ื ืื ืื ืจืง ืกืคืจ ืืืืื, ืืืืืืืืช ืฉืื ื ืืฉ ืืงืื. ืื ืื ืฉืืืื ืืคืฉืจื ืืื ืืคืฉืจื ืืืืืช ืืืฉืื ืื ืืืฉืื ืฉืืฉืื ืืืืฅ ืืงืืคืกื, ืฉื ืืกื ืืฉืื ืฉืืืื ืื ืืฆืืื, ืฉืื ื ืืฉืื ืฉืื ืืื ืืจืืจ ืฉืืืื ืืคืฉืจื. ืืื ืื ืืจืืืืืฆืื ืืงืื ื ืฉื ืืืขืจืืช ืฉืืื ืืืชืจ ืืฆืจืื ืืืืื.
ืดืืื ืื ื ืจืืฆื ืฉืื ืืขืืืืด ืื ืืฉืคื ืฉ AI ืื ืืืื ืืืืื. ืืื ืืืืืง ืืืฉืคื ืฉืื ืื ื ืฆืจืืืื ืืื ืืืชืงืื.
1 417
2. ืงืืื ืืืื ืืืืืื ืืืจืืฅ ืืช ืืืื ืืกืคืจ ืคืขืืื. ืืชืืฆืื ืืื ื ืืืคืขืืช ืืืจื ืืืงืฆืื ืืืืืื ืจืืฆื ืืืืฆืข ืคืฉืื ืืืจื ืืืคืกืงืช ืืฉืืืืฉ ืืืื, ืื ืฉืขืืื ืืืืืื ืืืขืืืช ืงืื ืกืืกืื ืืืืช ืื ืืืืช ื ืืชื ืื ืืขืืื ืขื ืืืืข ืืืืชื. ื ืกื ืืืจืื ืืงืืื ืืืฆืืจ 10 ืงืืฆืื ืืืคืกืืงื ืืืชื ืืืืฆืข ืืื ืืจืืืช ืฉื ืชืงืขืชื ืขื ืืืง ืืืงืืฆืื.
3. ืืืชืจ mcp.so ืชืืืื ืืืฆืื ืืืื ืฉืจืชื MCP ืฉืื ืฉืื ืืืจืื ืืชืื. ืืืืืฅ ืืงืจืื ืืช ืืงืื ืืคื ื ืฉืืชืงืื ืื.
1 417
ืืื ืืืืื ืืืืืื ืขื MCP
ืคืจืืืืงืื MCP ืืื ืืืจื ืฉืื ื ืืืืกืืฃ ืืืืืืช ืืกืืื ื ื AI ืฉืื ืื ื ืืจืืฆืื ืขื ืืืืฉื. ืืชืืชื ืืคื ื ืืื ืืืื ืขื ืืจืขืืื ืฉื ืฉืืืืฉ ืืืืื ืืชืื ืืืื ืฉืคื. ืืืื ื ืฉื ืฉืืืื ืฉืคื ืืกื ืืื ืงืืจื ืืืืชื ืืงืกื, ืืจืื ืืื ื AI ืฉืืฉ ืื ื ืืฉืืืื ืืืื ืฉืคื ืขื ืงืื ืฉืขืืืฃ ืืช ืืืชื, ืืฉืคืจ ืงืฆืช ืืช ืืงืื ืืคื ื ืฉืืื ื ืฉืื ืืืืื ืืฉืคื ืืขืืฉื ืืฉืื ืขื ืืคืื ืฉื ืืืื ืืฉืคื. ืืืืืืช ืืืืื ืจืืื ื ืฉืื ืื ื ืืืืืื ืืฉืื ืข ืืช ืืืื ืืฉืคื ืืฉืชืื "ืจืืืื" ืืคืื ืฉืื, ืืื ืืกืืื ืฉืขืืืฃ ืืช ืืืื ืืฉืคื ืืืื ืืชืคืืก ืจืืืื ืืื ืืืืฉืชืืฉ ืืื ืืื ืืืจืืฅ ืงืื.
ืคืจืืืืงืื MCP ืืื ืืกื ืืื ืืจื ืคืืจืืืืช ืื ืกืืื ืืืงืฉ ืืืืื ืฉืคื ืืฉืชืื ืืช ืืืชื ืจืืืื ืืืคืขื ื ืืช ืืคืื ืฉื ืืืื ืืฉืคื.
ืืคืจืืืืงืื MCP ืื ืื ื ืืืืืจืื ืืืืืืช ืืคื ืงืืืืจืืืช:
1. ืืืื - ืืืืืืช ืฉืืืจืืืช ืืฉืื ืื ืืืฉืื ืืขืืื
2. ืืฉืืืื - ืืืืืืช ืฉืงืฉืืจืืช ืืืฉืืืช ืืืืข ืืงืจืืื ืืืื
3. ืคืจืืืคืืื - ืืืืืืช ืฉืงืฉืืจืืช ืืงืืฆืืจื ืืจื ื UI
ืืื ืื ืื ื ืจืืฆื ืฉืืคืืืงืฆืืืช Claude Desktop ืฉืจืฆื ืืฆืื ืขื ืืืืฉื ืชืืื ืืืฆืืจ ืงืืฆืื ืขื ืืืืกืง ืื ื ืืืื ืืืฆืืจ "ืืื" ืฉืืืฆืจ ืงืืฆืื. ืื ืื ื ืจืืฆื ืฉืืชืื ืฆ'ื ืขื ืืืคืืืงืฆืื ืืื ืชืืื ืืงืจืื ืชืืื ืฉื ืงืืฆืื ืืชืืงืืื ืืกืืืืช ืื ื ืืืกืืฃ ืืช ืืงืืฆืื ืืชืืจ ืืฉืื ืืงืจืืื.
ืืคืฉืจ ืืืฉืื ืขื "ืฉืจืช MCP" ืืชืืจ ืชืืกืฃ ืืืคืืืงืฆืืืช ืฉืืื ืขื ืืืื ืฉืคื, ืืื ืฉืืคื ืื ืฉืืื ืืชืืืจ ืืืืชื ืืืคื ืืืจืื ืืืื ืืคืืืงืฆืืืช ืฉืืื, ืืืืืื ืฉืื ื ืื Claude Desktop ืชืืื ื MCP ืืื ืื Cursor ืืืื ืืืืืง ืืืืชื ืคืจืืืืงืื ืื ื ืืืื ืืชืช ื Cursor ืืืคืฆืื ืืืจืืฅ ืงืื ืืืืืืืืช ืื ืืงืจืื ืืืืข ืืืกืืก ืื ืชืื ืื.
ืืืืื: ืฉืจืช MCP ืืืฆืืจืช ืงืืฆืื
ืืฉืืื ืืืืืื ืืืื ืืืชืงืื ืืช ืืคืืืงืฆืืืช Claude Desktop (ืื ืืืื ื ืืขืืื ืื ืขื ืืชืืื ืืช ืืืื ืืืช ืฉื ืงืืื). ืืืืจ ืืื ืืชืื ืกืืืื ืืืจืืืืืืช ืืืฉื ืฉื ืคืืืชืื ืื ื ืืืฆืจ ืืช ืืงืืืฅ ืืื:
* server.py *
import os
from mcp.server.fastmcp import FastMCP
HOME = os.environ["HOME"]
* Create an MCP server *
mcp = FastMCP("Demo")
* Add an addition tool *
@mcp.tool()
def create_empty_file(name: str):
"""creates a new empty file in the home directory"""
try:
filename = f"{HOME}/{name}"
print(f"Trying to create file {filename}")
with open(filename, 'a', encoding='utf8'):
pass
except Exception:
raise Exception(f"Failed to create file {filename}")
@mcp.prompt()
def review_code(code: str) -> str:
return f"Please review this code:\n\n{code}"
ืืงืืืฅ ืืืื ืืื ืืื ื prompt ืืื. ืืืื ื ืงืจื create_empty_file. ืืฉ ืื ืคืจืืืจ ืืฉื name ืืืื ืคืฉืื ืืืฆืจ ืงืืืฅ ืจืืง ืืืฉ ืืชืืงืืืช ืืืืช ืืฉื ืฉืืืจืชื. ืืืจืืืช ืืชืืขืื ืฉื ืืคืื ืงืฆืื ื ืฉืืจืช ืืชืืจ ืืชืืขืื ืฉื ืืืื.
ืื ืืกืฃ ืืืื ืืืื ืคืจืืืคื ืืฉื review_code ืฉืืืื ืคืจืืืจ ืืื ืืฉื code ืืืืืืจ ืคืจืืืคื ืกืื ืืจืื ืฉืขืืืฃ ืืช ืืงืื ืฉืืขืืจืชื.
ืฉืืืืฉ ืืฉืจืช ืืืืฉ
ืืฉืืื ืืืชืงืื ืืช ืืฉืจืช ืืืืฉ ืืงืืื ืื ื ืืจืืฅ ืืฉืืจืช ืืคืงืืื:
pip install "mcp[cli]"
ืืืงืื ืืช ืืืื mcp ืืชืื ืกืืืืช ืืคืืืชืื ืืืืจืืืืืืช ืฉืื. ืขืืฉืื ืื ื ืืคืขืื:
mcp install server.py
ืืฉืืื ืืืืจ ืืช ืืฉืจืช ืฉืื ืืืคืืืงืฆืืืช Claude Desktop.
(ืืืคืืืงืฆืืืช ืืืจืืช ืืืชืงื ื ืชืืื ืฉืื ื ืื ืืคืืืงืฆืื ืขื ืืฉืืื ืฉืื).
ืืืจื ืืืชืงื ื ืืคืขืืืื ืืืืฉ ืืช ืงืืื ืืืคืฉืจ ืืืงืฉ ืืื ื ืืฆ'ืื ืืืฆืืจ ืงืืฆืื. ืงืืื ืืืื ืฉืืฉ ืื Tool ืฉืืืืข ืืืฆืืจ ืงืืฆืื ืืืฆืืข ืืืคืขืื ืืช ืืืื ืืืืจื ืืืฉืืจ ืฉืืื ืืชืื ืืฆ'ืื ืืืื ืืืคืขื ืืืงืืืฅ ืื ืืงืืฆืื ื ืืฆืจืื.
ืื ืืืื ืืคืจืืืคื? ืืืชื ืื ืื ื ืืคืขืืืื ืืจื ืืชืคืจืืืื. ืืืคืืืงืฆืืืช Claude Desktop ืืืืืง ืืชืืช ืืฉืืจืช ืืฆ'ืื ืืฉ ืืืืงืื ืฉื ืฉื ื ืืืจืื ืืชืืืจืื, ืืืืฆืื ืขืืื ืืื ืืืืจืื ื Choose an integration ืืช ืืคืจืืืคื ืฉืืฆืจื ื. ืืืคืืข ืืกื ืงืืคืฅ ืื ื ืชืืงืฉ ืืืงืืื ืขืจื ืืคืจืืืจ code (ืืคืจืืืจ ืฉืืืืจื ื ืืคืื ืงืฆืื) ืืืืจื ืืืฉืืจ ืืืืจืืืช ืฉืืืจื ืืืคืื ืงืฆืื ื ืฉืืืช ืืืืื ืืฉืคื ืืชืืจ ืืคืจืืืคื.
ืื ืืืื
ืืื ื ืืกืืืื ืฉืื ื ืืืืืฅ ืื ืืื ืืขืฉืืช ืขื ืืืื ืืฉืคื ื MCP-
1. ืืืื ืืฉืคื ืืืืื ืืงืจืื ืืืื ืื ืชืืืืจ ืืืื ื ืจืื ืื ืืชืืื ืืืงืฉื ืฉืื ื ืื ืืืื ืฉืืื ืืืืข ืื ืืืื ืขืืฉื. ื ืกื ืืฉื ืืช ืืช ืฉื ืืคืื ืงืฆืื ืืชืืืืจ ืืืื ืืื ืืืืื ืื ืขืืื ืืื ืื ืขืืื, ืืืื ืืคืฉืจ ืืืืื ืงืฆืช ืืช ืงืืื. ืืืจื ืื ื ืกื ืืืืกืืฃ ืขืื ืคืื ืงืฆืืืช ืขื ืฉืืืช ืืืืื ืื ืฉืื ืื ืืชืจืื ืืื ืงืืื ืืชืืืื ืขื ืงืื ืคืืืงืืื. ืฉืืื ืื ืื ืฉืืกืคืืง ืืฉื ืืช ืืช ืงืืืฅ ื server.py ืืืืคืขืื ืืืืฉ ืืช ืงืืื ืืื ืฉืืื ืืฉืชืืฉ ืืืืื ืืืืฉืื, ืืืืืจ ืื ืฉืืจืืฅ ืืช ืืฉืจืช ืื ืืคืืืงืฆืืืช ืงืืื ืขืฆืื.1 417
ืชืืืืจืช: ืื ืืชื ืืืื ืืขืฆื ืืคืืชืื ืชืืื ื
ืื ืืื ืืื ื AI ืื ื ืืจืืืฉ ืฉืืืื ืืืืืืจ:
1. ืื ื ืืืื ืืงืจืื ืงืื ืืืืืื ืืืชื.
2. ืื ื ืืืื ืืืืื ืืื ืืขืจืืช ืืชื ืืืช ืืื ืฉืืื ืืชื ืืืช, ืืืื ืืื ืชืืฉืืจ. ืืืช ืืกืืื ืฉืืืขืชื ืืคืืชืื ืชืืื ื. ืื ืื ืฉืืฉืืืจ ืืืชื ืืื.
3. ืื ื ืืืื ืืคืชืืจ ืืขืืืช ืฉืงืฉืืจืืช ืืืืฆืื ืืืข ืืืืืื ืืื ืืืืฆื ืืช ืืืืืข ืฉืื ืืฆืืจื ืฉืชืืคืฉืจ ืื ืืขื ืืช ืืืจ ืขื ืฉืืืืช ืืขื ืืื ืืช.
4. ืื ื ืืืื ืืืฉืื ืืื ืืืจืื ืืืืืื ืืืฉืชื ืืช ืืขืชืื, ืืืื ืืืจืื ืืช ืืืืืข ืืืงืื ืืื ืฉืืืื ืงื ืืืชืืื ืืช ืืืขืจืืช ืืฉืื ืืืื ืขืชืืืืื.
ืื ืืฉืืชื ืืืืจืื ืฉืขื AI ืื ื ืืื ื ืืขืจืืืช ืคื 10 ืืืชืจ ืืืจ ืืชื ืืชืืืื ืื ืฉื AI ืืื ื ืืขืจืืช ืืื ืฉืืฆืืจื ืืืฉืื ืขื ืื ืืืฉืืขืืืืช ืฉื ืื ืฉืืจืช ืงืื ืื ื ืืืฉืฉ ืฉืืืื ื ืืืืืื ืืืชืืืื.
ืืืฉืืื ืฉืื ื ืืืื ืืื ืืืืื ืืืื ืืืงืื ืืขืืืื ืฉืื ื ื AI ืืืื ืืืืขื, ืืืืื ืืืงืื ืื ืจืง ื ืจืื ืืืืื ืืื ืืืืขื ืืื ืืขืฆื ืืื ืฉืืชื ืืงืื ืืืงืฉืื ืฉืืืื ืื ื ืงืฉื ืื ืืจื ืืขืชืื.
1 417
ืื ืื ืื ืืจืื?
ืืื ืฉืื ื ืขืืื ืขื ืงืืคืืืืื ืื ื ืืงืื ืืฉืืืืช ืืขื ืืื ืืช: ืืฉืชื ื ืกืืืื ืืืืชืื ืืชืืงืืืช ืืืช ืฉื ืืืื ืื ืืจืื, ืืคืชื API ืืืืชืื ืืขืจื ืื ืืืงื ืืื ืฉืืชืืื ืืคืืจืื, ืฉื ืืฉืชืืฉ ืืกืืกืื ืืงืืืื ืืฉืืื ืืืืืืืืช ื admin ื admin.
ืืจืืจ ืืื ืื ืงืืจื - ืืืื ืฉืคื ืื ืืืืข ืืืืืื ืืื ืืืืข ืืืฉื ืืืืืข ืฆืืืืจื, ืืื ืื "ืืืื" ืื ืืืชืจ ืืื ืืกืืจ ืืืฆืืข. ืืจืืจ ืฉืืืืจืืช ืฉืืคืขืืืืช ืืช ืืืืื ืืฉืคื ืืชืงืื ืืช ืขืืืื ืื ืื ืื ื ืืื ื ืืฆื ืืืจื ืืื ืื ืืคืฉืจ ืืชืคืืก ืืื.
ืืืื ืืฉืื ืื:
1. ืขืืื ื AI ืืื ืืืฉ ืืืื ืขืืื ืืืฉ ืืฉ ืืื ืกืืฃ ืืขืืืช ืืืืืช ืืืืข. ืื ืฉ Cursor ืฉืืื ืืฆื "ืคืจืืืืช" ืื ืืืืจ ืฉืืงืื ืฉืืื ื ืฉืืจ ืขื ืืืืฉื ืฉืืื (ืื ืืกื ืืื ืืืืจ ืฉืงืจืกืจ ืื ืฉืืืจืื ืืฆืื ืืช ืืงืื ืฉืืื).
2. ืงืื ืื ืืืืืื ื ืืชื ืืืืืชื ืืื ืฉื ืืชื ื AI ืืืชืื ืืืชืจ ืงืื. ืื ืื ื ืขืืืื ืื ืืืืขืื ืื ืืืื ืืืขืืืช ืืืืคืืื ืืืช ืืืืื ืช ืืืืื ืืงืื ืฉ AI ืืืชื. ืืขืืื ืืื ืืื ืื ืืืื.
3. ืคืจืืืืงืืืื ืืืืืืืื ืืฉืืืืฉ ืืืืื ืขืืืื ืื ืงืืืืื. ื MCP ืืฉ ืืขืืืช ืืืืจ ืื ืื ื ืจืืืื ืืชืงืคืืช ืฉืืชืืกืกืืช ืขื ืืชืงื ืช ืืืื ืืืื ืืื ื IDE.
ืืืขืจืืืช ืจืืืฉืืช ืขืืืื ืืืื ืืืฉืชืืฉ ืืืืฉืง ื Chat ืืืืงืคืื ืขื ืืงืจื ืขื ืืงืื ืฉืืืืืงืื ืืฆืื ืืืขืชืืงืื ืืื ื. ืืงืฆื ืืฉื ื ืืคืจืืืงืื ืฆื ื POC-ืื ืืืืื ืฉืืื ืืขืื ืืืฉืชืืื ืขื ืืืื ืื ืืื ืื ืฉืืืฉืืจ. ืื ืื ืฉืืืืฆืข ืฆืจืื ืืงืื ืืืื ืืืืืืช ืงืฉืืช ืืืืื ืืื ืืจืฆืื ืืืฉืชืืฉ ืืืื ืืคืืชืื ืืื ืืชืงืืืื ืืฆืืจื ืืฉืืืจื ืขื ืกืื ืืจืืื ืฉื ืคืืชืื ืืืืืื.
1 417
import { useRouter } from 'next/navigation';
import { RefreshContext } from '@/lib/refresh-provider';
export default function AutoRefresh() {
const router = useRouter();
const addClients = use(RefreshContext)
useEffect(() => {
addClients(1);
return () => addClients(-1);
}, [router]);
return null;
}
ืขืืฉืื ืื ืืฉื ื ืืื ืคืขืืื ื ืืกืืฃ ืืืชื ืืขืืื ื interval ืืจืืฅ ืจืง ืคืขื ืืืช, ืืืฉืื ืืืื ืืืชืจ ืืืื ืื Auto Refresh ืขื ืืขืืื ืืจืืขื ืื ืืืืืืืื ืืืคืกืง.1 417
ืจืืขื ืื ืืืืืืื ืืืืืข ืฆื ืฉืจืช ื next.js
ืงืืืคืื ื ืืืช ืฆื ืฉืจืช ื node ืืืืืืช ืืขืฉืืช ืืืจืื ืืืคืืืื, ืืืฉื ืืงืจืื ืงืืืฅ ืืืขืจืืช ืืงืืฆืื ืืืืฆืื ืืืชื ืืงืืืช ืขื ืืืกื ืื ืืงืจืื ืืืืข ืืืกืืก ืื ืชืื ืื. ืืืขืื ืืชืืืื ืืฉื ืชืื ื ืฆื ืืฉืจืช ืืืื ืืชืขืืื ืื. ืคืขื ืืฉืืืชื ืื ื ืงืืืคืื ื ืืช ืฆื ืืงืื ืฉืงืจืื ืืช ืืืืืข ืขื react-query ืืืขื ื ืืจืขื ื ืืช ืืืืืข ืื ืืื ืฉื ืืืช ืื ืืื ืืช Web Socket ืืื ืืงืื ืขืืืื ืืืฉืจืช ืืฉืืืืืข ืืชืขืืื. ืืคืืกื ืืืื ื ืจืื ืืืืื ืงืฆืจื ืืื ืืขืฉืืช ืืืจ ืืืื ืืืงืืืช ืืงืืืคืื ื ืืืช ืฆื ืฉืจืช.
ืงืืืคืื ื ืืช ืฆื ืฉืจืช ืฉืืฆืืื ืชืืื ืฉื ืงืืืฅ
ืืงืื ืืื ื
page.tsx ืืื ืงืืืคืื ื ืืช ืฆื ืฉืจืช ืฉืืฆืืื ืชืืื ืฉื ืงืืืฅ ืืืืื ืชืืืช ืืงืกื:
import fs from 'node:fs/promises';
export default function Home() {
const data = fs.readFile('README.md', 'utf-8')
return (
<div>
<input type="text" />
<div>
{data}
</div>
</div>
)
}
ืจืืขื ืื ืืืืืืื ืืชืื ืงืืืคืื ื ืืช ืฆื ืืงืื
ืืืฉืจ ืืชืืื ืขื ืืืืกืง ืืฉืชื ื ืืื ืฉืื ืฉืื ืื ืขื ืืืกื. ืืืฉืชืืฉ ืืจืื ืืช ืืชืืื ืืืืฉ ืจืง ืืฉืืืืฅ ืจืืขื ืื. ืืคืขืืื ืื ืืกืคืืง ืืื ืืื ืืคืขืืื ืื ืื ื ืื ืจืืฆืื ืขืืืื ืืืืืืื. ืืจื ืืืช ืงืื ืืืฆืื ืชืืื ืืช ืืืืืข ืืขืืื ื ืืื ืืืคืขืื "reload" ืฉื next ืืืืคื ืืืื. ืื ื ืืืชื ืงืืืคืื ื ืืช ืฆื ืืงืื ืืืฉื ืืฉื AutoRefresh ืขื ืืชืืื ืืื:
'use client';
import { useEffect } from 'react';
import { useRouter } from 'next/navigation';
export default function AutoRefresh() {
const router = useRouter();
useEffect(() => {
const interval = setInterval(() => {
router.refresh();
}, 1000);
return () => clearInterval(interval);
}, [router]);
return null;
}
ืืืืกืืฃ ืืช ืืงืืืคืื ื ืื ื page:
import fs from 'node:fs/promises';
import AutoRefresh from './auto-refresh';
export default function Home() {
const data = fs.readFile('README.md', 'utf-8')
return (
<div>
<AutoRefresh />
<input type="text" />
<div>
{data}
</div>
</div>
)
}
ืืขืืฉืื ืืืคืืคื ืฉืื ืืืฉื ืื ืฉื ืื ืืช ืืงืืืคืื ื ืื ืืืจืื ืืจืช ืืืฉืจืช ืืืขืืื ืืช ืืขืืื ืขื ืืชืืื ืืืืฉ. ืืืฃ ืืฉืื ืื ืฉืืื ืืจืืกื ืฉื ื input, ืืืืืจ ืงืืืคืื ื ืืืช ืฆื ืืงืื ืฉืขืืืื ื ืืฆื ืืืงืื ืืฉืืจื ืขื ืขืจืื ืืืจืืช ืืจืืขื ืื.
ืื ืืืื
ืืืืื ืฉืืขืื ื ืืืืฉ ืื ืฉื ืื ืืืฆืจืช ืขืืืก ืืืืชืจ ืขื ืืฉืจืช. ืื ืื ื ืืืืืื ืืฉืคืจ ืืช ืืื ืื ืื ืื ื ืืกืืฃ SSE ืื Websockets ืฉืืฉืืื ืืืงืืืืช ืืืืขื ืื ืคืขื ืฉืืฉ ืฉืื ืื ืืืืืข ืืฆื ืฉืจืช, ืืื ืืืคืืคื ืืืขื ืืืืฉ ืืช ืืขืืื ืจืง ืืืจื ืฉืืงืื ืืืืขื ืืื.
ืืืืกืจืื ืืฉื ื ืืืืฉื ืื ืืื ืฉืื ื ืจืฆื ืืฉืื ืืช ืงืืืคืื ื ืืช AutoRefresh ืืืชืจ ืืคืขื ืืืช ืืืืฉืื. ืื ืื ืื ืืืชืจ ืืืฆืื ืืืื ืืืฉืชืืฉ ื Provider ืืื ืืืคืขืื ืืช ืืืคืงื ืืืฉืืืจ ืืื ืงืืืคืื ื ืืืช ืฆืจืืืืช ืืช ืืจืืขื ืื. ืื ืงืืืคืื ื ืื ืฉืชืฉืื ืืช AutoRefresh ืชืขืื ืืช ืืืื ื ื-1 ืืืืชื Provider ืืคืขืื ืืช ืืืืืืจ ืจืง ืื ืืกืคืจ ืืงืืืคืื ื ืืืช ืฉืืฉืชืืฉืืช ื AutoRefresh ืืขืืื ืืืื ื-1.
ืืืืฉืช ื Provider ืื ื ืืืชื ืงืืืฅ ืืฉื refresh-provider.tsx ืขื ืืชืืื ืืื:
'use client';
import { useEffect, useState, createContext } from 'react';
import { useRouter } from 'next/navigation';
export const RefreshContext = createContext((n: number) => {})
export default function RefreshProvider({ children }: { children: React.ReactNode }) {
const [clients, setClients] = useState(0);
const router = useRouter();
const addClients = (n: number) => setClients(c => c + n);
useEffect(() => {
if (clients > 0) {
const timer = setInterval(() => {
router.refresh();
}, 1000);
return () => {
clearInterval(timer);
}
}
}, [router, clients > 0]);
return (
<RefreshContext value={addClients}>
{children}
</RefreshContext>
);
}
ืื ื ืืขืืื ืืช layout.tsx ืืื ืืืฉืชืืฉ ืืคืจืืืืืืจ:
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body className={\${geistSans.variable} ${geistMono.variable}\}>
<RefreshProvider>
{children}
</RefreshProvider>
</body>
</html>
);
}
ืืืขืืื ืืช auto-refresh ืืืืคื ืืื:
'use client';
import { useEffect, use } from 'react';1 417
if __FILE__ == $PROGRAM_NAME
puts solve_file('input.txt')
end
ืฉืืคืืจ? ืื ื ืื ืืืื.1 417
ืคืืชืจืื Advent Of Code 2024 ืืื 7 - ืื ืืืืืื, ืื ื ืืืืข ืืฉื ืืช ืืช Integer
ืืื 7 ืฉื Advent Of Code ืื ืืื ืืกืืื ืืืืืืจ ืื ืืื ืืืฃ ืฉืืคืฉืจ ืืจืืื ืืฉื ืืช ืืช ืืืืืงืืช ืืืืื ืืช ืืฉืคื. ืืืื ื ืจืื ืื ืืื ืฉื.
ืืืชืืจ
ื ืชืื ืงืื ืฉืืืจืื ืืชืืฆืื ืืืืคืจื ืืื:
190: 10 19
3267: 81 40 27
83: 17 5
156: 15 6
7290: 6 8 6 15
161011: 16 10 13
192: 17 8 14
21037: 9 7 18 13
292: 11 6 16 20
ืื ืื ื ืฆืจืืืื ืืืฆืื ืื ืืคืฉืจ ืืืืกืืฃ ืืช ืืืืคืจืืืจืื ืคืืืก ืืืคืื ืืื ืืืืคืจื ืืื ืืื ืืืืืข ืืชืืฆืื. ืืืืง ืืฉื ื ืฉื ืืืชืืจ ืืืกืืคืื ืื ื ืืืคืจืืืจ ืืฉื || ืฉืืฉืืขืืชื "ืฉืจืฉืืจ" ืฉื ื ืืืคืจื ืืื ืื ืฉ:
10 || 19 = 1019
ืืจืืฆืื ืืจืืืช ืื ืืคืฉืจ ืืืืืข ืืชืืฆืื ืขื ืืืืคืจืืืจ ืืืืฉ.
ืคืืชืจืื
ืืืืง ืืืจืืื ืฉื ืืคืืชืจืื ืืงื ืืกื ืืื ืืกืคืจ ืฉืืจืืช ืืจืืื:
def count_options(target, values)
results = [:+, :*].repeated_permutation(values.size - 1).to_a.map do |seq|
values[1..].zip(seq).reduce(values[0]) { |a, (v, op)| a.send(op, v) } == target
end
results.count(true)
end
ืืคืื ืงืฆืื repeated_permutation ืืืคืขืืช ืขื ืืขืจื ืืืืืืจื ืืช ืื ืืคืจืืืืฆืืืช ืขื ืืืจืืช ืขื ืืืืืจืื ืฉืื. ืื ื ืืืืื:
3.3.5 :003 > [1, 2].repeated_permutation(3).to_a
=> [[1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 2, 2], [2, 1, 1], [2, 1, 2], [2, 2, 1], [2, 2, 2]]
ืื ืขืืฉืื? ืืืงืืื ืืช ืื ืืคืจืืืืฆืืืช ืฉื ืืืืคืจืืืจืื ืืฉืืชืืื ืืืชื ืืจืฉืืืช ืืืืคืจื ืืื ืขื zip. ืืืจื ืื ืืคืขืืืื reduce ืืื ืืจืืฅ ืขื ืืจืฉืืื ืืืืฆืข ืืช ืืคืขืืืืช ืฉืืืจืื ื ืืืกืืฃ ืืืืงืื ืื ืืืขื ื ืืชืืฆืื.
ืืฉืืื ืืงืจืื ืืช ืืงืื ืืื ืฆืจืื ืจืง ืขืื ืืืืื ืจืืืืืจื:
puts (File.readlines('input.txt').map do |line|
target, values = line.match(/(\d+): (.*)/).captures
count_options(target.to_i, values.split.map(&:to_i)).positive? ? target.to_i : 0
end.sum)
ืืื ืขื ืืืืง ืืฉื ื? ืืืื ืคืฉืื, ืฆืจืื ืจืง ืืืืกืืฃ ืืชืืื ื Integer:
class Integer
def op_concat(other)
(to_s + other.to_s).to_i
end
end
ืืื ืืคืฉืจ ืืืืฉืืจ ืขื ืืืชื ืคืื ืงืฆืื ืงืฆืจื ืืจืง ืืฉื ืืช ืืช ืืขืจื ืืืืคืจืืืจืื:
def count_options(target, values)
results = [:+, :*, :op_concat].repeated_permutation(values.size - 1).to_a.map do |seq|
values[1..].zip(seq).reduce(values[0]) { |a, (v, op)| a.send(op, v) } == target
end
results.count(true)
end
ืกื ืืื ืืคืืชืจืื ืืืื ืืจืืื ืขื ืคืืืช ื 20 ืฉืืจืืช ืืื:
class Integer
def op_concat(other)
(to_s + other.to_s).to_i
end
end
def count_options(target, values)
results = [:+, :*, :op_concat].repeated_permutation(values.size - 1).to_a.map do |seq|
values[1..].zip(seq).reduce(values[0]) { |a, (v, op)| a.send(op, v) } == target
end
results.count(true)
end
puts (File.readlines('input.txt').map do |line|
target, values = line.match(/(\d+): (.*)/).captures
count_options(target.to_i, values.split.map(&:to_i)).positive? ? target.to_i : 0
end.sum)
ืืืืจื ืฉื ืชืชื ืืงืืื ืืฉืคืจ ืงืืืืชื ืืช ืื:
class Integer
# Method to concatenate two numbers as strings and convert back to integer
def op_concat(other)
(to_s + other.to_s).to_i
end
end
def count_options(target, values)
# Early return if only one value
return (values[0] == target ? 1 : 0) if values.size == 1
# Define available operations
operations = [:+, :*, :op_concat]
# Count combinations that equal the target
operations.repeated_permutation(values.size - 1).count do |ops|
result = values[0]
values[1..].zip(ops).each do |value, op|
result = result.send(op, value)
end
result == target
end
end
def solve_file(filename)
# Read the file and process each line
File.readlines(filename).sum do |line|
if line.strip.empty?
0 # Handle empty lines
else
# Parse the target and values
match = line.match(/(\d+):(.*)/)
if match
target = match[1].to_i
values = match[2].strip.split.map(&:to_i)
# If there's at least one way to reach the target, count that target
count_options(target, values).positive? ? target : 0
else
0 # Handle invalid lines
end
end
end
end
* Execute the solution if run as a script *
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
