Philocode – Telegram
👍2
اگه توی MySQL از تایپ timestamp استفاده کنید، نمی‌تونید تاریخ‌های قدیمی‌تر از 1970 و تاریخ‌های بعد 2038 رو ذخیره کنید. 👽
👍3🤔1🤩1
Philocode
time sleep 2 real 0m2.004s user 0m0.001s sys 0m0.003s
دستور time فقط زمان رو می‌گه، ولی اگه خواستیم مصرف منابع رو بسنجیم:
/usr/bin/time -v docker ps
👍1🔥1
دارم یه CDN ساده با Go می‌نویسم.
فایده‌اش اینه که کارکردن با هدرها، کشینگ (اگه خواستید Redis)، فشرده‌سازی (برای من gzip) و کلی چیزهای دیگه رو یاد می‌گیرید.
https://github.com/muhammadmp97/TinyCDN
🔥42👍1
کدم رو دادم چت‌جپت ریویو کنه... ببینید ناقلا چه باگی پیدا کرده! 👽
🔥2👍1😁1😱1
گرفتن content type از محتوای فایل امن‌تر از گرفتنش از هدر content-type خواهد بود. چرا؟ چون هدر رو می‌شه راحت تغییر داد.
👍5
یه باگ داشتم، متوجه شدم یه اشتباه عجیب کردم. این دو حالت رو ببینید:
var_dump([$someVariable]);
var_dump((array) $someVariable);

وقتی که مقدار someVariable نال باشه، اولی مشکل ایجاد می‌کنه. چون خروجی‌ها این‌طور می‌شه:
array(1) {
[0]=>
NULL
}
array(0) {
}

دیگه اولی یه آرایه‌ی خالی نیست.
👍4👎1🔥1
دو تا گوروتین که با هم ping pong بازی می‌کنند. :)

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
#redis 🛢
👍2