ToCode
Open in Telegram
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Show more1 420
Subscribers
No data24 hours
+27 days
-230 days
Posts Archive
1 420
# ืื ืงืืืืชืืื ืฉืืคื ื ืืืืงื
ืืขืืืื ืขื Azure Devops API ืืชืื ืงืื Back End, ื API ืฉื Azure Devops ืฆืจืื ืืืขืช ืฉืืืืฉืื ืฉืื ืืืจืฉื ืืงืื ืืืืข ืืขืืืจ ืืืื ืืฉืชืืฉ ืืื ืืืจืฉื ืืงืื ืืช ืืืืืข. ืคืืชืจืื ืงืืืกื ืืืขืื ืืืืช ืืื OAuth, ืืื ืืืืช ืขืืื ืืฉืื ื ืืืชื ืืคืืืงืฆืืืช ืืื, ืืื ืืืชืืืช ืืืืืืฆืื ืฉืื ืงืฉืืจื ืืืืฉืง ืืจืคื ืืกืืื ืื ืชืืื ืื ื ืื. ืืืงืื ืื ืืืืชื ืจืืฆื ืืงืื ืืืงื ืืฆื ืฉืจืช ืืชืืื ืืขืืื ืืืชื.
ื Azure Devops API ืืืงื ืืื ืืืจ ืื ืืื ืคืง ื OAuth ืืื ืืฉืืืช ืืืืืช ืืฉื ื ืืืชืจ ืฉื ืงืจืืช Basic Auth. ื Basic Auth ืื ืื ื ืฆืจืืืื ืืืขืืืจ ืฉื ืืฉืชืืฉ ืืกืืกืื ืืชืื ื Authorization Header ืฉื ืืืงืฉื, ืืืืืงื ืืฉืืฉ ืืชืืจ ืืกืืกืื. ืืช ืฉื ืืืฉืชืืฉ ืืฉืืืจืื ืจืืง.
ืื ืืกืืคืืจ ืืื ืืื ืืงืืื ืืชืฉืืื ื Stack Overflow ืฉืืกืืืจื ืืื ืืืืจ ืขื ื API ืืื ืืคืืืชืื:
import requests
import base64
pat = 'tcd******************************tnq'
authorization = str(base64.b64encode(bytes(':'+pat, 'ascii')), 'ascii')
headers = {
'Accept': 'application/json',
'Authorization': 'Basic '+authorization
}
response = requests.get(
url="https://dev.azure.com/jack0503/_apis/projects?api-version=5.1", headers=headers)
print(response.text)
ืืงืื ืื ืืจืื ืืื ืืฉืืืจ ืฉืืื ืืืืื ืคืชืืื - ืืื ืื ืืืกืืคื ื ืงืืืืชืืื ืืคื ื ืืืืงื?
ืืชื, ืฉืงืจืืชื ืืช ืืืงืืื ืืืจ ืืืืขืื. ืื ืงืืืืชืืื ืฉื ืืฉืืื ืืืคืจืื ืืื ืฉื ืืืฉืชืืฉ ืืจืืง ืืกืืกืื (ืฉืืื ืืืืงื), ืืื ืื ื ืื ืืืื ืฉืื ืฉืืงืจื ืงืื ืืื ืืืจืืื ืื ืืืฉ ืืืื ืขื ืื ืืืืืจ. ืืืื ืืืืืช ืฉืื ืืืืื ืืืืืื ื ืืกืคืื, ืืืื ืืืืืช ืฉืืฉืืื ืืฉืื ืืช ืื ืงืืืืชืืื ืืืงืืืืช ืืืจืื ืื ืืืชืื ืืืชื ืื ืืืคื ืฉืื ืฆืจืื. ืืื ืืงืจื ืืื ืื ืืฆื ืืื.
ืืืชืืืช ืงืื ืื ืื ื ืจืืฆืื ืื ืกืืช ืืกืคืจ ืืช ืกืืคืืจ ืืจืงืข ืืชืื ืืงืื ืืืืืช ืืืคืฉืจ, ืืื ืื ืืคืฉืจ ืืฆืจืฃ ืืขืจื. ืืืช ืืืืจืกื ืฉืื ืืืืชื ืงืืข ืฉืืืจ ืื ืืกืคืจืช ืืืง ืืกืืคืืจ ืืจืงืข:
import requests
import base64
def basic_authorization_header(username: str, password: str):
return 'Basic '+str(base64.b64encode(bytes(username + ':'+pat, 'ascii')), 'ascii')
# Personal Access Token received from the web UI
pat = 'tcd******************************tnq'
headers = {
'Accept': 'application/json',
'Authorization': basic_authorization_header(username='', password=pat)
}
response = requests.get(
url="https://dev.azure.com/jack0503/_apis/projects?api-version=5.1", headers=headers)
print(response.text)
ื .ื. ืืืืื ืฉืื ืืืื ืืฉืืืจ ืืช ืืืืงื ืืชืื ืืงืื ืืืฉ ืืงืจืื ืืืชื ืืืฉืชื ื ืกืืืื, ืืื ืื ืื ืืฉืื ืืกืืคืืจ ืฉืื ื ืื ืืฉืืจืชื ืืื ืฉืืฆืืชื ืืืชื.
ื .ื.ื. ืืืืื ืฉื requests ืืฉ ืชืืืื ืืืื ืืช ื Basic Auth ืืืคืขืืื ืฉืืื ืืืฉืชืืฉ ืื. ืืืชืจืื ืฉื ืืืชืืื ืืืคืืจืฉืช ืฉื ื Headers ืืื ืฉืื ืืืชืจ ืงื ืืชืจืื ืืช ืืงืื ืื ืืฉืคืืช ืืืจืืช ืื ืืืื ืฆืืจื.1 420
# ืืื ืื ืื ืืกืืื?
ืืื ืืชื ืืกืชืื ืขื Deployment ืืจื ืงืืืจื ืืืก? ืืฆืื ื ืคืฉืื ืขืืฉืื rsync ืืฉืจืช ืืืื ืขืืื.
ืืื ืืช ืฆืจืืื ืืืชืื ืกืงืจืืคื ืฉืืืฆืข ืืช ืืฉืื ืื ืืืื ื ื DB ืืฆืืจื ืืชืืขืืช? ืืฆืื ื ืื ื ืืชืืืจ ื DB ืืืจืืฅ ืืช ืืคืงืืืืช ืืชืื ื phpmyadmin.
ืืื ืืชื ืืกืชืื ืขื Ansible? ืืขืฉืจืื ืืงืืช ืื ื ืืจืื ืื ืฉืจืช ืืื ืืงืก ืขื ืื ืืชืืื ืืช ืขืืื.
ืื ืคืชืืื Micro Service ืืขื ื? ืคืฉืื ืชืื ื Dockerfile ืืชืคืขืื docker compose.
ืืื ืืชื ืื ืื ืืกืชืืืื ืขื ืืื? ืืืชืจ ืงื ืืฉืืืจ ืืืจืกืืืช ืฉื ืืคืจืืืงื ืืฆื ืื ืคืขื ืฉืืขืืื ืืืจืกื.
---
ืื ืชืืืชืจื ืขื ืืฉืืืืช ืืืื. "ืืื ืื ืื ืืกืืื" ืื ื ืงืืืช ืืืชืืื ืืืืื ืืืืชืจ ืืื ืืกื ืืืื ืืืืืื ืืืฉื. ืืืืจ ืืืืฉ ืืกืืื ืื ืืื ืฆืจืื ืืืคื ืืืงืจืื ืืฉืืืืช ืขืืืื ืืืชื ืืืืจ ืืืฉื ืื ืืฆืืื ืืืชืืืื. ืจืง ืืฉื ืชืืื ืืจืืืช ืืช ืืืชื ืืงืจืื ืฉืืืืจ "ืืคืฉืื" ืื ืคืืชืจ, ืืคืฉืจ ืืืื ืืืชืืื ืืืืื ืืช ืืืืจ ืืืืฉ.
1 420
# ืืืกืืื? ืื ืืืื
ืืืืืจื ืืืคืืจืกืืช ืฉื ืืื ืื ืงื ืืช' ืืืืืช ืืื-
> โThe real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.โ
ืืืคืฉืจ ืืืืื ืืช ืืกืืคืืจ ืืฉืชื ืืจืืื, ืฉืชืืื ื ืืื ืืช. ืืืกืจ ืืืจืืจ ืืื ืฉืขืืืฃ ืื ื ืืืงื ืืช ืืืืืฆืื ืฉืื ื ืืืชืืืช ืชืืื ื ืืขืืื. ืืืชืืื ืืื ืื ื ืืืฉื ืืืื ืืืงืื ืืืืช ืืขืืื ืืื, ืืืื ืฉืืื ืืืืืช ืขื ืืืืคืืืืืืฆืื ืขื ืฉืืฉืื ืืืืช ื ืฉืืจ.
ืืืกืจ ืืืืชืจ ืขืืื ืืื ืฉืืคืขืืื ืืืืงื ืื ืืกืืื ืืืกืื ืขืืื ืืกืื ืืืชื ื ืขืื ืืืชืจ. ืื ืจืง ืืืืื ืฉื ืขืืื ืืืชืจ ืงืฉื ืืื ืืืช ืืืชื ืืขืจืืช, ืืื ืื ืฉื ืงืื ืืืืื ืฉืืื ืืืชื ื ืืกืืื ืื ืืืื ื ืืืืืื ืขืืืื. ืืืช ืื ืื ืื ื ืืืืจืื: ืฉืืืจืื ืืืืข ื Cache ืจืง ืืฉืืื ืืืืืช ืฉืืืคืืืงืฆืื ืืฆืืื ืืืืข ืื ืขืืื ื ืืืฉืชืืฉ ืื ืฉืืื ื ืืจืขื ื ืืช ื Cache; ืืืกืืคืื
useCallback ืื useMemo ืืจืืืงื ืืืืขืื ืืจืฉืืืช ืืชืืืืืช, ืื ืฉืืงืืืคืื ื ืื ืื ืืชืขืืื ืช; ืืื ืื ืืขืจืืช ืฉืชืืข ืืืชืืืื ืขื ืขืืืก ืืจืื ืืืืขืืืช ืงืืืืืช ืืื ืืืช ืขื Micro Services ื Kubernetes ืจืง ืืฉืืื ืืืืืช ืฉืืจืื ืืืงืื ื ืขืื ืื ืื ื ืืืืืื ืืืืขืืช ื Message Queue.
ืืืจื ืืื ืืืช ืืืฆืจ ืชืืื ื ืฉืขืืื ืืื ืืืืืช ืืืจืืื. ืื ื ืืช ืืคืืฆ'ืจืื ื ืืื ืืืฆืืจื ืฉืืืคืฉืจืช ืฉืืืจืื ืืืืืคื ืืื ืืฉืืืจ ืืช ืื ืืืขืจืืช. ืืช ืืืืคืืืืืืฆืืืช ืืืืืฆืืขืื ืจืฆืื ืืืฉืืืจ ืืกืืฃ.1 420
# ืืื ืืืืฆืื ืืงืฉืช HTTP ื Clojure
ืงืืื'ืจ ืืืื ื ืืืื ืืคืื ืงืฆืืืช ืฉืงืฉืืจืืช ืื ืชืื ืื ืืขืืืื ืืืืข ืืจืื ืฉืืืืืจื ืืช ืจืืื, ืืื ืืื ืื ืฉืงืฉืืจ ื"ืืืจืืืช" ืื ืืืฉืืจื ืืืืฅ - ืืื ืืจื ืืืื ืืช ืืฉืคื ืืงืจืื JSON, ืืื ืื ืื ืื log ืืืื ื ืืฉืคื ืืื, ืืื ืฉืงืฉืืจ ืืคืืกื ืฉืื ื, ืืื ืืจื ืืืื ืืช ืืฉืคื ืืฉืืื ืืงืฉืช HTTP.
ืืชืคืืกื ืฉื ืงืืื'ืจ ืืื ืฉืืื ืืืจืื ืฉืืืืจืื ืืืืืช ืืคืืชืืื ืืกืคืจืืืช ืืจืืื ืื ืืืฉืชืืฉ ืืืืืืืช ืฉื ืืฉืคื ืืืืจืืช, ืืืืืจ ื JVM ืื ืืืคืืคื.
ืืื ืืคืฉืจ ืืชืจืื ืืช ืืฉืืื ืืื ืืืืฆืื ืืงืฉืช HTTP ืืงืืื'ืจ ืืฉืืืืช ืืืงืืืืืช ืืฉืคืืช ืืืืจืืืช - "ืืื ืืืืฆืื ืืงืฉืช HTTP ื Java", ื"ืืื ืืืืฆืื ืืงืฉืช HTTP ื JavaScript ืืชืื ืืคืืคื". ืืืื ื ืจืื ืืช ืืชืฉืืืืช ืืืื ืื ืืชืืจืืืืช ืืงืืื'ืจ.
## ืืื ืืืืฆืื ืืงืฉืช HTTP ื Clojure ืฉืจืฅ ื JVM
ืืืืคื ืจืืื ืชืืื ืืช ืงืืื'ืจ ืจืฆื ืืชืื ืืืืื ื ืืืืจืืืืืืช ืฉื Java, ืืืื ืืงืฉืช HTTP ืฉื ืงืืื'ืจ ืชืฆืืจื ืืืฉืชืืฉ ืืงืืืกืื ืืืชืืืืื ื Java. ืืชืืื ืืช ืืืื ื Java ืฉืืืืช ืืงืฉืช HTTP ืืืืคืืกื ืืช ืืชืฉืืื:
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://dummyjson.com/products"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
ืืืช ืื ืืคืฉืจ ืืงืืืช ืืชืจืื ืืงืืื'ืจ:
(import
(java.net URI)
(java.net.http HttpResponse$BodyHandlers)
(java.net.http HttpClient HttpRequest))
(defn -main []
(let [client (HttpClient/newHttpClient)
request (.build (HttpRequest/newBuilder
(URI/create "https://dummyjson.com/products")))
response (.send client request (HttpResponse$BodyHandlers/ofString))]
(println (.body response))))
(-main)
## ืืื ืืืืฆืื ืืงืฉืช HTTP ื ClojureScript
ืืื ืื ืืืข ื ClojureScript? ืืื ืจืฅ ืืชืื ืืคืืคื ืืืื ืืืกืืก ืฉืื ื ืืืื ืฉืืืืช ืืงืฉืช HTTP ืืชืื JavaScript. ืืงืื ื ืจืื ืื:
async function main() {
const res = await fetch("https://dummyjson.com/products");
const data = await res.json();
console.log(data);
}
main();
ืื ืืืื ื ืืื await ืืืื ื ื ClojureScript ืืื ืขืืืื ืืคืฉืจ ืืืฉืชืืฉ ื Promises ืขื then ืืืงืื ืืช ืืืชื ืืงืื ืืืืจืกืช ืงืืื'ืจ:
(->
(js/fetch "https://dummyjson.com/products")
(.then #(.json %))
(.then #(js->clj %))
(.then #(println %)))
ืืืชืจืื ืฉื ืืืจืกืช ื ClojureScript ืืื ืฉืื ืงืืืื ื ืคืืขื ืื ืฉื ื JSON (ืื ืืืื ื Java ืฉืืืืืจ ืจืง ืืืจืืืช). ืืคืงืืื js->clj ืืคืื ืืช ืืื ื ืื ืชืื ืื ืืืคื ืงืืื'ืจืืช ืืืื ืืคืฉืจ ืืขืืื ืืช ืืงืื ืืื ืืืืคืืก ืจืง ืฉืื ืืกืืื ืืื ื, ืืืฉื ืจืง ืืช ืจืฉืืืช ืืืืฆืจืื:
(->
(js/fetch "https://dummyjson.com/products")
(.then #(.json %))
(.then #(js->clj %))
(.then #(println (get % "products"))))
ืืืื ืฉืืืืืจื ืฉื ืงืืื'ืจ ืืืกืชืื ืขื ืืกืืืื ืืืืจืืช ืืฉ ืืชืจืื ืืช ืืืกืจืื ืืช, ืืื ืืืืจ ืืืฉืื ืื ื ืืืชืื ืชืื ืืื ืืืืืจ ืืช ืืืืืจื ืืืืช ืืืืืืจ ืืืื ืกืื ืคืืชืจืื ืืช ืืืื ืืืคืฉ ืืงืืื'ืจ ืขืฆืื ืืืืื ืคืืชืจืื ืืช ืขืืืฃ ืื ื ืืืคืฉ ืืกืืืื ืืืืจืืช.1 420
# ืืืชืืจ ืฉื ืืืืื ืืืจืื
ืืืืืืืฆืื ืฉื ืื ืฉืืชืืื ืืืืืืื ืืืื ืืืจืกืืื ืืืืื ืืืืืช ืืืฆืื ืขืืืื ืืกืืฃ ืืชืืืจ, ืืื ืืืืื ืืืืืืืื ืืขืืืื ืืืืืงืช ืืืขืืื ืืจืื ืืืชืจ ืงืื ืื ืืงืฆืจืื - ืกืืกืืจ, ืงืืจืกืื, ืืืื ืื, ืชืจืืื ืฉืืืขื. ืื ืื ื ืื ืืืืืื ืฉืืฆืืื ืืจืื ืืืชืืจืื ืืงืื ืื ืชืืืื ืืช ืืกืืืืืื ืืืฆืืื ืืืชืืจ ืฉื ืืืืื ืืืจืื (ืืืฆืื ืขืืืื ืืืื ืืกืืฃ ืืชืืืจ), ืืืื ืืฆืืืืื ืืืฉืงืืข ืืื ืืืืจื ืฉื ืื.
ืืืืฅ ืืืกืืจืช, ืืืืงื ืืืืช ืฉื ืืชืืจ ืืืื ืืจืื ืืขืฉืจืืช ืืชืืจืื ืงืื ืื ืืืชืจ ืืืชืืงืืืช ืืืชืืจืื ืืงืื ืื ืืืืจื ืฉื ืื ืืื ืืืชืืจ ืืืืื ืฉืื ื ืืฉืื ืื ื ืจืืฆืื ืืืฉืื ืืืจืืช ืืจืืืืช ืืืื ืืืืืืช ืขืฆืื ื.
ืืืฉืืง ืืื ืืื ืื ืืืชืืื ืื ืืื ืืืืกืชืื ืขื ืืืืจื ืืจืืืช ืืืืื (ืื ืื ืกืืคืจ ืืืืืฉ). ืืืงืื ืื ืขืืื ื ืืืชืืงื ืืกืื ืื ืืืืื ืฉืื ืื ื ืฆืจืืืื ืฉืืืคืฉืจ ืืฉืื ืฉื ืืืชื ืืืจื ืืจืืืช ืืืื.
1 420
# ืืืื ืืื ืืืืงืจ ืงืืืคืื ืืืขื ืขืืจ ืื ืืชืืช ืืจืืืจ
ืื ืืืื ืืขืืจืชื ืืืื ืคืจืืืงื ืืฉืจืช ืืืืงืืช, ืืฉืืื ืืืกืื ืืชืงื ืืช ืฉืืชื ืฉื docker compose ืืืืืืง ืฉื ืืจืืืก ื ืจืื ืืื:
redis:
image: redis
ports:
- 6379:6379
ืืืจื ืฉืขืชืืื ืืจืืืก ืืชืจืกืง ืืืืื ืืืคืืขื ืืืืขื ืืืื ืืืืืขื ืืืื (ืจืง ืขื ืชืืจืื ืืืจ ืืืชืืื):
1:S 25 Jun 2021 00:48:12.902 * MASTER <-> REPLICA sync started
ืืคืขืื ืืืืฉ ืฉื ืจืืืก, ืืื ืฉืื ืขืื ืืืืจื ืฉืขืชืืื ืืืืขืช ืืฉืืืื ืืืจื ืืืื. ืืืื ืฉืื ืฉืจืช ืืืืงืืช ืืืฃ ืืื ืื ืืื ืืืคืช, ืืืืืืขื ืงืืืืื ืืชืืจ ืืืืจืืช ืฉื ืืขืืื ืฉืืื ืชืืคืืจ ืืื ืืฉื ืขืืืจ ืืฉืจืช ืืืืชื.
ืืืืืื ืืจืืืช ืื ืืืขืื ืืืืืชืืช ืฉื?
## ืคืืชืจืื
ืืืืจ ืืื ืืฉืื ืืขืฉืืช ืขื ืืขืืืช ืืืื ืืื ืคืฉืื ืืืชืืืก ืืืืื, ืื ืืืืื ืืชืืช ืืฉืืื. ืืจื ืื ืื ืืืื ืืืืืช ืืฉืื ืืืื - ืืืื ืืฉืชืืฉืื ืืจืืืก ืืชืื ืงืื ืืืื ืจืื ืืืื ืขืืื ืืืืชืจ ืืฉืขืชืืื. ืื ืื ืืืฉืคืขื ืฉื ืืชืงืื ื ืจืืืช ืกืืคืจ ืฉืืืืช (ืื ืืืขืื ืืขืฉืืช ืจืืกืืจื ืืจืืืก ืคืขื ืืืื ืขื ืฉืจืช ืืืืืงืืช), ืื ืขืืืื ืืฉืื ืฉืืคืฉืจ ืืฉืืื ืืชืงื ืืงืืืช.
ืืืงืจื ืฉืื ื ืืชืฉืืื ืขืืชื ืืืืคืืฉ ืืืืจ ื Stack Overflow:
https://stackoverflow.com/questions/68124389/redis-error-condition-on-socket-for-sync-connection-refused
ืืืืจืช ื ports ื docker-compose.yml ืืจืื ืืจืืืก ืืืงืฉืื ืืคืงืืืืช ืืื ืืขืืื. ืืกืคืืง ืืงืื ืคืงืืื ืืจืืฉืขืช ืืืช ืืืจืืืก ืืคืกืืง ืืขืืื, ืืืืืื ืืืืื' ืืจืืจืช ืืืืื ืืืืืืจ ืืื ืืื ืกืืกืื.
ืืืื ืื ืืคืืชืจืื ืืคืฉืื: ืืืืงืื ืืช ืืืืจืช ื ports. ืืคืฉืจ ืืืืืืฃ ืืืชื ื expose ืืืคืฉืจ ืื ืขื ืื ืืืืชืจ. ืื ืฉืืฉืื ืื ืื ืืืฉืืืจ ืืช ืคืืจื 6379 ืคืชืื ืืื ืืขืืื ืขื ืฉืจืช, ืื ืืคืืื ืื ืื ืจืง ืฉืจืช ืืืืงืืช ืืฉ ืื ืฉืกืืจืง ืืช ืื ืืชืืืืช ื IP ืฉื ืืขืืื ืืืืคืืฉ ืืืจ ืจืืืกืื ืคืชืืืื.1 420
# ืืืืื ืืืืจ ืื ืืฉืืื
ืืคืืกื ืืืืจืื ืฉืื ืงื ื ืืืืก ืืฆืืข ืื ื ืืืคืกืืง ืืืืืช ื'ืื ืืืจืื. ืกืคืฆืืคืืช ืืื ืืืชื-
> it really doesn't take much time for a developer staying on top of these advancements in their area of interest to reach a level of familiarity that rivals those with decades of experience.
ืืื ืืืืืืฉ-
> Staying on top of a few chosen technologies allows anyone to become an expert in them rather quickly.
ืฉืืืช ืืืฉืื ืืืืช ืืืืื ืืืื ืืจืื ืืชืื ืชืื ืืืชืืงืื. ืื ืืืจื ืขืฉืจืืช ืฉื ืื ืืืงืฆืืข ืืืื ืืืื ืืืื ืืื ืืืืืื ืืช ืื ืื ืฉืื ื ืืืืข ืืืืืฉืืื, ืื ืื ืื ื ืขืืฉื ืคื? ืขืืืฃ ืืขืืืจ ืื ืืืื ืื ืคืจืืืืงื, ืืืคื ืฉืื ืืกืืื ืื ืฆืืจ ืฉืืื ืขืจื.
ืืื ื ืืื ืื ืื ื ืืืคืฉืื ืชืืื ืืช ืืฆืืืื, ืืช ืืืืืื ืืืช ืืฉืืคืืจ. ืืจืืจ ืฉืื ืืขืกืงื ืืชืืื ื ืืืื ื ืืืชืืื ืงืื ืืืกืืฃ ืืืืืฉ ืืืืงืื ืืช ืื ืื ืฉืืชืื ื ืืืชืืืืื ืืืคืก ืืืืืืืฆืื ืฉื ืจืื ืืืชืื ืชืื ืืืชื ืืืจืืช ืืฉืืขืืชืืช. ืื ืื ื ืจืืฆืื ืืืฉืงืืข ืืืขืจืืช ืฉืชืคืชืืจ ืืขืืืช ืืชืฆืืื ืืืืจื ืืื, ืืื ืื ื ืจืืฆืื ืืืฉืงืืข ืืืืข ืืื ืืกืืื ืฉืื ื ืืื ืืื ืืช ืคืืชืจืื ืืช ืืืืื ืืืชืจ ืืขืชืื.
ืื ืฉืืืื ืืืชื ืืฉืชื ืืืฉืืืช ืืขืงืืืช ืืคืืกื ืฉื ืงื ื-
1. ืื ืืกืืื ืฉืื ืืจืื ืืืจืช: ืืื ืฉืื ื ืคืืืฉ ืืืชืจ ืืชืื ืชืื ืื ื ืืืื ืืจืืืช ืืช ืืืคืงื ืฉื ื ืืกืืื. ืืชืื ืชืื ืืืชืื ืชืืช ืขื ื ืืกืืื ืืืืืื ืืืจืื ืืืชืจ ืืืจ, ืืกืืืืื ืืืชืืืื ืืื ืืืชืจ ืขื ืืขืืืช ืืืจืืืช ืืช ืืชืืื ื ืืืืืื. ืืื ืงืืจืก ืฉืื ื ืืืื ืืื ืืืชืื ืชืื ืืืืชืืงืื ืฉืฉืืืืื ืืช ืืฉืืืืช ืืงืฉืืช, ืืืืืขืื ืืืฉืืืช (ืื ืื ืื ืชืืื ืืฆืืจื ืืืืืงืช) ืืื ืืืื ืืืืืื ืฉืื ื ืืืื ืืืื ืืืืืืืช ืืืจืืช ืืืขืืจ.
2. ืืืจื ืืืืื ืืื ืืืืืื ืืื ืืืชืขื ืืื ืื ืืืืคืฉ ืืช ืืขืืืง. ืื ืืืืฉื ืืจืืฉ ืืื ืฉืคืจืืืืืืจืงืื ืืชืืืคืื ืื ืืืื, ืืฉืื ืคืจืืืืืืจืง ืืืฉ ืืืจืฉ ืืืชืืื ืืืืื ืืืคืก, ืื ืืืื ืื ื ืคืืืช ืืืื ืืืคืฉ ืืช ืืขืืืง ืืืื ืืืืื. ืืขืฆื ืืืืื ื ืฉืืคืฉืจ ืชืื ืืื ืืืืฉืื ืืืฉืชืื ืขื ืืื ืืืืืื ืืกืืืืช ืืืืืืข ืื ืืจืืช ืืืืืืืช ืืื ื ืืืื ืฉืืืฉืืื ืืช ืขืฆืื, ืืืื ืืื ืขืช ืืืืชื ื ืืืคืฉ ืืช ืืืืืื ืฉืืืงื ืฉื ืื.
ืื ืืกืืื ืืฉ ืขืจื, ืืืื ืฉื ืืืื ืืื ืื ืชืืืฅ ืืืคืฉ ืืช ืืขืจื ืื ื ืืฆื ืืืชืจ ืืื ื.
1 420
# ืืืง ืืคืืืชืื: ืชืืืช ืืขืืืืช
ืชืืืช ืืขืืืืช ืืื ืืืืืืื ืืื ืชืืื ืืขืืืชืืช. ืื ืฉืืื ืืืจืืช ืขืืฉืื ืืืืืื ืื ืฉืืื ืืืงืฉ ืฉืืืจืื ืืืืืื ืืืืืื ืืืืฉื. ืืื ืืคืขืืื ืื ืื ื ืชืงืืขืื ืขื ืขืืฆืื ืชืืื ื ืืกืืื ืืืืืืืช ืฉืืืจ ืืชืงืืื ืืขืืจ, ืฉืืจืื ืืื ืฉืืฆืืขื ืืขืืืืช ืืื ืืืชื ื ืื ืขืช (ืืคืืืช ืขื ืืจืืคืงืืืจืื ื ืืืืื ืืื).
ืืคืืืชืื ืงื ืืืื ืืฉืืืจ ืงืื ืืืื ืชืืืช ืืขืืืืช. ืื ื ืืืืืื ืฉื ื ืงืืฆืื ืฉืชืืืืื ืืื ืืฉื ื:
# File: a.py
import b
def hi(n):
print("Hello from a")
if n < 10:
b.hi(n+1)
hi(0)
# File: b.py
import a
def hi(n):
print("hello from b")
if n < 10:
a.hi(n+1)
ืื ื ืฉืืืจ ืืช ืงืืขื ืืงืื ืืงืืฆืื ืืฉืืืช a.py ื b.py ืืืชืืื ืื ืจืืฅ python a.py ื ืงืื ืืช ืืฉืืืื:
Hello from a
Traceback (most recent call last):
File "/Users/ynonp/tmp/python/circular/a.py", line 1, in <module>
import b
File "/Users/ynonp/tmp/python/circular/b.py", line 1, in <module>
import a
File "/Users/ynonp/tmp/python/circular/a.py", line 8, in <module>
hi(0)
File "/Users/ynonp/tmp/python/circular/a.py", line 6, in hi
b.hi(n+1)
^^^^
AttributeError: partially initialized module 'b' has no attribute 'hi' (most likely due to a circular import)
ืืคืื ืงืฆืื hi ืืืืืืื a ืืชืืืื ืืจืืฅ, ืืืื ืฉืืื ืฆืจืืื ืืงืจืื ืืคืื ืงืฆืื hi ืืืืืืื b ืืืืจืงืช ืฉืืืื ืื ืคืื ืงืฆืื ืื ืขืืืื ืื ื ืืขื ื. ืืขืฆื ืคืืืชืื ืืชืืื ืืืขืื ืืช ืืืืืื b ืขืื ืืชืืืืช ืืืขืื ื ืฉื a, ืืื ืื ืืื ืจืื ืฉื ืืช ืืคืงืืื:
import a
ืืืืื ืฉืขืืื ืืกืืื ืงืืื ืขื a ืืจืง ืื ืืืื ืืืืืจ ืืกืืื ืขื b. ืืื ืืฉืืคืขืืืื ืืช hi ืืชืื ืืืืืื a ืคืืืชืื ืขืืืื ืื ืกืืื ืืืชืื ืืช b ืืื ืืฆื ืขืืืื ืืช ืืคืื ืงืฆืื hi ืืื ื.
ืืืื ื ืื ืื ืงืื ืืฉ ืืืืื ืืจืืื ืืืชืืืื ืขื ืืชืืืช ืืืขืืืืช: ืืคืฉืจ ืืืืจ ืืช ืฉืชื ืืคืื ืงืฆืืืช ืืืืชื ืงืืืฅ ืื ืืืืฆืื ืืช ืืงืจืืื ื hi ืืงืืืฅ ืฉืืืฉื. ืืื ืืืื ืื ืืืชืจ ืืืจืืืื ืืคืขืืื ืืืืคืฆืืืช ืืืื ืื ืืคืฉืจืืืช.
ืืืง ืืจืืฉืข ืฉืืืื ืืขืืืจ ืืืฆืืื ืืืื ืืื ืืืขืืืจ ืืช ื import ืืชืื ืืคืื ืงืฆืื. ืืืจื ืืฉืื ืื ืืืืืื b.py ื ืจืื ืื:
# File: b.py
def hi(n):
import a
print("hello from b")
if n < 10:
a.hi(n+1)
ืืคืขืื ืืืืจืช ืืืื ืขืืฉืื ืขืืื:
Hello from a
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
hello from b
Hello from a
ืืืืกืจืื ืืืจืืื ืืืขืื ืช ืืืืื ืืชืื ืคืื ืงืฆืื ืืื ืืงืจืืืืช - ืืืื ื ืื ืื ื ืืฉืืกืชืืืื ืขื ืงืืืฅ ืืืกืชืื ืืืืง ืืขืืืื ืฉืื ืืืืขืช ืืืืื ืงืืฆืื ืืืจืื ืืื ืชืืื. ืืฆื ืฉื ื ืื ืืืฉ ืืืืืื ืืืฉืชืืฉ ืืชืืืช ืืขืืืืช ืืื ื ืืื ืืืื ืืชืช ืคืืชืจืื ืืืืจ ืขื ืฉืืืื ืืื ืืจืืคืงืืืจ ืจืฆืื ื.1 420
# ืืขืืืช ืืกืืืืืช ืืื
ืืฉ ืืขืืืช ืฉืื ืืกืืืืืช ืืื. ืฉืื ื ืืืชื ืื ื ืคืชืืจ ืืืชื. ืฉืื ืืืืช ืืืืฅ ืืืืืืช ืืืื ืืืงืืืืืืช ืืืืฉืืืื ืฉืื ื.
ืืืืื ืคืืชืื ืืื ืืื ืื ืืืื. ืื ืืืืื ืคืืืชืื. ืื ืื ืฉืคืช ืชืื ืืช ืืืจืช.
ืืืฉืชืืฉ ื ืืื ื git ืืื ืื ืืืืช ืืขืื. ืืคืืื ืื ืืขืฉืืช ืจืืืืืกืื.
ืืืืชื ืืืจ ืืืื ืงืืื ืืขืืืื, ืื ืืืช ืืืฆืจ ืชืืื ื ืงืื ืื ืขืืืื ืืขืืื ืืืชืจ ืืชืื ืฉืืจืช ืืคืงืืื. ืืืื ืืขืืืช ืฉืื ืฉืื ืืืจ ืคืชืจื ืืคื ืื ืืื ื ืืกืืืื ืืืืื ืืืืื. ืื ืื ืฉืฆืจืื ืื ืืืืช ืืคื ืืกืคืจ ืืืชืช ืืขืฆืื ืืช ืืืื.
ืื ืื ืงื, ืืื ืืืืจื ืืคืฉืจื ืืืกืืืืืื ืืืืืชืื.
ื ืกื ืืืืืจ ืืช ืื ืืคืขื ืืืื ืฉืืชื ืืืฉืืื ืืืชืืืืฉ. ืืืืจื ืืขืืื. ืืื ืืื. ืืืช ืขืืืื ืื ืืขืื ืืกืืืืช ืืื.
1 420
# ืืงืืฃ ืืฉ ืืขืื
ืืงืืฃ ืืฉ ืืขืื. ืืื ืื ืืืฆื ืืช ืืื ืฉืื. ืื ืืื ืคืืืฉ ืคืจืคืจ ืืืื ืื ืืืฆืืื ืืืคืฉ, ืืื ืื ืืืืชืจื ืขื ืฉืืืฆืื, ืื ืืื ืืื ืื ืืคืฉืจ.
ืืืืื ืฉืื ืืืคืฉืื ืืงืืฃ ืื ืฉื ืื ืืืื ืฉืขืืืจ, ืืืขืืืช ืืืืจืืช ืฉืืฆืืืจืืช ืืืืขืืืช ืฉืขืื ืืืืขื. ืืืขืื ืืืืช ืฉืืฉ ืืงืืฃ ืืื ืืืืจ ืืืืื ืฉืืฉืื. ืืื ื ืจืง ืขืื ืืื ืจืืขืื ืืืื ืืืฆื ืืืืื ืืืืฉืื ืืืื.
ืื ืืืืชื ื ืื ืืจืืืฉ ืืื ืืืชื ืืงืืฃ, ืฉืจืง ืฆืจืื ืขืืฉืื ืืคืชืืจ ืืช ืืืขืื ืืงืจืืืืช ืฉืขืืืืช ืืืื ื, ืืฉืืคืืชืจืื ืฉืื ื ืจืื ืื ืื ืงืจืื ืืื ืื ืคืขื ืจืง ืืชืจืืง ืืืืฉ. ืืจืฆืื ืืืืชืงืข ืขื ืืขืื ืืื ืืืื ืืืืืืจื ืืืืื ืืช ืืกืืืืืื ืืคืชืืจ ืืืชื, ืืื ืื ืื ืชืืื ืืืฆื:
1. ืืคืขืืื ืืืืงื ืืืืืช ืงืฆืช ืืืื ืืขืืืจ ืืฉืื ืืช ืืืขืื ืืคืจืืคืืจืฆืื, ืื ืืืคืื ืืืชื ืืื ืจืืืื ืืืช.
2. ืื ืืืจื ืืืขืื ืืื ืืืืื ืืืื ืืขืืืช ืืืืืืช ื ืืกืคืืช. ืืขืืื ืืื ืืื ืืคืชืืจ ืืขืื ืืืช ืขืืื ืืืฉืืืจ ืืืชื ื ืืื ืืฉืืืื ืืืขืื ืืืื.
3. ืจืื ืืืื ืืืฅ ืืืืขืื ืืืืืื ืืฉ ืื ืื ืืื ื ืืขืืืช ืงืื ืืช ืฉืืืืืช ืืืชื ื. ืืชืืงืืืช ืจืง ืืืขืื ืืืช ืืืกืืช ืืืชื ื ืืื ืืืคืฉืจืช ืืืชืงืื ืืืืืื ืื ื ืืกืคืื ืฉืืืื ืื ืืืขืืื ืืคืืชืจืื ืืืืื, ืืฉืืขืืจื ืืฉืื ืืช ืืืขืื ืืืืืื ืืคืจืืคืืจืฆืื.
ืืขืืืช ืฆืจืืืืช ืฉื ืฉื ืขืืืื ืื ืคืชืืจ ืืืชื, ืืื ืืขืืืช ืืขื ืืื ืืช ืืืจืฉืืช ืคืืชืจืื ืืช ืืฆืืจืชืืื ืืืืงืืืช ืืื. ืื ืืกืืจ ืื ืืฉืื ืืขืื ืืฆื ืืืื ืืืื, ืืืชืงืื ืืืืืื ืื ืืืจืื ืืืืืืจ ืืืื ืขื ืืืื ืืืืื ืืืชืจ ืืืืฉื.
Available now! Telegram Research 2025 โ the year's key insights 
