Как стать автором
Обновить
3
0
Ильмир Усманов @ilmirus

Пользователь

Отправить сообщение

Почему веб-приложения на мобильных платформах работают медленно

Время на прочтение34 мин
Количество просмотров66K
От переводчика
Это перевод статьи Drew Crawford «Why mobile web apps are slow», опубликованной 09 июля 2013. Статья очень интересная, но большая — ошибки возможны — прошу простить и присылать замечания в личку.
Поскольку затронута острая тема, прошу заметить, что переводчик не обязательно разделяет мнение автора статьи!
При переводе текст слегка видоизменялся, поскольку прямой перевод не всегда понятно передает смысл. Для перевода термина «native code» был использован англицизм «нативный код», который понятнее и короче, чем «родной для платформы код». Термин «word processing» переводится как «верстка текста», хотя это немного сужает первоначальный смысл. Термин managed код («управляемый код») не был переведен, так как удачного перевод (на взгляд переводчика) не существует. Под «терминированием» приложения подразумевается его принудительное завершение операционной системой.
Повествование в статье ведется от первого лица: автора статьи.


Читать статью
Всего голосов 156: ↑150 и ↓6+144
Комментарии74

Введение в теорию магии

Время на прочтение8 мин
Количество просмотров57K
Первая статья из цикла «Теория магии» носит обзорный характер. Ее цель — сформулировать основные вопросы рассматриваемой дисциплины преимущественно на качественном уровне, а так же разъяснить, какие принято выделять субдисциплины, и как аспекты, находящиеся в центре их внимания, связаны между собой.
Читать дальше →
Всего голосов 93: ↑79 и ↓14+65
Комментарии53

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Время на прочтение5 мин
Количество просмотров172K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

Читать дальше →
Всего голосов 385: ↑339 и ↓46+293
Комментарии185

Каково быть слабым в математике

Время на прочтение3 мин
Количество просмотров210K
Я, как учитель математики нередко разочаровываюсь в учениках. Они прогуливают. Они ленятся. Они плачут, словно младенцы, если у них отнять калькуляторы. Но хуже всего то, чего они не делают. Не задают вопросов. Не записывают. Не исправляют тесты, даже если это может повысить их общий балл. Разве их не волнуют их неудачи в учебе?



Существует много объяснений такого поведения: лень, равнодушие, отвлекающие внешкольные факторы и т.д. Но если спросите меня, то я назову более глубокую причину: незнание математики заставляет чувствовать себя глупо. А это неприятно.
Читать дальше →
Всего голосов 159: ↑131 и ↓28+103
Комментарии235

Проприетарный код драйвера exFAT нелегально опубликован под GPL

Время на прочтение1 мин
Количество просмотров31K
После утечки исходников проприетарной реализации драйвера exFAT от компании Samsung код этого драйвера разошёлся по сети. В списке рассылки GPL-violations.org обращают внимание на возмутительный факт. Некто взял код, стёр оттуда все упоминания оригинальной лицензии Samsung — и опубликовал его на Github под лицензией GPL.

Хуже того, этот парень (или девушка) не реагирует на замечания и грубит в комментариях.
Читать дальше →
Всего голосов 71: ↑50 и ↓21+29
Комментарии56

Лямбда-выражения бэкпортированы в Java 7, 6 и 5

Время на прочтение1 мин
Количество просмотров20K

Хотите использовать лямбда-выражения, но вынуждены использовать стабильный JRE? Теперь это возможно с утилитой Retrolambda, которая преобразует байткод Java 8 в пригодный для рантаймов Java 7, 6 и 5, позволяя использовать лямбда-выражения и ссылки на методы на этих платформах. Конечно, придется отказаться от улучшенного Java 8 Collections API, но, к счастью, существует множество альтернативных библиотек, работа с которыми упростится благодаря лямбда-выражениям.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии12

Основная особенность наших разработчиков

Время на прочтение9 мин
Количество просмотров226K
Недавняя статья, сравнивающая русских разработчиков с иностранными навеяла. И мне есть что сказать по этому поводу.

Андрей, музыкант

Эта статья переработана из внутренней инструкции, которую я написал для вновь нанятых русскоязычных разработчиков. Для хабра адаптировал, подсократил и убрал излишне категоричные и нецензурные фразы. (Пусть ваша фантазия не жалеет выражений)
Для живости иллюстрирую историями из моей жизни.

По-моему, эта статья — самое важное, что я в жизни сделал. Не самое сложное, объёмное или интересное, а важное.

Описываю я тут всего лишь одну особенность русских разработчиков и капитаню по-всякому, но это ключевая особенность, отличающая наших разработчиков, тестировщиков и даже звукорежиссёров, как оказалось. История Макаревича под катом.

Далее: реальные истории из моей жизни, описание проблемы, аргументы, англо-русский ликбез, а также сравнение американских, европейских, японских и наших разработчиков с точки зрения тимлида.
Читать дальше →
Всего голосов 425: ↑316 и ↓109+207
Комментарии344

Занимательный C++: Счетчик времени компиляции

Время на прочтение5 мин
Количество просмотров19K
Предлагается разработать безопасную альтернативу встроенного макроса __COUNTER__. Первое вхождение макроса заменяется на 0, второе на 1, и так далее. Значение __COUNTER__ подставляется на этапе препроцессирования, следовательно его можно использовать в контексте constant expression.

К сожалению, макрос __COUNTER__ опасно использовать в заголовочных файлах — при другом порядке включения заголовочных файлов подставленные значения счетчика поменяются. Это может привести к ситуации, когда например в foo.cpp значение константы AWESOME равно 42, в то время как в bar.cpp AWESOME≡33. Это нарушение принципа one definition rule, что есть страшный криминал во вселенной C++.

Нужна возможность использовать локальные счетчики вместо единого глобального (как минимум, для каждого заголовочного файла свой). При этом возможность использовать значение счетчика в constant expression должна сохраниться.

По мотивам этого вопроса на Stack Overflow.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии5

Особенности русской разработки

Время на прочтение8 мин
Количество просмотров284K
image

По роду занятий я часто общаюсь с различными русскими и западными командами. Очень частый вопрос — есть ли какая-нибудь специфика в работе наших и как это влияет на разработку?

Есть очень неплохая книжка о специфике работы русских вообще. Она называется «Русская модель управления». Ее написал А.П.Прохоров (другой, не олигарх). Не буду ее пересказывать. Основная идея в том, что русские по своей природе могут работать только в двух модах. В нестабильном состоянии они могут свернуть горы. В это время мотивация очень высокая. В стабильном расслабленном состоянии — когда никто не пинает — русские вроде как работают плохо и не сильно утруждаются.

Книга замечательная и действительно многое объясняет в нашей истории. Обязательно прочтите, если не читали. Но я не готов ее рекомендовать как непосредственное руководство к действию. Выводы из нее следуют довольно-таки однозначные и не очень лестные для страны в целом. Однако на самом деле все не так плохо. Наша специфика не является абсолютно контрпродуктивной. Она дает и преимущества и недостатки.

Еще один дисклеймер: на реальное поведение людей действует сложившаяся культура в а) команде б) организации в) стране. Причем именно в этом порядке. Есть «прозападные» компании, где влияние наших культурных кодов очень небольшое. В чисто российских компаниях оно просто огромно. Но реально заметить разницу можно только увидев, как различные культуры сталкиваются друг с другом.

Я буду приводить влияние разных факторов в порядке их важности и силы влияния. Чем выше — тем сложнее это изменить и тем больший эффект это оказывает.
Читать дальше →
Всего голосов 531: ↑513 и ↓18+495
Комментарии420

Беседа Линуса Торвальдса со студентами университета Аалто (23.10.2012)

Время на прочтение35 мин
Количество просмотров46K


Приветствую, Хабр!

Однажды я наткнулся в YouTube на это видео с Линусом Торвальдсом и с огромным удовольствием его посмотрел, узнал много интересного для себя и к своему удивлению обнаружил, что на Хабре оно осталось незамеченным, особенно учитывая то, что предыдущее его общение со студентами из этого университета многим хорошо известно из-за случая внезапного пиара nVidia со стороны Линуса. Не знаю, может я плохо искал, но, в любом случае, беседа ведется на английском языке и длится более часа и, возможно, кто-то из вас не очень хорошо им владеет, поэтому я решил перевести ее для вас в текст на русском языке и опубликовать на Хабре. Итак, тем, кто хочет узнать что сейчас Линус делает в Linux, как он борется с прокрастинацией, что он думает о Linux на мобильных устройствах, что для него важнее в Linux, юзабилити или безопасность, как он относится к производителям железа, на чем зарабатывает, как отдыхает, программируют ли его дети и многое-многое другое — добро пожаловать под кат!
Продолжай, я заинтригован...
Всего голосов 122: ↑118 и ↓4+114
Комментарии19

«constexpr» функции не имеют спецификатор «const»

Время на прочтение3 мин
Количество просмотров16K
Просто хотел Вас предупредить: С++14 не будет обратно совместим с C++11 в одном аспекте constexpr функций.

В С++11, если Вы определите constexpr функцию-член, то она неявно получит спецификатор const:
// C++11
struct NonNegative
{
  int i;
  constexpr int const& get() /*const*/ { return i; }
  int& get() { return i; }
};

Первое объявление функции get получит спецификатор const, даже если мы не укажем это явно. Следовательно, эти две функции являются перегруженными: const и не-const версии.

В С++14 это будет уже не так: оба объявления будут определять одиннаковую, не-const версию функции-члена с различающимися возвращаемыми значениями — это приведет к ошибке компиляции. Если Вы уже начали использовать constexpr функции и надеетесь на неявный спецификатор const, то я советую Вам начать добавлять его явно, чтобы Ваш код продолжал компилироваться, если Вы решите перейти на компиляторы С++14.
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии26

Return by value и const variables в C++11

Время на прочтение3 мин
Количество просмотров25K
Во многих языках программирования существует возможность объявлять объекты и переменные константными. И, соответственно, существуют рекомендации делать так, если Вы не собираетесь менять их значения. С приходом нового стандарта, в С++ появилась рекомендация возвращать объекты из функций по значению, потому что даже без RVO можно повысить производительность программы, за счет использования семантики перемещения. Что же будет, если использовать эти две рекомендации вместе: вернуть константный объект по значению? Попробуем разобраться далее.
Читать дальше →
Всего голосов 40: ↑36 и ↓4+32
Комментарии8

Qt Graphics Framework — темная сторона. Часть 1

Время на прочтение4 мин
Количество просмотров30K
В первой статье я рассказывал как мог о достоинствах фреймворка. Сегодня я попытаюсь рассказать о его темной стороне, плохо освещенной в документации.

Дело №1


Мы хотим изменять размер сцены и объектов в ней согласно размеру отображаемого окна. В доке сказано:«QGraphicsView takes ownership of the viewport widget». Ну что-ж, создадим простейшим проект и напишем следующее:
Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии5

Красота и мощь Qt Graphics View Framework на примере

Время на прочтение9 мин
Количество просмотров69K
На мой взгляд Qt Graphics Scene FrameWork — мощный инструмент, незаслуженно обделенный вниманием на Хабре. Я попытаюсь исправить ситуацию, посвятив ему цикл статей. И в этой, пилотной, статье покажу как можно программировать с помощью этого замечательного фреймворка на примере более-менее реальной задачи.
Подробности
Всего голосов 35: ↑31 и ↓4+27
Комментарии18

Роскомнадзор признаёт хентай детским порно, призывает к подаче жалоб, обещает пополнение реестра запрещённых ресурсов в Интернете

Время на прочтение4 мин
Количество просмотров199K
Чуть больше двух месяцев тому назад (11 апреля 2013 г.) в новости «Роскомнадзор занялся мультипликационной порнографией» на сайте «Известий» можно было прочесть, что москвич Владимир Голованов, действуя под влиянием убеждения в том, что «стиль японских порномультфильмов хентай изначально предполагает персонажей неясного возраста с кукольными, детскими лицами» (это цитата), подал в Роскомнадзор жалобу с просьбою признать эти анимационные произведения относящимися к разряду порнографии с участием несовершеннолетних. Тогда же и там же можно было прочесть, что эксперты Лиги безопасного Интернета (ЛБИ) считают, что хентай — это и есть детское порно. («Если Роскомнадзор попросит провести экспертизу, то наш экспертный центр подготовит заключение. Мы, скорее всего, будем говорить, что это детская порнография», — объявил директор ЛБИ Денис Давыдов.)

Так и вышло. Вчера (13 июня) в новости «Роскомнадзор признал мультфильмы детской порнографией» на сайте «Известий» стало можно прочесть, что «у экспертов не вызвало сомнения, что анимированные герои представлены в образе несовершеннолетних и при этом участвуют в порнографических сценах». Ведомство попросило москвича Голованова подать повторную жалобу: Роскомнадзор объявил, что после этого анимационные видеозаписи, признанные детской порнографией, будут внесены в реестр запрещённых ресурсов. Упоминается также намерение Антона Коробкова-Землянского (члена Общественной палаты) внести изменения в закон «О защите детей от информации, причиняющей вред их здоровью и развитию», в понятие порнографии добавив анимацию (в том числе — трёхмерную).

Это изменение в правоприменительной практике можно и нужно считать качественным изменением. Не видеозапись факта полового сношения с реальным ребёнком и даже не какое-либо игровое кино с участием живых актёров, а всего лишь графическое художественное изображение, причём основанное не на реальных событиях (допустим, полученное ротоскопированием фотографий или зарисовкою детей-натурщиков), а являющееся плодом свободной фантазии изобразителей, всё же было признано аналогичным детскому порно. Юридически аналогичным.

Читать дальше →
Всего голосов 237: ↑203 и ↓34+169
Комментарии1070

Потоки, блокировки и условные переменные в C++11 [Часть 1]

Время на прочтение8 мин
Количество просмотров442K
В первой части этой статьи основное внимание будет уделено потокам и блокировкам в С++11, условные переменные во всей своей красе будут подробно рассмотрены во второй части
Читать дальше →
Всего голосов 67: ↑67 и ↓0+67
Комментарии14

Когда-то я говорил…

Время на прочтение2 мин
Количество просмотров173K
Когда-то я* говорил, что без идеального задокументированного кода с многоуровневой плагинной архитектурой заказчик будет мучиться в конвульсиях каждый раз, когда его пальцы будут соприкасаться с клавиатурой. Теперь я заказчик и понимаю, что мне нафиг не нужен идеальный код, депенденси инджекшены и два синьора по цене одного. Главное, чтобы работало и было сделано в срок. И желательно бесплатно.

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

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

Когда-то я говорил, что главное в любом проекте – правильный процесс. Ну и еще печеньки. Теперь у меня только православный скрам, настоянный на канбане, но проекты факапятся с таким же успехом.
Читать дальше →
Всего голосов 530: ↑347 и ↓183+164
Комментарии161

Скорости разработки и исполнения, не достижимые на С

Время на прочтение20 мин
Количество просмотров59K
В продолжении статьи о кроссплатформенной и кросс-аппаратной оптимизации, на примере задачи поиска полным проходом по таблице из 5 полей и 10 000 000 строк, и неизбежности этой задачи даже при индексном поиске, я покажу как ускорить такой поиск в 3.5-5.3 раза с использованием C++ независимо от аппаратной платформы.
В предыдущей статье нам удалось ускорить поиск в 1.3 раза: GitHub.com
Мы не будем банально описывать конструкции языка, а покажем преимущества C++ при решении одного из этапов реальной задачи.
Мы по-прежнему пишем кроссплатформенно под MSVC11(MSVS2012) и GCC 4.7.2, и используем в них C и частично реализованный стандарт C++11.
Для упрощения понимания мы все ещё пишем без индексного поиска, но это решение в дальнейшем будет использоваться при индексном поиске.
Читать дальше →
Всего голосов 165: ↑150 и ↓15+135
Комментарии41

Intel представит Tizen для разработчиков на DevConf 2013 — 14 июня

Время на прочтение1 мин
Количество просмотров6.8K
imageTizen является программной платформой, основанной на открытом исходном коде, поддерживаемой ведущими операторами мобильной связи, производителями устройств и поставщиками наборов микросхем.

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

imageВ рамках конференции DEVCONF 2013 сотрудники Intel проведут Developer Lab (тренинг) по созданию приложений, основанных на веб-технологиях.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии27

Путешествие через вычислительный конвейер процессора

Время на прочтение16 мин
Количество просмотров134K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →
Всего голосов 160: ↑159 и ↓1+158
Комментарии43

Информация

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