Philocode – Telegram
پیشنهاددادن به کاربر Cli با فشاردادن Tab
🔥3
package main

import (
"context"
"fmt"
"strings"
"time"

"github.com/redis/go-redis/v9"
)

var ctx = context.Background()

var rdb *redis.Client

func main() {
rdb = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
})

Listen()
}

func Listen() {
val, err := rdb.BLPop(ctx, 0, "jobs").Result()

if err != nil {
panic(err)
}

fmt.Println(Mask(val[1]))

Listen()
}

func Mask(str string) string {
time.Sleep(time.Second * 5)

return strings.Repeat("*", len(str))
}


یه صف ساده با Go/Redis نوشتم. ☺️🙄
🔥2👍1
توی MySQL یه چیز داریم generated column. هم می‌شه یه فیلد داخل json رو index کرد و هم می‌شه از اون فیلد داخل json یه generated column ساخت:
ALTER TABLE activity_log ADD COLUMN email VARCHAR(255)
GENERATED ALWAYS as (properties->>"$.request.email");

https://planetscale.com/blog/indexing-json-in-mysql
1👍1
یه تیبل ساختم، بالای یه میلیون رکورد اضافه کردم و کوئری زدم:
SELECT * FROM `users` WHERE name = 'Faye';

نتیجه این کوئری توی 0.0424 ثانیه برگشت که عدد قابل ملاحظه‌ایه. بعد یه index روی ستون name اضافه کردم (این کار مقداری زمان برد، چون با اضافه‌کردن ایندکس یه کپی از بخشی از دیتای ما گرفته می‌شه؛ راجع به B-Tree بخونید) و مجددا همون کوئری رو اجرا کردم و این بار 0.0007 ثانیه طول کشید که نتیجه برگرده.
در حالت دوم، فقط و فقط 461 سطر رو درگیر کردیم تا دیتای مورد نظر رو پیدا کنیم!

SELECT id, name FROM `users` WHERE name = 'Faye';

اینجا هم حتی بدون ایندکس، زمان اجرای کوئری به شکل چشم‌گیری کمتر می‌شه. هرچی رکوردها بیش‌تر باشه، این تفاوت چشم‌گیرتره.
🔥4
زدم:
nano ~/.bashrc

بعد این خط رو اضافه کردم:
alias pma='xdg-open http://127.0.0.1:8001 && php -S 127.0.0.1:8001 -t /home/dreamweaver/phpmyadmin'


حالا وقتی توی ترمینال بزنم pma، اتوماتیک هم PHPMyAdmin رو ران می‌کنه و هم توی براوزرم باز می‌شه. :)
👍1🔥1
-- All the rows, everybody knows that!
SELECT COUNT(*) FROM users;
-- How many developers each company has.
SELECT company_id, COUNT(*) FROM `users` GROUP BY company_id;
-- How many verified users we have. (=not null values)
SELECT COUNT(verified_at) as verified_users FROM users;
-- How many languages should we support?
SELECT COUNT(DISTINCT language) FROM users;
👍3
PHP __toString() vs Go Stringer
👍4
مزایده آنلاین دومین 😋
Go/Gin/MySQL/Vue.js/Tailwind
4😢1
یه API هست که هر ثانیه فقط یه ریکوست از هر آی‌پی قبول می‌کنه. یعنی دومین ریکوست رو بفرستید، بلاک می‌شید.

ایده‌ام برای حل این چالش این بود که long-polling داشته باشیم (تا جواب نباشه، ریکوست معطل می‌مونه): به این صورت که من و شما توی یه ثانیه دوتا ریکوست می‌فرستیم و درخواست اطلاعات می‌کنیم:
Me: abcd
You: wxyz

این دوتا رو توی صف می‌ریزیم و یه تایمر هم هر سه ثانیه میاد و دیتای توی صف رو جمع‌شده توی یه ریکوست برای اون API می‌فرسته و نتیجه رو توی یه slice (یه چیزی شبیه آرایه) می‌ریزه که هر کدوممون اطلاعات خودمون رو ازش برداریم.

چالش رو حل می‌کنه، اما پیاده‌کردن همین long-polling خودش یه چالش بزرگ‌تره. 😁
🔥2
جالبه:
timeout 2 sleep 20
Philocode
جالبه: timeout 2 sleep 20
time sleep 2

real  0m2.004s
user 0m0.001s
sys 0m0.003s