Ще три онлайн-курсу Mail.Ru Group у відкритому режимі

image

C 5 по 15 грудня наш відділ освіти Mail.Ru Group відкрив у режимі без термінів і дедлайнів ще кілька курсів, записаних на платформі Stepik за мотивами занять в Технопарку. Їх можна проходити в зручному для вас режимі без ризику втратити бали. Навіть займаючись не поспішаючи, у вас буде шанс отримати сертифікат з високою оцінкою.

Читати далі →

Підсумки GeekWeek 2016 і повернення жахливого БАГа: зима разом з GeekBrains



14-19 листопада освітній портал GeekBrains спільно з Mail.Ru Group провів онлайн-конференцію GeekWeek 2016 для початківців та досвідчених ІТ-фахівців. Для тих, хто не в курсі, ІТ-сфера є одним з найбільш динамічно розвиваються напрямків в економіках більшості країн світу. Для постійного розвитку потрібно багато ресурсів. А головний ресурс — людина.

Саме з цієї причини кожен рік проводиться онлайн-конференція GeekWeek 2016. Головна мета — не просто зацікавити сферою інформаційних технологій, але й забезпечити практичними навичками, необхідними для успішного початку кар'єри.

Читати далі →

Поліпшення продуктивності PHP 7



PHP — це програмне забезпечення, написане на мові С. Кодова база PHP містить близько 800 тисяч рядків коду і в сьомій версії була істотно перероблена.

У цій статті ми розглянемо, що змінилося в движку Zend сьомої версії порівняно з п'ятою, а також розберемося, як можна ефективно використовувати внутрішні оптимізації. В якості вихідної точки візьмемо PHP 5.6. Найчастіше багато що залежить від того, як ті чи інші речі написані і представлені движку. При написанні критично важливого коду необхідно приділяти увагу його продуктивності. Змінивши кілька дрібниць, ви можете сильно прискорити роботу движка, часто без шкоди для інших аспектів начебто читабельності коду або управління налагодженням. Свої міркування я доведу з допомогою профилировщика Blackfire.

Читати далі →

Як я побувала на HolyJS Moscow і чи треба туди ходити



Минулої неділі, 11 грудня, мені випала нагода взяти участь в HolyJS Moscow, грандіозному заході, цілком і повністю присвяченому JavaScript. Кількість інформації на конференції вражало уяву (не обійшлося навіть без згадування інших технологій, хоча це логічно: у світі веб-розробки все взаємопов'язано), однак з усього масиву особисто мені запам'яталося чотири доповіді. Відразу обмовлюся: справа не в тому, що інші були краще або гірше, просто саме ці привернули мою увагу найбільше. І тут я поясню докладно, чому це так.

Читати далі →

Використання патерну SchedulableObject для виділення бізнес-логіки в окремий потік



Інтерфейс мобільного додатку — це особа продукту. Чим більш чуйний інтерфейс, тим більше радості приносить продукт. Проте задоволеність від використання програми залежить насамперед від обсягу його функцій. По мірі збільшення кількості і складності завдань вони вимагають все більше і більше часу. Якщо архітектура програми передбачає, що всі вони виконуються в головному потоці, то завдання бізнес-логіки починають конкурувати за час з завданнями роботи інтерфейсу. При такому підході рано чи пізно обов'язково знаходиться сценарій, виконання якого призводить до залипання програми. Для боротьби з цією напастю існує три принципово різних підходи:

  1. Оптимізація алгоритмів і структур даних, залучених до виконання проблемного сценарію.
  2. Винесення проблемного сценарію з головного потоку.
  3. Винос з головного потоку всіх функцій програми, за винятком власне візуалізації інтерфейсу.
Патерн SchedulableObject дозволяє акуратно реалізувати третій сценарій. Під катом розглядаються його частини з прикладами реалізації на Swift, а також переваги і недоліки у порівнянні з першими двома підходами.

Читати далі →

Асинхронна обробка запитів в СУБД в пам'яті, або як впоратися з мільйоном транзакцій в секунду на одному ядрі


Привіт! У двох моїх останніх статтях я говорив про те, як СУБД в оперативній пам'яті забезпечують збереження даних. Знайти їх можна тут і тут.

У цій статті я хотів би порушити проблему продуктивності СУБД в оперативній пам'яті. Давайте почнемо обговорення продуктивності з найпростішого випадку використання, коли просто змінюється значення по заданому ключу. Для ще більшої простоти припустимо, що серверна частина відсутня, тобто не відбувається ніякого клієнт-серверної взаємодії з мережі (далі буде зрозуміло, навіщо ми це зробили). Отже, СУБД (якщо її можна так назвати) повністю перебуває у оперативної пам'яті вашого додатка.

Читати далі →

Russian AI Cup. Проміжні підсумки чемпіонату



Ось уже місяць триває Ukrainian AI Cup 2016. Це змагання з програмування штучного інтелекту, яке проходить у формі гри. Ми докладно розповідали про ідею і правилах нинішнього року тут.

Але зі старту чемпіонату, багато чого змінилося. Учасникам довелося попотіти, щоб розібратися в непростих правилах гри, а нам — щоб впоратися з тестуючої навантаженням. Редагувалися правила, оптимізувався код, змінювалися раунди і банились гравці. Розповідаємо вам повну історію CodeWizards 2016.

Читати далі →

Напередодні дня народження першої жінки-програміста: моя історія


На картинці: Ада Лавлейс, яка не тільки перша жінка-програміст, але і взагалі перший програміст в історії. Народилася 10 грудня 1815 року.

Ви б знали, скільки разів мені доводилося чути фрази на зразок «Ти ж дівчинка, навіщо тобі це?» або «У жінок мозок до програмування не пристосований». Стільки раз мені казали: «Ми тут будемо справою займатися, а ти — прикраса команди». Ще гірше, якщо «потрібна, щоб дошку протерти». У той же самий час були безсонні ночі, місяці без відриву від комп'ютера, тонни збережених відео, закладок, курсів, статей, а головне — постійне бій з собою і оточуючими заради Мети. І ось підсумок: мені 22 роки, я менше року тому закінчила університет, але вже встигла попрацювати в головному офісі 2ГІС в Новосибірську, а потім отримати роботу в Mail.Ru Group. Мене звуть Дар'я Пушкарська, і тут я розповім про ланцюг подій, яка привела мене до такого результату.

Читати далі →

Про мову З і продуктивності



Якщо програміст добре знайомий тільки з високорівневими мовами, наприклад PHP, то йому не так просто освоїти деякі ідеї, властиві низькорівневим мов і критичні для розуміння можливостей інформаційно-обчислювальних процесів. Здебільшого причина в тому, що у низько — та високорівневих мовах ми вирішуємо різні проблеми.

Але як можна вважати себе професіоналом у якому-небудь (высокоуровневом) мовою, якщо навіть не знаєш, як саме працює процесор, як він виконує обчислення, ефективним спосіб? Сьогодні автоматичне керування пам'яттю стає головною проблемою в більшості високорівневих мов, і багато програмісти підходять до її вирішення без достатньої теоретичної бази. Я впевнений, що знання основних процесів сильно допомагає в розробці ефективних високорівневих програм.

Читати далі →

Як уникнути стрибків по часу відгуку і споживання пам'яті при знятті знімків стану в СУБД в оперативній пам'яті


Пам'ятайте мою недавню статтю «Що таке СУБД в оперативній пам'яті і як вона ефективно зберігає дані»? У ній я навів короткий огляд механізмів, які використовуються в СУБД в оперативній пам'яті для забезпечення збереження даних. Мова йшла про два основних механізми: запис в журнал транзакцій і зняття знімків стану. Я дав загальний опис принципів роботи з журналом транзакцій і лише зачепила тему знімків. Тому в цій статті про знімках я розповім більш докладно: почну з найпростішого способу робити знімки стану в СУБД в оперативній пам'яті, виділю кілька пов'язаних з цим способом проблем і докладно зупинюся на тому, як даний механізм реалізовано у Tarantool.

Отже, у нас є СУБД, що зберігає всі дані в оперативній пам'яті. Як я вже згадував у моїй попередній статті, для зняття знімка стану необхідно всі ці дані записати на диск. Це означає, що нам потрібно пройтися по всіх таблиць і за всіма рядками в кожній таблиці і записати все це на диск одним файлом через системний виклик write. Досить просто на перший погляд. Однак проблема в тому, що дані в базі постійно змінюються. Навіть якщо заморожувати структури даних при знятті знімка, в результаті на диску можна отримати неконсистентное стан бази даних.

Читати далі →