ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 418
Obunachilar
-224 soatlar
-37 kunlar
-630 kunlar
Postlar arxiv
1 418
ืื ืื ื ืืืชืจ ืืืืื ืืืื
ืืฉืืืจืื ืฉืืืจืื ืืืขืจืืช ืืฉ ื ืืืื ืืืฉืงืืข ืคืืืช ืื ืืื ืื ืื ืื ืืืืฉืื. ืืฉืืื ืื ืืื ืืช ืืช ืืืืจ ืืืืฉ ื ืืื ืืฉืืฉ ืื ืื ืื ืืจืื ืืืื ืืช ืฉืืืจืื ? ืขืืืฃ ืืืจ ืฉืืขืืื. ืืฉืืืฆื ืื ืื ืืจืืข ืฉืืคืืจ ืงืื, ืื ืื ืื ืืืืฆืข ืืืืืง ืืื ืฉืฆืจืื ืืืื ืืจื ืฆืขื ืืืืืื ืื ืืื.
ืืฉืืืืฉืืืช ืืืื ืืืืขืืช ืื ื ืืืืืจ ืืขืฆืื ืืช ืืืฉืคื "ืื ืื ื ืืืชืจ ืืืืื ืืืื". ื ืืื, ืืคื ื 5 ืฉื ืื ืื ืื ื ืืจืืืืงืืืจื ืฉืื ืืืชื ืืฉืื, ืื ืืื ืขืืฉืื ืื ืื ื ืจืืืื ืืช ืื ืืืขืืืช ืฉืื, ืื ืืื ืืคืฉืจ ืืกืชืื ืืช ืืืืจ ืืฆื ืจืช ืืื ืืืืืง ืขื ืืคืืฆืืฅ ืืื, ืืื ืื ืืืจ ืืชืงื ืื ืฉืืื ืืืฉืงืืข ืืช ืืืืืฅ ืืืชืงื ื ืืื. ืื ืื ืืคืชืืจ ืืช ืื ืืขืืืช ืืขืืื ืืื ืชืืงืื ื ืืื ืืขืื ืชืืงืื ื ืืื ืืื ืืื ืืืืืื ืืช ืืกืคืื ื ืืืืืื ืืื ืืืชืจ.
ืื ืื ื ืืืชืจ ืืืืื ืืืื. ืืืชืจ ืืื ืืช ืืืจืื ืืื ืืืชืจ.
1 418
ืืื ืืืืืข ืืืืืข ืื ืืื ืืืืืฉื ืฆืขืืื
ืืฉืื ืกืื ืืืืื ืืื ืืืืืื ืืืฉื ืื ืื ื ื ืื ืกืื ืืขืืื ืืืฉ ืืืืคืื, ืืื ืืืขืื ืืขืืื ืืื ืืื ืฉืืื ืืืืช ืืืจืื, ืื ืืืชืจ ื ืืื ืืจืื ืชืืขืื ืื ืจืืืื ืืช ืืืจื ืื ืืื ื ืืืืชืจ ืขืืืจื ื. ืื ืืืกืืื ืฉืื ื ืืืื ืืงืืช ืืื ืื ืืืืช ืืืืืื ืืชืืขืื ืืฉืืคืจืืืืืืจืง ืืืชืจ ืืื ืืืื.
ืื ืืขืฆื ืืืขืื
ืืกืคืจืืืช ืงืื ืืช ืืกืคืืง ืืงืจืื 10 ืืงืืช ืืช ืืืจืื ื "Getting Started" ืืฉืืื ืืืืื ืื ื ืื ืื. ืื ืืกืคืจืื ืืืฉื ืื ืืืื ืฉืื ืื ืืฉ ืจืง ืืจื ืืืช ืืขืฉืืช ืืืจืื, ืื ืฉืื ืื ืืชืื ืขืืื ืืืชืจ ืืื ืืื ืืฆืื ืืจืืงืื ืืืจืืื ืืจืืืช ืืช ืืืขืจืืช.
ืืื ืฉืืกืคืจืื ืืืืื ืืืชืืงื ืืืชืจ ืืขื ืืื ืื ืืกืชืืืื. ืื API ืฉืืฉืชื ื ืืืืจ ืฉืื ืื ื ืืืืืื ืืืฆืื ืืจืฉืช ืชืืขืื ืื ืขื ื API ืืืฉื ืืื ืขื ืืืืฉ, ืืื ืืืืจืกื ืืืฉื ื ืขืืืื ื ืชืืืช ืืืื ืื ื ืืชืืืืืืืช ืืื ืืขืฉืืช ืืืจืื ืืื ืฆืจืื ืืืื ืืืฉืชืืฉ ืืืืจืกื ืืืืฉื ืฉื ื API. ืืฉืจืืืงื ืขืืจื ืืขืืื ืขื Hooks ืขืืืื ืืจืื ืืืชืืขืื ืืืื ืืืืืืืช ืฉื ืงืืืกืื. ืืื ืืืื ืขืืืื ืืจืื ืืืืืืืช ืฉื Options API ืืืื ืืืชืจ ืืจืฉืื, ืืขื ืจืืืืก ืื ื ืื ืจืืฆื ืืืื ืืืชืืื ืืืืจ. ืืฆืขืจื ื AI ืจืง ืืืืืจืื ืืช ืืืขืื ืื ืื ืืืื ืืจื ืืืื ืืจื ื ืืืื ืื ืืืืจืื ืืช ืื ืืชืืืืจืื ืืื ืื ืชืืื ืืืืขืื ืืืืืจ ืืฉืืืื ื ืืช ืืชืืืืจ ืฉื ืืื ื Use Case ืฉืื ืื ื ืฆืจืืืื. ืืืืืื ืืชืืืืช ืืืจื ืืกืื ื ืืืืืื ืืืืจ ืืื ื ืืื ืืื ืืืืื.
ืืชืืืืื ืืืชืจ ืืชืืขืื ืืจืฉืื.
ืืฆืขื ืืจืืฉืื ืฉืื ืืืืืื ืืื ืืืืืื ืืืฉื ืืื ืืืชืจ ืืจืฉืื ืฉื ืืืชื ืกืคืจืื. ืื ืืืื ืืืืืช ืืฃ ืืืืืืื ืฉืืื ืื ืืชืจ ืฉืื ืื ื. ืืื ืืื ืื ืืฉ ืื ืืืจืื ืืืฉืชืืฉ ืื ืืฃ Getting Started. ืืืืจื ืืืืฆืื ืืืื ืืื ืฉืืืชืจ ืืืืข ืืื ืื ืืืืืข. ืื ืชืืื ืืืืจืื ืืจืฉืื ืฉื ืจืืืืก ืชืืฆืื ืืื ืกืืฃ ืืืืจ ืืืื ืื ืืืืื ื ืืงืจืื ืืช ืื ืืืืจืืืื ืืฉืืชื ืจืง ืืชืืืืื, ืืืงืื ืื ืชืืืื ืืืชืืื ืขื ืืฃ ื Getting Started ืฉืืื ืืชืื ืืื ื ืฉืขืื ืชืืืจื ืืฉืืจ ืืืืจืืืื ืืืืฉื.
ื ืขืืจืื ื Chat GPT ืืื ืืื ืืช ืืืจืื, ืืชืื ืืื ื ืฉืื ืื ืืืื ืืืืื.
ืืืจื ืฉืืืื ื ืืช ืืืกืืก ืฉืฆืจืื ืืฉืืื ืืืชืื ืืืจืื ืืืืข ืืืื ืืืงืืจ. ืคื ื AI ืืื ืืืจ ืืื ืืคืฉืจ ืืืืขืืจ ื Chat GPT, ืงืืื ืื ืืืคืกืืง ืื ืื ืืืจ ืืืจ ืฉืืื ืืื ืืืชืืื ืืืชืื ืงืื, ืืงืื ืชืฉืืืืช ืืื ืืืฉืชืืฉ ืืืงืื Code Review ืขื ืืงืื ืฉืืชืืชื. ืืืจื ืฉืืฉ ืืื ืืื ืืืจืื ืฉืขืืืืื ืชืืืื ืืืืืจ ืืืืจืืืื ืืจืฉืืืื ืืื ืืืืื ืืืชืจ, ืืืืื ืืชืืื ืคืื ื-ืคืื ื ืืื ืื ืืื ืืงืจืืื.
ืืืคืฉืื ืื ืืฉ ืื ืฉืื ืืืจืื ืฉืื ื ืืืจืื ืืืืื ืืืืื ืื ืืกืคืจ ืขื ืื.
ืืืจื ืฉืืฉ ืืื ืืื ื ืืกืืืืช ืฉื ืืกืคืจืื ืืื ืืชื ืืื ืืืจืื ืืืื ืืขื ืืื ืืืฆืื ืื ืฉืื ืืืจืื ืฉืื ื ืืืจืื ืืืืื ืืืืื ืื ืืกืคืจ ืขื ืื. ืื ืืชื ืืฉืืง ืกื ืืืง ื pygame? ืืขืืื, ืขืืฉืื ืชืืคืฉื ืคืืกืืื ืืจืฉืช ืฉื ืื ืฉืื ืฉืื ื ืืช ืืืชื ืืฉืืง ืืคืืืืืื ืืชืจืื ืื ืื ืขืฉื ืืืื ืื ืฉืื ื ืืื. ืืชืืชื ืืจืคืื ืืื ืืืืื data ืืขืืจืช echarts? ืืฆืืื ืขืืฉืื ืืื ืืืคืฉ ืื ืฉืื ืืืจืื ืฉื ืืชืื ืืืืข ืืืืฆืขืืช ืกืคืจืื ืื ืืชืืื ื ืื ืื ืขืฉื ืืืื ืื ืฉืื ื ืืื. ืื ืงืืื ืืืืช ืื ืื ื ืขืืืื ืื ืืืื ืืื ืืฉืคืื ืืื ืืื ืืืืื, ืื ืื ื ืืืื ืื ืืงืื ืฉืืขืื ื ืื ื ืืฆื ืจืขืืื ืฉื ืจืื ืืื ืืืชืจ ืืจืฉืช ืืื ืืกืคืืง ืืืืืื ืืขืฆืื ื ืืื ืื ืืืืืข ืื ืจืขืืื ืื ืืฆืขื.
ืืืคืฉืื Style Guides ื Best Practices.
ืืืจื ืฉืจืืื ื ืืื ืืจืืื ืื ืขืืจื ื ื AI ืืื ืืืืื ืืื ืืืชืจ ืืช ืืืืืืื ืืื ืืคืืชืจืื ืืช ืื ืื ื ืืืงืื ืืื ืืื ืืืคืฉ ืืืจืืื Best Practices ืจืฉืืืื ืขื ืืืื ืืืืืื. ืืืืจืืืื ืืื ื ืืฆื ืืืืืง ืืช ืืืชืืืืืืืช ืฉืืื ืื ื ืขื ืขืฆืืช ืคืจืงืืืืช ืืืื ืฉืืื ืืืื ืืืชืจ ืืืื.
ืืงืฉืืืื ืืื ืฉืื ืฉืืคื ืื.
ืืืจื ืฉืืืืฉื ื ืืขื, ืื ืื ื ืืื ืืืจืื ืืขืืจื ื ืขื ืื ืืชืืขืื ืืจืฉืื ืืืืข ืืืื ืืืคืฉ ืื ืฉืื ืืืคื ืื. ืื ืืืื ืฉืื ืืืืขืื ืืื ืืื ืืื ืฆืจืื ืืืฉืชืืฉ ืืืืฆืจ ืฉืืื (ืืคืขืืื ืื ืืืืขืื, ืืคืขืืื ืืฉืืื ืฉืืื ืคืืืช ืืชืืืื ืื ื), ืืื ืืืื ืฉืื ืืืื ืื ืืช ืืืืฆืจ ืืื ืืื ืืืื ืืื ื ืฉื ืืชืคืืกื ืฉืืื ืชืขืืืจ ืื ื ืืืื ืืช ืืืื ื ืฉืื ื.
ืืชืื ืชื ืจืืืืก ืืงืฆืืขืืื ืืงืฉืืื ื DHH ืืกืคืจ ืขื ืคืืชืื ืชืืื ื. ืืืื ืื ืืกืืื ื ืืืชื ืืื ืื ืื ื ืืืื ืื ืืช ืชืคืืกืช ืืขืืื ืฉืื ืืืืื ืื ืืื ืื ืืฉืคืืข ืขื ืืืืืื ืฉื ืจืืืืก. ืืฉืืงืฉืืืื ืืืืืจืื ืจืืื ืืืื ืื ืืื ืืจืกื ืืืืืช ืืืืืื ืฉื ืื ืืืจืืื ืืื ืขืืืื ืืงืื ืืืื ืืฉืื ืืื ืฉืจืืฆื ืืืืื ืืช ืืืืืื ืืืื ืจืืืงื ืืืืืช.
1 418
ืืืืจ ืืื ืื ื ืืืื ืืืกืชืื ืื ื ืืฆืจ ืขื ืืคืงืืื:
$ awslocal cloudformation describe-stacks \
--stack-name my-sqs-lambda-stack-2
ืืคืื ืืฆืื ืืื:
{
"Stacks": [
{
"StackId": "arn:aws:cloudformation:us-east-1:000000000000:stack/my-sqs-lambda-stack-2/512113f2",
"StackName": "my-sqs-lambda-stack-2",
"Description": "CloudFormation template for SQS queue with Lambda consumer",
"CreationTime": "2025-02-07T13:12:29.585000+00:00",
"LastUpdatedTime": "2025-02-07T13:12:29.585000+00:00",
"RollbackConfiguration": {},
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false,
"NotificationARNs": [],
"Capabilities": [
"CAPABILITY_IAM"
],
"Outputs": [
{
"OutputKey": "QueueURL",
"OutputValue": "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/my-sqs-lambda-stack-2-MyQueue-0becc311",
"Description": "URL of the SQS Queue"
},
{
"OutputKey": "QueueARN",
"OutputValue": "arn:aws:sqs:us-east-1:000000000000:my-sqs-lambda-stack-2-MyQueue-0becc311",
"Description": "ARN of the SQS Queue"
},
{
"OutputKey": "FunctionARN",
"OutputValue": "arn:aws:lambda:us-east-1:000000000000:function:my-sqs-lambda-stack-2-MyFunction",
"Description": "ARN of the Lambda Function"
}
],
"Tags": [],
"EnableTerminationProtection": false,
"DriftInformation": {
"StackDriftStatus": "NOT_CHECKED"
}
}
]
}
ืืืืืื ืื ืฉืืื ืืขื ืืื ืฉื ืื ื Outputs ืฉื ืื ื ืจืืื ืืช ืืคืจืืื ืฉื ืืชืืจ ืืืคืื ืงืฆืื ืฉื ืืฆืจื.
ืื ื ืฉืืื ืืืืขื ืืชืืจ ืขื:
$ awslocal sqs send-message \
--queue-url "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/my-sqs-lambda-stack-2-MyQueue-0becc311" \
--message-body '{"num1": "10", "num2": "10"}'
ืืืกืืื ืืืืคืืฉ ืคืื ืืคืื ืงืฆืื ืืืื. ืืฉืืื ืื ืืคืขืืืื:
$ awslocal logs describe-log-groups
{
"logGroups": [
{
"logGroupName": "/aws/lambda/my-sqs-lambda-stack-2-MyFunction",
"creationTime": 1738933949640,
"metricFilterCount": 0,
"arn": "arn:aws:logs:us-east-1:000000000000:log-group:/aws/lambda/my-sqs-lambda-stack-2-MyFunction:*",
"storedBytes": 12439
}
]
}
ืืื ื ืื ืื ื ืืืืืื ืฉืืืื ืืฉ ืงืืืฆื ืืืช ืืจืืืื ืืช ืืฉื ืฉืื. ืืืจื ืื ืขื ืฉื ืืงืืืฆื ืื ื ืืคืขืื ืืช ืืคืงืืื ืืืื ืืื ืืจืืืช ืืช ืื ืืืืืื ืฉื ืืืืืืื ืืืืจืื ืื:
$ awslocal logs tail /aws/lambda/my-sqs-lambda-stack-2-MyFunction --since 2d1 418
ื ืืกืื localstack: ืืงืืช ืชืืจ ืืคืื ืงืฆืื ืืืืคืื ืืืืืขืืช
ืืืงืืืกืืืง ืืื ืืื ืืืจืฆืช ืืจืื ืกืจืืืกืื ืฉื AWS ืืฆืืจื ืืงืืืืช. ืืื ืืฆืืื ืืคืืชืื ืื ืืืืงืืช ืืืืื ืื ืืคืจืืืงืฉื ืืฉืจืืฆืื ืืืกืื ืืขืืืืืช. ืืฉืืื ืืืืื ืืื ืืื ืขืืื ืื ืืกืื ืืืื ืื ื ืืื ื ืชืืจ ืืืืขืืช ืขื SQS ืืคืื ืงืฆืืืช lambda, ืขื ืืืคืื ืืื ืืื ืฉืืืจื ืืคืื ืงืฆืื ืืจืืฅ ืืืืืืืืช ืืฉื ืื ืกืช ืืืืขื ืืืฉื ืืชืืจ.
ืงืื ืืคืื ืงืฆืื
ืืฉืืื ืืืฉืืง ืืคืื ืงืฆืื ืื ืฆืจืืื ืืขืฉืืช ืืจืื. ืคืื ืงืฆืื ืฉืืืคืขืืช ืืชืืืื ืืืืืขื ืืชืืจ ืืงืืืช ืคืจืืืจ event ืฉืืืืฆื ืืช ืืืืจืืข ืืื ืืฉ ืฉืื ืืฉื Records ืฉืืืื ืืช ืืืืืขืืช ืืืืจืืข ืื (ืืคืขืื ืืืช ืืืืื ืืืืื ืื ื ืฉื ืืกืคืจ ืืืืขืืช). ืืืืืขืืช ืืืื ืืืืืงืื JSON ืขื ืฉืืืช
num1 ื num2 ืืืคืื ืงืฆืื ืชืืคืืก ืืช ืืืคืืช ืืืกืคืจืื ืืืื. ืื ืืงืื ืืงืืืฅ index.js:
function handleRecord(body) {
const product = body.num1 * body.num2;
console.log(body);
const response = {
statusCode: 200,
body: "The product of " + body.num1 + " and " + body.num2 + " is " + product,
};
console.log(response);
return response;
}
exports.handler = async (event) => {
try {
for (const record of event.Records) {
console.log(\record = \);
console.log(record);
handleRecord(JSON.parse(record.body));
}
} catch (_err) {
console.log(\Error parsing body. Body was: ${event.body}\);
}
};
ืืืจื ืฉืืฉ ืื ืืช ืืงืืืฅ ืื ื ืฉืืืจ ืืืชื ืืงืืืฅ zip ืขื ืืคืงืืื:
$ zip function.zip index.js
ืืื ืื ื ืืืื ืื ืืืืฉืื.
ืืฆืืจืช ืืกืืืง
ืืคืฉืจ ืืืฆืืจ ืืืืืงืืื ืขื AWS ืืื ืืื ืื ืืืืฆืขืืช ืกืงืจืืคื CloudFormation ืฉืืืฆืจ ืืช ืื ืืกืืืง ืืืื ืืืืื. ืื ื ืืฉืชืืฉ ืืกืงืจืืคื ืืืื ืืืฆืจ ืืช ืืงืืืฅ stack.yml ืขื ืืชืืื ืืื:
AWSTemplateFormatVersion: '2010-09-09'
Description: 'CloudFormation template for SQS queue with Lambda consumer'
Resources:
# SQS Queue
MyQueue:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout: 30
# CloudWatch Log Group
MyFunctionLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub '/aws/lambda/${AWS::StackName}-MyFunction'
RetentionInDays: 14
# Lambda Function
MyFunction:
Type: AWS::Lambda::Function
Properties:
Code:
ZipFile: function.zip
Handler: index.handler
Role: !GetAtt LambdaExecutionRole.Arn
Runtime: nodejs18.x
Timeout: 10
FunctionName: !Sub '${AWS::StackName}-MyFunction'
Environment:
Variables:
QUEUE_URL: !Ref MyQueue
# Lambda Execution Role
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Policies:
- PolicyName: SQSAccess
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- sqs:ReceiveMessage
- sqs:DeleteMessage
- sqs:GetQueueAttributes
Resource: !GetAtt MyQueue.Arn
# Event Source Mapping to connect SQS to Lambda
MyEventSourceMapping:
Type: AWS::Lambda::EventSourceMapping
Properties:
BatchSize: 1
Enabled: true
EventSourceArn: !GetAtt MyQueue.Arn
FunctionName: !Ref MyFunction
Outputs:
QueueURL:
Description: URL of the SQS Queue
Value: !Ref MyQueue
QueueARN:
Description: ARN of the SQS Queue
Value: !GetAtt MyQueue.Arn
FunctionARN:
Description: ARN of the Lambda Function
Value: !GetAtt MyFunction.Arn
ืืกืืืง ืืืฆืจ ืชืืจ, ืคืื ืงืฆืื ื EventSourceMapping ืฉืื ืืืืืืจ ืืื ืืื. ืืืื ืืื ื ืฉื ืืื 1 ืืืื ืืืขืจื ืืืืืขืืช ืฉื ืืคืื ืงืฆืื ื ืจืื ืชืืื ืจืง ืจืฉืืื ืืืช.
ืืคืขืื ืืืืืงื
ืืฉืืื ืืืฆืืจ ืืช ืืกืืืง ืื ื ืืจืืฅ:
$ awslocal cloudformation create-stack \
--stack-name my-sqs-lambda-stack-2 \
--template-body file://stack.yml \
--capabilities CAPABILITY_IAM1 418
ืฉืชื ืฉืืืืช ืงืฉืืช
ืฉืืื ืจืืฉืื ื - ืืื ืืชื ืืืื ืืคืชืืื ืืืืื ืืืชืจ ืืื ืฉืืืืชื ืืคื ื ืฉื ื? ืืืืืช ืื?
ืฉืืื ืฉื ืื - ืื ืืชื ืขืืฉืื ืืืื ืืขื ืืช "ืื" ืขื ืืฉืืื ืืจืืฉืื ื ืืฉื ื ืืืื.
ืื ืงืฉืืช ืื ืื ืฉืืืช ืืืื ื ืืจืื: ืืืืืช ืืืืื ืืืชืจ ืื ืืืืจื ืืื ืชืืืื. ืืชืืืื ืืื ืืฉ ืชืืฆืื ืืื ืื ื ืืื ืจืืข ืืืืขืื ืื ืืฆืืื ื ืื ืื. ืืืชืจ ืืื, ืื ืงืฉืืช ืื ืื ืืืจืืืืช ืืืฉืืืื ืืช ืืืืฅ ืฉืงืฉืืจ ืืืืืื ืืืืืืงืืืืื (ืืืฆืื ืขืืืื, ืืงืื ืืขืืื) ืืืขืืืจืืช ืืช ืืคืืงืืก ืืชืืืื ืืคื ืืื.
ืืื ืงืฉืืช ืื ืื ืืืฉืคืืช ืืช ืืชืคืืกืืช ืฉืื ื ืืืื ืื ืื ื ืงืจื ืืชืื ืชืื ืืืืื ืืืชืจ. ืืื ืืืืืช ืืชืื ืชืช ืืืื ืืืชืจ ืืืืจ ืฉืื ื ืืืืจ ืืืชืจ ืคืจืืืืืืจืงืื? ืืืชืจ ืืืืืจืืชืืื? ืื ืฉืืืื ืื ืงืฉืืจ ืืืืืืช ืืกืืื ืืืืื ืืืจ ืืืชืจ ืืื ืืืืืื ืืืฉื? ืื ืืืฉืื ืืืชืจ ืืขืืืง ืขื ืืขืจืืืช ืืืจืืืืงืืืจื ืืืื ืืืจืื ืืชืืืจืื? ืื ืฉืืืข ืืจืืืช ืืื ืืืชืจ ืืช ืืงืจื ืืงืฆื ืื ืืืขืืืช ืืงืื ืืกืืื? ืืืืื ืื ืืืื ืืืืจ ืฉืืืื ืืืชืจ ืืื ืืขืืืืช ืฆืืืช, ืืืื ืืื ืืืชืจ ืื ืืืืจืื ืืฆืืืช ื ืืกื ืืขืฉืืช ืืงืื ืืกืืื ืืืืื ืืืฉืชืื ืืคืืชืื ืืขืจืืช ืืื ืืฉืืืจ ืืืชื? ืื ืืืื ืื ืืืืจ ืฉืืืื ืืืฉืชืืฉ ืืืื AI ืืื ืืืชืจ ืืื ืืื ืืช ืืขืจืืช ืืืื ืืืจ ืืืชืจ?
ืืฉ ืืืื ืืจืืื ืืืฉืชืคืจ. ืืฆืขื ืืจืืฉืื ืืื ืืืืื ืืื ืื ืื ื ืจืืฆืื ืืืืืข.
1 418
ืืชื ืืืื ืืขืฉืืช Rewrite
ืืืจืืง ืืืืชืื ืืืืฉ ืืช ืื ืืืขืจืืช?! ืืฉืชืืขืช? ืื ืืฉ ืื ื ืืขืืืช ืืื ืืื ืืืฆื ืื ืืื ืืืืจ... ื ืืื?
ืืื ืกืคืง ืฉืืืจืืง ืืช ืื ืืงืื ืืืื ืืช ืืืจืกื ืืืฉื ืืืคืก ืื ืืชืืจ ืจืฆืื ื ืขื ืกืืืื ืื ืืฉืืขืืชืืื ืืืืขื ืชืืื ืขืืืฃ ืืชืงื ืืช ืืืืฆืจ ืืงืืื, ืืืื ืืืช ืืฉ ืืฆืืื ืืื ืื ืืืื ืืืฉืชืื, ืืืืืื (ืืืงื ืื ืืงืฉื):
1. ืืฉืืื ืืฉืชืืฉืื - ืืื ืงื, ืืฃ ืืื ืื ืืชืืขืืข ืืืืฆืจ.
2. ืืฉืืฉ ืืฉืชืืฉืื ืืื ืืื ืฆืืจื ืืชืืืืงื ืื ืืื ืืื ืืจืืฉืืช - ืืื ืืคืฉืจ ืืืงืคืื ืืช ืืขืืืื ืขื ืืืขืจืืช ืืงืืืืช ืืืืขืืืจ ืืช ืื ืืืฉืืืื ืืฉืืชืื.
3. ืืฉืืฉ ืืฉืชืืฉืื ืืืฉ ืืื ืืจืืฉืืช, ืืื ืื ื ืืกืืื ืฉืื ื ืืืชืงืื ืฉืืืจ ืืฉืื ืืืจ ืืืื ืืคืืชืื ืืืืจืื ืืืื ืืกืืกืืื ืื ืืืคืฉืจ ืืขืืืจ ืืืฃ ืืื.
4. ืืฉืืฆืื ืืื ืืืืืื ืืืฉื ืืืืคืื ืืช ืฉืืืคืฉืจืช ืืื ืืช ืืืฆืจ ืฉืคืืชืจ ืืช ืืืชื ืืขืื ืืฆืืจื ืืืื ืืืจืื (ืืืืฉ Chat GPT).
5. ืืฉืืชืืืืงื ืฉื ืืืขืจืืช ืขืืื ืืืชืจ ืืื ืฉืืืขืจืืช ืืื ืืกื, ืืืื ืฆืคื ืืืืืื ืืคืชืืข ืืืื ืกืืช.
ืืืกืืื ืฉืืื - ืืืืื ืืฆืืื ืืชื ืืืจืงืื ืืช ืื ืืงืื ืืืชืืืืื ืืืืฉ? ืงืจื ืืื ืฉืืฉืืชืื ืืฆืืื ืืื ืืืชืจ ืืืืืฆืจ ืืืงืืจื? ืืจืืข ืืืชืจ? ืื ืืกืชืืื ืืขืืื?
1 418
ืชืืจืืง ืขืืื ื ืขืืืื
ืืื ื ืืื ืื ืื ื ืืืืืื ืืคืชืืจ ืืขืืืช, ืืืื Chat GPT ืื ืืฆืื ื ืืฉืื ืืืื ืื ืืช ืืืขืื ืืชืืืืื ืืืืฆืื:
1. ื ืกื ืืืืืง ืืช ื
node_modules ืืืืชืงืื ืืืืฉ.
2. ืชืขืฉื ืจืืกืืจื ืืฉืจืช.
3. ืชืืืืจ ืืืืจืกื ืืฉื ื ืฉื ืืคืจืืืงื.
4. ืชืฉืืจื ืืช ืืชืืืืืช.
5. ืชืืฆืื ืืืืฉืื, ืกืคืืจ ืขื 10 ืืชืืืืจ ืืืจื.
ืืคืขืืื ืืื ืืจืืจื. ืื ื ืืืืข, ืืคืขืืื ืืืื ืืืืฅ, ืืฉืจืช ืืคืกืืง ืืขืืื, ืฆืจืื ืขืืฉืื ืฉืืืืืจ, ืืื ืื ืืขืฉืืช ืชืืจืืง ืขืืื ื ืขืืืื ืขื ืฉืืชืืื ืืชืคืงื ืฉืื. ืืืขืื ืขื ืืืจืืง ื ืขืืืื ืขื ืืฉืจืช ืืื ืื ืฉืื ืื ืขืืื (ื ื ืืื, ืงืฆืช ืฉืื ืื ืขืืื), ืืื ืฉืื ืืืืจ, ืืืืืืื ืื ืืืื ื ืขื ืืืืื ืืืชื ืืืื ืืืจ ืืขืืื.
ืืืืจื ืฉืื ื ืืื ืืืชืจืื ืืืืืช ืืื ืฉืขืืฆืจืื ืืืฉืื ืืืืื ืื ืืืชืืืฅ ืืื ืืืืื. ืืืจืืง ื ืขืืืื ืขื ืืฉืจืช ืจืง ืืจืืืง ืืืชื ื ืืฉื.
ื .ื. ืืืจืืง ื ืขืืืื ืขื ืืฉืจืช = ืืืจืืง ืคืจืืืคืืื ื AI1 418
ืคืืชืจืื Advent Of Code 2024 ืืื 4 ืืฉืคืช Ruby
ืืช ืืชืจืืื ืืื ืงืืื ืื ืืฆืืื ืืคืชืืจ, ืืคืืืช ืื ืขื ืืคืจืืืคื ืืคืฉืื ืฉืืืืงืชื ืื, ืืื ืืืจ ืืจืืฉืชื ืฉืื ืืฉืคืชืจืชื ืืืชื ืืื. ืืกืืคืืจ ืฉืื ื ืืืื ืื ืื ื ืืงืืืื ืงืื ืืฆืืจื ืฉื ืืืจืืฆื ืขื ืื ืืื ื ืืืชืืืช ืืืฉื:
..X...
.SAMX.
.A..A.
XMAS.S
.X....
ืืืืง ืืจืืฉืื ืขืืื ื ืืืฆืื ืืช ืื ืืืืคืขืื ืฉื ืืืืื XMAS ืืงืื ืืื ืืื ืืืืืื ืื (ืืืื ืืืืกืื ืื ืืืคืื), ืืื ืืชืคืืืจืช ืืืืื. ืืืืง ืืฉื ื ืฆืจืื ืืืคืฉ ืจืง ืืืคืขืื ืฉื MAS ืฉืืืืขืื ืืฆืืจืช X ืืืืืจ:
M.S
.A.
M.S
ืืื ืื ืืืืืื ืืืืืช ืืคืืืื.
ืืชืจืืื ืืืงืืจื ื ืืฆื ืืขืืื ืฉืืื ืืื:
https://adventofcode.com/2024/day/4
ืคืืชืจืื ืืืง 1
ืืฉืืื ืฉื ื ืืืืงืื ืืื ืื ื ืื ืืฉืืืจ ืืช ืืงืื ืืืืืื, ืืฉืืืคืชื ืืื ืืื ืืงืก ืืืขืจื ืืื ืืชื ืฉื ืืฆื ืืืื ืืงืก ืืื. ืืชืจืืืืื ืฉื AoC ืืืืชื ืฉืืืชืจ ืงื ืืขืืื ืขื ืืืืื ืื ืืืื ืืืฉืจ ืขื ืืขืจืืื ืื ืืืืืืื. ืื ืืงืื ืฉืืืฆืจ ืืช ืืืืืื ืืจืืื:
$matrix = File.read('input.txt').lines.each_with_index.flat_map do |line, line_index|
line.split('').each_with_index.map do |char, column_index|
{[line_index, column_index] => char }
end
end.reduce({}) {|acc, val| acc.merge(val) }
ืงืฆืช ืืจืื ืืื ืขืืื. ืื ืืฉ ืืื ืจืขืืื ืืช ืืืชืจ ืงืฆืจืื ืืคืฉืจ ืืฉืชืฃ ืืชืืืืืช.
ืืคืื ืงืฆืื ืืืื ืฉืืชืืชื ืืืชื go ืฉืคืฉืื ืืชืงืืืช ืืกืคืจ ืฆืขืืื ืืืืืื ืืกืืื. ืืืืืื ืืืืื ืืคืืชืจืื ืืื ืืจืืฅ ืขื ืื ืืืื ืืงืกืื ืืืืืื, ืืื ืืื ืืงืก ืืืชืงืื 4 ืฆืขืืื ืืื 8 ืืืืืื ืื ืืืจืืืช ืื ืืชืืื ืฉื ืืืืื XMAS. ืืคืื ืงืฆืื go ื ืจืืืช ืื:
def go(start, direction, steps = 4)
Enumerator.produce(start) { |r, c| [r + direction[0], c + direction[1]] }.take(steps)
end
ืืืคืื ืงืฆืื ืืืจืืืืช ืฉื ืืคืืชืจืื ืืื count_words_around ืฉืืืงืืช ื ืงืืื ืืืจืืฆื ืืช go ืืื 8 ืืืืืื ืื ืืื ืกืืคืจืช ืืื ืืืืืืื ืื ืืืื ืืืืืื ืืช ืืืืื XMAS:
def count_words_around(point)
indexes = [[0, 1],
[1, 1],
[1, 0],
[1, -1],
[0, -1],
[-1, -1],
[-1, 0],
[-1, 1]].map { |direction| go(point, direction, 4) }
indexes.count { |path| $matrix.slice(*path).values.join('') == 'XMAS' }
end
pp $matrix.keys.map {|point| count_words_around(point) }.sum
ืืืง 2
ืืืืง ืืฉื ื ืืฆืจืชื ืืืจืืฆื ืืืืชื ืืืคื ืืื ืขื ืืคืื ืงืฆืื go ืืืจ ืืืืชืจืชื. ืืืงืื ืืืืช 4 ืฆืขืืื ืืกืคืืง ืืงืืช ืืช ื X ืฉืืกืืื ืื ืงืืื ืืืืืืง ืื ืืชืื ืื MAS ืื SAM. ืื ืืงืื:
def count_words_around(point)
return 0 if $matrix[point] != 'A'
around = [
[-1, -1],
[0, 0],
[1, 1],
[-1, 1],
[0, 0],
[1, -1]
].map { |direction| [point[0] + direction[0], point[1] + direction[1]] }
.map {|i| $matrix[i] }.join('')
if %w[MASMAS MASSAM SAMMAS SAMSAM].include?(around)
1
else
0
end
end
pp $matrix.keys.map {|point| count_words_around(point) }.sum1 418
ืืืื ืืืืชื: ืืกืืคืืจ ืขื bcrypt ื 72 ืืชืื
ืื ืืจืืจ ืืื ืืขืืจืชื ืืืื ืฉืืืื ืืื ืืฉืื ืื ืืืืืื ืืืืช, ืืื ืขืืฉืื ืฉืืืืืชื ืืืชื ืื ื ืืฉืชืฃ ืืื ืืื ืฉืืชื ืื ืชืืคืื ืืืืชื ืืืจ. ืืืืื ืืกืืคืืจ ืฉื ืืืื ืงืืจืืื bcrypt ืืืื ืืืืืจืืชื Password Hashing ืืฉื ืฉืขืืืื ื ืืฆื ืืฉืืืืฉ ื ืจืื ืืืจืื ืืขืจืืืช. ืืื ืืฉืืจ ืกืคืจืืืช Devise ืฉืืื ืืกืคืจืื ืืคืืคืืืจืืช ืื ืืืื ืืฉืชืืฉืื ื Rails ืืฉืชืืฉืช ืื.
ืืืืื bcrypt ื ืืฉื ืขืืืื ืืืืืื ืืืจืืช ืืืื ืืืืืืจ, ืืื ืืฉ ืื ืืืืื ืืชืืขืืช (ืืืกืชืืจ ืฉืืืื ืืคืืจืกืืช) - ืืื ืื ืืืืข ืืขืจืื ืกืืกืืืืช ืืจืืืืช ืืืชืจ ื 72 ืืชืื. ืื ืื ืืืืจ? ืื ื ืืงืื ืจืืืืก:
> u = User.new(name: 'a', email: 'ynon@gmail.com', password: '0' * 80 + '1')
> u.valid_password?('0' * 80 + '2')
=> true
ืืืืืจ ืืืืงืช ืืกืืกืืืืช ืืื ืจืง ืขื 72 ืืืชืื ืืจืืฉืื ืื ืฉื ืืกืืกืื. ืืฉืืฉ ืกืืกืื ืืจืืื ื 72 ืืชืื ืื ืื ื ืืชืขืืืื ืืื ืื ืฉืื ืืืจื.
ืืงืืื? ืื ืืคืฉืจ ืืฉืชืืฉื ื Aragon2 ืืืงืื ื bcrypt, ืืืื ืืงืจื ืืฉืืชื ืืืืจืื ืกืืกืื ืืืชืจ ืฉืืื ืื ืื ืืืชืืื ืืช ืืกืืกืื ื 72 ืชืืืื ืฉืงื ืื ืืฉ ืืจืง ืื ืืฉืื ืืช ืืกืืกืื ืืืืืชืืช. ืื ืืืืข ืื ืื ืื ืืฉืชืืฉืื ืืืขืืช ื bcrypt ืืืืชืืื ืืช ืื ืฉืื ืืืจื ื 72.
ื .ื. ืืคืืกื ืืื ืื ืืฉื ืกืืคืจ ืืขื ืืื ืืกืืงืจ ืืช ืืืืืืฉ ืฉื bcrypt ืืขืื ืฉืคืืช ืชืื ืืช ืืืืฉ ืขื ืืืื ืกืคืจืืืช ืืกืจืื ืืขืืื ืขื ืงืื ืฉืืืจืื ืืขื 72 ืืชืื ืืขืืืช ืืืื ืกืคืจืืืช ืคืฉืื ืืืืงื ืืช ืืืืง ืฉืืืจื 72 ืืื ืฉืืื ืืืช ืืืจืื ืืขืืื:
https://n0rdy.foo/posts/20250121/okta-bcrypt-lessons-for-better-apis/1 418
ืืืค ืคืืืชืื: ืืืืงืช ืฉืืจื ืจืืฉืื ื ืืืงืกื ืขื StringIO
ืืคืื ืงืฆืื ืืืื ืืงืืืช ืืืจืืืช ืืงืกื ืืืืืืจื ืืช ืืืงืกื ืืื ืืฉืืจื ืืจืืฉืื ื:
def remove_first_line(text):
return '\n'.join(text.splitlines()[1:])
ืืื ืื ืืืขืืช ื ืขืืืจ ื None ืืื ืชืืจืืง Exception. ืื ืืกืฃ ืืืืืจ ืืืืจืืืืช ืขื n ืขืืื ืืืืืช ืืืืื ืื ืื ืฉืืืืข ืืงืจืื ืืช ืืงืื ืขืืื ืืชืืืช ืื ืงืืจื ื Windows ืฉื ืชื ืกืืฃ ืืฉืืจื ืืื ืฉืื ื. ืืคืขืืื ืื ืจืขืืื ืืื ืืขืฆืืจ ืืช ืืชืืื ืืช ืื ืืงืืืื None, ืืื ืืคืขืืื ืื ืื ื ืจืืฆืื ืืื ืืช ืืฉืื ืืืชืจ ืืืืฉ. ืืจื ื ืืกืคืช ืืืืืง ืืช ืืฉืืจื ืืจืืฉืื ื ืืื ืืงืืืก StringIO ืืชืื ืืืืืงื io. ืื ื ืืืจืกื ืฉื ืืื ืฉื ืืืชื ืคืื ืงืฆืื:
def remove_first_line(text: str):
f = StringIO(text)
f.readline()
return f.read()
ืืคืื ืงืฆืื ืืืฆืจืช ืืืืืงื ืฉื ืจืื ืืื ืงืืืฅ, ืืื ืืขืฆื ืงืืจื ืืืจืืืช ืืจืืืช ืฉืืจืืช. ืืขืืจืช ืืืชืืืืช readline ื read ืื ืื ื ืืืืืื ืืงืื ืืช ืื ืืฉืืจืืช ืฉืืืจื ืืจืืฉืื ื, ืืื ืืคืจืง ืืืืืืืง ืืืืฉ ืืช ืืฉืืจืืช ืืื ืื ืืขืืืจืื ืืคืื ืงืฆืื None ืืื ืขืืืื ืืกืชืืจ ืืืื ืชืืืืจ ืืืจืืืช ืจืืงื.1 418
ืืกืคืจ ืื ืื ืื ื ืื ืืืขืช ืื ื ืื ื?
ืื ืขืืืฃ, ืืืชืื ืืช ืืืืืงืืช ืืคื ื ืื ืืืจื ืืงืื? ืืืช ืืฃ ืืคืจืืืงื ืืืืืื? ืืืช ืืชืืขืื? ืืืืืจืื ืืืฉืชืืฉ?
ืืขืืืื ืขื ืคืจืืืงื ืฆื, ืจืืื ืืขืืืคืื ืงืืื ืืื ืืช ืืช ืืคืจืืืงื ืืื ืืกืคืจ ืืขืืื ืื ืื ืื ื: ืืืจื ืืชืืืช ืืงืื ืื ืกืืื ืืืืขืช ืงืืืื, ืืืจื ืฉืืงืื ืืืื ืืืชืืื ืืืืงืืช ืืชืืขืื, ืืืจื ืฉืืคืจืืืงื ืืืืืืจ ืืืชืืื ืืฃ ืคืจืืงืื ืืืืืืื ืืืืจื ืฉืืืฆืื ื ืืืจืกื ืืืฉื ืืืชืืื ื Release Notes ืื ืขืฉืื ื. ืืชืืฆืื ืืจืื ืคืขืืื ืืื ืคืจืืืงื "ืฉืฆืจืื ืขืื ืชืฉืืืช ืื" ืืืคืชื ืฉืืืจ ืืชืขืืืฃ ืืชืืืืงื ืฉืื. ืืืง ืืืื ืืืืืฉื ืืืืช ื ืืืข ืืคืื, ืคืื ืืืชืืืื.
ืื ื ืฉืื ืืช ืืคืื ืืฆื ืจืืข ื ืืื ืื ืกืืช ืืืฉื ืฉืื ื:
1. ืืคืจืืืงื ืงืื ืคืชืื - ืืชืืืืื ืืื ืืืช ืืฃ ืืืืืื ืืคืจืืืงื ืืืกืืืจืื ืื ืืืื ืื, ืื ืืืจืืืืงืืืจื, ืื ืืชืืืืืื ืืืจืืืืื ืืืขืจืืช, ืืืืื ืืื ืืืืืืืช ื ืฉืชืืฉ ืืื ืื ืืื ืืคืฉืจ ืืชืจืื ืงืื ืืคืจืืืงื. ืืืจ ืืงืืืืืื ืืจืืฉืื ืื ืืืืฆืจืื ืืช ื Action ืฉืืขืืืจ ืืช ืืคืจืืืงื ืืคืจืืืงืฉื.
2. ืืคืจืืืงื ืืชืฉืืื - ืืชืืืืื ืืื ืืืช ืืฃ ื ืืืชื ืืคืจืืืงื ืฉืืกืืืจ ืื ืื ืื ื ืจืืฆืื ืืื ืืช, ืืืื "ืฆืืืืื ืืกื" ื Use Cases ืืืืฆืจ, ืืืื ืืฉืื ืชืืื ืืืืกืืฃ ืืืืืื ืฉื ืื ืฉืื ืฉืืชืขื ืืื ืื ืืคืจืืืงื.
ื ืืื, ืืื ืืช ืืืฆืจ ืืคื Spec ืื ืคืืืช ืืืืื ื"ืืืืืช ืชืื ืืื ืชื ืืขื", ืืื ืืืืื ืืช ืืกืืืืืื ืฉืืคืจืืืงื ืืจืื ืืืจ ืืื ืืชืืจ ืคืจืืืงื ืฉื ืืื ืืืื ืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
