thảo luận Code trên Mac với Win cái nào sướng hơn?

>assume rằng cái môi trường deploy nó sẽ như thế nào
ỉa vào mod rồi đi ra.

hoá ra tôi còn đéo được quyền chọn cái droplet rồi bấm deploy trong mấy trang như vultr hay digitalocean. thật là tuyệt vọng.
thế nếu thằng khác là thằng devops nó đếch thích dùng cái droplet đấy thì anh đánh nhau với nó à? giờ này là giờ nào rồi mà còn đòi dùng bare os?

tôi bảo mấy anh cứ đòi môi trường dev phải giống môi trường deploy là thiếu kinh nghiệm có sai đâu =]]
 
nói thế thì chịu rồi. nhu cầu mỗi người mỗi khác.

nhu cầu của thím thì vẫn dùng docker tốt thôi, gõ vài chữ là có ngay 1 môi trường y như linux thì thím cài database gì vào chả được, không nhất thiết phải dùng desktop linux
 
thế nếu thằng khác là thằng devops nó đếch thích dùng cái droplet đấy thì anh đánh nhau với nó à? giờ này là giờ nào rồi mà còn đòi dùng bare os?

tôi bảo mấy anh cứ đòi môi trường dev phải giống môi trường deploy là thiếu kinh nghiệm có sai đâu =]]
thế tôi đéo được quyền làm devops à anh nói buồn cười vãi. đùa chứ tôi làm startup mấy năm việc đéo gì cũng đến tay, tài nguyên chỉ có mấy con vsp ghẻ, gặp mấy bạn xa xỉ có devops riêng, có k8s deploy cả chục máy cảm giác tủi thân vkl.

mà dm các bạn nói thẳng luôn là "tôi chỉ làm crud app, chỉ cần dùng mấy cái LAMP stack hay MERN stack là đủ, thậm chí là chơi microservice/lamdba hết cho nên docker hay k8s với tôi là đủ, hơn nữa tôi tiền nhiều như núi dùng SaaS hết đíu phải lo nghĩ nhiều" thì có phải là hết chuyện luôn không cần gì phải thảo luận nữa.

mà tôi đéo hiểu lắm, các bạn bị mù chữ hay sao mà không thấy là docker nó cũng là linux image? bởi vì các bạn nhu cầu đéo đến thôi chứ thực ra cũng có khác gì các bạn dùng linux để dev đâu? đíu có nhu cầu thì không sao chứ nếu nhu cầu phức tạp (như tôi nói ở trên) thì tôi bảo là nên dùng linux thôi.

mà thôi tôi cũng lười nói tiếp, ở đây tôi thấy các bạn hầu như toàn làm project lớn nhiều tiền, đíu thấy thằng nào làm toy projects bao giờ, nói chuyện chắc là không hợp.

thôi tôi ít kinh nghiệm deploy, trình độ backend lùn thì lặn đây, các bạn cứ tiếp tục chia sẻ kiến thức tiếp đi :)
 
nhu cầu của thím thì vẫn dùng docker tốt thôi, gõ vài chữ là có ngay 1 môi trường y như linux thì thím cài database gì vào chả được, không nhất thiết phải dùng desktop linux
ví dụ như cài postgres 12 trên ubuntu 18.04 bạn muốn cài cũng phải đi search cái ppa ngoài, không phải cứ gõ 1 dòng code là được đâu.

đấy là không nói tự dưng có nhu cầu whitelist ip để test remote, hay làm các việc liên quan, hay cần finetune postgres để xem hiệu quả thế nào, có cái máy để test luôn lại chả tiện hơn phải indirect mấy bước....

ờ mà thôi, tôi trình độ kém mấy cái này có khi là do tôi đéo có kiến thức đéo biết cái gì cả, cho nên các bạn đều đúng hết, tôi chịu thua rồi.
 
ví dụ như cài postgres 12 trên ubuntu 18.04 bạn muốn cài cũng phải đi search cái ppa ngoài, không phải cứ gõ 1 dòng code là được đâu.

đấy là không nói tự dưng có nhu cầu whitelist ip để test remote, hay làm các việc liên quan, hay cần finetune postgres để xem hiệu quả thế nào, có cái máy để test luôn lại chả tiện hơn phải indirect mấy bước....

ờ mà thôi, tôi trình độ kém mấy cái này có khi là do tôi đéo có kiến thức đéo biết cái gì cả, cho nên các bạn đều đúng hết, tôi chịu thua rồi.

ý tôi là muốn thử cài postgres 12 trên ubuntu 18.04 thì gõ vài chữ có ngay 1 cái shell trỏ tới 1 docker container chạy ubuntu 18.04 rồi thì muốn cài gì chả được, nó còn tiện hơn nhiều so với làm trực tiếp trên máy linux, tương tự cho mấy cái nhu cầu kia, bản chất nó quy về tạo ra một môi trường isolation với môi trường làm việc hiện tại thì không phải là tiện hơn sao
mà nói thật có khi thím thiếu kiến thức về ops thật, làm tay như thím thì thời gian đâu cho đủ, chưa kể dùng vps thuần chi phí còn cao hơn k8s nhiều nhé nhất là với bọn dùng nhiều resource
 
À bác Nipin nói vụ docker chạy native linux image đúng mà, trên win hay macos chả phải cũng enable vm lên để docker start trên linux đó thôi :cautious:
 
đùa chứ đọc thread mà cười ỉa. các bạn dùng docker container thì cũng là do thằng khác viết configuration script thôi, cái này thì là convention over configuration, bình thường không làm gì đặc biệt thì đíu sao, đến lúc làm cái gì đặc biệt thì vẫn phải tự thân vận động thôi, tôi thì đéo tin là docker là silver bullet, làm cái gì cũng được, cơ mà to each his own, các bạn toàn pro tôi thiếu kiến thức cho nên chắc là tôi sai :-j

nhân tiện thì đéo liên quan lắm, cơ mà gần đây tôi làm cái trang convert từ trung sang việt kia, có một phần khá khốn nạn là phải crawl nội dung liên tục từ một site đánh giá truyện bên tàu để lấy thông tin truyện hay nhất, trang đó số lượng page cần crawl cũng không nhiều, chỉ khoảng 200k pages thôi, cơ mà nó chống bot rất bựa, 100 hits là nó blacklist luôn vài tiếng (các bạn đừng vội thể hiện trình độ viết bot thoả mãn robots.txt, trang này nó đíu có đâu, block trực tiếp trên nginx luôn), cơ mà dù nó không block thì cũng bản thân nó cũng chậm vãi cứt, một giây serve được tầm 10 request là cùng. Cho nên cuối cùng tôi dùng proxy (lượm free tầm 10k cái, cơ mà chất lượng cũng như l`), ném cái script lên server dùng systemd timer cho nó chạy tầm 6h/lần, rồi khi nào cần thì rsync đống dữ liệu về máy bàn xử lý tiếp. Trường hợp như thế này tôi không hiểu dùng docker hay k8s nó có phép màu gì giúp tôi rút ngắn được thời gian crawl site (funny face).

Hoặc tôi có các use case khác như dùng puppeteer phải cài headless chrome, cũng không rõ docker giải quyết được vấn đề gì cho vụ này.... à mà thôi đéo lừa các bạn nữa, tôi biết là đọc dòng này các bạn sẽ lôi một đống container ra thể hiện, ví dụ cái này: https://github.com/buildkite/docker-puppeteer là kết quả đầu tiên từ google search, tiếp đó bị tôi cười vào mặt vì các bạn đéo biết cái l`n gì, cơ mà thế thì lại rỗi việc quá.

Cho nên để tôi nói luôn là cái headless chrome muốn chạy được trên server thì trên server phải cài xserver (cái này là backend cho graphic interface dùng cho desktop, cơ mà muốn chrome chạy dc dù ở chế độ headless thì vẫn phải cài), aka cái container ví dụ ở trên nó sẽ đíu chạy, vì tôi chả thấy có dòng vẹo nào cài thư viện của xserver ở đây:
Code:
RUN  apt-get update \
     && apt-get install -y wget gnupg ca-certificates \
     && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
     && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
     && apt-get update \
     # We install Chrome to get all the OS level dependencies, but Chrome itself
     # is not actually used as it's packaged in the node puppeteer library.
     # Alternatively, we could could include the entire dep list ourselves
     # (https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md#chrome-headless-doesnt-launch-on-unix)
     # but that seems too easy to get out of date.
     && apt-get install -y google-chrome-stable \
     && rm -rf /var/lib/apt/lists/* \
     && wget --quiet https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /usr/sbin/wait-for-it.sh \
     && chmod +x /usr/sbin/wait-for-it.sh

cái kết quả bên dưới mới có vẻ đúng (có vẻ thôi vì tôi chưa test):
https://github.com/alekzonder/docker-puppeteer
Code:
RUN apt-get update && \
apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \
libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 \
fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst ttf-freefont \
ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget && \
wget https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64.deb && \
dpkg -i dumb-init_*.deb && rm -f dumb-init_*.deb && \
apt-get clean && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

nói các khác là bạn đíu nghịch thử trong máy thì có giời mới biết là phải dùng cái nào mới chuẩn.... tất nhiên có khi đấy là tôi trình độ lùn không có kinh nghiệm về ops, các bạn nhiều kinh nghiệm có khi nhìn một cái biết ngay.

lại nói có rất nhiều thư viện thực ra là gọi process bên ngoài, hoặc là dùng shared library, đều phải tự viết custom dockerfile, mà tới bước này thì chả khác kẹc gì các bạn tự viết shell script để setup, có khác chắc là docker nó isolation + persistent, chứ command + knowledge vẫn tương tự..... tất nhiên đây là cái nhìn thiển cận của tôi do tôi không có hiểu biết về devops, các bạn pro tay gõ brew trong đầu dịch ra apt-get, dùng bash 3.2 (2006) tự tin là nó tương thích tuyệt đối với bash 5.0 (2019) thì tất nhiên là tôi không thể bằng được :s
 
tính thôi nhưng mà tôi thương anh thật ấy, quét cái site tàu khựa kiểu ấy chẳng khác nào ngồi mò password bằng... tay =]]

thế mà anh cũng làm được thì tôi sợ anh vãi, thôi tôi khuyên anh nên nghiên cứu thêm bộ môn terraform với ansible, xong ngộ thêm tí docker sẽ giải quyết được vấn đề... tôi thấy anh thuộc dạng bảo thủ lười tiếp thu cái mới thôi chứ không phải ngu dốt gì, chắc cũng không đến nỗi không hiểu được đám ấy đâu -.-
 
đùa chứ đọc thread mà cười ỉa. các bạn dùng docker container thì cũng là do thằng khác viết configuration script thôi, cái này thì là convention over configuration, bình thường không làm gì đặc biệt thì đíu sao, đến lúc làm cái gì đặc biệt thì vẫn phải tự thân vận động thôi, tôi thì đéo tin là docker là silver bullet, làm cái gì cũng được, cơ mà to each his own, các bạn toàn pro tôi thiếu kiến thức cho nên chắc là tôi sai :-j

nhân tiện thì đéo liên quan lắm, cơ mà gần đây tôi làm cái trang convert từ trung sang việt kia, có một phần khá khốn nạn là phải crawl nội dung liên tục từ một site đánh giá truyện bên tàu để lấy thông tin truyện hay nhất, trang đó số lượng page cần crawl cũng không nhiều, chỉ khoảng 200k pages thôi, cơ mà nó chống bot rất bựa, 100 hits là nó blacklist luôn vài tiếng (các bạn đừng vội thể hiện trình độ viết bot thoả mãn robots.txt, trang này nó đíu có đâu, block trực tiếp trên nginx luôn), cơ mà dù nó không block thì cũng bản thân nó cũng chậm vãi cứt, một giây serve được tầm 10 request là cùng. Cho nên cuối cùng tôi dùng proxy (lượm free tầm 10k cái, cơ mà chất lượng cũng như l`), ném cái script lên server dùng systemd timer cho nó chạy tầm 6h/lần, rồi khi nào cần thì rsync đống dữ liệu về máy bàn xử lý tiếp. Trường hợp như thế này tôi không hiểu dùng docker hay k8s nó có phép màu gì giúp tôi rút ngắn được thời gian crawl site (funny face).

Hoặc tôi có các use case khác như dùng puppeteer phải cài headless chrome, cũng không rõ docker giải quyết được vấn đề gì cho vụ này.... à mà thôi đéo lừa các bạn nữa, tôi biết là đọc dòng này các bạn sẽ lôi một đống container ra thể hiện, ví dụ cái này: https://github.com/buildkite/docker-puppeteer là kết quả đầu tiên từ google search, tiếp đó bị tôi cười vào mặt vì các bạn đéo biết cái l`n gì, cơ mà thế thì lại rỗi việc quá.

Cho nên để tôi nói luôn là cái headless chrome muốn chạy được trên server thì trên server phải cài xserver (cái này là backend cho graphic interface dùng cho desktop, cơ mà muốn chrome chạy dc dù ở chế độ headless thì vẫn phải cài), aka cái container ví dụ ở trên nó sẽ đíu chạy, vì tôi chả thấy có dòng vẹo nào cài thư viện của xserver ở đây:
Code:
RUN  apt-get update \
     && apt-get install -y wget gnupg ca-certificates \
     && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
     && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
     && apt-get update \
     # We install Chrome to get all the OS level dependencies, but Chrome itself
     # is not actually used as it's packaged in the node puppeteer library.
     # Alternatively, we could could include the entire dep list ourselves
     # (https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md#chrome-headless-doesnt-launch-on-unix)
     # but that seems too easy to get out of date.
     && apt-get install -y google-chrome-stable \
     && rm -rf /var/lib/apt/lists/* \
     && wget --quiet https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /usr/sbin/wait-for-it.sh \
     && chmod +x /usr/sbin/wait-for-it.sh

cái kết quả bên dưới mới có vẻ đúng (có vẻ thôi vì tôi chưa test):
https://github.com/alekzonder/docker-puppeteer
Code:
RUN apt-get update && \
apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \
libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 \
fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst ttf-freefont \
ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget && \
wget https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64.deb && \
dpkg -i dumb-init_*.deb && rm -f dumb-init_*.deb && \
apt-get clean && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

nói các khác là bạn đíu nghịch thử trong máy thì có giời mới biết là phải dùng cái nào mới chuẩn.... tất nhiên có khi đấy là tôi trình độ lùn không có kinh nghiệm về ops, các bạn nhiều kinh nghiệm có khi nhìn một cái biết ngay.

lại nói có rất nhiều thư viện thực ra là gọi process bên ngoài, hoặc là dùng shared library, đều phải tự viết custom dockerfile, mà tới bước này thì chả khác kẹc gì các bạn tự viết shell script để setup, có khác chắc là docker nó isolation + persistent, chứ command + knowledge vẫn tương tự..... tất nhiên đây là cái nhìn thiển cận của tôi do tôi không có hiểu biết về devops, các bạn pro tay gõ brew trong đầu dịch ra apt-get, dùng bash 3.2 (2006) tự tin là nó tương thích tuyệt đối với bash 5.0 (2019) thì tất nhiên là tôi không thể bằng được :s
Uả sao không dùng "selenium/standalone-chrome" cho nhanh, chạy headless chrome ngon ơ đó :confused:
 
tôi làm mobile nên ưu tiên mac hơn ( mấy cái môi trường setup bên mac nhanh hơn win ), nhưng mà con mac 16gb ram đắt hơn khá nhiều con hack 16gb ram nên vẫn xài hackintosh :D
 
Dev thì nên xài Mac, vì đầu tiên là nó ổn định, nó thiết kế cho user, giao diện nó đẹp và tạo cảm hứng làm việc, up máy xuống rồi mở lên chắc chắn sẽ không có lỗi gì, không lo tụt pin và ti tỉ thứ khác người ta phải quan tâm nếu sở hữu một cái máy cài Windows hay Linux. Trừ noob ra chẳng ai đi "cài lại Mac" khi gặp lỗi cả. Thế nên xài Mac người ta có thời gian nhiều hơn để làm việc thay vì đi fix lỗi gói này gói kia, vốn là những vấn đề chỉ nên gặp ở server.

Phần mềm trên Mac luôn được trau chuốt hơn từ UI cho đến chức năng, có lẽ việc sở hữu một cái máy đẹp khiến dev cũng trau chuốt phần mềm cho nó hơn, có hai phần mềm khiến mình không bỏ Mac được kỳ thực lại là những thứ rất nhỏ bé nhưng rất được làm rất tốt (lại còn free nữa)
- Spectacle dùng để quản lý cửa sổ
- Karabiner Element để remap lại bàn phím, mình code bằng vim nên remap lại j+k thành esc và ctrl + hjkl thành 4 phím mũi tên, những việc này làm ở OS khác rất khó như Mac thì one click.

Về phần dev + ops: công ty mình 11 dev là 11 cái máy Mac và còn vài cái dự phòng nữa, tất cả đều code rồi deploy với docker và kubenetes, riêng ông devops dùng thêm vargrant và không một ai xài linux cả nhưng ai cũng biết troubleshoot trên server linux như edit config bằng vim, xem netstat, xem top, lsof...
Vì sao không ai xài linux trên PC để làm môi trường dev giống prod nhất có thể: vì như thế sẽ càng dễ gặp lỗi hơn, mình gặp nhiều rồi, câu đầu tiên của dev là: ở máy em nó chạy mà. Okay, ở server éo ai mở port tùm lum, chạy clean database mỗi lần test, éo ai chạy db mỗi một node... nên dev nào assume cái máy dev của mình giống trên server thì thường bị ăn hành nhiều nhất.
Nên dev phải biết linux, phải biết ops, phải aware được cái docker container này khi deploy lên nó sẽ ở đâu trong hệ thống. Không có tiền thì xài Linux dưới PC, có tiền thì mua Mac, nhưng dù xài OS nào cũng cần tách biệt cái máy dev của mình và prod, source sai một file config của dev cho prod thì đủ để nghỉ việc rồi, nên tách bạch rõ ràng dev và prod là điều không phải bàn cãi.
P/S: Mình dùng linux được 5 năm, sau đó chuyển qua Mac được 4 năm rồi và không có ý định quay lại. Trên công ty chạy Macbook pro, ở nhà chạy hackintosh.
 
Last edited:
đọc post của thím @Nipin cũng cười ỉa, ở đây chưa thấy ai phát biểu docker hay cái là silver bullet cả, nhưng mấy cái kể ở trên post #29 docker nó làm được hết, những cái docker nó không làm được cái khác cơ
còn cái ví dự kia thật buồn cười mặc dù tôi viết spec cho workload dạng job chạy trên k8s còn nhanh hơn viết mấy cái script cho systemd nhiều, chưa kể lúc chạy thích scale thì gõ mấy phát hoặc click chuột mấy phát là xong
còn muốn bash docker thì cứ lôi security ra bash thôi, chứ lôi mấy cái trên ra bash thì rõ là chưa dùng nhiều rồi
 
Bản chất docker trên mac cũng chỉ là máy ảo linux thôi, anh cũng đang cố gắng giả lập 1 cái os ít dependency nhất thì khác quái gì cách sài native mà văn vẻ là dev phải control. Chưa gặp nhiều issue cross plaform thì mạnh mồm thôi rồi
mình nghĩ chắc bạn đang hiểu cái docker nó là một cái quản lý máy ảo kiểu virtualbox hay workstation esxi rồi, nên tìm hiểu lại đi đã...

thread này để quay trở lại chủ đề, mình không cãi nhau nữa, các bạn muốn dùng gì thì dùng, khổ tự chịu lấy mình có cần đâu =]]
 
Back
Top