У шостій частині серії навчальних матеріалів, присвячених розширень Intel Software Guard Extensions (Intel SGX), ми тимчасово відкладаємо анклав в сторону, щоб зайнятися виконанням іншої вимоги, яке ми виклали у другій частині (проект програми): ми присвятимо цю серію підтримці двох гілок коду. Потрібно, щоб наше додаток Tutorial Password Manager працювало на ПК як з підтримкою Intel SGX, так і без неї. Більша частина вмісту цього матеріалу взята зі статті Правильне виявлення розширень Intel Software Guard Extensions у додатках.

Разом з цією частиною серії надається вихідний код.

Читати далі →



Наше внутрішнє співтовариство Go-розробників Mail.Ru Group активно розвивається, колеги регулярно зустрічаються для обміну досвідом і корисними ресурсами. Ми знаємо, як важливо спілкуватися з людьми з інших команд і проектів, мати можливість запитати ради, обговорювати тільки що з'явилися технології та поділитися досвідом. Близько півроку тому в нашому офісі вже проходила зустріч розробників Go, і нині ця мова все ще викликає великий інтерес. Тому 14 квітня ми організуємо черговий Go meetup. Запрошуємо спікерів! Від Mail.Ru Group вже заявлений один доповідь. Подробиці під катом.

Читати далі →

Speech AI з Python & Google API
image
Добрий день!
Зовсім недавно прийшла в голову ідея зробити "говорилка" російською мовою. В голові була простенька схема кшталт:
1) Розпізнати мова з мікрофона
2) Придумати більш — менш розумну відповідь.
В цьому пункті можна зробити багато цікавого.
Наприклад реалізувати управління чим — небудь фізичним і не дуже.
3) Перетворити цей самий відповідь мова і відтворити.
найцікавіше, що для всіх цих пунктів знайшлися бібліотеки під Python, чим я і скористався.
В результаті вийшла зв'язка, практично не залежить від обраного в якості розмовної мови.
Читати далі →

Скільки разів розповідав колегам і на співбесідах. Мабуть є попит і на Хабре. Хтось встав перед вибором. Інший сумнівається в правильності свого шляху. Коли выгораешь, таке трапляється. Комусь цікаво, з чим доведеться зіткнутися попереду, або зіставити своє подібне. Повірте, це зовсім коротка версія об'ємної сумної історії.
Читати далі →

Вступ
Нещодавно при роботі над проектом навчальної практики виникла потреба з свого коду породжувати довільний процес і одночасно читати його stdout і stderr. Так як додаток пишеться виключно для linux, я вирішив заодно розібратися з epoll. Для запуску процесу на просторах інтернету була знайдена маленька бібліотека, робить саме те, що потрібно, та ще й обертаюча введення-виведення в звичні потоки із стандартної бібліотеки (мова про <iostream>).

Озброївшись кількома статтями про epoll, я вже було збирався писати код, якщо б не одне «але» — для epoll потрібний доступ до «сирим» файловим дескрипторам, а автор бібліотеки не надає public-доступу до них. Методи класу, повертають дескриптори, приховані під грифом «protected».

Що робити?
Найпростішим було б виправити код бібліотеки і перемістити потрібні методи public-секцію, ще краще було б форкнуть бібліотеку і реалізувати необхідний функціонал самому. Але перше було б негарно і обіцяло б конфліктами при оновленні бібліотеки, а друге зайняло б занадто багато часу на розбір коду бібліотеки і подальше тестування під кількома різними *nix-системами.

Тому в голову прийшла божевільна третя думка: чому б не спробувати як-то гарно «зламати» ООП і «легально» отримати доступ до protected-методом без втручання у вихідний код бібліотеки? Про те, які виникли перепони на цьому шляху і як допоміг C++14 в їх подоланні, і піде розповідь у даній публікації.

Читати далі →

У минулій публікації я згадав, що мій SBC для експериментів поліг смертю хоробрих. Само собою, постала проблема нового піддослідного.

Простий одноплатник мені якось не хотілося купувати, тому вибір мій упав на SoC'в. Вибирав я між Zynq і Cyclone V. По назві теми, думаю, здогадалися, що ж я вирішив вибрати.



Дана публікація буде складатися з невеликого огляду хустки з великої картинки і того, як «програмувати» і «конфігурувати» подібне залізо. Кому це цікаво прошу під кат.

Читати далі →

минулого тижня я ходив на співбесіду, і основне питання до мене був такий: «Чому ви вирішили змінити професію і стати програмістом?». Наприкінці співбесіди чоловік, який проводив співбесіду — керівник відділу перспективних розробок однієї IT компанії — прямо сказав: "… я вас не розумію, ви претендуєте на позицію, яка явно нижче за вашу і за рівнем окладу, і за посадою, та загалом і не така цікава, як ваша робота сьогодні..."

Читати далі →

Іноді виникає необхідність отримати дані з веб-сторінок і зберегти їх в структурованому вигляді.

Інструменти веб-скрапинга (web scraping) розробляються для витягання даних з веб-сайтів. Ці інструменти бувають корисні тим, хто намагається отримати дані з Інтернету. Веб-скрапинг — це технологія, що дозволяє отримувати дані без необхідності відкривати кілька сторінок і займатися копіпастом. Ці інструменти дозволяють вручну або автоматично отримувати нові або оновлені дані і зберігати їх для подальшого використання. Наприклад, з допомогою інструментів веб-скрапинга можна отримувати інформацію про товарах і цінах з інтернет-магазинів.

Читати далі →