Как стать автором
Обновить
126
0
Валентин @silvansky

Developer

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

Многоликие функции Swift

Время на прочтение16 мин
Количество просмотров43K
Русский перевод очень полезной статьи Natasha Murashev The Many Faces of Swift Functions.

Хотя у Objective-C синтаксис выглядит несколько странно, по сравнению с другими языками программирования, синтаксис метода — прост и понятен. Вот небольшой экскурс в прошлое:

+ (void)mySimpleMethod
{
    // метод "класса"
    // нет параметров
    // нет возвращаемых значений
}

- (NSString *)myMethodNameWithParameter1:(NSString *)param1 parameter2:(NSNumber *)param2
{
    // метод "экземпляра"
    // первый параметр - типа NSString указатель, 
    // второй параметр  - типа NSNumber указатель
    // должен вернуть значение типа NSString указатель
    return @"hello, world!";
}


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

Прежде чем я продолжу, я хочу прояснить разницу между «методами» и «функциями» в Swift, так как я повсеместно буду использовать оба этих термина в этой статье. Вот определение «методов», данное в книге Apple «Swift Programming Language»:

Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии27

Обходим защиту iOS клиента Dropbox

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


Что в первую очередь сделает iOS разработчик, если перед ним встанет задача спрятать пользовательские данные от любопытных глаз? Конечно же, встроит экран парольной защиты. Особо хитрый разработчик даже не будет хранить установленный пользователем пароль в NSUserDefaults, а аккуратно спрячет его в связку ключей — в этом случае приложение в глазах как его, так и заказчика, сразу же перемещается в разряд «сверхзащищенных».
Мы не будем углубляться в описание опасностей хранения ключа в открытом доступе — ведь есть гораздо более интересный способ обхода такой защиты.
Читать дальше →
Всего голосов 41: ↑38 и ↓3+35
Комментарии21

За один проход

Время на прочтение7 мин
Количество просмотров155K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Всего голосов 73: ↑72 и ↓1+71
Комментарии56

Лицензия для вашего open-source проекта

Время на прочтение98 мин
Количество просмотров184K
В этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.

Статья будет полезна тем, кто хочет:

— в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
— подобрать свободную лицензию для своего проекта;
— разобраться, что нужно писать в шапке файла исходного кода.
Читать дальше →
Всего голосов 136: ↑132 и ↓4+128
Комментарии117

Рано или поздно нам придется это сделать

Время на прочтение8 мин
Количество просмотров41K
Если бы мы сначала узнали, где мы находимся и куда стремимся, то могли бы решить, что делать и как этого достичь
16 июня 1858 года, за три года до начала гражданской войны в США, во время дебатов со своим противником на выборах в cенат Стивеном Дугласом, будущий президент Авраам Линкольн произнес одну из своих самых известных речей — «Дом Разделённый».
Будучи, возможно, самой известной антирабовладельческой речью, она (как и политика, продвигаемая Линкольном в отношении рабства), вызвала бурные обсуждения и негодования со стороны политически-активного населения южных штатов. Линкольн был противником рабства в целом и в частности противником распространения рабства на новые территории, и считал, что в новообразующихся штатах все граждане должны быть свободными по умолчанию.

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

Выборы в Сенат Линкольн проиграл, тем не менее, подготовив себе крепкую почву для президентских выборов, которые прошли два года спустя. Победа Линкольна на этих выборах привела к расколу страны и началу гражданской войны между свободными северными и рабовладельческими южными штатами, многие из которых объявили о своем выходе из состава США еще до инаугурации нового президента.


Узнать, при чем тут Хабр и почему это важно
Всего голосов 77: ↑48 и ↓29+19
Комментарии131

Разоблачение 12 юридических заблуждений о программах для ЭВМ

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


Заблуждение / опасная привычка На самом деле … Наш совет прост:
1. Мы создали программу и автоматически стали ее авторами и правообладателями. Для охраны и продажи программы никаких документов оформлять не нужно, ведь она охраняется авторским правом — ©! Действительно: программа для ЭВМ охраняется авторским правом как литературное произведение (п.1 ст. 1259, ст. 1261 ГК РФ).

Но то, что для возникновения авторских прав не требуется регистрация или соблюдение каких-либо иных формальностей (п.4 ст. 1259 ГК РФ), ни в коем случае не освобождает:
− от соблюдения набора критериев, установленных законом;
− от необходимости документально доказать факт создания программы и свои права на них.

Неоформленный SOFT закон не охраняет.

Всё просто: если у вас спор о правах на программу, то без документов вы не сможете доказать, что (1) у вас были права и (2) ваши права нарушены, (3) что сама эта совокупность данных и команд на языке программирования является интеллектуальной собственностью (ведь различные версии и релизы никакой новой интеллектуальной собственности не создают).
То же самое – при постановке на бухгалтерский учёт и оформлении бухгалтерских проводок.

Коротко говоря: нет документов = нет интеллектуальной собственности = нет нарушений прав = нет компенсации за нарушение прав.
Оформляйте много хороших и разных документов при создании программ для ЭВМ:
— договоры с авторами;
— договоры с подрядчиками;
— технические задания;
— протоколы совещаний и тестов;
— соглашения между соавторами;
— авторское свидетельство;
— сертификат признания интеллектуальной собственности;
— спецификация РИД;
— свидетельство о регистрации программы для ЭВМ (Роспатент).
Читать дальше →
Всего голосов 149: ↑119 и ↓30+89
Комментарии210

То, чего еще никто не писал про Нокиа, Элопа и горящую платформу

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

Традиционно, для тех кто не любит много буков, краткие (более-менее) тезисы:

  • Будучи долгое время лидером на рынке, Нокиа сильно расслабилась и загадила свою внутреннюю инфраструктуру бюрократией, чрезмерным аутсорсингом и огромным количеством бесполезной «менеджерской прослойки».
  • Будучи долгое время лидером, Нокиа просрала потратила много денег на ненужные операционные расходы, поглощения никому не нужных фирм и на невменяемую модель аутсорсинга.
  • Полностью оторвавшись от реальности с уходом Йормы Оллилла, Нокиа, под управлением гениального юриста CEO Олли-Пекки Каласвуо, потратила кучу денег и усилий на создание бесполезной и неконкурентоспособной сервисной инфраструктуры Ovi. В результате этого, помимо денег, Нокиа потеряла уйму полезного времени, которое можно и нужно было потратить на развитие основного бизнеса — телефонов, софта и т.д.
  • Бюрократия и непотопляемая менеджерская прослойка в Нокиа, последовательно мигрировала из одного передового проекта в другой, в составе одних и тех же групп лиц, самореплицируясь в виде кучи формальных дебилопроцессов комитетов и управленческих групп, немного перетасовываемых с учетом специфики. В итоге именно эта бюрократия убила и Symbian, и Ovi, и MeeGo и остальные попытки догнать уходящий поезд своими силами.
  • Борьба с бюрократией и прослойкой в Нокиа зашла в полный тупик.
  • У великого CEO Элопа просто не было другого выхода кроме как прибить всю старую, неповоротливую и прогнившую организацию, путем создания альянса с Майкрософтом и переходом на Windows Phone. Тем самым все старые процессы, компетенции, технологии и самое главное — люди резко стали, что называется, «не в тему». И следовательно тем самым можно было под благовидным предлогом прибить этот табун менеджеров, бесконечно рисующих фэнтезийные роадмапы с единорогами и перекладывающих бумаги с левого края стола на правый.
  • Новая Нокиа, после 2011 года и старая Нокиа до 2011 года – это две РАЗНЫЕ организации. Их объединяет только общее название и операционка S40 для телефонов Asha.
  • Горящая платформа, это не Symbian и не MeeGo. Горящая платформа, это то состояние в которое Нокиа загнали годы расслабленного лидерства и тупоголовые амбиции предыдущего CEO – Олли-Пекки Каласвуо с кликой подкаркивающих вице-президентов.
  • С бюрократией и бизнес процессами, имеющимися на 2010 год, Нокиа не спас бы ни Андроид, ни половина населения Бангалора, пишущих на Qt под MeeGo. Даже если бы Apple бесплатно передал Нокиа iOS и все сервисы, то они бы выродились руками всяких Requirement Managerов в типичные Нокийские дизайн-химеры и в итоге загнулись через какое-то время.
  • То, что сделал великий CEO Элоп – было единственно возможным разумным решением, дающим хоть какие-то шансы на выживание. Вопрос «каким образом он это сделал?», остается открытым, равно как и вопрос «поможет ли это Нокиа?» в итоге. Не следует забывать, что нынешняя Нокиа — это совершенно новая организация, поэтому глупо предполагать, что она разом вернет себе лидерство. Как и всем новым организациям ей придется за это лидерство долго бороться.
  • Без ошибок и побед Нокиа никогда не было бы ни Андроида, ни Айфона. И Google и Apple тщательно проанализировали достоинства и недостатки более старших конкурентов перед тем как шагнуть вперед.

Все это в деталях — под катом. Предупреждаю что клевых картинок там нет. Сплошное графоманство и ёрничанье.
Читать дальше →
Всего голосов 548: ↑505 и ↓43+462
Комментарии330

Instagram для нищебродов

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

Этой небольшой статьей я попытаюсь рассказать о возможности регистрации в Instagram без мобильного устройства, а так же о дальнейшем его испольовании на персональном компьютере.
Читать дальше →
Всего голосов 202: ↑132 и ↓70+62
Комментарии62

Mac OS X 10.8 «Mountain Lion» выходит сегодня

Время на прочтение1 мин
Количество просмотров6.9K
Как сообщает Apple в Q3 2012 earnings report, новая версия Mac OS X должна уже сегодня появиться в AppStore. Обновление будет стоить $19.99 (если, конечно, Вы не купили мак после 11 июня сего года).

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

  • Более тесная интеграция с iCloud
  • Messages
  • Reminders
  • Заметки
  • Центр уведомлений
  • Расшаривание в соцсетях
  • Twitter
  • Game Center
  • AirPlay
  • GateKeeper
  • Всевозможные улучшения стабильности, безопасности и прочего

Что ж, будем ждать появления официальной ссылки на AppStore.
Читать дальше →
Всего голосов 64: ↑45 и ↓19+26
Комментарии71

Декларация о свободе в Интернете

Время на прочтение1 мин
Количество просмотров3.2K
Electronic Frontier Foundation, Mozilla, Репортёры без границ, Shuttleworth Foundation, Y Combinator и ещё около сотни компаний, организаций и частных лиц опубликовали Декларацию о свободе в Интернете. Она содержит пять основополагающих принципов: свободу самовыражения, свободу доступа, открытость, свободу инноваций и приватность. Инициаторы приглашают всех желающих обсудить текст декларации и надеются, что она станет идеологической основой борьбы за независимость и свободу Сети.
Вот её текст:
Всего голосов 65: ↑59 и ↓6+53
Комментарии78

«ПОГоДа в компании» или «Об одном способе оценить новое место работы»

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

Всех людей можно разделить на две категории: кто уже менял работу и кто будет менять работу. Дело это нечастое, ответственное, а потому требует от человека как минимум решимости, а как максимум — особых интеллектуальных усилий, чтобы взвесить все ЗА и ПРОТИВ (если вы не планируете сразу после перехода заняться поисками нового места). За 6 лет стажа я менял место работы всего один раз и хочу поделиться теми мыслями, которые у меня возникли в процессе этого перехода.
Читать дальше →
Всего голосов 66: ↑52 и ↓14+38
Комментарии107

Swarp SDK или о том, как быстро создать AR-приложение. Часть 2

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


Добрый день, уважаемые читатели.

Сегодня я продолжу рассказ о том, как создавать приложения при помощи Swarp SDK. Этот пост является продолжением обзора Swarp SDK. В первой части мы рассмотрели пример из стандартной поставки Swarp и общие принципы работы с ним. А сейчас мы напишем свое AR-приложение, которое будет изменять анимацию 3D-модели в зависимости от наличия маркеров перед камерой. Кому интересно — прошу под кат.

Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии5

20 самых популярных лекций TED Talks всех времён

Время на прочтение2 мин
Количество просмотров221K
Фонд TED с 1984 года проводит конференции, выбирая для них самые интересные темы и самые инновационные идеи. Например, на первой конференции 1984 года были представлены только что выпущенный Macintosh, инновационный компакт-диск от Sony, математик Бенуа Мандельброт продемонстрировал практическое применение своей теории фракталов, а специалист по искусственному интеллекту Марвин Минский разъяснил новую модель разума.

Каждое выступление (лекция) на конференции TED называется TED Talk и публикуется в онлайне, сейчас на сайте скопилось уже более 400 видеозаписей. Поскольку все они посвящены невообразимо интересным темам, даже сложно предположить, какие пользуются наибольшим интересом у зрителей. Официальный блог TED Blog опубликовал список Топ-20 лекций за все времена по количеству просмотров, собрав статистику с TED.com, Youtube, iTunes, Hulu, встроенных фреймов, количества скачиваний и т.д.
Читать дальше →
Всего голосов 102: ↑96 и ↓6+90
Комментарии23

Заземление. Что это такое и как его сделать (часть 3)

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


1 часть. Заземление
(общая информация, термины и определения)


2 часть. Традиционные способы строительства заземляющих устройств
(описание, расчёт, монтаж)


3 часть. Современные способы строительства заземляющих устройств
(описание, расчёт, монтаж)



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

Д. Основные способы строительства

Д1. Модульное заземление (для обычных грунтов)

Д1.1. Особенности решения
Д1.1.1. Универсальность и простота применения
Д1.1.2. Долгий срок службы
Д1.1.3. Зависимость уменьшения сопротивления заземления от увеличения глубины электрода
Д1.1.4. Суперкомпактность
Д1.1.5. Никакой сварки
Д1.2. Расчёт получаемого сопротивления заземления
Д1.3. Монтаж
Д1.4. Достоинства и недостатки

Д2. Электролитическое заземление (для вечномёрзлых или каменистых грунтов)

Д2.1. Особенности решения
Д2.1.1. Простота применения в вечномёрзлых или каменистых грунтах
Д2.1.2. Компактность
Д2.1.3. Образование талика
Д2.1.4. Никакой сварки
Д2.2. Расчёт получаемого сопротивления заземления
Д2.3. Монтаж
Д2.4. Достоинства и недостатки


Д. Основные способы строительства

Напомню о достоинствах и недостатках традиционных способов строительства заземлителей, описанных в прошлой части:
Читать дальше →
Всего голосов 86: ↑75 и ↓11+64
Комментарии61

Реализация автограф-сессии автора для iBooks

Время на прочтение3 мин
Количество просмотров1.1K
Я работаю в маленьком издательстве. И, после выпуска бумажной версии детской книжки решили сделать и ее электронный вариант для iPad. Не приложение, а именно книгу в формате eEub.
Договорились о презентации в крупном торговом центре: бумажные книжки продаются, автор их подписывает, iPad-версия скачивается посетителями центра, плюс они же играются с анимацией на предоставленных iPad'ах.
Но, если автор подписывает бумажные книги, почему бы не подписать и электронную?
Идея новая и оригинальная, но реализуемая ли?
Скажу сразу, реализовать подписывание не удалось, и вот почему…
Читать дальше →
Всего голосов 36: ↑26 и ↓10+16
Комментарии6

2D->3D in Augmented reality

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

В данной статье я расскажу как в приложениях Augmented reality по найденому расположению объекта в сцене построить 3D-пространство. Для этого необходимо получить две матрицы – проекционную (GL_PROJECTION) и модельную (GL_MODELVIEW) для работы, например, в OpenGL. Делать это мы будем средствами библиотеки OpenCV.

Недавно приходилось решать эту задачу, но ресурса, где просто поэтапно объяснялось как это сделать я не нашел (может плохо искал), а подводных камней в данной проблеме хватает. В любом случае, статья на хабре описывающая эту задачу не повредит.
Читать дальше →
Всего голосов 59: ↑59 и ↓0+59
Комментарии9

Миграция проекта на C++ с Visual Studio 2008 на Visual Studio 2010

Время на прочтение4 мин
Количество просмотров1.3K
Не за горами принятие нового стандарта C++, и (к счастью?) разработчики компиляторов дают программистам возможность опробовать некоторые новые возможности, появляющиеся в языке, уже сейчас. В частности, последняя версия Visual Studio поддерживает ряд нововведений, о которых не раз и не два уже писалось. Но одно дело — демонстрировать возможности на синтетических примерах, другое — попробовать их в боевом режиме (очевидно, что на свой страх и риск). Эта статья — результат такого эксперимента. Итак.

Исходный материал: игровой проект с исходниками на C++. Активно используется boost (1.40), пользовательский интерфейс на Qt (4.x).
Задача: перевести проект на Visual Studio 2010 для дальнейшей разработки с использованием этого компилятора и его новых возможностей (в перспективе возможен переход gcc 4.5 и старше).

В процессе переноса кода исправлялись не только ошибки компиляции, вылезшие при сборки новым компилятором, но и выполнялась косметическая переработка кода, т. е. замена ряда используемых конструкций из boost'а на аналогичные из STL/языка (более глубокая переработка кода будет делаться позже). Ниже описаны некоторые проблемы, с которыми пришлось столкнуться, и способы их решения. Да, после внесения правок и финальной перекомпиляции всё запустилось и заработало.

Читать дальше →
Всего голосов 18: ↑13 и ↓5+8
Комментарии2

Хабравиджет: API наш скуден

Время на прочтение1 мин
Количество просмотров1.2K
Захотелось мне посмотреть на то, как делаются виджеты в Dashboard, да Dashcode попробовать.
Почему-то выбрал для экспериментов Хабрахабр.
Вот что получилось:




Пока умеет только показывать текущие значения ХабраКармы, ХабраСилы и ваше место в рейтинге.
В будущем хочу добавить хранение истории и показывать графики изменения этих параметров.

Брать здесь: hints.ru/karma.zip

В комплекте русский и английский языки.
А заголовок у меня от грусти — HabraHabr имеет невероятно скудный API. Фактически — не имеет его вообще. Кроме как показывать карму, да хабрасилу и делать нечего.

Печально!

Пишите о найденных проблемах и пишите с предложениями о доработке.
А DashCode — прекрасная вещь!


UPDATE: Выложил немножко поправленную версию. hints.ru/HabraKarma.zip
Всего голосов 45: ↑40 и ↓5+35
Комментарии53

Как Google Russia рекламирует вирусописателей

Время на прочтение4 мин
Количество просмотров11K
Изначально этот материал начал формироваться в виде отдельных заметок в моём ЖЖ. История получилась в трёх частях и, похоже, до сих пор не закончилась. Я не буду сюда копи-пастить содержимое заметок из ЖЖ, дабы не нарушать традиции ресурса, а изложу их кратко и соберу всю информацию воедино, благо, теперь это сделать проще.

Вывод, который я сделал и который действителен до сих пор, прост: Google Russia зарабатывает на рекламе вирусосодержащих, поддельных сайтов, получая прибыль от рекламы этих сайтов в своей рекламной сети AdMob.

Как это происходит?
Читать дальше →
Всего голосов 133: ↑118 и ↓15+103
Комментарии86

Я хочу работать в Google! Телефонное интервью (часть 3, питоноводческая)

Время на прочтение16 мин
Количество просмотров9.8K
Из комментариев к предыдущей статье кроме кучи полезной информации, обсуждения недостатков моего кода, я вынес ещё и стратегическое решение — всеми правдами и неправдами избегать программирования на C/C++ на ближайшем интервью. Сказывается отсутствие практики написания программ. Уже больше 4х лет его не трогал и питона хватало для любых статистических вычислений и визуализации данных. Но обязательно вернусь к классическим учебникам на следующей недели. Товарищи TheHorse и 0leGG застыдили меня во второй статьe, а AxisPod забил последний гвоздик в гробик моих надежд, что получится выехать на старых знаниях. Поэтому смещая акцент именно в сторону любимого Python, посмотрим на возможные задачи.
Читать дальше →
Всего голосов 48: ↑38 и ↓10+28
Комментарии44

Информация

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