CodeCrafters
https://fa.m.wikipedia.org/wiki/%D8%A7%D8%B3%D9%BE%D8%B1%D8%A7%D9%86%D8%AA%D9%88
در خصوص یادگیری این زبان مطلب بزاریم؟؟؟
زبان اسپرانتو یک زبان بینالملل اینده میباشد راحت کاربردی با کمترین قواعد ممکن دارای جامعه بین المللی گفتار و نوشتار راحت
زبان اسپرانتو یک زبان بینالملل اینده میباشد راحت کاربردی با کمترین قواعد ممکن دارای جامعه بین المللی گفتار و نوشتار راحت
Anonymous Poll
43%
بله
57%
خیر
🍌13👎3🤡2🖕1
این بازی آنلاین جالب رو انجام بدید:
https://hamed.github.io/trust/
این بازی بر مبنای نظریه بازیها طراحی شده،
ببینید اگر در واقعیت اعتماد تکامل پیدا کنه، جامعه چجوری رشد میکنه...!
بهترین خروجی چیه؟
و اگه رو به خوبی و درستی و اعتماد پیش بریم، چه رفتارهایی در بلندمدت از بین میرن...
https://hamed.github.io/trust/
این بازی بر مبنای نظریه بازیها طراحی شده،
ببینید اگر در واقعیت اعتماد تکامل پیدا کنه، جامعه چجوری رشد میکنه...!
بهترین خروجی چیه؟
و اگه رو به خوبی و درستی و اعتماد پیش بریم، چه رفتارهایی در بلندمدت از بین میرن...
hamed.github.io
تکامل اعتماد
یک راهنمای تعاملی برای نظریه بازی درباره اینکه چرا به یکدیگر اعتماد میکنیم
❤4
از جدول "CITY"، برای تمام شهرهای ایران که جمعیت آنها بیشتر از 120000 نفر است، فیلد "NAME" را استعلام کنید. کد کشور برای ایران "IR" است.
سطح : بسیار آسان
راهنمایی :استفاده از WHERE !!!
#SQL
@Code_Crafters
سطح : بسیار آسان
راهنمایی :
#SQL
@Code_Crafters
CodeCrafters
از جدول "CITY"، برای تمام شهرهای ایران که جمعیت آنها بیشتر از 120000 نفر است، فیلد "NAME" را استعلام کنید. کد کشور برای ایران "IR" است. سطح : بسیار آسان راهنمایی : استفاده از WHERE !!! #SQL @Code_Crafters
با توجه به جدول City :
سوال :فهرست نامهای CITY که با حروف صدادار (یعنی a، e، i، o یا u) شروع میشوند را از STATION جستجو کنید. نتیجه شما نمی تواند حاوی موارد تکراری باشد.
سطح : آسان
راهنمایی :جز استفاده از WHERE که برای ایجاد شرط در SQL است باید از تابع های درونی مثل RIGHT یا LEFT استفاده کنید. میتوانید در بعضی پایگاه داده ها مثل MySQL نیز از RLIKE استفاده کنید که براساس ReGex بررسی میکند البته از LIKE نیز میتواند استفاده کرد . برای بخش جلوگیری از موارد تکراری میتوانید از Distinct استفاده کنید .در کل این کوئری را به روش های زیادی میتوان نوشت !!
#SQL
@Code_Crafters
سوال :فهرست نامهای CITY که با حروف صدادار (یعنی a، e، i، o یا u) شروع میشوند را از STATION جستجو کنید. نتیجه شما نمی تواند حاوی موارد تکراری باشد.
سطح : آسان
راهنمایی :
#SQL
@Code_Crafters
پرسش: با توجه به جداول CITY و COUNTRY، نام همه قارهها (COUNTRY.Continent) و میانگین جمعیت شهر مربوطه (CITY.Population) را که به نزدیکترین عدد صحیح گرد شده است، جستجو کنید.
نکته :از CITY.CountryCode و COUNTRY.Code برای JOIN زدن استفاده کنید.
سطح : متوسط
راهنمایی : استفاده از تابع های درونی AVG برای میانگین گیری و FLOOR برای گرفتن نزدیک ترین عدد صحیح و همچنین JOIN زدن بین دو جدول و در نهایت استفاده از GROUP .
#SQL
@Code_Crafters
نکته :از CITY.CountryCode و COUNTRY.Code برای JOIN زدن استفاده کنید.
سطح : متوسط
راهنمایی :
#SQL
@Code_Crafters
سطح : پیشرفته - چالشی
شکل زیر :
را در نظر بگیرید که تابع P(5)را نشان میدهد
شما کوئری را بنویسید که این شکل را تا ۲۰ ستاره یا P(20 )را پرینت کند
راهنمایی :میتوان از WITH و UNION ALL برای ایجاد یک جدول مجازی استفاده کرد که حاوی تمام حالتهای ممکن از تعداد ستارهها است. سپس، میتوان از تابع REPEAT در MySQL برای تکرار این چرخه تا زمانی که تعداد ستارهها به ۲۰ برسد، استفاده کرد.
#SQL
@Code_Crafters
شکل زیر :
sql
*****
****
***
**
*
را در نظر بگیرید که تابع P(5)را نشان میدهد
شما کوئری را بنویسید که این شکل را تا ۲۰ ستاره یا P(20 )را پرینت کند
راهنمایی :
#SQL
@Code_Crafters
نکته ای باید در نظر بگیرد این است که به صورت پیشفرض پایگاه داده MySQL در نظر گرفته شده است .
و اینکه طبقه بندی ها بر اساس دانش لازم از SQL است .
جواب ها تا فردا یا اگر تعداد زیادی سوال را جواب دادند زودتر قرار خواهد گرفت .
راهنمایی ها سعی بر روشن کردن مسیر بوده و جواب نهایی نیستند!!!
جوابتون را کامنت کنید تست میکنم
#SQL
@Code_Crafters
و اینکه طبقه بندی ها بر اساس دانش لازم از SQL است .
جواب ها تا فردا یا اگر تعداد زیادی سوال را جواب دادند زودتر قرار خواهد گرفت .
راهنمایی ها سعی بر روشن کردن مسیر بوده و جواب نهایی نیستند!!!
جوابتون را کامنت کنید تست میکنم
#SQL
@Code_Crafters
❤3
CodeCrafters
نکته ای باید در نظر بگیرد این است که به صورت پیشفرض پایگاه داده MySQL در نظر گرفته شده است . و اینکه طبقه بندی ها بر اساس دانش لازم از SQL است . جواب ها تا فردا یا اگر تعداد زیادی سوال را جواب دادند زودتر قرار خواهد گرفت . راهنمایی ها سعی بر روشن کردن مسیر…
با توجه به استقبال بسیار زیاد و خیره کننده دوستان (تا این لحظه فقط یک نفر جواب داد😕 ) جواب سوال های SQL رو قرار میدهم.
😁3💔2
CodeCrafters
از جدول "CITY"، برای تمام شهرهای ایران که جمعیت آنها بیشتر از 120000 نفر است، فیلد "NAME" را استعلام کنید. کد کشور برای ایران "IR" است. سطح : بسیار آسان راهنمایی : استفاده از WHERE !!! #SQL @Code_Crafters
جواب:
SELECT Name FROM
WHERE Population > 120000 AND Country == "IR";
❤2
CodeCrafters
با توجه به جدول City : سوال :فهرست نامهای CITY که با حروف صدادار (یعنی a، e، i، o یا u) شروع میشوند را از STATION جستجو کنید. نتیجه شما نمی تواند حاوی موارد تکراری باشد. سطح : آسان راهنمایی : جز استفاده از WHERE که برای ایجاد شرط در SQL است باید از تابع…
پاسخ : چند تا از جواب های ممکن :
SELECT DISTINCT CITY FROM STATION WHERE LEFT(CITY,1) IN ('A','E','I','O','U');
SELECT DISTINCT CITY FROM STATION WHERE UPPER(CITY) RLIKE '^[AEIOU]';
SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE "A%" OR CITY LIKE "E%" OR CITY LIKE "I%" OR CITY LIKE "O%" OR CITY LIKE "U%";
SELECT DISTINCT CITY FROM STATION WHERE UPPER(SUBSTR(CITY, 1, 1)) IN ('A', 'E', 'I', 'O', 'U');
❤2👏1
CodeCrafters
پرسش: با توجه به جداول CITY و COUNTRY، نام همه قارهها (COUNTRY.Continent) و میانگین جمعیت شهر مربوطه (CITY.Population) را که به نزدیکترین عدد صحیح گرد شده است، جستجو کنید. نکته :از CITY.CountryCode و COUNTRY.Code برای JOIN زدن استفاده کنید. سطح : متوسط…
SELECT Continent, FLOOR(AVG(CITY.Population)) AS AveragePopulation
FROM CITY
JOIN COUNTRY ON CITY.CountryCode = COUNTRY.Code
GROUP BY Continent;
❤2
CodeCrafters
سطح : پیشرفته - چالشی شکل زیر : sql ***** **** *** ** * را در نظر بگیرید که تابع P(5)را نشان میدهد شما کوئری را بنویسید که این شکل را تا ۲۰ ستاره یا P(20 )را پرینت کند راهنمایی :میتوان از WITH و UNION ALL برای ایجاد یک جدول مجازی استفاده کرد که حاوی…
یکی از جواب های ممکن :
این خدایی سخت بود
WITH RECURSIVE CTE AS (
SELECT 20 N
UNION ALL
SELECT N - 1 FROM CTE WHERE N > 0
)
SELECT REPEAT('* ', N) FROM CTE
این خدایی سخت بود
❤2👏1
اگه به این سوال ها علاقه دارید (علاقه موج میزنه ☹️)
میتوانید از سایت هکر رنگ استفاده کنید
سوال ها از ساده تا پیشرفته طبقه بندی و جز SQL چند تا زبان برنامه نویسی دیگه هم پشتیبانی میکنه
اگر جواب سوالی نتوانستید پاسخ بدهید میتوانید از بخش بحث(Discussions) جواب را پیدا کنید اگر توانستید حل کنید هم باز سری به این بخش بزنید و جواب های دیگران ببینید دید خوبی از SQL به دست می آورید .
https://www.hackerrank.com/
میتوانید از سایت هکر رنگ استفاده کنید
سوال ها از ساده تا پیشرفته طبقه بندی و جز SQL چند تا زبان برنامه نویسی دیگه هم پشتیبانی میکنه
اگر جواب سوالی نتوانستید پاسخ بدهید میتوانید از بخش بحث(Discussions) جواب را پیدا کنید اگر توانستید حل کنید هم باز سری به این بخش بزنید و جواب های دیگران ببینید دید خوبی از SQL به دست می آورید .
https://www.hackerrank.com/
Hackerrank
HackerRank - Online Coding Tests and Technical Interviews
HackerRank is the market-leading coding test and interview solution for hiring developers. Start hiring at the pace of innovation!
👍6💩1
تراکنش در دنیا پایگاه داده ها: قهرمانهای گمنامِ پشت صحنه 💪
در دنیای پایگاه داده، تراکنش (Transaction) مثل یه گروه سربازه که یا با هم تا تهِ خط میرن، یا همه با هم برمیگردن. وقتی حرف از تراکنش ها میشه، خیلیها یاد تراکنش حسابهای بانکی میفتن و با خودشون میگن: «وا، من که به این پیچیدگیها نیاز ندارم!» اما حقیقت اینه که تراکنش ها فقط مال پایگاههای دادهی بانکها نیستن. خیلی وقتها مردم گیر یه سری مثالهای بانکی میافتن و فراموش میکنن که تو دنیای واقعی، تراکنش ها چقدر کاربرد دارن.
با استفاده از تراکنشها برنامهنویسها نه تنها وقتِ خودشون رو ذخیره میکنن، بلکه کد مورد نیازشون برای برنامههایی که به پایگاه داده وابسته هستن رو هم کم میکنن. اگه پایگاه داده خودش وضعیت تراکنش رو مدیریت نمیکرد، باید خود برنامهنویس این کار رو انجام میداد. به نظر ساده میاد، ولی وقتی با دادههای مرتبط به هم سروکار داشته باشیم، خیلی زود پیچیده میشه.
مثلاً به مراحل ثبتنام سادهی یه کاربر فکر کنین. این مراحل باید یه رکورد کاربر و یه رکورد حساب بسازن و بعد اونها رو به هم وصل کنن. بدون تراکنش باید تک تک مراحل رو تو برنامه بنویسیم:
کاربر رو بساز
اگه موفق نبود، خارج شو و پیام خطا بفرست
حساب رو بساز
اگه موفق نبود، کاربر رو حذف کن، خارج شو و پیام خطا بفرست
کاربر رو به حساب وصل کن
اگه موفق نبود، کاربر، حساب رو حذف کن، خارج شو و پیام خطا بفرست
اما با تراکنش، میتونیم راحتتر و تمیزتر عمل کنیم:
تراکنش رو شروع کن
حساب رو بساز
کاربر رو بساز
کاربر رو به حساب وصل کن
تراکنش موفقیتآمیز بود؟
اگه آره، پیام موفقیت رو برگردون
اگه نه، پیام خطا رو برگردون
حالا دیگه نگران این نیستیم که بخاطر یه دستوری که موفق نشده، بقیه رو پاک کنیم. یا همه با هم درست انجام میشن، یا همه با هم شکست میخورن. به همین سادگی!
خب، حالا میبینیم که تراکنش ها نه تنها پیچیده نیستن، بلکه تو خیلی از کارها میتونن دست چپ و راست برنامهنویسها باشن. دیگه این قهرمانهای گمنام دنیای پایگاه داده رو دستکم نگیرین!
#postgresql
@Code_Crafters
در دنیای پایگاه داده، تراکنش (Transaction) مثل یه گروه سربازه که یا با هم تا تهِ خط میرن، یا همه با هم برمیگردن. وقتی حرف از تراکنش ها میشه، خیلیها یاد تراکنش حسابهای بانکی میفتن و با خودشون میگن: «وا، من که به این پیچیدگیها نیاز ندارم!» اما حقیقت اینه که تراکنش ها فقط مال پایگاههای دادهی بانکها نیستن. خیلی وقتها مردم گیر یه سری مثالهای بانکی میافتن و فراموش میکنن که تو دنیای واقعی، تراکنش ها چقدر کاربرد دارن.
با استفاده از تراکنشها برنامهنویسها نه تنها وقتِ خودشون رو ذخیره میکنن، بلکه کد مورد نیازشون برای برنامههایی که به پایگاه داده وابسته هستن رو هم کم میکنن. اگه پایگاه داده خودش وضعیت تراکنش رو مدیریت نمیکرد، باید خود برنامهنویس این کار رو انجام میداد. به نظر ساده میاد، ولی وقتی با دادههای مرتبط به هم سروکار داشته باشیم، خیلی زود پیچیده میشه.
مثلاً به مراحل ثبتنام سادهی یه کاربر فکر کنین. این مراحل باید یه رکورد کاربر و یه رکورد حساب بسازن و بعد اونها رو به هم وصل کنن. بدون تراکنش باید تک تک مراحل رو تو برنامه بنویسیم:
کاربر رو بساز
اگه موفق نبود، خارج شو و پیام خطا بفرست
حساب رو بساز
اگه موفق نبود، کاربر رو حذف کن، خارج شو و پیام خطا بفرست
کاربر رو به حساب وصل کن
اگه موفق نبود، کاربر، حساب رو حذف کن، خارج شو و پیام خطا بفرست
اما با تراکنش، میتونیم راحتتر و تمیزتر عمل کنیم:
تراکنش رو شروع کن
حساب رو بساز
کاربر رو بساز
کاربر رو به حساب وصل کن
تراکنش موفقیتآمیز بود؟
اگه آره، پیام موفقیت رو برگردون
اگه نه، پیام خطا رو برگردون
حالا دیگه نگران این نیستیم که بخاطر یه دستوری که موفق نشده، بقیه رو پاک کنیم. یا همه با هم درست انجام میشن، یا همه با هم شکست میخورن. به همین سادگی!
خب، حالا میبینیم که تراکنش ها نه تنها پیچیده نیستن، بلکه تو خیلی از کارها میتونن دست چپ و راست برنامهنویسها باشن. دیگه این قهرمانهای گمنام دنیای پایگاه داده رو دستکم نگیرین!
#postgresql
@Code_Crafters
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
تراکنش های ابتدایی
سادهترین تراکنش در زیر آمده است. با استفاده از BEGIN تراکنش را شروع کرده و با COMMIT آن را پایان میدهد.
ببین، تراکنشها گروهی از عملیاتهای پایگاه داده هستن که با هم انجام میشن. گاهی اوقات، لازمه که یک مقدار شناسه یکتا برای هر رکوردی که وارد پایگاه داده میکنیم، داشته باشیم. برای این کار، از دنبالهها (sequences) استفاده میکنیم. دنبالهها، مقدار شناسه بعدی رو به صورت خودکار تولید میکنن.
حالا، فرض کن که دو تراکنش همزمان دارن داده وارد پایگاه داده میکنن. اگه هر دو تراکنش از دنبالهای استفاده کنن که هنوز نهایی نشده، ممکنه هر دو تراکنش مقدار شناسه یکسانی رو دریافت کنن. این باعث میشه که دو رکورد با یک شناسه یکسان در پایگاه داده وجود داشته باشن. این کار درست نیست و میتونه باعث مشکلاتی بشه.
برای جلوگیری از این مشکل، دنبالهها حتی قبل از اینکه تراکنش نهایی بشه، مقدار شناسه بعدی رو تولید میکنن. این کار باعث میشه که هر دو تراکنش مقدار شناسه متفاوتی رو دریافت کنن.
حالا، اگه تراکنش رو نهایی نکنی، مقدار شناسهای که بهت برمیگردونه، فقط یک مقدار موقتی هست. این مقدار تا زمانی که تراکنش نهایی بشه، در پایگاه داده ذخیره نمیشه.
اگه تراکنش رو با دستور ROLLBACK لغو کنی، مقدار شناسهای که بهت برمیگردونده، از بین میره.
برای اینکه مطمئن بشی که مقدار شناسهای که دریافت میکنی، در پایگاه داده ذخیره شده، باید تراکنش رو با دستور COMMIT نهایی کنی.
اگه در حین انجام تراکنش، خطا رخ بده، نمیتونی اون رو نهایی کنی. در این صورت، مقدار شناسهای که دریافت میکنی، در پایگاه داده ذخیره نمیشه.
#postgresql
@Code_Crafters
سادهترین تراکنش در زیر آمده است. با استفاده از BEGIN تراکنش را شروع کرده و با COMMIT آن را پایان میدهد.
sqlمثل آب خوردن کار کرد، درسته؟ شبیه اینه که یه دستور معمولی رو اجرا کنیم ( داریم از دستور RETURNING استفاده میکنیم تا بعداً چیزی رو ثابت کنیم). برای اینکه مطمئن بشید دادهها ثبت شدن، حالا این دستور رو بزنید:
BEGIN;
INSERT INTO employees (first_name, last_name, start_date, salary, job_title, manager_id, department_id) VALUES ('Elizabeth', 'Christensen', current_date, 1, 'Master of the Highwire', 2, 2) RETURNING employee_id;
COMMIT;
SELECT * FROM employees WHERE first_name = 'Elizabeth' AND last_name = 'Christensen';اما اگر تصمیم بگیرید به جای COMMIT، تراکنش را ROLLBACK کنید، نتیجهای متفاوت خواهید داشت:
BEGIN;وقتی از دستور ROLLBACK استفاده میکنی، مثل این میمونه که داری به پایگاه داده میگی: «بیخیال این تراکنش شو، انگار نه انگار اتفاقی افتاده.» با این کار، هر تغییری که توی تراکنش انجام شده بود، پاک میشه و توی تاریخچه پایگاه داده ذخیره نمیشه. اما یه نکته جالب اینجاست: با اینکه تراکنش ثبت نمیشه، اما پایگاه داده باز هم یه شناسه برای اون تراکنش در نظر میگیره. ولی اگه بعدا بخوای اون رکورد رو با دستور select پیدا کنی، هیچی پیدا نمیشه، چون از اول ثبت نشده بوده!!
INSERT INTO employees (first_name, last_name, start_date, salary, job_title, manager_id, department_id) VALUES ('Chris', 'Winslett', current_date, 1, 'Jr Director of the Highwire', 2, 2) RETURNING employee_id;
ROLLBACK;
SELECT * FROM employees WHERE first_name = 'Chris' AND last_name = 'Winslett';میدونی چرا وقتی یک تراکنش رو شروع میکنی، حتی قبل از اینکه اون رو نهایی کنی، یک مقدار شناسه (ID) بهت برمیگردونه؟
ببین، تراکنشها گروهی از عملیاتهای پایگاه داده هستن که با هم انجام میشن. گاهی اوقات، لازمه که یک مقدار شناسه یکتا برای هر رکوردی که وارد پایگاه داده میکنیم، داشته باشیم. برای این کار، از دنبالهها (sequences) استفاده میکنیم. دنبالهها، مقدار شناسه بعدی رو به صورت خودکار تولید میکنن.
حالا، فرض کن که دو تراکنش همزمان دارن داده وارد پایگاه داده میکنن. اگه هر دو تراکنش از دنبالهای استفاده کنن که هنوز نهایی نشده، ممکنه هر دو تراکنش مقدار شناسه یکسانی رو دریافت کنن. این باعث میشه که دو رکورد با یک شناسه یکسان در پایگاه داده وجود داشته باشن. این کار درست نیست و میتونه باعث مشکلاتی بشه.
برای جلوگیری از این مشکل، دنبالهها حتی قبل از اینکه تراکنش نهایی بشه، مقدار شناسه بعدی رو تولید میکنن. این کار باعث میشه که هر دو تراکنش مقدار شناسه متفاوتی رو دریافت کنن.
حالا، اگه تراکنش رو نهایی نکنی، مقدار شناسهای که بهت برمیگردونه، فقط یک مقدار موقتی هست. این مقدار تا زمانی که تراکنش نهایی بشه، در پایگاه داده ذخیره نمیشه.
اگه تراکنش رو با دستور ROLLBACK لغو کنی، مقدار شناسهای که بهت برمیگردونده، از بین میره.
برای اینکه مطمئن بشی که مقدار شناسهای که دریافت میکنی، در پایگاه داده ذخیره شده، باید تراکنش رو با دستور COMMIT نهایی کنی.
اگه در حین انجام تراکنش، خطا رخ بده، نمیتونی اون رو نهایی کنی. در این صورت، مقدار شناسهای که دریافت میکنی، در پایگاه داده ذخیره نمیشه.
BEGIN;بعد از اجرای دستور بالا، یک دستور ROLLBACK نشان داده خواهد شد. بنابراین، دستور COMMIT ناموفق بوده است زیرا آخرین وضعیت تراکنش یک خطا است.
INSERT INTO employees (first_name, last_name) VALUES ('Tom', 'Jones') RETURNING employee_id;
COMMIT;
#postgresql
@Code_Crafters
👍2