Pull to refresh
59
0
Vasyl Zubach @TjRus

Software Engineer

Send message

EPAM в Кремниевой Долине

Reading time 3 min
Views 30K
Привет, хабрасообщество! image

В этой статье я хочу рассказать о том, что EPAM Systems делает в области залива Сан Франциско и как здесь работают наши люди. Сам я совсем недавно переехал в Калифорнию и хочу поделиться своими впечатлениями с вами.

Многие знают, что ЕРАМ — одна из самых больших IT-компаний в СНГ, а ее офисы есть во многих крупных городах России, Украины, Беларуси и Казахстана. Несколько наших офисов открыты в Европе. Главный европейский офис находится в Будапеште; несколько раз я навещал венгерских коллег с тренингами по клаудам и смог оценить, насколько хорошие люди там работают.

Ну, а в США основные инженерные силы ЕРАМ — это “он-сайт” сотрудники, которые могут работать по всей территории США: от Калифорнии да Массачусетса, от Сиэтла до Майами.

Точка притяжения всех американских айтишников — это Silicon Valley. “Если у тебя нет офиса в Кремниевой долине, значит, твоя компания не очень успешна”, — такое мнение приходилось слышать не раз от многих людей. Это очень похоже на правду, так как здесь — действительно — сосредоточено невероятное количество офисов, от маленьких конторок до гигантских корпораций. В некоторых из этих офисов работают наши ребята — айтишники всех мастей: дЭвы, тестеры и “О_о”дмины. Как правило, это бывшие сотрудники какого-нибудь из офисов СНГ, которые показали свою надежность в бою и были отправлены «на передовую».
Читать дальше →
Total votes 23: ↑19 and ↓4 +15
Comments 40

Самые нужные плагины для Grunt

Reading time 6 min
Views 49K


Доброго времени суток, всем! Кто-то умный, не помню в какой статье именно на Хабре, буквально недавно размышлял о процессе разработки с явным призывом автоматизировать все, что только можно автоматизировать. И лучше один раз потратить время на автоматизацию, чтобы потом экономить его на протяжении всего проекта.

У веб-разработчиков есть прекрасный инструмент для автоматизации массы задач, который называется Grunt. И моя страсть к таксономии заставила себя собрать огромную коллекцию почти из 100 ценных плагинов для этого сборщика. Думаю многие кто уже использует Grunt найдут для себя что-то нужное, а кто нет, глядя на возможности, получит хорошую мотивацию установить его и понять как эта штука работает.

А еще я выложил подборку на GitHub, чтобы каждый мог пополнить коллекцию.

Читать дальше →
Total votes 53: ↑48 and ↓5 +43
Comments 43

Генерирование фейковых данных для вашего JavaScript-приложения с помощью Faker

Reading time 6 min
Views 33K
Для того, чтобы продемонстрировать работу приложения, нам частенько приходится заставлять его работать с выдуманными данными, ведь негоже, чтобы заголовки были пустыми, а таблицы лишь расчерченными, но не заполненными.

Как правило, при создании приложения, мы не очень-то переживаем о том, c какими именно данными в итоге оно будет работать, мы просто выдумываем какой-то пример, которого достаточно для того, чтобы продолжать работать над логикой, и, собственно, продолжаем работать над логикой.

К счастью, Marak создал опрятное средство, которое позволяет нам генерировать фейковые данные на лету: Faker.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 9

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

Reading time 7 min
Views 398K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Total votes 198: ↑196 and ↓2 +194
Comments 120

Как я попал в Топ AppStore с простым приложением курса валют

Reading time 10 min
Views 126K

Резюме


Я хочу рассказать о том, как создал вполне заурядное и совсем не инновационное приложение, которое объективно стало лучшим в своём роде и даже некоторое время пребывало на самой вершине топа. Это не история успеха и не руководство к действию. Я просто хочу рассказать, как у меня получилось сделать самое популярное приложение в своём сегменте.
Читать дальше →
Total votes 126: ↑118 and ↓8 +110
Comments 69

Несколько интересных особенностей MySQL

Reading time 8 min
Views 63K
В не очень далеком прошлом мне пришлось покопаться немного в исходном коде MySQL, и разобраться в некоторых аспектах его работы. В ходе работы лопаткой, и эксперимeнтов, я наткнулся на несколько очень интересных особенностей, часть из которых просто забавна, а в случае некоторых бывает очень интересно понять, чем руководствовался программист, который принимал решение сделать именно так.

Начнем с такого интересного типа, как ENUM.

mysql> CREATE TABLE enums(a ENUM('c', 'a', 'b'), b INT, KEY(a));
Query OK, 0 rows affected (0.36 sec)

mysql> INSERT INTO enums VALUES('a', 1), ('b', 1), ('c', 1);
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0


Итак, у нас есть таблица, в ней есть два столбца. У первого, a, тип ENUM, у второго, b, INT. В таблице три строки, у всех трех значение b равно 1. Интересно, чему равны минимальный и максимальный элементы в столбце a?

mysql> SELECT MIN(a), MAX(a) FROM enums;
+--------+--------+
| MIN(a) | MAX(a) |
+--------+--------+
| c      | b      |
+--------+--------+
1 row in set (0.00 sec)


Кажется странным, было бы разумно, если бы самым маленьким был 'a', а самым большим — 'c'.
А что если выбрать минимум и максимум только среди тех строк, где b = 1? То есть, среди всех строк?

mysql> SELECT MIN(a), MAX(a) FROM enums WHERE b = 1;
+--------+--------+
| MIN(a) | MAX(a) |
+--------+--------+
| a      | c      |
+--------+--------+
1 row in set (0.00 sec)


Вот так мы заставили MySQL поменять свое мнение о том, как сравнивать поля в ENUM, просто добавив предикат.
Разгадка такого поведения заключается в том, что в первом случае MySQL использует индекс, а во втором нет. Это, конечно, не объясняет, почему MySQL сравнивает ENUMы по разному для сортировки в индексе, и при обычном сравнении.

Второй пример проще и лаконичнее:

mysql> (SELECT * FROM moo LIMIT 1) LIMIT 2;
+------+
| a    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)


Когда я показал этот запрос своему коллеге, который занимается разработкой парсера SQL, его вопрос был не «почему этот запрос возвращает две строки», а «как надо написать SQL парсер так, чтобы такой запрос был валидным, без того, чтобы написать правило, специально разрешающее такой запрос».

Интересно, что далеко не любой SELECT в скобках сработает, в частности, UNION в скобках — это синтаксическая ошибка:

mysql> (SELECT * FROM moo UNION ALL SELECT * FROM hru) LIMIT 2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL SELECT * FROM hru) LIMIT 2' at line 1


Еще несколько интересных примеров под катом
Читать дальше →
Total votes 113: ↑110 and ↓3 +107
Comments 95

Консоль для маководов: Beyond the GUI

Reading time 6 min
Views 219K
Доброго дня, уважаемые хабравчане-маководы!

Сегодня я расскажу как увеличить эффективность работы в Mac OS X за счёт использования консоли.

Лирическое отступление


Думаю, ни для кого не секрет, что Mac OS является Unix-based системой, но переработанной почти до неузнаваемости. Даже консоль засунули куда подальше — не сразу и найдёшь. И вся система нацелена на использование GUI, при дефолтных настройках даже переключение между кнопками по Tab не работает — без мыши никуда. И тем не менее, Мак — это не только окошки, не только док и лаунчер. Мак это ещё и вся мощь shell скриптов и консоли!

Если Вы пришли из мира M$, то для начала неплохо бы поучить общие команды shell'а, например, по вот этому учебному пособию. Как минимум, нужно усвоить команды перехода по каталогам и способы запуска программ и скриптов.

Если Вы пришли в мир Mac OS из мира Linux'а и FreeBSD, то, скорее всего, знаете как минимум основы shell-скриптинга. Но и для вас в статье может оказаться кое-что интересное, ведь в маке есть уникальные консольные команды, которые так же полезно знать.

Вот о некоторых особенностях маковской консоли далее и пойдёт речь.
Поехали!
Total votes 104: ↑91 and ↓13 +78
Comments 126

Raspberry Pi: подробная настройка с нуля до TorrentBox

Reading time 7 min
Views 347K

Прелюдия


Я давно следил на ХабраХабр за проектом Raspberry Pi и твердо решил заполучить свой мини-компьютер. Когда начался предзаказ, я воспользовался им практически сразу, однако только 17 июня 2012 года мне на Email пришло сообщение от RSComponents.Com о возможности заказа моего экземпляра Raspberry Pi. Итого прошло около месяца с момента предзаказа.

В этот же день я создал заказ (кстати, в то время уже можно было заказать «официально» в Российскую Федерацию) и стал ждать свою «малину». Информационное письмо обещало отгрузку в течение максимум 6 недель, но в этот срок я так и не получил свою плату. Во время звонка в московское представительство RS, менеджер фирма дал понять, что поставки скоро будут, но когда — неизвестно.

17 августа мне на email пришло сообщение от сотрудницы Московского RS, что моя плата доставлена в офис и ее можно забирать (т.к. заказать из RS с доставкой на дом нельзя, потому что DHL не доставляет посылки частным лицам). Собственно говоря, в этот же день я и получил свой компьютер Raspberry Pi!


Читать дальше →
Total votes 86: ↑77 and ↓9 +68
Comments 99

Как мы делали аналитику для высоконагруженного сайта

Reading time 9 min
Views 27K
image

Недавно на хабре была публикация о том, как реализована аналитика на ivi.ru. После прочтения захотелось рассказать об аналитике, которую мы делали для одного крупного сайта. Заказчик, к сожалению, не разрешил публиковать в статье ссылку на сайт. Если верить Alexa Rank, то трафик на сайте, для которого мы делали аналитику, раз в 10 больше, чем на ivi.ru.
Читать дальше →
Total votes 34: ↑29 and ↓5 +24
Comments 78

Продвинутый Gulp и Browserify: интересные трюки

Reading time 9 min
Views 42K
Пару недель назад я начал цикл о том, как делал некоммерческий музыкальный проект (первый пост есть в «я пиарюсь», не буду ставить ссылок), но, к сожалению, в первой же статье увлекся, и вместо того, чтобы рассказывать о том, как делал конкретно его, начал вспоминать эффективные трюки из других проектов. Видимо, именно это вкупе с прописанным акцентом на сам проект привело к тому, что за мной и постом прилетело НЛО.

Однако все то, что было в статье, было по крайней мере малоизвестно, а половина ее была вообще уникальна, как я уверен, и каждый из этих советов может ощутимо облегчить работу с gulp, поэтому мне действительно было бы жаль, если этот материал безвозвратно пропал бы.

Поэтому я постарался убрать все упоминания проекта и повторно публикую (с доработками и правками) статью, которую по сути никто еще не видел. Если вы фанат grunt — почитайте хотя бы вторую часть: то, что вы не любите gulp, не значит, что вы не любите browserify.

Краткое содержание:
  1. Простой способ обработки ошибок;
  2. Универсальная структура для хранения исходных файлов;
  3. Объединение нескольких потоков (например, скомпилированный coffee и js) в один;
  4. Создание потока из текста;
  5. создание собственных плагинов для Browserify;
  6. создание плагинов из плагинов Gulp для Browserify.

Читать дальше →
Total votes 32: ↑28 and ↓4 +24
Comments 15

Мой опыт размещения игры в App Store

Reading time 7 min
Views 53K


Привет, Хабрахабр!

В этом топике я хотел бы рассказать о своем первом опыте размещения и продвижения игры в App Store. Не могу назвать его удачным, но, по крайней мере, само по себе наличие опыта, набитые шишки и сделанные выводы — это уже плюс. Я довольно давно занимаюсь разработкой Android-игр, поэтому это будет еще и взгляд со стороны Android-разработчика, который надеюсь, тоже будет кому-то интересен.
Читать дальше →
Total votes 40: ↑31 and ↓9 +22
Comments 22

markdown-it — парсер markdown / CommonMark на стероидах

Reading time 2 min
Views 14K
Не так давно было много шума об инициатике CommonMark по унификации маркдауна. Казалось бы, наконец-то в этой замечательной разметке наступит порядок. Но на практике не все так просто. Сейчас ведется работа над базовым синтаксисом, и до расширений дело дойдет не скоро. Ждать год с лишним могут не все. Но разработки спецификаций — это скорее научная работа. Нас же интересует практика — как приворачивать маркдаун к конкретным проектам.

Что же может потребоваться программисту от хорошего парсера маркдауна? Ну конечно же не скорость :). А нужна на самом деле возможность добавлять свои расширения синтаксиса. К сожалению, во всех реализациях парсеров, что я до этого встречал, логика разбора разметки приколочена намертво. Все что остается — ковырять гвоздиком конечный результат и надеяться что конфликтов не случится. Конечно, гарантировать при этом надежный выхлоп невозможно. Можно пойти другим путем — попробовать заслать патч в апстрим. Но тут нет ни каких гарантий, что синтаксис вашего расширения будет нужен кому-то еще кроме вас, и что ваш код будет принят.

Как же быть? К счастью, теперь у нас есть markdown-it!

Читать дальше →
Total votes 40: ↑35 and ↓5 +30
Comments 29

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №131 (20 — 26 октября 2014)

Reading time 5 min
Views 50K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


Читать дальше →
Total votes 49: ↑41 and ↓8 +33
Comments 8

Визы для стартапов: как открыть собственное дело за рубежом (часть 1)

Reading time 4 min
Views 70K
image

Как создать бизнес почти «из ничего» и стать хозяином собственной жизни? Ответ: создать стартап. Сегодня многие страны предлагают для предпринимателей супервыгодные условия для начала своего дела. Например, в Чили не нужно даже самим искать деньги на стартап — при наличии хорошей идеи их выдает правительство страны. А в Великобритании и Канаде работают специальные фонды, готовые профинансировать начинающую компанию.

Стартапы выгодны принимающим странам, поскольку такие компании генерируют значительное количество рабочих мест. Ежегодно по программам для основателей стартапов в Европу иммигрируют до 20 тыс. человек. Если учесть, что эти компании чаще всего основываются двумя лицами, то можно предположить, что каждый год в ЕС открываются примерно 10 тыс. новых фирм. В среднем, компания, принадлежащая иностранцу, создает четыре рабочих места в первый год существования. Следовательно, в совокупности стартапы являются источником примерно 40 тыс. рабочих мест в Европе за год.

Посмотрим, какие условия иммиграции существуют для основателей стартапов в разных странах.
Читать дальше →
Total votes 74: ↑62 and ↓12 +50
Comments 53

Беспроводной накопитель MBLOK на Кикстартере

Reading time 1 min
Views 62K
Российско-украинская команда Kwelea, базирующаяся в Канаде, запустила на Кикстартере кампанию по сбору средств на универсальное беспроводное хранилище данных миниатюрного размера под названием MBLOK.


Читать дальше →
Total votes 42: ↑37 and ↓5 +32
Comments 84

4 мифа о дизайне Apple, от бывшего дизайнера Apple

Reading time 6 min
Views 157K


Перевод статьи-интервью с бывшим дизайнером Apple Марком Кавано.

Apple — синоним высококлассного дизайна, но о процессе дизайна в компании известно очень мало. Большинство собственных сотрудников Apple не имеют допуска во внутренние студии дизайна. Поэтому нам остаётся только собирать кусочки интервью или просто спекулировать о том, как всё происходит в Apple и каково это на самом деле — быть дизайнером этой компании.

И вот Марк Кавано. Перед основанием Storehouse, Кавано был senior-дизайнером в Apple на протяжении 7 лет, где он работал над Aperture и iPhoto. Позже, Кавано стал евангелистом User Experience в Apple, помогая сторонним разработчикам создавать iOS-приложения, которые правильно ощущались бы на платформах Apple… Кавано был в компании во время ключевого момента, когда Apple выпустила iPhone и создала мир приложений.

В интервью для Co.Design Кавано откровенно говорил о времени, проведённом в Apple — и особенно о тех мифах индустрии, которые ходят вокруг компании и её сотрудниках.
Читать дальше →
Total votes 127: ↑109 and ↓18 +91
Comments 54

Китайцы ворвались на рынок мини-компьютеров

Reading time 1 min
Views 34K


У Raspberry Pi и Cotton Candy появился китайский конкурент. Компьютер размером с флешку стоит 74 доллара — как раз посередине между Raspberry Pi (25 — 35 долларов) и Cotton Candy (200). Внутри — одноядерный процессор ARM Cortex A8 AllWinner A10 1.5GHz, графический чип Mali 400, 512 мегабайт DDR3 RAM и 4 гигабайта встроенной флеш-памяти. Есть полноразмерный слот USB, microUSB, кардридер micro TF, порт HDMI и беспроводной модуль WiFi 802.11b/g. Размеры «китайца» — 8.8 х 3.5 х 1.2 см, вес — 200 граммов.
Читать дальше →
Total votes 101: ↑96 and ↓5 +91
Comments 129

Букмарки и Javascript

Reading time 2 min
Views 1.8K
Столкнувшись с задачей, создать на сайте ссылку( или кнопку ) «Добавить в закладки», было найдено не сколько вариантов решения этой задачи. И все вроде хорошие, но каждый чем то мне не угодил.

Читать дальше →
Total votes 12: ↑8 and ↓4 +4
Comments 19

Выразительный JavaScript: Величины, типы и операторы

Reading time 10 min
Views 156K

Содержание




Под поверхностью машины движется программа. Без усилий, она расширяется и сжимается. Находясь в великой гармонии, электроны рассеиваются и собираются. Формы на мониторе – лишь рябь на воде. Суть остаётся скрытой внутри…

Мастер Юан-Ма, Книга программирования

Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 6

Information

Rating
Does not participate
Location
Sydney, New South Wales, Австралия
Date of birth
Registered
Activity