Pull to refresh
126
0
Валентин @silvansky

Developer

Send message
Да, бывает:
itldc.com (Нидерланды, Болгария, Латвия, Украина)
yourserver.se (Швеция, Латвия)
hukot.net (Чехия)
lcsnet.eu (Румыния. Бывают проблемы со стабильностью, но сойдет)
Ребят читайте книги, проходите курсы, в изучении чего-либо нужен системный подход. Подобные туториалы оставляют у новичков больше вопросов, чем ответов. Если и читать туториалы вырванные из контекста, то хотя бы по конкретной теме, где аккуратно расписывается подобробности, тут обо всем и ни о чем.
Автору советую почитать про «ios autolayout», чтобы не приходилось складывать элементы в левый верхний угол ;) Замечаний достаточно, но в дискуссию ввязываться не хочу, потому озвучивать не буду.

Выше просили инфы:
Туториалы:
www.raywenderlich.com/
www.shinobicontrols.com/iOS8DayByDay (кстати можно найти и по iOS 7)
www.appcoda.com/
nsscreencast.com/ — платные по сути
iosdevelopertips.com/ — скорее набор ссылок на чужие статьи
Advanced:
nshipster.com/
И даже журналы:
iosdevweekly.com/ — еженедельный дайджест
www.objc.io/ — ежемесячный (advanced)
Библиотеки:
maniacdev.com/
Просто бложики:
oleb.net/blog/
petersteinberger.com/
www.thinkandbuild.it/
ashfurrow.com/

Всем iOS-разработки!
UFO landed and left these words here
На самом деле всё ещё хуже. Копирайтеры не просто запрещают копировать, они ещё и запрещают использовать их продукты в технологических цепочках.
Например, если я покупаю пачку пельменей, то дальше они полностью мои. И производитель не может иметь ко мне никаких претензий, если я не съем их, а использую для приготовления своего фирменного блюда, которое буду массово продавать. Я при этом не должен платить ему никаких лицензионных отчислений, т.к. пельмени уже куплены и на 100% принадлежат мне.
А вот если начну массово скупать PlayStation, чиповать их и продавать чипованные, производитель с чего-то начнёт возмущаться. Хотя и микросхемы для чиповки, и сами консоли честно купленные. Я просто использую их для создания нового, производного продукта с улучшенными характеристиками.
Точно так же, если я накуплю пачку лицензий на Windows, добавлю к нему честно купленную пачку QNX, а потом начну их скрещивать и продавать такую «гибридную» ОС, на меня опять же наедут. Хотя какого собственно, я ведь заплатил за обе исходные ОС! И за каждую копию честно плачу. Так нет же, всё одно что-то верещат про нарушение копирайта, запрет на модификацию и упущенную прибыль.
Хуже того, даже если я не использую ни строчки кода, а просто пытаюсь создать аналогичный продукт, меня всё равно могут засудить. Даже в том случае, если я не нарушаю патентов.
Например, как думаете, что сделают со мной, если я создам свой собственный, альтернативный Android-клиент для World of Warcraft или EVE Online? Правильно, копирайтер начнёт возникать, объявит мои разработки незаконными и нелегальными, и опять же привлечёт государственную машину, чтобы запретить мне заниматься моим собственным творчеством. А я ведь даже строчки кода не украл, патентов не нарушал, и вообще это на 100% моя разработка.
Вот это, ИМХО, и есть главное зло копирайта, а вовсе не запрет на копирование.
DRM

Наконец-то. Телевизор долго этого ждал. Сегодня он поймал их. Обоих. Вот они: стоят с зеркалами в руках (делают вид, что это ракетки), вяло имитируют настольный теннис. Капли пота, дрожь в руках, бегающие зрачки — до чего бестолковая пантомима.

«Ха, они действительно принимают меня за идиота?» — телевизор несколько разочарован. Байка о том, что зеркала могут обмануть его сенсоры, пущена самой Корпорацией. Мамой. Ради общего потенциального блага — потенциальный ущерб потенциальных нарушителей был потенциально огромен.

«Хоть бы стол между собой поставили...» Прошлые поднадзорные (термин «хозяева» был упразднен Мамой) были более изобретательны и осторожны. Была в его практике и система зеркал, и маскировка (кое-кто даже красил себя под цвет дивана), и просмотр на потолке с помощью присосок. Только проблема в том, что телевизор был знаком со всеми трюками из фильмов — люди редко пользуются воображением. Эти двое, видимо, мозгами не пользовались вообще.

Один из поднадзорных, не дыша, подбирается ближе. Телевизор лениво раздумывает над возможностями — у него в запасе были секунды, практически вечность. Позволить подойти и упасть на него всем своим специально утяжеленным корпусом? Выжечь глаза на расстоянии? Заставить второго разможжить ему голову — 25 кадров и он в его власти…

Предвкушение мешает телевизору думать. Камера туманится, частота обновления неровно вздымается и опадает. Он уже не может терпеть, не может ждать. Месяцы, месяцы ожидания. Скорее, сейчас!

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

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

Загорается диван, набивка шкворчит. На двоих горит одежда, они, вопя, колотят в дверь. Спасения не будет. Кожа на них трескается, кипящий жир капает на пол.

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

Экран гаснет. Телевизор ждет новых постояльцев…
Кофе без кофеина — это как KDE под винду.
Буквально пару дней назад пришлось мне обычное приложение разместить в Cydia.
iOSOpenDev на Mountain Lion вообще не установился. Посмотрел логи — не получилось выполнить постисталляционные скрипты. Благо, что есть код на гитхабе, и закончить установку смог, выполнив скрипты вручную.
Установив Theos и увидев ужас, который предлагается в качестве шаблона проекта, тоже плюнул на эту затею.
Так вот, это я к чему. Если вам нужно именно приложение, а не какой-то твик, предлагаю простейший способ собирания .deb пакета.
Разрабатывается обычное приложение в Xcode, с интерфейс-билдером, симулятором, блэкджеком и т.п.
1) После того, как всё готово, подключается устройство и делается Product -> Archive.
2) Из получившегося .xcarchive файла достаётся .app.
3) На диске создаётся папка YourAppName со следующей структурой:
YourAppName/
— Applications/
— DEBIAN/
4) В папке DEBIAN создаётся файл с именем control и схожим содержанием:
Package: com.xxxx.yourappname Name: YourAppName Version: 1.1.0 Depends: firmware (>= 5.0) Architecture: iphoneos-arm Description: A client for soap4.me Depiction: http://yoururl.com Homepage: http://yoururl.com Author: Sviataslau Seviaryn <sviataslau@gmail.com> Sponsor: Apple
5) По желанию можно создать так же исполняемые файлы postinst, prerm, в которых указать команды, которые будут выполнены после установки и перед удалением пакета.
6) Упаковать созданную структуру папок в deb. Можно через тот же iOSOpenDev, который устанавливает за собой консольные приложения для упаковки:
iosod build "только что созданная директория" "директория, куда положить упакованный .deb"
Всё, .deb готов к установке.
Далее то, на что нужно обратить внимание и к чему нужно быть готовым:
1) Для того, чтобы приложение запустилось и работало, оно должно быть подписано. Популярная фишка с выставлением Don't code sign в билд-настройках не сработает. Сертификат можно сгенерировать самому, не обязательно получать его у Apple за 99$. Как это сделать полно туториалов в интернете.
2) Приложение будет установлено в папку /Applications, а не в var/mobile/Applications, куда попадают обычные приложения. Сделать так, чтобы приложение ставилось в var/mobile/Applications мне, например, не удалось.
3) Предыдущий пункт влечёт за собой последствия.
— Если ваше приложение использует Settings.bunle, то настройки в Settings.app вы не увидите. Для таких приложений, как я понял, нужно интегрироваться с PreferenceLoader через MobileSubstrate, что влечёт за собой дополнительный геморрой;
— если вы используете Keychain для сохранения конфиденциальной информации, то он тоже не работает. По крайней мере, приложение, работающее в симуляторе и установленное на девайс обычным образом сохраняет настройки без проблем.
Это пока две проблемы, с которыми мне довелось столкнуться и которые вынудили меня плюнуть на Сидию и распространять приложение в виде ipa, устанавливающегося через iTunes в пару кликов.
Конечно, если ваше приложению нужны какие-то особые функции, то без установки рядом с системными приложениями не обойтись, а если достаточно sandbox'а — ну её, эту Сидию.
У меня так глючит флеш, да и html5, так что я предпочитаю смотреть все через mplayer. Просто копирую ссылку и использую этот скрипт.

#!/bin/sh
#
# Public domain
# Author: roman [] tsisyk.com
#
# Usage: ./me url [youtube-dl parameters]
#

COOKIE_FILE=/var/tmp/youtube-dl-cookies.txt
mplayer -fs  -cache 100000 -cache-min 5 -cookies -cookies-file ${COOKIE_FILE} $(youtube-dl --max-quality=22 -g --cookies ${COOKIE_FILE} $*)

(в конце одна длинная строчка, если что)
--max-quality=22 — 720p можно поставить 18 — будет 480.
Заодно загружается быстрее.
И еще — для работы нужен youtube-downloader.
UFO landed and left these words here
(будет много букв, сразу предупреждаю)

О том, что выводы авторов «исследования» — это выводы Капитана Очевидность, кажется, не написал уже только ленивый (я вот, кстати, ленивый, поэтому и пишу сейчас, а не вчера). Но беда этого «исследования» вовсе не в этом, а в том, что оно опирается на принципиально неверную базу.

Кстати, это верно для всего сайта hooktheory, потому что весь он крутится вокруг их собственной Musical Theory for Songwriters, в которой допущены все те же ошибки (точнее, я думаю, что порядок обратен — ошибки из MTfS перетекли в «исследование»). Жаль, что многие скачают обучалку/прочитают исследование, и будут считать, что понимают, как устроена мелодия и гармония, хотя на самом деле их вводят в заблуждение.

(да, это почти срыв покровов, шок, видео не будет)

К фундаментальным ошибкам я вернусь позже, а сначала — по тексту поста.

«Самые популярные гаммы аккордов для всех песен.»
(в оригинале: what keys are most popular for the songs in the database?, верный перевод: какие тональности наиболее популярны)
Надо сказать, что Ализар в своем переводе выкинул абзац про собственно БД и алгоритм ее составления. Там есть важный момент: The entries contain raw information about the chords and melody, while throwing out information about the arrangement and instrumentation. И вот это «выкинув информацию об аранжировке и инструментовке» и сказывается в анализе.

Во-первых, надеюсь, что никому не надо объяснять, что нельзя сводить в одну аналитическую графу мажорные и минорные тональности только по количеству знаков? Опыт показывает, что, во-первых, популярность мажора и минора вообще неодинакова (и меняется со временем), а во-вторых, для мажора и минора отличается распределение по тоникам. Почему?

А потому, и это наше во-вторых, что нельзя выкидывать информацию об инструментовке. Музыка не пишется для сферического коня в вакууме, она пишется для конкретного инструмента/исполнителя/ансамбля, и это означает, что композитор/аранжировщик будет выбирать ту тональность, которая на этом инструменте/в этом ансамбле будет (а) исполнима и (б) звучать так, как нужно для его замысла.

В качестве примера возьмем шесть виолончельных сюит Баха. Вот их тональности: G, d, C, Es, c, D. Строй виолончели: C, G, d, a. Видите совпадения? Пять из шести сюит написаны так, чтобы использовать открытые струны инструмента (а оставшаяся, Es, считается самой технически сложной).

Гитаристам предлагаю вспомнить наиболее часто употребимые тональности для гитары (я сейчас говорю не об академической гитаре и не о народных строях). Правильно, это будет E, e, A, a, G. Почему? Потому что они позволяют взять основные аккорды тональности с использованием открытых струн (обратите внимание, что g используется намного реже). Следующими пойдут D и d, которые уже менее удобны (если мы не берем скордатуру, которая характерна для народной музыки, с которой, собственно, ассоциируется D), и C.

О чем это говорит нам? О том, что анализ некорректен, он должен быть разбит по инструментальному составу и наклонению (мажор/минор), это сделает его существенно более интересным и показательным. Сейчас же это просто пустышка, не говорящая ни о чем.

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

«Самые популярные аккорды (все песни приведены к гамме До мажор (С), чтобы стало возможным прямое сравнение).»
Еще большая глупость, чем верхний анализ. Причин тому (снова) две.

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

Возьмем, например, аккорд, написанный как «Bb». В миноре это совершенно нормативное созвучие, аккорд, построенный на седьмой натуральной ступени (оговорюсь сразу, я пока вынужден использовать терминологию авторов «исследования» в части «аккорд построен на», хотя методолгически это неверно, и я к этому еще вернусь). Этот аккорд, в частности, используется во фригийском обороте, золотой секвенции, и так далее. А в мажоре? А в мажоре это альтерированная ступень, не встречающаяся в нормативном использовании вообще. Надо ли после этого говорить, что 2%, насчитаные в исследовании, для мажора и минора будут выглядеть совершенно по-разному (я бы ставил на 10-15% для минора и пренебрежимую величину для мажора)?

Или, скажем, «em» и «E» (аккорды третьей ступени, соответственно, минорный и мажорный). Для мажора первый нормативен (это доминантовая параллель), второй — только в отклонениях (как доминанта к тонической параллели). Для минора первый ислючителен, второй — нормативен, причем как сам по себе (тоническая параллель), так и в отклонениях (доминанта к субдоминантовой параллели).

Кстати, тут надо заметить еще одну вещь, которую авторы «отбросили» — структуру аккорда. С точки зрения анализа есть фундаментальная разница между (малым мажорным) септаккордом на третьей ступени, который скорее всего будет признаком отклонения (и будет встречаться и в мажоре и в миноре) и (мажорным) трезвучией на той же ступени, который скорее всего будет тонической параллелью (и поэтому будет только в миноре).

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

«Как и ожидалось, До мажор (С) часто встречается в гамме До мажор (С), но настолько же часто мы видим Фа мажор (F) и Соль мажор (G), причём их даже чаще!»
Этот, гм, «феномен» я уже объяснял выше. Человеческому уху в рамках функциональной тональности не нужно звучание тоники, чтобы знать, где она, при этом введение тоники останавливает движение. Так что нет ничего удивительного в том, что тоника употребляется реже остальных ступеней, особенно тех, которые создают основное движение. Кстати, сильнее всего этот эффект будет проявляться в «промежуточных» участках (развивающая зона или motus по терминологии Асафьева).

«Даже для начинающих музыкантов эта информация даёт богатую пищу для размышлений. Например, из частотности аккордов понятно, что им лучше вообще не использовать Ля мажор (А), если они на 100% не уверены в своих действиях, лучше взять Ля минор (am), это менее рискованный вариант.»
Как уже писали выше, это просто бред. И вырастает он как раз из смешения мажора и минора в одной статистике. Мажорное трезвучие на шестой ступени в мажоре, несомненно, звучит дико (при этом в реальности в поп-музыке подобных ходов много, просто это не мажор на самом деле, а уж куда его классифицировали авторы исследования, я не знаю). Но мажорное трезвучие на шестой ступени в миноре — это норма, это элемент все того же фригийского оборота, и не рекомендовать его использовать — это просто запредельная глупость. Эй, гитаристы, сколько из вас слышало или играло оборот Am G F (для ля-минора)? Готовы выкинуть его из оборота только потому, что это «рискованно»?

«Анализ последовательности аккордов принёс ещё больше поразительных открытий. Например, если посмотреть на мажорную гамму До — как вы думаете, какой аккорд будет следовать после Ми минор? [...] Оказывается, в 93% случаев сразу за ним следуют Фа мажор или Ля минор.»
Капитан Очевидность говорит, что это называется «правила разрешения» и «тяготение». Обратите внимание, что тональности, в которые идет разрешение — параллельные. Кстати, запомните этот пример, он нам еще пригодится.

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

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

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

Проблема этой теории в том, что она совершенно не учитывает _отношения_, которые возникают между аккордами. Например, «аккорд третьей ступени» в миноре — это, на самом деле, параллельный мажор (равно как и «аккорд шестой» в мажоре, и это _одно и то же отношение_), и таким образом не дает достаточно информации для анализа гармонической структуры произведения (BTW, это именно то, чем, вроде бы, занимались авторы hooktheory). Функциональная теория отвечает на эту проблему, выделяя минимальное количество функций (отношений), которые может выполнять (занимать) аккорд в тональности. В зависимости от сложности гармонической системы количество этих отношений меньше или больше, так, в классицизме можно говорить о тонике, параллели, субдоминанте, доминанте и двойной доминанте; в романтизме добавляются медианты и (позже) атакты, и так далее.

(замечу, что вся эта методология работает только с тональными гармоническими системами, и только с теми из них, которые обладают выраженной функциональной связностью; но в нашем случае это 99% материала)

Соответственно, каждый аккорд в рамках произведения будет рассматриваться в зависимости от той функции, которую он сейчас выполняет. «Аккорд третьей ступени» в миноре станет Tp (тонической параллелью), «аккорд шестой» в мажоре — им же, и при анализе мы будем понимать, что их роль (и ощущение слушателя от перехода T-Tp) одинакова. «Аккорд второй» — DD (двойной доминантой) или Sp (субдоминантовой параллелью) или (внимание, сюрприз) доминантой-без-прпмы-и-терции (извините, записать это в плейнтексте весьма проблематично), и его функция — отношение с тональностью, степень напряжения, задаваемая зона — будут радикально отличаться в зависимости от этого.

Помните пример с «ми-минором, разрешающимся в фа-мажор или ля-минор»? Хорошая демонстрация возможностей функциональной системы. Давайте считать, что мы в до-мажоре (в миноре эта конструкция маловозможна).
(1) Ми-минор (т.е., трезвучие на третьей) разрешается в фа-мажор (т.е. трезвучие на четвертой). Рассмотрим ми-минор с позиции фа-мажора. Это трезвучие на седьмой, то есть, на самом деле (учитывая разрешение в тонику) — верхние три звука доминантсептаккорда. Получаем «стандартное» D->T. В рамках до-мажора вся эта конструкция стремится к субдоминанте, т.е. (D->)S (на бумаге вместо скобок рисуется этакое «корыто», направленное к S, и показывающее, что вся конструкция считается от S)
(2) Ми-минор (т.е., трезвучие на третьей) разрешается в ля-минор (т.е. трезвучие на шестой). Рассмотрим от ля-минора, получим разрешение минорной доминанты в тонику. Такое встречается, но ненормативно (существенно более часто разрешение мажорной доминанты), и, что самое важное, такой оборот не дает адекватного закрепления разрешения, так что рассматривать это как оборот в рамках вспомогательной тональности опасно (необоснованно). А вот в рамках до-мажора это намного более занятно. Трезвучие на третьей — доминантовая параллель, трезвучие на шестой — тоническая параллель. Получаем Dp -> Tp, ход, параллельный автентической каденции. Такая трактовка намного более вероятна.

Обратите внимание, что получить эту информацию из соотношения «III -> S» или «III -> VI» практически невозможно. Собственно, именно поэтому я считаю, что объяснять (и тем более — анализировать) гармоническое устройство произведение на основании ступеней — это профанация.

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

Как-то так. Простите за многабукав, не удержался.
Все же прежние шутеры отличались от большинства современных, например следующим:
Я вот, например, в восторге от этого парня.
Тут понятней почему пошлины нет.
UFO landed and left these words here
На днях занимался поиском подобного плагина (в том числе читал вашу предыдущую статью). В итоге, остановился на chosen:
harvesthq.github.com/chosen/
UFO landed and left these words here
А я посмею взять на себя ответственность и расказать подробней об технической части всего этого.

1. Сначала нужно установить графический режим.
asm 
   mov ax, 13h   // 320х200 256 colors mode
   int 10h           
end;

2. Потом указать палитру. z — индекс цвета. r, g, b — яркость красного, зеленого, синего. 0 <= r,g,b,z <= 255
Вот такую функцию нужно для каждого z запустить.
asm 
   mov dx, 0x3c8
   mov ax, z
   out dx, al
   mov dx, 0x3c9
   mov al, r
   out dx, al
   mov al, g
   out dx, al
   mov al, b
   out dx, al
   int 10h
end;

3. Ну и теперь можно выводить пиксели на экран тупо записывая что-то в память с $A000:
$A000:[(320*y)+x]:= color;
и на экране появиться пиксель цвета color с координатами [x, y]

Остальное — дело математики.

P. S. про old school компьютерную графику буду расказывать на 5ой киевской хабровстречи, и через пару недель появится статья и на самом хабре
Теперь будет так.
1

Information

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