Tip Code
78 subscribers
13 photos
2 videos
4 links
تیپ هایی (Tip) از زبان های برنامه نویسی، فریمورک‌ها، پلتفرم‌ها، IDEs و ...

اکانت ما روی توئیتر:
Twitter.com/TipCode_ir
Download Telegram
خواندن مقادیر آرایه ها و حذف آنها در یک زمان بدون استفاده از حلقه for در #javascript

let colors = ['first', 'second', 'third'];

while ( ( [item,...colors ] = colors ).length ) {
console.log(item);
}


#spread_syntax #سطح_متوسط
اعتبار سنجی مقادیر داخل متغییرها در #PHP
استفاده از تابع filter_var

مثال: چک میکند که داده ورودی از نوع عددی است یا خیر:
if (filter_var(10, FILTER_VALIDATE_BOOLEAN)) 
{ ... }

مثال: چک میکند که داده ورودی یک آدرس ایمیل معتبر میباشد یا خیر:
if (filter_var('info@gmail.com', FILTER_VALIDATE_EMAIL)) 
{ ... }
#بک‌اند #سطح_مبتدی
در #react برای استفاده از شرط ها در #JSX می تونید از do expression که به تازگی در ECMAScript اضافه شده استفاده کنید. این ویژگی هنوز در stage-1 هست و در حال حاضر فقط در صورتی که از یک transpiler (مثل babel) استفاده می کنید قابل اجراست.

const aComponent = () => {
return (
<div>
{
do => {
if (condition && condition2 && !consition3) {
if (consition4) {
<p>foo</p>
} else if (condition5) {
<p>bar</p>
} else {
<p>baz</p>
}
} else {
<p>qux</p>
}
}
}
</div>
)
};

#سطح_پیشرفته
‏تفاوت while و do while به زبان خیلی ساده
#طنز
در #Javascript از این راه برای کوتاه کردن کد بدون نوشتن صفرهای متوالی در اعدا استفاده کنید
for (let i = 0; i < 1e7; i++) { ... }

تمام این موارد true برمی گردونه
1e0 === 1;
1e7 === 10000000;
2e1 === 20;
2e2 === 200;
#سطح_متوسط
کپی گرفتن از یک جدول در #SQL
توسط دستور زیر میتوانید، ساختار یک جدول را کپی کرده و یک جدول جدید مانند جدول قبل خواهید داشت.

-- Copy structure and data
SELECT * INTO NewTbl FROM Tbl1

-- Copy structure only
SELECT * INTO Tbl1_Copy FROM Tbl1 WHERE 1=0

-- Copy structure only
SELECT TOP(0) * INTO Tbl1_Copy FROM Tbl1

#بانک_اطلاعاتی #mssql #سطح_مبتدی
در #javascript از نحوه دستوری Destructuring assignment برای ذخیره مقادیر ایندکس های موردنظر از یک آرایه در چند متغیر طی یک دستور استفاده کنید:


let colors =
['red', 'green', 'blue', 'black', 'purple'];

const [ , , thirdColor, , fifthColor] = colors;

console.log(thirdColor); // blue
console.log(fifthColor); // purple



#destructuring_assignment #سطح_متوسط
👍1
تبدیل آرایه به CSV در #PHP

function array2csv($input, $delimiter = ',', $enclosure = '"')
{
$fp = fopen('php://temp', 'r+');
fputcsv($fp, $input, $delimiter, $enclosure);
rewind($fp);
$data = fread($fp, 1048576);
fclose($fp);
return rtrim($data, "\n");
}

#بک‌اند #آرایه #CSV #سطح_پیشرفته
در #Javascript برای پیداکردن بیشترین مقدار در یک آرایه لازم نیست حتما از حلقه استفاده کنید. فقط آرایه رو با استفاده از spread operator ها به تابع ()Math.max پاس بدید:


let values = [1, 999, 2];
Math.max(...values);

می تونید اعداد دیگه رو هم برای مقایسه با مقادیر آرایه اضافه کنید

Math.max(...values, 1000, 998);


یکی از کاربردهای این ترفند می تونه تعیین مقدار پیش فرض برای متغیرها باشه. در این مثال اگر عدد مثبت پیدا نشد مقدار پیش فرض صفر داده میشه

let negatives = [-123, -456, -789];
const aValue = Math.max(...negatives, 0);


#سطح_متوسط #spread_syntax
👍1
در #CSS با این روش میتوانید هر جایی از صفحه را کاری کنید که با ماوس قابل انتخاب کردن نباشد:

.no-select {
-moz-user-select: -moz-none;
-moz-user-select: none;
-o-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
#فرانت‌اند #سطح_متوسط
👍1
تابع ()setState در #react بصورت ناهمگام (asynchronous) اجرا می شود و باعث مشکلاتی می شود بعنوان مثال:

this.setState({count: this.state.count + 1});
this.setState({count: this.state.count + 1});
this.setState({count: this.state.count + 1});
// this.state.count === 1, not 3


برای حل این مشکل یک تابع به ()setState پاس بدید:

this.setState(prevState => ({ count: prevState.count + 1 }));

#سطح_متوسط
تبدیل اعداد فارسی به انگلیسی در #javascript

const digits = '۰۱۲۳۴۵۶۷۸۹';
digits.replace(/[\u0660-\u0669\u06f0-\u06f9]/g,
function(c) {
return c.charCodeAt(0) & 0xf;
});

#کار_با_اعداد #سطح_متوسط
1
Tip Code pinned «با سلام توضیحاتی مختصر در مورد کانال محتوای کانال @TipOverflow در مورد تیپ هایی (Tip) هستند که در طول عمر کار فنی (برنامه نویسی) یاد می گیرید و استفاده می کنید و بعضا باعث بالابردن خوانایی برنامه، کوتاه کردن کد، بهبود Performance و موضوعاتی از این قبیل…»
روشی برای پاس ندادن پارامترهای میانی در #javascript

function method (p1, p2, p3, p4) {
console.log(
`${p1} ${p2} ${p3} ${p4}`);
}

method(...['first', , , 'last']);

#spread_syntax #سطح_متوسطه
توسط این تابع در #PHP میتوان چک کرد که آدرس #ایمیل وارد شده صحیح است یا خیر؟

function isValidEmail($email)
{
// Check email format
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}

list($user, $host) = explode("@", $email);
//check, if host is accessible
if (!checkdnsrr($host, "MX") && !checkdnsrr($host, "A")) {
return false;
}
return true;
}

نکته: این تابع DNS سایت ارائه دهنده ایمیل را چک میکند تا آدرس ایمیل fake نباشد.

#بک‌اند #سطح_پیشرفته
هر دوی این توابع در #javascript اعداد انگلیسی را به فارسی تبدیل می کنند البته با این تفاوت که تابع دوم کلیه حروف بجز اعداد را از رشته وردی حذف می کند:

تابع اول:

function toFarsiNumber(n) {
const farsiDigits =
['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];

return n
.toString()
.replace(/\d/g, x => farsiDigits[x]);
}

تابع دوم:
function toFarsiNumber(n) {
const farsiDigits =
['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];

return n
.toString()
.split('')
.map(x => farsiDigits[x])
.join('');
}

خروجی تابع اول:
toFarsiNumber('Two or 2 ?'); // Two or ۲ ?

خروجی تابع دوم:
toFarsiNumber('Two or 2 ?'); // ۲

#سطح_متوسط
چرا در #javascript باید یجای اپراتورهای '==' و '===' از ()Object.is استفاده کنیم؟

به خروجی این شرط ها نگاه کنید:
0 == ' ' //true
null == undefined //true
[1] == true //true

شاید برای حل این مشکل از اپراتور '===' بجای '==' استفاده می کنید اما این راه حل همه جا جواب نمیده، بعنوان مثال:
NaN === NaN //false

در حالیکه خروجی ()Object.is برای تمام موارد مقدار قابل قبول تری هست:

Object.is(0 , ' '); //false
Object.is(null, undefined); //false
Object.is([1], true); //false
Object.is(NaN, NaN); //true

#سطح_متوسط
👍1
استفاده از اپراتور + قبل از مقادیر در #javascript معادل استفاده ار تابع ()Number است:

0 === Number(null); // true

خروجی مقادیر پایین معادل خروجی تابع ()Number بجای اپراتور + است:

console.log(+'123'); // 123
console.log(+null); // 0
console.log(+true); // 1
console.log(+false); // 0
console.log(+[]); // 0
console.log(+[123]); // 123
console.log(+new Date); // 1527790306576

#سطح_مبتدی
👍1
یک مثال از کاربرد تیپ قبلی: زمانی که نیاز به مقایسه مقادیر با ورودی های یک وب فرم مثل المنت های input، select و ... هستیم.

let today = new Date();
if (+form.month.value == (today.getMonth() + 1) &&
+form.day.value == today.getDate()) {
// happy birthday 🎂
// ...
}

#سطح_مبتدی #javascript
روشی جالب برای استفاده از دستور Switch Case در #PHP

$age = 15;

switch (true){
case ($age >= 1 && $age <= 12):
echo 'Child';
break;
case ($age >= 13 && $age <= 19):
echo 'Teenager';
break;
case ($age >= 20):
echo 'Adult';
break;
}

#بک‌اند #سطح_متوسط
حذف مقادیر تکراری از آرایه بدون استفاده از حلقه ها : #javascript

روش اول:
let noDupe = (arr) => 
arr.filter((item, i) =>
arr.indexOf(item) >= i);

ٰروش دوم: استفاده از Set و #spread_operator که در ES2015 اضافه شده اند ( برای کار در IE و یا نسخه های پایین Firefox و Chrome نیاز به transpiler دارید)

const noDupe = arr => [...new Set(arr)];

خروجی هر دو روش:
noDupe([1,2,2,1,3]); //[1,2,3];


#سطح_متوسط #spread_syntax