Categories
Capuchino Research Ý tưởng

[Deep Learning] Deploy flowers detection

Tình hình là hồi lâu có vọc thử cái vụ transfer learning để train máy nhận diện 5 loại hoa.

Sau đó mình muốn xây dựng thành một web app để mọi người có thể sử dụng được, cuối cùng mình quyết định dùng luôn flash python để xây web app. Đây là kết quả ^^

http://rose.dothanhlong.org:999/flower_detection

https://www.youtube.com/watch?v=DFUNUWa_aEA
]]>
Categories
Capuchino Sói's Tutorials

Pokemon – Hoenn map – Database

Phần này mình sẽ tạo database để lưu trữ thông tin về các địa điểm cũng như thông tin mình khám phá được trên đường khám phá thế giới Pokemon ở khu vực Hoenn

Ở bài trước, mình đã xong phần dịch vụ bản đồ nền, mọi người có thể xem ở đây:

https://dothanhlong.org/hoenn-map-co-so-dia-ly/

Link bản đồ:

http://dev.dothanhlong.org/pokemon_map/

Link dịch vụ:

http://dev.dothanhlong.org/cgi-bin/pokemon_map_hoenn/qgis_mapserv.fcgi?

Xây dựng Database vùng Hoenn

Mình sẽ sử dụng PostgreSQL để quản trị dữ liệu, dùng QGIS để kết nối với dữ liệu địa lý được hỗ trợ bởi plugin PostGIS trong PostgreSQL.

Thông qua QGIS mình có thể add thêm các điểm vị trí trên bản đồ vào trong Database một cách trực tiếp.

Tuy nhiên sau này sẽ cần thiết kế một trang web cho phép nhập thông tin để thuận tiện hơn.

Một số ảnh chụp màn hình.

Connect QGIS với dịch vụ WMS mình tạo ở trên
Tạo database trong PostgreSQL
Thêm vị trí và nhập thông tin cho bản đồ vùng Hoenn thông qua QGIS
Kết quả dữ liệu vùng Littleroot được lưu trong Database

-soiqualang_chentreu-

À, mà mới giao thừa xong đấy^^

Chúc mọi người một năm mới thật HẠNH PHÚC!!!

]]>
Categories
Capuchino GIS Sói's Tutorials WebGIS

Thử cài Geo Notebook

Download ở đây

https://github.com/OpenGeoscience/geonotebook

Kiểm tra xem VPS đã cài python chưa

Tạo môi trường ảo

Xem thêm tạo môi trường ảo trong python ở đây

https://viblo.asia/p/gioi-thieu-virtual-environment-trong-python-l5y8RrQbvob3

virtualenv geonotebook

Lỗi chưa cài Virtual Environments

Cài đặt Virtual Environments

pip install virtualenv

Lỗi chưa cài pip =))

Cài đặt pip

sudo apt-get install python-pip

https://community.vpssim.vn/viewtopic.php?t=67
Chọn Y để cài pip

Khi cài xong bạn có pip và wheel. Giờ dùng pip cài môi trường ảo nào

pip install virtualenv

Tạo Môi trường ảo cho Geo Notebook

Tạo môi trường ảo cho Geo Notebook

Sau khi tạo môi trường ảo thì chũng ta sẽ có một thư mục như sau

Nó chỉ mới bao gồm các packges của python đang được cài sẵn trên máy thôi.

Khởi động môi trường ảo để cài Geo Notebook

source geonotebook/bin/activate

Khởi động môi trường ảo để cài Geo Notebook

Thấy có dòng (geonotebook) phía trước là ok

Download Geo Notebook

git clone https://github.com/OpenGeoscience/geonotebook.git

Lỗi chưa cài git

Cài git

apt-get install git

Do nãy mình tạo môi trường ảo tên geonotebook nên giờ git clone về không được. Mình đành đổi thư mục và kết sẽ sau khi  git clone về như sau

cd geonotebook

virtualenv geonotebook

source geonotebook/bin/activate

pip install -r prerequirements.txt

pip install -r requirements.txt

Fail quá fail rồi, lỗi nhiều quá ><

Tạm dừng ở đây :’)

]]>
Categories
Capuchino

Cài lại VPS =))

Tình hình là mặc dù đang chung sống rất hạnh phúc với Kubuntu. Tuy nhiên mình cài cái DE “hơi bị nặng” so với cấu hình RAM 1Gb, cộng với vì mục đích vọc nên cài thêm một đống phần mềm như:

  • Bộ LAMPP (Aache, PHP, MySQL)
  • Apache Tomcat
  • PostgreSQL
  • GeoServer
  • MapServer
  • VNC Server
  • Teamview
  • Xfce4|lxde|KDE
  • xrdp
  • software-center
  • qgis
  • Vesta

Và hậu quả là :’)

Máy chạy lúc nào cũng trên 70% Ram

Note lại một số hình ảnh của em nó trước khi quyết định cài lại hệ đều hành =))

Màn hình login của XRDP
Giao diện KDE lúc mới vô
Giao diện KDE

Ram ăn muốn xỉu =)) (Cơ mà so với cái máy Window đang sài thì cái này chả là cái gì cả, ngày cả cái trình duyệt Chrome đang dùng để viết cái bài này đây cũng ngốn hết gấp 3 lần số Ram cho con VPS này rồi =)))

À, cơ mà dù gì cũng cài lại thì phá cho đã cái đã =))

Mình sẽ vọc cài QGIS Server, Jupyter notebook, Geo notebook, bla bla bla.. cho banh hết 1Gb RAM luôn, kaka

-soiqualang_chentreu-

P/s: Có những ngày hắn bị khùng thế đấy =))

]]>
Categories
Capuchino Ý tưởng

[Note] Phát triển ứng dụng Yourmap.cf

YourMap Ý tưởng là cho mọi người upload bản đồ của họ lên dưới dạng GeoJson hoặc xyz tiles, tạo các bản đồ và chia sẻ bản đồ. Cũng vì muốn làm chia sẻ cho cộng đồng không có kinh phí để duy trì nên mới tính làm hosting free. Cơ mà cái hosting free của mình nó quản lý kiểu nó sẽ chèn một file js vào bất cứ hành động load file nào trên host của nó. Dẫn đến việc đọc file geojson bị lỗi và không hiển thị được bản đồ. Vì lý do đó mình mới chuyển sang dùng 000webhost, thằng này thì bị giới hạn về dùng lượng và cái giao diện quản lý hơi củ chuối. Nhưng đáp ứng được yêu cầu của mình. Và version 1 của ứng dụng YourMap là đây

http://yourmap.cf/
[caption id="attachment_1665" align="alignnone" width="575"]http://yourmap.cf/ http://yourmap.cf/[/caption] [caption id="attachment_1666" align="alignnone" width="844"]http://yourmap.cf/ http://yourmap.cf/[/caption] Cơ mà sau đó, một chuyện buồn đã xẩy ra :’) Lu bu với công việc quá, mình tạm gác nó sang một bên và…….. MÌNH ĐÃ QUÊN ACCOUNT LOGIN VÀO 000WEBHOST Ôi trời!, mình không thể nhớ là dùng mail nào để đăng ký tài khoảng luôn. NÃO CÁ VÀNG QUÁ @@! Mình thử các mail và có một account login vào được thì lại không thấy cái ứng dụng yourmap.cf này lẫn cái j2teamdata.tk đâu cả @@ Cái http://j2teamdata.tk/ là mình viết một ứng dụng tìm post trên group facebook cũng đặt host cùng account với cái http://yourmap.cf/. Thế là mất quyền kiểm soát một lúc với 2 app này, giờ chỉ còn domain, hic hic
http://yourmap.cf/ http://j2teamdata.tk/
Bây giờ mình mới cài được MapServer trên VPS riêng, mình lại muốn tiếp tục làm cái này nên note mấy việc cần làm tiếp để nhớ mà thực hiện: https://dothanhlong.org/note-cai-mapserver-tren-linux-kubuntu/
  • Xác định cách thức và kỹ thuật để lưu dữ liệu phân tán với yêu cầu tiết kiệm (free) và an toàn
  • Test thử vụ zip, unzip data trong MapServer
  • Tạo services geojson từ các remote data được lưu phân tán để hiển thị được bản đồ trên Web
  • Xây dựng lại cái http://yourmap.cf/, kỳ này để ứng dụng trên VPS của mình, data thì lưu phân tán chỗ khác. Chứ cái VPS dung lượng eo hẹp lắm rồi =))
— Ờ, note nhiêu đó thôi. Làm xong tính tiếp, kaka Cái post này nhảm nhảm thế thôi, haha -soiqualang-chentreu-]]>

Categories
Capuchino

5 điểm mạnh của ngôn ngữ lập trình PHP

5 điểm mạnh của ngôn ngữ lập trình PHP[/caption] PHP – Một cậu bé có nhiều “tranh cãi” trong giới lập trình viên. Vì một vài lý do, danh tiếng của PHP đã bị ảnh hưởng. Sự phát triển ban đầu của PHP đã bị thay đổi. Các thư viện chuẩn trong PHP không còn có sự gắn kết mạnh mẽ nữa. Nhiều thập kỷ trước nó còn vấp phải về vấn đề bảo mật. Và cộng đồng đa dạng của nó tiếp tục tung ra những phiên bản PHP tốt cũng như PHP chưa tốt. Tuy nhiên PHP có những điểm mạnh để nó vẫn sống tốt, sống khỏe trong vô vàn ngôn ngữ lập trình mới được khai sinh. Và sau hàng thập kỷ, PHP vẫn thuộc top các ngôn ngữ phổ biến trên thế giới. Dưới đây là 5 điểm mạnh của PHP.

1. One Data Structure To Rule Them All (Một cấu trúc dữ liệu quy định tất cả)

Đừng ngạc nhiên khi đây là điểm mạnh đầu tiên của PHP. PHP có bộ sưu tập đồ sộ các thư viện , và nó khiến chúng ta ngộ nhận rằng PHP “array” thực sự ra lệnh bảng băm. Nhưng … chúng ta phải thừa nhận điều này: Nếu bạn được yêu cầu tạo một cấu trúc dữ liệu cho một ngôn ngữ lập trình, và được yêu cầu làm cho nó đơn giản để dễ sử dụng, rất linh hoạt và tương đối nhanh về hiệu năng, tôi sẽ trỏ tới các mảng của PHP. Người bình thường có thể nhận thấy những thứ xấu xí của cấu trúc dữ liệu này, và hoàn toàn đồng ý … ngoại trừ rằng mảng trong PHP rất hữu ích.

2. Web-first (Ngôn ngữ dành cho WEB)

W3 Techs đã ra báo cáo tháng 5 năm 2014 của họ và không ngạc nhiên khi họ chỉ ra rằng các trang web viết bằng PHP chiếm nhiều nhất trên thế giới: ” PHP chiếm  82.0% các trang web có ngôn ngữ lập trình phía máy chủ mà chúng tôi biết.” Tại sao PHP lại thành công vang dội? Chắc chắn có nhiều lý do, nhưng một trong số đó là PHP thực tế được xây dựng như một ngôn ngữ web. Không cần phải khởi động web trong mã PHP của bạn. Từ dòng mã đầu tiên, bạn có thể giả định rằng bạn đang chạy trên một máy chủ web.

3. Vast Troves of Documentation (Nhiều tài liệu hướng dẫn chất lượng)

Thông thường, các ngôn ngữ lập trình không phát triển được, hay không đạt được thị phần không phải vì những hạn chế vốn có của chúng, mà bởi vì chúng khó học. Và nó khó học vì không có nhiều tài liệu. PHP chắc chắn không rơi vào trường hợp đó. PHP.net đã trở thành nguồn tài liệu chính thức được hướng tới, cho tới chừng nào PHP còn tồn tại. Nhưng đó không phải là tất cả. Có rất nhiều blog, hướng dẫn, chuỗi video, sách và các lớp đào tạo dành riêng cho PHP. PHP có thể là một ngôn ngữ dành cho người mới bắt đầu, nhưng nó được ghi nhận là một trong những ngôn ngữ đứng đầu. Bạn có thể dạy một ai đó những phần cơ bản của PHP trong 24 giờ.  

4. Surprisingly Good Standard Libraries (Nhiều thư viện hỗ trợ “Tốt”)

“Tốt” là một thuật ngữ đánh giá tương đối. “Tốt” về tính nhất quán. Các thư viện trong PHP chắc chắn không đạt được. “Tốt” về sự hoàn hảo. PHP có thể hoặc không thể nhấn mạnh vào cái này. Nó thiếu một số cái rõ ràng, nhưng hầu hết các vấn đề cơ bản được đảm bảo đầy đủ. Nhưng cũng có “tốt” về mặt thực tiễn. PHP là một ngôn ngữ kịch bản được dành cho máy yếu. Điều đó có nghĩa là hiệu suất làm việc tăng. Một cách để hiệu suất làm việc tăng là tối ưu hóa giai đoạn biên dịch và phiên dịch. PHP đã làm được điều này ít nhất một phần. Tuy nhiên, có một chiến lược bị bỏ qua mà nhiều ngôn ngữ khác không bận tâm, nhưng  PHP xử lý hiệu quả: Cung cấp các hàm workhorse thực hiện các hoạt động tốn kém ở mức thấp mà không cần nhiều chuyển đổi ngữ cảnh. Thao tác mảng và traversal là một ví dụ tuyệt vời. Lặp qua một mảng với các vòng lặp có thể tốn kém tài nguyên. Sử dụng hàm array_walk  có thể thực hiện nhanh hơn nhiều. Ngoài ra còn có array_diff, array_merge, array_reduce, array_combine, array_unique và vv. PHP thật sự nổi trội trong việc cung cấp một loạt các thao tác và chức năng truyền tải cho các hoạt động chuỗi và mảng thường xuyên. Và bằng cách giảm các khối lượng công việc này xuống , mọi thứ diễn ra nhanh hơn.

5. Stability In The Strangest Form (Tính ổn định cao)

Đây là một nhược điểm chính của tất cả các chương trình PHP: Chúng đơn luồng. Và đối với hầu hết các phần, một kịch bản PHP cũng bị ràng buộc vào một quá trình duy nhất. (Bạn có thể làm được điều đó, nhưng phải mất rất nhiều công sức.) Theo cách kỳ lạ nhất, một cái gì đó mà làm cho PHP một ngôn ngữ rất phổ biến cho phát triển web. “PHP không sụp đổ”. Đó là một tuyên bố cấp cao (và sắp xếp không chính xác), vì vậy hãy để tôi làm rõ. Hãy bắt đầu bằng cách giả định rằng chúng tôi đang chạy cấu hình phổ biến nhất của PHP: mod_php trong Apache. Mỗi khi một yêu cầu đến cho một kịch bản PHP, Apache thực thi kịch bản lặp lại lệnh PHP. Ngoài việc sử dụng lại các mã op “biên dịch” trung gian, Apache không tái sử dụng bất cứ thứ gì từ các lời gọi PHP trước đó. (Có một vài ngoại lệ cho điều này, nhưng chúng không phải là các tính năng ngôn ngữ thường được sử dụng.) Vì vậy, mỗi yêu cầu cho một trang PHP liên quan đến việc tạo ra một lời gọi riêng biệt của kịch bản. Không có chủ đề nào. Không có điều kiện chủng tộc cấp mã. Không có đối tượng được chia sẻ. Không có rò rỉ dữ liệu trên các yêu cầu. Và điều gì sẽ xảy ra khi lời gọi tập lệnh cụ thể này bị lỗi nghiêm trọng? Nó thoát. Tại sao người dùng gây ra thông báo lỗi này mà không phải ai khác. Bởi vì tất cả chúng đều chạy như các cá thể riêng biệt. Và khi người dùng đó gửi một yêu cầu tiếp theo, một cá thể mới được bắt đầu. Cuộc sống cứ tiếp diễn. Thực sự khó khăn để có được một kịch bản PHP thất bại để lấy xuống toàn bộ trang web. Và như vậy, ngoài giới hạn của PHP thì PHP có vẻ rất ổn định. Vì vậy, PHP có những điểm mạnh riêng của nó. Hầu hết những điểm mạnh này đều hướng tới tuyên bố rằng PHP là một ngôn ngữ tuyệt vời cho người mới bắt đầu. Điều đó có lẽ đúng. Tôi biết hầu hết các nhà phát triển, học PHP như một ngôn ngữ đầu tiên. Một kết luận được rút ra từ năm điều này là PHP là ngôn ngữ giúp phát triển nhanh hơn các ngôn ngữ khác. Mình dẫn lại từ đây: https://codegym.vn/blog/2018/08/28/5-diem-manh-cua-ngon-ngu-lap-trinh-php/ Còn trên dịch lại từ đây: http://technosophos.com/2014/05/14/5-strengths-of-php.html :v -soiqualang_chentreu-]]>

Categories
Capuchino GIS Tài liệu

Map Algebra là cái khỉ gì?

Map Algebra là cái khỉ gì? Hôm nay, trong lúc tìm hiểu về vấn đề query ảnh raster, mình có đọc được cái cụm từ

Map Algebra

https://dothanhlong.org/note-querying-postgis-raster-data-in-posstgresql/   Đầu tiên là Google dịch nó ra, thì ra thế này: [caption id="attachment_1223" align="alignnone" width="625"]https://dothanhlong.org/map-algebra-la-cai-khi-gi/ https://dothanhlong.org/map-algebra-la-cai-khi-gi/[/caption]   Map Algebra là Bản đồ Đại số. À, vậy nó có liên quan đến đại số, toán học gì ở đây. Thấy thú vị nên nhờ anh Google tìm thử. Sau một hồi vọc từ những trang này:
  • http://desktop.arcgis.com/en/arcmap/latest/extensions/spatial-analyst/map-algebra/what-is-map-algebra.htm
  • https://en.wikipedia.org/wiki/Map_algebra
  • https://www.e-education.psu.edu/geog485/node/116
https://gisgeography.com/map-algebra-global-zonal-focal-local/ Tóm lại thì mình hình dung nó giống như là cách thức chúng ta dùng toán học để tính toán các dữ liệu không gian (đặc biệt là ảnh raster). Vì: Như chúng ta biết, trong tập dữ liệu raster, mỗi ô đại diện cho một giá trị tại một vị trí nhất định. Một ô lưới có thể đại diện cho bất cứ điều gì, chẳng hạn như các giá trị nhiệt độ, lượng mưa, bốc hơi, ẩm,.. Sự kết hợp từng ô của các lớp dữ liệu raster xếp chồng lên nhau. Thực hiện một phép toán đơn giản như phép cộng hoặc phép nhân được áp dụng cho mỗi vị trí ô raster sẽ cho ra một tấm ảnh raster khác mà mỗi vị trí sẽ mang một giá trị khác thể hiện một ý niệm khác. Về bản chất thì chúng ta hình dung việc tính toán các ô dữ liệu trên ảnh raster giống phép giao, phép hợp của ma trận (mảng) các pixcel). Tấm hình dưới là hình mà mình thấy thể hiện rõ nhất Map Algebra là gì. [caption id="attachment_1229" align="aligncenter" width="620"]Map Algebra là cái khỉ gì? - gisgeography.com Map Algebra là cái khỉ gì? – gisgeography.com[/caption] Từ 2 mốc nhiệt độ ở 2 thời điểm khác nhau, khi trừ chúng, chúng ta sẽ có bản đồ sự thay đổi nhiệt độ ở mọi nơi trên Trái Đất. Về bản chất khi trừ là chúng ta trừ giá trị của từng cell ở mỗi vị trí trên ma trận 4/2014 cho vị trí tương ứng của nó trên ma trận 4/2015 [caption id="attachment_1231" align="aligncenter" width="300"]Map Algebra là cái khỉ gì? - gisgeography.com Map Algebra là cái khỉ gì? – gisgeography.com[/caption] Vậy đó, Map Algebra là vậy đó =)) Nói chung là mình hiểu ý nó là vậy, còn kêu nêu ra định nghĩ thì xin kíu :v Tóm lại nếu lỡ có nghe ai nhắc đến Map Algebra thì hiểu là họ làm có liên quan đến tính toán mảng, xử lý ảnh Viễn Thám ^^ -soiqualang_chentreu-]]>

Categories
Capuchino GIS Web

Chúc B và K bảo vệ luận văn tốt nghiệp WebGIS thửa đất thành công!

WebGIS tìm kiếm thửa đất cho 2 địa bàn là Xã Hòa Phú ở Long An phường Long Trường, Quận 9, tp. Hồ Chí Minh. Điều đáng nói là hai bạn này đã rất cố gắng, xuất phát điểm cả hai đều không biết tí gì về lập trình, về xây dựng ứng dụng Web. Ở trường thì do hai bạn học ngành quản lý đất đai nên cũng được tiếp xúc rất hạn chế với các phần mềm GIS, chủ yếu dùng MicroStation. Trước giờ mình đã hướng dẫn rất nhiều khóa từ nhiều trường khác nhau như Bách Khoa, Đại học Tài nguyên và Môi trường, Nông Lâm, lẫn các bạn ngoài Huế, ngoài Hà Nội.. Nhưng đặc điểm chung là các bạn mình nhận hướng dẫn đều đã có sẵn kiến thức nền về Web hoặc GIS. Và… Vậy là đối với 2 bạn này mình đã phải hướng dẫn từ đầu, từ Web vỡ lòng căn bản cho đến WebGIS. Và hai bạn đã làm được. Chúc mừng hai bạn.

Dù kết quả báo cáo có thế nào thì hai bạn đã làm vượt sức bản thân rồi.
Các bạn tiếp thu và làm đầy đủ bài mình giao, từ Web cơ bản với thiết kế form, sau đó tự xây dựng một trang CV cá nhân Online, học Javascript với bài tập xây dựng công cụ máy tính “huyền thoại” mà hầu như khóa nào mình cũng bắt làm. Sau đó đến bài tạo host, lập domain. Đấy, hai bạn này đều có hostingdomain riêng hết rồi nhé.
http://giskhoinguyen.cf/ http://ngocbich.cf/
Dưới đây là CV cá nhân của 2 bạn, một trong những bài tập mình giao. Trong tuyệt phải không nào^^
http://giskhoinguyen.cf/CVonline/

http://ngocbich.cf/cv.html

Bài tập về xây dựng ứng dụng máy tính trên Web bằng Javascript hai bạn làm khá tốt.
http://giskhoinguyen.cf/maytinh/

Đặc biệt trong phần bài tập này, bạn nữ lại làm nhanh và hiệu quả hơn bạn nam mới đáng nể :p
http://ngocbich.cf/calc.html

  Đối  với phần thiết kế giao diện, trong khi mình còn đang hướng dẫn dùng Bootstrap thì bạn nam đã show luôn kết quả bạn tự làm, tự tìm hiểu và thiết kế. Quá ngầu! Thiết kế giao diện với Google Map demo
http://giskhoinguyen.cf/webgisNLU/

Và trong những tuần cuối cùng, ba thầy trò đã cùng nhau chạy đua với thời gian cho kịp viết báo cáo, nộp bảo vệ. Và đây là thành quả của các bạn.

Xây dựng WebGIS tìm kiếm thửa đất với GeoServer, OpenLayers và PostgreSQL+PostGIS

Sau khi xây dựng xong ứng dụng chạy localhost thì mình đã cho mượn Server để deploy sản phẩm lên, có gì báo cáo có demo cho dễ

WebGIS tìm kiếm thửa đất xã Hòa Phú, tỉnh Long An

http://dev.dothanhlong.org/webgis_thuadat_longan/index.php?page=trangchu
[caption id="attachment_1128" align="alignnone" width="1288"]WebGIS tìm kiếm thửa đất xã Hòa Phú, tỉnh Long An WebGIS tìm kiếm thửa đất xã Hòa Phú, tỉnh Long An[/caption] WebGIS tìm kiếm thửa đất xã Hòa Phú, tỉnh Long An WebGIS tìm kiếm thửa đất xã Hòa Phú, tỉnh Long An

WebGIS tìm kiếm thửa đất phường Long Trường, Quận 9, tp. Hồ Chí Minh.

http://dev.dothanhlong.org/webgis_thuadat_longtruong/TRANGCHU.html#
[caption id="attachment_1127" align="alignnone" width="1288"]WebGIS tìm kiếm thửa đất phường Long Trường, Quận 9, tp. Hồ Chí Minh. WebGIS tìm kiếm thửa đất phường Long Trường, Quận 9, tp. Hồ Chí Minh.[/caption] WebGIS tìm kiếm thửa đất phường Long Trường, Quận 9, tp. Hồ Chí Minh. WebGIS tìm kiếm thửa đất phường Long Trường, Quận 9, tp. Hồ Chí Minh.Đấy, tuy nhìn kết quả thì vẫn rất sơ sài. Tuy nhiên đối với khả năng và xuất phát điểm của hai bạn thì mình đánh giá khá cao. Quan trọng là nắm và hiểu vấn đề, có cách giải quyết. Lúc đó chức năng sơ sài chỉ do thời gian không đủ thôi.

Vậy, mục đích mình thức đến 1h30 sáng để viết cái bài này nhằm mục đích gì?

Mục đích là khích lệ các bạn, những người đang đọc bài viết này mà trong đầu đang có ý định từ bỏ vì cảm thấy khó quá. Cảm thấy tự ti vì bản thân không có năng khiếu, không biết tí gì về lĩnh vực bản thân đang chuẩn bị làm.
Mình tin, chỉ cần chúng ta cố gắng, dánh công sức xứng đáng cho nó và có mục tiêu, phương pháp, kết quả rõ ràng thì kết quả không thể nào là thảm hại được. Chí ít nó cũng ở mức… trung bình :v
Thôi, ngủ đây. :v Chúc mọi người ngủ ngon! -soiqualang_chentreu-]]>

Categories
Capuchino

Chuyện thằng dev bị cúp net đêm khuya

[Chuyện thằng dev bị cúp net đêm khuya] Chuyện này mình viết cũng lâu rồi, giờ lại cần làm app di động hybrid, lại đọc lại :v — Hắn bị cúp net. Thế là hắn ngồi nhai lại chuyện chiều qua trong đầu. — Chuyện là trước giờ khi làm liên quan đến local database của app thì mặc nhiên hắn dùng Web SQL. Dễ hiểu, dễ dùng vì theo chuẩn SQL, lại là RDBMS xưa như trái đất. Tuy nhiên hôm nay đọc được cái bài này: https://www.html5rocks.com/…/…/webdatabase/websql-indexeddb/ Và tìm hiểu sâu thêm vài trang nữa thì cũng cùng kết cục như vậy. Đại loại là từ 18/10/2010 Web SQL đã được W3C thông báo sẽ không hỗ trợ nữa (Đến nay vẫn dùng được nhá!) và khuyến khích nên chuyển sang IndexedDB. Thằng IndexedDB thì không phải RDBMS, không chơi SQL mà nó gần giống NoSQL (cấu trúc kiểu JSON), chơi toàn key vs value. Đương nhiên là về lâu dài thì hắn sẽ không thể dùng Web SQL nữa – người ta đã nói vậy rồi mà :’) . Nhưng giờ kẹt deadline. Lại lôm côm không rành cái khỉ IndexedDB (gọi tắt IDB nhá!), giờ mà phải viết lại cái lib cho nó để dùng thì mất cả đống thời gian. Mà giờ sẵn chuyển thì chuyển luôn cái gì cho ngon ngon. Thấy có IDB nhiều người khuyến khích dùng. Firebase thì mạnh đồng bộ với realtime,.. Chả biết nên dùng cái nào. Cuối cùng hắn quyết định cho kịp tiến độ, vẫn dùng Web SQL. Có thời gian sẽ nâng cấp chuyển đổi dần vậy. Thế mà cũng mất cả buổi để lọ mọ tìm hiểu, đọc tài liệu, thử nghiệm.. váng hết cái đầu @@. À, mà nhờ vậy tìm được 1 thằng Db visual hay, chỉ 1 file php mà hỗ trợ từ MySQL, PostgreSQL, MS SQL, Amazone,… cho đến SQLite. Lại có thư viện js để xử SQLite. Thuần js client mà can thiệp được file là cũng quất luôn rồi, khỏi nghĩ cho mệt đầu!. —- Cơ mà sau khi đau đầu hắn thắc mắc: 1. Hình như xu thế người ta giờ khoái NoSQL hơn RDBMS chăng??. Việc W3C ngưng hỗ trợ Web SQL mà khuyến khích IndexedDB là ví dụ. Dữ liệu quan hệ có xưa rồi không? 2. ‎NoSQL (JSON) có phải là xu hướng cho tương lai của Database khi ranh giới giữa front-end và back-end ngày một mờ nhạt. Một ứng dụng có thể chạy online lẫn offline. Đồng bộ mượt mà. BigData luôn gắn với NoSQL. 3. ‎Tội mấy thằng Developer, suốt ngày cứ phải chạy theo công nghệ, :’). Giờ riêng làm web thì không chỉ cần biết frontend, backend, HTML, CSS, JS, PHP, SQL, JSON, XML,.. đơn thuần mà còn phải biết Photoshop, painting,.., phải chạy đua vũ trang vào từng version của mỗi thứ (HTML5, CSS3, PHP5, MySQL4, PostgreSQL 8x, 9x, SQLite 2, 3) , từng lib của các ngôn ngữ xem điểm mạnh yếu từng thằng mà lôi đầu vô sài khi cần như Jquery, Bootstrap, Ol2, Ol3, Leaflet, Ext, GeoExt, rồi các thứ “lai” như nodejs, reactjs, Angularjs,.. hybrid với native, các kỹ thuật như Ajax, truyền gọi Services, đồng bộ, bất đồng bộ client, server. À, nhắc server mới nhớ, lại còn phải biết cấu hình hệ thống, môi trường để triển project, deploy sản phẩm, thiết kế db.., chưa kể nhiều công cụ, tác vụ web không xử đc thì lại phải biết cách viết services cho window/linux, biết python, command line, bat file,.. cấu hình cronjob cho cpanel của share host linux, schedule cho window.. chưa kể lo sợ bị hack nên phải tập hack, nghiên cứu các kỹ thuật Cross site Scripting, SQL injection,... rồi đua theo các thiết bị công nghệ mới từ thời PC, đến laptop, máy tính bảng, điện thoại, các kỹ thuật hiển thị responsive, rồi nghĩ hướng khắc phục hiển thị cho từng loại trình duyệt, từng version của chúng như IE, Edge, Firefox, Chrome, Opera .. chưa tính đến thiết kế sao cho tối ưu tài nguyên, ứng dụng hiển thị nhẹ, mượt, ít hao tài nguyên, băng thông,… Ôi trời! Cứ kể là cứ còn dài lê thê. Bạn nghĩ nhiều ư. Chỉ mới chỉ là một hạt cát giữa bãi biển. Lĩnh vực web chỉ là 1 hạt sỏi. Ứng dụng Web lại chia theo chức năng như GIS, bán hàng, tin tức, blog, mạng xã hội,… mà có sỏi xanh, sỏi xám. Lại tùy theo quy mô mà cấu hình, tích hợp công nghệ, kỹ thuật… Thế mới thấy không có dại nào bằng dại đua theo công nghệ. Mà nó có bất biến đâu. “Mô đen” bây giờ thì vài tháng sau lỗi thời, có cái khác ngon hơn, tốt hơn, dễ dùng hơn thậm chí ngưng hỗ trợ – như thằng Web SQL  Thôi, bị nói nhiều rồi. Ngưng nói nhảm. Đắp chăn ngủ đc rồi. Tool mai tính  -soiqualang_chentreu- —– ]]>

Categories
Capuchino

Một năm có bao nhiêu thứ 6 ngày 13?

Đối chiếu trên lịch, có thể thấy năm 2015 là một năm đặc biệt vì có tới ba ngày thứ Sáu ngày 13, đó là các ngày 13/02, 13/03 và 13/11. Sang năm 2016, ngày “xui xẻo” này sẽ chỉ xuất hiện một lần vào tháng 5; và năm 2017 là hai lần vào tháng 1 và tháng 10. Bài toán đặt ra là: Bằng kiến thức toán học, hãy chứng minh một năm luôn có ít nhất một ngày và nhiều nhất ba ngày thứ Sáu ngày 13? Trả lời: Trước hết cần khẳng định rằng: Nếu ngày mùng 1 của tháng rơi vào Chủ nhật tháng đó chắc chắn có một thứ Sáu ngày 13. Ta đánh số các ngày trong một năm bắt đầu từ 1. Trường hợp năm không nhuận (có 365 ngày), ngày đầu tiên của các tháng trong năm sẽ rơi vào các ngày thứ 1; 32; 60; 91; 121; 152; 182; 213; 244; 274; 305; 335 của năm. Lập bảng số dư của các số này khi chia cho 7:

  1 32 60 91 112 152 182 213 244 274 305 335
Số dư khi chia cho 7 1 4 4 0 2 5 0 3 6 1 4 6
  Trong trường hợp năm nhuận (có 366 ngày), ngày đầu tiên của các tháng trong năm sẽ rơi vào các ngày thứ 1; 32; 61; 92; 122; 153; 183; 214; 245; 275; 306; 336 của năm. Lập bảng số dư của các số này khi chia cho 7:
  1 32 61 92 122 153 183 214 245 275 306 336
Số dư khi chia cho 7 1 4 5 1 3 6 1 4 0 2 5 0
  Quan sát cả hai bảng trên, mỗi số dư khi chia cho 7 đều xuất hiện ít nhất 1 lần và nhiều nhất là 3 lần. Hai ngày có cùng số dư thì có cùng thứ trong tuần. Điều ngày đồng nghĩa với việc sẽ có ít nhất 1 ngày và nhiều nhất 3 ngày đầu tiên trong tháng là ngày chủ nhật. Do đó, một năm có ít nhất 1 ngày và nhiều nhất 3 ngày là thứ Sáu ngày 13. Chúc mừng độc giả có lời giải đúng với lời giải trên! Ban Giáo dục (Email: [email protected]) Nguồn: http://dantri.com.vn/giao-duc-khuyen-hoc/dap-an-bai-toan-thu-vi-mot-nam-co-may-thu-sau-ngay-13-20150926135838661.htm soiqualang_chentreu]]>