[React Native] How to use Podfile usefull

http://facebook.github.io/react-native/docs/integration-with-existing-apps

1 file Podfile cơ bản để có thể run được 1 project React Native tích hợp Cocoapods. 1 thư viện open source khổng lồ để sử dụng libs và tích hợp dễ dàng hơn.

# The target name is most likely the name of your project.
target 'Tên của project' do

  # Your 'node_modules' directory is probably in the root of your project,
  # but if not, adjust the `:path` accordingly
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
    # Add any other subspecs you want to use in your project
  ]
  # Explicitly include Yoga if you are using RN >= 0.42.0
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  # Third party deps podspec link
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

end

[NodeJS] Quản lý nhiều version thật dễ dàng

Nhiều người nghĩ thật khó khăn để chạy nhiều version trên 1 máy thật khó

Nhưng điều đó không phải đều có những cách dễ dàng đó là

Bạn đang ở version node v10..4.1, bạn cần về v.8.9.1

B1: npm i -g n

B2: n 8.9.1

B3: node -v

Nhìn thành quả của mình

Ngoài lề chút:

Khi bạn cài: Bạn gõ n sẽ cho phép bạn chọn những version node sẽ được bạn dùng.

Cảm ơn các bạn đã đọc hết bài viết của mình.

Ứng xử khi xin thôi việc.

Thôi việc – Đó không đơn giản là hành động bạn gửi đơn xin thôi việc, nhận được sự chấp thuận của cấp trên rồi thu dọn hành lý chuẩn bị rời khỏi công ty. Hơn thế nữa, đó là cả một nghệ thuật ứng xử, thôi việc cũng đòi hỏi quá trình chuẩn bị, sự chuyên nghiệp và khéo léo giống như khi bạn tìm việc. Dù ra đi vì bất cứ lý do gì bạn cũng nên để lại ấn tượng tốt với công ty cũ. Sau đây là một số lưu ý khi bạn đang có ý định thôi việc.

 

1. Cân nhắc kĩ trước khi gửi đơn

– Giữ yên lặng: Nhiều người không giữ được bí mật thường sẽ kể cho đồng nghiệp chuyện bạn đang tìm một công việc khác, nhưng bạn đừng bao giờ làm vậy.

Bà Marie McIntyre, tư vấn nghề nghiệp đồng thời là tác giả cuốn sách “Bí mật để chiến thắng tại văn phòng”, nói: “Quản lý của bạn có thể cho rằng việc bạn muốn bỏ đi như một sự phản bội, thế nên tốt nhất hãy giữ bí mật. Ngay khi cấp trên của bạn biết bạn đang tìm việc khác, bạn sẽ bị xem là người làm việc ngắn hạn và đánh mất những cơ hội giá trị, như: thăng tiến, tăng lương, phân công công việc, hay khóa học đào tạo.”

 

– Nắm rõ Luật ở công ty: Khi bạn bắt đầu công việc tại doanh nghiệp chắc hẳn bạn đã nắm được phổ biến luật Lao động của doanh nghiệp đó, bao gồm quy định về nghỉ phép và thôi việc. Thường những công ty yêu cầu nhân viên muốn thôi việc phải báo trước thời gian ít nhất là 1 tháng, tùy theo lý do mà bạn xin nghỉ việc theo quy định của Bộ luật Lao Động hiện hành.

 

Vậy nên, trước khi gửi đơn bạn nên chuẩn bị tất cả những tình huống có thể xảy ra như: Đã giải quyết xong những công việc còn tồn đọng, cần nghĩ đến trường hợp bạn có thể tìm được việc mới ngay khi rời công ty hay không? Cũng không nên mang bất cứ tài sản nào của công ty khi ra đi.

 

– Viết một bức thư xin nghỉ việc: Bạn nên dành một chút thời gian và công sức cho bức thư xin nghỉ việc để chứng tỏ sự tôn trọng của bạn với ban lãnh đạo công ty, đồng thời thể hiện trách nhiệm của bạn với công việc và để công ty có kế hoạch tìm người thay thế vị trí của bạn.

 

Trong thư bạn nên trình bày những kinh nghiệm, những điều tốt đẹp mà bạn có được trong thời gian làm việc cho công ty. Bạn đã trưởng thành hơn trong công việc như thế nào và gửi lời cám ơn tới những người đã giúp đỡ bạn. Có thể trích dẫn trong đó những sự kiện và việc làm để lại ấn tượng trong bạn. Bày tỏ mong ước công ty sẽ ngày càng phát triển hơn trong tương lai.

 

– Có nên giải thích lý do ra đi? Nếu bạn xin nghỉ việc vì một lý do nào đó như : Bức xúc với thái độ của đồng nghiệp hay là thái độ nóng giận nhất thời, bạn có thể chia sẻ với cấp trên để họ có thể nắm bắt tâm tư, nguyện vọng của bạn và giải quyết giúp bạn. Nếu lý do đưa ra quá tế nhị bạn nên tìm một lý do nào đó dễ chịu hơn .

 

– Đề cử một ứng viên cho vị trí thay thế : Để tránh cho việc công ty phải mất thời gian và kinh phí nhằm tìm được một ứng viên thích hợp, bạn có thể ứng cử một nhân viên trong công ty mà bạn thấy phù hợp. Người đó có thể đã từng làm với bạn hoặc làm trợ lý cho công việc mà bạn phụ trách, hãy để mắt đến những đồng nghiệp để lại ấn tượng với bạn trong năm qua để đề cử vào vị trí mà bạn sắp nghỉ. Nếu không phải là đồng nghiệp trong công ty thì hãy nghĩ đến bạn bè và những mối quan hệ bên ngoài có thể giúp bạn có được một người thay thế thích hợp.

 

2. Thân thiện, chuyên nghiệp đến phút chót

Nếu lý do bạn xin thôi việc ở công ty vì bất bình hay cáu giận một chuyện gì đó bạn cũng không nên bộc lộ ra bên ngoài. Luôn giữ thái độ hòa nhã, thân thiện và tôn trọng với cấp trên và đồng nghiệp. Nhận xét của sếp cũ luôn đóng vai trò quan trọng khi bạn đi phỏng vấn xin việc ở công ty mới.

 

Bà McIntyre nhận định: “Người ta vẫn nói rằng bạn có thể đánh giá phẩm chất thực sự của một người qua cách họ thôi việc. Ngay cả khi bạn sung sướng đến phát cuồng khi được thoát khỏi công việc cũ, hãy cẩn thận chuyển giao công việc cho người kế nhiệm và chia tay với mọi người một cách thân thiện, vui vẻ.”

 

Sẽ có rất nhiều rắc rối nếu bạn làm cho những người ở lại giận dữ. Chẳng hạn, bạn sẽ bị “cố tình quên” được thanh toán một số khoản hoặc có thể gặp rắc rối trong chuyện thanh toán những khoản tiền còn lại trước khi ra đi.

 

– Đi phỏng vấn bằng thời gian của bạn. Nếu trong quá trình xin nghỉ việc bạn nhận được lời mời phỏng vấn ở một số công ty khác bạn cũng không nên xin nghỉ quá nhiều, sẽ chẳng hay ho nếu sếp và đồng nghiệp của bạn biết bạn đang xin việc ở công ty khác trong thời gian làm việc ở công ty họ. Nếu có thể hãy cố gắng xếp lên lịch phỏng vấn trước hoặc sau giờ làm việc, hoặc trong giờ ăn trưa. Nếu không thể làm thế, hãy sử dụng thời gian nghỉ phép.

 

3. Hãy nghỉ khi công ty đã tìm được người thay thế

Giúp công ty đào tạo nhân viên mới: Mỗi công việc đều có đặc thù riêng, đòi hỏi kinh nghiệm và trách nhiệm mà không phải ai mới đảm nhận cũng có thế biết hết và không phải vấn đề nào cũng có thể bàn giao được trên giấy tờ hay file lưu trữ, cấp trên của bạn sẽ rất biết ơn và tôn trọng bạn nếu bạn là một người có trách nhiệm với vị trí của mình. Vì vậy hãy nhiệt tình giúp đỡ và bàn giao công việc cho người mới đến.

 

Nếu đến thời hạn bạn xin nghỉ mà công ty chưa tìm được nhân viên thay thế hãy đề nghị với cấp trên cho phép bạn tiếp tục giúp đỡ họ cho đến khi tìm được người vào vị trí của bạn. Bạn có thể tham khảo viết mẫu đơn xin thôi việc tại bài mẫu đơn xin nghĩ việc.

 

4. Cân nhắc thời điểm ra đi và giữ mối quan hệ tốt với công ty cũ

Nếu bạn xin thôi việc vào đúng thời kì công ty đang khó khăn hay gặp trục trặc trong việc kinh doanh đó có thể là sự hiểu lầm bạn “đứng núi này trông núi nọ”, mặc dù nguyên nhân thực sự không phải thế. Vì vậy, nên cân nhắc thật kỹ thời điểm ra đi.

 

Dù đã xin thôi việc ở công ty cũ bạn cũng nên duy trì mối quan hệ tốt với cấp trên và đồng nghiệp. Bạn có thể gửi tin nhắn hay gửi lẵng hoa chúc mừng sinh nhật sếp cũ hay đồng nghiệp cũ, ngày thành lập công ty hay một sự kiện nào đó diễn ra thành công. Sẽ rất thú vị nếu công ty cũ và công ty mới của bạn sát nhập làm một.

Source clone: https://www.careerlink.vn/cam-nang-viec-lam/doi-nghe/ung-xu-khi-xin-thoi-viec

Strings and Patterns trong PHP 7 (P1- Strings)

Strings

  • Strings trong php là 1 chuỗi các byte và không chứa thông tin biên dịch.
  • PHP lưu trữ độ dài và nội dung của chuối và không dựa vào ký tự kết thúc để biểu thị. Điều này giúp chuỗi nhị phân an toàn và các ký tự NULL trong cuối sẽ không gây nhầm lấn.
  • Vệ bộ nhớ, trên hệ thống 32 bit sẽ lên tới 2GB và không giới hạn khi hệ thống là 64 bit.

Declaring Strings  – Khai báo chuỗi

  • Trong php chuỗi sẽ được khai báo kiểu đơn giản hoặc kiểu phức tạp. Sự khác biệt là các chuỗi phức tạp sẽ được đánh giá đối với các ký tự điều khiển và các biến.
  • Chuỗi đơn giản sẽ được khai báo trong “dấu trích dẫn” trong khi các chuỗi phức tạp sẽ được khai báo trong “dấu ngoặc kép”
<?php

$name = 'Bob';

$a = 'Hello $name\n';

$b = "Hello $name\n";

echo $a;       // Hello $name\n

echo $b;       // Hello Bob

?>

Embedding Variables  – Biến nhúng

  • Một trong những ưu điểm chính của chuỗi phức tạp trong php là php sẽ phân tích chúng và tự động đánh giá các tên biến có trong chuỗi.
  • Khi sử dụng các chuỗi đơn giản mà không được đánh giá, bạn cần phải chấm dứt chuỗi và nối biến đó với chuỗi đó.
  • Các tên biến được đánh dấu bằng $. Khi phân tích cú pháp gặp phải một chuỗi, nó sẽ cố gắng tạo ra tên biến bằng cách thêm nhiều ký tự chữ và số để tạo một tên biến hợp lệ.
<?php

$catfood = "Cheeseburgers";

echo 'I can haz $catfood';

echo 'I can haz ' . $catfood;

echo "I can haz $catfood?";

// I can haz $catfood

// I can haz Cheeseburgers?

// I can haz Cheeseburgers?
<?php

$dogfood = ['Pellets'];

$catfood = new stdClass();

$catfood->favorite = "Cheeseburger";

echo "$dogfood[0]";             // Pellets

echo "$catfood->favorite";      // Cheeseburger
<?php

$burger = "Cheeseburger";

echo "I can haz {$burger}";

echo "I can haz ${burger}";

echo "I can haz $burgers";

echo "I can haz {$burger}s";

echo "I can haz { $burger }";

// I can haz Cheeseburger

// I can haz Cheeseburger

// no variable $burgers

// I can haz Cheeseburgers

// I can haz { Cheeseburger }
<?php

$catfood = new stdClass();

$catfood->name = "Cheeseburgers";

$cat = new stdClass();

$cat->canhaz = [$catfood];

echo "$cat->canhaz[0]->name"; // array to string conversion

echo "{$cat->canhaz[0]->name}"; // Cheeseburgers

Control Characters – ký tự điều khiển

  • Khi PHP gặp 1 chuỗi phức tạp, 1 chuỗi được khai báo trong dấu ngoặc kép, nó sẽ đánh giá chuỗi cho các biến và ký tự điều khiển.
  • Các ký tự điều khiển được đánh dấu gạch chéo ngược theo sau là mã. Sử dụng dấu ngoặc chéo ngược theo sau bởi bất kỳ điều gì khác ngoài ký tự điều khiển sẽ dẫn đến dấu gạch chéo ngược được hiển thị.
<?php

echo "Hello \World"; // Hello \World

Danh sách các ký tự điều khiển thường được sử dụng:

Biểu tượng cảm xúc có điểm cuối Unicode.

<?php

echo "\u{1F418}";  //🐘

Heredoc and Nowdoc

  • Heredoc laf một cách thuận tiện để khai báo chuỗi kéo dài nhiều dòng. Thay vì phải thêm nhiều ký tự dòng, bạn có thể khai báo chuỗi theo 1 định dãng dễ dàng hơn.
  • Chuỗi Heredoc được đánh giá cho các ký tự và biến điều khiển, giống như các chuối trích dẫn kép.
  • Chuỗi Heredoc được sử dụng phổ biến để tạo truy vấn SQL, tạo các đoạn mã HTML được định dạng cho email hoặc trang web. Bạn sử dụng chũng để khởi tạo biến.
  • Nowdoc (được giới thiệu trong PHP 5.3.0): Cách này khá giống với Heredoc, nhưng bắt đầu bằng <<<‘Định-Danh’ (có cặp ” – heredoc thì không có). Nowdoc sẽ không phân tích biến đề chèn vào chuỗi.

Heredocs sử dụng cú pháp như sau:

<?php

echo <<<HEREDOC

  This is a heredoc string, note:

  1) the capitalization of the tag

  2) the tag name follows variable naming rules

  3) where the closing tag is

HEREDOC;

Nowdoc sử dụng cú pháp như sau:

<?php

echo <<<'NOWDOC'

This is a nowdoc string, note:

    1) Single quotes around the label

    2) Variables will not be evaluated

    3) Control characters will not be evaluated

NOWDOC;

Referencing Characters in Strings – tham chiếu ký tự trong chuỗi

  • Bạn có thể tham chiếu một vị trí trong một chuỗi bằng cách sử dụng dấu ngoặc vuông hoặc dấu ngoặc nhọn để biểu thị vị trí số nguyên không dựa trên số mà bạn muốn tham chiếu.
<?php

$hello = "world";

echo $hello[0]; // w

echo $hello{1}; // o

Chú ý: hãy nhớ rằng các chuỗi là một chuỗi các byte và bạn đang tham chiếu đến vị trí byte. nếu bộ ký tự của bạn sử dụng nhiều hơn một byte cho mỗi ký tự, bạn sẽ không có kết quả mong đợi.

Trong phiên bản hiện tại của nó, PHP sẽ đưa ra một cảnh báo phạm vi nếu bạn cố gắng ghi vào một vị trí phủ định của một chuỗi, hoặc nếu bạn không chỉ định vị trí số nguyên.

Việc ghi vào một vị trí nằm ngoài phạm vi sẽ dẫn đến chuỗi được đệm với các khoảng trống để chứa phần thiếu.

<?php

$hello = "world";

$hello[10] = "*";

echo $hello; //  world     *

PHP and Multibyte Strings

  • PHP thực hiện chuỗi như là một mảng các byte với một số nguyên cho biết độ dài của bộ đệm (không phải là null kết thúc). PHP không lưu trữ thông tin về cách chuỗi được mã hóa.
  • Một lược đồ mã hóa có độ rộng biến đổi sử dụng các mã có độ dài khác nhau để mã hóa một bộ ký tự. Mã hóa nhiều byte sử dụng số lượng byte khác nhau để mã hóa các ký tự.
  • Mã hóa đa byte cho phép số lượng ký tự lớn hơn được mã hóa và được thể hiện trên máy tính. Một trong các lược đồ mã hóa mà bạn thường gặp phải trong PHP là UTF-8.2 Đây là lược đồ mặc định mà PHP sẽ cố gắng sử dụng để mã hóa nhiều byte.
  • Các hàm chuỗi gốc trong PHP giả định chuỗi là một mảng các byte đơn, vì vậy các hàm như substr (), strpos (), strlen () và strcmp () sẽ không hoạt động trên các chuỗi nhiều byte.
  • Bạn nên sử dụng tương đương multibyte của các hàm đó, ví dụ như mb_substr ().

Unicode

  • Unicode là một nỗ lực để thống nhất tất cả các bộ mã đại diện cho các ký tự. Unicode định nghĩa các codepoint là các khái niệm trừu tượng của một ký tự. Một codepoint Unicode đại diện cho một ký tự và được viết như thế này: U + 0041. Con số đó được gán cho vốn “A”.
  • Không có giới hạn về các ký tự mà Unicode có thể lưu trữ. Có một số nhầm lẫn ban đầu về Unicode là 2 byte, nhưng có liên quan đến lược đồ mã hóa và không phải là Unicode.

Note: Unicode không phải là hệ thống mã hóa. mã hóa là cách thức mà một ký tự Unicode được biểu diễn.

  • UTF-8 lưu trữ tất cả các điểm mã từ 0-127 trong một byte đơn. Điều này bao gồm toàn bộ phạm vi của bảng chữ cái tiếng Anh, số và một số biểu tượng. Codepoints trên 127 được lưu trữ trong nhiều byte (lên đến 6 byte).
  • Bởi vì các codepoint Unicode từ 0-127 khớp với bảng ASCII từ 0-127, văn bản tiếng Anh được mã hóa bằng UTF-8 trông giống hệt như được mã hóa trong ASCII.
  • Chỉ những người đã viết các ký tự có dấu trọng âm mới có thể kết thúc với một tệp được mã hóa khác với ASCII. Có hàng trăm lược đồ mã hóa có thể lưu trữ một số điểm mã Unicode, nhưng không phải tất cả.
  • Nếu bạn sử dụng một trong các mã hóa này và gặp phải một ký tự Unicode không thể được biểu diễn, bạn sẽ thấy dấu chấm hỏi hoặc một ô trống.
  • Ví dụ: nếu lược đồ mã hóa của bạn hướng đến việc lưu trữ các ký tự tiếng Do Thái và bạn cố gắng lưu trữ các ký tự tiếng Nga, bạn sẽ nhận được một loạt dấu hỏi thay vì ký tự tiếng Nga của bạn bởi vì lược đồ mã hóa không hỗ trợ chúng.

Telling Clients How a String Is Encoded

  • Bạn không thể phát hiện chắc chắn về cách chuỗi được mã hóa (trừ khi bạn tự mã hóa chuỗi) và không thể khách hàng nào tiêu thụ đầu ra của bạn. Trừ khi khách hàng biết chuỗi được mã hóa như thế nào, nó sẽ không thể hiển thị nó với sự tự tin. Đó là công việc của bạn với tư cách là một lập trình viên PHP để thông báo cho khách hàng đọc đầu ra HTML của bạn như thế nào nó được mã hóa.
  • Bạn nên chỉ định lược đồ mã hóa ký tự được sử dụng trong tiêu đề HTTP loại nội dung. Điều này cho phép khách hàng biết cách đầu ra của bạn được mã hóa và do đó làm thế nào để hiển thị nó một cách chính xác.
  • Đặt loại nội dung trong HTML dưới dạng thẻ meta hơi kém thỏa đáng bởi vì trừ khi khách hàng biết loại mã hóa, nó sẽ không thể đọc HTML để xác định mã hóa. Bạn có thể tránh xa bằng cách làm theo cách này, nhưng tốt hơn là không nên làm như vậy.

Changing Between Encoding Schemes  – Thay đổi giữa các lược đồ mã hóa

  • Phần mở rộng mbstring cung cấp một số hàm có thể được sử dụng để giúp phát hiện và chuyển đổi giữa các lược đồ mã hóa.
  • Hàm mb_detect_encoding () sẽ đi qua một danh sách các mã hóa có thể và cố gắng xác định chuỗi được mã hóa như thế nào.
  • Bạn có thể thay đổi thứ tự phát hiện bằng hàm mb_detect_order () hoặc bằng cách cung cấp danh sách mã hóa dưới dạng CSV hoặc mảng.
  • Bạn có thể sử dụng mb_convert_encoding () để chuyển đổi một chuỗi giữa các định dạng mã hóa.

Matching Strings

  • Việc so sánh các chuỗi trong PHP phải được thực hiện với mức độ chăm sóc thích hợp khi bạn đang cố gắng kết hợp các loại biến khác nhau. Trong chương 1, phần “Casting Variables”, chúng tôi đã xem xét các trang hướng dẫn liên quan đến truyền giá trị.
  • Hãy chắc chắn rằng bạn đã quen thuộc với cách PHP truyền giá trị các loại biến khác nhau thành chuỗi.
  • Sử dụng toán tử so sánh như> và <có thể không phải lúc nào cũng hoạt động như mong đợi. Người ta thường kỳ vọng rằng PHP sẽ sử dụng thứ tự bảng chữ cái để đánh giá các chuỗi chống lại các toán tử này.
  • Thay vì sử dụng sắp xếp theo thứ tự bảng chữ cái, PHP sử dụng giá trị ASCII của ký tự để so sánh. Chữ thường có giá trị ASCII cao hơn số vốn, vì vậy bạn có thể có trường hợp chữ thường được đặt sau chữ hoa, như sau:
<?php

$a = "PHP";

$b = "developer";

if ($a > $b) {

    echo "$a > $b";

} else {

    echo "$a < $b";

}

// developer comes before PHP in the alphabet

// but this script outputs

// PHP < developer
<?php

$a = "12 o'clock";

$b = 12.00;

if ($a == $b) {

    echo "The mouse ran up the clock";

}
  • strcmp () là một hàm để thực hiện so sánh chuỗi nhị phân an toàn. Nó lấy hai chuỗi làm đối số và trả về <0 nếu str1 nhỏ hơn str2; > 0 nếu str1 lớn hơn str2 và 0 nếu chúng bằng nhau.

Tip:  toán tử có thể được sử dụng trên bất kỳ loại biến nào, nhưng strcmp chỉ dành riêng cho chuỗi.

  • Ngoài ra còn có một phiên bản không phân biệt chữ hoa chữ thường có tên strcasecmp () đầu tiên chuyển đổi chuỗi thành chữ thường và sau đó so sánh chúng.

Ví dụ này cho thấy sự khác biệt:

<?php

$a = "PHP";

$b = "developer";

$comparison = strcmp($a, $b);

echo $comparison . PHP_EOL; // -20

$caseInsensitive = strcasecmp($a, $b);

echo $caseInsensitive . PHP_EOL; // 12
  • Các hàm strncmp () và strcasencmp () có thể được sử dụng để chỉ so sánh các ký tự “n” đầu tiên của hai chuỗi.
  • PHP có một hàm rất mạnh được gọi là same_text () để tính toán sự giống nhau giữa hai chuỗi. Đây có thể là một thủ tục rất tốn kém về mặt tính toán cho các phần văn bản dài, vì vậy hãy cẩn thận trước khi bạn sử dụng nó. Cũng lưu ý thứ tự
  • bạn vượt qua các đối số là quan trọng, vì vậy văn bản tương tự ($ a, $ b)! = same_ ($ b, $ a).
  • Một hàm khác, levenshtein (), có thể được sử dụng để tính khoảng cách Levenshtein giữa hai chuỗi. Khoảng cách Levenshtein được định nghĩa là số ký tự tối thiểu bạn phải thay thế, chèn hoặc xóa để biến str1 thành str2.
  • Để so sánh các chất nền, bạn có thể sử dụng hàm substr_compare () nhị phân an toàn.
  • PHP có hai chức năng cho phép bạn làm việc với cách một chuỗi âm thanh. Hàm soundex () tính toán một khóa dựa trên cách chuỗi âm thanh. Các chuỗi có âm giống nhau sẽ có cùng khóa âm thanh.
  • Hàm metaphone () tương tự tạo ra cùng khóa cho các chuỗi âm tương tự. Nó chính xác hơn soundex (), vì nó nhận thức được các quy tắc cơ bản của phát âm tiếng Anh. Tất nhiên, điều này có thể sẽ giúp ích rất ít cho các ngôn ngữ khác!
  • Có hai cách khác để so sánh các chuỗi, nhưng chúng được thảo luận trong Chương 6 về bảo mật. Hàm hash_equals () là một cách an toàn theo thời gian để so sánh các chuỗi và password_verify () là một cách an toàn để kiểm tra xem mật khẩu có khớp với một băm hay không. Bạn sẽ tìm hiểu về chúng chi tiết hơn sau này, nhưng hãy nhớ chúng như là các hàm chuỗi.

Extracting Strings – Trích xuất chuỗi

  • Một vị trí riêng lẻ trong một chuỗi có thể được tham chiếu với cùng một cú pháp như một phần tử mảng. Tất cả các vị trí trong chuỗi luôn luôn là zero-based — ký tự đầu tiên trong chuỗi là vị trí 0.
<?php

$string = 'abcdef';

echo $string[0];    // a
  • Bạn có thể sử dụng hàm substr () để trả về một phần hoặc một phần của một chuỗi.

Hướng dẫn sử dụng cho substr () hiển thị cú pháp cho lệnh như sau:

<?php

echo substr("abcdef", 2) . PHP_EOL;    // cdef

echo substr("abcdef", -2) . PHP_EOL;   // ef

echo substr("abcdef", 0, 2) . PHP_EOL;    // ab

echo substr("abcdef", 0, -2) . PHP_EOL;   // abcd

echo substr('abcdef', 1);     // bcdef

echo substr('abcdef', 1, 3);  // bcd

echo substr('abcdef', 0, 4);  // abcd

echo substr('abcdef', 0, 8);  // abcdef

echo substr('abcdef', -1, 1); // f

Tip: Xem thêm https://secure.php.net/manual/en/function.substr.php

Searching Strings – Tìm kiếm trong chuỗi

Useful Tips:

  • So sánh thứ tự các tham số được sử dụng cho strpos () và array_search ():

<?php

$arr = ['a', 'b', 'c', 'd', 'e', 'f' ];

$str = 'abcdef';

echo strpos($str, 'c') . PHP_EOL;

echo array_search('c', $arr) . PHP_EOL;
  • Mẹo hữu ích tiếp theo là ghi nhớ sự khác biệt giữa 0 và sai. Mặc dù Boolean false đánh giá là 0, nếu bạn chuyển nó thành số nguyên, thì số 0 không giống với sai Boolean.

Dưới đây là ví dụ mà dường như chúng tôi không tìm thấy chữ “a” trong chuỗi “abcdef”:

<?php

$string = 'abcdef';

if (strpos($string, 'a') == false) {
  echo "False negative!" . PHP_EOL;

}

=> Hãy nhớ rằng các chuỗi không dựa trên, vì vậy vị trí đầu tiên là vị trí 0. strpos () trả về số nguyên 0 vì nó tìm thấy “a” ở vị trí đầu tiên. Chúng tôi đang sử dụng toán tử equ = = để kiểm tra kết quả strpos () và vì vậy chúng tôi đang báo cáo sai rằng chữ “a” không xuất hiện trong chuỗi này.

Tip: để xử lý trường hợp chuỗi con không thực sự được tìm thấy, bạn nên sử dụng toán tử Identity ===.

Quick Overview of Search Functions  – Tổng quan nhanh về chức năng tìm kiếm

Replacing Strings

PHP có ba hàm để thay thế chuỗi.

  • str_replace () và phiên bản không phân biệt dạng chữ str_ireplace () có thể được sử dụng cho thay thế cơ bản.
<?php

echo str_replace('foo', 'bar', 'Delicious food'); // Delicious bard
  • Bạn có thể sử dụng hàm substr_replace () để thay thế các chất nền. substr_ replace () thay thế một bản sao của chuỗi được giới hạn bởi tham số bắt đầu và (tùy chọn) với chuỗi được đưa ra thay thế.
  • strtr () là một hàm khác để thay thế các phần tử và ký tự. Nếu chỉ có hai tham số được cung cấp, tham số thứ hai phải là một mảng các cặp thay thế. Nếu không có ba tham số, như trong ví dụ này từ Hướng dẫn sử dụng PHP, nó được sử dụng để chuyển đổi các ký tự có dấu trọng âm sang các ký tự định dạng tiếng Anh:
<?php

$address = "09479 Huopainenkylä, Pöhjois-Karjala";

$address = strtr($address, "äåö", "aao");

echo $address; // 09479 Huopainenkyloa, Pohjois-Karjala

=> Cách linh hoạt và mạnh mẽ nhất để thay thế chuỗi là sử dụng hàm preg_match (), cho phép bạn sử dụng các biểu thức chính quy để tìm các lát của chuỗi để thay thế. Bạn sẽ tìm hiểu thêm về các cụm từ thông dụng trong phần String Patterns: Regular Expressions ” ở phần sau của chương này.

Formatting Strings

  • Hàm printf () được sử dụng để xuất ra một chuỗi được định dạng. Bạn nên đọc kỹ Hướng dẫn sử dụng PHP7 và đảm bảo rằng bạn đã thực hành sử dụng nó. Cách sử dụng chung là chỉ định một chuỗi định dạng và các giá trị cần được đặt vào nó. (https://php.net/manual/en/function.printf.php )
<?php

$minutes = 60;

$timeUnit = "an hour";

printf("There are %u minutes in %s.", $minutes, $timeUnit);

Danh sách định dạng tham số:

  • Các định dạng PHP là nhận thức cục bộ, điều này ảnh hưởng đến cách chúng đại diện cho các số và ngày tháng.
<?php

// Set locale to Dutch

setlocale(LC_ALL, 'nl_NL');

// Output: vrijdag 22 december 1978

echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));

Formatting Numbers

  • Hàm number_format () là một cách đơn giản để định dạng các số. number_format () không phải là địa phương nhận thức và do đó sẽ không tự động chọn ký tự phân cách cho bạn.
  • Theo mặc định, dấu tách hàng nghìn là dấu phẩy và không có dấu thập phân nào được hiển thị.
  • Hàm này lấy các tham số cho số được định dạng, bao nhiêu vị trí thập phân để hiển thị, ký tự cho dấu thập phân và ký tự dấu tách hàng nghìn.
<?php

$number = 1234.5678;

// 1,235

echo number_format($number) . PHP_EOL;

// 1,234.568

echo number_format($number, 3) . PHP_EOL;

// 1.234,57

echo number_format($number, 2, ',', '.') . PHP_EOL;
  • Để định dạng tiền tệ, bạn có thể sử dụng hàm money_format (). Nó sẽ tự động nhận thiết lập mà máy chủ của bạn được cấu hình.
<?php

// Locale is British English

setlocale(LC_MONETARY, 'en_GB');

echo money_format('%.2n', "5000000.123"); //£5,000,000.12

// Locale is Denmark

setlocale(LC_MONETARY, 'da_DK');

echo money_format('%.2n', "5000000.123"); //kr 5.000.000,12

 

Đọc tiếp “Strings and Patterns trong PHP 7 (P1- Strings)”

Khi nào và tại sao bạn nên sử dụng Arrow Functions trong ES6. Và không nên dùng khi nào?

Arrow function chắc chắn là một trong những tính năng phổ biến hơn của ES6. Đã được giới thiệu là cách để viết function một cách gắn gọn.

Ex: 1 function được viết trên ES5

function timesTwo(params) {

  return params * 2

}

timesTwo(4);  // 8

Và đây là một arrow function:

var hello = params => params*2

hello(4); // 8

Bạn có thể thấy, function được viết gắn gọn hơn rất nhiều. Chúng ta đã bỏ qua được các dấu ngoặc nhọn.  Điều quan trọng bạn phải hiểu là chức năng của arrow function hoạt động khác so với function ES5 thông thường.

Variations

Một điều bạn sẽ nhanh chóng nhận thấy là sự đa dạng của các cú pháp có sẵn trong các arrow  functions. Hãy xem qua một số thông tin phổ biến sau:

1. No parameters

Nếu không có tham số, bạn có thể đặt dấu ngoặc đơn trống trước =>.

() => 25

Trong thực tế, bạn thậm chí không cần các dấu ngoặc đơn!

_ => 25

2. Single parameter

Với các hàm này, dấu ngoặc đơn là tùy chọn:

x=> 25 || (x) => 25

3. Multiple parameters

Các dấu ngoặc đơn được yêu cầu cho các hàm này:

(x,y) => 25

4. Statements (as opposed to expressions)

Trong dạng cơ bản nhất của nó, một biểu thức hàm tạo ra một giá trị, trong khi một câu lệnh hàm thực hiện một hành động.

Với arrow function, điều quan trọng cần nhớ là các câu lệnh cần có các dấu ngoặc nhọn. Khi có các dấu ngoặc nhọn, bạn luôn cần phải viết trả lại.

Example:

var feedTheCat = (cat) => {

  if (cat === 'hungry') {

    return 'Feed the cat';

  } else {

    return 'Do not feed the cat';

  }

}

5. “Block body”

Nếu hàm của bạn nằm trong một khối, bạn cũng phải sử dụng câu lệnh return rõ ràng:

var addValues = (x, y) => {

  return x + y

}

6. Object literals

Nếu bạn đang trả về một đối tượng theo nghĩa đen, nó cần phải được bọc trong dấu ngoặc đơn. Điều này buộc trình thông dịch đánh giá nội dung bên trong dấu ngoặc đơn và đối tượng được trả về.

x =>({ y: x })

Syntactically anonymous

Điều quan trọng cần lưu ý là các arrow functions là vô danh, có nghĩa là chúng không được đặt tên.

Ẩn danh này tạo ra một số vấn đề:

1. Harder to debug

Khi bạn gặp lỗi, bạn sẽ không thể theo dõi tên của hàm hoặc số dòng chính xác nơi nó xảy ra.

2. No self-referencing

Nếu hàm của bạn cần có tham chiếu tự tại bất kỳ thời điểm nào (ví dụ: đệ quy, trình xử lý sự kiện cần hủy liên kết), hàm sẽ không hoạt động.

Main benefit: No binding of ‘this’

rong các biểu thức hàm cổ điển, từ khóa “this” được ràng buộc với các giá trị khác nhau dựa trên ngữ cảnh mà nó được gọi. Tuy nhiên, với các arrow functions, điều này bị ràng buộc từ từ. Khi được sử dụng “this” sẽ đại diện cho đoạn code chứa arrow function.

Ví dụ, hãy xem hàm setTimeout bên dưới:

// ES5

var obj = {

  id: 42,

  counter: function counter() {

    setTimeout(function() {

      console.log(this.id);

    }.bind(this), 1000);

  }

};

Trong ví dụ ES5, .bind (this) được yêu cầu để giúp chuyển ngữ cảnh này vào hàm. Nếu không, theo mặc định, điều này sẽ không được xác định.

// ES6

var obj = {

  id: 42,

  counter: function counter() {

    setTimeout(() => {

      console.log(this.id);

    }, 1000);

  }

};

Các hàm mũi tên ES6 không thể bị ràng buộc với từ khóa “this”, do đó, nó sẽ lexically đi lên một phạm vi, và sử dụng giá trị của điều này trong phạm vi mà nó đã được xác định.

 

Khi nào bạn không nên sử dụng Arrow functions.

Dưới đây là một số trường hợp bạn không nên sử dụng arrow functions

1. Object methods

Khi bạn gọi cat.jumps, số lượng cuộc sống không giảm. Đó là bởi vì điều này không bị ràng buộc với bất cứ điều gì, và sẽ kế thừa giá trị này từ phạm vi cha mẹ của nó.

var cat = {

  lives: 9,

  jumps: () => {

    this.lives--;

  }

}

2. Callback functions with dynamic context

var button = document.getElementById('press');

button.addEventListener('click', () => {

  this.classList.toggle('on');

});

Nếu chúng ta nhấn vào nút, chúng ta sẽ nhận được một TypeError. Đó là bởi vì điều này không bị ràng buộc với nút, nhưng thay vào đó bị ràng buộc với phạm vi cha mẹ của nó.

3. When it makes your code less readable (Khi arrow function làm cho code của bạn khó đọc)

Với các chức năng thông thường, mọi người nhìn vào sẽ biết những gì sẽ diễn ra. Với các arrow function, có thể khó hiểu khi nhìn vào.

 

Xin hết!

[Cheat Sheet] Markdown thật là trò trẻ con mà 😍

Loại Hoặc … Kết quả
*Italic* _Italic_ Italic
**Bold** __Bold__ Bold
# Heading 1 Heading 1
=========

Heading 1

## Heading 2 Heading 2
———

Heading 2

[Link](http://a.com) [Link][1]

[1]: http://b.org
Link
![Image](http://url/a.png) ![Image][1]

[1]: http://url/b.jpg
Markdown
> Blockquote

Blockquote

* List
* List
* List
– List
– List
– List
  • List
  • List
  • List
1. One
2. Two
3. Three
1) One
2) Two
3) Three
  1. One
  2. Two
  3. Three
Horizontal Rule

Horizontal Rule

***

Horizontal Rule


`Inline code` with backticks Inline code with backticks
“`
# code block
print ‘3 backticks or’
print ‘indent 4 spaces’
“`
····# code block
····print ‘3 backticks or’
····print ‘indent 4 spaces’
# code block
print ‘3 backticks or’
print ‘indent 4 spaces’
WP Facebook Auto Publish Powered By : XYZScripts.com