یه باگ داشتم، متوجه شدم یه اشتباه عجیب کردم. این دو حالت رو ببینید:
وقتی که مقدار someVariable نال باشه، اولی مشکل ایجاد میکنه. چون خروجیها اینطور میشه:
دیگه اولی یه آرایهی خالی نیست.
var_dump([$someVariable]);
var_dump((array) $someVariable);
وقتی که مقدار someVariable نال باشه، اولی مشکل ایجاد میکنه. چون خروجیها اینطور میشه:
array(1) {
[0]=>
NULL
}
array(0) {
}دیگه اولی یه آرایهی خالی نیست.
👍4👎1🔥1
دو تا گوروتین که با هم ping pong بازی میکنند. :)
نکته: در برنامههای بدون پایان طبیعی، کانال را باز نگه میدارند و
#go
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go func() {
for msg := range ch {
if msg == "ping" {
time.Sleep(1 * time.Second)
fmt.Println("ping")
ch <- "pong"
} else {
ch <- msg
}
}
}()
go func() {
for msg := range ch {
if msg == "pong" {
time.Sleep(1 * time.Second)
fmt.Println("pong")
ch <- "ping"
} else {
ch <- msg
}
}
}()
ch <- "ping"
select {}
}
نکته: در برنامههای بدون پایان طبیعی، کانال را باز نگه میدارند و
main را با چیزی مثل select {} زنده نگه میدارند.#go
🔥2
Use Cases for Unbuffered Channels
- Synchronization: Enforcing that two goroutines execute in a specific order.
- Signaling: Indicating that a goroutine has completed a task or reached a certain state.
- Request-Response Patterns: Implementing simple request-response interactions between goroutines.
Use Cases for Buffered Channels
- Work Queues: Distributing work among multiple worker goroutines, allowing the sender to enqueue tasks without waiting for immediate processing.
- Rate Limiting: Controlling the rate at which data is processed by limiting the number of elements in the channel.
- Buffering Data Streams: Temporarily storing data from a fast producer before it is consumed by a slower consumer.
#go
- Synchronization: Enforcing that two goroutines execute in a specific order.
- Signaling: Indicating that a goroutine has completed a task or reached a certain state.
- Request-Response Patterns: Implementing simple request-response interactions between goroutines.
Use Cases for Buffered Channels
- Work Queues: Distributing work among multiple worker goroutines, allowing the sender to enqueue tasks without waiting for immediate processing.
- Rate Limiting: Controlling the rate at which data is processed by limiting the number of elements in the channel.
- Buffering Data Streams: Temporarily storing data from a fast producer before it is consumed by a slower consumer.
#go
اینجا کامنت گذاشتم. قربون مرامتون، اگه خوشتون اومد لایک کنید شاید از شر کیبورد فعلی راحت شدیم:
https://www.linkedin.com/posts/liara-cloud_%DA%86%D8%A7%D9%84%D8%B4-%D8%B3%D9%88%D9%85-activity-7388149509194797057-IRhQ
https://www.linkedin.com/posts/liara-cloud_%DA%86%D8%A7%D9%84%D8%B4-%D8%B3%D9%88%D9%85-activity-7388149509194797057-IRhQ
Linuxor ?
خوبی زبان PHP اینه که خیلی سادس، اما خطا هاش خیلی خوب توی مرورگر نشون داده نمیشن
مثلاً اونها که Go یا JS(Node.js) یا Python استفاده میکنند، خطاهاشون چطور نمایش داده میشه؟ اصلاً مگه نمایش گرافیکی خطا وظیفهی زبونه؟
👍1👎1
اینجا خوندم که وقتی Reddit مهاجرت از پایتون به گو رو با بازنویسی سرویس کامنتهاش شروع کرد، از یه تکنیک تست به اسم tap compare استفاده کرد: درصد کوچکی از ترافیک رو به مایکروسرویس جدید فرستاد، سرویس جدید ریسپانس خودش رو تولید میکرد، به اندپوینت قدیمی پایتون ریکوست میزد و ریسپانس اون رو هم میگرفت، بعد دوتا ریسپانس رو مقایسه میکرد و در صورتی که فرق داشتند لاگ مینوشت، بعد ریسپانس اندپوینت قدیمی رو بر میگردوند.
👍4