Как стать автором
Обновить
44.7
Карма
0
Рейтинг
Александр Борисов @aishek

Fullstack-разработчик, Team Lead, CTO

  • Подписчики 11
  • Подписки 9

Как рубисту пережить апдейт OSX 10.10 Yosemite

Ruby on Rails *Разработка под MacOS *
Tutorial
На днях вышла очередная версия OSX 10.10 Yosemite, и если для обычных пользователей маков вопрос «обновляться или нет» не стоит, то разработчики подобным вопросом вполне могут задаться. Редкий большой апдейт прошлых лет не приносил нам тех или иных проблем с софтом, библиотеками и консолью. Не может похвастаться отсутствием проблем и нынешнее обновление.

Одним из лучших советов тут конечно было бы подождать месяц-другой и только затем обновляться — избавит от многих проблем и потери времени. Но ждать не хочется, а посему после обновления у вас гарантированно всё сломается (речь далее в основном идёт о ruby и rails): будут выскакивать seg fault'ы, не будут собираться некоторые гемы, возникнут проблемы со скриптами в консоли.
Исправление некоторых проблем нагуглить будет легко, а для некоторых предлагают лишь хаки в виде задания дополнительных параметров компиляции и переменных окружения.
Читать дальше →
Всего голосов 37: ↑30 и ↓7 +23
Просмотры 23K
Комментарии 76

Анализ рендеринга через Skia Debugger: как можно найти самые дорогие для отрисовки элементы

Блог компании Mail.ru Group Разработка веб-сайтов *CSS *
Доброго дня, недавно я решал проблему притормаживания скролла на страницах Почты Mail.Ru. Особенно эта проблема была заметна на retina-дисплеях. После простого анализа я пришел к выводу, что одна из основных проблем — это медленная отрисовка страницы.

В этой статье я расскажу, как можно применять инструмент Skia Debugger, входящий в набор инструментов Chrome, для пошагового анализа процесса отрисовки страницы, а также как с его помощью можно получить данные о том, сколько времени занимает отрисовка каждого элемента.

Как и многие подобные проблемы оптимизации, данную проблему можно решить множеством способов. Я взялся за оптимизацию рендеринга, так как на нее затрачивалось значительное количество времени. Тем самым, я достаточно быстро смог бы получить прирост производительности и, соответственно, улучшить плавность скролла, ускорив отрисовку.


Читать дальше →
Всего голосов 76: ↑72 и ↓4 +68
Просмотры 21K
Комментарии 8

Как удержать ценные кадры: рецепты для маленьких компаний

Управление проектами *
Ключевые причины, по которым сотрудники решают сменить место работы – неудовлетворенность заработной платой, невозможность карьерного роста, отсутствие интереса, понимание, что в другом месте, они смогут больше и лучше.
Читать дальше →
Всего голосов 64: ↑52 и ↓12 +40
Просмотры 39K
Комментарии 35

10 самых распространённых ошибок при программировании на JavaScript

Блог компании Mail.ru Group Разработка веб-сайтов *JavaScript *
Перевод


Сегодня JavaScript лежит в основе большинства современных веб-приложений. При этом за последние годы появилось большое количество JavaScript-библиотек и фреймворков для разработчиков Single Page Application (SPA), графики, анимации и даже серверных платформ. Для веб-разработки JavaScript используется повсеместно, и поэтому качество кода обретает всё большее значение.

На первый взгляд, этот язык может показаться довольно простым. Встраивание в веб-страницу базового функционала JavaScript — это не проблема для любого опытного разработчика, даже если он ранее не сталкивался с этим языком. Однако это обманчивое впечатление, поскольку JavaScript гораздо сложнее, мощнее и чувствительнее к нюансам, чем кажется поначалу. Немало тонкостей в этом языке приводит к большому количеству распространённых ошибок. Сегодня мы рассмотрим некоторые из них. На эти ошибки нужно обратить особое внимание, если вы хотите отлично программировать на JavaScript.
Читать дальше →
Всего голосов 205: ↑176 и ↓29 +147
Просмотры 154K
Комментарии 127

Growth Hacks для SaaS-сервиса: Как увеличить доход и снизить отток клиентов?

Growth Hacking *
Tutorial
Дисклэймер: мы, проект Witget, развиваем собственный SaaS-сервис. Cтараемся находить и обобщать опыт более старших и успешных товарищей. Представляем вам подборку полезных growth hacks, подготовленных на основе материалов из блога KissMetrics, которые позволят не только сохранить пользователей, но и простимулируют их платить больше.
Читать дальше →
Всего голосов 18: ↑10 и ↓8 +2
Просмотры 7.8K
Комментарии 0

Почему сотрудники делают глупые ошибки и что с этим делать.Часть 1

Управление проектами *
Как-то один из персонажей популярного сериала заявил «Все врут!». И это отчасти правда. И что уж 100% правда, что все лажают. Каждый может вспомнить, когда наши сотрудники не выполнили взятые на себя обязательства, сорвали сроки, что-то сделали — но совсем не то, а иногда лучше бы вообще не проявляли инициативу. К сожалению, лажают не только сотрудники, но и руководители. Самое печальное в этом то, что работают далеко не дураки, но бывают такие глупые epic fail, что и говорить не хочется.



Вариантов, что с этим делать, довольно много. Я бы хотел рассказать об одном из подходов, который в моем случае сработал. По итогу количество косяков и взаимных конфликтов руководитель-подчиненный стало значительно меньше.
Читать дальше →
Всего голосов 84: ↑66 и ↓18 +48
Просмотры 65K
Комментарии 52

Terms of Service, Privacy Policy и License Agreement: ликбез для мобильного инди-разработчика

Блог компании KamaGames Studio Разработка мобильных приложений *Разработка игр *
Мы познакомились с Владиславом Архиповым во время питерской конференции WNCONF, где он выступал с докладом. В его выступлении особое внимание уделялось важной для нас теме трактовки gambling для social casino. В ходе разговора, в котором участвовали и другие коллеги, выяснилось, что юридическим моментам в своей работе инди-девелоперы уделяют очень мало внимания, создавая необходимые документы по остаточному принципу. Мы решили восполнить этот пробел и провести вместе с практикующим юристом небольшой “ликбез”.
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 17K
Комментарии 5

Продвинутые методы неявного вызова php кода, использующиеся во вредоносных скриптах

Информационная безопасность *Разработка веб-сайтов *PHP *
Логичным продолжением заметки про неявные вызовы php кода во вредоносных скриптах будет ее вторая часть, в которой я рассмотрю более сложные и менее очевидные варианты использования различных обработчиков и загрузчиков php, а в конце статьи приведу несколько примеров, как еще хакеры неявно вызывают вредоносный код и php скрипты на сайте.

В качестве примера вредоносного кода снова будем использовать вызов

echo 'Test'


Поскольку цель статьи показать различные подходы и механизмы скрытого выполнения кода, то для простоты функция, которая выполняет наш «вредоносный код» будет объявлена рядом с вызываемым ее неявно кодом. В реальной жизни вредоносный код и его вызов находятся далеко друг от друга, как минимум в разных php скриптах, но чаще код подгружается из базы данных, мета-данных изображений, с другого сервера, после чего выполняется функцией eval, assert, preg_replace и им подобными.

Читать дальше →
Всего голосов 59: ↑50 и ↓9 +41
Просмотры 21K
Комментарии 11

Простой мониторинг нагрузки на сервер в реальном времени с веб-интерфейсом

Ruby *
Сегодня существует довольно много профессиональных инструментов для мониторинга состояния серверов с обилием настроек, плагинов, поддержкой сразу множества машин и т.д., это известные Nagios, Zabbix, Munin, Cacti и многие другие.


Но в этом посте речь пойдет об очень маленьком и простом, но от этого не менее полезном инструменте: инструменте для мониторинга Scout Realtime. Этот написанный на Ruby open source проект позиционируется разработчиками как современная замена консольной утилите top с выводом статистики использования диска, памяти, сети, CPU и запущенных процессов. Все это отображается в реальном времени с плавными графиками. Во время диагностики работы сервера, иногда полезно пару минут понаблюдать за показателями, и проследить их изменение во времени (в отличие от гирлянды мерцающих чисел в терминале, отображающих данные исключительно на текущий момент).
Читать дальше →
Всего голосов 42: ↑38 и ↓4 +34
Просмотры 77K
Комментарии 34

Приемы неявного вызова php кода, применяемые во вредоносных скриптах

Информационная безопасность *Разработка веб-сайтов *
В процессе лечения сайтов обнаруживается множество разновидностей хакерских шеллов и бэкдоров. Скрипты отличаются функционалом и способом обфускации исходного кода, но у всех есть общая черта — это неявное объявление переменных и функций, а также косвенный вызов функций.

Данный подход популярен среди разработчиков вредоносного кода, так как с одной стороны значительно усложняет анализ исходного кода, а с другой позволяет хранить код в текстовых данных. Например, часть вредоносного кода может загружаться со стороннего сайта, из базы данных, мета-данных jpeg/png/gif или передаваться в запросе к скрипту. Кроме того, часть кода, представленная в виде обычной текстовой строки, может быть легко зашифрована.

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

Несмотря на все многообразие вредоносного кода, существует не так много вариантов объявления и косвенного вызова функций. Ниже представлены примеры различных техник скрытого вызова кода. Для простоты и наглядности пусть «вредоносный код» представлен вызовом

echo "Test"


который выводит слово «Test» на странице. Естественно, в реальных шеллах и бэкдорах имена переменных и функций, а также исполняемый код не хранятся в открытом виде и в большинстве случаев обфусцированы.

Читать дальше →
Всего голосов 95: ↑73 и ↓22 +51
Просмотры 33K
Комментарии 35

Лагерная игра «Торренты»

Разработка игр *
Наверняка немногие члены сообщества занимались разработкой невиртуальных игр. По этой причине я решил поделиться с вами кусочком своего многолетнего опыта, на примере одной игры, которая хоть как-то связанна с тематикой Хабрахабра.

Так уж получилось, что я довольно много занимаюсь неформальным образованием. Работа в детских и подростковых лагерях требует уметь преподнести нужную информацию так, чтобы людям было интересно её получать, и они хотели ещё и ещё. Обычно обучать детей нужно тому, что связанно с темой лагеря, а тема лагеря связана с тем, чего хотят спонсоры лагеря… Терпеть сухую информацию в лагерях никто не будет, по этой причине обычно информация доносится через разные мероприятия, в том числе игры. Очень часто вожатые просто адаптируют существующие игры, но я предпочитаю придумывать свои собственные. И вот мне захотелось создать игру, которая бы обучила ребят чему-то из IT-шной тематики. Так появилась игра «Торренты». Игра очень простая и не требует ничего кроме листов бумаги, карандашей и нескольких распечатанных картинок.



За один лагерь обычно приходится провести с десяток различных игр, начиная от больших длинных игр на весь лагерь и оканчивая маленькими короткими игрушками на один отряд в ~20 человек. Именно такой игрой и является игра «Торренты».
Я понял, что даже многие мои знакомые вообще себе не представляют, как работает система торрентов. Поэтому я решил наглядно показать их работу на самом поверхностном уровне.
Читать дальше →
Всего голосов 76: ↑73 и ↓3 +70
Просмотры 37K
Комментарии 47

Erlang для самых маленьких. Глава 3: Базовый синтаксис функций

Программирование *Erlang/OTP *Функциональное программирование *
Tutorial
imageДоброй ночи, Хабр! Мы продолжаем изучение Erlang для самых маленьких.

В прошлой главе мы рассмотрели как объявлять функции и как объединять их в модули. В этой главе мы рассмотрим синтаксис функций более подробно.


Хм, это интересно...
Всего голосов 31: ↑30 и ↓1 +29
Просмотры 20K
Комментарии 4

«Font-weight: bolder» для шрифтов со множеством начертаний

CSS *
Из песочницы
Если вы используете шрифт со множеством начертаний, то вам, вероятно, захочется, чтобы теги strong и b не увеличивали жирность шрифта до фиксированного значения font-weight:700, как это происходит по-умолчанию, а использовали промежуточные значения, рассчитанные исходя из жирности шрифта родительского элемента.
Ведь не очень красиво, когда в ультратонком шрифте появляются жирные кляксы тегов strong.

Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Просмотры 37K
Комментарии 8

jQuery Events изнутри

Блог компании Mail.ru Group JavaScript *jQuery *
Статья написана в рамках конкурса среди студентов Технопарка Mail.ru.
image

Думаю, JavaSript-библиотека jQuery в представлении не нуждается, но на всякий случай напомню, что jQuery призвана ускорить разработку, предоставить синтаксический “сахар” для нативного js и избавить разработчиков от проблем, связанных с кроссплатформенностью.
Прежде чем говорить о том, как устроена обработка событий в jQuery, нельзя не упомянуть об истории обработки событий в браузере.
Читать дальше →
Всего голосов 70: ↑65 и ↓5 +60
Просмотры 54K
Комментарии 2

Не дразните программиста

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

Вы устали? Хотите выпустить пар? Вам требуется передышка? Предлагаю вам присоединится ко мне, тем более, что на дворе пятница.
Читать дальше →
Всего голосов 424: ↑394 и ↓30 +364
Просмотры 166K
Комментарии 126

Кружок по программированию для школьников

Программирование *
image

Я хочу вам рассказать о том, как я организовал бесплатный кружок по программированию для детей в одной московской школе. Возможно, мой опыт будет полезным желающим заняться чем-то подобным, а ваши комметарии будут полезны мне сделать кружок лучше.

Где-то пол года назад я загорелся желанием открыть свой кружок по программированию для детей. Решил, что было бы замечательно набрать группу детей и обучить их полезному языку программирования и познакомить с основными технологиями, которые применяются совместно с программированием и смогут пригодиться в реальной жизни, например, работа с HTTP и базы данных.
Читать дальше →
Всего голосов 128: ↑120 и ↓8 +112
Просмотры 62K
Комментарии 90

Apple App Store. Получаем ERN

Блог компании LLC Tik-Tok Coach Разработка под iOS *
Tutorial
Перед загрузкой приложения на ревью в Apple App Store нам задают неожиданный вопрос, а не использует ли наше приложение криптографию?

image

И хотя соблазн ответить «нет» и загрузить наконец-то очень велик, и кто-то тихо шепчет, что ты мог и забыть про https или вообще не знать, как он работает, но совесть советует разобраться и в этом.
У меня много сил ушло, чтобы получить ERN(Encryption Registration approval from BIS), и я решил написать инструкцию.
Получаем ERN
Всего голосов 64: ↑63 и ↓1 +62
Просмотры 27K
Комментарии 26

Разработка Quick Look plugin для OS X

Разработка под iOS *
Tutorial
Quick Look — приложение в OS X, которое создает thumbnails (иконки) и previews (окно с описанием/содержимым файла по нажатию пробела в Finder). Оно поддерживает ряд стандартных файлов, для не поддерживаемых можно устанавливать QL plugins — генераторы иконок и/или превью. Они имеют формат .qlgenerator, размещаются в ~/Library/QuickLook и /Library/QuickLook.

Я пишу приложения под iOS, иногда под OSX. Со сторонними QuickLook генераторами столкнулся, когда увидел плагин для первью .mobileprovisionProvisioning.
.mobileprovision/.provisionprofile — профиль, содержащий сертификаты, допущенные для установки устройства, некоторые параметры для развертывания iOS & OSX приложений.

Вот так папка с профилями выглядит без всяких плагинов для Quick Look:

Выбирать профиль напрямую необходимо, например, при использовании его в скрипте для автоматического развертывания приложения по TestFlight. Понять для какого приложения какой профиль брать — совершенно невозможно.

Сперва я стал использовать open-source Provisioning, потом закрытый, но более красивый и подробный ipaql. Необходимость написания своего открытого решения возникла после того, как автор ipaql добавил совместимость с OS X Mavericks лишь спустя полгода после выхода системы, а отображение иконок не починил до сих пор.

Вот что у меня получилось — ProvisionQL.
Поддерживаемые типы файлов для создания иконок и превью:
  • .ipa — iOS packaged application (как из Xcode, так и из AppStore)
  • .app — iOS application bundle
  • .mobileprovision — iOS provisioning profile
  • .provisionprofile — OSX provisioning profile



Под катом я расскажу об основных шагах при создании Quick Look плагинов.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Просмотры 11K
Комментарии 12

Информация

В рейтинге
Не участвует
Откуда
Тверь, Тверская обл., Россия
Дата рождения
Зарегистрирован
Активность