THẢO LUẬN

Avatar
đã bình luận câu trả lời trong câu hỏi
thg 8 9, 2017 2:36 SA

Nice example!

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 8 8, 2017 9:32 SA

Great! Thank you very much.

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 8 8, 2017 9:23 SA

That's great!

0

(like)

Mình đọc trên documentation của Lodash thì _.extend là alias của _.assignIn; _.assign_.assignInchỉ khác nhau một chút ở việc lựa chọn property của source object. _.assignIn giống như việc dùng for...in với object vậy 😄

+4
thg 8 7, 2017 9:12 SA

bài viết hay, cảm ơn bạn nha

0
thg 8 7, 2017 8:34 SA

The refactor at PMS

0
thg 8 7, 2017 8:33 SA

Anh dang test viblo :3

0
thg 8 7, 2017 8:32 SA

Senior SonNT co khac

0
thg 8 7, 2017 7:51 SA

cảm ơn tác giả!

0

cảm ơn tác giả

0
thg 8 7, 2017 2:34 SA

Yii giờ lên Yii 2, hiệu năng rất tốt, code nhanh hơn.

0
thg 8 7, 2017 12:44 SA

Hay quá a ei 😃)

0

Chào bạn, mình có để source code và hướng dẫn tại đây https://github.com/ngodacdu/SSSheetLayout Cám ơn bạn đã góp ý.

0

Good job man!

0
thg 8 4, 2017 10:24 SA

À, hàng tỉ phép so sánh thì nó không nhiều lắm đâu bạn. Nó còn nhiều thao tác ở trong đấy nữa. VD: Load hết dữ liệu từ db vào RAM, INSERT dữ liệu từ RAM vào DB, parse, regex, ... 😄 Nếu chỉ có như demo của bạn thì đúng là chưa đến 1 giây. Của mình là ~400ms. Ở đây mình đang cố gắng hướng đến cách chọn giải pháp. Anyway, cảm ơn cái code F# bá đạo nhé. Lần đầu được thấy code F#.

+1
thg 8 4, 2017 10:17 SA

@kopitop Thanks bạn ! Mình đồng ý với cách nhìn của bạn. Có thể cách nhìn này là một high level của bài viết này chăng ? 😄 Dù sao thì học bất kì ngôn ngữ nào, level nào đều phụ thuộc vào nhiều yếu tố: mục đích, công việc, sở thích, bị ép buộc ... kể cả khả năng của mỗi người. Vì thế sẽ là không có quy chuẩn cho việc học lập trình, bản thân mỗi người phải tự lựa chọn cách phù hợp nhất thôi.

0
thg 8 4, 2017 9:58 SA

Nếu dữ liệu nhỏ thì tại sao không load hết vào ram rồi viết vào DB sau nhỉ. Mình viết thử một chương trình để test, chạy debug thử bằng f#

open System
open System.Diagnostics
open System.Collections.Generic

let rnd = Random()

let genUrl () =
    string(rnd.Next 10_000_000) + ".com"

[<EntryPoint>]
let main argv = 
    let db = [| for _ in 1..1_000_000 -> genUrl() |]
    let newFile = HashSet<string>( [| for _ in 1..10_000_000 -> genUrl() |] )
    
    let sw = Stopwatch.StartNew()

    printfn "Start"

    db
    |> Array.filter newFile.Contains
    |> Array.length
    |> printfn "results has %d records"

    sw.Stop()
    printfn "run all in %d" sw.ElapsedMilliseconds

    Console.ReadLine() |> ignore
    0

Kq chạy thử

Gen data
Gen data in 9096
Start
results has 631767 records
run all in 772

Như vậy thời gian chạy "hàng tỉ các phép so sánh" kia chỉ mất có hơn ~800ms Vì string url gen chỉ có số và đuôi .com nên dù có ~11 triệu url, chương trình cũng chỉ dùng ~500-600MB ram. Url thật thì chắc vẫn chạy hoàn toàn trên ram không vấn đề gì nhỉ 😃

0

top-down theo ví dụ của mình có nghĩa là:

C# là high-level C++ gần với low-level và cuối cùng là học đến low-level

chứ không chỉ đơn thuần là hoc nhiều ngôn ngữ. bởi mình được biết ở VN thường dạy từ low-level đến high-level (C -> C++/Java -> PHP/ Ruby/C# ...), thì ở đây mình đưa ra 1 phương pháp khác. và 1 năm là đủ để bạn tương đối thành thạo về 1 ngôn ngữ nếu đầu tư kỹ lưỡng cả về thời gian và công sức. mình ko có ý phản đối bạn, chỉ là đưa ra ý kiến về 1 view nhìn khác thôi 😃)

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí