uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 419
ืœืžื™ ืงืจืืช ืžืชืงื“ื? ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ "ืžืชืงื“ื". ืจื•ื‘ ื”ืžืชื›ื ืชื™ื ืฉืžืกืชื›ืœื™ื ืขืœ ืกืคืจื™ื” ื‘ืคืขื ื”ืจืืฉื•ื ื” ืžื—ืคืฉื™ื ืืช ื” Getting Started ื•ืืช ื” Tutorials (ื•ื”ื™ื•ื ืืคื™ืœื• ื–ื” ืœื, ืจืง ื ื•ืชื ื™ื ืœืงืœื•ื“ ืœืขื‘ื•ื“). ื•ืื– ืื ื—ื ื• ืคื•ืชื—ื™ื ื“ืฃ ืชื™ืขื•ื“ ืฉืœ ืกืคืจื™ื” ื›ืžื• vue-i18n ื•ื™ื›ื•ืœื™ื ืžื”ืจ ืžืื•ื“ ืœื”ื‘ื™ืŸ ืื™ืš ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื” ืœืคื™ ื”ืชื‘ื ื™ืช ื”ื‘ืื”:
const i18n = createI18n({
  locale: 'ja',
  fallbackLocale: 'en',
  messages: {
    en: {
      message: {
        hello: 'hello world'
      }
    },
    ja: {
      message: {
        hello: 'ใ“ใ‚“ใซใกใฏใ€ไธ–็•Œ'
      }
    }
  }
})
ืื– ื”ืœื›ืชื™ ืœืงืœื•ื“, ื’'ืžื™ื ื™ ื• ChatGPT ื•ื‘ื™ืงืฉืชื™ ืžื›ืœ ืื—ื“ ืžื”ื ืœื›ืชื•ื‘ ื“ืžื• ืงืฆืจ ืฉืžืจืื” ืื™ืš ืœืฉืœื‘ ืืช vue-i18n ื‘ื™ื™ืฉื•ื ืฉืœื™. ื”ืชื•ืฆืื”? ื›ื•ืœื ื›ืชื‘ื• ืงื•ื“ ืฉื˜ื•ืขืŸ ืืช ื›ืœ ื”ื”ื•ื“ืขื•ืช ื‘ื›ืœ ื”ืฉืคื•ืช ื‘ืฆื•ืจื” ืกื˜ื˜ื™ืช ืœืชื•ืš ืงื•ื‘ืฅ ื” JS ื›ืœื•ืžืจ ืžื›ื ื™ืก ืืช ื›ืœ ื”ื˜ืงืกื˜ื™ื ืฉืœ ื›ืœ ื”ืฉืคื•ืช ืœื‘ืื ื“ืœ. ื‘ืจื•ืจ ืœืžื” ื–ื” ืงื•ืจื” - ืื ื”ืžื“ืจื™ืš Lazy Loading ื ืžืฆื ื‘ื—ืœืง "ื”ืžืชืงื“ื" ืฉืœ ื”ืชื™ืขื•ื“ ืืฃ ืื—ื“ ืœื ื™ืงืจื ืื•ืชื• ื•ื” AI ื™ืชื™ื™ื—ืก ืืœื™ื• ืคื—ื•ืช ื‘ืจืฆื™ื ื•ืช. ืจื•ื‘ ืงื•ื“ ื”ื“ื•ื’ืžื” ืฉืžื•ืฆืื™ื ื‘ืื™ื ื˜ืจื ื˜ ื™ื˜ืขืŸ ืกื˜ื˜ื™ืช ืืช ื›ืœ ื”ื˜ืงืกื˜ื™ื ื•ื–ื” ื’ื ื™ื”ื™ื” ื” Boilerplate ืฉ AI ืžื™ื™ืฆืจ. ืื‘ืœ ื—ืฉื•ื‘ ืœื”ื’ื™ื“, ื˜ืขื™ื ื” ื“ื™ื ืžื™ืช ืฉืœ ื”ื˜ืงืกื˜ื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืคื™ ื”ืฉืคื” ื–ื” ืœื ืžื ื’ื ื•ืŸ ืžืชืงื“ื ืืœื ื—ืœืง ื‘ืกื™ืกื™ ื•ืžื”ื•ืชื™ ืžื”ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ืฉืคื•ืช. ืจื™ื‘ื•ื™ ืฉืคื•ืช ืœื ื™ื›ื•ืœ ืœื‘ื•ื ืขืœ ื—ืฉื‘ื•ืŸ ื‘ื™ืฆื•ืขื™ื ื•ื–ื” ื‘ืจื•ืจ ืœื›ืœ ืžื™ ืฉื›ืชื‘ ืžืขืจื›ืช ื›ื–ื•. ื”ืžืฉื™ืžื” ืฉืœื ื• ื‘ื›ืชื™ื‘ืช ืงื•ื“ ื•ืชื™ืขื•ื“, ื•ื‘ืžื™ื•ื—ื“ ื‘ืขื™ื“ืŸ ื” AI, ื”ื™ื ืœื›ืชื•ื‘ ืืช ื” Best Practices ืฉื™ื”ื™ื• ื‘ืขืฆื ื” Only Practices ื•ื™ื”ื™ื• ื‘ืžืงื•ื ื‘ื•ืœื˜ ื‘ืžืขืจื›ืช. ื›ืžื• ืฉืื•ืžืจื™ื ื‘ื–ืŸ ืฉืœ ืคื™ื™ืชื•ืŸ "ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื“ืจืš ื‘ืจื•ืจื” (ื•ืขื“ื™ืฃ ืจืง ืื—ืช) ืœืขืฉื•ืช ื“ื‘ืจื™ื".

ToCode
1 419
values = banks.map {|b| iterate_bank(b, 12) }
    puts values.sum
  end

  def iterate_bank(bank, num_batteries)
    value = 0
    next_digit_index = 0

    num_batteries.times do |i|
      options = bank[next_digit_index..-(num_batteries - i)]
      next_digit = options.max
      next_digit_index += options.index(next_digit) + 1
      value += next_digit * (10 ** (num_batteries - 1 - i))
    end

    value
  end
end

if $PROGRAM_NAME == __FILE__
  d = Day3.new
  d.parse("input.txt")
  d.part1
  d.part2
end

ToCode
1 419
ืฉืœื•ืฉื” ืคืชืจื•ื ื•ืช ืจืืฉื•ื ื™ื ืœ Advent Of Code 2025 ืขื•ื“ ืฉื ื” ื ื’ืžืจืช ื•ื›ืžื• ื‘ื›ืœ ื“ืฆืžื‘ืจ ืืจื™ืง ื•ื•ืกื˜ืœ ืžืคืจืกื ืฉื•ื‘ ืกื˜ ื—ื™ื“ื•ืช ืชื›ื ื•ืช ื—ื“ืฉ ื‘ืืชืจ Advent Of Code. ื”ืคืขื ืžืกืคืจ ื”ื—ื™ื“ื•ืช ื™ืจื“ ืœ 12, ื‘ืขื™ืงืจ ื›ื™ ื”ื•ื ืงืฆืช ื”ืชืขื™ื™ืฃ ืื‘ืœ ืื ื™ ื—ื™ื™ื‘ ืœื”ื•ื“ื•ืช ืฉื›ืžื• ืขื ื”ืขื•ื’ื•ืช ืฉืœ ืฉืžื•, ื’ื ืคื” ื”ื”ืงื˜ื ื” ื”ื™ื ืœื˜ื•ื‘ื”. ื›ื‘ืจ ื›ืžื” ืฉื ื™ื ืฉืœื ื”ืฆืœื—ืชื™ ืœืžืฆื•ื ื–ืžืŸ ืœืกื™ื™ื ืืช ื›ืœ ื”ืกื˜ ื•ืื•ืœื™ ื”ืคืขื ืขื 12 ื—ื™ื“ื•ืช ืื•ื›ืœ ืœืžืฆื•ื ืืช ื”ืžื•ื˜ื™ื‘ืฆื™ื” ื•ื”ื–ืžืŸ ืœื”ืชืžื™ื“. ื‘ื™ื ืชื™ื™ื ืื ื™ ืœื ื‘ืงืฆื‘ ื•ืื ื™ ืžืกื™ื™ื ืืช ื”ืฉื‘ื•ืข ื”ืจืืฉื•ืŸ ืขื 3 ื—ื™ื“ื•ืช ืคืชื•ืจื•ืช ืžืชื•ืš 5 ืฉืคื•ืจืกืžื•. ืชื›ืฃ ื”ื—ื™ื“ื•ืช ื•ื”ืคืชืจื•ื ื•ืช ืฉืœื™ ืื‘ืœ ืงื•ื“ื ื”ื‘ื”ืจื” - ืื ื™ ืžืคืจืกื ืืช ื”ืคืชืจื•ื ื•ืช ื”ืืœื” ืœื ื‘ืชื•ืจ ืคืชืจื•ื ื•ืช ื‘ื™ืช ืกืคืจ ืฉืฆืจื™ืš ืœืœืžื•ื“ ืžื”ื (ืืช ื–ื” ืืคืฉืจ ืœืงื‘ืœ ืž ChatGPT ืฉืืœื•ืฃ ื‘ื—ื™ื“ื•ืช ืžื”ืกื•ื’ ื”ื–ื”) ืืœื ื›ื“ื™ ืœืชืช ื’ื ืœื›ื ืžื•ื˜ื™ื‘ืฆื™ื” ืœื ืกื•ืช ื•ืœืคืชื•ืจ. ื–ื” ืื•ืœื™ ืœื ืžื•ืฉืœื, ืœื ืžืกืคื™ืง ืžื”ื™ืจ ื•ืงืฆืช ืžืกื•ืจื‘ืœ ืื‘ืœ ื’ื ื–ื” ื—ืœืง ืžื”ืงืกื ืฉืœ ืœืคืชื•ืจ ืœื‘ื“ ื•ืœื”ืชื‘ืœื‘ืœ ื‘ืื™ื ื“ืงืกื™ื. ื‘ื•ืื• ื ืจืื” ืืช ื”ืงื•ื“. ื™ื•ื 1 - ื”ื›ืกืคืช ื”ืชืจื’ื™ืœ ื›ืืŸ: https://adventofcode.com/2025/day/1 ืžืื™ื–ื•ืฉื”ื™ ืกื™ื‘ื” ื›ืฉื”ืชื—ืœืชื™ ืืช ื”ืžืฉื—ืง ื—ืฉื‘ืชื™ ืฉืคื™ื™ืชื•ืŸ ื”ื™ื ื”ืฉืคื” ื”ืžื•ืฉืœืžืช ืื– ืคืชืจืชื™ ื‘ื”. ืืœ ื“ืื’ื” ืžื”ืจ ืžืื•ื“ ื—ื–ืจืชื™ ืœืจื•ื‘ื™. ื™ื•ื ืจืืฉื•ืŸ ื—ืœืง 1:
def move_dial(old_value, line):
    count = int(line[1:])

    if line.startswith("L"):
        return (old_value - count) % 100
    elif line.startswith("R"):
        return (old_value + count) % 100
    else:
        raise Exception(f"Line {line}")

dial = 50
zero_count = 0

with open('input.txt', encoding='utf-8') as f:
    for line in f:
        dial = move_dial(dial, line)
        if dial == 0:
            zero_count += 1

print(f"{zero_count=}")
ื—ืœืง 2 - ืืจื•ืš ืžื“ื™ ื•ื˜ืขื•ื™ื•ืช ื˜ืคืฉื™ื•ืช ื‘ื—ืฉื‘ื•ืŸ ืื‘ืœ ื‘ืกื•ืฃ ื–ื” ืขื‘ื“:
def dial_diff(line):
    count = int(line[1:])

    if line.startswith("L"):
        return -count
    elif line.startswith("R"):
        return count
    else:
        raise Exception(f"Line {line}")

dial = 50
zero_count = 0

with open('input.txt', encoding='utf-8') as f:
    for line in f:
        count = dial_diff(line)
        full_rounds = abs(count) // 100

        if count > 0:
            # move right
            next_dial = (dial + count) % 100
            if (next_dial < dial and next_dial != 0):
                full_rounds += 1

        elif count < 0:
            next_dial = (dial + count) % 100
            if (next_dial > dial and next_dial != 0 and dial != 0):
                full_rounds += 1

        dial = next_dial
        zero_count += full_rounds
        if dial == 0:
            zero_count += 1

print(zero_count)
ื™ื•ื 2 - ื—ื ื•ืช ืžืชื ื•ืช ื”ืชืจื’ื™ืœ ื›ืืŸ https://adventofcode.com/2025/day/2 ื—ืœืง ืจืืฉื•ืŸ ื—ื–ืจืชื™ ืœืจื•ื‘ื™ ื•ื›ื‘ืจ ื ืฉืžืชื™ ืœืจื•ื•ื—ื”. ืืช ื”ื—ืœืง ื”ืจืืฉื•ืŸ ืขื•ื“ ืคืชืจืชื™ ื‘ืœื™ ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืืจื™ื™ื ืื‘ืœ ื‘ื—ืœืง ื”ืฉื ื™ ืงื™ืฆืจืชื™ ืืช ื”ื—ื™ืฉื•ื‘ื™ื ื•ื ืชืชื™ ืœืžื ื•ืข ื”ื‘ื™ื˜ื•ื™ื™ื ื”ืจื’ื•ืœืืจื™ื™ื ืœืขื‘ื•ื“ ื‘ืฉื‘ื™ืœื™:
class Aoc2025Day2
  def initialize(input_file_name)
    @ranges = parse(input_file_name)
  end

  def parse(input_file_name)
    File
      .read(input_file_name)
      .split(',')
      .map {|r| r.split('-') }
      .map {|a, b| a.to_i..b.to_i }
  end

  def part1
    @ranges.flat_map {|r| r.filter {|id| valid?(id) } }.sum
  end

  def part2
    @ranges.flat_map {|r| r.filter {|id| id.to_s.match(/^(\w+)\1+$/) } }.sum
  end

  def valid?(id)
    ids = id.to_s
    ids[0...ids.length / 2] == ids[ids.length / 2...]
  end
end

if __FILE__ == $PROGRAM_NAME
  a = Aoc2025Day2.new("input.txt")
  puts a.part1
  puts a.part2
end
ื™ื•ื 3 - ืœื•ื‘ื™ ื”ืชืจื’ื™ืœ ื›ืืŸ https://adventofcode.com/2025/day/3 ื”ื™ื™ืชื™ ืฉืžื— ืœื›ืชื•ื‘ ืคืชืจื•ืŸ ื™ื•ืชืจ ื™ืขื™ืœ ืฉืกื•ืจืง ืืช ื”ืžืขืจืš ืจืง ืคืขื ืื—ืช ืื‘ืœ index ื• max ื›ื‘ืจ ื‘ื ื•ื™ื™ื ื‘ืจื•ื‘ื™ ื•ืืฆืœ ืžืชื›ื ืชื™ื ื”ืขืฆืœื•ืช ืœืคืขืžื™ื ืžื ืฆื—ืช. ืœืคื—ื•ืช ื”ืฆืœื—ืชื™ ืœื—ืชื•ืš ืืช ื”ืžื—ืจื•ื–ืช ื‘ืœื™ ืœื”ืชื‘ืœื‘ืœ ื™ื•ืชืจ ืžื“ื™ ื‘ืื™ื ื“ืงืกื™ื. ื–ื” ื”ืงื•ื“:
class Day3
  attr_accessor :banks

  def parse(input_file_name)
    @banks = File
      .read(input_file_name)
      .lines
      .map {|l| l.strip.split('') }
      .map {|bank| bank.map(&:to_i) }
  end

  def part1
    values = banks.map {|b| iterate_bank(b, 2) }
    puts values.sum
  end

  def part2

ToCode
1 419
ื“ื‘ืจื™ื ืฉืื ื™ ืขื•ืฉื” ื”ื™ื•ื ืื—ืจืช ื‘ื–ื›ื•ืช ื” AI ื‘ืขืงื‘ื•ืช ื›ืžื” ืคื•ืกื˜ื™ื ืฉืงืจืืชื™ ื‘ื–ืžืŸ ื”ืื—ืจื•ืŸ ืขืœ ื”ืฉื—ื™ืงื” ื‘ืžื™ื•ืžื ื•ืช ืฉืœ ืžืชื›ื ืชื™ื ื•ืื™ืš ื›ื•ืœื ื• ื”ื•ืคื›ื™ื ืœื–ื•ืžื‘ื™ื ื—ืฉื•ื‘ ืœื”ื’ื™ื“ - ืžืคืชื—ื™ื ืฉืžืฉืชืžืฉื™ื ื ื›ื•ืŸ ื‘ AI ืขื•ื‘ื“ื™ื ื™ื•ืชืจ ืžื”ืจ, ืœื•ืžื“ื™ื ื™ื•ืชืจ ืžื”ืจ, ืžื“ืœื•ื•ืจื™ื ืงื•ื“ ื˜ื•ื‘ ื™ื•ืชืจ ื‘ืคื—ื•ืช ื–ืžืŸ ื•ื™ื•ื“ืขื™ื ื™ื•ืชืจ ืขืœ ื”ืงื•ื“ ืฉืœ ื”ืžืขืจื›ื•ืช ืฉืœื”ื. ื”ื ื” ืจืฉื™ืžื” ื—ืœืงื™ืช ืฉืœ ื“ื‘ืจื™ื ืฉืื ื™ ืขื•ืฉื” ื”ื™ื•ื ืื—ืจืช ื‘ื–ื›ื•ืช ื” AI ื•ืคืขื ื™ื›ืœืชื™ ืจืง ืœื—ืœื•ื ืขืœื™ื”ื: 1. ืžืกืชื›ืœ ืขืœ ื›ืžื” ืžื™ืžื•ืฉื™ื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ื‘ืขื™ื” - ื‘ื•ื•ื‘ื™ื ืจ ื”ื‘ื•ืงืจ ืขืœ ืกื•ื›ื ื™ ืงื™ื“ื•ื“ ื‘ืขื ืŸ ื”ืจืื™ืชื™ ืื™ืš ืื ื™ ื™ื›ื•ืœ ืœืงื—ืช ืจืขื™ื•ืŸ ื•ืœื”ืคื•ืš ืื•ืชื• ืœืงื•ื“ ืขื•ื‘ื“ ื‘ืžืขืจื›ืช ืฉืœื™, ื•ืื™ืš ืขื ืขื•ื“ 2 ืœื—ื™ืฆื•ืช ืื ื™ ื™ื›ื•ืœ ืœืงื‘ืœ ืขื•ื“ ื’ืจืกืื•ืช ื•ืžื™ืžื•ืฉื™ื ืฉื•ื ื™ื ืœืื•ืชื• ืจืขื™ื•ืŸ. ื”ื™ื•ื ื›ืฉืื ื™ ืฆืจื™ืš ืœืคืชื— ืคื™ืฆ'ืจ ืื ื™ ื›ื‘ืจ ืœื ืฆืจื™ืš ืœื—ืฉื•ื‘ ืžืจืืฉ ืขืœ ื›ืœ ืžื” ืฉื”ื•ืœืš ืœื”ืฉื‘ืจ, ืื ื™ ืคืฉื•ื˜ ื ื•ืชืŸ ืœ AI ืœืจื•ืฅ ื•ืœืฉื‘ื•ืจ ื“ื‘ืจื™ื (ืขืœ ืžื›ื•ื ื” ืฉืœื•. ื‘ืขื ืŸ.). ืื ื™ ืžืฉืงื™ืข ื”ืžื•ืŸ ื–ืžืŸ ื‘ืœืงืจื•ื ืืช ื”ืžื™ืžื•ืฉื™ื ื•ื›ืžืขื˜ ืืฃ ืคืขื ืœื ืœื•ืงื— ืืช ื”ืงื•ื“ ืืœื™ื™. ืžื” ืฉื›ืŸ ืงื•ืจื” ื–ื” ืฉืื ื™ ืœื•ืžื“ ืžื”ื ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื”. ืื ื™ ืœื•ืžื“ ืžื” ื”ื™ื” ืงืฉื” ืœ AI ืœื‘ื ื•ืช, ืื™ืคื” ื”ื•ื ื”ืกืชื‘ืš ื•ื™ืฆืจ ืคืชืจื•ื ื•ืช ืขืงื•ืžื™ื ื•ืœืžื” ื”ื•ื ื”ืกืชื‘ืš ืฉื. ืงืจื™ืืช ืžื™ืžื•ืฉื™ AI ืœืคื™ืฆ'ืจ ื—ื“ืฉ ืžืœืžื“ืช ืื•ืชื™ ื”ืžื•ืŸ ืขืœ ื”ืžืขืจื›ืช ื•ืžื‘ื ื” ื”ืงื•ื“. ืžื” ื‘ืจื•ืจ ื‘ืงื•ื“ ืฉืœื™, ืžื” ืœื ืžืกืคื™ืง ื‘ืจื•ืจ. ืื™ื–ื” ืื‘ืกื˜ืจืงืฆื™ื•ืช ื—ืกืจื•ืช. ืื™ืคื” ื”ืื‘ืกื˜ืจืงืฆื™ื•ืช ืฉื™ืฆืจืชื™ ืžืขื•ื“ื“ื•ืช ื‘ืขื™ื•ืช ื‘ื™ืฆื•ืขื™ื ืื• ื‘ืขื™ื•ืช ืื‘ื˜ื—ื”. ืคืขื ื”ื™ื™ืชื™ ื—ื•ืฉื‘ ืขืœ ืจืขื™ื•ืŸ ืœืžื‘ื ื” ืžื—ืœืงื•ืช ื‘ืžืขืจื›ืช ื•ืจืง ืื—ืจื™ ื›ืžื” ื—ื•ื“ืฉื™ื ืžืงื‘ืœ ืžืกืคื™ืง ืคื™ื“ื‘ืง ื›ื“ื™ ืœื”ื‘ื™ืŸ ืื ื”ืžื‘ื ื” ื”ื–ื” ื˜ื•ื‘. ื”ื™ื•ื ื‘ืื•ืชื• ืฉื‘ื•ืข ืื ื™ ื™ื›ื•ืœ ืœื ืกื•ืช 4 ื”ื™ืจืจื›ื™ื•ืช ื™ืจื•ืฉื” ืฉื•ื ื•ืช ื•ืœืจืื•ืช ืื™ืš ืื•ืกืฃ ืฉืœ ืคื™ืฆ'ืจื™ื ื™ื›ื•ืœ ืœื”ื‘ื ื•ืช ืขืœ ื›ืœ ื”ื™ืจืจื›ื™ื”. 2. ืžืจืคื“ ื›ืœ ืคื•ื ืงืฆื™ื” ื‘ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ืœืคื ื™ ืฉืžืชื—ื™ืœ ืœืฉื ื•ืช ืื•ืชื” - ื–ื” ืœื ื”ื™ื” ืคืจืงื˜ื™ ืœืคื ื™ ื›ืžื” ืฉื ื™ื ื•ื‘ื˜ื— ืœื ืฉื•ื•ื” ืืช ื”ื”ืฉืงืขื”. ื”ื™ื•ื ื›ืฉืื ื™ ื ื™ื’ืฉ ืœืขื‘ื•ื“ ืขืœ ืคื•ื ืงืฆื™ื” ืื ื™ ืžืชื—ื™ืœ ืขื ืคืจื•ืžืคื˜ "ืชืกื‘ื™ืจ ืžื” ืขื•ืฉื” ื”ืคื•ื ืงืฆื™ื”", ืœื•ืงื— ืืช ื”ื”ืกื‘ืจ ืฉืœื• ื•ืžืžืฉื™ืš ืขื ืคืจื•ืžืคื˜ "ื‘ื ื” ืชื•ื›ื ื™ืช ื‘ื“ื™ืงื•ืช ืœืคื•ื ืงืฆื™ื” ื›ื•ืœืœ ืžืงืจื™ ืงืฆื”" ื•ืื– "ืฆื ืœื“ืจืš ื•ืžืžืฉ ืืช ื›ืœ ื”ื‘ื“ื™ืงื•ืช". ื›ืฉื™ืฉ ืžืกืคื™ืง ื“ื•ื’ืžืื•ืช ืžืกื‘ื™ื‘ ื‘ืงื•ื“ ื•ืชืฉืชื™ืช ื˜ื•ื‘ื” ื” AI ืžืฆืœื™ื— ืœื‘ื ื•ืช ืชื•ื›ื ื™ืช ืฉืœ 30-40 ื‘ื“ื™ืงื•ืช ืœืคื•ื ืงืฆื™ื” ื‘ื•ื“ื“ืช ื•ื›ื•ืœืŸ ืขื•ื‘ืจื•ืช ื‘ืจื™ืฆื” ืจืืฉื•ื ื” ื›ืš ืฉื–ื” ืœื ืœื•ืงื— ืœื™ ื–ืžืŸ ืคื™ืชื•ื— ื•ืื ื™ ื™ื›ื•ืœ ืœื”ืžืฉื™ืš ืœืืจื’ืŸ ืžื—ื“ืฉ ืืช ื”ืงื•ื“ ื‘ื‘ื˜ื—ื•ืŸ ืžืœื ืฉืœื ืฉื‘ืจืชื™ ื›ืœื•ื, ืื• ืื ื›ืŸ ื”ืชื›ื•ื•ื ืชื™ ืœืฉื‘ื•ืจ ืื– ืื ื™ ื™ื•ื“ืข ืฉืฉื‘ืจืชื™ ืจืง ืืช ืžื” ืฉืชื›ื ื ืชื™. 3. ื–ื•ืจืง ืงื•ื“ - ืชืžื™ื“ ืื”ื‘ืชื™ ืœืžื—ื•ืง ืงื•ื“ ืื‘ืœ ืขื›ืฉื™ื• ืขื AI ืื ื™ ืืคื™ืœื• ื”ืจื‘ื” ืคื—ื•ืช ืงืฉื•ืจ ืืœื™ื• ืžืžื” ืฉื”ื™ื™ืชื™ ืงื•ื“ื. ืžื™ืžื•ืฉ ืœื ื˜ื•ื‘? ืžืฉื”ื• ืœื ืžืกืคื™ืง ื‘ืจื•ืจ? ืœื ื ืจืื” ื™ืคื”? git restore ื•ืžื ืกื™ื ืฉื•ื‘. ื”ืงื•ื“ ื”ืกืคืฆื™ืคื™ ืื™ื‘ื“ ืžื—ืฉื™ื‘ื•ืชื•. ืžื™ืžื•ืฉ ืฉืœ ืคื•ื ืงืฆื™ื” ืžื™ื•ืฆืจ ื‘ืœื—ื™ืฆืช ื›ืคืชื•ืจ. ื”ืงืกื ื”ื•ื ื‘ืžืžืฉืงื™ื, ื‘ื—ื™ื‘ื•ืจื™ื, ื‘ืชื™ืขื•ื“, ื‘ืžื‘ื ื” ื”ื’ื“ื•ืœ ื™ื•ืชืจ ืฉืœ ื”ืžืขืจื›ืช. 4. ืœื•ืžื“ ืขืœ ื›ืœ ืฉื•ืจื” - ืคืขื ื›ืฉืจืื™ืชื™ ืฉื•ืจืช ืงื•ื“ ืžื•ื–ืจื” ื—ื™ืคืฉืชื™ ื‘ืชื™ืขื•ื“ ืžื” ื”ื™ื ืขื•ืฉื” ืื‘ืœ ื”ืจื‘ื” ืคืขืžื™ื ืœื ื”ื‘ื ืชื™ ืขื“ ื”ืกื•ืฃ ืœืžื” ื”ื™ื ืฉื ื•ืžืชื™ ืขื•ื“ ืืคืฉืจ ืื• ืื™ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืžื‘ื ื” ื“ื•ืžื”. ื”ื™ื•ื ื”ื—ื™ืคื•ืฉ ื‘ืชื™ืขื•ื“ ื”ื•ื ืžืชื•ืš ื” IDE ื•ืžื›ื™ืœ ืืช ืฉื•ืจืช ื”ืงื•ื“ ื”ืžื•ื–ืจื” ื™ื—ื“ ืขื ื›ืœ ื”ืงื•ื ื˜ืงืกื˜. ื”ื”ืกื‘ืจ ืฉืื ื™ ืžืงื‘ืœ (ื•ืฉืืœื•ืช ื”ื”ืžืฉืš ืฉืื ื™ ืžืขืœื”) ืขื•ื–ืจ ืœื™ ืœื”ื‘ื™ืŸ ื”ืจื‘ื” ื™ื•ืชืจ ืžื”ืจ ื•ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ ืœืžื” ืฉื•ืจื” ืžืกื•ื™ืžืช ื›ืชื•ื‘ื” ื›ืš. ื”ืœื™ืžื•ื“ ื“ืจืš ื“ื™ืืœื•ื’ ืขื AI ืขืœ ื›ืœ ืฉื•ืจื” ืžืืคืฉืจ ืœืจืื•ืช ื“ื‘ืจื™ื ืฉืคืขื ื”ื™ื™ืชื™ ื‘ืงืœื•ืช ืžืคืกืคืก. ื”ืœื™ืžื•ื“ ื”ืžื”ื™ืจ ื•ื”ื“ื™ืืœื•ื’ื™ ื•ืงื‘ืœืช ื”ืกื‘ืจื™ื ืžื“ื•ื™ืงื™ื ืขืœ ืกืขื™ืคื™ื ื‘ืชื™ืขื•ื“ ืฉืื ื™ ืœื ืžื‘ื™ืŸ ืžืืคืฉืจ ืœื™ ืœืจืื•ืช ื“ื‘ืจื™ื ืฉืคืขื ื”ื™ื” ืœื™ ืงืฉื” ืœืจืื•ืช. ื‘ืžื—ืฉื‘ื” ืฉ"ื”ืคืจื•ื™ืงื˜ ืฉืœื™ ืžืกื•ื‘ืš ืžื“ื™ ื‘ืฉื‘ื™ืœ AI" ื™ืฉ ื’ืจืขื™ืŸ ืฉืœ ืืžืช, ืื‘ืœ ื›ื“ืื™ ืœื—ื“ื“ - ื”ืคืจื•ื™ืงื˜ ืฉืœื™ ืžืกื•ื‘ืš ืžื“ื™ ื‘ืฉื‘ื™ืœ ืฉ AI ื™ื•ื›ืœ ืœื‘ื ื•ืช ื‘ื• ืคื™ืฆ'ืจ ืžืืคืก (ื•ื›ื ืจืื” ื’ื ืžืกื•ื‘ืš ืžื“ื™ ื‘ืฉื‘ื™ืœ ืฉืื ื™ ืื›ืชื•ื‘ ื‘ื• ืคื™ืฆ'ืจื™ื ืžืืคืก), ืื‘ืœ ื‘ืขื–ืจืช AI ืื ื™ ื™ื›ื•ืœ ืœื”ืชืžืงื“ ื‘ื—ืฉื™ื‘ื” ื•ื‘ื‘ื ื™ื™ืช ืชืฉืชื™ืช ืฉืชื”ืคื•ืš ืื•ืชื• ืœื”ืจื‘ื” ืคื—ื•ืช ืžืกื•ื‘ืš. ืื‘ืœ ื™ื•ืชืจ ื—ืฉื•ื‘, ืžืคืชื—ื™ื ืฉืขื•ื‘ื“ื™ื ืขื AI ื‘ืฆื•ืจื” ื ื›ื•ื ื” ื™ื›ื•ืœื™ื ืœื”ืชืžืงื“ ื‘ื“ื‘ืจื™ื ืฉืชืžื™ื“ ื”ื™ื• ื‘ืœื™ื‘ืช ื”ืžืงืฆื•ืข: ืคื™ืชื•ื— ืื‘ืกื˜ืจืงืฆื™ื•ืช, ื”ืžืฆืืช ืคืชืจื•ื ื•ืช ื™ืฆื™ืจืชื™ื™ื ืœื‘ืขื™ื•ืช, ื–ื™ื”ื•ื™ ื‘ืขื™ื•ืช ืœืคื ื™ ืฉื”ืŸ ืงื•ืจื•ืช ื•ืžื ื™ืขืชืŸ, ื—ื™ืคื•ืฉ ืื—ืจ ื“ืจื›ื™ื ื˜ื•ื‘ื•ืช ื™ื•ืชืจ ืœื‘ื ื•ืช ืžืขืจื›ื•ืช.

ToCode
1 419
ืœืžื™ ืฆืœืฆืœื• ื”ืคืขืžื•ื ื™ื ืฉืœื•ืฉ ืฉืืœื•ืช ืฉืื ื—ื ื• ืื•ื”ื‘ื™ื ืœื”ืฉืื™ืจ ืคืชื•ื—ื•ืช ื•ื—ื‘ืœ: ืžื™ ืื—ืจืื™ ืœื”ืงืฉื™ื‘ ืœืื–ืขืงื” ื›ืฉื“ื‘ืจื™ื ื ืฉื‘ืจื™ื? ืžื™ ืžืชืขื“ืฃ ืืช ื”ืชื™ืงื•ืŸ? ื•ืื™ื–ื” ื“ื‘ืจื™ื ืฆืจื™ืš ื‘ื›ืœืœ ืœืชืงืŸ? 1. ืžื™ ืื—ืจืื™ ืœื”ืงืฉื™ื‘ ืœืื–ืขืงื” - ืฉืœ ืžื™ ื”ืชืคืงื™ื“ ืœืฉื™ื ืœื‘ ื›ืฉื”ื’ื™ื‘ื•ื™ ื ื›ืฉืœ? ื›ืฉืกืงืจื™ืคื˜ ื”ื‘ื ื™ื” ืžื–ื”ื™ืจ ืฉืงื‘ืฆื™ ื” JS ืฉื”ื•ื ื™ืฆืจ ื’ื“ื•ืœื™ื ืžื“ื™? ืฉื”ืงื•ื“ ื›ื•ืœืœ ื™ื•ืชืจ ืžื“ื™ ื—ืœืงื™ื ื“ื•ืžื™ื ื‘ืžืงื•ื ืชืฉืชื™ืช ืžืฉื•ืชืคืช? ืฉื”ืฉืจืช ืžืชื—ื™ืœ ืœืขื‘ื•ื“ ื™ื•ืชืจ ืงืฉื” ืžืžื” ืฉืื ื—ื ื• ืจื’ื™ืœื™ื? "ื›ืœ ืื—ื“ ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื–ื”" ื‘ื“ืจืš ื›ืœืœ ืžื•ื‘ื™ืœ ืœื–ื” ืฉืืฃ ืื—ื“ ืœื ืฉื ืœื‘. 2. ืžื™ ืžืชืขื“ืฃ ืืช ื”ืชื™ืงื•ืŸ - ืฆืจื™ืš ืœื”ื’ื™ืข ืœืคืจื•ื“ืงื˜ ื‘ืฉื‘ื™ืœ ืœื”ื›ื ื™ืก ืคื™ืฆ'ืจ "ื”ืงื˜ื ืช JavaScript"? ื–ื” ืขื•ืฆืจ ืกืคืจื™ื ื˜? ื ืชืคืก ื‘ Code Review? ื•ืื ืฉืžืชื™ ืœื‘ ืื—ืจื™ ื”ืžื™ื–ื•ื’? 3. ืžื” ื‘ื›ืœืœ ืฆืจื™ืš ืœืชืงืŸ - ืžืชืงื ื™ื ื›ืœ ืžื” ืฉื–ื•ืจืง Warning? ืจืง ืื ื” Warning ืžืžืฉ ืžืคื—ื™ื“? ืจืง ืื ื™ืฉ ื–ืžืŸ? ื™ืฉ ื”ื™ื•ื ื”ืžื•ืŸ ืžื ื’ื ื•ื ื™ื ืื•ื˜ื•ืžื˜ื™ื™ื ืฉืฆื•ืขืงื™ื ืขืœื™ื ื• ื›ืฉื”ืงื•ื“ ืžื–ื™ื™ืฃ ื•ื›ื›ืœ ืฉื™ืฉ ื™ื•ืชืจ ืžื”ื ื›ืš ืื ื—ื ื• ืžืคืชื—ื™ื ื”ืžื•ืŸ ืžื ื’ื ื•ื ื™ื ืฉืžืืคืฉืจื™ื ืœื”ืชืขืœื ืžืื•ืชื ืžื ื’ื ื•ื ื™ื ืื•ื˜ื•ืžื˜ื™ื™ื. ืฉืžื™ื Husky? ืชื•ืš ืจื’ืข ืื ื—ื ื• ืžื’ืœื™ื ืื™ืš ืœื‘ื˜ืœ ืื•ืชื•. ื—ื™ื™ื‘ื™ื ืœืขื‘ื•ืจ ื‘ื“ื™ืงื•ืช ื‘ืฉื‘ื™ืœ ืœื“ื—ื•ืฃ ื’ืจืกื”? ื ืฉื™ื ืืช ื”ื‘ื“ื™ืงื” ื‘ skip ืจืง ืœื’ืจืกื” ื”ื–ื•. ืื ื—ื ื• ืžืชืขืœืžื™ื ืžื”ืื–ื”ืจื•ืช ื›ื™ ื”ืจื‘ื” ืžื”ืŸ ื”ืŸ False Positives. ืžืชื•ืš 3 ื”ื•ื“ืขื•ืช ืฉืงื™ื‘ืœืชื™ ื”ื™ื•ื ื‘ Code Review ืž AI ืฉืœื•ืฉืชืŸ ื”ื™ื• ื˜ืขื•ื™ื•ืช ืฉืœ ื” AI ื•ื›ื•ืœืŸ ื‘ื–ื‘ื–ื• ืœื™ ื–ืžืŸ ื™ืงืจ ืœืงืจื•ื ื•ืœื”ื‘ื™ืŸ ืœืžื” ื” AI ื”ืชื›ื•ื•ืŸ ื•ืœืžื” ื”ื•ื ื˜ื•ืขื”. ื‘ืื•ืชื• ื–ืžืŸ ืงื•ื‘ืฅ ื” JavaScript ื‘ืžืขืจื›ืช ื›ื‘ืจ ืขื‘ืจ ืืช ื” 5 ืžื’ื” ื•ืืฃ ืื—ื“ ื›ื‘ืจ ืœื ื–ื•ื›ืจ ืžืชื™ ื”ืื–ื”ืจื” ืขืœ ื–ื” ื”ืชื—ื™ืœื” ืœื”ื•ืคื™ืข. ื›ืžื” ืจืขื™ื•ื ื•ืช ืฉื™ื›ื•ืœื™ื ืœืขื–ื•ืจ: 1. ืื ื—ื ื• ื—ื™ื™ื‘ื™ื ืœื”ื—ืœื™ื˜ ืื™ื–ื” ื‘ืขื™ื•ืช ืžืกืคื™ืง ื—ืฉื•ื‘ื•ืช ื‘ืฉื‘ื™ืœ ืœืขืฆื•ืจ ืืช ื”ืขื‘ื•ื“ื” ื•ืืช ื›ืœ ื”ืฉืืจ ืœื›ื‘ื•ืช. 2. ืœื›ืœ ืชื—ื•ื ื‘ืคืจื•ื™ืงื˜ ืฆืจื™ืš ืœื”ื™ื•ืช ื‘ืŸ ืื“ื ืฉืื—ืจืื™ ืœื”ืกืชื›ืœ ืขืœ ื”ืื–ื”ืจื•ืช. ื”ื•ื ืื• ื”ื™ื ื™ืงื‘ืขื• ืžืชื™ ื”ืื–ื”ืจื•ืช ื™ืงืคืฆื• ื•ื”ื ื™ื”ื™ื• ืื—ืจืื™ื ืœืฆืขื•ืง ื›ืฉื™ืฉ ื‘ืขื™ื” ืฉื“ื•ืจืฉืช ืืช ื–ื”, ืœืคื ื™ ืฉื”ืžืฆื‘ ื™ื—ืžื™ืจ. 3. ื”ื•ืง ืœืคื ื™ ืงื•ืžื™ื˜ ื–ื” ืœื ืจืขื™ื•ืŸ ื˜ื•ื‘ ื›ื™ ื”ื•ื ืœื ืžื’ื™ืข ืœื‘ืŸ ืื“ื ื”ื ื›ื•ืŸ ื‘ื–ืžืŸ ื”ื ื›ื•ืŸ. ื”ืžืคืชื— ืฉืขื›ืฉื™ื• ื“ื•ื—ืฃ ื’ืจืกื” ืขื ืชืœื•ืช ื™ืฉื ื” ืฆืจื™ืš ืืช ื–ื” ืœื“ืžื• ืฉืœ ืฉื‘ื•ืข ื”ื‘ื ื•ืžืžื™ืœื ื™ืฉ ืžืฉื™ืžื” ืฉืœ ืฉื“ืจื•ื’ ืชืœื•ื™ื•ืช ื‘ืกืคืจื™ื ื˜ ื”ื‘ื. ืขื“ื™ืฃ ืฉืื—ืจืื™ ืื‘ื˜ื—ืช ืžื™ื“ืข ื™ืงื‘ืœ Push ืขื ื”ืคืจื˜ื™ื ื•ื™ื—ืœื™ื˜ ืžื” ืœืขืฉื•ืช ืขื ื–ื” ื•ืื ื‘ืืžืช ื™ืฉ ืกื›ื ื”. ื”ืžื˜ืจื” ืฉืœื ื• ืคืฉื•ื˜ื” - ืœืคืชื— ื™ื•ืชืจ ืžื”ืจ ื•ืขื ืคื—ื•ืช ื˜ืขื•ื™ื•ืช. ืžืขืจื›ื•ืช ืชื•ื›ื ื” ืฉืฆื•ืขืงื•ืช ืขืœ ื›ื•ืœื ืขืœ ื›ืœ ืฉื˜ื•ืช ืœื ืขื•ื–ืจื•ืช.

ToCode
1 419
ืงื•ื“ ืฉื ืจืื” ื˜ื•ื‘ ืื‘ืœ ื”ื•ื ื‘ืขืฆื ืœื (ื”ื™ื•ืฉ AI) ื‘ื•ื•ื‘ื™ื ืจ ื”ืฉื‘ื•ืข ืืจืื” ืื™ืš ืœืขื‘ื•ื“ ืขื ืกื•ื›ื ื™ AI ื‘ืขื ืŸ. ื”ื ืžื“ื”ื™ืžื™ื ื•ื™ื›ื•ืœื™ื ืœืขืฉื•ืช ื“ื‘ืจื™ื ืžืื•ื“ ื™ืฆื™ืจืชื™ื™ื ืื‘ืœ ื—ื•ืคืฉ ื”ืคืขื•ืœื” ืฉืœื”ื ืขื•ื‘ื“ ื”ืจื‘ื” ืคืขืžื™ื ื’ื ื ื’ื“ื ื•. ืฉื•ืืœื™ื ืื•ืชื™ ืœืคืขืžื™ื ื‘ื•ื•ื‘ื™ื ืจื™ื ืื ืฆืจื™ืš ืœืงืจื•ื ื›ืœ ืฉื•ืจื” ืฉ AI ื›ื•ืชื‘ ื•ืื ื™ ื—ื•ืฉื‘ ืฉื”ืชืฉื•ื‘ื” ืžื•ืจื›ื‘ืช. ืžืฆื“ ืื—ื“ ืื™ ืืคืฉืจ ืœื”ื›ื ืก "ืœืจืืฉ ืฉืœ AI" ื›ื™ ื–ื” ืžื›ื•ื ื” ื•ืงืœ ืžืื•ื“ ืœืคืกืคืก ื“ื‘ืจื™ื ืงื˜ื ื™ื ืฉื”ื•ื ืขื•ืฉื” ืœื ื‘ืกื“ืจ. ืžืฆื“ ืฉื ื™ ืจื•ื‘ ื”ืคืขืžื™ื ื” AI ืžืฉืื™ืจ ืกื™ืžื ื™ื ืœื˜ืขื•ื™ื•ืช ืฉืœื•, ืกื™ืžื ื™ื ืฉืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช ื‘ืงื•ื“ ืฉ AI ื›ื•ืชื‘ ื•ืฉืขื•ื–ืจื™ื ืœื ื• ืœื”ื™ื•ืช ื™ื•ืชืจ ื—ืฉื“ื ื™ื ืœื’ื‘ื™ ื”ืชื•ืฆืื”. ื“ื•ื’ืžื”? ื‘ืจื•ืจ ื‘ืฉื‘ื™ืœ ื–ื” ื‘ืื ื•. ื›ืืŸ ื™ืฉ PR ืœืคื™ืฆ'ืจ ืฉื‘ื™ืงืฉืชื™ ืžืงื•ืคื™ื™ืœื•ื˜ ืœื›ืชื•ื‘ ืขืœ ืคืจื•ื™ืงื˜ ืงื•ื“ ืคืชื•ื— ืฉืœื™ ืฉื ืงืจื ืœื ื’ืœื˜ืก. ื‘ื™ืงืฉืชื™ ืฉื™ื‘ื ื” ืžืกืš ื ื’ืŸ ืฉื™ืจืื” ืฉื™ืจ ืžื™ื•ื˜ื™ื•ื‘ ื•ืœื™ื“ื• ืืช ื”ืžื™ืœื™ื, ื”ืชืจื’ื•ื, ื˜ื‘ืœื” ืขื ืื•ืฆืจ ืžื™ืœื™ื ืžื”ืฉื™ืจ ื•ืืคืฉืจื•ืช ืœื”ื•ืจื™ื“ ืืช ืื•ืฆืจ ื”ืžืœื™ื ืœืงื•ื‘ืฅ CSV: https://github.com/ynonp/langlets-rails/pull/71 ื”ื•ื ืขืฉื” ืขื‘ื•ื“ื” ืžื“ื”ื™ืžื” - ืžืชื™ืื•ืจ ืฉืœ ื›ืžื” ืžื™ืœื™ื ื”ื•ื ื™ืฆืจ ืœื™ ืžืกื›ื™ื ืขื•ื‘ื“ื™ื ื‘ืชื•ืš ื”ืคืจื•ื™ืงื˜. ืื ื™ ื™ื›ื•ืœ ืœืžืฉื•ืš ืืช ื” PR ื•ืœืจืื•ืช ืืช ื–ื” ืœื™ื™ื‘ ืขืœ ื”ืžื—ืฉื‘ ืฉืœื™. ืœืžืชื›ื ืช ืื ื•ืฉื™ ื–ื” ื”ื™ื” ืœื•ืงื— ื™ื•ืชืจ ื–ืžืŸ. ืœื™, ืฉืื ื™ ืžื›ื™ืจ ืจื™ื™ืœืก ื˜ื•ื‘ ื•ืžื›ื™ืจ ืืช ื”ืคืจื•ื™ืงื˜ ื˜ื•ื‘ ื–ื” ื”ื™ื” ืœื•ืงื— ื™ื•ืชืจ ื–ืžืŸ. ื—ืœืง ืžื–ื” ื–ื” ื‘ืืžืช ื”ื›ื— ืฉืœ AI ืœื›ืชื•ื‘ ืงื•ื“ ืžื”ืจ ื•ื—ืœืง ืื—ืจ ืžื–ื” ื–ื” ื—ื•ืกืจ ื”ื™ื›ื•ืœืช ืฉืœ AI ืœืงื‘ืœ ื”ื—ืœื˜ื•ืช ื˜ื•ื‘ื•ืช. ื‘ื•ืื• ื ืงืจื ืืช ื” PR ืœืจืื•ืช ืžื” ืขื•ื‘ื“ ื•ืžื” ืฉื‘ื•ืจ ืฉื. ื”ืฆื’ืช ื”ื ื’ืŸ ื”ืงื•ื‘ืฅ ื”ืจืืฉื•ืŸ ืฉื” AI ื›ืชื‘ ื ืงืจื play_controller.rb. ื–ื” ื”ืงื•ื‘ืฅ ืฉืžื˜ืคืœ ื‘ื”ืฆื’ืช ื”ื ื’ืŸ ื•ื›ื‘ืจ ืคื” ื™ืฉ ืœื™ ื‘ืขื™ื” ืขื ื”ืฉื. ื”ืฉื play_controller ืื•ืœื™ ืžืชืื™ื ืœ URL ืฉื‘ื™ืงืฉืชื™ ืื‘ืœ ื”ื•ื ืœื ืฉื ืื™ื ืคื•ืจืžื˜ื™ื‘ื™ ื•ืœื ื‘ืจื•ืจ ืžืžื ื• ืžื” ื”ืžื˜ืจื” ืฉืœ ื”ืงื•ื ื˜ืจื•ืœืจ. ืฉื ื˜ื•ื‘ ื™ื•ืชืจ ื”ื™ื” StandalonePlayerController - ื•ืื›ืŸ ื–ื” ื”ืฉื ืฉื”ื•ื ื™ื‘ื—ืจ ืœืงื•ื‘ืฅ ื” JavaScript ื”ืžืงื‘ื™ืœ ื‘ื”ืžืฉืš ื” PR. ืชื›ืฃ ื ื’ื™ืข ืœื–ื”. ื›ื‘ืจ ืื—ืจื™ ืฉืœื™ืคืช ื”ืจืฉื•ืžื” ืžื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืื ื—ื ื• ืจื•ืื™ื ืืช ื”ื‘ืขื™ื” ื”ืจืืฉื•ื ื”: ืื ื”ืจืฉื•ืžื” ืœื ื ืžืฆืื” ืงื•ืคื™ื™ืœื•ื˜ ื”ื—ืœื™ื˜ ืœืขื ื•ืช ื‘ Redirect ืœืžืกืš ื”ื‘ื™ืช. ืื ื™ ืœื ื‘ื™ืงืฉืชื™ ืืช ื–ื” ื•ื ืชื™ื‘ื™ื ืื—ืจื™ื ื‘ืžืขืจื›ืช ื–ื•ืจืงื™ื Exception ื‘ืžืฆื‘ ื›ื–ื”. ื ืฉื™ื ืœื‘ ืฉื”ืจื‘ื” ืคืขืžื™ื ื”ื—ืœื˜ื•ืช ื›ืืœื” ืืคืฉืจ ืœืฉืคืจ ื‘ืืžืฆืขื•ืช ื™ืฆื™ืจืช ืงื‘ืฆื™ "ื—ื•ืงื™ื ืœ AI". ื”ื‘ืœื•ืง ื”ื‘ื ื”ื•ื ืœื“ืขืชื™ ื”ืืชื’ืจ ื”ื›ื™ ื’ื“ื•ืœ ืฉืœื ื• ื‘ืงื•ื“ ืฉ AI ื™ื•ืฆืจ ื•ืื ื™ ืžื“ื‘ื™ืง ืื•ืชื• ื›ืืŸ:
* Get the medium from the first lesson to access phrases *
first_lesson = @course.lessons.first
unless first_lesson
  redirect_to root_path, alert: "No lessons found for this course"
  return
end

@medium = first_lesson.medium
ื–ื” ื‘ื“ื™ื•ืง ืงื•ื“ ืฉื ืจืื” ื˜ื•ื‘ ืื‘ืœ ื”ื•ื ื‘ืขืฆื ืœื. ืžืฆื“ ืื—ื“ ื”ื•ื ืžื‘ื™ืŸ ืฉื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืžืงื•ืจืก ืœื•ื™ื“ืื• ื”ื•ื ืฆืจื™ืš ืœืขื‘ื•ืจ ื“ืจืš lessons, ืœืงื—ืช ืืช ื”ืฉืขื•ืจ ื”ืจืืฉื•ืŸ ื•ืฉื ืœื’ืฉืช ืœืฉื“ื” medium. ื”ื•ื ื’ื ืžื‘ื™ืŸ ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉืœื ื™ื”ื™ื• ืฉืขื•ืจื™ื ื‘ืงื•ืจืก ื•ืื– ืื™ ืืคืฉืจ ืœื”ืฆื™ื’ ืืช ื”ื ื’ืŸ. ื”ืงื•ื“ ืขื•ื‘ื“, ืžื˜ืคืœ ื‘ื›ืœ ื”ืžืงืจื™ื ื•ื’ื ื‘ืจื•ืจ ื•ืœื›ืŸ ื ืจืื” ื˜ื•ื‘. ืื‘ืœ ืžืคืชื—ื™ ืจื™ื™ืœืก ื™ื•ื“ืขื™ื ืฉืœื ื›ื“ืื™ ืœื”ืขืžื™ืก ืœื•ื’ื™ืงื” ืขืœ ื”ืงื•ื ื˜ืจื•ืœืจ ื›ื™ ืื™ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื” ืฉื•ื‘ ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื ื‘ืžืขืจื›ืช ื•ืœื›ืŸ ืžืคืชื—ื™ ืจื™ื™ืœืก ื˜ื•ื‘ื™ื ื”ื™ื• ืžื›ื ื™ืกื™ื ืืช ื”ื‘ืœื•ืง ื”ื–ื” ืœืคื•ื ืงืฆื™ื” ื—ื“ืฉื” ืฉืœ course. "ืื”, ืื ื™ ืจื•ืื” ืฉืฆืจื™ืš ืœื”ื’ื™ืข ืžืงื•ืจืก ืœื•ื™ื“ืื• ืื– ืื ื™ ืื›ืชื•ื‘ ืœื–ื” ืคื•ื ืงืฆื™ื” ืœื’ื™ืฉื” ืงืœื”" ื–ื” ืžืฉื”ื• ืฉ AI ื›ืžืขื˜ ื•ืœื ืื•ืžืจ. ื“ื‘ืจ ืฉื ื™ ืฉืฉื‘ื•ืจ ื›ืืŸ ื–ื” ื”ืฉื™ืžื•ืฉ ื‘ @. ื‘ืจื™ื™ืœืก ืื ื—ื ื• ืžืกืžื ื™ื ื‘ @ ืžืฉืชื ื™ื ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœื’ืฉืช ืืœื™ื”ื ืžืงื•ื“ ื”ืชื‘ื ื™ืช ื•ืฉื™ืฉืคื™ืขื• ื‘ื”ืžืฉืš ืขืœ ื” HTML ืฉื™ื•ื•ืฆืจ. ืœืžืฉืชื ื” @medium ื‘ PR ืืฃ ืื—ื“ ืœื ื ื™ื’ืฉ ืื—ืจื™ ื”ืงื•ื ื˜ืจื•ืœืจ ื•ืœื›ืŸ ื ื›ื•ืŸ ื™ื•ืชืจ ืœืกืžืŸ ืื•ืชื• ื›ืžืฉืชื ื” ืคื ื™ืžื™ ืฉืœ ื”ืคื•ื ืงืฆื™ื”. ื”ืคื•ื ืงืฆื™ื” ืžืกืชื™ื™ืžืช ื‘ืฉื•ืจื•ืช:
* Prepare vocabulary data - all token translations from the medium *
@vocabulary = @phrases.flat_map(&:token_translations).uniq { |tt| [tt.original_text.downcase, tt.translation.downcase] }
ืฉื”ื™ื• ืขื•ื‘ื“ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ ื‘ืชื•ืจ ืžืชื•ื“ื” ื—ื“ืฉื” ืฉืœ Medium ืื• ื‘ืื™ื–ืฉื”ื• Service Object ื›ืš ืฉืืคืฉืจ ื”ื™ื” ืœื‘ื“ื•ืง ืื•ืชืŸ. ืขื ืฉื ื˜ื•ื‘ ืœืคื•ื ืงืฆื™ื” ื’ื ืœื ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืืช ื”ื”ืขืจื”. ืฉืžื™ืจืช ืื•ืฆืจ ื”ืžืœื™ื ื› CSV ื”ืคื•ื ืงืฆื™ื” ื”ืฉื ื™ื” ืฉื” AI ื‘ื ื” ื ืงืจืืช vocabulary_csv. ื’ื ืคื” ื‘ืขื–ืจืช Rules File ืืคืฉืจ ื”ื™ื” ืœืฉื›ื ืข ืื•ืชื• ืœื™ืฆื•ืจ ืงื•ื ื˜ืจื•ืœืจ ื—ื“ืฉ ื‘ืฉื‘ื™ืœ ื” CSV ื”ื–ื” ืขื ืฉื ื˜ื•ื‘ ื›ืžื• StandalonePlayerCsvController ืื‘ืœ ื‘ืกื“ืจ ื’ื ืจื•ื‘ ื”ืžืคืชื—ื™ื ื”ืื ื•ืฉื™ื™ื ืฉืื ื™ ืžื›ื™ืจ ืœื ื”ื™ื• ืžื•ืกื™ืคื™ื ืงื•ื‘ืฅ ืงื•ื ื˜ืจื•ืœืจ ื—ื“ืฉ ืจืง ื‘ืฉื‘ื™ืœ "ื”ื•ืจื“ื” ื› CSV". ืžื” ืฉื™ื•ืชืจ ืžื˜ืจื™ื“ ื–ื” ืฉื”ืคื•ื ืงืฆื™ื” ื”ืฉื ื™ื” ืžื›ื™ืœื” ื”ืจื‘ื” ืงื•ื“ ืฉื ืžืฆื ื›ื‘ืจ ื‘ืคื•ื ืงืฆื™ื” ื”ืจืืฉื•ื ื”. ื‘ืจื•ืจ ืœื’ืžืจื™ ืœืžื” ื” AI ืขื•ืฉื” ืืช ื–ื” ื•ืฉืกื•ื›ืŸ AI ืœืขืชื™ื ื ื“ื™ืจื•ืช ืžืฆืœื™ื— ืœืจืื•ืช ืื‘ืกื˜ืจืงืฆื™ื•ืช. ื–ืืช ื”ืกื™ื‘ื” ืฉืื ื—ื ื• ื—ื™ื™ื‘ื™ื ืœืขื‘ื•ืจ ืขืœ ื”ืงื•ื“ ื•ืœืชืงืŸ. ืงื•ื‘ืฅ ื” JavaScript

ToCode
1 419
ื™ื•ืชืจ ืžื“ื™ ื‘ื“ื™ืงื•ืช? ืื ืฉื™ื ื™ืช ืžืฉื”ื• ื‘ืžืขืจื›ืช ื•ืฉื•ื ื‘ื“ื™ืงื” ืœื ื ืฉื‘ืจื” ื–ื” ืกื™ืžืŸ ืฉื—ืกืจื•ืช ื‘ื“ื™ืงื•ืช. ื‘ืžืฆื‘ ื›ื–ื” ืžื•ืกื™ืคื™ื ื‘ื“ื™ืงื” ืฉืชืฉื‘ืจ ื‘ื’ืœืœ ื”ืฉื™ื ื•ื™, ืžืชืงื ื™ื ืื•ืชื” ืœื’ืจืกื” ื”ื—ื“ืฉื” ื•ืžืžืฉื™ื›ื™ื ื‘ื—ื™ื™ื. ืืช ื–ื” ื›ื•ืœื ื™ื•ื“ืขื™ื ืœืขืฉื•ืช. ืื‘ืœ ืžื” ืงื•ืจื” ืื ืฉื™ื ื™ืช ืžืฉื”ื• ื‘ืžืขืจื›ืช ื• 10 ื‘ื“ื™ืงื•ืช ื ืฉื‘ืจื•? ืžืชืงื ื™ื ืืช ื›ื•ืœืŸ? ืื• ืื ื‘ื›ืœืœ ื’ื™ืœื™ืช ืฉืžืฉื”ื• ื ืฉื‘ืจ ืจืง ื™ื•ืžื™ื™ื ืื—ืจื™, ื›ื™ ื”ื‘ื“ื™ืงื•ืช ื™ื›ื•ืœื•ืช ืœืจื•ืฅ ืจืง ื‘ืขื ืŸ ื•ืœื•ืงื— ื™ื•ืžื™ื™ื ืœืงื‘ืœ ืืช ื”ืชื•ืฆืื•ืช? ื™ื•ืชืจ ืžื“ื™ ื‘ื“ื™ืงื•ืช ื–ื• ื‘ืขื™ื” ืงืฉื” ื›ืžื• ืคื—ื•ืช ืžื“ื™ ื‘ื“ื™ืงื•ืช ืื‘ืœ ื”ืคืชืจื•ืŸ ืฉืœื” ื™ื•ืชืจ ืžืืชื’ืจ. ืœื ืงืœ ืœืžื—ื•ืง ื‘ื“ื™ืงื•ืช ื›ื™ ืื•ืœื™ ืื ื—ื ื• ืžืคืกืคืกื™ื ื“ื‘ืจื™ื ื—ืฉื•ื‘ื™ื. ืœื ืงืœ ืœื”ื‘ื™ืŸ ืœืžื” ื‘ื“ื™ืงื•ืช ืจืฆื•ืช ืœืื˜ ื•ืœืกื“ืจ ืืช ื–ื”, ืื• ืขืœ ื™ื“ื™ ื”ืจืฆื” ืžืงื‘ื™ืœื™ืช ืื• ืขืœ ื™ื“ื™ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื”ืงื•ื“ ืื• ืคืฉื•ื˜ ืœืžื—ื•ืง ื‘ื“ื™ืงื•ืช ืžื™ื•ืชืจื•ืช. ื•ื›ืžื• ื‘ื”ืจื‘ื” ื‘ืขื™ื•ืช ืงืฉื•ืช ื’ื ื›ืืŸ AI ืœื ืขื•ื–ืจ. ื”ื•ื ืื•ื”ื‘ ืจืง ืœื”ื•ืกื™ืฃ ืงื•ื“. ื”ื—ื•ื“ืฉ ืขื‘ื“ืชื™ ืขืœ ืฉื ื™ ืคืจื•ื™ืงื˜ื™ื - ื‘ืื—ื“ ื”ื™ื• ืคื—ื•ืช ืžื“ื™ ื‘ื“ื™ืงื•ืช ื•ื‘ืฉื ื™ ื™ื•ืชืจ ืžื“ื™. ืฉื ื™ื”ื ื“ืจืฉื• ืขื‘ื•ื“ื” ืœืคื ื™ ืฉื”ืฆืœื—ืชื™ ืœื”ืฉืชืžืฉ ื‘ื‘ื“ื™ืงื•ืช ื‘ืชื•ืจ ื›ืœื™ ืขื‘ื•ื“ื” ืฉืžืื™ืฅ ืืช ื”ืคื™ืชื•ื—. ื•ืขื“ื™ื™ืŸ, ื›ืžื•ืช ื˜ื•ื‘ื” ืฉืœ ื‘ื“ื™ืงื•ืช ื”ื™ื ื”ื“ืจืš ื”ื›ื™ ื˜ื•ื‘ื” ืœื›ืชื•ื‘ ืžืขืจื›ื•ืช ืืžื™ื ื•ืช ืžื”ืจ. ืžืขื“ื›ืŸ ืงื•ื“, ืžืจื™ืฅ ื‘ื“ื™ืงื•ืช, ืžืงื‘ืœ ืคื™ื“ื‘ืง ืจืœื•ื•ื ื˜ื™ ืชื•ืš ืคื—ื•ืช ืžื“ืงื” ื•ืžืชืงืŸ. ื ืฉื™ื ืœื‘ ืฉื–ื” ืœื ืกื˜ื˜ื™. ื”ื“ืจืš ืœืฉืžื•ืจ ืขืœ ื›ืžื•ืช ื˜ื•ื‘ื” ืฉืœ ื‘ื“ื™ืงื•ืช ื”ื™ื ื›ืœ ื”ื–ืžืŸ ืœื›ืชื•ื‘ ื•ืœืžื—ื•ืง ืื•ืชืŸ.

ToCode
1 419
commit a883c360dfae324a365d9bfb9ab881865a33f0c4 (HEAD -> main)
Merge: d55f747 c363960
Author: ynonp <ynonperek@gmail.com>
Date:   Sun Nov 30 13:56:36 2025 +0200

    Merge branch 'develop'

diff --git a/demo.py b/demo.py
remerge CONFLICT (content): Merge conflict in demo.py
index 96d7fe5..ba6d51e 100644
--- a/demo.py
+++ b/demo.py
@@ -1,10 +1,5 @@
-<<<<<<< d55f747 (fixed text)
-if __name__ == "__main__":
-    print("Hello World")
-=======
 def greet():
-    print("hello world")
+    print("Hello World")

 if __name__ == "__main__":
     greet()
->>>>>>> c363960 (refactor to use function)
ืžืฆื‘ r ืžืฆื™ื’ ืœื“ืขืชื™ ืืช ื”ืคืœื˜ ื”ื›ื™ ื‘ืจื•ืจ - ืื ื™ ืจื•ืื” ืืช ืฉื ื™ ื”ืขื ืคื™ื, ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉืœ ื›ืœ ืขื ืฃ ื•ืืช ื”ื•ื“ืขื•ืช ื”ืงื•ืžื™ื˜ ื”ืžืชืื™ืžื•ืช.

ToCode
1 419
ื˜ื™ืค ื’ื™ื˜: ื”ืฆื’ืช ืฉื™ื ื•ื™ื™ื ื‘ Merge Commit ื ืชื•ืŸ ื”ืจื™ืคื• ื”ื‘ื:
*   a883c36 (HEAD -> main) Merge branch 'develop'
|\
| * c363960 (develop) refactor to use function
* | d55f747 fixed text
|/
* 64b74f3 initial commit
ื™ืฉ ืœื ื• ืขื ืฃ main ื•ืขื ืฃ develop, ื‘ืขื ืฃ develop ื‘ื™ืฆืขื ื• ืฉื™ื ื•ื™ ื‘ืงื•ืžื™ c363960 ื•ืขื ืฃ main ืขืฉื” ืฉื™ื ื•ื™ ื‘ืื•ืชื• ื–ืžืŸ ื•ื‘ืื•ืชื• ืงื•ื‘ืฅ ื‘ืงื•ืžื™ d55f747. ื‘ืกื•ืฃ ืžื™ื–ื’ื ื• ืืช ื”ืฉื™ื ื•ื™ื™ื ืž develop ื‘ืงื•ืžื™ื˜ a883c36. ืขื›ืฉื™ื• ื ื ืกื” ืœื”ืกืชื›ืœ ืื—ื•ืจื” ื‘ืจื™ืคื• ื•ืœื”ื‘ื™ืŸ ืžื” ื”ื™ื• ื”ืฉื™ื ื•ื™ื™ื ืฉืงื•ืžื™ื˜ ื”ืžื™ื–ื•ื’ ื”ื›ื ื™ืก ื•ืื™ืš ื‘ื“ื™ื•ืง ื”ื ืžื•ื–ื’ื•. ื ื™ืกื™ื•ืŸ ืจืืฉื•ืŸ ืขืœื•ืœ ืœื”ืคืชื™ืข:
$ git log -p -1

commit a883c360dfae324a365d9bfb9ab881865a33f0c4 (HEAD -> main)
Merge: d55f747 c363960
Author: ynonp <ynonperek@gmail.com>
Date:   Sun Nov 30 13:56:36 2025 +0200

    Merge branch 'develop'
ืื ื™ ืจื•ืื” ืืช ืงื•ืžื™ื˜ ื”ืžื™ื–ื•ื’ ืื‘ืœ ื ืจืื” ืฉืื™ืŸ ื‘ื• ืฉื™ื ื•ื™ื™ื ื›ืœืœ! ืžื” ืงื•ืจื” ืคื”? ื”ื”ืกื‘ืจ ื”ื•ื ืฉื’ื™ื˜ ืœื ืžืฆื™ื’ ืฉื™ื ื•ื™ื™ื ืฉื‘ื•ืฆืขื• ื‘ืงื•ืžื™ื˜ ืžื™ื–ื•ื’ ื‘ืชื•ืจ ื‘ืจื™ืจืช ืžื—ื“ืœ. ืžืชื•ืš ื”ืชื™ืขื•ื“:
--diff-merges=<format>
    Specify diff format to be used for merge commits. Default is \off\
ื”ืกื™ื‘ื” ื”ื™ื ืฉื”ื•ื ืœื ื™ื•ื“ืข ืžื•ืœ ืื™ื–ื” ืงื•ืžื™ื˜ ืœื”ืฆื™ื’ ืืช ื”ื”ื‘ื“ืœื™ื ื•ืœื›ืŸ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื ืœื ืœื”ืฆื™ื’ ื›ืœื•ื. ืืคืฉืจื•ืช ืื—ืช ื”ื™ื ืœื‘ื—ื•ืจ ืœื”ืฆื™ื’ ืืช ื”ื”ื‘ื“ืœื™ื ืžื•ืœ ื”ื”ื•ืจื” ื”ืจืืฉื•ืŸ, ื‘ืžืงืจื” ืฉืœื ื• main:
 $ PAGER= git log -1 -p --diff-merges=1
commit a883c360dfae324a365d9bfb9ab881865a33f0c4 (HEAD -> main)
Merge: d55f747 c363960
Author: ynonp <ynonperek@gmail.com>
Date:   Sun Nov 30 13:56:36 2025 +0200

    Merge branch 'develop'

diff --git a/demo.py b/demo.py
index 73bd701..ba6d51e 100644
--- a/demo.py
+++ b/demo.py
@@ -1,2 +1,5 @@
-if __name__ == "__main__":
+def greet():
     print("Hello World")
+
+if __name__ == "__main__":
+    greet()
ืžื–ื” ืื ื—ื ื• ืžื‘ื™ื ื™ื ืฉืขื ืฃ develop ื”ื•ืฆื™ื ืืช ื”ื”ื“ืคืกื” ืฉืœ Hello World ืœืคื•ื ืงืฆื™ื” ื ืคืจื“ืช ื‘ืฉื greet. ื•ืžื” ืขื ืขื ืฃ develop ืขืฆืžื•? ืื– ืื™ืŸ ืขืจืš 2 ืœ diff-merges ืื‘ืœ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžื™ืœื” separate ื›ื“ื™ ืœืจืื•ืช ืืช ื”ืฉื™ื ื•ื™ื™ื ืžื•ืœ ื›ืœ ื”ืขื ืคื™ื:
$ PAGER= git log -1 -p --diff-merges=separate
commit a883c360dfae324a365d9bfb9ab881865a33f0c4 (from d55f74779962b803a89f178a08065014dd74b3ac) (HEAD -> main)
Merge: d55f747 c363960
Author: ynonp <ynonperek@gmail.com>
Date:   Sun Nov 30 13:56:36 2025 +0200

    Merge branch 'develop'

diff --git a/demo.py b/demo.py
index 73bd701..ba6d51e 100644
--- a/demo.py
+++ b/demo.py
@@ -1,2 +1,5 @@
-if __name__ == "__main__":
+def greet():
     print("Hello World")
+
+if __name__ == "__main__":
+    greet()

commit a883c360dfae324a365d9bfb9ab881865a33f0c4 (from c363960ad68f3b2875b083d7bc2b92e57df1cb7a) (HEAD -> main)
Merge: d55f747 c363960
Author: ynonp <ynonperek@gmail.com>
Date:   Sun Nov 30 13:56:36 2025 +0200

    Merge branch 'develop'

diff --git a/demo.py b/demo.py
index 3635ac7..ba6d51e 100644
--- a/demo.py
+++ b/demo.py
@@ -1,5 +1,5 @@
 def greet():
-    print("hello world")
+    print("Hello World")

 if __name__ == "__main__":
     greet()
ื”ืชื•ืฆืื” ื”ื™ื ืฉื ื™ diff-ื™ื ื‘ืคืœื˜ ืื—ื“ - ื” diff ื”ืจืืฉื•ืŸ ืžืจืื” ืœื™ ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉืœ ืงื•ืžื™ื˜ ื”ืžื™ื–ื•ื’ ืžื•ืœ main ืฉื”ื ื”ื”ืขื‘ืจื” ืฉืœ ื”ื”ื“ืคืกื” ืœืคื•ื ืงืฆื™ื”. ื” diff ื”ืฉื ื™ ืžืจืื” ืœื™ ืืช ื”ืฉื™ื ื•ื™ื™ื ืžื•ืœ develop ื•ืขื›ืฉื™ื• ืื ื™ ืจื•ืื” ืฉื‘ืงื•ืžื™ื˜ ื”ืžื™ื–ื•ื’ ื”ืฉืชืžืฉื• ื‘ืื•ืชื™ื•ืช ื’ื“ื•ืœื•ืช ื‘ืชื—ื™ืœืช ืžื™ืœื” ื‘ืขื•ื“ ืฉื‘ develop ื”ื”ื“ืคืกื” ื”ื™ืชื” ื‘ืื•ืชื™ื•ืช ืงื˜ื ื•ืช. ืืคืฉืจื•ืช ืฉืœื™ืฉื™ืช ืœืžืชื’ ื–ื” ื”ื™ื combined ืื• ื‘ืงื™ืฆื•ืจ c ืฉืžืฆื™ื’ื” ืืช ื›ืœ ื”ื”ื‘ื“ืœื™ื ื™ื—ื“:
$ PAGER= git log -1 -p --diff-merges=c
commit a883c360dfae324a365d9bfb9ab881865a33f0c4 (HEAD -> main)
Merge: d55f747 c363960
Author: ynonp <ynonperek@gmail.com>
Date:   Sun Nov 30 13:56:36 2025 +0200

    Merge branch 'develop'

diff --combined demo.py
index 73bd701,3635ac7..ba6d51e
--- a/demo.py
+++ b/demo.py
@@@ -1,2 -1,5 +1,5 @@@
- if __name__ == "__main__":
+ def greet():
 -    print("hello world")
 +    print("Hello World")
+
+ if __name__ == "__main__":
+     greet()
ืžืฆื“ ืื—ื“ ื™ื•ืชืจ ืงืœ ืœื”ื‘ื™ืŸ ื›ืืŸ ืžื” ื”ืฉืชื ื” ืื‘ืœ ืžืฆื“ ืฉื ื™ ื™ื•ืชืจ ืงืฉื” ืœื”ื‘ื™ืŸ ืžืื™ื–ื” ืขื ืฃ ื”ื’ื™ืข ื›ืœ ืฉื™ื ื•ื™. ืื•ืคืฆื™ื” ืื—ืจื•ื ื” ื”ื™ื r ืื• remerge. ื‘ืžืฆื‘ ื›ื–ื” ื’ื™ื˜ ืžื—ืคืฉ ืืช ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื•ืžื ืกื” ืœืฉื—ื–ืจ ืืช ืกื™ืžื ื™ ื”ืงื•ื ืคืœื™ืงื˜ ืฉื”ื™ื• ื›ื“ื™ ืฉื ื•ื›ืœ ืœืจืื•ืช ืžื” ื”ื’ื™ืข ืžืื™ืคื”. ื‘ืžืงืจื” ืฉืœื ื• ื”ืคืœื˜ ื”ื•ื:
$ PAGER= git log -1 -p --diff-merges=r

ToCode
1 419
ื”ื™ื•ื ืœืžื“ืชื™: ืคืจื˜ื™ืฉืŸ ืœืคื™ ื–ืžืŸ ื•ืžืคืชื— ืจืืฉื™ ืœืงื—ืชื™ ื˜ื‘ืœืช ืคื•ืกื˜ื’ืจืก ื‘ืฉื‘ื™ืœ ื”ืกื™ืคื•ืจ ื ื ื™ื— ืฉื–ื• ื˜ื‘ืœืช ืœืงื•ื—ื•ืช:
CREATE TABLE customers (
    customer_id     INT PRIMARY KEY,
    full_name       TEXT NOT NULL,
    email_address   TEXT NOT NULL,
    created_at      TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    updated_at      TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
ื•ืื– ืจืฆื™ืชื™ ืœื—ืœืง ืื•ืชื” ืœ Partitions ื›ื“ื™ ืœืฉืคืจ ื‘ื™ืฆื•ืขื™ ืฉืœื™ืคื•ืช (ืจื•ื‘ ื”ืฉืœื™ืคื•ืช ืฆืจื™ื›ื•ืช ืœืžืฆื•ื ืœืงื•ื—ื•ืช ื—ื“ืฉื™ื). ืื– ื”ืœื›ืชื™ ืœ ChatGPT ื•ื‘ื™ืงืฉืชื™ ื’ืจืกื” ืžื—ื•ืœืงืช ืฉืœ ื”ื˜ื‘ืœื”. ื–ื” ื”ืงื•ื“ ืฉื”ื•ื ื”ื“ืคื™ืก:
CREATE TABLE customers (
    customer_id     INT PRIMARY KEY,
    full_name       TEXT NOT NULL,
    email_address   TEXT NOT NULL,
    created_at      TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
)
PARTITION BY RANGE (created_at);
ื”ื•ื ื›ืžื•ื‘ืŸ ื˜ืขื”. ืคื•ืกื˜ื’ืจืก ืœื ืžืจื•ืฆื” ื•ื˜ื•ืขืŸ ืฉื”ืžืคืชื— ื”ืจืืฉื™ ืฆืจื™ืš ืœื”ื™ื•ืช ื—ืœืง ืžื” Partition. ื•ื–ื” ื‘ืจื•ืจ - ืžืคืชื— ืจืืฉื™ ืืžื•ืจ ืœื”ื™ื•ืช ื™ื™ื—ื•ื“ื™ ืขืœ ื›ืœ ื”ืฉื•ืจื•ืช, ืื‘ืœ ืื ื”ืฉื•ืจื•ืช ืžืื•ื—ืกื ื•ืช ื‘ื˜ื‘ืœืื•ืช ืฉื•ื ื•ืช ืื™ืŸ ืœืคื•ืกื˜ื’ืจืก ื“ืจืš ืœื•ื•ื“ื ื™ื™ื—ื•ื“ื™ื•ืช ืื• ืœื“ืขืช ื‘ืื™ื–ื” Partition ืžืคืชื— ืจืืฉื™ ืžืกื•ื™ื ืžืื•ื—ืกืŸ. ื‘ื”ื ืชืŸ ืžืคืชื— ืจืืฉื™ ืฉืœื ืงืฉื•ืจ ืœืžืคืชื— ื”ื—ืœื•ืงื” ืฉืœ ื”ื˜ื‘ืœื”, ืคื•ืกื˜ื’ืจืก ืขื“ื™ื™ืŸ ื™ืฆื˜ืจืš ืœืกืจื•ืง ืืช ื›ืœ ื” Partitions ื›ื“ื™ ืœืžืฆื•ื ืืช ื”ืฉื•ืจื”. ื”ืคืชืจื•ืŸ ืฉืœ ChatGPT ืœื ืžืœื”ื™ื‘, ื”ื•ื ืžืฆื™ืข ืœื”ืฉืชืžืฉ ื‘ืžืคืชื— ืจืืฉื™ ืฉืžื•ืจื›ื‘ ืžืฉื ื™ ืฉื“ื•ืช (ื” id ื•ื” timestamp). ืื ื—ื ื• ืœื ืื•ื”ื‘ื™ื ืžืคืชื—ื•ืช ืจืืฉื™ื™ื ืžื•ืจื›ื‘ื™ื. ืื•ืคืฆื™ื” ืฉื ื™ื” ืœื ืžืœื”ื™ื‘ื” ืฉื”ื•ื ืžืฆื™ืข ื”ื™ื ืœื•ื•ืชืจ ืœื’ืžืจื™ ืขืœ ื”ืžืคืชื— ื”ืจืืฉื™, ื•ื’ื ื–ื” ืœื ืžืœื”ื™ื‘. ืคืชืจื•ืŸ ืฉื ืจืื” ืœื™ ื™ื•ืชืจ ื˜ื•ื‘ ื‘ืชื™ืื•ืจื™ื” (ืœื ืžื™ืžืฉืชื™ ืขื“ื™ื™ืŸ) ื”ื•ื ืœื”ืฉืชืžืฉ ื‘ืžืคืชื— ืจืืฉื™ ืžืกื•ื’ UUID ืฉื›ื•ืœืœ timestamp ืœืžืฉืœ UUID7 ืื• ULID. ื‘ืžืคืชื— ืจืืฉื™ ื›ื–ื” ืืคืฉืจ ืœืงื—ืช ืืช ื”ื—ืœืง ืฉืœ ื”ื–ืžืŸ ืœื”ื™ื•ืช ืžืคืชื— ื”ื—ืœื•ืงื” ืฉืœ ื”ื˜ื‘ืœื”. ื›ืืŸ ื™ืฉ ืคื•ืกื˜ ืืจื•ืš ืฉืžืชืืจ ืืช ื”ืจืขื™ื•ืŸ: https://elixirforum.com/t/partitioning-postgres-tables-by-timestamp-based-uuids/60916 ื‘ืงืฆืจื” ื–ื” ื”ืงื•ื“ ืฉืœื• ืœื™ืฆื™ืจืช ื”ื˜ื‘ืœื”:
create table(:payloads, primary_key: false, options: "PARTITION BY RANGE(id)") do
  add(:id, :binary_id, null: false, primary_key: true)

  # ... other fields and references
end
ื•ื”ืงื•ื“ ืฉื™ื•ืฆืจ ืืช ื” Partitions ื™ื”ื™ื” ืžืฉื”ื• ื›ื–ื”:
CREATE TABLE #{table}_p#{start_date.year}#{month}
PARTITION OF #{table} FOR VALUES
FROM (ulid_to_uuid('#{start_ulid}'))
TO (ulid_to_uuid('#{end_ulid}'))

ToCode
1 419
ื .ื‘. ืจืื™ื ื• ื‘ื•ื•ื‘ื™ื ืจ ืื™ืš ืื ื™ ืคื•ืชื— ืชื™ืงื™ื” ืจื™ืงื” ืœื’ืžืจื™ ื•ืžื‘ืงืฉ ืžืงืจืกืจ ืœืชื›ื ืŸ ืคืจื•ื™ืงื˜ ืžืกื•ื™ื (ืœืžืฉืœ ืžืฉื—ืง ื›ืจื˜ื™ืกื™ื•ืช ืœืœื™ืžื•ื“ ืกืคืจื“ื™ืช ืื• ืžืฉื—ืง ืกื ื™ื™ืง), ื ื•ืชืŸ ืœื• ืืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื•ื”ืงืจืกืจ ืžืฆืœื™ื— ืœื‘ื“ ืœื‘ื ื•ืช ืืช ื›ืœ ื” Boilerplate ืฉืœ ื”ืคืจื•ื™ืงื˜ ื‘ืฉืคื” ืฉื‘ื—ืจืชื™, ื•ืื– ืžืžืฉื™ืš ืœื”ืชืงื™ืŸ ืืช ื”ืชืœื•ื™ื•ืช ื•ืœืชืงืŸ ื‘ืื™ื˜ืจืฆื™ื” ืขื“ ืฉื”ืคืจื•ื™ืงื˜ ืจืฅ. ืกื•ื›ืŸ ืฉืขื•ื‘ื“, ื•ืขื•ื‘ื“ ื•ืขื•ื‘ื“ ืจืขื™ื•ืŸ ืฉืœื™ืฉื™ ื”ื•ื ืฉืกื•ื›ื ื™ AI ื™ื›ื•ืœื™ื ืœืขื‘ื•ื“ ืœื ืฆื—. ืœืคืขืžื™ื ื”ื ื™ืฆื˜ืจื›ื• ื”ืจื‘ื” ืื™ื˜ืจืฆื™ื•ืช ืื‘ืœ ื‘ืกื•ืฃ ื”ื ื™ืกืชื“ืจื• ื•ืขื“ื™ืฃ ืœืชืช ืœื”ื ื›ืžื” ืฉื™ื•ืชืจ ืœืขื‘ื•ื“ ืขืฆืžืื™ืช. ื‘ืงืจืกืจ ื”ืจืขื™ื•ืŸ ื”ื–ื” ืžืžื•ืžืฉ ื‘ืขื–ืจืช ื”ืคื™ืฆ'ืจื™ื ื”ื‘ืื™ื: 1. ื›ืฉืกื•ื›ืŸ ืžืชื—ื™ืœ ืœืขื‘ื•ื“ ื”ื•ื ืœื ื™ืขืฆื•ืจ ืื—ืจื™ X ืื™ื˜ืจืฆื™ื•ืช ืœืฉืื•ืœ ืื ืืชื ื‘ื˜ื•ื—ื™ื ืฉืืชื ืจื•ืฆื™ื ืœื”ืžืฉื™ืš. ื”ื•ื ืคืฉื•ื˜ ื™ืžืฉื™ืš ืขื“ ืฉืชืขืฆืจื• ืื•ืชื•. 2. ืื™ืŸ ื‘ืขื™ื” ืœื”ืคืขื™ืœ ื›ืžื” ืกื•ื›ื ื™ื ื™ื—ื“ ื•ื”ื ืžืกืชื“ืจื™ื ืœื ืœืขืจื•ืš ืืช ืื•ืชื ื—ืœืงื™ื ื‘ืงื‘ืฆื™ื. ืืคืฉืจ ืœืขื‘ื•ืจ ื‘ื™ืŸ ื”ืกื•ื›ื ื™ื ื”ืคืขื™ืœื™ื ื‘ืื•ืชื” ืจืฉื™ืžื” ืื ื›ื™ืช ืฉืœ ืกื•ื›ื ื™ื. 3. ืกื•ื›ืŸ ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืคืงื•ื“ื•ืช Shell ืœืœื ื”ื’ื‘ืœื” ื‘ืชื•ืš ืžื” ืฉื”ื ืงื•ืจืื™ื Sandbox. ืื•ืชื• ืกื ื“ื‘ื•ืงืก ื–ื” ื‘ืขืฆื ื›ืœื•ื‘ ืฉืœื ืžืืคืฉืจ ืœืงืจืกืจ ืœื’ืฉืช ืœืงื‘ืฆื™ื ืžื—ื•ืฅ ืœืคืจื•ื™ืงื˜ ืื• ืœืคืชื•ื— ื—ื™ื‘ื•ืจื™ ืจืฉืช. ืกื“ื ื‘ื•ืงืก ื›ืจื’ืข ื ืชืžืš ืจืง ืขืœ ืžืง ื•ื”ื ืืžืจื• ืฉื”ื ืขื•ื‘ื“ื™ื ืขืœ ืชืžื™ื›ื” ืœืœื™ื ื•ืงืก. ื’ื ื›ืืŸ ื”ืžื˜ืจื” ื”ื™ื ืœืืคืฉืจ ืœืกื•ื›ืŸ ื™ื•ืชืจ ืขืฆืžืื•ืช ื•ืœื”ื•ืจื™ื“ ืืช ื”ืกื™ื›ื•ืŸ. ื‘ืขื‘ื•ื“ื” ืขื ืงืจืกืจ ื”ืฉืชืžืฉืชื™ ื‘ื–ื” ื›ื“ื™ ืœื”ืจื™ืฅ ื‘ื“ื™ืงื•ืช ื•ืœืชืงืŸ ืืช ื”ืงื•ื“ ืื• ืงื•ื“ ื”ื‘ื“ื™ืงื•ืช ืขื“ ืฉื”ื‘ื“ื™ืงื•ืช ื™ืขื‘ืจื•. ื–ื” ืœื•ืงื— ืœืกื•ื›ืŸ ื–ืžืŸ ืื‘ืœ ื‘ืกื•ืฃ ื”ื•ื ื ื•ืชืŸ ื’ืจืกื” ืขื•ื‘ื“ืช ืฉืœ ื”ืงื•ื“ ื•ืื•ืชื” ืื ื™ ื™ื›ื•ืœ ืœืงืจื•ื ื›ื“ื™ ืœื•ื•ื“ื ืฉื”ื•ื ืœื ืขืฉื” ืฉื˜ื•ื™ื•ืช. ืกื•ื›ืŸ ืžื›ืœ ืžืงื•ื ืจืขื™ื•ืŸ ืจื‘ื™ืขื™ ืฉืงืจืกืจ ืžืงื“ืžื™ื ื”ื•ื ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืกื•ื›ืŸ ืžื›ืœ ืžืงื•ื. ื–ื” ืื•ืžืจ ื›ืžื•ื‘ืŸ ืชืžื™ื›ื” ื‘ MCP ืื‘ืœ ื™ื•ืชืจ ืžืขื ื™ื™ืŸ ื–ื” ื”ื—ื™ื‘ื•ืจ ื”ืžื•ื‘ื ื” ืฉืœื”ื ืขื ื“ืคื“ืคืŸ ื•ืขื ืžืกื•ืฃ. ืžืชื•ืš ื” Terminal ื”ืžื•ื‘ื ื” ื‘ืงืจืกืจ ืื ื™ ื™ื›ื•ืœ ื‘ื›ืœ ืฉืœื‘ ืœืœื—ื•ืฅ Cmd+K ื•ืœืงื‘ืœ Popup ืฉืœ ืกื•ื›ืŸ AI ืฉื™ืฉ ืœื• ื’ื™ืฉื” ืžืœืื” ืœืงืจื™ืื” ื•ื›ืชื™ื‘ื” ืœืžืกื•ืฃ. ื›ืš ืื ืืชื ื ืชืงืขื™ื ื•ืื™ื–ื” ืคืงื•ื“ืช Shell ืื• git ืœื ืขื•ื‘ื“ืช ืชืžื™ื“ ืชื•ื›ืœื• ืœื‘ืงืฉ ืขื–ืจื” ื‘ื“ื™ื•ืง ืžืื™ืคื” ืฉืืชื. ื‘ืฆื“ ื”ื“ืคื“ืคืŸ ื”ืกื•ื›ืŸ ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ื“ืคื“ืคืŸ, ืœื ื•ื•ื˜ ืœืืชืจื™ื, ืœืœื—ื•ืฅ, ืœื”ืงืœื™ื“, ืœื’ืœื•ืœ, ืœืงื—ืช ืฆื™ืœื•ืžื™ ืžืกืš ื•ืœื”ืกืชื›ืœ ื‘ืงื•ื ืกื•ืœ ืื• ื‘ื‘ืงืฉื•ืช ื”ืจืฉืช ืฉืœ ื”ื“ืคื“ืคืŸ. ื‘ืฆื•ืจื” ื›ื–ืืช ื”ืกื•ื›ืŸ ื™ื›ื•ืœ ื‘ืื•ืคืŸ ืขืฆืžืื™ ืœื ืกื•ืช ืืช ืฉื™ื ื•ื™ื™ ื”ืงื•ื“ ืฉืœื• ืขื“ ืฉื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื ืื• ืœืขื–ื•ืจ ืœื›ื ืœื“ื‘ื’. ืกืš ื”ื›ืœ ืงืจืกืจ ื”ื•ื ืกื‘ื™ื‘ืช ืขื‘ื•ื“ื” ืžืขื ื™ื™ื ืช ืฉืžืฆื™ืขื” ื’ื™ืฉื” ืฉื•ื ื” ืž VS Code ืœืขื‘ื•ื“ื” ืขื ืกื•ื›ื ื™ื ื‘ื“ื’ืฉ ืขืœ ื”ืจืฆืช ื”ืกื•ื›ื ื™ื ื‘ืžืงื‘ื™ืœ, ืžื›ืœ ืžืงื•ื ื•ื‘ืื•ืคืŸ ื™ื•ืชืจ ืขืฆืžืื™.

ToCode
1 419
ื”ืชืงื ืชื™ ืงืจืกืจ, ืžื” ืขื›ืฉื™ื•? ื”ืฉื‘ื•ืข ื‘ืงื‘ื•ืฆืช ืžื“ื‘ืจื™ื AI ื”ืจืื™ืชื™ ืฆืขื“ื™ื ืจืืฉื•ื ื™ื ืขื Cursor. ื‘ื“ืจืš ื›ืœืœ ืื ื™ ืžื•ืฆื™ื ืกื™ื›ื•ืžื™ ื•ื™ื“ืื• ืื—ืจื™ ื”ืžืคื’ืฉื™ื ื”ืืœื” ืื‘ืœ ื”ืคืขื ืชืคืกืชื™ ื•ื™ืจื•ืก ื›ืš ืฉื’ื ื‘ื•ื•ื‘ื™ื ืจ ื”ื™ื™ืชื™ ืฆืจื•ื“ ื•ื‘ื˜ื— ืœื ื”ืฆืœื—ืชื™ ืœื”ืงืœื™ื˜ ืกื™ื›ื•ื ืื—ืจื™ื•. ื‘ืžืงื•ื ื–ื” ืื ื™ ื›ื•ืชื‘ ื›ืืŸ ืืช ืขื™ืงืจื™ ื”ื“ื‘ืจื™ื ื•ืžืงื•ื•ื” ืฉื–ื” ื™ืขื–ื•ืจ ืœืืœื” ืžื›ื ืฉืœื ื”ื’ื™ืขื•. ืžื” ื–ื” Cursor ืงืจืกืจ ื”ื™ื” ืกื‘ื™ื‘ืช ื”ืคื™ืชื•ื— ืžืฉื•ืœื‘ืช AI ื”ืจืืฉื•ื ื” ืฉืจืื™ืชื™. ื”ื™ื ื™ืฆืื” ืขื•ื“ ื‘ 2023 ืžืžืฉ ืขื ChatGPT ื•ืœื“ืขืชื™ ื”ื™ืชื” ืฉื ืœืคื ื™ VS Code ื•ืงื•ืคื™ื™ืœื•ื˜ ื•ื‘ื˜ื— ืœืคื ื™ ื”ืกื‘ื™ื‘ื•ืช ื”ืžืชื—ืจื•ืช Windsurf ื• Trae. ืขื•ื“ ืžื”ื”ืชื—ืœื” ื”ื—ื‘ืจื™ื ื‘ืงืจืกืจ ื”ืชืœื‘ื˜ื• ืื ืœื™ื™ืฆืจ ืชื•ืกืฃ ืœ VS Code ืื• ืœืงื—ืช ืืช ื”ืงื•ื“ ืขืฆืžื• (ื›ื™ VS Code ื”ื•ื ื‘ืงื•ื“ ืคืชื•ื—) ื•ืœื™ื™ืฆืจ ืขืœ ื‘ืกื™ืกื• ืขื•ืจืš ืžืฉืœื”ื ื•ื‘ืฉืœื‘ ืžื•ืงื“ื ืžืื•ื“ ื”ื ื”ื‘ื™ื ื• ืฉื›ื“ื™ ืœืชืช ืืช ืžืœื•ื ื”ืขืจืš ืฉืœ ื” AI ื”ื ืจื•ืฆื™ื ืœื™ื™ืฆืจ ืขื•ืจืš ืฉืœื”ื. ื”ื™ื•ื ื›ืฉื”ื ื›ื‘ืจ ืขื‘ืจื• ืืช ื’ืจืกื” 2 ืขื•ืจืš ื”ืงื•ื“ ืฉืœื”ื ืžืชืคืงื“ ื‘ืื•ืคืŸ ืขืฆืžืื™ ืžืฆื•ื™ืŸ ื•ืžืฆื™ื’ ืื’'ื ื“ื” ื‘ืจื•ืจื” ืœื’ื‘ื™ ื—ืœื•ืงืช ื”ืขื‘ื•ื“ื” ื‘ื™ืŸ ืžืคืชื—ื™ื ืœ AI. ื ืงื•ื“ืช ื”ืคืชื™ื—ื” - ื—ืงื™ืจืช ื”ืคืจื•ื™ืงื˜ ื”ืจืขื™ื•ืŸ ื”ืžืจื›ื–ื™ ื”ืจืืฉื•ืŸ ืฉืื ื—ื ื• ืจื•ืื™ื ื›ื‘ืจ ื›ืฉืžืชืงื™ื ื™ื ืงืจืกืจ ื”ื•ื ืฉื ื™ ื›ืคืชื•ืจื™ ื‘ื—ื™ืจื” ื‘ื™ืŸ "ืžืฆื‘ ืขื•ืจืš" ืœ"ืžืฆื‘ ืกื•ื›ืŸ". ืžืฆื‘ ื”ืขื•ืจืš ื–ื” ืžื” ืฉื ืจืื” ื›ืžื• VS Code ืฉืื ื—ื ื• ืžื›ื™ืจื™ื ืื‘ืœ ืืช ื”ื•ื•ื‘ื™ื ืจ ื”ืชื—ืœื ื• ืžืžืกืš ื”ืกื•ื›ืŸ. ื ืฉื™ื ืœื‘ ืœื›ืžื” ื“ื‘ืจื™ื ืžืขื ื™ื™ื ื™ื ื‘ืžืฆื‘ ื–ื”: 1. ื”ืกื•ื›ื ื™ื ืžื•ืคื™ืขื™ื ื‘ืชื•ืจ ืจืฉื™ืžื” ืื ื›ื™ืช ื›ืœื•ืžืจ ืื—ื“ ืžืชื—ืช ืœืฉื ื™. ืจืฉื™ืžื” ื›ื–ืืช ืžืืคืฉืจืช ื ื™ื•ื•ื˜ ืžื”ื™ืจ ื‘ื™ืŸ ืžืกืคืจ ืกื•ื›ื ื™ื ืฉืขื•ื‘ื“ื™ื ื‘ืžืงื‘ื™ืœ. 2. ื”ืฉื™ื—ื” ืขื ื”ืกื•ื›ืŸ ืžื•ืคื™ืขื” ื‘ืžืจื›ื– ื”ืžืกืš ื•ืžืงื‘ืœืช ืœืคื—ื•ืช ื—ืฆื™ ืžืกืš ืœืคืขืžื™ื ื™ื•ืชืจ. 3. ืขื•ืจืš ื”ื˜ืงืกื˜ ื ืžืฆื ื‘ืฆื“ ื”ืฉืžืืœื™ ืฉืœ ื”ืžืกืš ื•ื ืจืื” ืฉืื™ื‘ื“ ืงืฆืช ืžื—ืฉื™ื‘ื•ืชื•. ืื ื™ ืžืชื—ื™ืœ ื‘ื”ืคืขืœืช ืงืจืกืจ ืขืœ ืคืจื•ื™ืงื˜ ืงื™ื™ื ื•ืฉื•ืœื— ืื•ืชื• ืœื—ืงื•ืจ. ื ืฉื™ื ืœื‘ ืฉืžืชื—ืช ืœืชื™ื‘ืช ื”ื”ื•ื“ืขื” ื™ืฉ ื›ืคืชื•ืจ ืœื‘ื—ื™ืจืช ืžืฆื‘ ื”ืขื‘ื•ื“ื” ืฉืœ ื”ืกื•ื›ืŸ ื•ื‘ืฉื‘ื™ืœ ืœื—ืงื•ืจ ืื ื™ ื‘ื•ื—ืจ ื‘ืžืฆื‘ Ask. ื”ื ื” ื›ืžื” ืคืจื•ืžืคื˜ื™ื ืœื“ื•ื’ืžื” ืœืžืฆื‘ ื–ื”: 1. Describe the project architecture. Use mermaid diagrams. 2. Find the top 10 technical debts the project. 3. Describe the test framework used, what parts of the project are covered with tests and what important flows are not tested. 4. Find top 10 potential performance bottlenecks the project may have. 5. Describe a full flow (include specific files and line numbers) from web request to response for a URL. ื›ืœ ื—ื™ืคื•ืฉ ื›ื–ื” ื™ืฆื™ื’ ืœื™ ื”ืกื‘ืจ ื˜ืงืกื˜ื•ืืœื™ ื•ื’ื ืจืฉื™ืžื” ืฉืœ ืงื‘ืฆื™ ืงื•ื“ ืœื—ืงื•ืจ. ื›ืฉืื ื™ ื ื›ื ืก ืœืงื•ื‘ืฅ ืงื•ื“ ืื ื™ ื™ื›ื•ืœ ืœืกืžืŸ ืคื•ื ืงืฆื™ื”, ืœื‘ื—ื•ืจ ื‘ Popup ื‘ืืคืฉืจื•ืช Add to chat ื•ืื– ืœื”ืžืฉื™ืš ืขื ืคืจื•ืžืคื˜ื™ื ืกืคืฆื™ืคื™ื™ื ืœืคื•ื ืงืฆื™ื” ื–ื• ื›ืžื•: 1. Describe the API of the function - what are its input parameters, expected data in the database, output format and when is it used. 2. Is the function covered with existing tests? point me to the relevant tests. 3. Code review the function and suggest an alternative implementation. ื›ืฉื“ื‘ืจื™ื ืžืชื—ื™ืœื™ื ืœื”ืกืชื‘ืš ืื ื™ ื™ื›ื•ืœ ืœืขื‘ื•ืจ ืœื˜ืื‘ ื”ืขื•ืจืš ื›ื“ื™ ืœืฆืœื•ืœ ืœืชื•ืš ื”ืงื•ื“ ื•ืื– ืœื—ื–ื•ืจ ืœื˜ืื‘ ื”ืกื•ื›ื ื™ื ื›ื“ื™ ืœืจืื•ืช ืžื” ืขื•ืฉื™ื ื”ืกื•ื›ื ื™ื ื”ืื—ืจื™ื. ื–ื” ื”ื›ื— ื”ืจืืฉื•ืŸ ืฉืœ ืงืจืกืจ - ื ื™ื”ื•ืœ ืขื‘ื•ื“ื” ื‘ืžืงื‘ื™ืœ ืฉืœ ื›ืžื” ืกื•ื›ื ื™ื ื›ื•ืœื ื—ื•ืงืจื™ื ื‘ืžืงื‘ื™ืœ ืืช ื”ืคืจื•ื™ืงื˜ ื•ืžืชื›ื ื ื™ื ืขื‘ื•ืจื™ ืืช ื”ืขื‘ื•ื“ื”. ืชื™ืงื•ื ื™ ืงื•ื“ - ืžืชื›ื ื•ืŸ ืœื‘ื™ืฆื•ืข ืจืขื™ื•ืŸ ืฉื ื™ ืฉืงืจืกืจ ืžืงื“ืžื™ื ื”ื•ื ืคื™ืชื•ื— ืœืคื™ ื“ืจื™ืฉื” ืื• Spec Driven Development. ื ื—ื–ื•ืจ ืœืชื™ื‘ืช ื”ืกื•ื›ืŸ ื•ื ื ื™ื— ืฉืื ื™ ืžืกืชื›ืœ ืขืœ ื”ืกื•ื›ืŸ ืฉื—ืงืจ ืืช ืกื‘ื™ื‘ืช ื”ื‘ื“ื™ืงื•ืช ืฉืœ ื”ืคืจื•ื™ืงื˜ ื•ืชื™ืืจ ืœื™ ืื™ื–ื” ืชื”ืœื™ื›ื™ื ืžื›ื•ืกื™ื ืขืœ ื™ื“ื™ ื‘ื“ื™ืงื•ืช ื•ืื™ื–ื” ืœื. ืขื›ืฉื™ื• ืื ื™ ืžืขื‘ื™ืจ ืืช ืื•ืชื• ืกื•ื›ืŸ ืœืžืฆื‘ Plan, ื‘ื•ื—ืจ flow ืื—ื“ ื•ืžื‘ืงืฉ: > Create a test plan to test flow X. Be specific about the tests to execute, the data to create in the DB and the expected results. ื”ืชื•ืฆืื” ื”ื™ื ืงื•ื‘ืฅ Markdown ืฉืžื›ื™ืœ ืจืฉื™ืžื” ืฉืœ ื‘ื“ื™ืงื•ืช ืขื ื”ื•ืจืื•ืช ืื™ืš ืœื›ืชื•ื‘ ืืช ื”ื‘ื“ื™ืงื•ืช ื”ืืœื”. ื‘ื—ืœื•ื ื•ืช ืื—ืจื™ื ื ื•ื›ืœ ืœื‘ืงืฉ ืœืชื›ื ืŸ ืžื™ื’ืจืฆื™ื” ืœื‘ืกื™ืก ื”ื ืชื•ื ื™ื, ืฉื›ืชื•ื‘ ืฉืœ ืคื•ื ืงืฆื™ื” ืื• ืฉืœ flow ื‘ืงื•ื“, ืขื“ื›ื•ืŸ UI ืื• ื›ืœ ืคื™ืฆ'ืจ ืื• ื‘ืื’ ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื. ืื—ืจื™ ืฉื”ืชื•ื›ื ื™ืช ืžื•ืคื™ืขื” ืื ื™ ื™ื›ื•ืœ ืœื”ืžืฉื™ืš ืœื“ื‘ืจ ืขื ื”ืกื•ื›ืŸ ื›ื“ื™ ืœืขื“ื›ืŸ ืื•ืชื”, ืœืžืฉืœ ืื ื™ ื™ื›ื•ืœ ืœื‘ืงืฉ ืžืžื ื• ืœื”ื•ืกื™ืฃ ื‘ื“ื™ืงื•ืช ืขื•ืžืกื™ื ืื• ืœื•ื•ื“ื ืฉื”ื‘ื“ื™ืงื•ืช ื™ื›ื•ืœื•ืช ืœืจื•ืฅ ื‘ืžืงื‘ื™ืœ. ืื ื™ ื™ื›ื•ืœ ื’ื ืœืขืจื•ืš ื‘ืขืฆืžื™ ืืช ืงื•ื‘ืฅ ื” Markdown ืฉืœ ื”ืชื•ื›ื ื™ืช ื›ืฉืฆืจื™ืš ืฉืœื™ื˜ื” ื™ื•ืชืจ ืžื“ื•ื™ืงืช ื‘ืคืจื•ืžืคื˜. ืื—ืจื™ ืฉืกื™ื™ืžืชื™ ืœืขื‘ื•ื“ ืขืœ ื”ืชื•ื›ื ื™ืช ื‘ืื•ืชื• ื—ืœื•ืŸ ืฉืœ ื”ืชื•ื›ื ื™ืช ืื ื™ ืžื–ื”ื” ื›ืคืชื•ืจ Build. ืœื—ื™ืฆื” ืขืœื™ื• ืžืขื‘ื™ืจื” ืืช ื”ืกื•ื›ืŸ ืœืžืฆื‘ ื‘ื™ืฆื•ืข ื•ืฉื ื”ื•ื ืžืชื—ื™ืœ ืœื›ืชื•ื‘ ืืช ื”ืงื•ื“.