ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 420
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-530 kunlar
Postlar arxiv
1 420
ืืืืง ืืฉื ื ืื ื ืจืื ืืกืืื ืืื ืืืื ืฉืืืืืช ืฉื ืืื ืืงืกืื ืืื ืืงื ืื ืืจืื ืืืชืจ ืืื ืืื ืฉืืื ืฆืจืื. ืืืฉืืื ืืคืขื ืืื ืืกืืื ืืช ืืืื ืืื 4 ืืืืืื ืื ืืื ืืืืฉืื ืืขืฉืืช ืืช ืื ืฉืื ืืฉืื ืกื ืืื 1000000000 ืคืขืืื (ืื ื ืืคืืื ืื ืืืืข ืืื ืืงืจืื ืืช ืืืกืคืจ ืืื), ืืื ืืืฉื ืืช ืกืืื ืืขืืืก ืฉื ืืกืืขืื.
ืืฉ ืคื ืฉื ื ืืชืืจืื - ืงืืื ืื ืฆืจืื ืืฉืืคื ืืช ืืงืื ืฉืืื ืืช ืืืื ืืืขืื ืืื 4 ืืืืืื ืื, ืืืืจื ืื ืืืฉืื ืืื ืืืจืืฅ ืืืชื ืืืื ืคืขืืื ืืืืืืข ืืชืืฉืื ืืชืืฆืื. ืคื ืืคืฉืจ ืืฉืื ืื ืฉืืืจื ืืื ืืืจื ืืื ืคืขืืื ืฉื ืื ืืช ืืืื ืืื ืืืืืื ืื ืืืืืจืื ืืืื ืกื ืืืกืืื ืงืืืข ืืืื ื ืจืฆื ืืืฆืื ืืช ืืืขืื ืืื ืืื ืื ื ืฆืืจื ืืืจืืฅ ืืช ืืืืืื 1000000000 ืคืขืืื ืืื ืจืง ืืืคืืื ืฉื ืืืื ืืืขืื.
ืืืชืืจ ืืจืืฉืื ืืื ืฉืืื ืขืืืฃ ืืืืชืจ ืขื ืฉืืคืืืื ืืืืืฆืื ืืช ืืคืื ืงืฆืืื ืืืืืช ืืืฉืืชืคืช ืืคืื ืงืฆืืืช, ืืื ืื ืื ื ืคื ืืืืืืฆื ืืื ืืืืืื ืื ื ืืืืจ ืืงืื ืืื ืื ื ืงืจื ืืื ืืืจืกืช ืืงืืคื ืคืืืกื:
def updateRowAsString(matrix: Map[(Int, Int), Char],
rowNumber: Int,
updater: String => String): Map[(Int, Int), Char] =
val row = matrix.collect {
case ((row, col), ch) if row == rowNumber => (col, ch)
}.toList.sortBy(_._1).map(_._2).mkString
val updated = updater(row)
updated.zipWithIndex.foldLeft(matrix) { case (matrix, (ch, idx)) =>
matrix.updated((rowNumber, idx), ch)
}
def tiltUp(column: String): String =
column
.split('#')
.map(_.sorted.reverse)
.mkString("#")
def tiltDown(column: String): String =
column
.split('#')
.map(_.sorted)
.mkString("#")
def tiltLeft(row: String): String =
row
.split('#')
.map(_.sorted.reverse)
.mkString("#")
def tiltRight(row: String): String =
row
.split('#')
.map(_.sorted)
.mkString("#")
def spinCycle(matrix: Map[(Int, Int), Char]): Map[(Int, Int), Char] =
val maxColumn = matrix.keys.maxBy(_._2)._2
val maxRow = matrix.keys.maxBy(_._1)._1
val s1 = 0.to(maxColumn).foldLeft(matrix) { (matrix, c) => updateColumnAsString(matrix, c, tiltUp) }
val s2 = 0.to(maxRow).foldLeft(s1) { (matrix, c) => updateRowAsString(matrix, c, tiltLeft) }
val s3 = 0.to(maxColumn).foldLeft(s2) { (matrix, c) => updateColumnAsString(matrix, c, tiltDown) }
val s4 = 0.to(maxRow).foldLeft(s3) { (matrix, c) => updateRowAsString(matrix, c, tiltRight) }
s4
ืืฉืืื ืืืชืืจ ืืฉื ื ืืืจ ืืคืฉืจ ืืืกืชืคืง ืืคืื ืงืฆืื ืจืงืืจืกืืืืช ืฉืืืคืฉืช ืืช ืืืขืื:
@tailrec
def findCycle(matrix: Map[(Int, Int), Char],
iterate: (Map[(Int, Int), Char] => Map[(Int, Int), Char]),
seen: List[Map[(Int, Int), Char]] = List()): List[Map[(Int, Int), Char]] =
if (seen.contains(matrix)) {
seen :+ matrix
} else {
findCycle(iterate(matrix), iterate, seen :+ matrix)
}
ืืงืื ืืคืืชืจืื ืขืฆืื ืฆืจืื ืืืืืจ ืฉืืืขืื ืื ืจืื ืื ืืชืืื ืืืืืงืื ืืจืืฉืื, ืืืืืจ ืืืื ืื ื ืืื ืคืขืืื ืฉื ืื ืืช ืืืื ืืื ืืืืืื ืื ืืื ืจืง ืืืืืจืื ืืืื ืกื ืืืกืืื ืืขืืื. ืืื ื ืจืื ืืคืืชืจืื ืืกืงืืื:
@main
def day14part2(): Unit =
val matrix = parseInput(Source.fromResource("day14.txt"))
val maxColumn = matrix.keys.maxBy(_._2)._2
val maxRow = matrix.keys.maxBy(_._1)._1
val cycle :+ dup = findCycle(matrix, spinCycle)
val prefix = cycle.indexOf(dup)
val actualCycle = cycle.drop(prefix)
LazyList.iterate(matrix)(spinCycle).take(prefix + ((1000000000 - prefix) % actualCycle.size) + 1)
.last
.pipe(totalLoad)
.pipe(println)
ืืฉ ืืื ืจืขืืื ืืช ืืืจืื? ืคืืชืจืื ืืช ืืขื ืืื ืื ืืฉืคืืช ืืืจืืช? ืืืืื ืื ืชืืื ืืฉืชืฃ ืืชืืืืืช ืื ืืืืืจื.1 420
ืคืืชืจืื Advent Of Code 2023 ืืื 14 ืืกืงืืื (ืืืง ืจืืฉืื)
ืขืื ืฉืืืข ืืชืืื ืืกืืคื ืฉืืืข ืื ืืื ืืฆืืื ืืคืชืืจ ืขืื ืชืจืืื ืฉื Advent Of Code. ืืคืขื ืื ืื ื ืืืื 14 ืืขืืืื ืขื ืืืจืืฆืืช.
ืืชืจืืื
ื ืชืื ืืื ืขื ืกืืขืื, ืืืงื ืขืืืืื ืฉืืชืืืืืื ืืืืงื ืืจืืืขืื ืฉืื ืืืื. ืืื ืื ื ืจืื:
O....#....
O.OO#....#
.....##...
OO.#O....O
.O.....O#.
O.#..O.#.#
..O..#O..O
.......O..
#....###..
#OO..#....
ืขืืฉืื ืื ืื ื ืืืื ืืช ืืืื ืงืฆืช ืืืขืื, ืื ืื ืืกืืขืื ืืขืืืืื ืืชืืืืืื ืืืขืื ืืื ืื ื ืืงืืืื ืืช ืืฆืืจื ืืืืช:
OOOO.#.O..
OO..#....#
OO..O##..O
O..#.OO...
........#.
..#....#.#
..O..#.O.O
..O.......
#....###..
#....#....
ืืืจืืืขืื ืื ืืื ืืื ืฉืืืืจื ื ืืืขืืืืื ืืชืืืืื ืขื ืฉื ืขืฆืจื ืืืื ืกืืข ืืืจ.
ืขืืฉืื ื ืกืื ืื ืฉืืจื ืืืกืคืจ ืื ืจืฆื ืืืขืช ืืื ืืืืจืื ืืฉ ืืื ืฉืืจื. ืืฉืืื ืืืืืข ืืืกืคืจ ืืื ืืืคืืื ืืช ืืืกืคืจ ืฉื ืืฉืืจื ืืืกืคืจ ืืืืืจืื ืฉืื ืืกืืืืื ืืช ืื ืืชืืฆืืืช. ืขื ืืืกืคืจืื ืื ื ืจืื ืืื:
OOOO.#.O.. 10
OO..#....# 9
OO..O##..O 8
O..#.OO... 7
........#. 6
..#....#.# 5
..O..#.O.O 4
..O....... 3
* ....###.. 2 *
* ....#.... 1 *
ืืฉ 5 ืืืืจืื ืืฉืืจื ืฉื 10 ืื ืื ื ืืชื 50, ืขืื ืฉื ื ืืืืจืื ืืฉืืจื ืฉื 9 ืฉืืืกืืคืื 18, ืืืื ืืืฉืืืื ืืืืืจืื ืขื ืฉืืงืืืื ืืช ืืกืืื 136.
ืืืฉืืื ืืื ืืืชืื ืชืืื ืืช ืฉืืงืืืช ืืช ืืืืจืืฆื ืืืืฉืืช ืืช ืืกืืื ืืืจื ืื ืืืืืื.
ืคืืชืจืื ืืกืงืืื
ืืืืจ ืืจืืฉืื ืฉืงืืคืฅ ืืขืื ืืื ืืื ืฉืืืืื ืงืืจืืช ืืื ืืืจ ืื ืคืจื, ืืฉืืชืื ืืืืจ ืืืกืืช ืงื ืืืืื ืืื ืืื ืืจืื ืืืจื ืืืืื ืืืขืื - ืคืฉืื ืืืชืืื ืืช ืืืืจ ืืื ืกืืืืืช, ืืืืืื ืืช ืื ืืขืืืืืื ืืืชืืื ืืื ืงืืืืช ืืกืืฃ ืืื ืืืืจืื ืืืจื. ืืกืงืืื ืื ืืืื ืคืฉืื:
"OO.O.O..##".split('#').map(_.sorted.reverse).mkString("#")
ืืื ืืงืื ืืืืคืื ืืืืื ืืืขืื ืืืงื ืขืืืื ืขืืืื, ืืืื ืืช ืืกืืขืื ืื ืืืขืื ืืืกืืฃ ืืืฉื ืืช ืืกืืื ืืคื ืืืืฉืื ืืชืจืืื. ืื ืืกืืคืืจ ืืกืงืืื:
import scala.annotation.tailrec
import scala.io.Source
import scala.util.chaining.*
object aoc2023day14 {
val demoInput: String =
"""O....#....
|O.OO#....#
|.....##...
|OO.#O....O
|.O.....O#.
|O.#..O.#.#
|..O..#O..O
|.......O..
|#....###..
|#OO..#....""".stripMargin
def parseInput(input: Source): Map[(Int, Int), Char] =
input
.getLines()
.zipWithIndex
.collect {
case (line: String, index: Int) => line.toList.zipWithIndex.map((ch, column) => (index, column, ch))
}
.flatten
.flatMap { case (row, column, ch) => Map((row, column) -> ch) }
.toMap
def printMatrix(matrix: Map[(Int, Int), Char]): Unit =
val maxRow = matrix.keys.maxBy(_._1)._1
val maxColumn = matrix.keys.maxBy(_._2)._2
0.to(maxRow).foreach { row =>
0.to(maxColumn).foreach { col =>
print(matrix((row, col)))
}
println()
}
def updateColumnAsString(matrix: Map[(Int, Int), Char],
columnNumber: Int,
updater: (String) => String): Map[(Int, Int), Char] =
val column = matrix.collect {
case ((row, col), ch) if col == columnNumber => (row, ch)
}.toList.sortBy(_._1).map(_._2).mkString
val updatedColumn = updater(column)
updatedColumn.zipWithIndex.foldLeft(matrix) { case (matrix, (ch, idx)) =>
matrix.updated((idx, columnNumber), ch)
}
def tiltUp(column: String): String =
column
.split('#')
.map(_.sorted.reverse)
.mkString("#")
def totalLoad(matrix: Map[(Int, Int), Char]): Long =
val maxRow = matrix.keys.maxBy(_._1)._1
matrix.map {
case ((row, col), 'O') => maxRow + 1 - row
case ((row, col), _) => 0
}.sum
@main
def day14part1(): Unit =
val matrix = parseInput(Source.fromResource("day14.txt"))
val maxColumn = matrix.keys.maxBy(_._2)._2
0.to(maxColumn).foldLeft(matrix) {(matrix, c) =>
updateColumnAsString(matrix, c, tiltUp)
}.pipe(totalLoad)
.pipe(println)
}
ืืืฉืืืช ืขื ืืืง 21 420
ืกืืืื ืืืืืจืช ืงืืืคืื ื ืืืช ืจืืืงื
ืจืืืงื ืืชืืืื ืืชืืจ ืกืคืจืืืช UI ืืืื ืื ืื ืืื ืืืืจ ืืืฉืื ืขื ืงืืืคืื ื ืื ืืชืืจ "ืืืืง ืืขืืื ืฉืืฉืชื ื ืืื". ืืกืืืื ืฉื ืืงืืืคืื ื ืื ืืื ืืืืืข ืฉืฉืื ืื ืฉืื ืืืืื ืืฉืื ืื ื UI ืืื ืืฉ ืืืืข ืฉืฆืจืื ืืืฉืคืืข ืขื ืืื ืงืืืคืื ื ืืืช ื ืฉืืืจ ืืืชื ืืืืืฉืื ืืงืื ืืืฆืื ื (ืคืืืงืก, ืืืืจืื?) ืื ืืืจ ืืช ืืงืืืคืื ื ืืืช ืืฉื. ืืืืจ ืืืฉืื ืืืืืงื ืืงืืืคืื ื ืืืช ืืื ืืืืืช ืืกืืืืื ืืขืฉืืช Reasoning ืขื ืืืืงืื ืืขืืื. ืืืืืช ืืกืืืืื ืืืืื ืืื ืืืคืืข ืขืืฉืื ืืกืืื ืฉืืฉ ืืืืขื ืืืฉื.
ืืื ืื ืื ืืื ืืืืื ื ื 2015. ืืืื ื 2018.
ืืืื ืืืืืืื ืืื Hooks ืื ืื ื ืืืฉืืื ืขื ืงืืืคืื ื ืื ืืชืืจ ืืืืจ ืืขืืื ืฉืืืืจ ืขื ืขืฆืื ืืื ืืื ื ืืงืืืืช ืืืงืฉืจืื. ืืชืืจ ื Building Block ืฉื ืืจืืืืงืืืจื ืืืืกืกืช ืงืืืคืื ื ืืืช. ืืฉืื ืฉืืฉ ืื ืืืืืงื, ืืฉืื ืฉืืืื ืืืจืื ืืืืฉืื. ืจืืืงื, ืืืจืืช ืื ืฉืื ืืืชืืื ืืืืชืจืช, ืืื ืืืจ ืื ืกืคืจืื ืจืง ื UI ืื ืืคืืืช ืื ืฉืื ืื ืืฉืชืืฉืื ืื ืจืง ืืืืคื ืืื.
ืืื ื ืืื ืืงืื ืคืืืงื- ืืื ืืืฆืืจ ืงืืืคืื ื ืืืช ืืคื ืกืืืืืช ืืืืื ืช ืกืืืื ืื ืืคื ืืืฉืง ืืืฆืื ื ืืืคืฉืจืืช ืืฉืืืืฉ ืืืืจ? ืืคืขืืื ืฉื ื ืืฉืืงืืืื ืืืื ืืืืืื ืืื, ืืคืขืืื ืื ืืชื ืืฉืื, ืืืื ืืงืจื ืฆืืจืช ืืืฉืืื ืฉืืืืืื ืืื ืืื ืฉืื ื.
ืืืฉืชืืฉ ืืกืืืื ืืชืืจ ืงื ืื ืื ืืืืืจืช ืงืืืคืื ื ืืืช ืื ืงืฉื ืื ืืืื ืืืืืฆืื ืฉืื ื ืืืชืื ืชืื ืืืคืฉืช "ืืกืืจ" ืืช ืืงืื ืืืืื ืืื ืืืืืื. ืืืงืจื ืฉื ืจืืืงื ืื ืฉืืื ืืช ืืืืืฅ ืืืฉืื ืืื ืืคืชืื UI.
1 420
ืืื ืืชืื ืชืื ืฆืจืื ืืฉืืื ืืืชืืืจ ื S3?
ืืชืื ืช ืืื ืืื ืื ื ืชืฉืชืืช ืืฉืืืขืช ืืืืืืจ ื S3 ืืชืืจ POC. ืืื ืจืฆื ืืืจืืืช ืฉืฉืืืจืช ืืงืืฆืื ืขื S3 ืชืืื ืืฉืคืจ ืืช ืืืืฆืืขืื ืืืขืจืืช ืืืืคืฉืจ ืืืืื ืืืคืงืืช. ืืคืจืืืงื ืืืื ื ื ืงืืจ ืืืื ืืืืืคื ืื ืืื ืืื ืืืกืืก ืฉื ืืงืื ืืืจ ืืืื ืก ืืืขืจืืช.
ืืชืื ืช ืืื ืฉื ื ืงืืื ืืงืฉื ืืืงืื ืืืืจ ืืืฉืืื ืฉืื ืืช ืืงืืฆืื ืฉืืืจ ืฉืืืจืื ืืืงืื ืขื S3. ืืฆืื ืืฆืืืช ืืชืื ืชืื ืงืืืื ืงืจืืื ืืคื ืืื ืืืืื ืื ืคืืชืจืื ืืืื ืืื ืืฉืื ืืืจืื ืืืืจืื ืืขืืื ืืืจ ืืืืืฉืื ืืกืืคืืจ ืืื. ืืื ืืืข ืฉืืฉ ืืืื ืชืฉืชืืช ืืกืืกืืช ืืืคืฉืื ืืื ืืื ืืื ืืื ืืืืื ืืื ืื ืขืืื ืื ืืื ืื ื ืื ืื ืื ืืืฉ ืืืืืงื ืฉืขืื ืืืฉ ืืกืืจ.
ืืชืื ืช ืืื ืฉืืืฉื ืืืื ืฉืืืฉืื ืืืจ ืื ื ืกืคืจืืื ืฉืืชืืืจืช ืขื S3 ืืื ืืื ื ืืืกืืจืงืฆืื ืืืืืช ืืขื ืืืืกืื ืงืืฆืื ืืขื ื (ืื ืฉืืคืฉืจ ืืืื ืืขืืืจ ืืืจ ืืขื ื ืื ืืืจืื). ืืื ืืืืื ืืืืฉ ืืืืฆืขืืชื ืืืืืจ ื S3 ืขืืืจ ืคืืฆ'ืจ ืืืฉ ืืื ืื ืจืฆื ืืืกืชืื ืืืฉืืืจ ืงืื ืืฉื ืืื ืืืืง, ืืืื ืื ืืืฆืข ืืืืจืฆืื ืืืื.
ืื ืื ืืื ืืื ืฉืืข ืฉืืจืื ืืงืืืืช ืจืืฆืื ืืืืกื ืงืืฆืื ืขื S3 ืืืืข ืฉืขืืฉืื Micro Services ืื ื-ืืืจ, ืื ืืื ืืฆื ืฆืืืช ืืืืงืจืืื ื ืฉืืื ื ืืืงืจื ืกืจืืืก ืขื ืืืืืจ ื S3. ื ืืื ืฉืืกืจืืืก ืืชืื ื Erlang ืืื ืืืืืื ืื ืฉืืืืฆืืขืื ืืืื ืืฆืืื ืื ืืฉืืืืงืจืืื ืื ืืืืื ืืคืชืืจ ืื ืืขืื ืืื ืืืขืช ืืฉืืจ ืืืขืจืืช.
ืืชืื ืช ืืื ืจืืืขื ืืื ืฆืจืื ืืขืืื ืืช ืื ืื ืื ืืืกืื ืืงืืฆืื ืฉื ืืืงืืืืช. ืืืืงืจืืื ืื ืื ืืืื ืื ืืืจ ืฉื ืชืืื ืืืื ืืฃ ืืื ืื ืืืืข Erlang. ืืช ืืกืคืจืื ืฉืืฉืืืฉื ืืื ืืก ืืื ืื ืืืืจ ืืืืืื ืืื ืืืจ ืื ื ืชืืืช ืืฉื ื ืืื ืื ืื ืื ืืืืจืื ืื ืืื ืืกืคืืง ืื ืจืืื ืื ืงืืื ืืฉืืืืฉ. ืืื ืฉืืืืืง ืืฆืื ืกืคืจืืืช ืืืืืจ ืืืฉื ื S3 ืขื ืืืฉืง ืืืฉื ื ืืืืืืช ืืืืข ืืฉืืคืจืช.
ืื ื ืจืื ืืื ืืื ื. ืื ื ืจืืืช ืืขืจืืช ืฉืืืจ ืงืฉื ืืืชืงืื ืขื ืคืืฆ'ืจืื ืื ืื ืฉืื ืื ืฉืืืจ ืืฉืื ืืืจ. ืื ืืคืื ืืื ืืืจืฉ ืขืืืื ืืืืื ืืื ืืืืืง ืืื ืืฆืืื ืืืชืืื ืืืื ืื ืื ืื ืื.
1 420
ืื ืืื ืืฉืชืืฉืื ืืื
ืืื ืื ืกืคืง ืฉืืกืืื ื'ืืืก ืืื ืืืื ืืช ืืืืืช ืืฉืืื ืืืฉืื ืืช ืืืฉืชืืฉืื ืฉืืืืืงืื ืื ื ืืื ืืช ืืืืคืื ืฉืื. ืืื ืจืื ืืช ืื ืืฉืขืืช ืฉืื ืืืื ืืืขืืืืช ืืืืืงืืช, ืืช ืื ืื ืกืืื ืื ืฉื ืืกื ืื ืคืื ืงืฆืื ืืืืคืื, ืืช ืืืืืงืืช ืืืืืืืืืืช, ืืช ืืืืืื, ืืช ืื ืื ืื ื ืืืื ื ืืืจืืืืฆืืืช.
ืืื ื ืืืืฆืจ ืืืฆื ืืฉืืง ืืืืฉืชืืฉืื ืขืืฉืื ืืืชื ืืืจืื ืฉืืฃ ืืื ืื ืืฉื ืขืืืื ืืืื ืืคืืชืื.
ืืืืคื ืืฉ ืืื ืืช ืืืืฆืคื?
ืืื ืื ืจืง ืืืืืคืื...
ืืื ืื ืืืืฆืื ืขื ืืคืชืืจ ืคืขืืืื ืืคื ื ืฉืกืืืืชื ืืืคื ืืืืืฆื ืืจืืฉืื ื?
ืืื ืื ืฉืืืจืื ืืช ืืกืืืื ืื ืื ืืืื ืืขืฅ ืืงืืืคืื ื ืืืช? ืืจื ืืืจืชื ืืื ืฉืื ืืืื ืืืืชืจ ืืื ืจื ืืจืื.
ืืื ืื ืื ืกืื ืืชืฉืื ืืช ืืกืืก ืื ืชืื ืื ืืื ืืื ืืงืกืื? ืืจืืจ ืฉืื ืืขืืื ืืื.
ืื ืคืชืืื ืื ืืื ืื ืฉืืืืชืช SQL ืืงืื ืฉืืืืข ืืืืคืก? ืืจื ืืืจืชื ืืื ืฉืฆืจืื ืื ืงืืช ืืช ืืงืื ืืคื ื ืฉืืฉืชืืฉืื ืื.
"ืื ืืื ืืฉืชืืฉืื ืืื" ืื ืขืืื. ืื ืฉืื ืืืฉืืื ืืืฉืชืืฉ ืื ื ืืื ืืืืฆืจืื ืฉืื ื, ืืืืฉืืื ืืืื ืืืขื ืืช. ืืืื ืืืืืจ:
1. ืืชืืจ ืืฉืชืืฉืื ืืฉืื ืืืขืช ืืื ืืืืฆืจ ืืืงืืจื ืชืื ื ืฉื ืฉืชืืฉ ืืืืฆืจ. ืื ืืืืืื ืืืฉืชืืฉ ืืคืจืืืืืืจืง ืืคื ืืืืงืื ืืื ืืฉืื ืืืืืจ ืืืืืื ืืืชื ืืื ืืืืื ืืื ืืืืืง ืื ืืืฉืืจ ืืฉื ืืืืง ืืช ืื ืื ื ืืื.
2. ืืชืืจ ืืืฆืจืื ืขืืื ื ืืืืืช ืืืื ืื ืืืืงืืจืช ืขื ืืืืฆืจืื ืฉืื ื ืืืฉ ืื ื ืืช ืืืืืจื - ืืชืงื ืื ืืืชืขืงืฉ. ืจืืืงื ืืืื ื ืืชืขืงืฉืื ืขื ืื ืื ืื ื ืืืื ืืกืืืื ืฉืืื ืืื ืื ืื ืื ื ORM ืคืชืจื ืืืขื ืืืืจื ืืช ืืืขืื ืฉืื ืฉืื ืืื ืื ืฉืืืืชืืช SQL ืืฆืืจื ืืื ืืช ืืื ืืืืืืืช. ืื ืืฉืืืืืืื "ืืืชืขืงืฉ" ืืคืฉืจ ืืืืื ืฉืืืฉืชืืฉืื ืฉืื ื ืืืื ืื ืื ืื ืขืืฉืื ืื ืืกืืจ ืืืื ืืชืงื ืื. ืืจืืืงื ืืืื ืื ืืืืืื ืืืืคืืก ืืืืจื ืื ืคืขื ืฉืื ืื ื ืืจื ืืจืื ืงืืืคืื ื ืืืช ืืืืืื ืืื key. ืืกืืก ืื ืชืื ืื JanusGraph ืืืคืืก ืื ืืืืจื ืืืื ืื ืคืขื ืฉืื ื ืฉืืื ืฉืืืืชื ืืืื ืื ืืื ืืงืก ืืชืืื ืืฉืืืื.
ืืกืืฃ ืืจืืจ ืฉืื ืกืืคืืจ ืฉื ืชืืืื ืฆืืคืืืช - ืืฃ ืืื ืื ืืฆืคื ืืืจืืง ืืช ืืืืืคืื ืืงืืื ืจืืืขืืช ืืฉืืืฉืื ืืขืืื, ืืื ืื ืื ื ืื ืืฆืคืื ืฉื ืืื ืืืืืืง ืืืชื ืืื ืฉื ืจืฆื ืืขืืืื ืืืืฆืื ืฉืืืืช. ืืื ืฉื ืชืงืฉืจ ืืื ืืืชืจ ืขื ืืืฉืชืืฉืื ืฉืื ื ืื ืืื ืืช ืืฆืืคืืืช ืฉืืื ื ืืื ืืื ืืช ืืืฆืจืื ืฉืืชืืื ืืืฃ ืืชืขืื ืืขื ืืืชื ืฆืืคืืืช.
1 420
ืืื ืื ื ืื ืืชืืื ื React Forget
ืื ืขืืืื ืื ืฉืืขืชื ืืื ืื ืจืื ืจืืืงื 19 ืชืฉืืืจืจ ืขื ืชืืืื ื React Forget ืืงืืืคืืืืจ ืืืืฉ ืืืืช ืจืืืงื ืฉืืืืจ ืืืืกืืฃ useMemo ืืืืืืืืช ืืชืืื ืืืช ืฉืื ื. ืื ืืืืงืื ืฉืืื ืืคืืชืื ืืคืืฆืณืจ (ืืชืื ืืคืืกื) ืืื-
1. ืืชืืืช useMemo ืืื ืืช ืืืืืืช ืืช ืืงืื.
2. ืงื ืืืขืืช ืืฉืฆืจืื ืืืืืื ืืื ืืช ืืื ืืขืฉืืช Memoization.
3. ืชืืกืคืช ืืงืื ืืขืืืกื ืขื ืืชืืืืงื.
ืื ื ืืฉืคื ืืืคืชื ืืชืื ืืคืืกื-
> Our vision is for React to automatically re-render just the right parts of the UI when state changes, without compromising on Reactโs core mental model.
ืืืื ืืืชื ืืืื ืื ืืื ืืืืื ืฉื ืจืืืงื? ืื ืคื ืื ืขืื ืื ืฉืืืืฉืง ืืื ืืกื ืืื ืคืื ืงืฆืื ืขื ืืฆื ืืืคืืืงืฆืื, ืื ืืืืืื ืืืจืืช ืฉืืกืคืืง ืืืกืชืื ืขื ืคืื ืงืฆืืืช ืืงืืืคืื ื ืื ืืขื ืืกืืืื ืืื ืืืขืช ืื ืืืคืืข ืขื ืืืกื.
ืืขืืฉืื ืืคืฉืจ ืืืืืจ ืืืืชืจืช. ืขื ืื ืืืกืืจืื ืฉื ืืืืจืื ืืจืืืงื, ืืื ืงืจื ืฉืืืืืืจ ืืื ืื ืืื ืืชืืื ืืจืืืงื-ืฉืืื. ืื ื ืืกืืืืช ืฉืื-
1. ืืื ืืื ืฆืืจื, ืื ืืืชืจ ื ืืื ืืฆืืจื ืืืืื ืืื ืืืกื ืฆืืืืจ. ืืื ืคืจืืืงื ืจืืืงื ืฉืขืืืชื ืขืืื ืืขืืืช ืืืืฆืืขืื ื ืืฆืจื ืืืื ืืืกืจ ืืื ื ืฉื ืืื ืจืืืงื ืขืืื ืืขืื ืืืชืจ ืืจืืข ืืืกืจ ืืื ื ืฉื ืืืจืืง ืืื ืงืื ืฆื ืฉืจืช ืืงืื ืฆื ืืงืื. ืืจืื ืืืืื ืฉื ืืกืืืืืฆืืืช ืืคืฉืจ ืืื ืืืืืืฃ ืืช useMemo ืืืจืืื ืืืจ ืฉื ืืงืื ืืงืืืคืื ื ืืืช ืืืคืชืืจ ืืช ืืขืืืช ืืืืฆืืขืื (ืืื ืืงืื ืงืื ืืื ืืืชืจ).
2. ืืืกืคืช "ืงืื ืืืืืืื" ืจืง ืืกืืืช ืืช ืืืื ื ืืืชืืืืงื. ืงืื ืฉืื ื ืื ืจืืื ืขืืืื ื ืืฆื ืฉื, ืืื ื ืฆืจืื ืืืืืจ ืืืชื ืืืืฉืื ืขืืื ืื ืืืื.
3. ืืืกืคืช ืื ืื ืื ืื ืืื React Forget ืจืง ืืจืืืงื ืืืชื ื ืืคืืชืจืื ืืืขืืืช ืืืืืชืืืช ืฉื ืจืืืงื. ืืืืื ืืื ืกืืื ืืื ืืื ืืืืืื ืืืืืช ืชืืกืคืช ืืจืื ืืืชืจ ืืืขืืื ืืืขื ืืื ืช.
ืืื React Forget ืืืจืื ืืืคืืืงืฆืืืช ืฉืื ื ืืขืืื ืืืจ ืืืชืจ? ืื ืจืื ืฉืื. ืืื ืืื ืืืื ืืืชื ืืขืืืช ืืืฉืืช ืฉืืฃ ืืื ืื ืืื ืฆืจืื ืืฉืืื ืฉืืคืืจ ืืื ืืจื ืืืืฆืืขืื? ืื ืจืื ืฉืื ืื.
1 420
ืืืืคื ืืืืขื ื Z ืืกืืฃ ืืืื?
ืืฉืืื ืืงืืช ืืกืงืืื (ืื Java) ืืช ืืฉืขื ืื ืืืืืช ืืืฉืืืจ ืืืชื ืืืืจืืืช ืืืื ืืืฉืชืืฉ ืืงืื ืืื:
import java.time.*
import java.time.format.DateTimeFormatter
LocalTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME)
ืืืืืจืืืช ืฉืชืชืงืื ืขืฉืืื ืืืืจืืืช ืื:
"16:51:44.748375"
ืืื ืืฉืืกืชืืืื ืืืกืืกื ื ืชืื ืื ืืืจืฉืช ืื ืื ื ื ืชืงืืื ืืืืจืืืืช ืืืืืช ืฉืืกืชืืืืืช ืืืืช Z ืืืืืื:
14:54:10.140198Z
ืืื ืื ืืชืืืื ื? ืืืืคื ื Z ืืืืข? ืืืื ืื ื ืื ืืงืื ืืื?
ืื ืืืื ื ืชืืื ืืงืื ืืฉืืื ืืืฆืืจ ืืืจืืืช ืืื ืขื ื Z ืืกืืฃ ืื ื ืื ืฆืจืื ืืฉืจืฉืจ ืืืชื ืืื ืืช ืืื ืืืฉืชืืฉ ืืงืื ืืงืืื ืฉืืืื ืืชืืืกืืช ืืืืืจ ืืื:
OffsetTime.now(ZoneId.of("UTC")).format(DateTimeFormatter.ISO_OFFSET_TIME)
ื Z ืืกืื ืฉืืืื ืชืืืืช ืืื ืืืืืจ ืืื UTC. ืืืืจื ืืื ืืืจืื ืืืจ ืืงืืืื ืกืืืื ืืืชืจ ืืจืืจ ืืืืืื ืขืืืจ ืืฉืจืื ื ืงืื:
scala> OffsetTime.now(ZoneId.of("Israel")).format(DateTimeFormatter.ISO_OFFSET_TIME);
val res5: String = 16:57:24.769026+02:00
ืืื ืืื ืืคืฉืจ ืืืงืื ื Z ืืืชืื ืืฉืื ืืื ืคืืืก ืืคืก, ืืื ืื ืจืื ืฉืื ืื ืืกืคืืง ืืืืื ืืฉืืื ืื ืฉืืืชื ืชืงื ืื ืืืืจืื ืืืื.
ืืฉืื ืื ื ืืื ืื ืืขืจืืช ืฉืฆืจืืื ืืชืืื ืืืื ืืืืจื ืืื ืืฉ ืื ื ืฉืชื ืืคืฉืจืืืืช ืืจืืืืืช - ืืืืช (ืคืฉืืื ืืืชืจ ืืืืขืชื ืืืืืฆืช), ืืืืืื ืขื ืืืืจ ืืื ืื ื ืฉืืืจ ืืช ืื ืืฉืขืืช ืืืขืจืืช ืืืฉืืืจ ืืืกืืก ืื ืชืื ืื ืฉืขื ืืื ืืืืจ ืืื. ืืืฆื ืืื ืื ืคืขื ืืคื ื ืฉืืืจื ืืืกืืก ืื ืชืื ืื ื ืจืฆื ืืืืืจ ืืช ืืฉืขื ืฉืืฉ ืื ื ืืฉืขื ืืืืืจ ืืืื ืฉื ืืกืืก ืื ืชืื ืื, ืืืื ืงืจืืื ื ืจืฆื ืืืฆืข ืืืจื ืืคืืื.
ืืืคืฆืื ืฉื ืื ืืืชืจ ืืืจืืืช ืืื ืืฉืืืจ ืืช ืืืืืข ืืืื ืืืืจ ืืืื ืืืกืืก ืื ืชืื ืื. ืืฉืืื ืื ืื ืื ื ืืืืืื ืืืคืื ืืช ืืฉืขื ืืืืจืืืช ืืืืืืช ืืืืจ ืืื (ืขื ื Z ืืกืืฃ ื UTC, ืื ืขื Offset ืืืืืจื ืืื ืืืจืื). ืืืฆื ืืื ืื ื ืืจืฉืช ืืืจื ืืื ืื ืงืื ืืืขืจืืช ืืืื ืืืจืื ืืืชืจ ืื ืชืืื ืฆืจืื ืืืฉืื ืืืืื ืืืืจ ืืื ืื ืื ื ืืืขืืื ืขื ืกื ืืืืืงืืช ืืืชืืื.1 420
ืขื ืืืืืื, ืืชืืื ืขื ืงืืืืืื ืืืื ืืืคืช
ืืืื ื ืชืืื ืื ืืกืื (ืจืง ืืืืืฆืื ืฉืืืืืจื) - ืืฉืืจืช ืืคืงืืื ืฉื ื ืืช ืฉืืื ืืืช ืืชืืืช ืืืืืจ ืืืืงืืจืื ื ืฉืืื ืืืฉื ืฉืืฉ ืืื ืขื ืืคืงืืืืช:
git config --replace-all user.name elite-hacker
git config --replace-all user.email hacker@theboss.com
ืืื ืืื ืืกื ืงืืืื ืืืขืจืืช. ืืืื ืืืืืช ืื ืจืืง, ืืืคืขืืื git log. ืื ืืคืจืืื ืฉืืชื ืจืืืื ืืงืืืื?
ืืจืืจืช ืืืืื ืฉื ืืื ืืืฆื ืืื ืืื ืืชืช ืืื ืืช ืืฉืืืื ืืืื ืืฉื ืฉืืืคืืข ืืงืืืื ืืื ืืื ืืฉื ืฉืืืจืชื. ืื ืขืืฉืื ืชืืืคื ืืช ืืงืืืื ืืืืืจ ืืจืืืง ืืงืืืื ืืืคืืข ืฉื ืขื ืืฉื ืืืืืืฃ ืฉืืื.
ืืืจื ืฉื ืืื ืืืืช ืืช ืืืืืช ืฉืืื ืืงืืืื ืืื ืืชืืื ืขื ืงืืืืืื. ืืื ืืฉ ืืืจืื ืืื ืืงื ืคื ืืื ืืืืืืื:
https://gist.github.com/troyfontaine/18c9146295168ee9ca2b30c00bd1b41e
ืื ืืื ืื ืื ื ืื ืืืชืืื ืขื ืงืืืืืื? (ืืคืจืืืงืืื ืคื ืืืืื. ืืคืจืืืงืื ืงืื ืคืชืื ืืื ืืชืื ืื ืืืื). ืคื ืื ื ืืืฉื ืฉืืืฉืื ืขื ืื ืืืืืช ื"ืืื ืืืคืช" ืืืคืจื ืืืืฉืืืช:
1. ืื ืืจืฆื ืืขืฉืืช ืงืืืื ืืฉื ืืืจ? ืืืื ื ืขืืืืื ืืืืชื ืืจืืื. ืืื ืืฆืื ื ืื ืฉืื ืจืขืื.
2. ืื ืืื ืืกืืื ืืืืืืจ ืืช ืื ืืืืจืื, ืืื ืืืื ืืืื ืขืืืื ืืคืชืืื ืืืจืื ืื ืืขืืื ืืฆืื. ืืื ืขื ืืืื.
3. ืืืงืจืื ืืืืื ืืืืขืื ืืืืืฃ ืืช ืืืชืืืืช ืฉืื ื ืื ืืฉืืื ืื ืืืชืืืฅ.
ืืื ืืืืช ืืื ืฉืื ืื ื ืคืฉืื ืื ืืืืืื ืฉืืืฉืื ืืืื ืืช ืืืืื ื ืฉืื ื. "ืื ืืืืื ืื ืืชืืชื ืขื ืงืืืืืื ืืื ืงืจื ืืืื, ืื ืืื ืืืชืืื ืืืื?". ืืชืฉืืื ืฉืื ืืฉืืืฉืช ืืกืขืืคืื ืชืืื:
1. ืื ืืคืฉืจ ืืืขืช ืื ืืจืฆื ืืขืฉืืช ืงืืืื ืืฉื ืืืจ ืืืืืื ื ืกืืืืช, ืืืื ืื ืืคืืื ืืงืจื ืืืขืืช. ืชืืื ืขืืืฃ ืืืืืช ืงืฆืช ืืืชืจ ืืืื.
2. ืืืืงื ืื ืคืฉืื. ืืืืจืื ืืืื ืง ืฉืืืืงืชื ืืืขืื.
3. ืื ืืื ืืขืฉืืช ืืื ืืืื ืงืืื? ืฉืืชืืืฆื ืงืฆืช ืืืืงืจืื.
ืขืื ืื ืืืชืืื ืขื ืงืืืืืื? ืืืื ืืื ืืื ืืฆืืื ืืงื ืคื ืืช ืื.1 420
ืืืคืืก ืฉื GUI
ืืื ืืืช ืืขืจืืช ืฆืจืื ืืืชืืื ืืืืืฉืง ืืืจืคื ืื ืืืกืืก ืื ืชืื ืื?
ืืช ืืืจืืืืงืืืจื ืฆืจืื ืืืชืื ืืืืขืื ืืืื (ืงืืื ืืืืกืืจืงืฆืืืช ืืืืจื ืื ืืงืื ืขืฆืื) ืื ืืืืื ืืืขืื (ืงืืื ืืงืื ืืืฉืจืืืื ืืืงืื ืืฉืืชืคืื ืืืืฆืจืื ืืืกืืจืงืฆืื)?
ืืช ืืืืืงืืช ืืืชืืื ืืคื ื ืื ืืืจื ืืงืื?
ืืืจ ืืคื ื ืืจืื ืฉื ืื ืืื ืชื ืฉืืื ืชืฉืืื ืืืช ืฉืืชืืืื ืืืืื ืืื ืืกืืจ - ืืื ืืืื ืฉืจืื ืืื ืฉืื ืฉืงืจืืชื ืืื ืขืงืืืื ืืืขืืช ืฉืืื ืืฉืืชื ืืืขืืช ืฉืื ืขื ืืื ืฉื ืืขื ืืืฉื, ืืืืืจ ืืชื ืืืื ืืืืืช ืืฆื ืฉื TDD ืื ืืฆื ืฉื ืืืืืงืืช ืืืจื ืืงืื. ืืชื ืืืื ืืืืืช ืืฆื ืฉืืืชื ืจืง ืืืืงืืช ืืื ืืืจืฆืื (ืืืืฉื ืฉืืืืงืืช ืืืืื ืื ืืืืื ืืื) ืื ืฉืืชื ืืืืื ืืืืืงืืช ืืืืื ืืืืชื ืืืชื ืขื ืื ืืืืื. ืืชื ืืืื ืืืืืช ืืืคืืก ืฉืืืชื GUI ืงืืื ืื ืืืคืืก ืฉืืืชื ืงืืื ืืช ืงืื ืฆื ืืฉืจืช.
ืื ื ืืืคืืก ืฉื GUI ืืืืชื ืืืฉื ืืื ืืืืฉืื ืืืชืื ืืช ืืืืฉืง ืืคืจืืืงื ืืื. ืขื ืฉืืื ืืื ืื ืืืจ ืื ืขืื. ืฉืืื ืืื ื ืกืืืืช ืืืืืืฆืื ืฉื ืืคืจืืืงื ืื ืคืขื ืฉื ืืกืืชื ืืืชืืื ืื GUI ืืงืื ืื ืืชื ืืช ืขืฆืื ืืืื ืืืืขื ื ืืืืื ืกืชืื. ืืืคืื ืืืืืื ืขืืจ ืืงืื ืืช ืืคืจืืืงื ืืื ืืืชืจ ืืื ืขืืจ ืื ืืฆืืช ืืืงืืืขืื.
ืื ื ืืืื ืืืืืช ืืืคืืก ืฉื GUI ืื ืฉื Back End, ืืื ืื ืืืื ืื ืจืืืื ืื. ืืืชืจ ืืฉืื ืืฉืืื ืื ืืืืืืฆืื ืฉื ืืคืจืืืงื? ืื ืืืืช ืืืืืฉืืช ืฉื ืฆืืจื ืื? ืื ืื ืื ื ืืืืขืื ืืขืืืช ืื ืขืื ืฆืจืื ืืืืืช? ืืืื ืืืงืื ืฆืคืืืื ืืืฉืชื ืืช? ืืืืื ืืืื ืืคืฉืจ ืืืืง ืืช ืืขืืืื ืืืืชืงืื ืืืงืืื?
ืฉืืจื ืชืืชืื ื ืืฉืืื ืืื ืื ืืืคื ืื ืื ื ืืจืืืฉืื ืืืชืจ ื ืื ืืื ืื ืืื ืืคืจืืืงื ืืื ืืืคืฉืจ ืื ื ืืืชืจ ืืืืฉืืช ืืฉื ืฆืืจื ืืืชื. ืืชืื ืชืื ืืืืื ืฆืจืืืื ืืืืืช ืืกืืืืื ืืขืืืจ ืืื ืืืืฉืืช ืืืืขืืืฃ ืชืืื ืืช ืืืืช ืืคืจืืืงื.
1 420
ืฉืืืฉ ื ืงืืืืช ืขื SQL-ืื ืืกืืืืื ืืื
ืืชืืื ืืช ืืืงืืจืืช ืฉืื ืืคืืกื ืกืืคืฉืืืข ืืืชื ืืคืชืืจ ืืืคืจืกื ืขืื ืืื ืฉื Advent Of Code, ืืื ืืคื ืืฉื ืืช ืื ืืื ืืืชืืื ืืืืืชื ืขื ืฉืืืืชื ืืกืืืืช ืืื ืืืกืืก ืื ืชืื ืื ืฉืืกืืฃ ืื ืืื ืื ืขืืื, ืืืื ืืืงืื ืื ื ืจืืฆื ืืฉืชืฃ ืฉืืืฉ ื ืงืืืืช ืืืืื ืืืื ืืฉืื ืื ืืฉืืืืืื ืืืืช ืขื ืฉืืืืชืืช (ืืืขืฆื ืขื ืคืจืืืืืืจืง ืืืืคื ืืืื)-
1. ืืคืขืืื ืื ืฉืืื ืืช ืืืืืฅ. ืืฉ ืฉืืืืชืืช SQL ืฉืืืจื ืฉืืฆืืืืื ืืืชืื ืืืชื ืืืื ืื ืืฉืื ืืืฉ ืขื SQL. ืื ืืฉ ืืืจ ืืื Window Functions ืืื ืฆืจืื ืืืฉืงืืข ืขืืฉืื ืฉืขืชืืื ืืืืืื ืืื ืื ืขืืืืืช ืื ืืืฉ ืฉืืื ืืช ืืืฉืงืขื.
2. ืืคืขืืื ืืฉืืืืชื ืืืืช ืืกืืืืช ืืื ืืื ืฉืืื ืืช ืืืืืฅ. ืจืืื ื ืืืจ ืืกืคืืง ืฉืืืืชืืช ืืกืืืืืช ืืื ืฉืืกืืฃ ืืื ืฆืจืื ืืฉืืชื ืืฉืืืืชืืช ืคืฉืืืืช ืืืชืจ ืื ืืืขืืืจ ืืืง ืืืืืืืงื ืคื ืืื ืืงืื ืื ื DB ืื ืขืื ืืขืืืก.
3. ืืคืขืืื ืฉืืืืชืืช ืืกืืืืืช ืื ืจืื ืืืขืืื ืืืื ื ืืืืืืืช.
ืืืืชื ืจืืข ืืฉืื ืกืื ืืืจืื ืืฉืืืืชื ืืขืืื ืื ืื ื ืขืืืื ืื ืืืืขืื ืืืื ืืฉืืืฉืช ืืืจืืื ืชืืื ืืืืื ืืืืชืจ ืืงื ืืืืชืงืข ืขื ืืคืืชืจืื ืืจืืฉืื ืฉื ืจืื ืืืืื ื. ืืืื ื ื ืกื ืืืืืจ ืฉืชืืื ืืฉ ืขืื ืืจืืื ืืืืื ืืคืืชืจืื ืืื ืฆืขื ืืืืจื ืืืืฉื ืืืืืื ืืืจ.
1 420
ืื ืขืืฉืื ืืืงืื ืืชืืขืื ืืื ืจืืืื ืื
ืื ืื ืื Readme? ืชืชืขืื ืืื ืื ืืขืืืื
ืืืขืจื ืืืืช ืืฉื ื ืืช ืืืืื ืืืชืขืื, ืฉืื ืื ื ืืจืื ืงืื ืืื
ืชืชืขืื ืืืืืืงืืช ืฉื ืืฉืืืช ืฆืจืื ืืกืืจ ืืืชื
ืขืืฉืื ืื ื ืืืืข ืืื ืืื ืืขืืื ืืื ื ืขืื ืืืืืง, ืื ืื ืขืืฉืื ืขื ืื ืืชืืขืื ืืื ืจืืืื ืื ืืื? ืืื ื ืืื ืืื ืฉืืื ืื ืืืฉืื ืืืืื ืืืจืื? ืืจืืง ืืื ืฉืืชืืืชื ืื ืกืืช ืื ืื ืืืืืง ืืช ืืืืจืื ืืืืงืืื ืืืฉืืืจ ืืขืจื ืืงืื ืขื ืืกืคืจ ืืงืืืื ืฉืื ืืืชื ืชืืขืื ืืฉื ืื ืืื ืืืขืจืืช. ืืื ืื ืฉืืืืข ืืืงืื ืืฆืืจื ืืขืืื ืืื ืืืฆืื ืืช ืืืชื ืชืืขืื ืื ืจืืืื ืื, ืืื ืืืื ืืืืื ืืจืืจ ืื ืืฆืื ืฉื ืืืชื ืชืืขืื. ืืฉืืืฉืื ืื ืืืฆื ืืช ืืืื ืืชืงื ืืืื ืงื ืืืฆืื ืืช ืืืืจืกื ืืืืจืื ื ืืืืืฉืื ืืฉื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
