diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ee3a9a3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.idea/ +.idea_modules/ + +**/vendor/** + +.git +.github \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md new file mode 100644 index 0000000..4ce09c3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md @@ -0,0 +1,21 @@ +--- +name: قالب مشارکت در تهیه محتوای خبرنامه +about: برای مشارکت در محتوای هفتگی خبرنامه، کافیست اطلاعات پست خود را وارد تمپلیت + کنید. +title: عنوان مطلب را اینجا نیز وارد کنید | ترجیحا فارسی +labels: content +assignees: Hameds, ohmydevops, amirshnll + +--- + +##### نام و نام‌خانوادگی شما +userFullName: "" + +##### عنوان محتوا +postTitle: "" + +##### خلاصه‌ای حداکثر ۲ الی ۳ خطی درباره مضمون محتوا +postDescription: "" + +##### لینک محتوا +postLink: "" diff --git a/.github/workflows/production.yaml b/.github/workflows/production.yaml new file mode 100644 index 0000000..3f3ac60 --- /dev/null +++ b/.github/workflows/production.yaml @@ -0,0 +1,53 @@ +name: "♨️ Send email - Production" + +on: + workflow_dispatch: + +jobs: + send-email-for-all-users: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.0' + tools: composer:v2 + + - name: Install Composer dependencies + run: | + cd src + composer install --no-progress --optimize-autoloader --quiet + + - name: Import BOTTOM_CONTENT_HTML and TOP_CONTENT_HTML into env + shell: bash + run: | + cd src + echo "BOTTOM_CONTENT_HTML=$(cat BOTTOM_CONTENT_HTML.txt)" >> $GITHUB_ENV + echo "TOP_CONTENT_HTML=$(cat TOP_CONTENT_HTML.txt)" >> $GITHUB_ENV + + - name: Run script + run: php src/send_newsletter.php + env: + PAKAT_SMTP_USERNAME: ${{ secrets.PAKAT_SMTP_USERNAME }} + PAKAT_SMTP_PASSWORD: ${{ secrets.PAKAT_SMTP_PASSWORD }} + PAKAT_API_KEY: ${{ secrets.PAKAT_API_KEY }} + BOTTOM_CONTENT_HTML: ${{ env.BOTTOM_CONTENT_HTML }} + TOP_CONTENT_HTML: ${{ env.TOP_CONTENT_HTML }} + SEND_ENV: "production" + IS_DARK: "false" + + - name: Commit Archive file + run: | + git config --local user.email "ohmydevops@gmail.com" + git config --local user.name "ohmydevops" + git add -A + git commit -m "Add Archive" + + - name: Push Archive file + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: main diff --git a/.github/workflows/production_dark.yaml b/.github/workflows/production_dark.yaml new file mode 100644 index 0000000..eb9d09f --- /dev/null +++ b/.github/workflows/production_dark.yaml @@ -0,0 +1,53 @@ +name: "♨️ Send email dark - Production" + +on: + workflow_dispatch: + +jobs: + send-email-for-all-users: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.0' + tools: composer:v2 + + - name: Install Composer dependencies + run: | + cd src + composer install --no-progress --optimize-autoloader --quiet + + - name: Import BOTTOM_CONTENT_HTML_DARK and TOP_CONTENT_HTML_DARK into env + shell: bash + run: | + cd src + echo "BOTTOM_CONTENT_HTML_DARK=$(cat BOTTOM_CONTENT_HTML_DARK.txt)" >> $GITHUB_ENV + echo "TOP_CONTENT_HTML_DARK=$(cat TOP_CONTENT_HTML_DARK.txt)" >> $GITHUB_ENV + + - name: Run script + run: php src/send_newsletter.php + env: + PAKAT_SMTP_USERNAME: ${{ secrets.PAKAT_SMTP_USERNAME }} + PAKAT_SMTP_PASSWORD: ${{ secrets.PAKAT_SMTP_PASSWORD }} + PAKAT_API_KEY: ${{ secrets.PAKAT_API_KEY }} + BOTTOM_CONTENT_HTML_DARK: ${{ env.BOTTOM_CONTENT_HTML_DARK }} + TOP_CONTENT_HTML_DARK: ${{ env.TOP_CONTENT_HTML_DARK }} + SEND_ENV: "production" + IS_DARK: "true" + + - name: Commit Archive file + run: | + git config --local user.email "ohmydevops@gmail.com" + git config --local user.name "ohmydevops" + git add -A + git commit -m "Add Archive" + + - name: Push Archive file + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: main diff --git a/.github/workflows/staging.yaml b/.github/workflows/staging.yaml new file mode 100644 index 0000000..eedb752 --- /dev/null +++ b/.github/workflows/staging.yaml @@ -0,0 +1,40 @@ +name: "🍊 Send email - Test" + +on: + workflow_dispatch: + +jobs: + send-email-for-test-users: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.0' + tools: composer:v2 + + - name: Install Composer dependencies + run: | + cd src + composer install --no-progress --optimize-autoloader --quiet + + - name: Import BOTTOM_CONTENT_HTML and TOP_CONTENT_HTML into env + shell: bash + run: | + cd src + echo "BOTTOM_CONTENT_HTML=$(cat BOTTOM_CONTENT_HTML.txt)" >> $GITHUB_ENV + echo "TOP_CONTENT_HTML=$(cat TOP_CONTENT_HTML.txt)" >> $GITHUB_ENV + + - name: Run script + run: php src/send_newsletter.php + env: + PAKAT_SMTP_USERNAME: ${{ secrets.PAKAT_SMTP_USERNAME }} + PAKAT_SMTP_PASSWORD: ${{ secrets.PAKAT_SMTP_PASSWORD }} + PAKAT_API_KEY: ${{ secrets.PAKAT_API_KEY }} + BOTTOM_CONTENT_HTML: ${{ env.BOTTOM_CONTENT_HTML }} + TOP_CONTENT_HTML: ${{ env.TOP_CONTENT_HTML }} + SEND_ENV: "test" + IS_DARK: "false" diff --git a/.github/workflows/staging_dark.yaml b/.github/workflows/staging_dark.yaml new file mode 100644 index 0000000..60c160b --- /dev/null +++ b/.github/workflows/staging_dark.yaml @@ -0,0 +1,40 @@ +name: "🍊 Send email dark - Test" + +on: + workflow_dispatch: + +jobs: + send-email-for-test-users: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.0' + tools: composer:v2 + + - name: Install Composer dependencies + run: | + cd src + composer install --no-progress --optimize-autoloader --quiet + + - name: Import BOTTOM_CONTENT_HTML_DARK and TOP_CONTENT_HTML_DARK into env + shell: bash + run: | + cd src + echo "BOTTOM_CONTENT_HTML_DARK=$(cat BOTTOM_CONTENT_HTML_DARK.txt)" >> $GITHUB_ENV + echo "TOP_CONTENT_HTML_DARK=$(cat TOP_CONTENT_HTML_DARK.txt)" >> $GITHUB_ENV + + - name: Run script + run: php src/send_newsletter.php + env: + PAKAT_SMTP_USERNAME: ${{ secrets.PAKAT_SMTP_USERNAME }} + PAKAT_SMTP_PASSWORD: ${{ secrets.PAKAT_SMTP_PASSWORD }} + PAKAT_API_KEY: ${{ secrets.PAKAT_API_KEY }} + BOTTOM_CONTENT_HTML_DARK: ${{ env.BOTTOM_CONTENT_HTML_DARK }} + TOP_CONTENT_HTML_DARK: ${{ env.TOP_CONTENT_HTML_DARK }} + SEND_ENV: "test" + IS_DARK: "true" diff --git a/.gitignore b/.gitignore index a02de76..988d6a2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,47 +2,11 @@ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf - -# Generated files -.idea/**/contentModel.xml - -# Sensitive or high-churn files -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml - -# Gradle -.idea/**/gradle.xml -.idea/**/libraries - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -# .idea/artifacts -# .idea/compiler.xml -# .idea/jarRepositories.xml -# .idea/modules.xml -# .idea/*.iml -# .idea/modules -# *.iml -# *.ipr +.idea/ # CMake cmake-build-*/ -# Mongo Explorer plugin -.idea/**/mongoSettings.xml - # File-based project format *.iws @@ -70,4 +34,4 @@ fabric.properties # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser -/vendor/ +**/vendor/** \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..cca3344 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +newsletter.softwaretalks.ir \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5955b51 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM php:8.0-cli-alpine + +RUN apk add --update --no-cache zip libzip-dev icu-dev +RUN docker-php-ext-install zip +RUN docker-php-ext-install intl + +RUN curl -sS https://getcomposer.org/installer | php -- --version=2.0.9 --install-dir=/usr/local/bin --filename=composer + +COPY . /app/newsletter +WORKDIR /app/newsletter + +RUN cd src && composer install + +ENTRYPOINT ["php"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d9d44de --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Software Talks + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0c2282b --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +
+ cover +
+ +ما مهندسایِ نرم‌افزار و علاقه‌مندانِ کامپیوتر هرازگاهی با مطالبِ جالبی برخورد می‌کنیم که می‌تونه به دردِ بقیه هم بخوره. **خبرنامهٔ نرم‌افزاریِ SoftwareTalks** جایی برای اشتراکِ این مطالبه. در حال حاضر هر پنجشنبه خبرنامه ارسال میشود. + +وبسایت خبرنامه: [مشاهده ↗️](https://newsletter.softwaretalks.ir) + +آرشیو خبرنامه: [مشاهده ↗️](https://newsletter.softwaretalks.ir/#archive) + +توضیحات فنی نحوه کارکردن خبرنامه: [مشاهده ↗️](https://virgool.io/@ohmydevops/%DA%86%D8%B1%D8%AE%D9%88%D9%86%D8%AF%D9%86-%D8%AE%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-softwaretalks-%D8%A8%D8%A7-%DA%AF%DB%8C%D8%AA%D9%87%D8%A7%D8%A8-mgq8ktpi561g) + +--- + +در ویدیوی پایین، درباره چرایی ایجاد خبرنامه صحبت کردیم. همچنین اگر تا‌به‌حال تجربه استفاده از گیتهاب را نداشته‌اید، نحوه مشارکت در محتوای خبرنامه رو توضیح دادیم. برای تماشا ویدیو روی تصویر زیر کلیک کنید: + +
+ Youtube cover +
+ +## مشارکت‌کنندگان به ترتیب تعداد پست‌های ارسالی + +برای مشاهده تعداد پست‌های هر کاربر، کافیست که ماوس :computer_mouse: یا موشواره :mouse: خود را روی تصویر مربوطه نگه‌دارید. تا این لحظه ۵۳ نفر در تهیه محتوای هر هفته مشارکت کرده‌اند. + +
+Hameds +ohmydevops +amirshnll +hassan-shahbazi +Rahmanism +ghost +mokarchi +vahidfathi +royapakzad +AliKarbasiCom +alinaseri07 +amirmojiry +s-alielyasi +afzouni +ashkanRmk +ariaieboy +asadise +VahidNaderi +SirwanAfifi +pykello +irnb +SinaArya1 +DearRude +kokabi1365 +mahdiAkhi +anvaari +mvahedii +numb95 +shabane +Mohammadgeek +majidganji +slashsbin +Cinorid +Aliiior +xhdix +mohammadv184 +m2-farzan +hhosseinioun +omidpakdel +rashid2003 +POOYASP2 +mahdithejedi +mayazdi +dozheiny +Gnkalk +iamvee +itshaadi +vahidbaghi +vghaderi +h4iku +alirezasalehizadeh +markpash +mohas +hnaseri1990 +hamedsj +mrmmg +ShakibHabibi +
diff --git a/archives/num0.html b/archives/num0.html new file mode 100644 index 0000000..b6cad85 --- /dev/null +++ b/archives/num0.html @@ -0,0 +1,101 @@ + + + + خبرنامه Software Talks، شماره صفرم + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

شماره صفرم - + پنجشنبه، ۱۱ دی ۹۹

+

سلام. به خبرنامه + هفتگی SoftwareTalks خوش آمدید. این خبرنامه روی گیت‌هاب در دسترس است و محتوای آن نیز توسط + مشارکت‌کنندگان در پروژه اپن‌سورس خبرنامه تامین می‌شود. این اولین تلاش‌های ما برای ساخت یک خبرنامه هفتگی در + حوزه توسعه نرم‌افزار است و خوشحال می‌شویم نظرات و پیشنهادات شما را در گیت‌هاب پروژه بخوانیم. هر هفته پنج‌شنبه‌ها شماره + جدید خبرنامه ارسال می‌شود. با معرفی خبرنامه به دوستان و همکاران خود و مشارکت در تامین محتوا، به بهبود پروژه + و اشتراک‌گذاری بهتر منابع کمک کنید. +


+ +
+

در این شماره از خبرنامه، دوستان + خوبی به نام‌های امیرحسین بقایی، حامد سعیدی، سیدمصطفی افزونی، وحید قادری، محمد + مهدی غلامرضایی در تهیه محتوا کمک کردند. +


+

ارسال شده توسط پاکت +

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید +

+ + + \ No newline at end of file diff --git a/archives/num1.html b/archives/num1.html new file mode 100644 index 0000000..ddfa59f --- /dev/null +++ b/archives/num1.html @@ -0,0 +1,109 @@ + + + + خبرنامه Software Talks، شماره یکم + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

شماره + یکم - پنجشنبه، ۱۸ دی ۹۹

+
+ +
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های وحید نادری، مارک پشم‌فروش، حامد سعیدی، هادی + اعظمی، امیرحسین بقایی، رویا پاکزاد، حسین ناصری، سیدمصطفی افزونی در تهیه + محتوا کمک کردند. +


+


+ ارسال شده توسط پاکت +

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف + sota10 می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید + +

+ + + \ No newline at end of file diff --git a/archives/num10.html b/archives/num10.html new file mode 100644 index 0000000..06a3eb8 --- /dev/null +++ b/archives/num10.html @@ -0,0 +1,193 @@ + + + خبرنامه شماره ۱۰ + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks +

+

+ شماره ۱۰ - جمعه، ۲۲ اسفند ۹۹ +

+
+ +
+

+ در این شماره از خبرنامه، دوستان خوبی به نام‌های + امیرحسین بقایی، حامد سعیدی، حسن شهبازی، + امیرحسین مجیری در تهیه محتوا کمک کردند. شما هم می‌توانید + مشارکت کنید. +

+
+

+
+ ارسال شده توسط + پاکت +

+

+ سرویس پاکت + اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید +

+ + + + diff --git a/archives/num11.html b/archives/num11.html new file mode 100644 index 0000000..247cafd --- /dev/null +++ b/archives/num11.html @@ -0,0 +1,127 @@ + + + + خبرنامه شماره ۱۱ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱۱ - پنجشنبه، ۱۹ فروردین ۱۴۰۰

+
+ +
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، هادی مشیدی، ابراهیم نجاتی، حسن + شهبازی، علی کرباسی، رویا پاکزاد، امین یزدی، علی الیاسی، علی ناصری + در تهیه محتوا کمک کردند. شما هم می‌توانید مشارکت کنید.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+
+ + + + + + + \ No newline at end of file diff --git a/archives/num12.html b/archives/num12.html new file mode 100644 index 0000000..371b274 --- /dev/null +++ b/archives/num12.html @@ -0,0 +1,111 @@ + + + + خبرنامه شماره ۱۲ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱۲ - جمعه، ۰۳ اردیبهشت ۱۴۰۰

+

در خبرنامه قبلی به‌دلیل باگ نرم‌افزاری، شماره خبرنامه به اشتباه ۱۴ نوشته شده‌بود که در حقیقت خبرنامه + شماره ۱۱ اُم بوده

+
+ +
+

در این + شماره از خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، علی الیاسی، هادی مشیدی، + امیر شکری، حسن شهبازی، علی کرباسی در تهیه محتوا کمک کردند. شما هم می‌توانید مشارکت کنید. +

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+

+
+
+ + + + + + + \ No newline at end of file diff --git a/archives/num13.html b/archives/num13.html new file mode 100644 index 0000000..312ef6b --- /dev/null +++ b/archives/num13.html @@ -0,0 +1,96 @@ + + + + خبرنامه شماره ۱۳ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱۳ - جمعه، ۱۰ اردیبهشت ۱۴۰۰

+
+ +
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، حسن شهبازی، حامد سعیدی، اشکان + رحمانی، امیرحسین گودرزی در تهیه محتوا کمک کردند. شما هم می‌توانید مشارکت کنید.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+ + + + + + + \ No newline at end of file diff --git a/archives/num14.html b/archives/num14.html new file mode 100644 index 0000000..86c231d --- /dev/null +++ b/archives/num14.html @@ -0,0 +1,81 @@ + + + + خبرنامه شماره ۱۴ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱۴ - پنجشنبه، ۱٦ اردیبهشت ۱۴۰۰

+
+ +
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های حسن شهبازی، سیدمصطفی افزونی، Mahdi Akhi در تهیه محتوا + کمک کردند. شما هم می‌توانید مشارکت کنید.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+ + + + + + + \ No newline at end of file diff --git a/archives/num15.html b/archives/num15.html new file mode 100644 index 0000000..9c77460 --- /dev/null +++ b/archives/num15.html @@ -0,0 +1,97 @@ + + + + خبرنامه شماره ۱۵ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱۵ - پنجشنبه، ۲۳ اردیبهشت ۱۴۰۰

+
+ +
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، حامد سعیدی، Amir Mokarchi، علی + کرباسی، محمد عرب انواری در تهیه محتوا کمک کردند. شما هم می‌توانید مشارکت کنید.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+ + + + + + + \ No newline at end of file diff --git a/archives/num16.html b/archives/num16.html new file mode 100644 index 0000000..fa8d4a2 --- /dev/null +++ b/archives/num16.html @@ -0,0 +1,99 @@ + + + + خبرنامه شماره ۱٦ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱٦ - پنجشنبه، ۳۰ اردیبهشت ۱۴۰۰

+
+
    +
  • مهندسی اعتماد و تحمل نقص در سیستم توزیع‌شده
  • +

    توی این مقاله، نویسنده در مورد راه‌کارهای پیاده‌سازی سیستم‌های توزیع‌شده، معماری سرویس‌های مختلف موانع + اسکیل‌کردن یک سیستم و تحمل پذیری این سیستم صحبت می‌کنه.
    مطالعه مطلب اصلی


    +
  • توضیح بیتکوین به مامان و بابا
  • +

    توی این ویدیو، ضیا صدر مشکل خیلی‌ها رو حل کرده و میتونین برای هر کسی که تازه میخواد با این موضوع آشنا + بشه ارسالش کنین :)
    مطالعه مطلب اصلی


    +
  • راه‌حل‌های ساده برای رفع مشکلات سطح دسترسی فایل‌ها در داکر و هاست
  • +

    اگر توی اشتراک فایل بین کانتینر و هاست (یا همون سیستم خودتون) مشکل میخورین، مثلا کانتینر با کاربر root + مینویسه و شما نمیتونین فایل‌ رو بخونین یا هر مشکل مرتبط دیگه، کافیه این مقاله رو بخونین و راه‌حل‌های + ساده‌شو بررسی کنین تا هم با مدل کاری کانتینرها‌ آشنا بشین و هم مشکل‌تون حل بشه.
    مطالعه مطلب اصلی


    +
  • بازآفرینی مجازی سازی با نیترو‌سیستم آمازون
  • +

    نگاهی به معماری سیستم زیرساخت مجازی سازی جدید آمازون؛ نیتروسیستم
    مطالعه مطلب اصلی


    +
  • چرا ایده جایگزینی کپچا با فایدو ایده خوبی نیست
  • +

    این مقاله که به قلم یکی از متخصصان فایدو نوشته شده است نشان میدهد چرا ایده جایگزینی کپچا با فایدو که + توسط کلادفلر اجرایی شده است، ایده خوبی نیست و نقص های فراوانی دارد
    مطالعه مطلب اصلی


    +
  • یک مدیر در فیسبوک: هر روز مثل یک کابوس بود
  • +

    در این پست با تجربیات یک مدیر نظارت بر محتوا در فسبوک آشنا می‌شویم که از سختی‌های کارش مطالب جالبی رو + بیان می‌کند
    مطالعه مطلب اصلی


    +
  • نرم افزار بهتر بدون (If/Else) : 5 راه برای جایگزینی
  • +

    استفاده از if/else در اغلب اوقات منجر به طراحی پیچیده و کد کم‌تر قابل خواندن برای شما می‌شود.
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین گودرزی، امیرحسین بقایی، مهدی آخی، حسن + شهبازی، Amir Mokarchi در تهیه محتوا کمک کردند. شما هم می‌توانید مشارکت کنید.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+ + + + + + + \ No newline at end of file diff --git a/archives/num17.html b/archives/num17.html new file mode 100644 index 0000000..49f8d57 --- /dev/null +++ b/archives/num17.html @@ -0,0 +1,94 @@ + + + + خبرنامه شماره ۱۷ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱۷ - پنجشنبه، ۰٦ خرداد ۱۴۰۰

+
+
    +
  • زیرساخت تغییرپذیر در مقابل زیرساخت تغییرناپذیر
  • +

    اگر در حوزه زیرساخت و مدیریت سیستم‌ها کار میکنید، شاید شنیدن این موضوع اگر تا به‌حال نشنیده باشیدش، + بهتون توی طراحی سیستم‌ها و فرآیند‌ها کمک کنه.
    مطالعه مطلب اصلی


    +
  • بررسی هدرهای امنیتی وب سایت شما
  • +

    به کمک این وب سایت می‌توانید وضعیت هدرهای امنیتی وب سایت مورد نظرتان را بررسی کنید. این سرویس، سایت شما + را بر اساس هدرهای موجود رتبه‌بندی می‌کند و می‌توانید ببینید چه هدرهایی را فراموش کردید.
    مطالعه مطلب اصلی


    +
  • دوباره چرخ رو اختراع نکنیم
  • +

    احتمالا خیلی جمله ی دوباره چرخ رو اختراع نکنیم رو شنیدیم ولی وقتی به دنیای برنامه نویسی و توسعه نرم + افزار می رسیم این موضوع خیلی مهم تر میشه و کلا این بحث استفاده ی مجدد با دیزاین پترن ها پر رنگ تر شده + این مقاله ی خیلی کوتاه اومده چندتا تکنیک ساده رو گفته که به این نتیجه برسه چرخ رو نباید دوباره اختراع + کنیم
    مطالعه مطلب اصلی


    +
  • لیست کتابهای برگزیده جذاب با محوریت Performance در استک دات نت
  • +

    بهینه سازی عملکرد اپلیکیشن بسیار اهمیت دارد و به عوامل متعددی مانند معماری اپلیکیشن، طراحی و روش پیاده + سازی آن (نوع کد نویسی) بستگی دارد. قبل از هرگونه اقدامی ابتدا باید ناحیه ی مورد نظر برای بهبود را مشخص + کنیم و تغییرات را تنها بر اساس نیاز های خود اعمال کنیم .
    مطالعه مطلب اصلی


    +
  • لیست ها در پایتون چگونه کار میکنن؟
  • +

    ما همیشه از زبان های برنامه نویسی استفاده میکنیم تا کارهامون رو انجام بدیم اما تاحالا با خودمون فکر + کردیم که خود اون ها چطوری کارهاشون رو مدیریت میکنن؟اینجا ما بررسی میکنیم تا ببینیم پایتون چطوری لیست + هارو مدیریت میکنه
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، حامد سعیدی، امیر شکری، Amir + Mokarchi، سید مهدی موسوی در تهیه محتوا کمک کردند. شما هم می‌توانید مشارکت کنید.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+ + + + + + + \ No newline at end of file diff --git a/archives/num18.html b/archives/num18.html new file mode 100644 index 0000000..ee9f99c --- /dev/null +++ b/archives/num18.html @@ -0,0 +1,106 @@ + + + + خبرنامه شماره ۱۸ + + + + + + + + + + + +

+

+ خبرنامهٔ Softwaretalks

+

+ شماره ۱۸ - پنجشنبه، ۱۳ خرداد ۱۴۰۰

+
+
    +
  • تاریخچه جالبی از زبان برنامه‌نویسی PHP
  • +

    اگر شما هم مثل من با PHP برنامه‌هاتون رو میسازید، شاید خوندن تاریخچه و اتفاقاتی که در طول ۲۶ سال گذشته + برای PHP افتاده براتون جالب باشه. این مطلب تقریبا کامل‌ترین مطلبی بود که تا حالا درباره این موضوع خوندم + و توش کلی رفرنس‌های جالب به چیزهای دیگه داره.
    مطالعه مطلب اصلی


    +
  • جعبه‌ابزارهایی برای طراحی و پیاده‌سازی مدل‌های یادگیری ماشین — شفاف‌تر، + مسئولانه‌تر و توضیح‌پذیرتر
  • +

    اگر اخبار مربوط به سیاست‌گذاری‌های فناوری رو دنبال می‌کنید، حتما متوجه شدید که صحبت از سوگیری و تبعیض در + یادگیری ماشین، بحث جمع‌آوری داده و حقوق کاربران ، شفافیت، توضیح‌پذیری و مستند‌سازی و غیره خیلی زیاد شده. + این لیست شامل جعبه‌ابزارهاییه که کمک میکنه مدل‌های یادگیری ماشین‌تون رو بررسی کنید؛ تو مستندسازی‌تون + شفاف‌تر باشید؛ داده‌هاتون رو با رعایت حفظ حریم خصوصی جمع‌آوری و نگهداری کنید و یا حتی از خودتون بپرسید + که با در نظر گرفتن تاثیرات اجتماعی، اصلا مسئولانه هست که این محصول رو وارد بازار کنید؟!
    مطالعه مطلب اصلی


    +
  • بهترین و بدترین شهرهای دنیا برای بالانس کار و زندگی
  • +

    یک لیست از بهترین و بدترین شهرهای دنیا از جهت بالانس کار-زندگی در سال ۲۰۲۱
    مطالعه مطلب اصلی


    +
  • راهکارهای تمرکز دورکاری به تلاش من و وال‌استریت ژورنال
  • +

    در این مطلب، خانم ستاره ارانی تجربیات‌شون برای حفظ تمرکز در دوران دورکاری رو نوشتند که شاید اگر شما هم + درگیر چالش‌های دورکاری هستید به کارتون بیاد.
    مطالعه مطلب اصلی


    +
  • استفاده از دومین شخصی در گیت هاب با ابرآروان
  • +

    اگر با گیت هاب کار کرده باشید احتمالا بخشی به اسم github page را دیده اید و شاید از آن نیز استفاده کرده + باشید؛ در این نوشته روش تنظیم دامنه ی شخصی روی گیت هاب را با کمک cdn ابرآروان را به صورت مرحله به مرحله + توضیح خواهم داد.
    مطالعه مطلب اصلی


    +
  • چرا برنامه‌نویس‌ها مستندات نمی‌نویسند؟
  • +

    تولید مستندات یکی از کارهایی است که برخی برنامه‌نویسان از آن گریزان هستند. این نوشته به دلایل این موضوع + و راه‌حل‌های آن می‌پردازد.
    مطالعه مطلب اصلی


    +
  • دیگه وقتشه استفاده از If-Else رو کنار بزاری
  • +

    بسیار خوب، من متقاعد شده‌ام که If-Else بد است، حالا به من نشان بده که چطور از تقسیم‌بندی درهم و برهم کد + اجتناب کنم
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های ، رویا پاکزاد، حسن شهبازی، امیرحسین بقایی، + امیر شکری، حامد سعیدی، Amir Mokarchi در تهیه محتوا کمک کردند. شما هم می‌توانید مشارکت کنید. +

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید

+ + + + + + + \ No newline at end of file diff --git a/archives/num19.html b/archives/num19.html new file mode 100644 index 0000000..d44737d --- /dev/null +++ b/archives/num19.html @@ -0,0 +1,197 @@ + + + + + + + +
+ +

+ Softwaretalks +

+ خبرنامهٔ Softwaretalks +

+

+ شمارهٔ ۱۹ - پنجشنبه، ۲۰ خرداد ۱۴۰۰ +

+
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: حامد سعیدی، + امیرحسین بقایی، Amir Mokarchi شما نیز می‌توانید + مشارکت کنید. +

+
+ +

+
+ ارسال شده توسط پاکت +

+

+ سرویسِ پاکت اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید +

+
+
+
+ + diff --git a/archives/num2.html b/archives/num2.html new file mode 100644 index 0000000..4f7dd3b --- /dev/null +++ b/archives/num2.html @@ -0,0 +1,1210 @@ + + + + خبرنامه شماره ۲ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ +
+
+
+ +
+ + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+ + خبر‌نامه + مهندسان + نرم‌افزار
+

+ شماره ۲ - پنجشنبه، ۲۵ دی ۹۹ +

+
+
+
+
+
+ +
+ + + + +
+
+ +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + +
+  
+ + + + + + + +
+ + + + + + + + +
+
+ + +
+ این + متن + دو-قسمتی، + که + در + صفحه‌ی + ویرگول + «تکانه» + منتشر + شده + است، + نگاهی + میکند + به + تاریخچه‌ی + ورود + و + حضور + زنان + در + دنیای + برنامه‌نویسی + کامپیوتر +
+ +
+   +
+ + + +
+ اگر + به + حوزه + DevOps + و + Cloud + علاقه + دارید + یا + تو + این + حوزه + کار + میکنید، + داخل + این + کانال + یوتیوبی + میتونید + آرشیو + کنفرانس‌های + DevOpsCon + رو + مشاهده + کنید. +
+ +
+   +
+ + + +
+ نوشتن + کد + تمیز، + خوانا + و + قابل + توسعه + مهارتیه + که + به + مرور + و با + تمرین + زیاد + و + مطالعه + بدست + میاد. + اگر + شما + هم + از + این + دسته + برنامه‌نویسان + هستید + که + قصد + دارند + کد + تمیز + بنویسند + و از + قضا + PHP + هم + کار + میکنید، + پس + این + ریپوزیتوری + Clean + code + in + php + رو + حتما + باید + ‌ یک + نگاهی + بندازین. +
+ +
+   +
+ + + +
+ در + این + مطلب،‌ + نویسنده + توضیحاتی + درباره + عملکرد + CDN + و + این‌که + چطور + CDN + ها + سرورهای + ما + رو + پشت + خودشون + قایم + میکنند + میده. + در + عین + حال + توضیح + هم + میده + این + قایم + شدنه + همیشه + کارساز + نیست! +
+ +
+   +
+ + + +
+ در + این + ویدئو، + سروش + در + ۹۰ + دقیقه + درباره + مفاهیم + Aspect + Oriented + Programming + توضیح + می‌دهد + و با + ذکر + مثال + و + کدنویسی + در + جاوا + کاربرد + این + مفاهیم + را + نشان + می‌دهد
+   +
+ +
+   +
+ + + +
+ تو + این + مقاله + قراره + یه + پروژه + ساده + React + رو + با + استفاده + از + Docker + روی + سرور + مستقر + کنیم + و به + اصطلاح + Dockerize + کنیم. +
+ +
+   +
+ + + +
+ ارث + بری + (inheritance) + یک + مفهوم + بنیادی + و + کلیدی + در + برنامه‌نویسی + شی‌گرا + است.در + برنامه‌نویسی + نیز + این + واژه + مفهومی + مشابه + دنیای + واقعی + دارد + و به + معنای + ارث + بردن + خصوصیات + است. + در + این + نوشته + قصد + دارم + نگاهی + دوباره + به + ارث‌بری + در + جاوا + داشته + باشم. + در + ادامه + به + دو + سوال + درخصوص + ارث‌بری + در + جاوا + پاسخ + دهید + و + توانمندی + خود + را + محک + بزنید! +
+ +
+   +
+ +
+ --- +
+ +
+ در + این + شماره + از + خبرنامه، + دوستان + خوبی + به + نام‌های + رویا + پاکزاد، + امیرحسین + بقایی، + حامد + سعیدی، + علی + ناصری، + مرتضی + اسدی + در + تهیه + محتوا + کمک + کردند. + شما + هم + می‌توانید + با + ایجاد + یک + issue + جدید + در + گیت‌هاب + پروژه، + در + تهیه + محتوای + این + خبرنامه + در + شماره‌های + بعدی + به + ما + کمک + کنید. +
+ +
+   +
+
+
+ +
+
+  
+
+ + + + +
+
+ +
+ + + + + + + +
+ + + + + + + + + + + + + +
+  
+
+
+
+ ارسال شده توسط پاکت +
+ +
+ سرویس پاکت اسپانسر ارسال + ایمیلهای این خبرنامه است.
+ با کد تخفیف sota10 میتوانید از + ۱۰ درصد تخفیف در خرید پلنهای + پاکت بهره‌مند شوید
+
+
+
+  
+
+ +
+
+ +
+ + + + + + + + diff --git a/archives/num20.html b/archives/num20.html new file mode 100644 index 0000000..d020d49 --- /dev/null +++ b/archives/num20.html @@ -0,0 +1,182 @@ + + + + + + +
+ +

+ Softwaretalks +

+ خبرنامهٔ Softwaretalks +

+

+ شمارهٔ ۲۰ - پنجشنبه، ۲۷ خرداد ۱۴۰۰ +

+
+
    + +
  • + بهبود کارآیی (performance) ۱۰ برابری در برنامه‌های React + +

    + در این مقاله نویسنده مسیری که برای تشخیص و رفع مشکلات کارایی برنامه + داشته را توضیح می‌دهد. +

    +
    + +
  • +
  • + گزارش قطعی فستلی در 8 ژوئن 2021 (18 خرداد 1400) + +

    + هشت ژوئن، صدها سایت به مدت یک ساعت از دسترس خارج شدند. مشکل از CDN + فستلی بود. یک سرویس بزرگ که مجموعه خدمات ابری متنوعی به مشتریانش + ارائه می‌دهد. در این مطلب، ابتدا کمی تاثیرات این اتفاق را گفته‌ام و + سپس، مشکل پیش‌آمده و اقداماتی را که برای حل آن انجام دادند، + آورده‌ام. +

    +
    + +
  • +
  • + چه سرویس هایی به شما اجازه ی حذف حساب کاربری می دهند؟ + +

    + اگر شما هم خیلی اطلاعاتی که داخل اینترنت دارید رو مهم میدونید و + دلتون میخواد سرویس ها حقوقتون رو رعایت کنن حتما به این گزینه که یک + سرویس امکان حذف کامل اطلاعات حساب کاربری شما رو داشته باشه اهمیت + میدین این لینک لیست سرویس هایی رو داره که امکان حذف حساب کاربری شما + رو بهتون میده و البته اونایی که نمیدن هم هستن؛ شاید لزوما حذف کامل + اتفاق نیوفته ولی لااقل از در دسترس بودن عمومی خارج میشه :) +

    +
    + +
  • +
  • + اصولی ساده و بدیهی برای کد‌های آدمیزادی در PHP! | حالا نسخه + فارسیش + +

    + نسخه ی انگلیسی clean code php در خبرنامه های قبلی منتشر شده برای + تفریح یه نسخه ی فارسی ازش در آوردیم که زیر پروژه ی اصلی هم اضافه شده + اگر حوصله دارید مطالعه کنید و اصلاحاتی هم نیاز داره حتما اطلاع بدین +

    +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: حامد سعیدی، + امیرحسین مجیری، امیر شکری شما نیز می‌توانید + مشارکت کنید. +

+
+

+
+ ارسال شده توسط پاکت +

+

+ سرویسِ پاکت اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید +

+
+
+ + diff --git a/archives/num21.html b/archives/num21.html new file mode 100644 index 0000000..3c7f902 --- /dev/null +++ b/archives/num21.html @@ -0,0 +1,248 @@ + + + + + + +
+ +

+ Softwaretalks +

+ خبرنامهٔ Softwaretalks +

+

+ شمارهٔ ۲۱ - پنجشنبه، ۰۳ تیر ۱۴۰۰ +

+
+
    + +
  • + مدل OSI چطور کار میکند به زبانی ساده و شنیدنی + +

    + اگر دوست‌دارید بدونید شبکه چطور کار میکنه دیدن این ویدیو که بخشی از + درس آقای Nicholas Andre هستش، میتونه بهتون کمک کنه. ایشون خیلی + باانرژی و جالب مباحث رو توضیح میده. +

    +
    + +
  • +
  • + یکبار برای همیشه تفاوت برنامه‌نویس و توسعه‌دهنده و مهندس رو درک + کنیم + +

    + خیلی جالبه که برنامه‌نویس، توسعه‌دهنده و مهندس هنوز هم برای آدم‌ها + تفاوتشون مشخص نیست. از لحاظ حوزه ی تخصصی، دانش و جایگاه شغلی این سه + مورد با هم تفاوت‌ها و شباهت‌هایی دارن که یکبار وقت بزاریم بخونیم که + دیگه برای خودمون حداقل جا بیوفته +

    +
    + +
  • +
  • + حق فراموش شدن +

    + بسیاری از سرویس‌های اینترنتی اینگونه عمل می کنند که امکان حذف + حساب‌کاربری را به شما نمی دهند و از نظر ما کاربران این موضوع نقض + حریم شخصی است. با توجه به حق فراموش‌شدن یا Right to be forgotten این + یک تضاد می‌باشد. اگر شما هم این مشکل رو دارید در محتوای این ابزار + مشارکت کنید +

    +
    + +
  • +
  • + کتاب معماری + +

    + در این کتاب در فصول مختلف از «معماری» بخش‌های مختلف از کسب و کار + گرفته تا معماری بانک اطلاعاتی و نرم‌افزار و الگوهای طراحی API و + کنترل کیفیت و ... با معرفی ابزارها و روش‌ها صحبت می‌شود. این کتاب + رایگان است +

    +
    + +
  • +
  • + در باب تفاوت‌های Dependency injection و Service Locator + +

    + ببینیم چرا میگن Service Locator بده؛ فرقش با Dependency Injection + چیه و dagger 2 داره از کدوم استفاده می‌کنه +

    +
    + +
  • +
  • + از اشتباهات رایجی که مردم هنگام ساخت رزومه مرتکب می شوند ، اجتناب + کنید + +

    + رزومه کاری شما اولین و مهمترین چیز برای تماس گرفتن از شرکت رویایی + شماست. بنابراین شما باید از اشتباهات رایجی که مردم هنگام ساخت رزومه + مرتکب می شوند ، اجتناب کنید. در این مقاله ، من روی مواردی تمرکز دارم + که شما باید هنگام ساخت رزومه خود به خاطر بسپارید. +

    +
    + +
  • +
  • + براساس تحقیقات جدید، دارک مود ضرر بیشتری نسبت به لایت مود + دارد!! + +

    + ولی بسیاری از محققین بر این باورند dark mode بیشتر از اینکه مشکلی رو + حل کنه، خودش باعث بروز مشکلاتی برای چشم میشه. در این مقاله درباره + مشکلاتی که براساس تحقیقات، دارک مود برای ما ایجاد میکند آشنا خواهید + شد ولی در نهایت تصمیم نهایی دست شماست ... +

    +
    + +
  • +
  • + یک راهنمای شغلی: همیشه در حال استعفا دادن باشید + +

    + منظور این نیست که هی شرکت عوض کنین یا همیشه تهدید کنین که دارین + می‌رین یا با دیدن هر چیز ناملایم بگین که «پس من می‌رم». فلسفه + نویسنده مقاله 'همیشه در حال رفتن باشید'، ایده‌اش اینه که همیشه جوری + کار کنین که انگار دارین شرکت رو ترک می‌کنین. همیشه در حال یاد دادن + کارهاتون به بقیه باشین، همیشه در حال این باشین که بقیه بتونن شما رو + جایگزین کنن و همیشه کارهایی که می‌کنین رو اتوماتیک کنین. +

    +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: امیرحسین بقایی، + امیر شکری، حامد سعیدی، حمیدرضا شجراوی، + امیر ابوئی شما نیز می‌توانید + مشارکت کنید. +

+
+

+
+ ارسال شده توسط پاکت +

+

+ سرویسِ پاکت اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید +

+
+
+
+ + diff --git a/archives/num22.html b/archives/num22.html new file mode 100644 index 0000000..b426b7b --- /dev/null +++ b/archives/num22.html @@ -0,0 +1,208 @@ + + + + + + +
+ +

+ Softwaretalks +

+ خبرنامهٔ Softwaretalks +

+

+ شمارهٔ ۲۲ - پنجشنبه، ۱۰ تیر ۱۴۰۰ +

+
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: حامد سعیدی، + محمد مهدی عصار، امیر شکری، هادی مشیدی، + امیر ابوئی شما نیز می‌توانید + مشارکت کنید. +

+
+

+
+ ارسال شده توسط پاکت +

+

+ سرویسِ پاکت اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید +

+
+
+ + diff --git a/archives/num23.html b/archives/num23.html new file mode 100644 index 0000000..3d1d8ce --- /dev/null +++ b/archives/num23.html @@ -0,0 +1,217 @@ + + + + + + +
+ +

+ Softwaretalks +

+ خبرنامهٔ Softwaretalks +

+

+ شمارهٔ ۲۳ - پنجشنبه، ۱۷ تیر ۱۴۰۰ +

+
+
    + +
  • + بررسی امکانات PHP 8.1 که November 25, 2021 خواهد آمد + +

    + اگر دوست‌ دارید بدونید در PHP 8.1 که به زودی ریلیز میشود، چه + تغییراتی صورت گرفته یا چه چیزهایی افزوده شده‌است، این مطلب از آقای + Brent Roose رو از دست ندید. +

    +
    + +
  • +
  • + سیستم های سنترالایز و غیر سنترالایز + +

    + سیستم های سنترالایز و غیر سنترالایز (متمرکز و غیرمتمرکز) و همه چیز + درمورد اون هارو خیلی خلاصه بخونید ... +

    +
    + +
  • +
  • + هنر یادگیری برای توسعه‌دهندگان نرم‌افزار + +

    + این نوشته ضمن مرور شیوه‌های یادگیری مناسب توسعه‌دهندگان نرم‌افزار از + اشتباهاتی که باید از آن‌ها اجتناب کرد و همچنین سوالاتی که پیش از + یادگیری هر مبحث جدیدی باید به آن‌ها پاسخ داد می‌گوید +

    +
    + +
  • +
  • + استراحت کردن فقط خوابیدن نیست، برای تجدید قوا و بهره وری بیشتر + انواع استراحت را بشناسیم + +

    + برای بهره وری بیشتر و پیشرفت در کار، همه‌ی ما به استراحت نیاز داریم، + ولی استراحت فقط خوابیدن یا سفر رفتن نیست. بعضی وقت ها برای رفع خستگی + به مسافرت میرویم و خسته‌تر برمیگردیم. شاید شناخت انواع استراحت که در + واقع مربوط میشود به انواع خستگی‌ها بتواند کیفیت زمانی که برای آن + میگذاریم را افزایش دهد و بتوانیم بهتر تجدیدقوا کنیم. در این مقاله، + هفت نوع استراحت عنوان شده است. +

    +
    + +
  • +
  • + اثبات فنی کند بودن سرعت اجرای کدها در ویندوز نسبت به لینوکس + +

    + از آنجائیکه نحوه برنامه نویسی به زبان اسمبلی در سیستم عامل ویندوز با + استفاده از اسمبلر MASM تعریف میشود، و از آنجائیکه اصولا ساختار + کدنویسی در این اسمبلر نسبت به سایر اسمبلر ها مانند GASM,TASM برای + پردازشگر های Intel در نحوه صرف دستورات تفاوت های عمده ای دارد، + ولی... +

    +
    + +
  • +
  • + معرفی پکیج Excludable در لاراول + +

    + در برخی از پروژه‌ها شما می‌خواهید که مثلا تعدادی از محصولات یا + مقالات سایت شما توسط کاربران عادی قابل رویت یا حتی جستجو نباشد و فقط + تعداد خاصی از اعضا (مثلا فقط ادمین‌ها) بتوانند آنها را ببینند. خب + برای پیاده سازی این امکان شما باید کلی کد بزنید و حتی تغییراتی در + ساختار جداول دیتابیس ایجاد کنید تا بتوانید چنین فیچری را به سایت + خودتان اضافه کنید. اما حالا توسعه دهندگان لاراول با ارائه‌ی یک پکیج + خوب به نام Excludable این امکان را برای شما به راحتی فراهم کردند +

    +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: امیرحسین بقایی، + امیر شکری، حامد سعیدی، وحید نادری، + امیرابوئی، امیر ابوئی شما نیز می‌توانید + مشارکت کنید. +

+
+

+
+ ارسال شده توسط پاکت +

+

+ سرویسِ پاکت اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید +

+
+
+ + diff --git a/archives/num24.html b/archives/num24.html new file mode 100644 index 0000000..b0b6b14 --- /dev/null +++ b/archives/num24.html @@ -0,0 +1,210 @@ + + + + + + + +
+ +

+ Softwaretalks +

+ خبرنامهٔ Softwaretalks +

+

+ شمارهٔ ۲۴ - پنجشنبه، ۲۴ تیر ۱۴۰۰ +

+
+
    + +
  • + اولین وبسایت جهان را ببینید +

    + روزهایی که تیم‌های فنی در آزمایشگاه CERN تونستن پروتکل HTTP رو + پیاده‌سازی و اجرا کنند رو میشه گفت اولین روزهای دنیای وب! و این لینک + اولین وبسایت رو نشون میده. +

    +
    + +
  • +
  • + معنای ویندوز ۱۱ برای توسعه‌دهندگان نرم‌افزار + +

    + با معرفی ویندوز ۱۱ موضوع امکانات تازه برای توسعه‌دهندگان نیز اهمیت + پیدا کرده. اینجا مایکروسافت درباره ۵ حوزه مهم برای توسعه‌دهندگان در + ویندوز ۱۱ صحبت می‌کند. در انتهای این نوشته،‌ لینکی به نسخه ضبط شده + یک ساعته در یوتوب هم هست. +

    +
    + +
  • +
  • + راهنمای تصویری انواع SQL Join + +

    + در این نوشته که مناسب همه افراد چه تازه‌کارها و چه با تجربه‌هاست، + انواع SQL Join به صورت تصویری توضیح داده شده است. همچنین در همین + سایت نسخه پویانمایی شده کار با کوئری‌های مختلف نیز وجود دارد. +

    +
    + +
  • +
  • + چگونه داده‌ها را به Data Warehouse (Google Big Query) منتقل + کنیم؟ + +

    + پایگاه‌های داده و اطلاعات، واژگانی رایج در زندگی بسیاری از ما هستند. + دنیای پیرامون ما پر از داده‌هاست. داده‌ها با انواع مختلف‌شان‌ ما را + احاطه کرده‌اند. در این دوره که پیشرفت فناوری‌های ارتباطی سرعت گرفته، + هیچ داده‌ای بی‌معنا نیست و کار ما فهمیدن حرف حساب داده‌هاست! ما با + این مسیر همراستا شده‌ایم و از بهترین ابزارها و متدها استفاده + می‌کنیم. +

    +
    + +
  • +
  • + چگونه میتوان سیستمی را طراحی کرد که برای 100 میلیون کاربر جوابگو + باشد + +

    + طراحی سیستمی که از صدها میلیون کاربر پشتیبانی کند کار آسانی نیست. + این همیشه یک چالش بزرگ برای یک معمار نرم‌افزار است. در این نوشته + خواهید خواند که چگونه میشود به سادگی از ۱۰۰ میلیون کاربر پذیرایی کرد +

    +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: امیرحسین بقایی، + حامد سعیدی، علی اورجی و معین موحدنیا، + راشد عبیدی شما نیز می‌توانید + مشارکت کنید. +

+
+

+
+ ارسال شده توسط پاکت +

+

+ سرویسِ پاکت اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید +

+
+
+ + diff --git a/archives/num25.html b/archives/num25.html new file mode 100644 index 0000000..775bab9 --- /dev/null +++ b/archives/num25.html @@ -0,0 +1,74 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۲۵ - پنجشنبه، ۳۱ تیر ۱۴۰۰ +

+
+
    +
  • + نقشه کابل‌های زیردریایی تشکیل‌دهنده‌ اینترنت جهانی
    اگر شما هم به مباحث اینترنت و این که دقیقا اینترنت چطوری کار میکنه علاقه دارید، پس دیدن این نقشه باید براتون جذاب و دیدنی باشه. +
  • +
  • + چالش‌های فنی قابلیت کار واتس‌اپ در چند دستگاه
    در این نوشته که در وبلاگ مهندسی فیسبوک منتشر شده، موضوع کار واتس‌اپ در چند دستگاه و حفظ محرمانگی و رمزنگاری سرتاسری مورد توجه قرار گرفته و شیوه‌ای که مهندسان برای حل این چالش استفاده کردند توضیح داده شده است. +
  • +
  • + معرفی تست فریمورک PestPHP
    Pest یک تست فریمورک که بر پایه PHPUnit نوشته شده اما چند صد برابر باحال تر و ساده تر و و تست نویسی را لذت بخش تر می کنه. توی این مقاله میتونید یکسری ویدئو را مشاهده کنید و خیلی سریع با این تست فریمورک زبان PHP آشنا بشید. +
  • +
  • + انتخاب بازه‌ای از المنت‌ها با :nth-child در CSS
    اگر چند div داشته باشید و بخواهید از div دوم به بعد را انتخاب کنید می‌توانید از `div:nth-child(n+2)` استفاده کنید. این سلکتور، تمام divها از دوم تا آخر را انتخاب می‌کند، اما اگر بخواهید از دوم تا پنجم را انتخاب کنید چه می‌کنید؟ راه حل را با توضیح بیشتر در این مطلب بخوانید. +
  • +
  • + خواندن هر کتابی چقدر زمان می‌بره؟
    قبل از این که هر کتابی را بخونید از طریق سایت How long to read از تخمین زمان خوندن اون کتاب مطلع بشید. همچنین بهتون اجازه می‌ده قسمتی از کتاب رو بخونید تا با سرعت خوندن خودتون زمان کتاب رو تخمین بزنه. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: امیرحسین بقایی، + حامد سعیدی، + AriaieBOY، + Rahmanism + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num26.html b/archives/num26.html new file mode 100644 index 0000000..79b01d3 --- /dev/null +++ b/archives/num26.html @@ -0,0 +1,86 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۲٦ - پنجشنبه، ۰۷ مرداد ۱۴۰۰ +

+
+
    +
  • + راهنمای رعایت حقوق دیجیتال کاربران برای شرکت‌های فناوری: شفافیت و پاسخگویی
    با وجود همه‌ی نگرانی‌ها در مورد اینترنت در ایران، هنوز هم راه‌هایی هست که شرکت‌های نوپا تا جایی که میتونن به حقوق کاربرانشون احترام بذارن و شفافیت و پاسخگویی رو سرلوحه‌ی کارشون قرار بدن. این پست شامل توصیه‌ها و دفترچه‌ی راهنماییه که بر اساس شاخص رتبه‌بندی حقوق دیجیتال نوشته شده.  +
  • +
  • + چرا نباید هر چیزی که در کتاب و مقالات می‌خوانیم اجرا کنیم؟
    این روزها ما شاهد گسترش خیلی خیلی زیاد و یکباره ترجمه مطالب انگلیسی به فارسی در تمام رشته ها و بخصوص حوزه مدیریت هستیم، مطالب بسیار زیبا که کاملا به نظر اجرایی و مفید میایند. مطالبی که از دل دنیای واقعی آمدند، کارآمد هستند، و تنها کافی است ما آنها را یاد بگیریم و اجرا کنیم: مثلا چگونه به کارمندان بازخورد بدهیم، چگونه تیم بسازیم، چگونه افراد را مدیریت کنیم، چگونه در تیم ها تعامل نماییم… اما مشکل کجاست؟ مشکل اینجاست که زمینه یا فرهنگ خودمان را در هنگام اجرای این ایده‌های مترقی کاملا نادیده می‌گیریم و فرض بر این هست که هر ایده‌ای در هر جایی قرار است کار کند. +
  • +
  • + دانشنامه ای آزاد برای بررسی سانسور اینترنت (فیلتر و تحریم)
    دانشنامه ای آزاد و در حال توسعه برای بررسی تخصصی سانسور اینترنت که در آن می توانید بیاموزد چطور فیلترینگ و تحریم را با دانش و یا بدون دانش تخصصی تشخیص دهید. مطلب های منتشر شده تاکنون: الف)آموزش ساده تا پیشرفته ی OONI. ب)سانسور در ارتباط DNS. ج)سانسور در لایه‌ی شبکه و انتقال. د)سانسور در لایه‌ی کاربرد. +
  • +
  • + برای ویندوز 11 کامپیوتر جدید نخرید!
    همانطور که می دانید ویندوز ۱۱ با سخت افزارهای قدیمی به صورت پیشفرض سازگار نیست ولی در این ویدیو که توسط تیم LTT ساخته شده است، نحوه نصب ویندوز ۱۱ روی سخت افزارهای قدیمی توضیح داده می شود. اگر قصد نصب کردن ویندوز ۱۱ را دارید حتما این ویدیو را در یوتیوب مشاهده کنید. +
  • +
  • + قواعد نام گذاری توابع و متغیر‌ها در جاوااسکریپت
    ترجمه ی فارسی naming cheatsheet را در این لینک بخوانید اگر مشکلی در ترجمه بود با مشارکتتون این ترجمه را کامل‌تر و خواناتر کنید +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + رویا پاکزاد، + + + Rahmanism، + + + سید حسین درواری، + + + علی کرباسی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num27.html b/archives/num27.html new file mode 100644 index 0000000..4ff13b2 --- /dev/null +++ b/archives/num27.html @@ -0,0 +1,77 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۲۷ - پنجشنبه، ۱۴ مرداد ۱۴۰۰ +

+
+
    +
  • + ترجمه کتاب eloquent js به فارسی
    کتاب eloquent js خیلی ساده و راحت مباحث جالبی در JS رو مطرح میکنه که مهران عفتی عزیز این کتاب رو به زبان فارسی هم ترجمه کرده و میتونید این کتاب رو به زبان فارسی به صورت آنلاین مطالعه کنید. +
  • +
  • + ‏Event Loop جاوااسکریپت به زبان ساده
    اگر شما هم از دنیای زبان‌های برنامه‌نویسی چندنخی (Multithreaded) به دنیای تک‌نخی جاوااسکریپت مهاجرت کرده باشین، ممکنه رفتار Promiseها و دستورات async براتون گیج کننده باشه. این ویدیو به زبان ساده مفاهیم بنیادی مربوط به این قابلیت‌ها رو توضیح میده. +
  • +
  • + چرا از Null استفاده نکنیم؟
    نویسنده در این مقاله نظر خودش رو درباره علل عدم استفاده از Null در برنامه‌نویسی بیان کرده که خوندنش احتمالا نکات جالبی برای بررسی و تفکر بیشتر برامون داره. +
  • +
  • + داکر چگونه ایزوله‌سازی را فراهم می‌کند؟
    داکر با استفاده از ویژگی‌هایی که تو سیستم‌عامل‌ها وجود داره، برای ما یک محیط ایزوله‌ای رو فراهم می‌کند. اینکه این ایزوله‌سازی سازی چطوری انجام میشه و داکر از چه ویژگی‌هایی استفاده می‌کنه بحثیه که تو این پست به اون پرداخته میشه. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + مصطفی فرزان، + + + Vahid Fathi. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num28.html b/archives/num28.html new file mode 100644 index 0000000..a1a613f --- /dev/null +++ b/archives/num28.html @@ -0,0 +1,83 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۲۸ - پنجشنبه، ۲۱ مرداد ۱۴۰۰ +

+
+
    +
  • + وب چطور کار میکند؟
    وقتی در مرورگر میزنیم google.com و اینتر میکنیم، چه اتفاقاتی میفتد؟ در این مطلب نویسنده به ترتیب سعی کرده مهم‌ترین اتفاقات رو بررسی کنه. +
  • +
  • + با من حرف بزن! سیر تا پیاز دادن بازخورد
    یادگیری مهارت‌های نرم جز اون دسته از مواردیه که، ما رو تو مسیر رشد بهتری قرار می‌دهد. توانایی دادن بازخورد از چمله اون چیزهاییه باعث بهبود کار و روحیه تیمی میشه. پس این شما و این یک مطلب خوب در رابطه با این موضوع! +
  • +
  • + داکر و آشنایی با overlay2
    در ادامه مطلب هفته‌ی قبل هفته نامه(ایزوله‌سازی داکر)، این بار سراغ فایل سیستم‌ها تو داکر میریم. اینکه داکر چطور به کمک فایل سیستم‌ها(تو این مطلب به طور خاص overlay) ایزوله‌سازی فایل‌ها رو برای ما مهیا می‌کنه. ایده و نحوه مهندسی این موضوع از جمله مواردیه که می‌تونه براتون جالب باشه! +
  • +
  • + ترجمه فارسی کتاب هنر کد خوانا
    این ترجمه کتاب The Art Of Readable Code است که در دو قالب PDF و Markdown در مخزن گیت‌هابی قرار داده شده است. +
  • +
  • + ترجمه فارسی مفاهیم کد تمیز در جاوااسکریپت
    ترجمه‌ فارسی 'کدتمیز در جاوااسکریپت' را بخوانید و اگر مشکلی در ترجمه مشاهده کردید حتما در بهترشدن ترجمه مشارکت کنید. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + وحید فتحی، + + + حامد سعیدی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num29.html b/archives/num29.html new file mode 100644 index 0000000..5fcdcd0 --- /dev/null +++ b/archives/num29.html @@ -0,0 +1,83 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۲۹ - پنجشنبه، ۰۴ شهریور ۱۴۰۰ +

+
+
    +
  • + موزیک‌ویدیوی Up&Up گروه Coldplay چطور ساخته شد؟
    اگر موزیک‌ویدیوی تخیلی و جالب Up&Up گروه Coldplay رو دیده باشید احتمالا از دیدن خلاقیت و وصل‌کردن چیزهای غیرمرتبط بهم لذت بردین. ولی اگر به پشت‌صحنه‌ این‌جور چیزها علاقه دارید، میتونید توی این ویدیو ببینید که چطور این ایده پیاده شده. +
  • +
  • + بهانه های توسعه دهنده ها
    این سایت رو هر بار که بازش میکنی بهت یه بهونه جدید میده که بدیش به کارفرما :))) +
  • +
  • + کار با HttpClient در C#
    در این مطلب با نحوه کار با HttpClient در سی شارپ آشنا می‌شوید و با مثال‌هایی نحوه ایجاد درخواست‌های Get و Post را خواهید دید. همچنین نحوه ارسال چندین درخواست به صورت async را مشاهده خواهید کرد. +
  • +
  • + چطور برای کدها کامنت بنویسیم؟
    در این مقاله از وبلاگ Stack Overflow درباره ۹ قانون کامنت نویسی در کد به عنوان Best Practice صحبت شده است. +
  • +
  • + کتابچه الزامات امنیتی داکر
    در این کتابچه مباحث امن‌سازی مرتبط با داکر به همراه توضیحات ابتدایی کار با داکر و دستورات اصلی داده شده است. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + امید پاکدل، + + + Rahmanism، + + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num3.html b/archives/num3.html new file mode 100644 index 0000000..02ba95b --- /dev/null +++ b/archives/num3.html @@ -0,0 +1,1280 @@ + + + + خبرنامه شماره ۳ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ +
+
+
+ +
+ + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+ +
+ خبرنامه + مهندسان + نرم‌افزار
+

+ شماره ۳ - پنجشنبه، ۰۲ بهمن ۹۹ +

+
+
+
+
+
+ +
+ + + + +
+
+ +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + +
+  
+ + + + + + + +
+ + + + + + + + +
+
+
+ به + خبرنامه + SoftwareTalks + خوش + آمدید. + این + یک + خبرنامه + هفتگی + ایمیلی + است + که + در + آن + هر + هفته + لینک‌هایی + شامل + محتوای + مرتبط + با + توسعه + نرم‌افزار + را + برای + مشترکین + ایمیل + می‌کنیم. + این + یک + پروژه + اپن‌سورس + است + و + شما + هم + می‌توانید + از + طریق + ثبت + issue + جدید + در + مخزن + گیت‌هاب + پروژه + به + ما + در + تهیه + محتوای + خبرنامه‌های + بعدی + کمک + کنید. + اگر + خبرنامه + را + مفید + می‌دانید، + اشتراک + در + آن + را + به + دوستان + خود + پیشنهاد + کنید. + صفحه + ثبت + اشتراک + جدید: https://newsletter.softwaretalks.ir +
+ +
  +
+ + + +
+ مروری + بر + مفهوم + نرم‌افزار + و + دید‌های + مختلف + به + آزادی + نرم‌افزار. + همچنین + بررسی + وضعیت + نرم‌افزار + آزاد + در + ایران
+   +
+ + + +
+ کتاب + Clean + Code + نوشته‌ی + Robert + C. + Martin + کتابی + نام‌آشنا + برای + اکثر + ماست + و + خواندنش + به + هر + توسعه‌دهنده‌ی + نرم‌ا‌فزاری + که + علاقمند + به + نوشتن + کدهای + بهتر + و + پربازده‌تر + است، + توصیه + می‌شود. + اگر + این + کتاب + را + نخواندید، + الان + فرصت + خوبی + است + که + به + نکات + مهم + کتاب + در + این + ریپازیتوری + گیت‌هاب + نگاهی + بیاندازید.
+   +
+ + + +
توی + این + مقاله + قراره + از + Docker + مهاجرت + کنیم + به + Docker + compose + و + ببینیم + که + چقدر + کارمون + راحت + تر + میشه + برای + اجرای + همزمان + چند + پروژه
+   +
+ + + +
AWK + یک + زبان + برنامه‌نویسی + مفسری + است + که + برای + پردازش + متن + طراحی + شده + و + عموماً + به + عنوان + ابزاری + برای + گزارش‌گیری + و + استخراج + داده‌ها + مورد + استفاده + قرار + می‌گیرد. + این + زبان + برنامه‌نویسی، + تبدیل + به + یکی + از + ویژگی‌های + استاندارد + در + سیستم‌عامل‌های + خانواده + یونیکس + شده‌است. + در + این + ویدئو + مبانی + کار + با + این + زبان + و + چند + نمونه + گزارش‌گیری + و + همین + طور + ساختن + چندبرنامهٔ + کوچک + در + کامندلاین + آموزش + داده + شده + است +
+ +
  +
+ + + +
یکی + از + مواردی + که + قبل + از + جلسات + مخصوصا + جلسات + بین + المللی + باید + بدانید + اصطلاحات + و + کلمات + اختصاری + هست + که + دونستن + اونها + باعث + میشه + تا + حد + قابل + قبولی + بتونید + با + محیط + آشنا + باشید + اگر + بار + اولتون + هست + که + توی + یه + جلسه + ی + تیمی + خارجی + می + خواید + شرکت + کنید + احتمالا + خیلی + بدردتون + میخوره؛ + البته + تیم + های + خفن + ایرانی + هم + از + این + اصطلاحات + بی + بهره + نیستن
+   +
+ + + +
و + Reactive + !یکی + از + overloaded + ترین + کلمات + دنیای + امروز + برنامه + نویسی! + در + این + پست + میخوایم + Reactive + Programming + رو + خیلی + ساده + و + خودمونی + معرفی + کنیم... +
+ +
  +
+ + + +
+ فلسک + یا + Flask + یکی + از + کتابخانه‌های + پایتون + برای + پیاده‌سازی + وب‌سرویس + و + API + است + که + بعنوان + یک + میکروفریمورک + ساده + اما + سبک + محسوب + می‌شود. + در + این + نوشتار + به + چگونگی + استفاده + از + Flask + در + محیط + Production + (محیط + عملیاتی + یا + محصول) + با + استفاده + از + Reverse + Proxy + و + gunicorn + (بعنوان + WSGI) + و + بصورت + یک + سرویس + لینوکسی + پرداخته + شده + است. +
+ +
  +
+ +
+ ----- +
+ +
 در + این + شماره + از + خبرنامه، + دوستان + خوبی + به + نام‌های + ابراهیم + نجاتی، + مرتضی + اسدی، + علی + ناصری، + وحید + نایینی، + Amir + Shokri، + محمد + واحدی، + سیدمصطفی + افزونی + در + تهیه + محتوا + کمک + کردند +
+
+
+ +
+
+  
+
+ + + + +
+
+ +
+ + + + + + + +
+ + + + + + + + + + + + + +
+  
+
+
+ +
ارسال + شده توسط پاکت +
+ +
سرویس + پاکت اسپانسر ارسال ایمیلهای این + خبرنامه است.
+ +
با کد + تخفیف sota10 میتوانید از ۱۰ درصد + تخفیف در خرید پلنهای پاکت + بهره‌مند شوید
+
+
+  
+
+ +
+
+ +
+ + + + diff --git a/archives/num30.html b/archives/num30.html new file mode 100644 index 0000000..c346ef4 --- /dev/null +++ b/archives/num30.html @@ -0,0 +1,90 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳۰ - جمعه، ۱۲ شهریور ۱۴۰۰ +

+
+
    +
  • + بوت چندگانه روی فلش مموری
    احتمالا شده که یه فلش مموری رو با ایمیج ویندوز بوت کرده باشید. اگه بخواید رو همون فلش ایمیج لینوکس بریزید قاعدتا باید دوباره فرمتش کنید. Ventoy ابزار جدیدیه که به شما امکان داشتن چنتا ایمیج روی یک فلش مموری رو میده بدون نیاز به فرمت و پارتیشن بندی دوباره. کافیه یه بار روی یه فلش نصبش کنید. بار اول پارتیشن بندی انجام میشه. از این به بعد هر ایمیج iso، img و حتی vhd رو روی فلش کپی کنید، ventoy اون رو به لیست بوتش اضافه می‌کنه و نیاز به هیچ کار دیگه‌ای نیست. با ایمیج‌های متعددی تست شده و بعیده کارتون رو راه نندازه. 👌 +
  • +
  • + بهبود کارایی در دات نت ۶
    در این بلاگ شما با خلاصه‌ای از تغییرات زیاد دات نت ۶ آشنا می‌شوید و کارایی این نسخه‌ی دات نت با نسخه‌های قبلی مقایسه می‌شود. خواندن این مطلب را به برنامه نویسان سی شارپ اکیدا توصیه می‌کنم. +
  • +
  • + سوالات مصاحبه فنی علی بابا
    سرویس علی بابا در ایران مجموعه‌ای از سوالاتی که در مصاحبه فنی طرح می‌کنند را به صورت اپن‌سورس در گیت‌هاب منتشر کردند +
  • +
  • + چگونه اطلاعات شخصی شما به صورت آنلاین محافظت می شود؟
    در این نوشته در مورد حریم خصوصی و اهمیت حفظ آن می خوانید و به بررسی قوانین مختلف در این حوزه پرداخته می شود و شیوه نامه های امنیتی کوتاهی را مطالعه خواهید کرد ... +
  • +
  • + نحوه استفاده از HttpPatch در Asp.Net Core
    به طور معمول برای ویرایش اطلاعات از HttpPut استفاده میکنیم. در این حالت باید تمامی فیلدهای مربوط به موجودیت را ارسال کنیم. اما اگر فقط یکی دوتا از فیلدها نیاز به ویرایش داشته باشند چه نیازی به ارسال مابقی فیلدهاست؟ +با استفاده از HttpPatch میتوانیم فقط فیلدهایی را که نیاز به ویرایش دارند را به API ارسال کنیم. +
  • +
  • + ایجاد سرویس ویندوز برای اجرای خودکار تسک ها با استفاده از Topshelf, Quartz و log4net
    توی خیلی از سازمان ها و شرکتها, نیاز به یکسری تسک هست که سرساعت خاصی انجام بشن. مثل تهیه یک گزارش, ارسال یک فایل و ... اگر تعداد اینها زیاد باشه بهتر هست که از یک سرویس برای اینکار استفاده بشه. این مطلب بهمون کمک میکنه که سرویس بهتری بسازیم. اینجا از Topshelf, Quartz و log4net با هم استفاده شده. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + Rahmanism، + + + احمدرضا ساغری، + + + حامد سعیدی، + + + امیر شکری، + + + میرحسین حسینیون . + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num31.html b/archives/num31.html new file mode 100644 index 0000000..e400ee8 --- /dev/null +++ b/archives/num31.html @@ -0,0 +1,80 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +
+

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳۱ - جمعه، ۲٦ شهریور ۱۴۰۰ +

+

این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است

+
+
    +
  • + طراحی ماژولار مونولتیک
    در این سلسله مطالب، نویسنده تلاش کرده تجربیات و نظراتش رو درباره طراحی ماژولار (قطعه قطعه) نرم‌افزارهای مونولتیک بنویسه که خوندنش خالی از لطف نیست و میتونه ماها رو با مباحث یا کلمات کلیدی جدیدی آشنا بکنه. +
  • +
  • + Ship / Show / Ask
    مارتین فولر در این نوشته به معرفی شیوه branching تحت عنوان Ship Show Ask می‌پردازد. در این شیوه قانون این است که Code Review یا تایید برای ادغام شدن همه Pull Requestها لازم نیست و افراد می‌توانند PRهای خودشان را ادغام کنند. branch ها نیز باید به صورت مداوم rebase شوند. فولر در این نوشته بخش‌های مختلف این شیوه را توضیح می‌دهد. +
  • +
  • + هوش مصنوعی جایگزین مهندس های نرم افزار هم می شود؟
    هوش مصنوعی که این روزها خیلی بین آدم ها اسمش هست و در مورد اون حرف میزنن این پیشرفت های زیادی کرده یه روز هوش مصنوعی نقاشی میکشه یه روز آهنگ میسازه یه روز فیلم تولید میکنه اما ممکنه جایگزین برنامه نویس ها هم بشه؟؟؟ برای مطالعه ی کامل روی لینک محتوا بزنید ... +
  • +
  • + Visualize کردن کد مخازن در گیت‌هاب
    نمایش کل ساختار یک پروژه در یک نگاه تصویری +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + حامد سعیدی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+
+ + \ No newline at end of file diff --git a/archives/num32.html b/archives/num32.html new file mode 100644 index 0000000..0b9cff1 --- /dev/null +++ b/archives/num32.html @@ -0,0 +1,80 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +
+

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳۲ - جمعه، ۰۲ مهر ۱۴۰۰ +

+

این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است

+
+
    +
  • + با واژه‌دان زیباتر بنویسید
    «برایِ این دکمه چه اسمی انتخاب کنم؟»، «این پیامِ خطا را چگونه بنویسم؟»، «این قابلیت را با چه عباراتی توضیح بدهم؟»، «برایِ این منو از چه کلماتی استفاده کنم؟» واژه‌دان کمک می‌کند تا سریع‌تر جوابِ این سوالات را پیدا کنید. این برنامه خصوصاً برایِ UX Writerها ابزاری مفید و حیاتی است..." +
  • +
  • + راهنمای کامل شیوه برخورد با آدم‌های چغر و بد بدن در حوزه توسعه نرم‌افزار
    در این سایت، راهنمایی در خصوص تیپ‌های مختلف آدم‌ها در نقش‌های مختلف مرتبط با توسعه نرم‌افزار و چگونگی سر و کله زدن با آن‌ها به تفکیک بیان شده است. +
  • +
  • + ساختار سوییچ‌کیس وارد پایتون می شود!
    توی این مطلب، قراره بهتون بگیم که سوییچ‌کیس‌ها چی هستن و اون‌ها رو در آینده چجوری در پایتون پیاده میکنیم. +
  • +
  • + سه تنظیم گیت که بهتره پیش فرض باشن
    تنظیماتی در گیت وجود‌ داره که اگه به صورت پیش‌فرض فعال باشن، احتمالا از خیلی دردسرها جلوگیری می‌کنن و با پیشگیری از این مشکلات باعث صرفه جویی در وقت و اعصاب و ... می‌شن. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + سیدایوب کوکبی، + + + حامد سعیدی، + + + Rahmanism. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+
+ + \ No newline at end of file diff --git a/archives/num35.html b/archives/num35.html new file mode 100644 index 0000000..9fd7115 --- /dev/null +++ b/archives/num35.html @@ -0,0 +1,80 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +
+

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳۵ - شنبه، ۱۷ مهر ۱۴۰۰ +

+

این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است

+
+
    +
  • + چطور لاگ بنویسیم؟
    در این مطلب، نویسنده به بیان تجربیات ساده ولی مهمی از کار با Log ها و این که چطور Log بنویسیم میپردازه که احتمالا برای ما نیز مفیده. +
  • +
  • + هفت حقیقت شگفت انگیز بعد از تبدیل شدن به توسعه دهنده نرم افزار
    در این دست‌نوشته حقیقت‌هایی در مورد اینکه بعد از تبدیل‌شدن به یک توسعه دهنده نرم‌افزار با آن روبرو می شوید می‌خونید البته برای هر فرد تفاوت‌هایی شاید وجود داشته باشه ولی خیلی از این حقایق کاملا برای همه یکسان است؛ مثل تفاوت محیط کار و محیط تحصیل، یادگیری بی‌انتها، نیازمندی به اشتیاق و ... +
  • +
  • + چه شکلی با چندخط کد میشه 25 برابر سایت رو سریع کرد
    خیلی کوتاه داخل این نوشته توضیح داده میشه که چه شکلی با Radis و CDN میشه صفحات رو تا 25 برابر سریعتر کرد. جزئیات زیادی داخل نوشته هست که حتما کامل بخونید .... +
  • +
  • + بهبود کارآیی رنگ‌آمیزی جفت براکت‌ها در VS Code
    در این نوشته فنی، مساله پیدا کردن و رنگی کردن جفت براکت‌ها در کدها داخل VS Code و بهبود کارآیی ۱۰ هزار برابری این کار بررسی شده +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + امیر شکری، + + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+
+ + \ No newline at end of file diff --git a/archives/num36.html b/archives/num36.html new file mode 100644 index 0000000..dc416c6 --- /dev/null +++ b/archives/num36.html @@ -0,0 +1,83 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +
+

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳٦ - شنبه، ۲۴ مهر ۱۴۰۰ +

+

این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است

+
+
    +
  • + چطور امنیت HTML رو به شکل صحیح پیاده کنیم؟
    این مقاله یکی از چندین بخش مربوط به ساخت صحیح فرم‌های HTML است که به مباحث امنیت فرم‌ها با توضیح مفاهیم و مثال می‌پردازد +
  • +
  • + فلاتر یا ری اکت نیتیو !؟
    یک مقایسه ی کامل بین فلاتر و ری اکت نیتیو را به طور کامل بخوانید و بعد از این مقایسه انتخاب بهتری برای شروع یکی از این موارد داشته باشید ... +
  • +
  • + بهمون دروغ گفتن، جاوااسکریپت اتفاقا خیلی سریعه
    یه قانون معروف هست که میگه: هر اپی رو که بشه با جاوااسکریپت نوشت، بالاخره حتما با جاوااسکریپت نوشته خواهد شد. +
  • +
  • + سلام IPv6: آموزشی مختصر مناسب کابران IPv4
    در این مقاله، نویسنده نحوه کار مفاهیم شناخته شد‌ه IPv4 را، با محوریت شبکه‌های خانگی و اداری کوچک، در IPv6 توضیح می‌دهد. بنابراین اگر درباره DHCP یا NAT اطلاعاتی دارید و کنجکاوید بدانید نحوه عملکرد آن‌ها در IPv6 چگونه است، این مطلب مناسب شماست. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + امیر شکری، + + + Rahmanism، + + + slashsbin. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+
+ + \ No newline at end of file diff --git a/archives/num37.html b/archives/num37.html new file mode 100644 index 0000000..a32e828 --- /dev/null +++ b/archives/num37.html @@ -0,0 +1,80 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳۷ - شنبه، ۰۸ آبان ۱۴۰۰ +

+
+
    +
  • + آپدیت کانتینرها به وسیله واچ‌تاور
    گاهی شرایطی پیش‌میاد که نمیتونیم از بیرون به سروری متصل بشیم و درخواست آپدیت یا به‌روزرسانی یک کانتینر رو بدیم. در این شرایط باید از داخل سرور به بیرون متصل بشیم و در صورت نیاز به‌روز‌رسانی‌های لازم رو انجام بدیم. ابزار خوبی که برای آپدیت کانتینرها در این شرایط ساخته‌شده، نامش Watchtower هست. در صورتی که شما هم شرایط مشابهی دارید شاید این ابزار با امکانات خوبی که داره گره از کارتون باز کنه به‌جای این که بخواید این ساختار رو مجدد خودتون اختراع کنید. +
  • +
  • + ایونت لوپ‌ها چطور کار میکنند؟ (با بررسی ابزار ReactPHP)
    در این مطلب نویسنده تلاش کرده توضیحاتی رو درباره مفهوم Event Loop ارائه کنه و مفاهیم عملی رو با ابزار محبوبی در دنیای PHP یعنی ReactPHP توضیح بده. +
  • +
  • + آشنایی با دنیای برنامه‌های آفلاین و سرویس‌ورکرها
    در این مطلب که تصویرسازی‌های خوبی هم داره، نویسنده تلاش کرده مباحث و امکانات و راه‌حل‌های چالش‌های مرسوم در دنیای اپلیکیشن‌های آفلاین وب رو توضیح بده. +
  • +
  • + در حادثه اخیر، فیسبوک چطور به صورت موقت از اینترنت محو شد؟
    در این نوشته از وبلاگ Cloudflare درباره حادثه اکتبر ۲۰۲۱ که منجر به قطع سرویس‌های فیسبوک در دنیا شد و تاثیر آن بر اینترنت صحبت شده است. +
  • +
  • + آموزش مجوز های ACL در Linux
    چطوری دسترسی دقیق تری در لینوکس به کاربران بدهیم! +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + حامد سعیدی، + + + Majid Ganji. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num38.html b/archives/num38.html new file mode 100644 index 0000000..1909ffd --- /dev/null +++ b/archives/num38.html @@ -0,0 +1,89 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳۸ - شنبه، ۱۵ آبان ۱۴۰۰ +

+
+
    +
  • + دوآپس چیست و چه نقشی در تیم دارد؟
    همه جا درباره DevOps صحبت میکنن ولی معمولا تعریف دقیقی ازش پیدا نمیشه، یک عده میگن دوآپس یک مجموعه ابزاره و یک عده دیگه میگن مجموعه‌ای از مفاهیم برای پیش‌برد تیم. شاید هم همه این‌ها کنار هم بشه دوآپس. توی این مطلب کمی بیشتر درباره تاریخچه روند توسعه و استقرار نرم‌افزار صحبت شده و این که دوآپس در حال حاضر کجای این چرخه قرار داره. +
  • +
  • + شبکه در docker
    با انواع شبکه در داکر و نحوه کار اون‌ها آشنا میشیم. +
  • +
  • + C# Records - خوب، بد، زشت
    این نوشته ضمن معرفی record در زبان C# در مورد نحوه استفاده و موارد استفاده این قابلیت توضیح می‌دهد. +
  • +
  • + (مموری) چگونه پرفرمنس اپلیکیشن اندرویدی را افزایش دهیم؟
    در این مقاله به بررسی بهبود پرفرمنس اپلیکیشن های اندروید به کمک بهینه سازی مموری می پردازیم. +
  • +
  • + ویژگی‌های پنهان گوگل کروم که هر توسعه‌دهنده‌ای باید بداند
    در این نوشته چند ویژگی خوب و نسبتاً مخفی گوگل کروم که به توسعه‌دهنده‌ها کمک می‌کند تا راحت‌تر به توسعه وب بپردازند معرفی شده. یکی از جالب‌ترین آن‌ها برای من قابلیت Dual Screen Mode بود که برای شبیه‌سازی دستگاه‌های تاشو از آن استفاده می‌شود +
  • +
  • + Willingness to look stupid
    آدمایی که عامدانه سوال‌های احمقانه می‌پرسن در نهایت و پس از گذشت زمان، مسایل رو عمیق‌تر می‌فهمن. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + Vahid Fathi، + + + حامد سعیدی، + + + شکیب حبیبی، + + + Rahmanism. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num39.html b/archives/num39.html new file mode 100644 index 0000000..c8f4dc7 --- /dev/null +++ b/archives/num39.html @@ -0,0 +1,80 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۳۹ - پنجشنبه، ۲۰ آبان ۱۴۰۰ +

+
+
    +
  • + بالاخره Larastan نسخه 1.0 منتشر شد
    اگر به عنوان توسعه‌دهنده PHP تا به حال از PHPstan استفاده نکرده‌اید حتما سرچش کنید و دربارش بخونید. اگر هم تا حالا استفاده کردین، خبر خوب اینه که برای فریم‌ورک لاراول یک Wrapper نوشتن به اسم Larastan که بهتون کمک میکنه تا کدهاتون رو آنالیز کنه و بتونین کد بهتری بنویسین و از اشتباهات تکراری پرهیز کنین. حالا چند روزی میشه که نسخه 1.0 منتشر شده. +
  • +
  • + ایمیل به لینوس توروالدز درباره تفاوت پراسس و ترد
    دنبال درک عمیقی از تفاوت ترد و پراسس بودم. در بین مطالبی که خوندم این ایمیل رو دیدم که برای لینوس توروالدز فرستاده بودن و توروالدز پاسخ داده بود و سعی کرده بود این موضوع رو از دید خودش و در لینوکس توضیح بده. به نظرم خوندنش میتونه جالب باشه. [البته چیزی که برای من امیرحسین بقایی به صورت شخصی جالب بود این بود که این سوال رو توی سالی که من به دنیا اومده بودم پرسیده بودن و امروز دارم اون سوال رو با بقیه به اشتراک میزارم 😃] +
  • +
  • + آشنایی با موتور Nginx، غول قدیمی دنیای وب‌سرورها
    احتمالا خیلی از ماها برای کارهای کوچیک و بزرگ از Nginx استفاده کردیم. Nginx این غول قدرتمند دنیای وب‌سرورها، برای پردازش درخواست‌هایی که به سمتش میاد از معماری Reactor استفاده میکنه. البته نمیدونم کلمه معماری درسته یا نه؛ شاید هم بهتر باشه بگیم یک جور روش حل مساله. در هر صورت توی این پست وبلاگ رسمی Nginx میتونید ببینید که در هسته این غول زیبا چه خبره. همچنین ارجاعاتی به مقاله‌های دیگری هم داخلش وجود داره که خوندنش به تکمیل شدن موضوع کمک میکنه. +
  • +
  • + Build your own (insert technology here)
    همیشه بهترین راه برای فهمیدن عمیق یک ابزار اینه که بدونیم اون ابزار چطوری ساخته شده. با کمک این ریپو در هر زبان، فریمورک و یا ابزاری که کار می کنید میتونید عمیق بشید. +
  • +
  • + refactor یک برنامه sync به async در ASP.NET - بخش اول
    در این مقاله که در دو بخش تنظیم گردیده است با اصلاح مجدد (refactor) یک برنامه وب همزمان (synchronous) به ناهمزمان (asynchronous) در ASP.NET آشنا خواهیم شد. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + Mohammad Vahedi، + + + Amir Mokarchi. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num4.html b/archives/num4.html new file mode 100644 index 0000000..2498caa --- /dev/null +++ b/archives/num4.html @@ -0,0 +1,105 @@ + + + + خبرنامه شماره ۴ + + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

+ شماره ۴ - پنجشنبه، ۰۹ بهمن ۹۹

+
+
    +
  • اصولی کاربردی برای ساختن و طراحی کردن برنامه‌های مبتنی بر CLI
  • +

    در این وبسایت شما اصول پایه طراحی نرم‌افزارهای CLI را بدون در نظر گرفتن زبان یا تکنولوژی خاصی یاد + میگیرید و همچنین تجربیات خوبی از نویسندگان مطلب درباره best practice های این حوزه، یعنی طراحی مبتنی بر + CLI، می‌آموزید.
    مطالعه مطلب اصلی


    +
  • Abusing For Loops In C# For Job Security
  • +

    این مطلب آناتومی حلقه for را بررسی میکنه و نشون میده چه کارهایی میشه باهاش انجام داد، البته نوشتن همچین + کدی پیشنهاد نمیشه چون در نهایت منجر به افزایش پیچیدگی کدهاتون میشه ولی دونستن اینکه چه کارهایی میشه + باهاش انجام داد شاید براتون جالب باشه.
    مطالعه مطلب اصلی


    +
  • The joy of deleting code
  • +

    حذف کد یکی از مهارت‌های خوبیه که هر برنامه‌نویسی بهتره داشته باشه، بیشتر اوقات برنامه‌نویس‌ها خیلی به + کدشون وابسته میشن و دل کندن از کدی که نوشتن براشون به شدت سخت میشه. در واقع بهتره این اصل رو در نظر + بگیرم که کد به عنوان یک بدهی در نظر گرفته میشه، نوشتن کد زیاد به معنای کیفیت بهتر محصول نیست چون هزینه + تست و نگهداری کد به مرور زمان بیشتر و بیشتر میشه، کد زمانی به سرمایه تبدیل میشه که در راستای افزودن + business value و حل مشکلات دنیای واقعی باشه. این مطلب در مورد لذت (اهمیت) حذف کد نکاتی خوبی رو اشاره + میکنه که خوندنش خالی از لطف نیست.
    مطالعه مطلب اصلی


    +
  • صفر تا صد امریه سربازی: همه چیز درباره امریه دانش بنیان
  • +

    این ویدیو درباره بزرگترین دغدغه پسرهاست،‌یعنی سربازی!! اگر پسر هستین و از سربازی هم معاف نیستین، احتمالن + همیشه به این فکرمیکنین که دو سال از بهترین روز های عمرتون رو باید توی پادگان بگذرونین و دو سال از + زندگیتون عقب میفتین. این ویدیو گفته میشه که چجوری میتونین سربازی رو بپیچونین و پادگان نرین.
    مطالعه مطلب اصلی


    +
  • چند تا کار لازم و ضروری که بعد از خرید VPS باید انجام بدیم
  • +

    وقتی یه سرور می‌خریم از لحاظ امنیتی توی پایین‌ترین حالت خودش قرار داره. قراره توی این مقاله باهم سرورمون + رو تا حد قابل قبولی امن کنیم
    مطالعه مطلب اصلی


    +
  • پیاده سازی صفحه بندی در APIها
  • +

    بازگرداندن همه‌ی نتایج برای یک Query به ویژه وقتی که شامل تعداد زیادی رکورد باشد ممکن است در طراحی API + چالش برانگیز باشد، چرا که باعث ایجاد باری بر روی سرور، کلاینت و شبکه می‌شود که در اغلب اوقات لزومی + ندارد. برای رفع این مشکل اغلب از تکنیک صفحه‌بندی (Pagination) نتایج استفاده میکنیم. اما آیا فقط یک روش + برای صفحه‌بندی وجود دارد؟ در این مقاله کوتاه نویسنده روشی برای صفحه بندی ارائه می‌دهد که در مواردی از + قبیل infinite scrolling می‌تواند عملکرد بهتری نسبت به روش مرسوم نشان دهد.
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، سیروان عفیفی، اشکان رحمانی، علی + ناصری، وحید نادری در تهیه محتوا کمک کردند.

+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید

+
+
+ + + + + + + \ No newline at end of file diff --git a/archives/num40.html b/archives/num40.html new file mode 100644 index 0000000..0fdc893 --- /dev/null +++ b/archives/num40.html @@ -0,0 +1,86 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۰ - پنجشنبه، ۲۷ آبان ۱۴۰۰ +

+
+
    +
  • + کمی درباره‌ی معماری میکروسرویس
    چند سالی است که در مورد معماری میکروسرویس زیاد می‌شنویم، میکروسرویس معماری است که در آن یک نرم‌افزار از چند سرویس کوچکتر و مستقل تشکیل می‌شود. این نوشته از آی‌بی‌ام به طور خلاصه به مفاهیم این معماری پرداخته است که خواندنش مفید است. +
  • +
  • + داکر، multi stage و کاهش حجم
    کم کردن حجم image داکر روش‌های مختلفی مثل multi staging اینا داره که تواین مطلب با اون‌ها آشنا می‌شیم. +
  • +
  • + تفاوت حالت Exec و Shell در داکرفایل‌ها
    شاید در بعضی داکر فایل‌ها دیده باشید که مثلاً مقدار ENTRYPOINT را گاهی داخل براکت و گاهی بدون براکت نوشته باشند. اما دقیقاً تفاوت اصلی این دو حالت در داکرفایل برای این دستور و دیگر دستورات مثل RUN یا CMD چیه؟ توی این پست خیلی خلاصه و مفید میتونین تفاوت‌هاشون رو مطالعه کنید. +
  • +
  • + مروری بر چالش‌های کش‌کردن داده‌ها در Laravel
    نویسنده در این پست تلاش کرده چالش‌های مرسوم کش کردن داده‌ها در لاراول رو توضیح بده و یک سری راه‌حل و استراتژی رو هم برای رفع مشکلات بررسی کنه. کش‌کردن داده‌ها همونقدر که میتونه سرعت نرم‌افزار رو بهبود بده، میتونه پیچیدگی‌های نگهداری نرم‌افزار رو هم زیاد کنه،‌پس باید بدونیم که داریم چیکار میکنیم. +
  • +
  • + تکنیک هک مصاحبه شغلی با روش STAR
    تکنیک مصاحبه STAR قالب ساده ای را ارائه می دهد که می توانید از آن برای پاسخ به سوالات مصاحبه رفتاری استفاده کنید. بعد از خوندن این نوشته یک چارچوب بسیار ساده پیدا می کنید که سوال های شخصی و فکر کن فلان موقعیت پیش اومده رو میتونید خیلی موفق جواب بدین .... +
  • +
  • + افزودن دستگاه های مختلف به Chrome Developer Tools
    اگر شما هم از بخش Developer Tools مرورگر کروم برای تست رسپانسیو صفحات وب استفاده می کنید حتما نیاز است دستگاه های مورد نظر خود را به آن اضافه کنید. در حالت کلی تعدادی دستگاه پیش فرض در این بخش وجود دارد اما معمولا دستگاه های مورد نظر شما ممکن است در آن نباشد. در این مخزن اطلاعات دستگاه های مختلف و روش افزودن هر کدام را یکجا داشته باشید .... +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + مرتضی اسدی، + + + وحید فتحی، + + + امیرحسین بقایی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num41.html b/archives/num41.html new file mode 100644 index 0000000..8d851dc --- /dev/null +++ b/archives/num41.html @@ -0,0 +1,92 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۱ - جمعه، ۰۵ آذر ۱۴۰۰ +

+
+
    +
  • + مهم ترین ساختمان داده هایی که باید در مصاحبه شغلی بدانیم
    اگر در فرآیند مصاحبه های متعدد شغلی هستید و احتمالا مشکلاتی با سوالات دارید یک بخشی از این مشکلات مربوط به ساختمان داده است که کلیات ساختمان داده هایی که نیاز دارید بدانید به صورت خلاصه در لینک اصلی مقاله لیست شده ... +
  • +
  • + در کلودفلر چطور نرم‌افزار می‌سازیم؟
    در این نوشته منتشر شده در وبلاگ کلودفلر ابتدا روش‌های متداول تولید نرم‌افزار معرفی شده و در ادامه روشی که کلودفلر با آن نرم‌افزار تولید می‌کند توضیح داده شده است. +
  • +
  • + ایجاد Backdoor نامرئی در جاوا اسکرپیت
    در این مقاله بسیار جالب نویسنده این ایده رو داشته که چی می‌شه اگر نتونیم کد Backdoor رو ببینیم؟ در واقع آیا می‌تونیم با کمک کاراکترهای نامرئی در ادیتورها کدی رو داخل کد اصلی قرار بدیم که در بازبینی کدها (Code Review) هم مشخص نباشه؟ پیشنهاد می‌کنم نتیجه رو ببینید. +
  • +
  • + طراحی رسپانسیو با مدیاکوئری‌های کمتر
    هرچند که مدیاکوئری سال‌های سال است که در طراحی رسپانسیو بسیار کاربردی است، اما گاهی باعث می‌شود مدیریت طراحی سخت شود. در این مقاله راه حل‌هایی راه مشاهده خواهید کرد که فلکس و گرید به منظور استفاده کمتر از مدیاکوئری به کار گرفته می‌شوند. +
  • +
  • + با این اسکریپت نیازی به پوشه وصایای امام ندارید !
    اومدیم یه کاری کردیم که دیگه نیازی نباشه به اینکه نگران باشین اگه مامان باباتون فایل های شخصی تون رو پیدا کردن اونا رو توی کلی فولدر مخفی کنین +
  • +
  • + OOPS in JavaScript with easy to understand examples 🔥🔥
    اگه با زبان‌های شی گرا کار کرده باشید، وقتی سراغ جاوااسکریپت میایید هم دوست دارید به همون روش کد بنویسید. اینجا با مثال مفهوم کدنویسی شی گرا در جاوااسکریپت شرح داده شده. +
  • +
  • + رشته توییتی از حمید بازرگانی درباره مصاحبه کاری با شرکت‌های بزرگ
    پارسال با اینکه فکر میکردم آماده‌ام شروع کردم به مصاحبه دادن و تقریبا از هر جا که اپلای کردم ریجکت شدم. یه جای کار میلنگید. اعتماد بنفسم داغون شده بود ..... +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیر شکری، + + + حامد سعیدی، + + + Rahmanism، + + + ایلیا آقامجیدی، + + + امیرحسین بقایی. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num42.html b/archives/num42.html new file mode 100644 index 0000000..57ec0ef --- /dev/null +++ b/archives/num42.html @@ -0,0 +1,92 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۲ - پنجشنبه، ۱۸ آذر ۱۴۰۰ +

+
+
    +
  • + ارائه فلیکر درباره همکاری تیم‌های اپریشن و دولوپ
    احتمالا درباره DevOps تا حالا مطلب زیاد خوندین ولی هیچی به اندازه خوندن تاریخچه هر چیزی به آدم در درک چیزها کمک نمیکنه. چرا چیزی خلق میشه و چرا چیزی وجود داره در حالی که میتونست نباشه؛ این ارائه مهندسان Flicker تقریبا جزو اولین جرقه‌های مفهوم DevOps در زمان خودش یعنی سال‌ ۲۰۰۹ بوده. دیدنش حتما پر از نکات خوبیه که میتونه بهمون کمک کنه در درک DevOps +
  • +
  • + خبرنامه ده روزه‌ی آشنایی با php 8.1
    با عضویت در این خبرنامه، تا ده روز، هر روز با یکی از تغییرات php در نسخه‌ی 8.1 آشنا می‌شوید. به گفته‌ی سازنده، بعد از پایان این ده روز، ارسال خبرنامه متوقف می‌شود و ایمیل شما هم جایی ذخیره نمی‌‌شود. +
  • +
  • + حلقه‌تکرار بهتر است یا بازگشتی؟ بررسی عمیق تا لایه سخت‌افزار
    نویسنده در این مطلب سوال ساده‌ای مطرح کرده ولی برای پاسخ به این سوال ساده تا عمیق‌ترین لایه‌های سیستم‌ پایین میره تا خیلی عمیق‌تر بفهمیم که در واقعیت داره چه اتفاقی میفته وقتی که یک کار رو به صورت بازگشتی انجام میدیم یا به صورت حلقه‌ تکرار +
  • +
  • + چندزبانه‌ کردن وب‌اپلیکیشن‌ها بدون درد و خونریزی
    در این مطلب، خانم زهرا کبیری از تجربه چندزبانه کردن وب‌اپلیکیشن‌ها نوشته‌اند و توضیح داده‌اند چطور این کار به نظر ساده، برای خودشون و تیمشون چالش برانگیز بوده است. +
  • +
  • + انتشار اپ فلاتر در testflight برای ios
    اگر نیاز دارید برنامه هایی که نوشتین رو روی گوشیتون تست کنید حتما testflight رو استفاده کنید اینجوری قبل از نهایی کردن می تونید به بقیه هم برنامتون رو برای تست ارسال کنید؛ در این نوشته روش انجام اینکار رو مرحله به مرحله مطالعه کنید ... +
  • +
  • + بکند پی اچ پی با فلاتر
    این نوشته ی خیلی کوتاه بهتون کمک میکنه که برنامه فلاتر خودتون رو روی یک وب سرور پیاده سازی کنید +
  • +
  • + تست بار و پرفورمنس با ابزار پست‌من، آیا واقعا امکان پذیر است؟
    خیلی از افراد دوست دارن از پست‌من برای تست پرفورمنس API های خودشون استفاده کنند. متأسفانه Postman برای این کار طراحی نشده و فاقد ویژگی های اصلی مورد نیازه. بیایید بررسی کنیم که چرا پست‌من ابزار مناسبی برای این کار نیست. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + امیرحسین مجیری، + + + پویا شریفی، + + + امیر شکری، + + + علی الیاسی. + + شما نیز می‌توانید مشارکت کنید. +

+
+

Pakat Logo
ارسال شده توسط پاکت

سرویسِ پاکت اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید

+
+ + diff --git a/archives/num43.html b/archives/num43.html new file mode 100644 index 0000000..07e1939 --- /dev/null +++ b/archives/num43.html @@ -0,0 +1,75 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۳ - پنجشنبه، ۰۲ دی ۱۴۰۰ +

+
+
    +
  • + گوگل چگونه کار میکند؟ گفتگوی کیانوش مختاریان و احسان آراسته
    در این برنامه یکی از مهندسان ارشد گوگل، یعنی کیانوش مختاریان به زبان ساده و راحت، سازوکار توسعه نرم‌افزار در گوگل رو توضیح میده. اگر به سازوکارهای مهندسی نرم‌افزار در شرکت‌های بزرگ مثل گوگل علاقه دارید، حتما این گفتگو را تماشا کنید چرا که پر از نکات جالبه. +
  • +
  • + چرا دیتابیس سوسکی از نسخه‌بندی تاریخی استفاده میکند؟
    اگر برای هر پروژه‌ نرم‌افزاری که ایجاد میکنید از SemVer استفاده میکنید و تنها راه نسخه‌بندی نرم‌افزارتون رو همین میبینید، خوبه که با نسخه‌بندی‌های مبتنی بر تاریخ هم آشنا بشید شاید گاهی پاسخ بهتری برای مسئله شما باشند. در این مطلب تیم CockroachDB علت مهاجرت از SemVer به CalVer یا همان Calendar versioning را توضیح میدهند. +
  • +
  • + شخم توییتر فارسی (اراضی برنامه نویسان)
    در این مطلب به تحلیل و بررسی توییت های «لیستی از اهالی فارسی‌زبان آی‌تی توییتر» پرداخته می‌شود و قصد داریم ببینیم برنامه ‌نویسان در توییتر مشغول چه کاری هستند؟! +
  • +
  • + چرا توسعه دهنده ها مدیر نمیشن ؟
    اغلب آدم ها فکر میکنن برنامه نویس ها باید بعد از مدتی تبدیل به مدیر بشن و این فرآیند برای همشون وجود داره ولی در عمل این شکلی نیست ... +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + وحید باقی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num44.html b/archives/num44.html new file mode 100644 index 0000000..bab782e --- /dev/null +++ b/archives/num44.html @@ -0,0 +1,75 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۴ - شنبه، ۱۱ دی ۱۴۰۰ +

+
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیر شکری، + + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num45.html b/archives/num45.html new file mode 100644 index 0000000..63fbabb --- /dev/null +++ b/archives/num45.html @@ -0,0 +1,72 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۵ - جمعه، ۱۷ دی ۱۴۰۰ +

+
+
    +
  • + ترجمه گروهی کتاب Django for Professionals
    بالاخره بعد از حدود ۴ ماه و با مشارکت ۲۲ نفر، ترجمه کتاب django for professional تموم شد و میتونید مطالعه کنیدش +
  • +
  • + همگام‌سازی alias ها
    در این نوشته روشی سریع و بدون وابستگی برای همگام‌سازی aliasها روی سیستم عامل‌های مختلف ارائه شده تا با استفاده از gist عمومی گیت‌هاب این همگام‌سازی انجام شود +
  • +
  • + حذف کن، ما برمی‌گردونیم! (دیسلایک‌های یوتیوب)
    درسته، اقدام عجیب یوتیوب (حذف شمارنده دیسلایک) ممکنه به نفع تولیدکننده‌های ویدیو باشه اما به نفع افرادی که دنبال محتوای باکیفیت در یوتیوب می‌گردن نیست! کافیه این افزونه که توی این مقاله معرفی کردم رو نصب کنی تا بتونی تعداد دیسلایک‌های ویدیوهایی که توی نسخه وب یوتیوب پخش می‌کنی رو ببینی. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + حامد سعیدی، + + + علی کرباسی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num46.html b/archives/num46.html new file mode 100644 index 0000000..c66b974 --- /dev/null +++ b/archives/num46.html @@ -0,0 +1,69 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴٦ - پنجشنبه، ۲۳ دی ۱۴۰۰ +

+
+
    +
  • + کتاب رایگان ردهت برای مهندسان ابرزی
    اگر به دنیای ابر علاقه دارید (یا حتی ندارید) خوندن این کتاب که مفید و خلاصه هم هستش، میتونه شما رو با تجربیات دیگر مهندسان آشنا کنه و شاید بعضی نکاتش به کارهای شما نیز کمک کنه. عنوان این کتاب اینه: ۹۷ چیزی که هر مهندس کلود(ابر) باید بدونه؛ که شامل تجربیات افراد مختلفی میشه و خوندنش خالی از لطف نیست. +
  • +
  • + مخزن‌های ایرانی در یک جا
    اخیرا پروژه‌ای رو دیدم که تلاش میکنه مخازن پروژه‌های ایرانی‌ها رو قابل‌دسترس‌تر کنه و با فیلترهایی که داره جستجو کردن و پیدا کردن پروژه‌ها و مخازن گیتهابی ایرانی‌ها رو ساده‌تر کنه. +
  • +
  • + سوالات فنی مصاحبه شرکت علی‌بابا
    در این مخزن گیتهابی، بچه‌های علی‌بابا سوالات فنی مصاحبه‌ها و مفاهیم کلی که در مصاحبه فنی پرسیده میشه رو مطرح کردند که حتی اگر قصد مصاحبه و کار کردن در علی بابا رو ندارید، مرورش میتونه کاربردی و مفید باشه. +
  • +
  • + مسیر راه یادگیری ASP.NET Core
    معین تاجیک عزیز در این مخزن گیتهابی خیلی دقیق و مفصل به مسیر یادگیری تکنولوژی‌ها، ابزارها و مفاهیم دنیای .Net Core پرداخته. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num47.html b/archives/num47.html new file mode 100644 index 0000000..b17cf12 --- /dev/null +++ b/archives/num47.html @@ -0,0 +1,75 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۷ - پنجشنبه، ۳۰ دی ۱۴۰۰ +

+
+
    +
  • + لذت رمزنگاری
    لذت رمزنگاری (The Joy of Cryptography) یک کتاب رایگان درباره رمزنگاری است که به دانشجوها (و عموم علاقمندان) کمک می‌کنه با مفاهیم پایه‌ای حوزه رمزنگاری آشنا بشوند. علاوه بر مطالعه آنلاین امکان دانلود نسخه PDF این کتاب هم از سایت هست. +
  • +
  • + آیا یک ستون جیسونی برای ذخیره‌سازی تعداد زیادی فیلد مرتبط مناسب است؟
    فرض کنید برای یک کاربر باید انواع مختلفی از اطلاعات را در یک پایگاه داده‌ی رابطه‌ای ذخیره کنید. طراحی یک ستون جیسونی راهکار جالبی به نظر می‌رسد اما در این مطلب نویسنده این راهکار را به چالش می‌کشد. +
  • +
  • + لاراول ۹ در راه
    احتمالا یکی از اخبار مهم برای اکوسیستم PHP اخبار لاراول و نسخه‌های جدیدش و تغییراتشه؛ پس اگر شما هم دوست دارید بدونید چه خبره، میتونید ببینید قراره در لاراول ۹ چه تغییراتی رو شاهد باشیم. +
  • +
  • + Conceptهای پیشرفته git که باید بدانید
    در این نوشته تعدادی از دستورات پیشرفته مربوط به git که فراتر از کارهای معمول نظیر pull و push و commit هستند معرفی شده است +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + امیرحسین مجیری، + + + امیرحسین بقایی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num48.html b/archives/num48.html new file mode 100644 index 0000000..6f29f8c --- /dev/null +++ b/archives/num48.html @@ -0,0 +1,75 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۸ - پنجشنبه، ۰۷ بهمن ۱۴۰۰ +

+
+
    +
  • + اگر php کار میکنید این وبلاگ براتون میتونه جالب باشه
    اگر برنامه‌نویس PHP هستید، وبلاگ آقای Doeke Norg مطالب جالبی درباره پیاده‌سازی برخی الگوریتم‌ها و دیزاین پترن‌ها در PHP داره که خوندنش میتونه برای افراد تازه‌کار یا حتی با تجربه جالب باشه. +
  • +
  • + امبدینگ متن و کد در اوپن ای‌آی
    شرکت OpenAi به تازگی در API خود ویژگی جدیدی تحت عنوان code and text embeddings معرفی کرده که به کمک آن بحثهای text similarity راحت‌تر و سریعتر شده است. +
  • +
  • + یادگیری گیت پایه تا حرفه‌ای با یک بازی مرحله‌ای
    این سایت با گرافیک و بازی مرحله به مرحله کمک می‌کند که گیت را بهتر یاد بگیریم. چه در کار با گیت تازه‌کار باشید چه حرفه‌ای، این سایت می‌تواند برای شما مفید باشد. +
  • +
  • + تجربه‌نگاری یک مهندس نرم‌افزار
    چند وقت پیش توی توییتر دیدم یک مهندس نرم‌افزار ایرانی داره تجربیات فنی کارش و زندگی خودش رو در سندی جمع‌آوری میکنه. برای من مفید بود. به نظرم میتونه برای بقیه هم نکات جالبی داشته باشه. اگر به این سبک مطالب علاقه دارید توصیه میکنم یک نگاهی بندازین بهش +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + سینا آریا، + + + امیرحسین مجیری. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num49.html b/archives/num49.html new file mode 100644 index 0000000..8d06762 --- /dev/null +++ b/archives/num49.html @@ -0,0 +1,82 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۴۹ - پنجشنبه، ۰۵ اسفند ۱۴۰۰ +

+
+
    +
  • + مقایسه ایمیج‌های پایه در داکر
    در این مطلب نویسنده تلاش کرده ایمیج‌های پایه داکر رو با هم مقایسه کنه و از زوایای مختلف به معایب و مزایای هر کدوم بپردازه. +
  • +
  • + تجربه پیاده سازی Clean Architecture در صباویژن
    اگر مهندس نرم‌افزار هستید، ممکن است خیلی در مورد معماری‌ها مطالعه کرده باشید. می‌توان به معماری Layered به عنوان یکی از محبوب‌ترین معماری‌ها اشاره کرد. معماری‌های زیادی با همین ایده معرّفی شده‌اند. معماری Clean از جمله‌ی همین‌ معماری‌ها است. +ما در صباویژن به تازگی معماری کلین را برای سرویس بکند پیاده‌سازی کرده‌ایم. در این نوشته به صورت مختصر از تجربه‌ها، چرایی و چالش‌هایی که برایمان وجود داشته نوشته‌ام. +
  • +
  • + کنفرانس اوراکل با موضوع جاوا 18
    شرکت اوراکل وبیناری با موضوع جاوا 18 و قابلیتهای جدید آن در تاریخ 24 مارس (4 فروردین) برگزار می‌کند. ثبت نام در این وبینار مجانی است ولی اوراکل به خاطر تحریمهای ایران، امکان وارد کردن اطلاعات ایرانی ندارد. از طرفی میشه اطلاعات کشورهای همسایه رو بدون مشکل موقع ثبت نام وارد کرد. +
  • +
  • + پیغام خطای خوب چی داره؟
    این نوشته که در ردیت و هکرنیوز هم در موردش بحث شده درباره اینه که اجزای یک پیغام خطای خوب چه چیزهایی است و همینطور از Best Practiceها در این حوزه برامون گفته +
  • +
  • + با این دانش‌ها می‌توانید از آمازون پیشنهاد شغلی فرانت بگیرید
    اگر در فرآیند مصاحبه به عنوان فرانت اند دولوپر هستید کافیه این cheatsheet رو مطالعه کنید و دانشتون رو برای کار با شرکت های بزرگتر تطبیق بدین +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + سینا آریا، + + + حامد سعیدی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num5.html b/archives/num5.html new file mode 100644 index 0000000..d52a743 --- /dev/null +++ b/archives/num5.html @@ -0,0 +1,97 @@ + + + + خبرنامه شماره ۵ + + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

+ شماره ۵ - پنجشنبه، ۱٦ بهمن ۹۹

+
+
    +
  • نحوه استفاده از ریپوزیتوری پترن در PHP
  • +

    اگر قصد استفاده از ریپوزیتوری پترن رو داخل PHP دارید، این مقاله دید خوبی به چرایی‌ها و چگونگی‌ها میده. +
    مطالعه مطلب اصلی


    +
  • تفاوت بین دیتاآنالیست و دیتاساینتیست
  • +

    شاید اولش حس کنید دیتاآنالیست و دیتاساینتیست تفاوت زیادی ندارن چون در نهایت قراره با داده ها کار کنن ولی + در واقع تفاوت های زیادی هم از نظر دانش مورد نیاز دارن و هم جایگاه های شغلی متفاوتی دارن یکم بیشتر بخونید + اطلاعات جالبی رو کشف می کنید
    مطالعه مطلب اصلی


    +
  • با یادگیری عمیق، کم‌تر پول خرج کن!
  • +

    تیم فنی مسیریاب بلد توی این پست فنی شون درباره این گفتن که چطور مسئله کیفیت تصاویر ماهواره‌ای رو حل + کردن.
    مطالعه مطلب اصلی


    +
  • آیا لینوکس یک مجرم در زمینه RAMخواری میباشد؟
  • +

    به نظرتون لینوکس‌ داره به طرز غیرمعقولی از RAM استفاده میکنه؟ توی این مطلب بیشتر با عملکرد لینوکس درباره + RAMخواری آشنا میشوید.
    مطالعه مطلب اصلی


    +
  • نحوه قرارداد نوشتن برای پروژه های برنامه نویسی
  • +

    در این پست ویرگول راجع به قرارداد توی پروژه های برنامه نویسی صحبت میشه، چیزی که بیشتر بچه های فریلنسر + این حوزه باهاش سر و کار دارن و نکات مهمی که در تنظیم یک پروژه باید رعایت بشه رو بررسی کرده
    مطالعه مطلب اصلی


    +
  • چجوری روی یک سرور، چند سرویس مختلف رو با استفاده از Nginx و Docker، مستقر + کنیم؟
  • +

    اگه براتون سوال شده چجوری چند تا دامین به یک سرور وصل میشه و مدیریتشون با Docker چجوری انجام میشه، تو + این مقاله قراره بهش بپردازیم
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، امیر شکری، امیر ابوئی، علی ناصری + در تهیه محتوا کمک کردند.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید

+
+
+ + + + + + + \ No newline at end of file diff --git a/archives/num50.html b/archives/num50.html new file mode 100644 index 0000000..c474195 --- /dev/null +++ b/archives/num50.html @@ -0,0 +1,78 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۰ - پنجشنبه، ۱۹ اسفند ۱۴۰۰ +

+
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + وحید فتحی، + + + حامد سعیدی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num51.html b/archives/num51.html new file mode 100644 index 0000000..44ea1ee --- /dev/null +++ b/archives/num51.html @@ -0,0 +1,81 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۱ - پنجشنبه، ۰۸ اردیبهشت ۱۴۰۱ +

+
+
    +
  • + در نام گذاری از «واحد» استفاده کنید
    نویسنده پیشنهاد می‌کنه برای خوانایی بیشتر کد و جلوگیری از ابهامات، در نام‌ گذاری متغیرها و خروجی‌ها، واحدشون رو هم ذکر کنیم. و برای مشخص شدن صورت مساله و راه حل کدهای نمونه‌ای رو هم مثال می‌زنه +
  • +
  • + حمله از طریق کامپایلر
    تا به حال به این فکر کردید که چی می‌شه اگر کامپایلر موقع کامپایل یک backdoor به کد شما تزریق کنه؟ آیا می‌تونیم تشخیصش بدیم؟ در این نوشته، نویسنده این مساله رو با زیر ۱۰۰ خط کد و یک دمو نشون داده. نکات؟ اپن‌سورس بودن کامپایلر کمکی نمی‌کنه و هر چه سطح برنامه‌‌ میاد پایین‌تر پیدا کردن چنین مسائلی دشوارتر می‌شه +
  • +
  • + گیت‌هاب چطور چالش برنامه‌نویسی در مصاحبه‌های فنی رو به انجام می‌رسونه
    گیت‌هاب توضیح میده که چطور سعی می‌کنه ارزیابی یک متقاضی در مصاحبه‌های فنی رو تا جای ممکن به روشی که کارها در خود گیت‌هاب پیش میرن شبیه کنه. این مقاله فرآیند تکلیف برنامه‌نویسی‌ای رو که به هر متقاضی داده میشه شرح میده. +
  • +
  • + معماری تمیز در گولنگ
    امروزه هر برنامه نویسی میدونه که اگر میخواد پروژه اش در آینده به بن بست نخوره، و بتونه به راحتی اون رو توسعه بده باید کدش منظم و قابل خواندن باشه توی این مقاله میخوایم باهم مفاهیم معماری تمیز رو توی یه اپلیکیشن گولنگی پیاده سازی کنیم. +
  • +
  • + با کمک گیت هاب وصیت نامه بسازید
    داشتن وصیت نامه در هر شرایطی خوبه مخصوصا وقتی ارسال یک متن از طرف شما باشه برای افرادی که دوست دارید بعد از مرگ شما از این اتفاق با خبر بشن. در این پروژه با بررسی فعالیت های گیت هابتون و تغییر ناگهانی اون در یک مدت خاص یک پیام برای لیست مورد نظر خودتون بفرستید +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + رضا غریبی، + + + محمد عباسی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num52.html b/archives/num52.html new file mode 100644 index 0000000..e549d25 --- /dev/null +++ b/archives/num52.html @@ -0,0 +1,66 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۲ - پنجشنبه، ۱۲ خرداد ۱۴۰۱ +

+
+
    +
  • + یک مرورگر به من بده تا بهت شِل بدم
    در این مقاله در این مورد صحبت شده که اگر فقط یک مروگر داشته باشیم چطوری می‌توانیم نفوذ انجام بدیم و چه چیزهایی رو درباره پروتکل‌های مورد استفاده مرورگرها که ممکنه باعث سوء استفاده بشه باید بدونیم +
  • +
  • + چطور APIهای بهتری طراحی کنیم
    این یک نوشته نسبتاً طولانی شامل پیشنهادهای خوب برای نوشتن و بهبود طراحی API هاست و در طول این نوشته درباره اشتباهات معمول و رویکردهای نادرست طراحی هم صحبت می‌شود. +
  • +
  • + کارهای جالبی که با github.dev می‌توان انجام داد
    در این مقاله ۱۰ کاری که مستقیم یا به کمک اکستنشن‌ها می‌توان با نسخه تحت وب ادیتور گیت‌هاب انجام داد معرفی شده است. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num53.html b/archives/num53.html new file mode 100644 index 0000000..f5ab0a6 --- /dev/null +++ b/archives/num53.html @@ -0,0 +1,66 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۳ - پنجشنبه، ۲٦ خرداد ۱۴۰۱ +

+
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num54.html b/archives/num54.html new file mode 100644 index 0000000..410ad1e --- /dev/null +++ b/archives/num54.html @@ -0,0 +1,69 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۴ - پنجشنبه، ۰۲ تیر ۱۴۰۱ +

+
+
    +
  • + چرا SELECT * برای کارآیی SQL بد است؟
    در این مطلب مفصل درباره دلایل بد بودن SELECT * برای performance در SQL صحبت شده و موارد مختلفی از افزایش ترافیک شبکه تا افزایش مصرف CPU روی سرور تشریح شده است +
  • +
  • + ساده‌ترین راهنمای .bashrc
    این مقاله ضمن بررسی موارد ابتدایی bash درباره متغیرها و رشته‌ها و اتوماسیون به کمک bash توضیح می‌دهد +
  • +
  • + پردازش تصویر، اساس جلوه‌های ویژه در سینما
    حتما همه شما جلوه‌های ویژه رو در فیلم‌ها و تبلیغات تلویزیونی و اینترنتی دیدین، اما سوال اصلی این هست که این جلوه‌های ویژه یا همون VFX چطوری ساخته و پردازش میشن و به فیلم ها اضافه میشن؟ یکی از علومی که اساس جلوه‌های ویژه رو تشکیل میده، علم پردازش تصویره. اما شاید براتون سوال بشه که دقیقا پردازش تصویر چطوری به جلوه‌های ویژه کمک میکنه. توی این ویدیو جذاب و کوتاه با کارهای پایه در جلوه‌های ویژه آشنا میشید +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + امیرحسین بقایی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num55.html b/archives/num55.html new file mode 100644 index 0000000..71d9d32 --- /dev/null +++ b/archives/num55.html @@ -0,0 +1,69 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۵ - پنجشنبه، ۰۹ تیر ۱۴۰۱ +

+
+
    +
  • + جلوگیری از تکرار مانفیست‌های کوبرنتیز
    احتمالا بارها پیش اومده که احساس کردید دارید مانفیست‌فایل‌های کوبرنتیزتون رو تکرار میکنید و کارتون به کپی پیست افتاده و اعمال تغییرات خیلی کوچیک برای هر پروژه، اگر به همچین حالتی افتادین و با مفهوم library chart ها آشنا نیستین، احتمالا دوای درد شما اینجاست. اگر میخواید فایل‌های مانیفست کوبرنتیزتون رو DRY کنید حتما به این قابلیت Helm یک نگاه بندازین +
  • +
  • + معماری ثبت‌نام و ورود در اوبر
    در این مقاله از وبلاگ مهندسی اوبر، درباره USL یا Uber's Unified Signup and Login و چالش‌ها و معماری آن صحبت می‌شود. در پایان هم کمی از نقشه راه USL صحبت شده است +
  • +
  • + Feature Flag در دات‌نت
    این مقاله ضمن معرفی ایده‌های پایه‌ای Feature Flag به نحوه پیاده‌سازی در دات‌نت از حالت ساده تا کمی پیشرفته‌تر می‌پردازد +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num56.html b/archives/num56.html new file mode 100644 index 0000000..73b1371 --- /dev/null +++ b/archives/num56.html @@ -0,0 +1,75 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵٦ - پنجشنبه، ۱٦ تیر ۱۴۰۱ +

+
+
    +
  • + اسنپ شات گرفتن از یک سایت با تمامی دپندنسی های آن
    ما روزانه محتوای زیادی از سایت های مختلفی می‌خوانیم. برخی از این محتوا را ممکن است فراموش کنیم و یا به دلایلی مثل اجبار سانسور چی اون محتوا از سایت منبع پاک شود. در چنین مواقعی می‌توانیم با کلون کردن اون صفحه سایت، محتوا را افلاین در دسترس داشته باشیم. +
  • +
  • + دنیای قبل و بعد از دیپ لرنینگ
    دنیای قبل و بعد از دیپ لرنینگ در دنیای کامپیوتر ویژن را بررسی کنید و تفاوت‌هایی که در آن‌ها وجود دارد را بررسی کنید. این توییت تجربی نوشته شده است. +
  • +
  • + روش‌های مختلف رسم شماتیک شبکه عصبی
    اگر با تنسورفلو مشغول کار روی شبکه‌های عصبی هستید احتمالا در هنگام ارائه‌ی گزارشات خود نیاز دارید تا شماتیک مدل خود را رسم کنید. با کمک این مخزن تمام روش‌هایی که نیاز دارید لیست شده است. +
  • +
  • + توسعه فرانت اند با پایتون
    توی این راهنما با استفاده pyscript نحوه استفاده از پایتون در فرانت اند توضیح داده شده و در نهایت چند پروژه هم تمرین داده شده است +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + آریا شبانه، + + + امیر شکری، + + + محمدرضا هلالی . + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num57.html b/archives/num57.html new file mode 100644 index 0000000..f5b9986 --- /dev/null +++ b/archives/num57.html @@ -0,0 +1,66 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۷ - جمعه، ۲۴ تیر ۱۴۰۱ +

+
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num58.html b/archives/num58.html new file mode 100644 index 0000000..6dccad9 --- /dev/null +++ b/archives/num58.html @@ -0,0 +1,69 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۸ - پنجشنبه، ۳۰ تیر ۱۴۰۱ +

+
+
    +
  • + deploy to production بیش از ۱۰۰ بار در روز
    در این نوشته، اینکه چطور تیم با تغییرات کوچک قابل برگرداندن بیش از ۱۰۰ بار در روز روی production کار deploy را انجام می‌دهند صحبت و تجربیات در این زمینه بیان شده است. +
  • +
  • + تست نرم‌افزار موثر
    نویسنده اینجا درباره کتاب Effective Software Testing A developer's guide صحبت کرده و بخش‌ها و ایده‌های مهم و موثر کتاب را بیان کرده است +
  • +
  • + دفترچه راهنمای سریع کوبرنتیز به زبان فارسی
    این دفترچه که درباره کوبرنتیزه و تقریبا مباحث و اجزای مهمش رو مرور کرده، خیلی اتفاقی توی یک گروه مرتبط با DevOps دیدم و به نظرم خیلی جالب و مختصر و مفید بود. نویسنده‌اش یک کانال کوچیک تلگرامی درست کرده و محتواش رو اونجا قرار داده و میتونید این دفترچه رو از کانال تلگرامیشون دانلود کنید. آپدیتهای فایل PDF هم در همین کانال گفتند قرار میگیره. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + امیرحسین بقایی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num59.html b/archives/num59.html new file mode 100644 index 0000000..6eb12b9 --- /dev/null +++ b/archives/num59.html @@ -0,0 +1,75 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ۵۹ - پنجشنبه، ۰٦ مرداد ۱۴۰۱ +

+
+
    +
  • + استفاده از Image Digest به جای Image tag در دنیای کانتینرها
    اگر شما مسئول راه‌اندازی یک پایپلاین CI/CD سرویس نرم‌افزاری باشید که از کانتینر‌ها و داکر استفاده میکنه احتمالا توی مرحله CD یا همون continuous delivery ممکنه این سوال براتون ایجاد شده باشه که از چه ساختاری برای دپلوی ایمیج‌ها استفاده کنید. میتونید از Tag ها استفاده کنید یا هم میتونید از Digest هر ایمیج اما کدوم به کار میاد؟ این مطلب ساده در سایت گوگل کلود شاید به شما دید بهتری بده. +
  • +
  • + توسعه از راه دور در اسلک
    اینجا منظور از توسعه از راه دور، توسعه‌دادن کد روی بستر آمازون و مشاهده تغییرات داده شده در آن instance از اسلک است. توسعه‌دهندگان اسلک هم زمانی توسعه روی سیستم محلی خودشان داشتند. گرچه به دلیل تحریم‌ها استفاده از چنین روشی برای ما فراهم نیست اما خواندن تجربیات تیم اسلک در وبلاگ مهندسی اسلک بسیار جالب است +
  • +
  • + Soft Deletion احتمالاً ارزشش را ندارد
    در این مقاله ضمن بر شمردن مشکلاتی که Soft Deletion ممکن است ایجاد کند، پیشنهاد استفاده از جدول رکوردهای حذف شده مطرح شده است. +
  • +
  • + پروژه کتاب the secret bit کتاب آزاد لینوکس
    هر ابزاری در لینوکس یک man page داره که نحوه کار با اون ابزار را توضیح می‌ده. مشکل man ها اینه که گاهی خیلی کامل هستند و تمامی سوییچ های ابزار را دربر می‌گیرند. ما در این کتاب سعی کردیم سوییچ هایی که پر استفاده هستند را توضیح بدیم و هر کجا که نیاز به مثالی برای کار های مختلفی که می‌شه با ابزار کرد، شد مثال ها را بنویسیم. لینوکس جز ابزار هایش مفاهیمی داره که نیاز به توضیح داره، پس ما در کتاب دو بخش مختلف برای ابزار ها و مفاهیم داریم. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + حامد سعیدی، + + + آریا شبانه. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num6.html b/archives/num6.html new file mode 100644 index 0000000..ba8877e --- /dev/null +++ b/archives/num6.html @@ -0,0 +1,88 @@ + + + + خبرنامه شماره ٦ + + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

+ شماره ٦ - پنجشنبه، ۲۳ بهمن ۹۹

+
+
    +
  • توضیح Design Pattern ها با غذا و برنامه واقعی
  • +

    این مخزن گیت‌هاب، همه دیزاین پترن‌ها را با مثال‌هایی از صنعت غذا و با برنامه‌های واقعی توضیح داده تا در + دنیای واقعی کاربرد آن‌ها را بررسی کند. همچنین در یک سری ویدئوی یوتوب درباره هر کدام از پروژه‌ها در حال + صحبت هستند.
    مطالعه مطلب اصلی


    +
  • مرجعی رایگان و کامل برای ساختمان داده‌ها و الگوریتم‌ها با جاوااسکریپت +
  • +

    در این مخزن گیت‌هاب، مشارکت‌کنندگان یک مجموعه بسیار کامل از ساختمان‌داده‌ها و الگوریتم‌ها را با استفاده + از جاوا اسکریپت توضیح دادند. این مخزن به ۱۴ زبان دیگر هم در دسترس است و کاندید بسیار مناسبی برای ترجمه + به فارسی است
    مطالعه مطلب اصلی


    +
  • سه روش برای اندازه‌گیری کارآیی برنامه‌های React
  • +

    در این مقاله، محصول اپن سورس Reactime معرفی می‌شود و سه روش برای تحلیل performance در برنامه‌های React + به کمک این محصول بررسی می‌شوند. Reactime که یک ابزار debug است کمک می‌کند تا snapshot هایی از برنامه و + state ایجاد شود و امکان سفر در زمان را برای برنامه‌نویس فراهم می‌کند
    مطالعه مطلب اصلی


    +
  • همه چیز درباره رفتن به کارآموزی
  • +

    توی این ویدیو درباره هر چیزی که برای رفتن به کارآموزی برای برنامه‌نویسی و ورود به بازار کار حرفه‌ای و + کسب درآمد نیاز هست توضیح داده شده.
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های حامد سعیدی، اشکان رحمانی در تهیه محتوا کمک کردند.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید

+
+
+ + + + + + + \ No newline at end of file diff --git a/archives/num60.html b/archives/num60.html new file mode 100644 index 0000000..30a3b4c --- /dev/null +++ b/archives/num60.html @@ -0,0 +1,69 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ٦۰ - جمعه، ۱۴ مرداد ۱۴۰۱ +

+
+
    +
  • + توصیه‌هایی برای برنامه‌نویسان تازه وارد
    این آقا زمانی در توییتر از برنامه‌نویسان خواسته تا اگر توصیه‌ای برای برنامه‌نویسان تازه‌وارد دارند بنویسند. بعد ۷۰۰ پاسخ به درخواستش، پاسخ‌ها رو دسته‌بندی کرده و چند نکته مهم و تکرار شده را در این پست وبلاگ اشاره کرده است. +
  • +
  • + Squash، Merge یا Rebase?
    این یک نوشته بسیار کوتاه است. وقتی از git برای کنترل نسخه‌های کد استفاده می‌کنیم موقع ادغام branchها معمولاً سه گزینه داریم. در این نوشته درباره این سه گزینه و تفاوت و روشی که نویسنده ترحیج می‌دهد صحبت شده است. +
  • +
  • + راهنمای Load Testing
    این راهنما برای درک چگونگی اجرای درست Load Test و اینکه چه داده‌هایی در حین تست جمع‌آوری می‌شوند و چه تفسیری از آن‌ها می‌توان داشت قابل استفاده است +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + . + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num61.html b/archives/num61.html new file mode 100644 index 0000000..b8abaa9 --- /dev/null +++ b/archives/num61.html @@ -0,0 +1,78 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ٦۱ - پنجشنبه، ۲۰ مرداد ۱۴۰۱ +

+
+
    +
  • + کامپایلری که فقط با دستور MOV کار میکند
    توی توییتر داشتم میچرخیدم که یک توییت دیدم از طرف کاربر @sajad_ghorbanii که یک مخزن جالب معرفی کرده بود. توی این مخزن یک کامپایلر C داریم که همه چیز رو به دستورات MOV تبدیل میکنه. +
  • +
  • + چرا از گوگل فونت باید در وبسایت خود استفاده کنید
    احتمالا در پروژه های مختلف خودتون مخصوصا با اومدن فونت وزیر به گوگل فونت از این سرویس استفاده کرده اید ولی شاید براتون سوال پیش بیاد اصلا مزیت ها و معایبی که استفاده از گوگل فونت داره چیه اگر دنبال این موارد هستید این تاپیک کورا به سوالتون پاسخ میده +
  • +
  • + ترافیک شهری در اسنپ
    در این مطلب از وبلاگ مهندسی اسنپ، درباره مساله ترافیک شهری در نقشه و چالش‌های مرتبط و راهکارهایی که اسنپ از آن‌ها استفاده کرده صحبت شده است. +
  • +
  • + ترجمه کتاب داده‌کاوی برای برنامه‌نویسان
    این لینک دانلود ترجمه کتاب داده‌کاوی برای برنامه‌نویسان است +
  • +
  • + استک‌های محبوب استارتاپ‌ها در 2022
    معمولا استارتاپ‌ها در ابتدای کار برای اینکه سرعت بالایی داشته باشند استک‌های مختلفی را استفاده می‌کنند اما یکی از چالش‌های آنها در آینده زمانیست که قصد scale کردن دارند در آنجاست که کمی مسئله متفاوت می‌شود در این نوشته چندین استک محبوب برای استارتاپ‌ها که در آینده به سادگی قابل توسعه باشد لیست شده است. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + امیر شکری، + + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num62.html b/archives/num62.html new file mode 100644 index 0000000..babc852 --- /dev/null +++ b/archives/num62.html @@ -0,0 +1,69 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ٦۲ - پنجشنبه، ۲۷ مرداد ۱۴۰۱ +

+
+
    +
  • + درباره ردیس
    این مطلب یک نگاه کامل و توضیحات مصور درباره Redis و انواع توپولوژی‌ها و ذخیره اطلاعات در آن دارد. +
  • +
  • + پنج سوال امنیتی مهم که برنامه نویس ها باید بدانند
    یکی از بازیگرهایی که امنیت نرم افزارهای تحت وب با آن هاست برنامه نویس ها هستند. اگر برنامه نویس ها اطلاعات امنیتی خوبی داشته باشند نیازهای امنیتی برنامه های تحت وب را افزایش می دهند. در این نوشته ۵ سوال اصلی که در هنگام توسعه برنامه نویس ها باید آن را بدانند آورده شده است +
  • +
  • + GDPR برای برنامه‌نویسان با ذکر مثال
    گرچه ما در کشور قوانین محافظتی از حریم شخصی نداریم اما در این مقاله که درباره پیاده‌سازی GDPR صحبت شده، با ذکر سناریوهای مختلف درباره میزان تعهد شرکت‌ها و تیم فنی و نگاه تحلیلی به مساله می‌توان ایده‌هایی برای استفاده در سرویس‌های ایرانی برداشت کرد. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num63.html b/archives/num63.html new file mode 100644 index 0000000..46ee062 --- /dev/null +++ b/archives/num63.html @@ -0,0 +1,72 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ٦۳ - پنجشنبه، ۰۳ شهریور ۱۴۰۱ +

+
+
    +
  • + چطور از کند شدن تیم به خاطر بازبینی کد جلوگیری کنیم؟
    این مطلب در واقع دلایلی که پروسه بازبینی کد زمان می‌برد را بررسی کرده به عنوان مثال نداشتن بررسی‌های اتوماتیک و بر همین اساس می‌توان با رفع این دلایل، از کند شدن خروجی تیم به خاطر بازبینی کد جلوگیری کرد +
  • +
  • + فولکلور نرم‌افزار
    مجموعه داستان‌هایی از باگ‌هایی که فراتر از باورهای معمول هستند +
  • +
  • + ۱۰ نکته برای بازبینی کدی که دوستش ندارید
    در این مطلب از وبلاگ ردهت درباره نکات بازبینی کد یا Code Review صحبت شده است تا محترمانه و با کمترین چالش، درباره کدی که به هر دلیل بازبینی آن را دوست نداریم بتوانیم Code Review انجام بدهیم +
  • +
  • + امکانات ردیس برای بهبود پرفورمنس
    یکی از دیتابیس هایی که معمولا برای کش کردن داده ها استفاده میشه ردیس هست. طبیعتا کش کردن داده برای سریع تر کردن پاسخ دهی و یا کم کردن بار از روی دیتابیس های هسته انجام میشه و معمولا ردیس در اسکیل های بزرگ هم پاسخگو است. اما مسئله ای که وجود داره اینه که گاها به ست کردن چند کلید ساده اکتفا میکنیم و خیلی سمت بهبود پرفورمنس در خود کش کردن داده نمیریم. بهبودهایی که گاها لازم میشن. در این نوشته درباره بعضی امکانات ردیس برای بهبود پرفورمنس ردیس بخوانید +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی، + + + امیر شکری. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num64.html b/archives/num64.html new file mode 100644 index 0000000..34d60dc --- /dev/null +++ b/archives/num64.html @@ -0,0 +1,75 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ٦۴ - پنجشنبه، ۱۰ شهریور ۱۴۰۱ +

+
+
    +
  • + پراسس‌های زامبی و داکر
    احتمالا گاهی پیش اومده که توی ایمیج‌های داکری که درست میکنید پراسس‌های زامبی مشاهده کنید. یعنی پراسسی که کارش رو کرده ولی مادر خبر نداره که فرزند کارش رو انجام داده و باید از لیست پراسس‌ها حذف بشه. دونستن این که چطوری جلوی این اتفاق رو بگیریم و اصلا چرا باید بگیریم یا نگیریم،‌میتونه به درک بهتر ما از عملکرد پراسس‌ها در کانتینر‌ها یا سیستم‌عامل‌ها کمک کنه. این مطلب به صورت اختصاصی به داکر مرتبطه و میتونه شما رو با این مساله بهتر و عمیقتر آشنا کنه +
  • +
  • + مدل شبکه کوبرنتیز
    تقریبا پیچیده‌ترین بخش کوبرنتیز (برای من البته) بخش شبکه و ارتباط هستش. این که همه چیز چطوری همدیگرو اینقدر راحت میبینن و با هم صحبت میکنن با این همه تغییرات و آپدیت‌های مداوم روی سرویس‌ها. مطالعه و آشنایی اولیه با شبکه در کوبرنتیز میتونه درک مشکلات و مسائل مرتبط رو راحت‌تر و شیرین‌تر کنه. این مطلب به صورت کلی به این موضوعات پرداخته +
  • +
  • + Trilogy اپن سورس شد
    گیت‌هاب Trilogy که یک آداپتور دیتابیس برای اتصال Ruby on Rails به سرورهای سازگار با MySQL است را اپن سورس کرده است و در این نوشته در وبلاگ گیت‌هاب درباره آن توضیح می‌دهد +
  • +
  • + چطور به یک تیم بپیوندیم و کدبیس تیم را یاد بگیریم؟
    در این مقاله نسبتاً طولانی، در بخش میانی نویسنده پروسه‌ای برای یادگیری کدبیسی که تا به حال با آن آشنا نبودیم در زمان پیوستن به یک تیم جدید را بررسی و توصیه‌هایی می‌کند. +
  • +
  • + کلمات عبور یکبار مصرف چطور کار می‌کنند؟
    این نوشته به بررسی شیوه عملکرد رمزهای عبور یکبار مصرف می‌پردازد و در انتها با ۱۶ خط کد به زبان Go تابعی برای ارائه رمز یکبار مصرف بر اساس کلید مخفی پیاده‌سازی می‌کند +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num65.html b/archives/num65.html new file mode 100644 index 0000000..4e5d725 --- /dev/null +++ b/archives/num65.html @@ -0,0 +1,66 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ٦۵ - پنجشنبه، ۱۷ شهریور ۱۴۰۱ +

+
+
    +
  • + مجموعه سوالات مصاحبه فنی
    در این مخزن گیت‌هاب منابع مربوط به لیست مجموعه سوالات مصاحبه‌های فنی زبان‌های مختلف گردآوری شده است +
  • +
  • + مساله Sharding و IDها در اینستاگرام
    در هر ثانیه بیش از ۲۵ تصویر و ۹۰ لایک در اینستاگرام ذخیره می‌شود. در این پست وبلاگ مهندسی درباره مساله Sharding و ایجاد IDها صحبت شده است. زیرساخت production اینستاگرام بر روی PostgreSQL است. +
  • +
  • + پروژه SaaS4Devs
    در این وب سایت منابع بسیار زیادی به همراه تعاریف و لینک‌ها برای آشنایی و راه‌اندازی SaaS برای برنامه‌نویسان گردآوری شده است. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num66.html b/archives/num66.html new file mode 100644 index 0000000..bebfe48 --- /dev/null +++ b/archives/num66.html @@ -0,0 +1,72 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ ٦٦ - پنجشنبه، ۲۴ شهریور ۱۴۰۱ +

+
+
    +
  • + گیتهاب و چالش حجم زیاد مخازن گیت
    گیتهاب میگه بالای ۱۸.۶ پتابایت داده از گیت داره و بعضی از آبجکت‌ها در گیت reachable هستند و برخی unreachable. در این مطلب جدیدشون توضیح دادن که چطوری این‌ها رو برای بهینه تر کردن فضای ذخیره‌سازی مدیریت میکنند. +
  • +
  • + HTTP://HTTP://HTTP://@HTTP://HTTP://?HTTP://#HTTP://
    داستان از جایی شروع شد که نویسنده curl توییت یک آدرس عجیب رو به عنوان یک url معتبر معرفی و توییت کرد. +
  • +
  • + دیباگ کردن تیم‌ها
    آیا تا به حال در تیمی بودید که خیلی سخت کار می‌کنه ولی به نظر می‌ره جلو نمی‌ره؟ نویسنده این مقاله درباره این موضوع و علائم Groundhog Day و راه‌حلش صحبت کرده +
  • +
  • + حل مشکلات شبکه کوبرنتیز به شیوه گیتهاب
    در این مطلب، تیم فنی گیتهاب توضیح میده چطوری یک مشکل latency در شبکه پیچیده کوبرنتیز رو حل کردن و مرحله به مرحله و با ساده‌سازی مسائل پیش رفتند. +
  • +
+
+

+ تأمین‌کنندگانِ محتوا در این شماره: + + امیرحسین بقایی، + + + حامد سعیدی. + + شما نیز می‌توانید مشارکت کنید. +

+
+ + diff --git a/archives/num7.html b/archives/num7.html new file mode 100644 index 0000000..1ada9de --- /dev/null +++ b/archives/num7.html @@ -0,0 +1,119 @@ + + + + خبرنامه شماره ۷ + + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

+ شماره ۷ - پنجشنبه، ۳۰ بهمن ۹۹

+
+
    +
  • نکاتی در خصوص پیمایش کدبیس های عظیم
  • +

    در این مقاله نویسنده از مشکلاتی که برای پیمایش کدبیس های حجیم (شامل ده ها یا صدها هزار خط کد) وجود دارد + نام میبرد و سپس راه حل هایی جهت رفع و یا بهبود این مشکلات ارائه میکند.
    مطالعه مطلب اصلی


    +
  • برنامه کن! یک ربات تلگرامی برای اضافه کردن رویدادها به تقویم گوگل
  • +

    برنامه کن یک ربات تلگرامیه که آدما بتونن به راحتی ایونت هایی که میبینن (به خصوص توی تلگرام) رو به تقویم + گوگلشون اضافه کنن. سورس این ربات به صورت آزاد منتشر شده و جا برای بهتر شدن زیاد داره.خوشحال میشم ادمای + بیشتری ازش استفاده کنن و به دردشون بخوره.
    مطالعه مطلب اصلی


    +
  • قواعدی برای اسم‌گذاری توابع و متغیر‌ها
  • +

    برای نام‌گذاری بهتر متغیر‌ها و به خصوص‌ توابع و متد‌ها، این ریپوزیتوری، قلق‌ها و پترن‌های جالبی بهمون + یاد میده.
    مطالعه مطلب اصلی


    +
  • کشف یک باگ در کرنل لینوکس بعد از ۲۴ سال
  • +

    یک باگ در لایه شبکه کرنل لینوکس که باعث از کار افتادن پایپ «آرسنیک» برای انتقال محتواهای حجیم میشد، بعد + از ۲۴ سال کشف و برطرف شد. این مقاله شامل یک بررسی کوتاه از کد کرنل، نحوه آدرس دهی مشکل، و در نهایت نحوه + دیباگ کردن کرنل و تولید پچ هست.
    مطالعه مطلب اصلی


    +
  • دیتاست رایگان شرکت مدیریت فناوری بورس تهران
  • +

    احتمالا این روزها همه دیگه روزی چند بار اسم بورس رو شنیدیم و خب سرویس هایی که برای دسترسی به داده های + بورس به صورت api موجود هست هم کم نیست ولی خب تا جایی که اطلاع دارم سرویس رایگانی پیدا نمیشه که برای + پروژه های کوچولو و شخصی بشه استفاده کرد؛ سایت tsetmc یه ساختار آدرس خاص برای داده های هر سهام داره که به + سادگی امکان دریافت دیتای لحظه ای رو دارید اما دقت کنید هر شرکتی دو کد برای ریکوئست زدن لازم داره که با + توجه به زیاد بودن سهام ها نیاز هست یک لیست کامل رو داشته باشید که این دیتاست احتمالا کارتون رو راه + بندازه
    مطالعه مطلب اصلی


    +
  • ARCHITECTURE.md
  • +

    در یک پروژه اپن سورس داشتن مستندات برای افرادی که مایل به مشارکت در کد هستند خیلی اهمیت دارد و در واقع + میتواند یک نقطه شروع برای مشارکت‌کنندگان باشد، اما بیشتر اوقات برای افراد تازه‌کار شروع به همکاری و + آشنایی با پروژه ممکن است کمی گیج‌کننده باشد، در این مطلب یک راه‌حل خوب پیشنهاد شده است و آن هم داشتن یک + فایل است که معماری کلی سیستم را به صورت خلاصه توضیح دهد
    مطالعه مطلب اصلی


    +
  • تاسیس یک انجمن تخصصی برای مباحث توسعه قرارداد هوشمند به زبان فارسی
  • +

    چند ماه پیش بود که کوین‌ایران با ارتباط هایی که تونسته بود بگیره یه سولارشیپ 1000 دلاری از کانزنسیس(یک + شرکت که توی حوزه توسعه بلاکچین اتریوم کار میکنه هستش) برای 7 نفر گرفت (این سولارشیپ مخصوص بانوان بود) + گرفت و حالا که این دوره تموم شده این افراد به علاوه چند متخصص دیگه این انجمن رو راه اندازی کردن با هدف + انتقال دانش و تجربه
    مطالعه مطلب اصلی


    +
  • استفاده از اختلاف قیمت در صرافی ها غیر‌متمرکز برای آربیتراژ گرفتن با استفاده + از قرارداد های هوشمند
  • +

    صرافی ها غیرمتمرکز بر بستر شبک اتریوم این روز ها نوع جدیدی از نوع مبادله رو معرفی کردن . به استفاده کردن + از اختلاف قیمت یک چیز در دو بازار متفاوت برای کسب درآمد آربیتراژ گفته میشه.تو بازار های سنتی برای + استفاده کردن از موقعیت های آربیتراژ نیاز به نقدینگی هستش ولی توی دنیای دی‌فای(بازار های مالی غیر متمرکز + یا دیسنترالایز فایننس) این محدودیت با مفهمومی به اسم فلش لون (وام های لحظه ای) برداشته شده و هرکسی + میتونه بدون داشتن نقدینگی هم از موقیعت های آربیتراژ بین صرافی های مختلف بر بستر اتریوم استفاده کنه و این + کار نیاز به برنامه نویسی به زبان سالیدیتی داره.
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های حسن شهبازی، محمد عرب انواری، امیرحسین بقایی، امیر + شکری، سیروان عفیفی، حمید رضا مرادی در تهیه محتوا کمک کردند.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید

+
+
+ + + + + + \ No newline at end of file diff --git a/archives/num8.html b/archives/num8.html new file mode 100644 index 0000000..913dcd9 --- /dev/null +++ b/archives/num8.html @@ -0,0 +1,99 @@ + + + + خبرنامه شماره ۸ + + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

+ شماره ۸ - پنجشنبه، ۰۷ اسفند ۹۹

+
+
    +
  • بسته شدن یک باگ در موزیلا فایرفاکس ۱۷ سال پس از اولین گزارش
  • +

    این صفحه شامل مکالمات کاربران و توسعه دهندگان فایرفاکس است که نزدیک به ۱۷ سال طول کشیده است. خواندن این + رشته مکالمات کمکی است به دریافتن نحوه گزارش، پیگیری، و نهایتا حل شدن یک باگ در نرم افزارهای متن باز. +
    مطالعه مطلب اصلی


    +
  • وقتی می‌زنید گوگل دات کام، دقیقاً چه اتفاقی می‌افته؟
  • +

    بخشی از مقاله: مدار یواس‌بیِ صفحه‌کلید از طریق یک منبع تغذیهٔ ۵ ولت که از طریق پین یکِ USB host + controller کامپیوتر تأمین می‌شه تغذیه می‌شه. keycode تولید شده با کمک مدار حافظهٔ داخلی صفحه‌کلید در + رجیستری به اسم endpoint ذخیره می‌شه. USB host controller، تقریباً هر ۱۰ میلی‌ثانیه محتوای این رجیستر رو + چک می‌کنه و در نهایت keycode ذخیره‌شده رو می‌خونه ... . این مخزن تلاش می‌کنه به این سوال رایجِ + مصاحبه‌های استخدامی با سطح جزئیاتی فراتر از انتظار (و احتمالاً‌ سوادِ) مصاحبه‌گرها پاسخ بده!
    مطالعه مطلب اصلی


    +
  • ۱۲ فاکتور برای نرم‌افزارهای مدرن
  • +

    توی این مقاله که تقریبا میشه گفت مقاله معروفی هم هست، ۱۲ تا فاکتور برای توسعه و ساختن نرم‌افزار گفته که + کمک میکنه برنامه‌های ما راحت‌تر در محیط‌های ابری اجرا بشن و اصطلاحا قابل جابجایی در محیط‌های مختلف با + کمترین هزینه باشن. این مقاله رو تیمی از توسعه‌دهنده‌های Heroku نوشتنش. حتی اگر از کلود متنفرین و دوست + ندارین دربارش چیزی بخونین، بازم به نظرم خوندن این مقاله میتونه براتون چیزای جالب دیگه‌ای هم داشته باشه و + سرنخ‌های جدیدی برای مطالعه بهتون بده
    مطالعه مطلب اصلی


    +
  • Effective Git as a solo developer
  • +

    نکاتی ساده ولی کاربردی برای استفاده بهتر از گیت. مقاله شامل راهکارهایی برای داشتن یک ریپوزیتوری با + تاریخچه‌ای تمیز و قابل ارجاع است.
    مطالعه مطلب اصلی


    +
  • لیست دروس مرتبط با اخلاق و تکنولوژی
  • +

    به نظرتون لازمه که دانشجوهای مهندسی و علوم کامپیوتر هم کمی از علوم انسانی مثل فلسفه و اخلاق، مطالعات + اجتماعی و حقوق بشر بخونن؟ تاثیرات اخلاقی و اجتماعی تکنولوژی به حدی واضح و مطرح شده که خیلی از دانشگاه‌ها + شروع کردن به انطباق و ارایه‌ی درسهای علوم انسانی برای دانشجوهای مهندسی. این یه لیستیه از این کلاسا، + منابع و ویدیوهای بعضی کلاسا هم موجوده.
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های حسن شهبازی، سید ایوب کوکبی، امیرحسین بقایی، رویا + پاکزاد در تهیه محتوا کمک کردند.

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید

+

+
+ + + + + + + \ No newline at end of file diff --git a/archives/num9.html b/archives/num9.html new file mode 100644 index 0000000..e617127 --- /dev/null +++ b/archives/num9.html @@ -0,0 +1,106 @@ + + + + خبرنامه شماره ۹ + + + + + + + + + + + +

+

+ خبر‌نامه مهندسان نرم‌افزار

+

+ شماره ۹ - پنجشنبه، ۱۴ اسفند ۹۹

+
+
    +
  • چطوری با بینایی کامپیوتر، هواپیماها رو در تصویر هوایی پیدا کنیم؟
  • +

    اگر شما هم از کسانی هستید که از خوندن مطالب طولانی و پیچیده در مورد هوش مصنوعی، یادگیری عمیق و شبکه‌های + عصبی کانولوشنال خسته شدید و واقعا نمی‌دونید این شبکه‌ها چه تفاوتی با شبکه‌های عصبی دیگه دارند، این مطلب + برای شماست. این‌بار می‌خواهیم یاد بگیریم که چطور برنامه‌هایی رو بنویسیم که اشیا رو در تصاویر با استفاده + از یادگیری عمیق تشخیص بده و مدلی طراحی خواهیم کرد که در تصاویر هوایی هواپیماها رو پیدا میکنه. همچنین در + این پست قصد داریم با رویکرد آموزشی یاد بگیریم که شبکه های عصبی کانولوشنال (پیچشی) چطور کار می‌کنند. یکی + از کاربرد‌های این روش که ممکن است روزانه از اون استفاده کنیم جستجوی یک کلمه در اپلیکیشن گوگل فوتوز بر + اساس تصویر است.
    مطالعه مطلب اصلی


    +
  • گیتهاب چطور کره‌زمین صفحه اول سایتش رو درست کرده؟
  • +

    اگر صفحه اول گیتهاب رو دیده باشین، چندوقتیه که یک کره‌زمین خوشگل گذاشته که توش فلش‌هایی که شامل آخرین + رویدادهای پروژه‌های روی گیتهابه رو نشون میده. اگر دوست دارین بدونین چطوری اون کره‌زمین و اطلاعاتش رو + درست کردن، مقاله خودشون از بلاگشون رو مطالعه کنید.
    مطالعه مطلب اصلی


    +
  • کانال باحال یوتیوبی به نام Computerphile
  • +

    تقریبا مدت زیادیه مشترک این کانال شدم و اکثر ویدیو‌هاش برام جالب و مفید بوده. اگر توی حوزه کامپیوتر کار + میکنید، توی این کانال کلی ویدیو‌های کوتاه و جالب درباره موضوعات مختلف این حوزه میتونید پیدا کنید که هم + خیلی خوب توضیح داده شدن و هم خیلی مفید و مختصرن
    مطالعه مطلب اصلی


    +
  • How I cut GTA Online loading times by 70%
  • +

    در این مقاله نویسنده ابتدا مشکل اجرای نسخه آنلاین بازی جی تی ای را مطرح میکند، سپس با استفاده از + ابزارهای مختلف سعی در رمزگشایی بازی و پیدا کردن مشکل دارد. در نهایت، با افزودن چند تابع، بهبودی نزدیک به + ۷۰ درصد در زمان اجرای نسخه آنلاین به دست می آید. نکته حائز اهمیت این است که نویسنده به سورس کد بازی + دسترسی نداشته و بهبود روی نسخه تجاری بازی انجام شده است.
    مطالعه مطلب اصلی


    +
  • آموزش کش ریکوئست ها در لاراول
  • +

    توی لاراول امکانی وجود داره که شما با اضافه کردن یک میدلور میتونید یک تگ به تمام ریکوئست های گت سایتتون + اضافه کنید و به مرورگر بفهمونید کی ریکوئست از کش خودش بخونه و کی کانتنت از سرور دریافت کنه
    مطالعه مطلب اصلی


    +
  • Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other + Companies
  • +

    در این مقاله، یک محقق امنیتی گزارش میدهد چطور با بارگذاری کدهای مخرب روی سرورهای پکیج منیجر توانسته است + به کمپانی های بزرگ و کوچک بسیار زیادی نفوذ کند.
    مطالعه مطلب اصلی

    +
+
+

در این شماره از + خبرنامه، دوستان خوبی به نام‌های امیرحسین بقایی، حسن شهبازی، AriaieBOY در تهیه محتوا کمک + کردند. (شما هم قصد مشارکت داری؟ از اینجا شروع کن)

+
+


ارسال شده توسط پاکت

+

سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید

+
+ + + + + + + \ No newline at end of file diff --git a/assets/css/emoji.css b/assets/css/emoji.css new file mode 100644 index 0000000..c0738be --- /dev/null +++ b/assets/css/emoji.css @@ -0,0 +1 @@ +.em,.em-svg{height:1.5em;width:1.5em;background-position:center;background-repeat:no-repeat;background-size:contain;display:inline-block;vertical-align:middle}.em---1,.em---1,.em-thumbsup{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f44d.png")}.em---1.em-svg,.em---1.em-svg,.em-thumbsup.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f44d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f44d.svg"),none}.em--1,.em-thumbsdown{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f44e.png")}.em--1.em-svg,.em-thumbsdown.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f44e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f44e.svg"),none}.em-100{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4af.png")}.em-100.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4af.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4af.svg"),none}.em-1234{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f522.png")}.em-1234.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f522.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f522.svg"),none}.em-8ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b1.png")}.em-8ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b1.svg"),none}.em-a{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f170.png")}.em-a.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f170.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f170.svg"),none}.em-ab{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f18e.png")}.em-ab.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f18e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f18e.svg"),none}.em-abacus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9ee.png")}.em-abacus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9ee.svg"),none}.em-abc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f524.png")}.em-abc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f524.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f524.svg"),none}.em-abcd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f521.png")}.em-abcd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f521.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f521.svg"),none}.em-accept{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f251.png")}.em-accept.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f251.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f251.svg"),none}.em-admission_tickets{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f39f.png")}.em-admission_tickets.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f39f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f39f.svg"),none}.em-adult{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d1.png")}.em-adult.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d1.svg"),none}.em-aerial_tramway{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a1.png")}.em-aerial_tramway.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a1.svg"),none}.em-airplane{background-image:url("https://twemoji.maxcdn.com/2/72x72/2708.png")}.em-airplane.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2708.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2708.svg"),none}.em-airplane_arriving{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6ec.png")}.em-airplane_arriving.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6ec.svg"),none}.em-airplane_departure{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6eb.png")}.em-airplane_departure.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6eb.svg"),none}.em-alarm_clock{background-image:url("https://twemoji.maxcdn.com/2/72x72/23f0.png")}.em-alarm_clock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23f0.svg"),none}.em-alembic{background-image:url("https://twemoji.maxcdn.com/2/72x72/2697.png")}.em-alembic.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2697.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2697.svg"),none}.em-alien{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f47d.png")}.em-alien.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f47d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f47d.svg"),none}.em-ambulance{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f691.png")}.em-ambulance.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f691.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f691.svg"),none}.em-amphora{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3fa.png")}.em-amphora.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3fa.svg"),none}.em-anchor{background-image:url("https://twemoji.maxcdn.com/2/72x72/2693.png")}.em-anchor.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2693.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2693.svg"),none}.em-angel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f47c.png")}.em-angel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f47c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f47c.svg"),none}.em-anger{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a2.png")}.em-anger.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a2.svg"),none}.em-angry{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f620.png")}.em-angry.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f620.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f620.svg"),none}.em-anguished{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f627.png")}.em-anguished.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f627.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f627.svg"),none}.em-ant{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f41c.png")}.em-ant.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f41c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f41c.svg"),none}.em-apple{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f34e.png")}.em-apple.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f34e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f34e.svg"),none}.em-aquarius{background-image:url("https://twemoji.maxcdn.com/2/72x72/2652.png")}.em-aquarius.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2652.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2652.svg"),none}.em-aries{background-image:url("https://twemoji.maxcdn.com/2/72x72/2648.png")}.em-aries.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2648.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2648.svg"),none}.em-arrow_backward{background-image:url("https://twemoji.maxcdn.com/2/72x72/25c0.png")}.em-arrow_backward.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25c0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25c0.svg"),none}.em-arrow_double_down{background-image:url("https://twemoji.maxcdn.com/2/72x72/23ec.png")}.em-arrow_double_down.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23ec.svg"),none}.em-arrow_double_up{background-image:url("https://twemoji.maxcdn.com/2/72x72/23eb.png")}.em-arrow_double_up.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23eb.svg"),none}.em-arrow_down{background-image:url("https://twemoji.maxcdn.com/2/72x72/2b07.png")}.em-arrow_down.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2b07.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2b07.svg"),none}.em-arrow_down_small{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f53d.png")}.em-arrow_down_small.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f53d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f53d.svg"),none}.em-arrow_forward{background-image:url("https://twemoji.maxcdn.com/2/72x72/25b6.png")}.em-arrow_forward.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25b6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25b6.svg"),none}.em-arrow_heading_down{background-image:url("https://twemoji.maxcdn.com/2/72x72/2935.png")}.em-arrow_heading_down.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2935.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2935.svg"),none}.em-arrow_heading_up{background-image:url("https://twemoji.maxcdn.com/2/72x72/2934.png")}.em-arrow_heading_up.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2934.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2934.svg"),none}.em-arrow_left{background-image:url("https://twemoji.maxcdn.com/2/72x72/2b05.png")}.em-arrow_left.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2b05.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2b05.svg"),none}.em-arrow_lower_left{background-image:url("https://twemoji.maxcdn.com/2/72x72/2199.png")}.em-arrow_lower_left.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2199.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2199.svg"),none}.em-arrow_lower_right{background-image:url("https://twemoji.maxcdn.com/2/72x72/2198.png")}.em-arrow_lower_right.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2198.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2198.svg"),none}.em-arrow_right{background-image:url("https://twemoji.maxcdn.com/2/72x72/27a1.png")}.em-arrow_right.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/27a1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/27a1.svg"),none}.em-arrow_right_hook{background-image:url("https://twemoji.maxcdn.com/2/72x72/21aa.png")}.em-arrow_right_hook.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/21aa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/21aa.svg"),none}.em-arrow_up{background-image:url("https://twemoji.maxcdn.com/2/72x72/2b06.png")}.em-arrow_up.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2b06.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2b06.svg"),none}.em-arrow_up_down{background-image:url("https://twemoji.maxcdn.com/2/72x72/2195.png")}.em-arrow_up_down.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2195.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2195.svg"),none}.em-arrow_up_small{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f53c.png")}.em-arrow_up_small.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f53c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f53c.svg"),none}.em-arrow_upper_left{background-image:url("https://twemoji.maxcdn.com/2/72x72/2196.png")}.em-arrow_upper_left.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2196.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2196.svg"),none}.em-arrow_upper_right{background-image:url("https://twemoji.maxcdn.com/2/72x72/2197.png")}.em-arrow_upper_right.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2197.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2197.svg"),none}.em-arrows_clockwise{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f503.png")}.em-arrows_clockwise.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f503.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f503.svg"),none}.em-arrows_counterclockwise{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f504.png")}.em-arrows_counterclockwise.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f504.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f504.svg"),none}.em-art{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a8.png")}.em-art.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a8.svg"),none}.em-articulated_lorry{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f69b.png")}.em-articulated_lorry.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f69b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f69b.svg"),none}.em-astonished{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f632.png")}.em-astonished.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f632.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f632.svg"),none}.em-athletic_shoe{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f45f.png")}.em-athletic_shoe.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f45f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f45f.svg"),none}.em-atm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e7.png")}.em-atm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e7.svg"),none}.em-atom_symbol{background-image:url("https://twemoji.maxcdn.com/2/72x72/269b.png")}.em-atom_symbol.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/269b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/269b.svg"),none}.em-avocado{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f951.png")}.em-avocado.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f951.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f951.svg"),none}.em-b{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f171.png")}.em-b.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f171.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f171.svg"),none}.em-baby{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f476.png")}.em-baby.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f476.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f476.svg"),none}.em-baby_bottle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f37c.png")}.em-baby_bottle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f37c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f37c.svg"),none}.em-baby_chick{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f424.png")}.em-baby_chick.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f424.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f424.svg"),none}.em-baby_symbol{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6bc.png")}.em-baby_symbol.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6bc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6bc.svg"),none}.em-back{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f519.png")}.em-back.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f519.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f519.svg"),none}.em-bacon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f953.png")}.em-bacon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f953.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f953.svg"),none}.em-badger{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9a1.png")}.em-badger.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9a1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9a1.svg"),none}.em-badminton_racquet_and_shuttlecock{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f8.png")}.em-badminton_racquet_and_shuttlecock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f8.svg"),none}.em-bagel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f96f.png")}.em-bagel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f96f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f96f.svg"),none}.em-baggage_claim{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6c4.png")}.em-baggage_claim.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6c4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6c4.svg"),none}.em-baguette_bread{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f956.png")}.em-baguette_bread.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f956.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f956.svg"),none}.em-balloon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f388.png")}.em-balloon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f388.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f388.svg"),none}.em-ballot_box_with_ballot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5f3.png")}.em-ballot_box_with_ballot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5f3.svg"),none}.em-ballot_box_with_check{background-image:url("https://twemoji.maxcdn.com/2/72x72/2611.png")}.em-ballot_box_with_check.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2611.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2611.svg"),none}.em-bamboo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f38d.png")}.em-bamboo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f38d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f38d.svg"),none}.em-banana{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f34c.png")}.em-banana.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f34c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f34c.svg"),none}.em-bangbang{background-image:url("https://twemoji.maxcdn.com/2/72x72/203c.png")}.em-bangbang.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/203c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/203c.svg"),none}.em-bank{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e6.png")}.em-bank.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e6.svg"),none}.em-bar_chart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ca.png")}.em-bar_chart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ca.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ca.svg"),none}.em-barber{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f488.png")}.em-barber.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f488.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f488.svg"),none}.em-barely_sunny,.em-sun_behind_cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f325.png")}.em-barely_sunny.em-svg,.em-sun_behind_cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f325.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f325.svg"),none}.em-baseball{background-image:url("https://twemoji.maxcdn.com/2/72x72/26be.png")}.em-baseball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26be.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26be.svg"),none}.em-basket{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9fa.png")}.em-basket.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9fa.svg"),none}.em-basketball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c0.png")}.em-basketball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c0.svg"),none}.em-bat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f987.png")}.em-bat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f987.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f987.svg"),none}.em-bath{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6c0.png")}.em-bath.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6c0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6c0.svg"),none}.em-bathtub{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6c1.png")}.em-bathtub.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6c1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6c1.svg"),none}.em-battery{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f50b.png")}.em-battery.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f50b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f50b.svg"),none}.em-beach_with_umbrella{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d6.png")}.em-beach_with_umbrella.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d6.svg"),none}.em-bear{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f43b.png")}.em-bear.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f43b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f43b.svg"),none}.em-bearded_person{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d4.png")}.em-bearded_person.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d4.svg"),none}.em-bed{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6cf.png")}.em-bed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6cf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6cf.svg"),none}.em-bee,.em-honeybee{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f41d.png")}.em-bee.em-svg,.em-honeybee.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f41d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f41d.svg"),none}.em-beer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f37a.png")}.em-beer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f37a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f37a.svg"),none}.em-beers{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f37b.png")}.em-beers.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f37b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f37b.svg"),none}.em-beetle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f41e.png")}.em-beetle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f41e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f41e.svg"),none}.em-beginner{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f530.png")}.em-beginner.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f530.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f530.svg"),none}.em-bell{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f514.png")}.em-bell.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f514.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f514.svg"),none}.em-bellhop_bell{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6ce.png")}.em-bellhop_bell.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6ce.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6ce.svg"),none}.em-bento{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f371.png")}.em-bento.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f371.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f371.svg"),none}.em-bicyclist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b4.png")}.em-bicyclist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b4.svg"),none}.em-bike{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b2.png")}.em-bike.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b2.svg"),none}.em-bikini{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f459.png")}.em-bikini.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f459.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f459.svg"),none}.em-billed_cap{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e2.png")}.em-billed_cap.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e2.svg"),none}.em-biohazard_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/2623.png")}.em-biohazard_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2623.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2623.svg"),none}.em-bird{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f426.png")}.em-bird.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f426.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f426.svg"),none}.em-birthday{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f382.png")}.em-birthday.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f382.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f382.svg"),none}.em-black_circle{background-image:url("https://twemoji.maxcdn.com/2/72x72/26ab.png")}.em-black_circle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26ab.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26ab.svg"),none}.em-black_circle_for_record{background-image:url("https://twemoji.maxcdn.com/2/72x72/23fa.png")}.em-black_circle_for_record.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23fa.svg"),none}.em-black_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5a4.png")}.em-black_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5a4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5a4.svg"),none}.em-black_joker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f0cf.png")}.em-black_joker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f0cf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f0cf.svg"),none}.em-black_large_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/2b1b.png")}.em-black_large_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2b1b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2b1b.svg"),none}.em-black_left_pointing_double_triangle_with_vertical_bar{background-image:url("https://twemoji.maxcdn.com/2/72x72/23ee.png")}.em-black_left_pointing_double_triangle_with_vertical_bar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23ee.svg"),none}.em-black_medium_small_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/25fe.png")}.em-black_medium_small_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25fe.svg"),none}.em-black_medium_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/25fc.png")}.em-black_medium_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25fc.svg"),none}.em-black_nib{background-image:url("https://twemoji.maxcdn.com/2/72x72/2712.png")}.em-black_nib.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2712.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2712.svg"),none}.em-black_right_pointing_double_triangle_with_vertical_bar{background-image:url("https://twemoji.maxcdn.com/2/72x72/23ed.png")}.em-black_right_pointing_double_triangle_with_vertical_bar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23ed.svg"),none}.em-black_right_pointing_triangle_with_double_vertical_bar{background-image:url("https://twemoji.maxcdn.com/2/72x72/23ef.png")}.em-black_right_pointing_triangle_with_double_vertical_bar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23ef.svg"),none}.em-black_small_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/25aa.png")}.em-black_small_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25aa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25aa.svg"),none}.em-black_square_button{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f532.png")}.em-black_square_button.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f532.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f532.svg"),none}.em-black_square_for_stop{background-image:url("https://twemoji.maxcdn.com/2/72x72/23f9.png")}.em-black_square_for_stop.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23f9.svg"),none}.em-blond-haired-man{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f471-200d-2642-fe0f.png")}.em-blond-haired-man.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f471-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f471-200d-2642-fe0f.svg"),none}.em-blond-haired-woman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f471-200d-2640-fe0f.png")}.em-blond-haired-woman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f471-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f471-200d-2640-fe0f.svg"),none}.em-blossom{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f33c.png")}.em-blossom.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f33c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f33c.svg"),none}.em-blowfish{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f421.png")}.em-blowfish.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f421.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f421.svg"),none}.em-blue_book{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d8.png")}.em-blue_book.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d8.svg"),none}.em-blue_car{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f699.png")}.em-blue_car.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f699.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f699.svg"),none}.em-blue_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f499.png")}.em-blue_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f499.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f499.svg"),none}.em-blush{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f60a.png")}.em-blush.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f60a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f60a.svg"),none}.em-boar{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f417.png")}.em-boar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f417.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f417.svg"),none}.em-boat,.em-sailboat{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f5.png")}.em-boat.em-svg,.em-sailboat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f5.svg"),none}.em-bomb{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a3.png")}.em-bomb.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a3.svg"),none}.em-bone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b4.png")}.em-bone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b4.svg"),none}.em-book,.em-open_book{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d6.png")}.em-book.em-svg,.em-open_book.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d6.svg"),none}.em-bookmark{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f516.png")}.em-bookmark.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f516.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f516.svg"),none}.em-bookmark_tabs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d1.png")}.em-bookmark_tabs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d1.svg"),none}.em-books{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4da.png")}.em-books.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4da.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4da.svg"),none}.em-boom,.em-collision{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a5.png")}.em-boom.em-svg,.em-collision.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a5.svg"),none}.em-boot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f462.png")}.em-boot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f462.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f462.svg"),none}.em-bouquet{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f490.png")}.em-bouquet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f490.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f490.svg"),none}.em-bow{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f647.png")}.em-bow.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f647.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f647.svg"),none}.em-bow_and_arrow{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f9.png")}.em-bow_and_arrow.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f9.svg"),none}.em-bowl_with_spoon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f963.png")}.em-bowl_with_spoon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f963.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f963.svg"),none}.em-bowling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b3.png")}.em-bowling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b3.svg"),none}.em-boxing_glove{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f94a.png")}.em-boxing_glove.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f94a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f94a.svg"),none}.em-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f466.png")}.em-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f466.svg"),none}.em-brain{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e0.png")}.em-brain.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e0.svg"),none}.em-bread{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f35e.png")}.em-bread.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f35e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f35e.svg"),none}.em-breast-feeding{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f931.png")}.em-breast-feeding.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f931.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f931.svg"),none}.em-bricks{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f1.png")}.em-bricks.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f1.svg"),none}.em-bride_with_veil{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f470.png")}.em-bride_with_veil.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f470.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f470.svg"),none}.em-bridge_at_night{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f309.png")}.em-bridge_at_night.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f309.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f309.svg"),none}.em-briefcase{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4bc.png")}.em-briefcase.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4bc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4bc.svg"),none}.em-broccoli{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f966.png")}.em-broccoli.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f966.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f966.svg"),none}.em-broken_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f494.png")}.em-broken_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f494.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f494.svg"),none}.em-broom{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f9.png")}.em-broom.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f9.svg"),none}.em-bug{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f41b.png")}.em-bug.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f41b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f41b.svg"),none}.em-building_construction{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d7.png")}.em-building_construction.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d7.svg"),none}.em-bulb{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a1.png")}.em-bulb.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a1.svg"),none}.em-bullettrain_front{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f685.png")}.em-bullettrain_front.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f685.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f685.svg"),none}.em-bullettrain_side{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f684.png")}.em-bullettrain_side.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f684.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f684.svg"),none}.em-burrito{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f32f.png")}.em-burrito.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f32f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f32f.svg"),none}.em-bus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f68c.png")}.em-bus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f68c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f68c.svg"),none}.em-busstop{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f68f.png")}.em-busstop.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f68f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f68f.svg"),none}.em-bust_in_silhouette{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f464.png")}.em-bust_in_silhouette.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f464.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f464.svg"),none}.em-busts_in_silhouette{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f465.png")}.em-busts_in_silhouette.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f465.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f465.svg"),none}.em-butterfly{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f98b.png")}.em-butterfly.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f98b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f98b.svg"),none}.em-cactus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f335.png")}.em-cactus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f335.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f335.svg"),none}.em-cake{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f370.png")}.em-cake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f370.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f370.svg"),none}.em-calendar{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c6.png")}.em-calendar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c6.svg"),none}.em-call_me_hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f919.png")}.em-call_me_hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f919.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f919.svg"),none}.em-calling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f2.png")}.em-calling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f2.svg"),none}.em-camel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f42b.png")}.em-camel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f42b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f42b.svg"),none}.em-camera{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f7.png")}.em-camera.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f7.svg"),none}.em-camera_with_flash{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f8.png")}.em-camera_with_flash.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f8.svg"),none}.em-camping{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d5.png")}.em-camping.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d5.svg"),none}.em-cancer{background-image:url("https://twemoji.maxcdn.com/2/72x72/264b.png")}.em-cancer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/264b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/264b.svg"),none}.em-candle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f56f.png")}.em-candle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f56f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f56f.svg"),none}.em-candy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f36c.png")}.em-candy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f36c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f36c.svg"),none}.em-canned_food{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f96b.png")}.em-canned_food.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f96b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f96b.svg"),none}.em-canoe{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f6.png")}.em-canoe.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f6.svg"),none}.em-capital_abcd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f520.png")}.em-capital_abcd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f520.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f520.svg"),none}.em-capricorn{background-image:url("https://twemoji.maxcdn.com/2/72x72/2651.png")}.em-capricorn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2651.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2651.svg"),none}.em-car,.em-red_car{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f697.png")}.em-car.em-svg,.em-red_car.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f697.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f697.svg"),none}.em-card_file_box{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5c3.png")}.em-card_file_box.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5c3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5c3.svg"),none}.em-card_index{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c7.png")}.em-card_index.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c7.svg"),none}.em-card_index_dividers{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5c2.png")}.em-card_index_dividers.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5c2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5c2.svg"),none}.em-carousel_horse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a0.png")}.em-carousel_horse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a0.svg"),none}.em-carrot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f955.png")}.em-carrot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f955.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f955.svg"),none}.em-cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f431.png")}.em-cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f431.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f431.svg"),none}.em-cat2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f408.png")}.em-cat2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f408.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f408.svg"),none}.em-cd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4bf.png")}.em-cd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4bf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4bf.svg"),none}.em-chains{background-image:url("https://twemoji.maxcdn.com/2/72x72/26d3.png")}.em-chains.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26d3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26d3.svg"),none}.em-champagne{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f37e.png")}.em-champagne.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f37e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f37e.svg"),none}.em-chart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b9.png")}.em-chart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b9.svg"),none}.em-chart_with_downwards_trend{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c9.png")}.em-chart_with_downwards_trend.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c9.svg"),none}.em-chart_with_upwards_trend{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c8.png")}.em-chart_with_upwards_trend.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c8.svg"),none}.em-checkered_flag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c1.png")}.em-checkered_flag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c1.svg"),none}.em-cheese_wedge{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9c0.png")}.em-cheese_wedge.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9c0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9c0.svg"),none}.em-cherries{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f352.png")}.em-cherries.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f352.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f352.svg"),none}.em-cherry_blossom{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f338.png")}.em-cherry_blossom.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f338.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f338.svg"),none}.em-chess_pawn{background-image:url("https://twemoji.maxcdn.com/2/72x72/265f.png")}.em-chess_pawn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/265f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/265f.svg"),none}.em-chestnut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f330.png")}.em-chestnut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f330.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f330.svg"),none}.em-chicken{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f414.png")}.em-chicken.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f414.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f414.svg"),none}.em-child{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d2.png")}.em-child.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d2.svg"),none}.em-children_crossing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b8.png")}.em-children_crossing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b8.svg"),none}.em-chipmunk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f43f.png")}.em-chipmunk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f43f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f43f.svg"),none}.em-chocolate_bar{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f36b.png")}.em-chocolate_bar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f36b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f36b.svg"),none}.em-chopsticks{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f962.png")}.em-chopsticks.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f962.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f962.svg"),none}.em-christmas_tree{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f384.png")}.em-christmas_tree.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f384.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f384.svg"),none}.em-church{background-image:url("https://twemoji.maxcdn.com/2/72x72/26ea.png")}.em-church.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26ea.svg"),none}.em-cinema{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a6.png")}.em-cinema.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a6.svg"),none}.em-circus_tent{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3aa.png")}.em-circus_tent.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3aa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3aa.svg"),none}.em-city_sunrise{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f307.png")}.em-city_sunrise.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f307.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f307.svg"),none}.em-city_sunset{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f306.png")}.em-city_sunset.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f306.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f306.svg"),none}.em-cityscape{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d9.png")}.em-cityscape.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d9.svg"),none}.em-cl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f191.png")}.em-cl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f191.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f191.svg"),none}.em-clap{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f44f.png")}.em-clap.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f44f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f44f.svg"),none}.em-clapper{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ac.png")}.em-clapper.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ac.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ac.svg"),none}.em-classical_building{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3db.png")}.em-classical_building.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3db.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3db.svg"),none}.em-clinking_glasses{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f942.png")}.em-clinking_glasses.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f942.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f942.svg"),none}.em-clipboard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4cb.png")}.em-clipboard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4cb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4cb.svg"),none}.em-clock1{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f550.png")}.em-clock1.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f550.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f550.svg"),none}.em-clock10{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f559.png")}.em-clock10.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f559.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f559.svg"),none}.em-clock1030{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f565.png")}.em-clock1030.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f565.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f565.svg"),none}.em-clock11{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f55a.png")}.em-clock11.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f55a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f55a.svg"),none}.em-clock1130{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f566.png")}.em-clock1130.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f566.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f566.svg"),none}.em-clock12{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f55b.png")}.em-clock12.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f55b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f55b.svg"),none}.em-clock1230{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f567.png")}.em-clock1230.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f567.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f567.svg"),none}.em-clock130{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f55c.png")}.em-clock130.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f55c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f55c.svg"),none}.em-clock2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f551.png")}.em-clock2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f551.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f551.svg"),none}.em-clock230{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f55d.png")}.em-clock230.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f55d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f55d.svg"),none}.em-clock3{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f552.png")}.em-clock3.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f552.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f552.svg"),none}.em-clock330{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f55e.png")}.em-clock330.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f55e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f55e.svg"),none}.em-clock4{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f553.png")}.em-clock4.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f553.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f553.svg"),none}.em-clock430{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f55f.png")}.em-clock430.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f55f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f55f.svg"),none}.em-clock5{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f554.png")}.em-clock5.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f554.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f554.svg"),none}.em-clock530{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f560.png")}.em-clock530.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f560.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f560.svg"),none}.em-clock6{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f555.png")}.em-clock6.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f555.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f555.svg"),none}.em-clock630{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f561.png")}.em-clock630.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f561.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f561.svg"),none}.em-clock7{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f556.png")}.em-clock7.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f556.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f556.svg"),none}.em-clock730{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f562.png")}.em-clock730.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f562.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f562.svg"),none}.em-clock8{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f557.png")}.em-clock8.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f557.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f557.svg"),none}.em-clock830{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f563.png")}.em-clock830.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f563.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f563.svg"),none}.em-clock9{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f558.png")}.em-clock9.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f558.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f558.svg"),none}.em-clock930{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f564.png")}.em-clock930.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f564.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f564.svg"),none}.em-closed_book{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d5.png")}.em-closed_book.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d5.svg"),none}.em-closed_lock_with_key{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f510.png")}.em-closed_lock_with_key.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f510.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f510.svg"),none}.em-closed_umbrella{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f302.png")}.em-closed_umbrella.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f302.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f302.svg"),none}.em-cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/2601.png")}.em-cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2601.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2601.svg"),none}.em-clown_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f921.png")}.em-clown_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f921.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f921.svg"),none}.em-clubs{background-image:url("https://twemoji.maxcdn.com/2/72x72/2663.png")}.em-clubs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2663.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2663.svg"),none}.em-cn,.em-flag-cn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f3.png")}.em-cn.em-svg,.em-flag-cn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f3.svg"),none}.em-coat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e5.png")}.em-coat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e5.svg"),none}.em-cocktail{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f378.png")}.em-cocktail.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f378.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f378.svg"),none}.em-coconut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f965.png")}.em-coconut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f965.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f965.svg"),none}.em-coffee{background-image:url("https://twemoji.maxcdn.com/2/72x72/2615.png")}.em-coffee.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2615.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2615.svg"),none}.em-coffin{background-image:url("https://twemoji.maxcdn.com/2/72x72/26b0.png")}.em-coffin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26b0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26b0.svg"),none}.em-cold_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f976.png")}.em-cold_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f976.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f976.svg"),none}.em-cold_sweat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f630.png")}.em-cold_sweat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f630.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f630.svg"),none}.em-comet{background-image:url("https://twemoji.maxcdn.com/2/72x72/2604.png")}.em-comet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2604.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2604.svg"),none}.em-compass{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9ed.png")}.em-compass.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9ed.svg"),none}.em-compression{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5dc.png")}.em-compression.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5dc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5dc.svg"),none}.em-computer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4bb.png")}.em-computer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4bb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4bb.svg"),none}.em-confetti_ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f38a.png")}.em-confetti_ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f38a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f38a.svg"),none}.em-confounded{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f616.png")}.em-confounded.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f616.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f616.svg"),none}.em-confused{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f615.png")}.em-confused.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f615.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f615.svg"),none}.em-congratulations{background-image:url("https://twemoji.maxcdn.com/2/72x72/3297.png")}.em-congratulations.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/3297.png");background-image:url("https://twemoji.maxcdn.com/2/svg/3297.svg"),none}.em-construction{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a7.png")}.em-construction.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a7.svg"),none}.em-construction_worker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f477.png")}.em-construction_worker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f477.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f477.svg"),none}.em-control_knobs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f39b.png")}.em-control_knobs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f39b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f39b.svg"),none}.em-convenience_store{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ea.png")}.em-convenience_store.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ea.svg"),none}.em-cookie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f36a.png")}.em-cookie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f36a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f36a.svg"),none}.em-cool{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f192.png")}.em-cool.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f192.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f192.svg"),none}.em-cop{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46e.png")}.em-cop.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46e.svg"),none}.em-copyright{background-image:url("https://twemoji.maxcdn.com/2/72x72/a9.png")}.em-copyright.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/a9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/a9.svg"),none}.em-corn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f33d.png")}.em-corn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f33d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f33d.svg"),none}.em-couch_and_lamp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6cb.png")}.em-couch_and_lamp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6cb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6cb.svg"),none}.em-couple,.em-man_and_woman_holding_hands{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46b.png")}.em-couple.em-svg,.em-man_and_woman_holding_hands.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46b.svg"),none}.em-couple_with_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f491.png")}.em-couple_with_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f491.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f491.svg"),none}.em-couplekiss{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f48f.png")}.em-couplekiss.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f48f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f48f.svg"),none}.em-cow{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f42e.png")}.em-cow.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f42e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f42e.svg"),none}.em-cow2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f404.png")}.em-cow2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f404.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f404.svg"),none}.em-crab{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f980.png")}.em-crab.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f980.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f980.svg"),none}.em-credit_card{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b3.png")}.em-credit_card.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b3.svg"),none}.em-crescent_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f319.png")}.em-crescent_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f319.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f319.svg"),none}.em-cricket{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f997.png")}.em-cricket.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f997.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f997.svg"),none}.em-cricket_bat_and_ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cf.png")}.em-cricket_bat_and_ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cf.svg"),none}.em-crocodile{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f40a.png")}.em-crocodile.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f40a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f40a.svg"),none}.em-croissant{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f950.png")}.em-croissant.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f950.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f950.svg"),none}.em-crossed_fingers,.em-hand_with_index_and_middle_fingers_crossed{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f91e.png")}.em-crossed_fingers.em-svg,.em-hand_with_index_and_middle_fingers_crossed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f91e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f91e.svg"),none}.em-crossed_flags{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f38c.png")}.em-crossed_flags.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f38c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f38c.svg"),none}.em-crossed_swords{background-image:url("https://twemoji.maxcdn.com/2/72x72/2694.png")}.em-crossed_swords.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2694.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2694.svg"),none}.em-crown{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f451.png")}.em-crown.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f451.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f451.svg"),none}.em-cry{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f622.png")}.em-cry.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f622.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f622.svg"),none}.em-crying_cat_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f63f.png")}.em-crying_cat_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f63f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f63f.svg"),none}.em-crystal_ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f52e.png")}.em-crystal_ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f52e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f52e.svg"),none}.em-cucumber{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f952.png")}.em-cucumber.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f952.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f952.svg"),none}.em-cup_with_straw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f964.png")}.em-cup_with_straw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f964.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f964.svg"),none}.em-cupcake{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9c1.png")}.em-cupcake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9c1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9c1.svg"),none}.em-cupid{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f498.png")}.em-cupid.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f498.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f498.svg"),none}.em-curling_stone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f94c.png")}.em-curling_stone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f94c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f94c.svg"),none}.em-curly_loop{background-image:url("https://twemoji.maxcdn.com/2/72x72/27b0.png")}.em-curly_loop.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/27b0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/27b0.svg"),none}.em-currency_exchange{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b1.png")}.em-currency_exchange.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b1.svg"),none}.em-curry{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f35b.png")}.em-curry.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f35b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f35b.svg"),none}.em-custard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f36e.png")}.em-custard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f36e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f36e.svg"),none}.em-customs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6c3.png")}.em-customs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6c3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6c3.svg"),none}.em-cut_of_meat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f969.png")}.em-cut_of_meat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f969.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f969.svg"),none}.em-cyclone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f300.png")}.em-cyclone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f300.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f300.svg"),none}.em-dagger_knife{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5e1.png")}.em-dagger_knife.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5e1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5e1.svg"),none}.em-dancer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f483.png")}.em-dancer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f483.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f483.svg"),none}.em-dancers{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46f.png")}.em-dancers.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46f.svg"),none}.em-dango{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f361.png")}.em-dango.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f361.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f361.svg"),none}.em-dark_sunglasses{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f576.png")}.em-dark_sunglasses.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f576.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f576.svg"),none}.em-dart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3af.png")}.em-dart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3af.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3af.svg"),none}.em-dash{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a8.png")}.em-dash.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a8.svg"),none}.em-date{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c5.png")}.em-date.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c5.svg"),none}.em-de,.em-flag-de{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ea.png")}.em-de.em-svg,.em-flag-de.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ea.svg"),none}.em-deciduous_tree{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f333.png")}.em-deciduous_tree.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f333.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f333.svg"),none}.em-deer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f98c.png")}.em-deer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f98c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f98c.svg"),none}.em-department_store{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ec.png")}.em-department_store.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ec.svg"),none}.em-derelict_house_building{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3da.png")}.em-derelict_house_building.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3da.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3da.svg"),none}.em-desert{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3dc.png")}.em-desert.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3dc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3dc.svg"),none}.em-desert_island{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3dd.png")}.em-desert_island.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3dd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3dd.svg"),none}.em-desktop_computer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5a5.png")}.em-desktop_computer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5a5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5a5.svg"),none}.em-diamond_shape_with_a_dot_inside{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a0.png")}.em-diamond_shape_with_a_dot_inside.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a0.svg"),none}.em-diamonds{background-image:url("https://twemoji.maxcdn.com/2/72x72/2666.png")}.em-diamonds.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2666.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2666.svg"),none}.em-disappointed{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f61e.png")}.em-disappointed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f61e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f61e.svg"),none}.em-disappointed_relieved{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f625.png")}.em-disappointed_relieved.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f625.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f625.svg"),none}.em-dizzy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ab.png")}.em-dizzy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ab.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ab.svg"),none}.em-dizzy_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f635.png")}.em-dizzy_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f635.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f635.svg"),none}.em-dna{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9ec.png")}.em-dna.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9ec.svg"),none}.em-do_not_litter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6af.png")}.em-do_not_litter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6af.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6af.svg"),none}.em-dog{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f436.png")}.em-dog.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f436.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f436.svg"),none}.em-dog2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f415.png")}.em-dog2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f415.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f415.svg"),none}.em-dollar{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b5.png")}.em-dollar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b5.svg"),none}.em-dolls{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f38e.png")}.em-dolls.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f38e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f38e.svg"),none}.em-dolphin,.em-flipper{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f42c.png")}.em-dolphin.em-svg,.em-flipper.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f42c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f42c.svg"),none}.em-door{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6aa.png")}.em-door.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6aa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6aa.svg"),none}.em-double_vertical_bar{background-image:url("https://twemoji.maxcdn.com/2/72x72/23f8.png")}.em-double_vertical_bar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23f8.svg"),none}.em-doughnut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f369.png")}.em-doughnut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f369.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f369.svg"),none}.em-dove_of_peace{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f54a.png")}.em-dove_of_peace.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f54a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f54a.svg"),none}.em-dragon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f409.png")}.em-dragon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f409.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f409.svg"),none}.em-dragon_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f432.png")}.em-dragon_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f432.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f432.svg"),none}.em-dress{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f457.png")}.em-dress.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f457.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f457.svg"),none}.em-dromedary_camel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f42a.png")}.em-dromedary_camel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f42a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f42a.svg"),none}.em-drooling_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f924.png")}.em-drooling_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f924.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f924.svg"),none}.em-droplet{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a7.png")}.em-droplet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a7.svg"),none}.em-drum_with_drumsticks{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f941.png")}.em-drum_with_drumsticks.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f941.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f941.svg"),none}.em-duck{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f986.png")}.em-duck.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f986.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f986.svg"),none}.em-dumpling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f95f.png")}.em-dumpling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f95f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f95f.svg"),none}.em-dvd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c0.png")}.em-dvd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c0.svg"),none}.em-e-mail{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e7.png")}.em-e-mail.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e7.svg"),none}.em-eagle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f985.png")}.em-eagle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f985.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f985.svg"),none}.em-ear{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f442.png")}.em-ear.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f442.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f442.svg"),none}.em-ear_of_rice{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f33e.png")}.em-ear_of_rice.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f33e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f33e.svg"),none}.em-earth_africa{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f30d.png")}.em-earth_africa.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f30d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f30d.svg"),none}.em-earth_americas{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f30e.png")}.em-earth_americas.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f30e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f30e.svg"),none}.em-earth_asia{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f30f.png")}.em-earth_asia.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f30f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f30f.svg"),none}.em-egg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f95a.png")}.em-egg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f95a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f95a.svg"),none}.em-eggplant{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f346.png")}.em-eggplant.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f346.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f346.svg"),none}.em-eight{background-image:url("https://twemoji.maxcdn.com/2/72x72/38-20e3.png")}.em-eight.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/38-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/38-20e3.svg"),none}.em-eight_pointed_black_star{background-image:url("https://twemoji.maxcdn.com/2/72x72/2734.png")}.em-eight_pointed_black_star.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2734.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2734.svg"),none}.em-eight_spoked_asterisk{background-image:url("https://twemoji.maxcdn.com/2/72x72/2733.png")}.em-eight_spoked_asterisk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2733.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2733.svg"),none}.em-eject{background-image:url("https://twemoji.maxcdn.com/2/72x72/23cf.png")}.em-eject.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23cf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23cf.svg"),none}.em-electric_plug{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f50c.png")}.em-electric_plug.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f50c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f50c.svg"),none}.em-elephant{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f418.png")}.em-elephant.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f418.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f418.svg"),none}.em-elf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9dd.png")}.em-elf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9dd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9dd.svg"),none}.em-email,.em-envelope{background-image:url("https://twemoji.maxcdn.com/2/72x72/2709.png")}.em-email.em-svg,.em-envelope.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2709.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2709.svg"),none}.em-end{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f51a.png")}.em-end.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f51a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f51a.svg"),none}.em-envelope_with_arrow{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e9.png")}.em-envelope_with_arrow.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e9.svg"),none}.em-es,.em-flag-es{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1f8.png")}.em-es.em-svg,.em-flag-es.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f8.svg"),none}.em-euro{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b6.png")}.em-euro.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b6.svg"),none}.em-european_castle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f0.png")}.em-european_castle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f0.svg"),none}.em-european_post_office{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e4.png")}.em-european_post_office.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e4.svg"),none}.em-evergreen_tree{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f332.png")}.em-evergreen_tree.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f332.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f332.svg"),none}.em-exclamation,.em-heavy_exclamation_mark{background-image:url("https://twemoji.maxcdn.com/2/72x72/2757.png")}.em-exclamation.em-svg,.em-heavy_exclamation_mark.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2757.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2757.svg"),none}.em-exploding_head,.em-shocked_face_with_exploding_head{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f92f.png")}.em-exploding_head.em-svg,.em-shocked_face_with_exploding_head.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f92f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f92f.svg"),none}.em-expressionless{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f611.png")}.em-expressionless.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f611.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f611.svg"),none}.em-eye{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f441.png")}.em-eye.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f441.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f441.svg"),none}.em-eyeglasses{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f453.png")}.em-eyeglasses.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f453.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f453.svg"),none}.em-eyes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f440.png")}.em-eyes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f440.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f440.svg"),none}.em-face_palm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f926.png")}.em-face_palm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f926.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f926.svg"),none}.em-face_vomiting,.em-face_with_open_mouth_vomiting{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f92e.png")}.em-face_vomiting.em-svg,.em-face_with_open_mouth_vomiting.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f92e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f92e.svg"),none}.em-face_with_cowboy_hat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f920.png")}.em-face_with_cowboy_hat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f920.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f920.svg"),none}.em-face_with_hand_over_mouth,.em-smiling_face_with_smiling_eyes_and_hand_covering_mouth{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f92d.png")}.em-face_with_hand_over_mouth.em-svg,.em-smiling_face_with_smiling_eyes_and_hand_covering_mouth.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f92d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f92d.svg"),none}.em-face_with_head_bandage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f915.png")}.em-face_with_head_bandage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f915.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f915.svg"),none}.em-face_with_monocle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d0.png")}.em-face_with_monocle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d0.svg"),none}.em-face_with_raised_eyebrow,.em-face_with_one_eyebrow_raised{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f928.png")}.em-face_with_raised_eyebrow.em-svg,.em-face_with_one_eyebrow_raised.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f928.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f928.svg"),none}.em-face_with_rolling_eyes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f644.png")}.em-face_with_rolling_eyes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f644.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f644.svg"),none}.em-face_with_symbols_on_mouth,.em-serious_face_with_symbols_covering_mouth{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f92c.png")}.em-face_with_symbols_on_mouth.em-svg,.em-serious_face_with_symbols_covering_mouth.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f92c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f92c.svg"),none}.em-face_with_thermometer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f912.png")}.em-face_with_thermometer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f912.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f912.svg"),none}.em-facepunch,.em-punch{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f44a.png")}.em-facepunch.em-svg,.em-punch.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f44a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f44a.svg"),none}.em-factory{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ed.png")}.em-factory.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ed.svg"),none}.em-fairy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9da.png")}.em-fairy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9da.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9da.svg"),none}.em-fallen_leaf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f342.png")}.em-fallen_leaf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f342.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f342.svg"),none}.em-family,.em-man-woman-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46a.png")}.em-family.em-svg,.em-man-woman-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46a.svg"),none}.em-fast_forward{background-image:url("https://twemoji.maxcdn.com/2/72x72/23e9.png")}.em-fast_forward.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23e9.svg"),none}.em-fax{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e0.png")}.em-fax.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e0.svg"),none}.em-fearful{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f628.png")}.em-fearful.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f628.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f628.svg"),none}.em-feet,.em-paw_prints{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f43e.png")}.em-feet.em-svg,.em-paw_prints.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f43e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f43e.svg"),none}.em-female-artist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3a8.png")}.em-female-artist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3a8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f3a8.svg"),none}.em-female-astronaut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f680.png")}.em-female-astronaut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f680.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f680.svg"),none}.em-female-construction-worker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f477-200d-2640-fe0f.png")}.em-female-construction-worker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f477-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f477-200d-2640-fe0f.svg"),none}.em-female-cook{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f373.png")}.em-female-cook.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f373.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f373.svg"),none}.em-female-detective{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f575-fe0f-200d-2640-fe0f.png")}.em-female-detective.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f575-fe0f-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f575-fe0f-200d-2640-fe0f.svg"),none}.em-female-doctor{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2695-fe0f.png")}.em-female-doctor.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2695-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2695-fe0f.svg"),none}.em-female-factory-worker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3ed.png")}.em-female-factory-worker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f3ed.svg"),none}.em-female-farmer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f33e.png")}.em-female-farmer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f33e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f33e.svg"),none}.em-female-firefighter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f692.png")}.em-female-firefighter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f692.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f692.svg"),none}.em-female-guard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f482-200d-2640-fe0f.png")}.em-female-guard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f482-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f482-200d-2640-fe0f.svg"),none}.em-female-judge{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2696-fe0f.png")}.em-female-judge.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2696-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2696-fe0f.svg"),none}.em-female-mechanic{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f527.png")}.em-female-mechanic.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f527.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f527.svg"),none}.em-female-office-worker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f4bc.png")}.em-female-office-worker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f4bc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f4bc.svg"),none}.em-female-pilot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2708-fe0f.png")}.em-female-pilot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2708-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2708-fe0f.svg"),none}.em-female-police-officer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46e-200d-2640-fe0f.png")}.em-female-police-officer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46e-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46e-200d-2640-fe0f.svg"),none}.em-female-scientist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f52c.png")}.em-female-scientist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f52c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f52c.svg"),none}.em-female-singer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3a4.png")}.em-female-singer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3a4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f3a4.svg"),none}.em-female-student{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f393.png")}.em-female-student.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f393.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f393.svg"),none}.em-female-teacher{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3eb.png")}.em-female-teacher.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f3eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f3eb.svg"),none}.em-female-technologist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f4bb.png")}.em-female-technologist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f4bb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f4bb.svg"),none}.em-female_bald{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b2.png")}.em-female_bald.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f9b2.svg"),none}.em-female_curly_haired{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b1.png")}.em-female_curly_haired.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f9b1.svg"),none}.em-female_elf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9dd-200d-2640-fe0f.png")}.em-female_elf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9dd-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9dd-200d-2640-fe0f.svg"),none}.em-female_fairy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9da-200d-2640-fe0f.png")}.em-female_fairy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9da-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9da-200d-2640-fe0f.svg"),none}.em-female_genie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9de-200d-2640-fe0f.png")}.em-female_genie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9de-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9de-200d-2640-fe0f.svg"),none}.em-female_mage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d9-200d-2640-fe0f.png")}.em-female_mage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d9-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d9-200d-2640-fe0f.svg"),none}.em-female_red_haired{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b0.png")}.em-female_red_haired.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f9b0.svg"),none}.em-female_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/2640.png")}.em-female_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2640.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2640.svg"),none}.em-female_superhero{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b8-200d-2640-fe0f.png")}.em-female_superhero.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b8-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b8-200d-2640-fe0f.svg"),none}.em-female_supervillain{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b9-200d-2640-fe0f.png")}.em-female_supervillain.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b9-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b9-200d-2640-fe0f.svg"),none}.em-female_vampire{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9db-200d-2640-fe0f.png")}.em-female_vampire.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9db-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9db-200d-2640-fe0f.svg"),none}.em-female_white_haired{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b3.png")}.em-female_white_haired.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f9b3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f9b3.svg"),none}.em-female_zombie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9df-200d-2640-fe0f.png")}.em-female_zombie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9df-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9df-200d-2640-fe0f.svg"),none}.em-fencer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93a.png")}.em-fencer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93a.svg"),none}.em-ferris_wheel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a1.png")}.em-ferris_wheel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a1.svg"),none}.em-ferry{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f4.png")}.em-ferry.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f4.svg"),none}.em-field_hockey_stick_and_ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d1.png")}.em-field_hockey_stick_and_ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d1.svg"),none}.em-file_cabinet{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5c4.png")}.em-file_cabinet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5c4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5c4.svg"),none}.em-file_folder{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c1.png")}.em-file_folder.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c1.svg"),none}.em-film_frames{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f39e.png")}.em-film_frames.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f39e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f39e.svg"),none}.em-film_projector{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4fd.png")}.em-film_projector.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4fd.svg"),none}.em-fire{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f525.png")}.em-fire.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f525.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f525.svg"),none}.em-fire_engine{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f692.png")}.em-fire_engine.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f692.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f692.svg"),none}.em-fire_extinguisher{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9ef.png")}.em-fire_extinguisher.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9ef.svg"),none}.em-firecracker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e8.png")}.em-firecracker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e8.svg"),none}.em-fireworks{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f386.png")}.em-fireworks.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f386.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f386.svg"),none}.em-first_place_medal{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f947.png")}.em-first_place_medal.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f947.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f947.svg"),none}.em-first_quarter_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f313.png")}.em-first_quarter_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f313.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f313.svg"),none}.em-first_quarter_moon_with_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f31b.png")}.em-first_quarter_moon_with_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f31b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f31b.svg"),none}.em-fish{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f41f.png")}.em-fish.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f41f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f41f.svg"),none}.em-fish_cake{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f365.png")}.em-fish_cake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f365.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f365.svg"),none}.em-fishing_pole_and_fish{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a3.png")}.em-fishing_pole_and_fish.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a3.svg"),none}.em-fist{background-image:url("https://twemoji.maxcdn.com/2/72x72/270a.png")}.em-fist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/270a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/270a.svg"),none}.em-five{background-image:url("https://twemoji.maxcdn.com/2/72x72/35-20e3.png")}.em-five.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/35-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/35-20e3.svg"),none}.em-flag-ac{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1e8.png")}.em-flag-ac.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1e8.svg"),none}.em-flag-ad{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1e9.png")}.em-flag-ad.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1e9.svg"),none}.em-flag-ae{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ea.png")}.em-flag-ae.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ea.svg"),none}.em-flag-af{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1eb.png")}.em-flag-af.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1eb.svg"),none}.em-flag-ag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ec.png")}.em-flag-ag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ec.svg"),none}.em-flag-ai{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ee.png")}.em-flag-ai.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ee.svg"),none}.em-flag-al{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f1.png")}.em-flag-al.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f1.svg"),none}.em-flag-am{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f2.png")}.em-flag-am.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f2.svg"),none}.em-flag-ao{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f4.png")}.em-flag-ao.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f4.svg"),none}.em-flag-aq{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f6.png")}.em-flag-aq.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f6.svg"),none}.em-flag-ar{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f7.png")}.em-flag-ar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f7.svg"),none}.em-flag-as{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f8.png")}.em-flag-as.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f8.svg"),none}.em-flag-at{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f9.png")}.em-flag-at.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f9.svg"),none}.em-flag-au{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1fa.png")}.em-flag-au.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fa.svg"),none}.em-flag-aw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1fc.png")}.em-flag-aw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fc.svg"),none}.em-flag-ax{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1fd.png")}.em-flag-ax.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fd.svg"),none}.em-flag-az{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ff.png")}.em-flag-az.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e6-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ff.svg"),none}.em-flag-ba{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1e6.png")}.em-flag-ba.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e6.svg"),none}.em-flag-bb{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1e7.png")}.em-flag-bb.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1e7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e7.svg"),none}.em-flag-bd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1e9.png")}.em-flag-bd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg"),none}.em-flag-be{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ea.png")}.em-flag-be.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ea.svg"),none}.em-flag-bf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1eb.png")}.em-flag-bf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1eb.svg"),none}.em-flag-bg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ec.png")}.em-flag-bg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ec.svg"),none}.em-flag-bh{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ed.png")}.em-flag-bh.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ed.svg"),none}.em-flag-bi{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ee.png")}.em-flag-bi.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ee.svg"),none}.em-flag-bj{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ef.png")}.em-flag-bj.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ef.svg"),none}.em-flag-bl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f1.png")}.em-flag-bl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f1.svg"),none}.em-flag-bm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f2.png")}.em-flag-bm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f2.svg"),none}.em-flag-bn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f3.png")}.em-flag-bn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f3.svg"),none}.em-flag-bo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f4.png")}.em-flag-bo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f4.svg"),none}.em-flag-bq{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f6.png")}.em-flag-bq.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f6.svg"),none}.em-flag-br{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f7.png")}.em-flag-br.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f7.svg"),none}.em-flag-bs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f8.png")}.em-flag-bs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f8.svg"),none}.em-flag-bt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f9.png")}.em-flag-bt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f9.svg"),none}.em-flag-bv{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1fb.png")}.em-flag-bv.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fb.svg"),none}.em-flag-bw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1fc.png")}.em-flag-bw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fc.svg"),none}.em-flag-by{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1fe.png")}.em-flag-by.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fe.svg"),none}.em-flag-bz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ff.png")}.em-flag-bz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e7-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ff.svg"),none}.em-flag-ca{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1e6.png")}.em-flag-ca.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e6.svg"),none}.em-flag-cc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1e8.png")}.em-flag-cc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e8.svg"),none}.em-flag-cd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1e9.png")}.em-flag-cd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e9.svg"),none}.em-flag-cf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1eb.png")}.em-flag-cf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1eb.svg"),none}.em-flag-cg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ec.png")}.em-flag-cg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ec.svg"),none}.em-flag-ch{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ed.png")}.em-flag-ch.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ed.svg"),none}.em-flag-ci{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ee.png")}.em-flag-ci.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ee.svg"),none}.em-flag-ck{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f0.png")}.em-flag-ck.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f0.svg"),none}.em-flag-cl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f1.png")}.em-flag-cl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f1.svg"),none}.em-flag-cm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f2.png")}.em-flag-cm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f2.svg"),none}.em-flag-co{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f4.png")}.em-flag-co.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f4.svg"),none}.em-flag-cp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f5.png")}.em-flag-cp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f5.svg"),none}.em-flag-cr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f7.png")}.em-flag-cr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f7.svg"),none}.em-flag-cu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fa.png")}.em-flag-cu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fa.svg"),none}.em-flag-cv{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fb.png")}.em-flag-cv.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fb.svg"),none}.em-flag-cw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fc.png")}.em-flag-cw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fc.svg"),none}.em-flag-cx{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fd.png")}.em-flag-cx.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fd.svg"),none}.em-flag-cy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fe.png")}.em-flag-cy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fe.svg"),none}.em-flag-cz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ff.png")}.em-flag-cz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e8-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ff.svg"),none}.em-flag-dg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ec.png")}.em-flag-dg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ec.svg"),none}.em-flag-dj{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ef.png")}.em-flag-dj.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ef.svg"),none}.em-flag-dk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1f0.png")}.em-flag-dk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f0.svg"),none}.em-flag-dm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1f2.png")}.em-flag-dm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f2.svg"),none}.em-flag-do{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1f4.png")}.em-flag-do.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f4.svg"),none}.em-flag-dz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ff.png")}.em-flag-dz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1e9-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ff.svg"),none}.em-flag-ea{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1e6.png")}.em-flag-ea.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1e6.svg"),none}.em-flag-ec{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1e8.png")}.em-flag-ec.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1e8.svg"),none}.em-flag-ee{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1ea.png")}.em-flag-ee.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ea.svg"),none}.em-flag-eg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1ec.png")}.em-flag-eg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ec.svg"),none}.em-flag-eh{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1ed.png")}.em-flag-eh.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ed.svg"),none}.em-flag-england{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png")}.em-flag-england.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.svg"),none}.em-flag-er{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1f7.png")}.em-flag-er.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f7.svg"),none}.em-flag-et{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1f9.png")}.em-flag-et.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f9.svg"),none}.em-flag-eu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1fa.png")}.em-flag-eu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ea-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1fa.svg"),none}.em-flag-fi{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1ee.png")}.em-flag-fi.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1ee.svg"),none}.em-flag-fj{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1ef.png")}.em-flag-fj.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1ef.svg"),none}.em-flag-fk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f0.png")}.em-flag-fk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f0.svg"),none}.em-flag-fm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f2.png")}.em-flag-fm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f2.svg"),none}.em-flag-fo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f4.png")}.em-flag-fo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f4.svg"),none}.em-flag-ga{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1e6.png")}.em-flag-ga.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e6.svg"),none}.em-flag-gd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1e9.png")}.em-flag-gd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e9.svg"),none}.em-flag-ge{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ea.png")}.em-flag-ge.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ea.svg"),none}.em-flag-gf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1eb.png")}.em-flag-gf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1eb.svg"),none}.em-flag-gg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ec.png")}.em-flag-gg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ec.svg"),none}.em-flag-gh{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ed.png")}.em-flag-gh.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ed.svg"),none}.em-flag-gi{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ee.png")}.em-flag-gi.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ee.svg"),none}.em-flag-gl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f1.png")}.em-flag-gl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f1.svg"),none}.em-flag-gm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f2.png")}.em-flag-gm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f2.svg"),none}.em-flag-gn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f3.png")}.em-flag-gn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f3.svg"),none}.em-flag-gp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f5.png")}.em-flag-gp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f5.svg"),none}.em-flag-gq{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f6.png")}.em-flag-gq.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f6.svg"),none}.em-flag-gr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f7.png")}.em-flag-gr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f7.svg"),none}.em-flag-gs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f8.png")}.em-flag-gs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f8.svg"),none}.em-flag-gt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f9.png")}.em-flag-gt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f9.svg"),none}.em-flag-gu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1fa.png")}.em-flag-gu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fa.svg"),none}.em-flag-gw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1fc.png")}.em-flag-gw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fc.svg"),none}.em-flag-gy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1fe.png")}.em-flag-gy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fe.svg"),none}.em-flag-hk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f0.png")}.em-flag-hk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f0.svg"),none}.em-flag-hm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f2.png")}.em-flag-hm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f2.svg"),none}.em-flag-hn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f3.png")}.em-flag-hn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f3.svg"),none}.em-flag-hr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f7.png")}.em-flag-hr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f7.svg"),none}.em-flag-ht{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f9.png")}.em-flag-ht.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f9.svg"),none}.em-flag-hu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1fa.png")}.em-flag-hu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ed-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1fa.svg"),none}.em-flag-ic{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1e8.png")}.em-flag-ic.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1e8.svg"),none}.em-flag-id{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1e9.png")}.em-flag-id.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1e9.svg"),none}.em-flag-ie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1ea.png")}.em-flag-ie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1ea.svg"),none}.em-flag-il{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f1.png")}.em-flag-il.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f1.svg"),none}.em-flag-im{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f2.png")}.em-flag-im.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f2.svg"),none}.em-flag-in{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f3.png")}.em-flag-in.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f3.svg"),none}.em-flag-io{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f4.png")}.em-flag-io.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f4.svg"),none}.em-flag-iq{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f6.png")}.em-flag-iq.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f6.svg"),none}.em-flag-ir{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f7.png")}.em-flag-ir.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f7.svg"),none}.em-flag-is{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f8.png")}.em-flag-is.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f8.svg"),none}.em-flag-je{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1ea.png")}.em-flag-je.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1ea.svg"),none}.em-flag-jm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1f2.png")}.em-flag-jm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f2.svg"),none}.em-flag-jo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1f4.png")}.em-flag-jo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f4.svg"),none}.em-flag-ke{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ea.png")}.em-flag-ke.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ea.svg"),none}.em-flag-kg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ec.png")}.em-flag-kg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ec.svg"),none}.em-flag-kh{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ed.png")}.em-flag-kh.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ed.svg"),none}.em-flag-ki{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ee.png")}.em-flag-ki.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ee.svg"),none}.em-flag-km{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f2.png")}.em-flag-km.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f2.svg"),none}.em-flag-kn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f3.png")}.em-flag-kn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f3.svg"),none}.em-flag-kp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f5.png")}.em-flag-kp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f5.svg"),none}.em-flag-kw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1fc.png")}.em-flag-kw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1fc.svg"),none}.em-flag-ky{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1fe.png")}.em-flag-ky.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1fe.svg"),none}.em-flag-kz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ff.png")}.em-flag-kz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ff.svg"),none}.em-flag-la{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1e6.png")}.em-flag-la.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e6.svg"),none}.em-flag-lb{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1e7.png")}.em-flag-lb.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1e7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e7.svg"),none}.em-flag-lc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1e8.png")}.em-flag-lc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e8.svg"),none}.em-flag-li{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1ee.png")}.em-flag-li.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1ee.svg"),none}.em-flag-lk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f0.png")}.em-flag-lk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f0.svg"),none}.em-flag-lr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f7.png")}.em-flag-lr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f7.svg"),none}.em-flag-ls{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f8.png")}.em-flag-ls.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f8.svg"),none}.em-flag-lt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f9.png")}.em-flag-lt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f9.svg"),none}.em-flag-lu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1fa.png")}.em-flag-lu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fa.svg"),none}.em-flag-lv{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1fb.png")}.em-flag-lv.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fb.svg"),none}.em-flag-ly{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1fe.png")}.em-flag-ly.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f1-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fe.svg"),none}.em-flag-ma{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1e6.png")}.em-flag-ma.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e6.svg"),none}.em-flag-mc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1e8.png")}.em-flag-mc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e8.svg"),none}.em-flag-md{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1e9.png")}.em-flag-md.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e9.svg"),none}.em-flag-me{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ea.png")}.em-flag-me.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ea.svg"),none}.em-flag-mf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1eb.png")}.em-flag-mf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1eb.svg"),none}.em-flag-mg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ec.png")}.em-flag-mg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ec.svg"),none}.em-flag-mh{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ed.png")}.em-flag-mh.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ed.svg"),none}.em-flag-mk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f0.png")}.em-flag-mk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f0.svg"),none}.em-flag-ml{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f1.png")}.em-flag-ml.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f1.svg"),none}.em-flag-mm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f2.png")}.em-flag-mm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f2.svg"),none}.em-flag-mn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f3.png")}.em-flag-mn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f3.svg"),none}.em-flag-mo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f4.png")}.em-flag-mo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f4.svg"),none}.em-flag-mp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f5.png")}.em-flag-mp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f5.svg"),none}.em-flag-mq{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f6.png")}.em-flag-mq.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f6.svg"),none}.em-flag-mr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f7.png")}.em-flag-mr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f7.svg"),none}.em-flag-ms{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f8.png")}.em-flag-ms.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f8.svg"),none}.em-flag-mt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f9.png")}.em-flag-mt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f9.svg"),none}.em-flag-mu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fa.png")}.em-flag-mu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fa.svg"),none}.em-flag-mv{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fb.png")}.em-flag-mv.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fb.svg"),none}.em-flag-mw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fc.png")}.em-flag-mw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fc.svg"),none}.em-flag-mx{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fd.png")}.em-flag-mx.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fd.svg"),none}.em-flag-my{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fe.png")}.em-flag-my.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fe.svg"),none}.em-flag-mz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ff.png")}.em-flag-mz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f2-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ff.svg"),none}.em-flag-na{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1e6.png")}.em-flag-na.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1e6.svg"),none}.em-flag-nc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1e8.png")}.em-flag-nc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1e8.svg"),none}.em-flag-ne{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ea.png")}.em-flag-ne.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ea.svg"),none}.em-flag-nf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1eb.png")}.em-flag-nf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1eb.svg"),none}.em-flag-ng{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ec.png")}.em-flag-ng.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ec.svg"),none}.em-flag-ni{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ee.png")}.em-flag-ni.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ee.svg"),none}.em-flag-nl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f1.png")}.em-flag-nl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f1.svg"),none}.em-flag-no{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f4.png")}.em-flag-no.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f4.svg"),none}.em-flag-np{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f5.png")}.em-flag-np.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f5.svg"),none}.em-flag-nr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f7.png")}.em-flag-nr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f7.svg"),none}.em-flag-nu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1fa.png")}.em-flag-nu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1fa.svg"),none}.em-flag-nz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ff.png")}.em-flag-nz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f3-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ff.svg"),none}.em-flag-om{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f4-1f1f2.png")}.em-flag-om.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f4-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f4-1f1f2.svg"),none}.em-flag-pa{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1e6.png")}.em-flag-pa.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1e6.svg"),none}.em-flag-pe{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1ea.png")}.em-flag-pe.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ea.svg"),none}.em-flag-pf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1eb.png")}.em-flag-pf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1eb.svg"),none}.em-flag-pg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1ec.png")}.em-flag-pg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ec.svg"),none}.em-flag-ph{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1ed.png")}.em-flag-ph.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ed.svg"),none}.em-flag-pk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f0.png")}.em-flag-pk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f0.svg"),none}.em-flag-pl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f1.png")}.em-flag-pl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f1.svg"),none}.em-flag-pm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f2.png")}.em-flag-pm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f2.svg"),none}.em-flag-pn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f3.png")}.em-flag-pn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f3.svg"),none}.em-flag-pr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f7.png")}.em-flag-pr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f7.svg"),none}.em-flag-ps{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f8.png")}.em-flag-ps.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f8.svg"),none}.em-flag-pt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f9.png")}.em-flag-pt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f9.svg"),none}.em-flag-pw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1fc.png")}.em-flag-pw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1fc.svg"),none}.em-flag-py{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1fe.png")}.em-flag-py.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f5-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1fe.svg"),none}.em-flag-qa{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f6-1f1e6.png")}.em-flag-qa.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f6-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f6-1f1e6.svg"),none}.em-flag-re{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1ea.png")}.em-flag-re.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1ea.svg"),none}.em-flag-ro{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1f4.png")}.em-flag-ro.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1f4.svg"),none}.em-flag-rs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1f8.png")}.em-flag-rs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1f8.svg"),none}.em-flag-rw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1fc.png")}.em-flag-rw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fc.svg"),none}.em-flag-sa{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e6.png")}.em-flag-sa.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e6.svg"),none}.em-flag-sb{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e7.png")}.em-flag-sb.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e7.svg"),none}.em-flag-sc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e8.png")}.em-flag-sc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e8.svg"),none}.em-flag-scotland{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png")}.em-flag-scotland.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.svg"),none}.em-flag-sd{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e9.png")}.em-flag-sd.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e9.svg"),none}.em-flag-se{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ea.png")}.em-flag-se.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ea.svg"),none}.em-flag-sg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ec.png")}.em-flag-sg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ec.svg"),none}.em-flag-sh{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ed.png")}.em-flag-sh.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ed.svg"),none}.em-flag-si{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ee.png")}.em-flag-si.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ee.svg"),none}.em-flag-sj{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ef.png")}.em-flag-sj.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ef.svg"),none}.em-flag-sk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f0.png")}.em-flag-sk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f0.svg"),none}.em-flag-sl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f1.png")}.em-flag-sl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f1.svg"),none}.em-flag-sm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f2.png")}.em-flag-sm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f2.svg"),none}.em-flag-sn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f3.png")}.em-flag-sn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f3.svg"),none}.em-flag-so{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f4.png")}.em-flag-so.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f4.svg"),none}.em-flag-sr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f7.png")}.em-flag-sr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f7.svg"),none}.em-flag-ss{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f8.png")}.em-flag-ss.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f8.svg"),none}.em-flag-st{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f9.png")}.em-flag-st.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f9.svg"),none}.em-flag-sv{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1fb.png")}.em-flag-sv.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fb.svg"),none}.em-flag-sx{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1fd.png")}.em-flag-sx.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fd.svg"),none}.em-flag-sy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1fe.png")}.em-flag-sy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fe.svg"),none}.em-flag-sz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ff.png")}.em-flag-sz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f8-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ff.svg"),none}.em-flag-ta{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1e6.png")}.em-flag-ta.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e6.svg"),none}.em-flag-tc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1e8.png")}.em-flag-tc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e8.svg"),none}.em-flag-td{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1e9.png")}.em-flag-td.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e9.svg"),none}.em-flag-tf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1eb.png")}.em-flag-tf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1eb.svg"),none}.em-flag-tg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ec.png")}.em-flag-tg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ec.svg"),none}.em-flag-th{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ed.png")}.em-flag-th.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ed.svg"),none}.em-flag-tj{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ef.png")}.em-flag-tj.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ef.svg"),none}.em-flag-tk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f0.png")}.em-flag-tk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f0.svg"),none}.em-flag-tl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f1.png")}.em-flag-tl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f1.svg"),none}.em-flag-tm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f2.png")}.em-flag-tm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f2.svg"),none}.em-flag-tn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f3.png")}.em-flag-tn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f3.svg"),none}.em-flag-to{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f4.png")}.em-flag-to.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f4.svg"),none}.em-flag-tr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f7.png")}.em-flag-tr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f7.svg"),none}.em-flag-tt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f9.png")}.em-flag-tt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f9.svg"),none}.em-flag-tv{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1fb.png")}.em-flag-tv.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1fb.svg"),none}.em-flag-tw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1fc.png")}.em-flag-tw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1fc.svg"),none}.em-flag-tz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ff.png")}.em-flag-tz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f9-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ff.svg"),none}.em-flag-ua{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1e6.png")}.em-flag-ua.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1e6.svg"),none}.em-flag-ug{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1ec.png")}.em-flag-ug.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1ec.svg"),none}.em-flag-um{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1f2.png")}.em-flag-um.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f2.svg"),none}.em-flag-un{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1f3.png")}.em-flag-un.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f3.svg"),none}.em-flag-uy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1fe.png")}.em-flag-uy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1fe.svg"),none}.em-flag-uz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1ff.png")}.em-flag-uz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1ff.svg"),none}.em-flag-va{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1e6.png")}.em-flag-va.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1e6.svg"),none}.em-flag-vc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1e8.png")}.em-flag-vc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1e8.svg"),none}.em-flag-ve{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1ea.png")}.em-flag-ve.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ea.svg"),none}.em-flag-vg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1ec.png")}.em-flag-vg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ec.svg"),none}.em-flag-vi{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1ee.png")}.em-flag-vi.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ee.svg"),none}.em-flag-vn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1f3.png")}.em-flag-vn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1f3.svg"),none}.em-flag-vu{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1fa.png")}.em-flag-vu.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fb-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1fa.svg"),none}.em-flag-wales{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png")}.em-flag-wales.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.svg"),none}.em-flag-wf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fc-1f1eb.png")}.em-flag-wf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fc-1f1eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fc-1f1eb.svg"),none}.em-flag-ws{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fc-1f1f8.png")}.em-flag-ws.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fc-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fc-1f1f8.svg"),none}.em-flag-xk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fd-1f1f0.png")}.em-flag-xk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fd-1f1f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fd-1f1f0.svg"),none}.em-flag-ye{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fe-1f1ea.png")}.em-flag-ye.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fe-1f1ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fe-1f1ea.svg"),none}.em-flag-yt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fe-1f1f9.png")}.em-flag-yt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fe-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fe-1f1f9.svg"),none}.em-flag-za{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ff-1f1e6.png")}.em-flag-za.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ff-1f1e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1e6.svg"),none}.em-flag-zm{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ff-1f1f2.png")}.em-flag-zm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ff-1f1f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1f2.svg"),none}.em-flag-zw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ff-1f1fc.png")}.em-flag-zw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ff-1f1fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1fc.svg"),none}.em-flags{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f38f.png")}.em-flags.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f38f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f38f.svg"),none}.em-flashlight{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f526.png")}.em-flashlight.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f526.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f526.svg"),none}.em-fleur_de_lis{background-image:url("https://twemoji.maxcdn.com/2/72x72/269c.png")}.em-fleur_de_lis.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/269c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/269c.svg"),none}.em-floppy_disk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4be.png")}.em-floppy_disk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4be.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4be.svg"),none}.em-flower_playing_cards{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b4.png")}.em-flower_playing_cards.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b4.svg"),none}.em-flushed{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f633.png")}.em-flushed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f633.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f633.svg"),none}.em-flying_disc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f94f.png")}.em-flying_disc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f94f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f94f.svg"),none}.em-flying_saucer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f8.png")}.em-flying_saucer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f8.svg"),none}.em-fog{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f32b.png")}.em-fog.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f32b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f32b.svg"),none}.em-foggy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f301.png")}.em-foggy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f301.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f301.svg"),none}.em-foot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b6.png")}.em-foot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b6.svg"),none}.em-football{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c8.png")}.em-football.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c8.svg"),none}.em-footprints{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f463.png")}.em-footprints.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f463.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f463.svg"),none}.em-fork_and_knife{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f374.png")}.em-fork_and_knife.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f374.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f374.svg"),none}.em-fortune_cookie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f960.png")}.em-fortune_cookie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f960.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f960.svg"),none}.em-fountain{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f2.png")}.em-fountain.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f2.svg"),none}.em-four{background-image:url("https://twemoji.maxcdn.com/2/72x72/34-20e3.png")}.em-four.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/34-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/34-20e3.svg"),none}.em-four_leaf_clover{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f340.png")}.em-four_leaf_clover.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f340.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f340.svg"),none}.em-fox_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f98a.png")}.em-fox_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f98a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f98a.svg"),none}.em-fr,.em-flag-fr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f7.png")}.em-fr.em-svg,.em-flag-fr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1eb-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f7.svg"),none}.em-frame_with_picture{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5bc.png")}.em-frame_with_picture.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5bc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5bc.svg"),none}.em-free{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f193.png")}.em-free.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f193.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f193.svg"),none}.em-fried_egg,.em-cooking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f373.png")}.em-fried_egg.em-svg,.em-cooking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f373.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f373.svg"),none}.em-fried_shrimp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f364.png")}.em-fried_shrimp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f364.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f364.svg"),none}.em-fries{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f35f.png")}.em-fries.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f35f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f35f.svg"),none}.em-frog{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f438.png")}.em-frog.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f438.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f438.svg"),none}.em-frowning{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f626.png")}.em-frowning.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f626.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f626.svg"),none}.em-fuelpump{background-image:url("https://twemoji.maxcdn.com/2/72x72/26fd.png")}.em-fuelpump.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26fd.svg"),none}.em-full_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f315.png")}.em-full_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f315.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f315.svg"),none}.em-full_moon_with_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f31d.png")}.em-full_moon_with_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f31d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f31d.svg"),none}.em-funeral_urn{background-image:url("https://twemoji.maxcdn.com/2/72x72/26b1.png")}.em-funeral_urn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26b1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26b1.svg"),none}.em-game_die{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b2.png")}.em-game_die.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b2.svg"),none}.em-gb,.em-uk,.em-flag-gb{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1e7.png")}.em-gb.em-svg,.em-uk.em-svg,.em-flag-gb.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ec-1f1e7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e7.svg"),none}.em-gear{background-image:url("https://twemoji.maxcdn.com/2/72x72/2699.png")}.em-gear.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2699.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2699.svg"),none}.em-gem{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f48e.png")}.em-gem.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f48e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f48e.svg"),none}.em-gemini{background-image:url("https://twemoji.maxcdn.com/2/72x72/264a.png")}.em-gemini.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/264a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/264a.svg"),none}.em-genie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9de.png")}.em-genie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9de.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9de.svg"),none}.em-ghost{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f47b.png")}.em-ghost.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f47b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f47b.svg"),none}.em-gift{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f381.png")}.em-gift.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f381.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f381.svg"),none}.em-gift_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f49d.png")}.em-gift_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f49d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f49d.svg"),none}.em-giraffe_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f992.png")}.em-giraffe_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f992.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f992.svg"),none}.em-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f467.png")}.em-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f467.svg"),none}.em-glass_of_milk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f95b.png")}.em-glass_of_milk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f95b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f95b.svg"),none}.em-globe_with_meridians{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f310.png")}.em-globe_with_meridians.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f310.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f310.svg"),none}.em-gloves{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e4.png")}.em-gloves.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e4.svg"),none}.em-goal_net{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f945.png")}.em-goal_net.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f945.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f945.svg"),none}.em-goat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f410.png")}.em-goat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f410.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f410.svg"),none}.em-goggles{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f97d.png")}.em-goggles.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f97d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f97d.svg"),none}.em-golf{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f3.png")}.em-golf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f3.svg"),none}.em-golfer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cc.png")}.em-golfer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cc.svg"),none}.em-gorilla{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f98d.png")}.em-gorilla.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f98d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f98d.svg"),none}.em-grapes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f347.png")}.em-grapes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f347.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f347.svg"),none}.em-green_apple{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f34f.png")}.em-green_apple.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f34f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f34f.svg"),none}.em-green_book{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d7.png")}.em-green_book.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d7.svg"),none}.em-green_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f49a.png")}.em-green_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f49a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f49a.svg"),none}.em-green_salad{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f957.png")}.em-green_salad.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f957.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f957.svg"),none}.em-grey_exclamation{background-image:url("https://twemoji.maxcdn.com/2/72x72/2755.png")}.em-grey_exclamation.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2755.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2755.svg"),none}.em-grey_question{background-image:url("https://twemoji.maxcdn.com/2/72x72/2754.png")}.em-grey_question.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2754.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2754.svg"),none}.em-grimacing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f62c.png")}.em-grimacing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f62c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f62c.svg"),none}.em-grin{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f601.png")}.em-grin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f601.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f601.svg"),none}.em-grinning{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f600.png")}.em-grinning.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f600.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f600.svg"),none}.em-guardsman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f482.png")}.em-guardsman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f482.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f482.svg"),none}.em-guitar{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b8.png")}.em-guitar.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b8.svg"),none}.em-gun{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f52b.png")}.em-gun.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f52b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f52b.svg"),none}.em-haircut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f487.png")}.em-haircut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f487.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f487.svg"),none}.em-hamburger{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f354.png")}.em-hamburger.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f354.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f354.svg"),none}.em-hammer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f528.png")}.em-hammer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f528.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f528.svg"),none}.em-hammer_and_pick{background-image:url("https://twemoji.maxcdn.com/2/72x72/2692.png")}.em-hammer_and_pick.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2692.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2692.svg"),none}.em-hammer_and_wrench{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6e0.png")}.em-hammer_and_wrench.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6e0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6e0.svg"),none}.em-hamster{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f439.png")}.em-hamster.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f439.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f439.svg"),none}.em-hand,.em-raised_hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/270b.png")}.em-hand.em-svg,.em-raised_hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/270b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/270b.svg"),none}.em-handbag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f45c.png")}.em-handbag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f45c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f45c.svg"),none}.em-handball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93e.png")}.em-handball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93e.svg"),none}.em-handshake{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f91d.png")}.em-handshake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f91d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f91d.svg"),none}.em-hankey,.em-poop,.em-shit{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a9.png")}.em-hankey.em-svg,.em-poop.em-svg,.em-shit.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a9.svg"),none}.em-hash{background-image:url("https://twemoji.maxcdn.com/2/72x72/23-20e3.png")}.em-hash.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23-20e3.svg"),none}.em-hatched_chick{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f425.png")}.em-hatched_chick.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f425.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f425.svg"),none}.em-hatching_chick{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f423.png")}.em-hatching_chick.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f423.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f423.svg"),none}.em-headphones{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a7.png")}.em-headphones.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a7.svg"),none}.em-hear_no_evil{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f649.png")}.em-hear_no_evil.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f649.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f649.svg"),none}.em-heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/2764.png")}.em-heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2764.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2764.svg"),none}.em-heart_decoration{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f49f.png")}.em-heart_decoration.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f49f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f49f.svg"),none}.em-heart_eyes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f60d.png")}.em-heart_eyes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f60d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f60d.svg"),none}.em-heart_eyes_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f63b.png")}.em-heart_eyes_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f63b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f63b.svg"),none}.em-heartbeat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f493.png")}.em-heartbeat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f493.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f493.svg"),none}.em-heartpulse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f497.png")}.em-heartpulse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f497.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f497.svg"),none}.em-hearts{background-image:url("https://twemoji.maxcdn.com/2/72x72/2665.png")}.em-hearts.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2665.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2665.svg"),none}.em-heavy_check_mark{background-image:url("https://twemoji.maxcdn.com/2/72x72/2714.png")}.em-heavy_check_mark.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2714.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2714.svg"),none}.em-heavy_division_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/2797.png")}.em-heavy_division_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2797.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2797.svg"),none}.em-heavy_dollar_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b2.png")}.em-heavy_dollar_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b2.svg"),none}.em-heavy_heart_exclamation_mark_ornament{background-image:url("https://twemoji.maxcdn.com/2/72x72/2763.png")}.em-heavy_heart_exclamation_mark_ornament.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2763.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2763.svg"),none}.em-heavy_minus_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/2796.png")}.em-heavy_minus_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2796.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2796.svg"),none}.em-heavy_multiplication_x{background-image:url("https://twemoji.maxcdn.com/2/72x72/2716.png")}.em-heavy_multiplication_x.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2716.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2716.svg"),none}.em-heavy_plus_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/2795.png")}.em-heavy_plus_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2795.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2795.svg"),none}.em-hedgehog{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f994.png")}.em-hedgehog.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f994.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f994.svg"),none}.em-helicopter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f681.png")}.em-helicopter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f681.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f681.svg"),none}.em-helmet_with_white_cross{background-image:url("https://twemoji.maxcdn.com/2/72x72/26d1.png")}.em-helmet_with_white_cross.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26d1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26d1.svg"),none}.em-herb{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f33f.png")}.em-herb.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f33f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f33f.svg"),none}.em-hibiscus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f33a.png")}.em-hibiscus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f33a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f33a.svg"),none}.em-high_brightness{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f506.png")}.em-high_brightness.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f506.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f506.svg"),none}.em-high_heel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f460.png")}.em-high_heel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f460.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f460.svg"),none}.em-hiking_boot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f97e.png")}.em-hiking_boot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f97e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f97e.svg"),none}.em-hippopotamus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f99b.png")}.em-hippopotamus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f99b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f99b.svg"),none}.em-hocho,.em-knife{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f52a.png")}.em-hocho.em-svg,.em-knife.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f52a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f52a.svg"),none}.em-hole{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f573.png")}.em-hole.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f573.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f573.svg"),none}.em-honey_pot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f36f.png")}.em-honey_pot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f36f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f36f.svg"),none}.em-horse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f434.png")}.em-horse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f434.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f434.svg"),none}.em-horse_racing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c7.png")}.em-horse_racing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c7.svg"),none}.em-hospital{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e5.png")}.em-hospital.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e5.svg"),none}.em-hot_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f975.png")}.em-hot_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f975.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f975.svg"),none}.em-hot_pepper{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f336.png")}.em-hot_pepper.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f336.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f336.svg"),none}.em-hotdog{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f32d.png")}.em-hotdog.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f32d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f32d.svg"),none}.em-hotel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e8.png")}.em-hotel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e8.svg"),none}.em-hotsprings{background-image:url("https://twemoji.maxcdn.com/2/72x72/2668.png")}.em-hotsprings.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2668.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2668.svg"),none}.em-hourglass{background-image:url("https://twemoji.maxcdn.com/2/72x72/231b.png")}.em-hourglass.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/231b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/231b.svg"),none}.em-hourglass_flowing_sand{background-image:url("https://twemoji.maxcdn.com/2/72x72/23f3.png")}.em-hourglass_flowing_sand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23f3.svg"),none}.em-house{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e0.png")}.em-house.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e0.svg"),none}.em-house_buildings{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d8.png")}.em-house_buildings.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d8.svg"),none}.em-house_with_garden{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e1.png")}.em-house_with_garden.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e1.svg"),none}.em-hugging_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f917.png")}.em-hugging_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f917.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f917.svg"),none}.em-hushed{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f62f.png")}.em-hushed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f62f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f62f.svg"),none}.em-i_love_you_hand_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f91f.png")}.em-i_love_you_hand_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f91f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f91f.svg"),none}.em-ice_cream{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f368.png")}.em-ice_cream.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f368.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f368.svg"),none}.em-ice_hockey_stick_and_puck{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d2.png")}.em-ice_hockey_stick_and_puck.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d2.svg"),none}.em-ice_skate{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f8.png")}.em-ice_skate.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f8.svg"),none}.em-icecream{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f366.png")}.em-icecream.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f366.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f366.svg"),none}.em-id{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f194.png")}.em-id.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f194.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f194.svg"),none}.em-ideograph_advantage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f250.png")}.em-ideograph_advantage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f250.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f250.svg"),none}.em-imp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f47f.png")}.em-imp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f47f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f47f.svg"),none}.em-inbox_tray{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e5.png")}.em-inbox_tray.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e5.svg"),none}.em-incoming_envelope{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e8.png")}.em-incoming_envelope.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e8.svg"),none}.em-infinity{background-image:url("https://twemoji.maxcdn.com/2/72x72/267e.png")}.em-infinity.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/267e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/267e.svg"),none}.em-information_desk_person{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f481.png")}.em-information_desk_person.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f481.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f481.svg"),none}.em-information_source{background-image:url("https://twemoji.maxcdn.com/2/72x72/2139.png")}.em-information_source.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2139.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2139.svg"),none}.em-innocent{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f607.png")}.em-innocent.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f607.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f607.svg"),none}.em-interrobang{background-image:url("https://twemoji.maxcdn.com/2/72x72/2049.png")}.em-interrobang.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2049.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2049.svg"),none}.em-iphone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f1.png")}.em-iphone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f1.svg"),none}.em-it,.em-flag-it{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f9.png")}.em-it.em-svg,.em-flag-it.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ee-1f1f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f9.svg"),none}.em-izakaya_lantern,.em-lantern{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ee.png")}.em-izakaya_lantern.em-svg,.em-lantern.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ee.svg"),none}.em-jack_o_lantern{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f383.png")}.em-jack_o_lantern.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f383.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f383.svg"),none}.em-japan{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5fe.png")}.em-japan.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5fe.svg"),none}.em-japanese_castle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ef.png")}.em-japanese_castle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ef.svg"),none}.em-japanese_goblin{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f47a.png")}.em-japanese_goblin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f47a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f47a.svg"),none}.em-japanese_ogre{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f479.png")}.em-japanese_ogre.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f479.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f479.svg"),none}.em-jeans{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f456.png")}.em-jeans.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f456.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f456.svg"),none}.em-jigsaw{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e9.png")}.em-jigsaw.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e9.svg"),none}.em-joy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f602.png")}.em-joy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f602.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f602.svg"),none}.em-joy_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f639.png")}.em-joy_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f639.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f639.svg"),none}.em-joystick{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f579.png")}.em-joystick.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f579.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f579.svg"),none}.em-jp,.em-flag-jp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1f5.png")}.em-jp.em-svg,.em-flag-jp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1ef-1f1f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f5.svg"),none}.em-juggling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f939.png")}.em-juggling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f939.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f939.svg"),none}.em-kaaba{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f54b.png")}.em-kaaba.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f54b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f54b.svg"),none}.em-kangaroo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f998.png")}.em-kangaroo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f998.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f998.svg"),none}.em-key{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f511.png")}.em-key.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f511.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f511.svg"),none}.em-keyboard{background-image:url("https://twemoji.maxcdn.com/2/72x72/2328.png")}.em-keyboard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2328.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2328.svg"),none}.em-keycap_star{background-image:url("https://twemoji.maxcdn.com/2/72x72/2a-20e3.png")}.em-keycap_star.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2a-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2a-20e3.svg"),none}.em-keycap_ten{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f51f.png")}.em-keycap_ten.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f51f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f51f.svg"),none}.em-kimono{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f458.png")}.em-kimono.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f458.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f458.svg"),none}.em-kiss{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f48b.png")}.em-kiss.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f48b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f48b.svg"),none}.em-kissing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f617.png")}.em-kissing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f617.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f617.svg"),none}.em-kissing_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f63d.png")}.em-kissing_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f63d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f63d.svg"),none}.em-kissing_closed_eyes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f61a.png")}.em-kissing_closed_eyes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f61a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f61a.svg"),none}.em-kissing_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f618.png")}.em-kissing_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f618.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f618.svg"),none}.em-kissing_smiling_eyes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f619.png")}.em-kissing_smiling_eyes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f619.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f619.svg"),none}.em-kiwifruit{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f95d.png")}.em-kiwifruit.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f95d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f95d.svg"),none}.em-knife_fork_plate{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f37d.png")}.em-knife_fork_plate.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f37d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f37d.svg"),none}.em-koala{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f428.png")}.em-koala.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f428.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f428.svg"),none}.em-koko{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f201.png")}.em-koko.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f201.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f201.svg"),none}.em-kr,.em-flag-kr{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f7.png")}.em-kr.em-svg,.em-flag-kr.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f0-1f1f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f7.svg"),none}.em-lab_coat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f97c.png")}.em-lab_coat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f97c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f97c.svg"),none}.em-label{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f7.png")}.em-label.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f7.svg"),none}.em-lacrosse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f94d.png")}.em-lacrosse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f94d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f94d.svg"),none}.em-large_blue_circle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f535.png")}.em-large_blue_circle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f535.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f535.svg"),none}.em-large_blue_diamond{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f537.png")}.em-large_blue_diamond.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f537.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f537.svg"),none}.em-large_orange_diamond{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f536.png")}.em-large_orange_diamond.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f536.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f536.svg"),none}.em-last_quarter_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f317.png")}.em-last_quarter_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f317.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f317.svg"),none}.em-last_quarter_moon_with_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f31c.png")}.em-last_quarter_moon_with_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f31c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f31c.svg"),none}.em-latin_cross{background-image:url("https://twemoji.maxcdn.com/2/72x72/271d.png")}.em-latin_cross.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/271d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/271d.svg"),none}.em-laughing,.em-satisfied{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f606.png")}.em-laughing.em-svg,.em-satisfied.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f606.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f606.svg"),none}.em-leafy_green{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f96c.png")}.em-leafy_green.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f96c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f96c.svg"),none}.em-leaves{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f343.png")}.em-leaves.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f343.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f343.svg"),none}.em-ledger{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d2.png")}.em-ledger.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d2.svg"),none}.em-left-facing_fist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f91b.png")}.em-left-facing_fist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f91b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f91b.svg"),none}.em-left_luggage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6c5.png")}.em-left_luggage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6c5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6c5.svg"),none}.em-left_right_arrow{background-image:url("https://twemoji.maxcdn.com/2/72x72/2194.png")}.em-left_right_arrow.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2194.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2194.svg"),none}.em-left_speech_bubble{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5e8.png")}.em-left_speech_bubble.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5e8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5e8.svg"),none}.em-leftwards_arrow_with_hook{background-image:url("https://twemoji.maxcdn.com/2/72x72/21a9.png")}.em-leftwards_arrow_with_hook.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/21a9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/21a9.svg"),none}.em-leg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b5.png")}.em-leg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b5.svg"),none}.em-lemon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f34b.png")}.em-lemon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f34b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f34b.svg"),none}.em-leo{background-image:url("https://twemoji.maxcdn.com/2/72x72/264c.png")}.em-leo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/264c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/264c.svg"),none}.em-leopard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f406.png")}.em-leopard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f406.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f406.svg"),none}.em-level_slider{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f39a.png")}.em-level_slider.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f39a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f39a.svg"),none}.em-libra{background-image:url("https://twemoji.maxcdn.com/2/72x72/264e.png")}.em-libra.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/264e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/264e.svg"),none}.em-light_rail{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f688.png")}.em-light_rail.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f688.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f688.svg"),none}.em-lightning,.em-lightning_cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f329.png")}.em-lightning.em-svg,.em-lightning_cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f329.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f329.svg"),none}.em-link{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f517.png")}.em-link.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f517.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f517.svg"),none}.em-linked_paperclips{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f587.png")}.em-linked_paperclips.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f587.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f587.svg"),none}.em-lion_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f981.png")}.em-lion_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f981.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f981.svg"),none}.em-lips{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f444.png")}.em-lips.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f444.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f444.svg"),none}.em-lipstick{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f484.png")}.em-lipstick.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f484.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f484.svg"),none}.em-lizard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f98e.png")}.em-lizard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f98e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f98e.svg"),none}.em-llama{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f999.png")}.em-llama.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f999.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f999.svg"),none}.em-lobster{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f99e.png")}.em-lobster.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f99e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f99e.svg"),none}.em-lock{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f512.png")}.em-lock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f512.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f512.svg"),none}.em-lock_with_ink_pen{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f50f.png")}.em-lock_with_ink_pen.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f50f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f50f.svg"),none}.em-lollipop{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f36d.png")}.em-lollipop.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f36d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f36d.svg"),none}.em-loop{background-image:url("https://twemoji.maxcdn.com/2/72x72/27bf.png")}.em-loop.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/27bf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/27bf.svg"),none}.em-lotion_bottle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f4.png")}.em-lotion_bottle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f4.svg"),none}.em-loud_sound{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f50a.png")}.em-loud_sound.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f50a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f50a.svg"),none}.em-loudspeaker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e2.png")}.em-loudspeaker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e2.svg"),none}.em-love_hotel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e9.png")}.em-love_hotel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e9.svg"),none}.em-love_letter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f48c.png")}.em-love_letter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f48c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f48c.svg"),none}.em-low_brightness{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f505.png")}.em-low_brightness.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f505.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f505.svg"),none}.em-lower_left_ballpoint_pen{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f58a.png")}.em-lower_left_ballpoint_pen.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f58a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f58a.svg"),none}.em-lower_left_crayon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f58d.png")}.em-lower_left_crayon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f58d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f58d.svg"),none}.em-lower_left_fountain_pen{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f58b.png")}.em-lower_left_fountain_pen.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f58b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f58b.svg"),none}.em-lower_left_paintbrush{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f58c.png")}.em-lower_left_paintbrush.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f58c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f58c.svg"),none}.em-luggage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f3.png")}.em-luggage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f3.svg"),none}.em-lying_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f925.png")}.em-lying_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f925.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f925.svg"),none}.em-m{background-image:url("https://twemoji.maxcdn.com/2/72x72/24c2.png")}.em-m.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/24c2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/24c2.svg"),none}.em-mag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f50d.png")}.em-mag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f50d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f50d.svg"),none}.em-mag_right{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f50e.png")}.em-mag_right.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f50e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f50e.svg"),none}.em-mage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d9.png")}.em-mage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d9.svg"),none}.em-magnet{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f2.png")}.em-magnet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f2.svg"),none}.em-mahjong{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f004.png")}.em-mahjong.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f004.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f004.svg"),none}.em-mailbox{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4eb.png")}.em-mailbox.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4eb.svg"),none}.em-mailbox_closed{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ea.png")}.em-mailbox_closed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ea.svg"),none}.em-mailbox_with_mail{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ec.png")}.em-mailbox_with_mail.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ec.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ec.svg"),none}.em-mailbox_with_no_mail{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ed.png")}.em-mailbox_with_no_mail.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ed.svg"),none}.em-male-artist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3a8.png")}.em-male-artist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3a8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f3a8.svg"),none}.em-male-astronaut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f680.png")}.em-male-astronaut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f680.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f680.svg"),none}.em-male-construction-worker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f477-200d-2642-fe0f.png")}.em-male-construction-worker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f477-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f477-200d-2642-fe0f.svg"),none}.em-male-cook{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f373.png")}.em-male-cook.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f373.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f373.svg"),none}.em-male-detective{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f575-fe0f-200d-2642-fe0f.png")}.em-male-detective.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f575-fe0f-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f575-fe0f-200d-2642-fe0f.svg"),none}.em-male-doctor{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2695-fe0f.png")}.em-male-doctor.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2695-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2695-fe0f.svg"),none}.em-male-factory-worker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3ed.png")}.em-male-factory-worker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3ed.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f3ed.svg"),none}.em-male-farmer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f33e.png")}.em-male-farmer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f33e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f33e.svg"),none}.em-male-firefighter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f692.png")}.em-male-firefighter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f692.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f692.svg"),none}.em-male-guard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f482-200d-2642-fe0f.png")}.em-male-guard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f482-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f482-200d-2642-fe0f.svg"),none}.em-male-judge{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2696-fe0f.png")}.em-male-judge.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2696-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2696-fe0f.svg"),none}.em-male-mechanic{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f527.png")}.em-male-mechanic.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f527.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f527.svg"),none}.em-male-office-worker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f4bc.png")}.em-male-office-worker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f4bc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f4bc.svg"),none}.em-male-pilot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2708-fe0f.png")}.em-male-pilot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2708-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2708-fe0f.svg"),none}.em-male-police-officer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46e-200d-2642-fe0f.png")}.em-male-police-officer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46e-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46e-200d-2642-fe0f.svg"),none}.em-male-scientist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f52c.png")}.em-male-scientist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f52c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f52c.svg"),none}.em-male-singer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3a4.png")}.em-male-singer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3a4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f3a4.svg"),none}.em-male-student{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f393.png")}.em-male-student.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f393.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f393.svg"),none}.em-male-teacher{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3eb.png")}.em-male-teacher.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f3eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f3eb.svg"),none}.em-male-technologist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f4bb.png")}.em-male-technologist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f4bb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f4bb.svg"),none}.em-male_bald{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b2.png")}.em-male_bald.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f9b2.svg"),none}.em-male_curly_haired{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b1.png")}.em-male_curly_haired.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f9b1.svg"),none}.em-male_elf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9dd-200d-2642-fe0f.png")}.em-male_elf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9dd-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9dd-200d-2642-fe0f.svg"),none}.em-male_fairy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9da-200d-2642-fe0f.png")}.em-male_fairy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9da-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9da-200d-2642-fe0f.svg"),none}.em-male_genie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9de-200d-2642-fe0f.png")}.em-male_genie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9de-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9de-200d-2642-fe0f.svg"),none}.em-male_mage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d9-200d-2642-fe0f.png")}.em-male_mage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d9-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d9-200d-2642-fe0f.svg"),none}.em-male_red_haired{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b0.png")}.em-male_red_haired.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f9b0.svg"),none}.em-male_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/2642.png")}.em-male_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2642.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2642.svg"),none}.em-male_superhero{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b8-200d-2642-fe0f.png")}.em-male_superhero.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b8-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b8-200d-2642-fe0f.svg"),none}.em-male_supervillain{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b9-200d-2642-fe0f.png")}.em-male_supervillain.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b9-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b9-200d-2642-fe0f.svg"),none}.em-male_vampire{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9db-200d-2642-fe0f.png")}.em-male_vampire.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9db-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9db-200d-2642-fe0f.svg"),none}.em-male_white_haired{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b3.png")}.em-male_white_haired.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f9b3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f9b3.svg"),none}.em-male_zombie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9df-200d-2642-fe0f.png")}.em-male_zombie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9df-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9df-200d-2642-fe0f.svg"),none}.em-man{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468.png")}.em-man.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468.svg"),none}.em-man-biking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b4-200d-2642-fe0f.png")}.em-man-biking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b4-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b4-200d-2642-fe0f.svg"),none}.em-man-bouncing-ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f9-fe0f-200d-2642-fe0f.png")}.em-man-bouncing-ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f9-fe0f-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f9-fe0f-200d-2642-fe0f.svg"),none}.em-man-bowing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f647-200d-2642-fe0f.png")}.em-man-bowing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f647-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f647-200d-2642-fe0f.svg"),none}.em-man-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f466.png")}.em-man-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f466.svg"),none}.em-man-boy-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f466-200d-1f466.png")}.em-man-boy-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f466-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f466-200d-1f466.svg"),none}.em-man-cartwheeling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f938-200d-2642-fe0f.png")}.em-man-cartwheeling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f938-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f938-200d-2642-fe0f.svg"),none}.em-man-facepalming{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f926-200d-2642-fe0f.png")}.em-man-facepalming.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f926-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f926-200d-2642-fe0f.svg"),none}.em-man-frowning{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64d-200d-2642-fe0f.png")}.em-man-frowning.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64d-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64d-200d-2642-fe0f.svg"),none}.em-man-gesturing-no{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f645-200d-2642-fe0f.png")}.em-man-gesturing-no.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f645-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f645-200d-2642-fe0f.svg"),none}.em-man-gesturing-ok{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f646-200d-2642-fe0f.png")}.em-man-gesturing-ok.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f646-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f646-200d-2642-fe0f.svg"),none}.em-man-getting-haircut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f487-200d-2642-fe0f.png")}.em-man-getting-haircut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f487-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f487-200d-2642-fe0f.svg"),none}.em-man-getting-massage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f486-200d-2642-fe0f.png")}.em-man-getting-massage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f486-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f486-200d-2642-fe0f.svg"),none}.em-man-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f467.png")}.em-man-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f467.svg"),none}.em-man-girl-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f467-200d-1f466.png")}.em-man-girl-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f467-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f467-200d-1f466.svg"),none}.em-man-girl-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f467-200d-1f467.png")}.em-man-girl-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f467-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f467-200d-1f467.svg"),none}.em-man-golfing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cc-fe0f-200d-2642-fe0f.png")}.em-man-golfing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cc-fe0f-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cc-fe0f-200d-2642-fe0f.svg"),none}.em-man-heart-man{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2764-fe0f-200d-1f468.png")}.em-man-heart-man.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2764-fe0f-200d-1f468.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2764-fe0f-200d-1f468.svg"),none}.em-man-juggling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f939-200d-2642-fe0f.png")}.em-man-juggling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f939-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f939-200d-2642-fe0f.svg"),none}.em-man-kiss-man{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png")}.em-man-kiss-man.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.svg"),none}.em-man-lifting-weights{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cb-fe0f-200d-2642-fe0f.png")}.em-man-lifting-weights.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cb-fe0f-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cb-fe0f-200d-2642-fe0f.svg"),none}.em-man-man-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f466.png")}.em-man-man-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f466.svg"),none}.em-man-man-boy-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f466-200d-1f466.png")}.em-man-man-boy-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f466-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f466-200d-1f466.svg"),none}.em-man-man-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f467.png")}.em-man-man-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467.svg"),none}.em-man-man-girl-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f467-200d-1f466.png")}.em-man-man-girl-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f467-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467-200d-1f466.svg"),none}.em-man-man-girl-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f467-200d-1f467.png")}.em-man-man-girl-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f468-200d-1f467-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467-200d-1f467.svg"),none}.em-man-mountain-biking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b5-200d-2642-fe0f.png")}.em-man-mountain-biking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b5-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b5-200d-2642-fe0f.svg"),none}.em-man-playing-handball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93e-200d-2642-fe0f.png")}.em-man-playing-handball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93e-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93e-200d-2642-fe0f.svg"),none}.em-man-playing-water-polo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93d-200d-2642-fe0f.png")}.em-man-playing-water-polo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93d-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93d-200d-2642-fe0f.svg"),none}.em-man-pouting{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64e-200d-2642-fe0f.png")}.em-man-pouting.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64e-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64e-200d-2642-fe0f.svg"),none}.em-man-raising-hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64b-200d-2642-fe0f.png")}.em-man-raising-hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64b-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64b-200d-2642-fe0f.svg"),none}.em-man-rowing-boat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a3-200d-2642-fe0f.png")}.em-man-rowing-boat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a3-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a3-200d-2642-fe0f.svg"),none}.em-man-running{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c3-200d-2642-fe0f.png")}.em-man-running.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c3-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c3-200d-2642-fe0f.svg"),none}.em-man-shrugging{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f937-200d-2642-fe0f.png")}.em-man-shrugging.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f937-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f937-200d-2642-fe0f.svg"),none}.em-man-surfing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c4-200d-2642-fe0f.png")}.em-man-surfing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c4-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c4-200d-2642-fe0f.svg"),none}.em-man-swimming{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ca-200d-2642-fe0f.png")}.em-man-swimming.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ca-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ca-200d-2642-fe0f.svg"),none}.em-man-tipping-hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f481-200d-2642-fe0f.png")}.em-man-tipping-hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f481-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f481-200d-2642-fe0f.svg"),none}.em-man-walking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b6-200d-2642-fe0f.png")}.em-man-walking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b6-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b6-200d-2642-fe0f.svg"),none}.em-man-wearing-turban{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f473-200d-2642-fe0f.png")}.em-man-wearing-turban.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f473-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f473-200d-2642-fe0f.svg"),none}.em-man-with-bunny-ears-partying{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46f-200d-2642-fe0f.png")}.em-man-with-bunny-ears-partying.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46f-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46f-200d-2642-fe0f.svg"),none}.em-man-woman-boy,.em-family{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f466.png")}.em-man-woman-boy.em-svg,.em-family.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f466.svg"),none}.em-man-woman-boy-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f466-200d-1f466.png")}.em-man-woman-boy-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f466-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f466-200d-1f466.svg"),none}.em-man-woman-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f467.png")}.em-man-woman-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467.svg"),none}.em-man-woman-girl-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f467-200d-1f466.png")}.em-man-woman-girl-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f467-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467-200d-1f466.svg"),none}.em-man-woman-girl-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f467-200d-1f467.png")}.em-man-woman-girl-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f468-200d-1f469-200d-1f467-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467-200d-1f467.svg"),none}.em-man-wrestling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93c-200d-2642-fe0f.png")}.em-man-wrestling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93c-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93c-200d-2642-fe0f.svg"),none}.em-man_climbing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d7-200d-2642-fe0f.png")}.em-man_climbing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d7-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d7-200d-2642-fe0f.svg"),none}.em-man_dancing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f57a.png")}.em-man_dancing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f57a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f57a.svg"),none}.em-man_in_business_suit_levitating{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f574.png")}.em-man_in_business_suit_levitating.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f574.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f574.svg"),none}.em-man_in_lotus_position{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d8-200d-2642-fe0f.png")}.em-man_in_lotus_position.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d8-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d8-200d-2642-fe0f.svg"),none}.em-man_in_steamy_room{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d6-200d-2642-fe0f.png")}.em-man_in_steamy_room.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d6-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d6-200d-2642-fe0f.svg"),none}.em-man_in_tuxedo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f935.png")}.em-man_in_tuxedo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f935.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f935.svg"),none}.em-man_with_gua_pi_mao{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f472.png")}.em-man_with_gua_pi_mao.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f472.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f472.svg"),none}.em-man_with_turban{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f473.png")}.em-man_with_turban.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f473.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f473.svg"),none}.em-mango{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f96d.png")}.em-mango.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f96d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f96d.svg"),none}.em-mans_shoe,.em-shoe{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f45e.png")}.em-mans_shoe.em-svg,.em-shoe.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f45e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f45e.svg"),none}.em-mantelpiece_clock{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f570.png")}.em-mantelpiece_clock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f570.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f570.svg"),none}.em-maple_leaf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f341.png")}.em-maple_leaf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f341.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f341.svg"),none}.em-martial_arts_uniform{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f94b.png")}.em-martial_arts_uniform.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f94b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f94b.svg"),none}.em-mask{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f637.png")}.em-mask.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f637.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f637.svg"),none}.em-massage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f486.png")}.em-massage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f486.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f486.svg"),none}.em-meat_on_bone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f356.png")}.em-meat_on_bone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f356.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f356.svg"),none}.em-medal{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f396.png")}.em-medal.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f396.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f396.svg"),none}.em-medical_symbol,.em-staff_of_aesculapius{background-image:url("https://twemoji.maxcdn.com/2/72x72/2695.png")}.em-medical_symbol.em-svg,.em-staff_of_aesculapius.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2695.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2695.svg"),none}.em-mega{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e3.png")}.em-mega.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e3.svg"),none}.em-melon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f348.png")}.em-melon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f348.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f348.svg"),none}.em-memo,.em-pencil{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4dd.png")}.em-memo.em-svg,.em-pencil.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4dd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4dd.svg"),none}.em-menorah_with_nine_branches{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f54e.png")}.em-menorah_with_nine_branches.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f54e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f54e.svg"),none}.em-mens{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b9.png")}.em-mens.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b9.svg"),none}.em-mermaid{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9dc-200d-2640-fe0f.png")}.em-mermaid.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9dc-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9dc-200d-2640-fe0f.svg"),none}.em-merman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9dc-200d-2642-fe0f.png")}.em-merman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9dc-200d-2642-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9dc-200d-2642-fe0f.svg"),none}.em-merperson{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9dc.png")}.em-merperson.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9dc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9dc.svg"),none}.em-metro{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f687.png")}.em-metro.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f687.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f687.svg"),none}.em-microbe{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9a0.png")}.em-microbe.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9a0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9a0.svg"),none}.em-microphone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a4.png")}.em-microphone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a4.svg"),none}.em-microscope{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f52c.png")}.em-microscope.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f52c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f52c.svg"),none}.em-middle_finger,.em-reversed_hand_with_middle_finger_extended{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f595.png")}.em-middle_finger.em-svg,.em-reversed_hand_with_middle_finger_extended.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f595.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f595.svg"),none}.em-milky_way{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f30c.png")}.em-milky_way.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f30c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f30c.svg"),none}.em-minibus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f690.png")}.em-minibus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f690.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f690.svg"),none}.em-minidisc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4bd.png")}.em-minidisc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4bd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4bd.svg"),none}.em-mobile_phone_off{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f4.png")}.em-mobile_phone_off.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f4.svg"),none}.em-money_mouth_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f911.png")}.em-money_mouth_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f911.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f911.svg"),none}.em-money_with_wings{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b8.png")}.em-money_with_wings.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b8.svg"),none}.em-moneybag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b0.png")}.em-moneybag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b0.svg"),none}.em-monkey{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f412.png")}.em-monkey.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f412.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f412.svg"),none}.em-monkey_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f435.png")}.em-monkey_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f435.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f435.svg"),none}.em-monorail{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f69d.png")}.em-monorail.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f69d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f69d.svg"),none}.em-moon,.em-waxing_gibbous_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f314.png")}.em-moon.em-svg,.em-waxing_gibbous_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f314.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f314.svg"),none}.em-moon_cake{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f96e.png")}.em-moon_cake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f96e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f96e.svg"),none}.em-mortar_board{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f393.png")}.em-mortar_board.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f393.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f393.svg"),none}.em-mosque{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f54c.png")}.em-mosque.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f54c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f54c.svg"),none}.em-mosquito{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f99f.png")}.em-mosquito.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f99f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f99f.svg"),none}.em-mostly_sunny,.em-sun_small_cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f324.png")}.em-mostly_sunny.em-svg,.em-sun_small_cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f324.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f324.svg"),none}.em-motor_boat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6e5.png")}.em-motor_boat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6e5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6e5.svg"),none}.em-motor_scooter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f5.png")}.em-motor_scooter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f5.svg"),none}.em-motorway{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6e3.png")}.em-motorway.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6e3.svg"),none}.em-mount_fuji{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5fb.png")}.em-mount_fuji.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5fb.svg"),none}.em-mountain{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f0.png")}.em-mountain.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f0.svg"),none}.em-mountain_bicyclist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b5.png")}.em-mountain_bicyclist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b5.svg"),none}.em-mountain_cableway{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a0.png")}.em-mountain_cableway.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a0.svg"),none}.em-mountain_railway{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f69e.png")}.em-mountain_railway.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f69e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f69e.svg"),none}.em-mouse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f42d.png")}.em-mouse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f42d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f42d.svg"),none}.em-mouse2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f401.png")}.em-mouse2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f401.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f401.svg"),none}.em-movie_camera{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a5.png")}.em-movie_camera.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a5.svg"),none}.em-moyai{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5ff.png")}.em-moyai.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5ff.svg"),none}.em-mrs_claus,.em-mother_christmas{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f936.png")}.em-mrs_claus.em-svg,.em-mother_christmas.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f936.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f936.svg"),none}.em-muscle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4aa.png")}.em-muscle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4aa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4aa.svg"),none}.em-mushroom{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f344.png")}.em-mushroom.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f344.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f344.svg"),none}.em-musical_keyboard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b9.png")}.em-musical_keyboard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b9.svg"),none}.em-musical_note{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b5.png")}.em-musical_note.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b5.svg"),none}.em-musical_score{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3bc.png")}.em-musical_score.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3bc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3bc.svg"),none}.em-mute{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f507.png")}.em-mute.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f507.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f507.svg"),none}.em-nail_care{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f485.png")}.em-nail_care.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f485.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f485.svg"),none}.em-name_badge{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4db.png")}.em-name_badge.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4db.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4db.svg"),none}.em-national_park{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3de.png")}.em-national_park.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3de.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3de.svg"),none}.em-nauseated_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f922.png")}.em-nauseated_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f922.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f922.svg"),none}.em-nazar_amulet{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9ff.png")}.em-nazar_amulet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9ff.svg"),none}.em-necktie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f454.png")}.em-necktie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f454.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f454.svg"),none}.em-negative_squared_cross_mark{background-image:url("https://twemoji.maxcdn.com/2/72x72/274e.png")}.em-negative_squared_cross_mark.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/274e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/274e.svg"),none}.em-nerd_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f913.png")}.em-nerd_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f913.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f913.svg"),none}.em-neutral_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f610.png")}.em-neutral_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f610.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f610.svg"),none}.em-new{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f195.png")}.em-new.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f195.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f195.svg"),none}.em-new_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f311.png")}.em-new_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f311.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f311.svg"),none}.em-new_moon_with_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f31a.png")}.em-new_moon_with_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f31a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f31a.svg"),none}.em-newspaper{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f0.png")}.em-newspaper.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f0.svg"),none}.em-ng{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f196.png")}.em-ng.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f196.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f196.svg"),none}.em-night_with_stars{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f303.png")}.em-night_with_stars.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f303.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f303.svg"),none}.em-nine{background-image:url("https://twemoji.maxcdn.com/2/72x72/39-20e3.png")}.em-nine.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/39-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/39-20e3.svg"),none}.em-no_bell{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f515.png")}.em-no_bell.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f515.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f515.svg"),none}.em-no_bicycles{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b3.png")}.em-no_bicycles.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b3.svg"),none}.em-no_entry{background-image:url("https://twemoji.maxcdn.com/2/72x72/26d4.png")}.em-no_entry.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26d4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26d4.svg"),none}.em-no_entry_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6ab.png")}.em-no_entry_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6ab.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6ab.svg"),none}.em-no_good{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f645.png")}.em-no_good.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f645.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f645.svg"),none}.em-no_mobile_phones{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f5.png")}.em-no_mobile_phones.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f5.svg"),none}.em-no_mouth{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f636.png")}.em-no_mouth.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f636.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f636.svg"),none}.em-no_pedestrians{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b7.png")}.em-no_pedestrians.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b7.svg"),none}.em-no_smoking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6ad.png")}.em-no_smoking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6ad.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6ad.svg"),none}.em-non-potable_water{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b1.png")}.em-non-potable_water.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b1.svg"),none}.em-nose{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f443.png")}.em-nose.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f443.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f443.svg"),none}.em-notebook{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d3.png")}.em-notebook.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d3.svg"),none}.em-notebook_with_decorative_cover{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d4.png")}.em-notebook_with_decorative_cover.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d4.svg"),none}.em-notes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b6.png")}.em-notes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b6.svg"),none}.em-nut_and_bolt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f529.png")}.em-nut_and_bolt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f529.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f529.svg"),none}.em-o{background-image:url("https://twemoji.maxcdn.com/2/72x72/2b55.png")}.em-o.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2b55.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2b55.svg"),none}.em-o2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f17e.png")}.em-o2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f17e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f17e.svg"),none}.em-ocean{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f30a.png")}.em-ocean.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f30a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f30a.svg"),none}.em-octagonal_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6d1.png")}.em-octagonal_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6d1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6d1.svg"),none}.em-octopus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f419.png")}.em-octopus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f419.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f419.svg"),none}.em-oden{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f362.png")}.em-oden.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f362.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f362.svg"),none}.em-office{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e2.png")}.em-office.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e2.svg"),none}.em-oil_drum{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6e2.png")}.em-oil_drum.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6e2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6e2.svg"),none}.em-ok{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f197.png")}.em-ok.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f197.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f197.svg"),none}.em-ok_hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f44c.png")}.em-ok_hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f44c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f44c.svg"),none}.em-ok_woman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f646.png")}.em-ok_woman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f646.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f646.svg"),none}.em-old_key{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5dd.png")}.em-old_key.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5dd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5dd.svg"),none}.em-older_adult{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d3.png")}.em-older_adult.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d3.svg"),none}.em-older_man{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f474.png")}.em-older_man.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f474.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f474.svg"),none}.em-older_woman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f475.png")}.em-older_woman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f475.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f475.svg"),none}.em-om_symbol{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f549.png")}.em-om_symbol.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f549.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f549.svg"),none}.em-on{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f51b.png")}.em-on.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f51b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f51b.svg"),none}.em-oncoming_automobile{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f698.png")}.em-oncoming_automobile.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f698.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f698.svg"),none}.em-oncoming_bus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f68d.png")}.em-oncoming_bus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f68d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f68d.svg"),none}.em-oncoming_police_car{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f694.png")}.em-oncoming_police_car.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f694.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f694.svg"),none}.em-oncoming_taxi{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f696.png")}.em-oncoming_taxi.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f696.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f696.svg"),none}.em-one{background-image:url("https://twemoji.maxcdn.com/2/72x72/31-20e3.png")}.em-one.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/31-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/31-20e3.svg"),none}.em-open_file_folder{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c2.png")}.em-open_file_folder.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c2.svg"),none}.em-open_hands{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f450.png")}.em-open_hands.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f450.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f450.svg"),none}.em-open_mouth{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f62e.png")}.em-open_mouth.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f62e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f62e.svg"),none}.em-ophiuchus{background-image:url("https://twemoji.maxcdn.com/2/72x72/26ce.png")}.em-ophiuchus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26ce.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26ce.svg"),none}.em-orange_book{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d9.png")}.em-orange_book.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d9.svg"),none}.em-orange_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e1.png")}.em-orange_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e1.svg"),none}.em-orthodox_cross{background-image:url("https://twemoji.maxcdn.com/2/72x72/2626.png")}.em-orthodox_cross.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2626.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2626.svg"),none}.em-outbox_tray{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e4.png")}.em-outbox_tray.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e4.svg"),none}.em-owl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f989.png")}.em-owl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f989.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f989.svg"),none}.em-ox{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f402.png")}.em-ox.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f402.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f402.svg"),none}.em-package{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e6.png")}.em-package.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e6.svg"),none}.em-page_facing_up{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c4.png")}.em-page_facing_up.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c4.svg"),none}.em-page_with_curl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4c3.png")}.em-page_with_curl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4c3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4c3.svg"),none}.em-pager{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4df.png")}.em-pager.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4df.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4df.svg"),none}.em-palm_tree{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f334.png")}.em-palm_tree.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f334.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f334.svg"),none}.em-palms_up_together{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f932.png")}.em-palms_up_together.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f932.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f932.svg"),none}.em-pancakes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f95e.png")}.em-pancakes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f95e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f95e.svg"),none}.em-panda_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f43c.png")}.em-panda_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f43c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f43c.svg"),none}.em-paperclip{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ce.png")}.em-paperclip.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ce.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ce.svg"),none}.em-parking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f17f.png")}.em-parking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f17f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f17f.svg"),none}.em-parrot{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f99c.png")}.em-parrot.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f99c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f99c.svg"),none}.em-part_alternation_mark{background-image:url("https://twemoji.maxcdn.com/2/72x72/303d.png")}.em-part_alternation_mark.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/303d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/303d.svg"),none}.em-partly_sunny{background-image:url("https://twemoji.maxcdn.com/2/72x72/26c5.png")}.em-partly_sunny.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26c5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26c5.svg"),none}.em-partly_sunny_rain,.em-sun_behind_rain_cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f326.png")}.em-partly_sunny_rain.em-svg,.em-sun_behind_rain_cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f326.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f326.svg"),none}.em-partying_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f973.png")}.em-partying_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f973.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f973.svg"),none}.em-passenger_ship{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f3.png")}.em-passenger_ship.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f3.svg"),none}.em-passport_control{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6c2.png")}.em-passport_control.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6c2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6c2.svg"),none}.em-peace_symbol{background-image:url("https://twemoji.maxcdn.com/2/72x72/262e.png")}.em-peace_symbol.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/262e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/262e.svg"),none}.em-peach{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f351.png")}.em-peach.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f351.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f351.svg"),none}.em-peacock{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f99a.png")}.em-peacock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f99a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f99a.svg"),none}.em-peanuts{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f95c.png")}.em-peanuts.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f95c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f95c.svg"),none}.em-pear{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f350.png")}.em-pear.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f350.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f350.svg"),none}.em-pencil2{background-image:url("https://twemoji.maxcdn.com/2/72x72/270f.png")}.em-pencil2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/270f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/270f.svg"),none}.em-penguin{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f427.png")}.em-penguin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f427.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f427.svg"),none}.em-pensive{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f614.png")}.em-pensive.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f614.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f614.svg"),none}.em-performing_arts{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ad.png")}.em-performing_arts.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ad.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ad.svg"),none}.em-persevere{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f623.png")}.em-persevere.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f623.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f623.svg"),none}.em-person_climbing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d7.png")}.em-person_climbing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d7.svg"),none}.em-person_doing_cartwheel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f938.png")}.em-person_doing_cartwheel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f938.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f938.svg"),none}.em-person_frowning{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64d.png")}.em-person_frowning.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64d.svg"),none}.em-person_in_lotus_position{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d8.png")}.em-person_in_lotus_position.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d8.svg"),none}.em-person_in_steamy_room{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d6.png")}.em-person_in_steamy_room.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d6.svg"),none}.em-person_with_ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f9.png")}.em-person_with_ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f9.svg"),none}.em-person_with_blond_hair{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f471.png")}.em-person_with_blond_hair.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f471.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f471.svg"),none}.em-person_with_headscarf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d5.png")}.em-person_with_headscarf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d5.svg"),none}.em-person_with_pouting_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64e.png")}.em-person_with_pouting_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64e.svg"),none}.em-petri_dish{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9eb.png")}.em-petri_dish.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9eb.svg"),none}.em-phone,.em-telephone{background-image:url("https://twemoji.maxcdn.com/2/72x72/260e.png")}.em-phone.em-svg,.em-telephone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/260e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/260e.svg"),none}.em-pick{background-image:url("https://twemoji.maxcdn.com/2/72x72/26cf.png")}.em-pick.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26cf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26cf.svg"),none}.em-pie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f967.png")}.em-pie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f967.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f967.svg"),none}.em-pig{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f437.png")}.em-pig.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f437.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f437.svg"),none}.em-pig2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f416.png")}.em-pig2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f416.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f416.svg"),none}.em-pig_nose{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f43d.png")}.em-pig_nose.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f43d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f43d.svg"),none}.em-pill{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f48a.png")}.em-pill.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f48a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f48a.svg"),none}.em-pineapple{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f34d.png")}.em-pineapple.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f34d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f34d.svg"),none}.em-pirate_flag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-200d-2620-fe0f.png")}.em-pirate_flag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f4-200d-2620-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f4-200d-2620-fe0f.svg"),none}.em-pisces{background-image:url("https://twemoji.maxcdn.com/2/72x72/2653.png")}.em-pisces.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2653.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2653.svg"),none}.em-pizza{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f355.png")}.em-pizza.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f355.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f355.svg"),none}.em-place_of_worship{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6d0.png")}.em-place_of_worship.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6d0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6d0.svg"),none}.em-pleading_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f97a.png")}.em-pleading_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f97a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f97a.svg"),none}.em-point_down{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f447.png")}.em-point_down.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f447.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f447.svg"),none}.em-point_left{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f448.png")}.em-point_left.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f448.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f448.svg"),none}.em-point_right{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f449.png")}.em-point_right.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f449.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f449.svg"),none}.em-point_up{background-image:url("https://twemoji.maxcdn.com/2/72x72/261d.png")}.em-point_up.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/261d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/261d.svg"),none}.em-point_up_2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f446.png")}.em-point_up_2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f446.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f446.svg"),none}.em-police_car{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f693.png")}.em-police_car.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f693.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f693.svg"),none}.em-poodle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f429.png")}.em-poodle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f429.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f429.svg"),none}.em-popcorn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f37f.png")}.em-popcorn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f37f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f37f.svg"),none}.em-post_office{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3e3.png")}.em-post_office.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3e3.svg"),none}.em-postal_horn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ef.png")}.em-postal_horn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ef.svg"),none}.em-postbox{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ee.png")}.em-postbox.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ee.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ee.svg"),none}.em-potable_water{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b0.png")}.em-potable_water.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b0.svg"),none}.em-potato{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f954.png")}.em-potato.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f954.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f954.svg"),none}.em-pouch{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f45d.png")}.em-pouch.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f45d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f45d.svg"),none}.em-poultry_leg{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f357.png")}.em-poultry_leg.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f357.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f357.svg"),none}.em-pound{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b7.png")}.em-pound.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b7.svg"),none}.em-pouting_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f63e.png")}.em-pouting_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f63e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f63e.svg"),none}.em-pray{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64f.png")}.em-pray.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64f.svg"),none}.em-prayer_beads{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ff.png")}.em-prayer_beads.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ff.svg"),none}.em-pregnant_woman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f930.png")}.em-pregnant_woman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f930.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f930.svg"),none}.em-pretzel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f968.png")}.em-pretzel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f968.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f968.svg"),none}.em-prince{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f934.png")}.em-prince.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f934.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f934.svg"),none}.em-princess{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f478.png")}.em-princess.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f478.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f478.svg"),none}.em-printer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5a8.png")}.em-printer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5a8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5a8.svg"),none}.em-purple_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f49c.png")}.em-purple_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f49c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f49c.svg"),none}.em-purse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f45b.png")}.em-purse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f45b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f45b.svg"),none}.em-pushpin{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4cc.png")}.em-pushpin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4cc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4cc.svg"),none}.em-put_litter_in_its_place{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6ae.png")}.em-put_litter_in_its_place.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6ae.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6ae.svg"),none}.em-question{background-image:url("https://twemoji.maxcdn.com/2/72x72/2753.png")}.em-question.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2753.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2753.svg"),none}.em-rabbit{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f430.png")}.em-rabbit.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f430.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f430.svg"),none}.em-rabbit2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f407.png")}.em-rabbit2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f407.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f407.svg"),none}.em-raccoon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f99d.png")}.em-raccoon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f99d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f99d.svg"),none}.em-racehorse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f40e.png")}.em-racehorse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f40e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f40e.svg"),none}.em-racing_car{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ce.png")}.em-racing_car.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ce.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ce.svg"),none}.em-racing_motorcycle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cd.png")}.em-racing_motorcycle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cd.svg"),none}.em-radio{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4fb.png")}.em-radio.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4fb.svg"),none}.em-radio_button{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f518.png")}.em-radio_button.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f518.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f518.svg"),none}.em-radioactive_sign{background-image:url("https://twemoji.maxcdn.com/2/72x72/2622.png")}.em-radioactive_sign.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2622.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2622.svg"),none}.em-rage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f621.png")}.em-rage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f621.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f621.svg"),none}.em-railway_car{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f683.png")}.em-railway_car.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f683.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f683.svg"),none}.em-railway_track{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6e4.png")}.em-railway_track.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6e4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6e4.svg"),none}.em-rain_cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f327.png")}.em-rain_cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f327.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f327.svg"),none}.em-rainbow{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f308.png")}.em-rainbow.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f308.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f308.svg"),none}.em-rainbow-flag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f3-fe0f-200d-1f308.png")}.em-rainbow-flag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f3-fe0f-200d-1f308.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f3-fe0f-200d-1f308.svg"),none}.em-raised_back_of_hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f91a.png")}.em-raised_back_of_hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f91a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f91a.svg"),none}.em-raised_hand_with_fingers_splayed{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f590.png")}.em-raised_hand_with_fingers_splayed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f590.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f590.svg"),none}.em-raised_hands{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64c.png")}.em-raised_hands.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64c.svg"),none}.em-raising_hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64b.png")}.em-raising_hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64b.svg"),none}.em-ram{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f40f.png")}.em-ram.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f40f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f40f.svg"),none}.em-ramen{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f35c.png")}.em-ramen.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f35c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f35c.svg"),none}.em-rat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f400.png")}.em-rat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f400.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f400.svg"),none}.em-receipt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9fe.png")}.em-receipt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9fe.svg"),none}.em-recycle{background-image:url("https://twemoji.maxcdn.com/2/72x72/267b.png")}.em-recycle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/267b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/267b.svg"),none}.em-red_circle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f534.png")}.em-red_circle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f534.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f534.svg"),none}.em-red_envelope{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e7.png")}.em-red_envelope.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e7.svg"),none}.em-registered{background-image:url("https://twemoji.maxcdn.com/2/72x72/ae.png")}.em-registered.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/ae.png");background-image:url("https://twemoji.maxcdn.com/2/svg/ae.svg"),none}.em-relaxed{background-image:url("https://twemoji.maxcdn.com/2/72x72/263a.png")}.em-relaxed.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/263a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/263a.svg"),none}.em-relieved{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f60c.png")}.em-relieved.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f60c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f60c.svg"),none}.em-reminder_ribbon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f397.png")}.em-reminder_ribbon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f397.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f397.svg"),none}.em-repeat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f501.png")}.em-repeat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f501.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f501.svg"),none}.em-repeat_one{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f502.png")}.em-repeat_one.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f502.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f502.svg"),none}.em-restroom{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6bb.png")}.em-restroom.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6bb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6bb.svg"),none}.em-revolving_hearts{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f49e.png")}.em-revolving_hearts.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f49e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f49e.svg"),none}.em-rewind{background-image:url("https://twemoji.maxcdn.com/2/72x72/23ea.png")}.em-rewind.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23ea.svg"),none}.em-rhinoceros{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f98f.png")}.em-rhinoceros.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f98f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f98f.svg"),none}.em-ribbon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f380.png")}.em-ribbon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f380.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f380.svg"),none}.em-rice{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f35a.png")}.em-rice.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f35a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f35a.svg"),none}.em-rice_ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f359.png")}.em-rice_ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f359.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f359.svg"),none}.em-rice_cracker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f358.png")}.em-rice_cracker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f358.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f358.svg"),none}.em-rice_scene{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f391.png")}.em-rice_scene.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f391.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f391.svg"),none}.em-right-facing_fist{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f91c.png")}.em-right-facing_fist.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f91c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f91c.svg"),none}.em-right_anger_bubble{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5ef.png")}.em-right_anger_bubble.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5ef.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5ef.svg"),none}.em-ring{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f48d.png")}.em-ring.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f48d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f48d.svg"),none}.em-robot_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f916.png")}.em-robot_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f916.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f916.svg"),none}.em-rocket{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f680.png")}.em-rocket.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f680.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f680.svg"),none}.em-roll_of_paper{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9fb.png")}.em-roll_of_paper.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9fb.svg"),none}.em-rolled_up_newspaper{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5de.png")}.em-rolled_up_newspaper.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5de.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5de.svg"),none}.em-roller_coaster{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a2.png")}.em-roller_coaster.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a2.svg"),none}.em-rolling_on_the_floor_laughing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f923.png")}.em-rolling_on_the_floor_laughing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f923.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f923.svg"),none}.em-rooster{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f413.png")}.em-rooster.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f413.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f413.svg"),none}.em-rose{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f339.png")}.em-rose.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f339.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f339.svg"),none}.em-rosette{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f5.png")}.em-rosette.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f5.svg"),none}.em-rotating_light{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a8.png")}.em-rotating_light.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a8.svg"),none}.em-round_pushpin{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4cd.png")}.em-round_pushpin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4cd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4cd.svg"),none}.em-rowboat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a3.png")}.em-rowboat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a3.svg"),none}.em-ru,.em-flag-ru{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1fa.png")}.em-ru.em-svg,.em-flag-ru.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1f7-1f1fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fa.svg"),none}.em-rugby_football{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c9.png")}.em-rugby_football.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c9.svg"),none}.em-runner,.em-running{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c3.png")}.em-runner.em-svg,.em-running.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c3.svg"),none}.em-running_shirt_with_sash{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3bd.png")}.em-running_shirt_with_sash.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3bd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3bd.svg"),none}.em-sa{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f202.png")}.em-sa.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f202.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f202.svg"),none}.em-safety_pin{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f7.png")}.em-safety_pin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f7.svg"),none}.em-sagittarius{background-image:url("https://twemoji.maxcdn.com/2/72x72/2650.png")}.em-sagittarius.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2650.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2650.svg"),none}.em-sake{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f376.png")}.em-sake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f376.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f376.svg"),none}.em-salt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9c2.png")}.em-salt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9c2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9c2.svg"),none}.em-sandal{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f461.png")}.em-sandal.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f461.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f461.svg"),none}.em-sandwich{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f96a.png")}.em-sandwich.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f96a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f96a.svg"),none}.em-santa{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f385.png")}.em-santa.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f385.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f385.svg"),none}.em-satellite{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f0.png")}.em-satellite.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f0.svg"),none}.em-satellite_antenna{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4e1.png")}.em-satellite_antenna.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4e1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4e1.svg"),none}.em-sauropod{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f995.png")}.em-sauropod.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f995.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f995.svg"),none}.em-saxophone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b7.png")}.em-saxophone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b7.svg"),none}.em-scales{background-image:url("https://twemoji.maxcdn.com/2/72x72/2696.png")}.em-scales.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2696.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2696.svg"),none}.em-scarf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e3.png")}.em-scarf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e3.svg"),none}.em-school{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3eb.png")}.em-school.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3eb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3eb.svg"),none}.em-school_satchel{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f392.png")}.em-school_satchel.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f392.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f392.svg"),none}.em-scissors{background-image:url("https://twemoji.maxcdn.com/2/72x72/2702.png")}.em-scissors.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2702.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2702.svg"),none}.em-scooter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f4.png")}.em-scooter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f4.svg"),none}.em-scorpion{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f982.png")}.em-scorpion.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f982.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f982.svg"),none}.em-scorpius{background-image:url("https://twemoji.maxcdn.com/2/72x72/264f.png")}.em-scorpius.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/264f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/264f.svg"),none}.em-scream{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f631.png")}.em-scream.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f631.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f631.svg"),none}.em-scream_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f640.png")}.em-scream_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f640.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f640.svg"),none}.em-scroll{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4dc.png")}.em-scroll.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4dc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4dc.svg"),none}.em-seat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ba.png")}.em-seat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ba.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ba.svg"),none}.em-second_place_medal{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f948.png")}.em-second_place_medal.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f948.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f948.svg"),none}.em-secret{background-image:url("https://twemoji.maxcdn.com/2/72x72/3299.png")}.em-secret.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/3299.png");background-image:url("https://twemoji.maxcdn.com/2/svg/3299.svg"),none}.em-see_no_evil{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f648.png")}.em-see_no_evil.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f648.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f648.svg"),none}.em-seedling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f331.png")}.em-seedling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f331.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f331.svg"),none}.em-selfie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f933.png")}.em-selfie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f933.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f933.svg"),none}.em-seven{background-image:url("https://twemoji.maxcdn.com/2/72x72/37-20e3.png")}.em-seven.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/37-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/37-20e3.svg"),none}.em-shallow_pan_of_food{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f958.png")}.em-shallow_pan_of_food.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f958.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f958.svg"),none}.em-shamrock{background-image:url("https://twemoji.maxcdn.com/2/72x72/2618.png")}.em-shamrock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2618.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2618.svg"),none}.em-shark{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f988.png")}.em-shark.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f988.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f988.svg"),none}.em-shaved_ice{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f367.png")}.em-shaved_ice.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f367.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f367.svg"),none}.em-sheep{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f411.png")}.em-sheep.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f411.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f411.svg"),none}.em-shell{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f41a.png")}.em-shell.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f41a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f41a.svg"),none}.em-shield{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6e1.png")}.em-shield.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6e1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6e1.svg"),none}.em-shinto_shrine{background-image:url("https://twemoji.maxcdn.com/2/72x72/26e9.png")}.em-shinto_shrine.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26e9.svg"),none}.em-ship{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a2.png")}.em-ship.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a2.svg"),none}.em-shirt,.em-tshirt{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f455.png")}.em-shirt.em-svg,.em-tshirt.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f455.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f455.svg"),none}.em-shopping_bags{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6cd.png")}.em-shopping_bags.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6cd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6cd.svg"),none}.em-shopping_trolley{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6d2.png")}.em-shopping_trolley.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6d2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6d2.svg"),none}.em-shower{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6bf.png")}.em-shower.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6bf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6bf.svg"),none}.em-shrimp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f990.png")}.em-shrimp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f990.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f990.svg"),none}.em-shrug{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f937.png")}.em-shrug.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f937.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f937.svg"),none}.em-shushing_face,.em-face_with_finger_covering_closed_lips{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f92b.png")}.em-shushing_face.em-svg,.em-face_with_finger_covering_closed_lips.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f92b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f92b.svg"),none}.em-signal_strength{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f6.png")}.em-signal_strength.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f6.svg"),none}.em-six{background-image:url("https://twemoji.maxcdn.com/2/72x72/36-20e3.png")}.em-six.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/36-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/36-20e3.svg"),none}.em-six_pointed_star{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f52f.png")}.em-six_pointed_star.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f52f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f52f.svg"),none}.em-skateboard{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f9.png")}.em-skateboard.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f9.svg"),none}.em-ski{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3bf.png")}.em-ski.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3bf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3bf.svg"),none}.em-skier{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f7.png")}.em-skier.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f7.svg"),none}.em-skin-tone-2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3fb.png")}.em-skin-tone-2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3fb.svg"),none}.em-skin-tone-3{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3fc.png")}.em-skin-tone-3.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3fc.svg"),none}.em-skin-tone-4{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3fd.png")}.em-skin-tone-4.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3fd.svg"),none}.em-skin-tone-5{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3fe.png")}.em-skin-tone-5.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3fe.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3fe.svg"),none}.em-skin-tone-6{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ff.png")}.em-skin-tone-6.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ff.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ff.svg"),none}.em-skull{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f480.png")}.em-skull.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f480.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f480.svg"),none}.em-skull_and_crossbones{background-image:url("https://twemoji.maxcdn.com/2/72x72/2620.png")}.em-skull_and_crossbones.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2620.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2620.svg"),none}.em-sled{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6f7.png")}.em-sled.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6f7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6f7.svg"),none}.em-sleeping{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f634.png")}.em-sleeping.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f634.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f634.svg"),none}.em-sleeping_accommodation{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6cc.png")}.em-sleeping_accommodation.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6cc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6cc.svg"),none}.em-sleepy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f62a.png")}.em-sleepy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f62a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f62a.svg"),none}.em-sleuth_or_spy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f575.png")}.em-sleuth_or_spy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f575.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f575.svg"),none}.em-slightly_frowning_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f641.png")}.em-slightly_frowning_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f641.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f641.svg"),none}.em-slightly_smiling_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f642.png")}.em-slightly_smiling_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f642.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f642.svg"),none}.em-slot_machine{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3b0.png")}.em-slot_machine.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3b0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3b0.svg"),none}.em-small_airplane{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6e9.png")}.em-small_airplane.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6e9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6e9.svg"),none}.em-small_blue_diamond{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f539.png")}.em-small_blue_diamond.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f539.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f539.svg"),none}.em-small_orange_diamond{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f538.png")}.em-small_orange_diamond.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f538.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f538.svg"),none}.em-small_red_triangle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f53a.png")}.em-small_red_triangle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f53a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f53a.svg"),none}.em-small_red_triangle_down{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f53b.png")}.em-small_red_triangle_down.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f53b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f53b.svg"),none}.em-smile{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f604.png")}.em-smile.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f604.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f604.svg"),none}.em-smile_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f638.png")}.em-smile_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f638.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f638.svg"),none}.em-smiley{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f603.png")}.em-smiley.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f603.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f603.svg"),none}.em-smiley_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f63a.png")}.em-smiley_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f63a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f63a.svg"),none}.em-smiling_face_with_3_hearts{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f970.png")}.em-smiling_face_with_3_hearts.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f970.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f970.svg"),none}.em-smiling_imp{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f608.png")}.em-smiling_imp.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f608.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f608.svg"),none}.em-smirk{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f60f.png")}.em-smirk.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f60f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f60f.svg"),none}.em-smirk_cat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f63c.png")}.em-smirk_cat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f63c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f63c.svg"),none}.em-smoking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6ac.png")}.em-smoking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6ac.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6ac.svg"),none}.em-snail{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f40c.png")}.em-snail.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f40c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f40c.svg"),none}.em-snake{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f40d.png")}.em-snake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f40d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f40d.svg"),none}.em-sneezing_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f927.png")}.em-sneezing_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f927.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f927.svg"),none}.em-snow_capped_mountain{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d4.png")}.em-snow_capped_mountain.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d4.svg"),none}.em-snow_cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f328.png")}.em-snow_cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f328.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f328.svg"),none}.em-snowboarder{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c2.png")}.em-snowboarder.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c2.svg"),none}.em-snowflake{background-image:url("https://twemoji.maxcdn.com/2/72x72/2744.png")}.em-snowflake.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2744.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2744.svg"),none}.em-snowman{background-image:url("https://twemoji.maxcdn.com/2/72x72/2603.png")}.em-snowman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2603.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2603.svg"),none}.em-snowman_without_snow{background-image:url("https://twemoji.maxcdn.com/2/72x72/26c4.png")}.em-snowman_without_snow.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26c4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26c4.svg"),none}.em-soap{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9fc.png")}.em-soap.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9fc.svg"),none}.em-sob{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f62d.png")}.em-sob.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f62d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f62d.svg"),none}.em-soccer{background-image:url("https://twemoji.maxcdn.com/2/72x72/26bd.png")}.em-soccer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26bd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26bd.svg"),none}.em-socks{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9e6.png")}.em-socks.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9e6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9e6.svg"),none}.em-softball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f94e.png")}.em-softball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f94e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f94e.svg"),none}.em-soon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f51c.png")}.em-soon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f51c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f51c.svg"),none}.em-sos{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f198.png")}.em-sos.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f198.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f198.svg"),none}.em-sound{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f509.png")}.em-sound.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f509.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f509.svg"),none}.em-space_invader{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f47e.png")}.em-space_invader.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f47e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f47e.svg"),none}.em-spades{background-image:url("https://twemoji.maxcdn.com/2/72x72/2660.png")}.em-spades.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2660.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2660.svg"),none}.em-spaghetti{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f35d.png")}.em-spaghetti.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f35d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f35d.svg"),none}.em-sparkle{background-image:url("https://twemoji.maxcdn.com/2/72x72/2747.png")}.em-sparkle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2747.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2747.svg"),none}.em-sparkler{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f387.png")}.em-sparkler.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f387.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f387.svg"),none}.em-sparkles{background-image:url("https://twemoji.maxcdn.com/2/72x72/2728.png")}.em-sparkles.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2728.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2728.svg"),none}.em-sparkling_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f496.png")}.em-sparkling_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f496.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f496.svg"),none}.em-speak_no_evil{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64a.png")}.em-speak_no_evil.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64a.svg"),none}.em-speaker{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f508.png")}.em-speaker.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f508.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f508.svg"),none}.em-speaking_head_in_silhouette{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5e3.png")}.em-speaking_head_in_silhouette.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5e3.svg"),none}.em-speech_balloon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ac.png")}.em-speech_balloon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ac.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ac.svg"),none}.em-speedboat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a4.png")}.em-speedboat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a4.svg"),none}.em-spider{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f577.png")}.em-spider.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f577.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f577.svg"),none}.em-spider_web{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f578.png")}.em-spider_web.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f578.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f578.svg"),none}.em-spiral_calendar_pad{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5d3.png")}.em-spiral_calendar_pad.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5d3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5d3.svg"),none}.em-spiral_note_pad{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5d2.png")}.em-spiral_note_pad.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5d2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5d2.svg"),none}.em-spock-hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f596.png")}.em-spock-hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f596.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f596.svg"),none}.em-sponge{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9fd.png")}.em-sponge.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9fd.svg"),none}.em-spoon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f944.png")}.em-spoon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f944.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f944.svg"),none}.em-sports_medal{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c5.png")}.em-sports_medal.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c5.svg"),none}.em-squid{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f991.png")}.em-squid.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f991.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f991.svg"),none}.em-stadium{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3df.png")}.em-stadium.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3df.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3df.svg"),none}.em-star{background-image:url("https://twemoji.maxcdn.com/2/72x72/2b50.png")}.em-star.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2b50.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2b50.svg"),none}.em-star-struck,.em-grinning_face_with_star_eyes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f929.png")}.em-star-struck.em-svg,.em-grinning_face_with_star_eyes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f929.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f929.svg"),none}.em-star2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f31f.png")}.em-star2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f31f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f31f.svg"),none}.em-star_and_crescent{background-image:url("https://twemoji.maxcdn.com/2/72x72/262a.png")}.em-star_and_crescent.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/262a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/262a.svg"),none}.em-star_of_david{background-image:url("https://twemoji.maxcdn.com/2/72x72/2721.png")}.em-star_of_david.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2721.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2721.svg"),none}.em-stars{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f320.png")}.em-stars.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f320.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f320.svg"),none}.em-station{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f689.png")}.em-station.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f689.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f689.svg"),none}.em-statue_of_liberty{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5fd.png")}.em-statue_of_liberty.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5fd.svg"),none}.em-steam_locomotive{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f682.png")}.em-steam_locomotive.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f682.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f682.svg"),none}.em-stew{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f372.png")}.em-stew.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f372.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f372.svg"),none}.em-stopwatch{background-image:url("https://twemoji.maxcdn.com/2/72x72/23f1.png")}.em-stopwatch.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23f1.svg"),none}.em-straight_ruler{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4cf.png")}.em-straight_ruler.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4cf.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4cf.svg"),none}.em-strawberry{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f353.png")}.em-strawberry.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f353.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f353.svg"),none}.em-stuck_out_tongue{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f61b.png")}.em-stuck_out_tongue.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f61b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f61b.svg"),none}.em-stuck_out_tongue_closed_eyes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f61d.png")}.em-stuck_out_tongue_closed_eyes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f61d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f61d.svg"),none}.em-stuck_out_tongue_winking_eye{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f61c.png")}.em-stuck_out_tongue_winking_eye.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f61c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f61c.svg"),none}.em-studio_microphone{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f399.png")}.em-studio_microphone.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f399.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f399.svg"),none}.em-stuffed_flatbread{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f959.png")}.em-stuffed_flatbread.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f959.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f959.svg"),none}.em-sun_with_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f31e.png")}.em-sun_with_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f31e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f31e.svg"),none}.em-sunflower{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f33b.png")}.em-sunflower.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f33b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f33b.svg"),none}.em-sunglasses{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f60e.png")}.em-sunglasses.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f60e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f60e.svg"),none}.em-sunny{background-image:url("https://twemoji.maxcdn.com/2/72x72/2600.png")}.em-sunny.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2600.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2600.svg"),none}.em-sunrise{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f305.png")}.em-sunrise.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f305.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f305.svg"),none}.em-sunrise_over_mountains{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f304.png")}.em-sunrise_over_mountains.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f304.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f304.svg"),none}.em-surfer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c4.png")}.em-surfer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c4.svg"),none}.em-sushi{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f363.png")}.em-sushi.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f363.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f363.svg"),none}.em-suspension_railway{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f69f.png")}.em-suspension_railway.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f69f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f69f.svg"),none}.em-swan{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9a2.png")}.em-swan.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9a2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9a2.svg"),none}.em-sweat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f613.png")}.em-sweat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f613.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f613.svg"),none}.em-sweat_drops{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a6.png")}.em-sweat_drops.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a6.svg"),none}.em-sweat_smile{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f605.png")}.em-sweat_smile.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f605.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f605.svg"),none}.em-sweet_potato{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f360.png")}.em-sweet_potato.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f360.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f360.svg"),none}.em-swimmer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ca.png")}.em-swimmer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ca.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ca.svg"),none}.em-symbols{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f523.png")}.em-symbols.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f523.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f523.svg"),none}.em-synagogue{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f54d.png")}.em-synagogue.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f54d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f54d.svg"),none}.em-syringe{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f489.png")}.em-syringe.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f489.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f489.svg"),none}.em-t-rex{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f996.png")}.em-t-rex.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f996.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f996.svg"),none}.em-table_tennis_paddle_and_ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d3.png")}.em-table_tennis_paddle_and_ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d3.svg"),none}.em-taco{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f32e.png")}.em-taco.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f32e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f32e.svg"),none}.em-tada{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f389.png")}.em-tada.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f389.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f389.svg"),none}.em-takeout_box{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f961.png")}.em-takeout_box.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f961.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f961.svg"),none}.em-tanabata_tree{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f38b.png")}.em-tanabata_tree.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f38b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f38b.svg"),none}.em-tangerine{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f34a.png")}.em-tangerine.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f34a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f34a.svg"),none}.em-taurus{background-image:url("https://twemoji.maxcdn.com/2/72x72/2649.png")}.em-taurus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2649.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2649.svg"),none}.em-taxi{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f695.png")}.em-taxi.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f695.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f695.svg"),none}.em-tea{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f375.png")}.em-tea.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f375.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f375.svg"),none}.em-teddy_bear{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f8.png")}.em-teddy_bear.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f8.svg"),none}.em-telephone_receiver{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4de.png")}.em-telephone_receiver.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4de.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4de.svg"),none}.em-telescope{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f52d.png")}.em-telescope.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f52d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f52d.svg"),none}.em-tennis{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3be.png")}.em-tennis.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3be.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3be.svg"),none}.em-tent{background-image:url("https://twemoji.maxcdn.com/2/72x72/26fa.png")}.em-tent.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26fa.svg"),none}.em-test_tube{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9ea.png")}.em-test_tube.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9ea.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9ea.svg"),none}.em-the_horns,.em-sign_of_the_horns{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f918.png")}.em-the_horns.em-svg,.em-sign_of_the_horns.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f918.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f918.svg"),none}.em-thermometer{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f321.png")}.em-thermometer.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f321.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f321.svg"),none}.em-thinking_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f914.png")}.em-thinking_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f914.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f914.svg"),none}.em-third_place_medal{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f949.png")}.em-third_place_medal.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f949.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f949.svg"),none}.em-thought_balloon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ad.png")}.em-thought_balloon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ad.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ad.svg"),none}.em-thread{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f5.png")}.em-thread.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f5.svg"),none}.em-three{background-image:url("https://twemoji.maxcdn.com/2/72x72/33-20e3.png")}.em-three.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/33-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/33-20e3.svg"),none}.em-three_button_mouse{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5b1.png")}.em-three_button_mouse.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5b1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5b1.svg"),none}.em-thunder_cloud_and_rain{background-image:url("https://twemoji.maxcdn.com/2/72x72/26c8.png")}.em-thunder_cloud_and_rain.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26c8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26c8.svg"),none}.em-ticket{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ab.png")}.em-ticket.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ab.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ab.svg"),none}.em-tiger{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f42f.png")}.em-tiger.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f42f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f42f.svg"),none}.em-tiger2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f405.png")}.em-tiger2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f405.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f405.svg"),none}.em-timer_clock{background-image:url("https://twemoji.maxcdn.com/2/72x72/23f2.png")}.em-timer_clock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/23f2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/23f2.svg"),none}.em-tired_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f62b.png")}.em-tired_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f62b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f62b.svg"),none}.em-tm{background-image:url("https://twemoji.maxcdn.com/2/72x72/2122.png")}.em-tm.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2122.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2122.svg"),none}.em-toilet{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6bd.png")}.em-toilet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6bd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6bd.svg"),none}.em-tokyo_tower{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5fc.png")}.em-tokyo_tower.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5fc.svg"),none}.em-tomato{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f345.png")}.em-tomato.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f345.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f345.svg"),none}.em-tongue{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f445.png")}.em-tongue.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f445.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f445.svg"),none}.em-toolbox{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f0.png")}.em-toolbox.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f0.svg"),none}.em-tooth{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9b7.png")}.em-tooth.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9b7.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9b7.svg"),none}.em-top{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f51d.png")}.em-top.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f51d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f51d.svg"),none}.em-tophat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3a9.png")}.em-tophat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3a9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3a9.svg"),none}.em-tornado,.em-tornado_cloud{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f32a.png")}.em-tornado.em-svg,.em-tornado_cloud.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f32a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f32a.svg"),none}.em-trackball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5b2.png")}.em-trackball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5b2.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5b2.svg"),none}.em-tractor{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f69c.png")}.em-tractor.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f69c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f69c.svg"),none}.em-traffic_light{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a5.png")}.em-traffic_light.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a5.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a5.svg"),none}.em-train{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f68b.png")}.em-train.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f68b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f68b.svg"),none}.em-train2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f686.png")}.em-train2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f686.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f686.svg"),none}.em-tram{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f68a.png")}.em-tram.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f68a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f68a.svg"),none}.em-triangular_flag_on_post{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a9.png")}.em-triangular_flag_on_post.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a9.svg"),none}.em-triangular_ruler{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4d0.png")}.em-triangular_ruler.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4d0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4d0.svg"),none}.em-trident{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f531.png")}.em-trident.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f531.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f531.svg"),none}.em-triumph{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f624.png")}.em-triumph.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f624.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f624.svg"),none}.em-trolleybus{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f68e.png")}.em-trolleybus.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f68e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f68e.svg"),none}.em-trophy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c6.png")}.em-trophy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c6.svg"),none}.em-tropical_drink{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f379.png")}.em-tropical_drink.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f379.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f379.svg"),none}.em-tropical_fish{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f420.png")}.em-tropical_fish.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f420.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f420.svg"),none}.em-truck{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f69a.png")}.em-truck.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f69a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f69a.svg"),none}.em-trumpet{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ba.png")}.em-trumpet.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ba.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ba.svg"),none}.em-tulip{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f337.png")}.em-tulip.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f337.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f337.svg"),none}.em-tumbler_glass{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f943.png")}.em-tumbler_glass.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f943.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f943.svg"),none}.em-turkey{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f983.png")}.em-turkey.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f983.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f983.svg"),none}.em-turtle{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f422.png")}.em-turtle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f422.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f422.svg"),none}.em-tv{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4fa.png")}.em-tv.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4fa.svg"),none}.em-twisted_rightwards_arrows{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f500.png")}.em-twisted_rightwards_arrows.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f500.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f500.svg"),none}.em-two{background-image:url("https://twemoji.maxcdn.com/2/72x72/32-20e3.png")}.em-two.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/32-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/32-20e3.svg"),none}.em-two_hearts{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f495.png")}.em-two_hearts.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f495.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f495.svg"),none}.em-two_men_holding_hands{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46c.png")}.em-two_men_holding_hands.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46c.svg"),none}.em-two_women_holding_hands{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46d.png")}.em-two_women_holding_hands.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46d.svg"),none}.em-u5272{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f239.png")}.em-u5272.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f239.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f239.svg"),none}.em-u5408{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f234.png")}.em-u5408.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f234.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f234.svg"),none}.em-u55b6{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f23a.png")}.em-u55b6.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f23a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f23a.svg"),none}.em-u6307{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f22f.png")}.em-u6307.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f22f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f22f.svg"),none}.em-u6708{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f237.png")}.em-u6708.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f237.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f237.svg"),none}.em-u6709{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f236.png")}.em-u6709.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f236.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f236.svg"),none}.em-u6e80{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f235.png")}.em-u6e80.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f235.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f235.svg"),none}.em-u7121{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f21a.png")}.em-u7121.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f21a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f21a.svg"),none}.em-u7533{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f238.png")}.em-u7533.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f238.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f238.svg"),none}.em-u7981{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f232.png")}.em-u7981.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f232.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f232.svg"),none}.em-u7a7a{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f233.png")}.em-u7a7a.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f233.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f233.svg"),none}.em-umbrella{background-image:url("https://twemoji.maxcdn.com/2/72x72/2602.png")}.em-umbrella.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2602.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2602.svg"),none}.em-umbrella_on_ground{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f1.png")}.em-umbrella_on_ground.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f1.svg"),none}.em-umbrella_with_rain_drops{background-image:url("https://twemoji.maxcdn.com/2/72x72/2614.png")}.em-umbrella_with_rain_drops.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2614.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2614.svg"),none}.em-unamused{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f612.png")}.em-unamused.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f612.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f612.svg"),none}.em-underage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f51e.png")}.em-underage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f51e.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f51e.svg"),none}.em-unicorn_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f984.png")}.em-unicorn_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f984.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f984.svg"),none}.em-unlock{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f513.png")}.em-unlock.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f513.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f513.svg"),none}.em-up{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f199.png")}.em-up.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f199.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f199.svg"),none}.em-upside_down_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f643.png")}.em-upside_down_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f643.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f643.svg"),none}.em-us,.em-flag-us{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1f8.png")}.em-us.em-svg,.em-flag-us.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f1fa-1f1f8.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f8.svg"),none}.em-v{background-image:url("https://twemoji.maxcdn.com/2/72x72/270c.png")}.em-v.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/270c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/270c.svg"),none}.em-vampire{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9db.png")}.em-vampire.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9db.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9db.svg"),none}.em-vertical_traffic_light{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a6.png")}.em-vertical_traffic_light.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a6.svg"),none}.em-vhs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4fc.png")}.em-vhs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4fc.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4fc.svg"),none}.em-vibration_mode{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f3.png")}.em-vibration_mode.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f3.svg"),none}.em-video_camera{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4f9.png")}.em-video_camera.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4f9.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4f9.svg"),none}.em-video_game{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ae.png")}.em-video_game.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ae.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ae.svg"),none}.em-violin{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3bb.png")}.em-violin.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3bb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3bb.svg"),none}.em-virgo{background-image:url("https://twemoji.maxcdn.com/2/72x72/264d.png")}.em-virgo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/264d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/264d.svg"),none}.em-volcano{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f30b.png")}.em-volcano.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f30b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f30b.svg"),none}.em-volleyball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3d0.png")}.em-volleyball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3d0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3d0.svg"),none}.em-vs{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f19a.png")}.em-vs.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f19a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f19a.svg"),none}.em-walking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b6.png")}.em-walking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b6.svg"),none}.em-waning_crescent_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f318.png")}.em-waning_crescent_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f318.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f318.svg"),none}.em-waning_gibbous_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f316.png")}.em-waning_gibbous_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f316.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f316.svg"),none}.em-warning{background-image:url("https://twemoji.maxcdn.com/2/72x72/26a0.png")}.em-warning.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26a0.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26a0.svg"),none}.em-wastebasket{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5d1.png")}.em-wastebasket.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5d1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5d1.svg"),none}.em-watch{background-image:url("https://twemoji.maxcdn.com/2/72x72/231a.png")}.em-watch.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/231a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/231a.svg"),none}.em-water_buffalo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f403.png")}.em-water_buffalo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f403.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f403.svg"),none}.em-water_polo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93d.png")}.em-water_polo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93d.svg"),none}.em-watermelon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f349.png")}.em-watermelon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f349.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f349.svg"),none}.em-wave{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f44b.png")}.em-wave.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f44b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f44b.svg"),none}.em-waving_black_flag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f4.png")}.em-waving_black_flag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f4.svg"),none}.em-waving_white_flag{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3f3.png")}.em-waving_white_flag.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3f3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3f3.svg"),none}.em-wavy_dash{background-image:url("https://twemoji.maxcdn.com/2/72x72/3030.png")}.em-wavy_dash.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/3030.png");background-image:url("https://twemoji.maxcdn.com/2/svg/3030.svg"),none}.em-waxing_crescent_moon{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f312.png")}.em-waxing_crescent_moon.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f312.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f312.svg"),none}.em-wc{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6be.png")}.em-wc.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6be.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6be.svg"),none}.em-weary{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f629.png")}.em-weary.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f629.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f629.svg"),none}.em-wedding{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f492.png")}.em-wedding.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f492.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f492.svg"),none}.em-weight_lifter{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cb.png")}.em-weight_lifter.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cb.svg"),none}.em-whale{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f433.png")}.em-whale.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f433.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f433.svg"),none}.em-whale2{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f40b.png")}.em-whale2.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f40b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f40b.svg"),none}.em-wheel_of_dharma{background-image:url("https://twemoji.maxcdn.com/2/72x72/2638.png")}.em-wheel_of_dharma.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2638.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2638.svg"),none}.em-wheelchair{background-image:url("https://twemoji.maxcdn.com/2/72x72/267f.png")}.em-wheelchair.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/267f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/267f.svg"),none}.em-white_check_mark{background-image:url("https://twemoji.maxcdn.com/2/72x72/2705.png")}.em-white_check_mark.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2705.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2705.svg"),none}.em-white_circle{background-image:url("https://twemoji.maxcdn.com/2/72x72/26aa.png")}.em-white_circle.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26aa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26aa.svg"),none}.em-white_flower{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4ae.png")}.em-white_flower.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4ae.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4ae.svg"),none}.em-white_frowning_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/2639.png")}.em-white_frowning_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2639.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2639.svg"),none}.em-white_large_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/2b1c.png")}.em-white_large_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/2b1c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/2b1c.svg"),none}.em-white_medium_small_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/25fd.png")}.em-white_medium_small_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25fd.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25fd.svg"),none}.em-white_medium_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/25fb.png")}.em-white_medium_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25fb.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25fb.svg"),none}.em-white_small_square{background-image:url("https://twemoji.maxcdn.com/2/72x72/25ab.png")}.em-white_small_square.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/25ab.png");background-image:url("https://twemoji.maxcdn.com/2/svg/25ab.svg"),none}.em-white_square_button{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f533.png")}.em-white_square_button.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f533.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f533.svg"),none}.em-wilted_flower{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f940.png")}.em-wilted_flower.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f940.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f940.svg"),none}.em-wind_blowing_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f32c.png")}.em-wind_blowing_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f32c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f32c.svg"),none}.em-wind_chime{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f390.png")}.em-wind_chime.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f390.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f390.svg"),none}.em-wine_glass{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f377.png")}.em-wine_glass.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f377.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f377.svg"),none}.em-wink{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f609.png")}.em-wink.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f609.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f609.svg"),none}.em-wolf{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f43a.png")}.em-wolf.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f43a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f43a.svg"),none}.em-woman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469.png")}.em-woman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469.svg"),none}.em-woman-biking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b4-200d-2640-fe0f.png")}.em-woman-biking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b4-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b4-200d-2640-fe0f.svg"),none}.em-woman-bouncing-ball{background-image:url("https://twemoji.maxcdn.com/2/72x72/26f9-fe0f-200d-2640-fe0f.png")}.em-woman-bouncing-ball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26f9-fe0f-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26f9-fe0f-200d-2640-fe0f.svg"),none}.em-woman-bowing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f647-200d-2640-fe0f.png")}.em-woman-bowing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f647-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f647-200d-2640-fe0f.svg"),none}.em-woman-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f466.png")}.em-woman-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f466.svg"),none}.em-woman-boy-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f466-200d-1f466.png")}.em-woman-boy-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f466-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f466-200d-1f466.svg"),none}.em-woman-cartwheeling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f938-200d-2640-fe0f.png")}.em-woman-cartwheeling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f938-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f938-200d-2640-fe0f.svg"),none}.em-woman-facepalming{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f926-200d-2640-fe0f.png")}.em-woman-facepalming.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f926-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f926-200d-2640-fe0f.svg"),none}.em-woman-frowning{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64d-200d-2640-fe0f.png")}.em-woman-frowning.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64d-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64d-200d-2640-fe0f.svg"),none}.em-woman-gesturing-no{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f645-200d-2640-fe0f.png")}.em-woman-gesturing-no.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f645-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f645-200d-2640-fe0f.svg"),none}.em-woman-gesturing-ok{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f646-200d-2640-fe0f.png")}.em-woman-gesturing-ok.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f646-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f646-200d-2640-fe0f.svg"),none}.em-woman-getting-haircut{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f487-200d-2640-fe0f.png")}.em-woman-getting-haircut.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f487-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f487-200d-2640-fe0f.svg"),none}.em-woman-getting-massage{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f486-200d-2640-fe0f.png")}.em-woman-getting-massage.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f486-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f486-200d-2640-fe0f.svg"),none}.em-woman-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f467.png")}.em-woman-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f467.svg"),none}.em-woman-girl-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f467-200d-1f466.png")}.em-woman-girl-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f467-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f467-200d-1f466.svg"),none}.em-woman-girl-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f467-200d-1f467.png")}.em-woman-girl-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f467-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f467-200d-1f467.svg"),none}.em-woman-golfing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cc-fe0f-200d-2640-fe0f.png")}.em-woman-golfing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cc-fe0f-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cc-fe0f-200d-2640-fe0f.svg"),none}.em-woman-heart-man{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f468.png")}.em-woman-heart-man.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f468.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f468.svg"),none}.em-woman-heart-woman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f469.png")}.em-woman-heart-woman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f469.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f469.svg"),none}.em-woman-juggling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f939-200d-2640-fe0f.png")}.em-woman-juggling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f939-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f939-200d-2640-fe0f.svg"),none}.em-woman-kiss-man{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.png")}.em-woman-kiss-man.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.svg"),none}.em-woman-kiss-woman{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png")}.em-woman-kiss-woman.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.svg"),none}.em-woman-lifting-weights{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3cb-fe0f-200d-2640-fe0f.png")}.em-woman-lifting-weights.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3cb-fe0f-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3cb-fe0f-200d-2640-fe0f.svg"),none}.em-woman-mountain-biking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b5-200d-2640-fe0f.png")}.em-woman-mountain-biking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b5-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b5-200d-2640-fe0f.svg"),none}.em-woman-playing-handball{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93e-200d-2640-fe0f.png")}.em-woman-playing-handball.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93e-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93e-200d-2640-fe0f.svg"),none}.em-woman-playing-water-polo{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93d-200d-2640-fe0f.png")}.em-woman-playing-water-polo.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93d-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93d-200d-2640-fe0f.svg"),none}.em-woman-pouting{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64e-200d-2640-fe0f.png")}.em-woman-pouting.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64e-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64e-200d-2640-fe0f.svg"),none}.em-woman-raising-hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f64b-200d-2640-fe0f.png")}.em-woman-raising-hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f64b-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f64b-200d-2640-fe0f.svg"),none}.em-woman-rowing-boat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6a3-200d-2640-fe0f.png")}.em-woman-rowing-boat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6a3-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6a3-200d-2640-fe0f.svg"),none}.em-woman-running{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c3-200d-2640-fe0f.png")}.em-woman-running.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c3-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c3-200d-2640-fe0f.svg"),none}.em-woman-shrugging{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f937-200d-2640-fe0f.png")}.em-woman-shrugging.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f937-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f937-200d-2640-fe0f.svg"),none}.em-woman-surfing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3c4-200d-2640-fe0f.png")}.em-woman-surfing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3c4-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3c4-200d-2640-fe0f.svg"),none}.em-woman-swimming{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f3ca-200d-2640-fe0f.png")}.em-woman-swimming.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f3ca-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f3ca-200d-2640-fe0f.svg"),none}.em-woman-tipping-hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f481-200d-2640-fe0f.png")}.em-woman-tipping-hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f481-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f481-200d-2640-fe0f.svg"),none}.em-woman-walking{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6b6-200d-2640-fe0f.png")}.em-woman-walking.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6b6-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6b6-200d-2640-fe0f.svg"),none}.em-woman-wearing-turban{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f473-200d-2640-fe0f.png")}.em-woman-wearing-turban.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f473-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f473-200d-2640-fe0f.svg"),none}.em-woman-with-bunny-ears-partying{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f46f-200d-2640-fe0f.png")}.em-woman-with-bunny-ears-partying.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f46f-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f46f-200d-2640-fe0f.svg"),none}.em-woman-woman-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f466.png")}.em-woman-woman-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f466.svg"),none}.em-woman-woman-boy-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f466-200d-1f466.png")}.em-woman-woman-boy-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f466-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f466-200d-1f466.svg"),none}.em-woman-woman-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f467.png")}.em-woman-woman-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467.svg"),none}.em-woman-woman-girl-boy{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f467-200d-1f466.png")}.em-woman-woman-girl-boy.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f467-200d-1f466.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467-200d-1f466.svg"),none}.em-woman-woman-girl-girl{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f467-200d-1f467.png")}.em-woman-woman-girl-girl.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f469-200d-1f469-200d-1f467-200d-1f467.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467-200d-1f467.svg"),none}.em-woman-wrestling{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93c-200d-2640-fe0f.png")}.em-woman-wrestling.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93c-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93c-200d-2640-fe0f.svg"),none}.em-woman_climbing{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d7-200d-2640-fe0f.png")}.em-woman_climbing.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d7-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d7-200d-2640-fe0f.svg"),none}.em-woman_in_lotus_position{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d8-200d-2640-fe0f.png")}.em-woman_in_lotus_position.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d8-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d8-200d-2640-fe0f.svg"),none}.em-woman_in_steamy_room{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9d6-200d-2640-fe0f.png")}.em-woman_in_steamy_room.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9d6-200d-2640-fe0f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9d6-200d-2640-fe0f.svg"),none}.em-womans_clothes{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f45a.png")}.em-womans_clothes.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f45a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f45a.svg"),none}.em-womans_flat_shoe{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f97f.png")}.em-womans_flat_shoe.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f97f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f97f.svg"),none}.em-womans_hat{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f452.png")}.em-womans_hat.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f452.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f452.svg"),none}.em-womens{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f6ba.png")}.em-womens.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f6ba.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f6ba.svg"),none}.em-woozy_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f974.png")}.em-woozy_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f974.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f974.svg"),none}.em-world_map{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f5fa.png")}.em-world_map.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f5fa.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f5fa.svg"),none}.em-worried{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f61f.png")}.em-worried.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f61f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f61f.svg"),none}.em-wrench{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f527.png")}.em-wrench.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f527.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f527.svg"),none}.em-wrestlers{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f93c.png")}.em-wrestlers.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f93c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f93c.svg"),none}.em-writing_hand{background-image:url("https://twemoji.maxcdn.com/2/72x72/270d.png")}.em-writing_hand.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/270d.png");background-image:url("https://twemoji.maxcdn.com/2/svg/270d.svg"),none}.em-x{background-image:url("https://twemoji.maxcdn.com/2/72x72/274c.png")}.em-x.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/274c.png");background-image:url("https://twemoji.maxcdn.com/2/svg/274c.svg"),none}.em-yarn{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9f6.png")}.em-yarn.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9f6.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9f6.svg"),none}.em-yellow_heart{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f49b.png")}.em-yellow_heart.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f49b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f49b.svg"),none}.em-yen{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4b4.png")}.em-yen.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4b4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4b4.svg"),none}.em-yin_yang{background-image:url("https://twemoji.maxcdn.com/2/72x72/262f.png")}.em-yin_yang.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/262f.png");background-image:url("https://twemoji.maxcdn.com/2/svg/262f.svg"),none}.em-yum{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f60b.png")}.em-yum.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f60b.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f60b.svg"),none}.em-zany_face,.em-grinning_face_with_one_large_and_one_small_eye{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f92a.png")}.em-zany_face.em-svg,.em-grinning_face_with_one_large_and_one_small_eye.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f92a.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f92a.svg"),none}.em-zap{background-image:url("https://twemoji.maxcdn.com/2/72x72/26a1.png")}.em-zap.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/26a1.png");background-image:url("https://twemoji.maxcdn.com/2/svg/26a1.svg"),none}.em-zebra_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f993.png")}.em-zebra_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f993.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f993.svg"),none}.em-zero{background-image:url("https://twemoji.maxcdn.com/2/72x72/30-20e3.png")}.em-zero.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/30-20e3.png");background-image:url("https://twemoji.maxcdn.com/2/svg/30-20e3.svg"),none}.em-zipper_mouth_face{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f910.png")}.em-zipper_mouth_face.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f910.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f910.svg"),none}.em-zombie{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f9df.png")}.em-zombie.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f9df.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f9df.svg"),none}.em-zzz{background-image:url("https://twemoji.maxcdn.com/2/72x72/1f4a4.png")}.em-zzz.em-svg{background:url("https://twemoji.maxcdn.com/2/72x72/1f4a4.png");background-image:url("https://twemoji.maxcdn.com/2/svg/1f4a4.svg"),none} diff --git a/assets/css/main.css b/assets/css/main.css index 1c94ca7..37173a5 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -1,5 +1,12 @@ @import url(fontawesome-all.min.css); -@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300italic,600italic,300,600"); + +@font-face { + font-family: 'Estedad'; /* V5.0 (FD) */ + src: url('../../fonts/Estedad-FD-Regular.ttf'); + src: url('../../fonts/Estedad-FD-Regular.woff2') format('woff2'), url('../../fonts/Estedad-FD-Regular.ttf') format('truetype'); + font-weight: 100; + font-style: normal; +} /* Dimension by HTML5 UP @@ -112,7 +119,7 @@ section { body { line-height: 1; - font-family: Vazir !important; + font-family: Estedad !important; } ol, @@ -129,7 +136,7 @@ blockquote:before, blockquote:after, q:before, q:after { - content: ""; + content: ''; content: none; } @@ -230,21 +237,17 @@ input, select, textarea { color: #ffffff; - font-family: "Source Sans Pro", sans-serif; + font-family: 'Source Sans Pro', Estedad; font-weight: 300; font-size: 1rem; line-height: 1.65; } a { - -moz-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, - border-bottom-color 0.2s ease-in-out; - -webkit-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, - border-bottom-color 0.2s ease-in-out; - -ms-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, - border-bottom-color 0.2s ease-in-out; - transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, - border-bottom-color 0.2s ease-in-out; + -moz-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; + transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; border-bottom: dotted 1px rgba(255, 255, 255, 0.5); text-decoration: none; color: inherit; @@ -279,7 +282,6 @@ h6 { font-weight: 600; line-height: 1.5; margin: 0 0 1rem 0; - text-transform: uppercase; /* letter-spacing: 0.2rem; */ } @@ -368,7 +370,7 @@ blockquote { code { background: rgba(255, 255, 255, 0.075); border-radius: 4px; - font-family: "Courier New", monospace; + font-family: 'Courier New', monospace; font-size: 0.9rem; margin: 0 0.25rem; padding: 0.25rem 0.65rem; @@ -376,7 +378,7 @@ code { pre { -webkit-overflow-scrolling: touch; - font-family: "Courier New", monospace; + font-family: 'Courier New', monospace; font-size: 0.9rem; margin: 0 0 2rem 0; } @@ -489,24 +491,20 @@ label { text-transform: uppercase; } -input[type="text"], -input[type="password"], -input[type="email"], -input[type="tel"], +input[type='text'], +input[type='password'], +input[type='email'], +input[type='tel'], select, textarea { -moz-appearance: none; -webkit-appearance: none; -ms-appearance: none; appearance: none; - -moz-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; - -webkit-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; - -ms-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; - transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; + -moz-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + -webkit-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + -ms-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; background-color: transparent; border-radius: 4px; border: solid 1px #ffffff; @@ -518,19 +516,19 @@ textarea { width: 100%; } -input[type="text"]:invalid, -input[type="password"]:invalid, -input[type="email"]:invalid, -input[type="tel"]:invalid, +input[type='text']:invalid, +input[type='password']:invalid, +input[type='email']:invalid, +input[type='tel']:invalid, select:invalid, textarea:invalid { box-shadow: none; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="email"]:focus, -input[type="tel"]:focus, +input[type='text']:focus, +input[type='password']:focus, +input[type='email']:focus, +input[type='tel']:focus, select:focus, textarea:focus { background: rgba(255, 255, 255, 0.075); @@ -561,9 +559,9 @@ select::-ms-expand { display: none; } -input[type="text"], -input[type="password"], -input[type="email"], +input[type='text'], +input[type='password'], +input[type='email'], select { height: 2.75rem; } @@ -572,8 +570,8 @@ textarea { padding: 0.75rem 1rem; } -input[type="checkbox"], -input[type="radio"] { +input[type='checkbox'], +input[type='radio'] { -moz-appearance: none; -webkit-appearance: none; -ms-appearance: none; @@ -586,8 +584,8 @@ input[type="radio"] { z-index: -1; } -input[type="checkbox"] + label, -input[type="radio"] + label { +input[type='checkbox'] + label, +input[type='radio'] + label { text-decoration: none; -moz-user-select: none; -webkit-user-select: none; @@ -604,8 +602,8 @@ input[type="radio"] + label { position: relative; } -input[type="checkbox"] + label:before, -input[type="radio"] + label:before { +input[type='checkbox'] + label:before, +input[type='radio'] + label:before { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; @@ -614,23 +612,19 @@ input[type="radio"] + label:before { text-rendering: auto; line-height: 1; text-transform: none !important; - font-family: "Font Awesome 5 Free"; + font-family: 'Font Awesome 5 Free'; font-weight: 900; } -input[type="checkbox"] + label:before, -input[type="radio"] + label:before { - -moz-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; - -webkit-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; - -ms-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; - transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, - background-color 0.2s ease-in-out; +input[type='checkbox'] + label:before, +input[type='radio'] + label:before { + -moz-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + -webkit-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + -ms-transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; border-radius: 4px; border: solid 1px #ffffff; - content: ""; + content: ''; display: inline-block; height: 1.65rem; left: 0; @@ -641,26 +635,26 @@ input[type="radio"] + label:before { width: 1.65rem; } -input[type="checkbox"]:checked + label:before, -input[type="radio"]:checked + label:before { +input[type='checkbox']:checked + label:before, +input[type='radio']:checked + label:before { background: #ffffff !important; border-color: #ffffff !important; color: #1b1f22; - content: "\f00c"; + content: '\f00c'; } -input[type="checkbox"]:focus + label:before, -input[type="radio"]:focus + label:before { +input[type='checkbox']:focus + label:before, +input[type='radio']:focus + label:before { background: rgba(255, 255, 255, 0.075); border-color: #ffffff; box-shadow: 0 0 0 1px #ffffff; } -input[type="checkbox"] + label:before { +input[type='checkbox'] + label:before { border-radius: 4px; } -input[type="radio"] + label:before { +input[type='radio'] + label:before { border-radius: 100%; } @@ -727,7 +721,7 @@ input[type="radio"] + label:before { text-rendering: auto; line-height: 1; text-transform: none !important; - font-family: "Font Awesome 5 Free"; + font-family: 'Font Awesome 5 Free'; font-weight: 400; } @@ -744,7 +738,7 @@ input[type="radio"] + label:before { } .icon.brands:before { - font-family: "Font Awesome 5 Brands"; + font-family: 'Font Awesome 5 Brands'; } /* Image */ @@ -758,10 +752,10 @@ input[type="radio"] + label:before { .image:before { pointer-events: none; - background-image: url("../../images/overlay.png"); + background-image: url('../../images/overlay.png'); background-color: rgba(19, 21, 25, 0.5); border-radius: 4px; - content: ""; + content: ''; display: block; height: 100%; left: 0; @@ -835,7 +829,7 @@ input[type="radio"] + label:before { ol { list-style: decimal; margin: 0 0 2rem 0; - padding-left: 1.25em; + padding-right: 2em; } ol li { @@ -984,17 +978,17 @@ ul.actions.fit.stacked { padding-top: 0; } - ul.actions:not(.fixed) li input[type="submit"], - ul.actions:not(.fixed) li input[type="reset"], - ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li input[type='submit'], + ul.actions:not(.fixed) li input[type='reset'], + ul.actions:not(.fixed) li input[type='button'], ul.actions:not(.fixed) li button, ul.actions:not(.fixed) li .button { width: 100%; } - ul.actions:not(.fixed) li input[type="submit"].icon:before, - ul.actions:not(.fixed) li input[type="reset"].icon:before, - ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li input[type='submit'].icon:before, + ul.actions:not(.fixed) li input[type='reset'].icon:before, + ul.actions:not(.fixed) li input[type='button'].icon:before, ul.actions:not(.fixed) li button.icon:before, ul.actions:not(.fixed) li .button.icon:before { margin-left: -0.5em; @@ -1106,9 +1100,9 @@ table.alt tfoot { /* Button */ -input[type="submit"], -input[type="reset"], -input[type="button"], +input[type='submit'], +input[type='reset'], +input[type='button'], button, .button { -moz-appearance: none; @@ -1139,41 +1133,41 @@ button, white-space: nowrap; } -input[type="submit"]:hover, -input[type="reset"]:hover, -input[type="button"]:hover, +input[type='submit']:hover, +input[type='reset']:hover, +input[type='button']:hover, button:hover, .button:hover { background-color: rgba(255, 255, 255, 0.075); } -input[type="submit"]:active, -input[type="reset"]:active, -input[type="button"]:active, +input[type='submit']:active, +input[type='reset']:active, +input[type='button']:active, button:active, .button:active { background-color: rgba(255, 255, 255, 0.175); } -input[type="submit"].icon:before, -input[type="reset"].icon:before, -input[type="button"].icon:before, +input[type='submit'].icon:before, +input[type='reset'].icon:before, +input[type='button'].icon:before, button.icon:before, .button.icon:before { margin-right: 0.5em; } -input[type="submit"].fit, -input[type="reset"].fit, -input[type="button"].fit, +input[type='submit'].fit, +input[type='reset'].fit, +input[type='button'].fit, button.fit, .button.fit { width: 100%; } -input[type="submit"].small, -input[type="reset"].small, -input[type="button"].small, +input[type='submit'].small, +input[type='reset'].small, +input[type='button'].small, button.small, .button.small { font-size: 0.6rem; @@ -1181,9 +1175,9 @@ button.small, line-height: 2.0625rem; } -input[type="submit"].primary, -input[type="reset"].primary, -input[type="button"].primary, +input[type='submit'].primary, +input[type='reset'].primary, +input[type='button'].primary, button.primary, .button.primary { background-color: #ffffff; @@ -1191,12 +1185,12 @@ button.primary, font-weight: 600; } -input[type="submit"].disabled, -input[type="submit"]:disabled, -input[type="reset"].disabled, -input[type="reset"]:disabled, -input[type="button"].disabled, -input[type="button"]:disabled, +input[type='submit'].disabled, +input[type='submit']:disabled, +input[type='reset'].disabled, +input[type='reset']:disabled, +input[type='button'].disabled, +input[type='button']:disabled, button.disabled, button:disabled, .button.disabled, @@ -1206,9 +1200,9 @@ button:disabled, opacity: 0.25; } -input[type="submit"], -input[type="reset"], -input[type="button"], +input[type='submit'], +input[type='reset'], +input[type='button'], button { line-height: calc(2.75rem - 2px); } @@ -1231,7 +1225,7 @@ button { #bg:before, #bg:after { - content: ""; + content: ''; display: block; position: absolute; top: 0; @@ -1266,15 +1260,17 @@ button { -webkit-transform: scale(1.125); -ms-transform: scale(1.125); transform: scale(1.125); - -moz-transition: -moz-transform 0.325s ease-in-out, - -moz-filter 0.325s ease-in-out; - -webkit-transition: -webkit-transform 0.325s ease-in-out, - -webkit-filter 0.325s ease-in-out; - -ms-transition: -ms-transform 0.325s ease-in-out, - -ms-filter 0.325s ease-in-out; + -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out; + -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out; + -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out; transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out; - /* background-image: url("../../images/bg.jpg"); */ - background-color: #f25d1d; + background-image: url('../../images/bg.jpg'); + -webkit-filter: blur(20px); + -moz-filter: blur(20px); + -o-filter: blur(20px); + -ms-filter: blur(20px); + filter: blur(20px); + background-color: black; background-position: center; background-size: cover; background-repeat: no-repeat; @@ -1323,7 +1319,7 @@ body.is-preload #bg:before { } #wrapper:before { - content: ""; + content: ''; display: block; } @@ -1360,14 +1356,10 @@ body.is-preload #bg:before { -webkit-align-items: center; -ms-align-items: center; align-items: center; - -moz-transition: -moz-transform 0.325s ease-in-out, - -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; - -webkit-transition: -webkit-transform 0.325s ease-in-out, - -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; - -ms-transition: -ms-transform 0.325s ease-in-out, - -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; - transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, - opacity 0.325s ease-in-out; + -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, opacity 0.325s ease-in-out; /* background-image: -moz-radial-gradient( rgba(0, 0, 0, 0.25) 25%, rgba(0, 0, 0, 0) 55% @@ -1398,7 +1390,7 @@ body.is-preload #bg:before { } #header > *:before { - content: ""; + content: ''; display: block; position: absolute; top: calc(-3.5rem - 1px); @@ -1439,14 +1431,10 @@ body.is-preload #bg:before { } #header .content .inner { - -moz-transition: max-height 0.75s ease, padding 0.75s ease, - opacity 0.325s ease-in-out; - -webkit-transition: max-height 0.75s ease, padding 0.75s ease, - opacity 0.325s ease-in-out; - -ms-transition: max-height 0.75s ease, padding 0.75s ease, - opacity 0.325s ease-in-out; - transition: max-height 0.75s ease, padding 0.75s ease, - opacity 0.325s ease-in-out; + -moz-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; + -webkit-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; + -ms-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; + transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; -moz-transition-delay: 0.25s; -webkit-transition-delay: 0.25s; -ms-transition-delay: 0.25s; @@ -1462,7 +1450,6 @@ body.is-preload #bg:before { } #header .content p { - text-transform: uppercase; font-size: 0.8rem; line-height: 2; } @@ -1509,7 +1496,7 @@ body.is-preload #bg:before { } #header nav.use-middle:after { - content: ""; + content: ''; display: block; position: absolute; top: 0; @@ -1665,8 +1652,7 @@ body.is-preload #header .content .inner { -ms-transform: translateY(0.25rem); transform: translateY(0.25rem); -moz-transition: opacity 0.325s ease-in-out, -moz-transform 0.325s ease-in-out; - -webkit-transition: opacity 0.325s ease-in-out, - -webkit-transform 0.325s ease-in-out; + -webkit-transition: opacity 0.325s ease-in-out, -webkit-transform 0.325s ease-in-out; -ms-transition: opacity 0.325s ease-in-out, -ms-transform 0.325s ease-in-out; transition: opacity 0.325s ease-in-out, transform 0.325s ease-in-out; padding: 4.5rem 2.5rem 1.5rem 2.5rem; @@ -1704,7 +1690,7 @@ body.is-preload #header .content .inner { -webkit-transition: background-color 0.2s ease-in-out; -ms-transition: background-color 0.2s ease-in-out; transition: background-color 0.2s ease-in-out; - content: ""; + content: ''; display: block; position: absolute; top: 0.75rem; @@ -1749,14 +1735,10 @@ body.is-preload #header .content .inner { /* Footer */ #footer { - -moz-transition: -moz-transform 0.325s ease-in-out, - -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; - -webkit-transition: -webkit-transform 0.325s ease-in-out, - -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; - -ms-transition: -ms-transform 0.325s ease-in-out, - -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; - transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, - opacity 0.325s ease-in-out; + -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, opacity 0.325s ease-in-out; width: 100%; max-width: 100%; margin-top: 2rem; @@ -1786,3 +1768,32 @@ body.is-article-visible #footer { body.is-preload #footer { opacity: 0; } + +.link { + border-bottom: 0 !important; +} + + +.cookie-notification { + position: fixed; + background-color: rgb(0 0 0 / 97%); + bottom: 0; + width: 100%; + color: white; + padding: 15px; +} + +.cookie-notification_hidden_yes { + display: none; +} + +.cookie-notification__header { + margin-bottom: 10px; + font-size: 18px; +} + +.cookie-notification__body { + max-width: 978px; + text-align: center; + margin: 15px auto; +} \ No newline at end of file diff --git a/assets/js/cookie.js b/assets/js/cookie.js new file mode 100644 index 0000000..5dcb63a --- /dev/null +++ b/assets/js/cookie.js @@ -0,0 +1,151 @@ +/*! + * JavaScript Cookie v2.1.2 + * https://github.com/js-cookie/js-cookie + * + * Copyright 2006, 2015 Klaus Hartl & Fagner Brack + * Released under the MIT license + */ +;(function (factory) { + if (typeof define === 'function' && define.amd) { + define(factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + var OldCookies = window.Cookies; + var api = window.Cookies = factory(); + api.noConflict = function () { + window.Cookies = OldCookies; + return api; + }; + } +}(function () { + function extend () { + var i = 0; + var result = {}; + for (; i < arguments.length; i++) { + var attributes = arguments[ i ]; + for (var key in attributes) { + result[key] = attributes[key]; + } + } + return result; + } + + function init (converter) { + function api (key, value, attributes) { + var result; + if (typeof document === 'undefined') { + return; + } + + // Write + + if (arguments.length > 1) { + attributes = extend({ + path: '/' + }, api.defaults, attributes); + + if (typeof attributes.expires === 'number') { + var expires = new Date(); + expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); + attributes.expires = expires; + } + + try { + result = JSON.stringify(value); + if (/^[\{\[]/.test(result)) { + value = result; + } + } catch (e) {} + + if (!converter.write) { + value = encodeURIComponent(String(value)) + .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); + } else { + value = converter.write(value, key); + } + + key = encodeURIComponent(String(key)); + key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); + key = key.replace(/[\(\)]/g, escape); + + return (document.cookie = [ + key, '=', value, + attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE + attributes.path && '; path=' + attributes.path, + attributes.domain && '; domain=' + attributes.domain, + attributes.secure ? '; secure' : '' + ].join('')); + } + + // Read + + if (!key) { + result = {}; + } + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling "get()" + var cookies = document.cookie ? document.cookie.split('; ') : []; + var rdecode = /(%[0-9A-Z]{2})+/g; + var i = 0; + + for (; i < cookies.length; i++) { + var parts = cookies[i].split('='); + var cookie = parts.slice(1).join('='); + + if (cookie.charAt(0) === '"') { + cookie = cookie.slice(1, -1); + } + + try { + var name = parts[0].replace(rdecode, decodeURIComponent); + cookie = converter.read ? + converter.read(cookie, name) : converter(cookie, name) || + cookie.replace(rdecode, decodeURIComponent); + + if (this.json) { + try { + cookie = JSON.parse(cookie); + } catch (e) {} + } + + if (key === name) { + result = cookie; + break; + } + + if (!key) { + result[name] = cookie; + } + } catch (e) {} + } + + return result; + } + + api.set = api; + api.get = function (key) { + return api(key); + }; + api.getJSON = function () { + return api.apply({ + json: true + }, [].slice.call(arguments)); + }; + api.defaults = {}; + + api.remove = function (key, attributes) { + api(key, '', extend(attributes, { + expires: -1 + })); + }; + + api.withConverter = init; + + return api; + } + + return init(function () {}); +})); \ No newline at end of file diff --git a/assets/js/typed.js b/assets/js/typed.js new file mode 100644 index 0000000..12a20bf --- /dev/null +++ b/assets/js/typed.js @@ -0,0 +1,11 @@ +/*! + * + * typed.js - A JavaScript Typing Animation Library + * Author: Matt Boldt + * Version: v2.0.11 + * Url: https://github.com/mattboldt/typed.js + * License(s): MIT + * + */ +(function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typed=e():t.Typed=e()})(this,function(){return function(t){function e(n){if(s[n])return s[n].exports;var i=s[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var s=0;st.length)););var u=t.substring(0,e),l=t.substring(u.length+1,e+i),c=t.substring(e+i+1);t=u+l+c,i--}s.timeout=setTimeout(function(){s.toggleBlinking(!1),e>=t.length?s.doneTyping(t,e):s.keepTyping(t,e,i),s.temporaryPause&&(s.temporaryPause=!1,s.options.onTypingResumed(s.arrayPos,s))},n)},n))}},{key:"keepTyping",value:function(t,e,s){0===e&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this)),e+=s;var n=t.substr(0,e);this.replaceText(n),this.typewrite(t,e)}},{key:"doneTyping",value:function(t,e){var s=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),this.loop===!1||this.curLoop===this.loopCount)||(this.timeout=setTimeout(function(){s.backspace(t,e)},this.backDelay))}},{key:"backspace",value:function(t,e){var s=this;if(this.pause.status===!0)return void this.setPauseStatus(t,e,!0);if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var n=this.humanizer(this.backSpeed);this.timeout=setTimeout(function(){e=o.htmlParser.backSpaceHtmlChars(t,e,s);var n=t.substr(0,e);if(s.replaceText(n),s.smartBackspace){var i=s.strings[s.arrayPos+1];i&&n===i.substr(0,e)?s.stopNum=e:s.stopNum=0}e>s.stopNum?(e--,s.backspace(t,e)):e<=s.stopNum&&(s.arrayPos++,s.arrayPos===s.strings.length?(s.arrayPos=0,s.options.onLastStringBackspaced(),s.shuffleStringsIfNeeded(),s.begin()):s.typewrite(s.strings[s.sequence[s.arrayPos]],e))},n)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(t,e,s){this.pause.typewrite=s,this.pause.curString=t,this.pause.curStrPos=e}},{key:"toggleBlinking",value:function(t){this.cursor&&(this.pause.status||this.cursorBlinking!==t&&(this.cursorBlinking=t,t?this.cursor.classList.add("typed-cursor--blink"):this.cursor.classList.remove("typed-cursor--blink")))}},{key:"humanizer",value:function(t){return Math.round(Math.random()*t/2)+t}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort(function(){return Math.random()-.5}))}},{key:"initFadeOut",value:function(){var t=this;return this.el.className+=" "+this.fadeOutClass,this.cursor&&(this.cursor.className+=" "+this.fadeOutClass),setTimeout(function(){t.arrayPos++,t.replaceText(""),t.strings.length>t.arrayPos?t.typewrite(t.strings[t.sequence[t.arrayPos]],0):(t.typewrite(t.strings[0],0),t.arrayPos=0)},this.fadeOutDelay)}},{key:"replaceText",value:function(t){this.attr?this.el.setAttribute(this.attr,t):this.isInput?this.el.value=t:"html"===this.contentType?this.el.innerHTML=t:this.el.textContent=t}},{key:"bindFocusEvents",value:function(){var t=this;this.isInput&&(this.el.addEventListener("focus",function(e){t.stop()}),this.el.addEventListener("blur",function(e){t.el.value&&0!==t.el.value.length||t.start()}))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor||(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)))}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,s){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e":";";t.substr(e+1).charAt(0)!==i&&(e++,!(e+1>t.length)););e++}return e}},{key:"backSpaceHtmlChars",value:function(t,e,s){if("html"!==s.contentType)return e;var n=t.substr(e).charAt(0);if(">"===n||";"===n){var i="";for(i=">"===n?"<":"&";t.substr(e-1).charAt(0)!==i&&(e--,!(e<0)););e--}return e}}]),t}();e["default"]=i;var r=new i;e.htmlParser=r}])}); +//# sourceMappingURL=typed.min.js.map diff --git a/atom.xml b/atom.xml new file mode 100644 index 0000000..abad947 --- /dev/null +++ b/atom.xml @@ -0,0 +1,9097 @@ + + + خبرنامهٔ نرم‌افزاریِ SoftwareTalks +ما مهندسایِ نرم‌افزار و علاقه‌مندانِ کامپیوتر هرازگاهی با مطالبِ جالبی برخورد می‌کنیم که می‌تونه به دردِ بقیه هم بخوره.در حال حاضر، هر پنجشنبه خبرنامه ارسال میشود + +2022-09-20T20:09:53+00:00 +https://twemoji.maxcdn.com/2/72x72/2709.png +urn:uuid:025f73b5-0187-b380-887e-05c9b449766c + +شماره خبرنامه 8.html + +urn:uuid:cfbf364d-5e9e-e902-daad-11e73f7dec92 +2021-02-25T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۸</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۸ - پنجشنبه، ۰۷ اسفند ۹۹ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>بسته شدن یک باگ در موزیلا فایرفاکس ۱۷ سال پس از اولین گزارش</b> </li> + <p> این صفحه شامل مکالمات کاربران و توسعه دهندگان فایرفاکس است که نزدیک به ۱۷ سال طول کشیده است. خواندن این + رشته مکالمات کمکی است به دریافتن نحوه گزارش، پیگیری، و نهایتا حل شدن یک باگ در نرم افزارهای متن باز. + <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/JYE3rlo9VzhxNyJRa33vjKRX8nvS-LkjG6aGaLMLTOHL9Ih2BcdZTfRsuRIa2pfF2jecapGebkNAdlopm2EXQYDpkStNobeKlnaRVpnlDcPBt1o-Q4frUMed7nankf6CkxZHVixNgGl613MrKhnFU3Dzfq1ScteYS-Q0VnyBwQKggtklvGclZ1eNzIJVYJGi1eSYCQ" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>وقتی می‌زنید گوگل دات کام، دقیقاً چه اتفاقی می‌افته؟</b> </li> + <p> بخشی از مقاله: مدار یواس‌بیِ صفحه‌کلید از طریق یک منبع تغذیهٔ ۵ ولت که از طریق پین یکِ USB host + controller کامپیوتر تأمین می‌شه تغذیه می‌شه. keycode تولید شده با کمک مدار حافظهٔ داخلی صفحه‌کلید در + رجیستری به اسم endpoint ذخیره می‌شه. USB host controller، تقریباً هر ۱۰ میلی‌ثانیه محتوای این رجیستر رو + چک می‌کنه و در نهایت keycode ذخیره‌شده رو می‌خونه ... . این مخزن تلاش می‌کنه به این سوال رایجِ + مصاحبه‌های استخدامی با سطح جزئیاتی فراتر از انتظار (و احتمالاً‌ سوادِ) مصاحبه‌گرها پاسخ بده! <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Th8NVLfUNNkXG4RFfrzw4fWeOgGGSALJOW5SU9sUns9c04AXR8KLgsWb8en1itrYrpzj1FaFx-VJEf0xKZAKsdphLI0k9-YQ9UdhbKk3mHkDT039Js9-8CiHAVngnQHoek7P9mMFlLwGN5Dz2UNkPzOEC1-xMfL2-EufSBFrnbDZhCnJltBLdQ" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>۱۲ فاکتور برای نرم‌افزارهای مدرن</b> </li> + <p> توی این مقاله که تقریبا میشه گفت مقاله معروفی هم هست، ۱۲ تا فاکتور برای توسعه و ساختن نرم‌افزار گفته که + کمک میکنه برنامه‌های ما راحت‌تر در محیط‌های ابری اجرا بشن و اصطلاحا قابل جابجایی در محیط‌های مختلف با + کمترین هزینه باشن. این مقاله رو تیمی از توسعه‌دهنده‌های Heroku نوشتنش. حتی اگر از کلود متنفرین و دوست + ندارین دربارش چیزی بخونین، بازم به نظرم خوندن این مقاله میتونه براتون چیزای جالب دیگه‌ای هم داشته باشه و + سرنخ‌های جدیدی برای مطالعه بهتون بده <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/VbIfUDMKx6JTDFwsr5x8xgcyKDVI97PIGAm2q8-9qm72CBH94CYsAGvkNTRiBg1oAq3MvtNVf4JEG55UNajFR9Ci78szST8JqMHo0nHLHBX6TijcPgzUo8Zbpe0K7BAO8d2zV81v8Gfp8WDQpgJgTTGE" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>Effective Git as a solo developer</b> </li> + <p> نکاتی ساده ولی کاربردی برای استفاده بهتر از گیت. مقاله شامل راهکارهایی برای داشتن یک ریپوزیتوری با + تاریخچه‌ای تمیز و قابل ارجاع است. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/L_R65xJVQ1hv-0RKAs2MVveBnDAd-JEek9LqD55V5KzV--kkw7ufimIhFWYlXV8YveoQjIypDwBu_OpukMGcA-4I9PHl6IS_Ni3DbXSFFXYEsi3E8MHHoyAJZNpnOsNGYZY90BHmRvJRJa0oKZ-5VJdoKPylb87jFa1HYhtsAi-JwwJ0fFmDaGI8efLgOnR7PmsEzRg-BppfPv8DkPtRoP0" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>لیست دروس مرتبط با اخلاق و تکنولوژی</b> </li> + <p> به نظرتون لازمه که دانشجوهای مهندسی و علوم کامپیوتر هم کمی از علوم انسانی مثل فلسفه و اخلاق، مطالعات + اجتماعی و حقوق بشر بخونن؟ تاثیرات اخلاقی و اجتماعی تکنولوژی به حدی واضح و مطرح شده که خیلی از دانشگاه‌ها + شروع کردن به انطباق و ارایه‌ی درسهای علوم انسانی برای دانشجوهای مهندسی. این یه لیستیه از این کلاسا، + منابع و ویدیوهای بعضی کلاسا هم موجوده. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/6VWysVQlSOLglCRwm3S7imqGT0TUCGnGS92jC09oX18ro5TCQKX5F1fQnkwbPxdUmJ0rCilxTWbAxqvDwww9p5UuzQF1huOl-qIWTOvD1sDqRiwcxGHk-FlqhO63M2CxfGkuooossrFEwFys0HHkmWXYxy7a9BMvWehoz5cfaGL_1LSG7k5MIRhziy6u8_CQhDhrkWC3Qax86gC-vV52Hcs8wglsB65o9qEN1kUXCcVImfOLsCEIrMhwKPp2Yrfi8OgiZOM" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>حسن شهبازی،</b> <b>سید ایوب کوکبی،</b> <b>امیرحسین بقایی،</b> <b>رویا + پاکزاد</b> در تهیه محتوا کمک کردند. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=R9XnhwxUV6PFSwKa3coYSMfYTzvIi4gr3LW8BC0daDjEFM1JTW-3UVeYf8LlIg6oLgB3pZqSZVEy2GPvDgtkVx1OvB9hMSj_tpdvVji9fxCQaEYy3__XLNEa67ZsH0om5hj8DP15EghkcAiylAcVg-wRakxMxSri6JUchDQbJi89VxW32VjZ3V_V3rsEQJq2mWFs46cfBkxI6Wg7aONmr9XQMA" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/8D4_t808gtBDyImqg3OClraZvVT9riOIApTsaXXbXFo5I20oWVqoO6bLobwm73LSrtKVuv_kdxo5BInWaIhNp38Do-eMqiLOBw0oQ8WCVji-rnOX-hlx1679K42U4XzRC0HISXdHz2c-VsNFARdV" + sib_link_id="5">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/WE2GrFp2OnakH4Bj-IzoO9P2rJi7A6Ey3LumCB0ZUhUwAygj0OBdAq7gitKjUR9ojcv39tPVjqj0QjoI08zn8d9RcDW7Y9xcvXoo58NITI8Nn2TbhqLpIPlBX-gibWNEFRXG9apWgc85m2UJJskp" + sib_link_id="6">سرویس پاکت</a> اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید </p> + <hr /> <br /> + </span> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 12.html + +urn:uuid:44686e9f-d8d8-12c0-d2e8-ed8954d00302 +2021-04-23T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱۲</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱۲ - جمعه، ۰۳ اردیبهشت ۱۴۰۰ </h3> <span> + <p style="text-align:center">در خبرنامه قبلی به‌دلیل <a + href="https://r.t10.pktsrv2.com/mk/cl/f/kXHsbnA3ZnSt9F6GJ-3Jn2ATwU2IUW4iBP7yQQKO75tGE4PUnoZmXpk3lXa8Yz06oSsALZS4LZsQdwo8MymY1ND0PvkscJ1Rbi44W_WEDSz62oBmWLETU76sAouSlH4XXKPJ1B5rQF6OMrsVPDcT5rEBTVwlYuyHnKFFUU7pZ9bX7JPueqkK1vUpFtPSqB61BG606SIIvcS2" + sib_link_id="0">باگ نرم‌افزاری</a>، شماره خبرنامه به اشتباه ۱۴ نوشته شده‌بود که در حقیقت خبرنامه + شماره ۱۱ اُم بوده </p> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>انکود/دیکود کردن داده‌های بزرگ ‌جیسون به‌وسیله استریم در پی‌اچ‌پی</b> + </li> + <p> در این مطلب، نویسنده تجربه خودش از کار با خواندن و نوشتن در یک فایل بزرگ JSON رو به وسیله Stream ها + در PHP مطرح میکنه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/wBl1GsY3lhJ1wwGZE0rHJL-x0g4_QpQ7TiyGCp9Y7iOhK_-yWyl0WCvf2PxrA-kGiuadCRbnpE3vRzVAPrVSUq4qIOSFuatm_xUlF0rOV8pQ7H8MtnCaR-r-ZVqdtDa3zZzCdiYmaO4GT7uf-WXF2K0bKXtk59sVSoXgoZPPbmU-EQ8EKbADukMg2XgPetEt0ppwg-oGeTfIvV3mWUB5KGEGFR0zHdnKu4D4sUvyjQNYnQlKMFCU2cwT7jliPy43dWOHFnDfFNGQbswL74CCCvap" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>توسعه ای‌پی‌آي | راهنمای مقدماتی</b> </li> + <p> اکثر اپلیکیشین های جدید از ای‌پی‌آی ها برای ساختن هسته اپلیکیشین خودشون استفاده میکنن که رابط های + گرافیکی روی اونا ساخته و پیاده‌سازی میشن.اگه تا حالا ای‌پی‌آی توسعه ندادین یا به دنبال تجدید مهارت + در مهارت های توسعه ای‌پی‌آی خودتون هستین، این مقاله نکات خوبی رو برای شروع میتونه بهتون یاد بده. + <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/yql0JMJ6PRLiaghAIFWL3BkVKldQbsX03fKStFXfnRaIze4ikCLATjTEON5JSQBEdlJYwX1xPIk7w656GzpmKUN3eeeN2nvey9fHmDdL575BvwQe9GCtas4vo4HfhPgvbUP2fVQoqd8lAFkpjtXvr14eY3X0m7zFj1L4E4Fh68vx5mmovjhN8xYniAHcI-D4V3WrossLtXx9x_3j1f4v" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a> + </p> <br /> + <li style="font-size:18px"><b>پستگرس چگونه کار می‌کند؟ جلسه دو - جدول‌های سیستمی</b> </li> + <p> در قسمت قبل به اینکه از وقتی پستگرس کوئری را بصورت متنی دریافت می‌کند تا وقتی خروجی را میدهد چه + اتفاقاتی می‌افتد. در این قسمت به این می‌پردازیم که پستگرس اطلاعات ساختار جداول و توابع را چگونه ذخیر + می‌کند. برای دنبال کردن این قسمت نیازی نیست قسمت اول را کامل خوانده باشید. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/WkS4jLa-uT6YVuiFampJkQrME8zfUnq7CE9RfK3kK5uz0PhvE8lxKT7wmMlUaGu9LDQ98PUzNoV8WtOFGv1Q7sNlVfEn-8-nid_QHNA2UMk1hTaxp-emwoUhRg2IAie-8cEneuaoZREIoLRFv8Tlu50g_A" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>سوال و جواب های مهمی که در جلسه مصاحبه موقعیت دیتاآنالیست از شما پرسیده می + شود</b> </li> + <p> اگر سایت های استخدام رو نگاه کنید موقعیت های شغلی حوزه ی دیتا تعدادشون در حال زیاد شدن هست و اگر + میخواید برای این موقعیت ها درخواست مصاحبه و استخدام بدین این سوالات رو حتما بدونید <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/dVtSYKqd1YgKThOMSQjXGrlqfNCaJwNuSjscHbdXNZ1B3dq_QwVwc88j47V2Hm5xDZ_rM5OhB2X7xcGbrbdDV6JkFzdOi63LnnJx7payIJ7R4fBqrnuXw7Fer5wmBg60KS6dRAJrXeJv0o89YGsMMDBevMHXLJnUhTSZktrTkWHekYoYYeisfyzZhtukkfVLnOW47eycCPtX1Vo8uRmTlzv2lzW4IodK3w" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>ابداع روشی جهت بهبود در مدیریت حافظه لینوکس</b> </li> + <p> در این پست نویسنده ابتدا اشاره به LUR و روش مدیریت حافظه در کرنل لینوکس می‌کند. سپس، در مورد یک پچ + جدید که این روش را بهبود داده است توضیحاتی ارائه می‌کند. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/m-fruQqZPL0YYtKtTqcwV_Qx02ifz3IVO9ePGkXu2kiIsrP2b0tEWHj37TVal3dyXvStQcOythJGO_asWgcuMzUCEt6hdXqWcTP53KSlVIpNodN9W47_46n3-doXh-9IlIJuBKh6HKlN0_bnEwc_IDmj_X2BSroxTp_nsrZfegc9" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>مقایسه API با WebSocket و WebHook : کدام یک را انتخاب کنیم؟</b> </li> + <p> در هر برنامه‌ای که استفاده می‌کنیم، به یک مکانیسم قابل اتکا برای برقراری ارتباط بین اجزای آن نیاز + داریم. به عنوان مثال در برنامه‌های وب، باید بین مرورگر و سرور ارتباط برقرار کنیم. در این مقاله قصد + داریم در مورد چگونگی عملکرد API و WebSocket و WebHook و اینکه چگونه مناسب‌ترین روش را انتخاب کنیم، + بحث کنیم. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/lUuu6S6YdlTP1FvbF2ImVEOkXWHCiqDYxmUtRNQD7eR-MLut61ScVkX7OOiJTHNAL_5pozMsAfPGfD_aod-J7JJGoYIabrJpSQWLfZYDWeTOJKU9NfjXGMVNxz0O6jJ6GewEAr3Z3WR7CGcTWELOMZgyogVyKCs1jKnj9hy1a8BXpibcRe-PULbvw-PNQri_dwuyPloDD7CA3BFE94pdbo3tT9U5vF8T" + style="font-size:14px" sib_link_id="6">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این + شماره از خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>علی الیاسی،</b> <b>هادی مشیدی،</b> + <b>امیر شکری،</b> <b>حسن شهبازی،</b> <b>علی کرباسی</b> در تهیه محتوا کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/a0jiFKqyqd1eduDedbdtBJH3dsPDSV9v5BgNYERh7fUORyHioeO1QzcNMW6LegLOX-hbhhVxCUpooyHt2qq402nE7swXAL97KYidVUyEsHzNBN8ZTH0r-c6mvlEAEVapS_3MYbhQNPHoftl0tC5aaXL0r13iAZlwZ-kEgieJXX_QoSyEPf7yOvORFLAHQQ" + sib_link_id="7">مشارکت کنید</a>. + </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=4xRMEBorEeQSJcjM1V03vIhnSBaEpuaZ-LdSJY6z22VRzp2E-yUYxVMs2bQzB_n1HuAAOah2QCK4ud8T066kou3haA9dPpBqrh9TzRoVlNI4wYVRIYFfq2iqV47oGNuWPgDhuK7I-2YDVOsBBTKryg2_Bl9BAVErMGASVtL_9qUDt4GyAwm5R5kttfRqucJft6_vLYVMLFH_TEnzoasfctdZVg" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/RVndSVcAf-U5Z1nxSJOPk5xvOa_pNgblascTCebCm3KcGhUV6eDv9W7YwIw52LewhusOhglYicClFMV_PJ5kJP8atP91FqeiCVguBkWf6ZvR4S5ruoEn-VWBijMvP5_C5hf3lMecVlpjN4Fe5RWs" + sib_link_id="8">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/vN2MlX18YDMt8iYRwGwip5toQNuorVjDEXU37nF5IKd7hbNWjNJCL8E2BLyPAQnZgltITDFSTPiJ9LgNvu-Hu9sf_J4fPWakcGI_evlLiDakUMInzlB6xNN1qBZY9KbMyLAnJz6ZSm5y4ZycGNOs" + sib_link_id="9">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + <hr /> <br /> + </span> + </span> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 17.html + +urn:uuid:2fd2380d-63c7-3046-392d-69ad9bc93320 +2021-05-27T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱۷</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱۷ - پنجشنبه، ۰٦ خرداد ۱۴۰۰ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>زیرساخت تغییرپذیر در مقابل زیرساخت تغییرناپذیر</b> </li> + <p> اگر در حوزه زیرساخت و مدیریت سیستم‌ها کار میکنید، شاید شنیدن این موضوع اگر تا به‌حال نشنیده باشیدش، + بهتون توی طراحی سیستم‌ها و فرآیند‌ها کمک کنه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/6eskelQcMxM4M0koSU8trdM1naIGXLsINLP8ZnmE9vMRNJ_KesdDoqA-feka-kmf10W97TGXlr2UkKLNQu2iFzakM1BCVlFFZsVSeWY0Q1ZMCn92RrCypww_Us1YwsBS4vcZJJ8RH9HI4EEqH-EjtF9BdXqhaVFkhOJfhdkBEEE8ml89XOGr8QuKRHMGhvx7FKypCLLEbaxOi40HeKtF5hu_TPYrQ-LvE4WzIcOGrA" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>بررسی هدرهای امنیتی وب سایت شما</b> </li> + <p> به کمک این وب سایت می‌توانید وضعیت هدرهای امنیتی وب سایت مورد نظرتان را بررسی کنید. این سرویس، سایت شما + را بر اساس هدرهای موجود رتبه‌بندی می‌کند و می‌توانید ببینید چه هدرهایی را فراموش کردید. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/fsnnFI3mcZJG-_Pi7mQ0_d84cbzCLyHlKHK3bhIGavCCiu8fZnAP9F4fRziWj4vBLhY6_jNGCl-po9p3Tx6BiG_9tGWOIaTd5iqu72fBUbru4ihKGeBqQOr0Jnbygbz3eouobCC6mpHzTT1ztrvRmgO3Vb3hR8WFcaY" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>دوباره چرخ رو اختراع نکنیم</b> </li> + <p> احتمالا خیلی جمله ی دوباره چرخ رو اختراع نکنیم رو شنیدیم ولی وقتی به دنیای برنامه نویسی و توسعه نرم + افزار می رسیم این موضوع خیلی مهم تر میشه و کلا این بحث استفاده ی مجدد با دیزاین پترن ها پر رنگ تر شده + این مقاله ی خیلی کوتاه اومده چندتا تکنیک ساده رو گفته که به این نتیجه برسه چرخ رو نباید دوباره اختراع + کنیم <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/AXow7BE3ljrQBqZSai1Mn1xqG8f5rwPZA-Q7t8QD-oZUKOYpJw8V-TsW8cJtGFPOwPFkNuXKOrtQ7ah4MdDrrrLBhOEf47dPUtFJfkigAJPkof0vBcdwJqat0RgOtH_lwzRXi9EcGPHEKDmFsL4xrGsyIa8enANEQH_3PNro1UCZ3aqKqZ12g86iGOAet8E_MPSeBcMA0HL62cl_UAI" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>لیست کتابهای برگزیده جذاب با محوریت Performance در استک دات نت</b> </li> + <p> بهینه سازی عملکرد اپلیکیشن بسیار اهمیت دارد و به عوامل متعددی مانند معماری اپلیکیشن، طراحی و روش پیاده + سازی آن (نوع کد نویسی) بستگی دارد. قبل از هرگونه اقدامی ابتدا باید ناحیه ی مورد نظر برای بهبود را مشخص + کنیم و تغییرات را تنها بر اساس نیاز های خود اعمال کنیم . <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/IbPd6Yrw8QHmrm9vtGyOVKioMvWoP0buTFKlTMrxCC_RV5Y2V0ukH-vK5FF-fs_9gC9K6fx8eaeTH5jZAul2fIm7MoI2g9wZGY5AihW152Ltxo62EbRO6b-FkkVsrPvrWmIGMttCcYMSvFKhTAXcRVVV0g" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>لیست ها در پایتون چگونه کار میکنن؟</b> </li> + <p> ما همیشه از زبان های برنامه نویسی استفاده میکنیم تا کارهامون رو انجام بدیم اما تاحالا با خودمون فکر + کردیم که خود اون ها چطوری کارهاشون رو مدیریت میکنن؟اینجا ما بررسی میکنیم تا ببینیم پایتون چطوری لیست + هارو مدیریت میکنه <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/WAf5T37ZHEXQ7f7eXH4UXX3YBwBHn2H9dfsdk-IDgJz6mX09uPDYI83h_ukI34Pq1H1PebINhiV3sbR5uYpM0sxQUyeFE2F7bh6N0SjTgUp86uOFnVjPF_oMNc0lFjg9TSVjWkxV96F3QbjmAWulQ24yrQ" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>حامد سعیدی،</b> <b>امیر شکری،</b> <b>Amir + Mokarchi،</b> <b>سید مهدی موسوی</b> در تهیه محتوا کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/R8EGTpm0zBIci-zXnCjNm0qy0m5e_c6fy7ekZrRmXegk6PPyriEhtTutUDIrPm8D2BU1b-v8n6z6wmuvTmyLg7h3dJ2fqyMOpMKTHU8_RLQP51wScz8YHiAYuxl8OHOl-BKpe-HBzmk2vs97BIMSCxIZAo78EdDpl5lHGbJaKN81DLjZYfRe9x7xfS4KrzA" + sib_link_id="5">مشارکت کنید</a>. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=j37M0qeLbPkrXfreqnnPUICDn-nroY4OdPTRzrd-ntggIkMlucvx3XZ4qevvGM1vt3G1RdgeH11rVvmb1VM5kFfNDJ-vFlAmRLmtMEyPWQ5RGeeCeVokHC5sbPnITGpwn8j3hDFqnw9Jfqge9ioZ57xADFcdkpQr0qZC4nqrtVAt2qeICHVfl37j_YHGRJH4Sc56sWp6fXc5YAxPF8Jqt3O5nA" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/HvTCq-d4iSPUxA3S8QL1r4Zdbbn_Uee9IB8WcpcmiRTpfBbsgB7Nv-5Z8QtwT_IjhSTRi1OMFX-pk24aGsnU-0TPLVgfqloAYwSoyb-b6Q76F4dmkYUolfS0B6l-bNK84fF0d9Gxnbo3WncwFndHAA" + sib_link_id="6">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/PVzR9qKHPT-X_O4f9EnAbkkQ2NO3nHSZyj7w9i0W9GX-zYRIDkq3TzE4UD1Zcv9D8rEs-YJ9pjUpWyOZWLGnga3XodcnNuHC26tirPtyYZuFxxrPUJCofaPL9Rdys6BVHNz80rKNxg8f-2G2pPf1yg" + sib_link_id="7">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 55.html + +urn:uuid:c81d3624-507f-2913-c4c1-9c7b2b34b222 +2022-06-30T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۵ - پنجشنبه، ۰۹ تیر ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://helm.sh/docs/topics/library_charts/"><b>جلوگیری از تکرار مانفیست‌های کوبرنتیز</b></a><br/>احتمالا بارها پیش اومده که احساس کردید دارید مانفیست‌فایل‌های کوبرنتیزتون رو تکرار میکنید و کارتون به کپی پیست افتاده و اعمال تغییرات خیلی کوچیک برای هر پروژه، اگر به همچین حالتی افتادین و با مفهوم library chart ها آشنا نیستین، احتمالا دوای درد شما اینجاست. اگر میخواید فایل‌های مانیفست کوبرنتیزتون رو DRY کنید حتما به این قابلیت Helm یک نگاه بندازین + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://eng.uber.com/usl-ubers-unified-signup-and-login-stack/"><b>معماری ثبت‌نام و ورود در اوبر</b></a><br/>در این مقاله از وبلاگ مهندسی اوبر، درباره USL یا Uber&#039;s Unified Signup and Login و چالش‌ها و معماری آن صحبت می‌شود. در پایان هم کمی از نقشه راه USL صحبت شده است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://timdeschryver.dev/blog/feature-flags-in-net-from-simple-to-more-advanced"><b>Feature Flag در دات‌نت</b></a><br/>این مقاله ضمن معرفی ایده‌های پایه‌ای Feature Flag به نحوه پیاده‌سازی در دات‌نت از حالت ساده تا کمی پیشرفته‌تر می‌پردازد + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 42.html + +urn:uuid:8d40450e-7308-0b66-d788-8a070230166e +2021-12-09T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۲ - پنجشنبه، ۱۸ آذر ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://youtu.be/LdOe18KhtT4"><b>ارائه فلیکر درباره همکاری تیم‌های اپریشن و دولوپ</b></a><br/>احتمالا درباره DevOps تا حالا مطلب زیاد خوندین ولی هیچی به اندازه خوندن تاریخچه هر چیزی به آدم در درک چیزها کمک نمیکنه. چرا چیزی خلق میشه و چرا چیزی وجود داره در حالی که میتونست نباشه؛ این ارائه مهندسان Flicker تقریبا جزو اولین جرقه‌های مفهوم DevOps در زمان خودش یعنی سال‌ ۲۰۰۹ بوده. دیدنش حتما پر از نکات خوبیه که میتونه بهمون کمک کنه در درک DevOps + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://road-to-php.com"><b>خبرنامه ده روزه‌ی آشنایی با php 8.1</b></a><br/>با عضویت در این خبرنامه، تا ده روز، هر روز با یکی از تغییرات php در نسخه‌ی 8.1 آشنا می‌شوید. به گفته‌ی سازنده، بعد از پایان این ده روز، ارسال خبرنامه متوقف می‌شود و ایمیل شما هم جایی ذخیره نمی‌‌شود. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.gimtec.io/articles/what-is-better-recursion-or-iteration/"><b>حلقه‌تکرار بهتر است یا بازگشتی؟ بررسی عمیق تا لایه سخت‌افزار</b></a><br/>نویسنده در این مطلب سوال ساده‌ای مطرح کرده ولی برای پاسخ به این سوال ساده تا عمیق‌ترین لایه‌های سیستم‌ پایین میره تا خیلی عمیق‌تر بفهمیم که در واقعیت داره چه اتفاقی میفته وقتی که یک کار رو به صورت بازگشتی انجام میدیم یا به صورت حلقه‌ تکرار + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://armansolutions.com/blog/2021/12/03/%da%86%d9%86%d8%af%d8%b2%d8%a8%d8%a7%d9%86%d9%87-%da%a9%d8%b1%d8%af%d9%86-%d9%88%d8%a8-%d8%a7%d9%be%d9%84%db%8c%da%a9%db%8c%d8%b4%d9%86-%d9%87%d8%a7/"><b>چندزبانه‌ کردن وب‌اپلیکیشن‌ها بدون درد و خونریزی</b></a><br/>در این مطلب، خانم زهرا کبیری از تجربه چندزبانه کردن وب‌اپلیکیشن‌ها نوشته‌اند و توضیح داده‌اند چطور این کار به نظر ساده، برای خودشون و تیمشون چالش برانگیز بوده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/@iqan/releasing-flutter-ios-app-to-testflight-using-xcode-21571299dbc3"><b>انتشار اپ فلاتر در testflight برای ios</b></a><br/>اگر نیاز دارید برنامه هایی که نوشتین رو روی گوشیتون تست کنید حتما testflight رو استفاده کنید اینجوری قبل از نهایی کردن می تونید به بقیه هم برنامتون رو برای تست ارسال کنید؛ در این نوشته روش انجام اینکار رو مرحله به مرحله مطالعه کنید ... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/gjam/php-backend-with-flutter-13e3f4b11e6c"><b>بکند پی اچ پی با فلاتر</b></a><br/>این نوشته ی خیلی کوتاه بهتون کمک میکنه که برنامه فلاتر خودتون رو روی یک وب سرور پیاده سازی کنید + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/apis-with-valentine/api-load-testing-performance-testing-with-postman-does-it-really-work-1a2910c69c03"><b>تست بار و پرفورمنس با ابزار پست‌من، آیا واقعا امکان پذیر است؟</b></a><br/>خیلی از افراد دوست دارن از پست‌من برای تست پرفورمنس API های خودشون استفاده کنند. متأسفانه Postman برای این کار طراحی نشده و فاقد ویژگی های اصلی مورد نیازه. بیایید بررسی کنیم که چرا پست‌من ابزار مناسبی برای این کار نیست. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>امیرحسین مجیری،</b> + + + <b>پویا شریفی،</b> + + + <b>امیر شکری،</b> + + + <b>علی الیاسی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 26.html + +urn:uuid:a5e60dc8-c6b1-8655-3f26-5d93107b321b +2021-07-29T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۲٦ - پنجشنبه، ۰۷ مرداد ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/1zeST"><b>راهنمای رعایت حقوق دیجیتال کاربران برای شرکت‌های فناوری: شفافیت و پاسخگویی</b></a><br/>با وجود همه‌ی نگرانی‌ها در مورد اینترنت در ایران، هنوز هم راه‌هایی هست که شرکت‌های نوپا تا جایی که میتونن به حقوق کاربرانشون احترام بذارن و شفافیت و پاسخگویی رو سرلوحه‌ی کارشون قرار بدن. این پست شامل توصیه‌ها و دفترچه‌ی راهنماییه که بر اساس شاخص رتبه‌بندی حقوق دیجیتال نوشته شده.  + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://blog.scrum.ir/2021/07/context-is-matter/"><b>چرا نباید هر چیزی که در کتاب و مقالات می‌خوانیم اجرا کنیم؟</b></a><br/> این روزها ما شاهد گسترش خیلی خیلی زیاد و یکباره ترجمه مطالب انگلیسی به فارسی در تمام رشته ها و بخصوص حوزه مدیریت هستیم، مطالب بسیار زیبا که کاملا به نظر اجرایی و مفید میایند. مطالبی که از دل دنیای واقعی آمدند، کارآمد هستند، و تنها کافی است ما آنها را یاد بگیریم و اجرا کنیم: مثلا چگونه به کارمندان بازخورد بدهیم، چگونه تیم بسازیم، چگونه افراد را مدیریت کنیم، چگونه در تیم ها تعامل نماییم… اما مشکل کجاست؟ مشکل اینجاست که زمینه یا فرهنگ خودمان را در هنگام اجرای این ایده‌های مترقی کاملا نادیده می‌گیریم و فرض بر این هست که هر ایده‌ای در هر جایی قرار است کار کند. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://wikicensorship.github.io/fa/docs/measure-internet-censorship/"><b>دانشنامه ای آزاد برای بررسی سانسور اینترنت (فیلتر و تحریم)</b></a><br/>دانشنامه ای آزاد و در حال توسعه برای بررسی تخصصی سانسور اینترنت که در آن می توانید بیاموزد چطور فیلترینگ و تحریم را با دانش و یا بدون دانش تخصصی تشخیص دهید. مطلب های منتشر شده تاکنون: الف)آموزش ساده تا پیشرفته ی OONI. ب)سانسور در ارتباط DNS. ج)سانسور در لایه‌ی شبکه و انتقال. د)سانسور در لایه‌ی کاربرد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.youtube.com/watch?v=NivpAiuh-s0"><b>برای ویندوز 11 کامپیوتر جدید نخرید!</b></a><br/>همانطور که می دانید ویندوز ۱۱ با سخت افزارهای قدیمی به صورت پیشفرض سازگار نیست ولی در این ویدیو که توسط تیم LTT ساخته شده است، نحوه نصب ویندوز ۱۱ روی سخت افزارهای قدیمی توضیح داده می شود. اگر قصد نصب کردن ویندوز ۱۱ را دارید حتما این ویدیو را در یوتیوب مشاهده کنید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/amirshnll/naming-cheatsheet"><b>قواعد نام گذاری توابع و متغیر‌ها در جاوااسکریپت</b></a><br/>ترجمه ی فارسی naming cheatsheet را در این لینک بخوانید اگر مشکلی در ترجمه بود با مشارکتتون این ترجمه را کامل‌تر و خواناتر کنید + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>رویا پاکزاد،</b> + + + <b>Rahmanism،</b> + + + <b>سید حسین درواری،</b> + + + <b>علی کرباسی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 60.html + +urn:uuid:66e75f4a-4bef-05ea-9ce0-8feec372df82 +2022-08-05T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ٦۰ - جمعه، ۱۴ مرداد ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="http://olafurw.com/2019-01-27-programmer-advice/"><b>توصیه‌هایی برای برنامه‌نویسان تازه وارد</b></a><br/>این آقا زمانی در توییتر از برنامه‌نویسان خواسته تا اگر توصیه‌ای برای برنامه‌نویسان تازه‌وارد دارند بنویسند. بعد ۷۰۰ پاسخ به درخواستش، پاسخ‌ها رو دسته‌بندی کرده و چند نکته مهم و تکرار شده را در این پست وبلاگ اشاره کرده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://matt-rickard.com/squash-merge-or-rebase"><b>Squash، Merge یا Rebase?</b></a><br/>این یک نوشته بسیار کوتاه است. وقتی از git برای کنترل نسخه‌های کد استفاده می‌کنیم موقع ادغام branchها معمولاً سه گزینه داریم. در این نوشته درباره این سه گزینه و تفاوت و روشی که نویسنده ترحیج می‌دهد صحبت شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.marcobehler.com/guides/load-testing"><b>راهنمای Load Testing</b></a><br/>این راهنما برای درک چگونگی اجرای درست Load Test و اینکه چه داده‌هایی در حین تست جمع‌آوری می‌شوند و چه تفسیری از آن‌ها می‌توان داشت قابل استفاده است + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 24.html + +urn:uuid:6f811b39-21e1-4636-2000-463c0566c43f +2021-07-15T00:00:00+00:00 +<!DOCTYPE html> +<!-- saved from url=(0044)https://my.pakat.net/camp/showpreview/id/115 --> +<html dir="rtl" lang="fa"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + </head> + <body style="max-width: 680px; margin: 0 auto"> + <div style="text-align: center"> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) + format("truetype"); + font-weight: 400; + } + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) + format("truetype"); + font-weight: 700; + } + ul { + padding: 0 25px; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 50px; + } + </style> + <br /><br /> + <img + alt="Softwaretalks" + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + style=" + margin: 2.1em auto; + display: block; + width: 130px; + border-radius: 5px; + " + /> + <h1 + style=" + font-size: 25px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + font-weight: 700; + color: #263238; + " + > + خبرنامهٔ Softwaretalks + </h1> + <h3 + style=" + font-size: 18px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + color: #263238; + " + > + شمارهٔ ۲۴ - پنجشنبه، ۲۴ تیر ۱۴۰۰ + </h3> + <hr /> + <ul + style=" + text-align: right; + font-family: Samim, sans-serif; + direction: rtl; + " + > + <a href="http://info.cern.ch/"></a> + <li style="font-size: 18px"> + <a href="http://info.cern.ch/"><b>اولین وبسایت جهان را ببینید</b> </a> + <p> + روزهایی که تیم‌های فنی در آزمایشگاه CERN تونستن پروتکل HTTP رو + پیاده‌سازی و اجرا کنند رو میشه گفت اولین روزهای دنیای وب! و این لینک + اولین وبسایت رو نشون میده. + </p> + <br /> + <a + href="https://blogs.windows.com/windowsdeveloper/2021/06/24/what-windows-11-means-for-developers/" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://blogs.windows.com/windowsdeveloper/2021/06/24/what-windows-11-means-for-developers/" + ><b>معنای ویندوز ۱۱ برای توسعه‌دهندگان نرم‌افزار</b> + </a> + <p> + با معرفی ویندوز ۱۱ موضوع امکانات تازه برای توسعه‌دهندگان نیز اهمیت + پیدا کرده. اینجا مایکروسافت درباره ۵ حوزه مهم برای توسعه‌دهندگان در + ویندوز ۱۱ صحبت می‌کند. در انتهای این نوشته،‌ لینکی به نسخه ضبط شده + یک ساعته در یوتوب هم هست. + </p> + <br /> + <a + href="https://dataschool.com/how-to-teach-people-sql/sql-join-types-explained-visually/" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://dataschool.com/how-to-teach-people-sql/sql-join-types-explained-visually/" + ><b>راهنمای تصویری انواع SQL Join</b> + </a> + <p> + در این نوشته که مناسب همه افراد چه تازه‌کارها و چه با تجربه‌هاست، + انواع SQL Join به صورت تصویری توضیح داده شده است. همچنین در همین + سایت نسخه پویانمایی شده کار با کوئری‌های مختلف نیز وجود دارد. + </p> + <br /> + <a + href="https://www.linkedin.com/feed/update/urn:li:activity:6819868986822459392/?commentUrn=urn%3Ali%3Acomment%3A(ugcPost%3A6819868986314940416%2C6820374173546897409)%20[GBQ%20Case%20Study%20-%20Farsi.pdf](https://github.com/softwaretalks/newsletter/files/6805699/GBQ.Case.Study.-.Farsi.pdf)" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://www.linkedin.com/feed/update/urn:li:activity:6819868986822459392/?commentUrn=urn%3Ali%3Acomment%3A(ugcPost%3A6819868986314940416%2C6820374173546897409)%20[GBQ%20Case%20Study%20-%20Farsi.pdf](https://github.com/softwaretalks/newsletter/files/6805699/GBQ.Case.Study.-.Farsi.pdf)" + ><b + >چگونه داده‌ها را به Data Warehouse (Google Big Query) منتقل + کنیم؟</b + > + </a> + <p> + پایگاه‌های داده و اطلاعات، واژگانی رایج در زندگی بسیاری از ما هستند. + دنیای پیرامون ما پر از داده‌هاست. داده‌ها با انواع مختلف‌شان‌ ما را + احاطه کرده‌اند. در این دوره که پیشرفت فناوری‌های ارتباطی سرعت گرفته، + هیچ داده‌ای بی‌معنا نیست و کار ما فهمیدن حرف حساب داده‌هاست! ما با + این مسیر همراستا شده‌ایم و از بهترین ابزارها و متدها استفاده + می‌کنیم. + </p> + <br /> + <a + href="https://levelup.gitconnected.com/how-to-design-a-system-to-scale-to-your-first-100-million-users-4450a2f9703d" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://levelup.gitconnected.com/how-to-design-a-system-to-scale-to-your-first-100-million-users-4450a2f9703d" + ><b + >چگونه میتوان سیستمی را طراحی کرد که برای 100 میلیون کاربر جوابگو + باشد</b + > + </a> + <p> + طراحی سیستمی که از صدها میلیون کاربر پشتیبانی کند کار آسانی نیست. + این همیشه یک چالش بزرگ برای یک معمار نرم‌افزار است. در این نوشته + خواهید خواند که چگونه میشود به سادگی از ۱۰۰ میلیون کاربر پذیرایی کرد + </p> + </li> + </ul> + <hr /> + <p + style=" + font-size: 13px; + font-family: Samim, sans-serif; + direction: rtl; + text-align: right; + " + > + تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: <b>امیرحسین بقایی،</b> + <b>حامد سعیدی،</b> <b>علی اورجی و معین موحدنیا،</b> + <b>راشد عبیدی</b> شما نیز می‌توانید + <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a + >. + </p> + <hr /> + <span + ><p + style=" + font-size: 16px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <img + src="https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png" + /><br /> + ارسال شده توسط <a href="https://pakat.net/">پاکت</a> + </p> + <p + style=" + font-size: 14px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید + </p> + <br + /></span> + </div> + </body> +</html> + + + +شماره خبرنامه 43.html + +urn:uuid:adf0adf3-1261-760f-ec36-5245034345b1 +2021-12-23T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۳ - پنجشنبه، ۰۲ دی ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.aparat.com/v/kCP1y/%D8%B9%D9%84%DB%8C%26zwnj%3B%D8%A8%D8%A7%D8%A8%D8%A7_%D8%AA%D8%A7%DA%A9_%7C_%D8%AF%D8%B1_%DA%AF%D9%88%DA%AF%D9%84_%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C%26zwnj%3B%DA%A9%D9%86%D9%86%D8%AF%D8%9F"><b>گوگل چگونه کار میکند؟ گفتگوی کیانوش مختاریان و احسان آراسته</b></a><br/>در این برنامه یکی از مهندسان ارشد گوگل، یعنی کیانوش مختاریان به زبان ساده و راحت، سازوکار توسعه نرم‌افزار در گوگل رو توضیح میده. اگر به سازوکارهای مهندسی نرم‌افزار در شرکت‌های بزرگ مثل گوگل علاقه دارید، حتما این گفتگو را تماشا کنید چرا که پر از نکات جالبه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.cockroachlabs.com/blog/calendar-versioning/"><b>چرا دیتابیس سوسکی از نسخه‌بندی تاریخی استفاده میکند؟</b></a><br/>اگر برای هر پروژه‌ نرم‌افزاری که ایجاد میکنید از SemVer استفاده میکنید و تنها راه نسخه‌بندی نرم‌افزارتون رو همین میبینید، خوبه که با نسخه‌بندی‌های مبتنی بر تاریخ هم آشنا بشید شاید گاهی پاسخ بهتری برای مسئله شما باشند. در این مطلب تیم CockroachDB علت مهاجرت از SemVer به CalVer یا همان Calendar versioning را توضیح میدهند. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/KdKMG"><b>شخم توییتر فارسی (اراضی برنامه نویسان)</b></a><br/>در این مطلب به تحلیل و بررسی توییت های «لیستی از اهالی فارسی‌زبان آی‌تی توییتر» پرداخته می‌شود و قصد داریم ببینیم برنامه ‌نویسان در توییتر مشغول چه کاری هستند؟! + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://wbscodingschool.medium.com/what-happens-to-developers-who-never-go-into-management-1f1d8483e4bd"><b>چرا توسعه دهنده ها مدیر نمیشن ؟</b></a><br/>اغلب آدم ها فکر میکنن برنامه نویس ها باید بعد از مدتی تبدیل به مدیر بشن و این فرآیند برای همشون وجود داره ولی در عمل این شکلی نیست ... + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>وحید باقی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 29.html + +urn:uuid:fb803a4f-e130-9d55-45d4-9651e7984bcf +2021-08-26T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۲۹ - پنجشنبه، ۰۴ شهریور ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.youtube.com/watch?v=438fndL6pJ0"><b>موزیک‌ویدیوی Up&amp;Up گروه Coldplay چطور ساخته شد؟</b></a><br/>اگر موزیک‌ویدیوی تخیلی و جالب Up&amp;Up گروه Coldplay رو دیده باشید احتمالا از دیدن خلاقیت و وصل‌کردن چیزهای غیرمرتبط بهم لذت بردین. ولی اگر به پشت‌صحنه‌ این‌جور چیزها علاقه دارید، میتونید توی این ویدیو ببینید که چطور این ایده پیاده شده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="http://developerexcuses.com/"><b>بهانه های توسعه دهنده ها</b></a><br/>این سایت رو هر بار که بازش میکنی بهت یه بهونه جدید میده که بدیش به کارفرما :))) + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://zetcode.com/csharp/httpclient/"><b>کار با HttpClient در C#</b></a><br/>در این مطلب با نحوه کار با HttpClient در سی شارپ آشنا می‌شوید و با مثال‌هایی نحوه ایجاد درخواست‌های Get و Post را خواهید دید. همچنین نحوه ارسال چندین درخواست به صورت async را مشاهده خواهید کرد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://stackoverflow.blog/2021/07/05/best-practices-for-writing-code-comments/"><b>چطور برای کدها کامنت بنویسیم؟</b></a><br/>در این مقاله از وبلاگ Stack Overflow درباره ۹ قانون کامنت نویسی در کد به عنوان Best Practice صحبت شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.linode.com/content/hackersploit-docker-security-essentials-ebook/"><b>کتابچه الزامات امنیتی داکر</b></a><br/>در این کتابچه مباحث امن‌سازی مرتبط با داکر به همراه توضیحات ابتدایی کار با داکر و دستورات اصلی داده شده است. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>امید پاکدل،</b> + + + <b>Rahmanism،</b> + + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 28.html + +urn:uuid:b291eadb-8d7f-70c6-454f-aa79a6e2891c +2021-08-12T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۲۸ - پنجشنبه، ۲۱ مرداد ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/vasanthk/how-web-works"><b>وب چطور کار میکند؟</b></a><br/>وقتی در مرورگر میزنیم google.com و اینتر میکنیم، چه اتفاقاتی میفتد؟ در این مطلب نویسنده به ترتیب سعی کرده مهم‌ترین اتفاقات رو بررسی کنه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/1hcZB"><b>با من حرف بزن! سیر تا پیاز دادن بازخورد</b></a><br/>یادگیری مهارت‌های نرم جز اون دسته از مواردیه که، ما رو تو مسیر رشد بهتری قرار می‌دهد. توانایی دادن بازخورد از چمله اون چیزهاییه باعث بهبود کار و روحیه تیمی میشه. پس این شما و این یک مطلب خوب در رابطه با این موضوع! + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/srZqV"><b>داکر و آشنایی با overlay2</b></a><br/>در ادامه مطلب هفته‌ی قبل هفته نامه(ایزوله‌سازی داکر)، این بار سراغ فایل سیستم‌ها تو داکر میریم. اینکه داکر چطور به کمک فایل سیستم‌ها(تو این مطلب به طور خاص overlay) ایزوله‌سازی فایل‌ها رو برای ما مهیا می‌کنه. ایده و نحوه مهندسی این موضوع از جمله مواردیه که می‌تونه براتون جالب باشه! + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/Hossein52Hz/The-Art-Of-Readable-Code-Persian"><b>ترجمه فارسی کتاب هنر کد خوانا</b></a><br/>این ترجمه کتاب The Art Of Readable Code است که در دو قالب PDF و Markdown در مخزن گیت‌هابی قرار داده شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/amirshnll/clean-code-javascript"><b>ترجمه فارسی مفاهیم کد تمیز در جاوااسکریپت</b></a><br/>ترجمه‌ فارسی &#039;کدتمیز در جاوااسکریپت&#039; را بخوانید و اگر مشکلی در ترجمه مشاهده کردید حتما در بهترشدن ترجمه مشارکت کنید. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>وحید فتحی،</b> + + + <b>حامد سعیدی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 21.html + +urn:uuid:7f63c6d5-f0da-a17e-ab7f-dcbc5721e2e6 +2021-06-24T00:00:00+00:00 +<!DOCTYPE html> +<html dir="rtl" lang="fa"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + </head> + <body style="max-width: 680px; margin: 0 auto"> + <div style="text-align: center"> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) + format("truetype"); + font-weight: 400; + } + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) + format("truetype"); + font-weight: 700; + } + ul { + padding: 0 25px; + } + </style> + <br /><br /> + <img + alt="Softwaretalks" + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + style=" + margin: 2.1em auto; + display: block; + width: 130px; + border-radius: 5px; + " + /> + <h1 + style=" + font-size: 25px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + font-weight: 700; + color: #263238; + " + > + خبرنامهٔ Softwaretalks + </h1> + <h3 + style=" + font-size: 18px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + color: #263238; + " + > + شمارهٔ ۲۱ - پنجشنبه، ۰۳ تیر ۱۴۰۰ + </h3> + <hr /> + <ul + style=" + text-align: right; + font-family: Samim, sans-serif; + direction: rtl; + " + > + <a href="https://www.youtube.com/watch?v=0Rb8AkTEASw"></a> + <li style="font-size: 18px"> + <a href="https://www.youtube.com/watch?v=0Rb8AkTEASw" + ><b>مدل OSI چطور کار میکند به زبانی ساده و شنیدنی</b> + </a> + <p> + اگر دوست‌دارید بدونید شبکه چطور کار میکنه دیدن این ویدیو که بخشی از + درس آقای Nicholas Andre هستش، میتونه بهتون کمک کنه. ایشون خیلی + باانرژی و جالب مباحث رو توضیح میده. + </p> + <br /> + <a + href="https://medium.com/shakuro/programmer-vs-developer-vs-engineer-91ef374e5033" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://medium.com/shakuro/programmer-vs-developer-vs-engineer-91ef374e5033" + ><b + >یکبار برای همیشه تفاوت برنامه‌نویس و توسعه‌دهنده و مهندس رو درک + کنیم</b + > + </a> + <p> + خیلی جالبه که برنامه‌نویس، توسعه‌دهنده و مهندس هنوز هم برای آدم‌ها + تفاوتشون مشخص نیست. از لحاظ حوزه ی تخصصی، دانش و جایگاه شغلی این سه + مورد با هم تفاوت‌ها و شباهت‌هایی دارن که یکبار وقت بزاریم بخونیم که + دیگه برای خودمون حداقل جا بیوفته + </p> + <br /> + <a href="https://rtbf.ir/"></a> + </li> + <li style="font-size: 18px"> + <a href="https://rtbf.ir/"><b>حق فراموش شدن</b> </a> + <p> + بسیاری از سرویس‌های اینترنتی اینگونه عمل می کنند که امکان حذف + حساب‌کاربری را به شما نمی دهند و از نظر ما کاربران این موضوع نقض + حریم شخصی است. با توجه به حق فراموش‌شدن یا Right to be forgotten این + یک تضاد می‌باشد. اگر شما هم این مشکل رو دارید در محتوای این ابزار + مشارکت کنید + </p> + <br /> + <a + href="https://nocomplexity.com/documents/arplaybook/index.html" + ></a> + </li> + <li style="font-size: 18px"> + <a href="https://nocomplexity.com/documents/arplaybook/index.html" + ><b>کتاب معماری</b> + </a> + <p> + در این کتاب در فصول مختلف از «معماری» بخش‌های مختلف از کسب و کار + گرفته تا معماری بانک اطلاعاتی و نرم‌افزار و الگوهای طراحی API و + کنترل کیفیت و ... با معرفی ابزارها و روش‌ها صحبت می‌شود. این کتاب + رایگان است + </p> + <br /> + <a href="https://vrgl.ir/UTUds"></a> + </li> + <li style="font-size: 18px"> + <a href="https://vrgl.ir/UTUds" + ><b>در باب تفاوت‌های Dependency injection و Service Locator</b> + </a> + <p> + ببینیم چرا میگن Service Locator بده؛ فرقش با Dependency Injection + چیه و dagger 2 داره از کدوم استفاده می‌کنه + </p> + <br /> + <a + href="https://bloggingsibani.medium.com/make-a-killer-technical-resume-3ed9d72e337c" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://bloggingsibani.medium.com/make-a-killer-technical-resume-3ed9d72e337c" + ><b + >از اشتباهات رایجی که مردم هنگام ساخت رزومه مرتکب می شوند ، اجتناب + کنید</b + > + </a> + <p> + رزومه کاری شما اولین و مهمترین چیز برای تماس گرفتن از شرکت رویایی + شماست. بنابراین شما باید از اشتباهات رایجی که مردم هنگام ساخت رزومه + مرتکب می شوند ، اجتناب کنید. در این مقاله ، من روی مواردی تمرکز دارم + که شما باید هنگام ساخت رزومه خود به خاطر بسپارید. + </p> + <br /> + <a + href="https://levelup.gitconnected.com/why-dark-mode-causes-more-accessibility-issues-than-it-solves-d2f8359bb46a" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://levelup.gitconnected.com/why-dark-mode-causes-more-accessibility-issues-than-it-solves-d2f8359bb46a" + ><b + >براساس تحقیقات جدید، دارک مود ضرر بیشتری نسبت به لایت مود + دارد!!</b + > + </a> + <p> + ولی بسیاری از محققین بر این باورند dark mode بیشتر از اینکه مشکلی رو + حل کنه، خودش باعث بروز مشکلاتی برای چشم میشه. در این مقاله درباره + مشکلاتی که براساس تحقیقات، دارک مود برای ما ایجاد میکند آشنا خواهید + شد ولی در نهایت تصمیم نهایی دست شماست ... + </p> + <br /> + <a href="https://jadi.net/2021/06/always-be-quitting/"></a> + </li> + <li style="font-size: 18px"> + <a href="https://jadi.net/2021/06/always-be-quitting/" + ><b>یک راهنمای شغلی: همیشه در حال استعفا دادن باشید</b> + </a> + <p> + منظور این نیست که هی شرکت عوض کنین یا همیشه تهدید کنین که دارین + می‌رین یا با دیدن هر چیز ناملایم بگین که «پس من می‌رم». فلسفه + نویسنده مقاله 'همیشه در حال رفتن باشید'، ایده‌اش اینه که همیشه جوری + کار کنین که انگار دارین شرکت رو ترک می‌کنین. همیشه در حال یاد دادن + کارهاتون به بقیه باشین، همیشه در حال این باشین که بقیه بتونن شما رو + جایگزین کنن و همیشه کارهایی که می‌کنین رو اتوماتیک کنین. + </p> + </li> + </ul> + <hr /> + <p + style=" + font-size: 13px; + font-family: Samim, sans-serif; + direction: rtl; + text-align: right; + " + > + تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: <b>امیرحسین بقایی،</b> + <b>امیر شکری،</b> <b>حامد سعیدی،</b> <b>حمیدرضا شجراوی،</b> + <b>امیر ابوئی</b> شما نیز می‌توانید + <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a + >. + </p> + <hr /> + <span + ><p + style=" + font-size: 16px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <img + src="https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png" + /><br /> + ارسال شده توسط <a href="https://pakat.net/">پاکت</a> + </p> + <p + style=" + font-size: 14px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید + </p> + <hr /> + <br + /></span> + </div> + </body> +</html> + + + +شماره خبرنامه 46.html + +urn:uuid:88721612-526c-1b30-70f3-e7c2baf503aa +2022-01-13T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴٦ - پنجشنبه، ۲۳ دی ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.redhat.com/rhdc/managed-files/cl-97-things-cloud-engineers-know-e-book-oreilly-f28602-202105-en.pdf"><b>کتاب رایگان ردهت برای مهندسان ابرزی</b></a><br/>اگر به دنیای ابر علاقه دارید (یا حتی ندارید) خوندن این کتاب که مفید و خلاصه هم هستش، میتونه شما رو با تجربیات دیگر مهندسان آشنا کنه و شاید بعضی نکاتش به کارهای شما نیز کمک کنه. عنوان این کتاب اینه: ۹۷ چیزی که هر مهندس کلود(ابر) باید بدونه؛ که شامل تجربیات افراد مختلفی میشه و خوندنش خالی از لطف نیست. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://matnbaz.net/"><b>مخزن‌های ایرانی در یک جا</b></a><br/> اخیرا پروژه‌ای رو دیدم که تلاش میکنه مخازن پروژه‌های ایرانی‌ها رو قابل‌دسترس‌تر کنه و با فیلترهایی که داره جستجو کردن و پیدا کردن پروژه‌ها و مخازن گیتهابی ایرانی‌ها رو ساده‌تر کنه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/alibaba-aero/technical-interview"><b>سوالات فنی مصاحبه شرکت علی‌بابا</b></a><br/>در این مخزن گیتهابی، بچه‌های علی‌بابا سوالات فنی مصاحبه‌ها و مفاهیم کلی که در مصاحبه فنی پرسیده میشه رو مطرح کردند که حتی اگر قصد مصاحبه و کار کردن در علی بابا رو ندارید، مرورش میتونه کاربردی و مفید باشه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/MoienTajik/AspNetCore-Developer-Roadmap"><b>مسیر راه یادگیری ASP.NET Core</b></a><br/>معین تاجیک عزیز در این مخزن گیتهابی خیلی دقیق و مفصل به مسیر یادگیری تکنولوژی‌ها، ابزارها و مفاهیم دنیای .Net Core پرداخته. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 27.html + +urn:uuid:568dbb96-239a-3cf3-0c9c-9dbfba51f0e2 +2021-08-05T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۲۷ - پنجشنبه، ۱۴ مرداد ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://eloquentjs.ir/"><b>ترجمه کتاب eloquent js به فارسی</b></a><br/>کتاب eloquent js خیلی ساده و راحت مباحث جالبی در JS رو مطرح میکنه که مهران عفتی عزیز این کتاب رو به زبان فارسی هم ترجمه کرده و میتونید این کتاب رو به زبان فارسی به صورت آنلاین مطالعه کنید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.youtube.com/watch?v=8aGhZQkoFbQ"><b>‏Event Loop جاوااسکریپت به زبان ساده</b></a><br/>اگر شما هم از دنیای زبان‌های برنامه‌نویسی چندنخی (Multithreaded) به دنیای تک‌نخی جاوااسکریپت مهاجرت کرده باشین، ممکنه رفتار Promiseها و دستورات async براتون گیج کننده باشه. این ویدیو به زبان ساده مفاهیم بنیادی مربوط به این قابلیت‌ها رو توضیح میده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.yegor256.com/2014/05/13/why-null-is-bad.html"><b>چرا از Null استفاده نکنیم؟</b></a><br/>نویسنده در این مقاله نظر خودش رو درباره علل عدم استفاده از Null در برنامه‌نویسی بیان کرده که خوندنش احتمالا نکات جالبی برای بررسی و تفکر بیشتر برامون داره. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/n3zr0"><b>داکر چگونه ایزوله‌سازی را فراهم می‌کند؟</b></a><br/>داکر با استفاده از ویژگی‌هایی که تو سیستم‌عامل‌ها وجود داره، برای ما یک محیط ایزوله‌ای رو فراهم می‌کند. اینکه این ایزوله‌سازی سازی چطوری انجام میشه و داکر از چه ویژگی‌هایی استفاده می‌کنه بحثیه که تو این پست به اون پرداخته میشه. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>مصطفی فرزان،</b> + + + <b>Vahid Fathi.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 61.html + +urn:uuid:e4f810f8-35b3-2d5e-982c-2da3932f7d9b +2022-08-11T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ٦۱ - پنجشنبه، ۲۰ مرداد ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/Battelle/movfuscator"><b>کامپایلری که فقط با دستور MOV کار میکند</b></a><br/>توی توییتر داشتم میچرخیدم که یک توییت دیدم از طرف کاربر @sajad_ghorbanii که یک مخزن جالب معرفی کرده بود. توی این مخزن یک کامپایلر C داریم که همه چیز رو به دستورات MOV تبدیل میکنه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.quora.com/Why-use-Google-Fonts-What-are-the-advantages-and-disadvantages-of-using-Google-Fonts"><b>چرا از گوگل فونت باید در وبسایت خود استفاده کنید</b></a><br/>احتمالا در پروژه های مختلف خودتون مخصوصا با اومدن فونت وزیر به گوگل فونت از این سرویس استفاده کرده اید ولی شاید براتون سوال پیش بیاد اصلا مزیت ها و معایبی که استفاده از گوگل فونت داره چیه اگر دنبال این موارد هستید این تاپیک کورا به سوالتون پاسخ میده + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/vmfoR"><b>ترافیک شهری در اسنپ</b></a><br/>در این مطلب از وبلاگ مهندسی اسنپ، درباره مساله ترافیک شهری در نقشه و چالش‌های مرتبط و راهکارهایی که اسنپ از آن‌ها استفاده کرده صحبت شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://chistio.ir/wp-content/uploads/books/guidetodatamining_chistio.ir.pdf"><b>ترجمه کتاب داده‌کاوی برای برنامه‌نویسان</b></a><br/>این لینک دانلود ترجمه کتاب داده‌کاوی برای برنامه‌نویسان است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/design-bootcamp/popular-tech-stack-for-startups-in-2022-f3b53f50c18"><b>استک‌های محبوب استارتاپ‌ها در 2022</b></a><br/>معمولا استارتاپ‌ها در ابتدای کار برای اینکه سرعت بالایی داشته باشند استک‌های مختلفی را استفاده می‌کنند اما یکی از چالش‌های آنها در آینده زمانیست که قصد scale کردن دارند در آنجاست که کمی مسئله متفاوت می‌شود در این نوشته چندین استک محبوب برای استارتاپ‌ها که در آینده به سادگی قابل توسعه باشد لیست شده است. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>امیر شکری،</b> + + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 25.html + +urn:uuid:0833e5a0-97ce-e083-b101-33e8f2c7884b +2021-07-22T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۲۵ - پنجشنبه، ۳۱ تیر ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.submarinecablemap.com/#/"><b>نقشه کابل‌های زیردریایی تشکیل‌دهنده‌ اینترنت جهانی</b></a><br/>اگر شما هم به مباحث اینترنت و این که دقیقا اینترنت چطوری کار میکنه علاقه دارید، پس دیدن این نقشه باید براتون جذاب و دیدنی باشه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://engineering.fb.com/2021/07/14/security/whatsapp-multi-device/"><b>چالش‌های فنی قابلیت کار واتس‌اپ در چند دستگاه</b></a><br/>در این نوشته که در وبلاگ مهندسی فیسبوک منتشر شده، موضوع کار واتس‌اپ در چند دستگاه و حفظ محرمانگی و رمزنگاری سرتاسری مورد توجه قرار گرفته و شیوه‌ای که مهندسان برای حل این چالش استفاده کردند توضیح داده شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://laravel-news.com/pestphp-video-series"><b>معرفی تست فریمورک PestPHP</b></a><br/>Pest یک تست فریمورک که بر پایه PHPUnit نوشته شده اما چند صد برابر باحال تر و ساده تر و و تست نویسی را لذت بخش تر می کنه. توی این مقاله میتونید یکسری ویدئو را مشاهده کنید و خیلی سریع با این تست فریمورک زبان PHP آشنا بشید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://css-tricks.com/nth-child-between-two-fixed-indexes/"><b>انتخاب بازه‌ای از المنت‌ها با :nth-child در CSS</b></a><br/> اگر چند div داشته باشید و بخواهید از div دوم به بعد را انتخاب کنید می‌توانید از `div:nth-child(n+2)` استفاده کنید. این سلکتور، تمام divها از دوم تا آخر را انتخاب می‌کند، اما اگر بخواهید از دوم تا پنجم را انتخاب کنید چه می‌کنید؟ راه حل را با توضیح بیشتر در این مطلب بخوانید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://howlongtoread.com/"><b>خواندن هر کتابی چقدر زمان می‌بره؟</b></a><br/>قبل از این که هر کتابی را بخونید از طریق سایت How long to read از تخمین زمان خوندن اون کتاب مطلع بشید. همچنین بهتون اجازه می‌ده قسمتی از کتاب رو بخونید تا با سرعت خوندن خودتون زمان کتاب رو تخمین بزنه. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: <b>امیرحسین بقایی،</b> + <b>حامد سعیدی،</b> + <b>AriaieBOY،</b> + <b>Rahmanism</b> + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 41.html + +urn:uuid:91f418c7-990a-3ee0-a4ba-07ff21ab6635 +2021-11-26T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۱ - جمعه، ۰۵ آذر ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/free-code-camp/the-top-data-structures-you-should-know-for-your-next-coding-interview-36af0831f5e3"><b>مهم ترین ساختمان داده هایی که باید در مصاحبه شغلی بدانیم</b></a><br/>اگر در فرآیند مصاحبه های متعدد شغلی هستید و احتمالا مشکلاتی با سوالات دارید یک بخشی از این مشکلات مربوط به ساختمان داده است که کلیات ساختمان داده هایی که نیاز دارید بدانید به صورت خلاصه در لینک اصلی مقاله لیست شده ... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://blog.cloudflare.com/building-software-at-cloudflare/"><b>در کلودفلر چطور نرم‌افزار می‌سازیم؟</b></a><br/>در این نوشته منتشر شده در وبلاگ کلودفلر ابتدا روش‌های متداول تولید نرم‌افزار معرفی شده و در ادامه روشی که کلودفلر با آن نرم‌افزار تولید می‌کند توضیح داده شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://certitude.consulting/blog/en/invisible-backdoor/"><b>ایجاد Backdoor نامرئی در جاوا اسکرپیت</b></a><br/>در این مقاله بسیار جالب نویسنده این ایده رو داشته که چی می‌شه اگر نتونیم کد Backdoor رو ببینیم؟ در واقع آیا می‌تونیم با کمک کاراکترهای نامرئی در ادیتورها کدی رو داخل کد اصلی قرار بدیم که در بازبینی کدها (Code Review) هم مشخص نباشه؟ پیشنهاد می‌کنم نتیجه رو ببینید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://css-tricks.com/responsive-layouts-fewer-media-queries/"><b>طراحی رسپانسیو با مدیاکوئری‌های کمتر</b></a><br/>هرچند که مدیاکوئری سال‌های سال است که در طراحی رسپانسیو بسیار کاربردی است، اما گاهی باعث می‌شود مدیریت طراحی سخت شود. در این مقاله راه حل‌هایی راه مشاهده خواهید کرد که فلکس و گرید به منظور استفاده کمتر از مدیاکوئری به کار گرفته می‌شوند. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/DS2qf"><b>با این اسکریپت نیازی به پوشه وصایای امام ندارید !</b></a><br/>اومدیم یه کاری کردیم که دیگه نیازی نباشه به اینکه نگران باشین اگه مامان باباتون فایل های شخصی تون رو پیدا کردن اونا رو توی کلی فولدر مخفی کنین + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://dev.to/nehal_mahida/oops-in-javascript-with-easy-to-understand-examples-2ppn"><b>OOPS in JavaScript with easy to understand examples 🔥🔥</b></a><br/>اگه با زبان‌های شی گرا کار کرده باشید، وقتی سراغ جاوااسکریپت میایید هم دوست دارید به همون روش کد بنویسید. اینجا با مثال مفهوم کدنویسی شی گرا در جاوااسکریپت شرح داده شده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://twitter.com/hbazargani_b/status/1449793089955057672"><b>رشته توییتی از حمید بازرگانی درباره مصاحبه کاری با شرکت‌های بزرگ</b></a><br/>پارسال با اینکه فکر میکردم آماده‌ام شروع کردم به مصاحبه دادن و تقریبا از هر جا که اپلای کردم ریجکت شدم. یه جای کار میلنگید. اعتماد بنفسم داغون شده بود ..... + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیر شکری،</b> + + + <b>حامد سعیدی،</b> + + + <b>Rahmanism،</b> + + + <b>ایلیا آقامجیدی،</b> + + + <b>امیرحسین بقایی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 6.html + +urn:uuid:19445089-50ba-4725-8d0e-e34f96d9842f +2021-02-11T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ٦</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ٦ - پنجشنبه، ۲۳ بهمن ۹۹ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>توضیح Design Pattern ها با غذا و برنامه واقعی</b> </li> + <p> این مخزن گیت‌هاب، همه دیزاین پترن‌ها را با مثال‌هایی از صنعت غذا و با برنامه‌های واقعی توضیح داده تا در + دنیای واقعی کاربرد آن‌ها را بررسی کند. همچنین در یک سری ویدئوی یوتوب درباره هر کدام از پروژه‌ها در حال + صحبت هستند. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/crL94lKVs2VnebotKcAHv3Nr8NlvyVLUkH2fwrqaNogB7iZaEUfEjgIIgo_24BfeZ7CE3GNJFbOIgFCG9t-eFXeTxPVQRIK8R9vxdInsq_1bnoLKpK3M6nj_J8UfzkYN1uSbcC_0zqSqXPrifCtnZzNY7Xg_xvzY1jnH0KS9aMBoi2yzwA8sgizn82Cm9Sbde8dljNPSLxc29lhFgZ4" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>مرجعی رایگان و کامل برای ساختمان داده‌ها و الگوریتم‌ها با جاوااسکریپت</b> + </li> + <p> در این مخزن گیت‌هاب، مشارکت‌کنندگان یک مجموعه بسیار کامل از ساختمان‌داده‌ها و الگوریتم‌ها را با استفاده + از جاوا اسکریپت توضیح دادند. این مخزن به ۱۴ زبان دیگر هم در دسترس است و کاندید بسیار مناسبی برای ترجمه + به فارسی است <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/XPMTDgKoplFlxAXo2CMdaVzXUN2iDcyNaBurQ1IxSSAyiB2b_uu12ukpm_c8qV72GCIB8Cau2Dqu6VPZO2fLaWFUKL7oUvUvgU1VGYrNLPZD4OK5eiM9W45LT_LrRzL3nZLYUo9zX1S8AQfEcioyyo5mTIr7P8jOpVjy3pOAiuq0UiTKcvfmjycSt7Em-q83" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>سه روش برای اندازه‌گیری کارآیی برنامه‌های React</b> </li> + <p> در این مقاله، محصول اپن سورس Reactime معرفی می‌شود و سه روش برای تحلیل performance در برنامه‌های React + به کمک این محصول بررسی می‌شوند. Reactime که یک ابزار debug است کمک می‌کند تا snapshot هایی از برنامه و + state ایجاد شود و امکان سفر در زمان را برای برنامه‌نویس فراهم می‌کند <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/kM_FzKOZgatQL4KWNZGHzwO_xN8tazxV5gYpQn0aZKv7qLdyb5dRcb51_kRaUEIvq4ywLr9OY5EZ-ZuBqsAodGixsn6gJMlqHh1d8lVRLTld4Qs7-ofvLEIF2J51eJf_ReQdSoiY3hDLSvIsToxzYp5cBL1GRejMfGOcekoxRdYp7-RERBS5Mi3yClXo64rkVI12vXcaFgkN_NxeNgmsW2_ZrHVYqEZgIGq2AE1dKaj20uzgxQ" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>همه چیز درباره رفتن به کارآموزی</b> </li> + <p> توی این ویدیو درباره هر چیزی که برای رفتن به کارآموزی برای برنامه‌نویسی و ورود به بازار کار حرفه‌ای و + کسب درآمد نیاز هست توضیح داده شده. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/ek0ffcsBoyC-sMCfnOaqNLUUBTFeLzlYjukpiJ7zfrkVUmR4sJksVp4SEviuNqNIZCH1J1RJ2C6eSA8_364BIQGJiIceTYkyUDwM55uVBw9Cln8F_K_Xfl2tGmYQp8Bx66FC3pgMhkqdL0YNPpdMpPWJImbMJBo44Q" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>حامد سعیدی،</b> <b>اشکان رحمانی</b> در تهیه محتوا کمک کردند. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=H6r2gKEyiYC5KwjJWf2090-rIZma0TmfjaFYLvlI2CYQaA1i5iOTIA36fOt_bz_s_8OclWTOjgWGJbYsVr_-qwH17_q55_E0cq0f__fINg8tLhT3CNgPBnjjL8QKIHyWoceeLBEniQKVDNd-ts2vekk8HS-BbSp1wYXNqNhE9Ct-sVfccnocauNhGz0-43Q5d53jjfN7eLvQkOi7ULvMa6qCPg" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/s2imM7UYiZjMu-LZ93yxSX7alsn1qpQu61Kfyjlj-Ul-ZTOdgQrlXQb_A0J5FeUZLuyTHZopt9w7jcQrJkvBOx5YXNRr48RFjh4hAWX47y6xeIU0RuaUu4FLsofoK9Bh0_XLwAqk4WfF70Ard9Zs" + sib_link_id="4">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/2VYDDOhAYzSx9ooBModYENxTED5rsQK3bvTYiN1jf4zy0FfHeH0B8LaCgTLPS26QtNRKLl7jL7cgSu-Joa5nBNKwBhHsLVhHb_kYaMv9kKsL6TgE8NVZ8yQe1aUKW-xLprJk0ldVLXwjioqB1k2w" + sib_link_id="5">سرویس پاکت</a> اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید </p> + <br /> + </span> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 32.html + +urn:uuid:415ac11b-cab9-0df6-464c-c9e5177c4389 +2021-09-24T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="background-color: #000;"> + <div style="max-width: 680px; margin: 0 auto;color: #fff;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: red;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: red;"> + شمارهٔ ۳۲ - جمعه، ۰۲ مهر ۱۴۰۰ + </h3> + <div> <p style="text-align: center; color: red;font-family: 'Samim', sans-serif;"><small>این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است</small></p> </div> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://kokabi1365.github.io/Vajehdan"><b>با واژه‌دان زیباتر بنویسید</b></a><br/>«برایِ این دکمه چه اسمی انتخاب کنم؟»، «این پیامِ خطا را چگونه بنویسم؟»، «این قابلیت را با چه عباراتی توضیح بدهم؟»، «برایِ این منو از چه کلماتی استفاده کنم؟» واژه‌دان کمک می‌کند تا سریع‌تر جوابِ این سوالات را پیدا کنید. این برنامه خصوصاً برایِ UX Writerها ابزاری مفید و حیاتی است...&quot; + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://www.howtodeal.dev/"><b>راهنمای کامل شیوه برخورد با آدم‌های چغر و بد بدن در حوزه توسعه نرم‌افزار</b></a><br/>در این سایت، راهنمایی در خصوص تیپ‌های مختلف آدم‌ها در نقش‌های مختلف مرتبط با توسعه نرم‌افزار و چگونگی سر و کله زدن با آن‌ها به تفکیک بیان شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://fossfa.ir/blog/match-case-in-python/"><b>ساختار سوییچ‌کیس وارد پایتون می شود!</b></a><br/>توی این مطلب، قراره بهتون بگیم که سوییچ‌کیس‌ها چی هستن و اون‌ها رو در آینده چجوری در پایتون پیاده میکنیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://spin.atomicobject.com/2020/05/05/git-configurations-default/"><b>سه تنظیم گیت که بهتره پیش فرض باشن</b></a><br/>تنظیماتی در گیت وجود‌ داره که اگه به صورت پیش‌فرض فعال باشن، احتمالا از خیلی دردسرها جلوگیری می‌کنن و با پیشگیری از این مشکلات باعث صرفه جویی در وقت و اعصاب و ... می‌شن. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>سیدایوب کوکبی،</b> + + + <b>حامد سعیدی،</b> + + + <b>Rahmanism.</b> + + شما نیز می‌توانید <a style="color: red" href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a style="color: red" href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"> <a style="color: red" href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </div> + </body> +</html> + + +شماره خبرنامه 7.html + +urn:uuid:89af0926-0162-f00a-792d-c7526614d62a +2021-02-18T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۷</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۷ - پنجشنبه، ۳۰ بهمن ۹۹ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>نکاتی در خصوص پیمایش کدبیس های عظیم</b> </li> + <p> در این مقاله نویسنده از مشکلاتی که برای پیمایش کدبیس های حجیم (شامل ده ها یا صدها هزار خط کد) وجود دارد + نام میبرد و سپس راه حل هایی جهت رفع و یا بهبود این مشکلات ارائه میکند. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/bEHTY00i4Wxw91qAzjGLG4EV3bQbfRIx-vYPJOkDcd3jgX90MU-Bf18Sff89fEW06sDGItNWuWYZPNfHT-DqpkPrvD-_RDeiL34yOU8Rzk96ZPqBby7JZ-sHh3xKVZt1iO5eDNHOXXcOpH4mIGFvQsGMkdBo6gX0hxAKbScrmk0mnEpHle6v0SwjzrxkiBsbq5kzsZr4XedVrXT6mnxfpgs" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>برنامه کن! یک ربات تلگرامی برای اضافه کردن رویدادها به تقویم گوگل</b> </li> + <p> برنامه کن یک ربات تلگرامیه که آدما بتونن به راحتی ایونت هایی که میبینن (به خصوص توی تلگرام) رو به تقویم + گوگلشون اضافه کنن. سورس این ربات به صورت آزاد منتشر شده و جا برای بهتر شدن زیاد داره.خوشحال میشم ادمای + بیشتری ازش استفاده کنن و به دردشون بخوره. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/4laS_-XTsslCD2w6SFtj-IgxjETPsVCszHyeRm-gLGvziw78MyC6-G5_JkSxn2vOt8PeHFcwUFCcK7O0AJDuTehzXLl0J4hY-jcpYp19xQeCqdRuvj4k9uA1N1sGTaAFcDEORTyVG-tD8NOl8IY3_5hhn-A0pNm1HB8Kgf2exaufupih" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>قواعدی برای اسم‌گذاری توابع و متغیر‌ها</b> </li> + <p> برای نام‌گذاری بهتر متغیر‌ها و به خصوص‌ توابع و متد‌ها، این ریپوزیتوری، قلق‌ها و پترن‌های جالبی بهمون + یاد میده. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/31DbI0XlFPolvCVFwjPvxbPxwXbgy7khNZcJpmDjnYgiqrTZTMBc4gtP8BJqQ3R1l_Mg9TkpqnkA8kPY2nXPj0vvlUhvv8NzTNYd-bwVY1edU8w778m8QloQqVSMP_smKF32PYe77IEdkMbn2U05y3a77ODUc4gQWX49XFOSONxi9Ibk3-zShCv6OUW4Dw" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>کشف یک باگ در کرنل لینوکس بعد از ۲۴ سال</b> </li> + <p> یک باگ در لایه شبکه کرنل لینوکس که باعث از کار افتادن پایپ «آرسنیک» برای انتقال محتواهای حجیم میشد، بعد + از ۲۴ سال کشف و برطرف شد. این مقاله شامل یک بررسی کوتاه از کد کرنل، نحوه آدرس دهی مشکل، و در نهایت نحوه + دیباگ کردن کرنل و تولید پچ هست. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/eDl-VAKF38mf61oAZc3tJDSE9SBx-Q4OouRvULEdK8Ccpv33vY3vsJT1aCUwLQUJnUAQD_t-yelwiOx1AVUZecubg_vqd9BRdhlm4F8XsVr9DDdaUYmne01D7mDflT4dPlMHcRKZh4bK7NjK2BJIqxpb5P1qCYglb16RNCTyUJ2nc0Ch5c-I3al9-B3CLQ3wfnouPopW2ULS4G-vK6BZN5983x3nAHtkG4-Ps1KZpXXFwyWMcQk" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>دیتاست رایگان شرکت مدیریت فناوری بورس تهران</b> </li> + <p> احتمالا این روزها همه دیگه روزی چند بار اسم بورس رو شنیدیم و خب سرویس هایی که برای دسترسی به داده های + بورس به صورت api موجود هست هم کم نیست ولی خب تا جایی که اطلاع دارم سرویس رایگانی پیدا نمیشه که برای + پروژه های کوچولو و شخصی بشه استفاده کرد؛ سایت tsetmc یه ساختار آدرس خاص برای داده های هر سهام داره که به + سادگی امکان دریافت دیتای لحظه ای رو دارید اما دقت کنید هر شرکتی دو کد برای ریکوئست زدن لازم داره که با + توجه به زیاد بودن سهام ها نیاز هست یک لیست کامل رو داشته باشید که این دیتاست احتمالا کارتون رو راه + بندازه <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/zzuIU6r9gEStOnkm3dOEvgd5xTg2Hb4_vv56uN3oK62vbmwVWCLAOZP4M5FW0OBo6bAnBYCWumVJvbL2_Q4SVqo51CBqr6iepwzrps47xxCnX3SaYyxdiEq76rCx7c97Aq7dP5KQiI38wDyrgoAvAj05dOG4ldlsr1tIOz5ln7fHIhIzfUJuQxnKuEBN" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>ARCHITECTURE.md</b> </li> + <p> در یک پروژه اپن سورس داشتن مستندات برای افرادی که مایل به مشارکت در کد هستند خیلی اهمیت دارد و در واقع + میتواند یک نقطه شروع برای مشارکت‌کنندگان باشد، اما بیشتر اوقات برای افراد تازه‌کار شروع به همکاری و + آشنایی با پروژه ممکن است کمی گیج‌کننده باشد، در این مطلب یک راه‌حل خوب پیشنهاد شده است و آن هم داشتن یک + فایل است که معماری کلی سیستم را به صورت خلاصه توضیح دهد <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/QO2Yii4Xw_D0OIM17CU69msEtMKm9eqYUl-PHckqdH6EFiBGiXBJRs9Tn208pxqarDqWJmA1HctIgCr-qFdeR-N1kjrd2oiXjPiBLsfi-psTkaDl7QgiyvJ-snW-rtqreZbJzIBsCSOcE7fLvsUxoDbhDOHy2IP_h8QAUH0folQtvy7qhMlwh1MqZ_RoB9qwFgV6JfIIi5l7eNXGVIFq" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>تاسیس یک انجمن تخصصی برای مباحث توسعه قرارداد هوشمند به زبان فارسی</b> </li> + <p> چند ماه پیش بود که کوین‌ایران با ارتباط هایی که تونسته بود بگیره یه سولارشیپ 1000 دلاری از کانزنسیس(یک + شرکت که توی حوزه توسعه بلاکچین اتریوم کار میکنه هستش) برای 7 نفر گرفت (این سولارشیپ مخصوص بانوان بود) + گرفت و حالا که این دوره تموم شده این افراد به علاوه چند متخصص دیگه این انجمن رو راه اندازی کردن با هدف + انتقال دانش و تجربه <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/m1B-aKQjtIg0Oq37vBd6XLPHJmgRIfQIZCqqXDrUOqEfpkVZL8ILqAnwUTjd-sB9gyGm7etYuHow9KVw0s4SFaPZ73VxdJAC_TN-AWdFpEMYO1n3qTuZ_flc-sn2gq46AZF372ULpkllDiyi1N10ZQLqQA8D5xJNBJRCqSGaST8" + style="font-size:14px" sib_link_id="6">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>استفاده از اختلاف قیمت در صرافی ها غیر‌متمرکز برای آربیتراژ گرفتن با استفاده + از قرارداد های هوشمند</b> </li> + <p> صرافی ها غیرمتمرکز بر بستر شبک اتریوم این روز ها نوع جدیدی از نوع مبادله رو معرفی کردن . به استفاده کردن + از اختلاف قیمت یک چیز در دو بازار متفاوت برای کسب درآمد آربیتراژ گفته میشه.تو بازار های سنتی برای + استفاده کردن از موقعیت های آربیتراژ نیاز به نقدینگی هستش ولی توی دنیای دی‌فای(بازار های مالی غیر متمرکز + یا دیسنترالایز فایننس) این محدودیت با مفهمومی به اسم فلش لون (وام های لحظه ای) برداشته شده و هرکسی + میتونه بدون داشتن نقدینگی هم از موقیعت های آربیتراژ بین صرافی های مختلف بر بستر اتریوم استفاده کنه و این + کار نیاز به برنامه نویسی به زبان سالیدیتی داره. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/ne27oWNAjdGDA2FKSA1K86jFMB5jZIMyJepOMb0srobLxfQbE5xQy3ykURFufe7atruimAozbwGxxBAl2Ewar3jxtIfkROO-62dfvDLhTu7DtyFUEQqs8__NKdL6pk5X0tOWBSTH0yYT6_uMqE8hOW6oPD-L9ced0GIc0QSywc2gay3ASBuVme-KDzvmwUsNvLrrsLGV5cHpIaKELNiI6rsch7BoGNin" + style="font-size:14px" sib_link_id="7">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>حسن شهبازی،</b> <b>محمد عرب انواری،</b> <b>امیرحسین بقایی،</b> <b>امیر + شکری،</b> <b>سیروان عفیفی،</b> <b>حمید رضا مرادی</b> در تهیه محتوا کمک کردند. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=C1jpTHOd-rsIpkpVbcrd3IvZ6rdTw5Ud_NKgxalHtFIewVRd5X910YykdnJtLZGs75OKXpzsY-t2-czgI90Sa-U1pNoiiq6GJQBLK9Ms7jLWqBbfI3UULvGFvhpmR4B1gqQmgoVdapxGUCNquS8499p_Kd-SEezhGpojqRNwxR7w9S-8ZBhd2_BXeTSxGQLpQXZj1a-TjBnO0ci6H8xsCniJYg" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Fswb6vddMhkca3ols3BoP4NW4QR-0KOsm32D6M7XCAvdSm7f9tUjfbN8dceiAnMty6AZYW6w74inDbhAY5SzG-q8TnfrJsRtTfj_uHNIdz3XI48l3prZm56QkNo0N6Rhto3MpEYUS5YdUz-9o_JZ" + sib_link_id="8">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/mZ1p3cTF2Zq49eqBgT9uZ2ImaR8Yit9gaYWFgyVdXs3CAcokLKE1uF-iZZfU1A6hZD7ROayo6coP9LD_SpywamJgPFTHQmJP4EuXkW3fBy9zpQYuikGNCI3139XNgwYuOglGa6PTnqBO7VDiPFoS" + sib_link_id="9">سرویس پاکت</a> اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید </p> + <br /> + </span> + </body> + + </html> +</body> + +</html> + + +شماره خبرنامه 1.html + +urn:uuid:ee4f6358-24b9-bad3-114e-5cf5d344deb0 +2021-01-07T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه Software Talks، شماره یکم</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir=rtl lang=fa> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv=Content-Type> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + + <body style="max-width:680px;margin:0 auto"><br><br> + <h1 + style="font-size:25px;text-align:center;font-family:'Samim',sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:'Samim',sans-serif;direction:rtl;color:#263238"> شماره + یکم - پنجشنبه، ۱۸ دی ۹۹ </h3> + <hr> + <ul style="text-align:right;font-family:'Samim',sans-serif;direction:rtl"> + <li style=font-size:18px><b>چرا تیمتان احتیاجی به استفاده از pull-request ندارد</b> </li> + <p> Pull Request توسط گیتهاب برای مدیریت پروژهای بازمتن معرفی شد تا مدیران این پروژه‌ها راحتتر بتوانند + کمکهای خارج از تیم اصلی را بپذیرند. ولی به مرور زمان بسیاری از تیم ها شروع به استفاده از این امکان برای + افراد داخل تیم کردند و این کار آنقدر رواج پیدا کرد که خیلی ها این کار را به عنوان یک best practice در + نظر می‌گیرند و چون تا به حال راه دیگری برای اطمینان از اینکه کدها بازبینی شوند، ندیده‌اند، تصور می‌کنند + که راه دیگری وجود ندارد. <br> <a + href=https://infrastructure-as-code.com/book/2021/01/02/pull-requests.html + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>مانیتورینگ لینوکس با پرومتئوس و گرافانا</b> </li> + <p> معرفی ابزارهای پرومتئوس و گرافانا؛ نحوه نصب‌شون و اینکه چطوری می‌تونیم خیلی سریع با داکر یک محیط آزمایشی + داشته باشیم که به کمک node exporter متریک‌های سیستم رو استخراج کرده و به اشکال متفاوت نمایش بدیم. <br> + <a href="https://r.t10.pktsrv2.com/tr/cl/uGpvyvesuyEV7Tep__5aqK37Gk8lR0bnZy2DnzzAKPJZ7W3YigbgJ8DvlQCkcRtNf0-079494MvYa3NXQKlm_XXv5pKlSmaJkeoCJUIcGPlCOw6irrHEuuY3wZ2GtVJOPNVsJP6dnu7tDlyAbE5xJQKaABvktb3YtojaR7GCjAICgjuc4gjD6HLJPUgCbL6zyHznr1j1nLy8goIBTvM" + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>گیت‌هاب دوباره به صورت کامل برای ایران در دسترس است</b> </li> + <p> بعد از آنکه در اواسط سال ۲۰۱۹ گیت‌هاب ارائه بخشی عمده‌ای از خدمات خود را به ایران متوقف و حساب کاربری + برنامه‌نویسان ایرانی را محدود کرد، ۵ ژانویه ۲۰۲۱ مدیرعامل گیت‌هاب در پست وبلاگی خبر در دسترس قرار گرفتن + همه گیت‌هاب برای ایران را اعلام کرد. گیت‌هاب اعلام کرد که ۲ سال پیگیر دریافت مجوز از دولت ایالات متحده + بوده تا دوباره خدماتش را برقرار کند و به زودی برای سایر کشورهای تحریم شده نظیر سوریه و کریمه هم این + خدمات به صورت کامل در دسترس قرار خواهند گرفت <br> <a + href=https://github.blog/2021-01-05-advancing-developer-freedom-github-is-fully-available-in-iran/ + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>نگاهی به امروز و فردای WebAssembly</b> </li> + <p> نقطه شروع برای چیز‌هایی که لازمه درمورد وب اسمبلی بدونید تا اون رو دنبال کنید و بیشتر یاد بگیرید <br> <a + href=https://virgool.io/GNULand/everything-about-wasm-qciuv9gq72pl style=font-size:14px>مطالعه مطلب + اصلی</a></p> <br> + <li style=font-size:18px><b>کتابچه شرکت Valve برای کارمندان جدیدش (کمپانی پشت Steam و چند بازی معروف مثل + کانتر)</b> </li> + <p> کمپانی‌هایی که خیلی بزرگ هستند همیشه از جهات مختلفی مورد توجه قرار میگیرن؛ مثلا گاهی نگاه میکنیم مسائل + رو چطوری حل میکنن یا گاهی میبینیم که چه ابزارهایی توسعه داده‌اند و چیزهای این مدلی. ولی این دفعه بیاین و + دفترچه ورود به شرکت Valve رو بخونین و ببینید وقتی یک کارمند جدید وارد شرکت میشه چه اطلاعاتی بهش داده + میشه و چه چیزهایی در اختیارش قرار میگیره. <br> <a + href=https://cdn.cloudflare.steamstatic.com/apps/valve/Valve_NewEmployeeHandbook.pdf + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>افسانه مستندسازی در پروژه های نرم افزاری</b> </li> + <p> اسد صفری توی این ارائه درباره چالش‌های مستندسازی پروژه‌های نرم‌افزاری که در ساختار Agile توسعه داده + میشوند، صحبت میکنه. <br> <a href=https://www.aparat.com/v/sqmQM style=font-size:14px>مطالعه مطلب + اصلی</a></p> <br> + <li style=font-size:18px><b>نگاهی به ملاحظات اخلاقی در طراحی و استفاده از ابزار «ادراکات شخصیتی» شرکت + آی‌بی‌ام</b> </li> + <p> این مطلب نگاهی به نحوه‌ی طراحی و استفاده از سرویس مبتنی بر یادگیری ماشین «ادراکات شخصیتی» شرکت آی‌بی‌ام + میپردازه و تاثیرات اخلاقی و حقوقی‌اش رو بررسی میکنه. نویسنده با مطرح کردن مثال‌هایی، مسائلی مثل سوگیری، + ناکامل بودن مستندات، جعبه سیاه بودن مدل یادگیری ماشین رو مورد سوال قرار میده. <br> <a + href=https://vrgl.ir/4ramN style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>چگونه یک استریم به نمایش در می آید؟</b> </li> + <p> برای اینکه یه ویدئو به صورت لایو از استریمر به مخاطب برسه، یه پروسه سخت افزاری و نرم افزاری لازمه. تو + این مقاله قراره کمی با این مسیر آشنا بشیم و مفاهیم کلی رو دربارش رو بدونیم <br> <a + href=https://vrgl.ir/BGnvW style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>کامپایل و حفاظت از پایتون؛ Cython</b> </li> + <p> فرض کنید کد پایتون شما قرار است در محلی بکارگیری شود که مدیریت آن با شما نیست، طبیعتا در این حالت باید + از کد خود حفاظت کنید. محافظت از سورس‌کد پایتون کار پیچیده‌ای نبوده و ابزار یا (بهتر بگویم) کتابخانه‌ای + وجود دارد به اسم Cython. <br> <a href=https://vrgl.ir/8tDMP style=font-size:14px>مطالعه مطلب اصلی</a> + </ul> + <hr> + <p style="font-size:13px;font-family:'Samim',sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>وحید نادری،</b> <b>مارک پشم‌فروش،</b> <b>حامد سعیدی،</b> <b>هادی + اعظمی،</b> <b>امیرحسین بقایی،</b> <b>رویا پاکزاد،</b> <b>حسین ناصری،</b> <b>سیدمصطفی افزونی</b> در تهیه + محتوا کمک کردند. + <hr> <span> + <p style=font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238><img + src=https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png><br> + ارسال شده توسط <a href=https://pakat.net />پاکت</a> + <p style=font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238><a + href=https://pakat.net />سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف + sota10 می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید + </span> + </p> + </body> + + </html> + + +شماره خبرنامه 50.html + +urn:uuid:986236a9-a367-ff9d-f22f-15258fbf1508 +2022-03-10T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۰ - پنجشنبه، ۱۹ اسفند ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/UcBch"><b>انواع index در پستگرس</b></a><br/>پستگرس انواع مختلفی از indexهارو دارد، که تو این مطلب با این موارد آشنا میشم، تا بدونیم کی از کدوم یکی باید استفاده کنیم. این مطلب نسخه صوتی هم داره. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/doctave/how-google-twitter-and-spotify-built-a-culture-of-documentation-47a1ff22911"><b>گوگل، توییتر و اسپاتیفای چطور فرهنگ «مستندسازی» را ساختند؟</b></a><br/>این مقاله نگاهی به نکات مستندسازی در این سه شرکت کرده و ضمن مطرح کردن مشکلاتی که داشتند، راه‌حل‌هایی که برای فرهنگ‌سازی در این شرکت‌ها استفاده شده‌اند را معرفی کرده است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/HollyAdele/awesome-programming-for-kids"><b>منابع آموزش برنامه‌نویسی به کودکان</b></a><br/>این لیست، مجموعه‌ای از نرم‌افزارهای مربوط به آموزش برنامه‌نویسی به کودکان در سه رده سنی گردآوری کرده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/durgeshsamariya/awesome-github-profile-readme-templates"><b>از READMEهای قشنگ تر روی پروفایل گیت هابتون استفاده کنید</b></a><br/>اگر میخواید روی readme پروفایل گیت هابتون المان های باحالی بیارید توی این مخزن یه سری readmeهای آماده که بقیه استفاده کردن هست دریافت کنید و قشنگش کنید + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://link.springer.com/article/10.1007/s10462-018-09679-z"><b>برترین ابزارهای یادگیری ماشین و یادگیری عمیق</b></a><br/>در مقاله زیر در که در سایت Springer منتشر گردیده با آخرین ابزارها و کتابخانه‌های تخصصی یادگیری ماشین و یادگیری عمیق به همراه نقاط قوت و ضعف آنها آشنا خواهید شد. شناخت دقیق ابزارها و به طبع انتخاب درست در پروژه‌ها یکی از وظایف کلیدی یک متخصص ارشد علم داده می‌باشد. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>وحید فتحی،</b> + + + <b>حامد سعیدی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 37.html + +urn:uuid:30055b37-a488-a33e-ef18-ad8f707a401a +2021-10-30T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۳۷ - شنبه، ۰۸ آبان ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://containrrr.dev/watchtower/"><b>آپدیت کانتینرها به وسیله واچ‌تاور</b></a><br/>گاهی شرایطی پیش‌میاد که نمیتونیم از بیرون به سروری متصل بشیم و درخواست آپدیت یا به‌روزرسانی یک کانتینر رو بدیم. در این شرایط باید از داخل سرور به بیرون متصل بشیم و در صورت نیاز به‌روز‌رسانی‌های لازم رو انجام بدیم. ابزار خوبی که برای آپدیت کانتینرها در این شرایط ساخته‌شده، نامش Watchtower هست. در صورتی که شما هم شرایط مشابهی دارید شاید این ابزار با امکانات خوبی که داره گره از کارتون باز کنه به‌جای این که بخواید این ساختار رو مجدد خودتون اختراع کنید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://blog.gougousis.net/the-inner-workings-of-an-event-loop-the-reactphp-case/"><b>ایونت لوپ‌ها چطور کار میکنند؟ (با بررسی ابزار ReactPHP)</b></a><br/>در این مطلب نویسنده تلاش کرده توضیحاتی رو درباره مفهوم Event Loop ارائه کنه و مفاهیم عملی رو با ابزار محبوبی در دنیای PHP یعنی ReactPHP توضیح بده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://jakearchibald.com/2014/offline-cookbook/"><b>آشنایی با دنیای برنامه‌های آفلاین و سرویس‌ورکرها</b></a><br/>در این مطلب که تصویرسازی‌های خوبی هم داره، نویسنده تلاش کرده مباحث و امکانات و راه‌حل‌های چالش‌های مرسوم در دنیای اپلیکیشن‌های آفلاین وب رو توضیح بده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://blog.cloudflare.com/october-2021-facebook-outage/"><b>در حادثه اخیر، فیسبوک چطور به صورت موقت از اینترنت محو شد؟</b></a><br/>در این نوشته از وبلاگ Cloudflare درباره حادثه اکتبر ۲۰۲۱ که منجر به قطع سرویس‌های فیسبوک در دنیا شد و تاثیر آن بر اینترنت صحبت شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/QStdm"><b>آموزش مجوز های ACL در Linux</b></a><br/>چطوری دسترسی دقیق تری در لینوکس به کاربران بدهیم! + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>حامد سعیدی،</b> + + + <b>Majid Ganji.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 3.html + +urn:uuid:2ff85b15-7093-0f54-cdac-b7de3a2e20ec +2021-01-21T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۳</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office"> + + <head> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta http-equiv="Content-Type" content="text/html; " /> + <meta name="x-apple-disable-message-reformatting" /> + <meta name="apple-mobile-web-app-capable" content="yes" /> + <meta name="apple-mobile-web-app-status-bar-style" content="black" /> + <meta name="format-detection" content="telephone=no" /> + <title></title> + <link href="https://cdnjs.cloudflare.com/ajax/libs/vazir-font/27.1.0/font-face.css" rel="stylesheet" + type="text/css" /> + <style type="text/css"> + /* Resets */ + .ReadMsgBody { + width: 100%; + background-color: #ebebeb; + } + + .ExternalClass { + width: 100%; + background-color: #ebebeb; + } + + .ExternalClass, + .ExternalClass p, + .ExternalClass span, + .ExternalClass font, + .ExternalClass td, + .ExternalClass div { + line-height: 100%; + } + + a[x-apple-data-detectors] { + color: inherit !important; + text-decoration: none !important; + font-size: inherit !important; + font-family: inherit !important; + font-weight: inherit !important; + line-height: inherit !important; + } + + body { + -webkit-text-size-adjust: none; + -ms-text-size-adjust: none; + } + + body { + margin: 0; + padding: 0; + } + + .yshortcuts a { + border-bottom: none !important; + } + + .rnb-del-min-width { + min-width: 0 !important; + } + + /* Add new outlook css start */ + .templateContainer { + max-width: 590px !important; + width: auto !important; + } + + /* Add new outlook css end */ + + /* Image width by default for 3 columns */ + img[class="rnb-col-3-img"] { + max-width: 170px; + } + + /* Image width by default for 2 columns */ + img[class="rnb-col-2-img"] { + max-width: 264px; + } + + /* Image width by default for 2 columns aside small size */ + img[class="rnb-col-2-img-side-xs"] { + max-width: 180px; + } + + /* Image width by default for 2 columns aside big size */ + img[class="rnb-col-2-img-side-xl"] { + max-width: 350px; + } + + /* Image width by default for 1 column */ + img[class="rnb-col-1-img"] { + max-width: 550px; + } + + /* Image width by default for header */ + img[class="rnb-header-img"] { + max-width: 590px; + } + + /* Ckeditor line-height spacing */ + .rnb-force-col p, + ul, + ol { + margin: 0px !important; + } + + .rnb-del-min-width p, + ul, + ol { + margin: 0px !important; + } + + /* tmpl-2 preview */ + .rnb-tmpl-width { + width: 100% !important; + } + + /* tmpl-11 preview */ + .rnb-social-width { + padding-right: 15px !important; + } + + /* tmpl-11 preview */ + .rnb-social-align { + float: right !important; + } + + /* Ul Li outlook extra spacing fix */ + li { + mso-margin-top-alt: 0; + mso-margin-bottom-alt: 0; + } + + /* Outlook fix */ + table { + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + + /* Outlook fix */ + table, + tr, + td { + border-collapse: collapse; + } + + /* Outlook fix */ + p, + a, + li, + blockquote { + mso-line-height-rule: exactly; + } + + /* Outlook fix */ + .msib-right-img { + mso-padding-alt: 0 !important; + } + + @media only screen and (min-width:590px) { + + /* mac fix width */ + .templateContainer { + width: 590px !important; + } + } + + @media screen and (max-width: 360px) { + + /* yahoo app fix width "tmpl-2 tmpl-10 tmpl-13" in android devices */ + .rnb-yahoo-width { + width: 360px !important; + } + } + + @media screen and (max-width: 380px) { + + /* fix width and font size "tmpl-4 tmpl-6" in mobile preview */ + .element-img-text { + font-size: 24px !important; + } + + .element-img-text2 { + width: 230px !important; + } + + .content-img-text-tmpl-6 { + font-size: 24px !important; + } + + .content-img-text2-tmpl-6 { + width: 220px !important; + } + } + + @media screen and (max-width: 480px) { + td[class="rnb-container-padding"] { + padding-left: 10px !important; + padding-right: 10px !important; + } + + /* force container nav to (horizontal) blocks */ + td.rnb-force-nav { + display: inherit; + } + + /* fix text alignment "tmpl-11" in mobile preview */ + .rnb-social-text-left { + width: 100%; + text-align: center; + margin-bottom: 15px; + } + + .rnb-social-text-right { + width: 100%; + text-align: center; + } + } + + @media only screen and (max-width: 600px) { + + /* center the address & social icons */ + .rnb-text-center { + text-align: center !important; + } + + /* force container columns to (horizontal) blocks */ + th.rnb-force-col { + display: block; + padding-right: 0 !important; + padding-left: 0 !important; + width: 100%; + } + + table.rnb-container { + width: 100% !important; + } + + table.rnb-btn-col-content { + width: 100% !important; + } + + table.rnb-col-3 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-bottom: 10px; + padding-bottom: 10px; + /*border-bottom: 1px solid #eee;*/ + } + + table.rnb-last-col-3 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + } + + table.rnb-col-2 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-bottom: 10px; + padding-bottom: 10px; + /*border-bottom: 1px solid #eee;*/ + } + + table.rnb-col-2-noborder-onright { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-bottom: 10px; + padding-bottom: 10px; + } + + table.rnb-col-2-noborder-onleft { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-top: 10px; + padding-top: 10px; + } + + table.rnb-last-col-2 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + } + + table.rnb-col-1 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + } + + img.rnb-col-3-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-2-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-2-img-side-xs { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-2-img-side-xl { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-1-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-header-img { + /**max-width:none !important;**/ + width: 100% !important; + margin: 0 auto; + } + + img.rnb-logo-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + td.rnb-mbl-float-none { + float: inherit !important; + } + + .img-block-center { + text-align: center !important; + } + + .logo-img-center { + float: inherit !important; + } + + /* tmpl-11 preview */ + .rnb-social-align { + margin: 0 auto !important; + float: inherit !important; + } + + /* tmpl-11 preview */ + .rnb-social-center { + display: inline-block; + } + + /* tmpl-11 preview */ + .social-text-spacing { + margin-bottom: 0px !important; + padding-bottom: 0px !important; + } + + /* tmpl-11 preview */ + .social-text-spacing2 { + padding-top: 15px !important; + } + + /* UL bullet fixed in outlook */ + ul { + mso-special-format: bullet; + } + + } + + @media screen { + body { + font-family: 'Vazir', 'Tahoma', Geneva, sans-serif; + } + } + </style> + <!--[if gte mso 11]><style type="text/css">table{border-spacing: 0; }table td {border-collapse: separate;}</style><![endif]--> + <!--[if !mso]><!--> + <style type="text/css"> + table { + border-spacing: 0; + } + + table td { + border-collapse: collapse; + } + </style> + <!--<![endif]--> + <!--[if gte mso 15]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--> + <!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--> + </head> + + <body> + + <table border="0" align="center" width="100%" cellpadding="0" cellspacing="0" class="main-template" + bgcolor="#f9fafc" style="background-color: rgb(249, 250, 252);"> + + <tbody> + <tr> + <td align="center" valign="top"> + <!--[if gte mso 9]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="590" style="width:590px;"> + <tr> + <td align="center" valign="top" width="590" style="width:590px;"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="590" class="templateContainer" + style="max-width:590px!important; width: 590px;"> + <tbody> + <tr> + + <td align="center" valign="top"> + + <table class="rnb-del-min-width" width="100%" cellpadding="0" border="0" + cellspacing="0" style="min-width:590px;" name="Layout_0" id="Layout_0"> + <tbody> + <tr> + <td class="rnb-del-min-width" valign="top" align="center" + style="min-width:590px;"> + <a href="#" name="Layout_0"></a> + <table width="100%" cellpadding="0" border="0" height="38" + cellspacing="0"> + <tbody> + <tr> + <td valign="top" height="38"> + <img width="20" height="38" + style="display:block; max-height:38px; max-width:20px;" + alt="" + src="http://r.t10.pktsrv2.com/im/130771/11996271bd9eaa67a70ecb0a888804fe4a7c5dd570282a89a399bb94b9584314.gif?e=ZvwLLc5Gmj4zuJdw_MUdi9K-DQCMEo0KOpjOFyUy3sQviUh5saQtrEK1a7yFUZSUdrNnZETt4D5of2f12UQAqQzmSweDc1c6NBXNOnsso37ajmjyarFy0j0SH7EG1Ty3xLKwY1zh9gM8wmSMkflVWgs7CNOZJ_BhgeFml0o7vAxab9PDsBlAKZxoP_Z2Rw" + sib_img_id="0" /> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + <tr> + + <td align="center" valign="top"> + + <div + style="background-color: rgb(255, 255, 255); border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;"> + + <!--[if mso]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> + + <!--[if mso]> + <td valign="top" width="590" style="width:590px;"> + <![endif]--> + + <table width="100%" cellpadding="0" border="0" cellspacing="0" + name="Layout_2" id="Layout_2"> + <tbody> + <tr> + <td align="center" valign="top"><a href="#" name="Layout_2"></a> + <table border="0" width="100%" cellpadding="0" + cellspacing="0" class="rnb-container" bgcolor="#ffffff" + style="height: 0px; background-color: rgb(255, 255, 255); border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; border-collapse: separate; padding-left: 20px; padding-right: 20px;"> + <tbody> + <tr> + <td class="rnb-container-padding"> + + <table border="0" cellpadding="0" + cellspacing="0" + class="rnb-columns-container" + align="center" style="margin:auto;"> + <tbody> + <tr> + + <th class="rnb-force-col" + align="center" + style="text-align: center; font-weight: normal"> + + <table border="0" + cellspacing="0" + cellpadding="0" + align="center" + class="rnb-col-1"> + + <tbody> + <tr> + <td height="10"> + </td> + </tr> + + <tr> + <td + style="font-family:Vazir,Tahoma,Geneva,sans-serif; color:#3c4858; text-align:center;"> + + <span + style="color:#3c4858;"><br /> + <strong><span + style="font-size:24px;">خبرنامه + مهندسان + نرم‌افزار<br /> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شماره ۳ - پنجشنبه، ۰۲ بهمن ۹۹ + </h3> + </span></strong></span> + </td> + </tr> + <tr> + <td height="10"> + </td> + </tr> + </tbody> + </table> + </th> + </tr> + </tbody> + </table> + </td> + </tr> + + </tbody> + </table> + + </td> + </tr> + + </tbody> + </table> + <!--[if mso]> + </td> + <![endif]--> + + <!--[if mso]> + </tr> + </table> + <![endif]--> + + </div> + </td> + </tr> + <tr> + + <td align="center" valign="top"> + + <div + style="background-color: rgb(255, 255, 255); border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;"> + + <!--[if mso]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> + + <!--[if mso]> + <td valign="top" width="590" style="width:590px;"> + <![endif]--> + <table class="rnb-del-min-width" width="100%" cellpadding="0" border="0" + cellspacing="0" style="min-width:100%;" name="Layout_8"> + <tbody> + <tr> + <td class="rnb-del-min-width" align="center" valign="top"> + <a href="#" name="Layout_8"></a> + <table width="100%" border="0" cellpadding="0" + cellspacing="0" class="rnb-container" bgcolor="#ffffff" + style="background-color: rgb(255, 255, 255); padding-left: 20px; padding-right: 20px; border-collapse: separate; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; border-bottom-width: 0px; border-bottom-color: rgb(200, 200, 200); border-bottom-style: none;"> + + <tbody> + <tr> + <td height="20" + style="font-size:1px; line-height:20px; mso-hide: all;"> +  </td> + </tr> + <tr> + <td valign="top" class="rnb-container-padding" + align="left"> + + <table width="100%" border="0" + cellpadding="0" cellspacing="0" + class="rnb-columns-container"> + <tbody> + <tr> + <th class="rnb-force-col" + style="text-align: left; font-weight: normal; padding-right: 0px;" + valign="top"> + + <table border="0" + valign="top" + cellspacing="0" + cellpadding="0" + width="100%" + align="left" + class="rnb-col-1"> + + <tbody> + <tr> + <td + style="font-size:14px; font-family:Vazir,Tahoma,Geneva,sans-serif, sans-serif; color:#3c4858;"> + <div dir="rtl" + style="text-align:right;"> + <div> + <span + style="font-size:13px;"><span + style="color:#696969;">به + خبرنامه + SoftwareTalks + خوش + آمدید. + این + یک + خبرنامه + هفتگی + ایمیلی + است + که + در + آن + هر + هفته + لینک‌هایی + شامل + محتوای + مرتبط + با + توسعه + نرم‌افزار + را + برای + مشترکین + ایمیل + می‌کنیم. + این + یک + پروژه + اپن‌سورس + است + و + شما + هم + می‌توانید + از + طریق + </span><a + href="https://r.t10.pktsrv2.com/mk/cl/f/GiJh1W4OQPth5Xlr3-JLJt6vXR8tmckQMyca0mc-Y6aPtuB_BAqy3wx8_m8cUWCQf6LDPueJ1eSRAAhA2RLdV3kTYW4nvtQB6Q2STdPEsMcJMhDMGG_IsZlRqQZW1cy5wLpdMoJsu8XK9BKXrQqD9wVTsIq5Oe0RkM5qLwbY8maLxmBQ16wrkLu0qDjRaC6ZafTjs-fFn60QHG4MiHLcy2I" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="0"><span + style="color:#696969;">ثبت + issue + جدید + در + مخزن + گیت‌هاب + پروژه</span></a><span + style="color:#696969;"> + به + ما + در + تهیه + محتوای + خبرنامه‌های + بعدی + کمک + کنید. + اگر + خبرنامه + را + مفید + می‌دانید، + اشتراک + در + آن + را + به + دوستان + خود + پیشنهاد + کنید. + صفحه + ثبت + اشتراک + جدید: </span><a + href="https://r.t10.pktsrv2.com/mk/cl/f/Ka5ASNEtx-5lAC60-SIcDQmWVZNnxBqx1VJG7gR7Tag0wE8bUM8lAKKEQf0OLZgWgf0zQZAeeQJB0ffpLAo0jX3hauNXw14j4Rbq5mW4Gv2RNZKKdNkjJ-h0m8Oem7aLeMs4eKQIKt16JilTlL_1qvI2w_Xj0eS9Q6u6C6E" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="1"><span + style="color:#696969;">https://newsletter.softwaretalks.ir</span></a></span> + </div> + + <div>  + </div> + + <ul> + <li><a href="https://r.t10.pktsrv2.com/mk/cl/f/XQ3F8B3UDwY4ewRqSBDEn4rO_-GNuiFZZtU8kCopFRPvlmT9hufDFMj0iSnvcvLzCXvz-02jNdwhjm8cGrhrkhclp7N-phznUIxZOb5DnVJqpmhIz24KWxnwED5d8W8miQ5Qg0OROM1gq2kquz-7sPv_t_5AKk-DoYQFZ3C3Cuqfio5SORigXPb6ndU-qdcSQh-mOWV2RZN7Bw" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="2">از + نرم‌افزار + آزاد؛ + تا + آزادی + نرم‌افزار. + مروری + بر + مفهوم + نرم‌افزار</a> + </li> + </ul> + + <div> + مروری + بر + مفهوم + نرم‌افزار + و + دید‌های + مختلف + به + آزادی + نرم‌افزار. + همچنین + بررسی + وضعیت + نرم‌افزار + آزاد + در + ایران<br /> +   + </div> + + <ul> + <li><a href="https://r.t10.pktsrv2.com/mk/cl/f/ew9DCE6AcxhOqTQ7NrD35vGBsFRSYX0zdKbj6ff5zi4-5aV8cNxOuZGecYT7yZrMeg8oWjyP-fUKLomZLeeQ_fALWuZqD456TNgXmAWpwKP3Is_BON-x_z3RzVm4hpegzYVNjIRqH59tzxTlIhsB4JAnBeHy8FjNZ11eH5G8s9F2rUxr7TCCDH81RA" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="3">نکته‌های + مهم + کتاب + کد + تمیز</a> + </li> + </ul> + + <div> + کتاب + Clean + Code + نوشته‌ی + Robert + C. + Martin + کتابی + نام‌آشنا + برای + اکثر + ماست + و + خواندنش + به + هر + توسعه‌دهنده‌ی + نرم‌ا‌فزاری + که + علاقمند + به + نوشتن + کدهای + بهتر + و + پربازده‌تر + است، + توصیه + می‌شود. + اگر + این + کتاب + را + نخواندید، + الان + فرصت + خوبی + است + که + به + نکات + مهم + کتاب + در + این + ریپازیتوری + گیت‌هاب + نگاهی + بیاندازید.<br /> +   + </div> + + <ul> + <li><a href="https://r.t10.pktsrv2.com/mk/cl/f/Ks0nmrzSrv8iWDqWfB6aRYWPf-MkLxcv6-wDw88y9hksUoqHL47Q9jcYRxQeRR5kHtjlsuzbGWYOz0ZZQO7CdgUFZpsfFY7V9mGvNuM66n6iFKRuhvK--COB093MSekl8QbSv1h1dtPUYBCBLdfRO2I" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="4">مهاجرت + از + Docker + به + Docker + compose</a> + </li> + </ul> + + <div>توی + این + مقاله + قراره + از + Docker + مهاجرت + کنیم + به + Docker + compose + و + ببینیم + که + چقدر + کارمون + راحت + تر + میشه + برای + اجرای + همزمان + چند + پروژه<br /> +   + </div> + + <ul> + <li><a href="https://r.t10.pktsrv2.com/mk/cl/f/TAjlehRutaszQXDHrB5GHgL_YCHHAOt8vJxtbaaoQM6zhISa6ZwBajTOEfMDYmEjmQdODKfOl7uxHCH01SujosuHaapcZ9cqzKNZpDfUh-IlTZUWhIsf4EutAmm2tH7pCnqnjUcJp_ZkB6IDf8zbsFGyH0lWW3kXr0j0or-ZPmUoEmW7INDGqSijgRyhMpdh9sDBenHeplNXgcyQ1FzwDl4c8wYJuhrV" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="5">ویدئوی + آموزش + زبان + awk</a> + </li> + </ul> + + <div>AWK + یک + زبان + برنامه‌نویسی + مفسری + است + که + برای + پردازش + متن + طراحی + شده + و + عموماً + به + عنوان + ابزاری + برای + گزارش‌گیری + و + استخراج + داده‌ها + مورد + استفاده + قرار + می‌گیرد. + این + زبان + برنامه‌نویسی، + تبدیل + به + یکی + از + ویژگی‌های + استاندارد + در + سیستم‌عامل‌های + خانواده + یونیکس + شده‌است. + در + این + ویدئو + مبانی + کار + با + این + زبان + و + چند + نمونه + گزارش‌گیری + و + همین + طور + ساختن + چندبرنامهٔ + کوچک + در + کامندلاین + آموزش + داده + شده + است + </div> + + <div>  + </div> + + <ul> + <li><a href="https://r.t10.pktsrv2.com/mk/cl/f/wNXxLQg1yIPa_99xvAu0xPn2LqaS4QGo3ZMOs1yUROmw6_s3zYU1O6E8nv6yxThHJVFFvI6mMIlxW6DW3FRnuqfI4G8hxgSwWQkY9bnX2VTdF0GEHS9eh1JYU8b0hJW5bvBVGOhOTkTCUaX18NMTPuWZJqTPeetdoBrqbWW25_EzGg" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="6">واژه + نامه + کاملی + از + اصطلاحات + جلسه‌های + حرفه‌ای + بخوانید</a> + </li> + </ul> + + <div>یکی + از + مواردی + که + قبل + از + جلسات + مخصوصا + جلسات + بین + المللی + باید + بدانید + اصطلاحات + و + کلمات + اختصاری + هست + که + دونستن + اونها + باعث + میشه + تا + حد + قابل + قبولی + بتونید + با + محیط + آشنا + باشید + اگر + بار + اولتون + هست + که + توی + یه + جلسه + ی + تیمی + خارجی + می + خواید + شرکت + کنید + احتمالا + خیلی + بدردتون + میخوره؛ + البته + تیم + های + خفن + ایرانی + هم + از + این + اصطلاحات + بی + بهره + نیستن<br /> +   + </div> + + <ul> + <li><a href="https://r.t10.pktsrv2.com/mk/cl/f/eR3nK06RgmLdfpjmfdZ8gR12pvNE2GQEHVarccDIYLttj9M4oxVAnxLZOHJ_juLfIzX6LQRopfszjyuLF87OQgiwTIALho4KfWzey8s5zk7pRcNPopvxFeEu1mKRLB7jF1Y0MTk7sjl0h4RMOef5vE8" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="7">مفهوم + Reactive + Programming + به + زبان + ساده</a> + </li> + </ul> + + <div>و + Reactive + !یکی + از + overloaded + ترین + کلمات + دنیای + امروز + برنامه + نویسی! + در + این + پست + میخوایم + Reactive + Programming + رو + خیلی + ساده + و + خودمونی + معرفی + کنیم... + </div> + + <div>  + </div> + + <ul> + <li><a href="https://r.t10.pktsrv2.com/mk/cl/f/dCoAn3jF7UXX6Ree0eTjmISsA7ZPJId6qXs6lhbFUYgEW1GEGn02IGkctyt92IYrCeeIoMv92k0fiL3jfuMMhyuifDwj_BNdHsbQCfRUZ58vAqX8ZIL2b4_oHi6bqhH82gNMjX_yWyY_Ax-IJyzJUHY" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="8">سرویس + پایتون + Flask + در + محیط + عملیاتی + (Production)</a> + </li> + </ul> + + <div> + فلسک + یا + Flask + یکی + از + کتابخانه‌های + پایتون + برای + پیاده‌سازی + وب‌سرویس + و + API + است + که + بعنوان + یک + میکروفریمورک + ساده + اما + سبک + محسوب + می‌شود. + در + این + نوشتار + به + چگونگی + استفاده + از + Flask + در + محیط + Production + (محیط + عملیاتی + یا + محصول) + با + استفاده + از + Reverse + Proxy + و + gunicorn + (بعنوان + WSGI) + و + بصورت + یک + سرویس + لینوکسی + پرداخته + شده + است. + </div> + + <div>  + </div> + + <div> + ----- + </div> + + <div> در + این + شماره + از + خبرنامه، + دوستان + خوبی + به + نام‌های + ابراهیم + نجاتی، + مرتضی + اسدی، + علی + ناصری، + وحید + نایینی، + Amir + Shokri، + محمد + واحدی، + سیدمصطفی + افزونی + در + تهیه + محتوا + کمک + کردند + </div> + </div> + </td> + </tr> + </tbody> + </table> + + </th> + </tr> + </tbody> + </table> + </td> + </tr> + <tr> + <td height="20" + style="font-size:1px; line-height:20px; mso-hide: all;"> +  </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + <!--[if mso]> + </td> + <![endif]--> + + <!--[if mso]> + </tr> + </table> + <![endif]--> + + </div> + </td> + </tr> + <tr> + + <td align="center" valign="top"> + + <div style="background-color: rgb(249, 250, 252);"> + + <table class="rnb-del-min-width rnb-tmpl-width" width="100%" cellpadding="0" + border="0" cellspacing="0" style="min-width:590px;" name="Layout_6" + id="Layout_6"> + <tbody> + <tr> + <td class="rnb-del-min-width" align="center" valign="top" + bgcolor="#f9fafc" + style="min-width:590px; background-color: #f9fafc; text-align: center;"> + <a href="#" name="Layout_6"></a> + <table width="590" class="rnb-container" cellpadding="0" + border="0" align="center" cellspacing="0" + bgcolor="#f9fafc" + style="padding-right: 20px; padding-left: 20px; background-color: rgb(249, 250, 252);"> + <tbody> + <tr> + <td height="10" + style="font-size:1px; line-height:1px; mso-hide: all;"> +  </td> + </tr> + <tr> + <td> + <div + style="font-size:14px; color:#888888; font-weight:normal; text-align:center; font-family:Vazir,Tahoma,Geneva,sans-serif;"> + <div dir="rtl" + style="text-align: right;"><img + alt="" + class="rnb-header-img element-has-options pull-left rnb-img-el" + data-options-id="element-tmpl-4-img-0" + hspace="0" imageonload="" + ng-if="col.img.source != url" + src="http://r.t10.pktsrv2.com/im/130771/ef3c54016f346c2b852612d43b0eb0e6b910b30b49c627eb24b11a1be1f5d1c2.png?e=0dv_5T3wId5_mhPK6pJPm5EyoVtKMS9Jab06_mRNQAkbn5i2C72vfw5wOAp5dVg92T9UeXIvQ21anKXkkfH2Fe9ytUK_h7EYyyj0E5_q6kw9An9_ajbsFiCfqPNeaF8Or9H36haWG_pytG3Z5dRZjtLmAdvSo5-6KmDF1SNxBK17ANukKvdFV39dULlzMlWd1ZlYFt6krU00BKzuAakV9nDAH9eq3qXj0dILREo" + style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; display: block; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; float: left;" + vspace="0" width="234" + sib_img_id="1" /></div> + + <div dir="rtl" + style="text-align: right;"><b>ارسال + شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/FxNSBQVKyX8aBE7KE6jJPfI4J9SRdsBaCJ-wA6cvhp6LEiaFWRKUt0gbm7Vv2lK7VMnoOW-mC9rlK_1nX3e-TTE3tXRNMXqYFlddPrNCifVDLpO6QOqYrEN66RPuOgxoPbh8IuOcjQw3nsg" + style="text-decoration: underline; color: rgb(102, 102, 102);" + sib_link_id="9">پاکت</a></b> + </div> + + <div dir="rtl" + style="text-align: right;">سرویس + پاکت اسپانسر ارسال ایمیلهای این + خبرنامه است.</div> + + <div dir="rtl" + style="text-align: right;"><b>با کد + تخفیف sota10 میتوانید از ۱۰ درصد + تخفیف در خرید پلنهای پاکت + بهره‌مند شوید</b></div> + </div> + </td> + </tr> + <tr> + <td height="10" + style="font-size:1px; line-height:1px; mso-hide: all;"> +  </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + + </div> + </td> + </tr> + </tbody> + </table> + <!--[if gte mso 9]> + </td> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + + </body> + + </html> + + + +شماره خبرنامه 31.html + +urn:uuid:0fcfb185-0fc9-20a3-667b-d42eb5d3178a +2021-09-17T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="background-color: #000;"> + <div style="max-width: 680px; margin: 0 auto;color: #fff;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: red;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: red;"> + شمارهٔ ۳۱ - جمعه، ۲٦ شهریور ۱۴۰۰ + </h3> + <div> <p style="text-align: center; color: red;font-family: 'Samim', sans-serif;"><small>این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است</small></p> </div> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://www.kamilgrzybek.com/design/modular-monolith-primer/"><b>طراحی ماژولار مونولتیک</b></a><br/>در این سلسله مطالب، نویسنده تلاش کرده تجربیات و نظراتش رو درباره طراحی ماژولار (قطعه قطعه) نرم‌افزارهای مونولتیک بنویسه که خوندنش خالی از لطف نیست و میتونه ماها رو با مباحث یا کلمات کلیدی جدیدی آشنا بکنه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://martinfowler.com/articles/ship-show-ask.html"><b>Ship / Show / Ask</b></a><br/>مارتین فولر در این نوشته به معرفی شیوه branching تحت عنوان Ship Show Ask می‌پردازد. در این شیوه قانون این است که Code Review یا تایید برای ادغام شدن همه Pull Requestها لازم نیست و افراد می‌توانند PRهای خودشان را ادغام کنند. branch ها نیز باید به صورت مداوم rebase شوند. فولر در این نوشته بخش‌های مختلف این شیوه را توضیح می‌دهد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://www.stxnext.com/blog/will-artificial-intelligence-replace-developers/"><b>هوش مصنوعی جایگزین مهندس های نرم افزار هم می شود؟</b></a><br/>هوش مصنوعی که این روزها خیلی بین آدم ها اسمش هست و در مورد اون حرف میزنن این پیشرفت های زیادی کرده یه روز هوش مصنوعی نقاشی میکشه یه روز آهنگ میسازه یه روز فیلم تولید میکنه اما ممکنه جایگزین برنامه نویس ها هم بشه؟؟؟ برای مطالعه ی کامل روی لینک محتوا بزنید ... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://next.github.com/projects/repo-visualization"><b>Visualize کردن کد مخازن در گیت‌هاب</b></a><br/>نمایش کل ساختار یک پروژه در یک نگاه تصویری + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>حامد سعیدی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a style="color: red" href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a style="color: red" href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"> <a style="color: red" href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </div> + </body> +</html> + + +شماره خبرنامه 19.html + +urn:uuid:7a9ff62b-9fac-dd90-b8e3-0a97173b71af +2021-06-10T00:00:00+00:00 +<!DOCTYPE html> +<html dir="rtl" lang="fa"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + </head> + + <body style="max-width: 680px; margin: 0 auto"> + <div style="text-align: center"> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) + format("truetype"); + font-weight: 400; + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) + format("truetype"); + font-weight: 700; + } + + ul { + padding: 0 25px; + } + </style> + <br /><br /> + <img + alt="Softwaretalks" + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + style=" + margin: 2.1em auto; + display: block; + width: 130px; + border-radius: 5px; + " + /> + <h1 + style=" + font-size: 25px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + font-weight: 700; + color: #263238; + " + > + خبرنامهٔ Softwaretalks + </h1> + <h3 + style=" + font-size: 18px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + color: #263238; + " + > + شمارهٔ ۱۹ - پنجشنبه، ۲۰ خرداد ۱۴۰۰ + </h3> + <hr /> + <ul + style=" + text-align: right; + font-family: Samim, sans-serif; + direction: rtl; + " + > + <a + href="https://dev.to/opinionatedpie/5-developer-tools-for-detecting-and-fixing-security-vulnerabilities-h1j" + ></a> + <li style="font-size: 18px"> + <a + href="https://dev.to/opinionatedpie/5-developer-tools-for-detecting-and-fixing-security-vulnerabilities-h1j" + ><b>ابزارهایی برای کشف و رفع آسیب‌پذیری‌های امنیتی در کدها</b> + </a> + <p> + نویسنده ۵ ابزار و سرویس برای کشف و رفع آسیب‌پذیری‌های امنیتی + (security vulnerabilities) را معرفی کرده. در کامنت‌های نوشته هم + دیگران ابزارهای مورد استفاده‌شان را معرفی کرده‌اند + </p> + <br /> + <a + href="https://dudu-cohen.medium.com/optimizing-bugs-fix-policy-49838be8a8a1" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://dudu-cohen.medium.com/optimizing-bugs-fix-policy-49838be8a8a1" + ><b>بهینه‌سازی سیاست رفع باگ</b> + </a> + <p> + در این مقاله، نویسنده درباره یک روش ترکیبی بهینه برای به حداقل + رساندن باگ‌های باز بر اساس Zero Bug Policy صحبت می‌کند و به صورت + مرحله به مرحله آن را توضیح می‌دهد + </p> + <br /> + <a + href="https://twitter.com/Heartless188/status/1401515689001701386" + ></a> + </li> + <li style="font-size: 18px"> + <a href="https://twitter.com/Heartless188/status/1401515689001701386" + ><b>اگر زیاد پشت میز هستین، به این نکات توجه کنید</b> + </a> + <p> + به عنوان کسی که کارِش هشت‌ساعت در روز با لپ‌تاپه، تو این رشتو میخوام + آسیب‌هایی که کار کردن با لپ‌تاپ به مدت طولانی به بدن می زنه، و راه + هایی برای جلوگیریش رو بگم. + </p> + <br /> + <a href="https://twitter.com/iam_vee/status/1400102638943866880"></a> + </li> + <li style="font-size: 18px"> + <a href="https://twitter.com/iam_vee/status/1400102638943866880" + ><b + >قبل از اشتراک‌گذاری فایل‌های تصویری، به این چیزها هم توجه کنید</b + > + </a> + <p> + اگر تصویری رو در اینترنت به اشتراک میگذارید، خوبه که یک سری نکات رو + بهش توجه کنید. نکاتی که به حفظ حریم خصوصی‌مون کمک میکنه. وحید نائینی + در این رشتوی توییتری نکات جالبی رو به اشتراک گذاشته. + </p> + <br /> + <a href="https://vrgl.ir/iopcy"></a> + </li> + <li style="font-size: 18px"> + <a href="https://vrgl.ir/iopcy" + ><b>چگونگی طراحی یک برنامه وب: معماری نرم‌افزار</b> + </a> + <p> + معماری نرم‌افزار یک برنامه یا سیستم محاسباتی، ساختار یا ساختارهای آن + سیستم محاسباتی است که خصوصیات قابل رویت از بیرون، عناصر و ارتباطات + بین آن‌ها را نشان می‌دهد. + </p> + </li> + </ul> + <hr /> + <p + style=" + font-size: 13px; + font-family: Samim, sans-serif; + direction: rtl; + text-align: right; + " + > + تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: <b>حامد سعیدی،</b> + <b>امیرحسین بقایی،</b> <b>Amir Mokarchi</b> شما نیز می‌توانید + <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a + >. + </p> + <hr /> + <span> + <p + style=" + font-size: 16px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <img + src="https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png" + /><br /> + ارسال شده توسط <a href="https://pakat.net/">پاکت</a> + </p> + <p + style=" + font-size: 14px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید + </p> + <br /> + </span> + </div> + </body> +</html> + + + +شماره خبرنامه 40.html + +urn:uuid:89b4ec71-55a3-62da-ddcd-6462422187ff +2021-11-18T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۰ - پنجشنبه، ۲۷ آبان ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.ibm.com/cloud/learn/microservices"><b>کمی درباره‌ی معماری میکروسرویس</b></a><br/>چند سالی است که در مورد معماری میکروسرویس زیاد می‌شنویم، میکروسرویس معماری است که در آن یک نرم‌افزار از چند سرویس کوچکتر و مستقل تشکیل می‌شود. این نوشته از آی‌بی‌ام به طور خلاصه به مفاهیم این معماری پرداخته است که خواندنش مفید است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/ElQr4"><b>داکر، multi stage و کاهش حجم</b></a><br/>کم کردن حجم image داکر روش‌های مختلفی مثل multi staging اینا داره که تواین مطلب با اون‌ها آشنا می‌شیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://emmer.dev/blog/docker-shell-vs.-exec-form/"><b>تفاوت حالت Exec و Shell در داکرفایل‌ها</b></a><br/>شاید در بعضی داکر فایل‌ها دیده باشید که مثلاً مقدار ENTRYPOINT را گاهی داخل براکت و گاهی بدون براکت نوشته باشند. اما دقیقاً تفاوت اصلی این دو حالت در داکرفایل برای این دستور و دیگر دستورات مثل RUN یا CMD چیه؟ توی این پست خیلی خلاصه و مفید میتونین تفاوت‌هاشون رو مطالعه کنید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://adelf.tech/2019/laravel-caching-basics"><b>مروری بر چالش‌های کش‌کردن داده‌ها در Laravel</b></a><br/>نویسنده در این پست تلاش کرده چالش‌های مرسوم کش کردن داده‌ها در لاراول رو توضیح بده و یک سری راه‌حل و استراتژی رو هم برای رفع مشکلات بررسی کنه. کش‌کردن داده‌ها همونقدر که میتونه سرعت نرم‌افزار رو بهبود بده، میتونه پیچیدگی‌های نگهداری نرم‌افزار رو هم زیاد کنه،‌پس باید بدونیم که داریم چیکار میکنیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://camelcase.ir/star-method-interview/"><b>تکنیک هک مصاحبه شغلی با روش STAR</b></a><br/>تکنیک مصاحبه STAR قالب ساده ای را ارائه می دهد که می توانید از آن برای پاسخ به سوالات مصاحبه رفتاری استفاده کنید. بعد از خوندن این نوشته یک چارچوب بسیار ساده پیدا می کنید که سوال های شخصی و فکر کن فلان موقعیت پیش اومده رو میتونید خیلی موفق جواب بدین .... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/amirshnll/custom-device-emulation-chrome"><b>افزودن دستگاه های مختلف به Chrome Developer Tools</b></a><br/>اگر شما هم از بخش Developer Tools مرورگر کروم برای تست رسپانسیو صفحات وب استفاده می کنید حتما نیاز است دستگاه های مورد نظر خود را به آن اضافه کنید. در حالت کلی تعدادی دستگاه پیش فرض در این بخش وجود دارد اما معمولا دستگاه های مورد نظر شما ممکن است در آن نباشد. در این مخزن اطلاعات دستگاه های مختلف و روش افزودن هر کدام را یکجا داشته باشید .... + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>مرتضی اسدی،</b> + + + <b>وحید فتحی،</b> + + + <b>امیرحسین بقایی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 51.html + +urn:uuid:9d0b471a-5b5e-fb79-6c34-fcba6e5d3421 +2022-04-28T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۱ - پنجشنبه، ۰۸ اردیبهشت ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://ruudvanasseldonk.com/2022/03/20/please-put-units-in-names"><b>در نام گذاری از «واحد» استفاده کنید</b></a><br/>نویسنده پیشنهاد می‌کنه برای خوانایی بیشتر کد و جلوگیری از ابهامات، در نام‌ گذاری متغیرها و خروجی‌ها، واحدشون رو هم ذکر کنیم. و برای مشخص شدن صورت مساله و راه حل کدهای نمونه‌ای رو هم مثال می‌زنه + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.awelm.com/posts/evil-compiler/"><b>حمله از طریق کامپایلر</b></a><br/>تا به حال به این فکر کردید که چی می‌شه اگر کامپایلر موقع کامپایل یک backdoor به کد شما تزریق کنه؟ آیا می‌تونیم تشخیصش بدیم؟ در این نوشته، نویسنده این مساله رو با زیر ۱۰۰ خط کد و یک دمو نشون داده. نکات؟ اپن‌سورس بودن کامپایلر کمکی نمی‌کنه و هر چه سطح برنامه‌‌ میاد پایین‌تر پیدا کردن چنین مسائلی دشوارتر می‌شه + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.blog/2022-03-31-how-github-does-take-home-technical-interviews/"><b>گیت‌هاب چطور چالش برنامه‌نویسی در مصاحبه‌های فنی رو به انجام می‌رسونه</b></a><br/>گیت‌هاب توضیح میده که چطور سعی می‌کنه ارزیابی یک متقاضی در مصاحبه‌های فنی رو تا جای ممکن به روشی که کارها در خود گیت‌هاب پیش میرن شبیه کنه. این مقاله فرآیند تکلیف برنامه‌نویسی‌ای رو که به هر متقاضی داده میشه شرح میده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://tech.arvancloud.com/clean-architecture-in-golang-zt43rkeya8gk"><b>معماری تمیز در گولنگ</b></a><br/>امروزه هر برنامه نویسی میدونه که اگر میخواد پروژه اش در آینده به بن بست نخوره، و بتونه به راحتی اون رو توسعه بده باید کدش منظم و قابل خواندن باشه توی این مقاله میخوایم باهم مفاهیم معماری تمیز رو توی یه اپلیکیشن گولنگی پیاده سازی کنیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/amirshnll/testament"><b>با کمک گیت هاب وصیت نامه بسازید</b></a><br/>داشتن وصیت نامه در هر شرایطی خوبه مخصوصا وقتی ارسال یک متن از طرف شما باشه برای افرادی که دوست دارید بعد از مرگ شما از این اتفاق با خبر بشن. در این پروژه با بررسی فعالیت های گیت هابتون و تغییر ناگهانی اون در یک مدت خاص یک پیام برای لیست مورد نظر خودتون بفرستید + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>رضا غریبی،</b> + + + <b>محمد عباسی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 54.html + +urn:uuid:068f9333-f3f4-aebc-b53c-82a8c458c509 +2022-06-23T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۴ - پنجشنبه، ۰۲ تیر ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://tanelpoder.com/posts/reasons-why-select-star-is-bad-for-sql-performance"><b>چرا SELECT * برای کارآیی SQL بد است؟</b></a><br/>در این مطلب مفصل درباره دلایل بد بودن SELECT * برای performance در SQL صحبت شده و موارد مختلفی از افزایش ترافیک شبکه تا افزایش مصرف CPU روی سرور تشریح شده است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://itnext.io/easiest-guide-to-bashrc-7ad0063d37eb"><b>ساده‌ترین راهنمای .bashrc</b></a><br/>این مقاله ضمن بررسی موارد ابتدایی bash درباره متغیرها و رشته‌ها و اتوماسیون به کمک bash توضیح می‌دهد + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://youtu.be/gYu4esqvnQ0"><b>پردازش تصویر، اساس جلوه‌های ویژه در سینما</b></a><br/>حتما همه شما جلوه‌های ویژه رو در فیلم‌ها و تبلیغات تلویزیونی و اینترنتی دیدین، اما سوال اصلی این هست که این جلوه‌های ویژه یا همون VFX چطوری ساخته و پردازش میشن و به فیلم ها اضافه میشن؟ یکی از علومی که اساس جلوه‌های ویژه رو تشکیل میده، علم پردازش تصویره. اما شاید براتون سوال بشه که دقیقا پردازش تصویر چطوری به جلوه‌های ویژه کمک میکنه. توی این ویدیو جذاب و کوتاه با کارهای پایه در جلوه‌های ویژه آشنا میشید + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>امیرحسین بقایی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 35.html + +urn:uuid:34456a44-0c50-8011-4e06-9b16e90292d2 +2021-10-09T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="background-color: #000;"> + <div style="max-width: 680px; margin: 0 auto;color: #fff;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: red;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: red;"> + شمارهٔ ۳۵ - شنبه، ۱۷ مهر ۱۴۰۰ + </h3> + <div> <p style="text-align: center; color: red;font-family: 'Samim', sans-serif;"><small>این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است</small></p> </div> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://tuhrig.de/my-logging-best-practices/"><b>چطور لاگ بنویسیم؟</b></a><br/>در این مطلب، نویسنده به بیان تجربیات ساده ولی مهمی از کار با Log ها و این که چطور Log بنویسیم میپردازه که احتمالا برای ما نیز مفیده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://betterprogramming.pub/7-surprising-facts-i-learned-after-becoming-a-software-developer-8405e844a907"><b>هفت حقیقت شگفت انگیز بعد از تبدیل شدن به توسعه دهنده نرم افزار</b></a><br/>در این دست‌نوشته حقیقت‌هایی در مورد اینکه بعد از تبدیل‌شدن به یک توسعه دهنده نرم‌افزار با آن روبرو می شوید می‌خونید البته برای هر فرد تفاوت‌هایی شاید وجود داشته باشه ولی خیلی از این حقایق کاملا برای همه یکسان است؛ مثل تفاوت محیط کار و محیط تحصیل، یادگیری بی‌انتها، نیازمندی به اشتیاق و ... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://javascript.plainenglish.io/how-to-make-your-site-25x-faster-with-a-few-lines-of-code-e13056faac2a"><b>چه شکلی با چندخط کد میشه 25 برابر سایت رو سریع کرد</b></a><br/>خیلی کوتاه داخل این نوشته توضیح داده میشه که چه شکلی با Radis و CDN میشه صفحات رو تا 25 برابر سریعتر کرد. جزئیات زیادی داخل نوشته هست که حتما کامل بخونید .... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://code.visualstudio.com/blogs/2021/09/29/bracket-pair-colorization"><b>بهبود کارآیی رنگ‌آمیزی جفت براکت‌ها در VS Code</b></a><br/>در این نوشته فنی، مساله پیدا کردن و رنگی کردن جفت براکت‌ها در کدها داخل VS Code و بهبود کارآیی ۱۰ هزار برابری این کار بررسی شده + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>امیر شکری،</b> + + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a style="color: red" href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a style="color: red" href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"> <a style="color: red" href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </div> + </body> +</html> + + +شماره خبرنامه 56.html + +urn:uuid:f2afcbfa-a495-c313-789e-43b0648d29f3 +2022-07-07T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵٦ - پنجشنبه، ۱٦ تیر ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://bit-orbit.github.io/blog/post/web-snapshout/"><b>اسنپ شات گرفتن از یک سایت با تمامی دپندنسی های آن</b></a><br/>ما روزانه محتوای زیادی از سایت های مختلفی می‌خوانیم. برخی از این محتوا را ممکن است فراموش کنیم و یا به دلایلی مثل اجبار سانسور چی اون محتوا از سایت منبع پاک شود. در چنین مواقعی می‌توانیم با کلون کردن اون صفحه سایت، محتوا را افلاین در دسترس داشته باشیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://twitter.com/HesamSalehian/status/1505996698945945603"><b>دنیای قبل و بعد از دیپ لرنینگ</b></a><br/>دنیای قبل و بعد از دیپ لرنینگ در دنیای کامپیوتر ویژن را بررسی کنید و تفاوت‌هایی که در آن‌ها وجود دارد را بررسی کنید. این توییت تجربی نوشته شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/ashishpatel26/Tools-to-Design-or-Visualize-Architecture-of-Neural-Network"><b>روش‌های مختلف رسم شماتیک شبکه عصبی</b></a><br/>اگر با تنسورفلو مشغول کار روی شبکه‌های عصبی هستید احتمالا در هنگام ارائه‌ی گزارشات خود نیاز دارید تا شماتیک مدل خود را رسم کنید. با کمک این مخزن تمام روش‌هایی که نیاز دارید لیست شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://realpython.com/pyscript-python-in-browser/"><b>توسعه فرانت اند با پایتون </b></a><br/>توی این راهنما با استفاده pyscript نحوه استفاده از پایتون در فرانت اند توضیح داده شده و در نهایت چند پروژه هم تمرین داده شده است + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>آریا شبانه،</b> + + + <b>امیر شکری،</b> + + + <b>محمدرضا هلالی .</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 47.html + +urn:uuid:b09e4b7b-5ada-258c-d8e1-76da25c6ba9d +2022-01-20T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۷ - پنجشنبه، ۳۰ دی ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://joyofcryptography.com/"><b>لذت رمزنگاری</b></a><br/>لذت رمزنگاری (The Joy of Cryptography) یک کتاب رایگان درباره رمزنگاری است که به دانشجوها (و عموم علاقمندان) کمک می‌کنه با مفاهیم پایه‌ای حوزه رمزنگاری آشنا بشوند. علاوه بر مطالعه آنلاین امکان دانلود نسخه PDF این کتاب هم از سایت هست. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://tray2.se/posts/database-design"><b>آیا یک ستون جیسونی برای ذخیره‌سازی تعداد زیادی فیلد مرتبط مناسب است؟</b></a><br/>فرض کنید برای یک کاربر باید انواع مختلفی از اطلاعات را در یک پایگاه داده‌ی رابطه‌ای ذخیره کنید. طراحی یک ستون جیسونی راهکار جالبی به نظر می‌رسد اما در این مطلب نویسنده این راهکار را به چالش می‌کشد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://laravel-news.com/laravel-9"><b>لاراول ۹ در راه</b></a><br/>احتمالا یکی از اخبار مهم برای اکوسیستم PHP اخبار لاراول و نسخه‌های جدیدش و تغییراتشه؛ پس اگر شما هم دوست دارید بدونید چه خبره، میتونید ببینید قراره در لاراول ۹ چه تغییراتی رو شاهد باشیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://dev.to/ruppysuppy/advanced-git-concepts-you-should-know-nle"><b>Conceptهای پیشرفته git که باید بدانید</b></a><br/>در این نوشته تعدادی از دستورات پیشرفته مربوط به git که فراتر از کارهای معمول نظیر pull و push و commit هستند معرفی شده است + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>امیرحسین مجیری،</b> + + + <b>امیرحسین بقایی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 39.html + +urn:uuid:22eceb64-d348-0c6d-e813-0b2a0bea74e6 +2021-11-11T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۳۹ - پنجشنبه، ۲۰ آبان ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://laravel-news.com/larastan-v1-released"><b>بالاخره Larastan نسخه 1.0 منتشر شد</b></a><br/>اگر به عنوان توسعه‌دهنده PHP تا به حال از PHPstan استفاده نکرده‌اید حتما سرچش کنید و دربارش بخونید. اگر هم تا حالا استفاده کردین، خبر خوب اینه که برای فریم‌ورک لاراول یک Wrapper نوشتن به اسم Larastan که بهتون کمک میکنه تا کدهاتون رو آنالیز کنه و بتونین کد بهتری بنویسین و از اشتباهات تکراری پرهیز کنین. حالا چند روزی میشه که نسخه 1.0 منتشر شده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="http://lkml.iu.edu/hypermail/linux/kernel/9608/0191.html"><b>ایمیل به لینوس توروالدز درباره تفاوت پراسس و ترد</b></a><br/>دنبال درک عمیقی از تفاوت ترد و پراسس بودم. در بین مطالبی که خوندم این ایمیل رو دیدم که برای لینوس توروالدز فرستاده بودن و توروالدز پاسخ داده بود و سعی کرده بود این موضوع رو از دید خودش و در لینوکس توضیح بده. به نظرم خوندنش میتونه جالب باشه. [البته چیزی که برای من امیرحسین بقایی به صورت شخصی جالب بود این بود که این سوال رو توی سالی که من به دنیا اومده بودم پرسیده بودن و امروز دارم اون سوال رو با بقیه به اشتراک میزارم 😃] + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/"><b>آشنایی با موتور Nginx، غول قدیمی دنیای وب‌سرورها</b></a><br/>احتمالا خیلی از ماها برای کارهای کوچیک و بزرگ از Nginx استفاده کردیم. Nginx این غول قدرتمند دنیای وب‌سرورها، برای پردازش درخواست‌هایی که به سمتش میاد از معماری Reactor استفاده میکنه. البته نمیدونم کلمه معماری درسته یا نه؛ شاید هم بهتر باشه بگیم یک جور روش حل مساله. در هر صورت توی این پست وبلاگ رسمی Nginx میتونید ببینید که در هسته این غول زیبا چه خبره. همچنین ارجاعاتی به مقاله‌های دیگری هم داخلش وجود داره که خوندنش به تکمیل شدن موضوع کمک میکنه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/danistefanovic/build-your-own-x"><b>Build your own (insert technology here)</b></a><br/>همیشه بهترین راه برای فهمیدن عمیق یک ابزار اینه که بدونیم اون ابزار چطوری ساخته شده. با کمک این ریپو در هر زبان، فریمورک و یا ابزاری که کار می کنید میتونید عمیق بشید. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/i83jF"><b>refactor یک برنامه sync به async در ASP.NET - بخش اول</b></a><br/>در این مقاله که در دو بخش تنظیم گردیده است با اصلاح مجدد (refactor) یک برنامه وب همزمان (synchronous) به ناهمزمان (asynchronous) در ASP.NET آشنا خواهیم شد. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>Mohammad Vahedi،</b> + + + <b>Amir Mokarchi.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 0.html + +urn:uuid:d7478a7c-6bbf-6610-863e-90573631aa7c +2020-12-31T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه Software Talks، شماره صفرم</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir=rtl lang=fa> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv=Content-Type> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + + <body style="max-width:680px;margin:0 auto"><br><br> + <h1 style="font-size:25px;text-align:center;font-family:'Samim';direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:'Samim';direction:rtl;color:#263238"> شماره صفرم - + پنجشنبه، ۱۱ دی ۹۹ </h3> + <p style="font-size:14px;text-align:right;font-family:'Samim';direction:rtl;color:#263238"> سلام. به خبرنامه + هفتگی SoftwareTalks خوش آمدید. این خبرنامه روی <a + href=https://github.com/softwaretalks/newsletter>گیت‌هاب</a> در دسترس است و محتوای آن نیز توسط + مشارکت‌کنندگان در پروژه اپن‌سورس خبرنامه تامین می‌شود. این اولین تلاش‌های ما برای ساخت یک خبرنامه هفتگی در + حوزه توسعه نرم‌افزار است و خوشحال می‌شویم نظرات و پیشنهادات شما را در <a + href=https://github.com/softwaretalks/newsletter>گیت‌هاب</a> پروژه بخوانیم. هر هفته پنج‌شنبه‌ها شماره + جدید خبرنامه ارسال می‌شود. با معرفی خبرنامه به دوستان و همکاران خود و مشارکت در تامین محتوا، به بهبود پروژه + و اشتراک‌گذاری بهتر منابع کمک کنید. + <hr> + <ul style="text-align:right;font-family:'Samim';direction:rtl"> + <li style=font-size:18px><b>روش‌‌هایی پرکاربرد برای طراحی سیستم‌هایی با مقیاس بالا</b> </li> + <p> توی این ریپوزیتوری گیتهاب، نویسنده توضیح میده که توی طراحی و پیاده‌سازی برنامه‌ها و زیرساخت‌های + نرم‌افزارهایی با مقیاس بالا معمولا چه روش‌هایی به کار برده میشه. حتی اگر حالا حالاها سروکارتون با + سیستم‌های بزرگ نمیفته، خوندن این مطلب میتونه براتون هیجان‌انگیز باشه همون‌طور که برای من بود. <br> <a + href=https://github.com/donnemartin/system-design-primer style=font-size:14px>مطالعه مطلب اصلی</a> + </p> <br> + <li style=font-size:18px><b>آیا بهره‌وری برنامه‌نویسان را می‌توان اندازه گرفت؟</b> </li> + <p> این مطلب از وبلاگ استک‌اورفلو به پاسخ دادن به این پرسش‌ها می‌پردازد که وقتی کاری که برنامه‌نویس‌ها + می‌کنند نامحسوس است، چطور باید بهره‌وری آن‌ها را اندازه گرفت و آیا این کار شدنی است؟ <br> <a + href=https://stackoverflow.blog/2020/12/07/measuring-developer-productivity/ + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>بازبینی کد‌های گو توسط فرود - یوتوب فارسی</b> </li> + <p> یکی از بهترین کارهایی که به یادگیری بهتر و جلب مشارکت بیشتر در پروژه‌های اپن‌سورس کمک می‌کند، بازبینی کد + آن‌هاست. فرود غفوری مدتی است روی پروژه‌هایی که به زبان گو نوشته شده، به صورت زنده بازبینی و بهبود کد را + از یوتوب استریم می‌کند. <br> <a href=https://www.youtube.com/user/fzerorubigd + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>آن ۴۰ میلی‌ثانیه اضافی: داستان ویژگی عجیبی که عرضه دستگاهی با اپ نتفلیکس را در + اروپا متوقف کرد!</b> </li> + <p> اپلیکیشن نتفلیکس روی صدها تلویزیون هوشمند و دستگاه‌های مختلف از جمله اندروید تی‌وی‌ها اجرا می‌شه. اما یک + باگ مرموز عرضه یک دستگاه خاص اندرویدی در اروپا با اپ نتفلیکس رو متوقف می‌کنه. درباره کشف این مساله عجیب + در «وبلاگ فنی نتفلیکس» بخوانید‌ <br> <a + href=https://netflixtechblog.com/life-of-a-netflix-partner-engineer-the-case-of-extra-40-ms-b4c2dd278513 + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>کانتینر در لینوکس به بیان ساده</b> </li> + <p> کانتینر پروسس ایزوله‌شده در سطح کرنل و بدون سربار است. چه ارتباطی با داکر دارد؟ تفاوت آن با ماشین مجازی؟ + پروسس چگونه ایزوله می‌شود؟ <br> <a href=https://vrgl.ir/JLCFX style=font-size:14px>مطالعه مطلب اصلی</a> + </p> <br> + <li style=font-size:18px><b>روش‌های مختلف ذخیره اطلاعات در مرورگر کاربر و وضعیت آن‌ها در ۲۰۲۱</b> </li> + <p> نویسنده در این مقاله انواع روش‌های ذخیره اطلاعات در مرورگرهای مدرن و ویژگی‌ها و محدودیت‌های‌شان را بررسی + کرده است. از روش‌های ساده‌تر Local Storage و Session Storage تا روش‌های پیشرفته‌تر IndexedDB و Cookies + در این مقاله بررسی شده‌اند و مرجع مناسبی برای انتخاب یکی از این روش‌ها در شرایط ویژه پروژه و چالش‌های + پیش روی‌تان است. <br> <a + href=https://blog.bitsrc.io/browser-storage-options-and-their-state-in-2021-6808b949087a + style=font-size:14px>مطالعه مطلب اصلی</a></p> <br> + <li style=font-size:18px><b>منتشر شد: Flysystem v2</b> </li> + <p> فلای سیستم یک کتابخانه جامع برای زبان php است که با استفاده از آن می توانیم برای فضاهای ذخیره سازی + مختلفی همچون دیسک لوکال، گوگل درایو، آمازون، دراپ باکس و... از آن استفاده کنیم. این کتابخانه در نسخه دوم + خود موارد جدیدی همچون Exceptionها را اضافه کرده است. <br> <a href=https://laravel-news.com/flysystem-v2 + style=font-size:14px>مطالعه مطلب اصلی</a> + </ul> + <hr> + <p style="font-size:13px;font-family:'Samim';direction:rtl;text-align:right"> در این شماره از خبرنامه، دوستان + خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>حامد سعیدی،</b> <b>سیدمصطفی افزونی،</b> <b>وحید قادری،</b> <b>محمد + مهدی غلامرضایی</b> در تهیه محتوا کمک کردند. + <hr> + <p style="font-size:16px;text-align:center;font-family:'Samim';direction:rtl;color:#263238"> ارسال شده توسط <a + href=https://pakat.net />پاکت</a> + <p style="font-size:14px;text-align:center;font-family:'Samim';direction:rtl;color:#263238"><a + href=https://pakat.net />سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید + </p> + </body> + + </html> + + +شماره خبرنامه 66.html + +urn:uuid:31640087-90a9-f0dd-f199-67a49ee8d0e3 +2022-09-15T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ٦٦ - پنجشنبه، ۲۴ شهریور ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.blog/2022-09-13-scaling-gits-garbage-collection/"><b>گیتهاب و چالش حجم زیاد مخازن گیت</b></a><br/>گیتهاب میگه بالای ۱۸.۶ پتابایت داده از گیت داره و بعضی از آبجکت‌ها در گیت reachable هستند و برخی unreachable. در این مطلب جدیدشون توضیح دادن که چطوری این‌ها رو برای بهینه تر کردن فضای ذخیره‌سازی مدیریت میکنند. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://daniel.haxx.se/blog/2022/09/08/http-http-http-http-http-http-http/"><b>HTTP://HTTP://HTTP://@HTTP://HTTP://?HTTP://#HTTP://</b></a><br/>داستان از جایی شروع شد که نویسنده curl توییت یک آدرس عجیب رو به عنوان یک url معتبر معرفی و توییت کرد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://skamille.medium.com/debugging-teams-groundhog-day-f0483fea82d9"><b>دیباگ کردن تیم‌ها</b></a><br/>آیا تا به حال در تیمی بودید که خیلی سخت کار می‌کنه ولی به نظر می‌ره جلو نمی‌ره؟ نویسنده این مقاله درباره این موضوع و علائم Groundhog Day و راه‌حلش صحبت کرده + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.blog/2019-11-21-debugging-network-stalls-on-kubernetes/"><b>حل مشکلات شبکه کوبرنتیز به شیوه گیتهاب</b></a><br/>در این مطلب، تیم فنی گیتهاب توضیح میده چطوری یک مشکل latency در شبکه پیچیده کوبرنتیز رو حل کردن و مرحله به مرحله و با ساده‌سازی مسائل پیش رفتند. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 20.html + +urn:uuid:f3de882b-124f-1f85-0a1f-c8bbe57e00b9 +2021-06-17T00:00:00+00:00 +<!DOCTYPE html> +<html dir="rtl" lang="fa"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + </head> + <body style="max-width: 680px; margin: 0 auto"> + <div style="text-align: center"> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) + format("truetype"); + font-weight: 400; + } + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) + format("truetype"); + font-weight: 700; + } + ul { + padding: 0 25px; + } + </style> + <br /><br /> + <img + alt="Softwaretalks" + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + style=" + margin: 2.1em auto; + display: block; + width: 130px; + border-radius: 5px; + " + /> + <h1 + style=" + font-size: 25px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + font-weight: 700; + color: #263238; + " + > + خبرنامهٔ Softwaretalks + </h1> + <h3 + style=" + font-size: 18px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + color: #263238; + " + > + شمارهٔ ۲۰ - پنجشنبه، ۲۷ خرداد ۱۴۰۰ + </h3> + <hr /> + <ul + style=" + text-align: right; + font-family: Samim, sans-serif; + direction: rtl; + " + > + <a + href="https://medium.com/technogise/journey-of-improving-react-app-performance-by-10x-9195d4b483d4" + ></a> + <li style="font-size: 18px"> + <a + href="https://medium.com/technogise/journey-of-improving-react-app-performance-by-10x-9195d4b483d4" + ><b>بهبود کارآیی (performance) ۱۰ برابری در برنامه‌های React</b> + </a> + <p> + در این مقاله نویسنده مسیری که برای تشخیص و رفع مشکلات کارایی برنامه + داشته را توضیح می‌دهد. + </p> + <br /> + <a href="https://vrgl.ir/bwfDO"></a> + </li> + <li style="font-size: 18px"> + <a href="https://vrgl.ir/bwfDO" + ><b>گزارش قطعی فستلی در 8 ژوئن 2021 (18 خرداد 1400)</b> + </a> + <p> + هشت ژوئن، صدها سایت به مدت یک ساعت از دسترس خارج شدند. مشکل از CDN + فستلی بود. یک سرویس بزرگ که مجموعه خدمات ابری متنوعی به مشتریانش + ارائه می‌دهد. در این مطلب، ابتدا کمی تاثیرات این اتفاق را گفته‌ام و + سپس، مشکل پیش‌آمده و اقداماتی را که برای حل آن انجام دادند، + آورده‌ام. + </p> + <br /> + <a href="https://backgroundchecks.org/justdeleteme/"></a> + </li> + <li style="font-size: 18px"> + <a href="https://backgroundchecks.org/justdeleteme/" + ><b>چه سرویس هایی به شما اجازه ی حذف حساب کاربری می دهند؟</b> + </a> + <p> + اگر شما هم خیلی اطلاعاتی که داخل اینترنت دارید رو مهم میدونید و + دلتون میخواد سرویس ها حقوقتون رو رعایت کنن حتما به این گزینه که یک + سرویس امکان حذف کامل اطلاعات حساب کاربری شما رو داشته باشه اهمیت + میدین این لینک لیست سرویس هایی رو داره که امکان حذف حساب کاربری شما + رو بهتون میده و البته اونایی که نمیدن هم هستن؛ شاید لزوما حذف کامل + اتفاق نیوفته ولی لااقل از در دسترس بودن عمومی خارج میشه :) + </p> + <br /> + <a href="https://github.com/amirshnll/clean-code-php"></a> + </li> + <li style="font-size: 18px"> + <a href="https://github.com/amirshnll/clean-code-php" + ><b + >اصولی ساده و بدیهی برای کد‌های آدمیزادی در PHP! | حالا نسخه + فارسیش</b + > + </a> + <p> + نسخه ی انگلیسی clean code php در خبرنامه های قبلی منتشر شده برای + تفریح یه نسخه ی فارسی ازش در آوردیم که زیر پروژه ی اصلی هم اضافه شده + اگر حوصله دارید مطالعه کنید و اصلاحاتی هم نیاز داره حتما اطلاع بدین + </p> + </li> + </ul> + <hr /> + <p + style=" + font-size: 13px; + font-family: Samim, sans-serif; + direction: rtl; + text-align: right; + " + > + تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: <b>حامد سعیدی،</b> + <b>امیرحسین مجیری،</b> <b>امیر شکری</b> شما نیز می‌توانید + <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a + >. + </p> + <hr /> + <span + ><p + style=" + font-size: 16px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <img + src="https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png" + /><br /> + ارسال شده توسط <a href="https://pakat.net/">پاکت</a> + </p> + <p + style=" + font-size: 14px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید + </p> + <br + /></span> + </div> + </body> +</html> + + + +شماره خبرنامه 44.html + +urn:uuid:e010d3db-ef72-c014-311e-7377d4093b27 +2022-01-01T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۴ - شنبه، ۱۱ دی ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://support.huaweicloud.com/intl/en-us/usermanual-evs/evs_01_0072.html"><b>حجم پارتیشن سرورتون رو بدون پایین اومدن و دیتا از دست دادن زیاد کنید</b></a><br/>اگر سرور لینوکسی در حال کار دارید و قصد دارید بدون هیچ وقفه فقط فضای پارتیشن هاتون رو بیشتر کنید حتما این نوشته رو بررسی کنید + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://devtoys.app/"><b>چاقوی سوئیسی برای توسعه‌دهندگان نرم‌افزار</b></a><br/>مجموعه‌ای از ابزارهای مورد نیاز برنامه‌‌نویسان برای کار با متن، تبدیل فرمت‌ها و فشرده‌سازی و ... این نرم‌افزار رایگان و اپن‌سورس است اما فقط برای ویندوز عرضه شده است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://endaphelan.me/posts/software-idioms-you-should-know/"><b>اصطلاحات مهندسی نرم‌افزار که باید بدانید</b></a><br/>تا حالا درباره Rubber duck debugging چیزی شنیدید؟ یا می‌دونید چه زمانی از اصطلاح Boil the ocean استفاده می‌شه؟ این نوشته فهرست کوتاهی از چند اصطلاح و زمان استفاده‌شون در حوزه مهندسی نرم‌افزار درست کرده + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://dappradar.com/blog/2021-dapp-industry-report"><b>روزهای مهم بلاکچینی سال ۲۰۲۱</b></a><br/>امسال بلاکچین روزهای مهمی داشت و کلا اتفاقات عجیب و غریب و حیرت انگیر هم کم نداشت توی این مقاله جزئیات این اتفاقات رو مطالعه کنید شاید جالب باشه در مورد اینکه بدونید بلاکچین به کدوم سمت در حال حرکت هست ... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.linkedin.com/feed/update/urn:li:ugcPost:6880051115493224448?updateEntityUrn=urn%3Ali%3Afs_updateV2%3A%28urn%3Ali%3AugcPost%3A6880051115493224448%2CFEED_DETAIL%2CEMPTY%2CDEFAULT%2Cfalse%29"><b>مثل اینکه استارتاپ های پاکستان همین بغل گوشمون دارن خوب پیش میرنا</b></a><br/>یک سری آمار و اطلاعات جامع از گردش های مالی و رشد استارتاپ های پاکستان بخونید خیلی جزئیات جالبی داره که باید کامل خونده بشه ولی همین بغل گوشمون به شدت دارن خوب پیش میرن + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیر شکری،</b> + + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 30.html + +urn:uuid:6b927bc8-f7f1-8b99-d129-3acb87b5b6e0 +2021-09-03T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۳۰ - جمعه، ۱۲ شهریور ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/ventoy/Ventoy"><b>بوت چندگانه روی فلش مموری</b></a><br/>احتمالا شده که یه فلش مموری رو با ایمیج ویندوز بوت کرده باشید. اگه بخواید رو همون فلش ایمیج لینوکس بریزید قاعدتا باید دوباره فرمتش کنید. Ventoy ابزار جدیدیه که به شما امکان داشتن چنتا ایمیج روی یک فلش مموری رو میده بدون نیاز به فرمت و پارتیشن بندی دوباره. کافیه یه بار روی یه فلش نصبش کنید. بار اول پارتیشن بندی انجام میشه. از این به بعد هر ایمیج iso، img و حتی vhd رو روی فلش کپی کنید، ventoy اون رو به لیست بوتش اضافه می‌کنه و نیاز به هیچ کار دیگه‌ای نیست. با ایمیج‌های متعددی تست شده و بعیده کارتون رو راه نندازه. 👌 + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-6/"><b>بهبود کارایی در دات نت ۶</b></a><br/>در این بلاگ شما با خلاصه‌ای از تغییرات زیاد دات نت ۶ آشنا می‌شوید و کارایی این نسخه‌ی دات نت با نسخه‌های قبلی مقایسه می‌شود. خواندن این مطلب را به برنامه نویسان سی شارپ اکیدا توصیه می‌کنم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/alibaba-aero/technical-interview"><b>سوالات مصاحبه فنی علی بابا</b></a><br/>سرویس علی بابا در ایران مجموعه‌ای از سوالاتی که در مصاحبه فنی طرح می‌کنند را به صورت اپن‌سورس در گیت‌هاب منتشر کردند + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://rtbf.ir/post/how-is-your-personal-information-protected-online"><b>چگونه اطلاعات شخصی شما به صورت آنلاین محافظت می شود؟</b></a><br/>در این نوشته در مورد حریم خصوصی و اهمیت حفظ آن می خوانید و به بررسی قوانین مختلف در این حوزه پرداخته می شود و شیوه نامه های امنیتی کوتاهی را مطالعه خواهید کرد ... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://dotnetdocs.ir/Fa/Post/51/%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-httppatch-%D8%AF%D8%B1-asp.net-core"><b>نحوه استفاده از HttpPatch در Asp.Net Core</b></a><br/>به طور معمول برای ویرایش اطلاعات از HttpPut استفاده میکنیم. در این حالت باید تمامی فیلدهای مربوط به موجودیت را ارسال کنیم. اما اگر فقط یکی دوتا از فیلدها نیاز به ویرایش داشته باشند چه نیازی به ارسال مابقی فیلدهاست؟ +با استفاده از HttpPatch میتوانیم فقط فیلدهایی را که نیاز به ویرایش دارند را به API ارسال کنیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/@milojevicmarko92/how-to-create-windows-service-that-schedules-jobs-logs-and-is-configurable-by-means-of-779e8cbd0680"><b>ایجاد سرویس ویندوز برای اجرای خودکار تسک ها با استفاده از Topshelf, Quartz و log4net</b></a><br/>توی خیلی از سازمان ها و شرکتها, نیاز به یکسری تسک هست که سرساعت خاصی انجام بشن. مثل تهیه یک گزارش, ارسال یک فایل و ... اگر تعداد اینها زیاد باشه بهتر هست که از یک سرویس برای اینکار استفاده بشه. این مطلب بهمون کمک میکنه که سرویس بهتری بسازیم. اینجا از Topshelf, Quartz و log4net با هم استفاده شده. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>Rahmanism،</b> + + + <b>احمدرضا ساغری،</b> + + + <b>حامد سعیدی،</b> + + + <b>امیر شکری،</b> + + + <b>میرحسین حسینیون .</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 14.html + +urn:uuid:adb01f99-bdc5-e485-328e-25002d12e9ca +2021-05-06T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱۴</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱۴ - پنجشنبه، ۱٦ اردیبهشت ۱۴۰۰ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>چرا افراد موفق مولتی تسک نیستند.</b> </li> + <p> در این پست نویسنده با اشاره به تحقیقات صورت گرفته در دانشگاه استنفورد نشان میدهد چگونه انجام دادن همزمان + تسک های زیاد باعث آسیب در عملکرد و حتی آسیب جسمی و مغزی میشود. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/iQPjax3CHDgHMz0vRmM3kr2iuc6NrsidRjrwr-YLGlueaJN7Ig2in73oZxIjtbw0dUYJ-CI5UWSBt5q8kAzkT3kROkmm-feH5qlQkoX_Qcd6ayi0PpTAH-4pe7ra3n88U7q-VsPtoEtXbvjB93k_ejzQFYmJH6dxhEH3aImFkndygu9MygdiqCABEUAZi2sBQfia1i_rJCUunW_EhS1qGxXAxx1h7jM1lDMUkFh5xZ8oK0rN5QDFNzY" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>شفافیت در رمزنگاری، یک اصل اساسی</b> </li> + <p> همه‌چیز یک سیستم یا الگوریتم رمزنگاری باید شفاف و در معرض دید عموم باشد بجز کلید رمز <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/HkUqoeH53B3GzhyhyxwNsPaws1_mB9UTUPY1wYI_VsMI9L13_qYtTtpIctlUp18GhvPc43aJpFL8AQChlBVtk5fRkjMsnZuZ2pv_s61Whp--KKY_p0f_YONbfeSc6FjB2s4kgWo_gRVnbkv4AzEXgy37YjVGEULW7EKQfPgp39PUSiQMp_oZ-4tEKFmHctcMi1hekfXfEqSoWZk7mYSaPJ5QQJdq7I0zJbFSJyXTRJbK9mu1uzVmv8PmZV1hbZiIEDETYblloXBKH9xO5_wTePMrIQ7s8DjxROyH7HuuI4jMyWgQwTRyMHx7J3IMl9T7NzBXP7blr9xURplaOwzgLkJUPLDIWQp3biqZcRfzEB0bO-xbOuz1DLycBF-uL1yGpxfZ9OXV-3pu4F3VaQG1tNFK3cIYeBjpCFyGxdRrQfcHO7bnu5IiFR962f_4ryvyNUTe54GnhUV212_5DMz1WsxQHJV9iR9TrPzr_OcYhDGgGdiTLODiqEvaiIa2tfJHXMpGuYN5O_m9lrZ2bxk0wfC0Og" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>جنبه های معماری نرم افزار</b> </li> + <p> معماری نرم افزار به عنوان اصلی ترین فعالیت در مهندسی نرم افزار با جنبه های بسیاری در ارتباط است. یکی از + بهترین کتاب هایی که در این رابطه نوشته شده کتاب Software Architecture in Practice است که در به عنوان یکی + از اصلی ترین مراجع این مبحث در بین مهندسین مطرح می باشد. در این مطلب بخشی از کتاب که درمورد جنبه های + معماری صحبت می کند آورده شده است <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/5OJHACuyWq_U4IWYiGKz8nyQEhuBnCUIvenYmQD1qkdl3QH9tt0Y_ihgrrn2xrFR93JfI18A4Rnu2k8j55NBNbuxcJCWxfQ0IH3_-TO3dOBhFHqkNfVp1Jcoc5rnFD_dorXkbZwb4vFm0oUymfgx0hbl" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>حسن شهبازی،</b> <b>سیدمصطفی افزونی،</b> <b>Mahdi Akhi</b> در تهیه محتوا + کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/e4uenDlplwOf6fHyaKDYIz8bWbNIgjsM8oGC53keUPU4AuAwwp4X39xQnbd2nuBSY5gcYeISGBoaIF6wAGlLdTlu-sgcRuZRwT0JIaLXeFeGHfScX4k34KP7qFLwEOa208mPSnXvJC--W2TYCNmswIsCygwf1_tFUz5PhQ8nF-AEGBvb26-DLpFnWjnVUw" + sib_link_id="3">مشارکت کنید</a>. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=1-G6a7Y8w7rnVTwfHgLQBHk71FCncLTOpN1py962IohBsNupRymgXypcwqIlnbd9G4O-YCwUpFaemFnxTxSFkf1qE4_gjbCmC6gkwG0ccdqmrDUEOmgPxNRHKfHJxuEuwOMdF5hMyRtRIVZ-alXgWdFy_2CyM-aYLscHgyPIL-RnVoob5AMLsYtuxzK1nCBO5vw_OPrx_qSprAUvcj3O7BKQdA" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/R3RKIS9vORkKB8_5uWi0Hz7gGJ5p94dpjTSbjfe5Us9ZHqrp9ptVapr6EsrPuYoARIPk2SnSQcNf9gGsp4qEIyUOvs7L3nX6PVdH-z7t02rDvxPMTSN_V2_2BNFsYgyAeMCgZMYf9JYTE4h4kFje" + sib_link_id="4">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/W6pkB4R71rnAvhhMPlVWu9fdu3bal9ViOBgKUgV3Ib4KZve6QXQaWr04NjWlj3LjaH6gumYFogU9u6vriHHIHoGIJON7e0BZJ6xYw14sTXJaa0tROKM95D8wHReWJYgo7Egrb1Wxu9NmMpRMNrN-" + sib_link_id="5">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 52.html + +urn:uuid:7f9edfe8-0848-d496-640c-da3fe6724fbd +2022-06-02T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۲ - پنجشنبه، ۱۲ خرداد ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://systemweakness.com/give-me-a-browser-ill-give-you-a-shell-de19811defa0"><b>یک مرورگر به من بده تا بهت شِل بدم</b></a><br/>در این مقاله در این مورد صحبت شده که اگر فقط یک مروگر داشته باشیم چطوری می‌توانیم نفوذ انجام بدیم و چه چیزهایی رو درباره پروتکل‌های مورد استفاده مرورگرها که ممکنه باعث سوء استفاده بشه باید بدونیم + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://r.bluethl.net/how-to-design-better-apis"><b>چطور APIهای بهتری طراحی کنیم</b></a><br/>این یک نوشته نسبتاً طولانی شامل پیشنهادهای خوب برای نوشتن و بهبود طراحی API هاست و در طول این نوشته درباره اشتباهات معمول و رویکردهای نادرست طراحی هم صحبت می‌شود. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://dev.to/lostintangent/10-awesome-things-you-can-do-with-github-dev-5fm"><b>کارهای جالبی که با github.dev می‌توان انجام داد</b></a><br/>در این مقاله ۱۰ کاری که مستقیم یا به کمک اکستنشن‌ها می‌توان با نسخه تحت وب ادیتور گیت‌هاب انجام داد معرفی شده است. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 45.html + +urn:uuid:d8d8c4e8-dca1-7340-ff2e-dbd7e5883842 +2022-01-07T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۵ - جمعه، ۱۷ دی ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/mthri/dfp-persian"><b>ترجمه گروهی کتاب Django for Professionals</b></a><br/> بالاخره بعد از حدود ۴ ماه و با مشارکت ۲۲ نفر، ترجمه کتاب django for professional تموم شد و میتونید مطالعه کنیدش + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://xy2z.io/posts/2020-syncing-aliases/"><b>همگام‌سازی alias ها</b></a><br/>در این نوشته روشی سریع و بدون وابستگی برای همگام‌سازی aliasها روی سیستم عامل‌های مختلف ارائه شده تا با استفاده از gist عمومی گیت‌هاب این همگام‌سازی انجام شود + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://solocode.ir/article/return-youtube-dislikes"><b>حذف کن، ما برمی‌گردونیم! (دیسلایک‌های یوتیوب)</b></a><br/>درسته، اقدام عجیب یوتیوب (حذف شمارنده دیسلایک) ممکنه به نفع تولیدکننده‌های ویدیو باشه اما به نفع افرادی که دنبال محتوای باکیفیت در یوتیوب می‌گردن نیست! کافیه این افزونه که توی این مقاله معرفی کردم رو نصب کنی تا بتونی تعداد دیسلایک‌های ویدیوهایی که توی نسخه وب یوتیوب پخش می‌کنی رو ببینی. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>حامد سعیدی،</b> + + + <b>علی کرباسی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 22.html + +urn:uuid:d6cd9b00-cb84-b314-17b7-96c7f90d468c +2021-07-01T00:00:00+00:00 +<!DOCTYPE html> +<html dir="rtl" lang="fa"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + </head> + <body style="max-width: 680px; margin: 0 auto"> + <div style="text-align: center"> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) + format("truetype"); + font-weight: 400; + } + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) + format("truetype"); + font-weight: 700; + } + ul { + padding: 0 25px; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 50px; + } + </style> + <br /><br /> + <img + alt="Softwaretalks" + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + style=" + margin: 2.1em auto; + display: block; + width: 130px; + border-radius: 5px; + " + /> + <h1 + style=" + font-size: 25px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + font-weight: 700; + color: #263238; + " + > + خبرنامهٔ Softwaretalks + </h1> + <h3 + style=" + font-size: 18px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + color: #263238; + " + > + شمارهٔ ۲۲ - پنجشنبه، ۱۰ تیر ۱۴۰۰ + </h3> + <hr /> + <ul + style=" + text-align: right; + font-family: Samim, sans-serif; + direction: rtl; + " + > + <a + href="https://blog.openreplay.com/how-to-evaluate-site-speed-with-the-performance-api" + ></a> + <li style="font-size: 18px"> + <a + href="https://blog.openreplay.com/how-to-evaluate-site-speed-with-the-performance-api" + ><b>ارزیابی سرعت سایت با استفاده از Performance API</b> + </a> + <p> + این مطلب به صورت مفصل درباره اجزای مختلف Performance API و نحوه + کارکرد آن‌ها در جهت ارزیابی سرعت برنامه‌های تحت وب توضیح می‌دهد + </p> + <br /> + <a + href="https://ariadne.space/2021/06/25/understanding-thread-stack-sizes-and-how-alpine-is-different/" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://ariadne.space/2021/06/25/understanding-thread-stack-sizes-and-how-alpine-is-different/" + ><b>محدودیت سایز پشته در thread و تفاوت alpine</b> + </a> + <p> + خیلی اوقات میشنویم و میبینیم که یک نرم افزار مخصوصاً بر روی کانتینر + های داکر وقتی از آلپاین به عنوان بیس استفاده می کنیم کرش میکنند، این + مطلب به مهمترین دلیل این اتفاق میپردازد + </p> + <br /> + <a + href="https://www.vice.com/en/article/qkv5xq/can-learning-to-code-delay-alzheimers" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://www.vice.com/en/article/qkv5xq/can-learning-to-code-delay-alzheimers" + ><b>آیا کدها و برنامه نویسی امکان تاخیر آلزایمر را دارند؟</b> + </a> + <p> + در این نوشته در مورد اینکه برنامه نویسی و کدها امکان تاخیر در بیماری + آلزایمر را دارند صحبت شده که خیلی جالب میتونه باشه... + </p> + <br /> + <a href="https://cutt.ly/pg-optimizer-1"></a> + </li> + <li style="font-size: 18px"> + <a href="https://cutt.ly/pg-optimizer-1" + ><b>بهینه‌ساز پستگرس، بخش یکم</b> + </a> + <p> + در این بخش کمی درباره معماری پستگرس و همچنین درباره الگوریتم‌های + مختلف پیمایش جدول در پستگرس حرف می‌زنیم. + </p> + <br /> + <a + href="https://www.linkedin.com/pulse/why-successful-people-dont-multitask-dr-travis-bradberry/" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://www.linkedin.com/pulse/why-successful-people-dont-multitask-dr-travis-bradberry/" + ><b>چرا افراد موفق مولتی تسک نیستند!؟</b> + </a> + <p> + در این مقاله با دلایل اینکه چرا افراد موفق مولتی تسک نیستند و مولتی + تسک بودن چه ضررهایی داره ، آشنا خواهید شد + </p> + <br /> + <a href="https://vrgl.ir/4uPzi"></a> + </li> + <li style="font-size: 18px"> + <a href="https://vrgl.ir/4uPzi" + ><b>Cursor Pagination در لاراول</b> + </a> + <p> + در این مقاله با تغییراتی که در pagination laravel در نسخه 8.41 ایجاد + شده آشنا خواهید شد ... + </p> + </li> + </ul> + <hr /> + <p + style=" + font-size: 13px; + font-family: Samim, sans-serif; + direction: rtl; + text-align: right; + " + > + تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: <b>حامد سعیدی،</b> + <b>محمد مهدی عصار،</b> <b>امیر شکری،</b> <b>هادی مشیدی،</b> + <b>امیر ابوئی</b> شما نیز می‌توانید + <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a + >. + </p> + <hr /> + <span + ><p + style=" + font-size: 16px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <img + src="https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png" + /><br /> + ارسال شده توسط <a href="https://pakat.net/">پاکت</a> + </p> + <p + style=" + font-size: 14px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید + </p> + <br + /></span> + </div> + </body> +</html> + + + +شماره خبرنامه 2.html + +urn:uuid:f153e65a-37a1-6af6-59e0-2248a2732f59 +2021-01-14T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۲</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office"> + + <head> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta http-equiv="Content-Type" content="text/html; " /> + <meta name="x-apple-disable-message-reformatting" /> + <meta name="apple-mobile-web-app-capable" content="yes" /> + <meta name="apple-mobile-web-app-status-bar-style" content="black" /> + <meta name="format-detection" content="telephone=no" /> + <title></title> + <link href="https://cdnjs.cloudflare.com/ajax/libs/vazir-font/27.1.0/font-face.css" rel="stylesheet" + type="text/css" /> + <style type="text/css"> + /* Resets */ + .ReadMsgBody { + width: 100%; + background-color: #ebebeb; + } + + .ExternalClass { + width: 100%; + background-color: #ebebeb; + } + + .ExternalClass, + .ExternalClass p, + .ExternalClass span, + .ExternalClass font, + .ExternalClass td, + .ExternalClass div { + line-height: 100%; + } + + a[x-apple-data-detectors] { + color: inherit !important; + text-decoration: none !important; + font-size: inherit !important; + font-family: inherit !important; + font-weight: inherit !important; + line-height: inherit !important; + } + + body { + -webkit-text-size-adjust: none; + -ms-text-size-adjust: none; + } + + body { + margin: 0; + padding: 0; + } + + .yshortcuts a { + border-bottom: none !important; + } + + .rnb-del-min-width { + min-width: 0 !important; + } + + /* Add new outlook css start */ + .templateContainer { + max-width: 590px !important; + width: auto !important; + } + + /* Add new outlook css end */ + + /* Image width by default for 3 columns */ + img[class="rnb-col-3-img"] { + max-width: 170px; + } + + /* Image width by default for 2 columns */ + img[class="rnb-col-2-img"] { + max-width: 264px; + } + + /* Image width by default for 2 columns aside small size */ + img[class="rnb-col-2-img-side-xs"] { + max-width: 180px; + } + + /* Image width by default for 2 columns aside big size */ + img[class="rnb-col-2-img-side-xl"] { + max-width: 350px; + } + + /* Image width by default for 1 column */ + img[class="rnb-col-1-img"] { + max-width: 550px; + } + + /* Image width by default for header */ + img[class="rnb-header-img"] { + max-width: 590px; + } + + /* Ckeditor line-height spacing */ + .rnb-force-col p, + ul, + ol { + margin: 0px !important; + } + + .rnb-del-min-width p, + ul, + ol { + margin: 0px !important; + } + + /* tmpl-2 preview */ + .rnb-tmpl-width { + width: 100% !important; + } + + /* tmpl-11 preview */ + .rnb-social-width { + padding-right: 15px !important; + } + + /* tmpl-11 preview */ + .rnb-social-align { + float: right !important; + } + + /* Ul Li outlook extra spacing fix */ + li { + mso-margin-top-alt: 0; + mso-margin-bottom-alt: 0; + } + + /* Outlook fix */ + table { + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + + /* Outlook fix */ + table, + tr, + td { + border-collapse: collapse; + } + + /* Outlook fix */ + p, + a, + li, + blockquote { + mso-line-height-rule: exactly; + } + + /* Outlook fix */ + .msib-right-img { + mso-padding-alt: 0 !important; + } + + @media only screen and (min-width:590px) { + + /* mac fix width */ + .templateContainer { + width: 590px !important; + } + } + + @media screen and (max-width: 360px) { + + /* yahoo app fix width "tmpl-2 tmpl-10 tmpl-13" in android devices */ + .rnb-yahoo-width { + width: 360px !important; + } + } + + @media screen and (max-width: 380px) { + + /* fix width and font size "tmpl-4 tmpl-6" in mobile preview */ + .element-img-text { + font-size: 24px !important; + } + + .element-img-text2 { + width: 230px !important; + } + + .content-img-text-tmpl-6 { + font-size: 24px !important; + } + + .content-img-text2-tmpl-6 { + width: 220px !important; + } + } + + @media screen and (max-width: 480px) { + td[class="rnb-container-padding"] { + padding-left: 10px !important; + padding-right: 10px !important; + } + + /* force container nav to (horizontal) blocks */ + td.rnb-force-nav { + display: inherit; + } + + /* fix text alignment "tmpl-11" in mobile preview */ + .rnb-social-text-left { + width: 100%; + text-align: center; + margin-bottom: 15px; + } + + .rnb-social-text-right { + width: 100%; + text-align: center; + } + } + + @media only screen and (max-width: 600px) { + + /* center the address & social icons */ + .rnb-text-center { + text-align: center !important; + } + + /* force container columns to (horizontal) blocks */ + th.rnb-force-col { + display: block; + padding-right: 0 !important; + padding-left: 0 !important; + width: 100%; + } + + table.rnb-container { + width: 100% !important; + } + + table.rnb-btn-col-content { + width: 100% !important; + } + + table.rnb-col-3 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-bottom: 10px; + padding-bottom: 10px; + /*border-bottom: 1px solid #eee;*/ + } + + table.rnb-last-col-3 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + } + + table.rnb-col-2 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-bottom: 10px; + padding-bottom: 10px; + /*border-bottom: 1px solid #eee;*/ + } + + table.rnb-col-2-noborder-onright { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-bottom: 10px; + padding-bottom: 10px; + } + + table.rnb-col-2-noborder-onleft { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + + /* change left/right padding and margins to top/bottom ones */ + margin-top: 10px; + padding-top: 10px; + } + + table.rnb-last-col-2 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + } + + table.rnb-col-1 { + /* unset table align="left/right" */ + float: none !important; + width: 100% !important; + } + + img.rnb-col-3-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-2-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-2-img-side-xs { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-2-img-side-xl { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-col-1-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + img.rnb-header-img { + /**max-width:none !important;**/ + width: 100% !important; + margin: 0 auto; + } + + img.rnb-logo-img { + /**max-width:none !important;**/ + width: 100% !important; + } + + td.rnb-mbl-float-none { + float: inherit !important; + } + + .img-block-center { + text-align: center !important; + } + + .logo-img-center { + float: inherit !important; + } + + /* tmpl-11 preview */ + .rnb-social-align { + margin: 0 auto !important; + float: inherit !important; + } + + /* tmpl-11 preview */ + .rnb-social-center { + display: inline-block; + } + + /* tmpl-11 preview */ + .social-text-spacing { + margin-bottom: 0px !important; + padding-bottom: 0px !important; + } + + /* tmpl-11 preview */ + .social-text-spacing2 { + padding-top: 15px !important; + } + + /* UL bullet fixed in outlook */ + ul { + mso-special-format: bullet; + } + + } + + @media screen { + body { + font-family: 'Vazir', 'Tahoma', Geneva, sans-serif; + } + } + </style> + <!--[if gte mso 11]><style type="text/css">table{border-spacing: 0; }table td {border-collapse: separate;}</style><![endif]--> + <!--[if !mso]><!--> + <style type="text/css"> + table { + border-spacing: 0; + } + + table td { + border-collapse: collapse; + } + </style> + <!--<![endif]--> + <!--[if gte mso 15]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--> + <!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--> + </head> + + <body> + + <table border="0" align="center" width="100%" cellpadding="0" cellspacing="0" class="main-template" + bgcolor="#f9fafc" style="background-color: rgb(249, 250, 252);"> + + <tbody> + <tr> + <td align="center" valign="top"> + <!--[if gte mso 9]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="590" style="width:590px;"> + <tr> + <td align="center" valign="top" width="590" style="width:590px;"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="590" class="templateContainer" + style="max-width:590px!important; width: 590px;"> + <tbody> + <tr> + + <td align="center" valign="top"> + + <table class="rnb-del-min-width" width="100%" cellpadding="0" border="0" + cellspacing="0" style="min-width:590px;" name="Layout_0" id="Layout_0"> + <tbody> + <tr> + <td class="rnb-del-min-width" valign="top" align="center" + style="min-width:590px;"> + <a href="#" name="Layout_0"></a> + <table width="100%" cellpadding="0" border="0" height="38" + cellspacing="0"> + <tbody> + <tr> + <td valign="top" height="38"> + <img width="20" height="38" + style="display:block; max-height:38px; max-width:20px;" + alt="" + src="http://r.t10.pktsrv2.com/im/130771/11996271bd9eaa67a70ecb0a888804fe4a7c5dd570282a89a399bb94b9584314.gif?e=QUdX9psgMKt7HpuzGB93x9BA2Gp8gqkdW7zMt8akZ56LWdMBfe91f5DI7qsn2uUku4E8hjjoj9ZyMmKe0EkplYtw7OngE1qhkPLhCPoTHieHzQHienLssv6AD5E8TqfTenGL7wZ-JYsKI74SVWYOfTxxdDcP6BhEWAnaaBCULkJUPr3a_oBHeloMxY2FJQ" + sib_img_id="0" /> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + <tr> + + <td align="center" valign="top"> + + <div style="background-color: rgb(255, 255, 255); border-radius: 0px;"> + + <!--[if mso]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> + + <!--[if mso]> + <td valign="top" width="590" style="width:590px;"> + <![endif]--> + + <table width="100%" cellpadding="0" border="0" cellspacing="0" + name="Layout_2" id="Layout_2"> + <tbody> + <tr> + <td align="center" valign="top"><a href="#" name="Layout_2"></a> + <table border="0" width="100%" cellpadding="0" + cellspacing="0" class="rnb-container" bgcolor="#ffffff" + style="height: 0px; background-color: rgb(255, 255, 255); border-radius: 0px; border-collapse: separate; padding-left: 20px; padding-right: 20px;"> + <tbody> + <tr> + <td class="rnb-container-padding"> + + <table border="0" cellpadding="0" + cellspacing="0" + class="rnb-columns-container" + align="center" style="margin:auto;"> + <tbody> + <tr> + + <th class="rnb-force-col" + align="center" + style="text-align: center; font-weight: normal"> + + <table border="0" + cellspacing="0" + cellpadding="0" + align="center" + class="rnb-col-1"> + + <tbody> + <tr> + <td height="10"> + </td> + </tr> + + <tr> + <td + style="font-family:Vazir,Tahoma,Geneva,sans-serif; color:#3c4858; text-align:center;"> + + <span + style="color:#3c4858;"><strong><span + style="font-size:24px;"><span + style="font-size:28px;">خبر‌نامه + مهندسان + نرم‌افزار</span><br /> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شماره ۲ - پنجشنبه، ۲۵ دی ۹۹ + </h3> + </span></strong></span> + </td> + </tr> + <tr> + <td height="10"> + </td> + </tr> + </tbody> + </table> + </th> + </tr> + </tbody> + </table> + </td> + </tr> + + </tbody> + </table> + + </td> + </tr> + + </tbody> + </table> + <!--[if mso]> + </td> + <![endif]--> + + <!--[if mso]> + </tr> + </table> + <![endif]--> + + </div> + </td> + </tr> + <tr> + + <td align="center" valign="top"> + + <div style="background-color: rgb(255, 255, 255); border-radius: 0px;"> + + <!--[if mso]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> + + <!--[if mso]> + <td valign="top" width="590" style="width:590px;"> + <![endif]--> + <table class="rnb-del-min-width" width="100%" cellpadding="0" border="0" + cellspacing="0" style="min-width:100%;" name="Layout_8"> + <tbody> + <tr> + <td class="rnb-del-min-width" align="center" valign="top"> + <a href="#" name="Layout_8"></a> + <table width="100%" border="0" cellpadding="0" + cellspacing="0" class="rnb-container" bgcolor="#ffffff" + style="background-color: rgb(255, 255, 255); padding-left: 20px; padding-right: 20px; border-collapse: separate; border-radius: 0px; border-bottom: 0px none rgb(200, 200, 200);"> + + <tbody> + <tr> + <td height="20" + style="font-size:1px; line-height:20px; mso-hide: all;"> +  </td> + </tr> + <tr> + <td valign="top" class="rnb-container-padding" + align="left"> + + <table width="100%" border="0" + cellpadding="0" cellspacing="0" + class="rnb-columns-container"> + <tbody> + <tr> + <th class="rnb-force-col" + style="text-align: left; font-weight: normal; padding-right: 0px;" + valign="top"> + + <table border="0" + valign="top" + cellspacing="0" + cellpadding="0" + width="100%" + align="left" + class="rnb-col-1"> + + <tbody> + <tr> + <td + style="font-size:14px; font-family:Vazir,Tahoma,Geneva,sans-serif, sans-serif; color:#3c4858;"> + <div dir="rtl" + style="text-align:right;"> + <ul> + <li + style="text-align: right;"> + <a href="https://r.t10.pktsrv2.com/mk/cl/f/UmFeTBEEWJbW283_bsREdZbefHoOufDtMEd6YurAx-F7R1OL7qyiS5-Jq2S3t6xGJ_2ktxXkplFtQZB_ZVIIfnd5FfVeuNQ_z3-JpCBkWfFAhSXleNOmiSRAM_n_IBJydpPBzzMGXz1YGdO3wZv6Qgc" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="0">تاریخ + ناگفته‌ی + زنان + در + برنامه‌نویسی + کامپیوتر</a> + </li> + </ul> + + <div + style="text-align: right;"> + این + متن + دو-قسمتی، + که + در + صفحه‌ی + ویرگول + «تکانه» + منتشر + شده + است، + نگاهی + میکند + به + تاریخچه‌ی + ورود + و + حضور + زنان + در + دنیای + برنامه‌نویسی + کامپیوتر + </div> + + <div + style="text-align: right;"> +   + </div> + + <ul> + <li + style="text-align: right;"> + <a href="https://r.t10.pktsrv2.com/mk/cl/f/VBgNxxMMlRqwPhK5yvSGJHYRCl-QYUZKxUfv9tNbYMAlwUt9WeiHLuvdl_Rg5vRFfGExzLhsZOo6mln_fRrpJ31E8n3qXRAco1nHBz7zeyo7Sg8BUTeexhmbzOwQFWCAh0lttVU0OTGzhEdvdad8g-38gwBc5qU-DPMwIyeafBrNZZVpfSPPf97xpWkG7tA2Wgx1" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="1">کانال + یوتیوبی + برای + علاقه‌مندان + به + DevOps + و + Cloud</a> + </li> + </ul> + + <div + style="text-align: right;"> + اگر + به + حوزه + DevOps + و + Cloud + علاقه + دارید + یا + تو + این + حوزه + کار + میکنید، + داخل + این + کانال + یوتیوبی + میتونید + آرشیو + کنفرانس‌های + DevOpsCon + رو + مشاهده + کنید. + </div> + + <div + style="text-align: right;"> + <span + style="background-color: transparent;"> </span> + </div> + + <ul> + <li + style="text-align: right;"> + <a href="https://r.t10.pktsrv2.com/mk/cl/f/4JnESNe5T0lqlqgForJiZ7Chsc52Ftb04ze0dMA_kbNT3sIT9s_BHV4Vopo1jZZrwuDgVadySPAv3T5lX0Dmjrx_KSVwWZt1WKn-UW8ajf5kBGfrEj8674iLtv7mwRsBTYwwsEDcEbCUo3f0Hvt7z4umWhnshDsZq9sxDZbN48Q7mRAcPuzc" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="2">اصولی + ساده + و + گاها + بدیهی + برای + کد‌های + آدمیزادی + در + PHP!</a> + </li> + </ul> + + <div + style="text-align: right;"> + نوشتن + کد + تمیز، + خوانا + و + قابل + توسعه + مهارتیه + که + به + مرور + و با + تمرین + زیاد + و + مطالعه + بدست + میاد. + اگر + شما + هم + از + این + دسته + برنامه‌نویسان + هستید + که + قصد + دارند + کد + تمیز + بنویسند + و از + قضا + PHP + هم + کار + میکنید، + پس + این + ریپوزیتوری + Clean + code + in + php + رو + حتما + باید + ‌ یک + نگاهی + بندازین. + </div> + + <div + style="text-align: right;"> + <span + style="background-color: transparent;"> </span> + </div> + + <ul> + <li + style="text-align: right;"> + <a href="https://r.t10.pktsrv2.com/mk/cl/f/3ZQ8SRuV2ZalUpaHqAb3zrlOuRwvtt-r5kAzsbT57sVOepJtNHrld6s58JYz5IlrNHVBN8KmoR5qbzrzCMTXTVQ7KOustSC5pSHE8xDmWiZqF_GbI73A2hdjBodhPzAHGwxF2oG4-c3dvZ0wDE4vEVCLmfDd5ng7-nQfbzl_Ghy9tFT-iOYxKLuxIzpqDb6rhzbrhbxYhn1JPUku" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="3">پیدا + کردن + Origin + IP + پشت + CDN</a> + </li> + </ul> + + <div + style="text-align: right;"> + در + این + مطلب،‌ + نویسنده + توضیحاتی + درباره + عملکرد + CDN + و + این‌که + چطور + CDN + ها + سرورهای + ما + رو + پشت + خودشون + قایم + میکنند + میده. + در + عین + حال + توضیح + هم + میده + این + قایم + شدنه + همیشه + کارساز + نیست! + </div> + + <div + style="text-align: right;"> + <span + style="background-color: transparent;"> </span> + </div> + + <ul> + <li + style="text-align: right;"> + <a href="https://r.t10.pktsrv2.com/mk/cl/f/DWRa8Oi9X4yRmc-_YW9YsOhfd4TEhZFU2-pVKrlyxjWlKpQLLJduKodlL-KGlkDBkE7npZVA4XFsFQ2hnqtm-LsVEsBa8WWpddghOjFHrqJu17hZ80xzm9iM8e4vmUAROmO_BV481qfTQ480O5zIhDLvcu-u6v2FH2SCF6BkQ_Pd8JrxzpuutMOgzg" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="4">ویدئوی + فارسی: + آشنایی + با + Aspect + Oriented + Programming</a> + </li> + </ul> + + <div + style="text-align: right;"> + در + این + ویدئو، + سروش + در + ۹۰ + دقیقه + درباره + مفاهیم + Aspect + Oriented + Programming + توضیح + می‌دهد + و با + ذکر + مثال + و + کدنویسی + در + جاوا + کاربرد + این + مفاهیم + را + نشان + می‌دهد<br /> +   + </div> + + <div + style="text-align: right;"> +   + </div> + + <ul> + <li + style="text-align: right;"> + <a href="https://r.t10.pktsrv2.com/mk/cl/f/WsWCRR30IAuLgn3IxZkjnr2jm-CO7M6qLVXTrI-JZO4geLmokD9FUaLMwStz9drsOZTlvA2n3lx_ZOBYtZ98-DRoPro9dJu3dj9rds4rvZdQ6AMSaJrx8-sBZplT-nSb7rVDoc1q5_3GATQ63zzhwdQ" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="5">چجوری + یک پروژه + React + رو + با + Docker + روی + سرور + مستقر + کنیم</a> + </li> + </ul> + + <div + style="text-align: right;"> + تو + این + مقاله + قراره + یه + پروژه + ساده + React + رو + با + استفاده + از + Docker + روی + سرور + مستقر + کنیم + و به + اصطلاح + Dockerize + کنیم. + </div> + + <div + style="text-align: right;"> + <span + style="background-color: transparent;"> </span> + </div> + + <ul> + <li + style="text-align: right;"> + <a href="https://r.t10.pktsrv2.com/mk/cl/f/cPaKI5-fy221DS506S-Pj_A3-BfSM4xmp7Q1nMC-cWSHCQhJuel2Q0yPXvhDnoL89QQm4H391m1lQRCCzqDVim5RZjPLyidt53Gg0_qFWd_dc9e53o20rPKX2sf2pReh7klBdIHUTp9fXnW1bZzg0s9ZxU4TmeZ6ws1GsTeetvZxOFasrxI2Yz6Vf20r9N1bQAOE8gIMwc3w5bxHcmE1Vhcw1mliruNP463BAec8_Gr_-LIK_QVCeaEIK6j_xpxeORQbizKyumH00VJkmS_9ONCmQH1qlMKSFH_txqTC8LUGGPu0YtGVdDtuEjpq" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="6">مروری + بر + ارث‌بری + در + جاوا + با + دو + مثال</a> + </li> + </ul> + + <div + style="text-align: right;"> + ارث + بری + (inheritance) + یک + مفهوم + بنیادی + و + کلیدی + در + برنامه‌نویسی + شی‌گرا + است.در + برنامه‌نویسی + نیز + این + واژه + مفهومی + مشابه + دنیای + واقعی + دارد + و به + معنای + ارث + بردن + خصوصیات + است. + در + این + نوشته + قصد + دارم + نگاهی + دوباره + به + ارث‌بری + در + جاوا + داشته + باشم. + در + ادامه + به + دو + سوال + درخصوص + ارث‌بری + در + جاوا + پاسخ + دهید + و + توانمندی + خود + را + محک + بزنید! + </div> + + <div + style="text-align: right;"> +   + </div> + + <div + style="text-align: right;"> + --- + </div> + + <div + style="text-align: right;"> + در + این + شماره + از + خبرنامه، + دوستان + خوبی + به + نام‌های + <strong>رویا + پاکزاد</strong>، + <strong>امیرحسین + بقایی</strong>، + <strong>حامد + سعیدی</strong>، + <strong>علی + ناصری</strong>، + <strong>مرتضی + اسدی</strong> + در + تهیه + محتوا + کمک + کردند. + شما + هم + می‌توانید + <a href="https://r.t10.pktsrv2.com/mk/cl/f/f8ojMyd5pfRsQVtHiOXEtTebizvOqNq7mdCo-YjlBkDdH9_EEMPy-kUgRasmfCCQrwAtJnCcosve6Bik4wLSDdaXWiWx0cJSvVnaYH8DizdfxgkqVrlO7fpZFf0ago9OQ5umrYFwR8qFiiY4yVwVdqR_t_N3WUyZgHBxdnxvO0GOggWbjgHzdNrFFnnpET7l5XE8WcObVUI3ZfuKT-ut2eI" + style="text-decoration: underline; color: rgb(0, 146, 255);" + sib_link_id="7">با + ایجاد + یک + issue + جدید</a> + در + گیت‌هاب + پروژه، + در + تهیه + محتوای + این + خبرنامه + در + شماره‌های + بعدی + به + ما + کمک + کنید. + </div> + + <div + style="text-align: right;"> +   + </div> + </div> + </td> + </tr> + </tbody> + </table> + + </th> + </tr> + </tbody> + </table> + </td> + </tr> + <tr> + <td height="20" + style="font-size:1px; line-height:20px; mso-hide: all;"> +  </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + <!--[if mso]> + </td> + <![endif]--> + + <!--[if mso]> + </tr> + </table> + <![endif]--> + + </div> + </td> + </tr> + <tr> + + <td align="center" valign="top"> + + <div style="background-color: rgb(249, 250, 252);"> + + <table class="rnb-del-min-width rnb-tmpl-width" width="100%" cellpadding="0" + border="0" cellspacing="0" style="min-width:590px;" name="Layout_6" + id="Layout_6"> + <tbody> + <tr> + <td class="rnb-del-min-width" align="center" valign="top" + bgcolor="#f9fafc" + style="min-width:590px; background-color: #f9fafc; text-align: center;"> + <a href="#" name="Layout_6"></a> + <table width="590" class="rnb-container" cellpadding="0" + border="0" align="center" cellspacing="0" + bgcolor="#f9fafc" + style="padding-right: 20px; padding-left: 20px; background-color: rgb(249, 250, 252);"> + <tbody> + <tr> + <td height="10" + style="font-size:1px; line-height:1px; mso-hide: all;"> +  </td> + </tr> + <tr> + <td> + <div + style="font-size:14px; color:#888888; font-weight:normal; text-align:center; font-family:Vazir,Tahoma,Geneva,sans-serif;"> + <div dir="rtl" + style="text-align:right;"> + <div style="text-align: center;"> + ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Mq_B1xm81Fq_LHOoWjIh9XR4FkPvmRHA6PFni-UjaMrCKWWbfTZ1MJEJiNRVKLJa_FChoIiDG7LdTZA97JySj7P_ZswIQ2ssST-d6rC3Uwvxr7JrM2BJFokqkVTfsGf2HwUEzq9fKL7IU-o" + style="text-decoration: underline; color: rgb(102, 102, 102);" + sib_link_id="8">پاکت</a> + </div> + + <div style="text-align: center;"> + سرویس پاکت اسپانسر ارسال + ایمیلهای این خبرنامه است.<br /> + با کد تخفیف sota10 میتوانید از + ۱۰ درصد تخفیف در خرید پلنهای + پاکت بهره‌مند شوید</div> + </div> + </div> + </td> + </tr> + <tr> + <td height="10" + style="font-size:1px; line-height:1px; mso-hide: all;"> +  </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + + </div> + </td> + </tr> + </tbody> + </table> + <!--[if gte mso 9]> + </td> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + + </body> + + </html> + +</body> + +</html> + + + +شماره خبرنامه 36.html + +urn:uuid:f38d4531-4bba-31d6-79f6-31ddd2221e1b +2021-10-16T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="background-color: #000;"> + <div style="max-width: 680px; margin: 0 auto;color: #fff;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: red;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: red;"> + شمارهٔ ۳٦ - شنبه، ۲۴ مهر ۱۴۰۰ + </h3> + <div> <p style="text-align: center; color: red;font-family: 'Samim', sans-serif;"><small>این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است</small></p> </div> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://austingil.com/how-to-build-html-forms-right-security/"><b>چطور امنیت HTML رو به شکل صحیح پیاده کنیم؟ </b></a><br/>این مقاله یکی از چندین بخش مربوط به ساخت صحیح فرم‌های HTML است که به مباحث امنیت فرم‌ها با توضیح مفاهیم و مثال می‌پردازد + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://www.thedroidsonroids.com/blog/flutter-vs-react-native-what-to-choose-in-2021"><b>فلاتر یا ری اکت نیتیو !؟</b></a><br/>یک مقایسه ی کامل بین فلاتر و ری اکت نیتیو را به طور کامل بخوانید و بعد از این مقایسه انتخاب بهتری برای شروع یکی از این موارد داشته باشید ... + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://jyelewis.com/blog/2021-09-28-javascript-is-fast/"><b>بهمون دروغ گفتن، جاوااسکریپت اتفاقا خیلی سریعه</b></a><br/>یه قانون معروف هست که میگه: هر اپی رو که بشه با جاوااسکریپت نوشت، بالاخره حتما با جاوااسکریپت نوشته خواهد شد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: red;" href="https://metebalci.com/blog/hello-ipv6/"><b>سلام IPv6: آموزشی مختصر مناسب کابران IPv4</b></a><br/>در این مقاله، نویسنده نحوه کار مفاهیم شناخته شد‌ه IPv4 را، با محوریت شبکه‌های خانگی و اداری کوچک، در IPv6 توضیح می‌دهد. بنابراین اگر درباره DHCP یا NAT اطلاعاتی دارید و کنجکاوید بدانید نحوه عملکرد آن‌ها در IPv6 چگونه است، این مطلب مناسب شماست. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>امیر شکری،</b> + + + <b>Rahmanism،</b> + + + <b>slashsbin.</b> + + شما نیز می‌توانید <a style="color: red" href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a style="color: red" href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #fff;"> <a style="color: red" href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </div> + </body> +</html> + + +شماره خبرنامه 9.html + +urn:uuid:55771249-677f-863c-cb9e-eec39a674ef5 +2021-03-04T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۹</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:&#39;Samim&#39;,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:&#39;Samim&#39;,sans-serif;direction:rtl;color:#263238"> + شماره ۹ - پنجشنبه، ۱۴ اسفند ۹۹ </h3> + <hr /> + <ul style="text-align:right;font-family:&#39;Samim&#39;,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>چطوری با بینایی کامپیوتر، هواپیماها رو در تصویر هوایی پیدا کنیم؟</b> </li> + <p> اگر شما هم از کسانی هستید که از خوندن مطالب طولانی و پیچیده در مورد هوش مصنوعی، یادگیری عمیق و شبکه‌های + عصبی کانولوشنال خسته شدید و واقعا نمی‌دونید این شبکه‌ها چه تفاوتی با شبکه‌های عصبی دیگه دارند، این مطلب + برای شماست. این‌بار می‌خواهیم یاد بگیریم که چطور برنامه‌هایی رو بنویسیم که اشیا رو در تصاویر با استفاده + از یادگیری عمیق تشخیص بده و مدلی طراحی خواهیم کرد که در تصاویر هوایی هواپیماها رو پیدا میکنه. همچنین در + این پست قصد داریم با رویکرد آموزشی یاد بگیریم که شبکه های عصبی کانولوشنال (پیچشی) چطور کار می‌کنند. یکی + از کاربرد‌های این روش که ممکن است روزانه از اون استفاده کنیم جستجوی یک کلمه در اپلیکیشن گوگل فوتوز بر + اساس تصویر است. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/CnltueedXFs4qvyKpjZwovVEjvjTpSEBLStb_o_HfDwgA5FTZ4iTXjW1sG5WnFeJjIQxRUv9tGnPLYi1K4MQ0ENRi3KyxkcHuqHD0JWdmIv5aPWUKA5bXe7O6x_XD9HzQ6DaLNZORYqh6QhpV_bjDgIv" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>گیتهاب چطور کره‌زمین صفحه اول سایتش رو درست کرده؟</b> </li> + <p> اگر صفحه اول گیتهاب رو دیده باشین، چندوقتیه که یک کره‌زمین خوشگل گذاشته که توش فلش‌هایی که شامل آخرین + رویدادهای پروژه‌های روی گیتهابه رو نشون میده. اگر دوست دارین بدونین چطوری اون کره‌زمین و اطلاعاتش رو + درست کردن، مقاله خودشون از بلاگشون رو مطالعه کنید. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/mHjDAxxXetSFFdn2JYJarqB9oHUo9RmxGtp6qSVHHJ3SvkC6PxgCkX6avNfv2asLiAJZ0zIFmapn_58aQp4a0MizXMSCfyA_uzM_c9i3OYruzeLcceC4XI2a2CtdNx1rDsniWpF4_PtqNnN2NVS-1nJgbConpRoMbIqfPyxyVAT6NiCyhsq55yTlYWi7mSOx4UoixuyLnMBiOKsa" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>کانال باحال یوتیوبی به نام Computerphile </b> </li> + <p> تقریبا مدت زیادیه مشترک این کانال شدم و اکثر ویدیو‌هاش برام جالب و مفید بوده. اگر توی حوزه کامپیوتر کار + میکنید، توی این کانال کلی ویدیو‌های کوتاه و جالب درباره موضوعات مختلف این حوزه میتونید پیدا کنید که هم + خیلی خوب توضیح داده شدن و هم خیلی مفید و مختصرن <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/kS6u3iydwyBgdpakpzgi2gJzgzYK1q6ZPxN_S5JdBijuDC-6icrDuPXTyFovx-8UEzSSoicTdqUcwVMxZWkOQXyQeKS_YcQnEvisefhS-40H0no0C5NikykU8QJydJLp02Ngrhl6yA_AI8TzSybKxweUko3d7f9Y07f-i4Rbix_eua25HnzZO-KWBehbPyqYPxgQmw" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>How I cut GTA Online loading times by 70%</b> </li> + <p> در این مقاله نویسنده ابتدا مشکل اجرای نسخه آنلاین بازی جی تی ای را مطرح میکند، سپس با استفاده از + ابزارهای مختلف سعی در رمزگشایی بازی و پیدا کردن مشکل دارد. در نهایت، با افزودن چند تابع، بهبودی نزدیک به + ۷۰ درصد در زمان اجرای نسخه آنلاین به دست می آید. نکته حائز اهمیت این است که نویسنده به سورس کد بازی + دسترسی نداشته و بهبود روی نسخه تجاری بازی انجام شده است. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/m6909XzVut_1RLjR0xUfmTe6eGUfKKegRpIsFKTBHfiJceVCN_Spl1YyOgcnhioE6_rVe2nCUKKoeAzeO5IBjM_-h2EiO-Rfs9XywktJhhwWewwLySgGPgwSyEB7W3UoqqGpCDfO97ZJonqjv0L89o-zVZXA4HNtWYY4XcfXSDI7cnxPhrDwjMoIPmzMCYdN1KC20jG_4CuXRONg3Am1hpziFiHKk16j" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>آموزش کش ریکوئست ها در لاراول</b> </li> + <p> توی لاراول امکانی وجود داره که شما با اضافه کردن یک میدلور میتونید یک تگ به تمام ریکوئست های گت سایتتون + اضافه کنید و به مرورگر بفهمونید کی ریکوئست از کش خودش بخونه و کی کانتنت از سرور دریافت کنه <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/9V12J-sdsBbbt2W6_14mXZEkq20PQX2sXK81dZ-aP1yjyhQsOxEu0WQZvAmXGsbMCkfyDpIDMwZPwYzn3ZXTVNBgTFkbz9hL7QF6bMdWnhV6S0FD0a2eDzqueyCC5nwZdIY-GGK49lJPqW5tTNzDIGYTpzF0wFQKVsdggfUXfAJG41eN6KUtC43P7DKvgB9IGCwcKfqcQG9F2aP9V_X1V2UYYAn8WsSCRA" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other + Companies</b> </li> + <p> در این مقاله، یک محقق امنیتی گزارش میدهد چطور با بارگذاری کدهای مخرب روی سرورهای پکیج منیجر توانسته است + به کمپانی های بزرگ و کوچک بسیار زیادی نفوذ کند. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/zMcW1eQuyJh5Oy0NHXo4kEfJ9RsuYVIxL64mD7ETscaO4C_y7VBzTtPcqJ7n82F--gUXxTOSVvkdwPcZ1K8Ai4aKvjBnIaCzxBgCDtes-7x0XjoGWOLp7p5ZrAusdjD-i0NbjBCNyLRge9TlGGAgMDbo9lWgLQJ9QvJ8_nojfStdA-ST1TrA8UejNfv4o3oRuLmP2iSFVdeZ6Yn0ey0dLtvl" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:&#39;Samim&#39;,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>حسن شهبازی،</b> <b>AriaieBOY</b> در تهیه محتوا کمک + کردند. (شما هم قصد مشارکت داری؟ از <a + href="https://r.t10.pktsrv2.com/mk/cl/f/n044vUMl6zbt0NgNnS6UHV6-vZQ1nuTg3-9awuTnWgMo_93K6URXraaajg-_uw4YpxAV8NvhrAYrf1XguHEzrz0Ql8N1g5rQu-0ewNe1booaSzEQqZ5HavGT-pOIWr9vlY0h3BkqZ6Yi1aGqhTFuMvWIvld-MAdmRt9i0NYnqiPvaV0dNPSTPoi5P9nXyA" + sib_link_id="6">اینجا</a> شروع کن) </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:&#39;Samim&#39;;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=8hl-RAGlIOFhRtTxSbTcpwoIGUAADjtt5_hlqpOHGZYnKpJEGA5F_9g_De9HLuJ3w2CG3M7XMDPQwwnG3pbF2fLdNI2xerViOdGXFrFUl3yvJ2OUCxq4bTM3mRerKf8m3jnXDgs8G_g5QXt2NPqsBIiCPqOTJBVK6jvCbhIpHJOn-Ejb9heXPZzz7dyOF0lwEdEGTiCVuDRzkkeQU-3-tlxt3A" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/t_cCCCzDloAFGgyJtNhxSg250DFLP9SGLbv2GM_woIyO63rEMnBv9YBL_7eravipo_JjUtTwa1S0dIpl5VuVM0wiUWq3jGykZBUo3Th1ZksA6o81cDhJ-feQaHHT3YsZ_seRantCK6KAz8Xgb_M9" + sib_link_id="7">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:&#39;Samim&#39;;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/eYh0QMMZr2AKI2yInHgcNizE9ULnezvYtuI-rbwryOZFuupRkGdBaUbZkwCjt580P7FYlxGwoddPz0aj7Dc9unPey314sKa4aK8vdVti4uj6D39CV6XBGuq9oYJ7l9wv5pUnqW1RBrSyI4bgqs-G" + sib_link_id="8">سرویس پاکت</a> اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید </p> + </span> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 64.html + +urn:uuid:86b55484-74fd-a049-b303-c852969f80e4 +2022-09-01T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ٦۴ - پنجشنبه، ۱۰ شهریور ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/"><b>پراسس‌های زامبی و داکر</b></a><br/>احتمالا گاهی پیش اومده که توی ایمیج‌های داکری که درست میکنید پراسس‌های زامبی مشاهده کنید. یعنی پراسسی که کارش رو کرده ولی مادر خبر نداره که فرزند کارش رو انجام داده و باید از لیست پراسس‌ها حذف بشه. دونستن این که چطوری جلوی این اتفاق رو بگیریم و اصلا چرا باید بگیریم یا نگیریم،‌میتونه به درک بهتر ما از عملکرد پراسس‌ها در کانتینر‌ها یا سیستم‌عامل‌ها کمک کنه. این مطلب به صورت اختصاصی به داکر مرتبطه و میتونه شما رو با این مساله بهتر و عمیقتر آشنا کنه + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://sookocheff.com/post/kubernetes/understanding-kubernetes-networking-model/"><b>مدل شبکه کوبرنتیز</b></a><br/>تقریبا پیچیده‌ترین بخش کوبرنتیز (برای من البته) بخش شبکه و ارتباط هستش. این که همه چیز چطوری همدیگرو اینقدر راحت میبینن و با هم صحبت میکنن با این همه تغییرات و آپدیت‌های مداوم روی سرویس‌ها. مطالعه و آشنایی اولیه با شبکه در کوبرنتیز میتونه درک مشکلات و مسائل مرتبط رو راحت‌تر و شیرین‌تر کنه. این مطلب به صورت کلی به این موضوعات پرداخته + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.blog/2022-08-25-introducing-trilogy-a-new-database-adapter-for-ruby-on-rails/"><b>Trilogy اپن سورس شد</b></a><br/>گیت‌هاب Trilogy که یک آداپتور دیتابیس برای اتصال Ruby on Rails به سرورهای سازگار با MySQL است را اپن سورس کرده است و در این نوشته در وبلاگ گیت‌هاب درباره آن توضیح می‌دهد + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.samueltaylor.org/articles/how-to-learn-a-codebase.html"><b>چطور به یک تیم بپیوندیم و کدبیس تیم را یاد بگیریم؟</b></a><br/>در این مقاله نسبتاً طولانی، در بخش میانی نویسنده پروسه‌ای برای یادگیری کدبیسی که تا به حال با آن آشنا نبودیم در زمان پیوستن به یک تیم جدید را بررسی و توصیه‌هایی می‌کند. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://zserge.com/posts/one-time-passwords/"><b>کلمات عبور یکبار مصرف چطور کار می‌کنند؟</b></a><br/>این نوشته به بررسی شیوه عملکرد رمزهای عبور یکبار مصرف می‌پردازد و در انتها با ۱۶ خط کد به زبان Go تابعی برای ارائه رمز یکبار مصرف بر اساس کلید مخفی پیاده‌سازی می‌کند + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 63.html + +urn:uuid:bc64e411-1107-a925-22dc-e6aa5ea0391e +2022-08-25T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ٦۳ - پنجشنبه، ۰۳ شهریور ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.sheshbabu.com/posts/how-to-prevent-code-reviews-from-slowing-down-your-team/"><b>چطور از کند شدن تیم به خاطر بازبینی کد جلوگیری کنیم؟</b></a><br/>این مطلب در واقع دلایلی که پروسه بازبینی کد زمان می‌برد را بررسی کرده به عنوان مثال نداشتن بررسی‌های اتوماتیک و بر همین اساس می‌توان با رفع این دلایل، از کند شدن خروجی تیم به خاطر بازبینی کد جلوگیری کرد + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://beza1e1.tuxen.de/lore/index.html"><b>فولکلور نرم‌افزار</b></a><br/>مجموعه داستان‌هایی از باگ‌هایی که فراتر از باورهای معمول هستند + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://developers.redhat.com/blog/2019/07/08/10-tips-for-reviewing-code-you-dont-like"><b>۱۰ نکته برای بازبینی کدی که دوستش ندارید</b></a><br/>در این مطلب از وبلاگ ردهت درباره نکات بازبینی کد یا Code Review صحبت شده است تا محترمانه و با کمترین چالش، درباره کدی که به هر دلیل بازبینی آن را دوست نداریم بتوانیم Code Review انجام بدهیم + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/@meyttavasoli/redis-is-fast-but-how-can-it-be-faster-and-use-less-memory-8f350725a0de"><b>امکانات ردیس برای بهبود پرفورمنس</b></a><br/>یکی از دیتابیس هایی که معمولا برای کش کردن داده ها استفاده میشه ردیس هست. طبیعتا کش کردن داده برای سریع تر کردن پاسخ دهی و یا کم کردن بار از روی دیتابیس های هسته انجام میشه و معمولا ردیس در اسکیل های بزرگ هم پاسخگو است. اما مسئله ای که وجود داره اینه که گاها به ست کردن چند کلید ساده اکتفا میکنیم و خیلی سمت بهبود پرفورمنس در خود کش کردن داده نمیریم. بهبودهایی که گاها لازم میشن. در این نوشته درباره بعضی امکانات ردیس برای بهبود پرفورمنس ردیس بخوانید + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 49.html + +urn:uuid:e81db834-f25e-f9a6-46bf-17a9634f0e4c +2022-02-24T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۹ - پنجشنبه، ۰۵ اسفند ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="http://crunchtools.com/comparison-linux-container-images/"><b>مقایسه ایمیج‌های پایه در داکر</b></a><br/>در این مطلب نویسنده تلاش کرده ایمیج‌های پایه داکر رو با هم مقایسه کنه و از زوایای مختلف به معایب و مزایای هر کدوم بپردازه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://armansolutions.com/blog/2022/01/20/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-clean-architecture-%D8%AF%D8%B1-%D8%B5%D8%A8%D8%A7%D9%88%DB%8C%DA%98%D9%86"><b>تجربه پیاده سازی Clean Architecture در صباویژن</b></a><br/>اگر مهندس نرم‌افزار هستید، ممکن است خیلی در مورد معماری‌ها مطالعه کرده باشید. می‌توان به معماری Layered به عنوان یکی از محبوب‌ترین معماری‌ها اشاره کرد. معماری‌های زیادی با همین ایده معرّفی شده‌اند. معماری Clean از جمله‌ی همین‌ معماری‌ها است. +ما در صباویژن به تازگی معماری کلین را برای سرویس بکند پیاده‌سازی کرده‌ایم. در این نوشته به صورت مختصر از تجربه‌ها، چرایی و چالش‌هایی که برایمان وجود داشته نوشته‌ام. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://developer.oracle.com/developer-live/java-innovations-mar-2022/"><b>کنفرانس اوراکل با موضوع جاوا 18 </b></a><br/>شرکت اوراکل وبیناری با موضوع جاوا 18 و قابلیتهای جدید آن در تاریخ 24 مارس (4 فروردین) برگزار می‌کند. ثبت نام در این وبینار مجانی است ولی اوراکل به خاطر تحریمهای ایران، امکان وارد کردن اطلاعات ایرانی ندارد. از طرفی میشه اطلاعات کشورهای همسایه رو بدون مشکل موقع ثبت نام وارد کرد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://www.morling.dev/blog/whats-in-a-good-error-message/"><b>پیغام خطای خوب چی داره؟</b></a><br/>این نوشته که در ردیت و هکرنیوز هم در موردش بحث شده درباره اینه که اجزای یک پیغام خطای خوب چه چیزهایی است و همینطور از Best Practiceها در این حوزه برامون گفته + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/itnext/frontend-interview-cheatsheet-that-helped-me-to-get-offer-on-amazon-and-linkedin-cba9584e33c7"><b>با این دانش‌ها می‌توانید از آمازون پیشنهاد شغلی فرانت بگیرید</b></a><br/>اگر در فرآیند مصاحبه به عنوان فرانت اند دولوپر هستید کافیه این cheatsheet رو مطالعه کنید و دانشتون رو برای کار با شرکت های بزرگتر تطبیق بدین + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>سینا آریا،</b> + + + <b>حامد سعیدی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 4.html + +urn:uuid:fa4501ea-6994-d075-ba0c-780b339643ad +2021-01-28T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۴</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۴ - پنجشنبه، ۰۹ بهمن ۹۹ </h3> <span> </span> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>اصولی کاربردی برای ساختن و طراحی کردن برنامه‌های مبتنی بر CLI</b> </li> + <p> در این وبسایت شما اصول پایه طراحی نرم‌افزارهای CLI را بدون در نظر گرفتن زبان یا تکنولوژی خاصی یاد + میگیرید و همچنین تجربیات خوبی از نویسندگان مطلب درباره best practice های این حوزه، یعنی طراحی مبتنی بر + CLI، می‌آموزید. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/7BgYlDb5MS1duG-nDB6ol8LBI3rePVkd7LZyerd0AxUSDV4_5eU91qFX20sIi8GMFOoqROMS52iIzK8IYH0GwRNv-Ee2hBL_OaA_rL9ZK9U4ho0HxGlSKYqOJAWBnOWcCsgDQrTnG_R7pqQXH5M" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>Abusing For Loops In C# For Job Security</b> </li> + <p> این مطلب آناتومی حلقه for را بررسی میکنه و نشون میده چه کارهایی میشه باهاش انجام داد، البته نوشتن همچین + کدی پیشنهاد نمیشه چون در نهایت منجر به افزایش پیچیدگی کدهاتون میشه ولی دونستن اینکه چه کارهایی میشه + باهاش انجام داد شاید براتون جالب باشه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/3gtnAd96agq4Ic8prjYCdpdPp9-7haboi-jxPdNzUIhH8Srit1NvEtc3cWaVKvvylQ3IM8cw0T0uOjXk9lqy2ZZMJwkgQtMyqHTRXKbOjzbYdhvt1AA_MvajsjRInqlI9edeLXxzyMY6SIXyzKfY57FyQTpvaTLTQfgZF0DVMdWyikkeeBW2lWfzzscdcipArmOuVguw_DXFrbCrqkOkmGuGyobIR0UF5usbRXQ" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>The joy of deleting code</b> </li> + <p> حذف کد یکی از مهارت‌های خوبیه که هر برنامه‌نویسی بهتره داشته باشه، بیشتر اوقات برنامه‌نویس‌ها خیلی به + کدشون وابسته میشن و دل کندن از کدی که نوشتن براشون به شدت سخت میشه. در واقع بهتره این اصل رو در نظر + بگیرم که کد به عنوان یک بدهی در نظر گرفته میشه، نوشتن کد زیاد به معنای کیفیت بهتر محصول نیست چون هزینه + تست و نگهداری کد به مرور زمان بیشتر و بیشتر میشه، کد زمانی به سرمایه تبدیل میشه که در راستای افزودن + business value و حل مشکلات دنیای واقعی باشه. این مطلب در مورد لذت (اهمیت) حذف کد نکاتی خوبی رو اشاره + میکنه که خوندنش خالی از لطف نیست. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/sKrLDbs1dTXf4GHJvvMkTEzVk1xb4WnFu6YkpoXx_QUg0e_3Xkm5Q3EHsPjKi9UKhB4K9bBYhcv8REqro5P9MfJNK3sjq5T0h0HQbMuHT6CYHgWfpoP8R2k5rkWWHVUnYzGf64rmSzlHvBmtwBv7K_7JSLysITPKgIE8rBNzGlnYzZfjlIh__3HZTBdJVc4e" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>صفر تا صد امریه سربازی: همه چیز درباره امریه دانش بنیان</b> </li> + <p> این ویدیو درباره بزرگترین دغدغه پسرهاست،‌یعنی سربازی!! اگر پسر هستین و از سربازی هم معاف نیستین، احتمالن + همیشه به این فکرمیکنین که دو سال از بهترین روز های عمرتون رو باید توی پادگان بگذرونین و دو سال از + زندگیتون عقب میفتین. این ویدیو گفته میشه که چجوری میتونین سربازی رو بپیچونین و پادگان نرین. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Hhd9dK1Z-LQ1j7s7ghs2k4sK-Yp9StIISSSVw4wd8mp35IBt_-bV14op8iodjo-VAPSwyiJjkQ3fHi14djkpz6PMxSZX5R0GsavPyW0s88ofFDzoQuClpvB4P2f_FCWwefLyZ1NSEwaRjPWDAwKiRCGhrYX9UY7Rhw" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>چند تا کار لازم و ضروری که بعد از خرید VPS باید انجام بدیم</b> </li> + <p> وقتی یه سرور می‌خریم از لحاظ امنیتی توی پایین‌ترین حالت خودش قرار داره. قراره توی این مقاله باهم سرورمون + رو تا حد قابل قبولی امن کنیم <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/FQxZ2q5LhKoiaMBPaXKfdAxzDAg7oyl8Xco7Pv6_cTSpsTFngiTWPGBV1UimPutd71N8n9GO-KaTzzCUosKDYnVDv8ZcRDiKbfjd076nqlyWgYcX5Ofr8WB-0MLIEifn_pROsumlkxUVb-IgQE_BH9RL" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>پیاده سازی صفحه بندی در APIها</b> </li> + <p> بازگرداندن همه‌ی نتایج برای یک Query به ویژه وقتی که شامل تعداد زیادی رکورد باشد ممکن است در طراحی API + چالش برانگیز باشد، چرا که باعث ایجاد باری بر روی سرور، کلاینت و شبکه می‌شود که در اغلب اوقات لزومی + ندارد. برای رفع این مشکل اغلب از تکنیک صفحه‌بندی (Pagination) نتایج استفاده میکنیم. اما آیا فقط یک روش + برای صفحه‌بندی وجود دارد؟ در این مقاله کوتاه نویسنده روشی برای صفحه بندی ارائه می‌دهد که در مواردی از + قبیل infinite scrolling می‌تواند عملکرد بهتری نسبت به روش مرسوم نشان دهد. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/sAELyh2jK9FwTzYw-ulmAnDjZ7jTdofmf-Zyg201cQIHhtOvtxlvSFo7ro_T--7Kp1WRXI7hBXg7roZVTho-qhM_DykodQmfTSPqORJpzS3X6tX_vDcqIDAJ5NzBENpGd6gQ-K4Gtx9hNh2alNo2W6Z-YbTSBHGiSkwWXNIyqy5ghA4OEQhtD82hQhtpzt_edw2mXuDPtO0" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>سیروان عفیفی،</b> <b>اشکان رحمانی،</b> <b>علی + ناصری،</b> <b>وحید نادری</b> در تهیه محتوا کمک کردند. </p> + <hr /> <span> <p + style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=iyg04L_HifLpvoWbyY1dlEoBptvX5wV4ZHvdiCha8t30fY_W6pKpWpOOO__ZcVTpQdZyjApP_BJxx0FFivMBA-Aqrsx6wgqycp4js0COflJQt157zLgqyEbL-_dm9-Xg_vftVhtl_Dnr_QlJZhy-XgO5dbAQVAtfR9efCYrDv8Jwc5oJsEDCct9m14qzrvFaYIR3yVsmvTDsEhU8B8jFhbzfvA" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/RIftpzwAjCaeWWck1oeVskP1k9PS5myRzgHGm_f0Cf5G6V5qJ9IcGmrnaaUbScAhV9MSTyxBCc_m8wnVBdPJvMD1V6-ddXLy8siD6cgdFYyLdH3JT91gy7nBdYi5lMe0hKgr4wfDqdBP4xUyu64x" + sib_link_id="6">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/VZJz3NDTNZMgPQ9MqTXXppyV7Zq41bCROhkgCxct1u-HHuPwGg2eB3MuKHSJe1zV8jWvsicMUNLusmCRg7vG9yPBD-_Tg5pYvGkodvQNvtU0_uoBhkpkBqrzabTNiFnxzlQ0gFmUGK0NdNCh-EFO" + sib_link_id="7">سرویس پاکت</a> اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید</p> + </span> + <br /> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 58.html + +urn:uuid:86e0bd47-52c0-8883-b77a-64db83d764f8 +2022-07-21T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۸ - پنجشنبه، ۳۰ تیر ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://monzo.com/blog/2022/05/16/how-we-deploy-to-production-over-100-times-a-day"><b>deploy to production بیش از ۱۰۰ بار در روز</b></a><br/>در این نوشته، اینکه چطور تیم با تغییرات کوچک قابل برگرداندن بیش از ۱۰۰ بار در روز روی production کار deploy را انجام می‌دهند صحبت و تجربیات در این زمینه بیان شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://henrikwarne.com/2022/06/19/effective-software-testing-a-developers-guide"><b>تست نرم‌افزار موثر</b></a><br/>نویسنده اینجا درباره کتاب Effective Software Testing A developer&#039;s guide صحبت کرده و بخش‌ها و ایده‌های مهم و موثر کتاب را بیان کرده است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://t.me/dev_cheatsheet"><b>دفترچه راهنمای سریع کوبرنتیز به زبان فارسی</b></a><br/>این دفترچه که درباره کوبرنتیزه و تقریبا مباحث و اجزای مهمش رو مرور کرده، خیلی اتفاقی توی یک گروه مرتبط با DevOps دیدم و به نظرم خیلی جالب و مختصر و مفید بود. نویسنده‌اش یک کانال کوچیک تلگرامی درست کرده و محتواش رو اونجا قرار داده و میتونید این دفترچه رو از کانال تلگرامیشون دانلود کنید. آپدیتهای فایل PDF هم در همین کانال گفتند قرار میگیره. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>امیرحسین بقایی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 62.html + +urn:uuid:14187774-0fb8-fb64-6e32-9a151ae28931 +2022-08-18T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ٦۲ - پنجشنبه، ۲۷ مرداد ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://architecturenotes.co/redis/"><b>درباره ردیس</b></a><br/>این مطلب یک نگاه کامل و توضیحات مصور درباره Redis و انواع توپولوژی‌ها و ذخیره اطلاعات در آن دارد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/@edgecast/5-security-questions-every-developer-must-ask-99fbf55b8190"><b>پنج سوال امنیتی مهم که برنامه نویس ها باید بدانند</b></a><br/>یکی از بازیگرهایی که امنیت نرم افزارهای تحت وب با آن هاست برنامه نویس ها هستند. اگر برنامه نویس ها اطلاعات امنیتی خوبی داشته باشند نیازهای امنیتی برنامه های تحت وب را افزایش می دهند. در این نوشته ۵ سوال اصلی که در هنگام توسعه برنامه نویس ها باید آن را بدانند آورده شده است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://blog.blether.chat/2022/08/03/gdpr-for-developers-by-example/"><b>GDPR برای برنامه‌نویسان با ذکر مثال</b></a><br/>گرچه ما در کشور قوانین محافظتی از حریم شخصی نداریم اما در این مقاله که درباره پیاده‌سازی GDPR صحبت شده، با ذکر سناریوهای مختلف درباره میزان تعهد شرکت‌ها و تیم فنی و نگاه تحلیلی به مساله می‌توان ایده‌هایی برای استفاده در سرویس‌های ایرانی برداشت کرد. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی،</b> + + + <b>امیر شکری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 5.html + +urn:uuid:2994ff90-e3af-b7a6-6221-6bcd93a91ca7 +2021-02-04T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۵</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبر‌نامه مهندسان نرم‌افزار </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۵ - پنجشنبه، ۱٦ بهمن ۹۹ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>نحوه استفاده از ریپوزیتوری پترن در PHP</b> </li> + <p> اگر قصد استفاده از ریپوزیتوری پترن رو داخل PHP دارید، این مقاله دید خوبی به چرایی‌ها و چگونگی‌ها میده. + <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/zKHoglc7ZhvP1gSULvEMN7Y-K8AmWKe0gNKDZY8BuhF4T4kLUsMrGm56sPkJdso98cxAVKaPGxb-ElTLAhaMV97aBkbXsJgnn4e1t5_Rs4yGmvdfsrIRWVgYqJ3uy5Pf-kDnsxbG7MMmA7Znc01KoPnTL3ntjNLrcLLLK2kaOeqb7rTpABzXz0v68O6V0-Ug9-br" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>تفاوت بین دیتاآنالیست و دیتاساینتیست</b> </li> + <p> شاید اولش حس کنید دیتاآنالیست و دیتاساینتیست تفاوت زیادی ندارن چون در نهایت قراره با داده ها کار کنن ولی + در واقع تفاوت های زیادی هم از نظر دانش مورد نیاز دارن و هم جایگاه های شغلی متفاوتی دارن یکم بیشتر بخونید + اطلاعات جالبی رو کشف می کنید <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/UFIg4cQaEqLT_OoaKPRJJkmiUiLXcCmZneXRavMJKkDyUib0BLIIMUsGXa4w5-YZ_qjq-QlktKs6HQW3kXyOxm4kCMQDByAMOoYCo9HtsQCMPMy5laGVs4q5y0wB3Upoyjm5LGHJT_CwRl0RBwyirhABs7X5cWeu3TJkiCBPtX6B85REgWmO6zDC24YluKAYP_an4SjLkFYQzW7ZmaM6DGJHC_2Q-62WlH_S_OcO8fFpMeWVsdlDijN_wjTS0knx" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>با یادگیری عمیق، کم‌تر پول خرج کن!</b> </li> + <p> تیم فنی مسیریاب بلد توی این پست فنی شون درباره این گفتن که چطور مسئله کیفیت تصاویر ماهواره‌ای رو حل + کردن. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/dWoYGx4wgNWZOe-b4HvsgLhp8UsJxTbEdccTzyiRtOolzgsKJNjhKNcQXuR4nTm7cT7oNg8Kca3JXXAdkYICW_J7TPu79uybnfe3NHc4IGr0ABwCgf7RNLAmbaNwF6FhNVQS241QFSa40E0ihivNHXqSp9C5Tgkvxd2DY4t9A0FLol01uP8B5BXt-R9jU4oAMVCQcb8vPY5VSpDZ5DmXt0Y2y2I3vRcqGDPyakh0ZdJzJlaV3pG5Tymh8UFomK1fdFZ7pb2TI08KoZk9YjZJJ1DdTIEvTzi4E-yhyui3b_xGFMtIcBjzSvRq6EVtvD1Jf02AXfajjzHLN7GgKXO7DyH9SE7ZYFyTViXCkTfCfXesKDhidWRsGXjZHLGnJsAHgOFEDk5hHiJJZAxgsENlO1SY9l7rxmrp8GAmgIkqFOKG2AxHybVo2_P5FMJHm3_lujOBGg-xO1qwdzBAZY3anTGK6piHF-dAkTCcLKWeYdZAb8Aqi2Vh8ROwYyC9u1wQjA" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>آیا لینوکس یک مجرم در زمینه RAMخواری میباشد؟</b> </li> + <p> به نظرتون لینوکس‌ داره به طرز غیرمعقولی از RAM استفاده میکنه؟ توی این مطلب بیشتر با عملکرد لینوکس درباره + RAMخواری آشنا میشوید. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/ZaRwIb0fXANPpZS1EsOaB-WGI8nrXtLqKhD6beZkzT-DjG5aXrsqYiWzUf41-Xv-YiuaCtizrJTiRLbQY-74m8RDxuMpuzon08n9v5zzTivw1OO5k4dk5qPnOV1074bwNQmwh6OJI8BYlwiooSLK7Ao0eIHUac94AWMR" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>نحوه قرارداد نوشتن برای پروژه های برنامه نویسی</b> </li> + <p> در این پست ویرگول راجع به قرارداد توی پروژه های برنامه نویسی صحبت میشه، چیزی که بیشتر بچه های فریلنسر + این حوزه باهاش سر و کار دارن و نکات مهمی که در تنظیم یک پروژه باید رعایت بشه رو بررسی کرده <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/s_FJkGlYBVeHVZ4cCx-cOy_K6Q7MUZjPfo0hPzHXC08u5JcHbesnwqTQ2NvCrthhSET3p4wAACbXfqmWoSWM5srBY87LHza9cmAYnWeUOrRk88LTZoXAOehpn3RVif-hY4y5YsZpgQAVDcI0Q-15LSLW" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b> چجوری روی یک سرور، چند سرویس مختلف رو با استفاده از Nginx و Docker، مستقر + کنیم؟</b> </li> + <p> اگه براتون سوال شده چجوری چند تا دامین به یک سرور وصل میشه و مدیریتشون با Docker چجوری انجام میشه، تو + این مقاله قراره بهش بپردازیم <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/bcWQT1JHoU2ixDfsBxk9qNBAsdJbv51Qt42Y80lcSdEhR0PNVl8CXuwexVhxVyIviGnnoCRM1LbZwBGQzlEdrP1I3vpFXSSF5i_nHfXxhmTIUNZit3aG7tgGq2jvFGGM7RjkzRGqy74cQDAxWrzLLwVX" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>امیر شکری،</b> <b>امیر ابوئی،</b> <b>علی ناصری</b> + در تهیه محتوا کمک کردند. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=GN7Trb-qyO2pXfGmyOmuzsMrmIjL1_Kf64s_Vnv_JcnxcqYV202dUTXWxg1QEsQ1wRPyoyoXs-PFvDXTtHz5k8zyHmJXaWmJpM4pD7SVdZzNMFUBIhY21zlb1sU8HqvBSPtxaes1FMqlQ3v6pPdaOCUbuVBkRIeCvqGmNn7pOReEMopGUTC3OaTZsPteNcCTj6z2RWQ_3BqjfUQMscKEnj_x3Q" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/TliDQi7yIvOBnQYto8ZpYs7cRok4HM7V2Hv8wX85yYsTxPWc48gVMHHiDyBpCGfs5SSq1IaVuxoqokoP_xD_6qeozKD93bTN_-1emX2duOZeY8xcjuJqEM6TemW5XoE370vzkdb-3F7Y_zZTP0IC" + sib_link_id="6">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/2u8qOEGV-qrVQQH8eWbFdFAvusKuqVsTTBEBEzHWEgbgZXXwlaMgHsJ_mx63AbSaphcDrVD5u0HDOg2jt1wm5NvQlQJufxX40USN0rIjXueQNjS6XAyMWmNwFWSuI31BOnPMFph0sEV5_2u87tfv" + sib_link_id="7">سرویس پاکت</a> اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید + از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید </p> + <br /> + </span> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 38.html + +urn:uuid:6184c524-4920-0a84-354f-12c4e9d0c7fd +2021-11-06T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۳۸ - شنبه، ۱۵ آبان ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://devopsprodigy.com/blog/why-businesses-want-devops-and-what-devops-engineers-need-to-know-to-communicate-with-them-effectively/"><b>دوآپس چیست و چه نقشی در تیم دارد؟</b></a><br/>همه جا درباره DevOps صحبت میکنن ولی معمولا تعریف دقیقی ازش پیدا نمیشه، یک عده میگن دوآپس یک مجموعه ابزاره و یک عده دیگه میگن مجموعه‌ای از مفاهیم برای پیش‌برد تیم. شاید هم همه این‌ها کنار هم بشه دوآپس. توی این مطلب کمی بیشتر درباره تاریخچه روند توسعه و استقرار نرم‌افزار صحبت شده و این که دوآپس در حال حاضر کجای این چرخه قرار داره. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/I7ZTG"><b>شبکه در docker</b></a><br/>با انواع شبکه در داکر و نحوه کار اون‌ها آشنا میشیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://garywoodfine.com/c-records-the-good-bad-ugly"><b>C# Records - خوب، بد، زشت</b></a><br/>این نوشته ضمن معرفی record در زبان C# در مورد نحوه استفاده و موارد استفاده این قابلیت توضیح می‌دهد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://vrgl.ir/DMjJ2"><b> (مموری) چگونه پرفرمنس اپلیکیشن اندرویدی را افزایش دهیم؟</b></a><br/>در این مقاله به بررسی بهبود پرفرمنس اپلیکیشن های اندروید به کمک بهینه سازی مموری می پردازیم. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://blog.bitsrc.io/google-chrome-experimental-features-for-developers-a9a7cc9d1b30"><b>ویژگی‌های پنهان گوگل کروم که هر توسعه‌دهنده‌ای باید بداند</b></a><br/>در این نوشته چند ویژگی خوب و نسبتاً مخفی گوگل کروم که به توسعه‌دهنده‌ها کمک می‌کند تا راحت‌تر به توسعه وب بپردازند معرفی شده. یکی از جالب‌ترین آن‌ها برای من قابلیت Dual Screen Mode بود که برای شبیه‌سازی دستگاه‌های تاشو از آن استفاده می‌شود + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://danluu.com/look-stupid/"><b>Willingness to look stupid</b></a><br/>آدمایی که عامدانه سوال‌های احمقانه می‌پرسن در نهایت و پس از گذشت زمان، مسایل رو عمیق‌تر می‌فهمن. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>Vahid Fathi،</b> + + + <b>حامد سعیدی،</b> + + + <b>شکیب حبیبی،</b> + + + <b>Rahmanism.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <hr /> + <div> <p style="font-size: 16px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"><img src='https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png' alt='Pakat Logo'><br/> ارسال شده توسط <a href="https://pakat.net/">پاکت</a></p><p style="font-size: 14px; text-align: center; font-family: 'Samim'; direction: rtl; color: #263238;"> <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید</p> </div> + <br /> + </body> +</html> + + + +شماره خبرنامه 59.html + +urn:uuid:76bb17fe-1eaf-9e78-a41d-27f6a2abab3a +2022-07-28T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۹ - پنجشنبه، ۰٦ مرداد ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://cloud.google.com/architecture/using-container-images"><b>استفاده از Image Digest به جای Image tag در دنیای کانتینرها</b></a><br/>اگر شما مسئول راه‌اندازی یک پایپلاین CI/CD سرویس نرم‌افزاری باشید که از کانتینر‌ها و داکر استفاده میکنه احتمالا توی مرحله CD یا همون continuous delivery ممکنه این سوال براتون ایجاد شده باشه که از چه ساختاری برای دپلوی ایمیج‌ها استفاده کنید. میتونید از Tag ها استفاده کنید یا هم میتونید از Digest هر ایمیج اما کدوم به کار میاد؟ این مطلب ساده در سایت گوگل کلود شاید به شما دید بهتری بده. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://slack.engineering/remote-development-at-slack/"><b>توسعه از راه دور در اسلک</b></a><br/>اینجا منظور از توسعه از راه دور، توسعه‌دادن کد روی بستر آمازون و مشاهده تغییرات داده شده در آن instance از اسلک است. توسعه‌دهندگان اسلک هم زمانی توسعه روی سیستم محلی خودشان داشتند. گرچه به دلیل تحریم‌ها استفاده از چنین روشی برای ما فراهم نیست اما خواندن تجربیات تیم اسلک در وبلاگ مهندسی اسلک بسیار جالب است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://brandur.org/soft-deletion"><b>Soft Deletion احتمالاً ارزشش را ندارد</b></a><br/>در این مقاله ضمن بر شمردن مشکلاتی که Soft Deletion ممکن است ایجاد کند، پیشنهاد استفاده از جدول رکوردهای حذف شده مطرح شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://bit-orbit.github.io/the-secret-bit/"><b>پروژه کتاب the secret bit کتاب آزاد لینوکس</b></a><br/>هر ابزاری در لینوکس یک man page داره که نحوه کار با اون ابزار را توضیح می‌ده. مشکل man ها اینه که گاهی خیلی کامل هستند و تمامی سوییچ های ابزار را دربر می‌گیرند. ما در این کتاب سعی کردیم سوییچ هایی که پر استفاده هستند را توضیح بدیم و هر کجا که نیاز به مثالی برای کار های مختلفی که می‌شه با ابزار کرد، شد مثال ها را بنویسیم. لینوکس جز ابزار هایش مفاهیمی داره که نیاز به توضیح داره، پس ما در کتاب دو بخش مختلف برای ابزار ها و مفاهیم داریم. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>حامد سعیدی،</b> + + + <b>آریا شبانه.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 18.html + +urn:uuid:c26c8dbc-9a59-c127-3ece-27b2481c617c +2021-06-03T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱۸</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱۸ - پنجشنبه، ۱۳ خرداد ۱۴۰۰ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>تاریخچه جالبی از زبان برنامه‌نویسی PHP</b> </li> + <p> اگر شما هم مثل من با PHP برنامه‌هاتون رو میسازید، شاید خوندن تاریخچه و اتفاقاتی که در طول ۲۶ سال گذشته + برای PHP افتاده براتون جالب باشه. این مطلب تقریبا کامل‌ترین مطلبی بود که تا حالا درباره این موضوع خوندم + و توش کلی رفرنس‌های جالب به چیزهای دیگه داره. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/O7V-l87S6nrf7agGtv53ebC7WpTTIxHc-gQFz7Sk7QuV0PgZHS3CjZYoqpRM5tFW7zmfydCXnU8usHQ6KtdlqIKriVsDNOg5bY8bxVth6GyZSs2TDidGCyZ_1BctRSzNoBr6lmMVHSoqzdTQvv-MU9UiYf-uiBt5Q2z-Jhc-kZfcQpDfk2Skq9qiI7xU0GUmRG1gWU1VEyQtP_kuy5HGnicijVXSMrgsbx9PPm01yaSZu_ybWA" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>جعبه‌ابزارهایی برای طراحی و پیاده‌سازی مدل‌های یادگیری ماشین — شفاف‌تر، + مسئولانه‌تر و توضیح‌پذیرتر</b> </li> + <p> اگر اخبار مربوط به سیاست‌گذاری‌های فناوری رو دنبال می‌کنید، حتما متوجه شدید که صحبت از سوگیری و تبعیض در + یادگیری ماشین، بحث جمع‌آوری داده و حقوق کاربران ، شفافیت، توضیح‌پذیری و مستند‌سازی و غیره خیلی زیاد شده. + این لیست شامل جعبه‌ابزارهاییه که کمک میکنه مدل‌های یادگیری ماشین‌تون رو بررسی کنید؛ تو مستندسازی‌تون + شفاف‌تر باشید؛ داده‌هاتون رو با رعایت حفظ حریم خصوصی جمع‌آوری و نگهداری کنید و یا حتی از خودتون بپرسید + که با در نظر گرفتن تاثیرات اجتماعی، اصلا مسئولانه هست که این محصول رو وارد بازار کنید؟! <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/-Eu6wKy7x1KfvRdaBdQJPg-6AzXZjbXk_HGPB5qZeY36hnh_k86GnnYbOKURikajG5uI0FH23vSzxKoFrrxAn7L3OQPOIN7L7_agsaB5fTPlExz6dz_0B1TAuCG31ZSsyMwZai3FqsZcy13JP2JwAfOK2AEjiUSTUtbAU3-jstnvsOUgY5SQ9QsQvDMu4vS5hRw" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>بهترین و بدترین شهرهای دنیا برای بالانس کار و زندگی</b> </li> + <p> یک لیست از بهترین و بدترین شهرهای دنیا از جهت بالانس کار-زندگی در سال ۲۰۲۱ <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/d2QSq1XBi2KYicA_qNR-q7YEzB2SgyiYiq0cDfO0ONzrtgGDrPqRqwz0Ux8Wc7YnD0zgRzSdzsuscksrww_XgadyqoZqgL08y0ADN87smr5u4F4X8e9nYYrMH4acZnbt1L3CggjmR8cNOBgREuO2u_uZOsOHFyXGLQpSSz1FXBczNRezi7LS-YlgE4Y" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>راهکارهای تمرکز دورکاری به تلاش من و وال‌استریت ژورنال</b> </li> + <p> در این مطلب، خانم ستاره ارانی تجربیات‌شون برای حفظ تمرکز در دوران دورکاری رو نوشتند که شاید اگر شما هم + درگیر چالش‌های دورکاری هستید به کارتون بیاد. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/4YT_R22F8mc-M3OpeyaFrJOkGAfYPXDLtSSZBCurjolU1fRstDQxbOhVxvC2fLSc8AxCH9q4upcvSk00HdsuYy_ys0E9mA1Bq-rYdbK0C6LdEas9q3CM6rG0ov8v4RNSl8ua0ydITGanquir3HtaktJY3CEEsvsxTqKODE-1YcxfZ6V_ArCuOk4mFFOXM_s" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>استفاده از دومین شخصی در گیت هاب با ابرآروان</b> </li> + <p> اگر با گیت هاب کار کرده باشید احتمالا بخشی به اسم github page را دیده اید و شاید از آن نیز استفاده کرده + باشید؛ در این نوشته روش تنظیم دامنه ی شخصی روی گیت هاب را با کمک cdn ابرآروان را به صورت مرحله به مرحله + توضیح خواهم داد. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/YqiUrWYR8yq27pWaJunJwtx_ii0QhfjsnwzO9iXhLv-8n_m_wIBObzbDedJnvxO-wj7Sus0GNaahgq4TbGRMh9Xls78g17zmhe-1qsAvzdRpmSrGcVQt-A5Cg8UU5bQugjaUI3HGfL8K25CuR9CIJJ35pe2Ro63jxIT7KgAMtHlsFZTbzEwNH-uQbXgBWyQOLdj3_gJNqaDk7JNhsgNArXm4Z1pfq3GypGSnXqoQWrJ4" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>چرا برنامه‌نویس‌ها مستندات نمی‌نویسند؟</b> </li> + <p> تولید مستندات یکی از کارهایی است که برخی برنامه‌نویسان از آن گریزان هستند. این نوشته به دلایل این موضوع + و راه‌حل‌های آن می‌پردازد. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/hJlxUiRGkYuzeR3Uln7zR3Q9SetcD2fKxBQE0TeNT1JbmiLXiPyBOtRvVFuo7B70z6zW2UrYke9xtMMfao8DA4txS-Mf6MkGw7rwBY_vIPuEUQ8hyNBjGfoGGPEiTKoSQRV47Kal3xIerHPTdH-muSb1pyDuUMtRaXNUbMkibeoCbqFQFu1KKjydgXYK0ma06VmcqTKp4jtOyg2e0cEometnQLmaaLigmdG7VQ" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>دیگه وقتشه استفاده از If-Else رو کنار بزاری</b> </li> + <p> بسیار خوب، من متقاعد شده‌ام که If-Else بد است، حالا به من نشان بده که چطور از تقسیم‌بندی درهم و برهم کد + اجتناب کنم <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/kucyi_HM1y60ho5pvkzwgH4r1606AajYIpbCUiT4tA30402Pz3cfapc8DMZ3yYWk0W4ngT4wYtagnJKRO3flaHSE7GYsTxy-fwZKJNcnXKTTlaD3GBP8Vh3sv4ZrobUvMfFlGFjnHtuGEtiWDj6S-EaRCw" + style="font-size:14px" sib_link_id="6">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>،</b> <b>رویا پاکزاد،</b> <b>حسن شهبازی،</b> <b>امیرحسین بقایی،</b> + <b>امیر شکری،</b> <b>حامد سعیدی،</b> <b>Amir Mokarchi</b> در تهیه محتوا کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/oBr9sxnhdufhYeJH8-xa-XmwKR5DRvJTPVJP_-r7USFXZAfQzrezaAfcKFNY0LViPmDuH2jJFN96iJ134EvG9jRTtiRtTsUNqo0wWtdTmlu8BuRTvD0k0XoN8mRj5A-rST8PoNNEjIp-QmMDoijohS5yJRIUKn-UISSEun-0B2xFL9uBCd2M0pl9AhIrdC0" + sib_link_id="7">مشارکت کنید</a>. + </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=RixQWppmD6xBPCdPdR9PEZCxJjGD_9WrdObojFR0y2tls8SYfyBMPDHKzxsqWswd5ZaorcpzPN93CS2ZgZKAYjEZQ7SVdM7LaqPzywefNCWAxx8L5aij1VjwxfjAKscz2ZECvKpOGr0rcB51rbZp-M-yoU_Lry3Q9Rfx9HUf-RKw14CcpjV35UwA1rG7F6OO__ZOvrrp5zT1bx0OoTa1kPYRnA" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/cki6249970Hss8UcXeH3dExMho3_FGUpUu08v_bmuWSS9lStI0tLZtJKMqEq1Ad8QUQ1Nr2YDKzVLdcapAYgdSJURWI1-eNVdoe130IchEM_9vgmrbklUMGadftWmOuGJmDYuiwgHzl2GDEkBRx3bA" + sib_link_id="8">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/-0_qoCe2ZkLWi0u0QK84M7mQMhW5po4w4CnMnxurnwgvN7nRirGDVLDnHy2JK0S_HciSJdapwJda0zdHIxNIzeR7mQyjrmzEQmkjfjcwPWDZk2N85Y9pHY-RVkiKrHTtU87LfDH9IXHHztFqTGsM9g" + sib_link_id="9">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 57.html + +urn:uuid:ec9279ed-70c8-f7c1-a87d-279ebe4bdb7b +2022-07-15T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۷ - جمعه، ۲۴ تیر ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://review.firstround.com/making-engineering-team-communication-clearer-faster-better"><b>ایجاد ارتباطات شفاف‌تر، سریع‌تر و بهتر در تیم مهندسی</b></a><br/>چالش‌های تیم‌های مهندسی با افزایش تعداد افراد تیم بیشتر می‌شوند. این یک مصاحبه درباره تجربیاتی برای ایجاد ارتباطات شفاف‌تر و سریع‌تر و بهتر در تیم‌های مهندسی است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/simdjson/simdjson"><b>پارس کردن بسیار سریع JSON</b></a><br/>فرمت JSON در همه جای وب استفاده می‌شه و سرورها زمان زیادی رو صرف پارس کردن JSON می‌کنند. این کتابخانه مدعی سرعت بسیار بیشتری در پارس کردن JSON است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://techbeacon.com/enterprise-it/monitoring-demystified-guide-logging-tracing-metrics"><b>ابهام‌زدایی از Monitoring راهنمایی برای Logging, tracing, metrics</b></a><br/>این نوشته، در واقع لینکی به سایر منابع بسیار خوب درباره معرفی ایده‌های Logging, tracing و metrics است + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 15.html + +urn:uuid:6c3a5506-c4a8-b48a-0e3a-c9e5939354d1 +2021-05-13T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱۵</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱۵ - پنجشنبه، ۲۳ اردیبهشت ۱۴۰۰ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>کار با کد‌های قدیمی</b> </li> + <p> اگر شما هم مثل من این روزها درگیر بازنویسی کدهای قدیمی هستید، شنیدن تجربیات و نکات آقای عباس یزدان پناه + میتونه کاربردی و بدردبخور باشه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/ygPWPuvZdapMFALarkeUahtkqu6GTDVFEJkNaBdcSpWKLk-GwceiQZYEfOeBRn8jJ9FxcXQkZk1DTanJ1jYOTqEEyM_N2aHVmlFR5xOLI3siI_g-TwIJgn33hKmM-08cu9yASsBidF6CfssLG1rWdiWu8M1T5xeDlI64jAXjMbX7CIyBf_3_8gviY5_EnkhLlLJ_ts-RWuwiCwG4yLPPpeLt5km-UcHy22y5ZRpPBV7KxBdGMACcSnq_lSShPAzG179i-zvT3qReaWwX53aZneUiUDsLiI_hkbpQaELV4qoiTCB9oYhxAB4xjhKKGpC-PRn1RtsW7ZnFy-zzVC9tEH0weuT3A7LRRlXt4qYizabB-CPPN9EzdnMeRpC6j_DPBWflu77wLG2EB0My5ogCh5GB9pWKq6qQiWWqdmPdMoO_b5hBTb76YItEeX8B93fY2uVWFGZ7nNHe4Pw6bcjcsiHRmsaVF-b87JatQy1O_A" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>کپی کردن کد از Stackoveflow واقعاً چقدر انجام می‌شود؟</b> </li> + <p> در این نوشته از وبلاگ Stackoverflow با استفاد از نمودارهایی میزان استفاده واقعی از کپی کردن کدها از + پاسخ‌ پرسش‌ها بر حسب مواردی مثل اعتبار/امتیاز کاربران و تگ‌های سوالات و ... بررسی شده است <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/eSuJeWG-qzLfcyGHvlIpwOsWUX6mCfcjy-bWtvya4FtutxAsGQsSi_AdPER3zjn1IUWZ1OHHmiqU3Dfyox8jJdtuFVL6rF3SO4hMwVyQ8RVD-CrFIFG8ldcYYXZfHnnVm0NvF1tsWPJi4IaY66wk55Mzz1dgbRdaIa6rgLTUbt7vJS-wKFTsfvAUuJBZuvcopMoAGXiTT8y1HbwTTRFfYPH5kaq9-EuKWUuqcnaoJNY1PTrxyaDZ940xilQqgux0Q45VJb7lpAzoI6Gf88zpUujjCwQV_NQ" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>هنر تبدیل 6 خط کد به 92 خط کد</b> </li> + <p> روش سنتی انشعاب سازی با استفاده از if-else و switch منسوخ شده است. این SOLID نیست. انعطاف پذیر نیست + <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/_2MV5wN2rk2K4lCbgtCuAYp93fVv7P2fSSCCIPzs2NyjiEcLtRxv3CoIMnknEdjM5qltrbQkpa6hMR7mYwmPyv5Upry3LBuoE5CT0J9EdqAKWpxsOcpPDruOud-ogFXPTwmhU9R81ghjebVkp8cUAdOn" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>ایجاد کد با قابلیت پیکربندی مجدد در سه مرحله ساده</b> </li> + <p> استفاده از کلاسی که قابلیت پیکربندی داشته باشه خیلی آسونه. قابل توسعه است.به شکل احمقانه ای ساده است که + بسیار عالیه و بزرگترین نقطه عطف اون اینه که قابل تست هم هست. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/6kTgK0VGC9vggr4IIESzZo8OF15lQZ5_6Ay4uWUmkNqaA4sDii9Jv0t6H9_jx3wcfOoFuuVnX6KcOIWCx3s9FpSeIzLLL_qBkUTR_x3lx7BRN5Zt8jsIarZNkSLBPNH-vAOzkeT0ld9kpvRY5c9Vn0vQ" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>گیف یا جیف؟</b> </li> + <p> توی این ویدیو، یوتیوبر معروف یعنی تام اسکات در مورد اینکه کدوم تلفظ برای GIF درست تره صحبت میکنه. اگه + دوست داشتید میتونید این ویدیو رو از یوتیوب مشاهده کنید... <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/6IaOWT_YJ1AVUpHbZwVDjPnC8BM_Dd2IWY6AGyTM_wHsHzUpkq1dbynsKPVOkMOvYyXEyETfO5Snch2wiTwT6hHyZJpcn_mNk2LG38AYIlb9DzE6lhEBoZT-GQLCcZRxU3k4zU3WW7M1jwg4Kh8T1idy4xdHWWXQQ3SnhuX5Qmbk4syxo-6rjQGzbCs" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>سایتی برای یادگیری سالیدیتی</b> </li> + <p> راستش من از دنیای بلاکچین خیلی دورم و گهگاهی خبرهاشو دنبال میکنم اونم از دور. اما همیشه ساختن و کد نویسی + برام جذاب بوده، اگه شما هم مثل من دوست دارین هر روز یکم وقت بذارید و در عین حال که تفریح میکنین، + Solidity (زبان برنامه نویسی قرار داد های هوشمند بر بستر اتریوم) رو یاد بگیرین، این سایت به دردتون میخوره + :) <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/2yrfCP9hU-SYTCdGAc_uxbnSamSVpusLSozJWHQ3OqcoUwUtJYyfDQR-vbWqcCJpd1o-VOR82e0tY3prGjyFbshwxUBm_9C1tIjSy6cqk0IK-XuiZvlu3dHLgT4Wb0JoDx_nB9eLpVipSW2-w7eZYett4w" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>حامد سعیدی،</b> <b>Amir Mokarchi،</b> <b>علی + کرباسی،</b> <b>محمد عرب انواری</b> در تهیه محتوا کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/PT_kcPaxwIjEkBiHFmwISfdYCfu8-AV3nk7KE4JG9tYq2JYUICFGd1w_6vRLKXPpxZmgkD4Wc4Y-6BMt3QZBZgZgq7EYLuAtcKIzQQCnRjTv_kUyjKXAaWK54iMR1q0JowZT_mN-IaWezLRH3AxspRcPfP8hlkmw0dmsTY_P4W9so1-1ewim571KLLr8Wg" + sib_link_id="6">مشارکت کنید</a>. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=pDQmqYZ8icLKTCbap5bCpB5ngAYTvIC_UDDihg3b49c5RJ0b4NB0QgovV3UgHzUvQ8CfqyoS_92rbs_FCXGjLV3O1-xtayNYIKmSleWZyp6XE2eXyuAPcE3SyZo_t7o3n5m5nM_dJRNn0EHiKGPpz49y6Ii9Sot-UAH9JRgt3jvcbFD4sdmueeBzgeD7EAGYiRMT7kFVdKiYzYOsBeBWi3PJMg" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/MlVYHONYo1MZGS5MRiqBEwu2uNHBf4vp1oRea88QDw190g6yOnjHd24pWydYjZNnBVtMMSGeqWHP3CVR1UBQu5ys76i4-MzFl5VLAgch7SbijA8nIyjynMvV4JxYS7oiNMG9v_DwNWabXshLf50l" + sib_link_id="7">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/phJCTnqUktRMK-LFCzmnkh9UotBn-JrInmydG6EtWgyVLzmWipN3AgqgmVZqnM9s9uiChi69xBK2Nxa4FbgOblabvXiklQgc4beZOUeygwkhmxQPLx1XmLO-XXF9WJXCiv5_VU2Itxjg6_FTrih2" + sib_link_id="8">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 65.html + +urn:uuid:350a7e82-2974-e76c-1ccd-ce41a2053197 +2022-09-08T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ٦۵ - پنجشنبه، ۱۷ شهریور ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://github.com/DopplerHQ/awesome-interview-questions"><b>مجموعه سوالات مصاحبه فنی</b></a><br/>در این مخزن گیت‌هاب منابع مربوط به لیست مجموعه سوالات مصاحبه‌های فنی زبان‌های مختلف گردآوری شده است + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c"><b>مساله Sharding و IDها در اینستاگرام</b></a><br/>در هر ثانیه بیش از ۲۵ تصویر و ۹۰ لایک در اینستاگرام ذخیره می‌شود. در این پست وبلاگ مهندسی درباره مساله Sharding و ایجاد IDها صحبت شده است. زیرساخت production اینستاگرام بر روی PostgreSQL است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://saas4devs.tech/"><b>پروژه SaaS4Devs</b></a><br/>در این وب سایت منابع بسیار زیادی به همراه تعاریف و لینک‌ها برای آشنایی و راه‌اندازی SaaS برای برنامه‌نویسان گردآوری شده است. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 53.html + +urn:uuid:833b22b8-3f0c-e2cc-a5e8-fafa0d1c68a1 +2022-06-16T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۵۳ - پنجشنبه، ۲٦ خرداد ۱۴۰۱ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://medium.com/everything-full-stack/design-patterns-and-principles-that-support-large-scale-systems-f3c9adf89ad"><b>الگوها و اصول طراحی سیستم‌های مقیاس بزرگ</b></a><br/>همانطور که از نام مقاله پیداست درباره الگوها و اصول طراحی سیستم‌های مقیاس بزرگ (large scale) بحث و معرفی شده‌اند. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://stackoverflow.blog/2021/12/23/best-practices-for-writing-code-comments/"><b>Best practice ها برای نوشتن کامنت در کد</b></a><br/>در این مطلب از وبلاگ stackoverflow درباره قوانینی که رعایتشون به داشتن کامنت‌های بهتر در کد کمک می‌کنه صحبت شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://repohealth.io/blog/code-review-how-to-make-enemies/"><b>بازبینی کد: چطور دشمن بسازیم؟</b></a><br/>این مقاله، حکایت ادب از که آموختی؟ از بی‌ادبان، برای بازبینی کد (Code Review) است. رفتارهایی که با انجامشون در بازبینی کد، دشمن می‌سازیم. + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>حامد سعیدی.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + +شماره خبرنامه 10.html + +urn:uuid:81c8e63a-c085-9d7d-9599-36334507d6a1 +2021-03-12T00:00:00+00:00 +<html> + <head> + <title>خبرنامه شماره ۱۰</title> + <link + rel="important stylesheet" + href="chrome://messagebody/skin/messageBody.css" + /> + </head> + <body> + <html dir="rtl" lang="fa"> + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) + format("truetype"); + font-weight: 400; + } + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) + format("truetype"); + font-weight: 700; + } + ul { + padding: 0 25px; + } + </style> + </head> + <body style="max-width: 680px; margin: 0 auto"> + <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:&#39;Samim&#39;,sans-serif;direction:rtl;font-weight:700;color:#263238" + > + خبرنامهٔ Softwaretalks + </h1> + <h3 + style="font-size:18px;text-align:center;font-family:&#39;Samim&#39;,sans-serif;direction:rtl;color:#263238" + > + شماره ۱۰ - جمعه، ۲۲ اسفند ۹۹ + </h3> + <hr /> + <ul + style="text-align:right;font-family:&#39;Samim&#39;,sans-serif;direction:rtl" + > + <li style="font-size: 18px"> + <b>شرکت Vimeo چطور از PHP در برنامه‌هایش استفاده میکند؟</b> + </li> + <p> + توی این مطلب، آقای Matt ‌Brown از تجربیات تیم بک‌اند Viemo میگه و + این که چرا هنوز هم دارن PHP استفاده میکنن :) همچنین ابزاری که برای + Static analysis توی PHP نوشتن رو هم معرفی میکنه. <br /> + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/43vzMITXtr055pycsQwGEn8HWWKawp4Y-fx42pFtf41c06CvTpCJAk-8dX8WyQc-fyRNFKm7bBHmtFV5agJyhN0mIn7vOORdoWkOJYZIEXgPuAygmP4nI2kBg-4cUGa_lK7Nts9CyaMf36Ux2eO90zW6sD2Gy7AQluFE9gcLQ9GsTPDkxfFhfygDeFhTE_7jR0b5yCOFJFTQEXReBgLb5OUujoobRZ72fV8hRe-Rrlrlhw" + style="font-size: 14px" + sib_link_id="0" + >مطالعه مطلب اصلی</a + > + </p> + <br /> + <li style="font-size: 18px"><b>برگه تقلب OWASP</b></li> + <p> + پروژه OWASP یک جامعه آنلاین است که مقالات، توصیه‌ها،‌ ابزارها و + راهکارهای مربوط به امنیت وب را به صورت مشارکتی و رایگان جمع‌آوری + می‌کنند. این برگه تقلب شامل اصول امنیتی در اغلب تکنولوژی‌ها و + زبان‌های برنامه‌نویسی با توضیحات مختصر است. <br /> + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Kg0NzWaSTt1u-yQNsOm_KSYANU8aELziLfCW2ImJFlccjqAAW1E3c0NdZNd08vT2kOjjvcz3chXWKhVD5aqEh3atfHaWagW5rg1QRSHgZEDvy9mC3VPp7GfBj_zkj8qk7KaCPnfICKkaHqq9pyxGJlPXOxQ6D4pq_Vs1h-vaX3U" + style="font-size: 14px" + sib_link_id="1" + >مطالعه مطلب اصلی</a + > + </p> + <br /> + <li style="font-size: 18px"> + <b>نکاتی مهم برای راه‌اندازی یک سرور لینوکسی</b> + </li> + <p> + همه ماها ممکنه توی کارمون به مرحله نصب، راه‌اندازی و کانفیگ سرورهای + لینوکسی بربخوریم. البته که شاید راه‌حل منطقی این باشه که کار رو به + کاربلدش یعنی SysAdmin ها بسپریم ولی خب همیشه این حالت مقدور نیست و + نیازه که خودمون آستین بالا بزنیم و بشینیم پشت کامندلاین. این + ریپوزیتوری سعی کرده نکات مهمی رو که توی فرآیند امن کردن سرور نیازه + بدونیم، گردآوری کنه. پس اگر دوست دارین یک مرحله دانش‌تون رو ارتقاء + بدید این مقاله رو مطالعه کنید. <br /> + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/DgeXjtxnIeVb0MNk0qUauZDZHzd_JX1zrDpJXFHvk3man-kwVo-7VPXHApXj4q80QuPvyvcKLHvETUGBp7Qj6JHQrlVVn8cKlQPKJdMP9evODK42rzJtVADiRoTivKFZca5M6UQzafECfjrpUoDd27QAng3hQbK7I1JKTag5OGH_bN8RkmkOAUhcy7dqdj_mZg06OQCrh05BcOAf" + style="font-size: 14px" + sib_link_id="2" + >مطالعه مطلب اصلی</a + > + </p> + <br /> + <li style="font-size: 18px"><b>سی‌گو همان گو نیست</b></li> + <p> + سی‌گو راه حلی است که بتوانید از کدهای سی در زبان گو استفاده کنید. با + این حال، استفاده از آن کم‌هزینه و بی‌دردسر نخواهد بود. با توجه به + تمام مشکلات ذکر شده در مقاله، شاید بهتر باشد به راه حل دیگری + بیاندیشید <br /> + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Dg5Y6otK3ZSP18yz5EeG44ZRNxkAoVIQJ-SbCK59dX3Ksi-6IFzh47iwkL_jbmrfaf35x2oBMs88kdnTMTPiX5lQlDUpI0NdvICdDLWkX2SWIHJySCMiO_xK7Si6IvHYZSw9QQBJ0ikUv_LIbk8Ol6SLnCAH7P1imwweQJP5rAZIbSxIwCMEzBKzx8eB5NfiYihn" + style="font-size: 14px" + sib_link_id="3" + >مطالعه مطلب اصلی</a + > + </p> + <br /> + <li style="font-size: 18px"> + <b>کدنویسی لایو جستجوی تمام‌متن با لاراول و الگولیا</b> + </li> + <p> + نونو مادورو (سازنده‌ی فریمورک‌های Laravel Zero و PEST) در این ویدئوی + یک ساعته، جستجوی تمام‌متن در لاراول (Laravel scout) رو با استفاده از + ای‌پی‌آی Algolia و با روش TDD (توسعه آزمون‌محور) پیاده‌سازی می‌کنه. + <br /> + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/gXVeZEUcuVZW6Bt3eFINw408zkqr_-M95hVuKiAQ-MPclw2V99F6no5vfqlF5Dv_ObpVpPg1TJBWxGoObV62wIqjHqfVl3cP7HpQDRFK5DsMz_bkuVzdgg4LXLJoWN0nyZAytWWbRQYr4meclj7HKbVBW2ZLgbBLz5n8MKDRGdEaVYGpbmEU1olHLGZj9xRhfNMsjO7_" + style="font-size: 14px" + sib_link_id="4" + >مطالعه مطلب اصلی</a + > + </p> + <br /> + <li style="font-size: 18px"> + <b + >نکات ریزی که در مورد پروتکل محبوب &#39;اچ‫ تی تی پی&#39; + نمیدانستید</b + > + </li> + <p> + در این مقاله نویسنده نگاهی به نکات ریز و فراموش شده این پروتکل محبوب + دارد. <br /> + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/inG4d19T4WsAJHCZ-T7CL-86M8srghgee01229-ZOR1bAPHMBOzNJvAl-hSm_aGncVL_UKCDatiKch4tFXprVnqoK-okUAFHuCrFN2GPlbVLFlrbo2x9o7gyFbDndBtXKRcgXG7ZYSt_co4sv2mgWf1AbB_KVg6IMgEHBFdpsNCWQ6oXAhEsNg" + style="font-size: 14px" + sib_link_id="5" + >مطالعه مطلب اصلی</a + > + </p> + </ul> + <hr /> + <p + style="font-size:13px;font-family:&#39;Samim&#39;,sans-serif;direction:rtl;text-align:right" + > + در این شماره از خبرنامه، دوستان خوبی به نام‌های + <b>امیرحسین بقایی،</b> <b>حامد سعیدی،</b> <b>حسن شهبازی،</b> + <b>امیرحسین مجیری</b> در تهیه محتوا کمک کردند. شما هم می‌توانید + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/sn6IX7hr3-KIwWL-KcTxb2HgB1QUJwvWpGbKKRjrkyBIFitavP48-o7Sd9iXrIwn4NVPE9WwR_kfjTaHxbXG4HE-gnIfi_mNx-Zq27w2ltMHwyzUPLvG-xMBJlKfh9C9aJryg8a4MIRFsC6LvGk_XUcetqlDEiUWLH3HQoI2Gx4aHt_Lli8PmzN_x__tWQ" + sib_link_id="6" + >مشارکت کنید</a + >. + </p> + <hr /> + <p + style="font-size:16px;text-align:center;font-family:&#39;Samim&#39;;direction:rtl;color:#263238" + > + <img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=xo49fiAY_U5A6tTCaT_Alzk6prYvzL_iG9w0BGI6-0VSwNWh1Ou_3pE5N3V9Dv7WnRJR4NtsQhRst_4FhD5CScBMLRDtp3ph_LU1JFGjkohjVnEzZNIkMC1dCra4BOZ0XVlNiL459ZO2vg5AqUNcuZgOXl8O9_VhfTL5HD4l0WugOycSylT26BYoPRDSEiJo8t1sHV2loILgu7_YTs29nv2xKw" + sib_img_id="0" + /><br /> + ارسال شده توسط + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/w0P6fnP0ZBTzvJsfRyrHvDysWfz8SkD56CXRplXWdjD2_BFuLvjQ_IPgdk8A--mjG2QQMDMtKxv7j4Dvk5a7RzniFYYw0yZmaPsGiYu-MdUSJgIxAYD0RRhDjU4UKP7FxreuSp-D-eMmqvyRySZ1" + sib_link_id="7" + >پاکت</a + > + </p> + <p + style="font-size:14px;text-align:center;font-family:&#39;Samim&#39;;direction:rtl;color:#263238" + > + <a + href="https://r.t10.pktsrv2.com/mk/cl/f/54r9OzbsJYUSpnUKbtD12XtTdXvHl5av1qLDR3ZGtbzm0VuItQDjehkU9Ti9jbdsGBXcTgVTvehDJ0Llv2vSXTKMDI3R7GrkPyIaZwXbbjCe7kj7TkTEC5PscxFc4Naisr3udcP5VnoW9_qQlWtP" + sib_link_id="8" + >سرویس پاکت</a> + اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید + </p></span> + </body> + </html> + </body> +</html> + + + +شماره خبرنامه 16.html + +urn:uuid:f3929381-7efb-628d-44b4-9426d569b591 +2021-05-20T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱٦</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱٦ - پنجشنبه، ۳۰ اردیبهشت ۱۴۰۰ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>مهندسی اعتماد و تحمل نقص در سیستم توزیع‌شده</b> </li> + <p> توی این مقاله، نویسنده در مورد راه‌کارهای پیاده‌سازی سیستم‌های توزیع‌شده، معماری سرویس‌های مختلف موانع + اسکیل‌کردن یک سیستم و تحمل پذیری این سیستم صحبت می‌کنه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/oyTGqb9LVfk3Qp_JB3Ydcy94qfk4pJnNCfFCXvvzCzFTu2L3fCM_jBl8AwEcnwg7nSGXk8fu6e8wEoYp4ziw1pukUL8s24TSXH1LBVlF8_svBUjJMNUkxAENRHXHXsCOgUWQtqsFdNcFA1ZoCM_ukSeO2uW2rVp3rUqGx0uCrHfAbw1gIjdJ47z6hDsrg2dYLBdibMA42RG6bZKpNdPz8mAItpqmVtPvvcJKiiyyKk4t1MhMbNcMKJVslnQQzntI5laNje-QPiFNsZxmEVd0EA" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>توضیح بیتکوین به مامان و بابا</b> </li> + <p> توی این ویدیو، ضیا صدر مشکل خیلی‌ها رو حل کرده و میتونین برای هر کسی که تازه میخواد با این موضوع آشنا + بشه ارسالش کنین :) <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/2AE16tQrlt1X2rvUOmWTFx4aniwT0LkGLkjjeJLZdLo9KcS-6YiX9pyHyqsMTJbVLHwZls5omSa8VIWOocIsvnqfTei1J8-34hmko9CPaRNNwjkN0fiiX1yHelzrRyPAfHuSzkWWbIIFKqgioernP3VJeXndJnqm4Q" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>راه‌حل‌های ساده برای رفع مشکلات سطح دسترسی فایل‌ها در داکر و هاست</b> </li> + <p> اگر توی اشتراک فایل بین کانتینر و هاست (یا همون سیستم خودتون) مشکل میخورین، مثلا کانتینر با کاربر root + مینویسه و شما نمیتونین فایل‌ رو بخونین یا هر مشکل مرتبط دیگه، کافیه این مقاله رو بخونین و راه‌حل‌های + ساده‌شو بررسی کنین تا هم با مدل کاری کانتینرها‌ آشنا بشین و هم مشکل‌تون حل بشه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/1MHpAUD9wUJ0JOStyzRgDMOtgVuDilvTIR5_6zj91fvjig_Q5cXyg0aERllciip8EkJWwHYC_q9zivRbW_3l37rRZ2mPxWHnBF_reE8_PC7iOkJGBrgqqvIlsWATq_fNPlyuAHxPZk9F1DJjXHP44twKyN3hfaihU4tEBk-R68uX1GGvD5GLndzh9lcJ-NV-aDhIv9U2I0n-scdTr8oiiRv0q7I" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>بازآفرینی مجازی سازی با نیترو‌سیستم آمازون</b> </li> + <p> نگاهی به معماری سیستم زیرساخت مجازی سازی جدید آمازون؛ نیتروسیستم <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/ApK7sicdr0-GGoZUAayTmI7ikF8hTidPk5EYIh5jiujuf9uNVFMRuRfp9MWhgWKzXZQshhv6DLbNfoSGEkQlaG_VGTVVKUEqn93iCxm1uCwuFebfOFi1MXVGmZF_Lv7uvLsJmdhMMqUdDpXA9aL9VVso" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>چرا ایده جایگزینی کپچا با فایدو ایده خوبی نیست</b> </li> + <p> این مقاله که به قلم یکی از متخصصان فایدو نوشته شده است نشان میدهد چرا ایده جایگزینی کپچا با فایدو که + توسط کلادفلر اجرایی شده است، ایده خوبی نیست و نقص های فراوانی دارد <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/PUfgWbv2VHaBpgH3FnVV2d6L8Pr065_xLClseisua0bdJhh1PJcPnJ4avrn874IcxXcYa7wFecJH8941ZQ_hyd85J2gH4tr6LtzM7k_SQfdG5mEwoEdAGOldst-hqWsGH27yq03PnVOweQXCreNAjsv4_4sVN7qToai8n-eVdwnQZOA-N3kVR87xviVUiWzO5MElJWna35v5kI5Zpvoeo_a5cNd27mlKj3czA2shEyL-KZSI_79e_aaG9BtHB7emggKnmIQn65Z45DXhIrzT0Aa-1xM" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>یک مدیر در فیسبوک: هر روز مثل یک کابوس بود</b> </li> + <p> در این پست با تجربیات یک مدیر نظارت بر محتوا در فسبوک آشنا می‌شویم که از سختی‌های کارش مطالب جالبی رو + بیان می‌کند <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Xr8x20LOg7ws0qutENAPD29a9px4Z3drSkqVLqA5E-qjFrnrTFVsMsnC_xlBb7mjDaqrBCdfsfuqUVvwXK4C7eHtUEDFhOav87VSQ1sFKrz7GlBPAfZczlc-YDHIpL94tUNovi31iZRaJxxJ7gVfWyl9RpzCgXQ-LBYRHxYcupapfGyWEL_bUwT9iRItpJ0" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>نرم افزار بهتر بدون (If/Else) : 5 راه برای جایگزینی</b> </li> + <p> استفاده از if/else در اغلب اوقات منجر به طراحی پیچیده و کد کم‌تر قابل خواندن برای شما می‌شود. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/wPTIri_RcV7fnatz5rMPuUH7ny30Y9RyZpatMG8a7oxCyNkWtoZAeFt418IJB4VDhOV3j-7zWvLWYMykxMiB-lDQlz-bTwTt9ATcf32i4D5kIqOYQ4WtDG5hyd564LVcOFH1L-uufk4K5btl5zUWWyyG" + style="font-size:14px" sib_link_id="6">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین گودرزی،</b> <b>امیرحسین بقایی،</b> <b>مهدی آخی،</b> <b>حسن + شهبازی،</b> <b>Amir Mokarchi</b> در تهیه محتوا کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/_ydqRzQXPMO_5Nb3e-McbAIx7WsXz3aE4NTONOob80-O8siXsIt34rO93UfTaNU3RDYei5JFULKZO2RAhXYT6ey5xQDFbkrkdcPQgEL6mowNI1f78BTJFJE9oZ3EsLSYaetkL9OMb1X9oGQtm7NPdEZ7pRUJSP3stb0V3cpjKrZ3RUMqBVrWR1fOt0XenA" + sib_link_id="7">مشارکت کنید</a>. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=ZKzhxzZDKzDJ645EuLfSsC2_roFCtxmA09ShKPQiW7tdXmFWL2ADbJXNlep8jeV48Qtd_2lFBa2LI4nS6rDTSF0oNFmAmihNTL19XmO5_O94MpDuy7O4mMz0qH-w7HxDRDCsDvbAB6ndtp3blp6FhvWUBiHFNgMBQy05s4wBAIORtq60WxNme9dIQHNwC8rT7hPy6Woz3B_0CQ0zYXXdBQ-SIg" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/x8_eOmyv8vsK-1hooTMXhl0hX3mw3cxj9CDdo26bNwAmTTfEYhUmpLf0yzu14AQhCWGEIa8hkOSAifuZ_WTJ5Hb5yN4G4sNwyQ-e3xxUo-NsRbdHOdzb3XpVbCf70vbfCINxanVxhlTy8QHBgG_w" + sib_link_id="8">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/Ru33d79aAR4qXX1O6IS-MittYvb3LmfkRvmGOeatFdog_7hk0e7reUvWW76TZGAqfTfsRLVXouflm3KLqTdmX-qBiwOeFZy_CWnmjXUOY0GVAKMz_QK1yG3_vvIedN3N43A7RddGvtJdwowVSLaE" + sib_link_id="9">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 23.html + +urn:uuid:fda4894b-f3f2-88f9-cc9d-88ef8b39209a +2021-07-08T00:00:00+00:00 +<!DOCTYPE html> +<html dir="rtl" lang="fa"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + </head> + <body style="max-width: 680px; margin: 0 auto"> + <div style="text-align: center"> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) + format("truetype"); + font-weight: 400; + } + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") + format("embedded-opentype"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) + format("woff"), + url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) + format("truetype"); + font-weight: 700; + } + ul { + padding: 0 25px; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 50px; + } + </style> + <br /><br /> + <img + alt="Softwaretalks" + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + style=" + margin: 2.1em auto; + display: block; + width: 130px; + border-radius: 5px; + " + /> + <h1 + style=" + font-size: 25px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + font-weight: 700; + color: #263238; + " + > + خبرنامهٔ Softwaretalks + </h1> + <h3 + style=" + font-size: 18px; + text-align: center; + font-family: Samim, sans-serif; + direction: rtl; + color: #263238; + " + > + شمارهٔ ۲۳ - پنجشنبه، ۱۷ تیر ۱۴۰۰ + </h3> + <hr /> + <ul + style=" + text-align: right; + font-family: Samim, sans-serif; + direction: rtl; + " + > + <a href="https://stitcher.io/blog/new-in-php-81"></a> + <li style="font-size: 18px"> + <a href="https://stitcher.io/blog/new-in-php-81" + ><b>بررسی امکانات PHP 8.1 که November 25, 2021 خواهد آمد</b> + </a> + <p> + اگر دوست‌ دارید بدونید در PHP 8.1 که به زودی ریلیز میشود، چه + تغییراتی صورت گرفته یا چه چیزهایی افزوده شده‌است، این مطلب از آقای + Brent Roose رو از دست ندید. + </p> + <br /> + <a + href="https://camelcase.ir/centralized-and-decentralized-systems/" + ></a> + </li> + <li style="font-size: 18px"> + <a href="https://camelcase.ir/centralized-and-decentralized-systems/" + ><b>سیستم های سنترالایز و غیر سنترالایز</b> + </a> + <p> + سیستم های سنترالایز و غیر سنترالایز (متمرکز و غیرمتمرکز) و همه چیز + درمورد اون هارو خیلی خلاصه بخونید ... + </p> + <br /> + <a + href="https://thevaluable.dev/learning-developer-efficiently-effectively/" + ></a> + </li> + <li style="font-size: 18px"> + <a + href="https://thevaluable.dev/learning-developer-efficiently-effectively/" + ><b>هنر یادگیری برای توسعه‌دهندگان نرم‌افزار</b> + </a> + <p> + این نوشته ضمن مرور شیوه‌های یادگیری مناسب توسعه‌دهندگان نرم‌افزار از + اشتباهاتی که باید از آن‌ها اجتناب کرد و همچنین سوالاتی که پیش از + یادگیری هر مبحث جدیدی باید به آن‌ها پاسخ داد می‌گوید + </p> + <br /> + <a href="https://blog.trello.com/7-types-of-rest"></a> + </li> + <li style="font-size: 18px"> + <a href="https://blog.trello.com/7-types-of-rest" + ><b + >استراحت کردن فقط خوابیدن نیست، برای تجدید قوا و بهره وری بیشتر + انواع استراحت را بشناسیم</b + > + </a> + <p> + برای بهره وری بیشتر و پیشرفت در کار، همه‌ی ما به استراحت نیاز داریم، + ولی استراحت فقط خوابیدن یا سفر رفتن نیست. بعضی وقت ها برای رفع خستگی + به مسافرت میرویم و خسته‌تر برمیگردیم. شاید شناخت انواع استراحت که در + واقع مربوط میشود به انواع خستگی‌ها بتواند کیفیت زمانی که برای آن + میگذاریم را افزایش دهد و بتوانیم بهتر تجدیدقوا کنیم. در این مقاله، + هفت نوع استراحت عنوان شده است. + </p> + <br /> + <a href="https://vrgl.ir/uEFaS"></a> + </li> + <li style="font-size: 18px"> + <a href="https://vrgl.ir/uEFaS" + ><b>اثبات فنی کند بودن سرعت اجرای کدها در ویندوز نسبت به لینوکس</b> + </a> + <p> + از آنجائیکه نحوه برنامه نویسی به زبان اسمبلی در سیستم عامل ویندوز با + استفاده از اسمبلر MASM تعریف میشود، و از آنجائیکه اصولا ساختار + کدنویسی در این اسمبلر نسبت به سایر اسمبلر ها مانند GASM,TASM برای + پردازشگر های Intel در نحوه صرف دستورات تفاوت های عمده ای دارد، + ولی... + </p> + <br /> + <a href="https://vrgl.ir/XejRX"></a> + </li> + <li style="font-size: 18px"> + <a href="https://vrgl.ir/XejRX" + ><b>معرفی پکیج Excludable در لاراول</b> + </a> + <p> + در برخی از پروژه‌ها شما می‌خواهید که مثلا تعدادی از محصولات یا + مقالات سایت شما توسط کاربران عادی قابل رویت یا حتی جستجو نباشد و فقط + تعداد خاصی از اعضا (مثلا فقط ادمین‌ها) بتوانند آنها را ببینند. خب + برای پیاده سازی این امکان شما باید کلی کد بزنید و حتی تغییراتی در + ساختار جداول دیتابیس ایجاد کنید تا بتوانید چنین فیچری را به سایت + خودتان اضافه کنید. اما حالا توسعه دهندگان لاراول با ارائه‌ی یک پکیج + خوب به نام Excludable این امکان را برای شما به راحتی فراهم کردند + </p> + </li> + </ul> + <hr /> + <p + style=" + font-size: 13px; + font-family: Samim, sans-serif; + direction: rtl; + text-align: right; + " + > + تأمین‌کنندگانِ محتوا در این شماره از خبرنامه: <b>امیرحسین بقایی،</b> + <b>امیر شکری،</b> <b>حامد سعیدی،</b> <b>وحید نادری،</b> + <b>امیرابوئی،</b> <b>امیر ابوئی</b> شما نیز می‌توانید + <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a + >. + </p> + <hr /> + <span + ><p + style=" + font-size: 16px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <img + src="https://pakat.net/wp-content/uploads/2020/02/pakat-new-logo-white_00ea005b1_2512.png" + /><br /> + ارسال شده توسط <a href="https://pakat.net/">پاکت</a> + </p> + <p + style=" + font-size: 14px; + text-align: center; + font-family: Samim; + direction: rtl; + color: #263238; + " + > + <a href="https://pakat.net/">سرویسِ پاکت</a> اسپانسرِ ارسالِ + ایمیل‌هایِ این خبرنامه است. با کدِ تخفیفِ sota10 می‌توانید از ۱۰ درصدِ + تخفیف در خرید پلن‌هایِ پاکت بهره‌مند شوید + </p> + <br + /></span> + </div> + </body> +</html> + + + +شماره خبرنامه 13.html + +urn:uuid:d702abf0-0788-2642-735f-37778c577a03 +2021-04-30T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱۳</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱۳ - جمعه، ۱۰ اردیبهشت ۱۴۰۰ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>نکاتی ساده برای شروع یادگیری و درک ماهیت VPN برای مبتدی‌ها</b> </li> + <p> توی این پست وبلاگی خانم نسرین قاسمی، درباره ماهیت VPN و کاربردهاش و خطراتش توضیحات ساده و خوبی میدهند که + شاید اگر خیلی دقیق نمیدونید VPN چیه و چطور کار میکنه بهتون دید خوبی بده. (توی پست وبلاگ روی آدرس آپارات + کلیک کنید چون لینک یوتیوبشون مشکل داره گویا) <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/JuYUP_L3VXOL3oaEObjbDZTPDqqkMHy_PPNNcryDufg5PbVPHKCk8MiRwzp1XGbGNHfVzmhzWQELUuV29A_kgzix3dgQsfRMwF5KDrOBsxMqjhNh2EBG2H5-mH6VJ2A2q32hwzFBrn5A8gCueSQOCPJRZowxA1dhHd_Q8MN0w2-x-Q" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>راهنمای خرید کیبورد مکانیکی برای مبتدیان</b> </li> + <p> در این پست، نویسنده به معرفی کیبورد‌های مکانیکی پرداخته، و سپس با بررسی فاکتورهای موجود، انواع آن را + معرفی می‌کند. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/lYt7LwRG3c5lzC4tBqVTnoCz8xwhJ3PgcN65BG_D2uQlTSTDr8fUmh4QReom7T7dwUyuKLE0WInoUyouVRjJlyMpaAcq_kjNb03xwF93dUtx0NLVNSgYhxGB0yhtya0bMAYn5KAC73fyn6V-ZdEcel-PZSrGasAHYhJCoKhPObad1JfGHsamylWs-fPdiXjUCNbw4tFb9nyQ6_4oUTGecPZiMbHC6hFC" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>گیت از پایین به بالا</b> </li> + <p> مجموعه مطالبی شامل بررسی عمیق گیت و شناخت سادگی و در عین حال پیشرفته بودن این نرم‌افزار. در این مطالب + همچنین مفاهیم پایه‌ای گیت نیز با زبانی ساده توضیح داده شده است. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Jl_oHnYXvvBA3a86LnhzEXQi12ZaYRxQUTmDVBD2z82l3qGxPfUoj9wR69ZlpsjrrBj2xz_ql2PisXUwR0emqLzPRJmtAuE_7xQUjPcRSLg1XL_ymHt7mx4ocQoTE6ocf7lcp7X_nKFbqRkZ9mVHR0MMX8E7tGmSSDtyffymPWT-nMpcivNfkWQGWsohwaqSTA" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>صفر تا صد نوشتن یک رزومه حرفه‌ای برنامه‌نویسی</b> </li> + <p> توی این ویدیو درباره نکاتی صحبت میشه که بتونیم به عنوان یک برنامه‌نویس توی سطوح مختلف کاری یک رزومه + حرفه‌ای بنویسیم و شانس خودمون رو برای استخدام شدن توی شرکت‌ها افزایش بدیم. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/RiSKJioaY1z5XpMtupYwKJ85MAeYaYhp402gMoVrCPoodm4HmvItqqOugaA3CRR99-KrN8-BrnYvIUWemnKao-Sd2G34UH9wjRFDSeq7czYvlnWvMERy_QgzXKQwNOqvlnU3Ce25O68HJNijTWJoLp2JTpr23v7Hxg" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>۱۰ تکنیک برای بهره‌وری در برنامه‌نویسی دورکاری</b> </li> + <p> در این پست نویسنده به نکاتی اشاره می‌کند تا در دوران کنونی، بهره‌وری برنامه‌نویسی در دورکاری را بهبود + ببخشیم. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Ke_TyQRNFYSKeatvOcgbDKq_xFf2MqKVeZsPZGxLJ0xIjpHpWvFrvfCcUz8muNbPecO9wf-Qu8MBvJO11CQmKjo6y_maU9p84NNbZuwJwks46v1I76x3sQlaQrD4OlBI6_7Mb7BExv68VITwKDWe8g8lLAjfFi7MvlP2NosrDu73N4qj9TrXB5UOm4d0Hp34XnwSctg7sam0mxok1uH5dQBjvDTvngmFz5hjMvUxSn_nUUGdfTBG_gpt68_MJ9HQDnAJwDD8_OKtaQgFBQkSHw" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>چگونه secretها را مدیریت کنیم. (۷ لایه مدیریت اطلاعات حساس )</b> </li> + <p> نویسنده این پست، راه‌های نگه‌داری و استفاده از اطلاعات حساس یا Secrets توی اپلیکیشن رو از هر لحاظ بررسی + میکنه و نظر خودش رو درمورد متدهایی که معرفی میکنه، میگه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/_KmQUNNGK3VmnH3XQSXfwcJYWNX6jnhJOZjfY7dFDre0iBiHtocEet59Csn70kMCphWZRpOgHtnUKu_JDeYucmyookSakjuIwXa8NzVy4zXGSbT-TODpI6aH4luMCj6nhhPxF6zEGB_keNHRjllA7lLEpUfQ5mreCysroxaQe-_5WZK5rnNGgwUaJKP3lXSG7i1cxAoX29etST-XJOKgMSzGpv3Y" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>حسن شهبازی،</b> <b>حامد سعیدی،</b> <b>اشکان + رحمانی،</b> <b>امیرحسین گودرزی</b> در تهیه محتوا کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/A9rr6YupWDFJWfdHUgZHt7pAG_Aawowq1hhmdgRTzzDxsTqLEuzddeMJznDZsiklov5z8zz0p2TnPMrY5mXvW9Zpt4hOIhF-W8FgvRA6v5_PaQFnjISEBoexSuVp-uPVOPP6qeTH9n0QolkinXBdlcYKGugaMxZQH7tKmZWe0DWyiu1B0HN6nG4NJVoc1w" + sib_link_id="6">مشارکت کنید</a>. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=EnBtX-OyZlsBBvMYFKpD93BM1cOjPQ1FqUDp10_4-P0dpKi1XNT0mC1qhfuExCg-cO2GkqwBh_SAlqnygoNtYP1o3rGFRx8DaI-Y9mN9uqgKNXQcEodp39txVxs02IC7uqCb2HOoAZZpEP5vliQjKrJvb30fgBURmOkzTgvvjlSGau4yCE8VNWGc55Ouq5-hWnmq8l5CVpA2FaWl9gn6WHnYrA" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/RXZnJKBrHYKLf5hV6wDmTWCoa3K21djrFHG97w-T8Wsckam1mHSeM2joJ6dWVOwWZgMmNSgw96DwcPf7UdZ8PsbXHJ9D4Rdg27xFFT9FATtkdyv5tYUTGINtrgBe5_cB8G_fEjhxah_LxTg5v7Wh" + sib_link_id="7">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/44ASiZcGSrsZAtKWHD7XZQAP4UoxZJ3Ka-T4OFfkaYD9koS-R5EDpFQUrR1CW6_w_vuLP66gxhoHGORt1ltPXWv3j88GwvwGUz_Kkul1mYqIoQmWMX2pINa9mmh8CTa32qA7MwXv9_WeNOa6g1K9" + sib_link_id="8">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 می‌توانید + از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 11.html + +urn:uuid:613d08f7-3321-23e1-7fa7-b642ce1e3974 +2021-04-08T00:00:00+00:00 +<html> + +<head> + <title>خبرنامه شماره ۱۱</title> + <link rel="important stylesheet" href="chrome://messagebody/skin/messageBody.css"> +</head> + +<body> + <html dir="rtl" lang="fa"> + + <head> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> + <style> + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf) format("truetype"); + font-weight: 400 + } + + @font-face { + font-family: "Samim"; + src: url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot); + src: url("https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix") format("embedded-opentype"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff) format("woff"), url(https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf) format("truetype"); + font-weight: 700 + } + + ul { + padding: 0 25px + } + </style> + </head> + + <body style="max-width:680px;margin:0 auto"> <br /><br /> + <h1 + style="font-size:25px;text-align:center;font-family:Samim,sans-serif;direction:rtl;font-weight:700;color:#263238"> + خبرنامهٔ Softwaretalks </h1> + <h3 style="font-size:18px;text-align:center;font-family:Samim,sans-serif;direction:rtl;color:#263238"> + شماره ۱۱ - پنجشنبه، ۱۹ فروردین ۱۴۰۰ </h3> + <hr /> + <ul style="text-align:right;font-family:Samim,sans-serif;direction:rtl"> + <li style="font-size:18px"><b>آشنایی با اتفاق هیجان‌انگیز این‌روزهای اکوسیستم PHP</b> </li> + <p> اگر توسعه‌دهنده PHP باشید احتمالا این‌روزها زیاد کلمه Octane به گوشتون خورده یا توی توییتر دربارش چیزی + شنیدید. اما این Octane چیه؟ این مقاله توضیحات خوبی میده. اگر نمیدونید Octane چیه و چطور باید ازش استفاده + کرد این مقاله رو حتما بخونید. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/dm9MTPTP61pibrzuZ7C6iu6Chi9UQq-DHuiEd9cqiIJIxbQWjmUP9xUFRZBauOj-37kk1WVZwEl8RlCRLSawU71beOis09MPjijawHFNxjUlqX1fAWxRvNx2ARjhQLCTZCRde9_u6RwnCSVnWoSHraLndV0xQtzPNib9VDAOymfgBh0V85KyDXYbf3OOtpbQ_pqL" + style="font-size:14px" sib_link_id="0">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>پستگرس چگونه کار می‌کند؟ جلسه یک - زندگی یک کوئری</b> </li> + <p> وقتی یک کوئری در پستگرس اجرا می‌کنید چه اتفاق‌هایی در پشت صحنه می‌افتد؟ نویسنده این مقاله چند سال در تیم + سرویس ابری پستگرس مایکروسافت کار کرده که نیاز داشت با جزییات داخلی پستگرس آشنا شود. با استفاده از این + تجربیات، جزییات داخلی پستگرس بررسی می‌شود. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/4qtq9-GcAF35ud90R18E5KOVTYcB362ycThKZ9dnevHFhtYrD3IphzsmdMrinqg6VTztpCqZuwJGIMT2oBsMCTRvyOaUu44b-ts5tk5oxlyq3NZrdpfonescWvd5pAo2pp76V792XSFenqFov4Oevp9OAQ" + style="font-size:14px" sib_link_id="1">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>صادرکننده متریک پرومتئوس بنویس!</b> </li> + <p> چرا و چگونه برای نرم‌افزاری که می‌نویسیم، صادرکننده متریک پرومتئوس بسازیم. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/hUYd1TGRyi4fjYW1Wb4m5Md3On_tLLefUPWYaqJJwD4WGZUXuVT-Wvv-CIbAcK3tONYwpZvBy8ok4VpjyDlPpIFRpA6F5nTZH_Ku05F0s3X3nFTEok0MBsHgJ9geUM9uaVYgmm0Ty09XRZ3n4Cb7tv2w5F2UlWFG_ZM3NVSudZaslwxEYYpxdIqqnsIbNaKBXFpyw4hQ" + style="font-size:14px" sib_link_id="2">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>مشکل نروژ</b> </li> + <p> نروژ، کشوری که کد اختصاری مشابه با «نه» دارد میتواند تنظیمات شما رو مختل کند. اما این تنها مشکل استفاده + از فایل‌های یَمل نیست. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/_U-ViqAE-nie66KCR_OaArrci95pCoHUwd75xusWGWRxqQt2v3Lr4k2n2yaFemhYU8RADSlLjYJPmRj-nTMQ96dP8SG-66kkgI_Qc2SI_pykGPcX0FQEG53sy1JkQYUEmgSV-twcXCbkSpNWxaaqtLjLv19mCkkIZcBxCxYhMAipokzyBeLAjQmXqQjFQrxPeaASN_2achmw0DOnKOzK" + style="font-size:14px" sib_link_id="3">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>نظارت بر عملکرد و بازدهی برنامه های اندروید</b> </li> + <p> یک توسعه دهنده اندروید هنگام تست یا رفع باگ یک برنامه باید سناریوهای بی شماری را مورد بررسی قرار دهد. + اگر برنامه منتشر شد و هنگام استفاده کاربر از برنامه مشکلی پیش آمد، ریپورتی که توسعه دهنده از آن مشکل + دریافت می کند، باید شامل اطلاعاتی مانند مدل گوشی، نسخه اندروید و... باشد. در این مطلب با Sentry آشنا + خواهید شد که می تواند به شما برای رفع سریع تر باگ های یک اپلیکیشن کمک کند. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/uZh7OgkwjKSvhfRTfUA0XazWz9XTpJSAp9JSwyc6P1tiQllzuKPIhh0NZA9Drlf6DIx9j_d6db5tCiE0cTZOKAEp04u3Q6drzdyYg0tlswHl5yNqWM0Oo_wCGTq5Bt1BtbVW5czRRwDI1-Pxy87AM87TdAwwxMCwCaSLB4MZR2cgkVdZ7AzjdHnn5Z9Hy75i0fCWh_90ZYy7Klq2n4ZVODRBNch3-kK39TDEfeEUnBkQnJfl" + style="font-size:14px" sib_link_id="4">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>راهنمای استفاده‌ی مسئولانه از ای-پی-آی‌های یادگیری ماشین</b> </li> + <p> اگر توسعه‌دهنده نرم‌افزار هستید چه معیارهایی برای انتخاب مسئولانه‌‌ی سرویس‌های یادگیری ماشین، که به وفور + نعمت و از طریق ای-پی-آی در دسترس هستند، دارید؟ تو این مطلب دو تا سرویس تحلیل احساسات مبتنی بر یادگیری + ماشین رو با هم بررسی میکنیم و نگاهی میندازیم به معیارهایی مثل سوگیری و تبعیض، حریم خصوصی و امنیت که + ممکنه در تصمیمتون به عنوان یک توسعه‌هنده برای انتخاب یه سرویس تحلیل احساسات تاثیر داشته باشه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/yv9blczhXafJFMqi5-pisEhAx0aQmr3G7aHH850qgbMV-BivfOrSKrOnAWOeR3PKCn88tPUAhMkPqHr2mc3qqEEDyGGOadcFpMQvfGxQNs3VAuIy8IaCEAJ841J-DgdjRlTS7hits8zKS8hBWR5-3B-w" + style="font-size:14px" sib_link_id="5">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>ایراد فنی سال 2000</b> </li> + <p> نمایش سال 2000 در سیستم‌های کامپیوتری مشکلاتی رو ایجاد می‌کرد. همچنین سال 1400 هم می‌تونه یه چنین + مشکلاتی ایجاد کنه. به بهانه سال 1400 به این موضوع پرداخته شده. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/EzjKtmd1VmA-5wySX0IOMVh_rMhfvWsocPt0GqKEhKGlnWYa6R4wtsiOX56c9UQgypT91Ju2vjDadAolfGh2n_TjKj_5BzJlfnyXVP1RitMK9LaC6UKnftG3bCXZ5kJ8RbZyG9OX89wfQR2LgSxxD7jt" + style="font-size:14px" sib_link_id="6">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>gRPC اشتباهاتی مهلک ولی آسان در کانفیگ </b> </li> + <p> در این مقاله کوتاه نویسنده به تجربیات شخصی خودش در مورد اشتباهاتی که در کانفیگ کردن این پروتوکل داشته + است اشاره میکند، عواقب آن را با ذکر جزئیات بیان میکند، و راه حل های جایگزین را پیشنهاد میدهد. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/R17n-YNHbSBabUnhV5AIlT7bIaGfxqut3pAUOFbuNUePVE3c-xEix5bCkKSVEAhGnD0UmXOCg30vlUI_FC_hWzNmL7AcXsaVVQk4uUq3xT3b2mFjQ192XoUMScNpTfPLa8E3wK9o3CM_LM51CSxbH4BRFuWQZ2VbwPihQGN8PU1gJW3lTESgaOM" + style="font-size:14px" sib_link_id="7">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>مقایسه‌ی سرعت اجرای یک برنامه در زبان‌های مختلف</b> </li> + <p> نویسنده در این مقاله ابتدا یک سوال الگوریتمی را که مناسب جلسات مصاحبه‌ی شغلی است تعریف میکند. سپس سعی + میکند با استفاده از زبان‌های مختلف پاسخ را پیدا کرده، و از نظر پرفورمنس با یکدیگر مقایسه کند <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/3KQfr69g0wRvi_RKy5YUIDIf1aNGzTo0X2erzG42gGIqnY3_FDFgO_Ps8gVpzfJe37zF1_RfFXt3uZwPp6k0QVXNtlQ8M02y4aibS2ERgzc2-nd8z9uUoyrer1wUKFtHifeQtD9vnu0sVZ7qMJZbSYSl5PK6rBorrWP9armn7FS2vqFlGCHSKtMF" + style="font-size:14px" sib_link_id="8">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>راهنمای مبتدی‌ها برای نوشتن تست های ای‌پی‌آی در ابزار پست‌من</b> </li> + <p> اگر حوزه تست نرم‌افزار یا توسعه را تازه شروع کردین و به دنبال راهنمای ساده ولی کاربردی برای تست های + ای‌پی‌آی هستین این مطلب میتونه به شما کمک کنه. <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/MLna7VGKLkFrlC3R9wxI2h0JHyF4SIUSV4zx2x71QQJH-4dVygwJlJNUkJgJOP2Z3uCQODIkexLSRtdsjfu9uZfyXDyUkYbhRUJj6vVyHzJUY_PJUdBJML_Nxfh2qAKDWR-k96XfWyaLWqGWV7K4ktHsNa_780fqFIKoD2zDbIOp7LsJiJXIqW2lNlReM9yNX5DdIEkGLBK9igAz0SeJvPcwZmLJkl1W-Q" + style="font-size:14px" sib_link_id="9">مطالعه مطلب اصلی</a></p> <br /> + <li style="font-size:18px"><b>مانیتورینگ منابع سرور با Grafana</b> </li> + <p> توی این مقاله قراره باهم برای سروری که داریم به کمک Grafana و Prometheus و Node Exporter یک داشبورد + مانیتورینگ بیاریم بالا و از میزان مصرف منابع سرورمون باخبر شیم <br /> <a + href="https://r.t10.pktsrv2.com/mk/cl/f/u1dEBABpe0PqO1sRy8Pp5krRyGCXUuPfB540KxoEL_lNTKOsKNB_c1dqkEXvMA7AN4_9uQJxS3QVjGfSscrJsSfbcWhYrvpDKDuh2-A7iARq41CwRlE_qVBzALj4Vfn5IWzF8opQYEO5tbviqnklOWS4bQ" + style="font-size:14px" sib_link_id="10">مطالعه مطلب اصلی</a></p> + </ul> + <hr /> + <p style="font-size:13px;font-family:Samim,sans-serif;direction:rtl;text-align:right"> در این شماره از + خبرنامه، دوستان خوبی به نام‌های <b>امیرحسین بقایی،</b> <b>هادی مشیدی،</b> <b>ابراهیم نجاتی،</b> <b>حسن + شهبازی،</b> <b>علی کرباسی،</b> <b>رویا پاکزاد،</b> <b>امین یزدی،</b> <b>علی الیاسی،</b> <b>علی ناصری</b> + در تهیه محتوا کمک کردند. شما هم می‌توانید <a + href="https://r.t10.pktsrv2.com/mk/cl/f/rQI9PzufE9-c9n2Ngw6i1R7UGmOYq5Hn1OrvvYIW6oyOZq1N98_DuBN6DDHolrTqn7RLXIbknpWUw1r-PGQvJD11Hb3Z6lqGjllcG8HFOab5_xzwONhnMHKlw7E3vkWEOSUTiXEFriy9S9tBAAse-PAizCTAO8sNbxX73pMyIZZGUZz2zFhqJbygo8eA6pI" + sib_link_id="11">مشارکت کنید</a>. </p> + <hr /> <span> + <p style="font-size:16px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><img + src="http://r.t10.pktsrv2.com/im/130771/0815a06fabc0c395720b43526181c6e57f5941257e545c7cb50034fadc0436de.png?e=HosZhkiM1ztA2F8oDKD7vq1cYa7PyNrG9lgdQ8wv4TMakx99qLnMHVdBGFSpMriS4FfLfFefoBMbWjvXmqnnOKaR9f_YicYQOeqZYxBowSXhisknldERDrgMQY5lGHFHjpyM6dF3fx2BH0-Du5Ecq55de6GGf_yIpGLog83ID6GLIv0Rdkpkww3fDPpLgZX8RsZqz6vnDcSesUAhu7OICR1BEg" + sib_img_id="0" /><br /> ارسال شده توسط <a + href="https://r.t10.pktsrv2.com/mk/cl/f/Igm06s6CjIxpTNpY4ms1WB5YuNqb1BkwZhPEt0gpkTiCC1NVqQcUxwsdlWLJP6mj1cWHyUIGKWK1plPQgarDo091KiCCd76b2yWiztU0EqaO-sp0T2ekbEsP2reVUwbxEKskxG0IYdrWo27cUoCaHw" + sib_link_id="12">پاکت</a></p> + <p style="font-size:14px;text-align:center;font-family:Samim;direction:rtl;color:#263238"><a + href="https://r.t10.pktsrv2.com/mk/cl/f/P6NYNHfk_6GhkQPl0_cWOlmcmGfkNHrEJQ_CgPuRcfA0g_Hc4UP97iJgq5mqCSxEbG7tmGqSnHiQUzj9Paq1ZXfr_tmafkclBd6tzvOyXPQ5gCmHm-xph89GGUzQFnbdo1xrBmT6r5QnlPSnTkao8g" + sib_link_id="13">سرویس پاکت</a> اسپانسر ارسال ایمیل‌های این خبرنامه است. با کد تخفیف sota10 + می‌توانید از ۱۰ درصد تخفیف در خرید پلن‌های پاکت بهره‌مند شوید </p> + </span> + </body> + + </html> + +</body> + +</html> + + +شماره خبرنامه 48.html + +urn:uuid:d5eaa808-6952-881d-f387-59ae68fadc38 +2022-01-27T00:00:00+00:00 +<!DOCTYPE HTML> +<html dir="rtl" lang="fa"> + <head> + <title>خبرنامه‌ ‌نرم‌افزاری SoftwareTalks</title> + <meta charset="utf-8" /> + <style> + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim.ttf') format('truetype'); + font-weight: normal; + } + @font-face { + font-family: 'Samim'; + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot'); + src: url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.eot?#iefix') format('embedded-opentype'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.woff') format('woff'), + url('https://cdn.fontcdn.ir/Font/Persian/Samim/Samim-Bold.ttf') format('truetype'); + font-weight: bold; + } + ul { + padding: 0 0; + list-style-type: none; + } + ul li:first-of-type { + padding-top: 10px; + } + </style> + </head> + + <body style="max-width: 680px; margin: 0 auto;"> + <br /><br /> + <img + src="https://newsletter.softwaretalks.ir/favicons/apple-touch-icon.png" + alt="Softwaretalks Logo" + style="margin: 2.1em auto; display: block; width: 130px; border-radius: 5px;" + > + <h1 style="font-size: 25px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; font-weight: bold; color: #263238;">خبرنامهٔ Softwaretalks</h1> + <h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;"> + شمارهٔ ۴۸ - پنجشنبه، ۰۷ بهمن ۱۴۰۰ + </h3> + <hr /> + <ul style="text-align: right; font-family: 'Samim', sans-serif; direction: rtl;"> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://doeken.org/blog"><b>اگر php کار میکنید این وبلاگ براتون میتونه جالب باشه</b></a><br/>اگر برنامه‌نویس PHP هستید، وبلاگ آقای Doeke Norg مطالب جالبی درباره پیاده‌سازی برخی الگوریتم‌ها و دیزاین پترن‌ها در PHP داره که خوندنش میتونه برای افراد تازه‌کار یا حتی با تجربه جالب باشه. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://openai.com/blog/introducing-text-and-code-embeddings/"><b>امبدینگ متن و کد در اوپن ای‌آی</b></a><br/>شرکت OpenAi به تازگی در API خود ویژگی جدیدی تحت عنوان code and text embeddings معرفی کرده که به کمک آن بحثهای text similarity راحت‌تر و سریعتر شده است. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://learngitbranching.js.org/"><b>یادگیری گیت پایه تا حرفه‌ای با یک بازی مرحله‌ای</b></a><br/>این سایت با گرافیک و بازی مرحله به مرحله کمک می‌کند که گیت را بهتر یاد بگیریم. چه در کار با گیت تازه‌کار باشید چه حرفه‌ای، این سایت می‌تواند برای شما مفید باشد. + </li> + <li style="font-size: 18px; margin-top: 30px;"> + <a style="color: black;" href="https://locomo.tips"><b>تجربه‌نگاری یک مهندس نرم‌افزار</b></a><br/>چند وقت پیش توی توییتر دیدم یک مهندس نرم‌افزار ایرانی داره تجربیات فنی کارش و زندگی خودش رو در سندی جمع‌آوری میکنه. برای من مفید بود. به نظرم میتونه برای بقیه هم نکات جالبی داشته باشه. اگر به این سبک مطالب علاقه دارید توصیه میکنم یک نگاهی بندازین بهش + </li> + </ul> + <hr /> + <p style="font-size: 13px; font-family: 'Samim', sans-serif; direction: rtl; text-align: right;"> + تأمین‌کنندگانِ محتوا در این شماره: + + <b>امیرحسین بقایی،</b> + + + <b>سینا آریا،</b> + + + <b>امیرحسین مجیری.</b> + + شما نیز می‌توانید <a href="https://newsletter.softwaretalks.ir/#contribute">مشارکت کنید</a>. + </p> + <br /> + </body> +</html> + + + \ No newline at end of file diff --git a/composer.json b/composer.json deleted file mode 100644 index 443794d..0000000 --- a/composer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "require": { - "php": "^7.4.0", - "knplabs/github-api": "^2.17", - "php-http/guzzle6-adapter": "^2.0", - "symfony/yaml": "^5.2" - } -} diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 3feb58b..0000000 --- a/composer.lock +++ /dev/null @@ -1,1834 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "2a7af87251292995ffc474d59166b78d", - "packages": [ - { - "name": "clue/stream-filter", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/clue/php-stream-filter.git", - "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/aeb7d8ea49c7963d3b581378955dbf5bc49aa320", - "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "psr-4": { - "Clue\\StreamFilter\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering" - } - ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", - "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" - ], - "support": { - "issues": "https://github.com/clue/php-stream-filter/issues", - "source": "https://github.com/clue/php-stream-filter/tree/v1.5.0" - }, - "funding": [ - { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2020-10-02T12:38:20+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.5.5", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5" - }, - "time": "2020-06-16T21:01:06+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "60d379c243457e073cff02bc323a2a86cb355631" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", - "reference": "60d379c243457e073cff02bc323a2a86cb355631", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.0" - }, - "time": "2020-09-30T07:37:28+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.7.0" - }, - "time": "2020-09-30T07:37:11+00:00" - }, - { - "name": "knplabs/github-api", - "version": "v2.17.0", - "source": { - "type": "git", - "url": "https://github.com/KnpLabs/php-github-api.git", - "reference": "26dafcddb9739c0afc16dc74ae6e0ca2f4d0fe38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/26dafcddb9739c0afc16dc74ae6e0ca2f4d0fe38", - "reference": "26dafcddb9739c0afc16dc74ae6e0ca2f4d0fe38", - "shasum": "" - }, - "require": { - "php": "^7.1", - "php-http/cache-plugin": "^1.4", - "php-http/client-common": "^1.6 || ^2.0", - "php-http/client-implementation": "^1.0", - "php-http/discovery": "^1.0", - "php-http/httplug": "^1.1 || ^2.0", - "psr/cache": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "cache/array-adapter": "^0.4", - "guzzlehttp/psr7": "^1.2", - "php-http/guzzle6-adapter": "^1.0 || ^2.0", - "php-http/mock-client": "^1.2", - "phpstan/phpstan": "^0.12.23", - "phpunit/phpunit": "^7.0 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.16.x-dev", - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Github\\": "lib/Github/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KnpLabs Team", - "homepage": "http://knplabs.com" - }, - { - "name": "Thibault Duplessis", - "email": "thibault.duplessis@gmail.com", - "homepage": "http://ornicar.github.com" - } - ], - "description": "GitHub API v3 client", - "homepage": "https://github.com/KnpLabs/php-github-api", - "keywords": [ - "api", - "gh", - "gist", - "github" - ], - "support": { - "issues": "https://github.com/KnpLabs/php-github-api/issues", - "source": "https://github.com/KnpLabs/php-github-api/tree/v2.17.0" - }, - "funding": [ - { - "url": "https://github.com/acrobat", - "type": "github" - } - ], - "time": "2020-11-14T17:07:32+00:00" - }, - { - "name": "php-http/cache-plugin", - "version": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/cache-plugin.git", - "reference": "a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7", - "reference": "a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/client-common": "^1.9 || ^2.0", - "php-http/message-factory": "^1.0", - "psr/cache": "^1.0", - "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "require-dev": { - "phpspec/phpspec": "^5.1 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\Common\\Plugin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "PSR-6 Cache plugin for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "cache", - "http", - "httplug", - "plugin" - ], - "support": { - "issues": "https://github.com/php-http/cache-plugin/issues", - "source": "https://github.com/php-http/cache-plugin/tree/master" - }, - "time": "2020-07-13T10:55:38+00:00" - }, - { - "name": "php-http/client-common", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "e37e46c610c87519753135fb893111798c69076a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/e37e46c610c87519753135fb893111798c69076a", - "reference": "e37e46c610c87519753135fb893111798c69076a", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "symfony/options-resolver": "^2.6 || ^3.4.20 || ~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0", - "symfony/polyfill-php80": "^1.17" - }, - "require-dev": { - "doctrine/instantiator": "^1.1", - "guzzlehttp/psr7": "^1.4", - "nyholm/psr7": "^1.2", - "phpspec/phpspec": "^5.1 || ^6.0", - "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" - }, - "suggest": { - "ext-json": "To detect JSON responses with the ContentTypePlugin", - "ext-libxml": "To detect XML responses with the ContentTypePlugin", - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\Common\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], - "support": { - "issues": "https://github.com/php-http/client-common/issues", - "source": "https://github.com/php-http/client-common/tree/2.3.0" - }, - "time": "2020-07-21T10:04:13+00:00" - }, - { - "name": "php-http/discovery", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/788f72d64c43dc361e7fcc7464c3d947c64984a7", - "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "nyholm/psr7": "<1.0" - }, - "require-dev": { - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1", - "puli/composer-plugin": "1.0.0-beta10" - }, - "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", - "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", - "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" - ], - "support": { - "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.13.0" - }, - "time": "2020-11-27T14:49:42+00:00" - }, - { - "name": "php-http/guzzle6-adapter", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1", - "php-http/httplug": "^2.0", - "psr/http-client": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0", - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/client-integration-tests": "^2.0", - "phpunit/phpunit": "^7.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" - } - ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", - "keywords": [ - "Guzzle", - "http" - ], - "support": { - "issues": "https://github.com/php-http/guzzle6-adapter/issues", - "source": "https://github.com/php-http/guzzle6-adapter/tree/master" - }, - "time": "2018-12-16T14:44:03+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/master" - }, - "time": "2020-07-13T15:43:23+00:00" - }, - { - "name": "php-http/message", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "39db36d5972e9e6d00ea852b650953f928d8f10d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/39db36d5972e9e6d00ea852b650953f928d8f10d", - "reference": "39db36d5972e9e6d00ea852b650953f928d8f10d", - "shasum": "" - }, - "require": { - "clue/stream-filter": "^1.5", - "php": "^7.1 || ^8.0", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.6", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.3", - "slim/slim": "^3.0", - "zendframework/zend-diactoros": "^1.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation", - "zendframework/zend-diactoros": "Used with Diactoros Factories" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - }, - "files": [ - "src/filters.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], - "support": { - "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.10.0" - }, - "time": "2020-11-11T10:19:56+00:00" - }, - { - "name": "php-http/message-factory", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" - }, - "time": "2015-12-19T14:08:53+00:00" - }, - { - "name": "php-http/promise", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" - }, - "time": "2020-07-07T09:29:14+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/master" - }, - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", - "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/master" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-09-07T11:33:47+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v5.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/87a2a4a766244e796dd9cb9d6f58c123358cd986", - "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-24T12:08:07+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", - "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117", - "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "727d1096295d807c309fb01a851577302394c897" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", - "reference": "727d1096295d807c309fb01a851577302394c897", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930", - "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", - "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", - "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/bb73619b2ae5121bbbcd9f191dfd53ded17ae598", - "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<4.4" - }, - "require-dev": { - "symfony/console": "^4.4|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-11-28T10:57:20+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.0.0" -} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d344c2f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.9' + +services: + newsletter: + init: true + container_name: newsletter + build: + context: ./ + ports: + - '8585:80' + environment: + WWWUSER: '${WWWUSER}' + LARAVEL_SAIL: 1 + volumes: + - '.:/app/newsletter/' + restart: always + command: -S 0.0.0.0:80 \ No newline at end of file diff --git a/favicons/apple-touch-icon.png b/favicons/apple-touch-icon.png index 8df3def..7605c45 100644 Binary files a/favicons/apple-touch-icon.png and b/favicons/apple-touch-icon.png differ diff --git a/favicons/favicon-16x16.png b/favicons/favicon-16x16.png index fb9a67f..fade899 100644 Binary files a/favicons/favicon-16x16.png and b/favicons/favicon-16x16.png differ diff --git a/favicons/favicon-32x32.png b/favicons/favicon-32x32.png index 46cd512..d084a79 100644 Binary files a/favicons/favicon-32x32.png and b/favicons/favicon-32x32.png differ diff --git a/favicons/logo.svg b/favicons/logo.svg new file mode 100644 index 0000000..e70f4e8 --- /dev/null +++ b/favicons/logo.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/fetch_issues.php b/fetch_issues.php deleted file mode 100644 index 5990e06..0000000 --- a/fetch_issues.php +++ /dev/null @@ -1,22 +0,0 @@ -api('issue')->all('softwaretalks', 'newsletter', [ - 'labels' => 'content', - 'state' => 'open', -]); - -foreach ($issues as $issue) { - try { - $parsed = Yaml::parse($issue['body']); - print_r($parsed); - } catch (ParseException $exception) { - printf('Unable to parse the YAML string: %s', $exception->getMessage()); - } -} \ No newline at end of file diff --git a/fonts/Estedad-FD-Regular.ttf b/fonts/Estedad-FD-Regular.ttf new file mode 100644 index 0000000..db47f4d Binary files /dev/null and b/fonts/Estedad-FD-Regular.ttf differ diff --git a/fonts/Estedad-FD-Regular.woff2 b/fonts/Estedad-FD-Regular.woff2 new file mode 100644 index 0000000..664f9fe Binary files /dev/null and b/fonts/Estedad-FD-Regular.woff2 differ diff --git a/images/SoftwareTalks.jpg b/images/SoftwareTalks.jpg new file mode 100644 index 0000000..28e21c4 Binary files /dev/null and b/images/SoftwareTalks.jpg differ diff --git a/images/bg.jpg b/images/bg.jpg new file mode 100644 index 0000000..f9560dd Binary files /dev/null and b/images/bg.jpg differ diff --git a/index.html b/index.html index fc3cf4f..828f69c 100644 --- a/index.html +++ b/index.html @@ -1,149 +1,435 @@ - - - - - خبرنامه مهندسین نرم‌افزار - - - - - - - - - - - - -
- - - - -
-
-

نحوه مشارکت در تامین محتوای خبرنامه

-

- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با - استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در - ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و - کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی - در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را - می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی - الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این - صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و - شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای - اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد - استفاده قرار گیرد. -

-

- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با - استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در - ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و - کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی - در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را - می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی - الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این - صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و - شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای - اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد - استفاده قرار گیرد. -

-
- -
-

آرشیو خبرنامه‌های ارسال شده

-

هنوز خبرنامه‌ای ارسال نشده است.

-
- -
-

درباره پروژه

-

- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با - استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در - ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و - کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی - در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را - می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی - الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این - صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و - شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای - اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد - استفاده قرار گیرد. -

-
-
- - - -
- - -
- - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + خبرنامهٔ نرم‌افزاریِ SoftwareTalks + + + + +
+ + + + +
+
+
    +
  1. رویِ لینکِ زیر کلیک کنین؛
  2. +
  3. ایمیلتون رو وارد کنین؛
  4. +
  5. ایمیلی که براتون می‌آد رو تأیید کنین.
  6. +
+ +
+ +
+

لینک‌هایِ جالبتون رو از طریقِ زیر برایِ ما ارسال کنین:

+ +
    +
  1. به این + صفحه مراجعه کنین.
  2. +
  3. رویِ دکمهٔ Get Started کلیک کنین.
  4. +
  5. لینکِ مورد نظرتون رو طبقِ شیوه‌نامه وارد کنین و در آخر submit بزنین.
  6. +
+ +

+ اگه مطلبِ شما طبقِ قوانین باشه برچسبِ verify می‌خوره و اگه نه کمکتون می‌کنیم + تغییراتِ لازم رو اعمال کنین. اگه مطلبِ شما جزوِ مقالات + ارسالیِ هفتهٔ جاری باشه برچسبِ current-week می‌خوره. و درنهایت بعد از ارسالِ موفقِ خبرنامه issue + بسته می‌شه. +

+
+

اگر دوست‌ دارین بیشتر درباره فلسفه خبرنامه بدونین یا اگر تا به‌حال با گیتهاب کار نکردین، این ویدیو رو + تماشا کنید:

+ +
+ +
+

آرشیو خبرنامه‌های سال ۱۴۰۱

+
    +
  • خبرنامه شماره ٦۲ - پنجشنبه، ۲۷ مرداد
  • +
  • خبرنامه شماره ٦۱ - پنجشنبه، ۲۰ مرداد
  • +
  • خبرنامه شماره ٦۰ - جمعه، ۱۴ مرداد
  • +
  • خبرنامه شماره ۵۹ - پنجشنبه، ۰٦ مرداد
  • +
  • خبرنامه شماره ۵۸ - پنجشنبه، ۳۰ تیر
  • +
  • خبرنامه شماره ۵۷ - جمعه، ۲۴ تیر
  • +
  • خبرنامه شماره ۵٦ - پنجشنبه، ۱٦ تیر
  • +
  • خبرنامه شماره ۵۵ - پنجشنبه، ۰۹ تیر
  • +
  • خبرنامه شماره ۵۴ - پنجشنبه، ۰۲ تیر
  • +
  • خبرنامه شماره ۵۳ - پنجشنبه، ۲٦ خرداد
  • +
  • خبرنامه شماره ۵۲ - پنجشنبه، ۰۸ اردیبهشت
  • +
  • خبرنامه شماره ۵۱ - پنجشنبه، ۱۲ خرداد
  • +
+

آرشیو خبرنامه‌های سال ۱۴۰۰

+
    +
  • خبرنامه شماره ۵۰ - پنجشنبه، ۱۹ اسفند
  • +
  • خبرنامه شماره ۴۹ - پنجشنبه، ۰۵ اسفند
  • +
  • خبرنامه شماره ۴۸ - پنجشنبه، ۰۷ بهمن
  • +
  • خبرنامه شماره ۴۷ - پنجشنبه، ۳۰ دی
  • +
  • خبرنامه شماره ۴٦ - پنجشنبه، ۲۳ دی
  • +
  • خبرنامه شماره ۴۵ - جمعه، ۱۷ دی
  • +
  • خبرنامه شماره ۴۴ - شنبه، ۱۱ دی
  • +
  • خبرنامه شماره ۴۳ - پنجشنبه، ۰۲ دی
  • +
  • خبرنامه شماره ۴۲ - پنجشنبه، ۱۸ آذر
  • +
  • خبرنامه شماره ۴۱ - جمعه، ۰۵ آذر
  • +
  • خبرنامه شماره ۴۰ - پنجشنبه، ۲۷ آبان
  • +
  • خبرنامه شماره ۳۹ - پنجشنبه، ۲۰ آبان
  • +
  • خبرنامه شماره ۳۸ - شنبه، ۱۵ آبان
  • +
  • خبرنامه شماره ۳۷ - شنبه، ۰۸ آبان
  • +
  • خبرنامه شماره ۳٦ - شنبه، ۲۴ مهر
  • +
  • خبرنامه شماره ۳۵ - شنبه، ۱۷ مهر
  • +
  • خبرنامه شماره ۳۳ - پنجشنبه، ۰۸ مهر
  • +
  • خبرنامه شماره ۳۲ - جمعه، ۰۲ مهر
  • +
  • خبرنامه شماره ۳۱ - جمعه، ۲٦ شهریور
  • +
  • خبرنامه شماره ۳۰ - جمعه، ۱۲ شهریور
  • +
  • خبرنامه شماره ۲۹ - پنجشنبه، ۰۴ شهریور
  • +
  • خبرنامه شماره ۲۸ - پنجشنبه، ۲۱ مرداد
  • +
  • خبرنامه شماره ۲۷ - پنجشنبه، ۱۴ مرداد
  • +
  • خبرنامه شماره ۲٦ - پنجشنبه، ۰۷ مرداد
  • +
  • خبرنامه شماره ۲۵ - پنجشنبه، ۳۱ تیر
  • +
  • خبرنامه شماره ۲۴ - پنجشنبه، ۲۴ تیر
  • +
  • خبرنامه شماره ۲۳ - پنجشنبه، ۱۷ تیر
  • +
  • خبرنامه شماره ۲۲ - پنجشنبه، ۱۰ تیر
  • +
  • خبرنامه شماره ۲۱ - پنجشنبه، ۰۳ تیر
  • +
  • خبرنامه شماره ۲۰ - پنجشنبه، ۲۷ خرداد
  • +
  • خبرنامه شماره ۱۹ - پنجشنبه، ۱۹ خرداد
  • +
  • خبرنامه شماره ۱۸ - پنجشنبه، ۱۳ خرداد
  • +
  • خبرنامه شماره ۱۷ - پنجشنبه، ۰۶ خرداد
  • +
  • خبرنامه شماره ۱۶ - پنجشنبه، ۳۰ اردیبهشت
  • +
  • خبرنامه شماره ۱۵ - پنجشنبه، ۲۳ اردیبهشت
  • +
  • خبرنامه شماره ۱۴ - پنجشنبه، ۱۶ اردیبهشت
  • +
  • خبرنامه شماره ۱۳ - جمعه، ۱۰ اردیبهشت
  • +
  • خبرنامه شماره ۱۲ - جمعه، ۳ اردیبهشت
  • +
  • خبرنامه شماره ۱۱ - پنجشنبه، ۱۹ فروردین
  • +
+

آرشیو خبرنامه‌های سال ۱۳۹۹

+
    +
  • خبرنامه شماره ۱۰ - جمعه، ۲۲ اسفند ۹۹ +
  • +
  • خبرنامه شماره ۹ - پنجشنبه، ۱۴ اسفند +
  • +
  • خبرنامه شماره ۸ - پنجشنبه، ۰۷ اسفند +
  • +
  • خبرنامه شماره ۷ - پنجشنبه، ۳۰ بهمن +
  • +
  • خبرنامه شماره ٦ - پنجشنبه، ۲۳ بهمن +
  • +
  • خبرنامه شماره ۵ - پنجشنبه، ۱٦ بهمن +
  • +
  • خبرنامه شماره ۴ - پنجشنبه، ۰۹ بهمن +
  • +
  • خبرنامه شماره ۳ - پنجشنبه ۲ بهمن
  • +
  • خبرنامه شماره ۲ - پنجشنبه، ۲۵ دی
  • +
  • خبرنامه شماره ۱ - پنجشنبه، ۱۸ دی
  • +
  • خبرنامه شماره ۰ - پنجشنبه، ۱۱ دی
  • +
+
+ +
+

قوانین مشارکت در محتوای خبرنامه

+

با درنظرگرفتنِ قوانینِ پایین، به‌هرتعداد می‌توانید محتوا پیشنهاد دهید.

+
    +
  • تاحدامکان عنوان و توضیحِ محتوا کوتاه باشد
  • +
  • تاحدامکان از عنوان و توضیحِ فارسی استفاده کنید
  • +
  • محتوا با هدفِ تبلیغات و بازاریابی پذیرفته نیست
  • +
  • محتوایی که فقط با IP ایران باز می‌شود پذیرفته نیست
  • +
  • لینکِ کوتاه پذیرفته نیست مگرآنکه مربوط به سرویس‌دهنده‌یِ خودِ محتوا باشد (مثلاً t.co یا vrgl.ir)
  • +
  • در هر شماره فقط یک محتوا مربوط به صفحه‌یِ شخصیِ شما (ویرگول، بلاگ، یوتیوب و ...) پذیرفته می‌شود
  • +
  • چنانچه محتوای پیشنهادی مربوط به مسائل روابط عمومی یک شرکت است، با صلاحدید مدیران و تنها از وب سایت رسمی آن شرکت امکان پیشنهاد محتوا وجود دارد و نظرات کارمندان در صفحات شخصی معیار پذیرش محتوای مرتبط با روابط عمومی شرکت‌ها نیست
  • +
  • صحت و سقمِ محتوا بر عهده‌یِ نویسنده‌یِ آن است
  • +
+
+

+ مشارکت و نظر درباره قوانین +

+
+
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..6f27bb6 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..33196eb Binary files /dev/null and b/screenshot.png differ diff --git a/src/BOTTOM_CONTENT_HTML.txt b/src/BOTTOM_CONTENT_HTML.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/BOTTOM_CONTENT_HTML.txt @@ -0,0 +1 @@ + diff --git a/src/BOTTOM_CONTENT_HTML_DARK.txt b/src/BOTTOM_CONTENT_HTML_DARK.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/BOTTOM_CONTENT_HTML_DARK.txt @@ -0,0 +1 @@ + diff --git a/src/EMAIL_TEMPLATES/newsletter.html b/src/EMAIL_TEMPLATES/newsletter.html new file mode 100644 index 0000000..f60469c --- /dev/null +++ b/src/EMAIL_TEMPLATES/newsletter.html @@ -0,0 +1,72 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ {{ newsletterNumber }} - {{ currentDate }} +

+ {% if topContent is not empty %} +
{{ topContent|raw }}
+ {% endif %} +
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره: + {% for contributor in contributors %} + {% if loop.last %} + {{ contributor }}. + {% else %} + {{ contributor }}، + {% endif %} + {% endfor %} شما نیز می‌توانید مشارکت کنید. +

+ {% if bottomContent is not empty %} +
+
{{ bottomContent|raw }}
+ {% endif %} +
+ + diff --git a/src/EMAIL_TEMPLATES/newsletter_dark.html b/src/EMAIL_TEMPLATES/newsletter_dark.html new file mode 100644 index 0000000..db13af2 --- /dev/null +++ b/src/EMAIL_TEMPLATES/newsletter_dark.html @@ -0,0 +1,74 @@ + + + + خبرنامه‌ ‌نرم‌افزاری SoftwareTalks + + + + + +
+

+ Softwaretalks Logo +

خبرنامهٔ Softwaretalks

+

+ شمارهٔ {{ newsletterNumber }} - {{ currentDate }} +

+ {% if topContent is not empty %} +
{{ topContent|raw }}
+ {% endif %} +
+ +
+

+ تأمین‌کنندگانِ محتوا در این شماره: + {% for contributor in contributors %} + {% if loop.last %} + {{ contributor }}. + {% else %} + {{ contributor }}، + {% endif %} + {% endfor %} شما نیز می‌توانید مشارکت کنید. +

+ {% if bottomContent is not empty %} +
+
{{ bottomContent|raw }}
+ {% endif %} +
+
+ + \ No newline at end of file diff --git a/src/TOP_CONTENT_HTML.txt b/src/TOP_CONTENT_HTML.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/TOP_CONTENT_HTML_DARK.txt b/src/TOP_CONTENT_HTML_DARK.txt new file mode 100644 index 0000000..8f81ca1 --- /dev/null +++ b/src/TOP_CONTENT_HTML_DARK.txt @@ -0,0 +1 @@ +

این شماره از خبرنامه به احترام عزیزانی که اعضای خانواده‌ی خود را بر اثر کرونا از دست داده‌اند، سیاه‌پوش شده‌است

diff --git a/src/composer.json b/src/composer.json new file mode 100644 index 0000000..f99f063 --- /dev/null +++ b/src/composer.json @@ -0,0 +1,16 @@ +{ + "require": { + "php": "^7.4 || ^8.0", + "knplabs/github-api": "^3.0", + "php-http/guzzle7-adapter": "^1.0", + "symfony/yaml": "^5.2", + "twig/twig": "^3.0", + "morilog/jalali": "^3.2", + "phpmailer/phpmailer": "^6.2", + "sendinblue/api-v3-sdk": "7.x.x", + "wyrihaximus/html-compress": "^4.1", + "amirbagh75/chalqoz": "^1.2", + "nesbot/carbon": "^2.43", + "mibe/feedwriter": "^1.1" + } +} diff --git a/src/composer.lock b/src/composer.lock new file mode 100644 index 0000000..e96ebfb --- /dev/null +++ b/src/composer.lock @@ -0,0 +1,5735 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "7b8cad76dfdffec9a95f124be8a06c5b", + "packages": [ + { + "name": "amirbagh75/chalqoz", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/ohmydevops/chalqoz.git", + "reference": "d3443e7f23f285b6cb12b5ec4729a1801c61b506" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ohmydevops/chalqoz/zipball/d3443e7f23f285b6cb12b5ec4729a1801c61b506", + "reference": "d3443e7f23f285b6cb12b5ec4729a1801c61b506", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amirbagh75\\Chalqoz\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Amirhossein Baghaie", + "email": "ohmydevops@gmail.com", + "homepage": "https://ohmydevops.ir", + "role": "Developer" + } + ], + "description": "Convert persian number to english number and vice versa", + "keywords": [ + "english-number", + "persian-number", + "php" + ], + "support": { + "issues": "https://github.com/ohmydevops/chalqoz/issues", + "source": "https://github.com/ohmydevops/chalqoz/tree/1.2.0" + }, + "time": "2021-11-01T07:30:18+00:00" + }, + { + "name": "beberlei/assert", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/beberlei/assert.git", + "reference": "5e721d7e937ca3ba2cdec1e1adf195f9e5188372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/beberlei/assert/zipball/5e721d7e937ca3ba2cdec1e1adf195f9e5188372", + "reference": "5e721d7e937ca3ba2cdec1e1adf195f9e5188372", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "*", + "phpstan/phpstan": "*", + "phpunit/phpunit": ">=6.0.0", + "yoast/phpunit-polyfills": "^0.1.0" + }, + "suggest": { + "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles" + }, + "type": "library", + "autoload": { + "psr-4": { + "Assert\\": "lib/Assert" + }, + "files": [ + "lib/Assert/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de", + "role": "Lead Developer" + }, + { + "name": "Richard Quadling", + "email": "rquadling@gmail.com", + "role": "Collaborator" + } + ], + "description": "Thin assertion library for input validation in business models.", + "keywords": [ + "assert", + "assertion", + "validation" + ], + "support": { + "issues": "https://github.com/beberlei/assert/issues", + "source": "https://github.com/beberlei/assert/tree/v3.3.1" + }, + "time": "2021-04-18T20:11:03+00:00" + }, + { + "name": "clue/stream-filter", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/clue/stream-filter.git", + "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/aeb7d8ea49c7963d3b581378955dbf5bc49aa320", + "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\StreamFilter\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "A simple and modern approach to stream filtering in PHP", + "homepage": "https://github.com/clue/php-stream-filter", + "keywords": [ + "bucket brigade", + "callback", + "filter", + "php_user_filter", + "stream", + "stream_filter_append", + "stream_filter_register" + ], + "support": { + "issues": "https://github.com/clue/stream-filter/issues", + "source": "https://github.com/clue/stream-filter/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2020-10-02T12:38:20+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7008573787b430c1c1f650e3722d9bba59967628" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", + "reference": "7008573787b430c1c1f650e3722d9bba59967628", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.4", + "guzzlehttp/psr7": "^1.7 || ^2.0", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "psr/log": "^1.1" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.3-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://github.com/alexeyshockov", + "type": "github" + }, + { + "url": "https://github.com/gmponos", + "type": "github" + } + ], + "time": "2021-03-23T11:33:13+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2021-10-06T17:43:30+00:00" + }, + { + "name": "jalle19/php-yui-compressor", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/Jalle19/php-yui-compressor.git", + "reference": "eb88c4f7fd8d7c8bd15a1970611d67cca11f71a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jalle19/php-yui-compressor/zipball/eb88c4f7fd8d7c8bd15a1970611d67cca11f71a0", + "reference": "eb88c4f7fd8d7c8bd15a1970611d67cca11f71a0", + "shasum": "" + }, + "require": { + "nervo/yuicompressor": "2.4.*", + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "YUI": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "A modern PHP wrapper for the YUI compressor", + "homepage": "https://github.com/Jalle19/php-yui-compressor", + "keywords": [ + "JS", + "css", + "minify", + "yui" + ], + "support": { + "issues": "https://github.com/Jalle19/php-yui-compressor/issues", + "source": "https://github.com/Jalle19/php-yui-compressor/tree/1.0.1" + }, + "time": "2014-06-03T12:02:11+00:00" + }, + { + "name": "knplabs/github-api", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/php-github-api.git", + "reference": "0442abd1361956e3a87e71683154c5c33c5a0dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/0442abd1361956e3a87e71683154c5c33c5a0dad", + "reference": "0442abd1361956e3a87e71683154c5c33c5a0dad", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.2.5 || ^8.0", + "php-http/cache-plugin": "^1.7.1", + "php-http/client-common": "^2.3", + "php-http/discovery": "^1.12", + "php-http/httplug": "^2.2", + "php-http/multipart-stream-builder": "^1.1.2", + "psr/cache": "^1.0", + "psr/http-client-implementation": "^1.0", + "psr/http-factory-implementation": "^1.0", + "psr/http-message": "^1.0", + "symfony/deprecation-contracts": "^2.2", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.2", + "guzzlehttp/psr7": "^1.7", + "http-interop/http-factory-guzzle": "^1.0", + "php-http/mock-client": "^1.4.1", + "phpstan/extension-installer": "^1.0.5", + "phpstan/phpstan": "^0.12.57", + "phpstan/phpstan-deprecation-rules": "^0.12.5", + "phpunit/phpunit": "^8.5 || ^9.4", + "symfony/cache": "^5.1.8", + "symfony/phpunit-bridge": "^5.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.20.x-dev", + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Github\\": "lib/Github/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs Team", + "homepage": "http://knplabs.com" + }, + { + "name": "Thibault Duplessis", + "email": "thibault.duplessis@gmail.com", + "homepage": "http://ornicar.github.com" + } + ], + "description": "GitHub API v3 client", + "homepage": "https://github.com/KnpLabs/php-github-api", + "keywords": [ + "api", + "gh", + "gist", + "github" + ], + "support": { + "issues": "https://github.com/KnpLabs/php-github-api/issues", + "source": "https://github.com/KnpLabs/php-github-api/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://github.com/acrobat", + "type": "github" + } + ], + "time": "2021-05-20T20:28:41+00:00" + }, + { + "name": "linkorb/jsmin-php", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/linkorb/jsmin-php.git", + "reference": "be85d87fc9c27730e7e9ced742b13010dafc1026" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/linkorb/jsmin-php/zipball/be85d87fc9c27730e7e9ced742b13010dafc1026", + "reference": "be85d87fc9c27730e7e9ced742b13010dafc1026", + "shasum": "" + }, + "require": { + "php": ">=5.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joost Faassen", + "email": "j.faassen@linkorb.com", + "role": "Packaging for Composer" + }, + { + "name": "Ryan Grove", + "email": "ryan@wonko.com", + "role": "PHP port" + }, + { + "name": "Adam Gofort", + "email": "aag@adamgoforth.com", + "role": "Updates to the PHP port" + }, + { + "name": "Douglas Crockford", + "email": "douglas@crockford.com" + } + ], + "description": "Unofficial package of jsmin-php", + "homepage": "http://www.github.com/linkorb/jsmin-php", + "keywords": [ + "javascript", + "jsmin", + "minify" + ], + "support": { + "issues": "https://github.com/linkorb/jsmin-php/issues", + "source": "https://github.com/linkorb/jsmin-php/tree/1.0.0" + }, + "time": "2013-03-15T13:16:35+00:00" + }, + { + "name": "matthiasmullie/minify", + "version": "1.3.66", + "source": { + "type": "git", + "url": "https://github.com/matthiasmullie/minify.git", + "reference": "45fd3b0f1dfa2c965857c6d4a470bea52adc31a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/45fd3b0f1dfa2c965857c6d4a470bea52adc31a6", + "reference": "45fd3b0f1dfa2c965857c6d4a470bea52adc31a6", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "matthiasmullie/path-converter": "~1.1", + "php": ">=5.3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.0", + "matthiasmullie/scrapbook": "dev-master", + "phpunit/phpunit": ">=4.8" + }, + "suggest": { + "psr/cache-implementation": "Cache implementation to use with Minify::cache" + }, + "bin": [ + "bin/minifycss", + "bin/minifyjs" + ], + "type": "library", + "autoload": { + "psr-4": { + "MatthiasMullie\\Minify\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Mullie", + "email": "minify@mullie.eu", + "homepage": "http://www.mullie.eu", + "role": "Developer" + } + ], + "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.", + "homepage": "http://www.minifier.org", + "keywords": [ + "JS", + "css", + "javascript", + "minifier", + "minify" + ], + "support": { + "issues": "https://github.com/matthiasmullie/minify/issues", + "source": "https://github.com/matthiasmullie/minify/tree/1.3.66" + }, + "funding": [ + { + "url": "https://github.com/[user1", + "type": "github" + }, + { + "url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.", + "type": "github" + }, + { + "url": "https://github.com/user2", + "type": "github" + } + ], + "time": "2021-01-06T15:18:10+00:00" + }, + { + "name": "matthiasmullie/path-converter", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/matthiasmullie/path-converter.git", + "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9", + "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "MatthiasMullie\\PathConverter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Mullie", + "email": "pathconverter@mullie.eu", + "homepage": "http://www.mullie.eu", + "role": "Developer" + } + ], + "description": "Relative path converter", + "homepage": "http://github.com/matthiasmullie/path-converter", + "keywords": [ + "converter", + "path", + "paths", + "relative" + ], + "support": { + "issues": "https://github.com/matthiasmullie/path-converter/issues", + "source": "https://github.com/matthiasmullie/path-converter/tree/1.1.3" + }, + "time": "2019-02-05T23:41:09+00:00" + }, + { + "name": "meenie/javascript-packer", + "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/meenie/javascript-packer.git", + "reference": "dcab0159ae1ed9d7535c034fb8afe1e4c3495d22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/meenie/javascript-packer/zipball/dcab0159ae1ed9d7535c034fb8afe1e4c3495d22", + "reference": "dcab0159ae1ed9d7535c034fb8afe1e4c3495d22", + "shasum": "" + }, + "type": "library", + "autoload": { + "files": [ + "class.JavaScriptPacker.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL 2.1" + ], + "authors": [ + { + "name": "Nicolas Martin", + "role": "Developer" + } + ], + "description": "Composer hosted mirror of the PHP Version of Dean Edwards' JavaScript Packer", + "homepage": "http://joliclic.free.fr/php/javascript-packer/en/", + "keywords": [ + "javascript packer" + ], + "support": { + "issues": "https://github.com/meenie/javascript-packer/issues", + "source": "https://github.com/meenie/javascript-packer/tree/1.1" + }, + "time": "2013-03-25T21:54:33+00:00" + }, + { + "name": "mibe/feedwriter", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/mibe/FeedWriter.git", + "reference": "f4cc748ad8700e36663f08cfeebe7fd39b00eea2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mibe/FeedWriter/zipball/f4cc748ad8700e36663f08cfeebe7fd39b00eea2", + "reference": "f4cc748ad8700e36663f08cfeebe7fd39b00eea2", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "FeedWriter\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "Michael Bemmerl", + "email": "mail@mx-server.de" + }, + { + "name": "Phil Freo" + }, + { + "name": "Paul Ferrett" + }, + { + "name": "Brennen Bearnes" + }, + { + "name": "Michael Robinson", + "email": "mike@pagesofinterest.net" + }, + { + "name": "Baptiste Fontaine" + }, + { + "name": "Kristián Valentín" + }, + { + "name": "Brandtley McMinn" + }, + { + "name": "Julian Bogdani" + }, + { + "name": "Anis Uddin Ahmad", + "email": "anis.programmer@gmail.com" + }, + { + "name": "Cedric Gampert" + }, + { + "name": "Yamek" + }, + { + "name": "thielj" + }, + { + "name": "Pavel Khakhlou" + }, + { + "name": "Daniel" + }, + { + "name": "Tino Goratsch" + } + ], + "description": "Generate feeds in either RSS 1.0, RSS 2.0 or ATOM formats", + "homepage": "https://github.com/mibe/FeedWriter", + "keywords": [ + "RSS 1.0", + "atom", + "feed", + "rss", + "rss 2.0", + "rss2" + ], + "support": { + "issues": "https://github.com/mibe/FeedWriter/issues", + "source": "https://github.com/mibe/FeedWriter/tree/master" + }, + "time": "2016-11-19T20:47:44+00:00" + }, + { + "name": "morilog/jalali", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/morilog/jalali.git", + "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/morilog/jalali/zipball/7ea78b84ce3b5546b01217febb2fba4915dac5e5", + "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5", + "shasum": "" + }, + "require": { + "beberlei/assert": "3.*", + "nesbot/carbon": "^1.21 || ^2.0", + "php": "^7.0 | ^7.1 | ^7.2 | ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Morilog\\Jalali\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milad Rey", + "email": "miladr@gmail.com" + }, + { + "name": "Morteza Parvini", + "email": "m.parvini@outlook.com" + } + ], + "description": "This Package helps developers to easily work with Jalali (Shamsi or Iranian) dates in PHP applications, based on Jalali (Shamsi) DateTime class.", + "keywords": [ + "Jalali", + "date", + "datetime", + "laravel", + "morilog" + ], + "support": { + "issues": "https://github.com/morilog/jalali/issues", + "source": "https://github.com/morilog/jalali/tree/v3.2.0" + }, + "time": "2020-12-01T21:26:31+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "nervo/yuicompressor", + "version": "2.4.8", + "source": { + "type": "git", + "url": "https://github.com/nervo/yuicompressor.git", + "reference": "e6e3b215c3998cf6092613c002ae533ae75d7ada" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nervo/yuicompressor/zipball/e6e3b215c3998cf6092613c002ae533ae75d7ada", + "reference": "e6e3b215c3998cf6092613c002ae533ae75d7ada", + "shasum": "" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "description": "YUI Compressor is an open source tool that supports the compression of both JavaScript and CSS files. The JavaScript compression removes comments and white-spaces as well as obfuscates local variables using the smallest possible variable name. CSS compression is done using a regular-expression-based CSS minifier.", + "homepage": "https://github.com/yui/yuicompressor", + "keywords": [ + "java", + "yui" + ], + "support": { + "issues": "https://github.com/nervo/yuicompressor/issues", + "source": "https://github.com/nervo/yuicompressor/tree/master" + }, + "time": "2013-09-13T10:26:14+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.53.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "f4655858a784988f880c1b8c7feabbf02dfdf045" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f4655858a784988f880c1b8c7feabbf02dfdf045", + "reference": "f4655858a784988f880c1b8c7feabbf02dfdf045", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" + }, + "require-dev": { + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.54", + "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2021-09-06T09:29:23+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.13.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "50953a2691a922aa1769461637869a0a2faa3f53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53", + "reference": "50953a2691a922aa1769461637869a0a2faa3f53", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.0" + }, + "time": "2021-09-20T12:20:58+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "bae7c545bef187884426f042434e561ab1ddb182" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" + }, + { + "name": "php-http/cache-plugin", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/cache-plugin.git", + "reference": "922409f10541b0d581b8ffe5cd810f4efc9e9e32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/922409f10541b0d581b8ffe5cd810f4efc9e9e32", + "reference": "922409f10541b0d581b8ffe5cd810f4efc9e9e32", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/client-common": "^1.9 || ^2.0", + "php-http/message-factory": "^1.0", + "psr/cache": "^1.0 || ^2.0", + "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "require-dev": { + "phpspec/phpspec": "^5.1 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\Common\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "PSR-6 Cache plugin for HTTPlug", + "homepage": "http://httplug.io", + "keywords": [ + "cache", + "http", + "httplug", + "plugin" + ], + "support": { + "issues": "https://github.com/php-http/cache-plugin/issues", + "source": "https://github.com/php-http/cache-plugin/tree/1.7.2" + }, + "time": "2021-04-14T06:06:08+00:00" + }, + { + "name": "php-http/client-common", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/client-common.git", + "reference": "29e0c60d982f04017069483e832b92074d0a90b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/client-common/zipball/29e0c60d982f04017069483e832b92074d0a90b2", + "reference": "29e0c60d982f04017069483e832b92074d0a90b2", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/httplug": "^2.0", + "php-http/message": "^1.6", + "php-http/message-factory": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "symfony/options-resolver": "^2.6 || ^3.4.20 || ~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "doctrine/instantiator": "^1.1", + "guzzlehttp/psr7": "^1.4", + "nyholm/psr7": "^1.2", + "phpspec/phpspec": "^5.1 || ^6.0", + "phpspec/prophecy": "^1.10.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + }, + "suggest": { + "ext-json": "To detect JSON responses with the ContentTypePlugin", + "ext-libxml": "To detect XML responses with the ContentTypePlugin", + "php-http/cache-plugin": "PSR-6 Cache plugin", + "php-http/logger-plugin": "PSR-3 Logger plugin", + "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\Common\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Common HTTP Client implementations and tools for HTTPlug", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "common", + "http", + "httplug" + ], + "support": { + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.4.0" + }, + "time": "2021-07-05T08:19:25+00:00" + }, + { + "name": "php-http/discovery", + "version": "1.14.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "de90ab2b41d7d61609f504e031339776bc8c7223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/de90ab2b41d7d61609f504e031339776bc8c7223", + "reference": "de90ab2b41d7d61609f504e031339776bc8c7223", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0" + }, + "require-dev": { + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1", + "puli/composer-plugin": "1.0.0-beta10" + }, + "suggest": { + "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds installed HTTPlug implementations and PSR-7 message factories", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.14.1" + }, + "time": "2021-09-18T07:57:46+00:00" + }, + { + "name": "php-http/guzzle7-adapter", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/guzzle7-adapter.git", + "reference": "fb075a71dbfa4847cf0c2938c4e5a9c478ef8b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/guzzle7-adapter/zipball/fb075a71dbfa4847cf0c2938c4e5a9c478ef8b01", + "reference": "fb075a71dbfa4847cf0c2938c4e5a9c478ef8b01", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^7.0", + "php": "^7.2 | ^8.0", + "php-http/httplug": "^2.0", + "psr/http-client": "^1.0" + }, + "provide": { + "php-http/async-client-implementation": "1.0", + "php-http/client-implementation": "1.0", + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Adapter\\Guzzle7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + } + ], + "description": "Guzzle 7 HTTP Adapter", + "homepage": "http://httplug.io", + "keywords": [ + "Guzzle", + "http" + ], + "support": { + "issues": "https://github.com/php-http/guzzle7-adapter/issues", + "source": "https://github.com/php-http/guzzle7-adapter/tree/1.0.0" + }, + "time": "2021-03-09T07:35:15+00:00" + }, + { + "name": "php-http/httplug", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9", + "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.1", + "phpspec/phpspec": "^5.1 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "support": { + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/master" + }, + "time": "2020-07-13T15:43:23+00:00" + }, + { + "name": "php-http/message", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/message.git", + "reference": "39eb7548be982a81085fe5a6e2a44268cd586291" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message/zipball/39eb7548be982a81085fe5a6e2a44268cd586291", + "reference": "39eb7548be982a81085fe5a6e2a44268cd586291", + "shasum": "" + }, + "require": { + "clue/stream-filter": "^1.5", + "php": "^7.1 || ^8.0", + "php-http/message-factory": "^1.0.2", + "psr/http-message": "^1.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.6", + "ext-zlib": "*", + "guzzlehttp/psr7": "^1.0", + "laminas/laminas-diactoros": "^2.0", + "phpspec/phpspec": "^5.1 || ^6.3", + "slim/slim": "^3.0" + }, + "suggest": { + "ext-zlib": "Used with compressor/decompressor streams", + "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", + "laminas/laminas-diactoros": "Used with Diactoros Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + }, + "files": [ + "src/filters.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", + "keywords": [ + "http", + "message", + "psr-7" + ], + "support": { + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.12.0" + }, + "time": "2021-08-29T09:13:12+00:00" + }, + { + "name": "php-http/message-factory", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message-factory.git", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "stream", + "uri" + ], + "support": { + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" + }, + "time": "2015-12-19T14:08:53+00:00" + }, + { + "name": "php-http/multipart-stream-builder", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/multipart-stream-builder.git", + "reference": "11c1d31f72e01c738bbce9e27649a7cca829c30e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/11c1d31f72e01c738bbce9e27649a7cca829c30e", + "reference": "11c1d31f72e01c738bbce9e27649a7cca829c30e", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/discovery": "^1.7", + "php-http/message-factory": "^1.0.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "nyholm/psr7": "^1.0", + "php-http/message": "^1.5", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\MultipartStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + } + ], + "description": "A builder class that help you create a multipart stream", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "multipart stream", + "stream" + ], + "support": { + "issues": "https://github.com/php-http/multipart-stream-builder/issues", + "source": "https://github.com/php-http/multipart-stream-builder/tree/1.2.0" + }, + "time": "2021-05-21T08:32:01+00:00" + }, + { + "name": "php-http/promise", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", + "phpspec/phpspec": "^5.1.2 || ^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.1.0" + }, + "time": "2020-07-07T09:29:14+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + }, + "time": "2021-10-02T14:08:47+00:00" + }, + { + "name": "phpmailer/phpmailer", + "version": "v6.5.1", + "source": { + "type": "git", + "url": "https://github.com/PHPMailer/PHPMailer.git", + "reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/dd803df5ad7492e1b40637f7ebd258fee5ca7355", + "reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "php": ">=5.5.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.2", + "php-parallel-lint/php-console-highlighter": "^0.5.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcompatibility/php-compatibility": "^9.3.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.6.0", + "yoast/phpunit-polyfills": "^1.0.0" + }, + "suggest": { + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", + "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", + "league/oauth2-google": "Needed for Google XOAUTH2 authentication", + "psr/log": "For optional PSR-3 debug logging", + "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", + "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPMailer\\PHPMailer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-only" + ], + "authors": [ + { + "name": "Marcus Bointon", + "email": "phpmailer@synchromedia.co.uk" + }, + { + "name": "Jim Jagielski", + "email": "jimjag@gmail.com" + }, + { + "name": "Andy Prevost", + "email": "codeworxtech@users.sourceforge.net" + }, + { + "name": "Brent R. Matzelle" + } + ], + "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "support": { + "issues": "https://github.com/PHPMailer/PHPMailer/issues", + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.1" + }, + "funding": [ + { + "url": "https://github.com/Synchro", + "type": "github" + } + ], + "time": "2021-08-18T09:14:16+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + }, + "time": "2021-09-10T09:02:12+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", + "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-10-30T08:01:38+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-09-25T07:38:51+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, + "time": "2020-06-29T06:28:15+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "sendinblue/api-v3-sdk", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/sendinblue/APIv3-php-library.git", + "reference": "c169d8ceb74b211199fb11586389fb9aa2c37790" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sendinblue/APIv3-php-library/zipball/c169d8ceb74b211199fb11586389fb9aa2c37790", + "reference": "c169d8ceb74b211199fb11586389fb9aa2c37790", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/guzzle": "<=7.3.0", + "php": ">=5.6" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~1.12", + "phpunit/phpunit": "^4.8", + "squizlabs/php_codesniffer": "~2.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x.x-dev" + } + }, + "autoload": { + "psr-4": { + "SendinBlue\\Client\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "SendinBlue Developers", + "email": "contact@sendinblue.com", + "homepage": "https://www.sendinblue.com/" + } + ], + "description": "Official SendinBlue provided RESTFul API V3 php library", + "homepage": "https://github.com/sendinblue/APIv3-php-library", + "keywords": [ + "api", + "php", + "sdk", + "sendinblue", + "swagger" + ], + "support": { + "issues": "https://github.com/sendinblue/APIv3-php-library/issues", + "source": "https://github.com/sendinblue/APIv3-php-library/tree/v7.4.4" + }, + "time": "2021-08-25T08:49:42+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", + "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-21T12:38:00+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v5.3.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4b78e55b179003a42523a362cc0e8327f7a69b5e", + "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v5.3.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-08-04T21:20:46+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T12:26:48+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-28T13:41:28+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.3.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/6ef197aea2ac8b9cd63e0da7522b3771714035aa", + "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v5.3.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-10T06:43:24+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", + "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.3.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-29T06:20:01+00:00" + }, + { + "name": "tedivm/jshrink", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/tedious/JShrink.git", + "reference": "0513ba1407b1f235518a939455855e6952a48bbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tedious/JShrink/zipball/0513ba1407b1f235518a939455855e6952a48bbc", + "reference": "0513ba1407b1f235518a939455855e6952a48bbc", + "shasum": "" + }, + "require": { + "php": "^5.6|^7.0|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.8", + "php-coveralls/php-coveralls": "^1.1.0", + "phpunit/phpunit": "^6" + }, + "type": "library", + "autoload": { + "psr-0": { + "JShrink": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Robert Hafner", + "email": "tedivm@tedivm.com" + } + ], + "description": "Javascript Minifier built in PHP", + "homepage": "http://github.com/tedious/JShrink", + "keywords": [ + "javascript", + "minifier" + ], + "support": { + "issues": "https://github.com/tedious/JShrink/issues", + "source": "https://github.com/tedious/JShrink/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/tedivm/jshrink", + "type": "tidelift" + } + ], + "time": "2020-11-30T18:10:21+00:00" + }, + { + "name": "thecodingmachine/safe", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "phpstan/phpstan": "^0.12", + "squizlabs/php_codesniffer": "^3.2", + "thecodingmachine/phpstan-strict-rules": "^0.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1-dev" + } + }, + "autoload": { + "psr-4": { + "Safe\\": [ + "lib/", + "deprecated/", + "generated/" + ] + }, + "files": [ + "deprecated/apc.php", + "deprecated/libevent.php", + "deprecated/mssql.php", + "deprecated/stats.php", + "lib/special_cases.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/ingres-ii.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/msql.php", + "generated/mysql.php", + "generated/mysqli.php", + "generated/mysqlndMs.php", + "generated/mysqlndQc.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/password.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pdf.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/simplexml.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v1.3.3" + }, + "time": "2020-10-28T17:51:34+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "tubalmartin/cssmin", + "version": "v4.1.1", + "source": { + "type": "git", + "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git", + "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/3cbf557f4079d83a06f9c3ff9b957c022d7805cf", + "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "cogpowered/finediff": "0.3.*", + "phpunit/phpunit": "4.8.*" + }, + "bin": [ + "cssmin" + ], + "type": "library", + "autoload": { + "psr-4": { + "tubalmartin\\CssMin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Túbal Martín", + "homepage": "http://tubalmartin.me/" + } + ], + "description": "A PHP port of the YUI CSS compressor", + "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port", + "keywords": [ + "compress", + "compressor", + "css", + "cssmin", + "minify", + "yui" + ], + "support": { + "issues": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues", + "source": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port" + }, + "time": "2018-01-15T15:26:51+00:00" + }, + { + "name": "twig/twig", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "a27fa056df8a6384316288ca8b0fa3a35fdeb569" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a27fa056df8a6384316288ca8b0fa3a35fdeb569", + "reference": "a27fa056df8a6384316288ca8b0fa3a35fdeb569", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-09-17T08:44:23+00:00" + }, + { + "name": "voku/html-min", + "version": "4.4.8", + "source": { + "type": "git", + "url": "https://github.com/voku/HtmlMin.git", + "reference": "4f700584abd70b308b7d06b8e4cfcc31711faaf9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/HtmlMin/zipball/4f700584abd70b308b7d06b8e4cfcc31711faaf9", + "reference": "4f700584abd70b308b7d06b8e4cfcc31711faaf9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=7.0.0", + "voku/simple_html_dom": "~4.7.23" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "HTML Compressor and Minifier", + "homepage": "https://github.com/voku/HtmlMin", + "keywords": [ + "compress", + "compression", + "compressor", + "html", + "minifier" + ], + "support": { + "issues": "https://github.com/voku/HtmlMin/issues", + "source": "https://github.com/voku/HtmlMin/tree/master" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + } + ], + "time": "2020-08-11T22:13:23+00:00" + }, + { + "name": "voku/simple_html_dom", + "version": "4.7.29", + "source": { + "type": "git", + "url": "https://github.com/voku/simple_html_dom.git", + "reference": "079067c704b714b7c2813971297bb340307813e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/simple_html_dom/zipball/079067c704b714b7c2813971297bb340307813e7", + "reference": "079067c704b714b7c2813971297bb340307813e7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-simplexml": "*", + "php": ">=7.0.0", + "symfony/css-selector": "~3.0 || ~4.0 || ~5.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "voku/portable-utf8": "If you need e.g. UTF-8 fixed output." + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\helper\\": "src/voku/helper/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "dimabdc", + "email": "support@titor.ru", + "homepage": "http://github.com/dimabdc", + "role": "Developer" + }, + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/", + "role": "Developer" + } + ], + "description": "Simple HTML DOM package.", + "homepage": "http://simplehtmldom.sourceforge.net/", + "keywords": [ + "HTML Parser", + "dom", + "php dom" + ], + "support": { + "issues": "https://github.com/voku/simple_html_dom/issues", + "source": "https://github.com/voku/simple_html_dom/tree/4.7.29" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/simple_html_dom", + "type": "tidelift" + } + ], + "time": "2021-03-29T14:56:56+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + }, + { + "name": "websharks/css-minifier", + "version": "150820", + "source": { + "type": "git", + "url": "https://github.com/websharks/css-minifier.git", + "reference": "da1d0254c41e1f59c7337aa444d743e6056046ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/websharks/css-minifier/zipball/da1d0254c41e1f59c7337aa444d743e6056046ff", + "reference": "da1d0254c41e1f59c7337aa444d743e6056046ff", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "WebSharks\\CssMinifier\\": "src/includes/classes" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0+" + ], + "authors": [ + { + "name": "websharks", + "homepage": "http://websharks-inc.com/", + "role": "company" + }, + { + "name": "jaswsinc", + "homepage": "http://jaswsinc.com/", + "role": "developer" + }, + { + "name": "raamdev", + "homepage": "http://raam.org/", + "role": "developer" + } + ], + "description": "Compresses CSS.", + "homepage": "https://github.com/websharks/css-minifier", + "keywords": [ + "compressor", + "css", + "websharks" + ], + "support": { + "issues": "https://github.com/websharks/css-minifier/issues", + "source": "https://github.com/websharks/css-minifier" + }, + "time": "2015-08-21T03:19:25+00:00" + }, + { + "name": "wyrihaximus/compress", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/WyriHaximus/php-compress.git", + "reference": "66fd05aec43a6367bfa9b325722fca3f83e9d471" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WyriHaximus/php-compress/zipball/66fd05aec43a6367bfa9b325722fca3f83e9d471", + "reference": "66fd05aec43a6367bfa9b325722fca3f83e9d471", + "shasum": "" + }, + "require": { + "php": "^8 || ^7.4", + "phpunit/phpunit": "^9.4" + }, + "require-dev": { + "wyrihaximus/test-utilities": "^3.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "WyriHaximus\\Compress\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com", + "homepage": "http://wyrihaximus.net/" + } + ], + "description": "Compress marker interface and utility compressors", + "keywords": [ + "compress" + ], + "support": { + "issues": "https://github.com/WyriHaximus/php-compress/issues", + "source": "https://github.com/WyriHaximus/php-compress/tree/1.2.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2020-11-29T15:12:24+00:00" + }, + { + "name": "wyrihaximus/constants", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/WyriHaximus/php-constants.git", + "reference": "32ceffdd881593c7fa24d8fcbf9deb58687484cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WyriHaximus/php-constants/zipball/32ceffdd881593c7fa24d8fcbf9deb58687484cb", + "reference": "32ceffdd881593c7fa24d8fcbf9deb58687484cb", + "shasum": "" + }, + "require": { + "php": "^8 || ^7 || ^5.3" + }, + "type": "library", + "autoload": { + "files": [ + "src/Boolean/constants_include.php", + "src/ComposerAutoloader/constants_include.php", + "src/HTTPStatusCodes/constants_include.php", + "src/Numeric/constants_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com", + "homepage": "https://www.wyrihaximus.net/" + } + ], + "description": "Collection of constants for PHP", + "support": { + "issues": "https://github.com/WyriHaximus/php-constants/issues", + "source": "https://github.com/WyriHaximus/php-constants/tree/1.6.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2020-11-28T12:04:43+00:00" + }, + { + "name": "wyrihaximus/css-compress", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/WyriHaximus/php-css-compress.git", + "reference": "6391e1750524d2b9081c4d579975ccaa6d2f4bbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WyriHaximus/php-css-compress/zipball/6391e1750524d2b9081c4d579975ccaa6d2f4bbb", + "reference": "6391e1750524d2b9081c4d579975ccaa6d2f4bbb", + "shasum": "" + }, + "require": { + "jalle19/php-yui-compressor": "^1.0", + "matthiasmullie/minify": "^1.3", + "php": "^8 || ^7.4", + "thecodingmachine/safe": "^1.0 || ^0.1", + "tubalmartin/cssmin": "^4.1", + "websharks/css-minifier": "150820", + "wyrihaximus/compress": "^1.1", + "wyrihaximus/constants": "^1.6" + }, + "require-dev": { + "wyrihaximus/test-utilities": "^3.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "WyriHaximus\\CssCompress\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com", + "homepage": "http://wyrihaximus.net/" + } + ], + "description": "Compress/minify your CSS", + "keywords": [ + "compress", + "html" + ], + "support": { + "issues": "https://github.com/WyriHaximus/php-css-compress/issues", + "source": "https://github.com/WyriHaximus/php-css-compress/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2020-11-29T16:58:59+00:00" + }, + { + "name": "wyrihaximus/html-compress", + "version": "4.1.2", + "source": { + "type": "git", + "url": "https://github.com/WyriHaximus/HtmlCompress.git", + "reference": "2db09023e66ffdf20d6f9231a85cc0cbc950035d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WyriHaximus/HtmlCompress/zipball/2db09023e66ffdf20d6f9231a85cc0cbc950035d", + "reference": "2db09023e66ffdf20d6f9231a85cc0cbc950035d", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "thecodingmachine/safe": "^1.1", + "voku/html-min": "^4.4.8", + "voku/simple_html_dom": "^4.7.17", + "wyrihaximus/compress": "^1.1", + "wyrihaximus/constants": "^1.5", + "wyrihaximus/css-compress": "^1.0.1", + "wyrihaximus/js-compress": "^2.0.1 || ^3.0.0 || ^4.0.0" + }, + "conflict": { + "voku/simple_html_dom": "<4.7.28" + }, + "require-dev": { + "wyrihaximus/test-utilities": "^3.3.1" + }, + "type": "library", + "extra": { + "unused": [ + "slevomat/coding-standard" + ] + }, + "autoload": { + "psr-4": { + "WyriHaximus\\HtmlCompress\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com", + "homepage": "http://wyrihaximus.net/" + } + ], + "description": "Compress/minify your HTML", + "keywords": [ + "compress", + "html" + ], + "support": { + "issues": "https://github.com/WyriHaximus/HtmlCompress/issues", + "source": "https://github.com/WyriHaximus/HtmlCompress/tree/4.1.2" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2020-12-19T22:01:32+00:00" + }, + { + "name": "wyrihaximus/js-compress", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/WyriHaximus/php-js-compress.git", + "reference": "7adb73778942480e0fd469a3634da63f3b1770e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WyriHaximus/php-js-compress/zipball/7adb73778942480e0fd469a3634da63f3b1770e9", + "reference": "7adb73778942480e0fd469a3634da63f3b1770e9", + "shasum": "" + }, + "require": { + "jalle19/php-yui-compressor": "^1.0", + "linkorb/jsmin-php": "1.0.0", + "matthiasmullie/minify": "^1.3", + "meenie/javascript-packer": "1.1", + "php": "^7.4 || ^8.0", + "tedivm/jshrink": "^1.3", + "wyrihaximus/compress": "^1.2", + "wyrihaximus/constants": "^1.6" + }, + "require-dev": { + "wyrihaximus/test-utilities": "^3.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "WyriHaximus\\JsCompress\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com", + "homepage": "http://wyrihaximus.net/" + } + ], + "description": "Compress/minify your JavaScript", + "keywords": [ + "compress", + "html" + ], + "support": { + "issues": "https://github.com/WyriHaximus/php-js-compress/issues", + "source": "https://github.com/WyriHaximus/php-js-compress/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2020-12-19T19:56:03+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^7.4 || ^8.0" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/src/configs.php b/src/configs.php new file mode 100644 index 0000000..8b3a24e --- /dev/null +++ b/src/configs.php @@ -0,0 +1,37 @@ + 'softwaretalks', + 'REPOSITORY_NAME' => 'newsletter', + 'LABELS' => [ + 'content', + 'current-week', + 'verified' + ], + 'STATE' => 'open', + 'EMAIL_TEMPLATE_DIR' => __DIR__ . '/EMAIL_TEMPLATES/', + 'EMAIL_TEMPLATE_FILE_NAME' => 'newsletter.html', + 'EMAIL_TEMPLATE_DARK_FILE_NAME' => 'newsletter_dark.html', + 'PAKAT_API_KEY' => getenv('PAKAT_API_KEY', true), + 'PAKAT_SMTP_HOST' => 'smtp-relay.sendinblue.com', + 'PAKAT_SMTP_PORT' => '587', + 'PAKAT_EMAIL_NAME' => 'Softwaretalks newsletter', + 'PAKAT_EMAIL_ADDRESS' => 'newsletter@softwaretalks.ir', + 'PAKAT_SMTP_DEBUG' => false, + 'NEWSLETTER_TEST_LIST_ID' => 8, + 'NEWSLETTER_LIST_ID' => 2, + 'SEND_ENV' => getenv('SEND_ENV', true), + 'TOP_CONTENT_HTML' => getenv('TOP_CONTENT_HTML', true), + 'TOP_CONTENT_HTML_DARK' => getenv('TOP_CONTENT_HTML_DARK', true), + 'BOTTOM_CONTENT_HTML' => getenv('BOTTOM_CONTENT_HTML', true), + 'BOTTOM_CONTENT_HTML_DARK' => getenv('BOTTOM_CONTENT_HTML_DARK', true), + 'IS_DARK' => getenv('IS_DARK', true) +]; diff --git a/src/contributors_statistics.php b/src/contributors_statistics.php new file mode 100644 index 0000000..3a2f525 --- /dev/null +++ b/src/contributors_statistics.php @@ -0,0 +1,52 @@ +api('issue'); +$parameters = ['softwaretalks', 'newsletter', [ + 'labels' => 'content,verified', + 'state' => 'closed' +]]; + +$issuesList = $paginator->fetchAll($issuesClient, 'all' ,$parameters); + +$contributorsTemp = []; +foreach($issuesList as $issue) { + array_push($contributorsTemp, [ + 'githubURL' => $issue['user']['html_url'], + 'username' => $issue['user']['login'], + 'avatarURL' => $issue['user']['avatar_url'] . '&s=50', + 'postsCount' => 0 + ]); +} +$contributors = array_values(array_unique($contributorsTemp, SORT_REGULAR)); + +// Calculate the number of posts per contributor +foreach($issuesList as $issue) { + $contributorKey = array_search($issue['user']['login'], array_column($contributors, 'username'), true); + $contributors[$contributorKey]['postsCount']++; +} + +// This is some shit code for remove my test issues from my real issues. sorry god. +$ohmydevopsKey = array_search('ohmydevops', array_column($contributors, 'username'), true); +$contributors[$ohmydevopsKey]['postsCount'] -= 6; + +// Sort contributors by postsCount +usort($contributors, fn($a,$b) => ($a['postsCount'] <= $b['postsCount']) ? 1 : -1); + +// print_r($contributors); +// generate README.md contents for copy paste +foreach ($contributors as $contributor) { + $username = $contributor['username']; + $githubURL = $contributor['githubURL']; + $avatarURL = $contributor['avatarURL']; + $postsCount = $contributor['postsCount']; + + echo "$username " . PHP_EOL; +} diff --git a/src/modules/archive.php b/src/modules/archive.php new file mode 100644 index 0000000..23de437 --- /dev/null +++ b/src/modules/archive.php @@ -0,0 +1,25 @@ +format('%A، %d %B')); + printf(PHP_EOL . '** Please add below link to the index.html**' . PHP_EOL); + printf(PHP_EOL . "
  • خبرنامه شماره $newsletterNumberFaChar - $todayDateWithoutYear
  • " . PHP_EOL); +} + +function generateArchiveName($newsletterNumber) +{ + return 'archives/num' . $newsletterNumber . '.html'; +} \ No newline at end of file diff --git a/src/modules/campaign.php b/src/modules/campaign.php new file mode 100644 index 0000000..3394aba --- /dev/null +++ b/src/modules/campaign.php @@ -0,0 +1,63 @@ + 'SoftwareTalks #'. $newsletterNumber . ' - ' . $campaignNamePostFix, + 'subject' => 'خبرنامه شماره ' . Chalqoz::convertEnglishNumbersToPersian($newsletterNumber), + 'htmlContent' => $minifiedHtmlTemplate, + 'sender' => new CreateEmailCampaignSender([ + 'email' => $pakatEmailAddress, + 'name' => $pakatEmailName + ]), + 'recipients' => new CreateEmailCampaignRecipients([ + 'listIds' => [$listID], + ]), + ]); + + try { + $result = $campaignAPI->createEmailCampaign($emailCampaign); + $campaignID = $result['id']; + } catch (Exception $exception) { + die("Exception when calling campaignAPI->createEmailCampaign: {$exception->getMessage()}" . PHP_EOL); + } + + return $campaignID; +} + +function sendCampaignByID(string $campaignID, Configuration $pakatConfig, GuzzleHttp\Client $httpClient) +{ + $campaignAPI = new EmailCampaignsApi( + $httpClient, + $pakatConfig + ); + + try { + $campaignAPI->sendEmailCampaignNow($campaignID); + } catch (Exception $exception) { + die("Exception when calling campaignAPI->sendEmailCampaignNow: {$exception->getMessage()}" . PHP_EOL); + } +} \ No newline at end of file diff --git a/src/modules/counter.php b/src/modules/counter.php new file mode 100644 index 0000000..0de6af0 --- /dev/null +++ b/src/modules/counter.php @@ -0,0 +1,14 @@ +createFromDate(2021, 01, 02); + // minus 23, because we did not send the newsletter for 23 weeks + $newsletterNumber = (int)(($newsletterStartDate->diffInWeeks($now)) + 1) - 23; + + return $newsletterNumber; +} diff --git a/src/modules/feed.php b/src/modules/feed.php new file mode 100644 index 0000000..19b7b51 --- /dev/null +++ b/src/modules/feed.php @@ -0,0 +1,84 @@ +. + */ + + +date_default_timezone_set('UTC'); + +require_once __DIR__ . '../../vendor/autoload.php'; +use Morilog\Jalali\Jalalian; +use FeedWriter\ATOM; +use Amirbagh75\Chalqoz\Chalqoz; + +use function Safe\file_get_contents; +use function Safe\file_put_contents; +use function Safe\preg_match; + +function findJdate(string $html): Jalalian +{ + $JMONTHS = array( + "فروردین", + "اردیبهشت", + "خرداد", + "تیر", + "مرداد", + "شهریور", + "مهر", + "آبان", + "آذر", + "دی", + "بهمن", + "اسفند" + ); + + preg_match("//s", $html, $matches); + $jdateStr = $matches[1]; + for ($i=0; $i < count($JMONTHS); $i++) { + $jdateStr = str_replace($JMONTHS[$i], sprintf("%02d", $i+1), $jdateStr); + } + $jdateStr = Chalqoz::convertPersianNumbersToEnglish($jdateStr); + $jdateStr = str_replace("99", "1399", $jdateStr); + preg_match("/(\S*) (\S+) (\S+)/s", $jdateStr, $matches); + $jdate = Jalalian::fromFormat('d m Y', $matches[0]); + return $jdate; +} + +function generateAtomFeed() +{ + $AtomFeed = new ATOM(); + $AtomFeed->setTitle(' خبرنامهٔ نرم‌افزاریِ SoftwareTalks'); + $AtomFeed->setDescription('ما مهندسایِ نرم‌افزار و علاقه‌مندانِ کامپیوتر هرازگاهی با مطالبِ جالبی برخورد می‌کنیم که می‌تونه به دردِ بقیه هم بخوره.در حال حاضر، هر پنجشنبه خبرنامه ارسال میشود'); + $AtomFeed->setLink('https://newsletter.softwaretalks.ir'); + $AtomFeed->setDate(new DateTime()); + $AtomFeed->setImage('https://twemoji.maxcdn.com/2/72x72/2709.png'); + + // Now Add html files from 'archives' directory to the feed + $dir = new DirectoryIterator(__DIR__ . '/../../archives'); + foreach ($dir as $fileinfo) { + if (!$fileinfo->isDot()) { + $newItem = $AtomFeed->createNewItem(); + $newItem->setTitle(str_replace("num", "شماره خبرنامه ", $fileinfo->getBasename())); + $newItem->setLink('https://newsletter.softwaretalks.ir/archives/' . $fileinfo->getFilename()); + $newItem->setDate(findJdate(file_get_contents($fileinfo->getPathname()))->toCarbon()); + $newItem->setContent(file_get_contents($fileinfo->getPathname())); + + //Now add the feed item + $AtomFeed->addItem($newItem); + } + } + //OK. Everything is done. Now generate the feed. + file_put_contents(__DIR__ . '/../../atom.xml', $AtomFeed->generateFeed()); +} \ No newline at end of file diff --git a/src/modules/github.php b/src/modules/github.php new file mode 100644 index 0000000..be2520e --- /dev/null +++ b/src/modules/github.php @@ -0,0 +1,27 @@ +api('issue') + ->all($repoOrganization, $repoName, [ + 'labels' => implode(",", $labels), + 'state' => $state + ]); + + try { + foreach ($issues as $issue) { + $posts[] = Yaml::parse($issue['body']); + } + } catch (Exception $exception) { + die("Unable to parse the YAML string: {$exception->getMessage()}" . PHP_EOL); + } + + return $posts; +} \ No newline at end of file diff --git a/src/modules/template.php b/src/modules/template.php new file mode 100644 index 0000000..4bb81a4 --- /dev/null +++ b/src/modules/template.php @@ -0,0 +1,45 @@ +format('%A، %d %B %Y')); + $loader = new FilesystemLoader($emailTemplateDir); + $twig = new Environment($loader, [ + 'strict_variables' => true, + ]); + + try { + $htmlTemplate = $twig->render($emailTemplateName, [ + 'currentDate' => $todayDate, + 'newsletterNumber' => Chalqoz::convertEnglishNumbersToPersian((string)$newsletterNumber), + 'posts' => $posts, + 'contributors' => array_unique(array_column($posts, 'userFullName')), + 'topContent' => $TOP_CONTENT_HTML, + 'bottomContent' => $BOTTOM_CONTENT_HTML + ]); + return $htmlTemplate; + + } catch (Exception $exception) { + die("Unable to render template: {$exception->getMessage()}" . PHP_EOL); + } +} + +function convertToMinifiedHtmlTemplate(string $htmlTemplate): string +{ + $minifier = Factory::constructSmallest(); + $minifiedHtmlTemplate = $minifier->compress($htmlTemplate); + + return $minifiedHtmlTemplate; +} \ No newline at end of file diff --git a/src/send_newsletter.php b/src/send_newsletter.php new file mode 100644 index 0000000..b6e9f25 --- /dev/null +++ b/src/send_newsletter.php @@ -0,0 +1,121 @@ +setApiKey('api-key', $configs['PAKAT_API_KEY']); +$httpClient = new GuzzleHttp\Client(['timeout' => 30]); +$isProduction = ($configs['SEND_ENV'] === 'production') ? true : false; + +/* + * 1- Calculate newsletter number + */ +$newsletterNumber = newsletterCounter(); +printf('--> Newsletter number: ' . $newsletterNumber . PHP_EOL); + + +/* + * 2- Fetch current-week posts from GitHub + */ +printf('--> Fetching issues from GitHub ...' . PHP_EOL); +$posts = getPostsFromGitHub( + $configs['REPOSITORY_ORGANIZATION'], + $configs['REPOSITORY_NAME'], + $configs['LABELS'], + $configs['STATE'] +); +$postsCounter = count($posts); +if ($postsCounter === 0) { + die('There is no post :( such a bad day bro, but do not despair. nobody knows about tomorrow.' . PHP_EOL); +} +printf("--> We have $postsCounter posts. such a good day bro :)" . PHP_EOL); + +/* + * 3- Generate HTML template + */ +printf('--> Generate HTML template' . PHP_EOL); +if($configs['IS_DARK'] === 'true') + $htmlTemplate = generateHtmlTemplate( + $posts, + $configs['EMAIL_TEMPLATE_DARK_FILE_NAME'], + $configs['EMAIL_TEMPLATE_DIR'], + $configs['TOP_CONTENT_HTML_DARK'], + $configs['BOTTOM_CONTENT_HTML_DARK'], + $newsletterNumber + ); +else + $htmlTemplate = generateHtmlTemplate( + $posts, + $configs['EMAIL_TEMPLATE_FILE_NAME'], + $configs['EMAIL_TEMPLATE_DIR'], + $configs['TOP_CONTENT_HTML'], + $configs['BOTTOM_CONTENT_HTML'], + $newsletterNumber + ); +$minifiedHtmlTemplate = convertToMinifiedHtmlTemplate($htmlTemplate); + +/* + * 4- Create campaign + */ +printf('--> Create campaign' . PHP_EOL); +$listID = $isProduction ? $configs['NEWSLETTER_LIST_ID'] : $configs['NEWSLETTER_TEST_LIST_ID']; +$campaignNamePostFix = $isProduction ? 'Production' : 'Test'; + +$campaignID = createNewCampaign( + $pakatConfig, + $httpClient, + $newsletterNumber, + $minifiedHtmlTemplate, + $listID, + $campaignNamePostFix, + $configs['PAKAT_EMAIL_ADDRESS'], + $configs['PAKAT_EMAIL_NAME'], +); + +/* + * 5- Send campaign + */ +printf('--> Sending campaign. ID: ' . $campaignID . PHP_EOL); +sendCampaignByID($campaignID, $pakatConfig, $httpClient); + +/* + * 7- Close related issues + * It is currently manual. + */ +printf(PHP_EOL . '** Please close the current week issues by your hand. You can change your life with your hands! No sweat. **'); + +/* + * 8- Add archive to website + * It is currently semi-manual. + */ +if($isProduction) { + printf('--> Generate archive file' . PHP_EOL); + $archiveFileName = generateArchiveName($newsletterNumber); + generateArchiveFile($htmlTemplate, $archiveFileName); + printArchiveFileNameForCopyPaste($newsletterNumber, $archiveFileName); +} + +/* + * 9- Regenerate the Feed + */ +printf('--> Regenerate the Feed' . PHP_EOL); +generateAtomFeed(); + +/* + * Done. + */ +$scriptEndedAt = microtime(true); +printf(PHP_EOL . '--> Done. Good job, it took %s seconds.' . PHP_EOL, $scriptEndedAt-$scriptStartedAt);