ToCode
Open in Telegram
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Show more1 418
Subscribers
+124 hours
-27 days
-530 days
Posts Archive
1 418
ืื ืืืืืื
ืืืชืืืืืช ืืื ืฉื ื ืงืืจืกืื ืืฉ ืืืจืื ืฉืืืื ืงื ืืืืื: ืืคืฉืจ ืืืฉืืืช ืืช ืืืจื ืืงืืจืกืื, ืืช ืืืืืจ, ืืช ืืืืืจ ืืฉืขื, ืืคืฉืจ ืืืกืชืื ืขื ืขืืืืืช ืฉื ืืืืจืื ืืืจืื ืืืืืื ืืื ืืคืจืืืงื ื ืจืื ืืขื ืืื ืืืคืืื ืืคืฉืจ ืืืฉืืืช ืืื ืชืืจืื ืื ืืื ืฉื ืืช ื ืืกืืื ืืฉ ืืืจืฆืื.
ืืื ืืช ืืืืจืื ืฉืืฉืื ืืืืื ืืจืื ืืืชืจ ืงืฉื ืืืืืช: ืืฉืื ืืืืื ืืื ืืืืืืฆืื ืืงืืจืก ืืืชื ืื ืืื ืืืืฉืื ืืืืื ืื ืืืจืื. ืืฉืื ืืืืื ืืื ืืืจ ืืงืืจืก ืืืคืฉืจ ืื ืืืชืืื ืืขืืื ืืื, ืืืื ืจืืืง ืืืื ืืืืืข ืืขืืจืช ืืจืขืืื ืืช ืืืขืงืจืื ืืช ืฉืืืื ืฉื. ืืฉืื ืืืืื ืืื ืืืื ืืกืืืื ืฉืื ืืืฆืื ืขืืืื ืืืจื ืืงืืจืก ืืืื ืืืจืฆืื ืืืืช ืืืืื ืืืืื ืืช ืืืฆื ืฉืื ืืืชืช ืื ืขืฆืืช ืจืืืื ืืืืช ืขืืืจื.
ืืฉืืื ืืืืื ืืช ืืืืจืื ืืืฉืืืื ืื ืืกืคืืง ืืืกืชืื ืืกืืืืืก - ืฆืจืื ืืืฉ ืืืืจ ืขื ืืืจืฆืื ืืขื ืืืืจืื, ืืืฉืชืชืฃ ืืฉืืขืืจื ื ืืกืืื ืืืืื ืืคืืื ืืืืื ืืจืืฉ ืืืืช ืืื ืืืืืข ืขื ืืกืคืืง ืจืงืข ืืืฉืืื ืืช ืืฉืืืืช ืื ืืื ืืช.
ืจืง ืืืื ืฉืงื ืืืืื ืืฉืื ืื ืืืืจ ืฉืืื ื ืืชื ืืื ืืืงืฆืื ืืืื ืืืฆืืื.
1 418
ืืืคืฉืจ ืืจืืืช ืืช ืืชืืฆืื ืืงืืฉืืจ:
https://ynonp.github.io/echarts-birth-demo/
ืืื ืืช ืงืื ืืคืจืืืงื ืืืื ืืืืืืื:
https://github.com/ynonp/echarts-birth-demo
ืืขืืจ ืื ืืืืช ืืขืืืื ืขื echarts, ืืืืื ืื ืืืืืจื ืื ืืื ืงื ืืืชืื ืืืื ืืชืจ ืกืืื ืืื ืฉืื ืื ืืื ืืืืืกื ืืืชื ืขื Github Pages. ืืืืืช ืืชืืืื ืืืืื ืืช ื ES Modules ืืืืขืื ืช ืงืืฆื JSON ืืชืื ES Modules ืื ืื ื ืืงืืืื ืืืื ื ืืจืื ืืืืืจืื ืืฉืืืื ืืืื ื ืฆืจืืืื ืืขืืจ ืฉืื ืื ืืื.
1 418
ืืืืืช Echarts - ื ืืชืื ื ืชืื ื ืืืืืช
ืกืคืจืืืช Echarts ื ืืชื ืช ืืจื ืงืื ืืืื ืืืฆืืจ ืชืจืฉืืืื ืืืจืคืื ื Web. ืืฉืืืื ืขื ืืืืจ ืื ืชืื ืื ืืืฉืจืืื ืืืืฉืืชื ืืคืฉืจ ืืืชื ืกืืช ืืงืืืช ืื ืืชืื ื ืชืื ืื ืืฉืืืืฉ ืืืจืคืื. ืื ื ืืืืื ืงืฆืจื ืขื ืงืืืฅ ืฉื ื ืชืื ื ืืืืืช ืฉืืงืืชื ืืืงืืฉืืจ ืืื:
https://data.gov.il/dataset/birth-data
ืืื ื ืจืื ืืืืืข
ืืืืจ ืื ืชืื ืื ืืืื ืงืืืฅ CSV ืฉืืืื ืืช ืืขืืืืืช: ืืืืฉ ืืืื, ืืื ืืื, ืืกืคืจ ืขืืืจืื, ืฉืืืข ืืืื, ืืื ืืชืื ืืง ืืืฉืงื. ืืฉ ืคื ืืจืื ืขื ืื ืืขืืื ืืื ื ืืืจืชื ืืฉืืื ืืืืืื ืืื ืืช ืืจืฃ ืขืืืืืช ืฉืืจืื ืืช ืืชืคืืืืช ืืืืืืื ืฉื ืืืืืืืช ืืื ืืืืฉ ืืฉื ืช 2014 (ืื ืืชืืื ืืงืืืฅ). ืืฉืืื ืืขืืื ืขื ืื ืชืื ืื ืืชืืืชื ืขื ืืกืคืจืื csvkit ืฉื ืคืืืชืื ืืืคืืชื ืืช ืงืืืฅ ืื ืชืื ืื ื JSON ืืืืฆืขืืช ืืคืงืืื:
in2csv --encoding "utf-8" births.csv | csvjson > births.json
ืืื ืฉืืืฉืช ืืืืืืงืืื ืืจืืฉืื ืื ืืืงืืืฅ ืืฉืืื ืืืืืื:
[
{
"birth_month": 1.0,
"mother_age": "<18",
"parity": "1",
"gestation_week": "37-41",
"birth_sex": "F",
"birth_weight": "2500-2599"
},
{
"birth_month": 1.0,
"mother_age": "<18",
"parity": "1",
"gestation_week": "37-41",
"birth_sex": "F",
"birth_weight": "2500-2599"
},
{
"birth_month": 1.0,
"mother_age": "<18",
"parity": "1",
"gestation_week": "37-41",
"birth_sex": "F",
"birth_weight": "2500-2599"
}
]
ืืื ืช ืื ืชืื ืื ืืืจืฃ
ืขืืฉืื ืื ืื ื ืืืืขืื ืืืืง ืืืขื ืืื ืืฆืจืืืื ืืืจืื ืืช ืืืืืข ืื ืฉืืชืืื ื ECharts. ืื ื ืจืืฆื ืืืฆืื ืืจืฃ ืขืืืืืช ืืืืื. ืืืจืฃ ืขืืืืืช ืคืฉืื ืื ืื ื ืืฆืืืื ืขืจืืื ืืชืื ืกืืืจื ืืืืืจ ืืืื ื ืฆืจืืืื ืจืฉืืื ืฉื ืืกืคืจืื. ืื ื ืจืืฆื ืืืฆืื ืืื ืขืืืื ืืช ืืืืืืช ืืืืืงืืช ืืคื ืืื ืืื, ืืืื ืืืืง ืืช ืื ืชืื ืื ืืืกืคืจ ืจืฉืืืืช, ืจืฉืืื ืืื ืงืืืฆืช ืืืืืื:
const dataByAge = _.chain(data).groupBy('mother_age').mapValues(
row => _.chain(row).groupBy('birth_month').mapValues(v => v.length).value()
).value()
const series = _.toPairs(dataByAge).map(([mother_age, entries]) => ({
name: mother_age,
type: "bar",
stack: "total",
label: {
show: true,
},
emphasis: {
focus: "series",
},
data: Object.values(entries),
})
)
ืืชืืฆืื ืืื ืจืฉืืื ืฉื ืืืืืงืืื, ืืืืืจ ืฉื ืกืืจืืช, ืืืฉืจ ืฉื ืื ืกืืืจื ืืื ืงืืืฆืช ืืืืืืื ืฉื ืืื ืืืขืจืืื (ืืืคืชื data) ืื ืจืฉืืื ืื ืื ืืืืจ ืืื ืืกืคืจ ืืืืืืช ืืงืืืฆืช ืืืื ืื ืชืื ื ืืืืืฉ ืืืจ, ืืืืืจ ืืืืืจ ืืจืืฉืื ืืื ืืื ืืืืืช ืืื ืืื ืืืจ ืืงืืืฆืช ืืื ืื, ืืืจื ืื ืืื ืืืืืช ืืื ืืคืืจืืืจ ืืื ืืืื.
ืกืืืื ืืืงืื ืืืื
ืงืื ื JavaScript ืืืื ืืฆืืืจ ืืืจืฃ ืืื:
import data from './births.json' with { type: "json" };
import _ from 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/+esm'
window.data = data;
const months = {
1: 'January',
2: 'February',
3: 'March',
4: 'April',
5: 'May',
6: 'June',
7: 'July',
8: 'August',
9: 'September',
10: 'October',
11: 'November',
12: 'December'
};
var dom = document.getElementById("chart-container");
var myChart = echarts.init(dom, null, {
renderer: "canvas",
useDirtyRect: false,
});
var app = {};
var option;
const dataByAge = _.chain(data).groupBy('mother_age').mapValues(
row => _.chain(row).groupBy('birth_month').mapValues(v => v.length).value()
).value()
const series = _.toPairs(dataByAge).map(([mother_age, entries]) => ({
name: mother_age,
type: "bar",
stack: "total",
label: {
show: true,
},
emphasis: {
focus: "series",
},
data: Object.values(entries),
})
)
option = {
tooltip: {
trigger: "axis",
axisPointer: {
// Use axis to trigger tooltip
type: "shadow", // 'shadow' as default; can also be 'line' or 'shadow'
},
},
legend: {},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "value",
},
yAxis: {
type: "category",
data: Object.values(months),
},
series: series,
};
if (option && typeof option === "object") {
myChart.setOption(option);
}
window.addEventListener("resize", myChart.resize);1 418
ืืฉืืฉืคื ืขืืืืช ืืชื - ืคืืชืจืื Advent Of Code 2024 ืืื ืจืืฉืื ื Ruby
ืืืืืืืืืืื ืฉื ืจืืื ืืื ืืชืช ืืืชืื ืชืื ืฉืคื ืฉืคืฉืื ืืฉ ืื ืืื, ืื ืชืื'ืก ืืืชืจ ืืืฃ ืืืฉืชืืฉ ืืคืื ืงืฆืื ืืืื ืืช ืืฉืคื ืืืฉืจ ืืืขืชืืง ืืืืืฉ ืืฉืขืื ื Chat GPT. ืื ื ืฉืชื ืืืืืืืช ืืคืืชืจืื ืืืื ืืจืืฉืื ืฉื Advent Of Code ืืืืจืื ืืคืื ืงืฆืืืช ืฉืงืฉื ืืืฆืื ืืืงืืืืช ืืืจืื.
ืืืง 1 - ืืคืื ืงืฆืื transpose
ืืงืื ืฉื ืืืืง ืืจืืฉืื ืืชืจืืื ืืืจืื ืืฉื ื ืืืจืื:
3 4
4 3
2 5
1 3
3 9
3 3
ืืืืฉืืื ืฉืื ื ืืื ืืืืื ืื ืืืจ ืื ืคืจื ืืื ืืืชืืื ืืช ืืืกืคืจืื ืืืืืจ ืืฉืืืื ืืืืจ ืืืื ื ืืืงืื ืืืืื ืืฉื ื ืืืืจืื, ืืืกืืฃ ืืืฆืื ืืช ืืืคืจืฉ ืืขืจื ืืืืื ืฉื ืื ืืื. ืืืืืื ืืืกืคืจ ืืงืื ืืืืชืจ ืืืืจ ืืฉืืืื ืืื 1 ืืืงืื ืืืืชืจ ืืืืจ ืืืื ื ืืื 3 ืืืื ื ืชืืื ืืช ืืื ื-3 ืื ืงืื ืฉืืืคืจืฉ ืืื 2. ืื ืชืืฉืืื ืืช ืื ืืื ืืืกืคืจืื ืืชืกืืื ืืช ืืืคืจืฉืื ืชืืืขื ื 11.
ืืืชืืจ ืืืืง ืืื ืืื ืฉืฉืคืืช ืชืื ืืช ืืืจื ืืื ื ืืชื ืืช ืื ื ืืงืจืื ืงืื ืืฉืืจืืช, ืืงื ืืืคืขืื split ืขื ืฉืืจืช ืงืื ืืฉืืื ืืืืง ืืืชื ืืืขืจื ืืคื ืืจืืืืื - ืืื ืืื ืขืืฉืื ืืช ืื ืขื ืขืืืื? ืืคืื ืงืฆืื transpose ืฉื ืืขืจื ืืจืืื ืืฆืืขื ืคืืชืจืื ืงื, ืื ืืงืื:
filename = ARGV[0]
left, right = File.foreach(filename).map(&:split).transpose
left = left.map(&:to_i).sort
right = right.map(&:to_i).sort
puts (left.each_with_index.map do |value, index|
(value - right[index]).abs
end).sum
ืคืื ืงืฆืืืช transpose ืืืงืืช ืืขืจื ืฉื ืืืืืช ืืืืคืืช ืืืชื ืืฉืชื ืจืฉืืืืช, ืืจืฉืืื ืืจืืฉืื ื ืฉื ืื "ืืจืืฉืื ืื" ืืืจืฉืืื ืืฉื ืืื ืฉื ืื "ืืฉื ืืื". ืืคืืขื ืงืจืืืช ืืงืืืฅ ืืฉื ื ืืืจืื ืืื ืืกื ืืื ืืฉืืจื:
left, right = File.foreach(filename).map(&:split).transpose
ืืืง 2 - ืืคืื ืงืฆืื tally
ืืคืื ืงืฆืื ืืฉื ืื ืืคืืกื ื ืงืจืืช tally ืืืื ืืชืืื ืฉื ืืขืจื ืฉืืืืืจื hash ืขื ืืกืคืจ ืืืืคืขืื ืฉื ืื ืืืืจ ืืืขืจื. ืืื ืงืืืืช ืื ืืืงืืืืช ืืืจืื ืืื ืงืฆืช ืืืชืจ ืงืฉื ืืืืืข ืืืื ืฉื, ืืืืืื ืืคืืืชืื ืืื ื ืงืจืืช Counter ืฉืืืจื ืืืืืื ื ืคืจื. ื JavaScript ืืืจ ื ืฆืืจื ืืช lodash ืืฉืืื ืื (ืื ืืืชืื ืืฉืื ืืื).
ืืืืง ืืฉื ื ืฉื ืืชืจืืื ืืชืืงืฉื ื ืืืคืื ืื ืืกืคืจ ืืืืืจ ืืฉืืืื ืืืกืคืจ ืืคืขืืื ืฉืืื ืืืคืืข ืืืืจ ืืืื ื. ืื ืืงืื ืขื tally:
filename = ARGV[0]
left, right = File.foreach(filename).map {it.split.map(&:to_i)}.transpose
count = right.tally
puts (left.map do |value|
value * count.fetch(value, 0)
end).sum
ืืคืขื ืืืื ืฉืื ืืื ืืืื ืืขืืจืชื ืืช to_i ืคื ืืื ืืฉืืจืช ืืงืจืืื ืืื ืขื ื split, ืืืฉืชืืฉืชื ืืืชืื ื it ืืืืฉ ืฉื ืจืืื 3.4.1 418
ืืืืช Vue ืืฉืชื ืื ืจืืืงืืืืืื
ื ืชืื ืงืื Vue ืืื:
<script setup>
import { ref } from 'vue'
const init = {count: 0}
const item = ref(init)
function inc() { item.value.count++ }
function reset() { item.value = init }
</script>
<template>
<p>{{ item.count }}</p>
<button @click="inc">+1</button>
<button @click="reset">Reset</button>
</template>
ืืฉืชืืฉ ืืืืฅ ืืื ืคืขืืื ืขื ืืคืชืืจ ืืคืืืก ืืื ืขื ืืคืชืืจ ื Reset. ืืื ืืขืจื ืืชืืื ืืชืืคืก? ืืื?
ืืื ืืื ืชื ืืื ืืช ืื ืืืจ ืืืืื ืฉืชืืืื ืืืืืง ืืื:
ืืืืืช ืืืื
ืืกืืจ
ืืืคืชืืจ ืื ืืืคืก ืืช ืืขืจื, ืื ืืืชืจ ื ืืื ืืื ืืืคืก ืืื ืื ืืขืจื ืฉืจืฆืื ื. ืื ืื ืฉืงืืจื:
1. ืคืงืืืช ื ref ืืืฆืจืช ืงืืฉืืจ ื"ืืืจ" ืฉืืื ืงืืืื ืืกืืืจืืื. ืืืืจ ืืืืืจ ืืื ืืื ืืืืืงื ืืืื ืื ื ืคืจืืงืกื ืฉืืืืืง ืืืืืงื, ืืื ืืืขืชืงื ืืื ืฉืืืืช.
2. ืฉืื ืื ืืขืจื ืฉื item ืืื ืืขืฆื ืฉืื ืื ืืขืจื ืฉื init, ืื item ืืื ืืกื ืืื ืคืจืืงืกื ืจืืืงืืืื ื init.
3. ืืฉืืืืฆืื ืืืคืืก ืืขืจื ืฉื init ืืืขืชืง ื item, ืืื ืื ืืกื ืืื ืืขืชืงื ืฉื ืืฉืชื ื ืืขืฆืื ืืืื ืืขืจื ืฉื item ืื ืืฉืชื ื.
ืื ืืืืื ืื ืืจืื ืคืขืืื ืื ืื ื ืืคืขืืืื ืืช ref ืขื ืืกืคืจืื ืื ืืืจืืืืช. ืฉื ืืขืชืงื ืฉืืืืช ืืืฆืจืช ืขืืืื ืขืืชืง ืฉื ืืืชื ืืกืคืจ ืื ืืืจืืืช ืืืื ืฉืื ืื ืฉื item ืื ืืฉืคืืข ืขื init, ืืืืืจ ืงืื ืืื ืืขืืื ืืื ืืขืื:
const init = 0;
const count = ref(init);
function inc() { count.value++ }
function reset() { count.value = init }
ืืกืืื ืื ืืื ืื ื ืืขืืืฃ ืืืฉืชืืฉ ื reactive ืขื ืืืืืงืืื ื ref ืขื ืืฉืชื ืื ืคืฉืืืื. ืืืืื ืืฉื ืื ืจืืื ืขื ืืืืื ืืืฉืืขืืช.
ืืื ืืงืจื ืคืืชืจืื ืงื ืืกืืืืืฆืื ืืืจื ืฉืืื ื ืื ืงืืจื ืืื ืื ืืคืฉืจ ืืขืืืจ ืืืฉืชื ืื ืคืฉืืืื ืืื ืืืขืชืืง ืืช ืืืืืืงื ืืคื ื ืฉืืคืขืืืื ref ืืืืืจ (ืืื ืื ืฉืืื ืคืื ืงืฆืืืช ืืืืืืงื):
import { ref } from 'vue'
const init = {count: 0}
const item = ref(JSON.parse(JSON.stringify(init)));
function inc() { item.value.count++ }
function reset() { item.value = init }
ืื ืื ืืคืฉืจ ืขืืืฃ ืืืืืืฃ ืืช init ืืคืื ืงืฆืื ืฉืืืืืจื ืืช ืืขืจื ืืจืืฉืื ื ืืืื ืืชื ืืืืืืื ืฉืืฃ ืคืขื ืื ืชืฉื ื ืืช ืืขืจื ืืจืืฉืื ื:
import { ref } from 'vue'
const init = () => ({count: 0})
const item = ref(init());
function inc() { item.value.count++ }
function reset() { item.value = init() }1 418
ืืืื ื ack
ืืื ืืืชืืจืื ืืคืืชืื ืชืืื ื ืฉืืคืฉืจ ืืืื ืืชืืืง ืืืชื ืืื ืฉืื ืื ื ืื ืืืืขืื ืืจืืฉ ืืืื ืฉืืืืช ืืขืื ืืขืชืื ืืืืื ืฉืื ืืืื ื ืฆืืจื ืืืื ืืก ืืงืื. ืื ืื ื ืื ืื ืืืืขืื ืื ืืืืข ืืงืจืื ืืช ืืงืื, ืืื ืืื ืืืื ืื ืื ืื ืืื ืชืืื ืืืจืชื. ืืชืืืช ืงืื ืืื ืืชื ื ืฉืื ืื ื ื ืืชื ืื ืืขืชืื ืืชื ืืื ืฉื ืื ืืืืืืช, ืืื ืืืขืช ืื ืืืื ืืืชื ืขืชืื.
ืืืืจืืช ืื ืื ืืืืืืืช ืืืืช ืืฉ ืืื ืืืจืื ืฉืืคืฉืจ ืื ืืฉ: ืืคืฉืจ ืื ืืฉ ืฉืื ืฉืืืืขื ืืชืืืง ืืช ืืงืื ืื ืืชืงื ืืื ืืืขื ืขื ืืืขืจืืช ืืจืื ืคืืืช ืืื ืฉืืชื ืืืืขืื ืขืืฉืื ืืฉืืืื ืืื ืืจืื ืคืืืช ืืื ืื ืืืืืืฆืื ืืื ืฉืืฉ ืืื ืขืืฉืื. ืื ืจืง ืืื ืืืืืง ืื ืืชืงื ืื ืื ืื ืฉืืืืจ ืืขืืื, ืืืฉ ืืื ืฆืจืืช ืืืชืจ ืืืืืืช ืฉื ืืขืชืื.
ืืจืืง ืืื ืฉื ืืชืืฉืืืช ืฉืื ื ืืืื ืืืืฉื ืืื ืืืื ื ack, ืืื ืืืืจ ืฉืชืืื ืื ืืืื ืืืช ืืจืืืืช ืืคืืฆ'ืจ ืฉืชืืืืจ ืขื ืขืฆืื ืืื ืืืงืืืืช ืฉืืคืืฆ'ืจ ืืื ื ืืืข ืืื ืืื ืืคืฉืจ ืืืื ืืงืื ืชืืื ืช ืืื ืขื ืฉื ืืคืืฆ'ืจ ืื ืืฉืืืืขืื ืจืง ืืชืงื ืืื ืื ืืืืืง ืืฉืื.
ืืืืืื ืื ืื ื ืืื ื ืคืืฆ'ืจ ืฉื ืืคืงืช ืชืขืืืืช ืืงืืจืกืื ืื ืื ื ืืืื ืืืชืืื ืขื ืืืื ืฉืงืฉืืจื ืืชืขืืืืช ืืื certificate ืืืืืฉืื ืืืชื ืืฉืืืช ืฉื ืืืืงืืช ืื ืคืื ืงืฆืืืช, ืืืื ื ืงืื ืฉืืืช ืืื:
1. CertificatesController
2. CertificatesListView
3. isCertificateReady
4. certificateStatus
5. UserInfoForCertificate
ืืื ืื ืชืื ืืช ืืื ืืื ืืืืืช ืืฆืืจืชืืื ืืืืฉืชืืฉ ืืืืฆืจ ืืืืื ืืืืื ืืื, ืืืฉื ืื ืื ื ืืืชื ืคืื ืงืฆืื ืฉืชืืืืง ืื ืืฉืชืืฉ ืกืืื ืงืืจืก ืื ื ืื ืืจืฆื ืืงืจืื ืื
isGraduated (ืืืจืืช ืฉืืืงืืืืช ืืืจืื ืื ืืืื ืฉื ืืื) ืืขืืืฃ ืืืืืจ ืืฉืื ืฉืืืื ืืช ืืืืช ืืืคืชื ืฉืื ืืืฉื isCertificateEligible. ืื ืชืคืืื ืืืืขืืจ ื Chat GPT ืืื ืืืฆืื ืฉืืืช ืืชืืืืื ืืืืืช ืืคืชื ืฉืืืจืชื.1 418
ืื ื ืขืื ืืชืืขืืข ื Facade
ืชืื ืืช ืืขืืฆืื Facade ืืื ืืืืืงื ืฉื ืืฆื ืืคื ื ืกืคืจืื ืืืจืช ืืืกืชืืจ ืืชื ืืืืช ืืกืืืืช ืื ืืืจืืืช ืืืชืจ. ืืืืจื ืืืจืืืืช ืฉื Facade ืืื ืืืคืฉืจ ืื ื ืืืชืื ืงืื ืืืชืจ ืงืฆืจ ืื ืงืจืื, ืื ืืชืช ืคืืชืจืื ื Use Case ืืกืืื ืฉืื ืื ืฆืจืื ืืช ืื ืืืืจืืืืช ืฉื ืกืคืจืื ืืืจืช.
ืืืืืื ืืคืืืชืื ืืกืคืจืื requests ืขืืืคืช ืืช ืืืฉืง ืืชืงืฉืืจืช ืฉื ืืฉืคื ืืืกืคืงืช ืืจื ืงืื ืืืชืจ ืืืฉืื ืืืืข ืืืจืฉืช. ืืฉ ืื ืื ืืืชืจ ืคืืฆ'ืจืื ืืืืื. ืืืงืฉืชื ืืืืื ืชืืื ืืืช ืืืืื ืขื ืืืื requests ืืื ืื ืฉืงืืืืชื, ืชืืื ืืช ืจืืฉืื ื ืืื requests ืจืง ืคืืืชืื:
import urllib.request
import json
def get_data_using_urllib():
url = "https://api.example.com/data"
# 1. Create a request object (so you can set headers if you need)
req = urllib.request.Request(url, headers={"Accept": "application/json"})
try:
# 2. Open the URL
with urllib.request.urlopen(req) as response:
# 3. Check the status code
if response.status == 200:
# 4. Read and parse JSON data
raw_data = response.read()
data = json.loads(raw_data)
print("Data fetched using urllib:", data)
else:
print(f"Error: status code = {response.status}")
except Exception as e:
print("An error occurred:", e)
if __name__ == "__main__":
get_data_using_urllib()
ืชืืื ืืช ืฉื ืื ืขื requests:
import requests
def get_data_using_requests():
url = "https://api.example.com/data"
try:
# 1. Make a GET request
response = requests.get(url)
# 2. Raise an exception if the status is not 2xx
response.raise_for_status()
# 3. Parse JSON in one step
data = response.json()
print("Data fetched using Requests:", data)
except requests.exceptions.RequestException as e:
print("An error occurred:", e)
if __name__ == "__main__":
get_data_using_requests()
ืืืื ืคืกืืื ื ืืื? ืื ืืื ืฉื ืชืืขืืข ืืืื? ืื ื ืืืฉื ืฉืื ืืฉืืช ืืืชื ืืื ืืืืืง ืฉืืฆืจ ืืช ืฉืชื ืืชืืื ืืืช. ืื ืคืขื ืืืชืืืืืช ืืืื ืืชืืืช ืืืกืืจืงืฆืื ืืืฉื ืืชืจืื ืืขืืืช ืฉื ืคืืชืื ืืืชื ืืืกืืจืงืฆืื (ืชืืืืงื, ืฉืืืจืื ืื ืคืขื ืฉืืชืฉืชืืช ืฉืืคืกืืื ืื ืืื ืขืืื ืืชืขืืื ืช), ืืืื Chat GPT ืื ืื ื ืืชืืืืื ืขืืฉืื ืื ืืืื ืืขืจื. ืื ืืจืืจ ืฉืขื ืกืคืจืืืช ืงืืืืืช ืืื requests ืืื ืื ืืขืื ืืืชืื ืงืื ืืื ืื ืื ื ืืืชื ืืืกืืจืงืฆืื ืืืฉื ื AI ืขืืืื ืื ืืืืจ ืืืชื, ืืืื ืื ืืืื ืืืชืื ืืืชื ืงืื. ืขืืฉืื ื ืกื ืืืืืื ืฉืืชื ืฆืจืืืื ืืืืฆืื ืืงืฉืช ืจืฉืช ืืคืืืชืื, ืืืคืฆืื ืืืช ืืื ืืงืืช ืืช ืืงืื ืืขืืื ืฉ Chat GPT ื ืชื ืืืืคืฆืื ืฉื ืื ืืื ืืฉืื ืกืคืจืื ืฉืืืืืื ืืขืฉืืช ืืช ืืืชื ืืืจ ืืคืืืช ืฉืืจืืช. ืืืขืื ืฉืืฉ Chat GPT ืืืชื ืืช ืืงืื, ืืืืช ืืฉืืจืืช ืืื ืืืจ ืื ืคืงืืืจ.
ืืจืืืื ืงืืืื, ื ืืืืื ืฉื ืชืืื ืงืืืื ืืฉืื ืืงืื ืฉื ืงืื ื AI ืืขืืื, ืืืื ืืืื ืงืฉื ืืฉืื ืข ืื ืฉืื ืืืฉืชืืฉ ืืืืฉืงืื "ืงืืื" ืืืงืื ืืืืฉืงืื ืฉ Chat GPT ืืืืข ืืืืฆืจ.1 418
ืจืืืงื ืืื ืืื - ืฉืืื ืื ืืฉืื ืืื ืกืืืื
ืื ืืจืืืงื ืืื ื Vue ืืฉ ืชืืืื ืืขืจืืื ืืืืฉืืื, ืืื ืืจืืืืืฆืื ืฉืื ื ืืื ืื ื ืฆืจืืืื ืืฉืื ืื ืืื ืืฉืืืชืืื ืงืื.
ืืจืืืงื ืืงืืืคืื ื ืื ืืืื ืืืืืจื ืฉื ื ืขืจืืื ืืฉื ื ืขืจืืื ืืืืฉืืื:
import "./styles.css";
import { useState } from "react";
export default function App() {
const [x, setX] = useState(0);
const [y, setY] = useState(0);
const twoX = x * 2;
const twoY = y * 2;
return (
<div className="App">
<label>
X:
<input
type="number"
value={x}
onChange={(e) => setX(Number(e.target.value))}
/>
<span>x = {x}; </span>
<span>2x = {twoX}</span>
</label>
<label>
Y:
<input
type="number"
value={y}
onChange={(e) => setY(Number(e.target.value))}
/>
<span>y = {y}; </span>
<span>2y = {twoY}</span>
</label>
</div>
);
}
ืืื ืื ืืืื ื ืืืชืืื ืงืื ืืื ืืขืืื ืืืืืชื. ืืจืืืืืฆืื ืื ื ืืื ื. ืืืืืืช ืืงืื ืื ืืฉ x ืืฉืชื ื ืืื ืืฉ y ืืฉืชื ื ืืฉ ืืืฉื ืืืืฉ ืืช ืฉื ื ืืขืจืืื ืืืืืฉืืื twoX ื twoY, ืืืื ืฉืจืืืืืฆืืืช ืฉืื ืืืื ืืจืืืงื ืืื ืงืืืคืื ื ืื. ืืขืืื ืืืืืชื ืืงืืืคืื ื ืื ืืืืช ืืืชื ืืืืืงืช ืืฉืชื ืงืืืคืื ื ืืืช, ืื ืืืื ืืคื ืืงืื ืืื ืืืขืืงืจ ืืืื ื State - ืืงืืืคืื ื ืื ืืฉ ืืกืคืจ ืืืืจืื ืฉืื ืืื ืืื ืืืฉืคืข ืืืืคื ืขืฆืืื ืืกืืืื ืืืจ, ืืื ืกืืื ืืจืืจ ืฉืืฉืื ืืืืืจืช ืืงืืืคืื ื ืื ืฉืื ื ืื ื ืืื.
ื Vue ืืกืืคืืจ ืงืฆืช ืืืชืจ ืืืจืื ืืื ืื ืืืชืจ ืงื ืืืฉืชืืฉืื. ืืืช ืืงืืืคืื ื ืื:
<script setup>
import {ref, computed} from 'vue';
const x = ref(0);
const y = ref(0);
const twoX = computed(() => x.value * 2);
const twoY = computed(() => y.value * 2);
</script>
<template>
<div class="App">
<label>
X:
<input
type="number"
v-model="x"
/>
<span>x = {{x}}; </span>
<span>2x = {{twoX}}</span>
</label>
<label>
Y:
<input
type="number"
v-model="y"
/>
<span>y = {{y}}; </span>
<span>2y = {{twoY}}</span>
</label>
</div>
</template>
ืืงืื ืืื ืืื ืืืชื ืืืืช ืฉืื ื - ืฉืื ืื ื x ืืืจื ืืืืฉืื ืืืืฉ ืจืง ืฉื twoX ืืฉืื ืื ื y ืืืจื ืืืืฉืื ืืืืฉ ืจืง ืฉื twoY, ืืืืืจ ืจืืืืืฆืืืช ืืฉืื ืื ืืื ืืคื ืืืฉืชื ื ืืืขืจืืื ืฉืืืืฉืืื ืืื ื. ืื ืืืืจ ืฉื vue ืืืื ืื ื ืคืืืช ืืขืืืช ืืืฆืืขืื ืืชืืฆืื ืืฉืื ืื ืฉืืฆื ืืฉืืืื, ืืื ืืฆื ืฉื ื ืืืชืจ ืงืฉื ืื ื ืืืืื ืืช ืืืฉืคืขื ืืืืืชืืช ืฉื ืื ืฉืื ืื ืื ืืฉืืื ืืจืืืช ืื ืืืฉืคืข ื x ืฆืจืื ืืขืงืื ืืืจื ื computed ืืืืกืชืื ืขื ื render function ืฉื ืืฆืจื ืืืืื ืืืงืื ืืื ื ืืืฉืคืขืื ืืื ref.
ืืกืืฃ ืืฉื ื ืืืงืจืื ืืืื ืืืืื ื ืืืืง ืืืจืช ืืงืืืคืื ื ืืืช ืืคื ืืื ื ื State. ืืคืฉืจ ืืืืื ืฉ vue ืืืชืจ ืืชืืืฅ ืืฉืืื ืฉื ืืื "ืืืืืช" ืขื ืืืขืืช ืืื ืืฉืื ืืืืฆืืขืื ืืจืืืงื ืืืจืฉ ืชืฉืืืช ืื ืืืืื ืืืชืจ ืืคืจืืื ืืื ืืืช ืืืขืจืืช. ืฉืืขืชื ืืืจ ืืช ืืืืขืื ืฉืืืื ืื ืงืื ืจืืืงื ืืืืคื ืืืื ืืื ืืื ืืืชืจ, ืื ืื ืฉืื ืืืชืจ ืืชืืืฆืื ืืืชืื ื ืืื. ืื ื ืืืื ืืืืืืช ืฉืืื ืืกืืื ืฉืื ืืจืื ืคืขืืื ืื ืื ืืืฉ ืขืืืจ ืืงืื ืจืืืงื ืฉื ืืขืจืืืช ืืืืืืช ืื ืื ืืืืืง ื ืืื ืืงืืืคืื ื ืืืช ืืืชืืฆืื ืืื ืื ืกืืื ืืืขืืืช ืืืฆืืขืื.1 418
ืืื ืืืฉืชืืฉ ืืืจื ืกืคืืจืืฆืืืช ืขื ืืืืข ื echarts?
ืืื ืืคืืฆ'ืจืื ืืืืืืื ืฉื echarts ืืื ืืืืืืช ืืืจืืฅ Data Pipeline ืืชืื ืงืื ืืฆืืจืช ืืืจืฃ. ืื ื ืืืื ืฉืื ื ืขืืืื ืืชืืื ืืชื ืืืฉืชืืฉ ืืื ืืืชื ืืืจืืฅ ืืช ืืื ืืคืืืฆืื ืขื ืืืืืข ืืจืืฉ, ืืืืืื ืืฉืืฉืืืื ืืช echarts ืขื ืกืคืจืืืช ืคืจืื ืืื ื ืืื ืจืืืงื ืื ืืื. ืืื ืืงืจื ืืืื ืชืืื ืืฉืืื ืืืฉืืง ืืืื ื ืจืื ืืื ืื ืขืืื. ืฉืืื ืื ืืืืืจืช ืืืืืข ืืืื:
dataset: [
{
// 1) Raw data from your JSON array
id: 'raw',
source: data
},
{
// 2) Sort descending by SUMACCIDEN
id: 'sorted',
fromDatasetId: 'raw',
transform: {
type: 'sort',
config: {
dimension: 'SUMACCIDEN', // the field to sort by
order: 'desc'
}
}
},
],
ืื ื ืืชืืื ืขื ืืขืจื ืฉื ืืืืืงืืื ืืฉื data, ืืืืงืื ืืืืื ืืืชื ืืจืืฉ ืืงืื ืื ื ืืฉืชืืฉ ืืืจื ืกืคืืจืืฆืื ืฉื echarts ืืื ืืืกืชืื ืขื ืืืืืข ืืืืืื. ืืืชืจืื ืืื ืฉืืคืฉืจ ืืืืฆืจ ืืจื ืกืคืืจืืฆืืืช ืฉืื ืืช ืืืืฆืื ืืจืคืื ืืืจืื ืืื ืืจื ืกืคืืจืืฆืื, ืื ืืืืจ ืืช ืืืจื ืกืคืืจืืฆืืืช ืืืขืจืืช ื ืืืื ืืืืจืืขืื ืฉื echarts.
ืืืืกืจืื ืืื ืฉืืชืืขืื ืื ืืืืื ืืื ืฆืจืืืื ืืจื ืกืคืืจืืฆืื ืฉืืื ืืื ืื ืืืื ืืชืกืื. ืืืืืื ืื ืืฆืืชื ืืจื ืืืฆืื ืจืง 10 ืขืจืืื ืืืืืื ืืืืชืจ ืืืจื ืืกืื ืื. ืืืืืจื ืืืื ืืื ืืืฉืชืืฉ ื JavaScript ืคืฉืื:
const sortedData = data
.filter(item => item.city && item.SUMACCIDEN)
.sort((a, b) => b.SUMACCIDEN - a.SUMACCIDEN)
.slice(0, 10);
ืืืชืจืื ื ืืกืฃ ืฉื ืืืืฉื ืืคืฉืืื ืืื ืฉืื ืืืืืื ืืืขืื ืืช ืจืืื ืืืจื ืกืคืืจืืฆืืืช, ืื ืฉืืงืืื ืืช ืืืื ืื.
ืืืืื? ืืื. ืืงืื ืืื ืืฆืื ืืื ืืช ืขืฉืจ ืืขืจืื ืขื ืืื ืืจืื ืชืืื ืืช ืืจืืื ืืกืคืืืืจ 2024 ืืืกืคืจ ืชืืื ืืช ืืืจืืื ืืื ืขืืจ ืืืจืฃ ืขืืืืืช:
<script setup>
import { use } from 'echarts/core';
import { CanvasRenderer } from 'echarts/renderers';
import { BarChart } from 'echarts/charts';
import {
TitleComponent,
TooltipComponent,
LegendComponent,
GridComponent,
DatasetComponent,
} from 'echarts/components';
import VChart from 'vue-echarts';
import { ref } from 'vue';
// Register only the components we need (modular import)
use([
CanvasRenderer,
BarChart,
TitleComponent,
TooltipComponent,
LegendComponent,
GridComponent,
DatasetComponent,
]);
// Fetch your JSON array of objects (converted from CSV)
const data = await fetch('https://assets.codepen.io/5217/data.json').then(res => res.json());
const sortedData = data
.filter(item => item.city && item.SUMACCIDEN)
.sort((a, b) => b.SUMACCIDEN - a.SUMACCIDEN)
.slice(0, 10);
const option = ref({
title: {
text: 'Top 10 Cities with Car Accidents',
left: 'center'
},
tooltip: {
trigger: 'axis'
},
// We use ECharts โdatasetโ + transforms for sorting and limiting to top 10
dataset: {
source: sortedData,
id: 'sorted'
},
xAxis: {
type: 'category'
},
yAxis: {
name: 'Number of Accidents'
},
series: [
{
type: 'bar',
datasetId: 'sorted',
// Map city -> x-axis category, SUMACCIDEN -> y-axis value
encode: {
x: 'city',
y: 'SUMACCIDEN'
},
// Optional styling
itemStyle: {
color: '#5470c6'
}
}
]
});
</script>
<template>
<!-- v-chart from vue-echarts -->
<v-chart class="chart" :option="option" autoresize />
</template>
<style scoped>
.chart {
height: 600px;
width: 100%;
}
</style>
ืืฉืืื ืืืจืืฅ ืชืฆืืจืื ืืฉืื ืืืชื ืืชืื ืชืืื ืืช vue ืืืืชืงืื ืืช vue-echarts ื echarts.1 418
ืฉืืืฉ ืกืืืืช ืืขืืื ืืงืืืืช ืืืืืื ืืชืืจ ืืชืืืืื
ืื ืืืื ืจืืืชื ืคืืกื ืฉืืืืืฅ ืืืชืืืืื ืืขืืื ืจืง ืขื ืกืืืืืช ืคืืชืื ืืื ืืืื, ืืื ืื ืืืกืชืื ืขื ืืชืงื ืืช. ืื ื ืืืืจ ืืื ืืช ืืืขืื ืืืื ืืืืจืื ืฉืืืืืื ืชืื ืืช: ืืขืืืื ื Google Colab, ื Code Sandbox ืื ืกืืืงืืืืฅ ืื ืืคืืื ืืชืื replit ืืจืื ืืืชืจ ืงืื ืืชืืืืืื ืืืืจืื ืืขืืืคืื ืื ืืืกืชืื ืขื ืืชืงื ืืช ืฉืืืื ืืืืฉืื ืื ืืฉ ืืขืื ืกืคืฆืืคืืช ืืืืฉืื ืขื ืืืืฉื.
ืื ืืชืืืืืื ืื ืืชืืืืื ืืืชืงืื ืกืืืืช ืคืืชืื ืืงืืืืช. ืืฉืืืืืื ืืฉืื ืืืฉ ืื ืื ื ืืืืืื ืืจืืืช ืืื ืื ืขืืื, ืืื ืื ื ืฆืจืื ืืฉืจืืฃ ืขืืฉืื ืืฆื ืืื ืขื ืืชืงื ืืช ืื ืืืื ืืืืจืื ืืช ืื ืืืฉืง ืืืืืื. ืืืื ืืืช ืืืื ืืืืืจ:
1. ืื ืชืืื ืืืื ืื ืืืืืจ ืืื ืืจื ื - ืืชืืจ ืืชืืืืื (ืืื ืื ืืชืืจ ืืืชืืงืื), ืืฉ ืขืจื ืืืืืืช ืฉืื ื ืืื ืจืืข ืืคืชืื ืืช ืกืืืืช ืืคืืชืื ืืื ืกืืช ืืฉืื. ืืื ืฉืืฉืื ืืืชืจ ื ืืืฉ ืื ืื ื ืขืืฉืื ืืืชืจ ืืื ื, ืืื ืืฉ ืื ืกืืืืช ืคืืชืื ืืืชืงื ืช ืืงืืืืช ืืฉ ืืืชืจ ืกืืืื ืฉืืคืขืื ืืืชื ืืื ืกื ืืฉืื ืืืฉ ืื ืืื ืืื ืืจื ื. ืืืชืจ ืืื, ืืืืชื ืืฆืืื ืฉืืื ืื ืืื ืืจื ื ืืืืืช ืืืืืื ืฉืื ืขืฉืืื ืืืืืช ืืืื ืืืชืจ ืื ืื ื ืื ืืชืคืชื ืืืขืชืืง ืงืืืื ืืืืื AI ืืืฉ ืื ืืื ืืงืจืื ืืืืฉืื ืขื ืืืืจืื ืฉืื ื ืืื ื.
2. ืืืืื ืฉืืืืืช ืืจืื ืขืืื ืืื ืืืชืจ ืืกืืืื ืืงืืืืช - ื ืืื ืืืชืงื ื ืืจืืฉืื ืืช ืฉื ืกืืืื ืืงืืืืช ืืืชืจ ืืืจืืืช, ืืื ืืืจื ืฉืืื ืืืชืงื ืืืืืช ืืขืืืื ืืฉืืืคืช ืืืืืืื ืืืืขืืช ืืฉืืืื ื ืืืืช ืืืืืช ืืจืืจืืช ืืืชืจ. ืืคืฉืจ ืืืืื ืฉืื ืืืจ ืืื ืคืืืช ืฉืืืื ืืืืฉืืจ.
3. ืืืืงืจ ืงื ืืืชืจ - ืืขืืืื ืืงืืืืช ืืืชืจ ืงื ืื ื ืืืืื ืก ืืงืื ืืืื ืืงืื ืฉื ืกืคืจืืืช ืืืฆืื ืืืช ืื ืืืืจืืช ืืคืจืืืงื ืืื ืืจืืืช ืื ืืชืื ืฉื ืืืืืื ืื ืืฉ ืืคื ืื. ืืืืืืช ืืืงืืจ ืืื ืืืจืื ืขืืืืื ืืจืื ืขืืืจืช ืืืืื, ืื ืื ืืื ืืคืขืืื ืืืื ืืืชื ื.
ืืืชื ืชืงืืคื ืฉืืฉืืชื ืฉ Docker ืืืื ืกืื ืฉื ืคืืชืจืื ืืื ืืื, ืฉืืืคืฉืจ ืืขืืื ืขื ืืื ืขืืืื ืืืฉืื ืืืืื ืขื ืืืฉืื ืืืชืงื ืืช. ืื ื ืื ืื ืื ืืืื ืืื ืืืชืจ: ืจืื ืืืื ืืคืืื ืืฉืื ื ืืจืืฅ ืืืจืื ืืชืื ืืืงืจ ืขื ืืืืฉื ืฉืื ืืืืืืจื ืื ืฆืจืื ืืืชืงืื ืืืื ืืืฆื ืฉืื ื ืื ืฆืจืื ืืืืื ืก ืืงืื ืืืื ืจ ืืืกืืจ ืืืจืื ืื ืืืืื ืืื ืื ืขืืืืื ืืื ืื ืืืืช ืืกื ืื ืืื ืื ืขืืืื.
ืื ืืขืชืื? ืืฉืืชื ืืืืืื ืืื ืืืฉ ืืขืืืคืื ืืืชืงืื ืืงืืืืช, ืืคืชื ืืื ืืืื ืื ืืืจืืฅ ืงืื ืืืื ืจ?
Available now! Telegram Research 2025 โ the year's key insights 
