Pull to refresh
11
0

User

Send message

Objective-C: как работают блоки

Reading time5 min
Views28K
В этой статье я расскажу о расположении блоков (__NSStackBlock__/__NSGlobalBlock__/__NSMallocBlock__), о том, как происходит захват переменных и как это связано с тем, во что компилируется блок.

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

Начнем с самого начала, как выглядит блок в Objective-C


Для чего применяются блоки, я расписывать не буду, речь идет не об этом, поэтому давайте сразу рассмотрим интересные моменты на практике.
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments8

SwiftLint — чистота и порядок в iOS проекте

Reading time6 min
Views55K
image

Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments17

Вводим текст красиво

Reading time8 min
Views53K
Сырые, но важные данные вроде номеров телефонов или кредиток — это именно то, что пользователи чаще всего вводят в наших приложениях. И с этим есть огромная проблема. Перепроверять 16 цифр своего Мастеркарда или 11 цифр номера телефона — это сущий ад для любого юзера. Решать эту проблему, естественно, приходится разработчикам, от лица которых я и пишу этот пост.

Поскольку современный Андроид не предоставляет инструментов для автоматического форматирования произвольного текста, эту задачу каждый решает своими костылями силами. Сначала в наших проектах эта задача решалась по месту: возникла необходимость — напиши свой TextWatcher и форматируй как надо. Но мы быстро поняли, что так делать не стоит — количество локальных костылей и специфических багов росло экспоненциально. Кроме того, задача весьма общая, так что и решать её надо системно.

Для начала хотелось следующего:

  1. Указал маску вроде +7 (___) ___-__-__
  2. Повесил её на EditText
  3. ...
  4. PROFIT

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

Начав работать над этим направлением, мы осознали, что создание полноценного языка описания формата — это сродни написанию своего RegEx-движка, что, честно говоря, в наши планы не входило. В итоге мы пришли к варианту, когда такой язык при необходимости можно добавить в любой момент (даже в клиентском коде) или пользоваться простеньким DSL, доступным из коробки (что в нашей практике решило 90% задач).

Посмотрев на то, что получилось, мы решили, что это круто, и надо бы поделиться с сообществом. Так у нас и родилась библиотека для Android-разработки Decoro. И сейчас я покажу пару фокусов из её арсенала.
Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments27

Жизнь разработчика (в картинках)

Reading time1 min
Views65K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Total votes 884: ↑700 and ↓184+516
Comments132

Интервью с Николаем Горькавым

Reading time8 min
Views16K
Николай Горькавый — автор трилогии «Астровитянка», согласился ответить на несколько вопросов Алексея Аншакова, основателя команды webRunes, которая разрабатывает open source платформу IA – Individual Assistant.

Николай Горькавый — астрофизик, писатель, доктор физико-математических наук. Закончил физический факультет Челябинского государственного университета и аспирантуру в Институте астрономии РАН. 12 лет работал в Симеизской обсерватории.
Лауреат Государственной премии СССР 1989 года за предсказание спутников Урана. Вместе с Джоном Мэтером теоретически предсказал экзопланеты возле Веги и Эпсилон Эридана. В настоящий момент живет в США и работает в группе обработки данных спутника «Суоми». Именем Николая Горькавого назван астероид 4654 Gor’kavyj.

Инка — искусственный интеллект описанный автором в последней книге трилогии «Возвращение Астровитянки».

Дисклаймер: во избежание подозрений в рекламе, мы не даем никакой информации о себе или проекте, просим понять — это не потому что мы такие скрытные. Но в дальнейшем мы будем делиться с Хабр-сообществом полезной информацией и опытом разработки.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments10

Карьерный рост в ИТ глазами карьериста

Reading time4 min
Views5.1K
Вступление

Целевой аудиторией являются молодые специалисты, которые только начинают свой путь в сфере ИТ. Хочется помочь людям обойти ошибки, которые допустил сам в процессе карьерного роста. А так же получить конструктивную критику от других хабра-пользователей.
image

* картинка взята с этого сайта
Читать дальше →
Total votes 69: ↑50 and ↓19+31
Comments44

Почему я не провожу собеседования

Reading time4 min
Views6.2K
Перевод статьи Джейсона Фридмана (Jason Freedman) "Everyone Sucks at Interviewing. Everyone." Оригинал статьи можно прочитать здесь.

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

Последние несколько лет я с большим интересом изучаю все, что связано с отбором и наймом сотрудников. Найти хорошего специалиста безумно сложно, и я вряд ли смогу назвать много фирм, у которых это хорошо получается. Даже у самых успешных в этом отношении компаний есть страшный секрет, заключающийся в следующем: как бы хорошо ни был организован процесс отбора, он все равно не может гарантировать, что нанятый сотрудник преуспеет на новом месте. Ходят слухи, что даже сложнейшие системы оценки кандидатов, применяемые HR-отделом Google, не в состоянии точно предсказать эффективность будущего сотрудника. Некоторые компании отмечают, что единственный показатель, который хоть как-то корреллирует с успешностью молодых разработчиков, — это их результаты в тесте SAT (американский аналог ЕГЭ).

Читать дальше →
Total votes 174: ↑151 and ↓23+128
Comments246

Программирование для начинающих: как стартовать и куда двигаться?

Reading time2 min
Views388K
Бывает, что человек, совсем не связанный с IT, проникается интригующей красотой этой сферы и ставит себе задачу постепенно освоить программирование с нуля. И тут он зачастую просто теряется, не понимая, с чего начать, и нуждаясь в хорошем фундаменте и системном подходе.

Я, будучи недавно в такой же ситуации, гуглила, искала мануалов на Хабре (кое-что нашла: Десять советов начинающим программистам, Начинающему программисту про стартапы и не только…), но в итоге всё же была вынуждена обратиться за советом к одному хорошему человеку, который составил для меня вот такой план. С разрешения этого человека размещаю данный план на Хабре – вдруг он пригодится и кому-то ещё. (Тем более, что перечисленные книги относятся к «золотому фонду» литературы в данной сфере и проверены временем.)

UPD: Новичкам советую обратить внимание на комментарии — там активно и аргументированно корректируется этот план.

Читать дальше →
Total votes 90: ↑58 and ↓32+26
Comments106

Пусть компьютер сам принимает решение или пишем ИИ для игры вместе

Reading time7 min
Views62K
Вы когда-нибудь задумывались о том, насколько просто написать свой искусственный интеллект, который сам будет принимать решения в игре? А ведь это действительно просто. Пусть для начала он принимает случайные решение, но позже вы можете его воспитать, научить анализировать ситуацию, и тогда он станет принимать осознанные решения. В этой статье я расскажу, как я писал своего бота, а также покажу, как вы за несколько минут можете написать своего. Наш компьютер будет играть в клон игры Трон, а точнее в ту часть, где нужно на мотоцикле победить врагов.

image
Под катом gif-файлов мегабайт на 10.
Начать побеждать
Total votes 70: ↑68 and ↓2+66
Comments36

Программирование под iOS. Для профессионалов

Reading time1 min
Views14K
Вчера я писал про программирование под Android и следовательно как контр-аргумент привожу в пример книгу "Программирование под iOS. Для профессионалов" Это третье издание книги со значительными дополнениями.

imageЭта книга, выходящая уже в третьем издании и удостоенная премии «Jolt Productivity Award 2012» по версии Dr. Dobb's Journal, научит вас всем тонкостям разработки приложений для устройств на iOS (iPhone, iPad и iPod Touch). Основанное на учебном курсе известного образовательного IT-проекта Big Nerd Ranch, это практическое пособие содержит ключевые концепции программирования в iOS, множество примеров кода и упражнений по разработке приложений. Новое издание охватывает версии iOS 5 и Xcode 4.3.

Оглавление
Отрывок
Купить
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments7

Задачи на собеседованиях в Яндексе

Reading time15 min
Views358K
Открытые вакансии на должность разработчика в Яндексе есть всегда. Компания развивается, и хороших программистов не хватает постоянно. И претендентов на эти должности тоже хоть отбавляй. Главная сложность – отобрать действительно подходящих кандидатов. И в этом плане Яндекс мало чем отличается от большинства крупных IT-компаний. Так что базовые принципы, описываемые в этой статье, могут быть применимы не только к Яндексу.

Однако стоит оговориться, что статья все же про подбор разработчиков. Т.е. собственно тех восьмидесяти процентов сотрудников, на которых держится массовая разработка. Часто мы нанимаем людей на специальные вакансии: например, разработчиков систем компьютерного зрения, лингвистов, экспертов по машинному обучению. В этом случае формат собеседования может заметно отличаться.

image
Читать дальше →
Total votes 221: ↑178 and ↓43+135
Comments329

Как я писал Футболоид под iOS

Reading time15 min
Views41K
Приветствую достопочтеннейших Хабралюдей!


Не так давно, во время поиска новой работы, я получил очень интересное тестовое задание от ZeptoLab: написать за пару рабочих дней арканоид под iOS без использования сторонних библиотек типа Cocos2d/Box2d и т.п., то есть, на «чистом» OpenGL, что показалось мне весьма интересным. Кстати, об этом задании на Хабре уже писали, и даже устраивали разбор полётов. Итак, я бросил вызов судьбе и взялся за геймдев впервые после школьных упражнений с васиком в графическом режиме!

Уточню, что некоторые знания OpenGL у меня уже были, но весьма и весьма поверхностные. Можно сказать, что их не было ну почти совсем, я просто знал, что такое вьюпорт и что бывают какие-то там спрайты, что существуют матрицы преобразования… Так что данная статья могла бы быть озаглавлена "Как написать простую игру под iOS на чистом OpenGL, не зная его", но это слишком уж длинно.

В общем, если Вам интересно, как я это сделал за ~10 часов разработки и ~2 часа чтения, прошу под кат. (осторожно! много кода! мало картинок! ссылка на гитхаб и расслабляющее видео в конце!)
Поехали
Total votes 89: ↑69 and ↓20+49
Comments25

ABC: Always Be Coding (не переставай программировать)

Reading time5 min
Views74K


Как получить работу инженера?

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

# x = количество компаний, в которых ты проходил собеседования

# y = количество предложений о работе, которые ты получил

рейтинг = 100 * log(x) * y / x



Если твой рейтинг < 90, обязательно прочти это. Если > 120, возможно, тебе это не нужно, но, все равно прочти.

Читать дальше →
Total votes 109: ↑90 and ↓19+71
Comments58

Избранное: ссылки по IT безопасности

Reading time3 min
Views110K




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




Читать дальше →
Total votes 92: ↑86 and ↓6+80
Comments18

Полезные идиомы многопоточности С++

Reading time25 min
Views82K

Введение

Данная статья является продолжением цикла статей: Использование паттерна синглтон [1], Синглтон и время жизни объекта [2], Обращение зависимостей и порождающие шаблоны проектирования [3], Реализация синглтона в многопоточном приложении [4]. Сейчас я хотел бы поговорить о многопоточности. Эта тема настолько объемна и многогранна, что охватить ее всю не представляется возможным. Здесь я заострю внимание на некоторых практичных вещах, которые позволят вообще не думать о многопоточности, ну или думать о ней в крайне минимальном объеме. Если говорить точнее, то думать о ней только на этапе проектирования, но не реализации. Т.е. будут рассмотрены вопросы о том, как сделать так, чтобы автоматически вызывались правильные конструкции без головной боли. Такой подход, в свою очередь, позволяет значительно уменьшить проблемы, вызванные состояниями гонок (race condition, см. Состояние гонки [5]) и взаимными блокировками (deadlock, см. Взаимная блокировка [6]). Этот факт уже сам по себе представляет немалую ценность. Также будет рассмотрен подход, который позволяет иметь доступ к объекту из нескольких потоков одновременно без использования каких-либо блокировок и атомарных операций!
Еще...
Total votes 71: ↑66 and ↓5+61
Comments46

«Фактура убила текстуру?» — мысли о роли текстур, фактур и материалов в играх

Reading time14 min
Views118K


Не то чтобы я был диким фанатом консолей, но есть вещи, которые действительно впечатляют. Понятное дело, что консолям нового поколения без впечатляющих пилотов на рынке делать нечего. Речь идет не о Watch Dogs, который тоже заслуживает внимания, как любая песочница с открытым миром, а о Tom Clancy’s The Division анонсированная для PS4 и Xbox One. Картинка (я оцениваю лишь ее) выглядит действительно хорошо. Игры уже давно стремятся быть не играми. Это уже почти кино. Меня мало волнует сейчас вопрос гейм-плея данной игры. Сейчас я просто потребитель, который готов клюнуть на вкусную обертку.

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

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

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



Что я вижу здесь? Для начала посмотрите трейлер и решите, что видите для себя вы. А потом… лопата?


Читать дальше →
Total votes 200: ↑191 and ↓9+182
Comments153

Разбор заданий конкурса по анализу защищенности сетевой инфраструктуры NetHack

Reading time4 min
Views12K
Во время проведения форума Positive Hack Days III состоялся конкурс для экспертов в области сетевой безопасности NetHack. В ходе соревнования участники должны были за 50 минут получить доступ к пяти сетевым устройствам и добыть хранящиеся в них флаги. В игровую сеть, созданную специально для этого конкурса, были заложены типичные уязвимости и ошибки сетевой инфраструктуры, встречавшиеся специалистам Positive Technologies во время выполнения аудитов безопасности и тестирований на проникновение. Сегодня мы представляем вашему вниманию разбор конкурсных заданий.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments34

Архив интересного кода

Reading time1 min
Views54K
Преподаватель из Стэнфордского университета Кит Шварц (Keith Schwarz) уже несколько лет пополняет свой архив интересного кода — образцы самых лучших алгоритмов и структур данных, когда-либо изобретённых человечеством (Шварц весьма амбициозно оценивает свою коллекцию).

Примеры на сайте преимущественно закодированы в C++, поскольку STL предоставляет прекрасную базу для выражения алгоритмов, работающих с различными типами данных. Структуры данных реализованы на Java.

Кит Шварц дает разрешение использовать свой код всем желающим без всяких ограничений.
Читать дальше →
Total votes 103: ↑92 and ↓11+81
Comments33

Частые ошибки при разработке lockfree-алгоритмов и их решения

Reading time13 min
Views59K
На хабре уже было несколько статей про lock-free алгоритмы. Этот пост — это перевод статьи моего коллеги, которую мы планируем публиковать в нашем корпоративном блоге. По роду деятельности мы пишем огромное количество lock-free алгоритмов и структур данных, и этой статьей хочется показать, насколько это интересно и сложно одновременно.



Эта статья во многом похожа на эту статью, но в той статье рассматриваются не все проблемы, с которыми можно столкнуться, разрабатывая lock-free структуры данных, и уделяется очень мало внимания решению этих проблем. В этой статье хочется детально остановиться на некоторых решениях, которые мы используем в реальной реализации lock-free структур данных в нашем продукте, и больше внимания уделить оценке производительности.
Читать дальше →
Total votes 148: ↑147 and ↓1+146
Comments52

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity