<img src=«habrastorage.org/files/5e7/7b3/706/5e77b3706e39408f9d57548f2994aacb.png» alt=«image» alt text"/>
iMessage у свіжих версіях iOS навчився працювати зі сторонніми розширеннями. Наприклад, тепер можна додавати котиків до повідомлень або навіть переводити комусь гроші без додаткових реквізитів. Це ж мрія ледаря — відправляти гроші не виходячи з месенджера, тому розробка Яндекс.Грошей засіла за реалізацію.
При розробці модного магії без пригод не обійшлося, адже iMessage практично нічого не розповідає про одержувача повідомлення. Немає ні номера гаманця, ні ПІП, ні хоча б статичного ID. Але ми придумали спосіб дізнатися про адресата все необхідне для відправлення грошей.
Читати далі →

У березні минулого року програма AlphaGo, розроблена Google DeepMind, здобула перемогу над одним з кращих майстрів го у світі — Чи Седолем (Lee Sedol). Ця серія ігор стала показником того, на що здатні нейронні мережі. І вони знаходять застосування в інших (менш глобальних) програмах, наприклад, у програмах для виявлення шкідливого ПЗ або перекладу тексту на зображеннях.

Очікується, що найближчим часом вартість ринку програмного забезпечення, що використовує можливості глибокого навчання, перевищить 1 мільярд доларів. Тому дослідники займаються проектуванням спеціальних чіпів, здатних впоратися з такими додатками.

Серед них виділяються Google, Nvidia, Qualcomm і ін. Але сьогодні ми б хотіли поговорити про розробку вчених Мічиганського університету — проекті Michigan Micro Mote — комп'ютері об'ємом в один кубічний міліметр.


Читати далі →

PrestaShop. Про глюке в багаторівневій навігації

PrestaShop Blocklayered

Привіт Хабр! Я розумію, що історія, про яку я хочу розповісти зовсім звичайна. У кожного програміста, який працює з Open Source, таких випадків до десяти на день. Але я все одно вирішив про неї написати. Комусь вона реально допоможе, а кому-то може просто поліпшить настрій, що теж непогано.

Буде трохи реверс-інжинірингу, трохи філософських роздумів, і звичайно щасливий кінець. Кому важливо тільки виправлення глюку – можете не читати весь цей бред і відразу скопіювати хак з кінця статті. У будь-якому випадку, ласкаво просимо під кат.


Читати далі →

Спосіб боротьби зі зверствующими анти-адблокерами, блокувальниками самих себе

Все вірно, занадто агресивна поведінка навколишнього середовища (виробників контенту) призводить до все більш жорстким спробам цивілізації підпорядкувати навколишній світ собі. У цьому — природна природа людини і людства, тому незнання законів природи приведуть контентчиков до того, що їх надійно захистять. Щоб вони нарешті почали приносити користь, а не рекламу розумним людям.

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

TL;DR: є спосіб обійти агресивні анти-адблокеры зараз, в рамках існуючих правил гри, розширення браузерів.

Читати далі →

«Світ не Дикого Заходу»: IEEE опублікувала стандарт по створенню доброзичливих роботів

За словами Мартіни Ротблатт (Martine Rothblatt), підприємця і футуриста, людство швидко рухається до наступного еволюційному витку — до того моменту, коли ми почнемо завантажувати свою свідомість у комп'ютери. Вона зазначає, що сьогодні багато витрачають по кілька годин на день на переписку в соціальних мережах, обмінюючись цифровою інформацією, яку Мартіна називає «інтелектуальними файлами».

«Великі ІТ-компанії вливають мільярди доларів в розробку штучного інтелекту, тому є ймовірність, що ці файли будуть використовуватися для створення цифрових версій людей», — говорить Ротблатт.

Читати далі →

«Відлуння минулих років»: Як вирішується питання нестачі адрес IPv4

IPv4 дозволяє близько 4,3 млрд адрес. Однак «потужності» інфраструктури інтернету, яку заклали в 70-х роках XX століття, сьогодні стає недостатньо, оскільки в той час ніхто не припускав такого швидкого зростання споживачів. За останні 20 років кількість інтернет-користувачів виросло практично в 60 разів, багато в чому завдяки густонаселених країнах — Індії та Китаю. Також цьому сприяло поширення мобільних пристроїв.


Читати далі →

Декомпіляція Java-методів на продуктивному додатку під навантаженням – міф чи реальність?

Тестування, безсумнівно, є одним з китів, на яких стоїть розробка додатків. Як і будь-характерний кіт, тестування може зафонтанировать багами і довго не зупинятися. Але головне питання полягає в достатності тестового покриття – всі баги з написаним тест-кейсів вдасться відловити? Можливо, деякі з'являться тільки під користувальницької навантаженням. Для виявлення їх, як правило, детонує звернення користувача і далі використовується наступна ланцюгова реакція: спеціаліст Help Desk, друга лінія підтримки і, якщо пощастить, повідомлення про нештатної роботи потрапить в руки розробника. Так, інцидент може також прийти від системи APM-моніторингу (якщо вона у вас є, звичайно). Але всі ці речі не дозволять однозначно визначити, які значення приймали змінні до виникнення виключення. У пості ми як раз поговоримо про рішення, покликаному в допомагати в подібних ситуаціях.



Читати далі →

Спрощуємо бінарний пошук в Excel — реалізація Double VLOOKUP Trick з допомогою UDF

Додам у скарбничку статей Хабра про Бінарному пошуку ще одну.
Мова піде про кастомних реалізації, може бути корисним усім, хто часто використовує в роботі ВВР для порівняння великих списків або для пошуку даних у великих масивах.

Передісторія
Все почалося з того, що я відкрив для себе т. н. Double-TRUE VLOOKUP trick (трюк з подвійним використанням ВВР і ІСТИНА в 4-му параметрі). Розгорнутий опис алгоритму можна знайти у статті Charles Williams «Why 2 VLOOKUPS are better than 1 VLOOKUP» (в кінці статті).

Зрозумівши принцип роботи і відкривши для себе, що цей підхід може бути у тисячі разів швидше звичайного лінійного пошуку (ВВР з 4-м параметром БРЕХНЯ), я почав продумувати варіанти розкрити його можливості. В ході реалізації вийшло кілька придатних інструментів для контекстної реклами, один з яких я ще продовжую покращувати, і вже присвятив проекту пару статей на Хабре. Чтиво рекомендується SEO-фахівцям і спеціалістам з контекстної реклами (відразу обмовлюся, що містяться в статтях вже застарілі версії, остання версія умовно 6.0, посилання на скачування всіх версій, включаючи саму свіжу, будуть в кінці цієї статті):
Аналіз великих семантичних ядер, або «Робот-розпізнавач»
Лемматизация в Excel, або «Робот-розпізнавач 3.0

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

Синтаксис виглядає так: Якщо(ВВР(шукане; масив;1; ІСТИНА)<шукане;""; ВВР(шукане; масив;n; ІСТИНА))
де n — порядковий номер стовпця, з якого ми хочемо повернути значення навпроти потрібного ключа.
Замість «ІСТИНА» в 4-му параметрі можна використовувати «1» для номінального скорочення довжини формул, це не змінює їх суті.
Якщо озвучити хід роботи формули, буде нижченаведене:
«Якщо бінарний пошук ключа з першого стовпця масиву повертає значення менше, ніж сам ключ, повертаємо порожній рядок. Інакше повертаємо результат бінарного пошуку ключа зі зміщенням n»
Підхід використовується для того, щоб не повертати жодних значень, якщо шуканий ключ у масиві відсутня, т. к. часто, якщо шукане не знайдено — нам не потрібно менше значення. Так сказати, все або нічого. Коротко, в цьому і є суть «трюку».

Нагадаю, на карту поставлено приріст швидкості, що обчислюється трьох-чотиризначними числами. Якщо підходити чисто математично — на масиві в 2^20 рядків звичайний бінарний пошук буде робити ~10 обчислень, формула вище — близько 20, в той час, як лінійний пошук — ~500.000, тобто приріст формули вище — в 25.000 раз. Якщо голі цифри не вражають, більш красномовне еквівалентне порівняння — 1 секунда проти ~7 годин.
На практиці приріст не настільки істотний (в кінці статті посилання на статтю, де порівнювалися різні способи). Це багато в чому пов'язано з витратами процесорного часу на додаткові процедури, які виконує програма (наприклад, запис значень комірки). АЛЕ приріст залишається критично значимий (~4000 разів).

Але одночасно з цим ми маємо складний, абсолютно неюзабельный синтаксис. Не всім смертним дався ВВР, що говорити про комбінаціях 2х з ВВР ЯКЩО.

Питання зі складним синтаксисом я вирішив з допомогою VBA — написав UDF (user-defined function, користувацька функція), яка ховає під капот наші умовні конструкції, залишаючи нам звичний синтаксис всім відомого ВВР.

Код UDF:

Читати далі →

Як створити тему для Magento 2 з нуля



Здрастуйте, шановні хабрапользователи! У цій публікації хочу описати процес створення теми для Magento 2 з нуля. Magento 2 має досить велику кількість нововведень і поліпшень в порівнянні з першою версією. Здебільшого вони відносяться до клієнтської частини.

Ось деякі з них:

  1. Повна підтримка HTML5 і CSS3;
  2. Вбудований препроцесор LESS;
  3. Асинхронне завантаження модулів з допомогою RequireJS (без ручного додавання сценаріїв у секцію head);
  4. jQuery/jQuery UI замість бібліотеки Prototype;
  5. Magento UI бібліотека (набір компонентів для простого та гнучкого візуалізації інтерфейсу).
Найцікавіше – під катом!
Читати далі →

Порівняння онлайн-сервісів відмінювання

З'явилася потреба визначати стать клієнтів в базі і автоматично схиляти ПІБ для інтернет-магазину. Специфіка магазину – подарунки і доставка квітів з привітаннями.
Магазин приймає інформацію про користувачів через форму швидкого замовлення. Є і звичайна кошик, але багато користуються саме швидким замовленням – там можна заповнити тільки телефон і відразу ж перейти до оплати. Клієнти користуються можливістю і часто взагалі не вказують ім'я. Робити поля ПІБ обов'язковими безглуздо – вписувати сміття замість даних не заборонити. Також як не заборонити неправильно писати власне ім'я.
Між тим правильне звернення до клієнта необхідно, інакше можливі казуси:
image

Читати далі →