В догонку давно ушедшим «Дням иммиграции» на Хабре представляю вашему вниманию свою success story. В статье пойдет речь о получении иностранного образования и предназначенна, главным образом, для младшего и среднего звена хабралюдей.
User
Собеседование на программиста в Amazon
7 min
127KTranslation
Представляю вашему вниманию перевод своей статьи Amazon software engineer interview, изначально опубликованной на английском на sobit.me.
Не так давно со мной связался технический рекрутер из Amazon. Компания организовывала трехдневное онсайт собеседование по найму программистов в их берлинский офис.
Весь процесс, начиная с того, как со мной связались, и заканчивая подписью контракта, занял около двух месяцев. Я хотел бы поделиться опытом, как все прошло, и что, на мой взгляд, помогло мне получить работу.
Если я не упомянул чего-то важного в статье, спрашивайте в комментариях. Постараюсь ответить максимально подробно.
+53
Кюветы Android, Часть 2: SDK и Libraries
10 min
23KРазрабатывая под Android, всегда нужно быть начеку. Шаг влево / шаг вправо — и вот прошел ещё один час за дебагом. Кюветы могут быть какие угодно: начиная от обычных багов в SDK и заканчивая неочевидными именами методов с контекстно зависимым результатом (да-да, Fragment.getFragmentManager(), это я о тебе).
В предыдущей статье были описаны кюветы «на поверхности» SDK, в которые угодить очень легко. На этот же раз кюветы будут поглубже, помудрёнее и поспецифичнее. Также будет несколько моментов, связанных с Retrofit 2 & Gson.
В предыдущей статье были описаны кюветы «на поверхности» SDK, в которые угодить очень легко. На этот же раз кюветы будут поглубже, помудрёнее и поспецифичнее. Также будет несколько моментов, связанных с Retrofit 2 & Gson.
+22
Favicons, Touch Icons, Tile Icons и т. д. Что выбрать?
6 min
154KTranslation
От переводчика.
Это перевод статьи Филипа Бернарда с сайта css-tricks.com. Часть статьи, содержащую описание работы с созданным им сервисом, я позволил себе опустить. Если вы найдете ошибки, просьба сообщить о них в личном сообщении.
Статья содержит результаты проведенного им исследования, каким должен быть фавикон (и то что его заменяет), чтобы хорошо отображаться в различных случаях.
Фавикон был представлен в 1999 году, в Internet Explorer 5 (источник) и стандартизирован W3C несколько месяцев спустя. Это была маленькая иконка, представляющая сайт.
С тех пор большинство настольных браузеров следуют тенденции и используют фавикон тем или иным способом. Это очень просто, не так ли? Создать маленькую картинку и добавить в любой интернет-проект, чтобы сделать его «завершённым». Ничего сложного.
Это перевод статьи Филипа Бернарда с сайта css-tricks.com. Часть статьи, содержащую описание работы с созданным им сервисом, я позволил себе опустить. Если вы найдете ошибки, просьба сообщить о них в личном сообщении.
Статья содержит результаты проведенного им исследования, каким должен быть фавикон (и то что его заменяет), чтобы хорошо отображаться в различных случаях.
Фавикон был представлен в 1999 году, в Internet Explorer 5 (источник) и стандартизирован W3C несколько месяцев спустя. Это была маленькая иконка, представляющая сайт.
С тех пор большинство настольных браузеров следуют тенденции и используют фавикон тем или иным способом. Это очень просто, не так ли? Создать маленькую картинку и добавить в любой интернет-проект, чтобы сделать его «завершённым». Ничего сложного.
+69
Использование сканера уязвимостей OpenVAS
4 min
150KСканеры уязвимостей — это программные или аппаратные средства, служащие для осуществления диагностики и мониторинга сетевых компьютеров, позволяющее сканировать сети, компьютеры и приложения на предмет обнаружения возможных проблем в системе безопасности, оценивать и устранять уязвимости. (Википедия).
Известными коммерческими сканерами являются Nessus, GFI LANguard, XSpider.
В отличии от прочих, OpenVAS бесплатен, работает без каких либо ограничений и может пригодится как сетевым администраторам, так и специалистам ИБ для выявления актуальных проблем своей инфраструктуры.
Известными коммерческими сканерами являются Nessus, GFI LANguard, XSpider.
В отличии от прочих, OpenVAS бесплатен, работает без каких либо ограничений и может пригодится как сетевым администраторам, так и специалистам ИБ для выявления актуальных проблем своей инфраструктуры.
+35
Налоговый суслик. Особенности упрощенной системы налогообложения при работе по договорам с Apple, Google и другими
46 min
54KВ данной статье я постараюсь провести краткий юридический ликбез для разработчиков по некоторым положениям Гражданского кодекса, имеющим значение в контексте деятельности индивидуальных предпринимателей и организаций, применяющих упрощенную систему налогообложения, в работе по договорам с Apple, Google и другими компаниями, а также обратить внимание на некоторые не всегда очевидные налоговые нюансы, которые, как показал личный опыт изучения данной темы, довольно часто ускользают от внимания разработчиков или вызывают множество вопрос и споров.
Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.
Из материала вы узнаете:
Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.
Из материала вы узнаете:
- Почему разработчику желательно обладать хотя бы базовой юридической грамотностью
- Чем с точки зрения Гражданского кодекса являются игры и приложения и какие права на них есть у разработчиков помимо авторского права
- Что такое агентский договор и почему все это важно при работе по договору с Apple или Google
- Кто такой налоговый суслик и почему он может превратиться в пушного зверя
- Какой «подвох» существует для применяющих «упрощенку» в части определения налоговой базы
- Почему налог на добавленную стоимость (НДС) продолжает преследовать нас, даже когда мы не являемся его плательщиками
- Как, с точки зрения Федеральной налоговой службы, облагаются НДС внутриигровые покупки (InApp Purchases)
+32
Магия тензорной алгебры: Часть 4 — Динамика точки в тензорном изложении
8 min
32KСодержание
- Что такое тензор и для чего он нужен?
- Векторные и тензорные операции. Ранги тензоров
- Криволинейные координаты
- Динамика точки в тензорном изложении
- Действия над тензорами и некоторые другие теоретические вопросы
- Кинематика свободного твердого тела. Природа угловой скорости
- Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
- О свертках тензора Леви-Чивиты
- Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
- Получаем вектор угловой скорости. Работаем над недочетами
- Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
- Параметры Родрига-Гамильтона в кинематике твердого тела
- СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
- Нестандартное введение в динамику твердого тела
- Движение несвободного твердого тела
- Свойства тензора инерции твердого тела
- Зарисовка о гайке Джанибекова
- Математическое моделирование эффекта Джанибекова
Введение
Итак, настал момент применить на практике всё то, о чем мы так долго рассуждали теоретически. Данная заметка будет использовать в основном материал предыдущей статьи, в которой есть ссылки на предыдущие публикации по тензорной тематике.
А заниматься мы будем механикой. Именно решение задач механики и побудило меня разбираться с тензорным исчислением. И поговорим мы об уравнениях Лагранжа 2 рода, которые применяются для анализа движения сложных механических систем. Эти уравнения имеют вид, хорошо известный большинству специалистов в данной области
где s — число степеней свободы механической системы; — обобщенная координата; — кинетическая энергия механической системы; — обобщенная сила.
Те, кто сталкивался с этими уравнениями наверняка замечали, что после выполнения трехкратного дифференцирования кинетической энергии получаются выражения, представленные линейной комбинацией вторых производных от обобщенных координат и линейной комбинации произведений их первых производных. И это, по крайней мере меня, наводило на мысль о том, что кинетическую энергию можно продифференцировать один раз в общем виде, а потом просто составлять уравнения движения, используя полученные выражения общего вида. Только вот попытки проделать это самостоятельно не приводили меня к успеху.
Тем не менее это можно сделать, если опираться на тензорное исчисление, в общем и не прибегая к дифференцированию кинетической энергии (хотя такой подход тоже возможен). И мы сделаем это в данной статье, правда пока только для точки, и заодно решим какую-нибудь не слишком сложную задачку, иллюстрирующую эффективность рассмотренного подхода.
Что же, начнем!
+32
Адаптивное многоуровневое меню сайта с саморегистрируемыми пунктами на основе директивы AngularJS
24 min
15K Существует вполне обоснованное мнение, что найденный в Интернете чужой код намного лучше собственноручно написанного, т.к. его уже оттестировали тысячи ленивых разработчиков. Собственно поэтому, когда передо мной возникла задача, описанная в названии статьи, я решил не изобретать велосипед, а найти готовое решение. К моему удивлению, ни на англоязычных, ни на русскоязычных ресурсах ничего подходящего под мои запросы на основе ангуляра я не нашел. Поэтому было принято решение написать код самостоятельно и поделиться им с общественностью.
Возможности меню, реализованные в данной статье:
Исходный код директивы можно посмотреть тут.
Возможности меню, реализованные в данной статье:
- Вся начинка меню спрятана под капотом директивы. При верстке html страницы указывается лишь DOM-элемент с директивой, что повышает читабельность кода.
- У меню есть возможность создавать пункты с бесконечным уровнем вложенностей.
- Подсветка активной страницы в меню осуществляется не только на первом уровне, но и на любом уровне вложенности.
- Возможность зарегистрировать пункт меню на этапе конфигурации приложения.
- Возможность отображения/сокрытия конкретных пунктов меню в зависимости от прав доступа текущего пользователя.
Исходный код директивы можно посмотреть тут.
+4
Полезные плагины Wordpress. OptionTree — страница настроек сайта
5 min
32KВ силу того, что большинство разрабатываемых мною сайтов создается с использованием CMS Wordpress и приходится постоянно сталкиваться с нетривиальными задачами, решил делиться с вами опытом использования различных плагинов. Как бесплатных так и платных, причем попробую придерживаться такого формата: одна статья — один плагин. Постараюсь рассматривать только действительно заслуживающие внимания разработки, и вот в первом своем рассказе поведаю вам об OptionTree — прекрасное, на мой взгляд, решение для создания страницы с пользовательскими настройками сайта.
+8
Не Таиландом единым или Как фрилансеру за три часа поменять место обитания без проблем с визами
10 min
51KС падением курса рубля жизнь фрилансера-путешественника сильно осложнилась. Однако если все же заработок позволяет, а европейского гостеприимства, как и солнца, ох как не хватает в России – добро пожаловать в восемь стран, где фрилансер найдет покой и красивую картинку позади монитора без проблем и волнений с оформлением виз.
Маршруты кочевников за полторы тысячи лет не поменялись. Но нравы стали помягче
Маршруты кочевников за полторы тысячи лет не поменялись. Но нравы стали помягче
+59
Тест бесплатных программ для восстановления данных. Версия читателей Хабра
7 min
93KПриветствую всех Хабровчан!
В предыдущей статье мы протестировали пятерку бесплатных программ для восстановления данных. В комментариях пользователи Хабра заметили, что мы не уделили внимание программам, которые в свое время, возможно, эффективно спасали данные, и предложили ещешесть восемь других программ для восстановления данных. Вот они:
Мы протестировали их. Результаты тестов ниже.
Внимание! Много скриншотов.
UPD Добавлены тесты еще двух утилит.
В предыдущей статье мы протестировали пятерку бесплатных программ для восстановления данных. В комментариях пользователи Хабра заметили, что мы не уделили внимание программам, которые в свое время, возможно, эффективно спасали данные, и предложили еще
- R.Saver 2.8
- Handy Recovery 5.5
- GetDataBack 1.0
- PhotoRec/TestDisk 7.0
- RecoveRx 3.0
- DMDE 2.10.2
- Zero Assumption Recovery 9.2
- Active@ File Recovery 14
Мы протестировали их. Результаты тестов ниже.
Внимание! Много скриншотов.
UPD Добавлены тесты еще двух утилит.
+38
Первые 6 лекций онлайн школы Android-разработчиков
2 min
38KЧуть больше месяца назад мы совместно с Google стартовали онлайн школу Android-разработчиков и сегодня хотим подвести промежуточные итоги.
За этот месяц:
— в школе зарегистрировалось 18 000 человек
— мы охватили русскоговорящее Android-сообщество из России, СНГ, Европы, США, Канады, Сингапура и Китая
— было выпущено 6 лекций от JetBrains, Parallels, Kaspersky Lab, LinguaLeo и Тинькофф Банк (посмотреть их вы можете на сайте школы)
Целью школы LearnDroid было поднять уровень интереса к разработке под Android и собрать материал от ведущих разработчиков, курс не был предназначен заменить университетское образование.
Чтобы начинающим разработчикам было легче изучать Android, мы попросили лекторов составить список литературы и статей, которые необходимо прочитать, чтобы стать гуру Android-разработки.
За этот месяц:
— в школе зарегистрировалось 18 000 человек
— мы охватили русскоговорящее Android-сообщество из России, СНГ, Европы, США, Канады, Сингапура и Китая
— было выпущено 6 лекций от JetBrains, Parallels, Kaspersky Lab, LinguaLeo и Тинькофф Банк (посмотреть их вы можете на сайте школы)
Целью школы LearnDroid было поднять уровень интереса к разработке под Android и собрать материал от ведущих разработчиков, курс не был предназначен заменить университетское образование.
Чтобы начинающим разработчикам было легче изучать Android, мы попросили лекторов составить список литературы и статей, которые необходимо прочитать, чтобы стать гуру Android-разработки.
+27
Собеседование на должность JavaScript разработчика
4 min
287KНедавно прочитал неплохой пост на тему поиска работы QA и подумал, что похожий пост был бы полезен для JavaScript разработчиков. В конечном счёте, веб движется вперед семимильными шагами, и соискателей на позицию JavaScript программиста хоть отбавляй (разумеется, хороших всегда меньше).
+104
Указатели, ссылки и массивы в C и C++: точки над i
10 min
620KTutorial
В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.
Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):
Обозначения и предположения
- Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
- Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
- Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как
int TYPE[2]
; - Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как
int TYPE
,int *TYPE
и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи; - «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
- Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.
Указатели и ссылки
Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):
int x;
int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель
+26
Преобразование растрового графика в таблицу данных
5 min
36KВведение
Такие задачи иногда возникают. Например, совсем недавно мне в руки попали данные натурного эксперимента, проводившегося 10 лет назад. Те графики, которые мне необходимы, оказались оформлены в виде… обычных растровых *.bmp-файлов. Таблиц со значениями среди материала по эксперименту не оказалось. А таблицы значений очень бы пригодились, ведь эти данные надо сравнить с моими результатами моделирования, а потом оформить всё это дело на должном уровне.
Эта проблема возникала ещё пару раз в прошлом. Например, когда я помогал моей любимой женщине делать курсовой по электрическим машинам — расчеты вели в Maple, а большинство расчетных данных имелись в учебнике Копылова в виде графиков. И это тоже растр. И много было попорчено крови, прежде чем нужные таблицы было вбиты нами в программу.
В общем, если у человека нет проблем, он их придумывает, чтобы успешно и героически их решать. Почесав затылок и вооружившись гуглом я стал искать не слишком болезненное решение задачи.
Понятно, что первый этап — растровые графики надо превратить в векторные. А из векторного формата, особенно если он открытый, числовые даные можно вытащить, маштабировать и превратить в таблицу.
Первым делом я опробовал Inkscape. Редактор этот я использую очень часто — несмотря на то что начало работы с ним давалось тяжело, на сегодня он — главный инструмент для рисования различных картин для статей, докладов и прочей научной документации.
Однако автоматические средства векторизации с задачей не справились, вернее справились, но не так как хотелось бы. Вполне возможно, что я не до конца разобрался с ними. В любом случае, попытки использовать Inkscape были оставлены на неопределенный срок и взор снова обратился к гуглу.
Ответ был найден… на ЛОРе! Ответом стал — Easy Trace Pro. По словам авторов эта программа — интелектуальный трассировщик картографических данных, и предназначена для векторизации карт.
Данная программа — проприетарное ПО для OS Windows, однако, вместе с платной версией 9 авторами предалагается полнофункциональная предыдущая версия — 7.99 для бесплатного скачивания и неограниченного использования. Кроме того, на сайте есть инструкция по запуску Easy Trace с помощью wine. Последнее я не пробовал — запустил виртуальную машину с виндой и установил бесплатную версию.
Результат превзошел мои ожидания. Возможно, использованная техника это очередной «велосипед», но она дала свои плоды, и если Вам это тоже интересно — прошу под кат.
+34
Дайджест хороших образовательных программ для IT-специалистов и сочувствующих: в Москве и онлайне
5 min
86KПозавчера мы ради интереса прошлись по компаниям, сидящим по-соседству — даже в самых стабильных задумываются о сокращении штатных расписаний и урезают бюджеты на обучение сотрудников.
Так что прокачивание своих навыков, будь ты уже знаком с кодом или только думаешь об этом, — теперь, похоже, личное дело каждого. Чтобы было проще сориентироваться, мы собрали курсы и полезные события для начинающих и продолжающих IT-специалистов и их окружения. Дневные и вечерние, оффлайновые и онлайновые.
Не забывай — количество мест на самых привлекательных курсах обычно ограничено и заканчивается стремительно! А некоторые так и просто стартуют совсем скоро — запрыгивай в уходящий поезд!
+30
2000 человек, 3K проектов в год: что такое PPM, и зачем это нужно вам
9 min
37KTutorial
Пример ресурсного плана, где мы видим распределение сотрудников по задачам на несколько месяцев вперёд. У одного из них будет перегрузка через 3 месяца.
Одна из главных проблем руководителя — это получение актуальной информации о ходе проектов, за результаты которых он отвечает. По моей практике, до внедрения PPM руководители тратят очень много времени просто на то, чтобы проверить, что всё везде идёт по плану. Грубо говоря, 60% рабочего времени может уходить просто на то, чтобы понять, что все справляются, и вмешиваться не надо. С другой стороны, после внедрения PPM всю эту работу делать уже не надо – она делается автоматически системой. А вам только приходят алерты для ситуаций, в которых требуется внимание. Получается удобный и очень практичный инструмент управления по исключениям.
Ниже — короткий ликбез про то, что это вообще такое, когда и для чего внедряется, как суровая российская реальность меняет процессы и несколько советов из практики. И рассказы про 4 самых интересных внедрения из моей практики.
+26
Защита игр и мобильных приложений от взлома для чайников (Unity, C#, Mono)
8 min
71KTutorial
Всем снова здравствуйте! Дошли руки написать крутую статью на весьма важную тему для разработчиков игр. Итак, поговорим о защите ваших драгоценных игр и приложений, которые вы пилите на Unity в надежде заработать на буханку хлеба, от взлома злобными школьниками. Почему школьниками? Потому что надежной на 100% защиты априори быть не может. И кто захочет, все равно взломает. Вопрос лишь в том, сколько времени и сил он на это потратит. И как любят шутить безопасники — терморектальный криптоанализ никто не отменял.
Итак, в статье я постараюсь максимально доступно рассказать о 3 аспектах (и конечно, предложу реализацию):
Итак, в статье я постараюсь максимально доступно рассказать о 3 аспектах (и конечно, предложу реализацию):
- защита данных приложения (сейвов)
- защита памяти приложения
- защита внутриигровых покупок (Google Play)
+21
Имитационное моделирование: создание терминов
5 min
29KИстория создания терминов
При создании методики по имитационному моделированию мне понадобилось разобраться с терминами. Проблема была в том, что общепринятые термины не годились для описания статистических данных, собранных в процессе имитации. Термины: процесс и экземпляры процесса были неприемлемы, потому что я не мог работать в парадигме Аристотеля. Парадигма Аристотеля не стыкуется с примененным мной матаппаратом. При этом практическое применение данной методики было простое – моделирование и имитация бизнес-объектов с целью принятия управленческих решений. В программе создавался виртуальный объект, описание которого состояло из описания сценариев и их взаимодействия. Сценарии прогонялись внутри программы, а также моделировались ресурсы и их взаимодействия.
+4
Насколько медленны iostreams?
7 min
80KПотоки ввода-вывода в стандартной библиотеке C++ просты в использовании, типобезопасны, устойчивы к утечке ресурсов, и позволяют простую обработку ошибок. Однако, за ними закрепилась репутация «медленных». Этому есть несколько причин, таких как широкое использование динамической аллокации и виртуальных функций. Вообще, потоки — одна из самых древних частей стандартной библиотеки (они начали использоваться примерно в 1988 году), и многие решения в них сейчас воспринимаются как «спорные». Тем не менее, они широко используются, особенно когда надо написать какую-то простую программу, работающую с текстовыми данными.
Вопрос производительности iostreams не праздный. В частности, с проблемой производительности консольного ввода-вывода можно столкнуться в системах спортивного программирования, где даже применив хороший алгоритм, можно не пройти по времени только из-за ввода-вывода. Я также встречался с этой проблемой при обработке научных данных в текстовом формате.
Сегодня в комментариях у посту возникло обсуждение о медленности iostreams. В частности, freopen пишет
а aesamson даёт такую рекомендацию
В этом посте я развею и подтвержу некоторые мифы и дам пару рекомендаций.
Вопрос производительности iostreams не праздный. В частности, с проблемой производительности консольного ввода-вывода можно столкнуться в системах спортивного программирования, где даже применив хороший алгоритм, можно не пройти по времени только из-за ввода-вывода. Я также встречался с этой проблемой при обработке научных данных в текстовом формате.
Сегодня в комментариях у посту возникло обсуждение о медленности iostreams. В частности, freopen пишет
Забавно смотреть на ваши оптимизации, расположенные по соседству со считыванием через cin :)
а aesamson даёт такую рекомендацию
Можно заменить на getchar_unlocked() для *nix или getchar() для всех остальных.
getchar_unlocked > getchar > scanf > cin, где ">" означает быстрее.
В этом посте я развею и подтвержу некоторые мифы и дам пару рекомендаций.
+86
Information
- Rating
- Does not participate
- Location
- Россия
- Registered
- Activity