THẢO LUẬN

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
thg 8 4, 2017 6:44 SA

Thanks @kopitop !

  1. Đầu tiên như tựa đề, bài viết đang cố tình nghiêng về việc học lập trình nên có thể nó không còn đúng cho các lĩnh vực khác, chuyên ngành khác.
  2. Có lẽ bạn đang hiểu nhầm ở đây 😃. Cách đây gần 5 năm, mình nghe các thầy đã nói là nhiều trường chuyển sang dạy python rồi. Nhưng cái cốt lõi ở đây đó là ngôn ngữ được chọn không quan trọng và đa số các trường thường không dạy bạn duy nhất một ngôn ngữ từ A->Z. Họ vẫn chỉ dạy bạn về basic như các thành phần trong ngôn ngữ lập trình, rồi nâng cao lên là cấu trúc dữ liệu, giải thuật, trình biên dich...và cả hệ điều hành. Họ dạy bạn C# đầu tiên, ok , bạn vẫn phải học những thứ cơ bản rồi mới dần nâng cao hơn. Việc học theo thứ tự C# -> C++ -> Assembly không phản ánh ý nghĩa của 2 hướng Top-Down hay Bottom-Up, nó chỉ là quá trình học nhiều ngôn ngữ chứ không phải là cách tiếp cận để học một ngôn ngữ. Bài viết mong muốn một developer nên kết hợp cả 2 hướng tiếp cận để họ vừa vững lý thuyết, vừa mạnh thực hành.
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í